From 6f6b197d2f36b8da6a3b370d9e8f584e369212a1 Mon Sep 17 00:00:00 2001 From: Gregor Martynus <39992+gr2m@users.noreply.github.com> Date: Fri, 7 Oct 2022 16:53:56 -0700 Subject: [PATCH 1/3] fix: revert bad release 2.2.0 --- .github/workflows/release.yml | 2 +- .github/workflows/twitter-together.yml | 2 + README.md | 10 +- dist/index.js | 76379 +++++++++++----- docs/01-create-twitter-app.md | 105 +- docs/02-create-twitter-together-workflow.md | 2 + ...apply-for-access-to-the-twitter-ads-api.md | 139 + docs/adds-api-application-form-01.png | Bin 0 -> 379230 bytes docs/twitter-01-create-an-app.png | Bin 0 -> 228085 bytes ...itter-02-sign-up-for-developer-account.png | Bin 0 -> 292264 bytes docs/twitter-03-create-app.png | Bin 0 -> 347551 bytes docs/twitter-04-keys-and-tokens.png | Bin 0 -> 302244 bytes ....png => twitter-05-repository-secrets.png} | Bin lib/common/parse-tweet-file-content.js | 2 - lib/common/tweet.js | 207 +- lib/index.js | 8 +- package-lock.json | 764 +- package.json | 6 +- .../test.js | 96 +- .../test.js | 96 +- test/command-line-has-tweet/test.js | 25 +- .../test.js | 94 +- .../test.js | 41 +- .../test.js | 28 +- .../test.js | 28 +- .../test.js | 47 +- test/push-main-has-tweet-with-poll/test.js | 48 +- test/push-main-has-tweet-with-thread/test.js | 41 +- .../test.js | 43 +- test/push-main-has-tweet/test.js | 23 +- 30 files changed, 52406 insertions(+), 25830 deletions(-) create mode 100644 docs/03-apply-for-access-to-the-twitter-ads-api.md create mode 100644 docs/adds-api-application-form-01.png create mode 100644 docs/twitter-01-create-an-app.png create mode 100644 docs/twitter-02-sign-up-for-developer-account.png create mode 100644 docs/twitter-03-create-app.png create mode 100644 docs/twitter-04-keys-and-tokens.png rename docs/{twitter-01-repository-secrets.png => twitter-05-repository-secrets.png} (100%) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 31fad20e..d6e596ad 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,6 +20,6 @@ jobs: - run: >- git push --force https://x-access-token:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git - HEAD:refs/heads/v3 + HEAD:refs/heads/v2 env: GITHUB_TOKEN: ${{ secrets.GR2M_PAT_FOR_SEMANTIC_RELEASE }} diff --git a/.github/workflows/twitter-together.yml b/.github/workflows/twitter-together.yml index 15b4884f..c72553d1 100644 --- a/.github/workflows/twitter-together.yml +++ b/.github/workflows/twitter-together.yml @@ -38,3 +38,5 @@ jobs: TWITTER_ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }} TWITTER_API_KEY: ${{ secrets.TWITTER_API_KEY }} TWITTER_API_SECRET_KEY: ${{ secrets.TWITTER_API_SECRET_KEY }} + TWITTER_USER_ID: 1099774878213783553 + TWITTER_ACCOUNT_ID: 18ce551qf6o diff --git a/README.md b/README.md index 5292aa04..73a1f081 100644 --- a/README.md +++ b/README.md @@ -36,17 +36,13 @@ You can submit a tweet to this repository to see the magic happen. Please follow ## Twitter API compatibility -Twitter, Together uses the v2 Twitter API for most functionality. -It makes use of the v1 API for media uploads, as there is no v2 equivalent endpoint. - -Essentials level Twitter access should grant access to all endpoints Twitter, Together uses. +The Twitter Ads API we currently use is the `v8` version. ## Setup -Unless you wish to contribute to this project, you don't need to fork this repository. -Instead, you can make use of this GitHub Action from the comfort of your own repository (either a new one, or one you already have) by creating a GitHub Actions workflow following these steps: +Unless you wish to contribute to this project, you don't need to fork this repository. Instead, you can make use of this GitHub Action from the comfort of your own repository (either a new one, or one you already have) by creating a GitHub Actions workflow following these steps: -1. [Create a Twitter app](docs/01-create-twitter-app.md) with your shared Twitter account and store the credentials as `TWITTER_API_KEY`, `TWITTER_API_SECRET_KEY`, `TWITTER_ACCESS_TOKEN` and `TWITTER_ACCESS_TOKEN_SECRET` in your repository’s secrets settings. +1. [Create a twitter app](docs/01-create-twitter-app.md) with your shared twitter account and store the credentials as `TWITTER_API_KEY`, `TWITTER_API_SECRET_KEY`, `TWITTER_ACCESS_TOKEN` and `TWITTER_ACCESS_TOKEN_SECRET` in your repository’s secrets settings. 2. [Create a `.github/workflows/twitter-together.yml` file](docs/02-create-twitter-together-workflow.md) with the content below. Make sure to replace `'main'` if you changed your repository's default branch. ```yml diff --git a/dist/index.js b/dist/index.js index a63b63c8..d13ffb93 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,20594 +1,34431 @@ -/******/ (() => { // webpackBootstrap -/******/ var __webpack_modules__ = ({ +module.exports = +/******/ (function(modules, runtime) { // webpackBootstrap +/******/ "use strict"; +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ __webpack_require__.ab = __dirname + "/"; +/******/ +/******/ // the startup function +/******/ function startup() { +/******/ // Load entry module and return exports +/******/ return __webpack_require__(526); +/******/ }; +/******/ +/******/ // run startup +/******/ return startup(); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */, +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { -/***/ 5935: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +"use strict"; -module.exports = parseTweetFileContent; -const EOL = (__nccwpck_require__(2037).EOL); +__webpack_require__(493); -const { existsSync } = __nccwpck_require__(7147); -const { join } = __nccwpck_require__(1017); -const { parseTweet } = __nccwpck_require__(6223); -const { load } = __nccwpck_require__(1917); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var atSigns = /[@@]/; +var _default = atSigns; +exports["default"] = _default; +module.exports = exports.default; -const OPTION_REGEX = /^\(\s?\)\s+/; -const FRONT_MATTER_REGEX = new RegExp( - `^---[ \t]*${EOL}([\\s\\S]*?)${EOL}---[ \t]*(?:$|(?:${EOL})+)` -); +/***/ }), +/* 2 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -function parseTweetFileContent(text, dir, isThread = false) { - text = text.trim(); +var util = __webpack_require__(669); +var Stream = __webpack_require__(413).Stream; +var DelayedStream = __webpack_require__(152); - const options = { - threadDelimiter: "---", - reply: null, - retweet: null, - media: [], - schedule: null, - poll: null, - thread: null, - }; +module.exports = CombinedStream; +function CombinedStream() { + this.writable = false; + this.readable = true; + this.dataSize = 0; + this.maxDataSize = 2 * 1024 * 1024; + this.pauseStreams = true; - // Extract front matter options - const frontMatterMatch = text.match(FRONT_MATTER_REGEX); - if (frontMatterMatch) { - text = text.slice(frontMatterMatch[0].length); - getOptionsFromFrontMatter(frontMatterMatch[1], options, dir); + this._released = false; + this._streams = []; + this._currentStream = null; + this._insideLoop = false; + this._pendingNext = false; +} +util.inherits(CombinedStream, Stream); - if (isThread) { - if (options.reply) - throw new Error("Cannot set a tweet to reply to when in a thread"); - } +CombinedStream.create = function(options) { + var combinedStream = new this(); + + options = options || {}; + for (var option in options) { + combinedStream[option] = options[option]; } - // Handle threading - if (options.threadDelimiter) { - const threadIdx = text.match( - new RegExp(`(?:${EOL})+${options.threadDelimiter}[ \t]*(?:${EOL})+`) - ); - if (threadIdx) { - const threadText = text.slice(threadIdx.index + threadIdx[0].length); - text = text.slice(0, threadIdx.index); + return combinedStream; +}; - // Each item can have front matter, as we only split one thread delimiter at a time - options.thread = parseTweetFileContent(threadText, dir, true); - } - } +CombinedStream.isStreamLike = function(stream) { + return (typeof stream !== 'function') + && (typeof stream !== 'string') + && (typeof stream !== 'boolean') + && (typeof stream !== 'number') + && (!Buffer.isBuffer(stream)); +}; - // Extract in-content options - if (!options.poll) { - const pollOptions = []; - let lastLine; - while ((lastLine = getlastLineMatchingPollOption(text))) { - pollOptions.push(lastLine.replace(OPTION_REGEX, "")); - text = withLastLineRemoved(text); - } - if (pollOptions.length) options.poll = pollOptions.reverse(); - } +CombinedStream.prototype.append = function(stream) { + var isStreamLike = CombinedStream.isStreamLike(stream); - // Validate options - validateOptions(options, text, dir); + if (isStreamLike) { + if (!(stream instanceof DelayedStream)) { + var newStream = DelayedStream.create(stream, { + maxDataSize: Infinity, + pauseStream: this.pauseStreams, + }); + stream.on('data', this._checkDataSize.bind(this)); + stream = newStream; + } - // Parse tweet if has text - const parsed = text ? parseTweet(text) : { valid: true, weightedLength: 0 }; - if (!parsed.valid) - throw new Error( - `Tweet exceeds maximum length of 280 characters by ${ - parsed.weightedLength - 280 - } characters` - ); + this._handleErrors(stream); - // TODO: Support schedule from options - return { - poll: options.poll, - media: options.media, - thread: options.thread, - reply: options.reply, - retweet: options.retweet, - text, - ...parsed, - }; -} + if (this.pauseStreams) { + stream.pause(); + } + } -function validateOptions(options, text, dir) { - if (options.retweet && !text && options.poll) - throw new Error("Cannot attach a poll to a retweet"); + this._streams.push(stream); + return this; +}; - if (options.retweet && !text && options.reply) - throw new Error("Cannot reply to a tweet with a retweet"); +CombinedStream.prototype.pipe = function(dest, options) { + Stream.prototype.pipe.call(this, dest, options); + this.resume(); + return dest; +}; - if (options.retweet && !text && options.thread) - throw new Error("Cannot create a thread from a retweet"); +CombinedStream.prototype._getNext = function() { + this._currentStream = null; - if (options.retweet && !text && options.media && options.media.length) - throw new Error("Cannot attach media to a retweet"); + if (this._insideLoop) { + this._pendingNext = true; + return; // defer call + } - if (options.poll && options.poll.length > 4) - throw new Error( - `Polls cannot have more than four options, found ${options.poll.length} options` - ); + this._insideLoop = true; + try { + do { + this._pendingNext = false; + this._realGetNext(); + } while (this._pendingNext); + } finally { + this._insideLoop = false; + } +}; - if (options.poll && options.poll.length < 2) - throw new Error( - `Polls must have at least two options, found ${options.poll.length} options` - ); +CombinedStream.prototype._realGetNext = function() { + var stream = this._streams.shift(); - if (options.media) { - for (const media of options.media) { - if (media.file.indexOf(join(dir, "media")) !== 0) - throw new Error(`Media file should be within the media directory`); - if (!existsSync(media.file)) - throw new Error(`Media file ${media.file} does not exist`); + if (typeof stream == 'undefined') { + this.end(); + return; + } - if (media.alt && media.alt.length > 1000) - throw new Error( - `Media alt text must be 1000 characters or less, found length ${media.alt.length}` - ); - } + if (typeof stream !== 'function') { + this._pipeNext(stream); + return; } -} -function getOptionsFromFrontMatter(frontMatter, options, dir) { - const parsedFrontMatter = load(frontMatter); - if (typeof parsedFrontMatter !== "object" || !parsedFrontMatter) return; + var getStream = stream; + getStream(function(stream) { + var isStreamLike = CombinedStream.isStreamLike(stream); + if (isStreamLike) { + stream.on('data', this._checkDataSize.bind(this)); + this._handleErrors(stream); + } - if (typeof parsedFrontMatter["thread-delimiter"] === "string") - options.threadDelimiter = parsedFrontMatter["thread-delimiter"]; - if (typeof parsedFrontMatter.reply === "string") - options.reply = parsedFrontMatter.reply; - if (typeof parsedFrontMatter.retweet === "string") - options.retweet = parsedFrontMatter.retweet; + this._pipeNext(stream); + }.bind(this)); +}; - if (Array.isArray(parsedFrontMatter.media)) - options.media = parsedFrontMatter.media.reduce((arr, item) => { - if (item && typeof item === "object" && typeof item.file === "string") - arr.push({ - file: join(dir, "media", item.file), - alt: typeof item.alt !== "string" ? null : item.alt, - }); - return arr; - }, []); +CombinedStream.prototype._pipeNext = function(stream) { + this._currentStream = stream; - if (typeof parsedFrontMatter.schedule === "string") { - const schedule = new Date(parsedFrontMatter.schedule); - if (!isNaN(schedule.getTime())) options.schedule = schedule; + var isStreamLike = CombinedStream.isStreamLike(stream); + if (isStreamLike) { + stream.on('end', this._getNext.bind(this)); + stream.pipe(this, {end: false}); + return; } - if (Array.isArray(parsedFrontMatter.poll)) - options.poll = parsedFrontMatter.poll.reduce((arr, item) => { - if (typeof item === "string") arr.push(item); - return arr; - }, []); -} - -function getlastLineMatchingPollOption(text) { - const lines = text.trim().split(EOL); - const [lastLine] = lines.reverse(); - return OPTION_REGEX.test(lastLine) ? lastLine : null; -} - -function withLastLineRemoved(text) { - const lines = text.trim().split(EOL); - return lines - .slice(0, lines.length - 1) - .join(EOL) - .trim(); -} + var value = stream; + this.write(value); + this._getNext(); +}; +CombinedStream.prototype._handleErrors = function(stream) { + var self = this; + stream.on('error', function(err) { + self._emitError(err); + }); +}; -/***/ }), +CombinedStream.prototype.write = function(data) { + this.emit('data', data); +}; -/***/ 2179: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +CombinedStream.prototype.pause = function() { + if (!this.pauseStreams) { + return; + } -module.exports = tweet; + if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause(); + this.emit('pause'); +}; -const { TwitterApi } = __nccwpck_require__(9360); -const mime = __nccwpck_require__(3583); +CombinedStream.prototype.resume = function() { + if (!this._released) { + this._released = true; + this.writable = true; + this._getNext(); + } -const TWEET_REGEX = /^https:\/\/twitter\.com\/[^/]+\/status\/(\d+)$/; + if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume(); + this.emit('resume'); +}; -async function tweet({ twitterCredentials }, tweetData, tweetFile) { - const client = new TwitterApi(twitterCredentials); +CombinedStream.prototype.end = function() { + this._reset(); + this.emit('end'); +}; - const self = await client.v2.me(); - if (self.errors) throw self.errors; +CombinedStream.prototype.destroy = function() { + this._reset(); + this.emit('close'); +}; - return handleTweet(client, self.data, tweetData, tweetFile); -} +CombinedStream.prototype._reset = function() { + this.writable = false; + this._streams = []; + this._currentStream = null; +}; -async function handleTweet(client, self, tweet, name) { - if (tweet.retweet && !tweet.text) { - // TODO: Should this throw if an invalid tweet is passed and there is no match? - const match = tweet.retweet.match(TWEET_REGEX); - if (match) return createRetweet(client, self, match[1]); +CombinedStream.prototype._checkDataSize = function() { + this._updateDataSize(); + if (this.dataSize <= this.maxDataSize) { + return; } - const tweetData = { - text: tweet.text, - }; + var message = + 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'; + this._emitError(new Error(message)); +}; - if (tweet.poll) { - tweetData.poll = { - duration_minutes: 1440, - options: tweet.poll, - }; - } +CombinedStream.prototype._updateDataSize = function() { + this.dataSize = 0; - if (tweet.reply) { - // TODO: Should this throw if an invalid reply is passed and there is no match? - const match = tweet.reply.match(TWEET_REGEX); - if (match) { - tweetData.reply = { - in_reply_to_tweet_id: match[1], - }; + var self = this; + this._streams.forEach(function(stream) { + if (!stream.dataSize) { + return; } - } - if (tweet.retweet) { - // TODO: Should this throw if an invalid tweet is passed and there is no match? - const match = tweet.retweet.match(TWEET_REGEX); - if (match) tweetData.quote_tweet_id = match[1]; - } + self.dataSize += stream.dataSize; + }); - if (tweet.media?.length) { - tweetData.media = { - media_ids: await Promise.all( - tweet.media.map((media) => createMedia(client, media)) - ), - }; + if (this._currentStream && this._currentStream.dataSize) { + this.dataSize += this._currentStream.dataSize; } +}; - const tweetResult = await createTweet(client, self, tweetData); +CombinedStream.prototype._emitError = function(err) { + this._reset(); + this.emit('error', err); +}; - if (tweet.thread) { - tweetResult.thread = await handleTweet( - client, - self, - { ...tweet.thread, reply: tweetResult.url }, - name - ); - } - return tweetResult; -} +/***/ }), +/* 3 */, +/* 4 */ +/***/ (function(__unusedmodule, exports) { -async function createMedia(client, { file, alt }) { - const mediaId = await client.v1.uploadMedia(file, { - mimeType: mime.lookup(file), - }); - if (alt) - await client.v1.createMediaMetadata(mediaId, { alt_text: { text: alt } }); - return mediaId; -} +"use strict"; -async function createTweet(client, self, options) { - return client.v2.tweet(options).then((data) => { - if (data.errors) throw data.errors; - return { - text: data.data.text, - url: `https://twitter.com/${self.username}/status/${data.data.id}`, - }; - }); -} -function createRetweet(client, self, id) { - return client.v2.retweet(self.id, id).then(async (data) => { - if (data.errors) throw data.errors; - if (!data.data.retweeted) throw new Error("Retweet failed"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _default = '00000000-0000-0000-0000-000000000000'; +exports.default = _default; - const other = await client.v2.singleTweet(id, { expansions: "author_id" }); - if (other.errors) throw other.errors; - const otherUser = other.includes.users.find( - (user) => user.id === other.data.author_id - ); +/***/ }), +/* 5 */ +/***/ (function(module) { - return { - retweet: `https://twitter.com/${otherUser.username}/status/${id}`, - url: `https://twitter.com/${otherUser.username}/status/${id}`, // TODO: Twitter does not return the id of the retweet itself - }; - }); -} +// IE 8- don't enum bug keys +module.exports = ( + 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' +).split(','); /***/ }), +/* 6 */, +/* 7 */, +/* 8 */, +/* 9 */ +/***/ (function(module) { -/***/ 3138: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +module.exports = false; -module.exports = createCheckRun; -const { autoLink } = __nccwpck_require__(6223); +/***/ }), +/* 10 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { -const parseTweetFileContent = __nccwpck_require__(5935); +"use strict"; +/*eslint no-var:0, prefer-arrow-callback: 0, object-shorthand: 0 */ -async function createCheckRun( - { octokit, payload, startedAt, toolkit, dir }, - newTweets -) { - const parsedTweets = newTweets.map((rawTweet) => { - try { - return parseTweetFileContent(rawTweet, dir); - } catch (error) { - return { - error: error.message, - valid: false, - text: rawTweet, - }; - } - }); - const allTweetsValid = parsedTweets.every((tweet) => tweet.valid); - // Check runs cannot be created if the pull request was created by a fork, - // so we just log out the result. - // https://help.github.com/en/actions/automating-your-workflow-with-github-actions/authenticating-with-the-github_token#permissions-for-the-github_token - if (payload.pull_request.head.repo.fork) { - for (const tweet of parsedTweets) { - if (tweet.valid) { - toolkit.info(`### ✅ Valid\n\n${tweet.text}`); - } else { - toolkit.info( - `### ❌ Invalid\n\n${tweet.text}\n\n${tweet.error || "Unknown error"}` - ); - } - } - process.exit(allTweetsValid ? 0 : 1); - } +var Punycode = __webpack_require__(213); - const response = await octokit.request( - "POST /repos/:owner/:repo/check-runs", - { - headers: { - accept: "application/vnd.github.antiope-preview+json", - }, - owner: payload.repository.owner.login, - repo: payload.repository.name, - name: "preview", - head_sha: payload.pull_request.head.sha, - started_at: startedAt, - completed_at: new Date().toISOString(), - status: "completed", - conclusion: allTweetsValid ? "success" : "failure", - output: { - title: `${parsedTweets.length} tweet(s)`, - summary: parsedTweets.map(tweetToCheckRunSummary).join("\n\n---\n\n"), - }, - } - ); - toolkit.info(`check run created: ${response.data.html_url}`); -} +var internals = {}; -function tweetToCheckRunSummary(tweet) { - let text = autoLink(tweet.text) - .replace(/(^|\n)/g, "$1> ") - .replace(/(^|\n)> (\n|$)/g, "$1>$2"); - if (!tweet.valid) - return `### ❌ Invalid\n\n${text}\n\n${tweet.error || "Unknown error"}`; +// +// Read rules from file. +// +internals.rules = __webpack_require__(983).map(function (rule) { - if (tweet.poll) - text += - "\n\nThe tweet includes a poll:\n\n> 🔘 " + tweet.poll.join("\n> 🔘 "); - return `### ✅ Valid\n\n${text}`; -} + return { + rule: rule, + suffix: rule.replace(/^(\*\.|\!)/, ''), + punySuffix: -1, + wildcard: rule.charAt(0) === '*', + exception: rule.charAt(0) === '!' + }; +}); -/***/ }), +// +// Check is given string ends with `suffix`. +// +internals.endsWith = function (str, suffix) { -/***/ 701: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + return str.indexOf(suffix, str.length - suffix.length) !== -1; +}; -module.exports = getNewTweets; -const parseDiff = __nccwpck_require__(4833); +// +// Find rule for a given domain. +// +internals.findRule = function (domain) { + + var punyDomain = Punycode.toASCII(domain); + return internals.rules.reduce(function (memo, rule) { + + if (rule.punySuffix === -1){ + rule.punySuffix = Punycode.toASCII(rule.suffix); + } + if (!internals.endsWith(punyDomain, '.' + rule.punySuffix) && punyDomain !== rule.punySuffix) { + return memo; + } + // This has been commented out as it never seems to run. This is because + // sub tlds always appear after their parents and we never find a shorter + // match. + //if (memo) { + // var memoSuffix = Punycode.toASCII(memo.suffix); + // if (memoSuffix.length >= punySuffix.length) { + // return memo; + // } + //} + return rule; + }, null); +}; -async function getNewTweets({ octokit, toolkit, payload }) { - // Avoid loading huuuge diffs for pull requests that don’t create a new tweet file - const response = await octokit.request( - "GET /repos/:owner/:repo/pulls/:number/files", - { - owner: payload.repository.owner.login, - repo: payload.repository.name, - number: payload.pull_request.number, - } - ); - const { data: files } = response; +// +// Error codes and messages. +// +exports.errorCodes = { + DOMAIN_TOO_SHORT: 'Domain name too short.', + DOMAIN_TOO_LONG: 'Domain name too long. It should be no more than 255 chars.', + LABEL_STARTS_WITH_DASH: 'Domain name label can not start with a dash.', + LABEL_ENDS_WITH_DASH: 'Domain name label can not end with a dash.', + LABEL_TOO_LONG: 'Domain name label should be at most 63 chars long.', + LABEL_TOO_SHORT: 'Domain name label should be at least 1 character long.', + LABEL_INVALID_CHARS: 'Domain name label can only contain alphanumeric characters or dashes.' +}; - const newTweet = files.find( - (file) => - file.status === "added" && /^tweets\/.*\.tweet$/.test(file.filename) - ); - if (!newTweet) { - toolkit.info("Pull request does not include new tweets"); - process.exit(0); +// +// Validate domain name and throw if not valid. +// +// From wikipedia: +// +// Hostnames are composed of series of labels concatenated with dots, as are all +// domain names. Each label must be between 1 and 63 characters long, and the +// entire hostname (including the delimiting dots) has a maximum of 255 chars. +// +// Allowed chars: +// +// * `a-z` +// * `0-9` +// * `-` but not as a starting or ending character +// * `.` as a separator for the textual portions of a domain name +// +// * http://en.wikipedia.org/wiki/Domain_name +// * http://en.wikipedia.org/wiki/Hostname +// +internals.validate = function (input) { + + // Before we can validate we need to take care of IDNs with unicode chars. + var ascii = Punycode.toASCII(input); + + if (ascii.length < 1) { + return 'DOMAIN_TOO_SHORT'; + } + if (ascii.length > 255) { + return 'DOMAIN_TOO_LONG'; } - toolkit.info(`${files.length} files changed`); + // Check each part's length and allowed chars. + var labels = ascii.split('.'); + var label; - // We load the pull request diff in order to access the contents of the new tweets from - // pull requests coming from forks. The action does not have access to that git tree, - // neither does the action’s token have access to the fork repository - const { data } = await octokit.request( - "GET /repos/:owner/:repo/pulls/:number", - { - headers: { - accept: "application/vnd.github.diff", - }, - owner: payload.repository.owner.login, - repo: payload.repository.name, - number: payload.pull_request.number, + for (var i = 0; i < labels.length; ++i) { + label = labels[i]; + if (!label.length) { + return 'LABEL_TOO_SHORT'; } - ); - - const newTweets = parseDiff(data) - .filter((file) => file.new && /^tweets\/.*\.tweet$/.test(file.to)) - .map((file) => - file.chunks[0].changes.map((line) => line.content.substr(1)).join("\n") - ); + if (label.length > 63) { + return 'LABEL_TOO_LONG'; + } + if (label.charAt(0) === '-') { + return 'LABEL_STARTS_WITH_DASH'; + } + if (label.charAt(label.length - 1) === '-') { + return 'LABEL_ENDS_WITH_DASH'; + } + if (!/^[a-z0-9\-]+$/.test(label)) { + return 'LABEL_INVALID_CHARS'; + } + } +}; - toolkit.info(`New tweets found: ${newTweets.length}`); - return newTweets; -} +// +// Public API +// -/***/ }), -/***/ 1370: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +// +// Parse domain. +// +exports.parse = function (input) { -module.exports = handlePullRequest; + if (typeof input !== 'string') { + throw new TypeError('Domain name must be a string.'); + } -const getNewTweets = __nccwpck_require__(701); -const createCheckRun = __nccwpck_require__(3138); + // Force domain to lowercase. + var domain = input.slice(0).toLowerCase(); -async function handlePullRequest(state) { - const { octokit, toolkit, payload } = state; + // Handle FQDN. + // TODO: Simply remove trailing dot? + if (domain.charAt(domain.length - 1) === '.') { + domain = domain.slice(0, domain.length - 1); + } - // ignore builds from branches other than the repository’s defaul branch - const base = payload.pull_request.base.ref; - const defaultBranch = payload.repository.default_branch; - if (defaultBranch !== base) { - return toolkit.info( - `Pull request base "${base}" is not the repository’s default branch` - ); + // Validate and sanitise input. + var error = internals.validate(domain); + if (error) { + return { + input: input, + error: { + message: exports.errorCodes[error], + code: error + } + }; } - // on request errors, log the requset options and error, then end process - octokit.hook.error("request", (error) => { - toolkit.info(error); - toolkit.setFailed(error.stack); - process.exit(); - }); + var parsed = { + input: input, + tld: null, + sld: null, + domain: null, + subdomain: null, + listed: false + }; - const newTweets = await getNewTweets(state); - await createCheckRun(state, newTweets); -} + var domainParts = domain.split('.'); + // Non-Internet TLD + if (domainParts[domainParts.length - 1] === 'local') { + return parsed; + } -/***/ }), + var handlePunycode = function () { -/***/ 9054: -/***/ ((module) => { + if (!/xn--/.test(domain)) { + return parsed; + } + if (parsed.domain) { + parsed.domain = Punycode.toASCII(parsed.domain); + } + if (parsed.subdomain) { + parsed.subdomain = Punycode.toASCII(parsed.subdomain); + } + return parsed; + }; -module.exports = addComment; + var rule = internals.findRule(domain); -function addComment({ octokit, payload }, body) { - // add comment with tweet URLs - // https://developer.github.com/v3/repos/comments/#create-a-commit-comment - return octokit.request("POST /repos/:owner/:repo/commits/:sha/comments", { - owner: payload.repository.owner.login, - repo: payload.repository.name, - sha: payload.head_commit.id, - body, - }); -} + // Unlisted tld. + if (!rule) { + if (domainParts.length < 2) { + return parsed; + } + parsed.tld = domainParts.pop(); + parsed.sld = domainParts.pop(); + parsed.domain = [parsed.sld, parsed.tld].join('.'); + if (domainParts.length) { + parsed.subdomain = domainParts.pop(); + } + return handlePunycode(); + } + // At this point we know the public suffix is listed. + parsed.listed = true; -/***/ }), + var tldParts = rule.suffix.split('.'); + var privateParts = domainParts.slice(0, domainParts.length - tldParts.length); -/***/ 4387: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (rule.exception) { + privateParts.push(tldParts.shift()); + } -module.exports = getNewTweets; + parsed.tld = tldParts.join('.'); -const { resolve: resolvePath } = __nccwpck_require__(1017); -const { readFileSync } = __nccwpck_require__(7147); + if (!privateParts.length) { + return handlePunycode(); + } -async function getNewTweets({ payload, octokit }) { - const { - data: { files }, - } = await octokit.request("GET /repos/:owner/:repo/compare/:base...:head", { - owner: payload.repository.owner.login, - repo: payload.repository.name, - base: payload.before, - head: payload.after, - }); + if (rule.wildcard) { + tldParts.unshift(privateParts.pop()); + parsed.tld = tldParts.join('.'); + } - return files - .filter( - (file) => - file.status === "added" && /^tweets\/.*\.tweet$/.test(file.filename) - ) - .map((file) => { - const text = readFileSync( - resolvePath(process.env.GITHUB_WORKSPACE, file.filename), - "utf8" - ).trim(); - return { - text, - filename: file.filename, - }; - }); -} + if (!privateParts.length) { + return handlePunycode(); + } + parsed.sld = privateParts.pop(); + parsed.domain = [parsed.sld, parsed.tld].join('.'); -/***/ }), + if (privateParts.length) { + parsed.subdomain = privateParts.join('.'); + } -/***/ 1659: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + return handlePunycode(); +}; -module.exports = handlePush; -const { inspect } = __nccwpck_require__(3837); +// +// Get domain. +// +exports.get = function (domain) { -const addComment = __nccwpck_require__(9054); -const getNewTweets = __nccwpck_require__(4387); -const isSetupDone = __nccwpck_require__(5089); -const setup = __nccwpck_require__(9104); -const tweet = __nccwpck_require__(2179); + if (!domain) { + return null; + } + return exports.parse(domain).domain || null; +}; -const parseTweetFileContent = __nccwpck_require__(5935); -async function handlePush(state) { - const { toolkit, octokit, payload, ref } = state; +// +// Check whether domain belongs to a known public suffix. +// +exports.isValid = function (domain) { - // ignore builds from tags - if (!ref.startsWith("refs/heads/")) { - toolkit.info(`GITHUB_REF is not a branch: ${ref}`); - return; - } + var parsed = exports.parse(domain); + return Boolean(parsed.domain && parsed.listed); +}; - // ignore builds from branches other than the repository’s defaul branch - const defaultBranch = payload.repository.default_branch; - const branch = process.env.GITHUB_REF.substr("refs/heads/".length); - if (branch !== defaultBranch) { - toolkit.info(`"${branch}" is not the default branch`); - return; - } - // on request errors, log the requset options and error, then end process - octokit.hook.error("request", (error, options) => { - if (options.request.expectStatus === error.status) { - throw error; - } +/***/ }), +/* 11 */ +/***/ (function(module) { - toolkit.info(error); - toolkit.setFailed(error.stack); - process.exit(); - }); - - // make sure repository is already setup - if (!(await isSetupDone())) { - toolkit.info("tweets/ folder does not yet exist. Starting setup"); - return setup(state); - } +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) - // find tweets - const newTweets = await getNewTweets(state); - if (newTweets.length === 0) { - toolkit.info("No new tweets"); - return; - } + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') - // post all the tweets - const tweetUrls = []; - const tweetErrors = []; - for (let i = 0; i < newTweets.length; i++) { - try { - const parsed = parseTweetFileContent(newTweets[i].text, state.dir); + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) - toolkit.info(`Tweeting: ${parsed.text}`); - if (parsed.poll) { - toolkit.info( - `Tweet has poll with ${ - parsed.poll.length - } options: ${parsed.poll.join(", ")}` - ); - } + return wrapper - let result = await tweet(state, parsed, newTweets[i].filename); - while (result) { - toolkit.info(`tweeted: ${result.url}`); - tweetUrls.push(result.url); - result = result.thread; - } - } catch (error) { - console.log(`error`); - console.log(error[0] || error); - tweetErrors.push(error[0] || error); + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) } + return ret } +} - if (tweetUrls.length) { - await addComment(state, "Tweeted:\n\n- " + tweetUrls.join("\n- ")); - } - if (tweetErrors.length) { - tweetErrors.forEach((error) => toolkit.error(inspect(error))); - await addComment( - state, - "Errors:\n\n- " + tweetErrors.map((error) => error.message).join("\n- ") - ); - return toolkit.setFailed("Error tweeting"); +/***/ }), +/* 12 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +var aFunction = __webpack_require__(569); +var toObject = __webpack_require__(230); +var IObject = __webpack_require__(420); +var toLength = __webpack_require__(853); + +module.exports = function (that, callbackfn, aLen, memo, isRight) { + aFunction(callbackfn); + var O = toObject(that); + var self = IObject(O); + var length = toLength(O.length); + var index = isRight ? length - 1 : 0; + var i = isRight ? -1 : 1; + if (aLen < 2) for (;;) { + if (index in self) { + memo = self[index]; + index += i; + break; + } + index += i; + if (isRight ? index < 0 : length <= index) { + throw TypeError('Reduce of empty array with no initial value'); + } } -} + for (;isRight ? index >= 0 : length > index; index += i) if (index in self) { + memo = callbackfn(memo, self[index], index, O); + } + return memo; +}; /***/ }), +/* 13 */ +/***/ (function(module) { -/***/ 5089: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +"use strict"; -module.exports = isSetupDone; -const fs = __nccwpck_require__(7147); -const { resolve: resolvePath } = __nccwpck_require__(1017); +var replace = String.prototype.replace; +var percentTwenties = /%20/g; -function isSetupDone() { - const tweetsFolderPath = resolvePath(process.env.GITHUB_WORKSPACE, "tweets"); - return new Promise((resolve) => { - fs.stat(tweetsFolderPath, (error, stat) => { - if (error) { - return resolve(false); - } +module.exports = { + 'default': 'RFC3986', + formatters: { + RFC1738: function (value) { + return replace.call(value, percentTwenties, '+'); + }, + RFC3986: function (value) { + return value; + } + }, + RFC1738: 'RFC1738', + RFC3986: 'RFC3986' +}; - resolve(stat.isDirectory()); - }); - }); -} +/***/ }), +/* 14 */, +/* 15 */, +/* 16 */ +/***/ (function(module) { + +module.exports = require("tls"); /***/ }), +/* 17 */, +/* 18 */ +/***/ (function(module) { -/***/ 9104: -/***/ ((module) => { +module.exports = eval("require")("encoding"); -module.exports = setup; -async function setup({ toolkit, octokit, payload, sha }) { - toolkit.info('Checking if "twitter-together-setup" branch exists already'); +/***/ }), +/* 19 */, +/* 20 */ +/***/ (function(module, __unusedexports, __webpack_require__) { - try { - // Check if "twitter-together-setup" branch exists - // https://developer.github.com/v3/git/refs/#get-a-reference - await octokit.request("HEAD /repos/:owner/:repo/git/refs/:ref", { - owner: payload.repository.owner.login, - repo: payload.repository.name, - ref: "heads/twitter-together-setup", - request: { - expectStatus: 404, - }, - }); +var dP = __webpack_require__(973); +var anObject = __webpack_require__(990); +var getKeys = __webpack_require__(333); - // If it does, the script assumes that the setup pull requset already exists - // and stops here - return toolkit.info('"twitter-together-setup" branch already exists'); - } catch (error) { - toolkit.info('"twitter-together-setup" branch does not yet exist'); - } +module.exports = __webpack_require__(843) ? Object.defineProperties : function defineProperties(O, Properties) { + anObject(O); + var keys = getKeys(Properties); + var length = keys.length; + var i = 0; + var P; + while (length > i) dP.f(O, P = keys[i++], Properties[P]); + return O; +}; - // Create the "twitter-together-setup" branch - // https://developer.github.com/v3/git/refs/#create-a-reference - await octokit.request("POST /repos/:owner/:repo/git/refs", { - owner: payload.repository.owner.login, - repo: payload.repository.name, - ref: "refs/heads/twitter-together-setup", - sha, - }); - toolkit.info('"twitter-together-setup" branch created'); - // Create tweets/README.md from same file in twitter-together/action repo - // https://developer.github.com/v3/repos/contents/#get-contents - const { data: readmeContent } = await octokit.request( - "GET /repos/:owner/:repo/contents/:path", - { - mediaType: { - format: "raw", - }, - owner: "twitter-together", - repo: "action", - path: "tweets/README.md", - } - ); - // https://developer.github.com/v3/repos/contents/#create-or-update-a-file - await octokit.request("PUT /repos/:owner/:repo/contents/:path", { - owner: payload.repository.owner.login, - repo: payload.repository.name, - path: "tweets/README.md", - content: Buffer.from(readmeContent).toString("base64"), - branch: "twitter-together-setup", - message: "twitter-together setup", - }); - toolkit.info('"tweets/README.md" created in "twitter-together-setup" branch'); +/***/ }), +/* 21 */, +/* 22 */, +/* 23 */, +/* 24 */ +/***/ (function(module, exports, __webpack_require__) { - // Create pull request - // https://developer.github.com/v3/pulls/#create-a-pull-request - const { data: pr } = await octokit.request("POST /repos/:owner/:repo/pulls", { - owner: payload.repository.owner.login, - repo: payload.repository.name, - title: "🐦 twitter-together setup", - body: `This pull request creates the \`tweets/\` folder where your \`*.tweet\` files go into. It also creates the \`tweets/README.md\` file with instructions. +"use strict"; -Note that if you plan to support tweets with polls, your app has to be approved for Twitter's Ads API. See [the Ads API Application Form](https://github.com/twitter-together/action/blob/main/docs/03-apply-for-access-to-the-twitter-ads-api.md) documentation for more details. -Enjoy!`, - head: "twitter-together-setup", - base: payload.repository.default_branch, - }); - toolkit.info(`Setup pull request created: ${pr.html_url}`); -} +__webpack_require__(493); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +// Unencoded internationalized domains - this doesn't check for invalid UTF-8 sequences +var validateUrlUnicodeDomainTld = /(?:(?:[a-z]|[^\u0000-\u007f])(?:(?:[a-z0-9\-]|[^\u0000-\u007f])*(?:[a-z0-9]|[^\u0000-\u007f]))?)/i; +var _default = validateUrlUnicodeDomainTld; +exports["default"] = _default; +module.exports = exports.default; /***/ }), - -/***/ 7351: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { +/* 25 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { "use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; + +Object.defineProperty(exports, "__esModule", { + value: true }); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.issue = exports.issueCommand = void 0; -const os = __importStar(__nccwpck_require__(2037)); -const utils_1 = __nccwpck_require__(5278); -/** - * Commands - * - * Command Format: - * ::name key=value,key=value::message - * - * Examples: - * ::warning::This is the message - * ::set-env name=MY_VAR::some value - */ -function issueCommand(command, properties, message) { - const cmd = new Command(command, properties, message); - process.stdout.write(cmd.toString() + os.EOL); -} -exports.issueCommand = issueCommand; -function issue(name, message = '') { - issueCommand(name, {}, message); -} -exports.issue = issue; -const CMD_STRING = '::'; -class Command { - constructor(command, properties, message) { - if (!command) { - command = 'missing.command'; - } - this.command = command; - this.properties = properties; - this.message = message; - } - toString() { - let cmdStr = CMD_STRING + this.command; - if (this.properties && Object.keys(this.properties).length > 0) { - cmdStr += ' '; - let first = true; - for (const key in this.properties) { - if (this.properties.hasOwnProperty(key)) { - const val = this.properties[key]; - if (val) { - if (first) { - first = false; - } - else { - cmdStr += ','; - } - cmdStr += `${key}=${escapeProperty(val)}`; - } - } - } - } - cmdStr += `${CMD_STRING}${escapeData(this.message)}`; - return cmdStr; - } -} -function escapeData(s) { - return utils_1.toCommandValue(s) - .replace(/%/g, '%25') - .replace(/\r/g, '%0D') - .replace(/\n/g, '%0A'); -} -function escapeProperty(s) { - return utils_1.toCommandValue(s) - .replace(/%/g, '%25') - .replace(/\r/g, '%0D') - .replace(/\n/g, '%0A') - .replace(/:/g, '%3A') - .replace(/,/g, '%2C'); -} -//# sourceMappingURL=command.js.map +Object.defineProperty(exports, "v1", { + enumerable: true, + get: function () { + return _v.default; + } +}); +Object.defineProperty(exports, "v3", { + enumerable: true, + get: function () { + return _v2.default; + } +}); +Object.defineProperty(exports, "v4", { + enumerable: true, + get: function () { + return _v3.default; + } +}); +Object.defineProperty(exports, "v5", { + enumerable: true, + get: function () { + return _v4.default; + } +}); +Object.defineProperty(exports, "NIL", { + enumerable: true, + get: function () { + return _nil.default; + } +}); +Object.defineProperty(exports, "version", { + enumerable: true, + get: function () { + return _version.default; + } +}); +Object.defineProperty(exports, "validate", { + enumerable: true, + get: function () { + return _validate.default; + } +}); +Object.defineProperty(exports, "stringify", { + enumerable: true, + get: function () { + return _stringify.default; + } +}); +Object.defineProperty(exports, "parse", { + enumerable: true, + get: function () { + return _parse.default; + } +}); + +var _v = _interopRequireDefault(__webpack_require__(810)); + +var _v2 = _interopRequireDefault(__webpack_require__(572)); + +var _v3 = _interopRequireDefault(__webpack_require__(293)); + +var _v4 = _interopRequireDefault(__webpack_require__(804)); + +var _nil = _interopRequireDefault(__webpack_require__(4)); + +var _version = _interopRequireDefault(__webpack_require__(135)); + +var _validate = _interopRequireDefault(__webpack_require__(634)); + +var _stringify = _interopRequireDefault(__webpack_require__(960)); + +var _parse = _interopRequireDefault(__webpack_require__(204)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /***/ }), +/* 26 */, +/* 27 */, +/* 28 */ +/***/ (function(module) { + +"use strict"; -/***/ 2186: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { +module.exports = function generate_comment(it, $keyword, $ruleType) { + var out = ' '; + var $schema = it.schema[$keyword]; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $comment = it.util.toQuotedString($schema); + if (it.opts.$comment === true) { + out += ' console.log(' + ($comment) + ');'; + } else if (typeof it.opts.$comment == 'function') { + out += ' self._opts.$comment(' + ($comment) + ', ' + (it.util.toQuotedString($errSchemaPath)) + ', validate.root.schema);'; + } + return out; +} + + +/***/ }), +/* 29 */, +/* 30 */, +/* 31 */, +/* 32 */, +/* 33 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true }); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0; -const command_1 = __nccwpck_require__(7351); -const file_command_1 = __nccwpck_require__(717); -const utils_1 = __nccwpck_require__(5278); -const os = __importStar(__nccwpck_require__(2037)); -const path = __importStar(__nccwpck_require__(1017)); -const uuid_1 = __nccwpck_require__(8974); -const oidc_utils_1 = __nccwpck_require__(8041); -/** - * The code to exit an action - */ -var ExitCode; -(function (ExitCode) { - /** - * A code indicating that the action was successful - */ - ExitCode[ExitCode["Success"] = 0] = "Success"; - /** - * A code indicating that the action was a failure - */ - ExitCode[ExitCode["Failure"] = 1] = "Failure"; -})(ExitCode = exports.ExitCode || (exports.ExitCode = {})); -//----------------------------------------------------------------------- -// Variables -//----------------------------------------------------------------------- -/** - * Sets env variable for this action and future actions in the job - * @param name the name of the variable to set - * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -function exportVariable(name, val) { - const convertedVal = utils_1.toCommandValue(val); - process.env[name] = convertedVal; - const filePath = process.env['GITHUB_ENV'] || ''; - if (filePath) { - const delimiter = `ghadelimiter_${uuid_1.v4()}`; - // These should realistically never happen, but just in case someone finds a way to exploit uuid generation let's not allow keys or values that contain the delimiter. - if (name.includes(delimiter)) { - throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter}"`); - } - if (convertedVal.includes(delimiter)) { - throw new Error(`Unexpected input: value should not contain the delimiter "${delimiter}"`); - } - const commandValue = `${name}<<${delimiter}${os.EOL}${convertedVal}${os.EOL}${delimiter}`; - file_command_1.issueCommand('ENV', commandValue); - } - else { - command_1.issueCommand('set-env', { name }, convertedVal); - } +exports["default"] = _default; + +__webpack_require__(277); + +__webpack_require__(549); + +var _validateUrlAuthority = _interopRequireDefault(__webpack_require__(790)); + +var _validateUrlFragment = _interopRequireDefault(__webpack_require__(266)); + +var _validateUrlPath = _interopRequireDefault(__webpack_require__(399)); + +var _validateUrlQuery = _interopRequireDefault(__webpack_require__(180)); + +var _validateUrlScheme = _interopRequireDefault(__webpack_require__(861)); + +var _validateUrlUnencoded = _interopRequireDefault(__webpack_require__(753)); + +var _validateUrlUnicodeAuthority = _interopRequireDefault(__webpack_require__(44)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function isValidMatch(string, regex, optional) { + if (!optional) { + // RegExp["$&"] is the text of the last match + // blank strings are ok, but are falsy, so we check stringiness instead of truthiness + return typeof string === 'string' && string.match(regex) && RegExp['$&'] === string; + } // RegExp["$&"] is the text of the last match + + + return !string || string.match(regex) && RegExp['$&'] === string; } -exports.exportVariable = exportVariable; -/** - * Registers a secret which will get masked from logs - * @param secret value of the secret - */ -function setSecret(secret) { - command_1.issueCommand('add-mask', {}, secret); + +function _default(url, unicodeDomains, requireProtocol) { + if (unicodeDomains == null) { + unicodeDomains = true; + } + + if (requireProtocol == null) { + requireProtocol = true; + } + + if (!url) { + return false; + } + + var urlParts = url.match(_validateUrlUnencoded["default"]); + + if (!urlParts || urlParts[0] !== url) { + return false; + } + + var scheme = urlParts[1], + authority = urlParts[2], + path = urlParts[3], + query = urlParts[4], + fragment = urlParts[5]; + + if (!((!requireProtocol || isValidMatch(scheme, _validateUrlScheme["default"]) && scheme.match(/^https?$/i)) && isValidMatch(path, _validateUrlPath["default"]) && isValidMatch(query, _validateUrlQuery["default"], true) && isValidMatch(fragment, _validateUrlFragment["default"], true))) { + return false; + } + + return unicodeDomains && isValidMatch(authority, _validateUrlUnicodeAuthority["default"]) || !unicodeDomains && isValidMatch(authority, _validateUrlAuthority["default"]); } -exports.setSecret = setSecret; -/** - * Prepends inputPath to the PATH (for this action and future actions) - * @param inputPath - */ -function addPath(inputPath) { - const filePath = process.env['GITHUB_PATH'] || ''; - if (filePath) { - file_command_1.issueCommand('PATH', inputPath); - } - else { - command_1.issueCommand('add-path', {}, inputPath); - } - process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`; -} -exports.addPath = addPath; -/** - * Gets the value of an input. - * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed. - * Returns an empty string if the value is not defined. - * - * @param name name of the input to get - * @param options optional. See InputOptions. - * @returns string - */ -function getInput(name, options) { - const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || ''; - if (options && options.required && !val) { - throw new Error(`Input required and not supplied: ${name}`); - } - if (options && options.trimWhitespace === false) { - return val; + +module.exports = exports.default; + +/***/ }), +/* 34 */, +/* 35 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + +__webpack_require__(223); +var redefine = __webpack_require__(976); +var hide = __webpack_require__(609); +var fails = __webpack_require__(971); +var defined = __webpack_require__(805); +var wks = __webpack_require__(621); +var regexpExec = __webpack_require__(663); + +var SPECIES = wks('species'); + +var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () { + // #replace needs built-in support for named groups. + // #match works fine because it just return the exec results, even if it has + // a "grops" property. + var re = /./; + re.exec = function () { + var result = []; + result.groups = { a: '7' }; + return result; + }; + return ''.replace(re, '$') !== '7'; +}); + +var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () { + // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec + var re = /(?:)/; + var originalExec = re.exec; + re.exec = function () { return originalExec.apply(this, arguments); }; + var result = 'ab'.split(re); + return result.length === 2 && result[0] === 'a' && result[1] === 'b'; +})(); + +module.exports = function (KEY, length, exec) { + var SYMBOL = wks(KEY); + + var DELEGATES_TO_SYMBOL = !fails(function () { + // String methods call symbol-named RegEp methods + var O = {}; + O[SYMBOL] = function () { return 7; }; + return ''[KEY](O) != 7; + }); + + var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () { + // Symbol-named RegExp methods call .exec + var execCalled = false; + var re = /a/; + re.exec = function () { execCalled = true; return null; }; + if (KEY === 'split') { + // RegExp[@@split] doesn't call the regex's exec method, but first creates + // a new one. We need to return the patched regex when creating the new one. + re.constructor = {}; + re.constructor[SPECIES] = function () { return re; }; } - return val.trim(); -} -exports.getInput = getInput; -/** - * Gets the values of an multiline input. Each value is also trimmed. - * - * @param name name of the input to get - * @param options optional. See InputOptions. - * @returns string[] - * - */ -function getMultilineInput(name, options) { - const inputs = getInput(name, options) - .split('\n') - .filter(x => x !== ''); - return inputs; + re[SYMBOL](''); + return !execCalled; + }) : undefined; + + if ( + !DELEGATES_TO_SYMBOL || + !DELEGATES_TO_EXEC || + (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) || + (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC) + ) { + var nativeRegExpMethod = /./[SYMBOL]; + var fns = exec( + defined, + SYMBOL, + ''[KEY], + function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) { + if (regexp.exec === regexpExec) { + if (DELEGATES_TO_SYMBOL && !forceStringMethod) { + // The native String method already delegates to @@method (this + // polyfilled function), leasing to infinite recursion. + // We avoid it by directly calling the native @@method method. + return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) }; + } + return { done: true, value: nativeMethod.call(str, regexp, arg2) }; + } + return { done: false }; + } + ); + var strfn = fns[0]; + var rxfn = fns[1]; + + redefine(String.prototype, KEY, strfn); + hide(RegExp.prototype, SYMBOL, length == 2 + // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue) + // 21.2.5.11 RegExp.prototype[@@split](string, limit) + ? function (string, arg) { return rxfn.call(string, this, arg); } + // 21.2.5.6 RegExp.prototype[@@match](string) + // 21.2.5.9 RegExp.prototype[@@search](string) + : function (string) { return rxfn.call(string, this); } + ); + } +}; + + +/***/ }), +/* 36 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var Type = __webpack_require__(755); + +function resolveYamlMerge(data) { + return data === '<<' || data === null; } -exports.getMultilineInput = getMultilineInput; + +module.exports = new Type('tag:yaml.org,2002:merge', { + kind: 'scalar', + resolve: resolveYamlMerge +}); + + +/***/ }), +/* 37 */, +/* 38 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _codePoint = _interopRequireDefault(__webpack_require__(763)); + +var _hashtagAlphaNumeric = _interopRequireDefault(__webpack_require__(965)); + +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var hashtagBoundary = (0, _regexSupplant["default"])(/(?:^|\uFE0E|\uFE0F|$|(?!#{hashtagAlphaNumeric}|&)#{codePoint})/, { + codePoint: _codePoint["default"], + hashtagAlphaNumeric: _hashtagAlphaNumeric["default"] +}); +var _default = hashtagBoundary; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 39 */, +/* 40 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const net_1 = __importDefault(__webpack_require__(631)); +const tls_1 = __importDefault(__webpack_require__(16)); +const url_1 = __importDefault(__webpack_require__(835)); +const assert_1 = __importDefault(__webpack_require__(357)); +const debug_1 = __importDefault(__webpack_require__(784)); +const agent_base_1 = __webpack_require__(443); +const parse_proxy_response_1 = __importDefault(__webpack_require__(428)); +const debug = debug_1.default('https-proxy-agent:agent'); /** - * Gets the input value of the boolean type in the YAML 1.2 "core schema" specification. - * Support boolean input list: `true | True | TRUE | false | False | FALSE` . - * The return value is also in boolean type. - * ref: https://yaml.org/spec/1.2/spec.html#id2804923 + * The `HttpsProxyAgent` implements an HTTP Agent subclass that connects to + * the specified "HTTP(s) proxy server" in order to proxy HTTPS requests. * - * @param name name of the input to get - * @param options optional. See InputOptions. - * @returns boolean - */ -function getBooleanInput(name, options) { - const trueValue = ['true', 'True', 'TRUE']; - const falseValue = ['false', 'False', 'FALSE']; - const val = getInput(name, options); - if (trueValue.includes(val)) - return true; - if (falseValue.includes(val)) - return false; - throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${name}\n` + - `Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); -} -exports.getBooleanInput = getBooleanInput; -/** - * Sets the value of an output. + * Outgoing HTTP requests are first tunneled through the proxy server using the + * `CONNECT` HTTP request method to establish a connection to the proxy server, + * and then the proxy server connects to the destination target and issues the + * HTTP request from the proxy server. * - * @param name name of the output to set - * @param value value to store. Non-string values will be converted to a string via JSON.stringify - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -function setOutput(name, value) { - process.stdout.write(os.EOL); - command_1.issueCommand('set-output', { name }, value); -} -exports.setOutput = setOutput; -/** - * Enables or disables the echoing of commands into stdout for the rest of the step. - * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set. + * `https:` requests have their socket connection upgraded to TLS once + * the connection to the proxy server has been established. * + * @api public */ -function setCommandEcho(enabled) { - command_1.issue('echo', enabled ? 'on' : 'off'); -} -exports.setCommandEcho = setCommandEcho; -//----------------------------------------------------------------------- -// Results -//----------------------------------------------------------------------- -/** - * Sets the action status to failed. - * When the action exits it will be with an exit code of 1 - * @param message add error issue message - */ -function setFailed(message) { - process.exitCode = ExitCode.Failure; - error(message); -} -exports.setFailed = setFailed; -//----------------------------------------------------------------------- -// Logging Commands -//----------------------------------------------------------------------- -/** - * Gets whether Actions Step Debug is on or not - */ -function isDebug() { - return process.env['RUNNER_DEBUG'] === '1'; -} -exports.isDebug = isDebug; -/** - * Writes debug message to user log - * @param message debug message - */ -function debug(message) { - command_1.issueCommand('debug', {}, message); -} -exports.debug = debug; -/** - * Adds an error issue - * @param message error issue message. Errors will be converted to string via toString() - * @param properties optional properties to add to the annotation. - */ -function error(message, properties = {}) { - command_1.issueCommand('error', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); -} -exports.error = error; -/** - * Adds a warning issue - * @param message warning issue message. Errors will be converted to string via toString() - * @param properties optional properties to add to the annotation. - */ -function warning(message, properties = {}) { - command_1.issueCommand('warning', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); -} -exports.warning = warning; -/** - * Adds a notice issue - * @param message notice issue message. Errors will be converted to string via toString() - * @param properties optional properties to add to the annotation. - */ -function notice(message, properties = {}) { - command_1.issueCommand('notice', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); -} -exports.notice = notice; -/** - * Writes info to log with console.log. - * @param message info message - */ -function info(message) { - process.stdout.write(message + os.EOL); -} -exports.info = info; -/** - * Begin an output group. - * - * Output until the next `groupEnd` will be foldable in this group - * - * @param name The name of the output group - */ -function startGroup(name) { - command_1.issue('group', name); -} -exports.startGroup = startGroup; -/** - * End an output group. - */ -function endGroup() { - command_1.issue('endgroup'); -} -exports.endGroup = endGroup; -/** - * Wrap an asynchronous function call in a group. - * - * Returns the same type as the function itself. - * - * @param name The name of the group - * @param fn The function to wrap in the group - */ -function group(name, fn) { - return __awaiter(this, void 0, void 0, function* () { - startGroup(name); - let result; - try { - result = yield fn(); +class HttpsProxyAgent extends agent_base_1.Agent { + constructor(_opts) { + let opts; + if (typeof _opts === 'string') { + opts = url_1.default.parse(_opts); } - finally { - endGroup(); + else { + opts = _opts; } - return result; - }); + if (!opts) { + throw new Error('an HTTP(S) proxy server `host` and `port` must be specified!'); + } + debug('creating new HttpsProxyAgent instance: %o', opts); + super(opts); + const proxy = Object.assign({}, opts); + // If `true`, then connect to the proxy server over TLS. + // Defaults to `false`. + this.secureProxy = opts.secureProxy || isHTTPS(proxy.protocol); + // Prefer `hostname` over `host`, and set the `port` if needed. + proxy.host = proxy.hostname || proxy.host; + if (typeof proxy.port === 'string') { + proxy.port = parseInt(proxy.port, 10); + } + if (!proxy.port && proxy.host) { + proxy.port = this.secureProxy ? 443 : 80; + } + // ALPN is supported by Node.js >= v5. + // attempt to negotiate http/1.1 for proxy servers that support http/2 + if (this.secureProxy && !('ALPNProtocols' in proxy)) { + proxy.ALPNProtocols = ['http 1.1']; + } + if (proxy.host && proxy.path) { + // If both a `host` and `path` are specified then it's most likely + // the result of a `url.parse()` call... we need to remove the + // `path` portion so that `net.connect()` doesn't attempt to open + // that as a Unix socket file. + delete proxy.path; + delete proxy.pathname; + } + this.proxy = proxy; + } + /** + * Called when the node-core HTTP client library is creating a + * new HTTP request. + * + * @api protected + */ + callback(req, opts) { + return __awaiter(this, void 0, void 0, function* () { + const { proxy, secureProxy } = this; + // Create a socket connection to the proxy server. + let socket; + if (secureProxy) { + debug('Creating `tls.Socket`: %o', proxy); + socket = tls_1.default.connect(proxy); + } + else { + debug('Creating `net.Socket`: %o', proxy); + socket = net_1.default.connect(proxy); + } + const headers = Object.assign({}, proxy.headers); + const hostname = `${opts.host}:${opts.port}`; + let payload = `CONNECT ${hostname} HTTP/1.1\r\n`; + // Inject the `Proxy-Authorization` header if necessary. + if (proxy.auth) { + headers['Proxy-Authorization'] = `Basic ${Buffer.from(proxy.auth).toString('base64')}`; + } + // The `Host` header should only include the port + // number when it is not the default port. + let { host, port, secureEndpoint } = opts; + if (!isDefaultPort(port, secureEndpoint)) { + host += `:${port}`; + } + headers.Host = host; + headers.Connection = 'close'; + for (const name of Object.keys(headers)) { + payload += `${name}: ${headers[name]}\r\n`; + } + const proxyResponsePromise = parse_proxy_response_1.default(socket); + socket.write(`${payload}\r\n`); + const { statusCode, buffered } = yield proxyResponsePromise; + if (statusCode === 200) { + req.once('socket', resume); + if (opts.secureEndpoint) { + // The proxy is connecting to a TLS server, so upgrade + // this socket connection to a TLS connection. + debug('Upgrading socket connection to TLS'); + const servername = opts.servername || opts.host; + return tls_1.default.connect(Object.assign(Object.assign({}, omit(opts, 'host', 'hostname', 'path', 'port')), { socket, + servername })); + } + return socket; + } + // Some other status code that's not 200... need to re-play the HTTP + // header "data" events onto the socket once the HTTP machinery is + // attached so that the node core `http` can parse and handle the + // error status code. + // Close the original socket, and a new "fake" socket is returned + // instead, so that the proxy doesn't get the HTTP request + // written to it (which may contain `Authorization` headers or other + // sensitive data). + // + // See: https://hackerone.com/reports/541502 + socket.destroy(); + const fakeSocket = new net_1.default.Socket({ writable: false }); + fakeSocket.readable = true; + // Need to wait for the "socket" event to re-play the "data" events. + req.once('socket', (s) => { + debug('replaying proxy buffer for failed request'); + assert_1.default(s.listenerCount('data') > 0); + // Replay the "buffered" Buffer onto the fake `socket`, since at + // this point the HTTP module machinery has been hooked up for + // the user. + s.push(buffered); + s.push(null); + }); + return fakeSocket; + }); + } } -exports.group = group; -//----------------------------------------------------------------------- -// Wrapper action state -//----------------------------------------------------------------------- -/** - * Saves state for current action, the state can only be retrieved by this action's post job execution. - * - * @param name name of the state to store - * @param value value to store. Non-string values will be converted to a string via JSON.stringify - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -function saveState(name, value) { - command_1.issueCommand('save-state', { name }, value); +exports.default = HttpsProxyAgent; +function resume(socket) { + socket.resume(); } -exports.saveState = saveState; -/** - * Gets the value of an state set by this action's main execution. - * - * @param name name of the state to get - * @returns string - */ -function getState(name) { - return process.env[`STATE_${name}`] || ''; +function isDefaultPort(port, secure) { + return Boolean((!secure && port === 80) || (secure && port === 443)); } -exports.getState = getState; -function getIDToken(aud) { - return __awaiter(this, void 0, void 0, function* () { - return yield oidc_utils_1.OidcClient.getIDToken(aud); - }); +function isHTTPS(protocol) { + return typeof protocol === 'string' ? /^https:?$/i.test(protocol) : false; } -exports.getIDToken = getIDToken; -/** - * Summary exports - */ -var summary_1 = __nccwpck_require__(1327); -Object.defineProperty(exports, "summary", ({ enumerable: true, get: function () { return summary_1.summary; } })); -/** - * @deprecated use core.summary - */ -var summary_2 = __nccwpck_require__(1327); -Object.defineProperty(exports, "markdownSummary", ({ enumerable: true, get: function () { return summary_2.markdownSummary; } })); -/** - * Path exports - */ -var path_utils_1 = __nccwpck_require__(2981); -Object.defineProperty(exports, "toPosixPath", ({ enumerable: true, get: function () { return path_utils_1.toPosixPath; } })); -Object.defineProperty(exports, "toWin32Path", ({ enumerable: true, get: function () { return path_utils_1.toWin32Path; } })); -Object.defineProperty(exports, "toPlatformPath", ({ enumerable: true, get: function () { return path_utils_1.toPlatformPath; } })); -//# sourceMappingURL=core.js.map +function omit(obj, ...keys) { + const ret = {}; + let key; + for (key in obj) { + if (!keys.includes(key)) { + ret[key] = obj[key]; + } + } + return ret; +} +//# sourceMappingURL=agent.js.map /***/ }), - -/***/ 717: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { +/* 41 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -// For internal use, subject to change. -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true }); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.issueCommand = void 0; -// We use any as a valid input type -/* eslint-disable @typescript-eslint/no-explicit-any */ -const fs = __importStar(__nccwpck_require__(7147)); -const os = __importStar(__nccwpck_require__(2037)); -const utils_1 = __nccwpck_require__(5278); -function issueCommand(command, message) { - const filePath = process.env[`GITHUB_${command}`]; - if (!filePath) { - throw new Error(`Unable to find environment variable for file command ${command}`); - } - if (!fs.existsSync(filePath)) { - throw new Error(`Missing file at path: ${filePath}`); +exports["default"] = void 0; + +__webpack_require__(765); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var getCharacterWeight = function getCharacterWeight(ch, options) { + var defaultWeight = options.defaultWeight, + ranges = options.ranges; + var weight = defaultWeight; + var chCodePoint = ch.charCodeAt(0); + + if (Array.isArray(ranges)) { + for (var i = 0, length = ranges.length; i < length; i++) { + var currRange = ranges[i]; + + if (chCodePoint >= currRange.start && chCodePoint <= currRange.end) { + weight = currRange.weight; + break; + } } - fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, { - encoding: 'utf8' - }); -} -exports.issueCommand = issueCommand; -//# sourceMappingURL=file-command.js.map + } + + return weight; +}; + +var _default = getCharacterWeight; +exports["default"] = _default; +module.exports = exports.default; /***/ }), +/* 42 */, +/* 43 */ +/***/ (function(module) { + +// 7.1.4 ToInteger +var ceil = Math.ceil; +var floor = Math.floor; +module.exports = function (it) { + return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); +}; + -/***/ 8041: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { +/***/ }), +/* 44 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); + +var _validateUrlUserinfo = _interopRequireDefault(__webpack_require__(272)); + +var _validateUrlUnicodeHost = _interopRequireDefault(__webpack_require__(146)); + +var _validateUrlPort = _interopRequireDefault(__webpack_require__(302)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlUnicodeAuthority = (0, _regexSupplant["default"])( // $1 userinfo +'(?:(#{validateUrlUserinfo})@)?' + // $2 host +'(#{validateUrlUnicodeHost})' + // $3 port +'(?::(#{validateUrlPort}))?', { + validateUrlUserinfo: _validateUrlUserinfo["default"], + validateUrlUnicodeHost: _validateUrlUnicodeHost["default"], + validateUrlPort: _validateUrlPort["default"] +}, 'i'); +var _default = validateUrlUnicodeAuthority; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 45 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var IDENTIFIER = /^[a-z_$][a-z0-9_$-]*$/i; +var customRuleCode = __webpack_require__(314); +var definitionSchema = __webpack_require__(952); + +module.exports = { + add: addKeyword, + get: getKeyword, + remove: removeKeyword, + validate: validateKeyword }; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.OidcClient = void 0; -const http_client_1 = __nccwpck_require__(6255); -const auth_1 = __nccwpck_require__(5526); -const core_1 = __nccwpck_require__(2186); -class OidcClient { - static createHttpClient(allowRetry = true, maxRetry = 10) { - const requestOptions = { - allowRetries: allowRetry, - maxRetries: maxRetry - }; - return new http_client_1.HttpClient('actions/oidc-client', [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], requestOptions); - } - static getRequestToken() { - const token = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN']; - if (!token) { - throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable'); - } - return token; + + +/** + * Define custom keyword + * @this Ajv + * @param {String} keyword custom keyword, should be unique (including different from all standard, custom and macro keywords). + * @param {Object} definition keyword definition object with properties `type` (type(s) which the keyword applies to), `validate` or `compile`. + * @return {Ajv} this for method chaining + */ +function addKeyword(keyword, definition) { + /* jshint validthis: true */ + /* eslint no-shadow: 0 */ + var RULES = this.RULES; + if (RULES.keywords[keyword]) + throw new Error('Keyword ' + keyword + ' is already defined'); + + if (!IDENTIFIER.test(keyword)) + throw new Error('Keyword ' + keyword + ' is not a valid identifier'); + + if (definition) { + this.validateKeyword(definition, true); + + var dataType = definition.type; + if (Array.isArray(dataType)) { + for (var i=0; i { - throw new Error(`Failed to get ID Token. \n - Error Code : ${error.statusCode}\n - Error Message: ${error.result.message}`); - }); - const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value; - if (!id_token) { - throw new Error('Response json body do not have ID Token field'); - } - return id_token; - }); + } + + RULES.keywords[keyword] = RULES.all[keyword] = true; + + + function _addRule(keyword, dataType, definition) { + var ruleGroup; + for (var i=0; i ` ${key}="${value}"`) - .join(''); - if (!content) { - return `<${tag}${htmlAttrs}>`; - } - return `<${tag}${htmlAttrs}>${content}`; + + // " o The cookie-path is a prefix of the request-path, and the first + // character of the request-path that is not included in the cookie- path + // is a %x2F ("/") character." + if (reqPath.substr(cookiePath.length, 1) === "/") { + return true; } - /** - * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default. - * - * @param {SummaryWriteOptions} [options] (optional) options for write operation - * - * @returns {Promise} summary instance - */ - write(options) { - return __awaiter(this, void 0, void 0, function* () { - const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite); - const filePath = yield this.filePath(); - const writeFunc = overwrite ? writeFile : appendFile; - yield writeFunc(filePath, this._buffer, { encoding: 'utf8' }); - return this.emptyBuffer(); - }); - } - /** - * Clears the summary buffer and wipes the summary file - * - * @returns {Summary} summary instance - */ - clear() { - return __awaiter(this, void 0, void 0, function* () { - return this.emptyBuffer().write({ overwrite: true }); - }); - } - /** - * Returns the current summary buffer as a string - * - * @returns {string} string of summary buffer - */ - stringify() { - return this._buffer; - } - /** - * If the summary buffer is empty - * - * @returns {boolen} true if the buffer is empty - */ - isEmptyBuffer() { - return this._buffer.length === 0; - } - /** - * Resets the summary buffer without writing to summary file - * - * @returns {Summary} summary instance - */ - emptyBuffer() { - this._buffer = ''; - return this; - } - /** - * Adds raw text to the summary buffer - * - * @param {string} text content to add - * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false) - * - * @returns {Summary} summary instance - */ - addRaw(text, addEOL = false) { - this._buffer += text; - return addEOL ? this.addEOL() : this; - } - /** - * Adds the operating system-specific end-of-line marker to the buffer - * - * @returns {Summary} summary instance - */ - addEOL() { - return this.addRaw(os_1.EOL); - } - /** - * Adds an HTML codeblock to the summary buffer - * - * @param {string} code content to render within fenced code block - * @param {string} lang (optional) language to syntax highlight code - * - * @returns {Summary} summary instance - */ - addCodeBlock(code, lang) { - const attrs = Object.assign({}, (lang && { lang })); - const element = this.wrap('pre', this.wrap('code', code), attrs); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML list to the summary buffer - * - * @param {string[]} items list of items to render - * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false) - * - * @returns {Summary} summary instance - */ - addList(items, ordered = false) { - const tag = ordered ? 'ol' : 'ul'; - const listItems = items.map(item => this.wrap('li', item)).join(''); - const element = this.wrap(tag, listItems); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML table to the summary buffer - * - * @param {SummaryTableCell[]} rows table rows - * - * @returns {Summary} summary instance - */ - addTable(rows) { - const tableBody = rows - .map(row => { - const cells = row - .map(cell => { - if (typeof cell === 'string') { - return this.wrap('td', cell); - } - const { header, data, colspan, rowspan } = cell; - const tag = header ? 'th' : 'td'; - const attrs = Object.assign(Object.assign({}, (colspan && { colspan })), (rowspan && { rowspan })); - return this.wrap(tag, data, attrs); - }) - .join(''); - return this.wrap('tr', cells); - }) - .join(''); - const element = this.wrap('table', tableBody); - return this.addRaw(element).addEOL(); - } - /** - * Adds a collapsable HTML details element to the summary buffer - * - * @param {string} label text for the closed state - * @param {string} content collapsable content - * - * @returns {Summary} summary instance - */ - addDetails(label, content) { - const element = this.wrap('details', this.wrap('summary', label) + content); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML image tag to the summary buffer - * - * @param {string} src path to the image you to embed - * @param {string} alt text description of the image - * @param {SummaryImageOptions} options (optional) addition image attributes - * - * @returns {Summary} summary instance - */ - addImage(src, alt, options) { - const { width, height } = options || {}; - const attrs = Object.assign(Object.assign({}, (width && { width })), (height && { height })); - const element = this.wrap('img', null, Object.assign({ src, alt }, attrs)); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML section heading element - * - * @param {string} text heading text - * @param {number | string} [level=1] (optional) the heading level, default: 1 - * - * @returns {Summary} summary instance - */ - addHeading(text, level) { - const tag = `h${level}`; - const allowedTag = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag) - ? tag - : 'h1'; - const element = this.wrap(allowedTag, text); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML thematic break (
) to the summary buffer - * - * @returns {Summary} summary instance - */ - addSeparator() { - const element = this.wrap('hr', null); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML line break (
) to the summary buffer - * - * @returns {Summary} summary instance - */ - addBreak() { - const element = this.wrap('br', null); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML blockquote to the summary buffer - * - * @param {string} text quote text - * @param {string} cite (optional) citation url - * - * @returns {Summary} summary instance - */ - addQuote(text, cite) { - const attrs = Object.assign({}, (cite && { cite })); - const element = this.wrap('blockquote', text, attrs); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML anchor tag to the summary buffer - * - * @param {string} text link text/content - * @param {string} href hyperlink - * - * @returns {Summary} summary instance - */ - addLink(text, href) { - const element = this.wrap('a', text, { href }); - return this.addRaw(element).addEOL(); + } + + return false; +} + +exports.pathMatch = pathMatch; + + +/***/ }), +/* 55 */, +/* 56 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validUrlQueryChars = /[a-z0-9!?\*'@\(\);:&=\+\$\/%#\[\]\-_\.,~|]/i; +var _default = validUrlQueryChars; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 57 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; + +__webpack_require__(809); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +// simple string interpolation +function _default(str, map) { + return str.replace(/#\{(\w+)\}/g, function (match, name) { + return map[name] || ''; + }); +} + +module.exports = exports.default; + +/***/ }), +/* 58 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; + +var _extractMentionsOrListsWithIndices = _interopRequireDefault(__webpack_require__(680)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text) { + var mentions = []; + var mentionOrList; + var mentionsOrLists = (0, _extractMentionsOrListsWithIndices["default"])(text); + + for (var i = 0; i < mentionsOrLists.length; i++) { + mentionOrList = mentionsOrLists[i]; + + if (mentionOrList.listSlug === '') { + mentions.push({ + screenName: mentionOrList.screenName, + indices: mentionOrList.indices + }); } + } + + return mentions; } -const _summary = new Summary(); -/** - * @deprecated use `core.summary` - */ -exports.markdownSummary = _summary; -exports.summary = _summary; -//# sourceMappingURL=summary.js.map -/***/ }), +module.exports = exports.default; -/***/ 5278: -/***/ ((__unused_webpack_module, exports) => { +/***/ }), +/* 59 */, +/* 60 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -// We use any as a valid input type -/* eslint-disable @typescript-eslint/no-explicit-any */ -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.toCommandProperties = exports.toCommandValue = void 0; -/** - * Sanitizes an input into a string so it can be passed into issueCommand safely - * @param input input to sanitize into a string - */ -function toCommandValue(input) { - if (input === null || input === undefined) { - return ''; - } - else if (typeof input === 'string' || input instanceof String) { - return input; - } - return JSON.stringify(input); -} -exports.toCommandValue = toCommandValue; -/** - * - * @param annotationProperties - * @returns The command properties to send with the actual annotation command - * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646 - */ -function toCommandProperties(annotationProperties) { - if (!Object.keys(annotationProperties).length) { - return {}; - } - return { - title: annotationProperties.title, - file: annotationProperties.file, - line: annotationProperties.startLine, - endLine: annotationProperties.endLine, - col: annotationProperties.startColumn, - endColumn: annotationProperties.endColumn - }; -} -exports.toCommandProperties = toCommandProperties; -//# sourceMappingURL=utils.js.map -/***/ }), +var _interopRequireDefault = __webpack_require__(764); -/***/ 8974: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +__webpack_require__(493); -"use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = standardizeIndices; +__webpack_require__(372); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -Object.defineProperty(exports, "v1", ({ - enumerable: true, - get: function () { - return _v.default; - } -})); -Object.defineProperty(exports, "v3", ({ - enumerable: true, - get: function () { - return _v2.default; - } -})); -Object.defineProperty(exports, "v4", ({ - enumerable: true, - get: function () { - return _v3.default; - } -})); -Object.defineProperty(exports, "v5", ({ - enumerable: true, - get: function () { - return _v4.default; - } -})); -Object.defineProperty(exports, "NIL", ({ - enumerable: true, - get: function () { - return _nil.default; - } -})); -Object.defineProperty(exports, "version", ({ - enumerable: true, - get: function () { - return _version.default; - } -})); -Object.defineProperty(exports, "validate", ({ - enumerable: true, - get: function () { - return _validate.default; - } -})); -Object.defineProperty(exports, "stringify", ({ - enumerable: true, - get: function () { - return _stringify.default; - } -})); -Object.defineProperty(exports, "parse", ({ - enumerable: true, - get: function () { - return _parse.default; - } -})); - -var _v = _interopRequireDefault(__nccwpck_require__(1595)); +__webpack_require__(610); -var _v2 = _interopRequireDefault(__nccwpck_require__(6993)); +var _getUnicodeTextLength = _interopRequireDefault(__webpack_require__(105)); -var _v3 = _interopRequireDefault(__nccwpck_require__(1472)); - -var _v4 = _interopRequireDefault(__nccwpck_require__(6217)); - -var _nil = _interopRequireDefault(__nccwpck_require__(2381)); - -var _version = _interopRequireDefault(__nccwpck_require__(427)); - -var _validate = _interopRequireDefault(__nccwpck_require__(2609)); +function standardizeIndices(text, startIndex, endIndex) { + var totalUnicodeTextLength = (0, _getUnicodeTextLength["default"])(text); + var encodingDiff = text.length - totalUnicodeTextLength; -var _stringify = _interopRequireDefault(__nccwpck_require__(1458)); + if (encodingDiff > 0) { + // split the string into codepoints which will map to the API's indices + var byCodePair = Array.from(text); + var beforeText = startIndex === 0 ? '' : byCodePair.slice(0, startIndex).join(''); + var actualText = byCodePair.slice(startIndex, endIndex).join(''); + return [beforeText.length, beforeText.length + actualText.length]; + } -var _parse = _interopRequireDefault(__nccwpck_require__(6385)); + return [startIndex, endIndex]; +} -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +module.exports = exports.default; /***/ }), - -/***/ 5842: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/* 61 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", ({ +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { value: true -})); +}); exports["default"] = void 0; -var _crypto = _interopRequireDefault(__nccwpck_require__(6113)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); -function md5(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } +var _spacesGroup = _interopRequireDefault(__webpack_require__(162)); - return _crypto.default.createHash('md5').update(bytes).digest(); -} +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var _default = (0, _regexSupplant["default"])(/[#{spacesGroup}]/, { + spacesGroup: _spacesGroup["default"] +}); -var _default = md5; exports["default"] = _default; +module.exports = exports.default; /***/ }), - -/***/ 2381: -/***/ ((__unused_webpack_module, exports) => { +/* 62 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -var _default = '00000000-0000-0000-0000-000000000000'; -exports["default"] = _default; - -/***/ }), - -/***/ 6385: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; +var _interopRequireDefault = __webpack_require__(764); +__webpack_require__(493); -Object.defineProperty(exports, "__esModule", ({ +Object.defineProperty(exports, "__esModule", { value: true -})); +}); exports["default"] = void 0; -var _validate = _interopRequireDefault(__nccwpck_require__(2609)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function parse(uuid) { - if (!(0, _validate.default)(uuid)) { - throw TypeError('Invalid UUID'); - } - - let v; - const arr = new Uint8Array(16); // Parse ########-....-....-....-............ - - arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = v >>> 16 & 0xff; - arr[2] = v >>> 8 & 0xff; - arr[3] = v & 0xff; // Parse ........-####-....-....-............ - - arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v & 0xff; // Parse ........-....-####-....-............ +var _astralLetterAndMarks = _interopRequireDefault(__webpack_require__(481)); - arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v & 0xff; // Parse ........-....-....-####-............ +var _bmpLetterAndMarks = _interopRequireDefault(__webpack_require__(886)); - arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v & 0xff; // Parse ........-....-....-....-############ - // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) +var _nonBmpCodePairs = _interopRequireDefault(__webpack_require__(235)); - arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; - arr[11] = v / 0x100000000 & 0xff; - arr[12] = v >>> 24 & 0xff; - arr[13] = v >>> 16 & 0xff; - arr[14] = v >>> 8 & 0xff; - arr[15] = v & 0xff; - return arr; -} +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); -var _default = parse; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +// A hashtag must contain at least one unicode letter or mark, as well as numbers, underscores, and select special characters. +var hashtagAlpha = (0, _regexSupplant["default"])(/(?:[#{bmpLetterAndMarks}]|(?=#{nonBmpCodePairs})(?:#{astralLetterAndMarks}))/, { + bmpLetterAndMarks: _bmpLetterAndMarks["default"], + nonBmpCodePairs: _nonBmpCodePairs["default"], + astralLetterAndMarks: _astralLetterAndMarks["default"] +}); +var _default = hashtagAlpha; exports["default"] = _default; +module.exports = exports.default; /***/ }), - -/***/ 6230: -/***/ ((__unused_webpack_module, exports) => { +/* 63 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", ({ +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { value: true -})); -exports["default"] = void 0; -var _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; +}); exports["default"] = _default; -/***/ }), - -/***/ 9784: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +__webpack_require__(809); -"use strict"; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var HTML_ENTITIES = { + '&': '&', + '>': '>', + '<': '<', + '"': '"', + "'": ''' +}; +function _default(text) { + return text && text.replace(/[&"'><]/g, function (character) { + return HTML_ENTITIES[character]; + }); +} -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = rng; +module.exports = exports.default; -var _crypto = _interopRequireDefault(__nccwpck_require__(6113)); +/***/ }), +/* 64 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +// Copyright 2012 Joyent, Inc. All rights reserved. -const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate +var assert = __webpack_require__(489); +var crypto = __webpack_require__(417); +var http = __webpack_require__(605); +var util = __webpack_require__(669); +var sshpk = __webpack_require__(650); +var jsprim = __webpack_require__(926); +var utils = __webpack_require__(909); -let poolPtr = rnds8Pool.length; +var sprintf = __webpack_require__(669).format; -function rng() { - if (poolPtr > rnds8Pool.length - 16) { - _crypto.default.randomFillSync(rnds8Pool); +var HASH_ALGOS = utils.HASH_ALGOS; +var PK_ALGOS = utils.PK_ALGOS; +var InvalidAlgorithmError = utils.InvalidAlgorithmError; +var HttpSignatureError = utils.HttpSignatureError; +var validateAlgorithm = utils.validateAlgorithm; - poolPtr = 0; - } +///--- Globals - return rnds8Pool.slice(poolPtr, poolPtr += 16); -} +var AUTHZ_FMT = + 'Signature keyId="%s",algorithm="%s",headers="%s",signature="%s"'; -/***/ }), +///--- Specific Errors -/***/ 8844: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +function MissingHeaderError(message) { + HttpSignatureError.call(this, message, MissingHeaderError); +} +util.inherits(MissingHeaderError, HttpSignatureError); -"use strict"; +function StrictParsingError(message) { + HttpSignatureError.call(this, message, StrictParsingError); +} +util.inherits(StrictParsingError, HttpSignatureError); +/* See createSigner() */ +function RequestSigner(options) { + assert.object(options, 'options'); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + var alg = []; + if (options.algorithm !== undefined) { + assert.string(options.algorithm, 'options.algorithm'); + alg = validateAlgorithm(options.algorithm); + } + this.rs_alg = alg; -var _crypto = _interopRequireDefault(__nccwpck_require__(6113)); + /* + * RequestSigners come in two varieties: ones with an rs_signFunc, and ones + * with an rs_signer. + * + * rs_signFunc-based RequestSigners have to build up their entire signing + * string within the rs_lines array and give it to rs_signFunc as a single + * concat'd blob. rs_signer-based RequestSigners can add a line at a time to + * their signing state by using rs_signer.update(), thus only needing to + * buffer the hash function state and one line at a time. + */ + if (options.sign !== undefined) { + assert.func(options.sign, 'options.sign'); + this.rs_signFunc = options.sign; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + } else if (alg[0] === 'hmac' && options.key !== undefined) { + assert.string(options.keyId, 'options.keyId'); + this.rs_keyId = options.keyId; -function sha1(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } + if (typeof (options.key) !== 'string' && !Buffer.isBuffer(options.key)) + throw (new TypeError('options.key for HMAC must be a string or Buffer')); - return _crypto.default.createHash('sha1').update(bytes).digest(); -} + /* + * Make an rs_signer for HMACs, not a rs_signFunc -- HMACs digest their + * data in chunks rather than requiring it all to be given in one go + * at the end, so they are more similar to signers than signFuncs. + */ + this.rs_signer = crypto.createHmac(alg[1].toUpperCase(), options.key); + this.rs_signer.sign = function () { + var digest = this.digest('base64'); + return ({ + hashAlgorithm: alg[1], + toString: function () { return (digest); } + }); + }; -var _default = sha1; -exports["default"] = _default; + } else if (options.key !== undefined) { + var key = options.key; + if (typeof (key) === 'string' || Buffer.isBuffer(key)) + key = sshpk.parsePrivateKey(key); -/***/ }), + assert.ok(sshpk.PrivateKey.isPrivateKey(key, [1, 2]), + 'options.key must be a sshpk.PrivateKey'); + this.rs_key = key; -/***/ 1458: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + assert.string(options.keyId, 'options.keyId'); + this.rs_keyId = options.keyId; -"use strict"; + if (!PK_ALGOS[key.type]) { + throw (new InvalidAlgorithmError(key.type.toUpperCase() + ' type ' + + 'keys are not supported')); + } + if (alg[0] !== undefined && key.type !== alg[0]) { + throw (new InvalidAlgorithmError('options.key must be a ' + + alg[0].toUpperCase() + ' key, was given a ' + + key.type.toUpperCase() + ' key instead')); + } -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + this.rs_signer = key.createSign(alg[1]); -var _validate = _interopRequireDefault(__nccwpck_require__(2609)); + } else { + throw (new TypeError('options.sign (func) or options.key is required')); + } -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + this.rs_headers = []; + this.rs_lines = []; +} /** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + * Adds a header to be signed, with its value, into this signer. + * + * @param {String} header + * @param {String} value + * @return {String} value written */ -const byteToHex = []; +RequestSigner.prototype.writeHeader = function (header, value) { + assert.string(header, 'header'); + header = header.toLowerCase(); + assert.string(value, 'value'); -for (let i = 0; i < 256; ++i) { - byteToHex.push((i + 0x100).toString(16).substr(1)); -} + this.rs_headers.push(header); -function stringify(arr, offset = 0) { - // Note: Be careful editing this code! It's been tuned for performance - // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 - const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one - // of the following: - // - One or more input array values don't map to a hex octet (leading to - // "undefined" in the uuid) - // - Invalid input values for the RFC `version` or `variant` fields + if (this.rs_signFunc) { + this.rs_lines.push(header + ': ' + value); - if (!(0, _validate.default)(uuid)) { - throw TypeError('Stringified UUID is invalid'); + } else { + var line = header + ': ' + value; + if (this.rs_headers.length > 0) + line = '\n' + line; + this.rs_signer.update(line); } - return uuid; -} - -var _default = stringify; -exports["default"] = _default; - -/***/ }), + return (value); +}; -/***/ 1595: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/** + * Adds a default Date header, returning its value. + * + * @return {String} + */ +RequestSigner.prototype.writeDateHeader = function () { + return (this.writeHeader('date', jsprim.rfc1123(new Date()))); +}; -"use strict"; +/** + * Adds the request target line to be signed. + * + * @param {String} method, HTTP method (e.g. 'get', 'post', 'put') + * @param {String} path + */ +RequestSigner.prototype.writeTarget = function (method, path) { + assert.string(method, 'method'); + assert.string(path, 'path'); + method = method.toLowerCase(); + this.writeHeader('(request-target)', method + ' ' + path); +}; +/** + * Calculate the value for the Authorization header on this request + * asynchronously. + * + * @param {Func} callback (err, authz) + */ +RequestSigner.prototype.sign = function (cb) { + assert.func(cb, 'callback'); + + if (this.rs_headers.length < 1) + throw (new Error('At least one header must be signed')); + + var alg, authz; + if (this.rs_signFunc) { + var data = this.rs_lines.join('\n'); + var self = this; + this.rs_signFunc(data, function (err, sig) { + if (err) { + cb(err); + return; + } + try { + assert.object(sig, 'signature'); + assert.string(sig.keyId, 'signature.keyId'); + assert.string(sig.algorithm, 'signature.algorithm'); + assert.string(sig.signature, 'signature.signature'); + alg = validateAlgorithm(sig.algorithm); + + authz = sprintf(AUTHZ_FMT, + sig.keyId, + sig.algorithm, + self.rs_headers.join(' '), + sig.signature); + } catch (e) { + cb(e); + return; + } + cb(null, authz); + }); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _rng = _interopRequireDefault(__nccwpck_require__(9784)); - -var _stringify = _interopRequireDefault(__nccwpck_require__(1458)); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// **`v1()` - Generate time-based UUID** -// -// Inspired by https://github.com/LiosK/UUID.js -// and http://docs.python.org/library/uuid.html -let _nodeId; - -let _clockseq; // Previous uuid creation time + } else { + try { + var sigObj = this.rs_signer.sign(); + } catch (e) { + cb(e); + return; + } + alg = (this.rs_alg[0] || this.rs_key.type) + '-' + sigObj.hashAlgorithm; + var signature = sigObj.toString(); + authz = sprintf(AUTHZ_FMT, + this.rs_keyId, + alg, + this.rs_headers.join(' '), + signature); + cb(null, authz); + } +}; +///--- Exported API -let _lastMSecs = 0; -let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details +module.exports = { + /** + * Identifies whether a given object is a request signer or not. + * + * @param {Object} object, the object to identify + * @returns {Boolean} + */ + isSigner: function (obj) { + if (typeof (obj) === 'object' && obj instanceof RequestSigner) + return (true); + return (false); + }, -function v1(options, buf, offset) { - let i = buf && offset || 0; - const b = buf || new Array(16); - options = options || {}; - let node = options.node || _nodeId; - let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not - // specified. We do this lazily to minimize issues related to insufficient - // system entropy. See #189 + /** + * Creates a request signer, used to asynchronously build a signature + * for a request (does not have to be an http.ClientRequest). + * + * @param {Object} options, either: + * - {String} keyId + * - {String|Buffer} key + * - {String} algorithm (optional, required for HMAC) + * or: + * - {Func} sign (data, cb) + * @return {RequestSigner} + */ + createSigner: function createSigner(options) { + return (new RequestSigner(options)); + }, - if (node == null || clockseq == null) { - const seedBytes = options.random || (options.rng || _rng.default)(); + /** + * Adds an 'Authorization' header to an http.ClientRequest object. + * + * Note that this API will add a Date header if it's not already set. Any + * other headers in the options.headers array MUST be present, or this + * will throw. + * + * You shouldn't need to check the return type; it's just there if you want + * to be pedantic. + * + * The optional flag indicates whether parsing should use strict enforcement + * of the version draft-cavage-http-signatures-04 of the spec or beyond. + * The default is to be loose and support + * older versions for compatibility. + * + * @param {Object} request an instance of http.ClientRequest. + * @param {Object} options signing parameters object: + * - {String} keyId required. + * - {String} key required (either a PEM or HMAC key). + * - {Array} headers optional; defaults to ['date']. + * - {String} algorithm optional (unless key is HMAC); + * default is the same as the sshpk default + * signing algorithm for the type of key given + * - {String} httpVersion optional; defaults to '1.1'. + * - {Boolean} strict optional; defaults to 'false'. + * @return {Boolean} true if Authorization (and optionally Date) were added. + * @throws {TypeError} on bad parameter types (input). + * @throws {InvalidAlgorithmError} if algorithm was bad or incompatible with + * the given key. + * @throws {sshpk.KeyParseError} if key was bad. + * @throws {MissingHeaderError} if a header to be signed was specified but + * was not present. + */ + signRequest: function signRequest(request, options) { + assert.object(request, 'request'); + assert.object(options, 'options'); + assert.optionalString(options.algorithm, 'options.algorithm'); + assert.string(options.keyId, 'options.keyId'); + assert.optionalArrayOfString(options.headers, 'options.headers'); + assert.optionalString(options.httpVersion, 'options.httpVersion'); + + if (!request.getHeader('Date')) + request.setHeader('Date', jsprim.rfc1123(new Date())); + if (!options.headers) + options.headers = ['date']; + if (!options.httpVersion) + options.httpVersion = '1.1'; + + var alg = []; + if (options.algorithm) { + options.algorithm = options.algorithm.toLowerCase(); + alg = validateAlgorithm(options.algorithm); + } + + var i; + var stringToSign = ''; + for (i = 0; i < options.headers.length; i++) { + if (typeof (options.headers[i]) !== 'string') + throw new TypeError('options.headers must be an array of Strings'); + + var h = options.headers[i].toLowerCase(); + + if (h === 'request-line') { + if (!options.strict) { + /** + * We allow headers from the older spec drafts if strict parsing isn't + * specified in options. + */ + stringToSign += + request.method + ' ' + request.path + ' HTTP/' + + options.httpVersion; + } else { + /* Strict parsing doesn't allow older draft headers. */ + throw (new StrictParsingError('request-line is not a valid header ' + + 'with strict parsing enabled.')); + } + } else if (h === '(request-target)') { + stringToSign += + '(request-target): ' + request.method.toLowerCase() + ' ' + + request.path; + } else { + var value = request.getHeader(h); + if (value === undefined || value === '') { + throw new MissingHeaderError(h + ' was not in the request'); + } + stringToSign += h + ': ' + value; + } - if (node == null) { - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + if ((i + 1) < options.headers.length) + stringToSign += '\n'; } - if (clockseq == null) { - // Per 4.2.2, randomize (14 bit) clockseq - clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + /* This is just for unit tests. */ + if (request.hasOwnProperty('_stringToSign')) { + request._stringToSign = stringToSign; } - } // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. - - - let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock - - let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) - - const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression - - if (dt < 0 && options.clockseq === undefined) { - clockseq = clockseq + 1 & 0x3fff; - } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval - - - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } // Per 4.2.1.2 Throw error if too many uuids are requested + var signature; + if (alg[0] === 'hmac') { + if (typeof (options.key) !== 'string' && !Buffer.isBuffer(options.key)) + throw (new TypeError('options.key must be a string or Buffer')); - if (nsecs >= 10000) { - throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); - } - - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + var hmac = crypto.createHmac(alg[1].toUpperCase(), options.key); + hmac.update(stringToSign); + signature = hmac.digest('base64'); - msecs += 12219292800000; // `time_low` + } else { + var key = options.key; + if (typeof (key) === 'string' || Buffer.isBuffer(key)) + key = sshpk.parsePrivateKey(options.key); - const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; // `time_mid` + assert.ok(sshpk.PrivateKey.isPrivateKey(key, [1, 2]), + 'options.key must be a sshpk.PrivateKey'); - const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; // `time_high_and_version` + if (!PK_ALGOS[key.type]) { + throw (new InvalidAlgorithmError(key.type.toUpperCase() + ' type ' + + 'keys are not supported')); + } - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + if (alg[0] !== undefined && key.type !== alg[0]) { + throw (new InvalidAlgorithmError('options.key must be a ' + + alg[0].toUpperCase() + ' key, was given a ' + + key.type.toUpperCase() + ' key instead')); + } - b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + var signer = key.createSign(alg[1]); + signer.update(stringToSign); + var sigObj = signer.sign(); + if (!HASH_ALGOS[sigObj.hashAlgorithm]) { + throw (new InvalidAlgorithmError(sigObj.hashAlgorithm.toUpperCase() + + ' is not a supported hash algorithm')); + } + options.algorithm = key.type + '-' + sigObj.hashAlgorithm; + signature = sigObj.toString(); + assert.notStrictEqual(signature, '', 'empty signature produced'); + } - b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` + var authzHeaderName = options.authorizationHeaderName || 'Authorization'; - b[i++] = clockseq & 0xff; // `node` + request.setHeader(authzHeaderName, sprintf(AUTHZ_FMT, + options.keyId, + options.algorithm, + options.headers.join(' '), + signature)); - for (let n = 0; n < 6; ++n) { - b[i + n] = node[n]; + return true; } - return buf || (0, _stringify.default)(b); -} +}; -var _default = v1; -exports["default"] = _default; /***/ }), - -/***/ 6993: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/* 65 */, +/* 66 */ +/***/ (function(module, __unusedexports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; +var utils = __webpack_require__(581); +var formats = __webpack_require__(13); -var _v = _interopRequireDefault(__nccwpck_require__(5920)); +var arrayPrefixGenerators = { + brackets: function brackets(prefix) { // eslint-disable-line func-name-matching + return prefix + '[]'; + }, + indices: function indices(prefix, key) { // eslint-disable-line func-name-matching + return prefix + '[' + key + ']'; + }, + repeat: function repeat(prefix) { // eslint-disable-line func-name-matching + return prefix; + } +}; -var _md = _interopRequireDefault(__nccwpck_require__(5842)); +var toISO = Date.prototype.toISOString; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +var defaults = { + delimiter: '&', + encode: true, + encoder: utils.encode, + encodeValuesOnly: false, + serializeDate: function serializeDate(date) { // eslint-disable-line func-name-matching + return toISO.call(date); + }, + skipNulls: false, + strictNullHandling: false +}; -const v3 = (0, _v.default)('v3', 0x30, _md.default); -var _default = v3; -exports["default"] = _default; +var stringify = function stringify( // eslint-disable-line func-name-matching + object, + prefix, + generateArrayPrefix, + strictNullHandling, + skipNulls, + encoder, + filter, + sort, + allowDots, + serializeDate, + formatter, + encodeValuesOnly +) { + var obj = object; + if (typeof filter === 'function') { + obj = filter(prefix, obj); + } else if (obj instanceof Date) { + obj = serializeDate(obj); + } else if (obj === null) { + if (strictNullHandling) { + return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder) : prefix; + } -/***/ }), + obj = ''; + } -/***/ 5920: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean' || utils.isBuffer(obj)) { + if (encoder) { + var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder); + return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder))]; + } + return [formatter(prefix) + '=' + formatter(String(obj))]; + } -"use strict"; + var values = []; + if (typeof obj === 'undefined') { + return values; + } -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; -exports.URL = exports.DNS = void 0; + var objKeys; + if (Array.isArray(filter)) { + objKeys = filter; + } else { + var keys = Object.keys(obj); + objKeys = sort ? keys.sort(sort) : keys; + } + + for (var i = 0; i < objKeys.length; ++i) { + var key = objKeys[i]; + + if (skipNulls && obj[key] === null) { + continue; + } + + if (Array.isArray(obj)) { + values = values.concat(stringify( + obj[key], + generateArrayPrefix(prefix, key), + generateArrayPrefix, + strictNullHandling, + skipNulls, + encoder, + filter, + sort, + allowDots, + serializeDate, + formatter, + encodeValuesOnly + )); + } else { + values = values.concat(stringify( + obj[key], + prefix + (allowDots ? '.' + key : '[' + key + ']'), + generateArrayPrefix, + strictNullHandling, + skipNulls, + encoder, + filter, + sort, + allowDots, + serializeDate, + formatter, + encodeValuesOnly + )); + } + } + + return values; +}; -var _stringify = _interopRequireDefault(__nccwpck_require__(1458)); +module.exports = function (object, opts) { + var obj = object; + var options = opts ? utils.assign({}, opts) : {}; -var _parse = _interopRequireDefault(__nccwpck_require__(6385)); + if (options.encoder !== null && options.encoder !== undefined && typeof options.encoder !== 'function') { + throw new TypeError('Encoder has to be a function.'); + } -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + var delimiter = typeof options.delimiter === 'undefined' ? defaults.delimiter : options.delimiter; + var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling; + var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : defaults.skipNulls; + var encode = typeof options.encode === 'boolean' ? options.encode : defaults.encode; + var encoder = typeof options.encoder === 'function' ? options.encoder : defaults.encoder; + var sort = typeof options.sort === 'function' ? options.sort : null; + var allowDots = typeof options.allowDots === 'undefined' ? false : options.allowDots; + var serializeDate = typeof options.serializeDate === 'function' ? options.serializeDate : defaults.serializeDate; + var encodeValuesOnly = typeof options.encodeValuesOnly === 'boolean' ? options.encodeValuesOnly : defaults.encodeValuesOnly; + if (typeof options.format === 'undefined') { + options.format = formats['default']; + } else if (!Object.prototype.hasOwnProperty.call(formats.formatters, options.format)) { + throw new TypeError('Unknown format option provided.'); + } + var formatter = formats.formatters[options.format]; + var objKeys; + var filter; -function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); // UTF8 escape + if (typeof options.filter === 'function') { + filter = options.filter; + obj = filter('', obj); + } else if (Array.isArray(options.filter)) { + filter = options.filter; + objKeys = filter; + } - const bytes = []; + var keys = []; - for (let i = 0; i < str.length; ++i) { - bytes.push(str.charCodeAt(i)); - } + if (typeof obj !== 'object' || obj === null) { + return ''; + } - return bytes; -} + var arrayFormat; + if (options.arrayFormat in arrayPrefixGenerators) { + arrayFormat = options.arrayFormat; + } else if ('indices' in options) { + arrayFormat = options.indices ? 'indices' : 'repeat'; + } else { + arrayFormat = 'indices'; + } -const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; -exports.DNS = DNS; -const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; -exports.URL = URL; + var generateArrayPrefix = arrayPrefixGenerators[arrayFormat]; -function _default(name, version, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - if (typeof value === 'string') { - value = stringToBytes(value); + if (!objKeys) { + objKeys = Object.keys(obj); } - if (typeof namespace === 'string') { - namespace = (0, _parse.default)(namespace); + if (sort) { + objKeys.sort(sort); } - if (namespace.length !== 16) { - throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); - } // Compute hash of namespace and value, Per 4.3 - // Future: Use spread syntax when supported on all platforms, e.g. `bytes = - // hashfunc([...namespace, ... value])` + for (var i = 0; i < objKeys.length; ++i) { + var key = objKeys[i]; + if (skipNulls && obj[key] === null) { + continue; + } - let bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = bytes[6] & 0x0f | version; - bytes[8] = bytes[8] & 0x3f | 0x80; + keys = keys.concat(stringify( + obj[key], + key, + generateArrayPrefix, + strictNullHandling, + skipNulls, + encode ? encoder : null, + filter, + sort, + allowDots, + serializeDate, + formatter, + encodeValuesOnly + )); + } - if (buf) { - offset = offset || 0; + var joined = keys.join(delimiter); + var prefix = options.addQueryPrefix === true ? '?' : ''; - for (let i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; - } + return joined.length > 0 ? prefix + joined : ''; +}; - return buf; - } - return (0, _stringify.default)(bytes); - } // Function#name is not settable on some platforms (#270) +/***/ }), +/* 67 */ +/***/ (function(module, exports, __webpack_require__) { +"use strict"; - try { - generateUUID.name = name; // eslint-disable-next-line no-empty - } catch (err) {} // For CommonJS default export support +__webpack_require__(493); - generateUUID.DNS = DNS; - generateUUID.URL = URL; - return generateUUID; -} +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlSubDelims = /[!$&'()*+,;=]/i; +var _default = validateUrlSubDelims; +exports["default"] = _default; +module.exports = exports.default; /***/ }), - -/***/ 1472: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/* 68 */, +/* 69 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", ({ +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { value: true -})); +}); exports["default"] = void 0; -var _rng = _interopRequireDefault(__nccwpck_require__(9784)); +var _hashSigns = _interopRequireDefault(__webpack_require__(617)); -var _stringify = _interopRequireDefault(__nccwpck_require__(1458)); +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var endHashtagMatch = (0, _regexSupplant["default"])(/^(?:#{hashSigns}|:\/\/)/, { + hashSigns: _hashSigns["default"] +}); +var _default = endHashtagMatch; +exports["default"] = _default; +module.exports = exports.default; -function v4(options, buf, offset) { - options = options || {}; +/***/ }), +/* 70 */, +/* 71 */ +/***/ (function(module, __unusedexports, __webpack_require__) { - const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` +"use strict"; - rnds[6] = rnds[6] & 0x0f | 0x40; - rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided +// glorious streaming json parser, built specifically for the twitter streaming api +// assumptions: +// 1) ninjas are mammals +// 2) tweets come in chunks of text, surrounded by {}'s, separated by line breaks +// 3) only one tweet per chunk +// +// p = new parser.instance() +// p.addListener('object', function...) +// p.receive(data) +// p.receive(data) +// ... + +var EventEmitter = __webpack_require__(614).EventEmitter; + +var Parser = module.exports = function Parser() { + // Make sure we call our parents constructor + EventEmitter.call(this); + this.buffer = ''; + return this; +}; - if (buf) { - offset = offset || 0; +// The parser emits events! +Parser.prototype = Object.create(EventEmitter.prototype); - for (let i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; - } +Parser.END = '\r\n'; +Parser.END_LENGTH = 2; - return buf; - } +Parser.prototype.receive = function receive(buffer) { + this.buffer += buffer.toString('utf8'); + var index, json; - return (0, _stringify.default)(rnds); -} + // We have END? + while ((index = this.buffer.indexOf(Parser.END)) > -1) { + json = this.buffer.slice(0, index); + this.buffer = this.buffer.slice(index + Parser.END_LENGTH); + if (json.length > 0) { + try { + json = JSON.parse(json); + // Event message + if (json.event !== undefined) { + // First emit specific event + this.emit(json.event, json); + // Now emit catch-all event + this.emit('event', json); + } + // Delete message + else if (json.delete !== undefined) { + this.emit('delete', json); + } + // Friends message (beginning of stream) + else if (json.friends !== undefined || json.friends_str !== undefined) { + this.emit('friends', json); + } + // Any other message + else { + this.emit('data', json); + } + } + catch (error) { + error.source = json; + this.emit('error', error); + } + } + else { + // Keep Alive + this.emit('ping'); + } + } +}; -var _default = v4; -exports["default"] = _default; /***/ }), - -/***/ 6217: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/* 72 */ +/***/ (function(module, __unusedexports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; +var Type = __webpack_require__(755); -var _v = _interopRequireDefault(__nccwpck_require__(5920)); +function resolveYamlNull(data) { + if (data === null) return true; -var _sha = _interopRequireDefault(__nccwpck_require__(8844)); + var max = data.length; -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + return (max === 1 && data === '~') || + (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL')); +} -const v5 = (0, _v.default)('v5', 0x50, _sha.default); -var _default = v5; -exports["default"] = _default; +function constructYamlNull() { + return null; +} + +function isNull(object) { + return object === null; +} + +module.exports = new Type('tag:yaml.org,2002:null', { + kind: 'scalar', + resolve: resolveYamlNull, + construct: constructYamlNull, + predicate: isNull, + represent: { + canonical: function () { return '~'; }, + lowercase: function () { return 'null'; }, + uppercase: function () { return 'NULL'; }, + camelcase: function () { return 'Null'; }, + empty: function () { return ''; } + }, + defaultStyle: 'lowercase' +}); -/***/ }), -/***/ 2609: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/***/ }), +/* 73 */, +/* 74 */, +/* 75 */, +/* 76 */, +/* 77 */ +/***/ (function(module, __unusedexports, __webpack_require__) { "use strict"; +// Standard YAML's Core schema. +// http://www.yaml.org/spec/1.2/spec.html#id2804923 +// +// NOTE: JS-YAML does not support schema-specific tag resolution restrictions. +// So, Core schema has no distinctions from JSON schema is JS-YAML. -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -var _regex = _interopRequireDefault(__nccwpck_require__(6230)); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -function validate(uuid) { - return typeof uuid === 'string' && _regex.default.test(uuid); -} +module.exports = __webpack_require__(407); -var _default = validate; -exports["default"] = _default; /***/ }), +/* 78 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +// to indexed object, toObject with fallback for non-array-like ES3 strings +var IObject = __webpack_require__(420); +var defined = __webpack_require__(805); +module.exports = function (it) { + return IObject(defined(it)); +}; -/***/ 427: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +/***/ }), +/* 79 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; +var _interopRequireDefault = __webpack_require__(764); -var _validate = _interopRequireDefault(__nccwpck_require__(2609)); +__webpack_require__(493); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; -function version(uuid) { - if (!(0, _validate.default)(uuid)) { - throw TypeError('Invalid UUID'); - } +__webpack_require__(277); - return parseInt(uuid.substr(14, 1), 16); -} +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); -var _default = version; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validGTLD = (0, _regexSupplant["default"])(RegExp('(?:(?:' + '삼성|닷컴|닷넷|香格里拉|餐厅|食品|飞利浦|電訊盈科|集团|通販|购物|谷歌|诺基亚|联通|网络|网站|网店|网址|组织机构|移动|珠宝|点看|游戏|淡马锡|机构|書籍|时尚|新闻|' + '政府|政务|招聘|手表|手机|我爱你|慈善|微博|广东|工行|家電|娱乐|天主教|大拿|大众汽车|在线|嘉里大酒店|嘉里|商标|商店|商城|公益|公司|八卦|健康|信息|佛山|企业|' + '中文网|中信|世界|ポイント|ファッション|セール|ストア|コム|グーグル|クラウド|みんな|คอม|संगठन|नेट|कॉम|همراه|موقع|موبايلي|كوم|' + 'كاثوليك|عرب|شبكة|بيتك|بازار|العليان|ارامكو|اتصالات|ابوظبي|קום|сайт|рус|орг|онлайн|москва|ком|' + 'католик|дети|zuerich|zone|zippo|zip|zero|zara|zappos|yun|youtube|you|yokohama|yoga|yodobashi|' + 'yandex|yamaxun|yahoo|yachts|xyz|xxx|xperia|xin|xihuan|xfinity|xerox|xbox|wtf|wtc|wow|world|' + 'works|work|woodside|wolterskluwer|wme|winners|wine|windows|win|williamhill|wiki|wien|whoswho|' + 'weir|weibo|wedding|wed|website|weber|webcam|weatherchannel|weather|watches|watch|warman|' + 'wanggou|wang|walter|walmart|wales|vuelos|voyage|voto|voting|vote|volvo|volkswagen|vodka|' + 'vlaanderen|vivo|viva|vistaprint|vista|vision|visa|virgin|vip|vin|villas|viking|vig|video|' + 'viajes|vet|versicherung|vermögensberatung|vermögensberater|verisign|ventures|vegas|vanguard|' + 'vana|vacations|ups|uol|uno|university|unicom|uconnect|ubs|ubank|tvs|tushu|tunes|tui|tube|trv|' + 'trust|travelersinsurance|travelers|travelchannel|travel|training|trading|trade|toys|toyota|' + 'town|tours|total|toshiba|toray|top|tools|tokyo|today|tmall|tkmaxx|tjx|tjmaxx|tirol|tires|tips|' + 'tiffany|tienda|tickets|tiaa|theatre|theater|thd|teva|tennis|temasek|telefonica|telecity|tel|' + 'technology|tech|team|tdk|tci|taxi|tax|tattoo|tatar|tatamotors|target|taobao|talk|taipei|tab|' + 'systems|symantec|sydney|swiss|swiftcover|swatch|suzuki|surgery|surf|support|supply|supplies|' + 'sucks|style|study|studio|stream|store|storage|stockholm|stcgroup|stc|statoil|statefarm|' + 'statebank|starhub|star|staples|stada|srt|srl|spreadbetting|spot|sport|spiegel|space|soy|sony|' + 'song|solutions|solar|sohu|software|softbank|social|soccer|sncf|smile|smart|sling|skype|sky|' + 'skin|ski|site|singles|sina|silk|shriram|showtime|show|shouji|shopping|shop|shoes|shiksha|shia|' + 'shell|shaw|sharp|shangrila|sfr|sexy|sex|sew|seven|ses|services|sener|select|seek|security|' + 'secure|seat|search|scot|scor|scjohnson|science|schwarz|schule|school|scholarships|schmidt|' + 'schaeffler|scb|sca|sbs|sbi|saxo|save|sas|sarl|sapo|sap|sanofi|sandvikcoromant|sandvik|samsung|' + 'samsclub|salon|sale|sakura|safety|safe|saarland|ryukyu|rwe|run|ruhr|rugby|rsvp|room|rogers|' + 'rodeo|rocks|rocher|rmit|rip|rio|ril|rightathome|ricoh|richardli|rich|rexroth|reviews|review|' + 'restaurant|rest|republican|report|repair|rentals|rent|ren|reliance|reit|reisen|reise|rehab|' + 'redumbrella|redstone|red|recipes|realty|realtor|realestate|read|raid|radio|racing|qvc|quest|' + 'quebec|qpon|pwc|pub|prudential|pru|protection|property|properties|promo|progressive|prof|' + 'productions|prod|pro|prime|press|praxi|pramerica|post|porn|politie|poker|pohl|pnc|plus|' + 'plumbing|playstation|play|place|pizza|pioneer|pink|ping|pin|pid|pictures|pictet|pics|piaget|' + 'physio|photos|photography|photo|phone|philips|phd|pharmacy|pfizer|pet|pccw|pay|passagens|' + 'party|parts|partners|pars|paris|panerai|panasonic|pamperedchef|page|ovh|ott|otsuka|osaka|' + 'origins|orientexpress|organic|org|orange|oracle|open|ooo|onyourside|online|onl|ong|one|omega|' + 'ollo|oldnavy|olayangroup|olayan|okinawa|office|off|observer|obi|nyc|ntt|nrw|nra|nowtv|nowruz|' + 'now|norton|northwesternmutual|nokia|nissay|nissan|ninja|nikon|nike|nico|nhk|ngo|nfl|nexus|' + 'nextdirect|next|news|newholland|new|neustar|network|netflix|netbank|net|nec|nba|navy|natura|' + 'nationwide|name|nagoya|nadex|nab|mutuelle|mutual|museum|mtr|mtpc|mtn|msd|movistar|movie|mov|' + 'motorcycles|moto|moscow|mortgage|mormon|mopar|montblanc|monster|money|monash|mom|moi|moe|moda|' + 'mobily|mobile|mobi|mma|mls|mlb|mitsubishi|mit|mint|mini|mil|microsoft|miami|metlife|merckmsd|' + 'meo|menu|men|memorial|meme|melbourne|meet|media|med|mckinsey|mcdonalds|mcd|mba|mattel|' + 'maserati|marshalls|marriott|markets|marketing|market|map|mango|management|man|makeup|maison|' + 'maif|madrid|macys|luxury|luxe|lupin|lundbeck|ltda|ltd|lplfinancial|lpl|love|lotto|lotte|' + 'london|lol|loft|locus|locker|loans|loan|llp|llc|lixil|living|live|lipsy|link|linde|lincoln|' + 'limo|limited|lilly|like|lighting|lifestyle|lifeinsurance|life|lidl|liaison|lgbt|lexus|lego|' + 'legal|lefrak|leclerc|lease|lds|lawyer|law|latrobe|latino|lat|lasalle|lanxess|landrover|land|' + 'lancome|lancia|lancaster|lamer|lamborghini|ladbrokes|lacaixa|kyoto|kuokgroup|kred|krd|kpn|' + 'kpmg|kosher|komatsu|koeln|kiwi|kitchen|kindle|kinder|kim|kia|kfh|kerryproperties|' + 'kerrylogistics|kerryhotels|kddi|kaufen|juniper|juegos|jprs|jpmorgan|joy|jot|joburg|jobs|jnj|' + 'jmp|jll|jlc|jio|jewelry|jetzt|jeep|jcp|jcb|java|jaguar|iwc|iveco|itv|itau|istanbul|ist|' + 'ismaili|iselect|irish|ipiranga|investments|intuit|international|intel|int|insure|insurance|' + 'institute|ink|ing|info|infiniti|industries|inc|immobilien|immo|imdb|imamat|ikano|iinet|ifm|' + 'ieee|icu|ice|icbc|ibm|hyundai|hyatt|hughes|htc|hsbc|how|house|hotmail|hotels|hoteles|hot|' + 'hosting|host|hospital|horse|honeywell|honda|homesense|homes|homegoods|homedepot|holiday|' + 'holdings|hockey|hkt|hiv|hitachi|hisamitsu|hiphop|hgtv|hermes|here|helsinki|help|healthcare|' + 'health|hdfcbank|hdfc|hbo|haus|hangout|hamburg|hair|guru|guitars|guide|guge|gucci|guardian|' + 'group|grocery|gripe|green|gratis|graphics|grainger|gov|got|gop|google|goog|goodyear|goodhands|' + 'goo|golf|goldpoint|gold|godaddy|gmx|gmo|gmbh|gmail|globo|global|gle|glass|glade|giving|gives|' + 'gifts|gift|ggee|george|genting|gent|gea|gdn|gbiz|gay|garden|gap|games|game|gallup|gallo|' + 'gallery|gal|fyi|futbol|furniture|fund|fun|fujixerox|fujitsu|ftr|frontier|frontdoor|frogans|' + 'frl|fresenius|free|fox|foundation|forum|forsale|forex|ford|football|foodnetwork|food|foo|fly|' + 'flsmidth|flowers|florist|flir|flights|flickr|fitness|fit|fishing|fish|firmdale|firestone|fire|' + 'financial|finance|final|film|fido|fidelity|fiat|ferrero|ferrari|feedback|fedex|fast|fashion|' + 'farmers|farm|fans|fan|family|faith|fairwinds|fail|fage|extraspace|express|exposed|expert|' + 'exchange|everbank|events|eus|eurovision|etisalat|esurance|estate|esq|erni|ericsson|equipment|' + 'epson|epost|enterprises|engineering|engineer|energy|emerck|email|education|edu|edeka|eco|eat|' + 'earth|dvr|dvag|durban|dupont|duns|dunlop|duck|dubai|dtv|drive|download|dot|doosan|domains|' + 'doha|dog|dodge|doctor|docs|dnp|diy|dish|discover|discount|directory|direct|digital|diet|' + 'diamonds|dhl|dev|design|desi|dentist|dental|democrat|delta|deloitte|dell|delivery|degree|' + 'deals|dealer|deal|dds|dclk|day|datsun|dating|date|data|dance|dad|dabur|cyou|cymru|cuisinella|' + 'csc|cruises|cruise|crs|crown|cricket|creditunion|creditcard|credit|cpa|courses|coupons|coupon|' + 'country|corsica|coop|cool|cookingchannel|cooking|contractors|contact|consulting|construction|' + 'condos|comsec|computer|compare|company|community|commbank|comcast|com|cologne|college|coffee|' + 'codes|coach|clubmed|club|cloud|clothing|clinique|clinic|click|cleaning|claims|cityeats|city|' + 'citic|citi|citadel|cisco|circle|cipriani|church|chrysler|chrome|christmas|chloe|chintai|cheap|' + 'chat|chase|charity|channel|chanel|cfd|cfa|cern|ceo|center|ceb|cbs|cbre|cbn|cba|catholic|' + 'catering|cat|casino|cash|caseih|case|casa|cartier|cars|careers|career|care|cards|caravan|car|' + 'capitalone|capital|capetown|canon|cancerresearch|camp|camera|cam|calvinklein|call|cal|cafe|' + 'cab|bzh|buzz|buy|business|builders|build|bugatti|budapest|brussels|brother|broker|broadway|' + 'bridgestone|bradesco|box|boutique|bot|boston|bostik|bosch|boots|booking|book|boo|bond|bom|' + 'bofa|boehringer|boats|bnpparibas|bnl|bmw|bms|blue|bloomberg|blog|blockbuster|blanco|' + 'blackfriday|black|biz|bio|bingo|bing|bike|bid|bible|bharti|bet|bestbuy|best|berlin|bentley|' + 'beer|beauty|beats|bcn|bcg|bbva|bbt|bbc|bayern|bauhaus|basketball|baseball|bargains|barefoot|' + 'barclays|barclaycard|barcelona|bar|bank|band|bananarepublic|banamex|baidu|baby|azure|axa|aws|' + 'avianca|autos|auto|author|auspost|audio|audible|audi|auction|attorney|athleta|associates|asia|' + 'asda|arte|art|arpa|army|archi|aramco|arab|aquarelle|apple|app|apartments|aol|anz|anquan|' + 'android|analytics|amsterdam|amica|amfam|amex|americanfamily|americanexpress|alstom|alsace|' + 'ally|allstate|allfinanz|alipay|alibaba|alfaromeo|akdn|airtel|airforce|airbus|aigo|aig|agency|' + 'agakhan|africa|afl|afamilycompany|aetna|aero|aeg|adult|ads|adac|actor|active|aco|accountants|' + 'accountant|accenture|academy|abudhabi|abogado|able|abc|abbvie|abbott|abb|abarth|aarp|aaa|' + 'onion' + ')(?=[^0-9a-zA-Z@+-]|$))')); +var _default = validGTLD; exports["default"] = _default; +module.exports = exports.default; /***/ }), +/* 80 */, +/* 81 */ +/***/ (function(module, exports, __webpack_require__) { -/***/ 5526: -/***/ (function(__unused_webpack_module, exports) { - -"use strict"; - -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.PersonalAccessTokenCredentialHandler = exports.BearerCredentialHandler = exports.BasicCredentialHandler = void 0; -class BasicCredentialHandler { - constructor(username, password) { - this.username = username; - this.password = password; - } - prepareRequest(options) { - if (!options.headers) { - throw Error('The request has no headers'); - } - options.headers['Authorization'] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString('base64')}`; - } - // This handler cannot handle 401 - canHandleAuthentication() { - return false; - } - handleAuthentication() { - return __awaiter(this, void 0, void 0, function* () { - throw new Error('not implemented'); - }); - } -} -exports.BasicCredentialHandler = BasicCredentialHandler; -class BearerCredentialHandler { - constructor(token) { - this.token = token; - } - // currently implements pre-authorization - // TODO: support preAuth = false where it hooks on 401 - prepareRequest(options) { - if (!options.headers) { - throw Error('The request has no headers'); - } - options.headers['Authorization'] = `Bearer ${this.token}`; - } - // This handler cannot handle 401 - canHandleAuthentication() { - return false; - } - handleAuthentication() { - return __awaiter(this, void 0, void 0, function* () { - throw new Error('not implemented'); - }); - } -} -exports.BearerCredentialHandler = BearerCredentialHandler; -class PersonalAccessTokenCredentialHandler { - constructor(token) { - this.token = token; - } - // currently implements pre-authorization - // TODO: support preAuth = false where it hooks on 401 - prepareRequest(options) { - if (!options.headers) { - throw Error('The request has no headers'); - } - options.headers['Authorization'] = `Basic ${Buffer.from(`PAT:${this.token}`).toString('base64')}`; - } - // This handler cannot handle 401 - canHandleAuthentication() { - return false; - } - handleAuthentication() { - return __awaiter(this, void 0, void 0, function* () { - throw new Error('not implemented'); - }); - } -} -exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler; -//# sourceMappingURL=auth.js.map +/** + * Module dependencies. + */ -/***/ }), +const tty = __webpack_require__(867); +const util = __webpack_require__(669); -/***/ 6255: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { +/** + * This is the Node.js implementation of `debug()`. + */ -"use strict"; +exports.init = init; +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; -/* eslint-disable @typescript-eslint/no-explicit-any */ -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0; -const http = __importStar(__nccwpck_require__(3685)); -const https = __importStar(__nccwpck_require__(5687)); -const pm = __importStar(__nccwpck_require__(9835)); -const tunnel = __importStar(__nccwpck_require__(4294)); -var HttpCodes; -(function (HttpCodes) { - HttpCodes[HttpCodes["OK"] = 200] = "OK"; - HttpCodes[HttpCodes["MultipleChoices"] = 300] = "MultipleChoices"; - HttpCodes[HttpCodes["MovedPermanently"] = 301] = "MovedPermanently"; - HttpCodes[HttpCodes["ResourceMoved"] = 302] = "ResourceMoved"; - HttpCodes[HttpCodes["SeeOther"] = 303] = "SeeOther"; - HttpCodes[HttpCodes["NotModified"] = 304] = "NotModified"; - HttpCodes[HttpCodes["UseProxy"] = 305] = "UseProxy"; - HttpCodes[HttpCodes["SwitchProxy"] = 306] = "SwitchProxy"; - HttpCodes[HttpCodes["TemporaryRedirect"] = 307] = "TemporaryRedirect"; - HttpCodes[HttpCodes["PermanentRedirect"] = 308] = "PermanentRedirect"; - HttpCodes[HttpCodes["BadRequest"] = 400] = "BadRequest"; - HttpCodes[HttpCodes["Unauthorized"] = 401] = "Unauthorized"; - HttpCodes[HttpCodes["PaymentRequired"] = 402] = "PaymentRequired"; - HttpCodes[HttpCodes["Forbidden"] = 403] = "Forbidden"; - HttpCodes[HttpCodes["NotFound"] = 404] = "NotFound"; - HttpCodes[HttpCodes["MethodNotAllowed"] = 405] = "MethodNotAllowed"; - HttpCodes[HttpCodes["NotAcceptable"] = 406] = "NotAcceptable"; - HttpCodes[HttpCodes["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired"; - HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout"; - HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict"; - HttpCodes[HttpCodes["Gone"] = 410] = "Gone"; - HttpCodes[HttpCodes["TooManyRequests"] = 429] = "TooManyRequests"; - HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError"; - HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented"; - HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway"; - HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable"; - HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout"; -})(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {})); -var Headers; -(function (Headers) { - Headers["Accept"] = "accept"; - Headers["ContentType"] = "content-type"; -})(Headers = exports.Headers || (exports.Headers = {})); -var MediaTypes; -(function (MediaTypes) { - MediaTypes["ApplicationJson"] = "application/json"; -})(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {})); /** - * Returns the proxy URL, depending upon the supplied url and proxy environment variables. - * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + * Colors. */ -function getProxyUrl(serverUrl) { - const proxyUrl = pm.getProxyUrl(new URL(serverUrl)); - return proxyUrl ? proxyUrl.href : ''; -} -exports.getProxyUrl = getProxyUrl; -const HttpRedirectCodes = [ - HttpCodes.MovedPermanently, - HttpCodes.ResourceMoved, - HttpCodes.SeeOther, - HttpCodes.TemporaryRedirect, - HttpCodes.PermanentRedirect -]; -const HttpResponseRetryCodes = [ - HttpCodes.BadGateway, - HttpCodes.ServiceUnavailable, - HttpCodes.GatewayTimeout -]; -const RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD']; -const ExponentialBackoffCeiling = 10; -const ExponentialBackoffTimeSlice = 5; -class HttpClientError extends Error { - constructor(message, statusCode) { - super(message); - this.name = 'HttpClientError'; - this.statusCode = statusCode; - Object.setPrototypeOf(this, HttpClientError.prototype); - } + +exports.colors = [6, 2, 3, 4, 5, 1]; + +try { + // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json) + // eslint-disable-next-line import/no-extraneous-dependencies + const supportsColor = __webpack_require__(247); + + if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { + exports.colors = [ + 20, + 21, + 26, + 27, + 32, + 33, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 56, + 57, + 62, + 63, + 68, + 69, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 92, + 93, + 98, + 99, + 112, + 113, + 128, + 129, + 134, + 135, + 148, + 149, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 178, + 179, + 184, + 185, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 214, + 215, + 220, + 221 + ]; + } +} catch (error) { + // Swallow - we only care if `supports-color` is available; it doesn't have to be. } -exports.HttpClientError = HttpClientError; -class HttpClientResponse { - constructor(message) { - this.message = message; - } - readBody() { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () { - let output = Buffer.alloc(0); - this.message.on('data', (chunk) => { - output = Buffer.concat([output, chunk]); - }); - this.message.on('end', () => { - resolve(output.toString()); - }); - })); - }); - } + +/** + * Build up the default `inspectOpts` object from the environment variables. + * + * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js + */ + +exports.inspectOpts = Object.keys(process.env).filter(key => { + return /^debug_/i.test(key); +}).reduce((obj, key) => { + // Camel-case + const prop = key + .substring(6) + .toLowerCase() + .replace(/_([a-z])/g, (_, k) => { + return k.toUpperCase(); + }); + + // Coerce string value into JS value + let val = process.env[key]; + if (/^(yes|on|true|enabled)$/i.test(val)) { + val = true; + } else if (/^(no|off|false|disabled)$/i.test(val)) { + val = false; + } else if (val === 'null') { + val = null; + } else { + val = Number(val); + } + + obj[prop] = val; + return obj; +}, {}); + +/** + * Is stdout a TTY? Colored output is enabled when `true`. + */ + +function useColors() { + return 'colors' in exports.inspectOpts ? + Boolean(exports.inspectOpts.colors) : + tty.isatty(process.stderr.fd); } -exports.HttpClientResponse = HttpClientResponse; -function isHttps(requestUrl) { - const parsedUrl = new URL(requestUrl); - return parsedUrl.protocol === 'https:'; + +/** + * Adds ANSI color escape codes if enabled. + * + * @api public + */ + +function formatArgs(args) { + const {namespace: name, useColors} = this; + + if (useColors) { + const c = this.color; + const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c); + const prefix = ` ${colorCode};1m${name} \u001B[0m`; + + args[0] = prefix + args[0].split('\n').join('\n' + prefix); + args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m'); + } else { + args[0] = getDate() + name + ' ' + args[0]; + } } -exports.isHttps = isHttps; -class HttpClient { - constructor(userAgent, handlers, requestOptions) { - this._ignoreSslError = false; - this._allowRedirects = true; - this._allowRedirectDowngrade = false; - this._maxRedirects = 50; - this._allowRetries = false; - this._maxRetries = 1; - this._keepAlive = false; - this._disposed = false; - this.userAgent = userAgent; - this.handlers = handlers || []; - this.requestOptions = requestOptions; - if (requestOptions) { - if (requestOptions.ignoreSslError != null) { - this._ignoreSslError = requestOptions.ignoreSslError; - } - this._socketTimeout = requestOptions.socketTimeout; - if (requestOptions.allowRedirects != null) { - this._allowRedirects = requestOptions.allowRedirects; - } - if (requestOptions.allowRedirectDowngrade != null) { - this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade; - } - if (requestOptions.maxRedirects != null) { - this._maxRedirects = Math.max(requestOptions.maxRedirects, 0); - } - if (requestOptions.keepAlive != null) { - this._keepAlive = requestOptions.keepAlive; - } - if (requestOptions.allowRetries != null) { - this._allowRetries = requestOptions.allowRetries; - } - if (requestOptions.maxRetries != null) { - this._maxRetries = requestOptions.maxRetries; - } - } - } - options(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('OPTIONS', requestUrl, null, additionalHeaders || {}); - }); - } - get(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('GET', requestUrl, null, additionalHeaders || {}); - }); - } - del(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('DELETE', requestUrl, null, additionalHeaders || {}); - }); - } - post(requestUrl, data, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('POST', requestUrl, data, additionalHeaders || {}); - }); - } - patch(requestUrl, data, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('PATCH', requestUrl, data, additionalHeaders || {}); - }); - } - put(requestUrl, data, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('PUT', requestUrl, data, additionalHeaders || {}); - }); - } - head(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('HEAD', requestUrl, null, additionalHeaders || {}); - }); - } - sendStream(verb, requestUrl, stream, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request(verb, requestUrl, stream, additionalHeaders); - }); - } - /** - * Gets a typed object from an endpoint - * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise - */ - getJson(requestUrl, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); - const res = yield this.get(requestUrl, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); - } - postJson(requestUrl, obj, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - const data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); - const res = yield this.post(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); - } - putJson(requestUrl, obj, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - const data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); - const res = yield this.put(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); - } - patchJson(requestUrl, obj, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - const data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); - const res = yield this.patch(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); + +function getDate() { + if (exports.inspectOpts.hideDate) { + return ''; + } + return new Date().toISOString() + ' '; +} + +/** + * Invokes `util.format()` with the specified arguments and writes to stderr. + */ + +function log(...args) { + return process.stderr.write(util.format(...args) + '\n'); +} + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ +function save(namespaces) { + if (namespaces) { + process.env.DEBUG = namespaces; + } else { + // If you set a process.env field to null or undefined, it gets cast to the + // string 'null' or 'undefined'. Just delete instead. + delete process.env.DEBUG; + } +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + +function load() { + return process.env.DEBUG; +} + +/** + * Init logic for `debug` instances. + * + * Create a new `inspectOpts` object in case `useColors` is set + * differently for a particular `debug` instance. + */ + +function init(debug) { + debug.inspectOpts = {}; + + const keys = Object.keys(exports.inspectOpts); + for (let i = 0; i < keys.length; i++) { + debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; + } +} + +module.exports = __webpack_require__(486)(exports); + +const {formatters} = module.exports; + +/** + * Map %o to `util.inspect()`, all on a single line. + */ + +formatters.o = function (v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts) + .replace(/\s*\n\s*/g, ' '); +}; + +/** + * Map %O to `util.inspect()`, allowing multiple lines if needed. + */ + +formatters.O = function (v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts); +}; + + +/***/ }), +/* 82 */ +/***/ (function(__unusedmodule, exports) { + +"use strict"; + +// We use any as a valid input type +/* eslint-disable @typescript-eslint/no-explicit-any */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.toCommandProperties = exports.toCommandValue = void 0; +/** + * Sanitizes an input into a string so it can be passed into issueCommand safely + * @param input input to sanitize into a string + */ +function toCommandValue(input) { + if (input === null || input === undefined) { + return ''; } - /** - * Makes a raw http request. - * All other methods such as get, post, patch, and request ultimately call this. - * Prefer get, del, post and patch - */ - request(verb, requestUrl, data, headers) { - return __awaiter(this, void 0, void 0, function* () { - if (this._disposed) { - throw new Error('Client has already been disposed.'); - } - const parsedUrl = new URL(requestUrl); - let info = this._prepareRequest(verb, parsedUrl, headers); - // Only perform retries on reads since writes may not be idempotent. - const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb) - ? this._maxRetries + 1 - : 1; - let numTries = 0; - let response; - do { - response = yield this.requestRaw(info, data); - // Check if it's an authentication challenge - if (response && - response.message && - response.message.statusCode === HttpCodes.Unauthorized) { - let authenticationHandler; - for (const handler of this.handlers) { - if (handler.canHandleAuthentication(response)) { - authenticationHandler = handler; - break; - } - } - if (authenticationHandler) { - return authenticationHandler.handleAuthentication(this, info, data); - } - else { - // We have received an unauthorized response but have no handlers to handle it. - // Let the response return to the caller. - return response; - } - } - let redirectsRemaining = this._maxRedirects; - while (response.message.statusCode && - HttpRedirectCodes.includes(response.message.statusCode) && - this._allowRedirects && - redirectsRemaining > 0) { - const redirectUrl = response.message.headers['location']; - if (!redirectUrl) { - // if there's no location to redirect to, we won't - break; - } - const parsedRedirectUrl = new URL(redirectUrl); - if (parsedUrl.protocol === 'https:' && - parsedUrl.protocol !== parsedRedirectUrl.protocol && - !this._allowRedirectDowngrade) { - throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.'); - } - // we need to finish reading the response before reassigning response - // which will leak the open socket. - yield response.readBody(); - // strip authorization header if redirected to a different hostname - if (parsedRedirectUrl.hostname !== parsedUrl.hostname) { - for (const header in headers) { - // header names are case insensitive - if (header.toLowerCase() === 'authorization') { - delete headers[header]; - } - } - } - // let's make the request with the new redirectUrl - info = this._prepareRequest(verb, parsedRedirectUrl, headers); - response = yield this.requestRaw(info, data); - redirectsRemaining--; - } - if (!response.message.statusCode || - !HttpResponseRetryCodes.includes(response.message.statusCode)) { - // If not a retry code, return immediately instead of retrying - return response; - } - numTries += 1; - if (numTries < maxTries) { - yield response.readBody(); - yield this._performExponentialBackoff(numTries); - } - } while (numTries < maxTries); - return response; - }); + else if (typeof input === 'string' || input instanceof String) { + return input; } - /** - * Needs to be called if keepAlive is set to true in request options. - */ - dispose() { - if (this._agent) { - this._agent.destroy(); - } - this._disposed = true; + return JSON.stringify(input); +} +exports.toCommandValue = toCommandValue; +/** + * + * @param annotationProperties + * @returns The command properties to send with the actual annotation command + * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646 + */ +function toCommandProperties(annotationProperties) { + if (!Object.keys(annotationProperties).length) { + return {}; } - /** - * Raw request. - * @param info - * @param data - */ - requestRaw(info, data) { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve, reject) => { - function callbackForResult(err, res) { - if (err) { - reject(err); - } - else if (!res) { - // If `err` is not passed, then `res` must be passed. - reject(new Error('Unknown error')); - } - else { - resolve(res); - } - } - this.requestRawWithCallback(info, data, callbackForResult); - }); - }); - } - /** - * Raw request with callback. - * @param info - * @param data - * @param onResult - */ - requestRawWithCallback(info, data, onResult) { - if (typeof data === 'string') { - if (!info.options.headers) { - info.options.headers = {}; - } - info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8'); - } - let callbackCalled = false; - function handleResult(err, res) { - if (!callbackCalled) { - callbackCalled = true; - onResult(err, res); - } - } - const req = info.httpModule.request(info.options, (msg) => { - const res = new HttpClientResponse(msg); - handleResult(undefined, res); - }); - let socket; - req.on('socket', sock => { - socket = sock; - }); - // If we ever get disconnected, we want the socket to timeout eventually - req.setTimeout(this._socketTimeout || 3 * 60000, () => { - if (socket) { - socket.end(); - } - handleResult(new Error(`Request timeout: ${info.options.path}`)); - }); - req.on('error', function (err) { - // err has statusCode property - // res should have headers - handleResult(err); - }); - if (data && typeof data === 'string') { - req.write(data, 'utf8'); - } - if (data && typeof data !== 'string') { - data.on('close', function () { - req.end(); - }); - data.pipe(req); - } - else { - req.end(); - } + return { + title: annotationProperties.title, + file: annotationProperties.file, + line: annotationProperties.startLine, + endLine: annotationProperties.endLine, + col: annotationProperties.startColumn, + endColumn: annotationProperties.endColumn + }; +} +exports.toCommandProperties = toCommandProperties; +//# sourceMappingURL=utils.js.map + +/***/ }), +/* 83 */, +/* 84 */, +/* 85 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +var toInteger = __webpack_require__(43); +var max = Math.max; +var min = Math.min; +module.exports = function (index, length) { + index = toInteger(index); + return index < 0 ? max(index + length, 0) : min(index, length); +}; + + +/***/ }), +/* 86 */, +/* 87 */ +/***/ (function(module) { + +module.exports = require("os"); + +/***/ }), +/* 88 */, +/* 89 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; + +__webpack_require__(549); + +var _clone = _interopRequireDefault(__webpack_require__(582)); + +var _htmlEscape = _interopRequireDefault(__webpack_require__(63)); + +var _rtlChars = _interopRequireDefault(__webpack_require__(986)); + +var _linkToTextWithSymbol = _interopRequireDefault(__webpack_require__(900)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(entity, text, options) { + var hash = text.substring(entity.indices[0], entity.indices[0] + 1); + var hashtag = (0, _htmlEscape["default"])(entity.hashtag); + var attrs = (0, _clone["default"])(options.htmlAttrs || {}); + attrs.href = options.hashtagUrlBase + hashtag; + attrs.title = "#".concat(hashtag); + attrs['class'] = options.hashtagClass; + + if (hashtag.charAt(0).match(_rtlChars["default"])) { + attrs['class'] += ' rtl'; + } + + if (options.targetBlank) { + attrs.target = '_blank'; + } + + return (0, _linkToTextWithSymbol["default"])(entity, hash, hashtag, attrs, options); +} + +module.exports = exports.default; + +/***/ }), +/* 90 */, +/* 91 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +var serialOrdered = __webpack_require__(192); + +// Public API +module.exports = serial; + +/** + * Runs iterator over provided array elements in series + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {function} callback - invoked when all elements processed + * @returns {function} - jobs terminator + */ +function serial(list, iterator, callback) +{ + return serialOrdered(list, iterator, null, callback); +} + + +/***/ }), +/* 92 */, +/* 93 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; + +__webpack_require__(210); + +var _clone = _interopRequireDefault(__webpack_require__(582)); + +var _extractHtmlAttrsFromOptions = _interopRequireDefault(__webpack_require__(418)); + +var _htmlEscape = _interopRequireDefault(__webpack_require__(63)); + +var _linkToCashtag = _interopRequireDefault(__webpack_require__(833)); + +var _linkToHashtag = _interopRequireDefault(__webpack_require__(89)); + +var _linkToUrl = _interopRequireDefault(__webpack_require__(893)); + +var _linkToMentionAndList = _interopRequireDefault(__webpack_require__(660)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +// Default CSS class for auto-linked lists (along with the url class) +var DEFAULT_LIST_CLASS = 'tweet-url list-slug'; // Default CSS class for auto-linked usernames (along with the url class) + +var DEFAULT_USERNAME_CLASS = 'tweet-url username'; // Default CSS class for auto-linked hashtags (along with the url class) + +var DEFAULT_HASHTAG_CLASS = 'tweet-url hashtag'; // Default CSS class for auto-linked cashtags (along with the url class) + +var DEFAULT_CASHTAG_CLASS = 'tweet-url cashtag'; + +function _default(text, entities, options) { + var options = (0, _clone["default"])(options || {}); + options.hashtagClass = options.hashtagClass || DEFAULT_HASHTAG_CLASS; + options.hashtagUrlBase = options.hashtagUrlBase || 'https://twitter.com/search?q=%23'; + options.cashtagClass = options.cashtagClass || DEFAULT_CASHTAG_CLASS; + options.cashtagUrlBase = options.cashtagUrlBase || 'https://twitter.com/search?q=%24'; + options.listClass = options.listClass || DEFAULT_LIST_CLASS; + options.usernameClass = options.usernameClass || DEFAULT_USERNAME_CLASS; + options.usernameUrlBase = options.usernameUrlBase || 'https://twitter.com/'; + options.listUrlBase = options.listUrlBase || 'https://twitter.com/'; + options.htmlAttrs = (0, _extractHtmlAttrsFromOptions["default"])(options); + options.invisibleTagAttrs = options.invisibleTagAttrs || "style='position:absolute;left:-9999px;'"; // remap url entities to hash + + var urlEntities, i, len; + + if (options.urlEntities) { + urlEntities = {}; + + for (i = 0, len = options.urlEntities.length; i < len; i++) { + urlEntities[options.urlEntities[i].url] = options.urlEntities[i]; } - /** - * Gets an http agent. This function is useful when you need an http agent that handles - * routing through a proxy server - depending upon the url and proxy environment variables. - * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com - */ - getAgent(serverUrl) { - const parsedUrl = new URL(serverUrl); - return this._getAgent(parsedUrl); + + options.urlEntities = urlEntities; + } + + var result = ''; + var beginIndex = 0; // sort entities by start index + + entities.sort(function (a, b) { + return a.indices[0] - b.indices[0]; + }); + var nonEntity = options.htmlEscapeNonEntities ? _htmlEscape["default"] : function (text) { + return text; + }; + + for (var i = 0; i < entities.length; i++) { + var entity = entities[i]; + result += nonEntity(text.substring(beginIndex, entity.indices[0])); + + if (entity.url) { + result += (0, _linkToUrl["default"])(entity, text, options); + } else if (entity.hashtag) { + result += (0, _linkToHashtag["default"])(entity, text, options); + } else if (entity.screenName) { + result += (0, _linkToMentionAndList["default"])(entity, text, options); + } else if (entity.cashtag) { + result += (0, _linkToCashtag["default"])(entity, text, options); } - _prepareRequest(method, requestUrl, headers) { - const info = {}; - info.parsedUrl = requestUrl; - const usingSsl = info.parsedUrl.protocol === 'https:'; - info.httpModule = usingSsl ? https : http; - const defaultPort = usingSsl ? 443 : 80; - info.options = {}; - info.options.host = info.parsedUrl.hostname; - info.options.port = info.parsedUrl.port - ? parseInt(info.parsedUrl.port) - : defaultPort; - info.options.path = - (info.parsedUrl.pathname || '') + (info.parsedUrl.search || ''); - info.options.method = method; - info.options.headers = this._mergeHeaders(headers); - if (this.userAgent != null) { - info.options.headers['user-agent'] = this.userAgent; - } - info.options.agent = this._getAgent(info.parsedUrl); - // gives handlers an opportunity to participate - if (this.handlers) { - for (const handler of this.handlers) { - handler.prepareRequest(info.options); - } - } - return info; - } - _mergeHeaders(headers) { - if (this.requestOptions && this.requestOptions.headers) { - return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {})); - } - return lowercaseKeys(headers || {}); - } - _getExistingOrDefaultHeader(additionalHeaders, header, _default) { - let clientHeader; - if (this.requestOptions && this.requestOptions.headers) { - clientHeader = lowercaseKeys(this.requestOptions.headers)[header]; - } - return additionalHeaders[header] || clientHeader || _default; - } - _getAgent(parsedUrl) { - let agent; - const proxyUrl = pm.getProxyUrl(parsedUrl); - const useProxy = proxyUrl && proxyUrl.hostname; - if (this._keepAlive && useProxy) { - agent = this._proxyAgent; - } - if (this._keepAlive && !useProxy) { - agent = this._agent; - } - // if agent is already assigned use that agent. - if (agent) { - return agent; - } - const usingSsl = parsedUrl.protocol === 'https:'; - let maxSockets = 100; - if (this.requestOptions) { - maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets; - } - // This is `useProxy` again, but we need to check `proxyURl` directly for TypeScripts's flow analysis. - if (proxyUrl && proxyUrl.hostname) { - const agentOptions = { - maxSockets, - keepAlive: this._keepAlive, - proxy: Object.assign(Object.assign({}, ((proxyUrl.username || proxyUrl.password) && { - proxyAuth: `${proxyUrl.username}:${proxyUrl.password}` - })), { host: proxyUrl.hostname, port: proxyUrl.port }) - }; - let tunnelAgent; - const overHttps = proxyUrl.protocol === 'https:'; - if (usingSsl) { - tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp; - } - else { - tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp; - } - agent = tunnelAgent(agentOptions); - this._proxyAgent = agent; - } - // if reusing agent across request and tunneling agent isn't assigned create a new agent - if (this._keepAlive && !agent) { - const options = { keepAlive: this._keepAlive, maxSockets }; - agent = usingSsl ? new https.Agent(options) : new http.Agent(options); - this._agent = agent; - } - // if not using private agent and tunnel agent isn't setup then use global agent - if (!agent) { - agent = usingSsl ? https.globalAgent : http.globalAgent; - } - if (usingSsl && this._ignoreSslError) { - // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process - // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options - // we have to cast it to any and change it directly - agent.options = Object.assign(agent.options || {}, { - rejectUnauthorized: false - }); - } - return agent; - } - _performExponentialBackoff(retryNumber) { - return __awaiter(this, void 0, void 0, function* () { - retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); - const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber); - return new Promise(resolve => setTimeout(() => resolve(), ms)); - }); - } - _processResponse(res, options) { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { - const statusCode = res.message.statusCode || 0; - const response = { - statusCode, - result: null, - headers: {} - }; - // not found leads to null obj returned - if (statusCode === HttpCodes.NotFound) { - resolve(response); - } - // get the result from the body - function dateTimeDeserializer(key, value) { - if (typeof value === 'string') { - const a = new Date(value); - if (!isNaN(a.valueOf())) { - return a; - } - } - return value; - } - let obj; - let contents; - try { - contents = yield res.readBody(); - if (contents && contents.length > 0) { - if (options && options.deserializeDates) { - obj = JSON.parse(contents, dateTimeDeserializer); - } - else { - obj = JSON.parse(contents); - } - response.result = obj; - } - response.headers = res.message.headers; - } - catch (err) { - // Invalid resource (contents not json); leaving result obj null - } - // note that 3xx redirects are handled by the http layer. - if (statusCode > 299) { - let msg; - // if exception/error in body, attempt to get better error - if (obj && obj.message) { - msg = obj.message; - } - else if (contents && contents.length > 0) { - // it may be the case that the exception is in the body message as string - msg = contents; - } - else { - msg = `Failed request: (${statusCode})`; - } - const err = new HttpClientError(msg, statusCode); - err.result = response.result; - reject(err); - } - else { - resolve(response); - } - })); - }); - } -} -exports.HttpClient = HttpClient; -const lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {}); -//# sourceMappingURL=index.js.map -/***/ }), + beginIndex = entity.indices[1]; + } -/***/ 9835: -/***/ ((__unused_webpack_module, exports) => { + result += nonEntity(text.substring(beginIndex, text.length)); + return result; +} -"use strict"; +module.exports = exports.default; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.checkBypass = exports.getProxyUrl = void 0; -function getProxyUrl(reqUrl) { - const usingSsl = reqUrl.protocol === 'https:'; - if (checkBypass(reqUrl)) { - return undefined; - } - const proxyVar = (() => { - if (usingSsl) { - return process.env['https_proxy'] || process.env['HTTPS_PROXY']; - } - else { - return process.env['http_proxy'] || process.env['HTTP_PROXY']; - } - })(); - if (proxyVar) { - return new URL(proxyVar); - } - else { - return undefined; - } -} -exports.getProxyUrl = getProxyUrl; -function checkBypass(reqUrl) { - if (!reqUrl.hostname) { - return false; - } - const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || ''; - if (!noProxy) { - return false; - } - // Determine the request port - let reqPort; - if (reqUrl.port) { - reqPort = Number(reqUrl.port); - } - else if (reqUrl.protocol === 'http:') { - reqPort = 80; - } - else if (reqUrl.protocol === 'https:') { - reqPort = 443; - } - // Format the request hostname and hostname with port - const upperReqHosts = [reqUrl.hostname.toUpperCase()]; - if (typeof reqPort === 'number') { - upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`); - } - // Compare request host against noproxy - for (const upperNoProxyItem of noProxy - .split(',') - .map(x => x.trim().toUpperCase()) - .filter(x => x)) { - if (upperReqHosts.some(x => x === upperNoProxyItem)) { - return true; - } - } - return false; +/***/ }), +/* 94 */ +/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { + +var DateProto = Date.prototype; +var INVALID_DATE = 'Invalid Date'; +var TO_STRING = 'toString'; +var $toString = DateProto[TO_STRING]; +var getTime = DateProto.getTime; +if (new Date(NaN) + '' != INVALID_DATE) { + __webpack_require__(976)(DateProto, TO_STRING, function toString() { + var value = getTime.call(this); + // eslint-disable-next-line no-self-compare + return value === value ? $toString.call(this) : INVALID_DATE; + }); } -exports.checkBypass = checkBypass; -//# sourceMappingURL=proxy.js.map -/***/ }), -/***/ 1231: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/***/ }), +/* 95 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", ({ value: true })); +var _interopRequireDefault = __webpack_require__(764); -var core = __nccwpck_require__(6762); -var authAction = __nccwpck_require__(20); -var pluginPaginateRest = __nccwpck_require__(4193); -var pluginRestEndpointMethods = __nccwpck_require__(3044); +__webpack_require__(493); -const VERSION = "4.0.8"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; -const HttpsProxyAgent = __nccwpck_require__(7219); +var _extractHashtagsWithIndices = _interopRequireDefault(__webpack_require__(389)); -const DEFAULTS = { - authStrategy: authAction.createActionAuth, - baseUrl: getApiBaseUrl(), - userAgent: `octokit-action.js/${VERSION}` -}; +var _autoLinkEntities = _interopRequireDefault(__webpack_require__(93)); -function getProxyAgent() { - const httpProxy = process.env["HTTP_PROXY"] || process.env["http_proxy"]; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text, options) { + var entities = (0, _extractHashtagsWithIndices["default"])(text); + return (0, _autoLinkEntities["default"])(text, entities, options); +} - if (httpProxy) { - return new HttpsProxyAgent(httpProxy); - } +module.exports = exports.default; - const httpsProxy = process.env["HTTPS_PROXY"] || process.env["https_proxy"]; +/***/ }), +/* 96 */ +/***/ (function(module) { - if (httpsProxy) { - return new HttpsProxyAgent(httpsProxy); - } +module.exports = {"$id":"entry.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","optional":true,"required":["startedDateTime","time","request","response","cache","timings"],"properties":{"pageref":{"type":"string"},"startedDateTime":{"type":"string","format":"date-time","pattern":"^(\\d{4})(-)?(\\d\\d)(-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)(:)?(\\d\\d)(\\.\\d+)?(Z|([+-])(\\d\\d)(:)?(\\d\\d))"},"time":{"type":"number","min":0},"request":{"$ref":"request.json#"},"response":{"$ref":"response.json#"},"cache":{"$ref":"cache.json#"},"timings":{"$ref":"timings.json#"},"serverIPAddress":{"type":"string","oneOf":[{"format":"ipv4"},{"format":"ipv6"}]},"connection":{"type":"string"},"comment":{"type":"string"}}}; - return undefined; -} +/***/ }), +/* 97 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -const Octokit = core.Octokit.plugin(pluginPaginateRest.paginateRest, pluginRestEndpointMethods.legacyRestEndpointMethods).defaults(function buildDefaults(options) { - return { ...DEFAULTS, - ...options, - request: { - agent: getProxyAgent(), - ...options.request +var async = __webpack_require__(693) + , abort = __webpack_require__(250) + ; + +// API +module.exports = iterate; + +/** + * Iterates over each job object + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {object} state - current job status + * @param {function} callback - invoked when all elements processed + */ +function iterate(list, iterator, state, callback) +{ + // store current index + var key = state['keyedList'] ? state['keyedList'][state.index] : state.index; + + state.jobs[key] = runJob(iterator, key, list[key], function(error, output) + { + // don't repeat yourself + // skip secondary callbacks + if (!(key in state.jobs)) + { + return; } - }; -}); -function getApiBaseUrl() { - /* istanbul ignore next */ - return process.env["GITHUB_API_URL"] || "https://api.github.com"; + // clean up jobs + delete state.jobs[key]; + + if (error) + { + // don't process rest of the results + // stop still active jobs + // and reset the list + abort(state); + } + else + { + state.results[key] = output; + } + + // return salvaged results + callback(error, state.results); + }); } -exports.Octokit = Octokit; -//# sourceMappingURL=index.js.map +/** + * Runs iterator over provided job element + * + * @param {function} iterator - iterator to invoke + * @param {string|number} key - key/index of the element in the list of jobs + * @param {mixed} item - job description + * @param {function} callback - invoked after iterator is done with the job + * @returns {function|mixed} - job abort function or something else + */ +function runJob(iterator, key, item, callback) +{ + var aborter; + + // allow shortcut if iterator expects only two arguments + if (iterator.length == 2) + { + aborter = iterator(item, async(callback)); + } + // otherwise go with full three arguments + else + { + aborter = iterator(item, key, async(callback)); + } + + return aborter; +} /***/ }), - -/***/ 20: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/* 98 */ +/***/ (function(module, __unusedexports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", ({ value: true })); -var authToken = __nccwpck_require__(334); +var common = __webpack_require__(701); -const createActionAuth = function createActionAuth() { - if (!process.env.GITHUB_ACTION) { - throw new Error("[@octokit/auth-action] `GITHUB_ACTION` environment variable is not set. @octokit/auth-action is meant to be used in GitHub Actions only."); - } - const definitions = [process.env.GITHUB_TOKEN, process.env.INPUT_GITHUB_TOKEN, process.env.INPUT_TOKEN].filter(Boolean); +// get snippet for a single line, respecting maxLength +function getLine(buffer, lineStart, lineEnd, position, maxLineLength) { + var head = ''; + var tail = ''; + var maxHalfLength = Math.floor(maxLineLength / 2) - 1; - if (definitions.length === 0) { - throw new Error("[@octokit/auth-action] `GITHUB_TOKEN` variable is not set. It must be set on either `env:` or `with:`. See https://github.com/octokit/auth-action.js#createactionauth"); + if (position - lineStart > maxHalfLength) { + head = ' ... '; + lineStart = position - maxHalfLength + head.length; } - if (definitions.length > 1) { - throw new Error("[@octokit/auth-action] The token variable is specified more than once. Use either `with.token`, `with.GITHUB_TOKEN`, or `env.GITHUB_TOKEN`. See https://github.com/octokit/auth-action.js#createactionauth"); + if (lineEnd - position > maxHalfLength) { + tail = ' ...'; + lineEnd = position + maxHalfLength - tail.length; } - const token = definitions.pop(); - return authToken.createTokenAuth(token); -}; + return { + str: head + buffer.slice(lineStart, lineEnd).replace(/\t/g, '→') + tail, + pos: position - lineStart + head.length // relative position + }; +} -exports.createActionAuth = createActionAuth; -//# sourceMappingURL=index.js.map +function padStart(string, max) { + return common.repeat(' ', max - string.length) + string; +} -/***/ }), -/***/ 334: -/***/ ((__unused_webpack_module, exports) => { +function makeSnippet(mark, options) { + options = Object.create(options || null); -"use strict"; + if (!mark.buffer) return null; + if (!options.maxLength) options.maxLength = 79; + if (typeof options.indent !== 'number') options.indent = 1; + if (typeof options.linesBefore !== 'number') options.linesBefore = 3; + if (typeof options.linesAfter !== 'number') options.linesAfter = 2; -Object.defineProperty(exports, "__esModule", ({ value: true })); + var re = /\r?\n|\r|\0/g; + var lineStarts = [ 0 ]; + var lineEnds = []; + var match; + var foundLineNo = -1; -const REGEX_IS_INSTALLATION_LEGACY = /^v1\./; -const REGEX_IS_INSTALLATION = /^ghs_/; -const REGEX_IS_USER_TO_SERVER = /^ghu_/; -async function auth(token) { - const isApp = token.split(/\./).length === 3; - const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token); - const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token); - const tokenType = isApp ? "app" : isInstallation ? "installation" : isUserToServer ? "user-to-server" : "oauth"; - return { - type: "token", - token: token, - tokenType - }; -} + while ((match = re.exec(mark.buffer))) { + lineEnds.push(match.index); + lineStarts.push(match.index + match[0].length); -/** - * Prefix token for usage in the Authorization header - * - * @param token OAuth token or JSON Web Token - */ -function withAuthorizationPrefix(token) { - if (token.split(/\./).length === 3) { - return `bearer ${token}`; + if (mark.position <= match.index && foundLineNo < 0) { + foundLineNo = lineStarts.length - 2; + } } - return `token ${token}`; -} + if (foundLineNo < 0) foundLineNo = lineStarts.length - 1; -async function hook(token, request, route, parameters) { - const endpoint = request.endpoint.merge(route, parameters); - endpoint.headers.authorization = withAuthorizationPrefix(token); - return request(endpoint); -} + var result = '', i, line; + var lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length; + var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3); -const createTokenAuth = function createTokenAuth(token) { - if (!token) { - throw new Error("[@octokit/auth-token] No token passed to createTokenAuth"); + for (i = 1; i <= options.linesBefore; i++) { + if (foundLineNo - i < 0) break; + line = getLine( + mark.buffer, + lineStarts[foundLineNo - i], + lineEnds[foundLineNo - i], + mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]), + maxLineLength + ); + result = common.repeat(' ', options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) + + ' | ' + line.str + '\n' + result; } - if (typeof token !== "string") { - throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string"); + line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength); + result += common.repeat(' ', options.indent) + padStart((mark.line + 1).toString(), lineNoLength) + + ' | ' + line.str + '\n'; + result += common.repeat('-', options.indent + lineNoLength + 3 + line.pos) + '^' + '\n'; + + for (i = 1; i <= options.linesAfter; i++) { + if (foundLineNo + i >= lineEnds.length) break; + line = getLine( + mark.buffer, + lineStarts[foundLineNo + i], + lineEnds[foundLineNo + i], + mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]), + maxLineLength + ); + result += common.repeat(' ', options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) + + ' | ' + line.str + '\n'; } - token = token.replace(/^(token|bearer) +/i, ""); - return Object.assign(auth.bind(null, token), { - hook: hook.bind(null, token) - }); -}; + return result.replace(/\n$/, ''); +} -exports.createTokenAuth = createTokenAuth; -//# sourceMappingURL=index.js.map + +module.exports = makeSnippet; /***/ }), - -/***/ 6762: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/* 99 */, +/* 100 */ +/***/ (function(module, __unusedexports, __webpack_require__) { "use strict"; +var create = __webpack_require__(991); +var descriptor = __webpack_require__(690); +var setToStringTag = __webpack_require__(259); +var IteratorPrototype = {}; -Object.defineProperty(exports, "__esModule", ({ value: true })); +// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() +__webpack_require__(609)(IteratorPrototype, __webpack_require__(621)('iterator'), function () { return this; }); -var universalUserAgent = __nccwpck_require__(5030); -var beforeAfterHook = __nccwpck_require__(3682); -var request = __nccwpck_require__(6039); -var graphql = __nccwpck_require__(8467); -var authToken = __nccwpck_require__(334); +module.exports = function (Constructor, NAME, next) { + Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) }); + setToStringTag(Constructor, NAME + ' Iterator'); +}; -const VERSION = "4.0.5"; -class Octokit { - constructor(options = {}) { - const hook = new beforeAfterHook.Collection(); - const requestDefaults = { - baseUrl: request.request.endpoint.DEFAULTS.baseUrl, - headers: {}, - request: Object.assign({}, options.request, { - // @ts-ignore internal usage only, no need to type - hook: hook.bind(null, "request") - }), - mediaType: { - previews: [], - format: "" - } - }; // prepend default user agent with `options.userAgent` if set +/***/ }), +/* 101 */, +/* 102 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { - requestDefaults.headers["user-agent"] = [options.userAgent, `octokit-core.js/${VERSION} ${universalUserAgent.getUserAgent()}`].filter(Boolean).join(" "); +"use strict"; - if (options.baseUrl) { - requestDefaults.baseUrl = options.baseUrl; +// For internal use, subject to change. +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.issueCommand = void 0; +// We use any as a valid input type +/* eslint-disable @typescript-eslint/no-explicit-any */ +const fs = __importStar(__webpack_require__(747)); +const os = __importStar(__webpack_require__(87)); +const utils_1 = __webpack_require__(82); +function issueCommand(command, message) { + const filePath = process.env[`GITHUB_${command}`]; + if (!filePath) { + throw new Error(`Unable to find environment variable for file command ${command}`); } - - if (options.previews) { - requestDefaults.mediaType.previews = options.previews; + if (!fs.existsSync(filePath)) { + throw new Error(`Missing file at path: ${filePath}`); } + fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, { + encoding: 'utf8' + }); +} +exports.issueCommand = issueCommand; +//# sourceMappingURL=file-command.js.map - if (options.timeZone) { - requestDefaults.headers["time-zone"] = options.timeZone; - } +/***/ }), +/* 103 */ +/***/ (function(module, __unusedexports, __webpack_require__) { - this.request = request.request.defaults(requestDefaults); - this.graphql = graphql.withCustomRequest(this.request).defaults(requestDefaults); - this.log = Object.assign({ - debug: () => {}, - info: () => {}, - warn: console.warn.bind(console), - error: console.error.bind(console) - }, options.log); - this.hook = hook; // (1) If neither `options.authStrategy` nor `options.auth` are set, the `octokit` instance - // is unauthenticated. The `this.auth()` method is a no-op and no request hook is registered. - // (2) If only `options.auth` is set, use the default token authentication strategy. - // (3) If `options.authStrategy` is set then use it and pass in `options.auth`. Always pass own request as many strategies accept a custom request instance. - // TODO: type `options.auth` based on `options.authStrategy`. +"use strict"; - if (!options.authStrategy) { - if (!options.auth) { - // (1) - this.auth = async () => ({ - type: "unauthenticated" - }); - } else { - // (2) - const auth = authToken.createTokenAuth(options.auth); // @ts-ignore ¯\_(ツ)_/¯ +var LIBRARY = __webpack_require__(9); +var $export = __webpack_require__(195); +var redefine = __webpack_require__(976); +var hide = __webpack_require__(609); +var Iterators = __webpack_require__(907); +var $iterCreate = __webpack_require__(100); +var setToStringTag = __webpack_require__(259); +var getPrototypeOf = __webpack_require__(111); +var ITERATOR = __webpack_require__(621)('iterator'); +var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next` +var FF_ITERATOR = '@@iterator'; +var KEYS = 'keys'; +var VALUES = 'values'; - hook.wrap("request", auth.hook); - this.auth = auth; - } - } else { - const { - authStrategy, - ...otherOptions - } = options; - const auth = authStrategy(Object.assign({ - request: this.request, - log: this.log, - // we pass the current octokit instance as well as its constructor options - // to allow for authentication strategies that return a new octokit instance - // that shares the same internal state as the current one. The original - // requirement for this was the "event-octokit" authentication strategy - // of https://github.com/probot/octokit-auth-probot. - octokit: this, - octokitOptions: otherOptions - }, options.auth)); // @ts-ignore ¯\_(ツ)_/¯ +var returnThis = function () { return this; }; - hook.wrap("request", auth.hook); - this.auth = auth; - } // apply plugins - // https://stackoverflow.com/a/16345172 +module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) { + $iterCreate(Constructor, NAME, next); + var getMethod = function (kind) { + if (!BUGGY && kind in proto) return proto[kind]; + switch (kind) { + case KEYS: return function keys() { return new Constructor(this, kind); }; + case VALUES: return function values() { return new Constructor(this, kind); }; + } return function entries() { return new Constructor(this, kind); }; + }; + var TAG = NAME + ' Iterator'; + var DEF_VALUES = DEFAULT == VALUES; + var VALUES_BUG = false; + var proto = Base.prototype; + var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]; + var $default = $native || getMethod(DEFAULT); + var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined; + var $anyNative = NAME == 'Array' ? proto.entries || $native : $native; + var methods, key, IteratorPrototype; + // Fix native + if ($anyNative) { + IteratorPrototype = getPrototypeOf($anyNative.call(new Base())); + if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) { + // Set @@toStringTag to native iterators + setToStringTag(IteratorPrototype, TAG, true); + // fix for some old engines + if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis); + } + } + // fix Array#{values, @@iterator}.name in V8 / FF + if (DEF_VALUES && $native && $native.name !== VALUES) { + VALUES_BUG = true; + $default = function values() { return $native.call(this); }; + } + // Define iterator + if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) { + hide(proto, ITERATOR, $default); + } + // Plug for library + Iterators[NAME] = $default; + Iterators[TAG] = returnThis; + if (DEFAULT) { + methods = { + values: DEF_VALUES ? $default : getMethod(VALUES), + keys: IS_SET ? $default : getMethod(KEYS), + entries: $entries + }; + if (FORCED) for (key in methods) { + if (!(key in proto)) redefine(proto, key, methods[key]); + } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); + } + return methods; +}; - const classConstructor = this.constructor; - classConstructor.plugins.forEach(plugin => { - Object.assign(this, plugin(this, options)); - }); - } +/***/ }), +/* 104 */, +/* 105 */ +/***/ (function(module, exports, __webpack_require__) { - static defaults(defaults) { - const OctokitWithDefaults = class extends this { - constructor(...args) { - const options = args[0] || {}; +"use strict"; - if (typeof defaults === "function") { - super(defaults(options)); - return; - } - super(Object.assign({}, defaults, options, options.userAgent && defaults.userAgent ? { - userAgent: `${options.userAgent} ${defaults.userAgent}` - } : null)); - } +var _interopRequireDefault = __webpack_require__(764); - }; - return OctokitWithDefaults; - } - /** - * Attach a plugin (or many) to your Octokit instance. - * - * @example - * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...) - */ +__webpack_require__(493); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; - static plugin(...newPlugins) { - var _a; +__webpack_require__(809); - const currentPlugins = this.plugins; - const NewOctokit = (_a = class extends this {}, _a.plugins = currentPlugins.concat(newPlugins.filter(plugin => !currentPlugins.includes(plugin))), _a); - return NewOctokit; - } +var _nonBmpCodePairs = _interopRequireDefault(__webpack_require__(235)); -} -Octokit.VERSION = VERSION; -Octokit.plugins = []; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 -exports.Octokit = Octokit; -//# sourceMappingURL=index.js.map +/** + * Copied from https://github.com/twitter/twitter-text/blob/master/js/twitter-text.js + */ +function _default(text) { + return text.replace(_nonBmpCodePairs["default"], ' ').length; +} +module.exports = exports.default; /***/ }), +/* 106 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 2040: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; +var abort = __webpack_require__(250) + , async = __webpack_require__(693) + ; +// API +module.exports = terminator; -Object.defineProperty(exports, "__esModule", ({ value: true })); +/** + * Terminates jobs in the attached state context + * + * @this AsyncKitState# + * @param {function} callback - final callback to invoke after termination + */ +function terminator(callback) +{ + if (!Object.keys(this.jobs).length) + { + return; + } -var isPlainObject = __nccwpck_require__(3287); -var universalUserAgent = __nccwpck_require__(5030); + // fast forward iteration index + this.index = this.size; -function lowercaseKeys(object) { - if (!object) { - return {}; - } + // abort jobs + abort(this); - return Object.keys(object).reduce((newObj, key) => { - newObj[key.toLowerCase()] = object[key]; - return newObj; - }, {}); + // send back results we have so far + async(callback)(null, this.results); } -function mergeDeep(defaults, options) { - const result = Object.assign({}, defaults); - Object.keys(options).forEach(key => { - if (isPlainObject.isPlainObject(options[key])) { - if (!(key in defaults)) Object.assign(result, { - [key]: options[key] - });else result[key] = mergeDeep(defaults[key], options[key]); + +/***/ }), +/* 107 */ +/***/ (function(module) { + +"use strict"; + +module.exports = function generate_allOf(it, $keyword, $ruleType) { + var out = ' '; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $currentBaseId = $it.baseId, + $allSchemasEmpty = true; + var arr1 = $schema; + if (arr1) { + var $sch, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $sch = arr1[$i += 1]; + if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { + $allSchemasEmpty = false; + $it.schema = $sch; + $it.schemaPath = $schemaPath + '[' + $i + ']'; + $it.errSchemaPath = $errSchemaPath + '/' + $i; + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + } + } + if ($breakOnError) { + if ($allSchemasEmpty) { + out += ' if (true) { '; } else { - Object.assign(result, { - [key]: options[key] - }); + out += ' ' + ($closingBraces.slice(0, -1)) + ' '; } - }); - return result; + } + return out; } -function removeUndefinedProperties(obj) { - for (const key in obj) { - if (obj[key] === undefined) { - delete obj[key]; - } - } - return obj; -} +/***/ }), +/* 108 */, +/* 109 */, +/* 110 */, +/* 111 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -function merge(defaults, route, options) { - if (typeof route === "string") { - let [method, url] = route.split(" "); - options = Object.assign(url ? { - method, - url - } : { - url: method - }, options); - } else { - options = Object.assign({}, route); - } // lowercase header names before merging with defaults to avoid duplicates +// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) +var has = __webpack_require__(975); +var toObject = __webpack_require__(230); +var IE_PROTO = __webpack_require__(331)('IE_PROTO'); +var ObjectProto = Object.prototype; +module.exports = Object.getPrototypeOf || function (O) { + O = toObject(O); + if (has(O, IE_PROTO)) return O[IE_PROTO]; + if (typeof O.constructor == 'function' && O instanceof O.constructor) { + return O.constructor.prototype; + } return O instanceof Object ? ObjectProto : null; +}; - options.headers = lowercaseKeys(options.headers); // remove properties with undefined values before merging - removeUndefinedProperties(options); - removeUndefinedProperties(options.headers); - const mergedOptions = mergeDeep(defaults || {}, options); // mediaType.previews arrays are merged, instead of overwritten +/***/ }), +/* 112 */ +/***/ (function(module, exports, __webpack_require__) { - if (defaults && defaults.mediaType.previews.length) { - mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(preview => !mergedOptions.mediaType.previews.includes(preview)).concat(mergedOptions.mediaType.previews); - } +"use strict"; - mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map(preview => preview.replace(/-preview/, "")); - return mergedOptions; -} -function addQueryParameters(url, parameters) { - const separator = /\?/.test(url) ? "&" : "?"; - const names = Object.keys(parameters); +var _interopRequireDefault = __webpack_require__(764); - if (names.length === 0) { - return url; - } +__webpack_require__(493); - return url + separator + names.map(name => { - if (name === "q") { - return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+"); - } +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; - return `${name}=${encodeURIComponent(parameters[name])}`; - }).join("&"); -} +var _extractCashtagsWithIndices = _interopRequireDefault(__webpack_require__(380)); -const urlVariableRegex = /\{[^}]+\}/g; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text) { + var cashtagsOnly = [], + cashtagsWithIndices = (0, _extractCashtagsWithIndices["default"])(text); -function removeNonChars(variableName) { - return variableName.replace(/^\W+|\W+$/g, "").split(/,/); + for (var i = 0; i < cashtagsWithIndices.length; i++) { + cashtagsOnly.push(cashtagsWithIndices[i].cashtag); + } + + return cashtagsOnly; } -function extractUrlVariableNames(url) { - const matches = url.match(urlVariableRegex); +module.exports = exports.default; - if (!matches) { - return []; - } +/***/ }), +/* 113 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { - return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []); -} +var crypto = __webpack_require__(417) -function omit(object, keysToOmit) { - return Object.keys(object).filter(option => !keysToOmit.includes(option)).reduce((obj, key) => { - obj[key] = object[key]; - return obj; - }, {}); +function sha (key, body, algorithm) { + return crypto.createHmac(algorithm, key).update(body).digest('base64') } -// Based on https://github.com/bramstein/url-template, licensed under BSD -// TODO: create separate package. -// -// Copyright (c) 2012-2014, Bram Stein -// All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. The name of the author may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED -// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -/* istanbul ignore file */ -function encodeReserved(str) { - return str.split(/(%[0-9A-Fa-f]{2})/g).map(function (part) { - if (!/%[0-9A-Fa-f]/.test(part)) { - part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]"); - } - - return part; - }).join(""); +function rsa (key, body) { + return crypto.createSign('RSA-SHA1').update(body).sign(key, 'base64') } -function encodeUnreserved(str) { - return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { - return "%" + c.charCodeAt(0).toString(16).toUpperCase(); - }); +function rfc3986 (str) { + return encodeURIComponent(str) + .replace(/!/g,'%21') + .replace(/\*/g,'%2A') + .replace(/\(/g,'%28') + .replace(/\)/g,'%29') + .replace(/'/g,'%27') } -function encodeValue(operator, value, key) { - value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value); - - if (key) { - return encodeUnreserved(key) + "=" + value; - } else { - return value; +// Maps object to bi-dimensional array +// Converts { foo: 'A', bar: [ 'b', 'B' ]} to +// [ ['foo', 'A'], ['bar', 'b'], ['bar', 'B'] ] +function map (obj) { + var key, val, arr = [] + for (key in obj) { + val = obj[key] + if (Array.isArray(val)) + for (var i = 0; i < val.length; i++) + arr.push([key, val[i]]) + else if (typeof val === 'object') + for (var prop in val) + arr.push([key + '[' + prop + ']', val[prop]]) + else + arr.push([key, val]) } + return arr } -function isDefined(value) { - return value !== undefined && value !== null; +// Compare function for sort +function compare (a, b) { + return a > b ? 1 : a < b ? -1 : 0 } -function isKeyOperator(operator) { - return operator === ";" || operator === "&" || operator === "?"; -} +function generateBase (httpMethod, base_uri, params) { + // adapted from https://dev.twitter.com/docs/auth/oauth and + // https://dev.twitter.com/docs/auth/creating-signature -function getValues(context, operator, key, modifier) { - var value = context[key], - result = []; + // Parameter normalization + // http://tools.ietf.org/html/rfc5849#section-3.4.1.3.2 + var normalized = map(params) + // 1. First, the name and value of each parameter are encoded + .map(function (p) { + return [ rfc3986(p[0]), rfc3986(p[1] || '') ] + }) + // 2. The parameters are sorted by name, using ascending byte value + // ordering. If two or more parameters share the same name, they + // are sorted by their value. + .sort(function (a, b) { + return compare(a[0], b[0]) || compare(a[1], b[1]) + }) + // 3. The name of each parameter is concatenated to its corresponding + // value using an "=" character (ASCII code 61) as a separator, even + // if the value is empty. + .map(function (p) { return p.join('=') }) + // 4. The sorted name/value pairs are concatenated together into a + // single string by using an "&" character (ASCII code 38) as + // separator. + .join('&') + + var base = [ + rfc3986(httpMethod ? httpMethod.toUpperCase() : 'GET'), + rfc3986(base_uri), + rfc3986(normalized) + ].join('&') + + return base +} + +function hmacsign (httpMethod, base_uri, params, consumer_secret, token_secret) { + var base = generateBase(httpMethod, base_uri, params) + var key = [ + consumer_secret || '', + token_secret || '' + ].map(rfc3986).join('&') + + return sha(key, base, 'sha1') +} + +function hmacsign256 (httpMethod, base_uri, params, consumer_secret, token_secret) { + var base = generateBase(httpMethod, base_uri, params) + var key = [ + consumer_secret || '', + token_secret || '' + ].map(rfc3986).join('&') + + return sha(key, base, 'sha256') +} + +function rsasign (httpMethod, base_uri, params, private_key, token_secret) { + var base = generateBase(httpMethod, base_uri, params) + var key = private_key || '' + + return rsa(key, base) +} + +function plaintext (consumer_secret, token_secret) { + var key = [ + consumer_secret || '', + token_secret || '' + ].map(rfc3986).join('&') + + return key +} + +function sign (signMethod, httpMethod, base_uri, params, consumer_secret, token_secret) { + var method + var skipArgs = 1 + + switch (signMethod) { + case 'RSA-SHA1': + method = rsasign + break + case 'HMAC-SHA1': + method = hmacsign + break + case 'HMAC-SHA256': + method = hmacsign256 + break + case 'PLAINTEXT': + method = plaintext + skipArgs = 4 + break + default: + throw new Error('Signature method not supported: ' + signMethod) + } - if (isDefined(value) && value !== "") { - if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") { - value = value.toString(); + return method.apply(null, [].slice.call(arguments, skipArgs)) +} - if (modifier && modifier !== "*") { - value = value.substring(0, parseInt(modifier, 10)); - } +exports.hmacsign = hmacsign +exports.hmacsign256 = hmacsign256 +exports.rsasign = rsasign +exports.plaintext = plaintext +exports.sign = sign +exports.rfc3986 = rfc3986 +exports.generateBase = generateBase - result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); - } else { - if (modifier === "*") { - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function (value) { - result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); - }); - } else { - Object.keys(value).forEach(function (k) { - if (isDefined(value[k])) { - result.push(encodeValue(operator, value[k], k)); - } - }); - } - } else { - const tmp = []; +/***/ }), +/* 114 */, +/* 115 */ +/***/ (function(module, exports, __webpack_require__) { - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function (value) { - tmp.push(encodeValue(operator, value)); - }); - } else { - Object.keys(value).forEach(function (k) { - if (isDefined(value[k])) { - tmp.push(encodeUnreserved(k)); - tmp.push(encodeValue(operator, value[k].toString())); - } - }); - } +"use strict"; - if (isKeyOperator(operator)) { - result.push(encodeUnreserved(key) + "=" + tmp.join(",")); - } else if (tmp.length !== 0) { - result.push(tmp.join(",")); - } - } - } - } else { - if (operator === ";") { - if (isDefined(value)) { - result.push(encodeUnreserved(key)); - } - } else if (value === "" && (operator === "&" || operator === "?")) { - result.push(encodeUnreserved(key) + "="); - } else if (value === "") { - result.push(""); - } - } - return result; -} +var _interopRequireDefault = __webpack_require__(764); -function parseUrl(template) { - return { - expand: expand.bind(null, template) - }; -} +__webpack_require__(493); -function expand(template, context) { - var operators = ["+", "#", ".", "/", ";", "?", "&"]; - return template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (_, expression, literal) { - if (expression) { - let operator = ""; - const values = []; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; - if (operators.indexOf(expression.charAt(0)) !== -1) { - operator = expression.charAt(0); - expression = expression.substr(1); - } +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - expression.split(/,/g).forEach(function (variable) { - var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable); - values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3])); - }); +var _validateUrlDecOctet = _interopRequireDefault(__webpack_require__(600)); - if (operator && operator !== "+") { - var separator = ","; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlIpv4 = (0, _regexSupplant["default"])(/(?:#{validateUrlDecOctet}(?:\.#{validateUrlDecOctet}){3})/i, { + validateUrlDecOctet: _validateUrlDecOctet["default"] +}); +var _default = validateUrlIpv4; +exports["default"] = _default; +module.exports = exports.default; - if (operator === "?") { - separator = "&"; - } else if (operator !== "#") { - separator = operator; - } +/***/ }), +/* 116 */, +/* 117 */, +/* 118 */, +/* 119 */, +/* 120 */ +/***/ (function(module) { - return (values.length !== 0 ? operator : "") + values.join(separator); - } else { - return values.join(","); - } - } else { - return encodeReserved(literal); - } - }); -} +"use strict"; -function parse(options) { - // https://fetch.spec.whatwg.org/#methods - let method = options.method.toUpperCase(); // replace :varname with {varname} to make it RFC 6570 compatible - let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}"); - let headers = Object.assign({}, options.headers); - let body; - let parameters = omit(options, ["method", "baseUrl", "url", "headers", "request", "mediaType"]); // extract variable names from URL to calculate remaining variables later +module.exports.mixin = function mixin(target, source) { + const keys = Object.getOwnPropertyNames(source); + for (let i = 0; i < keys.length; ++i) { + Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i])); + } +}; - const urlVariableNames = extractUrlVariableNames(url); - url = parseUrl(url).expand(parameters); +module.exports.wrapperSymbol = Symbol("wrapper"); +module.exports.implSymbol = Symbol("impl"); - if (!/^http/.test(url)) { - url = options.baseUrl + url; - } +module.exports.wrapperForImpl = function (impl) { + return impl[module.exports.wrapperSymbol]; +}; - const omittedParameters = Object.keys(options).filter(option => urlVariableNames.includes(option)).concat("baseUrl"); - const remainingParameters = omit(parameters, omittedParameters); - const isBinaryRequest = /application\/octet-stream/i.test(headers.accept); +module.exports.implForWrapper = function (wrapper) { + return wrapper[module.exports.implSymbol]; +}; - if (!isBinaryRequest) { - if (options.mediaType.format) { - // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw - headers.accept = headers.accept.split(/,/).map(preview => preview.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`)).join(","); - } - if (options.mediaType.previews.length) { - const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || []; - headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map(preview => { - const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json"; - return `application/vnd.github.${preview}-preview${format}`; - }).join(","); - } - } // for GET/HEAD requests, set URL query parameters from remaining parameters - // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters +/***/ }), +/* 121 */, +/* 122 */ +/***/ (function(module, exports, __webpack_require__) { - if (["GET", "HEAD"].includes(method)) { - url = addQueryParameters(url, remainingParameters); - } else { - if ("data" in remainingParameters) { - body = remainingParameters.data; - } else { - if (Object.keys(remainingParameters).length) { - body = remainingParameters; - } - } - } // default content-type for JSON if body is set +"use strict"; - if (!headers["content-type"] && typeof body !== "undefined") { - headers["content-type"] = "application/json; charset=utf-8"; - } // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body. - // fetch does not allow to set `content-length` header, but we can set body to an empty string +var _interopRequireDefault = __webpack_require__(764); +__webpack_require__(493); - if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") { - body = ""; - } // Only return body/request keys if present +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - return Object.assign({ - method, - url, - headers - }, typeof body !== "undefined" ? { - body - } : null, options.request ? { - request: options.request - } : null); -} +var _validGeneralUrlPathChars = _interopRequireDefault(__webpack_require__(949)); -function endpointWithDefaults(defaults, route, options) { - return parse(merge(defaults, route, options)); -} +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +// Allow URL paths to contain up to two nested levels of balanced parens +// 1. Used in Wikipedia URLs like /Primer_(film) +// 2. Used in IIS sessions like /S(dfd346)/ +// 3. Used in Rdio URLs like /track/We_Up_(Album_Version_(Edited))/ +var validUrlBalancedParens = (0, _regexSupplant["default"])('\\(' + '(?:' + '#{validGeneralUrlPathChars}+' + '|' + // allow one nested level of balanced parentheses +'(?:' + '#{validGeneralUrlPathChars}*' + '\\(' + '#{validGeneralUrlPathChars}+' + '\\)' + '#{validGeneralUrlPathChars}*' + ')' + ')' + '\\)', { + validGeneralUrlPathChars: _validGeneralUrlPathChars["default"] +}, 'i'); +var _default = validUrlBalancedParens; +exports["default"] = _default; +module.exports = exports.default; -function withDefaults(oldDefaults, newDefaults) { - const DEFAULTS = merge(oldDefaults, newDefaults); - const endpoint = endpointWithDefaults.bind(null, DEFAULTS); - return Object.assign(endpoint, { - DEFAULTS, - defaults: withDefaults.bind(null, DEFAULTS), - merge: merge.bind(null, DEFAULTS), - parse - }); +/***/ }), +/* 123 */, +/* 124 */ +/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { + +var $iterators = __webpack_require__(157); +var getKeys = __webpack_require__(333); +var redefine = __webpack_require__(976); +var global = __webpack_require__(300); +var hide = __webpack_require__(609); +var Iterators = __webpack_require__(907); +var wks = __webpack_require__(621); +var ITERATOR = wks('iterator'); +var TO_STRING_TAG = wks('toStringTag'); +var ArrayValues = Iterators.Array; + +var DOMIterables = { + CSSRuleList: true, // TODO: Not spec compliant, should be false. + CSSStyleDeclaration: false, + CSSValueList: false, + ClientRectList: false, + DOMRectList: false, + DOMStringList: false, + DOMTokenList: true, + DataTransferItemList: false, + FileList: false, + HTMLAllCollection: false, + HTMLCollection: false, + HTMLFormElement: false, + HTMLSelectElement: false, + MediaList: true, // TODO: Not spec compliant, should be false. + MimeTypeArray: false, + NamedNodeMap: false, + NodeList: true, + PaintRequestList: false, + Plugin: false, + PluginArray: false, + SVGLengthList: false, + SVGNumberList: false, + SVGPathSegList: false, + SVGPointList: false, + SVGStringList: false, + SVGTransformList: false, + SourceBufferList: false, + StyleSheetList: true, // TODO: Not spec compliant, should be false. + TextTrackCueList: false, + TextTrackList: false, + TouchList: false +}; + +for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) { + var NAME = collections[i]; + var explicit = DOMIterables[NAME]; + var Collection = global[NAME]; + var proto = Collection && Collection.prototype; + var key; + if (proto) { + if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues); + if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME); + Iterators[NAME] = ArrayValues; + if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true); + } } -const VERSION = "7.0.2"; -const userAgent = `octokit-endpoint.js/${VERSION} ${universalUserAgent.getUserAgent()}`; // DEFAULTS has all properties set that EndpointOptions has, except url. -// So we use RequestParameters and add method as additional required property. +/***/ }), +/* 125 */ +/***/ (function(module, exports, __webpack_require__) { -const DEFAULTS = { - method: "GET", - baseUrl: "https://api.github.com", - headers: { - accept: "application/vnd.github.v3+json", - "user-agent": userAgent +"use strict"; + + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// This file is generated by scripts/buildConfig.js +var _default = { + version1: { + version: 1, + maxWeightedTweetLength: 140, + scale: 1, + defaultWeight: 1, + transformedURLLength: 23, + ranges: [] }, - mediaType: { - format: "", - previews: [] + version2: { + version: 2, + maxWeightedTweetLength: 280, + scale: 100, + defaultWeight: 200, + transformedURLLength: 23, + ranges: [{ + start: 0, + end: 4351, + weight: 100 + }, { + start: 8192, + end: 8205, + weight: 100 + }, { + start: 8208, + end: 8223, + weight: 100 + }, { + start: 8242, + end: 8247, + weight: 100 + }] + }, + version3: { + version: 3, + maxWeightedTweetLength: 280, + scale: 100, + defaultWeight: 200, + emojiParsingEnabled: true, + transformedURLLength: 23, + ranges: [{ + start: 0, + end: 4351, + weight: 100 + }, { + start: 8192, + end: 8205, + weight: 100 + }, { + start: 8208, + end: 8223, + weight: 100 + }, { + start: 8242, + end: 8247, + weight: 100 + }] + }, + defaults: { + version: 3, + maxWeightedTweetLength: 280, + scale: 100, + defaultWeight: 200, + emojiParsingEnabled: true, + transformedURLLength: 23, + ranges: [{ + start: 0, + end: 4351, + weight: 100 + }, { + start: 8192, + end: 8205, + weight: 100 + }, { + start: 8208, + end: 8223, + weight: 100 + }, { + start: 8242, + end: 8247, + weight: 100 + }] } }; +exports["default"] = _default; +module.exports = exports.default; -const endpoint = withDefaults(null, DEFAULTS); +/***/ }), +/* 126 */, +/* 127 */, +/* 128 */, +/* 129 */, +/* 130 */, +/* 131 */ +/***/ (function(module, exports, __webpack_require__) { -exports.endpoint = endpoint; -//# sourceMappingURL=index.js.map +"use strict"; + + +__webpack_require__(493); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validPunycode = /(?:xn--[\-0-9a-z]+)/; +var _default = validPunycode; +exports["default"] = _default; +module.exports = exports.default; /***/ }), +/* 132 */, +/* 133 */ +/***/ (function(module) { -/***/ 6039: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +module.exports = {"$id":"request.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["method","url","httpVersion","cookies","headers","queryString","headersSize","bodySize"],"properties":{"method":{"type":"string"},"url":{"type":"string","format":"uri"},"httpVersion":{"type":"string"},"cookies":{"type":"array","items":{"$ref":"cookie.json#"}},"headers":{"type":"array","items":{"$ref":"header.json#"}},"queryString":{"type":"array","items":{"$ref":"query.json#"}},"postData":{"$ref":"postData.json#"},"headersSize":{"type":"integer"},"bodySize":{"type":"integer"},"comment":{"type":"string"}}}; + +/***/ }), +/* 134 */, +/* 135 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", ({ value: true })); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; -function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } +var _validate = _interopRequireDefault(__webpack_require__(634)); -var endpoint = __nccwpck_require__(2040); -var universalUserAgent = __nccwpck_require__(5030); -var isPlainObject = __nccwpck_require__(3287); -var nodeFetch = _interopDefault(__nccwpck_require__(467)); -var requestError = __nccwpck_require__(537); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -const VERSION = "6.2.1"; +function version(uuid) { + if (!(0, _validate.default)(uuid)) { + throw TypeError('Invalid UUID'); + } -function getBufferResponse(response) { - return response.arrayBuffer(); + return parseInt(uuid.substr(14, 1), 16); } -function fetchWrapper(requestOptions) { - const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console; +var _default = version; +exports.default = _default; - if (isPlainObject.isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) { - requestOptions.body = JSON.stringify(requestOptions.body); - } +/***/ }), +/* 136 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { - let headers = {}; - let status; - let url; - const fetch = requestOptions.request && requestOptions.request.fetch || globalThis.fetch || - /* istanbul ignore next */ - nodeFetch; - return fetch(requestOptions.url, Object.assign({ - method: requestOptions.method, - body: requestOptions.body, - headers: requestOptions.headers, - redirect: requestOptions.redirect - }, // `requestOptions.request.agent` type is incompatible - // see https://github.com/octokit/types.ts/pull/264 - requestOptions.request)).then(async response => { - url = response.url; - status = response.status; +"use strict"; - for (const keyAndValue of response.headers) { - headers[keyAndValue[0]] = keyAndValue[1]; - } - if ("deprecation" in headers) { - const matches = headers.link && headers.link.match(/<([^>]+)>; rel="deprecation"/); - const deprecationLink = matches && matches.pop(); - log.warn(`[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}`); - } +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = _default; +exports.URL = exports.DNS = void 0; - if (status === 204 || status === 205) { - return; - } // GitHub API returns 200 for HEAD requests +var _stringify = _interopRequireDefault(__webpack_require__(960)); +var _parse = _interopRequireDefault(__webpack_require__(204)); - if (requestOptions.method === "HEAD") { - if (status < 400) { - return; - } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - throw new requestError.RequestError(response.statusText, status, { - response: { - url, - status, - headers, - data: undefined - }, - request: requestOptions - }); - } - - if (status === 304) { - throw new requestError.RequestError("Not modified", status, { - response: { - url, - status, - headers, - data: await getResponseData(response) - }, - request: requestOptions - }); - } - - if (status >= 400) { - const data = await getResponseData(response); - const error = new requestError.RequestError(toErrorMessage(data), status, { - response: { - url, - status, - headers, - data - }, - request: requestOptions - }); - throw error; - } - - return getResponseData(response); - }).then(data => { - return { - status, - url, - headers, - data - }; - }).catch(error => { - if (error instanceof requestError.RequestError) throw error;else if (error.name === "AbortError") throw error; - throw new requestError.RequestError(error.message, 500, { - request: requestOptions - }); - }); -} - -async function getResponseData(response) { - const contentType = response.headers.get("content-type"); +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); // UTF8 escape - if (/application\/json/.test(contentType)) { - return response.json(); - } + const bytes = []; - if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) { - return response.text(); + for (let i = 0; i < str.length; ++i) { + bytes.push(str.charCodeAt(i)); } - return getBufferResponse(response); + return bytes; } -function toErrorMessage(data) { - if (typeof data === "string") return data; // istanbul ignore else - just in case +const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; +exports.DNS = DNS; +const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; +exports.URL = URL; - if ("message" in data) { - if (Array.isArray(data.errors)) { - return `${data.message}: ${data.errors.map(JSON.stringify).join(", ")}`; +function _default(name, version, hashfunc) { + function generateUUID(value, namespace, buf, offset) { + if (typeof value === 'string') { + value = stringToBytes(value); } - return data.message; - } // istanbul ignore next - just in case + if (typeof namespace === 'string') { + namespace = (0, _parse.default)(namespace); + } + if (namespace.length !== 16) { + throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); + } // Compute hash of namespace and value, Per 4.3 + // Future: Use spread syntax when supported on all platforms, e.g. `bytes = + // hashfunc([...namespace, ... value])` - return `Unknown error: ${JSON.stringify(data)}`; -} -function withDefaults(oldEndpoint, newDefaults) { - const endpoint = oldEndpoint.defaults(newDefaults); + let bytes = new Uint8Array(16 + value.length); + bytes.set(namespace); + bytes.set(value, namespace.length); + bytes = hashfunc(bytes); + bytes[6] = bytes[6] & 0x0f | version; + bytes[8] = bytes[8] & 0x3f | 0x80; - const newApi = function (route, parameters) { - const endpointOptions = endpoint.merge(route, parameters); + if (buf) { + offset = offset || 0; - if (!endpointOptions.request || !endpointOptions.request.hook) { - return fetchWrapper(endpoint.parse(endpointOptions)); - } + for (let i = 0; i < 16; ++i) { + buf[offset + i] = bytes[i]; + } - const request = (route, parameters) => { - return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters))); - }; + return buf; + } - Object.assign(request, { - endpoint, - defaults: withDefaults.bind(null, endpoint) - }); - return endpointOptions.request.hook(request, endpointOptions); - }; + return (0, _stringify.default)(bytes); + } // Function#name is not settable on some platforms (#270) - return Object.assign(newApi, { - endpoint, - defaults: withDefaults.bind(null, endpoint) - }); -} -const request = withDefaults(endpoint.endpoint, { - headers: { - "user-agent": `octokit-request.js/${VERSION} ${universalUserAgent.getUserAgent()}` - } -}); + try { + generateUUID.name = name; // eslint-disable-next-line no-empty + } catch (err) {} // For CommonJS default export support -exports.request = request; -//# sourceMappingURL=index.js.map + generateUUID.DNS = DNS; + generateUUID.URL = URL; + return generateUUID; +} /***/ }), +/* 137 */, +/* 138 */, +/* 139 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 8467: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +// Unique ID creation requires a high quality random # generator. In node.js +// this is pretty straight-forward - we use the crypto API. -"use strict"; +var crypto = __webpack_require__(417); +module.exports = function nodeRNG() { + return crypto.randomBytes(16); +}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -var request = __nccwpck_require__(3758); -var universalUserAgent = __nccwpck_require__(5030); +/***/ }), +/* 140 */, +/* 141 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { -const VERSION = "5.0.1"; +"use strict"; -function _buildMessageForResponseErrors(data) { - return `Request failed due to following response errors:\n` + data.errors.map(e => ` - ${e.message}`).join("\n"); -} -class GraphqlResponseError extends Error { - constructor(request, headers, response) { - super(_buildMessageForResponseErrors(response)); - this.request = request; - this.headers = headers; - this.response = response; - this.name = "GraphqlResponseError"; // Expose the errors and response data in their shorthand properties. +var net = __webpack_require__(631); +var tls = __webpack_require__(16); +var http = __webpack_require__(605); +var https = __webpack_require__(211); +var events = __webpack_require__(614); +var assert = __webpack_require__(357); +var util = __webpack_require__(669); - this.errors = response.errors; - this.data = response.data; // Maintains proper stack trace (only available on V8) - /* istanbul ignore next */ +exports.httpOverHttp = httpOverHttp; +exports.httpsOverHttp = httpsOverHttp; +exports.httpOverHttps = httpOverHttps; +exports.httpsOverHttps = httpsOverHttps; - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - } +function httpOverHttp(options) { + var agent = new TunnelingAgent(options); + agent.request = http.request; + return agent; } -const NON_VARIABLE_OPTIONS = ["method", "baseUrl", "url", "headers", "request", "query", "mediaType"]; -const FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"]; -const GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/; -function graphql(request, query, options) { - if (options) { - if (typeof query === "string" && "query" in options) { - return Promise.reject(new Error(`[@octokit/graphql] "query" cannot be used as variable name`)); - } - - for (const key in options) { - if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) continue; - return Promise.reject(new Error(`[@octokit/graphql] "${key}" cannot be used as variable name`)); - } - } - - const parsedOptions = typeof query === "string" ? Object.assign({ - query - }, options) : query; - const requestOptions = Object.keys(parsedOptions).reduce((result, key) => { - if (NON_VARIABLE_OPTIONS.includes(key)) { - result[key] = parsedOptions[key]; - return result; - } - - if (!result.variables) { - result.variables = {}; - } +function httpsOverHttp(options) { + var agent = new TunnelingAgent(options); + agent.request = http.request; + agent.createSocket = createSecureSocket; + agent.defaultPort = 443; + return agent; +} - result.variables[key] = parsedOptions[key]; - return result; - }, {}); // workaround for GitHub Enterprise baseUrl set with /api/v3 suffix - // https://github.com/octokit/auth-app.js/issues/111#issuecomment-657610451 +function httpOverHttps(options) { + var agent = new TunnelingAgent(options); + agent.request = https.request; + return agent; +} - const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl; +function httpsOverHttps(options) { + var agent = new TunnelingAgent(options); + agent.request = https.request; + agent.createSocket = createSecureSocket; + agent.defaultPort = 443; + return agent; +} - if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) { - requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql"); - } - return request(requestOptions).then(response => { - if (response.data.errors) { - const headers = {}; +function TunnelingAgent(options) { + var self = this; + self.options = options || {}; + self.proxyOptions = self.options.proxy || {}; + self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets; + self.requests = []; + self.sockets = []; - for (const key of Object.keys(response.headers)) { - headers[key] = response.headers[key]; + self.on('free', function onFree(socket, host, port, localAddress) { + var options = toOptions(host, port, localAddress); + for (var i = 0, len = self.requests.length; i < len; ++i) { + var pending = self.requests[i]; + if (pending.host === options.host && pending.port === options.port) { + // Detect the request to connect same origin server, + // reuse the connection. + self.requests.splice(i, 1); + pending.request.onSocket(socket); + return; } - - throw new GraphqlResponseError(requestOptions, headers, response.data); } - - return response.data.data; + socket.destroy(); + self.removeSocket(socket); }); } +util.inherits(TunnelingAgent, events.EventEmitter); -function withDefaults(request$1, newDefaults) { - const newRequest = request$1.defaults(newDefaults); +TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) { + var self = this; + var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress)); - const newApi = (query, options) => { - return graphql(newRequest, query, options); - }; + if (self.sockets.length >= this.maxSockets) { + // We are over limit so we'll add it to the queue. + self.requests.push(options); + return; + } - return Object.assign(newApi, { - defaults: withDefaults.bind(null, newRequest), - endpoint: request.request.endpoint + // If we are under maxSockets create a new one. + self.createSocket(options, function(socket) { + socket.on('free', onFree); + socket.on('close', onCloseOrRemove); + socket.on('agentRemove', onCloseOrRemove); + req.onSocket(socket); + + function onFree() { + self.emit('free', socket, options); + } + + function onCloseOrRemove(err) { + self.removeSocket(socket); + socket.removeListener('free', onFree); + socket.removeListener('close', onCloseOrRemove); + socket.removeListener('agentRemove', onCloseOrRemove); + } }); -} +}; -const graphql$1 = withDefaults(request.request, { - headers: { - "user-agent": `octokit-graphql.js/${VERSION} ${universalUserAgent.getUserAgent()}` - }, - method: "POST", - url: "/graphql" -}); -function withCustomRequest(customRequest) { - return withDefaults(customRequest, { - method: "POST", - url: "/graphql" +TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { + var self = this; + var placeholder = {}; + self.sockets.push(placeholder); + + var connectOptions = mergeOptions({}, self.proxyOptions, { + method: 'CONNECT', + path: options.host + ':' + options.port, + agent: false, + headers: { + host: options.host + ':' + options.port + } }); -} + if (options.localAddress) { + connectOptions.localAddress = options.localAddress; + } + if (connectOptions.proxyAuth) { + connectOptions.headers = connectOptions.headers || {}; + connectOptions.headers['Proxy-Authorization'] = 'Basic ' + + new Buffer(connectOptions.proxyAuth).toString('base64'); + } -exports.GraphqlResponseError = GraphqlResponseError; -exports.graphql = graphql$1; -exports.withCustomRequest = withCustomRequest; -//# sourceMappingURL=index.js.map + debug('making CONNECT request'); + var connectReq = self.request(connectOptions); + connectReq.useChunkedEncodingByDefault = false; // for v0.6 + connectReq.once('response', onResponse); // for v0.6 + connectReq.once('upgrade', onUpgrade); // for v0.6 + connectReq.once('connect', onConnect); // for v0.7 or later + connectReq.once('error', onError); + connectReq.end(); + function onResponse(res) { + // Very hacky. This is necessary to avoid http-parser leaks. + res.upgrade = true; + } -/***/ }), + function onUpgrade(res, socket, head) { + // Hacky. + process.nextTick(function() { + onConnect(res, socket, head); + }); + } -/***/ 9723: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + function onConnect(res, socket, head) { + connectReq.removeAllListeners(); + socket.removeAllListeners(); -"use strict"; + if (res.statusCode !== 200) { + debug('tunneling socket could not be established, statusCode=%d', + res.statusCode); + socket.destroy(); + var error = new Error('tunneling socket could not be established, ' + + 'statusCode=' + res.statusCode); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); + return; + } + if (head.length > 0) { + debug('got illegal response body from proxy'); + socket.destroy(); + var error = new Error('got illegal response body from proxy'); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); + return; + } + debug('tunneling connection has established'); + self.sockets[self.sockets.indexOf(placeholder)] = socket; + return cb(socket); + } + function onError(cause) { + connectReq.removeAllListeners(); -Object.defineProperty(exports, "__esModule", ({ value: true })); + debug('tunneling socket could not be established, cause=%s\n', + cause.message, cause.stack); + var error = new Error('tunneling socket could not be established, ' + + 'cause=' + cause.message); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); + } +}; -var isPlainObject = __nccwpck_require__(3287); -var universalUserAgent = __nccwpck_require__(5030); +TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { + var pos = this.sockets.indexOf(socket) + if (pos === -1) { + return; + } + this.sockets.splice(pos, 1); -function lowercaseKeys(object) { - if (!object) { - return {}; + var pending = this.requests.shift(); + if (pending) { + // If we have pending requests and a socket gets closed a new one + // needs to be created to take over in the pool for the one that closed. + this.createSocket(pending, function(socket) { + pending.request.onSocket(socket); + }); } +}; - return Object.keys(object).reduce((newObj, key) => { - newObj[key.toLowerCase()] = object[key]; - return newObj; - }, {}); -} +function createSecureSocket(options, cb) { + var self = this; + TunnelingAgent.prototype.createSocket.call(self, options, function(socket) { + var hostHeader = options.request.getHeader('host'); + var tlsOptions = mergeOptions({}, self.options, { + socket: socket, + servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host + }); -function mergeDeep(defaults, options) { - const result = Object.assign({}, defaults); - Object.keys(options).forEach(key => { - if (isPlainObject.isPlainObject(options[key])) { - if (!(key in defaults)) Object.assign(result, { - [key]: options[key] - });else result[key] = mergeDeep(defaults[key], options[key]); - } else { - Object.assign(result, { - [key]: options[key] - }); - } + // 0 is dummy port for v0.6 + var secureSocket = tls.connect(0, tlsOptions); + self.sockets[self.sockets.indexOf(socket)] = secureSocket; + cb(secureSocket); }); - return result; } -function removeUndefinedProperties(obj) { - for (const key in obj) { - if (obj[key] === undefined) { - delete obj[key]; + +function toOptions(host, port, localAddress) { + if (typeof host === 'string') { // since v0.10 + return { + host: host, + port: port, + localAddress: localAddress + }; + } + return host; // for v0.11 or later +} + +function mergeOptions(target) { + for (var i = 1, len = arguments.length; i < len; ++i) { + var overrides = arguments[i]; + if (typeof overrides === 'object') { + var keys = Object.keys(overrides); + for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { + var k = keys[j]; + if (overrides[k] !== undefined) { + target[k] = overrides[k]; + } + } } } + return target; +} - return obj; + +var debug; +if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { + debug = function() { + var args = Array.prototype.slice.call(arguments); + if (typeof args[0] === 'string') { + args[0] = 'TUNNEL: ' + args[0]; + } else { + args.unshift('TUNNEL:'); + } + console.error.apply(console, args); + } +} else { + debug = function() {}; } +exports.debug = debug; // for test -function merge(defaults, route, options) { - if (typeof route === "string") { - let [method, url] = route.split(" "); - options = Object.assign(url ? { - method, - url - } : { - url: method - }, options); - } else { - options = Object.assign({}, route); - } // lowercase header names before merging with defaults to avoid duplicates +/***/ }), +/* 142 */, +/* 143 */, +/* 144 */, +/* 145 */, +/* 146 */ +/***/ (function(module, exports, __webpack_require__) { - options.headers = lowercaseKeys(options.headers); // remove properties with undefined values before merging +"use strict"; - removeUndefinedProperties(options); - removeUndefinedProperties(options.headers); - const mergedOptions = mergeDeep(defaults || {}, options); // mediaType.previews arrays are merged, instead of overwritten - if (defaults && defaults.mediaType.previews.length) { - mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(preview => !mergedOptions.mediaType.previews.includes(preview)).concat(mergedOptions.mediaType.previews); - } +var _interopRequireDefault = __webpack_require__(764); - mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map(preview => preview.replace(/-preview/, "")); - return mergedOptions; -} +__webpack_require__(493); -function addQueryParameters(url, parameters) { - const separator = /\?/.test(url) ? "&" : "?"; - const names = Object.keys(parameters); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; - if (names.length === 0) { - return url; - } +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); - return url + separator + names.map(name => { - if (name === "q") { - return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+"); - } +var _validateUrlIp = _interopRequireDefault(__webpack_require__(476)); - return `${name}=${encodeURIComponent(parameters[name])}`; - }).join("&"); -} +var _validateUrlUnicodeDomain = _interopRequireDefault(__webpack_require__(943)); -const urlVariableRegex = /\{[^}]+\}/g; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlUnicodeHost = (0, _regexSupplant["default"])('(?:' + '#{validateUrlIp}|' + '#{validateUrlUnicodeDomain}' + ')', { + validateUrlIp: _validateUrlIp["default"], + validateUrlUnicodeDomain: _validateUrlUnicodeDomain["default"] +}, 'i'); +var _default = validateUrlUnicodeHost; +exports["default"] = _default; +module.exports = exports.default; -function removeNonChars(variableName) { - return variableName.replace(/^\W+|\W+$/g, "").split(/,/); -} +/***/ }), +/* 147 */ +/***/ (function(module) { -function extractUrlVariableNames(url) { - const matches = url.match(urlVariableRegex); +// API +module.exports = state; - if (!matches) { - return []; +/** + * Creates initial state object + * for iteration over list + * + * @param {array|object} list - list to iterate over + * @param {function|null} sortMethod - function to use for keys sort, + * or `null` to keep them as is + * @returns {object} - initial state object + */ +function state(list, sortMethod) +{ + var isNamedList = !Array.isArray(list) + , initState = + { + index : 0, + keyedList: isNamedList || sortMethod ? Object.keys(list) : null, + jobs : {}, + results : isNamedList ? {} : [], + size : isNamedList ? Object.keys(list).length : list.length + } + ; + + if (sortMethod) + { + // sort array keys based on it's values + // sort object's keys just on own merit + initState.keyedList.sort(isNamedList ? sortMethod : function(a, b) + { + return sortMethod(list[a], list[b]); + }); } - return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []); + return initState; } -function omit(object, keysToOmit) { - return Object.keys(object).filter(option => !keysToOmit.includes(option)).reduce((obj, key) => { - obj[key] = object[key]; - return obj; - }, {}); -} -// Based on https://github.com/bramstein/url-template, licensed under BSD -// TODO: create separate package. -// -// Copyright (c) 2012-2014, Bram Stein -// All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. The name of the author may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED -// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +/***/ }), +/* 148 */ +/***/ (function(module, exports, __webpack_require__) { -/* istanbul ignore file */ -function encodeReserved(str) { - return str.split(/(%[0-9A-Fa-f]{2})/g).map(function (part) { - if (!/%[0-9A-Fa-f]/.test(part)) { - part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]"); - } +"use strict"; - return part; - }).join(""); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var invalidCharsGroup = /\uFFFE\uFEFF\uFFFF/; +var _default = invalidCharsGroup; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 149 */ +/***/ (function(module, exports, __webpack_require__) { + +/* eslint-disable node/no-deprecated-api */ +var buffer = __webpack_require__(670) +var Buffer = buffer.Buffer + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key] + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer +} else { + // Copy properties from require('buffer') + copyProps(buffer, exports) + exports.Buffer = SafeBuffer } -function encodeUnreserved(str) { - return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { - return "%" + c.charCodeAt(0).toString(16).toUpperCase(); - }); +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) } -function encodeValue(operator, value, key) { - value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value); +SafeBuffer.prototype = Object.create(Buffer.prototype) - if (key) { - return encodeUnreserved(key) + "=" + value; +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer) + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size) + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } } else { - return value; + buf.fill(0) } + return buf } -function isDefined(value) { - return value !== undefined && value !== null; +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) } -function isKeyOperator(operator) { - return operator === ";" || operator === "&" || operator === "?"; +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) } -function getValues(context, operator, key, modifier) { - var value = context[key], - result = []; - if (isDefined(value) && value !== "") { - if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") { - value = value.toString(); +/***/ }), +/* 150 */, +/* 151 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { - if (modifier && modifier !== "*") { - value = value.substring(0, parseInt(modifier, 10)); - } +"use strict"; - result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); - } else { - if (modifier === "*") { - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function (value) { - result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); - }); - } else { - Object.keys(value).forEach(function (k) { - if (isDefined(value[k])) { - result.push(encodeValue(operator, value[k], k)); - } - }); - } - } else { - const tmp = []; - if (Array.isArray(value)) { - value.filter(isDefined).forEach(function (value) { - tmp.push(encodeValue(operator, value)); - }); - } else { - Object.keys(value).forEach(function (k) { - if (isDefined(value[k])) { - tmp.push(encodeUnreserved(k)); - tmp.push(encodeValue(operator, value[k].toString())); - } - }); - } +var jsonSafeStringify = __webpack_require__(739) +var crypto = __webpack_require__(417) +var Buffer = __webpack_require__(149).Buffer - if (isKeyOperator(operator)) { - result.push(encodeUnreserved(key) + "=" + tmp.join(",")); - } else if (tmp.length !== 0) { - result.push(tmp.join(",")); - } - } - } - } else { - if (operator === ";") { - if (isDefined(value)) { - result.push(encodeUnreserved(key)); - } - } else if (value === "" && (operator === "&" || operator === "?")) { - result.push(encodeUnreserved(key) + "="); - } else if (value === "") { - result.push(""); - } +var defer = typeof setImmediate === 'undefined' + ? process.nextTick + : setImmediate + +function paramsHaveRequestBody (params) { + return ( + params.body || + params.requestBodyStream || + (params.json && typeof params.json !== 'boolean') || + params.multipart + ) +} + +function safeStringify (obj, replacer) { + var ret + try { + ret = JSON.stringify(obj, replacer) + } catch (e) { + ret = jsonSafeStringify(obj, replacer) } + return ret +} - return result; +function md5 (str) { + return crypto.createHash('md5').update(str).digest('hex') } -function parseUrl(template) { +function isReadStream (rs) { + return rs.readable && rs.path && rs.mode +} + +function toBase64 (str) { + return Buffer.from(str || '', 'utf8').toString('base64') +} + +function copy (obj) { + var o = {} + Object.keys(obj).forEach(function (i) { + o[i] = obj[i] + }) + return o +} + +function version () { + var numbers = process.version.replace('v', '').split('.') return { - expand: expand.bind(null, template) - }; + major: parseInt(numbers[0], 10), + minor: parseInt(numbers[1], 10), + patch: parseInt(numbers[2], 10) + } } -function expand(template, context) { - var operators = ["+", "#", ".", "/", ";", "?", "&"]; - return template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (_, expression, literal) { - if (expression) { - let operator = ""; - const values = []; +exports.paramsHaveRequestBody = paramsHaveRequestBody +exports.safeStringify = safeStringify +exports.md5 = md5 +exports.isReadStream = isReadStream +exports.toBase64 = toBase64 +exports.copy = copy +exports.version = version +exports.defer = defer - if (operators.indexOf(expression.charAt(0)) !== -1) { - operator = expression.charAt(0); - expression = expression.substr(1); - } - expression.split(/,/g).forEach(function (variable) { - var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable); - values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3])); - }); +/***/ }), +/* 152 */ +/***/ (function(module, __unusedexports, __webpack_require__) { - if (operator && operator !== "+") { - var separator = ","; +var Stream = __webpack_require__(413).Stream; +var util = __webpack_require__(669); - if (operator === "?") { - separator = "&"; - } else if (operator !== "#") { - separator = operator; - } +module.exports = DelayedStream; +function DelayedStream() { + this.source = null; + this.dataSize = 0; + this.maxDataSize = 1024 * 1024; + this.pauseStream = true; - return (values.length !== 0 ? operator : "") + values.join(separator); - } else { - return values.join(","); - } - } else { - return encodeReserved(literal); - } - }); + this._maxDataSizeExceeded = false; + this._released = false; + this._bufferedEvents = []; } +util.inherits(DelayedStream, Stream); -function parse(options) { - // https://fetch.spec.whatwg.org/#methods - let method = options.method.toUpperCase(); // replace :varname with {varname} to make it RFC 6570 compatible +DelayedStream.create = function(source, options) { + var delayedStream = new this(); - let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}"); - let headers = Object.assign({}, options.headers); - let body; - let parameters = omit(options, ["method", "baseUrl", "url", "headers", "request", "mediaType"]); // extract variable names from URL to calculate remaining variables later + options = options || {}; + for (var option in options) { + delayedStream[option] = options[option]; + } - const urlVariableNames = extractUrlVariableNames(url); - url = parseUrl(url).expand(parameters); + delayedStream.source = source; - if (!/^http/.test(url)) { - url = options.baseUrl + url; + var realEmit = source.emit; + source.emit = function() { + delayedStream._handleEmit(arguments); + return realEmit.apply(source, arguments); + }; + + source.on('error', function() {}); + if (delayedStream.pauseStream) { + source.pause(); } - const omittedParameters = Object.keys(options).filter(option => urlVariableNames.includes(option)).concat("baseUrl"); - const remainingParameters = omit(parameters, omittedParameters); - const isBinaryRequest = /application\/octet-stream/i.test(headers.accept); + return delayedStream; +}; - if (!isBinaryRequest) { - if (options.mediaType.format) { - // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw - headers.accept = headers.accept.split(/,/).map(preview => preview.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`)).join(","); - } +Object.defineProperty(DelayedStream.prototype, 'readable', { + configurable: true, + enumerable: true, + get: function() { + return this.source.readable; + } +}); - if (options.mediaType.previews.length) { - const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || []; - headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map(preview => { - const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json"; - return `application/vnd.github.${preview}-preview${format}`; - }).join(","); - } - } // for GET/HEAD requests, set URL query parameters from remaining parameters - // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters - - - if (["GET", "HEAD"].includes(method)) { - url = addQueryParameters(url, remainingParameters); - } else { - if ("data" in remainingParameters) { - body = remainingParameters.data; - } else { - if (Object.keys(remainingParameters).length) { - body = remainingParameters; - } - } - } // default content-type for JSON if body is set +DelayedStream.prototype.setEncoding = function() { + return this.source.setEncoding.apply(this.source, arguments); +}; +DelayedStream.prototype.resume = function() { + if (!this._released) { + this.release(); + } - if (!headers["content-type"] && typeof body !== "undefined") { - headers["content-type"] = "application/json; charset=utf-8"; - } // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body. - // fetch does not allow to set `content-length` header, but we can set body to an empty string + this.source.resume(); +}; +DelayedStream.prototype.pause = function() { + this.source.pause(); +}; - if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") { - body = ""; - } // Only return body/request keys if present +DelayedStream.prototype.release = function() { + this._released = true; + this._bufferedEvents.forEach(function(args) { + this.emit.apply(this, args); + }.bind(this)); + this._bufferedEvents = []; +}; - return Object.assign({ - method, - url, - headers - }, typeof body !== "undefined" ? { - body - } : null, options.request ? { - request: options.request - } : null); -} +DelayedStream.prototype.pipe = function() { + var r = Stream.prototype.pipe.apply(this, arguments); + this.resume(); + return r; +}; -function endpointWithDefaults(defaults, route, options) { - return parse(merge(defaults, route, options)); -} +DelayedStream.prototype._handleEmit = function(args) { + if (this._released) { + this.emit.apply(this, args); + return; + } -function withDefaults(oldDefaults, newDefaults) { - const DEFAULTS = merge(oldDefaults, newDefaults); - const endpoint = endpointWithDefaults.bind(null, DEFAULTS); - return Object.assign(endpoint, { - DEFAULTS, - defaults: withDefaults.bind(null, DEFAULTS), - merge: merge.bind(null, DEFAULTS), - parse - }); -} + if (args[0] === 'data') { + this.dataSize += args[1].length; + this._checkIfMaxDataSizeExceeded(); + } -const VERSION = "7.0.2"; + this._bufferedEvents.push(args); +}; -const userAgent = `octokit-endpoint.js/${VERSION} ${universalUserAgent.getUserAgent()}`; // DEFAULTS has all properties set that EndpointOptions has, except url. -// So we use RequestParameters and add method as additional required property. +DelayedStream.prototype._checkIfMaxDataSizeExceeded = function() { + if (this._maxDataSizeExceeded) { + return; + } -const DEFAULTS = { - method: "GET", - baseUrl: "https://api.github.com", - headers: { - accept: "application/vnd.github.v3+json", - "user-agent": userAgent - }, - mediaType: { - format: "", - previews: [] + if (this.dataSize <= this.maxDataSize) { + return; } + + this._maxDataSizeExceeded = true; + var message = + 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.' + this.emit('error', new Error(message)); }; -const endpoint = withDefaults(null, DEFAULTS); -exports.endpoint = endpoint; -//# sourceMappingURL=index.js.map +/***/ }), +/* 153 */, +/* 154 */ +/***/ (function(module) { + +"use strict"; + +module.exports = function generate_contains(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $idx = 'i' + $lvl, + $dataNxt = $it.dataLevel = it.dataLevel + 1, + $nextData = 'data' + $dataNxt, + $currentBaseId = it.baseId, + $nonEmptySchema = (it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all)); + out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';'; + if ($nonEmptySchema) { + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + $it.schema = $schema; + $it.schemaPath = $schemaPath; + $it.errSchemaPath = $errSchemaPath; + out += ' var ' + ($nextValid) + ' = false; for (var ' + ($idx) + ' = 0; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; + $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); + var $passData = $data + '[' + $idx + ']'; + $it.dataPathArr[$dataNxt] = $idx; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + out += ' if (' + ($nextValid) + ') break; } '; + it.compositeRule = $it.compositeRule = $wasComposite; + out += ' ' + ($closingBraces) + ' if (!' + ($nextValid) + ') {'; + } else { + out += ' if (' + ($data) + '.length == 0) {'; + } + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('contains') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should contain a valid item\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else { '; + if ($nonEmptySchema) { + out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; + } + if (it.opts.allErrors) { + out += ' } '; + } + return out; +} /***/ }), - -/***/ 3758: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/* 155 */, +/* 156 */, +/* 157 */ +/***/ (function(module, __unusedexports, __webpack_require__) { "use strict"; +var addToUnscopables = __webpack_require__(887); +var step = __webpack_require__(423); +var Iterators = __webpack_require__(907); +var toIObject = __webpack_require__(78); -Object.defineProperty(exports, "__esModule", ({ value: true })); +// 22.1.3.4 Array.prototype.entries() +// 22.1.3.13 Array.prototype.keys() +// 22.1.3.29 Array.prototype.values() +// 22.1.3.30 Array.prototype[@@iterator]() +module.exports = __webpack_require__(103)(Array, 'Array', function (iterated, kind) { + this._t = toIObject(iterated); // target + this._i = 0; // next index + this._k = kind; // kind +// 22.1.5.2.1 %ArrayIteratorPrototype%.next() +}, function () { + var O = this._t; + var kind = this._k; + var index = this._i++; + if (!O || index >= O.length) { + this._t = undefined; + return step(1); + } + if (kind == 'keys') return step(0, index); + if (kind == 'values') return step(0, O[index]); + return step(0, [index, O[index]]); +}, 'values'); -function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } +// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) +Iterators.Arguments = Iterators.Array; -var endpoint = __nccwpck_require__(9723); -var universalUserAgent = __nccwpck_require__(5030); -var isPlainObject = __nccwpck_require__(3287); -var nodeFetch = _interopDefault(__nccwpck_require__(467)); -var requestError = __nccwpck_require__(537); +addToUnscopables('keys'); +addToUnscopables('values'); +addToUnscopables('entries'); -const VERSION = "6.2.1"; -function getBufferResponse(response) { - return response.arrayBuffer(); -} +/***/ }), +/* 158 */ +/***/ (function(module) { -function fetchWrapper(requestOptions) { - const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console; +module.exports = {"author":{"name":"Jeremy Stashewsky","email":"jstash@gmail.com","website":"https://github.com/stash"},"contributors":[{"name":"Alexander Savin","website":"https://github.com/apsavin"},{"name":"Ian Livingstone","website":"https://github.com/ianlivingstone"},{"name":"Ivan Nikulin","website":"https://github.com/inikulin"},{"name":"Lalit Kapoor","website":"https://github.com/lalitkapoor"},{"name":"Sam Thompson","website":"https://github.com/sambthompson"},{"name":"Sebastian Mayr","website":"https://github.com/Sebmaster"}],"license":"BSD-3-Clause","name":"tough-cookie","description":"RFC6265 Cookies and Cookie Jar for node.js","keywords":["HTTP","cookie","cookies","set-cookie","cookiejar","jar","RFC6265","RFC2965"],"version":"2.4.3","homepage":"https://github.com/salesforce/tough-cookie","repository":{"type":"git","url":"git://github.com/salesforce/tough-cookie.git"},"bugs":{"url":"https://github.com/salesforce/tough-cookie/issues"},"main":"./lib/cookie","files":["lib"],"scripts":{"test":"vows test/*_test.js","cover":"nyc --reporter=lcov --reporter=html vows test/*_test.js"},"engines":{"node":">=0.8"},"devDependencies":{"async":"^1.4.2","nyc":"^11.6.0","string.prototype.repeat":"^0.2.0","vows":"^0.8.1"},"dependencies":{"psl":"^1.1.24","punycode":"^1.4.1"}}; - if (isPlainObject.isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) { - requestOptions.body = JSON.stringify(requestOptions.body); - } +/***/ }), +/* 159 */, +/* 160 */ +/***/ (function(module) { - let headers = {}; - let status; - let url; - const fetch = requestOptions.request && requestOptions.request.fetch || globalThis.fetch || - /* istanbul ignore next */ - nodeFetch; - return fetch(requestOptions.url, Object.assign({ - method: requestOptions.method, - body: requestOptions.body, - headers: requestOptions.headers, - redirect: requestOptions.redirect - }, // `requestOptions.request.agent` type is incompatible - // see https://github.com/octokit/types.ts/pull/264 - requestOptions.request)).then(async response => { - url = response.url; - status = response.status; +"use strict"; - for (const keyAndValue of response.headers) { - headers[keyAndValue[0]] = keyAndValue[1]; +module.exports = function generate__limitItems(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + if (!($isData || typeof $schema == 'number')) { + throw new Error($keyword + ' must be number'); + } + var $op = $keyword == 'maxItems' ? '>' : '<'; + out += 'if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { '; + var $errorKeyword = $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_limitItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have '; + if ($keyword == 'maxItems') { + out += 'more'; + } else { + out += 'fewer'; + } + out += ' than '; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + ($schema); + } + out += ' items\' '; } - - if ("deprecation" in headers) { - const matches = headers.link && headers.link.match(/<([^>]+)>; rel="deprecation"/); - const deprecationLink = matches && matches.pop(); - log.warn(`[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}`); + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; +} - if (status === 204 || status === 205) { - return; - } // GitHub API returns 200 for HEAD requests +/***/ }), +/* 161 */ +/***/ (function(module, __unusedexports, __webpack_require__) { - if (requestOptions.method === "HEAD") { - if (status < 400) { - return; - } +// Basic Javascript Elliptic Curve implementation +// Ported loosely from BouncyCastle's Java EC code +// Only Fp curves implemented for now - throw new requestError.RequestError(response.statusText, status, { - response: { - url, - status, - headers, - data: undefined - }, - request: requestOptions - }); - } +// Requires jsbn.js and jsbn2.js +var BigInteger = __webpack_require__(242).BigInteger +var Barrett = BigInteger.prototype.Barrett - if (status === 304) { - throw new requestError.RequestError("Not modified", status, { - response: { - url, - status, - headers, - data: await getResponseData(response) - }, - request: requestOptions - }); - } +// ---------------- +// ECFieldElementFp - if (status >= 400) { - const data = await getResponseData(response); - const error = new requestError.RequestError(toErrorMessage(data), status, { - response: { - url, - status, - headers, - data - }, - request: requestOptions - }); - throw error; - } +// constructor +function ECFieldElementFp(q,x) { + this.x = x; + // TODO if(x.compareTo(q) >= 0) error + this.q = q; +} - return getResponseData(response); - }).then(data => { - return { - status, - url, - headers, - data - }; - }).catch(error => { - if (error instanceof requestError.RequestError) throw error;else if (error.name === "AbortError") throw error; - throw new requestError.RequestError(error.message, 500, { - request: requestOptions - }); - }); +function feFpEquals(other) { + if(other == this) return true; + return (this.q.equals(other.q) && this.x.equals(other.x)); } -async function getResponseData(response) { - const contentType = response.headers.get("content-type"); +function feFpToBigInteger() { + return this.x; +} - if (/application\/json/.test(contentType)) { - return response.json(); - } +function feFpNegate() { + return new ECFieldElementFp(this.q, this.x.negate().mod(this.q)); +} - if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) { - return response.text(); - } +function feFpAdd(b) { + return new ECFieldElementFp(this.q, this.x.add(b.toBigInteger()).mod(this.q)); +} - return getBufferResponse(response); +function feFpSubtract(b) { + return new ECFieldElementFp(this.q, this.x.subtract(b.toBigInteger()).mod(this.q)); } -function toErrorMessage(data) { - if (typeof data === "string") return data; // istanbul ignore else - just in case +function feFpMultiply(b) { + return new ECFieldElementFp(this.q, this.x.multiply(b.toBigInteger()).mod(this.q)); +} - if ("message" in data) { - if (Array.isArray(data.errors)) { - return `${data.message}: ${data.errors.map(JSON.stringify).join(", ")}`; - } +function feFpSquare() { + return new ECFieldElementFp(this.q, this.x.square().mod(this.q)); +} - return data.message; - } // istanbul ignore next - just in case +function feFpDivide(b) { + return new ECFieldElementFp(this.q, this.x.multiply(b.toBigInteger().modInverse(this.q)).mod(this.q)); +} +ECFieldElementFp.prototype.equals = feFpEquals; +ECFieldElementFp.prototype.toBigInteger = feFpToBigInteger; +ECFieldElementFp.prototype.negate = feFpNegate; +ECFieldElementFp.prototype.add = feFpAdd; +ECFieldElementFp.prototype.subtract = feFpSubtract; +ECFieldElementFp.prototype.multiply = feFpMultiply; +ECFieldElementFp.prototype.square = feFpSquare; +ECFieldElementFp.prototype.divide = feFpDivide; - return `Unknown error: ${JSON.stringify(data)}`; +// ---------------- +// ECPointFp + +// constructor +function ECPointFp(curve,x,y,z) { + this.curve = curve; + this.x = x; + this.y = y; + // Projective coordinates: either zinv == null or z * zinv == 1 + // z and zinv are just BigIntegers, not fieldElements + if(z == null) { + this.z = BigInteger.ONE; + } + else { + this.z = z; + } + this.zinv = null; + //TODO: compression flag } -function withDefaults(oldEndpoint, newDefaults) { - const endpoint = oldEndpoint.defaults(newDefaults); +function pointFpGetX() { + if(this.zinv == null) { + this.zinv = this.z.modInverse(this.curve.q); + } + var r = this.x.toBigInteger().multiply(this.zinv); + this.curve.reduce(r); + return this.curve.fromBigInteger(r); +} - const newApi = function (route, parameters) { - const endpointOptions = endpoint.merge(route, parameters); +function pointFpGetY() { + if(this.zinv == null) { + this.zinv = this.z.modInverse(this.curve.q); + } + var r = this.y.toBigInteger().multiply(this.zinv); + this.curve.reduce(r); + return this.curve.fromBigInteger(r); +} - if (!endpointOptions.request || !endpointOptions.request.hook) { - return fetchWrapper(endpoint.parse(endpointOptions)); +function pointFpEquals(other) { + if(other == this) return true; + if(this.isInfinity()) return other.isInfinity(); + if(other.isInfinity()) return this.isInfinity(); + var u, v; + // u = Y2 * Z1 - Y1 * Z2 + u = other.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(other.z)).mod(this.curve.q); + if(!u.equals(BigInteger.ZERO)) return false; + // v = X2 * Z1 - X1 * Z2 + v = other.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(other.z)).mod(this.curve.q); + return v.equals(BigInteger.ZERO); +} + +function pointFpIsInfinity() { + if((this.x == null) && (this.y == null)) return true; + return this.z.equals(BigInteger.ZERO) && !this.y.toBigInteger().equals(BigInteger.ZERO); +} + +function pointFpNegate() { + return new ECPointFp(this.curve, this.x, this.y.negate(), this.z); +} + +function pointFpAdd(b) { + if(this.isInfinity()) return b; + if(b.isInfinity()) return this; + + // u = Y2 * Z1 - Y1 * Z2 + var u = b.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(b.z)).mod(this.curve.q); + // v = X2 * Z1 - X1 * Z2 + var v = b.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(b.z)).mod(this.curve.q); + + if(BigInteger.ZERO.equals(v)) { + if(BigInteger.ZERO.equals(u)) { + return this.twice(); // this == b, so double + } + return this.curve.getInfinity(); // this = -b, so infinity } - const request = (route, parameters) => { - return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters))); - }; + var THREE = new BigInteger("3"); + var x1 = this.x.toBigInteger(); + var y1 = this.y.toBigInteger(); + var x2 = b.x.toBigInteger(); + var y2 = b.y.toBigInteger(); - Object.assign(request, { - endpoint, - defaults: withDefaults.bind(null, endpoint) - }); - return endpointOptions.request.hook(request, endpointOptions); - }; + var v2 = v.square(); + var v3 = v2.multiply(v); + var x1v2 = x1.multiply(v2); + var zu2 = u.square().multiply(this.z); - return Object.assign(newApi, { - endpoint, - defaults: withDefaults.bind(null, endpoint) - }); + // x3 = v * (z2 * (z1 * u^2 - 2 * x1 * v^2) - v^3) + var x3 = zu2.subtract(x1v2.shiftLeft(1)).multiply(b.z).subtract(v3).multiply(v).mod(this.curve.q); + // y3 = z2 * (3 * x1 * u * v^2 - y1 * v^3 - z1 * u^3) + u * v^3 + var y3 = x1v2.multiply(THREE).multiply(u).subtract(y1.multiply(v3)).subtract(zu2.multiply(u)).multiply(b.z).add(u.multiply(v3)).mod(this.curve.q); + // z3 = v^3 * z1 * z2 + var z3 = v3.multiply(this.z).multiply(b.z).mod(this.curve.q); + + return new ECPointFp(this.curve, this.curve.fromBigInteger(x3), this.curve.fromBigInteger(y3), z3); } -const request = withDefaults(endpoint.endpoint, { - headers: { - "user-agent": `octokit-request.js/${VERSION} ${universalUserAgent.getUserAgent()}` - } -}); +function pointFpTwice() { + if(this.isInfinity()) return this; + if(this.y.toBigInteger().signum() == 0) return this.curve.getInfinity(); -exports.request = request; -//# sourceMappingURL=index.js.map + // TODO: optimized handling of constants + var THREE = new BigInteger("3"); + var x1 = this.x.toBigInteger(); + var y1 = this.y.toBigInteger(); + var y1z1 = y1.multiply(this.z); + var y1sqz1 = y1z1.multiply(y1).mod(this.curve.q); + var a = this.curve.a.toBigInteger(); -/***/ }), + // w = 3 * x1^2 + a * z1^2 + var w = x1.square().multiply(THREE); + if(!BigInteger.ZERO.equals(a)) { + w = w.add(this.z.square().multiply(a)); + } + w = w.mod(this.curve.q); + //this.curve.reduce(w); + // x3 = 2 * y1 * z1 * (w^2 - 8 * x1 * y1^2 * z1) + var x3 = w.square().subtract(x1.shiftLeft(3).multiply(y1sqz1)).shiftLeft(1).multiply(y1z1).mod(this.curve.q); + // y3 = 4 * y1^2 * z1 * (3 * w * x1 - 2 * y1^2 * z1) - w^3 + var y3 = w.multiply(THREE).multiply(x1).subtract(y1sqz1.shiftLeft(1)).shiftLeft(2).multiply(y1sqz1).subtract(w.square().multiply(w)).mod(this.curve.q); + // z3 = 8 * (y1 * z1)^3 + var z3 = y1z1.square().multiply(y1z1).shiftLeft(3).mod(this.curve.q); -/***/ 4193: -/***/ ((__unused_webpack_module, exports) => { + return new ECPointFp(this.curve, this.curve.fromBigInteger(x3), this.curve.fromBigInteger(y3), z3); +} -"use strict"; +// Simple NAF (Non-Adjacent Form) multiplication algorithm +// TODO: modularize the multiplication algorithm +function pointFpMultiply(k) { + if(this.isInfinity()) return this; + if(k.signum() == 0) return this.curve.getInfinity(); + var e = k; + var h = e.multiply(new BigInteger("3")); -Object.defineProperty(exports, "__esModule", ({ value: true })); + var neg = this.negate(); + var R = this; -const VERSION = "4.3.1"; + var i; + for(i = h.bitLength() - 2; i > 0; --i) { + R = R.twice(); -/** - * Some “list” response that can be paginated have a different response structure - * - * They have a `total_count` key in the response (search also has `incomplete_results`, - * /installation/repositories also has `repository_selection`), as well as a key with - * the list of the items which name varies from endpoint to endpoint. - * - * Octokit normalizes these responses so that paginated results are always returned following - * the same structure. One challenge is that if the list response has only one page, no Link - * header is provided, so this header alone is not sufficient to check wether a response is - * paginated or not. - * - * We check if a "total_count" key is present in the response data, but also make sure that - * a "url" property is not, as the "Get the combined status for a specific ref" endpoint would - * otherwise match: https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref - */ -function normalizePaginatedListResponse(response) { - // endpoints can respond with 204 if repository is empty - if (!response.data) { - return { ...response, - data: [] - }; - } + var hBit = h.testBit(i); + var eBit = e.testBit(i); - const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data); - if (!responseNeedsNormalization) return response; // keep the additional properties intact as there is currently no other way - // to retrieve the same information. + if (hBit != eBit) { + R = R.add(hBit ? this : neg); + } + } - const incompleteResults = response.data.incomplete_results; - const repositorySelection = response.data.repository_selection; - const totalCount = response.data.total_count; - delete response.data.incomplete_results; - delete response.data.repository_selection; - delete response.data.total_count; - const namespaceKey = Object.keys(response.data)[0]; - const data = response.data[namespaceKey]; - response.data = data; + return R; +} - if (typeof incompleteResults !== "undefined") { - response.data.incomplete_results = incompleteResults; +// Compute this*j + x*k (simultaneous multiplication) +function pointFpMultiplyTwo(j,x,k) { + var i; + if(j.bitLength() > k.bitLength()) + i = j.bitLength() - 1; + else + i = k.bitLength() - 1; + + var R = this.curve.getInfinity(); + var both = this.add(x); + while(i >= 0) { + R = R.twice(); + if(j.testBit(i)) { + if(k.testBit(i)) { + R = R.add(both); + } + else { + R = R.add(this); + } + } + else { + if(k.testBit(i)) { + R = R.add(x); + } + } + --i; } - if (typeof repositorySelection !== "undefined") { - response.data.repository_selection = repositorySelection; - } + return R; +} - response.data.total_count = totalCount; - return response; +ECPointFp.prototype.getX = pointFpGetX; +ECPointFp.prototype.getY = pointFpGetY; +ECPointFp.prototype.equals = pointFpEquals; +ECPointFp.prototype.isInfinity = pointFpIsInfinity; +ECPointFp.prototype.negate = pointFpNegate; +ECPointFp.prototype.add = pointFpAdd; +ECPointFp.prototype.twice = pointFpTwice; +ECPointFp.prototype.multiply = pointFpMultiply; +ECPointFp.prototype.multiplyTwo = pointFpMultiplyTwo; + +// ---------------- +// ECCurveFp + +// constructor +function ECCurveFp(q,a,b) { + this.q = q; + this.a = this.fromBigInteger(a); + this.b = this.fromBigInteger(b); + this.infinity = new ECPointFp(this, null, null); + this.reducer = new Barrett(this.q); } -function iterator(octokit, route, parameters) { - const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters); - const requestMethod = typeof route === "function" ? route : octokit.request; - const method = options.method; - const headers = options.headers; - let url = options.url; - return { - [Symbol.asyncIterator]: () => ({ - async next() { - if (!url) return { - done: true - }; +function curveFpGetQ() { + return this.q; +} - try { - const response = await requestMethod({ - method, - url, - headers - }); - const normalizedResponse = normalizePaginatedListResponse(response); // `response.headers.link` format: - // '; rel="next", ; rel="last"' - // sets `url` to undefined if "next" URL is not present or `link` header is not set +function curveFpGetA() { + return this.a; +} - url = ((normalizedResponse.headers.link || "").match(/<([^>]+)>;\s*rel="next"/) || [])[1]; - return { - value: normalizedResponse - }; - } catch (error) { - if (error.status !== 409) throw error; - url = ""; - return { - value: { - status: 200, - headers: {}, - data: [] - } - }; - } - } +function curveFpGetB() { + return this.b; +} - }) - }; +function curveFpEquals(other) { + if(other == this) return true; + return(this.q.equals(other.q) && this.a.equals(other.a) && this.b.equals(other.b)); } -function paginate(octokit, route, parameters, mapFn) { - if (typeof parameters === "function") { - mapFn = parameters; - parameters = undefined; - } +function curveFpGetInfinity() { + return this.infinity; +} - return gather(octokit, [], iterator(octokit, route, parameters)[Symbol.asyncIterator](), mapFn); +function curveFpFromBigInteger(x) { + return new ECFieldElementFp(this.q, x); } -function gather(octokit, results, iterator, mapFn) { - return iterator.next().then(result => { - if (result.done) { - return results; +function curveReduce(x) { + this.reducer.reduce(x); +} + +// for now, work with hex strings because they're easier in JS +function curveFpDecodePointHex(s) { + switch(parseInt(s.substr(0,2), 16)) { // first byte + case 0: + return this.infinity; + case 2: + case 3: + // point compression not supported yet + return null; + case 4: + case 6: + case 7: + var len = (s.length - 2) / 2; + var xHex = s.substr(2, len); + var yHex = s.substr(len+2, len); + + return new ECPointFp(this, + this.fromBigInteger(new BigInteger(xHex, 16)), + this.fromBigInteger(new BigInteger(yHex, 16))); + + default: // unsupported + return null; } +} - let earlyExit = false; +function curveFpEncodePointHex(p) { + if (p.isInfinity()) return "00"; + var xHex = p.getX().toBigInteger().toString(16); + var yHex = p.getY().toBigInteger().toString(16); + var oLen = this.getQ().toString(16).length; + if ((oLen % 2) != 0) oLen++; + while (xHex.length < oLen) { + xHex = "0" + xHex; + } + while (yHex.length < oLen) { + yHex = "0" + yHex; + } + return "04" + xHex + yHex; +} - function done() { - earlyExit = true; +ECCurveFp.prototype.getQ = curveFpGetQ; +ECCurveFp.prototype.getA = curveFpGetA; +ECCurveFp.prototype.getB = curveFpGetB; +ECCurveFp.prototype.equals = curveFpEquals; +ECCurveFp.prototype.getInfinity = curveFpGetInfinity; +ECCurveFp.prototype.fromBigInteger = curveFpFromBigInteger; +ECCurveFp.prototype.reduce = curveReduce; +//ECCurveFp.prototype.decodePointHex = curveFpDecodePointHex; +ECCurveFp.prototype.encodePointHex = curveFpEncodePointHex; + +// from: https://github.com/kaielvin/jsbn-ec-point-compression +ECCurveFp.prototype.decodePointHex = function(s) +{ + var yIsEven; + switch(parseInt(s.substr(0,2), 16)) { // first byte + case 0: + return this.infinity; + case 2: + yIsEven = false; + case 3: + if(yIsEven == undefined) yIsEven = true; + var len = s.length - 2; + var xHex = s.substr(2, len); + var x = this.fromBigInteger(new BigInteger(xHex,16)); + var alpha = x.multiply(x.square().add(this.getA())).add(this.getB()); + var beta = alpha.sqrt(); + + if (beta == null) throw "Invalid point compression"; + + var betaValue = beta.toBigInteger(); + if (betaValue.testBit(0) != yIsEven) + { + // Use the other root + beta = this.fromBigInteger(this.getQ().subtract(betaValue)); } + return new ECPointFp(this,x,beta); + case 4: + case 6: + case 7: + var len = (s.length - 2) / 2; + var xHex = s.substr(2, len); + var yHex = s.substr(len+2, len); - results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data); + return new ECPointFp(this, + this.fromBigInteger(new BigInteger(xHex, 16)), + this.fromBigInteger(new BigInteger(yHex, 16))); - if (earlyExit) { - return results; + default: // unsupported + return null; } +} +ECCurveFp.prototype.encodeCompressedPointHex = function(p) +{ + if (p.isInfinity()) return "00"; + var xHex = p.getX().toBigInteger().toString(16); + var oLen = this.getQ().toString(16).length; + if ((oLen % 2) != 0) oLen++; + while (xHex.length < oLen) + xHex = "0" + xHex; + var yPrefix; + if(p.getY().toBigInteger().isEven()) yPrefix = "02"; + else yPrefix = "03"; - return gather(octokit, results, iterator, mapFn); - }); + return yPrefix + xHex; } -const composePaginateRest = Object.assign(paginate, { - iterator -}); -const paginatingEndpoints = ["GET /app/hook/deliveries", "GET /app/installations", "GET /enterprises/{enterprise}/actions/permissions/organizations", "GET /enterprises/{enterprise}/actions/runner-groups", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners", "GET /enterprises/{enterprise}/actions/runners", "GET /enterprises/{enterprise}/audit-log", "GET /enterprises/{enterprise}/code-scanning/alerts", "GET /enterprises/{enterprise}/secret-scanning/alerts", "GET /enterprises/{enterprise}/settings/billing/advanced-security", "GET /events", "GET /gists", "GET /gists/public", "GET /gists/starred", "GET /gists/{gist_id}/comments", "GET /gists/{gist_id}/commits", "GET /gists/{gist_id}/forks", "GET /installation/repositories", "GET /issues", "GET /licenses", "GET /marketplace_listing/plans", "GET /marketplace_listing/plans/{plan_id}/accounts", "GET /marketplace_listing/stubbed/plans", "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts", "GET /networks/{owner}/{repo}/events", "GET /notifications", "GET /organizations", "GET /orgs/{org}/actions/cache/usage-by-repository", "GET /orgs/{org}/actions/permissions/repositories", "GET /orgs/{org}/actions/runner-groups", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners", "GET /orgs/{org}/actions/runners", "GET /orgs/{org}/actions/secrets", "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", "GET /orgs/{org}/audit-log", "GET /orgs/{org}/blocks", "GET /orgs/{org}/code-scanning/alerts", "GET /orgs/{org}/codespaces", "GET /orgs/{org}/credential-authorizations", "GET /orgs/{org}/dependabot/secrets", "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories", "GET /orgs/{org}/events", "GET /orgs/{org}/external-groups", "GET /orgs/{org}/failed_invitations", "GET /orgs/{org}/hooks", "GET /orgs/{org}/hooks/{hook_id}/deliveries", "GET /orgs/{org}/installations", "GET /orgs/{org}/invitations", "GET /orgs/{org}/invitations/{invitation_id}/teams", "GET /orgs/{org}/issues", "GET /orgs/{org}/members", "GET /orgs/{org}/migrations", "GET /orgs/{org}/migrations/{migration_id}/repositories", "GET /orgs/{org}/outside_collaborators", "GET /orgs/{org}/packages", "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", "GET /orgs/{org}/projects", "GET /orgs/{org}/public_members", "GET /orgs/{org}/repos", "GET /orgs/{org}/secret-scanning/alerts", "GET /orgs/{org}/settings/billing/advanced-security", "GET /orgs/{org}/team-sync/groups", "GET /orgs/{org}/teams", "GET /orgs/{org}/teams/{team_slug}/discussions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/invitations", "GET /orgs/{org}/teams/{team_slug}/members", "GET /orgs/{org}/teams/{team_slug}/projects", "GET /orgs/{org}/teams/{team_slug}/repos", "GET /orgs/{org}/teams/{team_slug}/teams", "GET /projects/columns/{column_id}/cards", "GET /projects/{project_id}/collaborators", "GET /projects/{project_id}/columns", "GET /repos/{owner}/{repo}/actions/artifacts", "GET /repos/{owner}/{repo}/actions/caches", "GET /repos/{owner}/{repo}/actions/runners", "GET /repos/{owner}/{repo}/actions/runs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs", "GET /repos/{owner}/{repo}/actions/secrets", "GET /repos/{owner}/{repo}/actions/workflows", "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", "GET /repos/{owner}/{repo}/assignees", "GET /repos/{owner}/{repo}/branches", "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", "GET /repos/{owner}/{repo}/code-scanning/alerts", "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", "GET /repos/{owner}/{repo}/code-scanning/analyses", "GET /repos/{owner}/{repo}/codespaces", "GET /repos/{owner}/{repo}/codespaces/devcontainers", "GET /repos/{owner}/{repo}/codespaces/secrets", "GET /repos/{owner}/{repo}/collaborators", "GET /repos/{owner}/{repo}/comments", "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/commits", "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments", "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", "GET /repos/{owner}/{repo}/commits/{ref}/check-runs", "GET /repos/{owner}/{repo}/commits/{ref}/check-suites", "GET /repos/{owner}/{repo}/commits/{ref}/status", "GET /repos/{owner}/{repo}/commits/{ref}/statuses", "GET /repos/{owner}/{repo}/contributors", "GET /repos/{owner}/{repo}/dependabot/secrets", "GET /repos/{owner}/{repo}/deployments", "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", "GET /repos/{owner}/{repo}/environments", "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies", "GET /repos/{owner}/{repo}/events", "GET /repos/{owner}/{repo}/forks", "GET /repos/{owner}/{repo}/hooks", "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries", "GET /repos/{owner}/{repo}/invitations", "GET /repos/{owner}/{repo}/issues", "GET /repos/{owner}/{repo}/issues/comments", "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/issues/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/comments", "GET /repos/{owner}/{repo}/issues/{issue_number}/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/labels", "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions", "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline", "GET /repos/{owner}/{repo}/keys", "GET /repos/{owner}/{repo}/labels", "GET /repos/{owner}/{repo}/milestones", "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels", "GET /repos/{owner}/{repo}/notifications", "GET /repos/{owner}/{repo}/pages/builds", "GET /repos/{owner}/{repo}/projects", "GET /repos/{owner}/{repo}/pulls", "GET /repos/{owner}/{repo}/pulls/comments", "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments", "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits", "GET /repos/{owner}/{repo}/pulls/{pull_number}/files", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", "GET /repos/{owner}/{repo}/releases", "GET /repos/{owner}/{repo}/releases/{release_id}/assets", "GET /repos/{owner}/{repo}/releases/{release_id}/reactions", "GET /repos/{owner}/{repo}/secret-scanning/alerts", "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", "GET /repos/{owner}/{repo}/stargazers", "GET /repos/{owner}/{repo}/subscribers", "GET /repos/{owner}/{repo}/tags", "GET /repos/{owner}/{repo}/teams", "GET /repos/{owner}/{repo}/topics", "GET /repositories", "GET /repositories/{repository_id}/environments/{environment_name}/secrets", "GET /search/code", "GET /search/commits", "GET /search/issues", "GET /search/labels", "GET /search/repositories", "GET /search/topics", "GET /search/users", "GET /teams/{team_id}/discussions", "GET /teams/{team_id}/discussions/{discussion_number}/comments", "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /teams/{team_id}/discussions/{discussion_number}/reactions", "GET /teams/{team_id}/invitations", "GET /teams/{team_id}/members", "GET /teams/{team_id}/projects", "GET /teams/{team_id}/repos", "GET /teams/{team_id}/teams", "GET /user/blocks", "GET /user/codespaces", "GET /user/codespaces/secrets", "GET /user/emails", "GET /user/followers", "GET /user/following", "GET /user/gpg_keys", "GET /user/installations", "GET /user/installations/{installation_id}/repositories", "GET /user/issues", "GET /user/keys", "GET /user/marketplace_purchases", "GET /user/marketplace_purchases/stubbed", "GET /user/memberships/orgs", "GET /user/migrations", "GET /user/migrations/{migration_id}/repositories", "GET /user/orgs", "GET /user/packages", "GET /user/packages/{package_type}/{package_name}/versions", "GET /user/public_emails", "GET /user/repos", "GET /user/repository_invitations", "GET /user/ssh_signing_keys", "GET /user/starred", "GET /user/subscriptions", "GET /user/teams", "GET /users", "GET /users/{username}/events", "GET /users/{username}/events/orgs/{org}", "GET /users/{username}/events/public", "GET /users/{username}/followers", "GET /users/{username}/following", "GET /users/{username}/gists", "GET /users/{username}/gpg_keys", "GET /users/{username}/keys", "GET /users/{username}/orgs", "GET /users/{username}/packages", "GET /users/{username}/projects", "GET /users/{username}/received_events", "GET /users/{username}/received_events/public", "GET /users/{username}/repos", "GET /users/{username}/ssh_signing_keys", "GET /users/{username}/starred", "GET /users/{username}/subscriptions"]; +ECFieldElementFp.prototype.getR = function() +{ + if(this.r != undefined) return this.r; -function isPaginatingEndpoint(arg) { - if (typeof arg === "string") { - return paginatingEndpoints.includes(arg); - } else { - return false; - } + this.r = null; + var bitLength = this.q.bitLength(); + if (bitLength > 128) + { + var firstWord = this.q.shiftRight(bitLength - 64); + if (firstWord.intValue() == -1) + { + this.r = BigInteger.ONE.shiftLeft(bitLength).subtract(this.q); + } + } + return this.r; +} +ECFieldElementFp.prototype.modMult = function(x1,x2) +{ + return this.modReduce(x1.multiply(x2)); +} +ECFieldElementFp.prototype.modReduce = function(x) +{ + if (this.getR() != null) + { + var qLen = q.bitLength(); + while (x.bitLength() > (qLen + 1)) + { + var u = x.shiftRight(qLen); + var v = x.subtract(u.shiftLeft(qLen)); + if (!this.getR().equals(BigInteger.ONE)) + { + u = u.multiply(this.getR()); + } + x = u.add(v); + } + while (x.compareTo(q) >= 0) + { + x = x.subtract(q); + } + } + else + { + x = x.mod(q); + } + return x; } +ECFieldElementFp.prototype.sqrt = function() +{ + if (!this.q.testBit(0)) throw "unsupported"; -/** - * @param octokit Octokit instance - * @param options Options passed to Octokit constructor - */ + // p mod 4 == 3 + if (this.q.testBit(1)) + { + var z = new ECFieldElementFp(this.q,this.x.modPow(this.q.shiftRight(2).add(BigInteger.ONE),this.q)); + return z.square().equals(this) ? z : null; + } -function paginateRest(octokit) { - return { - paginate: Object.assign(paginate.bind(null, octokit), { - iterator: iterator.bind(null, octokit) - }) - }; + // p mod 4 == 1 + var qMinusOne = this.q.subtract(BigInteger.ONE); + + var legendreExponent = qMinusOne.shiftRight(1); + if (!(this.x.modPow(legendreExponent, this.q).equals(BigInteger.ONE))) + { + return null; + } + + var u = qMinusOne.shiftRight(2); + var k = u.shiftLeft(1).add(BigInteger.ONE); + + var Q = this.x; + var fourQ = modDouble(modDouble(Q)); + + var U, V; + do + { + var P; + do + { + P = new BigInteger(this.q.bitLength(), new SecureRandom()); + } + while (P.compareTo(this.q) >= 0 + || !(P.multiply(P).subtract(fourQ).modPow(legendreExponent, this.q).equals(qMinusOne))); + + var result = this.lucasSequence(P, Q, k); + U = result[0]; + V = result[1]; + + if (this.modMult(V, V).equals(fourQ)) + { + // Integer division by 2, mod q + if (V.testBit(0)) + { + V = V.add(q); + } + + V = V.shiftRight(1); + + return new ECFieldElementFp(q,V); + } + } + while (U.equals(BigInteger.ONE) || U.equals(qMinusOne)); + + return null; } -paginateRest.VERSION = VERSION; +ECFieldElementFp.prototype.lucasSequence = function(P,Q,k) +{ + var n = k.bitLength(); + var s = k.getLowestSetBit(); -exports.composePaginateRest = composePaginateRest; -exports.isPaginatingEndpoint = isPaginatingEndpoint; -exports.paginateRest = paginateRest; -exports.paginatingEndpoints = paginatingEndpoints; -//# sourceMappingURL=index.js.map + var Uh = BigInteger.ONE; + var Vl = BigInteger.TWO; + var Vh = P; + var Ql = BigInteger.ONE; + var Qh = BigInteger.ONE; + for (var j = n - 1; j >= s + 1; --j) + { + Ql = this.modMult(Ql, Qh); -/***/ }), + if (k.testBit(j)) + { + Qh = this.modMult(Ql, Q); + Uh = this.modMult(Uh, Vh); + Vl = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql))); + Vh = this.modReduce(Vh.multiply(Vh).subtract(Qh.shiftLeft(1))); + } + else + { + Qh = Ql; + Uh = this.modReduce(Uh.multiply(Vl).subtract(Ql)); + Vh = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql))); + Vl = this.modReduce(Vl.multiply(Vl).subtract(Ql.shiftLeft(1))); + } + } + + Ql = this.modMult(Ql, Qh); + Qh = this.modMult(Ql, Q); + Uh = this.modReduce(Uh.multiply(Vl).subtract(Ql)); + Vl = this.modReduce(Vh.multiply(Vl).subtract(P.multiply(Ql))); + Ql = this.modMult(Ql, Qh); + + for (var j = 1; j <= s; ++j) + { + Uh = this.modMult(Uh, Vl); + Vl = this.modReduce(Vl.multiply(Vl).subtract(Ql.shiftLeft(1))); + Ql = this.modMult(Ql, Ql); + } + + return [ Uh, Vl ]; +} + +var exports = { + ECCurveFp: ECCurveFp, + ECPointFp: ECPointFp, + ECFieldElementFp: ECFieldElementFp +} + +module.exports = exports -/***/ 3044: -/***/ ((__unused_webpack_module, exports) => { + +/***/ }), +/* 162 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", ({ value: true })); +__webpack_require__(493); -const Endpoints = { - actions: { - addCustomLabelsToSelfHostedRunnerForOrg: ["POST /orgs/{org}/actions/runners/{runner_id}/labels"], - addCustomLabelsToSelfHostedRunnerForRepo: ["POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"], - addSelectedRepoToOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"], - approveWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"], - cancelWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"], - createOrUpdateEnvironmentSecret: ["PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"], - createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"], - createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"], - createRegistrationTokenForOrg: ["POST /orgs/{org}/actions/runners/registration-token"], - createRegistrationTokenForRepo: ["POST /repos/{owner}/{repo}/actions/runners/registration-token"], - createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"], - createRemoveTokenForRepo: ["POST /repos/{owner}/{repo}/actions/runners/remove-token"], - createWorkflowDispatch: ["POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"], - deleteActionsCacheById: ["DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"], - deleteActionsCacheByKey: ["DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"], - deleteArtifact: ["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"], - deleteEnvironmentSecret: ["DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"], - deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"], - deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"], - deleteSelfHostedRunnerFromOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}"], - deleteSelfHostedRunnerFromRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"], - deleteWorkflowRun: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"], - deleteWorkflowRunLogs: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"], - disableSelectedRepositoryGithubActionsOrganization: ["DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"], - disableWorkflow: ["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"], - downloadArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"], - downloadJobLogsForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"], - downloadWorkflowRunAttemptLogs: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs"], - downloadWorkflowRunLogs: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"], - enableSelectedRepositoryGithubActionsOrganization: ["PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"], - enableWorkflow: ["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"], - getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"], - getActionsCacheUsage: ["GET /repos/{owner}/{repo}/actions/cache/usage"], - getActionsCacheUsageByRepoForOrg: ["GET /orgs/{org}/actions/cache/usage-by-repository"], - getActionsCacheUsageForEnterprise: ["GET /enterprises/{enterprise}/actions/cache/usage"], - getActionsCacheUsageForOrg: ["GET /orgs/{org}/actions/cache/usage"], - getAllowedActionsOrganization: ["GET /orgs/{org}/actions/permissions/selected-actions"], - getAllowedActionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions/selected-actions"], - getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"], - getEnvironmentPublicKey: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key"], - getEnvironmentSecret: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"], - getGithubActionsDefaultWorkflowPermissionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/workflow"], - getGithubActionsDefaultWorkflowPermissionsOrganization: ["GET /orgs/{org}/actions/permissions/workflow"], - getGithubActionsDefaultWorkflowPermissionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions/workflow"], - getGithubActionsPermissionsOrganization: ["GET /orgs/{org}/actions/permissions"], - getGithubActionsPermissionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions"], - getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"], - getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"], - getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"], - getPendingDeploymentsForRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"], - getRepoPermissions: ["GET /repos/{owner}/{repo}/actions/permissions", {}, { - renamed: ["actions", "getGithubActionsPermissionsRepository"] - }], - getRepoPublicKey: ["GET /repos/{owner}/{repo}/actions/secrets/public-key"], - getRepoSecret: ["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"], - getReviewsForRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"], - getSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}"], - getSelfHostedRunnerForRepo: ["GET /repos/{owner}/{repo}/actions/runners/{runner_id}"], - getWorkflow: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"], - getWorkflowAccessToRepository: ["GET /repos/{owner}/{repo}/actions/permissions/access"], - getWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}"], - getWorkflowRunAttempt: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}"], - getWorkflowRunUsage: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"], - getWorkflowUsage: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"], - listArtifactsForRepo: ["GET /repos/{owner}/{repo}/actions/artifacts"], - listEnvironmentSecrets: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets"], - listJobsForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"], - listJobsForWorkflowRunAttempt: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"], - listLabelsForSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}/labels"], - listLabelsForSelfHostedRunnerForRepo: ["GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"], - listOrgSecrets: ["GET /orgs/{org}/actions/secrets"], - listRepoSecrets: ["GET /repos/{owner}/{repo}/actions/secrets"], - listRepoWorkflows: ["GET /repos/{owner}/{repo}/actions/workflows"], - listRunnerApplicationsForOrg: ["GET /orgs/{org}/actions/runners/downloads"], - listRunnerApplicationsForRepo: ["GET /repos/{owner}/{repo}/actions/runners/downloads"], - listSelectedReposForOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"], - listSelectedRepositoriesEnabledGithubActionsOrganization: ["GET /orgs/{org}/actions/permissions/repositories"], - listSelfHostedRunnersForOrg: ["GET /orgs/{org}/actions/runners"], - listSelfHostedRunnersForRepo: ["GET /repos/{owner}/{repo}/actions/runners"], - listWorkflowRunArtifacts: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"], - listWorkflowRuns: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"], - listWorkflowRunsForRepo: ["GET /repos/{owner}/{repo}/actions/runs"], - reRunJobForWorkflowRun: ["POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"], - reRunWorkflow: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"], - reRunWorkflowFailedJobs: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs"], - removeAllCustomLabelsFromSelfHostedRunnerForOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}/labels"], - removeAllCustomLabelsFromSelfHostedRunnerForRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"], - removeCustomLabelFromSelfHostedRunnerForOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}"], - removeCustomLabelFromSelfHostedRunnerForRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"], - removeSelectedRepoFromOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"], - reviewPendingDeploymentsForRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"], - setAllowedActionsOrganization: ["PUT /orgs/{org}/actions/permissions/selected-actions"], - setAllowedActionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"], - setCustomLabelsForSelfHostedRunnerForOrg: ["PUT /orgs/{org}/actions/runners/{runner_id}/labels"], - setCustomLabelsForSelfHostedRunnerForRepo: ["PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"], - setGithubActionsDefaultWorkflowPermissionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/workflow"], - setGithubActionsDefaultWorkflowPermissionsOrganization: ["PUT /orgs/{org}/actions/permissions/workflow"], - setGithubActionsDefaultWorkflowPermissionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/workflow"], - setGithubActionsPermissionsOrganization: ["PUT /orgs/{org}/actions/permissions"], - setGithubActionsPermissionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions"], - setSelectedReposForOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"], - setSelectedRepositoriesEnabledGithubActionsOrganization: ["PUT /orgs/{org}/actions/permissions/repositories"], - setWorkflowAccessToRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/access"] - }, - activity: { - checkRepoIsStarredByAuthenticatedUser: ["GET /user/starred/{owner}/{repo}"], - deleteRepoSubscription: ["DELETE /repos/{owner}/{repo}/subscription"], - deleteThreadSubscription: ["DELETE /notifications/threads/{thread_id}/subscription"], - getFeeds: ["GET /feeds"], - getRepoSubscription: ["GET /repos/{owner}/{repo}/subscription"], - getThread: ["GET /notifications/threads/{thread_id}"], - getThreadSubscriptionForAuthenticatedUser: ["GET /notifications/threads/{thread_id}/subscription"], - listEventsForAuthenticatedUser: ["GET /users/{username}/events"], - listNotificationsForAuthenticatedUser: ["GET /notifications"], - listOrgEventsForAuthenticatedUser: ["GET /users/{username}/events/orgs/{org}"], - listPublicEvents: ["GET /events"], - listPublicEventsForRepoNetwork: ["GET /networks/{owner}/{repo}/events"], - listPublicEventsForUser: ["GET /users/{username}/events/public"], - listPublicOrgEvents: ["GET /orgs/{org}/events"], - listReceivedEventsForUser: ["GET /users/{username}/received_events"], - listReceivedPublicEventsForUser: ["GET /users/{username}/received_events/public"], - listRepoEvents: ["GET /repos/{owner}/{repo}/events"], - listRepoNotificationsForAuthenticatedUser: ["GET /repos/{owner}/{repo}/notifications"], - listReposStarredByAuthenticatedUser: ["GET /user/starred"], - listReposStarredByUser: ["GET /users/{username}/starred"], - listReposWatchedByUser: ["GET /users/{username}/subscriptions"], - listStargazersForRepo: ["GET /repos/{owner}/{repo}/stargazers"], - listWatchedReposForAuthenticatedUser: ["GET /user/subscriptions"], - listWatchersForRepo: ["GET /repos/{owner}/{repo}/subscribers"], - markNotificationsAsRead: ["PUT /notifications"], - markRepoNotificationsAsRead: ["PUT /repos/{owner}/{repo}/notifications"], - markThreadAsRead: ["PATCH /notifications/threads/{thread_id}"], - setRepoSubscription: ["PUT /repos/{owner}/{repo}/subscription"], - setThreadSubscription: ["PUT /notifications/threads/{thread_id}/subscription"], - starRepoForAuthenticatedUser: ["PUT /user/starred/{owner}/{repo}"], - unstarRepoForAuthenticatedUser: ["DELETE /user/starred/{owner}/{repo}"] - }, - apps: { - addRepoToInstallation: ["PUT /user/installations/{installation_id}/repositories/{repository_id}", {}, { - renamed: ["apps", "addRepoToInstallationForAuthenticatedUser"] - }], - addRepoToInstallationForAuthenticatedUser: ["PUT /user/installations/{installation_id}/repositories/{repository_id}"], - checkToken: ["POST /applications/{client_id}/token"], - createFromManifest: ["POST /app-manifests/{code}/conversions"], - createInstallationAccessToken: ["POST /app/installations/{installation_id}/access_tokens"], - deleteAuthorization: ["DELETE /applications/{client_id}/grant"], - deleteInstallation: ["DELETE /app/installations/{installation_id}"], - deleteToken: ["DELETE /applications/{client_id}/token"], - getAuthenticated: ["GET /app"], - getBySlug: ["GET /apps/{app_slug}"], - getInstallation: ["GET /app/installations/{installation_id}"], - getOrgInstallation: ["GET /orgs/{org}/installation"], - getRepoInstallation: ["GET /repos/{owner}/{repo}/installation"], - getSubscriptionPlanForAccount: ["GET /marketplace_listing/accounts/{account_id}"], - getSubscriptionPlanForAccountStubbed: ["GET /marketplace_listing/stubbed/accounts/{account_id}"], - getUserInstallation: ["GET /users/{username}/installation"], - getWebhookConfigForApp: ["GET /app/hook/config"], - getWebhookDelivery: ["GET /app/hook/deliveries/{delivery_id}"], - listAccountsForPlan: ["GET /marketplace_listing/plans/{plan_id}/accounts"], - listAccountsForPlanStubbed: ["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"], - listInstallationReposForAuthenticatedUser: ["GET /user/installations/{installation_id}/repositories"], - listInstallations: ["GET /app/installations"], - listInstallationsForAuthenticatedUser: ["GET /user/installations"], - listPlans: ["GET /marketplace_listing/plans"], - listPlansStubbed: ["GET /marketplace_listing/stubbed/plans"], - listReposAccessibleToInstallation: ["GET /installation/repositories"], - listSubscriptionsForAuthenticatedUser: ["GET /user/marketplace_purchases"], - listSubscriptionsForAuthenticatedUserStubbed: ["GET /user/marketplace_purchases/stubbed"], - listWebhookDeliveries: ["GET /app/hook/deliveries"], - redeliverWebhookDelivery: ["POST /app/hook/deliveries/{delivery_id}/attempts"], - removeRepoFromInstallation: ["DELETE /user/installations/{installation_id}/repositories/{repository_id}", {}, { - renamed: ["apps", "removeRepoFromInstallationForAuthenticatedUser"] - }], - removeRepoFromInstallationForAuthenticatedUser: ["DELETE /user/installations/{installation_id}/repositories/{repository_id}"], - resetToken: ["PATCH /applications/{client_id}/token"], - revokeInstallationAccessToken: ["DELETE /installation/token"], - scopeToken: ["POST /applications/{client_id}/token/scoped"], - suspendInstallation: ["PUT /app/installations/{installation_id}/suspended"], - unsuspendInstallation: ["DELETE /app/installations/{installation_id}/suspended"], - updateWebhookConfigForApp: ["PATCH /app/hook/config"] - }, - billing: { - getGithubActionsBillingOrg: ["GET /orgs/{org}/settings/billing/actions"], - getGithubActionsBillingUser: ["GET /users/{username}/settings/billing/actions"], - getGithubAdvancedSecurityBillingGhe: ["GET /enterprises/{enterprise}/settings/billing/advanced-security"], - getGithubAdvancedSecurityBillingOrg: ["GET /orgs/{org}/settings/billing/advanced-security"], - getGithubPackagesBillingOrg: ["GET /orgs/{org}/settings/billing/packages"], - getGithubPackagesBillingUser: ["GET /users/{username}/settings/billing/packages"], - getSharedStorageBillingOrg: ["GET /orgs/{org}/settings/billing/shared-storage"], - getSharedStorageBillingUser: ["GET /users/{username}/settings/billing/shared-storage"] - }, - checks: { - create: ["POST /repos/{owner}/{repo}/check-runs"], - createSuite: ["POST /repos/{owner}/{repo}/check-suites"], - get: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"], - getSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"], - listAnnotations: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"], - listForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"], - listForSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"], - listSuitesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"], - rerequestRun: ["POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"], - rerequestSuite: ["POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"], - setSuitesPreferences: ["PATCH /repos/{owner}/{repo}/check-suites/preferences"], - update: ["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"] - }, - codeScanning: { - deleteAnalysis: ["DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}"], - getAlert: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", {}, { - renamedParameters: { - alert_id: "alert_number" - } - }], - getAnalysis: ["GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"], - getSarif: ["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"], - listAlertInstances: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"], - listAlertsForEnterprise: ["GET /enterprises/{enterprise}/code-scanning/alerts"], - listAlertsForOrg: ["GET /orgs/{org}/code-scanning/alerts"], - listAlertsForRepo: ["GET /repos/{owner}/{repo}/code-scanning/alerts"], - listAlertsInstances: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", {}, { - renamed: ["codeScanning", "listAlertInstances"] - }], - listRecentAnalyses: ["GET /repos/{owner}/{repo}/code-scanning/analyses"], - updateAlert: ["PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"], - uploadSarif: ["POST /repos/{owner}/{repo}/code-scanning/sarifs"] - }, - codesOfConduct: { - getAllCodesOfConduct: ["GET /codes_of_conduct"], - getConductCode: ["GET /codes_of_conduct/{key}"] - }, - codespaces: { - addRepositoryForSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"], - codespaceMachinesForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}/machines"], - createForAuthenticatedUser: ["POST /user/codespaces"], - createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"], - createOrUpdateSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}"], - createWithPrForAuthenticatedUser: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"], - createWithRepoForAuthenticatedUser: ["POST /repos/{owner}/{repo}/codespaces"], - deleteForAuthenticatedUser: ["DELETE /user/codespaces/{codespace_name}"], - deleteFromOrganization: ["DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"], - deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"], - deleteSecretForAuthenticatedUser: ["DELETE /user/codespaces/secrets/{secret_name}"], - exportForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/exports"], - getExportDetailsForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}/exports/{export_id}"], - getForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}"], - getPublicKeyForAuthenticatedUser: ["GET /user/codespaces/secrets/public-key"], - getRepoPublicKey: ["GET /repos/{owner}/{repo}/codespaces/secrets/public-key"], - getRepoSecret: ["GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"], - getSecretForAuthenticatedUser: ["GET /user/codespaces/secrets/{secret_name}"], - listDevcontainersInRepositoryForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/devcontainers"], - listForAuthenticatedUser: ["GET /user/codespaces"], - listInOrganization: ["GET /orgs/{org}/codespaces", {}, { - renamedParameters: { - org_id: "org" - } - }], - listInRepositoryForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces"], - listRepoSecrets: ["GET /repos/{owner}/{repo}/codespaces/secrets"], - listRepositoriesForSecretForAuthenticatedUser: ["GET /user/codespaces/secrets/{secret_name}/repositories"], - listSecretsForAuthenticatedUser: ["GET /user/codespaces/secrets"], - preFlightWithRepoForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/new"], - removeRepositoryForSecretForAuthenticatedUser: ["DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"], - repoMachinesForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/machines"], - setRepositoriesForSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}/repositories"], - startForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/start"], - stopForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/stop"], - stopInOrganization: ["POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"], - updateForAuthenticatedUser: ["PATCH /user/codespaces/{codespace_name}"] - }, - dependabot: { - addSelectedRepoToOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"], - createOrUpdateOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}"], - createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"], - deleteOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"], - deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"], - getOrgPublicKey: ["GET /orgs/{org}/dependabot/secrets/public-key"], - getOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}"], - getRepoPublicKey: ["GET /repos/{owner}/{repo}/dependabot/secrets/public-key"], - getRepoSecret: ["GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"], - listOrgSecrets: ["GET /orgs/{org}/dependabot/secrets"], - listRepoSecrets: ["GET /repos/{owner}/{repo}/dependabot/secrets"], - listSelectedReposForOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"], - removeSelectedRepoFromOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"], - setSelectedReposForOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"] - }, - dependencyGraph: { - createRepositorySnapshot: ["POST /repos/{owner}/{repo}/dependency-graph/snapshots"], - diffRange: ["GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"] - }, - emojis: { - get: ["GET /emojis"] - }, - enterpriseAdmin: { - addCustomLabelsToSelfHostedRunnerForEnterprise: ["POST /enterprises/{enterprise}/actions/runners/{runner_id}/labels"], - disableSelectedOrganizationGithubActionsEnterprise: ["DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id}"], - enableSelectedOrganizationGithubActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id}"], - getAllowedActionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/selected-actions"], - getGithubActionsPermissionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions"], - getServerStatistics: ["GET /enterprise-installation/{enterprise_or_org}/server-statistics"], - listLabelsForSelfHostedRunnerForEnterprise: ["GET /enterprises/{enterprise}/actions/runners/{runner_id}/labels"], - listSelectedOrganizationsEnabledGithubActionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/organizations"], - removeAllCustomLabelsFromSelfHostedRunnerForEnterprise: ["DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels"], - removeCustomLabelFromSelfHostedRunnerForEnterprise: ["DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels/{name}"], - setAllowedActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/selected-actions"], - setCustomLabelsForSelfHostedRunnerForEnterprise: ["PUT /enterprises/{enterprise}/actions/runners/{runner_id}/labels"], - setGithubActionsPermissionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions"], - setSelectedOrganizationsEnabledGithubActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/organizations"] - }, - gists: { - checkIsStarred: ["GET /gists/{gist_id}/star"], - create: ["POST /gists"], - createComment: ["POST /gists/{gist_id}/comments"], - delete: ["DELETE /gists/{gist_id}"], - deleteComment: ["DELETE /gists/{gist_id}/comments/{comment_id}"], - fork: ["POST /gists/{gist_id}/forks"], - get: ["GET /gists/{gist_id}"], - getComment: ["GET /gists/{gist_id}/comments/{comment_id}"], - getRevision: ["GET /gists/{gist_id}/{sha}"], - list: ["GET /gists"], - listComments: ["GET /gists/{gist_id}/comments"], - listCommits: ["GET /gists/{gist_id}/commits"], - listForUser: ["GET /users/{username}/gists"], - listForks: ["GET /gists/{gist_id}/forks"], - listPublic: ["GET /gists/public"], - listStarred: ["GET /gists/starred"], - star: ["PUT /gists/{gist_id}/star"], - unstar: ["DELETE /gists/{gist_id}/star"], - update: ["PATCH /gists/{gist_id}"], - updateComment: ["PATCH /gists/{gist_id}/comments/{comment_id}"] - }, - git: { - createBlob: ["POST /repos/{owner}/{repo}/git/blobs"], - createCommit: ["POST /repos/{owner}/{repo}/git/commits"], - createRef: ["POST /repos/{owner}/{repo}/git/refs"], - createTag: ["POST /repos/{owner}/{repo}/git/tags"], - createTree: ["POST /repos/{owner}/{repo}/git/trees"], - deleteRef: ["DELETE /repos/{owner}/{repo}/git/refs/{ref}"], - getBlob: ["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"], - getCommit: ["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"], - getRef: ["GET /repos/{owner}/{repo}/git/ref/{ref}"], - getTag: ["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"], - getTree: ["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"], - listMatchingRefs: ["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"], - updateRef: ["PATCH /repos/{owner}/{repo}/git/refs/{ref}"] - }, - gitignore: { - getAllTemplates: ["GET /gitignore/templates"], - getTemplate: ["GET /gitignore/templates/{name}"] - }, - interactions: { - getRestrictionsForAuthenticatedUser: ["GET /user/interaction-limits"], - getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"], - getRestrictionsForRepo: ["GET /repos/{owner}/{repo}/interaction-limits"], - getRestrictionsForYourPublicRepos: ["GET /user/interaction-limits", {}, { - renamed: ["interactions", "getRestrictionsForAuthenticatedUser"] - }], - removeRestrictionsForAuthenticatedUser: ["DELETE /user/interaction-limits"], - removeRestrictionsForOrg: ["DELETE /orgs/{org}/interaction-limits"], - removeRestrictionsForRepo: ["DELETE /repos/{owner}/{repo}/interaction-limits"], - removeRestrictionsForYourPublicRepos: ["DELETE /user/interaction-limits", {}, { - renamed: ["interactions", "removeRestrictionsForAuthenticatedUser"] - }], - setRestrictionsForAuthenticatedUser: ["PUT /user/interaction-limits"], - setRestrictionsForOrg: ["PUT /orgs/{org}/interaction-limits"], - setRestrictionsForRepo: ["PUT /repos/{owner}/{repo}/interaction-limits"], - setRestrictionsForYourPublicRepos: ["PUT /user/interaction-limits", {}, { - renamed: ["interactions", "setRestrictionsForAuthenticatedUser"] - }] - }, - issues: { - addAssignees: ["POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"], - addLabels: ["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"], - checkUserCanBeAssigned: ["GET /repos/{owner}/{repo}/assignees/{assignee}"], - create: ["POST /repos/{owner}/{repo}/issues"], - createComment: ["POST /repos/{owner}/{repo}/issues/{issue_number}/comments"], - createLabel: ["POST /repos/{owner}/{repo}/labels"], - createMilestone: ["POST /repos/{owner}/{repo}/milestones"], - deleteComment: ["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"], - deleteLabel: ["DELETE /repos/{owner}/{repo}/labels/{name}"], - deleteMilestone: ["DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"], - get: ["GET /repos/{owner}/{repo}/issues/{issue_number}"], - getComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"], - getEvent: ["GET /repos/{owner}/{repo}/issues/events/{event_id}"], - getLabel: ["GET /repos/{owner}/{repo}/labels/{name}"], - getMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}"], - list: ["GET /issues"], - listAssignees: ["GET /repos/{owner}/{repo}/assignees"], - listComments: ["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"], - listCommentsForRepo: ["GET /repos/{owner}/{repo}/issues/comments"], - listEvents: ["GET /repos/{owner}/{repo}/issues/{issue_number}/events"], - listEventsForRepo: ["GET /repos/{owner}/{repo}/issues/events"], - listEventsForTimeline: ["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"], - listForAuthenticatedUser: ["GET /user/issues"], - listForOrg: ["GET /orgs/{org}/issues"], - listForRepo: ["GET /repos/{owner}/{repo}/issues"], - listLabelsForMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"], - listLabelsForRepo: ["GET /repos/{owner}/{repo}/labels"], - listLabelsOnIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"], - listMilestones: ["GET /repos/{owner}/{repo}/milestones"], - lock: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"], - removeAllLabels: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"], - removeAssignees: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"], - removeLabel: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"], - setLabels: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"], - unlock: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"], - update: ["PATCH /repos/{owner}/{repo}/issues/{issue_number}"], - updateComment: ["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"], - updateLabel: ["PATCH /repos/{owner}/{repo}/labels/{name}"], - updateMilestone: ["PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"] - }, - licenses: { - get: ["GET /licenses/{license}"], - getAllCommonlyUsed: ["GET /licenses"], - getForRepo: ["GET /repos/{owner}/{repo}/license"] - }, - markdown: { - render: ["POST /markdown"], - renderRaw: ["POST /markdown/raw", { - headers: { - "content-type": "text/plain; charset=utf-8" - } - }] - }, - meta: { - get: ["GET /meta"], - getOctocat: ["GET /octocat"], - getZen: ["GET /zen"], - root: ["GET /"] - }, - migrations: { - cancelImport: ["DELETE /repos/{owner}/{repo}/import"], - deleteArchiveForAuthenticatedUser: ["DELETE /user/migrations/{migration_id}/archive"], - deleteArchiveForOrg: ["DELETE /orgs/{org}/migrations/{migration_id}/archive"], - downloadArchiveForOrg: ["GET /orgs/{org}/migrations/{migration_id}/archive"], - getArchiveForAuthenticatedUser: ["GET /user/migrations/{migration_id}/archive"], - getCommitAuthors: ["GET /repos/{owner}/{repo}/import/authors"], - getImportStatus: ["GET /repos/{owner}/{repo}/import"], - getLargeFiles: ["GET /repos/{owner}/{repo}/import/large_files"], - getStatusForAuthenticatedUser: ["GET /user/migrations/{migration_id}"], - getStatusForOrg: ["GET /orgs/{org}/migrations/{migration_id}"], - listForAuthenticatedUser: ["GET /user/migrations"], - listForOrg: ["GET /orgs/{org}/migrations"], - listReposForAuthenticatedUser: ["GET /user/migrations/{migration_id}/repositories"], - listReposForOrg: ["GET /orgs/{org}/migrations/{migration_id}/repositories"], - listReposForUser: ["GET /user/migrations/{migration_id}/repositories", {}, { - renamed: ["migrations", "listReposForAuthenticatedUser"] - }], - mapCommitAuthor: ["PATCH /repos/{owner}/{repo}/import/authors/{author_id}"], - setLfsPreference: ["PATCH /repos/{owner}/{repo}/import/lfs"], - startForAuthenticatedUser: ["POST /user/migrations"], - startForOrg: ["POST /orgs/{org}/migrations"], - startImport: ["PUT /repos/{owner}/{repo}/import"], - unlockRepoForAuthenticatedUser: ["DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"], - unlockRepoForOrg: ["DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"], - updateImport: ["PATCH /repos/{owner}/{repo}/import"] - }, - orgs: { - addSecurityManagerTeam: ["PUT /orgs/{org}/security-managers/teams/{team_slug}"], - blockUser: ["PUT /orgs/{org}/blocks/{username}"], - cancelInvitation: ["DELETE /orgs/{org}/invitations/{invitation_id}"], - checkBlockedUser: ["GET /orgs/{org}/blocks/{username}"], - checkMembershipForUser: ["GET /orgs/{org}/members/{username}"], - checkPublicMembershipForUser: ["GET /orgs/{org}/public_members/{username}"], - convertMemberToOutsideCollaborator: ["PUT /orgs/{org}/outside_collaborators/{username}"], - createCustomRole: ["POST /orgs/{org}/custom_roles"], - createInvitation: ["POST /orgs/{org}/invitations"], - createWebhook: ["POST /orgs/{org}/hooks"], - deleteCustomRole: ["DELETE /orgs/{org}/custom_roles/{role_id}"], - deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"], - enableOrDisableSecurityProductOnAllOrgRepos: ["POST /orgs/{org}/{security_product}/{enablement}"], - get: ["GET /orgs/{org}"], - getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"], - getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"], - getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"], - getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"], - getWebhookDelivery: ["GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"], - list: ["GET /organizations"], - listAppInstallations: ["GET /orgs/{org}/installations"], - listBlockedUsers: ["GET /orgs/{org}/blocks"], - listCustomRoles: ["GET /organizations/{organization_id}/custom_roles"], - listFailedInvitations: ["GET /orgs/{org}/failed_invitations"], - listFineGrainedPermissions: ["GET /orgs/{org}/fine_grained_permissions"], - listForAuthenticatedUser: ["GET /user/orgs"], - listForUser: ["GET /users/{username}/orgs"], - listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"], - listMembers: ["GET /orgs/{org}/members"], - listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"], - listOutsideCollaborators: ["GET /orgs/{org}/outside_collaborators"], - listPendingInvitations: ["GET /orgs/{org}/invitations"], - listPublicMembers: ["GET /orgs/{org}/public_members"], - listSecurityManagerTeams: ["GET /orgs/{org}/security-managers"], - listWebhookDeliveries: ["GET /orgs/{org}/hooks/{hook_id}/deliveries"], - listWebhooks: ["GET /orgs/{org}/hooks"], - pingWebhook: ["POST /orgs/{org}/hooks/{hook_id}/pings"], - redeliverWebhookDelivery: ["POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"], - removeMember: ["DELETE /orgs/{org}/members/{username}"], - removeMembershipForUser: ["DELETE /orgs/{org}/memberships/{username}"], - removeOutsideCollaborator: ["DELETE /orgs/{org}/outside_collaborators/{username}"], - removePublicMembershipForAuthenticatedUser: ["DELETE /orgs/{org}/public_members/{username}"], - removeSecurityManagerTeam: ["DELETE /orgs/{org}/security-managers/teams/{team_slug}"], - setMembershipForUser: ["PUT /orgs/{org}/memberships/{username}"], - setPublicMembershipForAuthenticatedUser: ["PUT /orgs/{org}/public_members/{username}"], - unblockUser: ["DELETE /orgs/{org}/blocks/{username}"], - update: ["PATCH /orgs/{org}"], - updateCustomRole: ["PATCH /orgs/{org}/custom_roles/{role_id}"], - updateMembershipForAuthenticatedUser: ["PATCH /user/memberships/orgs/{org}"], - updateWebhook: ["PATCH /orgs/{org}/hooks/{hook_id}"], - updateWebhookConfigForOrg: ["PATCH /orgs/{org}/hooks/{hook_id}/config"] - }, - packages: { - deletePackageForAuthenticatedUser: ["DELETE /user/packages/{package_type}/{package_name}"], - deletePackageForOrg: ["DELETE /orgs/{org}/packages/{package_type}/{package_name}"], - deletePackageForUser: ["DELETE /users/{username}/packages/{package_type}/{package_name}"], - deletePackageVersionForAuthenticatedUser: ["DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}"], - deletePackageVersionForOrg: ["DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"], - deletePackageVersionForUser: ["DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"], - getAllPackageVersionsForAPackageOwnedByAnOrg: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions", {}, { - renamed: ["packages", "getAllPackageVersionsForPackageOwnedByOrg"] - }], - getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions", {}, { - renamed: ["packages", "getAllPackageVersionsForPackageOwnedByAuthenticatedUser"] - }], - getAllPackageVersionsForPackageOwnedByAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions"], - getAllPackageVersionsForPackageOwnedByOrg: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"], - getAllPackageVersionsForPackageOwnedByUser: ["GET /users/{username}/packages/{package_type}/{package_name}/versions"], - getPackageForAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}"], - getPackageForOrganization: ["GET /orgs/{org}/packages/{package_type}/{package_name}"], - getPackageForUser: ["GET /users/{username}/packages/{package_type}/{package_name}"], - getPackageVersionForAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}"], - getPackageVersionForOrganization: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"], - getPackageVersionForUser: ["GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"], - listPackagesForAuthenticatedUser: ["GET /user/packages"], - listPackagesForOrganization: ["GET /orgs/{org}/packages"], - listPackagesForUser: ["GET /users/{username}/packages"], - restorePackageForAuthenticatedUser: ["POST /user/packages/{package_type}/{package_name}/restore{?token}"], - restorePackageForOrg: ["POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}"], - restorePackageForUser: ["POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}"], - restorePackageVersionForAuthenticatedUser: ["POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"], - restorePackageVersionForOrg: ["POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"], - restorePackageVersionForUser: ["POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"] - }, - projects: { - addCollaborator: ["PUT /projects/{project_id}/collaborators/{username}"], - createCard: ["POST /projects/columns/{column_id}/cards"], - createColumn: ["POST /projects/{project_id}/columns"], - createForAuthenticatedUser: ["POST /user/projects"], - createForOrg: ["POST /orgs/{org}/projects"], - createForRepo: ["POST /repos/{owner}/{repo}/projects"], - delete: ["DELETE /projects/{project_id}"], - deleteCard: ["DELETE /projects/columns/cards/{card_id}"], - deleteColumn: ["DELETE /projects/columns/{column_id}"], - get: ["GET /projects/{project_id}"], - getCard: ["GET /projects/columns/cards/{card_id}"], - getColumn: ["GET /projects/columns/{column_id}"], - getPermissionForUser: ["GET /projects/{project_id}/collaborators/{username}/permission"], - listCards: ["GET /projects/columns/{column_id}/cards"], - listCollaborators: ["GET /projects/{project_id}/collaborators"], - listColumns: ["GET /projects/{project_id}/columns"], - listForOrg: ["GET /orgs/{org}/projects"], - listForRepo: ["GET /repos/{owner}/{repo}/projects"], - listForUser: ["GET /users/{username}/projects"], - moveCard: ["POST /projects/columns/cards/{card_id}/moves"], - moveColumn: ["POST /projects/columns/{column_id}/moves"], - removeCollaborator: ["DELETE /projects/{project_id}/collaborators/{username}"], - update: ["PATCH /projects/{project_id}"], - updateCard: ["PATCH /projects/columns/cards/{card_id}"], - updateColumn: ["PATCH /projects/columns/{column_id}"] - }, - pulls: { - checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"], - create: ["POST /repos/{owner}/{repo}/pulls"], - createReplyForReviewComment: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"], - createReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], - createReviewComment: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"], - deletePendingReview: ["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"], - deleteReviewComment: ["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"], - dismissReview: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"], - get: ["GET /repos/{owner}/{repo}/pulls/{pull_number}"], - getReview: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"], - getReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"], - list: ["GET /repos/{owner}/{repo}/pulls"], - listCommentsForReview: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"], - listCommits: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"], - listFiles: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"], - listRequestedReviewers: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"], - listReviewComments: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"], - listReviewCommentsForRepo: ["GET /repos/{owner}/{repo}/pulls/comments"], - listReviews: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], - merge: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"], - removeRequestedReviewers: ["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"], - requestReviewers: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"], - submitReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"], - update: ["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"], - updateBranch: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"], - updateReview: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"], - updateReviewComment: ["PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"] - }, - rateLimit: { - get: ["GET /rate_limit"] - }, - reactions: { - createForCommitComment: ["POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"], - createForIssue: ["POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"], - createForIssueComment: ["POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"], - createForPullRequestReviewComment: ["POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"], - createForRelease: ["POST /repos/{owner}/{repo}/releases/{release_id}/reactions"], - createForTeamDiscussionCommentInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"], - createForTeamDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"], - deleteForCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"], - deleteForIssue: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"], - deleteForIssueComment: ["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"], - deleteForPullRequestComment: ["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"], - deleteForRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}"], - deleteForTeamDiscussion: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"], - deleteForTeamDiscussionComment: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"], - listForCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"], - listForIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"], - listForIssueComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"], - listForPullRequestReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"], - listForRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"], - listForTeamDiscussionCommentInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"], - listForTeamDiscussionInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"] - }, - repos: { - acceptInvitation: ["PATCH /user/repository_invitations/{invitation_id}", {}, { - renamed: ["repos", "acceptInvitationForAuthenticatedUser"] - }], - acceptInvitationForAuthenticatedUser: ["PATCH /user/repository_invitations/{invitation_id}"], - addAppAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, { - mapToData: "apps" - }], - addCollaborator: ["PUT /repos/{owner}/{repo}/collaborators/{username}"], - addStatusCheckContexts: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, { - mapToData: "contexts" - }], - addTeamAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, { - mapToData: "teams" - }], - addUserAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, { - mapToData: "users" - }], - checkCollaborator: ["GET /repos/{owner}/{repo}/collaborators/{username}"], - checkVulnerabilityAlerts: ["GET /repos/{owner}/{repo}/vulnerability-alerts"], - codeownersErrors: ["GET /repos/{owner}/{repo}/codeowners/errors"], - compareCommits: ["GET /repos/{owner}/{repo}/compare/{base}...{head}"], - compareCommitsWithBasehead: ["GET /repos/{owner}/{repo}/compare/{basehead}"], - createAutolink: ["POST /repos/{owner}/{repo}/autolinks"], - createCommitComment: ["POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"], - createCommitSignatureProtection: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"], - createCommitStatus: ["POST /repos/{owner}/{repo}/statuses/{sha}"], - createDeployKey: ["POST /repos/{owner}/{repo}/keys"], - createDeployment: ["POST /repos/{owner}/{repo}/deployments"], - createDeploymentBranchPolicy: ["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"], - createDeploymentStatus: ["POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"], - createDispatchEvent: ["POST /repos/{owner}/{repo}/dispatches"], - createForAuthenticatedUser: ["POST /user/repos"], - createFork: ["POST /repos/{owner}/{repo}/forks"], - createInOrg: ["POST /orgs/{org}/repos"], - createOrUpdateEnvironment: ["PUT /repos/{owner}/{repo}/environments/{environment_name}"], - createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"], - createPagesDeployment: ["POST /repos/{owner}/{repo}/pages/deployment"], - createPagesSite: ["POST /repos/{owner}/{repo}/pages"], - createRelease: ["POST /repos/{owner}/{repo}/releases"], - createTagProtection: ["POST /repos/{owner}/{repo}/tags/protection"], - createUsingTemplate: ["POST /repos/{template_owner}/{template_repo}/generate"], - createWebhook: ["POST /repos/{owner}/{repo}/hooks"], - declineInvitation: ["DELETE /user/repository_invitations/{invitation_id}", {}, { - renamed: ["repos", "declineInvitationForAuthenticatedUser"] - }], - declineInvitationForAuthenticatedUser: ["DELETE /user/repository_invitations/{invitation_id}"], - delete: ["DELETE /repos/{owner}/{repo}"], - deleteAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"], - deleteAdminBranchProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"], - deleteAnEnvironment: ["DELETE /repos/{owner}/{repo}/environments/{environment_name}"], - deleteAutolink: ["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"], - deleteBranchProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection"], - deleteCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}"], - deleteCommitSignatureProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"], - deleteDeployKey: ["DELETE /repos/{owner}/{repo}/keys/{key_id}"], - deleteDeployment: ["DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"], - deleteDeploymentBranchPolicy: ["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"], - deleteFile: ["DELETE /repos/{owner}/{repo}/contents/{path}"], - deleteInvitation: ["DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"], - deletePagesSite: ["DELETE /repos/{owner}/{repo}/pages"], - deletePullRequestReviewProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"], - deleteRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}"], - deleteReleaseAsset: ["DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"], - deleteTagProtection: ["DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}"], - deleteWebhook: ["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"], - disableAutomatedSecurityFixes: ["DELETE /repos/{owner}/{repo}/automated-security-fixes"], - disableLfsForRepo: ["DELETE /repos/{owner}/{repo}/lfs"], - disableVulnerabilityAlerts: ["DELETE /repos/{owner}/{repo}/vulnerability-alerts"], - downloadArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}", {}, { - renamed: ["repos", "downloadZipballArchive"] - }], - downloadTarballArchive: ["GET /repos/{owner}/{repo}/tarball/{ref}"], - downloadZipballArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}"], - enableAutomatedSecurityFixes: ["PUT /repos/{owner}/{repo}/automated-security-fixes"], - enableLfsForRepo: ["PUT /repos/{owner}/{repo}/lfs"], - enableVulnerabilityAlerts: ["PUT /repos/{owner}/{repo}/vulnerability-alerts"], - generateReleaseNotes: ["POST /repos/{owner}/{repo}/releases/generate-notes"], - get: ["GET /repos/{owner}/{repo}"], - getAccessRestrictions: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"], - getAdminBranchProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"], - getAllEnvironments: ["GET /repos/{owner}/{repo}/environments"], - getAllStatusCheckContexts: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"], - getAllTopics: ["GET /repos/{owner}/{repo}/topics"], - getAppsWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"], - getAutolink: ["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"], - getBranch: ["GET /repos/{owner}/{repo}/branches/{branch}"], - getBranchProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection"], - getClones: ["GET /repos/{owner}/{repo}/traffic/clones"], - getCodeFrequencyStats: ["GET /repos/{owner}/{repo}/stats/code_frequency"], - getCollaboratorPermissionLevel: ["GET /repos/{owner}/{repo}/collaborators/{username}/permission"], - getCombinedStatusForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/status"], - getCommit: ["GET /repos/{owner}/{repo}/commits/{ref}"], - getCommitActivityStats: ["GET /repos/{owner}/{repo}/stats/commit_activity"], - getCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}"], - getCommitSignatureProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"], - getCommunityProfileMetrics: ["GET /repos/{owner}/{repo}/community/profile"], - getContent: ["GET /repos/{owner}/{repo}/contents/{path}"], - getContributorsStats: ["GET /repos/{owner}/{repo}/stats/contributors"], - getDeployKey: ["GET /repos/{owner}/{repo}/keys/{key_id}"], - getDeployment: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}"], - getDeploymentBranchPolicy: ["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"], - getDeploymentStatus: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"], - getEnvironment: ["GET /repos/{owner}/{repo}/environments/{environment_name}"], - getLatestPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/latest"], - getLatestRelease: ["GET /repos/{owner}/{repo}/releases/latest"], - getPages: ["GET /repos/{owner}/{repo}/pages"], - getPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/{build_id}"], - getPagesHealthCheck: ["GET /repos/{owner}/{repo}/pages/health"], - getParticipationStats: ["GET /repos/{owner}/{repo}/stats/participation"], - getPullRequestReviewProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"], - getPunchCardStats: ["GET /repos/{owner}/{repo}/stats/punch_card"], - getReadme: ["GET /repos/{owner}/{repo}/readme"], - getReadmeInDirectory: ["GET /repos/{owner}/{repo}/readme/{dir}"], - getRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}"], - getReleaseAsset: ["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"], - getReleaseByTag: ["GET /repos/{owner}/{repo}/releases/tags/{tag}"], - getStatusChecksProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"], - getTeamsWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"], - getTopPaths: ["GET /repos/{owner}/{repo}/traffic/popular/paths"], - getTopReferrers: ["GET /repos/{owner}/{repo}/traffic/popular/referrers"], - getUsersWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"], - getViews: ["GET /repos/{owner}/{repo}/traffic/views"], - getWebhook: ["GET /repos/{owner}/{repo}/hooks/{hook_id}"], - getWebhookConfigForRepo: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/config"], - getWebhookDelivery: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}"], - listAutolinks: ["GET /repos/{owner}/{repo}/autolinks"], - listBranches: ["GET /repos/{owner}/{repo}/branches"], - listBranchesForHeadCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"], - listCollaborators: ["GET /repos/{owner}/{repo}/collaborators"], - listCommentsForCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"], - listCommitCommentsForRepo: ["GET /repos/{owner}/{repo}/comments"], - listCommitStatusesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/statuses"], - listCommits: ["GET /repos/{owner}/{repo}/commits"], - listContributors: ["GET /repos/{owner}/{repo}/contributors"], - listDeployKeys: ["GET /repos/{owner}/{repo}/keys"], - listDeploymentBranchPolicies: ["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"], - listDeploymentStatuses: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"], - listDeployments: ["GET /repos/{owner}/{repo}/deployments"], - listForAuthenticatedUser: ["GET /user/repos"], - listForOrg: ["GET /orgs/{org}/repos"], - listForUser: ["GET /users/{username}/repos"], - listForks: ["GET /repos/{owner}/{repo}/forks"], - listInvitations: ["GET /repos/{owner}/{repo}/invitations"], - listInvitationsForAuthenticatedUser: ["GET /user/repository_invitations"], - listLanguages: ["GET /repos/{owner}/{repo}/languages"], - listPagesBuilds: ["GET /repos/{owner}/{repo}/pages/builds"], - listPublic: ["GET /repositories"], - listPullRequestsAssociatedWithCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"], - listReleaseAssets: ["GET /repos/{owner}/{repo}/releases/{release_id}/assets"], - listReleases: ["GET /repos/{owner}/{repo}/releases"], - listTagProtection: ["GET /repos/{owner}/{repo}/tags/protection"], - listTags: ["GET /repos/{owner}/{repo}/tags"], - listTeams: ["GET /repos/{owner}/{repo}/teams"], - listWebhookDeliveries: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"], - listWebhooks: ["GET /repos/{owner}/{repo}/hooks"], - merge: ["POST /repos/{owner}/{repo}/merges"], - mergeUpstream: ["POST /repos/{owner}/{repo}/merge-upstream"], - pingWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"], - redeliverWebhookDelivery: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"], - removeAppAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, { - mapToData: "apps" - }], - removeCollaborator: ["DELETE /repos/{owner}/{repo}/collaborators/{username}"], - removeStatusCheckContexts: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, { - mapToData: "contexts" - }], - removeStatusCheckProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"], - removeTeamAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, { - mapToData: "teams" - }], - removeUserAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, { - mapToData: "users" - }], - renameBranch: ["POST /repos/{owner}/{repo}/branches/{branch}/rename"], - replaceAllTopics: ["PUT /repos/{owner}/{repo}/topics"], - requestPagesBuild: ["POST /repos/{owner}/{repo}/pages/builds"], - setAdminBranchProtection: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"], - setAppAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, { - mapToData: "apps" - }], - setStatusCheckContexts: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, { - mapToData: "contexts" - }], - setTeamAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, { - mapToData: "teams" - }], - setUserAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, { - mapToData: "users" - }], - testPushWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"], - transfer: ["POST /repos/{owner}/{repo}/transfer"], - update: ["PATCH /repos/{owner}/{repo}"], - updateBranchProtection: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection"], - updateCommitComment: ["PATCH /repos/{owner}/{repo}/comments/{comment_id}"], - updateDeploymentBranchPolicy: ["PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"], - updateInformationAboutPagesSite: ["PUT /repos/{owner}/{repo}/pages"], - updateInvitation: ["PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"], - updatePullRequestReviewProtection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"], - updateRelease: ["PATCH /repos/{owner}/{repo}/releases/{release_id}"], - updateReleaseAsset: ["PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"], - updateStatusCheckPotection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", {}, { - renamed: ["repos", "updateStatusCheckProtection"] - }], - updateStatusCheckProtection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"], - updateWebhook: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"], - updateWebhookConfigForRepo: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"], - uploadReleaseAsset: ["POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}", { - baseUrl: "https://uploads.github.com" - }] - }, - search: { - code: ["GET /search/code"], - commits: ["GET /search/commits"], - issuesAndPullRequests: ["GET /search/issues"], - labels: ["GET /search/labels"], - repos: ["GET /search/repositories"], - topics: ["GET /search/topics"], - users: ["GET /search/users"] - }, - secretScanning: { - getAlert: ["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"], - listAlertsForEnterprise: ["GET /enterprises/{enterprise}/secret-scanning/alerts"], - listAlertsForOrg: ["GET /orgs/{org}/secret-scanning/alerts"], - listAlertsForRepo: ["GET /repos/{owner}/{repo}/secret-scanning/alerts"], - listLocationsForAlert: ["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"], - updateAlert: ["PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"] - }, - teams: { - addOrUpdateMembershipForUserInOrg: ["PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"], - addOrUpdateProjectPermissionsInOrg: ["PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}"], - addOrUpdateRepoPermissionsInOrg: ["PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"], - checkPermissionsForProjectInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects/{project_id}"], - checkPermissionsForRepoInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"], - create: ["POST /orgs/{org}/teams"], - createDiscussionCommentInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"], - createDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions"], - deleteDiscussionCommentInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"], - deleteDiscussionInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"], - deleteInOrg: ["DELETE /orgs/{org}/teams/{team_slug}"], - getByName: ["GET /orgs/{org}/teams/{team_slug}"], - getDiscussionCommentInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"], - getDiscussionInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"], - getMembershipForUserInOrg: ["GET /orgs/{org}/teams/{team_slug}/memberships/{username}"], - list: ["GET /orgs/{org}/teams"], - listChildInOrg: ["GET /orgs/{org}/teams/{team_slug}/teams"], - listDiscussionCommentsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"], - listDiscussionsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions"], - listForAuthenticatedUser: ["GET /user/teams"], - listMembersInOrg: ["GET /orgs/{org}/teams/{team_slug}/members"], - listPendingInvitationsInOrg: ["GET /orgs/{org}/teams/{team_slug}/invitations"], - listProjectsInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects"], - listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"], - removeMembershipForUserInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"], - removeProjectInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}"], - removeRepoInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"], - updateDiscussionCommentInOrg: ["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"], - updateDiscussionInOrg: ["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"], - updateInOrg: ["PATCH /orgs/{org}/teams/{team_slug}"] - }, - users: { - addEmailForAuthenticated: ["POST /user/emails", {}, { - renamed: ["users", "addEmailForAuthenticatedUser"] - }], - addEmailForAuthenticatedUser: ["POST /user/emails"], - block: ["PUT /user/blocks/{username}"], - checkBlocked: ["GET /user/blocks/{username}"], - checkFollowingForUser: ["GET /users/{username}/following/{target_user}"], - checkPersonIsFollowedByAuthenticated: ["GET /user/following/{username}"], - createGpgKeyForAuthenticated: ["POST /user/gpg_keys", {}, { - renamed: ["users", "createGpgKeyForAuthenticatedUser"] - }], - createGpgKeyForAuthenticatedUser: ["POST /user/gpg_keys"], - createPublicSshKeyForAuthenticated: ["POST /user/keys", {}, { - renamed: ["users", "createPublicSshKeyForAuthenticatedUser"] - }], - createPublicSshKeyForAuthenticatedUser: ["POST /user/keys"], - createSshSigningKeyForAuthenticatedUser: ["POST /user/ssh_signing_keys"], - deleteEmailForAuthenticated: ["DELETE /user/emails", {}, { - renamed: ["users", "deleteEmailForAuthenticatedUser"] - }], - deleteEmailForAuthenticatedUser: ["DELETE /user/emails"], - deleteGpgKeyForAuthenticated: ["DELETE /user/gpg_keys/{gpg_key_id}", {}, { - renamed: ["users", "deleteGpgKeyForAuthenticatedUser"] - }], - deleteGpgKeyForAuthenticatedUser: ["DELETE /user/gpg_keys/{gpg_key_id}"], - deletePublicSshKeyForAuthenticated: ["DELETE /user/keys/{key_id}", {}, { - renamed: ["users", "deletePublicSshKeyForAuthenticatedUser"] - }], - deletePublicSshKeyForAuthenticatedUser: ["DELETE /user/keys/{key_id}"], - deleteSshSigningKeyForAuthenticatedUser: ["DELETE /user/ssh_signing_keys/{ssh_signing_key_id}"], - follow: ["PUT /user/following/{username}"], - getAuthenticated: ["GET /user"], - getByUsername: ["GET /users/{username}"], - getContextForUser: ["GET /users/{username}/hovercard"], - getGpgKeyForAuthenticated: ["GET /user/gpg_keys/{gpg_key_id}", {}, { - renamed: ["users", "getGpgKeyForAuthenticatedUser"] - }], - getGpgKeyForAuthenticatedUser: ["GET /user/gpg_keys/{gpg_key_id}"], - getPublicSshKeyForAuthenticated: ["GET /user/keys/{key_id}", {}, { - renamed: ["users", "getPublicSshKeyForAuthenticatedUser"] - }], - getPublicSshKeyForAuthenticatedUser: ["GET /user/keys/{key_id}"], - getSshSigningKeyForAuthenticatedUser: ["GET /user/ssh_signing_keys/{ssh_signing_key_id}"], - list: ["GET /users"], - listBlockedByAuthenticated: ["GET /user/blocks", {}, { - renamed: ["users", "listBlockedByAuthenticatedUser"] - }], - listBlockedByAuthenticatedUser: ["GET /user/blocks"], - listEmailsForAuthenticated: ["GET /user/emails", {}, { - renamed: ["users", "listEmailsForAuthenticatedUser"] - }], - listEmailsForAuthenticatedUser: ["GET /user/emails"], - listFollowedByAuthenticated: ["GET /user/following", {}, { - renamed: ["users", "listFollowedByAuthenticatedUser"] - }], - listFollowedByAuthenticatedUser: ["GET /user/following"], - listFollowersForAuthenticatedUser: ["GET /user/followers"], - listFollowersForUser: ["GET /users/{username}/followers"], - listFollowingForUser: ["GET /users/{username}/following"], - listGpgKeysForAuthenticated: ["GET /user/gpg_keys", {}, { - renamed: ["users", "listGpgKeysForAuthenticatedUser"] - }], - listGpgKeysForAuthenticatedUser: ["GET /user/gpg_keys"], - listGpgKeysForUser: ["GET /users/{username}/gpg_keys"], - listPublicEmailsForAuthenticated: ["GET /user/public_emails", {}, { - renamed: ["users", "listPublicEmailsForAuthenticatedUser"] - }], - listPublicEmailsForAuthenticatedUser: ["GET /user/public_emails"], - listPublicKeysForUser: ["GET /users/{username}/keys"], - listPublicSshKeysForAuthenticated: ["GET /user/keys", {}, { - renamed: ["users", "listPublicSshKeysForAuthenticatedUser"] - }], - listPublicSshKeysForAuthenticatedUser: ["GET /user/keys"], - listSshSigningKeysForAuthenticatedUser: ["GET /user/ssh_signing_keys"], - listSshSigningKeysForUser: ["GET /users/{username}/ssh_signing_keys"], - setPrimaryEmailVisibilityForAuthenticated: ["PATCH /user/email/visibility", {}, { - renamed: ["users", "setPrimaryEmailVisibilityForAuthenticatedUser"] - }], - setPrimaryEmailVisibilityForAuthenticatedUser: ["PATCH /user/email/visibility"], - unblock: ["DELETE /user/blocks/{username}"], - unfollow: ["DELETE /user/following/{username}"], - updateAuthenticated: ["PATCH /user"] +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var spacesGroup = /\x09-\x0D\x20\x85\xA0\u1680\u180E\u2000-\u200A\u2028\u2029\u202F\u205F\u3000/; +var _default = spacesGroup; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 163 */, +/* 164 */, +/* 165 */, +/* 166 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +__webpack_require__(599); + +__webpack_require__(124); + +__webpack_require__(157); + +__webpack_require__(684); + +__webpack_require__(954); + +var _configs = _interopRequireDefault(__webpack_require__(125)); + +var _extractUrlsWithIndices = _interopRequireDefault(__webpack_require__(257)); + +var _getCharacterWeight = _interopRequireDefault(__webpack_require__(41)); + +var _hasInvalidCharacters = _interopRequireDefault(__webpack_require__(860)); + +var _modifyIndicesFromUTF16ToUnicode = _interopRequireDefault(__webpack_require__(964)); + +var _twemojiParser = __webpack_require__(175); + +var _urlHasHttps = _interopRequireDefault(__webpack_require__(477)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +// TODO: WEB-19861 Replace with public package after it is open sourced + +/** + * [parseTweet description] + * @param {string} text tweet text to parse + * @param {Object} options config options to pass + * @return {Object} Fields in response described below: + * + * Response fields: + * weightedLength {int} the weighted length of tweet based on weights specified in the config + * valid {bool} If tweet is valid + * permillage {float} permillage of the tweet over the max length specified in config + * validRangeStart {int} beginning of valid text + * validRangeEnd {int} End index of valid part of the tweet text (inclusive) in utf16 + * displayRangeStart {int} beginning index of display text + * displayRangeEnd {int} end index of display text (inclusive) in utf16 + */ +var parseTweet = function parseTweet() { + var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _configs["default"].defaults; + var mergedOptions = Object.keys(options).length ? options : _configs["default"].defaults; + var defaultWeight = mergedOptions.defaultWeight, + emojiParsingEnabled = mergedOptions.emojiParsingEnabled, + scale = mergedOptions.scale, + maxWeightedTweetLength = mergedOptions.maxWeightedTweetLength, + transformedURLLength = mergedOptions.transformedURLLength; + var normalizedText = typeof String.prototype.normalize === 'function' ? text.normalize() : text; // Hash all entities by their startIndex for fast lookup + + var urlEntitiesMap = transformEntitiesToHash((0, _extractUrlsWithIndices["default"])(normalizedText)); + var emojiEntitiesMap = emojiParsingEnabled ? transformEntitiesToHash((0, _twemojiParser.parse)(normalizedText)) : []; + var tweetLength = normalizedText.length; + var weightedLength = 0; + var validDisplayIndex = 0; + var valid = true; // Go through every character and calculate weight + + for (var charIndex = 0; charIndex < tweetLength; charIndex++) { + // If a url begins at the specified index handle, add constant length + if (urlEntitiesMap[charIndex]) { + var _urlEntitiesMap$charI = urlEntitiesMap[charIndex], + url = _urlEntitiesMap$charI.url, + indices = _urlEntitiesMap$charI.indices; + weightedLength += transformedURLLength * scale; + charIndex += url.length - 1; + } else if (emojiParsingEnabled && emojiEntitiesMap[charIndex]) { + var _emojiEntitiesMap$cha = emojiEntitiesMap[charIndex], + emoji = _emojiEntitiesMap$cha.text, + _indices = _emojiEntitiesMap$cha.indices; + weightedLength += defaultWeight; + charIndex += emoji.length - 1; + } else { + charIndex += isSurrogatePair(normalizedText, charIndex) ? 1 : 0; + weightedLength += (0, _getCharacterWeight["default"])(normalizedText.charAt(charIndex), mergedOptions); + } // Only test for validity of character if it is still valid + + + if (valid) { + valid = !(0, _hasInvalidCharacters["default"])(normalizedText.substring(charIndex, charIndex + 1)); + } + + if (valid && weightedLength <= maxWeightedTweetLength * scale) { + validDisplayIndex = charIndex; + } + } + + weightedLength = weightedLength / scale; + valid = valid && weightedLength > 0 && weightedLength <= maxWeightedTweetLength; + var permillage = Math.floor(weightedLength / maxWeightedTweetLength * 1000); + var normalizationOffset = text.length - normalizedText.length; + validDisplayIndex += normalizationOffset; + return { + weightedLength: weightedLength, + valid: valid, + permillage: permillage, + validRangeStart: 0, + validRangeEnd: validDisplayIndex, + displayRangeStart: 0, + displayRangeEnd: text.length > 0 ? text.length - 1 : 0 + }; +}; + +var transformEntitiesToHash = function transformEntitiesToHash(entities) { + return entities.reduce(function (map, entity) { + map[entity.indices[0]] = entity; + return map; + }, {}); +}; + +var isSurrogatePair = function isSurrogatePair(text, cIndex) { + // Test if a character is the beginning of a surrogate pair + if (cIndex < text.length - 1) { + var c = text.charCodeAt(cIndex); + var cNext = text.charCodeAt(cIndex + 1); + return 0xd800 <= c && c <= 0xdbff && 0xdc00 <= cNext && cNext <= 0xdfff; + } + + return false; +}; + +var _default = parseTweet; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 167 */ +/***/ (function(module) { + +"use strict"; + +module.exports = function generate_anyOf(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $noEmptySchema = $schema.every(function($sch) { + return (it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all)); + }); + if ($noEmptySchema) { + var $currentBaseId = $it.baseId; + out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + var arr1 = $schema; + if (arr1) { + var $sch, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $sch = arr1[$i += 1]; + $it.schema = $sch; + $it.schemaPath = $schemaPath + '[' + $i + ']'; + $it.errSchemaPath = $errSchemaPath + '/' + $i; + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + out += ' ' + ($valid) + ' = ' + ($valid) + ' || ' + ($nextValid) + '; if (!' + ($valid) + ') { '; + $closingBraces += '}'; + } + } + it.compositeRule = $it.compositeRule = $wasComposite; + out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('anyOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should match some schema in anyOf\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError(vErrors); '; + } else { + out += ' validate.errors = vErrors; return false; '; + } + } + out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; + if (it.opts.allErrors) { + out += ' } '; + } + } else { + if ($breakOnError) { + out += ' if (true) { '; + } + } + return out; +} + + +/***/ }), +/* 168 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var Type = __webpack_require__(755); + +var _hasOwnProperty = Object.prototype.hasOwnProperty; + +function resolveYamlSet(data) { + if (data === null) return true; + + var key, object = data; + + for (key in object) { + if (_hasOwnProperty.call(object, key)) { + if (object[key] !== null) return false; + } + } + + return true; +} + +function constructYamlSet(data) { + return data !== null ? data : {}; +} + +module.exports = new Type('tag:yaml.org,2002:set', { + kind: 'mapping', + resolve: resolveYamlSet, + construct: constructYamlSet +}); + + +/***/ }), +/* 169 */, +/* 170 */, +/* 171 */, +/* 172 */, +/* 173 */, +/* 174 */, +/* 175 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.TypeName = undefined; +exports.parse = parse; +exports.toCodePoints = toCodePoints; + +var _regex = __webpack_require__(562); + +var _regex2 = _interopRequireDefault(_regex); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var TypeName = exports.TypeName = 'emoji'; +// Copyright Twitter Inc. Licensed under MIT +// https://github.com/twitter/twemoji-parser/blob/master/LICENSE.md +function parse(text, options) { + var assetType = options && options.assetType ? options.assetType : 'svg'; + var getTwemojiUrl = options && options.buildUrl ? options.buildUrl : function (codepoints, assetType) { + return assetType === 'png' ? 'https://twemoji.maxcdn.com/2/72x72/' + codepoints + '.png' : 'https://twemoji.maxcdn.com/2/svg/' + codepoints + '.svg'; + }; + + var entities = []; + + _regex2.default.lastIndex = 0; + while (true) { + var result = _regex2.default.exec(text); + if (!result) { + break; + } + + var emojiText = result[0]; + var codepoints = toCodePoints(removeVS16s(emojiText)).join('-'); + + entities.push({ + url: codepoints ? getTwemojiUrl(codepoints, assetType) : '', + indices: [result.index, _regex2.default.lastIndex], + text: emojiText, + type: TypeName + }); + } + return entities; +} + +var vs16RegExp = /\uFE0F/g; +// avoid using a string literal like '\u200D' here because minifiers expand it inline +var zeroWidthJoiner = String.fromCharCode(0x200d); + +var removeVS16s = function removeVS16s(rawEmoji) { + return rawEmoji.indexOf(zeroWidthJoiner) < 0 ? rawEmoji.replace(vs16RegExp, '') : rawEmoji; +}; + +function toCodePoints(unicodeSurrogates) { + var points = []; + var char = 0; + var previous = 0; + var i = 0; + while (i < unicodeSurrogates.length) { + char = unicodeSurrogates.charCodeAt(i++); + if (previous) { + points.push((0x10000 + (previous - 0xd800 << 10) + (char - 0xdc00)).toString(16)); + previous = 0; + } else if (char > 0xd800 && char <= 0xdbff) { + previous = char; + } else { + points.push(char.toString(16)); + } + } + return points; +} + +/***/ }), +/* 176 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + + +exports.URL = __webpack_require__(880).interface; +exports.serializeURL = __webpack_require__(856).serializeURL; +exports.serializeURLOrigin = __webpack_require__(856).serializeURLOrigin; +exports.basicURLParse = __webpack_require__(856).basicURLParse; +exports.setTheUsername = __webpack_require__(856).setTheUsername; +exports.setThePassword = __webpack_require__(856).setThePassword; +exports.serializeHost = __webpack_require__(856).serializeHost; +exports.serializeInteger = __webpack_require__(856).serializeInteger; +exports.parseURL = __webpack_require__(856).parseURL; + + +/***/ }), +/* 177 */ +/***/ (function(__unusedmodule, exports) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +exports.checkBypass = exports.getProxyUrl = void 0; +function getProxyUrl(reqUrl) { + const usingSsl = reqUrl.protocol === 'https:'; + if (checkBypass(reqUrl)) { + return undefined; + } + const proxyVar = (() => { + if (usingSsl) { + return process.env['https_proxy'] || process.env['HTTPS_PROXY']; + } + else { + return process.env['http_proxy'] || process.env['HTTP_PROXY']; + } + })(); + if (proxyVar) { + return new URL(proxyVar); + } + else { + return undefined; + } +} +exports.getProxyUrl = getProxyUrl; +function checkBypass(reqUrl) { + if (!reqUrl.hostname) { + return false; + } + const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || ''; + if (!noProxy) { + return false; + } + // Determine the request port + let reqPort; + if (reqUrl.port) { + reqPort = Number(reqUrl.port); + } + else if (reqUrl.protocol === 'http:') { + reqPort = 80; + } + else if (reqUrl.protocol === 'https:') { + reqPort = 443; + } + // Format the request hostname and hostname with port + const upperReqHosts = [reqUrl.hostname.toUpperCase()]; + if (typeof reqPort === 'number') { + upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`); + } + // Compare request host against noproxy + for (const upperNoProxyItem of noProxy + .split(',') + .map(x => x.trim().toUpperCase()) + .filter(x => x)) { + if (upperReqHosts.some(x => x === upperNoProxyItem)) { + return true; + } + } + return false; +} +exports.checkBypass = checkBypass; +//# sourceMappingURL=proxy.js.map + +/***/ }), +/* 178 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); + +var _validDomainChars = _interopRequireDefault(__webpack_require__(823)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validDomainName = (0, _regexSupplant["default"])(/(?:(?:#{validDomainChars}(?:-|#{validDomainChars})*)?#{validDomainChars}\.)/, { + validDomainChars: _validDomainChars["default"] +}); +var _default = validDomainName; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 179 */, +/* 180 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); + +var _validateUrlPchar = _interopRequireDefault(__webpack_require__(340)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlQuery = (0, _regexSupplant["default"])(/(#{validateUrlPchar}|\/|\?)*/i, { + validateUrlPchar: _validateUrlPchar["default"] +}); +var _default = validateUrlQuery; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 181 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; + +__webpack_require__(590); + +__webpack_require__(94); + +__webpack_require__(684); + +var _htmlEscape = _interopRequireDefault(__webpack_require__(63)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var BOOLEAN_ATTRIBUTES = { + disabled: true, + readonly: true, + multiple: true, + checked: true +}; + +function _default(attributes) { + var htmlAttrs = ''; + + for (var k in attributes) { + var v = attributes[k]; + + if (BOOLEAN_ATTRIBUTES[k]) { + v = v ? k : null; + } + + if (v == null) { + continue; + } + + htmlAttrs += " ".concat((0, _htmlEscape["default"])(k), "=\"").concat((0, _htmlEscape["default"])(v.toString()), "\""); + } + + return htmlAttrs; +} + +module.exports = exports.default; + +/***/ }), +/* 182 */, +/* 183 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _atSigns = _interopRequireDefault(__webpack_require__(1)); + +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); + +var _spaces = _interopRequireDefault(__webpack_require__(61)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validReply = (0, _regexSupplant["default"])(/^(?:#{spaces})*#{atSigns}([a-zA-Z0-9_]{1,20})/, { + atSigns: _atSigns["default"], + spaces: _spaces["default"] +}); +var _default = validReply; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 184 */, +/* 185 */, +/* 186 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + + +var loader = __webpack_require__(466); +var dumper = __webpack_require__(844); + + +function renamed(from, to) { + return function () { + throw new Error('Function yaml.' + from + ' is removed in js-yaml 4. ' + + 'Use yaml.' + to + ' instead, which is now safe by default.'); + }; +} + + +module.exports.Type = __webpack_require__(755); +module.exports.Schema = __webpack_require__(863); +module.exports.FAILSAFE_SCHEMA = __webpack_require__(308); +module.exports.JSON_SCHEMA = __webpack_require__(407); +module.exports.CORE_SCHEMA = __webpack_require__(77); +module.exports.DEFAULT_SCHEMA = __webpack_require__(344); +module.exports.load = loader.load; +module.exports.loadAll = loader.loadAll; +module.exports.dump = dumper.dump; +module.exports.YAMLException = __webpack_require__(652); + +// Re-export all types in case user wants to create custom schema +module.exports.types = { + binary: __webpack_require__(848), + float: __webpack_require__(227), + map: __webpack_require__(778), + null: __webpack_require__(72), + pairs: __webpack_require__(224), + set: __webpack_require__(168), + timestamp: __webpack_require__(244), + bool: __webpack_require__(882), + int: __webpack_require__(707), + merge: __webpack_require__(36), + omap: __webpack_require__(919), + seq: __webpack_require__(503), + str: __webpack_require__(258) +}; + +// Removed functions from JS-YAML 3.0.x +module.exports.safeLoad = renamed('safeLoad', 'load'); +module.exports.safeLoadAll = renamed('safeLoadAll', 'loadAll'); +module.exports.safeDump = renamed('safeDump', 'dump'); + + +/***/ }), +/* 187 */, +/* 188 */, +/* 189 */ +/***/ (function(module) { + +var toString = {}.toString; + +module.exports = function (it) { + return toString.call(it).slice(8, -1); +}; + + +/***/ }), +/* 190 */, +/* 191 */ +/***/ (function(module) { + +module.exports = require("querystring"); + +/***/ }), +/* 192 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +var iterate = __webpack_require__(97) + , initState = __webpack_require__(147) + , terminator = __webpack_require__(106) + ; + +// Public API +module.exports = serialOrdered; +// sorting helpers +module.exports.ascending = ascending; +module.exports.descending = descending; + +/** + * Runs iterator over provided sorted array elements in series + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {function} sortMethod - custom sort function + * @param {function} callback - invoked when all elements processed + * @returns {function} - jobs terminator + */ +function serialOrdered(list, iterator, sortMethod, callback) +{ + var state = initState(list, sortMethod); + + iterate(list, iterator, state, function iteratorHandler(error, result) + { + if (error) + { + callback(error, result); + return; + } + + state.index++; + + // are we there yet? + if (state.index < (state['keyedList'] || list).length) + { + iterate(list, iterator, state, iteratorHandler); + return; + } + + // done here + callback(null, state.results); + }); + + return terminator.bind(state, callback); +} + +/* + * -- Sort methods + */ + +/** + * sort helper to sort array elements in ascending order + * + * @param {mixed} a - an item to compare + * @param {mixed} b - an item to compare + * @returns {number} - comparison result + */ +function ascending(a, b) +{ + return a < b ? -1 : a > b ? 1 : 0; +} + +/** + * sort helper to sort array elements in descending order + * + * @param {mixed} a - an item to compare + * @param {mixed} b - an item to compare + * @returns {number} - comparison result + */ +function descending(a, b) +{ + return -1 * ascending(a, b); +} + + +/***/ }), +/* 193 */, +/* 194 */, +/* 195 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +var global = __webpack_require__(300); +var core = __webpack_require__(245); +var hide = __webpack_require__(609); +var redefine = __webpack_require__(976); +var ctx = __webpack_require__(743); +var PROTOTYPE = 'prototype'; + +var $export = function (type, name, source) { + var IS_FORCED = type & $export.F; + var IS_GLOBAL = type & $export.G; + var IS_STATIC = type & $export.S; + var IS_PROTO = type & $export.P; + var IS_BIND = type & $export.B; + var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE]; + var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); + var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {}); + var key, own, out, exp; + if (IS_GLOBAL) source = name; + for (key in source) { + // contains in native + own = !IS_FORCED && target && target[key] !== undefined; + // export native or passed + out = (own ? target : source)[key]; + // bind timers to global for call from export context + exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; + // extend global + if (target) redefine(target, key, out, type & $export.U); + // export + if (exports[key] != out) hide(exports, key, exp); + if (IS_PROTO && expProto[key] != out) expProto[key] = out; + } +}; +global.core = core; +// type bitmap +$export.F = 1; // forced +$export.G = 2; // global +$export.S = 4; // static +$export.P = 8; // proto +$export.B = 16; // bind +$export.W = 32; // wrap +$export.U = 64; // safe +$export.R = 128; // real proto method for `library` +module.exports = $export; + + +/***/ }), +/* 196 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +(function(nacl) { +'use strict'; + +// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri. +// Public domain. +// +// Implementation derived from TweetNaCl version 20140427. +// See for details: http://tweetnacl.cr.yp.to/ + +var gf = function(init) { + var i, r = new Float64Array(16); + if (init) for (i = 0; i < init.length; i++) r[i] = init[i]; + return r; +}; + +// Pluggable, initialized in high-level API below. +var randombytes = function(/* x, n */) { throw new Error('no PRNG'); }; + +var _0 = new Uint8Array(16); +var _9 = new Uint8Array(32); _9[0] = 9; + +var gf0 = gf(), + gf1 = gf([1]), + _121665 = gf([0xdb41, 1]), + D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]), + D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]), + X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]), + Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]), + I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]); + +function ts64(x, i, h, l) { + x[i] = (h >> 24) & 0xff; + x[i+1] = (h >> 16) & 0xff; + x[i+2] = (h >> 8) & 0xff; + x[i+3] = h & 0xff; + x[i+4] = (l >> 24) & 0xff; + x[i+5] = (l >> 16) & 0xff; + x[i+6] = (l >> 8) & 0xff; + x[i+7] = l & 0xff; +} + +function vn(x, xi, y, yi, n) { + var i,d = 0; + for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i]; + return (1 & ((d - 1) >>> 8)) - 1; +} + +function crypto_verify_16(x, xi, y, yi) { + return vn(x,xi,y,yi,16); +} + +function crypto_verify_32(x, xi, y, yi) { + return vn(x,xi,y,yi,32); +} + +function core_salsa20(o, p, k, c) { + var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24, + j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24, + j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24, + j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24, + j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24, + j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24, + j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24, + j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24, + j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24, + j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24, + j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24, + j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24, + j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24, + j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24, + j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24, + j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24; + + var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, + x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, + x15 = j15, u; + + for (var i = 0; i < 20; i += 2) { + u = x0 + x12 | 0; + x4 ^= u<<7 | u>>>(32-7); + u = x4 + x0 | 0; + x8 ^= u<<9 | u>>>(32-9); + u = x8 + x4 | 0; + x12 ^= u<<13 | u>>>(32-13); + u = x12 + x8 | 0; + x0 ^= u<<18 | u>>>(32-18); + + u = x5 + x1 | 0; + x9 ^= u<<7 | u>>>(32-7); + u = x9 + x5 | 0; + x13 ^= u<<9 | u>>>(32-9); + u = x13 + x9 | 0; + x1 ^= u<<13 | u>>>(32-13); + u = x1 + x13 | 0; + x5 ^= u<<18 | u>>>(32-18); + + u = x10 + x6 | 0; + x14 ^= u<<7 | u>>>(32-7); + u = x14 + x10 | 0; + x2 ^= u<<9 | u>>>(32-9); + u = x2 + x14 | 0; + x6 ^= u<<13 | u>>>(32-13); + u = x6 + x2 | 0; + x10 ^= u<<18 | u>>>(32-18); + + u = x15 + x11 | 0; + x3 ^= u<<7 | u>>>(32-7); + u = x3 + x15 | 0; + x7 ^= u<<9 | u>>>(32-9); + u = x7 + x3 | 0; + x11 ^= u<<13 | u>>>(32-13); + u = x11 + x7 | 0; + x15 ^= u<<18 | u>>>(32-18); + + u = x0 + x3 | 0; + x1 ^= u<<7 | u>>>(32-7); + u = x1 + x0 | 0; + x2 ^= u<<9 | u>>>(32-9); + u = x2 + x1 | 0; + x3 ^= u<<13 | u>>>(32-13); + u = x3 + x2 | 0; + x0 ^= u<<18 | u>>>(32-18); + + u = x5 + x4 | 0; + x6 ^= u<<7 | u>>>(32-7); + u = x6 + x5 | 0; + x7 ^= u<<9 | u>>>(32-9); + u = x7 + x6 | 0; + x4 ^= u<<13 | u>>>(32-13); + u = x4 + x7 | 0; + x5 ^= u<<18 | u>>>(32-18); + + u = x10 + x9 | 0; + x11 ^= u<<7 | u>>>(32-7); + u = x11 + x10 | 0; + x8 ^= u<<9 | u>>>(32-9); + u = x8 + x11 | 0; + x9 ^= u<<13 | u>>>(32-13); + u = x9 + x8 | 0; + x10 ^= u<<18 | u>>>(32-18); + + u = x15 + x14 | 0; + x12 ^= u<<7 | u>>>(32-7); + u = x12 + x15 | 0; + x13 ^= u<<9 | u>>>(32-9); + u = x13 + x12 | 0; + x14 ^= u<<13 | u>>>(32-13); + u = x14 + x13 | 0; + x15 ^= u<<18 | u>>>(32-18); + } + x0 = x0 + j0 | 0; + x1 = x1 + j1 | 0; + x2 = x2 + j2 | 0; + x3 = x3 + j3 | 0; + x4 = x4 + j4 | 0; + x5 = x5 + j5 | 0; + x6 = x6 + j6 | 0; + x7 = x7 + j7 | 0; + x8 = x8 + j8 | 0; + x9 = x9 + j9 | 0; + x10 = x10 + j10 | 0; + x11 = x11 + j11 | 0; + x12 = x12 + j12 | 0; + x13 = x13 + j13 | 0; + x14 = x14 + j14 | 0; + x15 = x15 + j15 | 0; + + o[ 0] = x0 >>> 0 & 0xff; + o[ 1] = x0 >>> 8 & 0xff; + o[ 2] = x0 >>> 16 & 0xff; + o[ 3] = x0 >>> 24 & 0xff; + + o[ 4] = x1 >>> 0 & 0xff; + o[ 5] = x1 >>> 8 & 0xff; + o[ 6] = x1 >>> 16 & 0xff; + o[ 7] = x1 >>> 24 & 0xff; + + o[ 8] = x2 >>> 0 & 0xff; + o[ 9] = x2 >>> 8 & 0xff; + o[10] = x2 >>> 16 & 0xff; + o[11] = x2 >>> 24 & 0xff; + + o[12] = x3 >>> 0 & 0xff; + o[13] = x3 >>> 8 & 0xff; + o[14] = x3 >>> 16 & 0xff; + o[15] = x3 >>> 24 & 0xff; + + o[16] = x4 >>> 0 & 0xff; + o[17] = x4 >>> 8 & 0xff; + o[18] = x4 >>> 16 & 0xff; + o[19] = x4 >>> 24 & 0xff; + + o[20] = x5 >>> 0 & 0xff; + o[21] = x5 >>> 8 & 0xff; + o[22] = x5 >>> 16 & 0xff; + o[23] = x5 >>> 24 & 0xff; + + o[24] = x6 >>> 0 & 0xff; + o[25] = x6 >>> 8 & 0xff; + o[26] = x6 >>> 16 & 0xff; + o[27] = x6 >>> 24 & 0xff; + + o[28] = x7 >>> 0 & 0xff; + o[29] = x7 >>> 8 & 0xff; + o[30] = x7 >>> 16 & 0xff; + o[31] = x7 >>> 24 & 0xff; + + o[32] = x8 >>> 0 & 0xff; + o[33] = x8 >>> 8 & 0xff; + o[34] = x8 >>> 16 & 0xff; + o[35] = x8 >>> 24 & 0xff; + + o[36] = x9 >>> 0 & 0xff; + o[37] = x9 >>> 8 & 0xff; + o[38] = x9 >>> 16 & 0xff; + o[39] = x9 >>> 24 & 0xff; + + o[40] = x10 >>> 0 & 0xff; + o[41] = x10 >>> 8 & 0xff; + o[42] = x10 >>> 16 & 0xff; + o[43] = x10 >>> 24 & 0xff; + + o[44] = x11 >>> 0 & 0xff; + o[45] = x11 >>> 8 & 0xff; + o[46] = x11 >>> 16 & 0xff; + o[47] = x11 >>> 24 & 0xff; + + o[48] = x12 >>> 0 & 0xff; + o[49] = x12 >>> 8 & 0xff; + o[50] = x12 >>> 16 & 0xff; + o[51] = x12 >>> 24 & 0xff; + + o[52] = x13 >>> 0 & 0xff; + o[53] = x13 >>> 8 & 0xff; + o[54] = x13 >>> 16 & 0xff; + o[55] = x13 >>> 24 & 0xff; + + o[56] = x14 >>> 0 & 0xff; + o[57] = x14 >>> 8 & 0xff; + o[58] = x14 >>> 16 & 0xff; + o[59] = x14 >>> 24 & 0xff; + + o[60] = x15 >>> 0 & 0xff; + o[61] = x15 >>> 8 & 0xff; + o[62] = x15 >>> 16 & 0xff; + o[63] = x15 >>> 24 & 0xff; +} + +function core_hsalsa20(o,p,k,c) { + var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24, + j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24, + j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24, + j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24, + j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24, + j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24, + j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24, + j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24, + j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24, + j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24, + j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24, + j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24, + j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24, + j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24, + j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24, + j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24; + + var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, + x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, + x15 = j15, u; + + for (var i = 0; i < 20; i += 2) { + u = x0 + x12 | 0; + x4 ^= u<<7 | u>>>(32-7); + u = x4 + x0 | 0; + x8 ^= u<<9 | u>>>(32-9); + u = x8 + x4 | 0; + x12 ^= u<<13 | u>>>(32-13); + u = x12 + x8 | 0; + x0 ^= u<<18 | u>>>(32-18); + + u = x5 + x1 | 0; + x9 ^= u<<7 | u>>>(32-7); + u = x9 + x5 | 0; + x13 ^= u<<9 | u>>>(32-9); + u = x13 + x9 | 0; + x1 ^= u<<13 | u>>>(32-13); + u = x1 + x13 | 0; + x5 ^= u<<18 | u>>>(32-18); + + u = x10 + x6 | 0; + x14 ^= u<<7 | u>>>(32-7); + u = x14 + x10 | 0; + x2 ^= u<<9 | u>>>(32-9); + u = x2 + x14 | 0; + x6 ^= u<<13 | u>>>(32-13); + u = x6 + x2 | 0; + x10 ^= u<<18 | u>>>(32-18); + + u = x15 + x11 | 0; + x3 ^= u<<7 | u>>>(32-7); + u = x3 + x15 | 0; + x7 ^= u<<9 | u>>>(32-9); + u = x7 + x3 | 0; + x11 ^= u<<13 | u>>>(32-13); + u = x11 + x7 | 0; + x15 ^= u<<18 | u>>>(32-18); + + u = x0 + x3 | 0; + x1 ^= u<<7 | u>>>(32-7); + u = x1 + x0 | 0; + x2 ^= u<<9 | u>>>(32-9); + u = x2 + x1 | 0; + x3 ^= u<<13 | u>>>(32-13); + u = x3 + x2 | 0; + x0 ^= u<<18 | u>>>(32-18); + + u = x5 + x4 | 0; + x6 ^= u<<7 | u>>>(32-7); + u = x6 + x5 | 0; + x7 ^= u<<9 | u>>>(32-9); + u = x7 + x6 | 0; + x4 ^= u<<13 | u>>>(32-13); + u = x4 + x7 | 0; + x5 ^= u<<18 | u>>>(32-18); + + u = x10 + x9 | 0; + x11 ^= u<<7 | u>>>(32-7); + u = x11 + x10 | 0; + x8 ^= u<<9 | u>>>(32-9); + u = x8 + x11 | 0; + x9 ^= u<<13 | u>>>(32-13); + u = x9 + x8 | 0; + x10 ^= u<<18 | u>>>(32-18); + + u = x15 + x14 | 0; + x12 ^= u<<7 | u>>>(32-7); + u = x12 + x15 | 0; + x13 ^= u<<9 | u>>>(32-9); + u = x13 + x12 | 0; + x14 ^= u<<13 | u>>>(32-13); + u = x14 + x13 | 0; + x15 ^= u<<18 | u>>>(32-18); + } + + o[ 0] = x0 >>> 0 & 0xff; + o[ 1] = x0 >>> 8 & 0xff; + o[ 2] = x0 >>> 16 & 0xff; + o[ 3] = x0 >>> 24 & 0xff; + + o[ 4] = x5 >>> 0 & 0xff; + o[ 5] = x5 >>> 8 & 0xff; + o[ 6] = x5 >>> 16 & 0xff; + o[ 7] = x5 >>> 24 & 0xff; + + o[ 8] = x10 >>> 0 & 0xff; + o[ 9] = x10 >>> 8 & 0xff; + o[10] = x10 >>> 16 & 0xff; + o[11] = x10 >>> 24 & 0xff; + + o[12] = x15 >>> 0 & 0xff; + o[13] = x15 >>> 8 & 0xff; + o[14] = x15 >>> 16 & 0xff; + o[15] = x15 >>> 24 & 0xff; + + o[16] = x6 >>> 0 & 0xff; + o[17] = x6 >>> 8 & 0xff; + o[18] = x6 >>> 16 & 0xff; + o[19] = x6 >>> 24 & 0xff; + + o[20] = x7 >>> 0 & 0xff; + o[21] = x7 >>> 8 & 0xff; + o[22] = x7 >>> 16 & 0xff; + o[23] = x7 >>> 24 & 0xff; + + o[24] = x8 >>> 0 & 0xff; + o[25] = x8 >>> 8 & 0xff; + o[26] = x8 >>> 16 & 0xff; + o[27] = x8 >>> 24 & 0xff; + + o[28] = x9 >>> 0 & 0xff; + o[29] = x9 >>> 8 & 0xff; + o[30] = x9 >>> 16 & 0xff; + o[31] = x9 >>> 24 & 0xff; +} + +function crypto_core_salsa20(out,inp,k,c) { + core_salsa20(out,inp,k,c); +} + +function crypto_core_hsalsa20(out,inp,k,c) { + core_hsalsa20(out,inp,k,c); +} + +var sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]); + // "expand 32-byte k" + +function crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) { + var z = new Uint8Array(16), x = new Uint8Array(64); + var u, i; + for (i = 0; i < 16; i++) z[i] = 0; + for (i = 0; i < 8; i++) z[i] = n[i]; + while (b >= 64) { + crypto_core_salsa20(x,z,k,sigma); + for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i]; + u = 1; + for (i = 8; i < 16; i++) { + u = u + (z[i] & 0xff) | 0; + z[i] = u & 0xff; + u >>>= 8; + } + b -= 64; + cpos += 64; + mpos += 64; + } + if (b > 0) { + crypto_core_salsa20(x,z,k,sigma); + for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i]; + } + return 0; +} + +function crypto_stream_salsa20(c,cpos,b,n,k) { + var z = new Uint8Array(16), x = new Uint8Array(64); + var u, i; + for (i = 0; i < 16; i++) z[i] = 0; + for (i = 0; i < 8; i++) z[i] = n[i]; + while (b >= 64) { + crypto_core_salsa20(x,z,k,sigma); + for (i = 0; i < 64; i++) c[cpos+i] = x[i]; + u = 1; + for (i = 8; i < 16; i++) { + u = u + (z[i] & 0xff) | 0; + z[i] = u & 0xff; + u >>>= 8; + } + b -= 64; + cpos += 64; + } + if (b > 0) { + crypto_core_salsa20(x,z,k,sigma); + for (i = 0; i < b; i++) c[cpos+i] = x[i]; + } + return 0; +} + +function crypto_stream(c,cpos,d,n,k) { + var s = new Uint8Array(32); + crypto_core_hsalsa20(s,n,k,sigma); + var sn = new Uint8Array(8); + for (var i = 0; i < 8; i++) sn[i] = n[i+16]; + return crypto_stream_salsa20(c,cpos,d,sn,s); +} + +function crypto_stream_xor(c,cpos,m,mpos,d,n,k) { + var s = new Uint8Array(32); + crypto_core_hsalsa20(s,n,k,sigma); + var sn = new Uint8Array(8); + for (var i = 0; i < 8; i++) sn[i] = n[i+16]; + return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s); +} + +/* +* Port of Andrew Moon's Poly1305-donna-16. Public domain. +* https://github.com/floodyberry/poly1305-donna +*/ + +var poly1305 = function(key) { + this.buffer = new Uint8Array(16); + this.r = new Uint16Array(10); + this.h = new Uint16Array(10); + this.pad = new Uint16Array(8); + this.leftover = 0; + this.fin = 0; + + var t0, t1, t2, t3, t4, t5, t6, t7; + + t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff; + t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff; + t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03; + t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff; + t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff; + this.r[5] = ((t4 >>> 1)) & 0x1ffe; + t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff; + t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81; + t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff; + this.r[9] = ((t7 >>> 5)) & 0x007f; + + this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8; + this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8; + this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8; + this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8; + this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8; + this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8; + this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8; + this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8; +}; + +poly1305.prototype.blocks = function(m, mpos, bytes) { + var hibit = this.fin ? 0 : (1 << 11); + var t0, t1, t2, t3, t4, t5, t6, t7, c; + var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9; + + var h0 = this.h[0], + h1 = this.h[1], + h2 = this.h[2], + h3 = this.h[3], + h4 = this.h[4], + h5 = this.h[5], + h6 = this.h[6], + h7 = this.h[7], + h8 = this.h[8], + h9 = this.h[9]; + + var r0 = this.r[0], + r1 = this.r[1], + r2 = this.r[2], + r3 = this.r[3], + r4 = this.r[4], + r5 = this.r[5], + r6 = this.r[6], + r7 = this.r[7], + r8 = this.r[8], + r9 = this.r[9]; + + while (bytes >= 16) { + t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff; + t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff; + t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff; + t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff; + t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff; + h5 += ((t4 >>> 1)) & 0x1fff; + t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff; + t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff; + t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff; + h9 += ((t7 >>> 5)) | hibit; + + c = 0; + + d0 = c; + d0 += h0 * r0; + d0 += h1 * (5 * r9); + d0 += h2 * (5 * r8); + d0 += h3 * (5 * r7); + d0 += h4 * (5 * r6); + c = (d0 >>> 13); d0 &= 0x1fff; + d0 += h5 * (5 * r5); + d0 += h6 * (5 * r4); + d0 += h7 * (5 * r3); + d0 += h8 * (5 * r2); + d0 += h9 * (5 * r1); + c += (d0 >>> 13); d0 &= 0x1fff; + + d1 = c; + d1 += h0 * r1; + d1 += h1 * r0; + d1 += h2 * (5 * r9); + d1 += h3 * (5 * r8); + d1 += h4 * (5 * r7); + c = (d1 >>> 13); d1 &= 0x1fff; + d1 += h5 * (5 * r6); + d1 += h6 * (5 * r5); + d1 += h7 * (5 * r4); + d1 += h8 * (5 * r3); + d1 += h9 * (5 * r2); + c += (d1 >>> 13); d1 &= 0x1fff; + + d2 = c; + d2 += h0 * r2; + d2 += h1 * r1; + d2 += h2 * r0; + d2 += h3 * (5 * r9); + d2 += h4 * (5 * r8); + c = (d2 >>> 13); d2 &= 0x1fff; + d2 += h5 * (5 * r7); + d2 += h6 * (5 * r6); + d2 += h7 * (5 * r5); + d2 += h8 * (5 * r4); + d2 += h9 * (5 * r3); + c += (d2 >>> 13); d2 &= 0x1fff; + + d3 = c; + d3 += h0 * r3; + d3 += h1 * r2; + d3 += h2 * r1; + d3 += h3 * r0; + d3 += h4 * (5 * r9); + c = (d3 >>> 13); d3 &= 0x1fff; + d3 += h5 * (5 * r8); + d3 += h6 * (5 * r7); + d3 += h7 * (5 * r6); + d3 += h8 * (5 * r5); + d3 += h9 * (5 * r4); + c += (d3 >>> 13); d3 &= 0x1fff; + + d4 = c; + d4 += h0 * r4; + d4 += h1 * r3; + d4 += h2 * r2; + d4 += h3 * r1; + d4 += h4 * r0; + c = (d4 >>> 13); d4 &= 0x1fff; + d4 += h5 * (5 * r9); + d4 += h6 * (5 * r8); + d4 += h7 * (5 * r7); + d4 += h8 * (5 * r6); + d4 += h9 * (5 * r5); + c += (d4 >>> 13); d4 &= 0x1fff; + + d5 = c; + d5 += h0 * r5; + d5 += h1 * r4; + d5 += h2 * r3; + d5 += h3 * r2; + d5 += h4 * r1; + c = (d5 >>> 13); d5 &= 0x1fff; + d5 += h5 * r0; + d5 += h6 * (5 * r9); + d5 += h7 * (5 * r8); + d5 += h8 * (5 * r7); + d5 += h9 * (5 * r6); + c += (d5 >>> 13); d5 &= 0x1fff; + + d6 = c; + d6 += h0 * r6; + d6 += h1 * r5; + d6 += h2 * r4; + d6 += h3 * r3; + d6 += h4 * r2; + c = (d6 >>> 13); d6 &= 0x1fff; + d6 += h5 * r1; + d6 += h6 * r0; + d6 += h7 * (5 * r9); + d6 += h8 * (5 * r8); + d6 += h9 * (5 * r7); + c += (d6 >>> 13); d6 &= 0x1fff; + + d7 = c; + d7 += h0 * r7; + d7 += h1 * r6; + d7 += h2 * r5; + d7 += h3 * r4; + d7 += h4 * r3; + c = (d7 >>> 13); d7 &= 0x1fff; + d7 += h5 * r2; + d7 += h6 * r1; + d7 += h7 * r0; + d7 += h8 * (5 * r9); + d7 += h9 * (5 * r8); + c += (d7 >>> 13); d7 &= 0x1fff; + + d8 = c; + d8 += h0 * r8; + d8 += h1 * r7; + d8 += h2 * r6; + d8 += h3 * r5; + d8 += h4 * r4; + c = (d8 >>> 13); d8 &= 0x1fff; + d8 += h5 * r3; + d8 += h6 * r2; + d8 += h7 * r1; + d8 += h8 * r0; + d8 += h9 * (5 * r9); + c += (d8 >>> 13); d8 &= 0x1fff; + + d9 = c; + d9 += h0 * r9; + d9 += h1 * r8; + d9 += h2 * r7; + d9 += h3 * r6; + d9 += h4 * r5; + c = (d9 >>> 13); d9 &= 0x1fff; + d9 += h5 * r4; + d9 += h6 * r3; + d9 += h7 * r2; + d9 += h8 * r1; + d9 += h9 * r0; + c += (d9 >>> 13); d9 &= 0x1fff; + + c = (((c << 2) + c)) | 0; + c = (c + d0) | 0; + d0 = c & 0x1fff; + c = (c >>> 13); + d1 += c; + + h0 = d0; + h1 = d1; + h2 = d2; + h3 = d3; + h4 = d4; + h5 = d5; + h6 = d6; + h7 = d7; + h8 = d8; + h9 = d9; + + mpos += 16; + bytes -= 16; + } + this.h[0] = h0; + this.h[1] = h1; + this.h[2] = h2; + this.h[3] = h3; + this.h[4] = h4; + this.h[5] = h5; + this.h[6] = h6; + this.h[7] = h7; + this.h[8] = h8; + this.h[9] = h9; +}; + +poly1305.prototype.finish = function(mac, macpos) { + var g = new Uint16Array(10); + var c, mask, f, i; + + if (this.leftover) { + i = this.leftover; + this.buffer[i++] = 1; + for (; i < 16; i++) this.buffer[i] = 0; + this.fin = 1; + this.blocks(this.buffer, 0, 16); + } + + c = this.h[1] >>> 13; + this.h[1] &= 0x1fff; + for (i = 2; i < 10; i++) { + this.h[i] += c; + c = this.h[i] >>> 13; + this.h[i] &= 0x1fff; + } + this.h[0] += (c * 5); + c = this.h[0] >>> 13; + this.h[0] &= 0x1fff; + this.h[1] += c; + c = this.h[1] >>> 13; + this.h[1] &= 0x1fff; + this.h[2] += c; + + g[0] = this.h[0] + 5; + c = g[0] >>> 13; + g[0] &= 0x1fff; + for (i = 1; i < 10; i++) { + g[i] = this.h[i] + c; + c = g[i] >>> 13; + g[i] &= 0x1fff; + } + g[9] -= (1 << 13); + + mask = (c ^ 1) - 1; + for (i = 0; i < 10; i++) g[i] &= mask; + mask = ~mask; + for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i]; + + this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff; + this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff; + this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff; + this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff; + this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff; + this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff; + this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff; + this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff; + + f = this.h[0] + this.pad[0]; + this.h[0] = f & 0xffff; + for (i = 1; i < 8; i++) { + f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0; + this.h[i] = f & 0xffff; + } + + mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff; + mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff; + mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff; + mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff; + mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff; + mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff; + mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff; + mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff; + mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff; + mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff; + mac[macpos+10] = (this.h[5] >>> 0) & 0xff; + mac[macpos+11] = (this.h[5] >>> 8) & 0xff; + mac[macpos+12] = (this.h[6] >>> 0) & 0xff; + mac[macpos+13] = (this.h[6] >>> 8) & 0xff; + mac[macpos+14] = (this.h[7] >>> 0) & 0xff; + mac[macpos+15] = (this.h[7] >>> 8) & 0xff; +}; + +poly1305.prototype.update = function(m, mpos, bytes) { + var i, want; + + if (this.leftover) { + want = (16 - this.leftover); + if (want > bytes) + want = bytes; + for (i = 0; i < want; i++) + this.buffer[this.leftover + i] = m[mpos+i]; + bytes -= want; + mpos += want; + this.leftover += want; + if (this.leftover < 16) + return; + this.blocks(this.buffer, 0, 16); + this.leftover = 0; + } + + if (bytes >= 16) { + want = bytes - (bytes % 16); + this.blocks(m, mpos, want); + mpos += want; + bytes -= want; + } + + if (bytes) { + for (i = 0; i < bytes; i++) + this.buffer[this.leftover + i] = m[mpos+i]; + this.leftover += bytes; + } +}; + +function crypto_onetimeauth(out, outpos, m, mpos, n, k) { + var s = new poly1305(k); + s.update(m, mpos, n); + s.finish(out, outpos); + return 0; +} + +function crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) { + var x = new Uint8Array(16); + crypto_onetimeauth(x,0,m,mpos,n,k); + return crypto_verify_16(h,hpos,x,0); +} + +function crypto_secretbox(c,m,d,n,k) { + var i; + if (d < 32) return -1; + crypto_stream_xor(c,0,m,0,d,n,k); + crypto_onetimeauth(c, 16, c, 32, d - 32, c); + for (i = 0; i < 16; i++) c[i] = 0; + return 0; +} + +function crypto_secretbox_open(m,c,d,n,k) { + var i; + var x = new Uint8Array(32); + if (d < 32) return -1; + crypto_stream(x,0,32,n,k); + if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1; + crypto_stream_xor(m,0,c,0,d,n,k); + for (i = 0; i < 32; i++) m[i] = 0; + return 0; +} + +function set25519(r, a) { + var i; + for (i = 0; i < 16; i++) r[i] = a[i]|0; +} + +function car25519(o) { + var i, v, c = 1; + for (i = 0; i < 16; i++) { + v = o[i] + c + 65535; + c = Math.floor(v / 65536); + o[i] = v - c * 65536; + } + o[0] += c-1 + 37 * (c-1); +} + +function sel25519(p, q, b) { + var t, c = ~(b-1); + for (var i = 0; i < 16; i++) { + t = c & (p[i] ^ q[i]); + p[i] ^= t; + q[i] ^= t; + } +} + +function pack25519(o, n) { + var i, j, b; + var m = gf(), t = gf(); + for (i = 0; i < 16; i++) t[i] = n[i]; + car25519(t); + car25519(t); + car25519(t); + for (j = 0; j < 2; j++) { + m[0] = t[0] - 0xffed; + for (i = 1; i < 15; i++) { + m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1); + m[i-1] &= 0xffff; + } + m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1); + b = (m[15]>>16) & 1; + m[14] &= 0xffff; + sel25519(t, m, 1-b); + } + for (i = 0; i < 16; i++) { + o[2*i] = t[i] & 0xff; + o[2*i+1] = t[i]>>8; + } +} + +function neq25519(a, b) { + var c = new Uint8Array(32), d = new Uint8Array(32); + pack25519(c, a); + pack25519(d, b); + return crypto_verify_32(c, 0, d, 0); +} + +function par25519(a) { + var d = new Uint8Array(32); + pack25519(d, a); + return d[0] & 1; +} + +function unpack25519(o, n) { + var i; + for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8); + o[15] &= 0x7fff; +} + +function A(o, a, b) { + for (var i = 0; i < 16; i++) o[i] = a[i] + b[i]; +} + +function Z(o, a, b) { + for (var i = 0; i < 16; i++) o[i] = a[i] - b[i]; +} + +function M(o, a, b) { + var v, c, + t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, + t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, + t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, + t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, + b0 = b[0], + b1 = b[1], + b2 = b[2], + b3 = b[3], + b4 = b[4], + b5 = b[5], + b6 = b[6], + b7 = b[7], + b8 = b[8], + b9 = b[9], + b10 = b[10], + b11 = b[11], + b12 = b[12], + b13 = b[13], + b14 = b[14], + b15 = b[15]; + + v = a[0]; + t0 += v * b0; + t1 += v * b1; + t2 += v * b2; + t3 += v * b3; + t4 += v * b4; + t5 += v * b5; + t6 += v * b6; + t7 += v * b7; + t8 += v * b8; + t9 += v * b9; + t10 += v * b10; + t11 += v * b11; + t12 += v * b12; + t13 += v * b13; + t14 += v * b14; + t15 += v * b15; + v = a[1]; + t1 += v * b0; + t2 += v * b1; + t3 += v * b2; + t4 += v * b3; + t5 += v * b4; + t6 += v * b5; + t7 += v * b6; + t8 += v * b7; + t9 += v * b8; + t10 += v * b9; + t11 += v * b10; + t12 += v * b11; + t13 += v * b12; + t14 += v * b13; + t15 += v * b14; + t16 += v * b15; + v = a[2]; + t2 += v * b0; + t3 += v * b1; + t4 += v * b2; + t5 += v * b3; + t6 += v * b4; + t7 += v * b5; + t8 += v * b6; + t9 += v * b7; + t10 += v * b8; + t11 += v * b9; + t12 += v * b10; + t13 += v * b11; + t14 += v * b12; + t15 += v * b13; + t16 += v * b14; + t17 += v * b15; + v = a[3]; + t3 += v * b0; + t4 += v * b1; + t5 += v * b2; + t6 += v * b3; + t7 += v * b4; + t8 += v * b5; + t9 += v * b6; + t10 += v * b7; + t11 += v * b8; + t12 += v * b9; + t13 += v * b10; + t14 += v * b11; + t15 += v * b12; + t16 += v * b13; + t17 += v * b14; + t18 += v * b15; + v = a[4]; + t4 += v * b0; + t5 += v * b1; + t6 += v * b2; + t7 += v * b3; + t8 += v * b4; + t9 += v * b5; + t10 += v * b6; + t11 += v * b7; + t12 += v * b8; + t13 += v * b9; + t14 += v * b10; + t15 += v * b11; + t16 += v * b12; + t17 += v * b13; + t18 += v * b14; + t19 += v * b15; + v = a[5]; + t5 += v * b0; + t6 += v * b1; + t7 += v * b2; + t8 += v * b3; + t9 += v * b4; + t10 += v * b5; + t11 += v * b6; + t12 += v * b7; + t13 += v * b8; + t14 += v * b9; + t15 += v * b10; + t16 += v * b11; + t17 += v * b12; + t18 += v * b13; + t19 += v * b14; + t20 += v * b15; + v = a[6]; + t6 += v * b0; + t7 += v * b1; + t8 += v * b2; + t9 += v * b3; + t10 += v * b4; + t11 += v * b5; + t12 += v * b6; + t13 += v * b7; + t14 += v * b8; + t15 += v * b9; + t16 += v * b10; + t17 += v * b11; + t18 += v * b12; + t19 += v * b13; + t20 += v * b14; + t21 += v * b15; + v = a[7]; + t7 += v * b0; + t8 += v * b1; + t9 += v * b2; + t10 += v * b3; + t11 += v * b4; + t12 += v * b5; + t13 += v * b6; + t14 += v * b7; + t15 += v * b8; + t16 += v * b9; + t17 += v * b10; + t18 += v * b11; + t19 += v * b12; + t20 += v * b13; + t21 += v * b14; + t22 += v * b15; + v = a[8]; + t8 += v * b0; + t9 += v * b1; + t10 += v * b2; + t11 += v * b3; + t12 += v * b4; + t13 += v * b5; + t14 += v * b6; + t15 += v * b7; + t16 += v * b8; + t17 += v * b9; + t18 += v * b10; + t19 += v * b11; + t20 += v * b12; + t21 += v * b13; + t22 += v * b14; + t23 += v * b15; + v = a[9]; + t9 += v * b0; + t10 += v * b1; + t11 += v * b2; + t12 += v * b3; + t13 += v * b4; + t14 += v * b5; + t15 += v * b6; + t16 += v * b7; + t17 += v * b8; + t18 += v * b9; + t19 += v * b10; + t20 += v * b11; + t21 += v * b12; + t22 += v * b13; + t23 += v * b14; + t24 += v * b15; + v = a[10]; + t10 += v * b0; + t11 += v * b1; + t12 += v * b2; + t13 += v * b3; + t14 += v * b4; + t15 += v * b5; + t16 += v * b6; + t17 += v * b7; + t18 += v * b8; + t19 += v * b9; + t20 += v * b10; + t21 += v * b11; + t22 += v * b12; + t23 += v * b13; + t24 += v * b14; + t25 += v * b15; + v = a[11]; + t11 += v * b0; + t12 += v * b1; + t13 += v * b2; + t14 += v * b3; + t15 += v * b4; + t16 += v * b5; + t17 += v * b6; + t18 += v * b7; + t19 += v * b8; + t20 += v * b9; + t21 += v * b10; + t22 += v * b11; + t23 += v * b12; + t24 += v * b13; + t25 += v * b14; + t26 += v * b15; + v = a[12]; + t12 += v * b0; + t13 += v * b1; + t14 += v * b2; + t15 += v * b3; + t16 += v * b4; + t17 += v * b5; + t18 += v * b6; + t19 += v * b7; + t20 += v * b8; + t21 += v * b9; + t22 += v * b10; + t23 += v * b11; + t24 += v * b12; + t25 += v * b13; + t26 += v * b14; + t27 += v * b15; + v = a[13]; + t13 += v * b0; + t14 += v * b1; + t15 += v * b2; + t16 += v * b3; + t17 += v * b4; + t18 += v * b5; + t19 += v * b6; + t20 += v * b7; + t21 += v * b8; + t22 += v * b9; + t23 += v * b10; + t24 += v * b11; + t25 += v * b12; + t26 += v * b13; + t27 += v * b14; + t28 += v * b15; + v = a[14]; + t14 += v * b0; + t15 += v * b1; + t16 += v * b2; + t17 += v * b3; + t18 += v * b4; + t19 += v * b5; + t20 += v * b6; + t21 += v * b7; + t22 += v * b8; + t23 += v * b9; + t24 += v * b10; + t25 += v * b11; + t26 += v * b12; + t27 += v * b13; + t28 += v * b14; + t29 += v * b15; + v = a[15]; + t15 += v * b0; + t16 += v * b1; + t17 += v * b2; + t18 += v * b3; + t19 += v * b4; + t20 += v * b5; + t21 += v * b6; + t22 += v * b7; + t23 += v * b8; + t24 += v * b9; + t25 += v * b10; + t26 += v * b11; + t27 += v * b12; + t28 += v * b13; + t29 += v * b14; + t30 += v * b15; + + t0 += 38 * t16; + t1 += 38 * t17; + t2 += 38 * t18; + t3 += 38 * t19; + t4 += 38 * t20; + t5 += 38 * t21; + t6 += 38 * t22; + t7 += 38 * t23; + t8 += 38 * t24; + t9 += 38 * t25; + t10 += 38 * t26; + t11 += 38 * t27; + t12 += 38 * t28; + t13 += 38 * t29; + t14 += 38 * t30; + // t15 left as is + + // first car + c = 1; + v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536; + v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536; + v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536; + v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536; + v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536; + v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536; + v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536; + v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536; + v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536; + v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536; + v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536; + v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536; + v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536; + v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536; + v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536; + v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536; + t0 += c-1 + 37 * (c-1); + + // second car + c = 1; + v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536; + v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536; + v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536; + v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536; + v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536; + v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536; + v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536; + v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536; + v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536; + v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536; + v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536; + v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536; + v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536; + v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536; + v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536; + v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536; + t0 += c-1 + 37 * (c-1); + + o[ 0] = t0; + o[ 1] = t1; + o[ 2] = t2; + o[ 3] = t3; + o[ 4] = t4; + o[ 5] = t5; + o[ 6] = t6; + o[ 7] = t7; + o[ 8] = t8; + o[ 9] = t9; + o[10] = t10; + o[11] = t11; + o[12] = t12; + o[13] = t13; + o[14] = t14; + o[15] = t15; +} + +function S(o, a) { + M(o, a, a); +} + +function inv25519(o, i) { + var c = gf(); + var a; + for (a = 0; a < 16; a++) c[a] = i[a]; + for (a = 253; a >= 0; a--) { + S(c, c); + if(a !== 2 && a !== 4) M(c, c, i); + } + for (a = 0; a < 16; a++) o[a] = c[a]; +} + +function pow2523(o, i) { + var c = gf(); + var a; + for (a = 0; a < 16; a++) c[a] = i[a]; + for (a = 250; a >= 0; a--) { + S(c, c); + if(a !== 1) M(c, c, i); + } + for (a = 0; a < 16; a++) o[a] = c[a]; +} + +function crypto_scalarmult(q, n, p) { + var z = new Uint8Array(32); + var x = new Float64Array(80), r, i; + var a = gf(), b = gf(), c = gf(), + d = gf(), e = gf(), f = gf(); + for (i = 0; i < 31; i++) z[i] = n[i]; + z[31]=(n[31]&127)|64; + z[0]&=248; + unpack25519(x,p); + for (i = 0; i < 16; i++) { + b[i]=x[i]; + d[i]=a[i]=c[i]=0; + } + a[0]=d[0]=1; + for (i=254; i>=0; --i) { + r=(z[i>>>3]>>>(i&7))&1; + sel25519(a,b,r); + sel25519(c,d,r); + A(e,a,c); + Z(a,a,c); + A(c,b,d); + Z(b,b,d); + S(d,e); + S(f,a); + M(a,c,a); + M(c,b,e); + A(e,a,c); + Z(a,a,c); + S(b,a); + Z(c,d,f); + M(a,c,_121665); + A(a,a,d); + M(c,c,a); + M(a,d,f); + M(d,b,x); + S(b,e); + sel25519(a,b,r); + sel25519(c,d,r); + } + for (i = 0; i < 16; i++) { + x[i+16]=a[i]; + x[i+32]=c[i]; + x[i+48]=b[i]; + x[i+64]=d[i]; + } + var x32 = x.subarray(32); + var x16 = x.subarray(16); + inv25519(x32,x32); + M(x16,x16,x32); + pack25519(q,x16); + return 0; +} + +function crypto_scalarmult_base(q, n) { + return crypto_scalarmult(q, n, _9); +} + +function crypto_box_keypair(y, x) { + randombytes(x, 32); + return crypto_scalarmult_base(y, x); +} + +function crypto_box_beforenm(k, y, x) { + var s = new Uint8Array(32); + crypto_scalarmult(s, x, y); + return crypto_core_hsalsa20(k, _0, s, sigma); +} + +var crypto_box_afternm = crypto_secretbox; +var crypto_box_open_afternm = crypto_secretbox_open; + +function crypto_box(c, m, d, n, y, x) { + var k = new Uint8Array(32); + crypto_box_beforenm(k, y, x); + return crypto_box_afternm(c, m, d, n, k); +} + +function crypto_box_open(m, c, d, n, y, x) { + var k = new Uint8Array(32); + crypto_box_beforenm(k, y, x); + return crypto_box_open_afternm(m, c, d, n, k); +} + +var K = [ + 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, + 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, + 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, + 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, + 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, + 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, + 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, + 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, + 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, + 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, + 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, + 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, + 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, + 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, + 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, + 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, + 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, + 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, + 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, + 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, + 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, + 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, + 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, + 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, + 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, + 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, + 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, + 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, + 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, + 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, + 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, + 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, + 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, + 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, + 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, + 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, + 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, + 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, + 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, + 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 +]; + +function crypto_hashblocks_hl(hh, hl, m, n) { + var wh = new Int32Array(16), wl = new Int32Array(16), + bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, + bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, + th, tl, i, j, h, l, a, b, c, d; + + var ah0 = hh[0], + ah1 = hh[1], + ah2 = hh[2], + ah3 = hh[3], + ah4 = hh[4], + ah5 = hh[5], + ah6 = hh[6], + ah7 = hh[7], + + al0 = hl[0], + al1 = hl[1], + al2 = hl[2], + al3 = hl[3], + al4 = hl[4], + al5 = hl[5], + al6 = hl[6], + al7 = hl[7]; + + var pos = 0; + while (n >= 128) { + for (i = 0; i < 16; i++) { + j = 8 * i + pos; + wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3]; + wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7]; + } + for (i = 0; i < 80; i++) { + bh0 = ah0; + bh1 = ah1; + bh2 = ah2; + bh3 = ah3; + bh4 = ah4; + bh5 = ah5; + bh6 = ah6; + bh7 = ah7; + + bl0 = al0; + bl1 = al1; + bl2 = al2; + bl3 = al3; + bl4 = al4; + bl5 = al5; + bl6 = al6; + bl7 = al7; + + // add + h = ah7; + l = al7; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + // Sigma1 + h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32)))); + l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32)))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // Ch + h = (ah4 & ah5) ^ (~ah4 & ah6); + l = (al4 & al5) ^ (~al4 & al6); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // K + h = K[i*2]; + l = K[i*2+1]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // w + h = wh[i%16]; + l = wl[i%16]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + th = c & 0xffff | d << 16; + tl = a & 0xffff | b << 16; + + // add + h = th; + l = tl; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + // Sigma0 + h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32)))); + l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32)))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // Maj + h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2); + l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + bh7 = (c & 0xffff) | (d << 16); + bl7 = (a & 0xffff) | (b << 16); + + // add + h = bh3; + l = bl3; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = th; + l = tl; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + bh3 = (c & 0xffff) | (d << 16); + bl3 = (a & 0xffff) | (b << 16); + + ah1 = bh0; + ah2 = bh1; + ah3 = bh2; + ah4 = bh3; + ah5 = bh4; + ah6 = bh5; + ah7 = bh6; + ah0 = bh7; + + al1 = bl0; + al2 = bl1; + al3 = bl2; + al4 = bl3; + al5 = bl4; + al6 = bl5; + al7 = bl6; + al0 = bl7; + + if (i%16 === 15) { + for (j = 0; j < 16; j++) { + // add + h = wh[j]; + l = wl[j]; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = wh[(j+9)%16]; + l = wl[(j+9)%16]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // sigma0 + th = wh[(j+1)%16]; + tl = wl[(j+1)%16]; + h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7); + l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + // sigma1 + th = wh[(j+14)%16]; + tl = wl[(j+14)%16]; + h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6); + l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6))); + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + wh[j] = (c & 0xffff) | (d << 16); + wl[j] = (a & 0xffff) | (b << 16); + } + } + } + + // add + h = ah0; + l = al0; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[0]; + l = hl[0]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[0] = ah0 = (c & 0xffff) | (d << 16); + hl[0] = al0 = (a & 0xffff) | (b << 16); + + h = ah1; + l = al1; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[1]; + l = hl[1]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[1] = ah1 = (c & 0xffff) | (d << 16); + hl[1] = al1 = (a & 0xffff) | (b << 16); + + h = ah2; + l = al2; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[2]; + l = hl[2]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[2] = ah2 = (c & 0xffff) | (d << 16); + hl[2] = al2 = (a & 0xffff) | (b << 16); + + h = ah3; + l = al3; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[3]; + l = hl[3]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[3] = ah3 = (c & 0xffff) | (d << 16); + hl[3] = al3 = (a & 0xffff) | (b << 16); + + h = ah4; + l = al4; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[4]; + l = hl[4]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[4] = ah4 = (c & 0xffff) | (d << 16); + hl[4] = al4 = (a & 0xffff) | (b << 16); + + h = ah5; + l = al5; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[5]; + l = hl[5]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[5] = ah5 = (c & 0xffff) | (d << 16); + hl[5] = al5 = (a & 0xffff) | (b << 16); + + h = ah6; + l = al6; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[6]; + l = hl[6]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[6] = ah6 = (c & 0xffff) | (d << 16); + hl[6] = al6 = (a & 0xffff) | (b << 16); + + h = ah7; + l = al7; + + a = l & 0xffff; b = l >>> 16; + c = h & 0xffff; d = h >>> 16; + + h = hh[7]; + l = hl[7]; + + a += l & 0xffff; b += l >>> 16; + c += h & 0xffff; d += h >>> 16; + + b += a >>> 16; + c += b >>> 16; + d += c >>> 16; + + hh[7] = ah7 = (c & 0xffff) | (d << 16); + hl[7] = al7 = (a & 0xffff) | (b << 16); + + pos += 128; + n -= 128; + } + + return n; +} + +function crypto_hash(out, m, n) { + var hh = new Int32Array(8), + hl = new Int32Array(8), + x = new Uint8Array(256), + i, b = n; + + hh[0] = 0x6a09e667; + hh[1] = 0xbb67ae85; + hh[2] = 0x3c6ef372; + hh[3] = 0xa54ff53a; + hh[4] = 0x510e527f; + hh[5] = 0x9b05688c; + hh[6] = 0x1f83d9ab; + hh[7] = 0x5be0cd19; + + hl[0] = 0xf3bcc908; + hl[1] = 0x84caa73b; + hl[2] = 0xfe94f82b; + hl[3] = 0x5f1d36f1; + hl[4] = 0xade682d1; + hl[5] = 0x2b3e6c1f; + hl[6] = 0xfb41bd6b; + hl[7] = 0x137e2179; + + crypto_hashblocks_hl(hh, hl, m, n); + n %= 128; + + for (i = 0; i < n; i++) x[i] = m[b-n+i]; + x[n] = 128; + + n = 256-128*(n<112?1:0); + x[n-9] = 0; + ts64(x, n-8, (b / 0x20000000) | 0, b << 3); + crypto_hashblocks_hl(hh, hl, x, n); + + for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]); + + return 0; +} + +function add(p, q) { + var a = gf(), b = gf(), c = gf(), + d = gf(), e = gf(), f = gf(), + g = gf(), h = gf(), t = gf(); + + Z(a, p[1], p[0]); + Z(t, q[1], q[0]); + M(a, a, t); + A(b, p[0], p[1]); + A(t, q[0], q[1]); + M(b, b, t); + M(c, p[3], q[3]); + M(c, c, D2); + M(d, p[2], q[2]); + A(d, d, d); + Z(e, b, a); + Z(f, d, c); + A(g, d, c); + A(h, b, a); + + M(p[0], e, f); + M(p[1], h, g); + M(p[2], g, f); + M(p[3], e, h); +} + +function cswap(p, q, b) { + var i; + for (i = 0; i < 4; i++) { + sel25519(p[i], q[i], b); + } +} + +function pack(r, p) { + var tx = gf(), ty = gf(), zi = gf(); + inv25519(zi, p[2]); + M(tx, p[0], zi); + M(ty, p[1], zi); + pack25519(r, ty); + r[31] ^= par25519(tx) << 7; +} + +function scalarmult(p, q, s) { + var b, i; + set25519(p[0], gf0); + set25519(p[1], gf1); + set25519(p[2], gf1); + set25519(p[3], gf0); + for (i = 255; i >= 0; --i) { + b = (s[(i/8)|0] >> (i&7)) & 1; + cswap(p, q, b); + add(q, p); + add(p, p); + cswap(p, q, b); + } +} + +function scalarbase(p, s) { + var q = [gf(), gf(), gf(), gf()]; + set25519(q[0], X); + set25519(q[1], Y); + set25519(q[2], gf1); + M(q[3], X, Y); + scalarmult(p, q, s); +} + +function crypto_sign_keypair(pk, sk, seeded) { + var d = new Uint8Array(64); + var p = [gf(), gf(), gf(), gf()]; + var i; + + if (!seeded) randombytes(sk, 32); + crypto_hash(d, sk, 32); + d[0] &= 248; + d[31] &= 127; + d[31] |= 64; + + scalarbase(p, d); + pack(pk, p); + + for (i = 0; i < 32; i++) sk[i+32] = pk[i]; + return 0; +} + +var L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]); + +function modL(r, x) { + var carry, i, j, k; + for (i = 63; i >= 32; --i) { + carry = 0; + for (j = i - 32, k = i - 12; j < k; ++j) { + x[j] += carry - 16 * x[i] * L[j - (i - 32)]; + carry = (x[j] + 128) >> 8; + x[j] -= carry * 256; + } + x[j] += carry; + x[i] = 0; + } + carry = 0; + for (j = 0; j < 32; j++) { + x[j] += carry - (x[31] >> 4) * L[j]; + carry = x[j] >> 8; + x[j] &= 255; + } + for (j = 0; j < 32; j++) x[j] -= carry * L[j]; + for (i = 0; i < 32; i++) { + x[i+1] += x[i] >> 8; + r[i] = x[i] & 255; + } +} + +function reduce(r) { + var x = new Float64Array(64), i; + for (i = 0; i < 64; i++) x[i] = r[i]; + for (i = 0; i < 64; i++) r[i] = 0; + modL(r, x); +} + +// Note: difference from C - smlen returned, not passed as argument. +function crypto_sign(sm, m, n, sk) { + var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64); + var i, j, x = new Float64Array(64); + var p = [gf(), gf(), gf(), gf()]; + + crypto_hash(d, sk, 32); + d[0] &= 248; + d[31] &= 127; + d[31] |= 64; + + var smlen = n + 64; + for (i = 0; i < n; i++) sm[64 + i] = m[i]; + for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i]; + + crypto_hash(r, sm.subarray(32), n+32); + reduce(r); + scalarbase(p, r); + pack(sm, p); + + for (i = 32; i < 64; i++) sm[i] = sk[i]; + crypto_hash(h, sm, n + 64); + reduce(h); + + for (i = 0; i < 64; i++) x[i] = 0; + for (i = 0; i < 32; i++) x[i] = r[i]; + for (i = 0; i < 32; i++) { + for (j = 0; j < 32; j++) { + x[i+j] += h[i] * d[j]; + } + } + + modL(sm.subarray(32), x); + return smlen; +} + +function unpackneg(r, p) { + var t = gf(), chk = gf(), num = gf(), + den = gf(), den2 = gf(), den4 = gf(), + den6 = gf(); + + set25519(r[2], gf1); + unpack25519(r[1], p); + S(num, r[1]); + M(den, num, D); + Z(num, num, r[2]); + A(den, r[2], den); + + S(den2, den); + S(den4, den2); + M(den6, den4, den2); + M(t, den6, num); + M(t, t, den); + + pow2523(t, t); + M(t, t, num); + M(t, t, den); + M(t, t, den); + M(r[0], t, den); + + S(chk, r[0]); + M(chk, chk, den); + if (neq25519(chk, num)) M(r[0], r[0], I); + + S(chk, r[0]); + M(chk, chk, den); + if (neq25519(chk, num)) return -1; + + if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]); + + M(r[3], r[0], r[1]); + return 0; +} + +function crypto_sign_open(m, sm, n, pk) { + var i, mlen; + var t = new Uint8Array(32), h = new Uint8Array(64); + var p = [gf(), gf(), gf(), gf()], + q = [gf(), gf(), gf(), gf()]; + + mlen = -1; + if (n < 64) return -1; + + if (unpackneg(q, pk)) return -1; + + for (i = 0; i < n; i++) m[i] = sm[i]; + for (i = 0; i < 32; i++) m[i+32] = pk[i]; + crypto_hash(h, m, n); + reduce(h); + scalarmult(p, q, h); + + scalarbase(q, sm.subarray(32)); + add(p, q); + pack(t, p); + + n -= 64; + if (crypto_verify_32(sm, 0, t, 0)) { + for (i = 0; i < n; i++) m[i] = 0; + return -1; + } + + for (i = 0; i < n; i++) m[i] = sm[i + 64]; + mlen = n; + return mlen; +} + +var crypto_secretbox_KEYBYTES = 32, + crypto_secretbox_NONCEBYTES = 24, + crypto_secretbox_ZEROBYTES = 32, + crypto_secretbox_BOXZEROBYTES = 16, + crypto_scalarmult_BYTES = 32, + crypto_scalarmult_SCALARBYTES = 32, + crypto_box_PUBLICKEYBYTES = 32, + crypto_box_SECRETKEYBYTES = 32, + crypto_box_BEFORENMBYTES = 32, + crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES, + crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES, + crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES, + crypto_sign_BYTES = 64, + crypto_sign_PUBLICKEYBYTES = 32, + crypto_sign_SECRETKEYBYTES = 64, + crypto_sign_SEEDBYTES = 32, + crypto_hash_BYTES = 64; + +nacl.lowlevel = { + crypto_core_hsalsa20: crypto_core_hsalsa20, + crypto_stream_xor: crypto_stream_xor, + crypto_stream: crypto_stream, + crypto_stream_salsa20_xor: crypto_stream_salsa20_xor, + crypto_stream_salsa20: crypto_stream_salsa20, + crypto_onetimeauth: crypto_onetimeauth, + crypto_onetimeauth_verify: crypto_onetimeauth_verify, + crypto_verify_16: crypto_verify_16, + crypto_verify_32: crypto_verify_32, + crypto_secretbox: crypto_secretbox, + crypto_secretbox_open: crypto_secretbox_open, + crypto_scalarmult: crypto_scalarmult, + crypto_scalarmult_base: crypto_scalarmult_base, + crypto_box_beforenm: crypto_box_beforenm, + crypto_box_afternm: crypto_box_afternm, + crypto_box: crypto_box, + crypto_box_open: crypto_box_open, + crypto_box_keypair: crypto_box_keypair, + crypto_hash: crypto_hash, + crypto_sign: crypto_sign, + crypto_sign_keypair: crypto_sign_keypair, + crypto_sign_open: crypto_sign_open, + + crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES, + crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES, + crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES, + crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES, + crypto_scalarmult_BYTES: crypto_scalarmult_BYTES, + crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES, + crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES, + crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES, + crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES, + crypto_box_NONCEBYTES: crypto_box_NONCEBYTES, + crypto_box_ZEROBYTES: crypto_box_ZEROBYTES, + crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES, + crypto_sign_BYTES: crypto_sign_BYTES, + crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES, + crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES, + crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES, + crypto_hash_BYTES: crypto_hash_BYTES +}; + +/* High-level API */ + +function checkLengths(k, n) { + if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size'); + if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size'); +} + +function checkBoxLengths(pk, sk) { + if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size'); + if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size'); +} + +function checkArrayTypes() { + var t, i; + for (i = 0; i < arguments.length; i++) { + if ((t = Object.prototype.toString.call(arguments[i])) !== '[object Uint8Array]') + throw new TypeError('unexpected type ' + t + ', use Uint8Array'); + } +} + +function cleanup(arr) { + for (var i = 0; i < arr.length; i++) arr[i] = 0; +} + +// TODO: Completely remove this in v0.15. +if (!nacl.util) { + nacl.util = {}; + nacl.util.decodeUTF8 = nacl.util.encodeUTF8 = nacl.util.encodeBase64 = nacl.util.decodeBase64 = function() { + throw new Error('nacl.util moved into separate package: https://github.com/dchest/tweetnacl-util-js'); + }; +} + +nacl.randomBytes = function(n) { + var b = new Uint8Array(n); + randombytes(b, n); + return b; +}; + +nacl.secretbox = function(msg, nonce, key) { + checkArrayTypes(msg, nonce, key); + checkLengths(key, nonce); + var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length); + var c = new Uint8Array(m.length); + for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i]; + crypto_secretbox(c, m, m.length, nonce, key); + return c.subarray(crypto_secretbox_BOXZEROBYTES); +}; + +nacl.secretbox.open = function(box, nonce, key) { + checkArrayTypes(box, nonce, key); + checkLengths(key, nonce); + var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length); + var m = new Uint8Array(c.length); + for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i]; + if (c.length < 32) return false; + if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return false; + return m.subarray(crypto_secretbox_ZEROBYTES); +}; + +nacl.secretbox.keyLength = crypto_secretbox_KEYBYTES; +nacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES; +nacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES; + +nacl.scalarMult = function(n, p) { + checkArrayTypes(n, p); + if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); + if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size'); + var q = new Uint8Array(crypto_scalarmult_BYTES); + crypto_scalarmult(q, n, p); + return q; +}; + +nacl.scalarMult.base = function(n) { + checkArrayTypes(n); + if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size'); + var q = new Uint8Array(crypto_scalarmult_BYTES); + crypto_scalarmult_base(q, n); + return q; +}; + +nacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES; +nacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES; + +nacl.box = function(msg, nonce, publicKey, secretKey) { + var k = nacl.box.before(publicKey, secretKey); + return nacl.secretbox(msg, nonce, k); +}; + +nacl.box.before = function(publicKey, secretKey) { + checkArrayTypes(publicKey, secretKey); + checkBoxLengths(publicKey, secretKey); + var k = new Uint8Array(crypto_box_BEFORENMBYTES); + crypto_box_beforenm(k, publicKey, secretKey); + return k; +}; + +nacl.box.after = nacl.secretbox; + +nacl.box.open = function(msg, nonce, publicKey, secretKey) { + var k = nacl.box.before(publicKey, secretKey); + return nacl.secretbox.open(msg, nonce, k); +}; + +nacl.box.open.after = nacl.secretbox.open; + +nacl.box.keyPair = function() { + var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); + var sk = new Uint8Array(crypto_box_SECRETKEYBYTES); + crypto_box_keypair(pk, sk); + return {publicKey: pk, secretKey: sk}; +}; + +nacl.box.keyPair.fromSecretKey = function(secretKey) { + checkArrayTypes(secretKey); + if (secretKey.length !== crypto_box_SECRETKEYBYTES) + throw new Error('bad secret key size'); + var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES); + crypto_scalarmult_base(pk, secretKey); + return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; +}; + +nacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES; +nacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES; +nacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES; +nacl.box.nonceLength = crypto_box_NONCEBYTES; +nacl.box.overheadLength = nacl.secretbox.overheadLength; + +nacl.sign = function(msg, secretKey) { + checkArrayTypes(msg, secretKey); + if (secretKey.length !== crypto_sign_SECRETKEYBYTES) + throw new Error('bad secret key size'); + var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length); + crypto_sign(signedMsg, msg, msg.length, secretKey); + return signedMsg; +}; + +nacl.sign.open = function(signedMsg, publicKey) { + if (arguments.length !== 2) + throw new Error('nacl.sign.open accepts 2 arguments; did you mean to use nacl.sign.detached.verify?'); + checkArrayTypes(signedMsg, publicKey); + if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) + throw new Error('bad public key size'); + var tmp = new Uint8Array(signedMsg.length); + var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey); + if (mlen < 0) return null; + var m = new Uint8Array(mlen); + for (var i = 0; i < m.length; i++) m[i] = tmp[i]; + return m; +}; + +nacl.sign.detached = function(msg, secretKey) { + var signedMsg = nacl.sign(msg, secretKey); + var sig = new Uint8Array(crypto_sign_BYTES); + for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i]; + return sig; +}; + +nacl.sign.detached.verify = function(msg, sig, publicKey) { + checkArrayTypes(msg, sig, publicKey); + if (sig.length !== crypto_sign_BYTES) + throw new Error('bad signature size'); + if (publicKey.length !== crypto_sign_PUBLICKEYBYTES) + throw new Error('bad public key size'); + var sm = new Uint8Array(crypto_sign_BYTES + msg.length); + var m = new Uint8Array(crypto_sign_BYTES + msg.length); + var i; + for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i]; + for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i]; + return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0); +}; + +nacl.sign.keyPair = function() { + var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); + var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); + crypto_sign_keypair(pk, sk); + return {publicKey: pk, secretKey: sk}; +}; + +nacl.sign.keyPair.fromSecretKey = function(secretKey) { + checkArrayTypes(secretKey); + if (secretKey.length !== crypto_sign_SECRETKEYBYTES) + throw new Error('bad secret key size'); + var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); + for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i]; + return {publicKey: pk, secretKey: new Uint8Array(secretKey)}; +}; + +nacl.sign.keyPair.fromSeed = function(seed) { + checkArrayTypes(seed); + if (seed.length !== crypto_sign_SEEDBYTES) + throw new Error('bad seed size'); + var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES); + var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES); + for (var i = 0; i < 32; i++) sk[i] = seed[i]; + crypto_sign_keypair(pk, sk, true); + return {publicKey: pk, secretKey: sk}; +}; + +nacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES; +nacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES; +nacl.sign.seedLength = crypto_sign_SEEDBYTES; +nacl.sign.signatureLength = crypto_sign_BYTES; + +nacl.hash = function(msg) { + checkArrayTypes(msg); + var h = new Uint8Array(crypto_hash_BYTES); + crypto_hash(h, msg, msg.length); + return h; +}; + +nacl.hash.hashLength = crypto_hash_BYTES; + +nacl.verify = function(x, y) { + checkArrayTypes(x, y); + // Zero length arguments are considered not equal. + if (x.length === 0 || y.length === 0) return false; + if (x.length !== y.length) return false; + return (vn(x, 0, y, 0, x.length) === 0) ? true : false; +}; + +nacl.setPRNG = function(fn) { + randombytes = fn; +}; + +(function() { + // Initialize PRNG if environment provides CSPRNG. + // If not, methods calling randombytes will throw. + var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null; + if (crypto && crypto.getRandomValues) { + // Browsers. + var QUOTA = 65536; + nacl.setPRNG(function(x, n) { + var i, v = new Uint8Array(n); + for (i = 0; i < n; i += QUOTA) { + crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA))); + } + for (i = 0; i < n; i++) x[i] = v[i]; + cleanup(v); + }); + } else if (true) { + // Node.js. + crypto = __webpack_require__(417); + if (crypto && crypto.randomBytes) { + nacl.setPRNG(function(x, n) { + var i, v = crypto.randomBytes(n); + for (i = 0; i < n; i++) x[i] = v[i]; + cleanup(v); + }); + } + } +})(); + +})( true && module.exports ? module.exports : (self.nacl = self.nacl || {})); + + +/***/ }), +/* 197 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + +const usm = __webpack_require__(856); + +exports.implementation = class URLImpl { + constructor(constructorArgs) { + const url = constructorArgs[0]; + const base = constructorArgs[1]; + + let parsedBase = null; + if (base !== undefined) { + parsedBase = usm.basicURLParse(base); + if (parsedBase === "failure") { + throw new TypeError("Invalid base URL"); + } + } + + const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase }); + if (parsedURL === "failure") { + throw new TypeError("Invalid URL"); + } + + this._url = parsedURL; + + // TODO: query stuff + } + + get href() { + return usm.serializeURL(this._url); + } + + set href(v) { + const parsedURL = usm.basicURLParse(v); + if (parsedURL === "failure") { + throw new TypeError("Invalid URL"); + } + + this._url = parsedURL; + } + + get origin() { + return usm.serializeURLOrigin(this._url); + } + + get protocol() { + return this._url.scheme + ":"; + } + + set protocol(v) { + usm.basicURLParse(v + ":", { url: this._url, stateOverride: "scheme start" }); + } + + get username() { + return this._url.username; + } + + set username(v) { + if (usm.cannotHaveAUsernamePasswordPort(this._url)) { + return; + } + + usm.setTheUsername(this._url, v); + } + + get password() { + return this._url.password; + } + + set password(v) { + if (usm.cannotHaveAUsernamePasswordPort(this._url)) { + return; + } + + usm.setThePassword(this._url, v); + } + + get host() { + const url = this._url; + + if (url.host === null) { + return ""; + } + + if (url.port === null) { + return usm.serializeHost(url.host); + } + + return usm.serializeHost(url.host) + ":" + usm.serializeInteger(url.port); + } + + set host(v) { + if (this._url.cannotBeABaseURL) { + return; + } + + usm.basicURLParse(v, { url: this._url, stateOverride: "host" }); + } + + get hostname() { + if (this._url.host === null) { + return ""; + } + + return usm.serializeHost(this._url.host); + } + + set hostname(v) { + if (this._url.cannotBeABaseURL) { + return; + } + + usm.basicURLParse(v, { url: this._url, stateOverride: "hostname" }); + } + + get port() { + if (this._url.port === null) { + return ""; + } + + return usm.serializeInteger(this._url.port); + } + + set port(v) { + if (usm.cannotHaveAUsernamePasswordPort(this._url)) { + return; + } + + if (v === "") { + this._url.port = null; + } else { + usm.basicURLParse(v, { url: this._url, stateOverride: "port" }); + } + } + + get pathname() { + if (this._url.cannotBeABaseURL) { + return this._url.path[0]; + } + + if (this._url.path.length === 0) { + return ""; + } + + return "/" + this._url.path.join("/"); + } + + set pathname(v) { + if (this._url.cannotBeABaseURL) { + return; + } + + this._url.path = []; + usm.basicURLParse(v, { url: this._url, stateOverride: "path start" }); + } + + get search() { + if (this._url.query === null || this._url.query === "") { + return ""; + } + + return "?" + this._url.query; + } + + set search(v) { + // TODO: query stuff + + const url = this._url; + + if (v === "") { + url.query = null; + return; + } + + const input = v[0] === "?" ? v.substring(1) : v; + url.query = ""; + usm.basicURLParse(input, { url, stateOverride: "query" }); + } + + get hash() { + if (this._url.fragment === null || this._url.fragment === "") { + return ""; + } + + return "#" + this._url.fragment; + } + + set hash(v) { + if (v === "") { + this._url.fragment = null; + return; + } + + const input = v[0] === "#" ? v.substring(1) : v; + this._url.fragment = ""; + usm.basicURLParse(input, { url: this._url, stateOverride: "fragment" }); + } + + toJSON() { + return this.href; + } +}; + + +/***/ }), +/* 198 */, +/* 199 */, +/* 200 */, +/* 201 */ +/***/ (function(module) { + +// populates missing values +module.exports = function(dst, src) { + + Object.keys(src).forEach(function(prop) + { + dst[prop] = dst[prop] || src[prop]; + }); + + return dst; +}; + + +/***/ }), +/* 202 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +// Copyright 2016 Joyent, Inc. + +module.exports = Certificate; + +var assert = __webpack_require__(489); +var Buffer = __webpack_require__(726).Buffer; +var algs = __webpack_require__(603); +var crypto = __webpack_require__(417); +var Fingerprint = __webpack_require__(400); +var Signature = __webpack_require__(575); +var errs = __webpack_require__(570); +var util = __webpack_require__(669); +var utils = __webpack_require__(270); +var Key = __webpack_require__(500); +var PrivateKey = __webpack_require__(502); +var Identity = __webpack_require__(378); + +var formats = {}; +formats['openssh'] = __webpack_require__(596); +formats['x509'] = __webpack_require__(323); +formats['pem'] = __webpack_require__(995); + +var CertificateParseError = errs.CertificateParseError; +var InvalidAlgorithmError = errs.InvalidAlgorithmError; + +function Certificate(opts) { + assert.object(opts, 'options'); + assert.arrayOfObject(opts.subjects, 'options.subjects'); + utils.assertCompatible(opts.subjects[0], Identity, [1, 0], + 'options.subjects'); + utils.assertCompatible(opts.subjectKey, Key, [1, 0], + 'options.subjectKey'); + utils.assertCompatible(opts.issuer, Identity, [1, 0], 'options.issuer'); + if (opts.issuerKey !== undefined) { + utils.assertCompatible(opts.issuerKey, Key, [1, 0], + 'options.issuerKey'); + } + assert.object(opts.signatures, 'options.signatures'); + assert.buffer(opts.serial, 'options.serial'); + assert.date(opts.validFrom, 'options.validFrom'); + assert.date(opts.validUntil, 'optons.validUntil'); + + assert.optionalArrayOfString(opts.purposes, 'options.purposes'); + + this._hashCache = {}; + + this.subjects = opts.subjects; + this.issuer = opts.issuer; + this.subjectKey = opts.subjectKey; + this.issuerKey = opts.issuerKey; + this.signatures = opts.signatures; + this.serial = opts.serial; + this.validFrom = opts.validFrom; + this.validUntil = opts.validUntil; + this.purposes = opts.purposes; +} + +Certificate.formats = formats; + +Certificate.prototype.toBuffer = function (format, options) { + if (format === undefined) + format = 'x509'; + assert.string(format, 'format'); + assert.object(formats[format], 'formats[format]'); + assert.optionalObject(options, 'options'); + + return (formats[format].write(this, options)); +}; + +Certificate.prototype.toString = function (format, options) { + if (format === undefined) + format = 'pem'; + return (this.toBuffer(format, options).toString()); +}; + +Certificate.prototype.fingerprint = function (algo) { + if (algo === undefined) + algo = 'sha256'; + assert.string(algo, 'algorithm'); + var opts = { + type: 'certificate', + hash: this.hash(algo), + algorithm: algo + }; + return (new Fingerprint(opts)); +}; + +Certificate.prototype.hash = function (algo) { + assert.string(algo, 'algorithm'); + algo = algo.toLowerCase(); + if (algs.hashAlgs[algo] === undefined) + throw (new InvalidAlgorithmError(algo)); + + if (this._hashCache[algo]) + return (this._hashCache[algo]); + + var hash = crypto.createHash(algo). + update(this.toBuffer('x509')).digest(); + this._hashCache[algo] = hash; + return (hash); +}; + +Certificate.prototype.isExpired = function (when) { + if (when === undefined) + when = new Date(); + return (!((when.getTime() >= this.validFrom.getTime()) && + (when.getTime() < this.validUntil.getTime()))); +}; + +Certificate.prototype.isSignedBy = function (issuerCert) { + utils.assertCompatible(issuerCert, Certificate, [1, 0], 'issuer'); + + if (!this.issuer.equals(issuerCert.subjects[0])) + return (false); + if (this.issuer.purposes && this.issuer.purposes.length > 0 && + this.issuer.purposes.indexOf('ca') === -1) { + return (false); + } + + return (this.isSignedByKey(issuerCert.subjectKey)); +}; + +Certificate.prototype.getExtension = function (keyOrOid) { + assert.string(keyOrOid, 'keyOrOid'); + var ext = this.getExtensions().filter(function (maybeExt) { + if (maybeExt.format === 'x509') + return (maybeExt.oid === keyOrOid); + if (maybeExt.format === 'openssh') + return (maybeExt.name === keyOrOid); + return (false); + })[0]; + return (ext); +}; + +Certificate.prototype.getExtensions = function () { + var exts = []; + var x509 = this.signatures.x509; + if (x509 && x509.extras && x509.extras.exts) { + x509.extras.exts.forEach(function (ext) { + ext.format = 'x509'; + exts.push(ext); + }); + } + var openssh = this.signatures.openssh; + if (openssh && openssh.exts) { + openssh.exts.forEach(function (ext) { + ext.format = 'openssh'; + exts.push(ext); + }); + } + return (exts); +}; + +Certificate.prototype.isSignedByKey = function (issuerKey) { + utils.assertCompatible(issuerKey, Key, [1, 2], 'issuerKey'); + + if (this.issuerKey !== undefined) { + return (this.issuerKey. + fingerprint('sha512').matches(issuerKey)); + } + + var fmt = Object.keys(this.signatures)[0]; + var valid = formats[fmt].verify(this, issuerKey); + if (valid) + this.issuerKey = issuerKey; + return (valid); +}; + +Certificate.prototype.signWith = function (key) { + utils.assertCompatible(key, PrivateKey, [1, 2], 'key'); + var fmts = Object.keys(formats); + var didOne = false; + for (var i = 0; i < fmts.length; ++i) { + if (fmts[i] !== 'pem') { + var ret = formats[fmts[i]].sign(this, key); + if (ret === true) + didOne = true; + } + } + if (!didOne) { + throw (new Error('Failed to sign the certificate for any ' + + 'available certificate formats')); + } +}; + +Certificate.createSelfSigned = function (subjectOrSubjects, key, options) { + var subjects; + if (Array.isArray(subjectOrSubjects)) + subjects = subjectOrSubjects; + else + subjects = [subjectOrSubjects]; + + assert.arrayOfObject(subjects); + subjects.forEach(function (subject) { + utils.assertCompatible(subject, Identity, [1, 0], 'subject'); + }); + + utils.assertCompatible(key, PrivateKey, [1, 2], 'private key'); + + assert.optionalObject(options, 'options'); + if (options === undefined) + options = {}; + assert.optionalObject(options.validFrom, 'options.validFrom'); + assert.optionalObject(options.validUntil, 'options.validUntil'); + var validFrom = options.validFrom; + var validUntil = options.validUntil; + if (validFrom === undefined) + validFrom = new Date(); + if (validUntil === undefined) { + assert.optionalNumber(options.lifetime, 'options.lifetime'); + var lifetime = options.lifetime; + if (lifetime === undefined) + lifetime = 10*365*24*3600; + validUntil = new Date(); + validUntil.setTime(validUntil.getTime() + lifetime*1000); + } + assert.optionalBuffer(options.serial, 'options.serial'); + var serial = options.serial; + if (serial === undefined) + serial = Buffer.from('0000000000000001', 'hex'); + + var purposes = options.purposes; + if (purposes === undefined) + purposes = []; + + if (purposes.indexOf('signature') === -1) + purposes.push('signature'); + + /* Self-signed certs are always CAs. */ + if (purposes.indexOf('ca') === -1) + purposes.push('ca'); + if (purposes.indexOf('crl') === -1) + purposes.push('crl'); + + /* + * If we weren't explicitly given any other purposes, do the sensible + * thing and add some basic ones depending on the subject type. + */ + if (purposes.length <= 3) { + var hostSubjects = subjects.filter(function (subject) { + return (subject.type === 'host'); + }); + var userSubjects = subjects.filter(function (subject) { + return (subject.type === 'user'); + }); + if (hostSubjects.length > 0) { + if (purposes.indexOf('serverAuth') === -1) + purposes.push('serverAuth'); + } + if (userSubjects.length > 0) { + if (purposes.indexOf('clientAuth') === -1) + purposes.push('clientAuth'); + } + if (userSubjects.length > 0 || hostSubjects.length > 0) { + if (purposes.indexOf('keyAgreement') === -1) + purposes.push('keyAgreement'); + if (key.type === 'rsa' && + purposes.indexOf('encryption') === -1) + purposes.push('encryption'); + } + } + + var cert = new Certificate({ + subjects: subjects, + issuer: subjects[0], + subjectKey: key.toPublic(), + issuerKey: key.toPublic(), + signatures: {}, + serial: serial, + validFrom: validFrom, + validUntil: validUntil, + purposes: purposes + }); + cert.signWith(key); + + return (cert); +}; + +Certificate.create = + function (subjectOrSubjects, key, issuer, issuerKey, options) { + var subjects; + if (Array.isArray(subjectOrSubjects)) + subjects = subjectOrSubjects; + else + subjects = [subjectOrSubjects]; + + assert.arrayOfObject(subjects); + subjects.forEach(function (subject) { + utils.assertCompatible(subject, Identity, [1, 0], 'subject'); + }); + + utils.assertCompatible(key, Key, [1, 0], 'key'); + if (PrivateKey.isPrivateKey(key)) + key = key.toPublic(); + utils.assertCompatible(issuer, Identity, [1, 0], 'issuer'); + utils.assertCompatible(issuerKey, PrivateKey, [1, 2], 'issuer key'); + + assert.optionalObject(options, 'options'); + if (options === undefined) + options = {}; + assert.optionalObject(options.validFrom, 'options.validFrom'); + assert.optionalObject(options.validUntil, 'options.validUntil'); + var validFrom = options.validFrom; + var validUntil = options.validUntil; + if (validFrom === undefined) + validFrom = new Date(); + if (validUntil === undefined) { + assert.optionalNumber(options.lifetime, 'options.lifetime'); + var lifetime = options.lifetime; + if (lifetime === undefined) + lifetime = 10*365*24*3600; + validUntil = new Date(); + validUntil.setTime(validUntil.getTime() + lifetime*1000); + } + assert.optionalBuffer(options.serial, 'options.serial'); + var serial = options.serial; + if (serial === undefined) + serial = Buffer.from('0000000000000001', 'hex'); + + var purposes = options.purposes; + if (purposes === undefined) + purposes = []; + + if (purposes.indexOf('signature') === -1) + purposes.push('signature'); + + if (options.ca === true) { + if (purposes.indexOf('ca') === -1) + purposes.push('ca'); + if (purposes.indexOf('crl') === -1) + purposes.push('crl'); + } + + var hostSubjects = subjects.filter(function (subject) { + return (subject.type === 'host'); + }); + var userSubjects = subjects.filter(function (subject) { + return (subject.type === 'user'); + }); + if (hostSubjects.length > 0) { + if (purposes.indexOf('serverAuth') === -1) + purposes.push('serverAuth'); + } + if (userSubjects.length > 0) { + if (purposes.indexOf('clientAuth') === -1) + purposes.push('clientAuth'); + } + if (userSubjects.length > 0 || hostSubjects.length > 0) { + if (purposes.indexOf('keyAgreement') === -1) + purposes.push('keyAgreement'); + if (key.type === 'rsa' && + purposes.indexOf('encryption') === -1) + purposes.push('encryption'); + } + + var cert = new Certificate({ + subjects: subjects, + issuer: issuer, + subjectKey: key, + issuerKey: issuerKey.toPublic(), + signatures: {}, + serial: serial, + validFrom: validFrom, + validUntil: validUntil, + purposes: purposes + }); + cert.signWith(issuerKey); + + return (cert); +}; + +Certificate.parse = function (data, format, options) { + if (typeof (data) !== 'string') + assert.buffer(data, 'data'); + if (format === undefined) + format = 'auto'; + assert.string(format, 'format'); + if (typeof (options) === 'string') + options = { filename: options }; + assert.optionalObject(options, 'options'); + if (options === undefined) + options = {}; + assert.optionalString(options.filename, 'options.filename'); + if (options.filename === undefined) + options.filename = '(unnamed)'; + + assert.object(formats[format], 'formats[format]'); + + try { + var k = formats[format].read(data, options); + return (k); + } catch (e) { + throw (new CertificateParseError(options.filename, format, e)); + } +}; + +Certificate.isCertificate = function (obj, ver) { + return (utils.isCompatible(obj, Certificate, ver)); +}; + +/* + * API versions for Certificate: + * [1,0] -- initial ver + * [1,1] -- openssh format now unpacks extensions + */ +Certificate.prototype._sshpkApiVersion = [1, 1]; + +Certificate._oldVersionDetect = function (obj) { + return ([1, 0]); +}; + + +/***/ }), +/* 203 */ +/***/ (function(module) { + +"use strict"; +/*! + * @description Recursive object extending + * @author Viacheslav Lotsmanov + * @license MIT + * + * The MIT License (MIT) + * + * Copyright (c) 2013-2018 Viacheslav Lotsmanov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + + +function isSpecificValue(val) { + return ( + val instanceof Buffer + || val instanceof Date + || val instanceof RegExp + ) ? true : false; +} + +function cloneSpecificValue(val) { + if (val instanceof Buffer) { + var x = Buffer.alloc + ? Buffer.alloc(val.length) + : new Buffer(val.length); + val.copy(x); + return x; + } else if (val instanceof Date) { + return new Date(val.getTime()); + } else if (val instanceof RegExp) { + return new RegExp(val); + } else { + throw new Error('Unexpected situation'); + } +} + +/** + * Recursive cloning array. + */ +function deepCloneArray(arr) { + var clone = []; + arr.forEach(function (item, index) { + if (typeof item === 'object' && item !== null) { + if (Array.isArray(item)) { + clone[index] = deepCloneArray(item); + } else if (isSpecificValue(item)) { + clone[index] = cloneSpecificValue(item); + } else { + clone[index] = deepExtend({}, item); + } + } else { + clone[index] = item; + } + }); + return clone; +} + +function safeGetProperty(object, property) { + return property === '__proto__' ? undefined : object[property]; +} + +/** + * Extening object that entered in first argument. + * + * Returns extended object or false if have no target object or incorrect type. + * + * If you wish to clone source object (without modify it), just use empty new + * object as first argument, like this: + * deepExtend({}, yourObj_1, [yourObj_N]); + */ +var deepExtend = module.exports = function (/*obj_1, [obj_2], [obj_N]*/) { + if (arguments.length < 1 || typeof arguments[0] !== 'object') { + return false; + } + + if (arguments.length < 2) { + return arguments[0]; + } + + var target = arguments[0]; + + // convert arguments to array and cut off target object + var args = Array.prototype.slice.call(arguments, 1); + + var val, src, clone; + + args.forEach(function (obj) { + // skip argument if isn't an object, is null, or is an array + if (typeof obj !== 'object' || obj === null || Array.isArray(obj)) { + return; + } + + Object.keys(obj).forEach(function (key) { + src = safeGetProperty(target, key); // source value + val = safeGetProperty(obj, key); // new value + + // recursion prevention + if (val === target) { + return; + + /** + * if new value isn't object then just overwrite by new value + * instead of extending. + */ + } else if (typeof val !== 'object' || val === null) { + target[key] = val; + return; + + // just clone arrays (and recursive clone objects inside) + } else if (Array.isArray(val)) { + target[key] = deepCloneArray(val); + return; + + // custom cloning and overwrite for specific objects + } else if (isSpecificValue(val)) { + target[key] = cloneSpecificValue(val); + return; + + // overwrite by new value if source isn't object or array + } else if (typeof src !== 'object' || src === null || Array.isArray(src)) { + target[key] = deepExtend({}, val); + return; + + // source value and new value is objects both, extending... + } else { + target[key] = deepExtend(src, val); + return; + } + }); + }); + + return target; +}; + + +/***/ }), +/* 204 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _validate = _interopRequireDefault(__webpack_require__(634)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function parse(uuid) { + if (!(0, _validate.default)(uuid)) { + throw TypeError('Invalid UUID'); + } + + let v; + const arr = new Uint8Array(16); // Parse ########-....-....-....-............ + + arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; + arr[1] = v >>> 16 & 0xff; + arr[2] = v >>> 8 & 0xff; + arr[3] = v & 0xff; // Parse ........-####-....-....-............ + + arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; + arr[5] = v & 0xff; // Parse ........-....-####-....-............ + + arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; + arr[7] = v & 0xff; // Parse ........-....-....-####-............ + + arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; + arr[9] = v & 0xff; // Parse ........-....-....-....-############ + // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) + + arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; + arr[11] = v / 0x100000000 & 0xff; + arr[12] = v >>> 24 & 0xff; + arr[13] = v >>> 16 & 0xff; + arr[14] = v >>> 8 & 0xff; + arr[15] = v & 0xff; + return arr; +} + +var _default = parse; +exports.default = _default; + +/***/ }), +/* 205 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _cyrillicLettersAndMarks = _interopRequireDefault(__webpack_require__(339)); + +var _latinAccentChars = _interopRequireDefault(__webpack_require__(401)); + +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); + +var _validUrlBalancedParens = _interopRequireDefault(__webpack_require__(122)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +// Valid end-of-path chracters (so /foo. does not gobble the period). +// 1. Allow =&# for empty URL parameters and other URL-join artifacts +var validUrlPathEndingChars = (0, _regexSupplant["default"])(/[\+\-a-z#{cyrillicLettersAndMarks}0-9=_#\/#{latinAccentChars}]|(?:#{validUrlBalancedParens})/i, { + cyrillicLettersAndMarks: _cyrillicLettersAndMarks["default"], + latinAccentChars: _latinAccentChars["default"], + validUrlBalancedParens: _validUrlBalancedParens["default"] +}); +var _default = validUrlPathEndingChars; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 206 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +var has = __webpack_require__(975); +var toIObject = __webpack_require__(78); +var arrayIndexOf = __webpack_require__(786)(false); +var IE_PROTO = __webpack_require__(331)('IE_PROTO'); + +module.exports = function (object, names) { + var O = toIObject(object); + var i = 0; + var result = []; + var key; + for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key); + // Don't enum bug & hidden keys + while (names.length > i) if (has(O, key = names[i++])) { + ~arrayIndexOf(result, key) || result.push(key); + } + return result; +}; + + +/***/ }), +/* 207 */, +/* 208 */, +/* 209 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +exports.f = __webpack_require__(621); + + +/***/ }), +/* 210 */ +/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { + +"use strict"; + +var $export = __webpack_require__(195); +var aFunction = __webpack_require__(569); +var toObject = __webpack_require__(230); +var fails = __webpack_require__(971); +var $sort = [].sort; +var test = [1, 2, 3]; + +$export($export.P + $export.F * (fails(function () { + // IE8- + test.sort(undefined); +}) || !fails(function () { + // V8 bug + test.sort(null); + // Old WebKit +}) || !__webpack_require__(482)($sort)), 'Array', { + // 22.1.3.25 Array.prototype.sort(comparefn) + sort: function sort(comparefn) { + return comparefn === undefined + ? $sort.call(toObject(this)) + : $sort.call(toObject(this), aFunction(comparefn)); + } +}); + + +/***/ }), +/* 211 */ +/***/ (function(module) { + +module.exports = require("https"); + +/***/ }), +/* 212 */ +/***/ (function(module) { + +"use strict"; + +module.exports = function generate_validate(it, $keyword, $ruleType) { + var out = ''; + var $async = it.schema.$async === true, + $refKeywords = it.util.schemaHasRulesExcept(it.schema, it.RULES.all, '$ref'), + $id = it.self._getId(it.schema); + if (it.opts.strictKeywords) { + var $unknownKwd = it.util.schemaUnknownRules(it.schema, it.RULES.keywords); + if ($unknownKwd) { + var $keywordsMsg = 'unknown keyword: ' + $unknownKwd; + if (it.opts.strictKeywords === 'log') it.logger.warn($keywordsMsg); + else throw new Error($keywordsMsg); + } + } + if (it.isTop) { + out += ' var validate = '; + if ($async) { + it.async = true; + out += 'async '; + } + out += 'function(data, dataPath, parentData, parentDataProperty, rootData) { \'use strict\'; '; + if ($id && (it.opts.sourceCode || it.opts.processCode)) { + out += ' ' + ('/\*# sourceURL=' + $id + ' */') + ' '; + } + } + if (typeof it.schema == 'boolean' || !($refKeywords || it.schema.$ref)) { + var $keyword = 'false schema'; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + if (it.schema === false) { + if (it.isTop) { + $breakOnError = true; + } else { + out += ' var ' + ($valid) + ' = false; '; + } + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'false schema') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'boolean schema is false\' '; + } + if (it.opts.verbose) { + out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + } else { + if (it.isTop) { + if ($async) { + out += ' return data; '; + } else { + out += ' validate.errors = null; return true; '; + } + } else { + out += ' var ' + ($valid) + ' = true; '; + } + } + if (it.isTop) { + out += ' }; return validate; '; + } + return out; + } + if (it.isTop) { + var $top = it.isTop, + $lvl = it.level = 0, + $dataLvl = it.dataLevel = 0, + $data = 'data'; + it.rootId = it.resolve.fullPath(it.self._getId(it.root.schema)); + it.baseId = it.baseId || it.rootId; + delete it.isTop; + it.dataPathArr = [""]; + if (it.schema.default !== undefined && it.opts.useDefaults && it.opts.strictDefaults) { + var $defaultMsg = 'default is ignored in the schema root'; + if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg); + else throw new Error($defaultMsg); + } + out += ' var vErrors = null; '; + out += ' var errors = 0; '; + out += ' if (rootData === undefined) rootData = data; '; + } else { + var $lvl = it.level, + $dataLvl = it.dataLevel, + $data = 'data' + ($dataLvl || ''); + if ($id) it.baseId = it.resolve.url(it.baseId, $id); + if ($async && !it.async) throw new Error('async schema in sync schema'); + out += ' var errs_' + ($lvl) + ' = errors;'; + } + var $valid = 'valid' + $lvl, + $breakOnError = !it.opts.allErrors, + $closingBraces1 = '', + $closingBraces2 = ''; + var $errorKeyword; + var $typeSchema = it.schema.type, + $typeIsArray = Array.isArray($typeSchema); + if ($typeSchema && it.opts.nullable && it.schema.nullable === true) { + if ($typeIsArray) { + if ($typeSchema.indexOf('null') == -1) $typeSchema = $typeSchema.concat('null'); + } else if ($typeSchema != 'null') { + $typeSchema = [$typeSchema, 'null']; + $typeIsArray = true; + } + } + if ($typeIsArray && $typeSchema.length == 1) { + $typeSchema = $typeSchema[0]; + $typeIsArray = false; + } + if (it.schema.$ref && $refKeywords) { + if (it.opts.extendRefs == 'fail') { + throw new Error('$ref: validation keywords used in schema at path "' + it.errSchemaPath + '" (see option extendRefs)'); + } else if (it.opts.extendRefs !== true) { + $refKeywords = false; + it.logger.warn('$ref: keywords ignored in schema at path "' + it.errSchemaPath + '"'); + } + } + if (it.schema.$comment && it.opts.$comment) { + out += ' ' + (it.RULES.all.$comment.code(it, '$comment')); + } + if ($typeSchema) { + if (it.opts.coerceTypes) { + var $coerceToTypes = it.util.coerceToTypes(it.opts.coerceTypes, $typeSchema); + } + var $rulesGroup = it.RULES.types[$typeSchema]; + if ($coerceToTypes || $typeIsArray || $rulesGroup === true || ($rulesGroup && !$shouldUseGroup($rulesGroup))) { + var $schemaPath = it.schemaPath + '.type', + $errSchemaPath = it.errSchemaPath + '/type'; + var $schemaPath = it.schemaPath + '.type', + $errSchemaPath = it.errSchemaPath + '/type', + $method = $typeIsArray ? 'checkDataTypes' : 'checkDataType'; + out += ' if (' + (it.util[$method]($typeSchema, $data, it.opts.strictNumbers, true)) + ') { '; + if ($coerceToTypes) { + var $dataType = 'dataType' + $lvl, + $coerced = 'coerced' + $lvl; + out += ' var ' + ($dataType) + ' = typeof ' + ($data) + '; var ' + ($coerced) + ' = undefined; '; + if (it.opts.coerceTypes == 'array') { + out += ' if (' + ($dataType) + ' == \'object\' && Array.isArray(' + ($data) + ') && ' + ($data) + '.length == 1) { ' + ($data) + ' = ' + ($data) + '[0]; ' + ($dataType) + ' = typeof ' + ($data) + '; if (' + (it.util.checkDataType(it.schema.type, $data, it.opts.strictNumbers)) + ') ' + ($coerced) + ' = ' + ($data) + '; } '; + } + out += ' if (' + ($coerced) + ' !== undefined) ; '; + var arr1 = $coerceToTypes; + if (arr1) { + var $type, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $type = arr1[$i += 1]; + if ($type == 'string') { + out += ' else if (' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\') ' + ($coerced) + ' = \'\' + ' + ($data) + '; else if (' + ($data) + ' === null) ' + ($coerced) + ' = \'\'; '; + } else if ($type == 'number' || $type == 'integer') { + out += ' else if (' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' === null || (' + ($dataType) + ' == \'string\' && ' + ($data) + ' && ' + ($data) + ' == +' + ($data) + ' '; + if ($type == 'integer') { + out += ' && !(' + ($data) + ' % 1)'; + } + out += ')) ' + ($coerced) + ' = +' + ($data) + '; '; + } else if ($type == 'boolean') { + out += ' else if (' + ($data) + ' === \'false\' || ' + ($data) + ' === 0 || ' + ($data) + ' === null) ' + ($coerced) + ' = false; else if (' + ($data) + ' === \'true\' || ' + ($data) + ' === 1) ' + ($coerced) + ' = true; '; + } else if ($type == 'null') { + out += ' else if (' + ($data) + ' === \'\' || ' + ($data) + ' === 0 || ' + ($data) + ' === false) ' + ($coerced) + ' = null; '; + } else if (it.opts.coerceTypes == 'array' && $type == 'array') { + out += ' else if (' + ($dataType) + ' == \'string\' || ' + ($dataType) + ' == \'number\' || ' + ($dataType) + ' == \'boolean\' || ' + ($data) + ' == null) ' + ($coerced) + ' = [' + ($data) + ']; '; + } + } + } + out += ' else { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \''; + if ($typeIsArray) { + out += '' + ($typeSchema.join(",")); + } else { + out += '' + ($typeSchema); + } + out += '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be '; + if ($typeIsArray) { + out += '' + ($typeSchema.join(",")); + } else { + out += '' + ($typeSchema); + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } if (' + ($coerced) + ' !== undefined) { '; + var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData', + $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty'; + out += ' ' + ($data) + ' = ' + ($coerced) + '; '; + if (!$dataLvl) { + out += 'if (' + ($parentData) + ' !== undefined)'; + } + out += ' ' + ($parentData) + '[' + ($parentDataProperty) + '] = ' + ($coerced) + '; } '; + } else { + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \''; + if ($typeIsArray) { + out += '' + ($typeSchema.join(",")); + } else { + out += '' + ($typeSchema); + } + out += '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be '; + if ($typeIsArray) { + out += '' + ($typeSchema.join(",")); + } else { + out += '' + ($typeSchema); + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + } + out += ' } '; + } + } + if (it.schema.$ref && !$refKeywords) { + out += ' ' + (it.RULES.all.$ref.code(it, '$ref')) + ' '; + if ($breakOnError) { + out += ' } if (errors === '; + if ($top) { + out += '0'; + } else { + out += 'errs_' + ($lvl); + } + out += ') { '; + $closingBraces2 += '}'; + } + } else { + var arr2 = it.RULES; + if (arr2) { + var $rulesGroup, i2 = -1, + l2 = arr2.length - 1; + while (i2 < l2) { + $rulesGroup = arr2[i2 += 1]; + if ($shouldUseGroup($rulesGroup)) { + if ($rulesGroup.type) { + out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data, it.opts.strictNumbers)) + ') { '; + } + if (it.opts.useDefaults) { + if ($rulesGroup.type == 'object' && it.schema.properties) { + var $schema = it.schema.properties, + $schemaKeys = Object.keys($schema); + var arr3 = $schemaKeys; + if (arr3) { + var $propertyKey, i3 = -1, + l3 = arr3.length - 1; + while (i3 < l3) { + $propertyKey = arr3[i3 += 1]; + var $sch = $schema[$propertyKey]; + if ($sch.default !== undefined) { + var $passData = $data + it.util.getProperty($propertyKey); + if (it.compositeRule) { + if (it.opts.strictDefaults) { + var $defaultMsg = 'default is ignored for: ' + $passData; + if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg); + else throw new Error($defaultMsg); + } + } else { + out += ' if (' + ($passData) + ' === undefined '; + if (it.opts.useDefaults == 'empty') { + out += ' || ' + ($passData) + ' === null || ' + ($passData) + ' === \'\' '; + } + out += ' ) ' + ($passData) + ' = '; + if (it.opts.useDefaults == 'shared') { + out += ' ' + (it.useDefault($sch.default)) + ' '; + } else { + out += ' ' + (JSON.stringify($sch.default)) + ' '; + } + out += '; '; + } + } + } + } + } else if ($rulesGroup.type == 'array' && Array.isArray(it.schema.items)) { + var arr4 = it.schema.items; + if (arr4) { + var $sch, $i = -1, + l4 = arr4.length - 1; + while ($i < l4) { + $sch = arr4[$i += 1]; + if ($sch.default !== undefined) { + var $passData = $data + '[' + $i + ']'; + if (it.compositeRule) { + if (it.opts.strictDefaults) { + var $defaultMsg = 'default is ignored for: ' + $passData; + if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg); + else throw new Error($defaultMsg); + } + } else { + out += ' if (' + ($passData) + ' === undefined '; + if (it.opts.useDefaults == 'empty') { + out += ' || ' + ($passData) + ' === null || ' + ($passData) + ' === \'\' '; + } + out += ' ) ' + ($passData) + ' = '; + if (it.opts.useDefaults == 'shared') { + out += ' ' + (it.useDefault($sch.default)) + ' '; + } else { + out += ' ' + (JSON.stringify($sch.default)) + ' '; + } + out += '; '; + } + } + } + } + } + } + var arr5 = $rulesGroup.rules; + if (arr5) { + var $rule, i5 = -1, + l5 = arr5.length - 1; + while (i5 < l5) { + $rule = arr5[i5 += 1]; + if ($shouldUseRule($rule)) { + var $code = $rule.code(it, $rule.keyword, $rulesGroup.type); + if ($code) { + out += ' ' + ($code) + ' '; + if ($breakOnError) { + $closingBraces1 += '}'; + } + } + } + } + } + if ($breakOnError) { + out += ' ' + ($closingBraces1) + ' '; + $closingBraces1 = ''; + } + if ($rulesGroup.type) { + out += ' } '; + if ($typeSchema && $typeSchema === $rulesGroup.type && !$coerceToTypes) { + out += ' else { '; + var $schemaPath = it.schemaPath + '.type', + $errSchemaPath = it.errSchemaPath + '/type'; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'type') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \''; + if ($typeIsArray) { + out += '' + ($typeSchema.join(",")); + } else { + out += '' + ($typeSchema); + } + out += '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be '; + if ($typeIsArray) { + out += '' + ($typeSchema.join(",")); + } else { + out += '' + ($typeSchema); + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + } + } + if ($breakOnError) { + out += ' if (errors === '; + if ($top) { + out += '0'; + } else { + out += 'errs_' + ($lvl); + } + out += ') { '; + $closingBraces2 += '}'; + } + } + } + } + } + if ($breakOnError) { + out += ' ' + ($closingBraces2) + ' '; + } + if ($top) { + if ($async) { + out += ' if (errors === 0) return data; '; + out += ' else throw new ValidationError(vErrors); '; + } else { + out += ' validate.errors = vErrors; '; + out += ' return errors === 0; '; + } + out += ' }; return validate;'; + } else { + out += ' var ' + ($valid) + ' = errors === errs_' + ($lvl) + ';'; + } + + function $shouldUseGroup($rulesGroup) { + var rules = $rulesGroup.rules; + for (var i = 0; i < rules.length; i++) + if ($shouldUseRule(rules[i])) return true; + } + + function $shouldUseRule($rule) { + return it.schema[$rule.keyword] !== undefined || ($rule.implements && $ruleImplementsSomeKeyword($rule)); + } + + function $ruleImplementsSomeKeyword($rule) { + var impl = $rule.implements; + for (var i = 0; i < impl.length; i++) + if (it.schema[impl[i]] !== undefined) return true; + } + return out; +} + + +/***/ }), +/* 213 */ +/***/ (function(module) { + +module.exports = require("punycode"); + +/***/ }), +/* 214 */, +/* 215 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + +var at = __webpack_require__(289)(true); + + // `AdvanceStringIndex` abstract operation +// https://tc39.github.io/ecma262/#sec-advancestringindex +module.exports = function (S, index, unicode) { + return index + (unicode ? at(S, index).length : 1); +}; + + +/***/ }), +/* 216 */, +/* 217 */, +/* 218 */, +/* 219 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = createCheckRun; + +const { autoLink } = __webpack_require__(914); + +const parseTweetFileContent = __webpack_require__(746); + +async function createCheckRun( + { octokit, payload, startedAt, toolkit, dir }, + newTweets +) { + const parsedTweets = newTweets.map((rawTweet) => { + try { + return parseTweetFileContent(rawTweet, dir); + } catch (error) { + return { + error: error.message, + valid: false, + text: rawTweet, + }; + } + }); + + const allTweetsValid = parsedTweets.every((tweet) => tweet.valid); + + // Check runs cannot be created if the pull request was created by a fork, + // so we just log out the result. + // https://help.github.com/en/actions/automating-your-workflow-with-github-actions/authenticating-with-the-github_token#permissions-for-the-github_token + if (payload.pull_request.head.repo.fork) { + for (const tweet of parsedTweets) { + if (tweet.valid) { + toolkit.info(`### ✅ Valid\n\n${tweet.text}`); + } else { + toolkit.info( + `### ❌ Invalid\n\n${tweet.text}\n\n${tweet.error || "Unknown error"}` + ); + } + } + process.exit(allTweetsValid ? 0 : 1); + } + + const response = await octokit.request( + "POST /repos/:owner/:repo/check-runs", + { + headers: { + accept: "application/vnd.github.antiope-preview+json", + }, + owner: payload.repository.owner.login, + repo: payload.repository.name, + name: "preview", + head_sha: payload.pull_request.head.sha, + started_at: startedAt, + completed_at: new Date().toISOString(), + status: "completed", + conclusion: allTweetsValid ? "success" : "failure", + output: { + title: `${parsedTweets.length} tweet(s)`, + summary: parsedTweets.map(tweetToCheckRunSummary).join("\n\n---\n\n"), + }, + } + ); + + toolkit.info(`check run created: ${response.data.html_url}`); +} + +function tweetToCheckRunSummary(tweet) { + let text = autoLink(tweet.text) + .replace(/(^|\n)/g, "$1> ") + .replace(/(^|\n)> (\n|$)/g, "$1>$2"); + + if (!tweet.valid) + return `### ❌ Invalid\n\n${text}\n\n${tweet.error || "Unknown error"}`; + + if (tweet.poll) + text += + "\n\nThe tweet includes a poll:\n\n> 🔘 " + tweet.poll.join("\n> 🔘 "); + return `### ✅ Valid\n\n${text}`; +} + + +/***/ }), +/* 220 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + + +var caseless = __webpack_require__(254) +var uuid = __webpack_require__(826) +var helpers = __webpack_require__(151) + +var md5 = helpers.md5 +var toBase64 = helpers.toBase64 + +function Auth (request) { + // define all public properties here + this.request = request + this.hasAuth = false + this.sentAuth = false + this.bearerToken = null + this.user = null + this.pass = null +} + +Auth.prototype.basic = function (user, pass, sendImmediately) { + var self = this + if (typeof user !== 'string' || (pass !== undefined && typeof pass !== 'string')) { + self.request.emit('error', new Error('auth() received invalid user or password')) + } + self.user = user + self.pass = pass + self.hasAuth = true + var header = user + ':' + (pass || '') + if (sendImmediately || typeof sendImmediately === 'undefined') { + var authHeader = 'Basic ' + toBase64(header) + self.sentAuth = true + return authHeader + } +} + +Auth.prototype.bearer = function (bearer, sendImmediately) { + var self = this + self.bearerToken = bearer + self.hasAuth = true + if (sendImmediately || typeof sendImmediately === 'undefined') { + if (typeof bearer === 'function') { + bearer = bearer() + } + var authHeader = 'Bearer ' + (bearer || '') + self.sentAuth = true + return authHeader + } +} + +Auth.prototype.digest = function (method, path, authHeader) { + // TODO: More complete implementation of RFC 2617. + // - handle challenge.domain + // - support qop="auth-int" only + // - handle Authentication-Info (not necessarily?) + // - check challenge.stale (not necessarily?) + // - increase nc (not necessarily?) + // For reference: + // http://tools.ietf.org/html/rfc2617#section-3 + // https://github.com/bagder/curl/blob/master/lib/http_digest.c + + var self = this + + var challenge = {} + var re = /([a-z0-9_-]+)=(?:"([^"]+)"|([a-z0-9_-]+))/gi + for (;;) { + var match = re.exec(authHeader) + if (!match) { + break + } + challenge[match[1]] = match[2] || match[3] + } + + /** + * RFC 2617: handle both MD5 and MD5-sess algorithms. + * + * If the algorithm directive's value is "MD5" or unspecified, then HA1 is + * HA1=MD5(username:realm:password) + * If the algorithm directive's value is "MD5-sess", then HA1 is + * HA1=MD5(MD5(username:realm:password):nonce:cnonce) + */ + var ha1Compute = function (algorithm, user, realm, pass, nonce, cnonce) { + var ha1 = md5(user + ':' + realm + ':' + pass) + if (algorithm && algorithm.toLowerCase() === 'md5-sess') { + return md5(ha1 + ':' + nonce + ':' + cnonce) + } else { + return ha1 + } + } + + var qop = /(^|,)\s*auth\s*($|,)/.test(challenge.qop) && 'auth' + var nc = qop && '00000001' + var cnonce = qop && uuid().replace(/-/g, '') + var ha1 = ha1Compute(challenge.algorithm, self.user, challenge.realm, self.pass, challenge.nonce, cnonce) + var ha2 = md5(method + ':' + path) + var digestResponse = qop + ? md5(ha1 + ':' + challenge.nonce + ':' + nc + ':' + cnonce + ':' + qop + ':' + ha2) + : md5(ha1 + ':' + challenge.nonce + ':' + ha2) + var authValues = { + username: self.user, + realm: challenge.realm, + nonce: challenge.nonce, + uri: path, + qop: qop, + response: digestResponse, + nc: nc, + cnonce: cnonce, + algorithm: challenge.algorithm, + opaque: challenge.opaque + } + + authHeader = [] + for (var k in authValues) { + if (authValues[k]) { + if (k === 'qop' || k === 'nc' || k === 'algorithm') { + authHeader.push(k + '=' + authValues[k]) + } else { + authHeader.push(k + '="' + authValues[k] + '"') + } + } + } + authHeader = 'Digest ' + authHeader.join(', ') + self.sentAuth = true + return authHeader +} + +Auth.prototype.onRequest = function (user, pass, sendImmediately, bearer) { + var self = this + var request = self.request + + var authHeader + if (bearer === undefined && user === undefined) { + self.request.emit('error', new Error('no auth mechanism defined')) + } else if (bearer !== undefined) { + authHeader = self.bearer(bearer, sendImmediately) + } else { + authHeader = self.basic(user, pass, sendImmediately) + } + if (authHeader) { + request.setHeader('authorization', authHeader) + } +} + +Auth.prototype.onResponse = function (response) { + var self = this + var request = self.request + + if (!self.hasAuth || self.sentAuth) { return null } + + var c = caseless(response.headers) + + var authHeader = c.get('www-authenticate') + var authVerb = authHeader && authHeader.split(' ')[0].toLowerCase() + request.debug('reauth', authVerb) + + switch (authVerb) { + case 'basic': + return self.basic(self.user, self.pass, true) + + case 'bearer': + return self.bearer(self.bearerToken, true) + + case 'digest': + return self.digest(request.method, request.path, authHeader) + } +} + +exports.Auth = Auth + + +/***/ }), +/* 221 */, +/* 222 */ +/***/ (function(module) { + +module.exports = {"$id":"browser.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["name","version"],"properties":{"name":{"type":"string"},"version":{"type":"string"},"comment":{"type":"string"}}}; + +/***/ }), +/* 223 */ +/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { + +"use strict"; + +var regexpExec = __webpack_require__(663); +__webpack_require__(195)({ + target: 'RegExp', + proto: true, + forced: regexpExec !== /./.exec +}, { + exec: regexpExec +}); + + +/***/ }), +/* 224 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var Type = __webpack_require__(755); + +var _toString = Object.prototype.toString; + +function resolveYamlPairs(data) { + if (data === null) return true; + + var index, length, pair, keys, result, + object = data; + + result = new Array(object.length); + + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + + if (_toString.call(pair) !== '[object Object]') return false; + + keys = Object.keys(pair); + + if (keys.length !== 1) return false; + + result[index] = [ keys[0], pair[keys[0]] ]; + } + + return true; +} + +function constructYamlPairs(data) { + if (data === null) return []; + + var index, length, pair, keys, result, + object = data; + + result = new Array(object.length); + + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + + keys = Object.keys(pair); + + result[index] = [ keys[0], pair[keys[0]] ]; + } + + return result; +} + +module.exports = new Type('tag:yaml.org,2002:pairs', { + kind: 'sequence', + resolve: resolveYamlPairs, + construct: constructYamlPairs +}); + + +/***/ }), +/* 225 */, +/* 226 */ +/***/ (function(module) { + +module.exports = {"$id":"response.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["status","statusText","httpVersion","cookies","headers","content","redirectURL","headersSize","bodySize"],"properties":{"status":{"type":"integer"},"statusText":{"type":"string"},"httpVersion":{"type":"string"},"cookies":{"type":"array","items":{"$ref":"cookie.json#"}},"headers":{"type":"array","items":{"$ref":"header.json#"}},"content":{"$ref":"content.json#"},"redirectURL":{"type":"string"},"headersSize":{"type":"integer"},"bodySize":{"type":"integer"},"comment":{"type":"string"}}}; + +/***/ }), +/* 227 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var common = __webpack_require__(701); +var Type = __webpack_require__(755); + +var YAML_FLOAT_PATTERN = new RegExp( + // 2.5e4, 2.5 and integers + '^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' + + // .2e4, .2 + // special case, seems not from spec + '|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' + + // .inf + '|[-+]?\\.(?:inf|Inf|INF)' + + // .nan + '|\\.(?:nan|NaN|NAN))$'); + +function resolveYamlFloat(data) { + if (data === null) return false; + + if (!YAML_FLOAT_PATTERN.test(data) || + // Quick hack to not allow integers end with `_` + // Probably should update regexp & check speed + data[data.length - 1] === '_') { + return false; + } + + return true; +} + +function constructYamlFloat(data) { + var value, sign; + + value = data.replace(/_/g, '').toLowerCase(); + sign = value[0] === '-' ? -1 : 1; + + if ('+-'.indexOf(value[0]) >= 0) { + value = value.slice(1); + } + + if (value === '.inf') { + return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY; + + } else if (value === '.nan') { + return NaN; + } + return sign * parseFloat(value, 10); +} + + +var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/; + +function representYamlFloat(object, style) { + var res; + + if (isNaN(object)) { + switch (style) { + case 'lowercase': return '.nan'; + case 'uppercase': return '.NAN'; + case 'camelcase': return '.NaN'; + } + } else if (Number.POSITIVE_INFINITY === object) { + switch (style) { + case 'lowercase': return '.inf'; + case 'uppercase': return '.INF'; + case 'camelcase': return '.Inf'; + } + } else if (Number.NEGATIVE_INFINITY === object) { + switch (style) { + case 'lowercase': return '-.inf'; + case 'uppercase': return '-.INF'; + case 'camelcase': return '-.Inf'; + } + } else if (common.isNegativeZero(object)) { + return '-0.0'; + } + + res = object.toString(10); + + // JS stringifier can build scientific format without dots: 5e-100, + // while YAML requres dot: 5.e-100. Fix it with simple hack + + return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res; +} + +function isFloat(object) { + return (Object.prototype.toString.call(object) === '[object Number]') && + (object % 1 !== 0 || common.isNegativeZero(object)); +} + +module.exports = new Type('tag:yaml.org,2002:float', { + kind: 'scalar', + resolve: resolveYamlFloat, + construct: constructYamlFloat, + predicate: isFloat, + represent: representYamlFloat, + defaultStyle: 'lowercase' +}); + + +/***/ }), +/* 228 */, +/* 229 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _astralLetterAndMarks = _interopRequireDefault(__webpack_require__(481)); + +var _astralNumerals = _interopRequireDefault(__webpack_require__(767)); + +var _atSigns = _interopRequireDefault(__webpack_require__(1)); + +var _bmpLetterAndMarks = _interopRequireDefault(__webpack_require__(886)); + +var _bmpNumerals = _interopRequireDefault(__webpack_require__(307)); + +var _cashtag = _interopRequireDefault(__webpack_require__(728)); + +var _codePoint = _interopRequireDefault(__webpack_require__(763)); + +var _cyrillicLettersAndMarks = _interopRequireDefault(__webpack_require__(339)); + +var _endHashtagMatch = _interopRequireDefault(__webpack_require__(69)); + +var _endMentionMatch = _interopRequireDefault(__webpack_require__(944)); + +var _extractUrl = _interopRequireDefault(__webpack_require__(342)); + +var _hashSigns = _interopRequireDefault(__webpack_require__(617)); + +var _hashtagAlpha = _interopRequireDefault(__webpack_require__(62)); + +var _hashtagAlphaNumeric = _interopRequireDefault(__webpack_require__(965)); + +var _hashtagBoundary = _interopRequireDefault(__webpack_require__(38)); + +var _hashtagSpecialChars = _interopRequireDefault(__webpack_require__(906)); + +var _invalidChars = _interopRequireDefault(__webpack_require__(516)); + +var _invalidCharsGroup = _interopRequireDefault(__webpack_require__(148)); + +var _invalidDomainChars = _interopRequireDefault(__webpack_require__(265)); + +var _invalidUrlWithoutProtocolPrecedingChars = _interopRequireDefault(__webpack_require__(703)); + +var _latinAccentChars = _interopRequireDefault(__webpack_require__(401)); + +var _nonBmpCodePairs = _interopRequireDefault(__webpack_require__(235)); + +var _punct = _interopRequireDefault(__webpack_require__(412)); + +var _rtlChars = _interopRequireDefault(__webpack_require__(986)); + +var _spaces = _interopRequireDefault(__webpack_require__(61)); + +var _spacesGroup = _interopRequireDefault(__webpack_require__(162)); + +var _urlHasHttps = _interopRequireDefault(__webpack_require__(477)); + +var _urlHasProtocol = _interopRequireDefault(__webpack_require__(654)); + +var _validAsciiDomain = _interopRequireDefault(__webpack_require__(745)); + +var _validateUrlAuthority = _interopRequireDefault(__webpack_require__(790)); + +var _validateUrlDecOctet = _interopRequireDefault(__webpack_require__(600)); + +var _validateUrlDomain = _interopRequireDefault(__webpack_require__(985)); + +var _validateUrlDomainSegment = _interopRequireDefault(__webpack_require__(729)); + +var _validateUrlDomainTld = _interopRequireDefault(__webpack_require__(872)); + +var _validateUrlFragment = _interopRequireDefault(__webpack_require__(266)); + +var _validateUrlHost = _interopRequireDefault(__webpack_require__(612)); + +var _validateUrlIp = _interopRequireDefault(__webpack_require__(476)); + +var _validateUrlIpv = _interopRequireDefault(__webpack_require__(115)); + +var _validateUrlIpv2 = _interopRequireDefault(__webpack_require__(871)); + +var _validateUrlPath = _interopRequireDefault(__webpack_require__(399)); + +var _validateUrlPchar = _interopRequireDefault(__webpack_require__(340)); + +var _validateUrlPctEncoded = _interopRequireDefault(__webpack_require__(460)); + +var _validateUrlPort = _interopRequireDefault(__webpack_require__(302)); + +var _validateUrlQuery = _interopRequireDefault(__webpack_require__(180)); + +var _validateUrlScheme = _interopRequireDefault(__webpack_require__(861)); + +var _validateUrlSubDelims = _interopRequireDefault(__webpack_require__(67)); + +var _validateUrlSubDomainSegment = _interopRequireDefault(__webpack_require__(370)); + +var _validateUrlUnencoded = _interopRequireDefault(__webpack_require__(753)); + +var _validateUrlUnicodeAuthority = _interopRequireDefault(__webpack_require__(44)); + +var _validateUrlUnicodeDomain = _interopRequireDefault(__webpack_require__(943)); + +var _validateUrlUnicodeDomainSegment = _interopRequireDefault(__webpack_require__(284)); + +var _validateUrlUnicodeDomainTld = _interopRequireDefault(__webpack_require__(24)); + +var _validateUrlUnicodeHost = _interopRequireDefault(__webpack_require__(146)); + +var _validateUrlUnicodeSubDomainSegment = _interopRequireDefault(__webpack_require__(382)); + +var _validateUrlUnreserved = _interopRequireDefault(__webpack_require__(626)); + +var _validateUrlUserinfo = _interopRequireDefault(__webpack_require__(272)); + +var _validCashtag = _interopRequireDefault(__webpack_require__(661)); + +var _validCCTLD = _interopRequireDefault(__webpack_require__(662)); + +var _validDomain = _interopRequireDefault(__webpack_require__(574)); + +var _validDomainChars = _interopRequireDefault(__webpack_require__(823)); + +var _validDomainName = _interopRequireDefault(__webpack_require__(178)); + +var _validGeneralUrlPathChars = _interopRequireDefault(__webpack_require__(949)); + +var _validGTLD = _interopRequireDefault(__webpack_require__(79)); + +var _validHashtag = _interopRequireDefault(__webpack_require__(616)); + +var _validMentionOrList = _interopRequireDefault(__webpack_require__(50)); + +var _validMentionPrecedingChars = _interopRequireDefault(__webpack_require__(405)); + +var _validPortNumber = _interopRequireDefault(__webpack_require__(547)); + +var _validPunycode = _interopRequireDefault(__webpack_require__(131)); + +var _validReply = _interopRequireDefault(__webpack_require__(183)); + +var _validSubdomain = _interopRequireDefault(__webpack_require__(531)); + +var _validTcoUrl = _interopRequireDefault(__webpack_require__(341)); + +var _validUrlBalancedParens = _interopRequireDefault(__webpack_require__(122)); + +var _validUrlPath = _interopRequireDefault(__webpack_require__(671)); + +var _validUrlPathEndingChars = _interopRequireDefault(__webpack_require__(205)); + +var _validUrlPrecedingChars = _interopRequireDefault(__webpack_require__(533)); + +var _validUrlQueryChars = _interopRequireDefault(__webpack_require__(56)); + +var _validUrlQueryEndingChars = _interopRequireDefault(__webpack_require__(800)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var _default = { + astralLetterAndMarks: _astralLetterAndMarks["default"], + astralNumerals: _astralNumerals["default"], + atSigns: _atSigns["default"], + bmpLetterAndMarks: _bmpLetterAndMarks["default"], + bmpNumerals: _bmpNumerals["default"], + cashtag: _cashtag["default"], + codePoint: _codePoint["default"], + cyrillicLettersAndMarks: _cyrillicLettersAndMarks["default"], + endHashtagMatch: _endHashtagMatch["default"], + endMentionMatch: _endMentionMatch["default"], + extractUrl: _extractUrl["default"], + hashSigns: _hashSigns["default"], + hashtagAlpha: _hashtagAlpha["default"], + hashtagAlphaNumeric: _hashtagAlphaNumeric["default"], + hashtagBoundary: _hashtagBoundary["default"], + hashtagSpecialChars: _hashtagSpecialChars["default"], + invalidChars: _invalidChars["default"], + invalidCharsGroup: _invalidCharsGroup["default"], + invalidDomainChars: _invalidDomainChars["default"], + invalidUrlWithoutProtocolPrecedingChars: _invalidUrlWithoutProtocolPrecedingChars["default"], + latinAccentChars: _latinAccentChars["default"], + nonBmpCodePairs: _nonBmpCodePairs["default"], + punct: _punct["default"], + rtlChars: _rtlChars["default"], + spaces: _spaces["default"], + spacesGroup: _spacesGroup["default"], + urlHasHttps: _urlHasHttps["default"], + urlHasProtocol: _urlHasProtocol["default"], + validAsciiDomain: _validAsciiDomain["default"], + validateUrlAuthority: _validateUrlAuthority["default"], + validateUrlDecOctet: _validateUrlDecOctet["default"], + validateUrlDomain: _validateUrlDomain["default"], + validateUrlDomainSegment: _validateUrlDomainSegment["default"], + validateUrlDomainTld: _validateUrlDomainTld["default"], + validateUrlFragment: _validateUrlFragment["default"], + validateUrlHost: _validateUrlHost["default"], + validateUrlIp: _validateUrlIp["default"], + validateUrlIpv4: _validateUrlIpv["default"], + validateUrlIpv6: _validateUrlIpv2["default"], + validateUrlPath: _validateUrlPath["default"], + validateUrlPchar: _validateUrlPchar["default"], + validateUrlPctEncoded: _validateUrlPctEncoded["default"], + validateUrlPort: _validateUrlPort["default"], + validateUrlQuery: _validateUrlQuery["default"], + validateUrlScheme: _validateUrlScheme["default"], + validateUrlSubDelims: _validateUrlSubDelims["default"], + validateUrlSubDomainSegment: _validateUrlSubDomainSegment["default"], + validateUrlUnencoded: _validateUrlUnencoded["default"], + validateUrlUnicodeAuthority: _validateUrlUnicodeAuthority["default"], + validateUrlUnicodeDomain: _validateUrlUnicodeDomain["default"], + validateUrlUnicodeDomainSegment: _validateUrlUnicodeDomainSegment["default"], + validateUrlUnicodeDomainTld: _validateUrlUnicodeDomainTld["default"], + validateUrlUnicodeHost: _validateUrlUnicodeHost["default"], + validateUrlUnicodeSubDomainSegment: _validateUrlUnicodeSubDomainSegment["default"], + validateUrlUnreserved: _validateUrlUnreserved["default"], + validateUrlUserinfo: _validateUrlUserinfo["default"], + validCashtag: _validCashtag["default"], + validCCTLD: _validCCTLD["default"], + validDomain: _validDomain["default"], + validDomainChars: _validDomainChars["default"], + validDomainName: _validDomainName["default"], + validGeneralUrlPathChars: _validGeneralUrlPathChars["default"], + validGTLD: _validGTLD["default"], + validHashtag: _validHashtag["default"], + validMentionOrList: _validMentionOrList["default"], + validMentionPrecedingChars: _validMentionPrecedingChars["default"], + validPortNumber: _validPortNumber["default"], + validPunycode: _validPunycode["default"], + validReply: _validReply["default"], + validSubdomain: _validSubdomain["default"], + validTcoUrl: _validTcoUrl["default"], + validUrlBalancedParens: _validUrlBalancedParens["default"], + validUrlPath: _validUrlPath["default"], + validUrlPathEndingChars: _validUrlPathEndingChars["default"], + validUrlPrecedingChars: _validUrlPrecedingChars["default"], + validUrlQueryChars: _validUrlQueryChars["default"], + validUrlQueryEndingChars: _validUrlQueryEndingChars["default"] +}; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 230 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +// 7.1.13 ToObject(argument) +var defined = __webpack_require__(805); +module.exports = function (it) { + return Object(defined(it)); +}; + + +/***/ }), +/* 231 */, +/* 232 */, +/* 233 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; +/*! + * mime-types + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ + + + +/** + * Module dependencies. + * @private + */ + +var db = __webpack_require__(972) +var extname = __webpack_require__(622).extname + +/** + * Module variables. + * @private + */ + +var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/ +var TEXT_TYPE_REGEXP = /^text\//i + +/** + * Module exports. + * @public + */ + +exports.charset = charset +exports.charsets = { lookup: charset } +exports.contentType = contentType +exports.extension = extension +exports.extensions = Object.create(null) +exports.lookup = lookup +exports.types = Object.create(null) + +// Populate the extensions/types maps +populateMaps(exports.extensions, exports.types) + +/** + * Get the default charset for a MIME type. + * + * @param {string} type + * @return {boolean|string} + */ + +function charset (type) { + if (!type || typeof type !== 'string') { + return false + } + + // TODO: use media-typer + var match = EXTRACT_TYPE_REGEXP.exec(type) + var mime = match && db[match[1].toLowerCase()] + + if (mime && mime.charset) { + return mime.charset + } + + // default text/* to utf-8 + if (match && TEXT_TYPE_REGEXP.test(match[1])) { + return 'UTF-8' + } + + return false +} + +/** + * Create a full Content-Type header given a MIME type or extension. + * + * @param {string} str + * @return {boolean|string} + */ + +function contentType (str) { + // TODO: should this even be in this module? + if (!str || typeof str !== 'string') { + return false + } + + var mime = str.indexOf('/') === -1 + ? exports.lookup(str) + : str + + if (!mime) { + return false + } + + // TODO: use content-type or other module + if (mime.indexOf('charset') === -1) { + var charset = exports.charset(mime) + if (charset) mime += '; charset=' + charset.toLowerCase() + } + + return mime +} + +/** + * Get the default extension for a MIME type. + * + * @param {string} type + * @return {boolean|string} + */ + +function extension (type) { + if (!type || typeof type !== 'string') { + return false + } + + // TODO: use media-typer + var match = EXTRACT_TYPE_REGEXP.exec(type) + + // get extensions + var exts = match && exports.extensions[match[1].toLowerCase()] + + if (!exts || !exts.length) { + return false + } + + return exts[0] +} + +/** + * Lookup the MIME type for a file path/extension. + * + * @param {string} path + * @return {boolean|string} + */ + +function lookup (path) { + if (!path || typeof path !== 'string') { + return false + } + + // get the extension ("ext" or ".ext" or full path) + var extension = extname('x.' + path) + .toLowerCase() + .substr(1) + + if (!extension) { + return false + } + + return exports.types[extension] || false +} + +/** + * Populate the extensions and types maps. + * @private + */ + +function populateMaps (extensions, types) { + // source preference (least -> most) + var preference = ['nginx', 'apache', undefined, 'iana'] + + Object.keys(db).forEach(function forEachMimeType (type) { + var mime = db[type] + var exts = mime.extensions + + if (!exts || !exts.length) { + return + } + + // mime -> extensions + extensions[type] = exts + + // extension -> mime + for (var i = 0; i < exts.length; i++) { + var extension = exts[i] + + if (types[extension]) { + var from = preference.indexOf(db[types[extension]].source) + var to = preference.indexOf(mime.source) + + if (types[extension] !== 'application/octet-stream' && + (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) { + // skip the remapping + continue + } + } + + // set the extension -> mime + types[extension] = type + } + }) +} + + +/***/ }), +/* 234 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; + +__webpack_require__(549); + +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); + +var _validMentionOrList = _interopRequireDefault(__webpack_require__(50)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var VALID_LIST_RE = (0, _regexSupplant["default"])(/^#{validMentionOrList}$/, { + validMentionOrList: _validMentionOrList["default"] +}); + +function _default(usernameList) { + var match = usernameList.match(VALID_LIST_RE); // Must have matched and had nothing before or after + + return !!(match && match[1] == '' && match[4]); +} + +module.exports = exports.default; + +/***/ }), +/* 235 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var nonBmpCodePairs = /[\uD800-\uDBFF][\uDC00-\uDFFF]/gm; +var _default = nonBmpCodePairs; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 236 */, +/* 237 */, +/* 238 */, +/* 239 */, +/* 240 */, +/* 241 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +// Copyright 2018 Joyent, Inc. + +module.exports = { + read: read, + write: write +}; + +var assert = __webpack_require__(489); +var Buffer = __webpack_require__(726).Buffer; +var utils = __webpack_require__(270); +var Key = __webpack_require__(500); +var PrivateKey = __webpack_require__(502); + +var pem = __webpack_require__(268); +var ssh = __webpack_require__(854); +var rfc4253 = __webpack_require__(538); +var dnssec = __webpack_require__(982); +var putty = __webpack_require__(624); + +var DNSSEC_PRIVKEY_HEADER_PREFIX = 'Private-key-format: v1'; + +function read(buf, options) { + if (typeof (buf) === 'string') { + if (buf.trim().match(/^[-]+[ ]*BEGIN/)) + return (pem.read(buf, options)); + if (buf.match(/^\s*ssh-[a-z]/)) + return (ssh.read(buf, options)); + if (buf.match(/^\s*ecdsa-/)) + return (ssh.read(buf, options)); + if (buf.match(/^putty-user-key-file-2:/i)) + return (putty.read(buf, options)); + if (findDNSSECHeader(buf)) + return (dnssec.read(buf, options)); + buf = Buffer.from(buf, 'binary'); + } else { + assert.buffer(buf); + if (findPEMHeader(buf)) + return (pem.read(buf, options)); + if (findSSHHeader(buf)) + return (ssh.read(buf, options)); + if (findPuTTYHeader(buf)) + return (putty.read(buf, options)); + if (findDNSSECHeader(buf)) + return (dnssec.read(buf, options)); + } + if (buf.readUInt32BE(0) < buf.length) + return (rfc4253.read(buf, options)); + throw (new Error('Failed to auto-detect format of key')); +} + +function findPuTTYHeader(buf) { + var offset = 0; + while (offset < buf.length && + (buf[offset] === 32 || buf[offset] === 10 || buf[offset] === 9)) + ++offset; + if (offset + 22 <= buf.length && + buf.slice(offset, offset + 22).toString('ascii').toLowerCase() === + 'putty-user-key-file-2:') + return (true); + return (false); +} + +function findSSHHeader(buf) { + var offset = 0; + while (offset < buf.length && + (buf[offset] === 32 || buf[offset] === 10 || buf[offset] === 9)) + ++offset; + if (offset + 4 <= buf.length && + buf.slice(offset, offset + 4).toString('ascii') === 'ssh-') + return (true); + if (offset + 6 <= buf.length && + buf.slice(offset, offset + 6).toString('ascii') === 'ecdsa-') + return (true); + return (false); +} + +function findPEMHeader(buf) { + var offset = 0; + while (offset < buf.length && + (buf[offset] === 32 || buf[offset] === 10)) + ++offset; + if (buf[offset] !== 45) + return (false); + while (offset < buf.length && + (buf[offset] === 45)) + ++offset; + while (offset < buf.length && + (buf[offset] === 32)) + ++offset; + if (offset + 5 > buf.length || + buf.slice(offset, offset + 5).toString('ascii') !== 'BEGIN') + return (false); + return (true); +} + +function findDNSSECHeader(buf) { + // private case first + if (buf.length <= DNSSEC_PRIVKEY_HEADER_PREFIX.length) + return (false); + var headerCheck = buf.slice(0, DNSSEC_PRIVKEY_HEADER_PREFIX.length); + if (headerCheck.toString('ascii') === DNSSEC_PRIVKEY_HEADER_PREFIX) + return (true); + + // public-key RFC3110 ? + // 'domain.com. IN KEY ...' or 'domain.com. IN DNSKEY ...' + // skip any comment-lines + if (typeof (buf) !== 'string') { + buf = buf.toString('ascii'); + } + var lines = buf.split('\n'); + var line = 0; + /* JSSTYLED */ + while (lines[line].match(/^\;/)) + line++; + if (lines[line].toString('ascii').match(/\. IN KEY /)) + return (true); + if (lines[line].toString('ascii').match(/\. IN DNSKEY /)) + return (true); + return (false); +} + +function write(key, options) { + throw (new Error('"auto" format cannot be used for writing')); +} + + +/***/ }), +/* 242 */ +/***/ (function(module, exports) { + +(function(){ + + // Copyright (c) 2005 Tom Wu + // All Rights Reserved. + // See "LICENSE" for details. + + // Basic JavaScript BN library - subset useful for RSA encryption. + + // Bits per digit + var dbits; + + // JavaScript engine analysis + var canary = 0xdeadbeefcafe; + var j_lm = ((canary&0xffffff)==0xefcafe); + + // (public) Constructor + function BigInteger(a,b,c) { + if(a != null) + if("number" == typeof a) this.fromNumber(a,b,c); + else if(b == null && "string" != typeof a) this.fromString(a,256); + else this.fromString(a,b); + } + + // return new, unset BigInteger + function nbi() { return new BigInteger(null); } + + // am: Compute w_j += (x*this_i), propagate carries, + // c is initial carry, returns final carry. + // c < 3*dvalue, x < 2*dvalue, this_i < dvalue + // We need to select the fastest one that works in this environment. + + // am1: use a single mult and divide to get the high bits, + // max digit bits should be 26 because + // max internal value = 2*dvalue^2-2*dvalue (< 2^53) + function am1(i,x,w,j,c,n) { + while(--n >= 0) { + var v = x*this[i++]+w[j]+c; + c = Math.floor(v/0x4000000); + w[j++] = v&0x3ffffff; + } + return c; + } + // am2 avoids a big mult-and-extract completely. + // Max digit bits should be <= 30 because we do bitwise ops + // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31) + function am2(i,x,w,j,c,n) { + var xl = x&0x7fff, xh = x>>15; + while(--n >= 0) { + var l = this[i]&0x7fff; + var h = this[i++]>>15; + var m = xh*l+h*xl; + l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff); + c = (l>>>30)+(m>>>15)+xh*h+(c>>>30); + w[j++] = l&0x3fffffff; + } + return c; + } + // Alternately, set max digit bits to 28 since some + // browsers slow down when dealing with 32-bit numbers. + function am3(i,x,w,j,c,n) { + var xl = x&0x3fff, xh = x>>14; + while(--n >= 0) { + var l = this[i]&0x3fff; + var h = this[i++]>>14; + var m = xh*l+h*xl; + l = xl*l+((m&0x3fff)<<14)+w[j]+c; + c = (l>>28)+(m>>14)+xh*h; + w[j++] = l&0xfffffff; + } + return c; + } + var inBrowser = typeof navigator !== "undefined"; + if(inBrowser && j_lm && (navigator.appName == "Microsoft Internet Explorer")) { + BigInteger.prototype.am = am2; + dbits = 30; + } + else if(inBrowser && j_lm && (navigator.appName != "Netscape")) { + BigInteger.prototype.am = am1; + dbits = 26; + } + else { // Mozilla/Netscape seems to prefer am3 + BigInteger.prototype.am = am3; + dbits = 28; + } + + BigInteger.prototype.DB = dbits; + BigInteger.prototype.DM = ((1<= 0; --i) r[i] = this[i]; + r.t = this.t; + r.s = this.s; + } + + // (protected) set from integer value x, -DV <= x < DV + function bnpFromInt(x) { + this.t = 1; + this.s = (x<0)?-1:0; + if(x > 0) this[0] = x; + else if(x < -1) this[0] = x+this.DV; + else this.t = 0; + } + + // return bigint initialized to value + function nbv(i) { var r = nbi(); r.fromInt(i); return r; } + + // (protected) set from string and radix + function bnpFromString(s,b) { + var k; + if(b == 16) k = 4; + else if(b == 8) k = 3; + else if(b == 256) k = 8; // byte array + else if(b == 2) k = 1; + else if(b == 32) k = 5; + else if(b == 4) k = 2; + else { this.fromRadix(s,b); return; } + this.t = 0; + this.s = 0; + var i = s.length, mi = false, sh = 0; + while(--i >= 0) { + var x = (k==8)?s[i]&0xff:intAt(s,i); + if(x < 0) { + if(s.charAt(i) == "-") mi = true; + continue; + } + mi = false; + if(sh == 0) + this[this.t++] = x; + else if(sh+k > this.DB) { + this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<>(this.DB-sh)); + } + else + this[this.t-1] |= x<= this.DB) sh -= this.DB; + } + if(k == 8 && (s[0]&0x80) != 0) { + this.s = -1; + if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)< 0 && this[this.t-1] == c) --this.t; + } + + // (public) return string representation in given radix + function bnToString(b) { + if(this.s < 0) return "-"+this.negate().toString(b); + var k; + if(b == 16) k = 4; + else if(b == 8) k = 3; + else if(b == 2) k = 1; + else if(b == 32) k = 5; + else if(b == 4) k = 2; + else return this.toRadix(b); + var km = (1< 0) { + if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); } + while(i >= 0) { + if(p < k) { + d = (this[i]&((1<>(p+=this.DB-k); + } + else { + d = (this[i]>>(p-=k))&km; + if(p <= 0) { p += this.DB; --i; } + } + if(d > 0) m = true; + if(m) r += int2char(d); + } + } + return m?r:"0"; + } + + // (public) -this + function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; } + + // (public) |this| + function bnAbs() { return (this.s<0)?this.negate():this; } + + // (public) return + if this > a, - if this < a, 0 if equal + function bnCompareTo(a) { + var r = this.s-a.s; + if(r != 0) return r; + var i = this.t; + r = i-a.t; + if(r != 0) return (this.s<0)?-r:r; + while(--i >= 0) if((r=this[i]-a[i]) != 0) return r; + return 0; + } + + // returns bit length of the integer x + function nbits(x) { + var r = 1, t; + if((t=x>>>16) != 0) { x = t; r += 16; } + if((t=x>>8) != 0) { x = t; r += 8; } + if((t=x>>4) != 0) { x = t; r += 4; } + if((t=x>>2) != 0) { x = t; r += 2; } + if((t=x>>1) != 0) { x = t; r += 1; } + return r; + } + + // (public) return the number of bits in "this" + function bnBitLength() { + if(this.t <= 0) return 0; + return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM)); + } + + // (protected) r = this << n*DB + function bnpDLShiftTo(n,r) { + var i; + for(i = this.t-1; i >= 0; --i) r[i+n] = this[i]; + for(i = n-1; i >= 0; --i) r[i] = 0; + r.t = this.t+n; + r.s = this.s; + } + + // (protected) r = this >> n*DB + function bnpDRShiftTo(n,r) { + for(var i = n; i < this.t; ++i) r[i-n] = this[i]; + r.t = Math.max(this.t-n,0); + r.s = this.s; + } + + // (protected) r = this << n + function bnpLShiftTo(n,r) { + var bs = n%this.DB; + var cbs = this.DB-bs; + var bm = (1<= 0; --i) { + r[i+ds+1] = (this[i]>>cbs)|c; + c = (this[i]&bm)<= 0; --i) r[i] = 0; + r[ds] = c; + r.t = this.t+ds+1; + r.s = this.s; + r.clamp(); + } + + // (protected) r = this >> n + function bnpRShiftTo(n,r) { + r.s = this.s; + var ds = Math.floor(n/this.DB); + if(ds >= this.t) { r.t = 0; return; } + var bs = n%this.DB; + var cbs = this.DB-bs; + var bm = (1<>bs; + for(var i = ds+1; i < this.t; ++i) { + r[i-ds-1] |= (this[i]&bm)<>bs; + } + if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<>= this.DB; + } + if(a.t < this.t) { + c -= a.s; + while(i < this.t) { + c += this[i]; + r[i++] = c&this.DM; + c >>= this.DB; + } + c += this.s; + } + else { + c += this.s; + while(i < a.t) { + c -= a[i]; + r[i++] = c&this.DM; + c >>= this.DB; + } + c -= a.s; + } + r.s = (c<0)?-1:0; + if(c < -1) r[i++] = this.DV+c; + else if(c > 0) r[i++] = c; + r.t = i; + r.clamp(); + } + + // (protected) r = this * a, r != this,a (HAC 14.12) + // "this" should be the larger one if appropriate. + function bnpMultiplyTo(a,r) { + var x = this.abs(), y = a.abs(); + var i = x.t; + r.t = i+y.t; + while(--i >= 0) r[i] = 0; + for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t); + r.s = 0; + r.clamp(); + if(this.s != a.s) BigInteger.ZERO.subTo(r,r); + } + + // (protected) r = this^2, r != this (HAC 14.16) + function bnpSquareTo(r) { + var x = this.abs(); + var i = r.t = 2*x.t; + while(--i >= 0) r[i] = 0; + for(i = 0; i < x.t-1; ++i) { + var c = x.am(i,x[i],r,2*i,0,1); + if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) { + r[i+x.t] -= x.DV; + r[i+x.t+1] = 1; + } + } + if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1); + r.s = 0; + r.clamp(); + } + + // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20) + // r != q, this != m. q or r may be null. + function bnpDivRemTo(m,q,r) { + var pm = m.abs(); + if(pm.t <= 0) return; + var pt = this.abs(); + if(pt.t < pm.t) { + if(q != null) q.fromInt(0); + if(r != null) this.copyTo(r); + return; + } + if(r == null) r = nbi(); + var y = nbi(), ts = this.s, ms = m.s; + var nsh = this.DB-nbits(pm[pm.t-1]); // normalize modulus + if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); } + else { pm.copyTo(y); pt.copyTo(r); } + var ys = y.t; + var y0 = y[ys-1]; + if(y0 == 0) return; + var yt = y0*(1<1)?y[ys-2]>>this.F2:0); + var d1 = this.FV/yt, d2 = (1<= 0) { + r[r.t++] = 1; + r.subTo(t,r); + } + BigInteger.ONE.dlShiftTo(ys,t); + t.subTo(y,y); // "negative" y so we can replace sub with am later + while(y.t < ys) y[y.t++] = 0; + while(--j >= 0) { + // Estimate quotient digit + var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2); + if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) { // Try it out + y.dlShiftTo(j,t); + r.subTo(t,r); + while(r[i] < --qd) r.subTo(t,r); + } + } + if(q != null) { + r.drShiftTo(ys,q); + if(ts != ms) BigInteger.ZERO.subTo(q,q); + } + r.t = ys; + r.clamp(); + if(nsh > 0) r.rShiftTo(nsh,r); // Denormalize remainder + if(ts < 0) BigInteger.ZERO.subTo(r,r); + } + + // (public) this mod a + function bnMod(a) { + var r = nbi(); + this.abs().divRemTo(a,null,r); + if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r); + return r; + } + + // Modular reduction using "classic" algorithm + function Classic(m) { this.m = m; } + function cConvert(x) { + if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m); + else return x; + } + function cRevert(x) { return x; } + function cReduce(x) { x.divRemTo(this.m,null,x); } + function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } + function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); } + + Classic.prototype.convert = cConvert; + Classic.prototype.revert = cRevert; + Classic.prototype.reduce = cReduce; + Classic.prototype.mulTo = cMulTo; + Classic.prototype.sqrTo = cSqrTo; + + // (protected) return "-1/this % 2^DB"; useful for Mont. reduction + // justification: + // xy == 1 (mod m) + // xy = 1+km + // xy(2-xy) = (1+km)(1-km) + // x[y(2-xy)] = 1-k^2m^2 + // x[y(2-xy)] == 1 (mod m^2) + // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2 + // should reduce x and y(2-xy) by m^2 at each step to keep size bounded. + // JS multiply "overflows" differently from C/C++, so care is needed here. + function bnpInvDigit() { + if(this.t < 1) return 0; + var x = this[0]; + if((x&1) == 0) return 0; + var y = x&3; // y == 1/x mod 2^2 + y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4 + y = (y*(2-(x&0xff)*y))&0xff; // y == 1/x mod 2^8 + y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff; // y == 1/x mod 2^16 + // last step - calculate inverse mod DV directly; + // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints + y = (y*(2-x*y%this.DV))%this.DV; // y == 1/x mod 2^dbits + // we really want the negative inverse, and -DV < y < DV + return (y>0)?this.DV-y:-y; + } + + // Montgomery reduction + function Montgomery(m) { + this.m = m; + this.mp = m.invDigit(); + this.mpl = this.mp&0x7fff; + this.mph = this.mp>>15; + this.um = (1<<(m.DB-15))-1; + this.mt2 = 2*m.t; + } + + // xR mod m + function montConvert(x) { + var r = nbi(); + x.abs().dlShiftTo(this.m.t,r); + r.divRemTo(this.m,null,r); + if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r); + return r; + } + + // x/R mod m + function montRevert(x) { + var r = nbi(); + x.copyTo(r); + this.reduce(r); + return r; + } + + // x = x/R mod m (HAC 14.32) + function montReduce(x) { + while(x.t <= this.mt2) // pad x so am has enough room later + x[x.t++] = 0; + for(var i = 0; i < this.m.t; ++i) { + // faster way of calculating u0 = x[i]*mp mod DV + var j = x[i]&0x7fff; + var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM; + // use am to combine the multiply-shift-add into one call + j = i+this.m.t; + x[j] += this.m.am(0,u0,x,i,0,this.m.t); + // propagate carry + while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; } + } + x.clamp(); + x.drShiftTo(this.m.t,x); + if(x.compareTo(this.m) >= 0) x.subTo(this.m,x); + } + + // r = "x^2/R mod m"; x != r + function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); } + + // r = "xy/R mod m"; x,y != r + function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } + + Montgomery.prototype.convert = montConvert; + Montgomery.prototype.revert = montRevert; + Montgomery.prototype.reduce = montReduce; + Montgomery.prototype.mulTo = montMulTo; + Montgomery.prototype.sqrTo = montSqrTo; + + // (protected) true iff this is even + function bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; } + + // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79) + function bnpExp(e,z) { + if(e > 0xffffffff || e < 1) return BigInteger.ONE; + var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1; + g.copyTo(r); + while(--i >= 0) { + z.sqrTo(r,r2); + if((e&(1< 0) z.mulTo(r2,g,r); + else { var t = r; r = r2; r2 = t; } + } + return z.revert(r); + } + + // (public) this^e % m, 0 <= e < 2^32 + function bnModPowInt(e,m) { + var z; + if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m); + return this.exp(e,z); + } + + // protected + BigInteger.prototype.copyTo = bnpCopyTo; + BigInteger.prototype.fromInt = bnpFromInt; + BigInteger.prototype.fromString = bnpFromString; + BigInteger.prototype.clamp = bnpClamp; + BigInteger.prototype.dlShiftTo = bnpDLShiftTo; + BigInteger.prototype.drShiftTo = bnpDRShiftTo; + BigInteger.prototype.lShiftTo = bnpLShiftTo; + BigInteger.prototype.rShiftTo = bnpRShiftTo; + BigInteger.prototype.subTo = bnpSubTo; + BigInteger.prototype.multiplyTo = bnpMultiplyTo; + BigInteger.prototype.squareTo = bnpSquareTo; + BigInteger.prototype.divRemTo = bnpDivRemTo; + BigInteger.prototype.invDigit = bnpInvDigit; + BigInteger.prototype.isEven = bnpIsEven; + BigInteger.prototype.exp = bnpExp; + + // public + BigInteger.prototype.toString = bnToString; + BigInteger.prototype.negate = bnNegate; + BigInteger.prototype.abs = bnAbs; + BigInteger.prototype.compareTo = bnCompareTo; + BigInteger.prototype.bitLength = bnBitLength; + BigInteger.prototype.mod = bnMod; + BigInteger.prototype.modPowInt = bnModPowInt; + + // "constants" + BigInteger.ZERO = nbv(0); + BigInteger.ONE = nbv(1); + + // Copyright (c) 2005-2009 Tom Wu + // All Rights Reserved. + // See "LICENSE" for details. + + // Extended JavaScript BN functions, required for RSA private ops. + + // Version 1.1: new BigInteger("0", 10) returns "proper" zero + // Version 1.2: square() API, isProbablePrime fix + + // (public) + function bnClone() { var r = nbi(); this.copyTo(r); return r; } + + // (public) return value as integer + function bnIntValue() { + if(this.s < 0) { + if(this.t == 1) return this[0]-this.DV; + else if(this.t == 0) return -1; + } + else if(this.t == 1) return this[0]; + else if(this.t == 0) return 0; + // assumes 16 < DB < 32 + return ((this[1]&((1<<(32-this.DB))-1))<>24; } + + // (public) return value as short (assumes DB>=16) + function bnShortValue() { return (this.t==0)?this.s:(this[0]<<16)>>16; } + + // (protected) return x s.t. r^x < DV + function bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); } + + // (public) 0 if this == 0, 1 if this > 0 + function bnSigNum() { + if(this.s < 0) return -1; + else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0; + else return 1; + } + + // (protected) convert to radix string + function bnpToRadix(b) { + if(b == null) b = 10; + if(this.signum() == 0 || b < 2 || b > 36) return "0"; + var cs = this.chunkSize(b); + var a = Math.pow(b,cs); + var d = nbv(a), y = nbi(), z = nbi(), r = ""; + this.divRemTo(d,y,z); + while(y.signum() > 0) { + r = (a+z.intValue()).toString(b).substr(1) + r; + y.divRemTo(d,y,z); + } + return z.intValue().toString(b) + r; + } + + // (protected) convert from radix string + function bnpFromRadix(s,b) { + this.fromInt(0); + if(b == null) b = 10; + var cs = this.chunkSize(b); + var d = Math.pow(b,cs), mi = false, j = 0, w = 0; + for(var i = 0; i < s.length; ++i) { + var x = intAt(s,i); + if(x < 0) { + if(s.charAt(i) == "-" && this.signum() == 0) mi = true; + continue; + } + w = b*w+x; + if(++j >= cs) { + this.dMultiply(d); + this.dAddOffset(w,0); + j = 0; + w = 0; + } + } + if(j > 0) { + this.dMultiply(Math.pow(b,j)); + this.dAddOffset(w,0); + } + if(mi) BigInteger.ZERO.subTo(this,this); + } + + // (protected) alternate constructor + function bnpFromNumber(a,b,c) { + if("number" == typeof b) { + // new BigInteger(int,int,RNG) + if(a < 2) this.fromInt(1); + else { + this.fromNumber(a,c); + if(!this.testBit(a-1)) // force MSB set + this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this); + if(this.isEven()) this.dAddOffset(1,0); // force odd + while(!this.isProbablePrime(b)) { + this.dAddOffset(2,0); + if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this); + } + } + } + else { + // new BigInteger(int,RNG) + var x = new Array(), t = a&7; + x.length = (a>>3)+1; + b.nextBytes(x); + if(t > 0) x[0] &= ((1< 0) { + if(p < this.DB && (d = this[i]>>p) != (this.s&this.DM)>>p) + r[k++] = d|(this.s<<(this.DB-p)); + while(i >= 0) { + if(p < 8) { + d = (this[i]&((1<>(p+=this.DB-8); + } + else { + d = (this[i]>>(p-=8))&0xff; + if(p <= 0) { p += this.DB; --i; } + } + if((d&0x80) != 0) d |= -256; + if(k == 0 && (this.s&0x80) != (d&0x80)) ++k; + if(k > 0 || d != this.s) r[k++] = d; + } + } + return r; + } + + function bnEquals(a) { return(this.compareTo(a)==0); } + function bnMin(a) { return(this.compareTo(a)<0)?this:a; } + function bnMax(a) { return(this.compareTo(a)>0)?this:a; } + + // (protected) r = this op a (bitwise) + function bnpBitwiseTo(a,op,r) { + var i, f, m = Math.min(a.t,this.t); + for(i = 0; i < m; ++i) r[i] = op(this[i],a[i]); + if(a.t < this.t) { + f = a.s&this.DM; + for(i = m; i < this.t; ++i) r[i] = op(this[i],f); + r.t = this.t; + } + else { + f = this.s&this.DM; + for(i = m; i < a.t; ++i) r[i] = op(f,a[i]); + r.t = a.t; + } + r.s = op(this.s,a.s); + r.clamp(); + } + + // (public) this & a + function op_and(x,y) { return x&y; } + function bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; } + + // (public) this | a + function op_or(x,y) { return x|y; } + function bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; } + + // (public) this ^ a + function op_xor(x,y) { return x^y; } + function bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; } + + // (public) this & ~a + function op_andnot(x,y) { return x&~y; } + function bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; } + + // (public) ~this + function bnNot() { + var r = nbi(); + for(var i = 0; i < this.t; ++i) r[i] = this.DM&~this[i]; + r.t = this.t; + r.s = ~this.s; + return r; + } + + // (public) this << n + function bnShiftLeft(n) { + var r = nbi(); + if(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r); + return r; + } + + // (public) this >> n + function bnShiftRight(n) { + var r = nbi(); + if(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r); + return r; + } + + // return index of lowest 1-bit in x, x < 2^31 + function lbit(x) { + if(x == 0) return -1; + var r = 0; + if((x&0xffff) == 0) { x >>= 16; r += 16; } + if((x&0xff) == 0) { x >>= 8; r += 8; } + if((x&0xf) == 0) { x >>= 4; r += 4; } + if((x&3) == 0) { x >>= 2; r += 2; } + if((x&1) == 0) ++r; + return r; + } + + // (public) returns index of lowest 1-bit (or -1 if none) + function bnGetLowestSetBit() { + for(var i = 0; i < this.t; ++i) + if(this[i] != 0) return i*this.DB+lbit(this[i]); + if(this.s < 0) return this.t*this.DB; + return -1; + } + + // return number of 1 bits in x + function cbit(x) { + var r = 0; + while(x != 0) { x &= x-1; ++r; } + return r; + } + + // (public) return number of set bits + function bnBitCount() { + var r = 0, x = this.s&this.DM; + for(var i = 0; i < this.t; ++i) r += cbit(this[i]^x); + return r; + } + + // (public) true iff nth bit is set + function bnTestBit(n) { + var j = Math.floor(n/this.DB); + if(j >= this.t) return(this.s!=0); + return((this[j]&(1<<(n%this.DB)))!=0); + } + + // (protected) this op (1<>= this.DB; + } + if(a.t < this.t) { + c += a.s; + while(i < this.t) { + c += this[i]; + r[i++] = c&this.DM; + c >>= this.DB; + } + c += this.s; + } + else { + c += this.s; + while(i < a.t) { + c += a[i]; + r[i++] = c&this.DM; + c >>= this.DB; + } + c += a.s; + } + r.s = (c<0)?-1:0; + if(c > 0) r[i++] = c; + else if(c < -1) r[i++] = this.DV+c; + r.t = i; + r.clamp(); + } + + // (public) this + a + function bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; } + + // (public) this - a + function bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; } + + // (public) this * a + function bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; } + + // (public) this^2 + function bnSquare() { var r = nbi(); this.squareTo(r); return r; } + + // (public) this / a + function bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; } + + // (public) this % a + function bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; } + + // (public) [this/a,this%a] + function bnDivideAndRemainder(a) { + var q = nbi(), r = nbi(); + this.divRemTo(a,q,r); + return new Array(q,r); + } + + // (protected) this *= n, this >= 0, 1 < n < DV + function bnpDMultiply(n) { + this[this.t] = this.am(0,n-1,this,0,0,this.t); + ++this.t; + this.clamp(); + } + + // (protected) this += n << w words, this >= 0 + function bnpDAddOffset(n,w) { + if(n == 0) return; + while(this.t <= w) this[this.t++] = 0; + this[w] += n; + while(this[w] >= this.DV) { + this[w] -= this.DV; + if(++w >= this.t) this[this.t++] = 0; + ++this[w]; + } + } + + // A "null" reducer + function NullExp() {} + function nNop(x) { return x; } + function nMulTo(x,y,r) { x.multiplyTo(y,r); } + function nSqrTo(x,r) { x.squareTo(r); } + + NullExp.prototype.convert = nNop; + NullExp.prototype.revert = nNop; + NullExp.prototype.mulTo = nMulTo; + NullExp.prototype.sqrTo = nSqrTo; + + // (public) this^e + function bnPow(e) { return this.exp(e,new NullExp()); } + + // (protected) r = lower n words of "this * a", a.t <= n + // "this" should be the larger one if appropriate. + function bnpMultiplyLowerTo(a,n,r) { + var i = Math.min(this.t+a.t,n); + r.s = 0; // assumes a,this >= 0 + r.t = i; + while(i > 0) r[--i] = 0; + var j; + for(j = r.t-this.t; i < j; ++i) r[i+this.t] = this.am(0,a[i],r,i,0,this.t); + for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a[i],r,i,0,n-i); + r.clamp(); + } + + // (protected) r = "this * a" without lower n words, n > 0 + // "this" should be the larger one if appropriate. + function bnpMultiplyUpperTo(a,n,r) { + --n; + var i = r.t = this.t+a.t-n; + r.s = 0; // assumes a,this >= 0 + while(--i >= 0) r[i] = 0; + for(i = Math.max(n-this.t,0); i < a.t; ++i) + r[this.t+i-n] = this.am(n-i,a[i],r,0,0,this.t+i-n); + r.clamp(); + r.drShiftTo(1,r); + } + + // Barrett modular reduction + function Barrett(m) { + // setup Barrett + this.r2 = nbi(); + this.q3 = nbi(); + BigInteger.ONE.dlShiftTo(2*m.t,this.r2); + this.mu = this.r2.divide(m); + this.m = m; + } + + function barrettConvert(x) { + if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m); + else if(x.compareTo(this.m) < 0) return x; + else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; } + } + + function barrettRevert(x) { return x; } + + // x = x mod m (HAC 14.42) + function barrettReduce(x) { + x.drShiftTo(this.m.t-1,this.r2); + if(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); } + this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3); + this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2); + while(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1); + x.subTo(this.r2,x); + while(x.compareTo(this.m) >= 0) x.subTo(this.m,x); + } + + // r = x^2 mod m; x != r + function barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); } + + // r = x*y mod m; x,y != r + function barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } + + Barrett.prototype.convert = barrettConvert; + Barrett.prototype.revert = barrettRevert; + Barrett.prototype.reduce = barrettReduce; + Barrett.prototype.mulTo = barrettMulTo; + Barrett.prototype.sqrTo = barrettSqrTo; + + // (public) this^e % m (HAC 14.85) + function bnModPow(e,m) { + var i = e.bitLength(), k, r = nbv(1), z; + if(i <= 0) return r; + else if(i < 18) k = 1; + else if(i < 48) k = 3; + else if(i < 144) k = 4; + else if(i < 768) k = 5; + else k = 6; + if(i < 8) + z = new Classic(m); + else if(m.isEven()) + z = new Barrett(m); + else + z = new Montgomery(m); + + // precomputation + var g = new Array(), n = 3, k1 = k-1, km = (1< 1) { + var g2 = nbi(); + z.sqrTo(g[1],g2); + while(n <= km) { + g[n] = nbi(); + z.mulTo(g2,g[n-2],g[n]); + n += 2; + } + } + + var j = e.t-1, w, is1 = true, r2 = nbi(), t; + i = nbits(e[j])-1; + while(j >= 0) { + if(i >= k1) w = (e[j]>>(i-k1))&km; + else { + w = (e[j]&((1<<(i+1))-1))<<(k1-i); + if(j > 0) w |= e[j-1]>>(this.DB+i-k1); + } + + n = k; + while((w&1) == 0) { w >>= 1; --n; } + if((i -= n) < 0) { i += this.DB; --j; } + if(is1) { // ret == 1, don't bother squaring or multiplying it + g[w].copyTo(r); + is1 = false; + } + else { + while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; } + if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; } + z.mulTo(r2,g[w],r); + } + + while(j >= 0 && (e[j]&(1< 0) { + x.rShiftTo(g,x); + y.rShiftTo(g,y); + } + while(x.signum() > 0) { + if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x); + if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y); + if(x.compareTo(y) >= 0) { + x.subTo(y,x); + x.rShiftTo(1,x); + } + else { + y.subTo(x,y); + y.rShiftTo(1,y); + } + } + if(g > 0) y.lShiftTo(g,y); + return y; + } + + // (protected) this % n, n < 2^26 + function bnpModInt(n) { + if(n <= 0) return 0; + var d = this.DV%n, r = (this.s<0)?n-1:0; + if(this.t > 0) + if(d == 0) r = this[0]%n; + else for(var i = this.t-1; i >= 0; --i) r = (d*r+this[i])%n; + return r; + } + + // (public) 1/this % m (HAC 14.61) + function bnModInverse(m) { + var ac = m.isEven(); + if((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO; + var u = m.clone(), v = this.clone(); + var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1); + while(u.signum() != 0) { + while(u.isEven()) { + u.rShiftTo(1,u); + if(ac) { + if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); } + a.rShiftTo(1,a); + } + else if(!b.isEven()) b.subTo(m,b); + b.rShiftTo(1,b); + } + while(v.isEven()) { + v.rShiftTo(1,v); + if(ac) { + if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); } + c.rShiftTo(1,c); + } + else if(!d.isEven()) d.subTo(m,d); + d.rShiftTo(1,d); + } + if(u.compareTo(v) >= 0) { + u.subTo(v,u); + if(ac) a.subTo(c,a); + b.subTo(d,b); + } + else { + v.subTo(u,v); + if(ac) c.subTo(a,c); + d.subTo(b,d); + } + } + if(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO; + if(d.compareTo(m) >= 0) return d.subtract(m); + if(d.signum() < 0) d.addTo(m,d); else return d; + if(d.signum() < 0) return d.add(m); else return d; + } + + var lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997]; + var lplim = (1<<26)/lowprimes[lowprimes.length-1]; + + // (public) test primality with certainty >= 1-.5^t + function bnIsProbablePrime(t) { + var i, x = this.abs(); + if(x.t == 1 && x[0] <= lowprimes[lowprimes.length-1]) { + for(i = 0; i < lowprimes.length; ++i) + if(x[0] == lowprimes[i]) return true; + return false; + } + if(x.isEven()) return false; + i = 1; + while(i < lowprimes.length) { + var m = lowprimes[i], j = i+1; + while(j < lowprimes.length && m < lplim) m *= lowprimes[j++]; + m = x.modInt(m); + while(i < j) if(m%lowprimes[i++] == 0) return false; + } + return x.millerRabin(t); + } + + // (protected) true if probably prime (HAC 4.24, Miller-Rabin) + function bnpMillerRabin(t) { + var n1 = this.subtract(BigInteger.ONE); + var k = n1.getLowestSetBit(); + if(k <= 0) return false; + var r = n1.shiftRight(k); + t = (t+1)>>1; + if(t > lowprimes.length) t = lowprimes.length; + var a = nbi(); + for(var i = 0; i < t; ++i) { + //Pick bases at random, instead of starting at 2 + a.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]); + var y = a.modPow(r,this); + if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) { + var j = 1; + while(j++ < k && y.compareTo(n1) != 0) { + y = y.modPowInt(2,this); + if(y.compareTo(BigInteger.ONE) == 0) return false; + } + if(y.compareTo(n1) != 0) return false; + } + } + return true; + } + + // protected + BigInteger.prototype.chunkSize = bnpChunkSize; + BigInteger.prototype.toRadix = bnpToRadix; + BigInteger.prototype.fromRadix = bnpFromRadix; + BigInteger.prototype.fromNumber = bnpFromNumber; + BigInteger.prototype.bitwiseTo = bnpBitwiseTo; + BigInteger.prototype.changeBit = bnpChangeBit; + BigInteger.prototype.addTo = bnpAddTo; + BigInteger.prototype.dMultiply = bnpDMultiply; + BigInteger.prototype.dAddOffset = bnpDAddOffset; + BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo; + BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo; + BigInteger.prototype.modInt = bnpModInt; + BigInteger.prototype.millerRabin = bnpMillerRabin; + + // public + BigInteger.prototype.clone = bnClone; + BigInteger.prototype.intValue = bnIntValue; + BigInteger.prototype.byteValue = bnByteValue; + BigInteger.prototype.shortValue = bnShortValue; + BigInteger.prototype.signum = bnSigNum; + BigInteger.prototype.toByteArray = bnToByteArray; + BigInteger.prototype.equals = bnEquals; + BigInteger.prototype.min = bnMin; + BigInteger.prototype.max = bnMax; + BigInteger.prototype.and = bnAnd; + BigInteger.prototype.or = bnOr; + BigInteger.prototype.xor = bnXor; + BigInteger.prototype.andNot = bnAndNot; + BigInteger.prototype.not = bnNot; + BigInteger.prototype.shiftLeft = bnShiftLeft; + BigInteger.prototype.shiftRight = bnShiftRight; + BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit; + BigInteger.prototype.bitCount = bnBitCount; + BigInteger.prototype.testBit = bnTestBit; + BigInteger.prototype.setBit = bnSetBit; + BigInteger.prototype.clearBit = bnClearBit; + BigInteger.prototype.flipBit = bnFlipBit; + BigInteger.prototype.add = bnAdd; + BigInteger.prototype.subtract = bnSubtract; + BigInteger.prototype.multiply = bnMultiply; + BigInteger.prototype.divide = bnDivide; + BigInteger.prototype.remainder = bnRemainder; + BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder; + BigInteger.prototype.modPow = bnModPow; + BigInteger.prototype.modInverse = bnModInverse; + BigInteger.prototype.pow = bnPow; + BigInteger.prototype.gcd = bnGCD; + BigInteger.prototype.isProbablePrime = bnIsProbablePrime; + + // JSBN-specific extension + BigInteger.prototype.square = bnSquare; + + // Expose the Barrett function + BigInteger.prototype.Barrett = Barrett + + // BigInteger interfaces not implemented in jsbn: + + // BigInteger(int signum, byte[] magnitude) + // double doubleValue() + // float floatValue() + // int hashCode() + // long longValue() + // static BigInteger valueOf(long val) + + // Random number generator - requires a PRNG backend, e.g. prng4.js + + // For best results, put code like + // + // in your main HTML document. + + var rng_state; + var rng_pool; + var rng_pptr; + + // Mix in a 32-bit integer into the pool + function rng_seed_int(x) { + rng_pool[rng_pptr++] ^= x & 255; + rng_pool[rng_pptr++] ^= (x >> 8) & 255; + rng_pool[rng_pptr++] ^= (x >> 16) & 255; + rng_pool[rng_pptr++] ^= (x >> 24) & 255; + if(rng_pptr >= rng_psize) rng_pptr -= rng_psize; + } + + // Mix in the current time (w/milliseconds) into the pool + function rng_seed_time() { + rng_seed_int(new Date().getTime()); + } + + // Initialize the pool with junk if needed. + if(rng_pool == null) { + rng_pool = new Array(); + rng_pptr = 0; + var t; + if(typeof window !== "undefined" && window.crypto) { + if (window.crypto.getRandomValues) { + // Use webcrypto if available + var ua = new Uint8Array(32); + window.crypto.getRandomValues(ua); + for(t = 0; t < 32; ++t) + rng_pool[rng_pptr++] = ua[t]; + } + else if(navigator.appName == "Netscape" && navigator.appVersion < "5") { + // Extract entropy (256 bits) from NS4 RNG if available + var z = window.crypto.random(32); + for(t = 0; t < z.length; ++t) + rng_pool[rng_pptr++] = z.charCodeAt(t) & 255; + } + } + while(rng_pptr < rng_psize) { // extract some randomness from Math.random() + t = Math.floor(65536 * Math.random()); + rng_pool[rng_pptr++] = t >>> 8; + rng_pool[rng_pptr++] = t & 255; + } + rng_pptr = 0; + rng_seed_time(); + //rng_seed_int(window.screenX); + //rng_seed_int(window.screenY); + } + + function rng_get_byte() { + if(rng_state == null) { + rng_seed_time(); + rng_state = prng_newstate(); + rng_state.init(rng_pool); + for(rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr) + rng_pool[rng_pptr] = 0; + rng_pptr = 0; + //rng_pool = null; + } + // TODO: allow reseeding after first request + return rng_state.next(); + } + + function rng_get_bytes(ba) { + var i; + for(i = 0; i < ba.length; ++i) ba[i] = rng_get_byte(); + } + + function SecureRandom() {} + + SecureRandom.prototype.nextBytes = rng_get_bytes; + + // prng4.js - uses Arcfour as a PRNG + + function Arcfour() { + this.i = 0; + this.j = 0; + this.S = new Array(); + } + + // Initialize arcfour context from key, an array of ints, each from [0..255] + function ARC4init(key) { + var i, j, t; + for(i = 0; i < 256; ++i) + this.S[i] = i; + j = 0; + for(i = 0; i < 256; ++i) { + j = (j + this.S[i] + key[i % key.length]) & 255; + t = this.S[i]; + this.S[i] = this.S[j]; + this.S[j] = t; + } + this.i = 0; + this.j = 0; + } + + function ARC4next() { + var t; + this.i = (this.i + 1) & 255; + this.j = (this.j + this.S[this.i]) & 255; + t = this.S[this.i]; + this.S[this.i] = this.S[this.j]; + this.S[this.j] = t; + return this.S[(t + this.S[this.i]) & 255]; + } + + Arcfour.prototype.init = ARC4init; + Arcfour.prototype.next = ARC4next; + + // Plug in your RNG constructor here + function prng_newstate() { + return new Arcfour(); + } + + // Pool size must be a multiple of 4 and greater than 32. + // An array of bytes the size of the pool will be passed to init() + var rng_psize = 256; + + BigInteger.SecureRandom = SecureRandom; + BigInteger.BigInteger = BigInteger; + if (true) { + exports = module.exports = BigInteger; + } else {} + +}).call(this); + + +/***/ }), +/* 243 */ +/***/ (function(__unusedmodule, exports) { + +exports.f = Object.getOwnPropertySymbols; + + +/***/ }), +/* 244 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var Type = __webpack_require__(755); + +var YAML_DATE_REGEXP = new RegExp( + '^([0-9][0-9][0-9][0-9])' + // [1] year + '-([0-9][0-9])' + // [2] month + '-([0-9][0-9])$'); // [3] day + +var YAML_TIMESTAMP_REGEXP = new RegExp( + '^([0-9][0-9][0-9][0-9])' + // [1] year + '-([0-9][0-9]?)' + // [2] month + '-([0-9][0-9]?)' + // [3] day + '(?:[Tt]|[ \\t]+)' + // ... + '([0-9][0-9]?)' + // [4] hour + ':([0-9][0-9])' + // [5] minute + ':([0-9][0-9])' + // [6] second + '(?:\\.([0-9]*))?' + // [7] fraction + '(?:[ \\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour + '(?::([0-9][0-9]))?))?$'); // [11] tz_minute + +function resolveYamlTimestamp(data) { + if (data === null) return false; + if (YAML_DATE_REGEXP.exec(data) !== null) return true; + if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true; + return false; +} + +function constructYamlTimestamp(data) { + var match, year, month, day, hour, minute, second, fraction = 0, + delta = null, tz_hour, tz_minute, date; + + match = YAML_DATE_REGEXP.exec(data); + if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data); + + if (match === null) throw new Error('Date resolve error'); + + // match: [1] year [2] month [3] day + + year = +(match[1]); + month = +(match[2]) - 1; // JS month starts with 0 + day = +(match[3]); + + if (!match[4]) { // no hour + return new Date(Date.UTC(year, month, day)); + } + + // match: [4] hour [5] minute [6] second [7] fraction + + hour = +(match[4]); + minute = +(match[5]); + second = +(match[6]); + + if (match[7]) { + fraction = match[7].slice(0, 3); + while (fraction.length < 3) { // milli-seconds + fraction += '0'; + } + fraction = +fraction; + } + + // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute + + if (match[9]) { + tz_hour = +(match[10]); + tz_minute = +(match[11] || 0); + delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds + if (match[9] === '-') delta = -delta; + } + + date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction)); + + if (delta) date.setTime(date.getTime() - delta); + + return date; +} + +function representYamlTimestamp(object /*, style*/) { + return object.toISOString(); +} + +module.exports = new Type('tag:yaml.org,2002:timestamp', { + kind: 'scalar', + resolve: resolveYamlTimestamp, + construct: constructYamlTimestamp, + instanceOf: Date, + represent: representYamlTimestamp +}); + + +/***/ }), +/* 245 */ +/***/ (function(module) { + +var core = module.exports = { version: '2.6.12' }; +if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef + + +/***/ }), +/* 246 */, +/* 247 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + +const os = __webpack_require__(87); +const hasFlag = __webpack_require__(364); + +const env = process.env; + +let forceColor; +if (hasFlag('no-color') || + hasFlag('no-colors') || + hasFlag('color=false')) { + forceColor = false; +} else if (hasFlag('color') || + hasFlag('colors') || + hasFlag('color=true') || + hasFlag('color=always')) { + forceColor = true; +} +if ('FORCE_COLOR' in env) { + forceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0; +} + +function translateLevel(level) { + if (level === 0) { + return false; + } + + return { + level, + hasBasic: true, + has256: level >= 2, + has16m: level >= 3 + }; +} + +function supportsColor(stream) { + if (forceColor === false) { + return 0; + } + + if (hasFlag('color=16m') || + hasFlag('color=full') || + hasFlag('color=truecolor')) { + return 3; + } + + if (hasFlag('color=256')) { + return 2; + } + + if (stream && !stream.isTTY && forceColor !== true) { + return 0; + } + + const min = forceColor ? 1 : 0; + + if (process.platform === 'win32') { + // Node.js 7.5.0 is the first version of Node.js to include a patch to + // libuv that enables 256 color output on Windows. Anything earlier and it + // won't work. However, here we target Node.js 8 at minimum as it is an LTS + // release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows + // release that supports 256 colors. Windows 10 build 14931 is the first release + // that supports 16m/TrueColor. + const osRelease = os.release().split('.'); + if ( + Number(process.versions.node.split('.')[0]) >= 8 && + Number(osRelease[0]) >= 10 && + Number(osRelease[2]) >= 10586 + ) { + return Number(osRelease[2]) >= 14931 ? 3 : 2; + } + + return 1; + } + + if ('CI' in env) { + if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') { + return 1; + } + + return min; + } + + if ('TEAMCITY_VERSION' in env) { + return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; + } + + if (env.COLORTERM === 'truecolor') { + return 3; + } + + if ('TERM_PROGRAM' in env) { + const version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10); + + switch (env.TERM_PROGRAM) { + case 'iTerm.app': + return version >= 3 ? 3 : 2; + case 'Apple_Terminal': + return 2; + // No default + } + } + + if (/-256(color)?$/i.test(env.TERM)) { + return 2; + } + + if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { + return 1; + } + + if ('COLORTERM' in env) { + return 1; + } + + if (env.TERM === 'dumb') { + return min; + } + + return min; +} + +function getSupportLevel(stream) { + const level = supportsColor(stream); + return translateLevel(level); +} + +module.exports = { + supportsColor: getSupportLevel, + stdout: getSupportLevel(process.stdout), + stderr: getSupportLevel(process.stderr) +}; + + +/***/ }), +/* 248 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; + +var _extractHashtags = _interopRequireDefault(__webpack_require__(566)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(hashtag) { + if (!hashtag) { + return false; + } + + var extracted = (0, _extractHashtags["default"])(hashtag); // Should extract the hashtag minus the # sign, hence the .slice(1) + + return extracted.length === 1 && extracted[0] === hashtag.slice(1); +} + +module.exports = exports.default; + +/***/ }), +/* 249 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +// Copyright 2011 Mark Cavage All rights reserved. + +var errors = __webpack_require__(584); +var types = __webpack_require__(362); + +var Reader = __webpack_require__(733); +var Writer = __webpack_require__(998); + + +// --- Exports + +module.exports = { + + Reader: Reader, + + Writer: Writer + +}; + +for (var t in types) { + if (types.hasOwnProperty(t)) + module.exports[t] = types[t]; +} +for (var e in errors) { + if (errors.hasOwnProperty(e)) + module.exports[e] = errors[e]; +} + + +/***/ }), +/* 250 */ +/***/ (function(module) { + +// API +module.exports = abort; + +/** + * Aborts leftover active jobs + * + * @param {object} state - current state object + */ +function abort(state) +{ + Object.keys(state.jobs).forEach(clean.bind(state)); + + // reset leftover jobs + state.jobs = {}; +} + +/** + * Cleans up leftover job by invoking abort function for the provided job id + * + * @this state + * @param {string|number} key - job id to abort + */ +function clean(key) +{ + if (typeof this.jobs[key] == 'function') + { + this.jobs[key](); + } +} + + +/***/ }), +/* 251 */, +/* 252 */, +/* 253 */, +/* 254 */ +/***/ (function(module) { + +function Caseless (dict) { + this.dict = dict || {} +} +Caseless.prototype.set = function (name, value, clobber) { + if (typeof name === 'object') { + for (var i in name) { + this.set(i, name[i], value) + } + } else { + if (typeof clobber === 'undefined') clobber = true + var has = this.has(name) + + if (!clobber && has) this.dict[has] = this.dict[has] + ',' + value + else this.dict[has || name] = value + return has + } +} +Caseless.prototype.has = function (name) { + var keys = Object.keys(this.dict) + , name = name.toLowerCase() + ; + for (var i=0;i 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_PROTOCOL_OPTIONS; + + if (!text || (options.extractUrlsWithoutProtocol ? !text.match(/\./) : !text.match(/:/))) { + return []; + } + + var urls = []; + + var _loop = function _loop() { + var before = RegExp.$2; + var url = RegExp.$3; + var protocol = RegExp.$4; + var domain = RegExp.$5; + var path = RegExp.$7; + var endPosition = _extractUrl["default"].lastIndex; + var startPosition = endPosition - url.length; + + if (!isValidUrl(url, protocol || DEFAULT_PROTOCOL, domain)) { + return "continue"; + } // extract ASCII-only domains. + + + if (!protocol) { + if (!options.extractUrlsWithoutProtocol || before.match(_invalidUrlWithoutProtocolPrecedingChars["default"])) { + return "continue"; + } + + var lastUrl = null; + var asciiEndPosition = 0; + domain.replace(_validAsciiDomain["default"], function (asciiDomain) { + var asciiStartPosition = domain.indexOf(asciiDomain, asciiEndPosition); + asciiEndPosition = asciiStartPosition + asciiDomain.length; + lastUrl = { + url: asciiDomain, + indices: [startPosition + asciiStartPosition, startPosition + asciiEndPosition] + }; + urls.push(lastUrl); + }); // no ASCII-only domain found. Skip the entire URL. + + if (lastUrl == null) { + return "continue"; + } // lastUrl only contains domain. Need to add path and query if they exist. + + + if (path) { + lastUrl.url = url.replace(domain, lastUrl.url); + lastUrl.indices[1] = endPosition; + } + } else { + // In the case of t.co URLs, don't allow additional path characters. + if (url.match(_validTcoUrl["default"])) { + var tcoUrlSlug = RegExp.$1; + + if (tcoUrlSlug && tcoUrlSlug.length > MAX_TCO_SLUG_LENGTH) { + return "continue"; + } else { + url = RegExp.lastMatch; + endPosition = startPosition + url.length; + } + } + + urls.push({ + url: url, + indices: [startPosition, endPosition] + }); + } + }; + + while (_extractUrl["default"].exec(text)) { + var _ret = _loop(); + + if (_ret === "continue") continue; + } + + return urls; +}; + +var isValidUrl = function isValidUrl(url, protocol, domain) { + var urlLength = url.length; + + var punycodeEncodedDomain = _idna["default"].toAscii(domain); + + if (!punycodeEncodedDomain || !punycodeEncodedDomain.length) { + return false; + } + + urlLength = urlLength + punycodeEncodedDomain.length - domain.length; + return protocol.length + urlLength <= MAX_URL_LENGTH; +}; + +var _default = extractUrlsWithIndices; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 258 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var Type = __webpack_require__(755); + +module.exports = new Type('tag:yaml.org,2002:str', { + kind: 'scalar', + construct: function (data) { return data !== null ? data : ''; } +}); + + +/***/ }), +/* 259 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +var def = __webpack_require__(973).f; +var has = __webpack_require__(975); +var TAG = __webpack_require__(621)('toStringTag'); + +module.exports = function (it, tag, stat) { + if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag }); +}; + + +/***/ }), +/* 260 */, +/* 261 */, +/* 262 */, +/* 263 */, +/* 264 */ +/***/ (function(module) { + +"use strict"; + + +// do not edit .js files directly - edit src/index.jst + + + +module.exports = function equal(a, b) { + if (a === b) return true; + + if (a && b && typeof a == 'object' && typeof b == 'object') { + if (a.constructor !== b.constructor) return false; + + var length, i, keys; + if (Array.isArray(a)) { + length = a.length; + if (length != b.length) return false; + for (i = length; i-- !== 0;) + if (!equal(a[i], b[i])) return false; + return true; + } + + + + if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags; + if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf(); + if (a.toString !== Object.prototype.toString) return a.toString() === b.toString(); + + keys = Object.keys(a); + length = keys.length; + if (length !== Object.keys(b).length) return false; + + for (i = length; i-- !== 0;) + if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; + + for (i = length; i-- !== 0;) { + var key = keys[i]; + + if (!equal(a[key], b[key])) return false; + } + + return true; + } + + // true if both NaN, false otherwise + return a!==a && b!==b; +}; + + +/***/ }), +/* 265 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _directionalMarkersGroup = _interopRequireDefault(__webpack_require__(449)); + +var _invalidCharsGroup = _interopRequireDefault(__webpack_require__(148)); + +var _punct = _interopRequireDefault(__webpack_require__(412)); + +var _spacesGroup = _interopRequireDefault(__webpack_require__(162)); + +var _stringSupplant = _interopRequireDefault(__webpack_require__(57)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var invalidDomainChars = (0, _stringSupplant["default"])('#{punct}#{spacesGroup}#{invalidCharsGroup}#{directionalMarkersGroup}', { + punct: _punct["default"], + spacesGroup: _spacesGroup["default"], + invalidCharsGroup: _invalidCharsGroup["default"], + directionalMarkersGroup: _directionalMarkersGroup["default"] +}); +var _default = invalidDomainChars; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 266 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); + +var _validateUrlPchar = _interopRequireDefault(__webpack_require__(340)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlFragment = (0, _regexSupplant["default"])(/(#{validateUrlPchar}|\/|\?)*/i, { + validateUrlPchar: _validateUrlPchar["default"] +}); +var _default = validateUrlFragment; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 267 */, +/* 268 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +// Copyright 2018 Joyent, Inc. + +module.exports = { + read: read, + write: write +}; + +var assert = __webpack_require__(489); +var asn1 = __webpack_require__(325); +var crypto = __webpack_require__(417); +var Buffer = __webpack_require__(726).Buffer; +var algs = __webpack_require__(603); +var utils = __webpack_require__(270); +var Key = __webpack_require__(500); +var PrivateKey = __webpack_require__(502); + +var pkcs1 = __webpack_require__(508); +var pkcs8 = __webpack_require__(435); +var sshpriv = __webpack_require__(862); +var rfc4253 = __webpack_require__(538); + +var errors = __webpack_require__(570); + +var OID_PBES2 = '1.2.840.113549.1.5.13'; +var OID_PBKDF2 = '1.2.840.113549.1.5.12'; + +var OID_TO_CIPHER = { + '1.2.840.113549.3.7': '3des-cbc', + '2.16.840.1.101.3.4.1.2': 'aes128-cbc', + '2.16.840.1.101.3.4.1.42': 'aes256-cbc' +}; +var CIPHER_TO_OID = {}; +Object.keys(OID_TO_CIPHER).forEach(function (k) { + CIPHER_TO_OID[OID_TO_CIPHER[k]] = k; +}); + +var OID_TO_HASH = { + '1.2.840.113549.2.7': 'sha1', + '1.2.840.113549.2.9': 'sha256', + '1.2.840.113549.2.11': 'sha512' +}; +var HASH_TO_OID = {}; +Object.keys(OID_TO_HASH).forEach(function (k) { + HASH_TO_OID[OID_TO_HASH[k]] = k; +}); + +/* + * For reading we support both PKCS#1 and PKCS#8. If we find a private key, + * we just take the public component of it and use that. + */ +function read(buf, options, forceType) { + var input = buf; + if (typeof (buf) !== 'string') { + assert.buffer(buf, 'buf'); + buf = buf.toString('ascii'); + } + + var lines = buf.trim().split(/[\r\n]+/g); + + var m; + var si = -1; + while (!m && si < lines.length) { + m = lines[++si].match(/*JSSTYLED*/ + /[-]+[ ]*BEGIN ([A-Z0-9][A-Za-z0-9]+ )?(PUBLIC|PRIVATE) KEY[ ]*[-]+/); + } + assert.ok(m, 'invalid PEM header'); + + var m2; + var ei = lines.length; + while (!m2 && ei > 0) { + m2 = lines[--ei].match(/*JSSTYLED*/ + /[-]+[ ]*END ([A-Z0-9][A-Za-z0-9]+ )?(PUBLIC|PRIVATE) KEY[ ]*[-]+/); + } + assert.ok(m2, 'invalid PEM footer'); + + /* Begin and end banners must match key type */ + assert.equal(m[2], m2[2]); + var type = m[2].toLowerCase(); + + var alg; + if (m[1]) { + /* They also must match algorithms, if given */ + assert.equal(m[1], m2[1], 'PEM header and footer mismatch'); + alg = m[1].trim(); + } + + lines = lines.slice(si, ei + 1); + + var headers = {}; + while (true) { + lines = lines.slice(1); + m = lines[0].match(/*JSSTYLED*/ + /^([A-Za-z0-9-]+): (.+)$/); + if (!m) + break; + headers[m[1].toLowerCase()] = m[2]; + } + + /* Chop off the first and last lines */ + lines = lines.slice(0, -1).join(''); + buf = Buffer.from(lines, 'base64'); + + var cipher, key, iv; + if (headers['proc-type']) { + var parts = headers['proc-type'].split(','); + if (parts[0] === '4' && parts[1] === 'ENCRYPTED') { + if (typeof (options.passphrase) === 'string') { + options.passphrase = Buffer.from( + options.passphrase, 'utf-8'); + } + if (!Buffer.isBuffer(options.passphrase)) { + throw (new errors.KeyEncryptedError( + options.filename, 'PEM')); + } else { + parts = headers['dek-info'].split(','); + assert.ok(parts.length === 2); + cipher = parts[0].toLowerCase(); + iv = Buffer.from(parts[1], 'hex'); + key = utils.opensslKeyDeriv(cipher, iv, + options.passphrase, 1).key; + } + } + } + + if (alg && alg.toLowerCase() === 'encrypted') { + var eder = new asn1.BerReader(buf); + var pbesEnd; + eder.readSequence(); + + eder.readSequence(); + pbesEnd = eder.offset + eder.length; + + var method = eder.readOID(); + if (method !== OID_PBES2) { + throw (new Error('Unsupported PEM/PKCS8 encryption ' + + 'scheme: ' + method)); + } + + eder.readSequence(); /* PBES2-params */ + + eder.readSequence(); /* keyDerivationFunc */ + var kdfEnd = eder.offset + eder.length; + var kdfOid = eder.readOID(); + if (kdfOid !== OID_PBKDF2) + throw (new Error('Unsupported PBES2 KDF: ' + kdfOid)); + eder.readSequence(); + var salt = eder.readString(asn1.Ber.OctetString, true); + var iterations = eder.readInt(); + var hashAlg = 'sha1'; + if (eder.offset < kdfEnd) { + eder.readSequence(); + var hashAlgOid = eder.readOID(); + hashAlg = OID_TO_HASH[hashAlgOid]; + if (hashAlg === undefined) { + throw (new Error('Unsupported PBKDF2 hash: ' + + hashAlgOid)); + } + } + eder._offset = kdfEnd; + + eder.readSequence(); /* encryptionScheme */ + var cipherOid = eder.readOID(); + cipher = OID_TO_CIPHER[cipherOid]; + if (cipher === undefined) { + throw (new Error('Unsupported PBES2 cipher: ' + + cipherOid)); + } + iv = eder.readString(asn1.Ber.OctetString, true); + + eder._offset = pbesEnd; + buf = eder.readString(asn1.Ber.OctetString, true); + + if (typeof (options.passphrase) === 'string') { + options.passphrase = Buffer.from( + options.passphrase, 'utf-8'); + } + if (!Buffer.isBuffer(options.passphrase)) { + throw (new errors.KeyEncryptedError( + options.filename, 'PEM')); + } + + var cinfo = utils.opensshCipherInfo(cipher); + + cipher = cinfo.opensslName; + key = utils.pbkdf2(hashAlg, salt, iterations, cinfo.keySize, + options.passphrase); + alg = undefined; + } + + if (cipher && key && iv) { + var cipherStream = crypto.createDecipheriv(cipher, key, iv); + var chunk, chunks = []; + cipherStream.once('error', function (e) { + if (e.toString().indexOf('bad decrypt') !== -1) { + throw (new Error('Incorrect passphrase ' + + 'supplied, could not decrypt key')); + } + throw (e); + }); + cipherStream.write(buf); + cipherStream.end(); + while ((chunk = cipherStream.read()) !== null) + chunks.push(chunk); + buf = Buffer.concat(chunks); + } + + /* The new OpenSSH internal format abuses PEM headers */ + if (alg && alg.toLowerCase() === 'openssh') + return (sshpriv.readSSHPrivate(type, buf, options)); + if (alg && alg.toLowerCase() === 'ssh2') + return (rfc4253.readType(type, buf, options)); + + var der = new asn1.BerReader(buf); + der.originalInput = input; + + /* + * All of the PEM file types start with a sequence tag, so chop it + * off here + */ + der.readSequence(); + + /* PKCS#1 type keys name an algorithm in the banner explicitly */ + if (alg) { + if (forceType) + assert.strictEqual(forceType, 'pkcs1'); + return (pkcs1.readPkcs1(alg, type, der)); + } else { + if (forceType) + assert.strictEqual(forceType, 'pkcs8'); + return (pkcs8.readPkcs8(alg, type, der)); + } +} + +function write(key, options, type) { + assert.object(key); + + var alg = { + 'ecdsa': 'EC', + 'rsa': 'RSA', + 'dsa': 'DSA', + 'ed25519': 'EdDSA' + }[key.type]; + var header; + + var der = new asn1.BerWriter(); + + if (PrivateKey.isPrivateKey(key)) { + if (type && type === 'pkcs8') { + header = 'PRIVATE KEY'; + pkcs8.writePkcs8(der, key); + } else { + if (type) + assert.strictEqual(type, 'pkcs1'); + header = alg + ' PRIVATE KEY'; + pkcs1.writePkcs1(der, key); + } + + } else if (Key.isKey(key)) { + if (type && type === 'pkcs1') { + header = alg + ' PUBLIC KEY'; + pkcs1.writePkcs1(der, key); + } else { + if (type) + assert.strictEqual(type, 'pkcs8'); + header = 'PUBLIC KEY'; + pkcs8.writePkcs8(der, key); + } + + } else { + throw (new Error('key is not a Key or PrivateKey')); + } + + var tmp = der.buffer.toString('base64'); + var len = tmp.length + (tmp.length / 64) + + 18 + 16 + header.length*2 + 10; + var buf = Buffer.alloc(len); + var o = 0; + o += buf.write('-----BEGIN ' + header + '-----\n', o); + for (var i = 0; i < tmp.length; ) { + var limit = i + 64; + if (limit > tmp.length) + limit = tmp.length; + o += buf.write(tmp.slice(i, limit), o); + buf[o++] = 10; + i = limit; + } + o += buf.write('-----END ' + header + '-----\n', o); + + return (buf.slice(0, o)); +} + + +/***/ }), +/* 269 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = isSetupDone; + +const fs = __webpack_require__(747); +const { resolve: resolvePath } = __webpack_require__(622); + +function isSetupDone() { + const tweetsFolderPath = resolvePath(process.env.GITHUB_WORKSPACE, "tweets"); + return new Promise((resolve) => { + fs.stat(tweetsFolderPath, (error, stat) => { + if (error) { + return resolve(false); + } + + resolve(stat.isDirectory()); + }); + }); +} + + +/***/ }), +/* 270 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +// Copyright 2015 Joyent, Inc. + +module.exports = { + bufferSplit: bufferSplit, + addRSAMissing: addRSAMissing, + calculateDSAPublic: calculateDSAPublic, + calculateED25519Public: calculateED25519Public, + calculateX25519Public: calculateX25519Public, + mpNormalize: mpNormalize, + mpDenormalize: mpDenormalize, + ecNormalize: ecNormalize, + countZeros: countZeros, + assertCompatible: assertCompatible, + isCompatible: isCompatible, + opensslKeyDeriv: opensslKeyDeriv, + opensshCipherInfo: opensshCipherInfo, + publicFromPrivateECDSA: publicFromPrivateECDSA, + zeroPadToLength: zeroPadToLength, + writeBitString: writeBitString, + readBitString: readBitString, + pbkdf2: pbkdf2 +}; + +var assert = __webpack_require__(489); +var Buffer = __webpack_require__(726).Buffer; +var PrivateKey = __webpack_require__(502); +var Key = __webpack_require__(500); +var crypto = __webpack_require__(417); +var algs = __webpack_require__(603); +var asn1 = __webpack_require__(325); + +var ec = __webpack_require__(161); +var jsbn = __webpack_require__(242).BigInteger; +var nacl = __webpack_require__(196); + +var MAX_CLASS_DEPTH = 3; + +function isCompatible(obj, klass, needVer) { + if (obj === null || typeof (obj) !== 'object') + return (false); + if (needVer === undefined) + needVer = klass.prototype._sshpkApiVersion; + if (obj instanceof klass && + klass.prototype._sshpkApiVersion[0] == needVer[0]) + return (true); + var proto = Object.getPrototypeOf(obj); + var depth = 0; + while (proto.constructor.name !== klass.name) { + proto = Object.getPrototypeOf(proto); + if (!proto || ++depth > MAX_CLASS_DEPTH) + return (false); + } + if (proto.constructor.name !== klass.name) + return (false); + var ver = proto._sshpkApiVersion; + if (ver === undefined) + ver = klass._oldVersionDetect(obj); + if (ver[0] != needVer[0] || ver[1] < needVer[1]) + return (false); + return (true); +} + +function assertCompatible(obj, klass, needVer, name) { + if (name === undefined) + name = 'object'; + assert.ok(obj, name + ' must not be null'); + assert.object(obj, name + ' must be an object'); + if (needVer === undefined) + needVer = klass.prototype._sshpkApiVersion; + if (obj instanceof klass && + klass.prototype._sshpkApiVersion[0] == needVer[0]) + return; + var proto = Object.getPrototypeOf(obj); + var depth = 0; + while (proto.constructor.name !== klass.name) { + proto = Object.getPrototypeOf(proto); + assert.ok(proto && ++depth <= MAX_CLASS_DEPTH, + name + ' must be a ' + klass.name + ' instance'); + } + assert.strictEqual(proto.constructor.name, klass.name, + name + ' must be a ' + klass.name + ' instance'); + var ver = proto._sshpkApiVersion; + if (ver === undefined) + ver = klass._oldVersionDetect(obj); + assert.ok(ver[0] == needVer[0] && ver[1] >= needVer[1], + name + ' must be compatible with ' + klass.name + ' klass ' + + 'version ' + needVer[0] + '.' + needVer[1]); +} + +var CIPHER_LEN = { + 'des-ede3-cbc': { key: 24, iv: 8 }, + 'aes-128-cbc': { key: 16, iv: 16 }, + 'aes-256-cbc': { key: 32, iv: 16 } +}; +var PKCS5_SALT_LEN = 8; + +function opensslKeyDeriv(cipher, salt, passphrase, count) { + assert.buffer(salt, 'salt'); + assert.buffer(passphrase, 'passphrase'); + assert.number(count, 'iteration count'); + + var clen = CIPHER_LEN[cipher]; + assert.object(clen, 'supported cipher'); + + salt = salt.slice(0, PKCS5_SALT_LEN); + + var D, D_prev, bufs; + var material = Buffer.alloc(0); + while (material.length < clen.key + clen.iv) { + bufs = []; + if (D_prev) + bufs.push(D_prev); + bufs.push(passphrase); + bufs.push(salt); + D = Buffer.concat(bufs); + for (var j = 0; j < count; ++j) + D = crypto.createHash('md5').update(D).digest(); + material = Buffer.concat([material, D]); + D_prev = D; + } + + return ({ + key: material.slice(0, clen.key), + iv: material.slice(clen.key, clen.key + clen.iv) + }); +} + +/* See: RFC2898 */ +function pbkdf2(hashAlg, salt, iterations, size, passphrase) { + var hkey = Buffer.alloc(salt.length + 4); + salt.copy(hkey); + + var gen = 0, ts = []; + var i = 1; + while (gen < size) { + var t = T(i++); + gen += t.length; + ts.push(t); + } + return (Buffer.concat(ts).slice(0, size)); + + function T(I) { + hkey.writeUInt32BE(I, hkey.length - 4); + + var hmac = crypto.createHmac(hashAlg, passphrase); + hmac.update(hkey); + + var Ti = hmac.digest(); + var Uc = Ti; + var c = 1; + while (c++ < iterations) { + hmac = crypto.createHmac(hashAlg, passphrase); + hmac.update(Uc); + Uc = hmac.digest(); + for (var x = 0; x < Ti.length; ++x) + Ti[x] ^= Uc[x]; + } + return (Ti); + } +} + +/* Count leading zero bits on a buffer */ +function countZeros(buf) { + var o = 0, obit = 8; + while (o < buf.length) { + var mask = (1 << obit); + if ((buf[o] & mask) === mask) + break; + obit--; + if (obit < 0) { + o++; + obit = 8; + } + } + return (o*8 + (8 - obit) - 1); +} + +function bufferSplit(buf, chr) { + assert.buffer(buf); + assert.string(chr); + + var parts = []; + var lastPart = 0; + var matches = 0; + for (var i = 0; i < buf.length; ++i) { + if (buf[i] === chr.charCodeAt(matches)) + ++matches; + else if (buf[i] === chr.charCodeAt(0)) + matches = 1; + else + matches = 0; + + if (matches >= chr.length) { + var newPart = i + 1; + parts.push(buf.slice(lastPart, newPart - matches)); + lastPart = newPart; + matches = 0; + } + } + if (lastPart <= buf.length) + parts.push(buf.slice(lastPart, buf.length)); + + return (parts); +} + +function ecNormalize(buf, addZero) { + assert.buffer(buf); + if (buf[0] === 0x00 && buf[1] === 0x04) { + if (addZero) + return (buf); + return (buf.slice(1)); + } else if (buf[0] === 0x04) { + if (!addZero) + return (buf); + } else { + while (buf[0] === 0x00) + buf = buf.slice(1); + if (buf[0] === 0x02 || buf[0] === 0x03) + throw (new Error('Compressed elliptic curve points ' + + 'are not supported')); + if (buf[0] !== 0x04) + throw (new Error('Not a valid elliptic curve point')); + if (!addZero) + return (buf); + } + var b = Buffer.alloc(buf.length + 1); + b[0] = 0x0; + buf.copy(b, 1); + return (b); +} + +function readBitString(der, tag) { + if (tag === undefined) + tag = asn1.Ber.BitString; + var buf = der.readString(tag, true); + assert.strictEqual(buf[0], 0x00, 'bit strings with unused bits are ' + + 'not supported (0x' + buf[0].toString(16) + ')'); + return (buf.slice(1)); +} + +function writeBitString(der, buf, tag) { + if (tag === undefined) + tag = asn1.Ber.BitString; + var b = Buffer.alloc(buf.length + 1); + b[0] = 0x00; + buf.copy(b, 1); + der.writeBuffer(b, tag); +} + +function mpNormalize(buf) { + assert.buffer(buf); + while (buf.length > 1 && buf[0] === 0x00 && (buf[1] & 0x80) === 0x00) + buf = buf.slice(1); + if ((buf[0] & 0x80) === 0x80) { + var b = Buffer.alloc(buf.length + 1); + b[0] = 0x00; + buf.copy(b, 1); + buf = b; + } + return (buf); +} + +function mpDenormalize(buf) { + assert.buffer(buf); + while (buf.length > 1 && buf[0] === 0x00) + buf = buf.slice(1); + return (buf); +} + +function zeroPadToLength(buf, len) { + assert.buffer(buf); + assert.number(len); + while (buf.length > len) { + assert.equal(buf[0], 0x00); + buf = buf.slice(1); + } + while (buf.length < len) { + var b = Buffer.alloc(buf.length + 1); + b[0] = 0x00; + buf.copy(b, 1); + buf = b; + } + return (buf); +} + +function bigintToMpBuf(bigint) { + var buf = Buffer.from(bigint.toByteArray()); + buf = mpNormalize(buf); + return (buf); +} + +function calculateDSAPublic(g, p, x) { + assert.buffer(g); + assert.buffer(p); + assert.buffer(x); + g = new jsbn(g); + p = new jsbn(p); + x = new jsbn(x); + var y = g.modPow(x, p); + var ybuf = bigintToMpBuf(y); + return (ybuf); +} + +function calculateED25519Public(k) { + assert.buffer(k); + + var kp = nacl.sign.keyPair.fromSeed(new Uint8Array(k)); + return (Buffer.from(kp.publicKey)); +} + +function calculateX25519Public(k) { + assert.buffer(k); + + var kp = nacl.box.keyPair.fromSeed(new Uint8Array(k)); + return (Buffer.from(kp.publicKey)); +} + +function addRSAMissing(key) { + assert.object(key); + assertCompatible(key, PrivateKey, [1, 1]); + + var d = new jsbn(key.part.d.data); + var buf; + + if (!key.part.dmodp) { + var p = new jsbn(key.part.p.data); + var dmodp = d.mod(p.subtract(1)); + + buf = bigintToMpBuf(dmodp); + key.part.dmodp = {name: 'dmodp', data: buf}; + key.parts.push(key.part.dmodp); + } + if (!key.part.dmodq) { + var q = new jsbn(key.part.q.data); + var dmodq = d.mod(q.subtract(1)); + + buf = bigintToMpBuf(dmodq); + key.part.dmodq = {name: 'dmodq', data: buf}; + key.parts.push(key.part.dmodq); + } +} + +function publicFromPrivateECDSA(curveName, priv) { + assert.string(curveName, 'curveName'); + assert.buffer(priv); + var params = algs.curves[curveName]; + var p = new jsbn(params.p); + var a = new jsbn(params.a); + var b = new jsbn(params.b); + var curve = new ec.ECCurveFp(p, a, b); + var G = curve.decodePointHex(params.G.toString('hex')); + + var d = new jsbn(mpNormalize(priv)); + var pub = G.multiply(d); + pub = Buffer.from(curve.encodePointHex(pub), 'hex'); + + var parts = []; + parts.push({name: 'curve', data: Buffer.from(curveName)}); + parts.push({name: 'Q', data: pub}); + + var key = new Key({type: 'ecdsa', curve: curve, parts: parts}); + return (key); +} + +function opensshCipherInfo(cipher) { + var inf = {}; + switch (cipher) { + case '3des-cbc': + inf.keySize = 24; + inf.blockSize = 8; + inf.opensslName = 'des-ede3-cbc'; + break; + case 'blowfish-cbc': + inf.keySize = 16; + inf.blockSize = 8; + inf.opensslName = 'bf-cbc'; + break; + case 'aes128-cbc': + case 'aes128-ctr': + case 'aes128-gcm@openssh.com': + inf.keySize = 16; + inf.blockSize = 16; + inf.opensslName = 'aes-128-' + cipher.slice(7, 10); + break; + case 'aes192-cbc': + case 'aes192-ctr': + case 'aes192-gcm@openssh.com': + inf.keySize = 24; + inf.blockSize = 16; + inf.opensslName = 'aes-192-' + cipher.slice(7, 10); + break; + case 'aes256-cbc': + case 'aes256-ctr': + case 'aes256-gcm@openssh.com': + inf.keySize = 32; + inf.blockSize = 16; + inf.opensslName = 'aes-256-' + cipher.slice(7, 10); + break; + default: + throw (new Error( + 'Unsupported openssl cipher "' + cipher + '"')); + } + return (inf); +} + + +/***/ }), +/* 271 */, +/* 272 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); + +var _validateUrlUnreserved = _interopRequireDefault(__webpack_require__(626)); + +var _validateUrlPctEncoded = _interopRequireDefault(__webpack_require__(460)); + +var _validateUrlSubDelims = _interopRequireDefault(__webpack_require__(67)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlUserinfo = (0, _regexSupplant["default"])('(?:' + '#{validateUrlUnreserved}|' + '#{validateUrlPctEncoded}|' + '#{validateUrlSubDelims}|' + ':' + ')*', { + validateUrlUnreserved: _validateUrlUnreserved["default"], + validateUrlPctEncoded: _validateUrlPctEncoded["default"], + validateUrlSubDelims: _validateUrlSubDelims["default"] +}, 'i'); +var _default = validateUrlUserinfo; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 273 */, +/* 274 */, +/* 275 */, +/* 276 */, +/* 277 */ +/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { + +var global = __webpack_require__(300); +var inheritIfRequired = __webpack_require__(595); +var dP = __webpack_require__(973).f; +var gOPN = __webpack_require__(996).f; +var isRegExp = __webpack_require__(694); +var $flags = __webpack_require__(788); +var $RegExp = global.RegExp; +var Base = $RegExp; +var proto = $RegExp.prototype; +var re1 = /a/g; +var re2 = /a/g; +// "new" creates a new object, old webkit buggy here +var CORRECT_NEW = new $RegExp(re1) !== re1; + +if (__webpack_require__(843) && (!CORRECT_NEW || __webpack_require__(971)(function () { + re2[__webpack_require__(621)('match')] = false; + // RegExp constructor can alter flags and IsRegExp works correct with @@match + return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i'; +}))) { + $RegExp = function RegExp(p, f) { + var tiRE = this instanceof $RegExp; + var piRE = isRegExp(p); + var fiU = f === undefined; + return !tiRE && piRE && p.constructor === $RegExp && fiU ? p + : inheritIfRequired(CORRECT_NEW + ? new Base(piRE && !fiU ? p.source : p, f) + : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f) + , tiRE ? this : proto, $RegExp); + }; + var proxy = function (key) { + key in $RegExp || dP($RegExp, key, { + configurable: true, + get: function () { return Base[key]; }, + set: function (it) { Base[key] = it; } + }); + }; + for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]); + proto.constructor = $RegExp; + $RegExp.prototype = proto; + __webpack_require__(976)(global, 'RegExp', $RegExp); +} + +__webpack_require__(422)('RegExp'); + + +/***/ }), +/* 278 */, +/* 279 */, +/* 280 */ +/***/ (function(module) { + +module.exports = register; + +function register(state, name, method, options) { + if (typeof method !== "function") { + throw new Error("method for before hook must be a function"); + } + + if (!options) { + options = {}; + } + + if (Array.isArray(name)) { + return name.reverse().reduce(function (callback, name) { + return register.bind(null, state, name, callback, options); + }, method)(); + } + + return Promise.resolve().then(function () { + if (!state.registry[name]) { + return method(options); + } + + return state.registry[name].reduce(function (method, registered) { + return registered.hook.bind(null, method, options); + }, method)(); + }); +} + + +/***/ }), +/* 281 */ +/***/ (function(module) { + +"use strict"; + +module.exports = function generate_enum(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + var $i = 'i' + $lvl, + $vSchema = 'schema' + $lvl; + if (!$isData) { + out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + ';'; + } + out += 'var ' + ($valid) + ';'; + if ($isData) { + out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {'; + } + out += '' + ($valid) + ' = false;for (var ' + ($i) + '=0; ' + ($i) + '<' + ($vSchema) + '.length; ' + ($i) + '++) if (equal(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + '])) { ' + ($valid) + ' = true; break; }'; + if ($isData) { + out += ' } '; + } + out += ' if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('enum') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValues: schema' + ($lvl) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be equal to one of the allowed values\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' }'; + if ($breakOnError) { + out += ' else { '; + } + return out; +} + + +/***/ }), +/* 282 */, +/* 283 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var URI = __webpack_require__(730) + , equal = __webpack_require__(264) + , util = __webpack_require__(855) + , SchemaObject = __webpack_require__(955) + , traverse = __webpack_require__(992); + +module.exports = resolve; + +resolve.normalizeId = normalizeId; +resolve.fullPath = getFullPath; +resolve.url = resolveUrl; +resolve.ids = resolveIds; +resolve.inlineRef = inlineRef; +resolve.schema = resolveSchema; + +/** + * [resolve and compile the references ($ref)] + * @this Ajv + * @param {Function} compile reference to schema compilation funciton (localCompile) + * @param {Object} root object with information about the root schema for the current schema + * @param {String} ref reference to resolve + * @return {Object|Function} schema object (if the schema can be inlined) or validation function + */ +function resolve(compile, root, ref) { + /* jshint validthis: true */ + var refVal = this._refs[ref]; + if (typeof refVal == 'string') { + if (this._refs[refVal]) refVal = this._refs[refVal]; + else return resolve.call(this, compile, root, refVal); + } + + refVal = refVal || this._schemas[ref]; + if (refVal instanceof SchemaObject) { + return inlineRef(refVal.schema, this._opts.inlineRefs) + ? refVal.schema + : refVal.validate || this._compile(refVal); + } + + var res = resolveSchema.call(this, root, ref); + var schema, v, baseId; + if (res) { + schema = res.schema; + root = res.root; + baseId = res.baseId; + } + + if (schema instanceof SchemaObject) { + v = schema.validate || compile.call(this, schema.schema, root, undefined, baseId); + } else if (schema !== undefined) { + v = inlineRef(schema, this._opts.inlineRefs) + ? schema + : compile.call(this, schema, root, undefined, baseId); + } + + return v; +} + + +/** + * Resolve schema, its root and baseId + * @this Ajv + * @param {Object} root root object with properties schema, refVal, refs + * @param {String} ref reference to resolve + * @return {Object} object with properties schema, root, baseId + */ +function resolveSchema(root, ref) { + /* jshint validthis: true */ + var p = URI.parse(ref) + , refPath = _getFullPath(p) + , baseId = getFullPath(this._getId(root.schema)); + if (Object.keys(root.schema).length === 0 || refPath !== baseId) { + var id = normalizeId(refPath); + var refVal = this._refs[id]; + if (typeof refVal == 'string') { + return resolveRecursive.call(this, root, refVal, p); + } else if (refVal instanceof SchemaObject) { + if (!refVal.validate) this._compile(refVal); + root = refVal; + } else { + refVal = this._schemas[id]; + if (refVal instanceof SchemaObject) { + if (!refVal.validate) this._compile(refVal); + if (id == normalizeId(ref)) + return { schema: refVal, root: root, baseId: baseId }; + root = refVal; + } else { + return; + } + } + if (!root.schema) return; + baseId = getFullPath(this._getId(root.schema)); + } + return getJsonPointer.call(this, p, baseId, root.schema, root); +} + + +/* @this Ajv */ +function resolveRecursive(root, ref, parsedRef) { + /* jshint validthis: true */ + var res = resolveSchema.call(this, root, ref); + if (res) { + var schema = res.schema; + var baseId = res.baseId; + root = res.root; + var id = this._getId(schema); + if (id) baseId = resolveUrl(baseId, id); + return getJsonPointer.call(this, parsedRef, baseId, schema, root); + } +} + + +var PREVENT_SCOPE_CHANGE = util.toHash(['properties', 'patternProperties', 'enum', 'dependencies', 'definitions']); +/* @this Ajv */ +function getJsonPointer(parsedRef, baseId, schema, root) { + /* jshint validthis: true */ + parsedRef.fragment = parsedRef.fragment || ''; + if (parsedRef.fragment.slice(0,1) != '/') return; + var parts = parsedRef.fragment.split('/'); + + for (var i = 1; i < parts.length; i++) { + var part = parts[i]; + if (part) { + part = util.unescapeFragment(part); + schema = schema[part]; + if (schema === undefined) break; + var id; + if (!PREVENT_SCOPE_CHANGE[part]) { + id = this._getId(schema); + if (id) baseId = resolveUrl(baseId, id); + if (schema.$ref) { + var $ref = resolveUrl(baseId, schema.$ref); + var res = resolveSchema.call(this, root, $ref); + if (res) { + schema = res.schema; + root = res.root; + baseId = res.baseId; + } + } + } + } + } + if (schema !== undefined && schema !== root.schema) + return { schema: schema, root: root, baseId: baseId }; +} + + +var SIMPLE_INLINED = util.toHash([ + 'type', 'format', 'pattern', + 'maxLength', 'minLength', + 'maxProperties', 'minProperties', + 'maxItems', 'minItems', + 'maximum', 'minimum', + 'uniqueItems', 'multipleOf', + 'required', 'enum' +]); +function inlineRef(schema, limit) { + if (limit === false) return false; + if (limit === undefined || limit === true) return checkNoRef(schema); + else if (limit) return countKeys(schema) <= limit; +} + + +function checkNoRef(schema) { + var item; + if (Array.isArray(schema)) { + for (var i=0; i String#at +// false -> String#codePointAt +module.exports = function (TO_STRING) { + return function (that, pos) { + var s = String(defined(that)); + var i = toInteger(pos); + var l = s.length; + var a, b; + if (i < 0 || i >= l) return TO_STRING ? '' : undefined; + a = s.charCodeAt(i); + return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff + ? TO_STRING ? s.charAt(i) : a + : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; + }; +}; + + +/***/ }), +/* 290 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +// Copyright 2017 Joyent, Inc. + +module.exports = { + DiffieHellman: DiffieHellman, + generateECDSA: generateECDSA, + generateED25519: generateED25519 +}; + +var assert = __webpack_require__(489); +var crypto = __webpack_require__(417); +var Buffer = __webpack_require__(726).Buffer; +var algs = __webpack_require__(603); +var utils = __webpack_require__(270); +var nacl = __webpack_require__(196); + +var Key = __webpack_require__(500); +var PrivateKey = __webpack_require__(502); + +var CRYPTO_HAVE_ECDH = (crypto.createECDH !== undefined); + +var ecdh = __webpack_require__(304); +var ec = __webpack_require__(161); +var jsbn = __webpack_require__(242).BigInteger; + +function DiffieHellman(key) { + utils.assertCompatible(key, Key, [1, 4], 'key'); + this._isPriv = PrivateKey.isPrivateKey(key, [1, 3]); + this._algo = key.type; + this._curve = key.curve; + this._key = key; + if (key.type === 'dsa') { + if (!CRYPTO_HAVE_ECDH) { + throw (new Error('Due to bugs in the node 0.10 ' + + 'crypto API, node 0.12.x or later is required ' + + 'to use DH')); + } + this._dh = crypto.createDiffieHellman( + key.part.p.data, undefined, + key.part.g.data, undefined); + this._p = key.part.p; + this._g = key.part.g; + if (this._isPriv) + this._dh.setPrivateKey(key.part.x.data); + this._dh.setPublicKey(key.part.y.data); + + } else if (key.type === 'ecdsa') { + if (!CRYPTO_HAVE_ECDH) { + this._ecParams = new X9ECParameters(this._curve); + + if (this._isPriv) { + this._priv = new ECPrivate( + this._ecParams, key.part.d.data); + } + return; + } + + var curve = { + 'nistp256': 'prime256v1', + 'nistp384': 'secp384r1', + 'nistp521': 'secp521r1' + }[key.curve]; + this._dh = crypto.createECDH(curve); + if (typeof (this._dh) !== 'object' || + typeof (this._dh.setPrivateKey) !== 'function') { + CRYPTO_HAVE_ECDH = false; + DiffieHellman.call(this, key); + return; + } + if (this._isPriv) + this._dh.setPrivateKey(key.part.d.data); + this._dh.setPublicKey(key.part.Q.data); + + } else if (key.type === 'curve25519') { + if (this._isPriv) { + utils.assertCompatible(key, PrivateKey, [1, 5], 'key'); + this._priv = key.part.k.data; + } + + } else { + throw (new Error('DH not supported for ' + key.type + ' keys')); + } +} + +DiffieHellman.prototype.getPublicKey = function () { + if (this._isPriv) + return (this._key.toPublic()); + return (this._key); +}; + +DiffieHellman.prototype.getPrivateKey = function () { + if (this._isPriv) + return (this._key); + else + return (undefined); +}; +DiffieHellman.prototype.getKey = DiffieHellman.prototype.getPrivateKey; + +DiffieHellman.prototype._keyCheck = function (pk, isPub) { + assert.object(pk, 'key'); + if (!isPub) + utils.assertCompatible(pk, PrivateKey, [1, 3], 'key'); + utils.assertCompatible(pk, Key, [1, 4], 'key'); + + if (pk.type !== this._algo) { + throw (new Error('A ' + pk.type + ' key cannot be used in ' + + this._algo + ' Diffie-Hellman')); + } + + if (pk.curve !== this._curve) { + throw (new Error('A key from the ' + pk.curve + ' curve ' + + 'cannot be used with a ' + this._curve + + ' Diffie-Hellman')); + } + + if (pk.type === 'dsa') { + assert.deepEqual(pk.part.p, this._p, + 'DSA key prime does not match'); + assert.deepEqual(pk.part.g, this._g, + 'DSA key generator does not match'); + } +}; + +DiffieHellman.prototype.setKey = function (pk) { + this._keyCheck(pk); + + if (pk.type === 'dsa') { + this._dh.setPrivateKey(pk.part.x.data); + this._dh.setPublicKey(pk.part.y.data); + + } else if (pk.type === 'ecdsa') { + if (CRYPTO_HAVE_ECDH) { + this._dh.setPrivateKey(pk.part.d.data); + this._dh.setPublicKey(pk.part.Q.data); + } else { + this._priv = new ECPrivate( + this._ecParams, pk.part.d.data); + } + + } else if (pk.type === 'curve25519') { + var k = pk.part.k; + if (!pk.part.k) + k = pk.part.r; + this._priv = k.data; + if (this._priv[0] === 0x00) + this._priv = this._priv.slice(1); + this._priv = this._priv.slice(0, 32); + } + this._key = pk; + this._isPriv = true; +}; +DiffieHellman.prototype.setPrivateKey = DiffieHellman.prototype.setKey; + +DiffieHellman.prototype.computeSecret = function (otherpk) { + this._keyCheck(otherpk, true); + if (!this._isPriv) + throw (new Error('DH exchange has not been initialized with ' + + 'a private key yet')); + + var pub; + if (this._algo === 'dsa') { + return (this._dh.computeSecret( + otherpk.part.y.data)); + + } else if (this._algo === 'ecdsa') { + if (CRYPTO_HAVE_ECDH) { + return (this._dh.computeSecret( + otherpk.part.Q.data)); + } else { + pub = new ECPublic( + this._ecParams, otherpk.part.Q.data); + return (this._priv.deriveSharedSecret(pub)); + } + + } else if (this._algo === 'curve25519') { + pub = otherpk.part.A.data; + while (pub[0] === 0x00 && pub.length > 32) + pub = pub.slice(1); + var priv = this._priv; + assert.strictEqual(pub.length, 32); + assert.strictEqual(priv.length, 32); + + var secret = nacl.box.before(new Uint8Array(pub), + new Uint8Array(priv)); + + return (Buffer.from(secret)); + } + + throw (new Error('Invalid algorithm: ' + this._algo)); +}; + +DiffieHellman.prototype.generateKey = function () { + var parts = []; + var priv, pub; + if (this._algo === 'dsa') { + this._dh.generateKeys(); + + parts.push({name: 'p', data: this._p.data}); + parts.push({name: 'q', data: this._key.part.q.data}); + parts.push({name: 'g', data: this._g.data}); + parts.push({name: 'y', data: this._dh.getPublicKey()}); + parts.push({name: 'x', data: this._dh.getPrivateKey()}); + this._key = new PrivateKey({ + type: 'dsa', + parts: parts + }); + this._isPriv = true; + return (this._key); + + } else if (this._algo === 'ecdsa') { + if (CRYPTO_HAVE_ECDH) { + this._dh.generateKeys(); + + parts.push({name: 'curve', + data: Buffer.from(this._curve)}); + parts.push({name: 'Q', data: this._dh.getPublicKey()}); + parts.push({name: 'd', data: this._dh.getPrivateKey()}); + this._key = new PrivateKey({ + type: 'ecdsa', + curve: this._curve, + parts: parts + }); + this._isPriv = true; + return (this._key); + + } else { + var n = this._ecParams.getN(); + var r = new jsbn(crypto.randomBytes(n.bitLength())); + var n1 = n.subtract(jsbn.ONE); + priv = r.mod(n1).add(jsbn.ONE); + pub = this._ecParams.getG().multiply(priv); + + priv = Buffer.from(priv.toByteArray()); + pub = Buffer.from(this._ecParams.getCurve(). + encodePointHex(pub), 'hex'); + + this._priv = new ECPrivate(this._ecParams, priv); + + parts.push({name: 'curve', + data: Buffer.from(this._curve)}); + parts.push({name: 'Q', data: pub}); + parts.push({name: 'd', data: priv}); + + this._key = new PrivateKey({ + type: 'ecdsa', + curve: this._curve, + parts: parts + }); + this._isPriv = true; + return (this._key); + } + + } else if (this._algo === 'curve25519') { + var pair = nacl.box.keyPair(); + priv = Buffer.from(pair.secretKey); + pub = Buffer.from(pair.publicKey); + priv = Buffer.concat([priv, pub]); + assert.strictEqual(priv.length, 64); + assert.strictEqual(pub.length, 32); + + parts.push({name: 'A', data: pub}); + parts.push({name: 'k', data: priv}); + this._key = new PrivateKey({ + type: 'curve25519', + parts: parts + }); + this._isPriv = true; + return (this._key); + } + + throw (new Error('Invalid algorithm: ' + this._algo)); +}; +DiffieHellman.prototype.generateKeys = DiffieHellman.prototype.generateKey; + +/* These are helpers for using ecc-jsbn (for node 0.10 compatibility). */ + +function X9ECParameters(name) { + var params = algs.curves[name]; + assert.object(params); + + var p = new jsbn(params.p); + var a = new jsbn(params.a); + var b = new jsbn(params.b); + var n = new jsbn(params.n); + var h = jsbn.ONE; + var curve = new ec.ECCurveFp(p, a, b); + var G = curve.decodePointHex(params.G.toString('hex')); + + this.curve = curve; + this.g = G; + this.n = n; + this.h = h; +} +X9ECParameters.prototype.getCurve = function () { return (this.curve); }; +X9ECParameters.prototype.getG = function () { return (this.g); }; +X9ECParameters.prototype.getN = function () { return (this.n); }; +X9ECParameters.prototype.getH = function () { return (this.h); }; + +function ECPublic(params, buffer) { + this._params = params; + if (buffer[0] === 0x00) + buffer = buffer.slice(1); + this._pub = params.getCurve().decodePointHex(buffer.toString('hex')); +} + +function ECPrivate(params, buffer) { + this._params = params; + this._priv = new jsbn(utils.mpNormalize(buffer)); +} +ECPrivate.prototype.deriveSharedSecret = function (pubKey) { + assert.ok(pubKey instanceof ECPublic); + var S = pubKey._pub.multiply(this._priv); + return (Buffer.from(S.getX().toBigInteger().toByteArray())); +}; + +function generateED25519() { + var pair = nacl.sign.keyPair(); + var priv = Buffer.from(pair.secretKey); + var pub = Buffer.from(pair.publicKey); + assert.strictEqual(priv.length, 64); + assert.strictEqual(pub.length, 32); + + var parts = []; + parts.push({name: 'A', data: pub}); + parts.push({name: 'k', data: priv.slice(0, 32)}); + var key = new PrivateKey({ + type: 'ed25519', + parts: parts + }); + return (key); +} + +/* Generates a new ECDSA private key on a given curve. */ +function generateECDSA(curve) { + var parts = []; + var key; + + if (CRYPTO_HAVE_ECDH) { + /* + * Node crypto doesn't expose key generation directly, but the + * ECDH instances can generate keys. It turns out this just + * calls into the OpenSSL generic key generator, and we can + * read its output happily without doing an actual DH. So we + * use that here. + */ + var osCurve = { + 'nistp256': 'prime256v1', + 'nistp384': 'secp384r1', + 'nistp521': 'secp521r1' + }[curve]; + + var dh = crypto.createECDH(osCurve); + dh.generateKeys(); + + parts.push({name: 'curve', + data: Buffer.from(curve)}); + parts.push({name: 'Q', data: dh.getPublicKey()}); + parts.push({name: 'd', data: dh.getPrivateKey()}); + + key = new PrivateKey({ + type: 'ecdsa', + curve: curve, + parts: parts + }); + return (key); + } else { + + var ecParams = new X9ECParameters(curve); + + /* This algorithm taken from FIPS PUB 186-4 (section B.4.1) */ + var n = ecParams.getN(); + /* + * The crypto.randomBytes() function can only give us whole + * bytes, so taking a nod from X9.62, we round up. + */ + var cByteLen = Math.ceil((n.bitLength() + 64) / 8); + var c = new jsbn(crypto.randomBytes(cByteLen)); + + var n1 = n.subtract(jsbn.ONE); + var priv = c.mod(n1).add(jsbn.ONE); + var pub = ecParams.getG().multiply(priv); + + priv = Buffer.from(priv.toByteArray()); + pub = Buffer.from(ecParams.getCurve(). + encodePointHex(pub), 'hex'); + + parts.push({name: 'curve', data: Buffer.from(curve)}); + parts.push({name: 'Q', data: pub}); + parts.push({name: 'd', data: priv}); + + key = new PrivateKey({ + type: 'ecdsa', + curve: curve, + parts: parts + }); + return (key); + } +} + + +/***/ }), +/* 291 */, +/* 292 */, +/* 293 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _rng = _interopRequireDefault(__webpack_require__(506)); + +var _stringify = _interopRequireDefault(__webpack_require__(960)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function v4(options, buf, offset) { + options = options || {}; + + const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + + + rnds[6] = rnds[6] & 0x0f | 0x40; + rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided + + if (buf) { + offset = offset || 0; + + for (let i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; + } + + return buf; + } + + return (0, _stringify.default)(rnds); +} + +var _default = v4; +exports.default = _default; + +/***/ }), +/* 294 */, +/* 295 */, +/* 296 */, +/* 297 */, +/* 298 */, +/* 299 */ +/***/ (function(__unusedmodule, exports) { + +"use strict"; + + +Object.defineProperty(exports, '__esModule', { value: true }); + +const VERSION = "4.3.1"; + +/** + * Some “list” response that can be paginated have a different response structure + * + * They have a `total_count` key in the response (search also has `incomplete_results`, + * /installation/repositories also has `repository_selection`), as well as a key with + * the list of the items which name varies from endpoint to endpoint. + * + * Octokit normalizes these responses so that paginated results are always returned following + * the same structure. One challenge is that if the list response has only one page, no Link + * header is provided, so this header alone is not sufficient to check wether a response is + * paginated or not. + * + * We check if a "total_count" key is present in the response data, but also make sure that + * a "url" property is not, as the "Get the combined status for a specific ref" endpoint would + * otherwise match: https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref + */ +function normalizePaginatedListResponse(response) { + // endpoints can respond with 204 if repository is empty + if (!response.data) { + return { ...response, + data: [] + }; + } + + const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data); + if (!responseNeedsNormalization) return response; // keep the additional properties intact as there is currently no other way + // to retrieve the same information. + + const incompleteResults = response.data.incomplete_results; + const repositorySelection = response.data.repository_selection; + const totalCount = response.data.total_count; + delete response.data.incomplete_results; + delete response.data.repository_selection; + delete response.data.total_count; + const namespaceKey = Object.keys(response.data)[0]; + const data = response.data[namespaceKey]; + response.data = data; + + if (typeof incompleteResults !== "undefined") { + response.data.incomplete_results = incompleteResults; + } + + if (typeof repositorySelection !== "undefined") { + response.data.repository_selection = repositorySelection; + } + + response.data.total_count = totalCount; + return response; +} + +function iterator(octokit, route, parameters) { + const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters); + const requestMethod = typeof route === "function" ? route : octokit.request; + const method = options.method; + const headers = options.headers; + let url = options.url; + return { + [Symbol.asyncIterator]: () => ({ + async next() { + if (!url) return { + done: true + }; + + try { + const response = await requestMethod({ + method, + url, + headers + }); + const normalizedResponse = normalizePaginatedListResponse(response); // `response.headers.link` format: + // '; rel="next", ; rel="last"' + // sets `url` to undefined if "next" URL is not present or `link` header is not set + + url = ((normalizedResponse.headers.link || "").match(/<([^>]+)>;\s*rel="next"/) || [])[1]; + return { + value: normalizedResponse + }; + } catch (error) { + if (error.status !== 409) throw error; + url = ""; + return { + value: { + status: 200, + headers: {}, + data: [] + } + }; + } + } + + }) + }; +} + +function paginate(octokit, route, parameters, mapFn) { + if (typeof parameters === "function") { + mapFn = parameters; + parameters = undefined; + } + + return gather(octokit, [], iterator(octokit, route, parameters)[Symbol.asyncIterator](), mapFn); +} + +function gather(octokit, results, iterator, mapFn) { + return iterator.next().then(result => { + if (result.done) { + return results; + } + + let earlyExit = false; + + function done() { + earlyExit = true; + } + + results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data); + + if (earlyExit) { + return results; + } + + return gather(octokit, results, iterator, mapFn); + }); +} + +const composePaginateRest = Object.assign(paginate, { + iterator +}); + +const paginatingEndpoints = ["GET /app/hook/deliveries", "GET /app/installations", "GET /enterprises/{enterprise}/actions/permissions/organizations", "GET /enterprises/{enterprise}/actions/runner-groups", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners", "GET /enterprises/{enterprise}/actions/runners", "GET /enterprises/{enterprise}/audit-log", "GET /enterprises/{enterprise}/code-scanning/alerts", "GET /enterprises/{enterprise}/secret-scanning/alerts", "GET /enterprises/{enterprise}/settings/billing/advanced-security", "GET /events", "GET /gists", "GET /gists/public", "GET /gists/starred", "GET /gists/{gist_id}/comments", "GET /gists/{gist_id}/commits", "GET /gists/{gist_id}/forks", "GET /installation/repositories", "GET /issues", "GET /licenses", "GET /marketplace_listing/plans", "GET /marketplace_listing/plans/{plan_id}/accounts", "GET /marketplace_listing/stubbed/plans", "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts", "GET /networks/{owner}/{repo}/events", "GET /notifications", "GET /organizations", "GET /orgs/{org}/actions/cache/usage-by-repository", "GET /orgs/{org}/actions/permissions/repositories", "GET /orgs/{org}/actions/runner-groups", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners", "GET /orgs/{org}/actions/runners", "GET /orgs/{org}/actions/secrets", "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", "GET /orgs/{org}/audit-log", "GET /orgs/{org}/blocks", "GET /orgs/{org}/code-scanning/alerts", "GET /orgs/{org}/codespaces", "GET /orgs/{org}/credential-authorizations", "GET /orgs/{org}/dependabot/secrets", "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories", "GET /orgs/{org}/events", "GET /orgs/{org}/external-groups", "GET /orgs/{org}/failed_invitations", "GET /orgs/{org}/hooks", "GET /orgs/{org}/hooks/{hook_id}/deliveries", "GET /orgs/{org}/installations", "GET /orgs/{org}/invitations", "GET /orgs/{org}/invitations/{invitation_id}/teams", "GET /orgs/{org}/issues", "GET /orgs/{org}/members", "GET /orgs/{org}/migrations", "GET /orgs/{org}/migrations/{migration_id}/repositories", "GET /orgs/{org}/outside_collaborators", "GET /orgs/{org}/packages", "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", "GET /orgs/{org}/projects", "GET /orgs/{org}/public_members", "GET /orgs/{org}/repos", "GET /orgs/{org}/secret-scanning/alerts", "GET /orgs/{org}/settings/billing/advanced-security", "GET /orgs/{org}/team-sync/groups", "GET /orgs/{org}/teams", "GET /orgs/{org}/teams/{team_slug}/discussions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/invitations", "GET /orgs/{org}/teams/{team_slug}/members", "GET /orgs/{org}/teams/{team_slug}/projects", "GET /orgs/{org}/teams/{team_slug}/repos", "GET /orgs/{org}/teams/{team_slug}/teams", "GET /projects/columns/{column_id}/cards", "GET /projects/{project_id}/collaborators", "GET /projects/{project_id}/columns", "GET /repos/{owner}/{repo}/actions/artifacts", "GET /repos/{owner}/{repo}/actions/caches", "GET /repos/{owner}/{repo}/actions/runners", "GET /repos/{owner}/{repo}/actions/runs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs", "GET /repos/{owner}/{repo}/actions/secrets", "GET /repos/{owner}/{repo}/actions/workflows", "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", "GET /repos/{owner}/{repo}/assignees", "GET /repos/{owner}/{repo}/branches", "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", "GET /repos/{owner}/{repo}/code-scanning/alerts", "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", "GET /repos/{owner}/{repo}/code-scanning/analyses", "GET /repos/{owner}/{repo}/codespaces", "GET /repos/{owner}/{repo}/codespaces/devcontainers", "GET /repos/{owner}/{repo}/codespaces/secrets", "GET /repos/{owner}/{repo}/collaborators", "GET /repos/{owner}/{repo}/comments", "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/commits", "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments", "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", "GET /repos/{owner}/{repo}/commits/{ref}/check-runs", "GET /repos/{owner}/{repo}/commits/{ref}/check-suites", "GET /repos/{owner}/{repo}/commits/{ref}/status", "GET /repos/{owner}/{repo}/commits/{ref}/statuses", "GET /repos/{owner}/{repo}/contributors", "GET /repos/{owner}/{repo}/dependabot/secrets", "GET /repos/{owner}/{repo}/deployments", "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", "GET /repos/{owner}/{repo}/environments", "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies", "GET /repos/{owner}/{repo}/events", "GET /repos/{owner}/{repo}/forks", "GET /repos/{owner}/{repo}/hooks", "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries", "GET /repos/{owner}/{repo}/invitations", "GET /repos/{owner}/{repo}/issues", "GET /repos/{owner}/{repo}/issues/comments", "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/issues/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/comments", "GET /repos/{owner}/{repo}/issues/{issue_number}/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/labels", "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions", "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline", "GET /repos/{owner}/{repo}/keys", "GET /repos/{owner}/{repo}/labels", "GET /repos/{owner}/{repo}/milestones", "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels", "GET /repos/{owner}/{repo}/notifications", "GET /repos/{owner}/{repo}/pages/builds", "GET /repos/{owner}/{repo}/projects", "GET /repos/{owner}/{repo}/pulls", "GET /repos/{owner}/{repo}/pulls/comments", "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments", "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits", "GET /repos/{owner}/{repo}/pulls/{pull_number}/files", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", "GET /repos/{owner}/{repo}/releases", "GET /repos/{owner}/{repo}/releases/{release_id}/assets", "GET /repos/{owner}/{repo}/releases/{release_id}/reactions", "GET /repos/{owner}/{repo}/secret-scanning/alerts", "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", "GET /repos/{owner}/{repo}/stargazers", "GET /repos/{owner}/{repo}/subscribers", "GET /repos/{owner}/{repo}/tags", "GET /repos/{owner}/{repo}/teams", "GET /repos/{owner}/{repo}/topics", "GET /repositories", "GET /repositories/{repository_id}/environments/{environment_name}/secrets", "GET /search/code", "GET /search/commits", "GET /search/issues", "GET /search/labels", "GET /search/repositories", "GET /search/topics", "GET /search/users", "GET /teams/{team_id}/discussions", "GET /teams/{team_id}/discussions/{discussion_number}/comments", "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /teams/{team_id}/discussions/{discussion_number}/reactions", "GET /teams/{team_id}/invitations", "GET /teams/{team_id}/members", "GET /teams/{team_id}/projects", "GET /teams/{team_id}/repos", "GET /teams/{team_id}/teams", "GET /user/blocks", "GET /user/codespaces", "GET /user/codespaces/secrets", "GET /user/emails", "GET /user/followers", "GET /user/following", "GET /user/gpg_keys", "GET /user/installations", "GET /user/installations/{installation_id}/repositories", "GET /user/issues", "GET /user/keys", "GET /user/marketplace_purchases", "GET /user/marketplace_purchases/stubbed", "GET /user/memberships/orgs", "GET /user/migrations", "GET /user/migrations/{migration_id}/repositories", "GET /user/orgs", "GET /user/packages", "GET /user/packages/{package_type}/{package_name}/versions", "GET /user/public_emails", "GET /user/repos", "GET /user/repository_invitations", "GET /user/ssh_signing_keys", "GET /user/starred", "GET /user/subscriptions", "GET /user/teams", "GET /users", "GET /users/{username}/events", "GET /users/{username}/events/orgs/{org}", "GET /users/{username}/events/public", "GET /users/{username}/followers", "GET /users/{username}/following", "GET /users/{username}/gists", "GET /users/{username}/gpg_keys", "GET /users/{username}/keys", "GET /users/{username}/orgs", "GET /users/{username}/packages", "GET /users/{username}/projects", "GET /users/{username}/received_events", "GET /users/{username}/received_events/public", "GET /users/{username}/repos", "GET /users/{username}/ssh_signing_keys", "GET /users/{username}/starred", "GET /users/{username}/subscriptions"]; + +function isPaginatingEndpoint(arg) { + if (typeof arg === "string") { + return paginatingEndpoints.includes(arg); + } else { + return false; + } +} + +/** + * @param octokit Octokit instance + * @param options Options passed to Octokit constructor + */ + +function paginateRest(octokit) { + return { + paginate: Object.assign(paginate.bind(null, octokit), { + iterator: iterator.bind(null, octokit) + }) + }; +} +paginateRest.VERSION = VERSION; + +exports.composePaginateRest = composePaginateRest; +exports.isPaginatingEndpoint = isPaginatingEndpoint; +exports.paginateRest = paginateRest; +exports.paginatingEndpoints = paginatingEndpoints; +//# sourceMappingURL=index.js.map + + +/***/ }), +/* 300 */ +/***/ (function(module) { + +// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 +var global = module.exports = typeof window != 'undefined' && window.Math == Math + ? window : typeof self != 'undefined' && self.Math == Math ? self + // eslint-disable-next-line no-new-func + : Function('return this')(); +if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef + + +/***/ }), +/* 301 */, +/* 302 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlPort = /[0-9]{1,5}/; +var _default = validateUrlPort; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 303 */, +/* 304 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +var crypto = __webpack_require__(417); +var BigInteger = __webpack_require__(242).BigInteger; +var ECPointFp = __webpack_require__(161).ECPointFp; +var Buffer = __webpack_require__(726).Buffer; +exports.ECCurves = __webpack_require__(959); + +// zero prepad +function unstupid(hex,len) +{ + return (hex.length >= len) ? hex : unstupid("0"+hex,len); +} + +exports.ECKey = function(curve, key, isPublic) +{ + var priv; + var c = curve(); + var n = c.getN(); + var bytes = Math.floor(n.bitLength()/8); + + if(key) + { + if(isPublic) + { + var curve = c.getCurve(); +// var x = key.slice(1,bytes+1); // skip the 04 for uncompressed format +// var y = key.slice(bytes+1); +// this.P = new ECPointFp(curve, +// curve.fromBigInteger(new BigInteger(x.toString("hex"), 16)), +// curve.fromBigInteger(new BigInteger(y.toString("hex"), 16))); + this.P = curve.decodePointHex(key.toString("hex")); + }else{ + if(key.length != bytes) return false; + priv = new BigInteger(key.toString("hex"), 16); + } + }else{ + var n1 = n.subtract(BigInteger.ONE); + var r = new BigInteger(crypto.randomBytes(n.bitLength())); + priv = r.mod(n1).add(BigInteger.ONE); + this.P = c.getG().multiply(priv); + } + if(this.P) + { +// var pubhex = unstupid(this.P.getX().toBigInteger().toString(16),bytes*2)+unstupid(this.P.getY().toBigInteger().toString(16),bytes*2); +// this.PublicKey = Buffer.from("04"+pubhex,"hex"); + this.PublicKey = Buffer.from(c.getCurve().encodeCompressedPointHex(this.P),"hex"); + } + if(priv) + { + this.PrivateKey = Buffer.from(unstupid(priv.toString(16),bytes*2),"hex"); + this.deriveSharedSecret = function(key) + { + if(!key || !key.P) return false; + var S = key.P.multiply(priv); + return Buffer.from(unstupid(S.getX().toBigInteger().toString(16),bytes*2),"hex"); + } + } +} + + + +/***/ }), +/* 305 */, +/* 306 */, +/* 307 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var bmpNumerals = /0-9\u0660-\u0669\u06f0-\u06f9\u07c0-\u07c9\u0966-\u096f\u09e6-\u09ef\u0a66-\u0a6f\u0ae6-\u0aef\u0b66-\u0b6f\u0be6-\u0bef\u0c66-\u0c6f\u0ce6-\u0cef\u0d66-\u0d6f\u0de6-\u0def\u0e50-\u0e59\u0ed0-\u0ed9\u0f20-\u0f29\u1040-\u1049\u1090-\u1099\u17e0-\u17e9\u1810-\u1819\u1946-\u194f\u19d0-\u19d9\u1a80-\u1a89\u1a90-\u1a99\u1b50-\u1b59\u1bb0-\u1bb9\u1c40-\u1c49\u1c50-\u1c59\ua620-\ua629\ua8d0-\ua8d9\ua900-\ua909\ua9d0-\ua9d9\ua9f0-\ua9f9\uaa50-\uaa59\uabf0-\uabf9\uff10-\uff19/; +var _default = bmpNumerals; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 308 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; +// Standard YAML's Failsafe schema. +// http://www.yaml.org/spec/1.2/spec.html#id2802346 + + + + + +var Schema = __webpack_require__(863); + + +module.exports = new Schema({ + explicit: [ + __webpack_require__(258), + __webpack_require__(503), + __webpack_require__(778) + ] +}); + + +/***/ }), +/* 309 */, +/* 310 */, +/* 311 */, +/* 312 */, +/* 313 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; + +__webpack_require__(809); + +__webpack_require__(277); + +__webpack_require__(968); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +// Builds a RegExp +function _default(regex, map, flags) { + flags = flags || ''; + + if (typeof regex !== 'string') { + if (regex.global && flags.indexOf('g') < 0) { + flags += 'g'; + } + + if (regex.ignoreCase && flags.indexOf('i') < 0) { + flags += 'i'; + } + + if (regex.multiline && flags.indexOf('m') < 0) { + flags += 'm'; + } + + regex = regex.source; + } + + return new RegExp(regex.replace(/#\{(\w+)\}/g, function (match, name) { + var newRegex = map[name] || ''; + + if (typeof newRegex !== 'string') { + newRegex = newRegex.source; + } + + return newRegex; + }), flags); +} + +module.exports = exports.default; + +/***/ }), +/* 314 */ +/***/ (function(module) { + +"use strict"; + +module.exports = function generate_custom(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + var $rule = this, + $definition = 'definition' + $lvl, + $rDef = $rule.definition, + $closingBraces = ''; + var $compile, $inline, $macro, $ruleValidate, $validateCode; + if ($isData && $rDef.$data) { + $validateCode = 'keywordValidate' + $lvl; + var $validateSchema = $rDef.validateSchema; + out += ' var ' + ($definition) + ' = RULES.custom[\'' + ($keyword) + '\'].definition; var ' + ($validateCode) + ' = ' + ($definition) + '.validate;'; + } else { + $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it); + if (!$ruleValidate) return; + $schemaValue = 'validate.schema' + $schemaPath; + $validateCode = $ruleValidate.code; + $compile = $rDef.compile; + $inline = $rDef.inline; + $macro = $rDef.macro; + } + var $ruleErrs = $validateCode + '.errors', + $i = 'i' + $lvl, + $ruleErr = 'ruleErr' + $lvl, + $asyncKeyword = $rDef.async; + if ($asyncKeyword && !it.async) throw new Error('async keyword in sync schema'); + if (!($inline || $macro)) { + out += '' + ($ruleErrs) + ' = null;'; + } + out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';'; + if ($isData && $rDef.$data) { + $closingBraces += '}'; + out += ' if (' + ($schemaValue) + ' === undefined) { ' + ($valid) + ' = true; } else { '; + if ($validateSchema) { + $closingBraces += '}'; + out += ' ' + ($valid) + ' = ' + ($definition) + '.validateSchema(' + ($schemaValue) + '); if (' + ($valid) + ') { '; + } + } + if ($inline) { + if ($rDef.statements) { + out += ' ' + ($ruleValidate.validate) + ' '; + } else { + out += ' ' + ($valid) + ' = ' + ($ruleValidate.validate) + '; '; + } + } else if ($macro) { + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + $it.schema = $ruleValidate.validate; + $it.schemaPath = ''; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + var $code = it.validate($it).replace(/validate\.schema/g, $validateCode); + it.compositeRule = $it.compositeRule = $wasComposite; + out += ' ' + ($code); + } else { + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; + out += ' ' + ($validateCode) + '.call( '; + if (it.opts.passContext) { + out += 'this'; + } else { + out += 'self'; + } + if ($compile || $rDef.schema === false) { + out += ' , ' + ($data) + ' '; + } else { + out += ' , ' + ($schemaValue) + ' , ' + ($data) + ' , validate.schema' + (it.schemaPath) + ' '; + } + out += ' , (dataPath || \'\')'; + if (it.errorPath != '""') { + out += ' + ' + (it.errorPath); + } + var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData', + $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty'; + out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ' , rootData ) '; + var def_callRuleValidate = out; + out = $$outStack.pop(); + if ($rDef.errors === false) { + out += ' ' + ($valid) + ' = '; + if ($asyncKeyword) { + out += 'await '; + } + out += '' + (def_callRuleValidate) + '; '; + } else { + if ($asyncKeyword) { + $ruleErrs = 'customErrors' + $lvl; + out += ' var ' + ($ruleErrs) + ' = null; try { ' + ($valid) + ' = await ' + (def_callRuleValidate) + '; } catch (e) { ' + ($valid) + ' = false; if (e instanceof ValidationError) ' + ($ruleErrs) + ' = e.errors; else throw e; } '; + } else { + out += ' ' + ($ruleErrs) + ' = null; ' + ($valid) + ' = ' + (def_callRuleValidate) + '; '; + } + } + } + if ($rDef.modifying) { + out += ' if (' + ($parentData) + ') ' + ($data) + ' = ' + ($parentData) + '[' + ($parentDataProperty) + '];'; + } + out += '' + ($closingBraces); + if ($rDef.valid) { + if ($breakOnError) { + out += ' if (true) { '; + } + } else { + out += ' if ( '; + if ($rDef.valid === undefined) { + out += ' !'; + if ($macro) { + out += '' + ($nextValid); + } else { + out += '' + ($valid); + } + } else { + out += ' ' + (!$rDef.valid) + ' '; + } + out += ') { '; + $errorKeyword = $rule.keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || 'custom') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \'' + ($rule.keyword) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should pass "' + ($rule.keyword) + '" keyword validation\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + var def_customError = out; + out = $$outStack.pop(); + if ($inline) { + if ($rDef.errors) { + if ($rDef.errors != 'full') { + out += ' for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + ' 0) { + return parse(val); + } else if (type === 'number' && isFinite(val)) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + 'val is not a non-empty string or a valid number. val=' + + JSON.stringify(val) + ); +}; + +/** + * Parse the given `str` and return milliseconds. + * + * @param {String} str + * @return {Number} + * @api private + */ + +function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || 'ms').toLowerCase(); + switch (type) { + case 'years': + case 'year': + case 'yrs': + case 'yr': + case 'y': + return n * y; + case 'weeks': + case 'week': + case 'w': + return n * w; + case 'days': + case 'day': + case 'd': + return n * d; + case 'hours': + case 'hour': + case 'hrs': + case 'hr': + case 'h': + return n * h; + case 'minutes': + case 'minute': + case 'mins': + case 'min': + case 'm': + return n * m; + case 'seconds': + case 'second': + case 'secs': + case 'sec': + case 's': + return n * s; + case 'milliseconds': + case 'millisecond': + case 'msecs': + case 'msec': + case 'ms': + return n; + default: + return undefined; + } +} + +/** + * Short format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtShort(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return Math.round(ms / d) + 'd'; + } + if (msAbs >= h) { + return Math.round(ms / h) + 'h'; + } + if (msAbs >= m) { + return Math.round(ms / m) + 'm'; + } + if (msAbs >= s) { + return Math.round(ms / s) + 's'; + } + return ms + 'ms'; +} + +/** + * Long format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtLong(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return plural(ms, msAbs, d, 'day'); + } + if (msAbs >= h) { + return plural(ms, msAbs, h, 'hour'); + } + if (msAbs >= m) { + return plural(ms, msAbs, m, 'minute'); } + if (msAbs >= s) { + return plural(ms, msAbs, s, 'second'); + } + return ms + ' ms'; +} + +/** + * Pluralization helper. + */ + +function plural(ms, msAbs, n, name) { + var isPlural = msAbs >= n * 1.5; + return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); +} + + +/***/ }), +/* 318 */ +/***/ (function(module) { + +module.exports = {"$id":"beforeRequest.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","optional":true,"required":["lastAccess","eTag","hitCount"],"properties":{"expires":{"type":"string","pattern":"^(\\d{4})(-)?(\\d\\d)(-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)(:)?(\\d\\d)(\\.\\d+)?(Z|([+-])(\\d\\d)(:)?(\\d\\d))?"},"lastAccess":{"type":"string","pattern":"^(\\d{4})(-)?(\\d\\d)(-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)(:)?(\\d\\d)(\\.\\d+)?(Z|([+-])(\\d\\d)(:)?(\\d\\d))?"},"eTag":{"type":"string"},"hitCount":{"type":"integer"},"comment":{"type":"string"}}}; + +/***/ }), +/* 319 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var classof = __webpack_require__(324); +var builtinExec = RegExp.prototype.exec; + + // `RegExpExec` abstract operation +// https://tc39.github.io/ecma262/#sec-regexpexec +module.exports = function (R, S) { + var exec = R.exec; + if (typeof exec === 'function') { + var result = exec.call(R, S); + if (typeof result !== 'object') { + throw new TypeError('RegExp exec method returned something other than an Object or null'); + } + return result; + } + if (classof(R) !== 'RegExp') { + throw new TypeError('RegExp#exec called on incompatible receiver'); + } + return builtinExec.call(R, S); +}; + + +/***/ }), +/* 320 */, +/* 321 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +var pIE = __webpack_require__(632); +var createDesc = __webpack_require__(690); +var toIObject = __webpack_require__(78); +var toPrimitive = __webpack_require__(710); +var has = __webpack_require__(975); +var IE8_DOM_DEFINE = __webpack_require__(704); +var gOPD = Object.getOwnPropertyDescriptor; + +exports.f = __webpack_require__(843) ? gOPD : function getOwnPropertyDescriptor(O, P) { + O = toIObject(O); + P = toPrimitive(P, true); + if (IE8_DOM_DEFINE) try { + return gOPD(O, P); + } catch (e) { /* empty */ } + if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]); +}; + + +/***/ }), +/* 322 */, +/* 323 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +// Copyright 2017 Joyent, Inc. + +module.exports = { + read: read, + verify: verify, + sign: sign, + signAsync: signAsync, + write: write +}; + +var assert = __webpack_require__(489); +var asn1 = __webpack_require__(325); +var Buffer = __webpack_require__(726).Buffer; +var algs = __webpack_require__(603); +var utils = __webpack_require__(270); +var Key = __webpack_require__(500); +var PrivateKey = __webpack_require__(502); +var pem = __webpack_require__(268); +var Identity = __webpack_require__(378); +var Signature = __webpack_require__(575); +var Certificate = __webpack_require__(202); +var pkcs8 = __webpack_require__(435); + +/* + * This file is based on RFC5280 (X.509). + */ + +/* Helper to read in a single mpint */ +function readMPInt(der, nm) { + assert.strictEqual(der.peek(), asn1.Ber.Integer, + nm + ' is not an Integer'); + return (utils.mpNormalize(der.readString(asn1.Ber.Integer, true))); +} + +function verify(cert, key) { + var sig = cert.signatures.x509; + assert.object(sig, 'x509 signature'); + + var algParts = sig.algo.split('-'); + if (algParts[0] !== key.type) + return (false); + + var blob = sig.cache; + if (blob === undefined) { + var der = new asn1.BerWriter(); + writeTBSCert(cert, der); + blob = der.buffer; + } + + var verifier = key.createVerify(algParts[1]); + verifier.write(blob); + return (verifier.verify(sig.signature)); +} + +function Local(i) { + return (asn1.Ber.Context | asn1.Ber.Constructor | i); +} + +function Context(i) { + return (asn1.Ber.Context | i); +} + +var SIGN_ALGS = { + 'rsa-md5': '1.2.840.113549.1.1.4', + 'rsa-sha1': '1.2.840.113549.1.1.5', + 'rsa-sha256': '1.2.840.113549.1.1.11', + 'rsa-sha384': '1.2.840.113549.1.1.12', + 'rsa-sha512': '1.2.840.113549.1.1.13', + 'dsa-sha1': '1.2.840.10040.4.3', + 'dsa-sha256': '2.16.840.1.101.3.4.3.2', + 'ecdsa-sha1': '1.2.840.10045.4.1', + 'ecdsa-sha256': '1.2.840.10045.4.3.2', + 'ecdsa-sha384': '1.2.840.10045.4.3.3', + 'ecdsa-sha512': '1.2.840.10045.4.3.4', + 'ed25519-sha512': '1.3.101.112' +}; +Object.keys(SIGN_ALGS).forEach(function (k) { + SIGN_ALGS[SIGN_ALGS[k]] = k; +}); +SIGN_ALGS['1.3.14.3.2.3'] = 'rsa-md5'; +SIGN_ALGS['1.3.14.3.2.29'] = 'rsa-sha1'; + +var EXTS = { + 'issuerKeyId': '2.5.29.35', + 'altName': '2.5.29.17', + 'basicConstraints': '2.5.29.19', + 'keyUsage': '2.5.29.15', + 'extKeyUsage': '2.5.29.37' }; -const VERSION = "6.6.2"; +function read(buf, options) { + if (typeof (buf) === 'string') { + buf = Buffer.from(buf, 'binary'); + } + assert.buffer(buf, 'buf'); -function endpointsToMethods(octokit, endpointsMap) { - const newMethods = {}; + var der = new asn1.BerReader(buf); - for (const [scope, endpoints] of Object.entries(endpointsMap)) { - for (const [methodName, endpoint] of Object.entries(endpoints)) { - const [route, defaults, decorations] = endpoint; - const [method, url] = route.split(/ /); - const endpointDefaults = Object.assign({ - method, - url - }, defaults); + der.readSequence(); + if (Math.abs(der.length - der.remain) > 1) { + throw (new Error('DER sequence does not contain whole byte ' + + 'stream')); + } - if (!newMethods[scope]) { - newMethods[scope] = {}; - } + var tbsStart = der.offset; + der.readSequence(); + var sigOffset = der.offset + der.length; + var tbsEnd = sigOffset; - const scopeMethods = newMethods[scope]; + if (der.peek() === Local(0)) { + der.readSequence(Local(0)); + var version = der.readInt(); + assert.ok(version <= 3, + 'only x.509 versions up to v3 supported'); + } - if (decorations) { - scopeMethods[methodName] = decorate(octokit, scope, methodName, endpointDefaults, decorations); - continue; - } + var cert = {}; + cert.signatures = {}; + var sig = (cert.signatures.x509 = {}); + sig.extras = {}; - scopeMethods[methodName] = octokit.request.defaults(endpointDefaults); - } - } + cert.serial = readMPInt(der, 'serial'); - return newMethods; + der.readSequence(); + var after = der.offset + der.length; + var certAlgOid = der.readOID(); + var certAlg = SIGN_ALGS[certAlgOid]; + if (certAlg === undefined) + throw (new Error('unknown signature algorithm ' + certAlgOid)); + + der._offset = after; + cert.issuer = Identity.parseAsn1(der); + + der.readSequence(); + cert.validFrom = readDate(der); + cert.validUntil = readDate(der); + + cert.subjects = [Identity.parseAsn1(der)]; + + der.readSequence(); + after = der.offset + der.length; + cert.subjectKey = pkcs8.readPkcs8(undefined, 'public', der); + der._offset = after; + + /* issuerUniqueID */ + if (der.peek() === Local(1)) { + der.readSequence(Local(1)); + sig.extras.issuerUniqueID = + buf.slice(der.offset, der.offset + der.length); + der._offset += der.length; + } + + /* subjectUniqueID */ + if (der.peek() === Local(2)) { + der.readSequence(Local(2)); + sig.extras.subjectUniqueID = + buf.slice(der.offset, der.offset + der.length); + der._offset += der.length; + } + + /* extensions */ + if (der.peek() === Local(3)) { + der.readSequence(Local(3)); + var extEnd = der.offset + der.length; + der.readSequence(); + + while (der.offset < extEnd) + readExtension(cert, buf, der); + + assert.strictEqual(der.offset, extEnd); + } + + assert.strictEqual(der.offset, sigOffset); + + der.readSequence(); + after = der.offset + der.length; + var sigAlgOid = der.readOID(); + var sigAlg = SIGN_ALGS[sigAlgOid]; + if (sigAlg === undefined) + throw (new Error('unknown signature algorithm ' + sigAlgOid)); + der._offset = after; + + var sigData = der.readString(asn1.Ber.BitString, true); + if (sigData[0] === 0) + sigData = sigData.slice(1); + var algParts = sigAlg.split('-'); + + sig.signature = Signature.parse(sigData, algParts[0], 'asn1'); + sig.signature.hashAlgorithm = algParts[1]; + sig.algo = sigAlg; + sig.cache = buf.slice(tbsStart, tbsEnd); + + return (new Certificate(cert)); } -function decorate(octokit, scope, methodName, defaults, decorations) { - const requestWithDefaults = octokit.request.defaults(defaults); - /* istanbul ignore next */ +function readDate(der) { + if (der.peek() === asn1.Ber.UTCTime) { + return (utcTimeToDate(der.readString(asn1.Ber.UTCTime))); + } else if (der.peek() === asn1.Ber.GeneralizedTime) { + return (gTimeToDate(der.readString(asn1.Ber.GeneralizedTime))); + } else { + throw (new Error('Unsupported date format')); + } +} - function withDecorations(...args) { - // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 - let options = requestWithDefaults.endpoint.merge(...args); // There are currently no other decorations than `.mapToData` +function writeDate(der, date) { + if (date.getUTCFullYear() >= 2050 || date.getUTCFullYear() < 1950) { + der.writeString(dateToGTime(date), asn1.Ber.GeneralizedTime); + } else { + der.writeString(dateToUTCTime(date), asn1.Ber.UTCTime); + } +} - if (decorations.mapToData) { - options = Object.assign({}, options, { - data: options[decorations.mapToData], - [decorations.mapToData]: undefined - }); - return requestWithDefaults(options); - } +/* RFC5280, section 4.2.1.6 (GeneralName type) */ +var ALTNAME = { + OtherName: Local(0), + RFC822Name: Context(1), + DNSName: Context(2), + X400Address: Local(3), + DirectoryName: Local(4), + EDIPartyName: Local(5), + URI: Context(6), + IPAddress: Context(7), + OID: Context(8) +}; - if (decorations.renamed) { - const [newScope, newMethodName] = decorations.renamed; - octokit.log.warn(`octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`); - } +/* RFC5280, section 4.2.1.12 (KeyPurposeId) */ +var EXTPURPOSE = { + 'serverAuth': '1.3.6.1.5.5.7.3.1', + 'clientAuth': '1.3.6.1.5.5.7.3.2', + 'codeSigning': '1.3.6.1.5.5.7.3.3', - if (decorations.deprecated) { - octokit.log.warn(decorations.deprecated); - } + /* See https://github.com/joyent/oid-docs/blob/master/root.md */ + 'joyentDocker': '1.3.6.1.4.1.38678.1.4.1', + 'joyentCmon': '1.3.6.1.4.1.38678.1.4.2' +}; +var EXTPURPOSE_REV = {}; +Object.keys(EXTPURPOSE).forEach(function (k) { + EXTPURPOSE_REV[EXTPURPOSE[k]] = k; +}); - if (decorations.renamedParameters) { - // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 - const options = requestWithDefaults.endpoint.merge(...args); +var KEYUSEBITS = [ + 'signature', 'identity', 'keyEncryption', + 'encryption', 'keyAgreement', 'ca', 'crl' +]; - for (const [name, alias] of Object.entries(decorations.renamedParameters)) { - if (name in options) { - octokit.log.warn(`"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead`); +function readExtension(cert, buf, der) { + der.readSequence(); + var after = der.offset + der.length; + var extId = der.readOID(); + var id; + var sig = cert.signatures.x509; + if (!sig.extras.exts) + sig.extras.exts = []; + + var critical; + if (der.peek() === asn1.Ber.Boolean) + critical = der.readBoolean(); + + switch (extId) { + case (EXTS.basicConstraints): + der.readSequence(asn1.Ber.OctetString); + der.readSequence(); + var bcEnd = der.offset + der.length; + var ca = false; + if (der.peek() === asn1.Ber.Boolean) + ca = der.readBoolean(); + if (cert.purposes === undefined) + cert.purposes = []; + if (ca === true) + cert.purposes.push('ca'); + var bc = { oid: extId, critical: critical }; + if (der.offset < bcEnd && der.peek() === asn1.Ber.Integer) + bc.pathLen = der.readInt(); + sig.extras.exts.push(bc); + break; + case (EXTS.extKeyUsage): + der.readSequence(asn1.Ber.OctetString); + der.readSequence(); + if (cert.purposes === undefined) + cert.purposes = []; + var ekEnd = der.offset + der.length; + while (der.offset < ekEnd) { + var oid = der.readOID(); + cert.purposes.push(EXTPURPOSE_REV[oid] || oid); + } + /* + * This is a bit of a hack: in the case where we have a cert + * that's only allowed to do serverAuth or clientAuth (and not + * the other), we want to make sure all our Subjects are of + * the right type. But we already parsed our Subjects and + * decided if they were hosts or users earlier (since it appears + * first in the cert). + * + * So we go through and mutate them into the right kind here if + * it doesn't match. This might not be hugely beneficial, as it + * seems that single-purpose certs are not often seen in the + * wild. + */ + if (cert.purposes.indexOf('serverAuth') !== -1 && + cert.purposes.indexOf('clientAuth') === -1) { + cert.subjects.forEach(function (ide) { + if (ide.type !== 'host') { + ide.type = 'host'; + ide.hostname = ide.uid || + ide.email || + ide.components[0].value; + } + }); + } else if (cert.purposes.indexOf('clientAuth') !== -1 && + cert.purposes.indexOf('serverAuth') === -1) { + cert.subjects.forEach(function (ide) { + if (ide.type !== 'user') { + ide.type = 'user'; + ide.uid = ide.hostname || + ide.email || + ide.components[0].value; + } + }); + } + sig.extras.exts.push({ oid: extId, critical: critical }); + break; + case (EXTS.keyUsage): + der.readSequence(asn1.Ber.OctetString); + var bits = der.readString(asn1.Ber.BitString, true); + var setBits = readBitField(bits, KEYUSEBITS); + setBits.forEach(function (bit) { + if (cert.purposes === undefined) + cert.purposes = []; + if (cert.purposes.indexOf(bit) === -1) + cert.purposes.push(bit); + }); + sig.extras.exts.push({ oid: extId, critical: critical, + bits: bits }); + break; + case (EXTS.altName): + der.readSequence(asn1.Ber.OctetString); + der.readSequence(); + var aeEnd = der.offset + der.length; + while (der.offset < aeEnd) { + switch (der.peek()) { + case ALTNAME.OtherName: + case ALTNAME.EDIPartyName: + der.readSequence(); + der._offset += der.length; + break; + case ALTNAME.OID: + der.readOID(ALTNAME.OID); + break; + case ALTNAME.RFC822Name: + /* RFC822 specifies email addresses */ + var email = der.readString(ALTNAME.RFC822Name); + id = Identity.forEmail(email); + if (!cert.subjects[0].equals(id)) + cert.subjects.push(id); + break; + case ALTNAME.DirectoryName: + der.readSequence(ALTNAME.DirectoryName); + id = Identity.parseAsn1(der); + if (!cert.subjects[0].equals(id)) + cert.subjects.push(id); + break; + case ALTNAME.DNSName: + var host = der.readString( + ALTNAME.DNSName); + id = Identity.forHost(host); + if (!cert.subjects[0].equals(id)) + cert.subjects.push(id); + break; + default: + der.readString(der.peek()); + break; + } + } + sig.extras.exts.push({ oid: extId, critical: critical }); + break; + default: + sig.extras.exts.push({ + oid: extId, + critical: critical, + data: der.readString(asn1.Ber.OctetString, true) + }); + break; + } - if (!(alias in options)) { - options[alias] = options[name]; - } + der._offset = after; +} + +var UTCTIME_RE = + /^([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})?Z$/; +function utcTimeToDate(t) { + var m = t.match(UTCTIME_RE); + assert.ok(m, 'timestamps must be in UTC'); + var d = new Date(); + + var thisYear = d.getUTCFullYear(); + var century = Math.floor(thisYear / 100) * 100; + + var year = parseInt(m[1], 10); + if (thisYear % 100 < 50 && year >= 60) + year += (century - 1); + else + year += century; + d.setUTCFullYear(year, parseInt(m[2], 10) - 1, parseInt(m[3], 10)); + d.setUTCHours(parseInt(m[4], 10), parseInt(m[5], 10)); + if (m[6] && m[6].length > 0) + d.setUTCSeconds(parseInt(m[6], 10)); + return (d); +} + +var GTIME_RE = + /^([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})?Z$/; +function gTimeToDate(t) { + var m = t.match(GTIME_RE); + assert.ok(m); + var d = new Date(); + + d.setUTCFullYear(parseInt(m[1], 10), parseInt(m[2], 10) - 1, + parseInt(m[3], 10)); + d.setUTCHours(parseInt(m[4], 10), parseInt(m[5], 10)); + if (m[6] && m[6].length > 0) + d.setUTCSeconds(parseInt(m[6], 10)); + return (d); +} + +function zeroPad(n, m) { + if (m === undefined) + m = 2; + var s = '' + n; + while (s.length < m) + s = '0' + s; + return (s); +} + +function dateToUTCTime(d) { + var s = ''; + s += zeroPad(d.getUTCFullYear() % 100); + s += zeroPad(d.getUTCMonth() + 1); + s += zeroPad(d.getUTCDate()); + s += zeroPad(d.getUTCHours()); + s += zeroPad(d.getUTCMinutes()); + s += zeroPad(d.getUTCSeconds()); + s += 'Z'; + return (s); +} + +function dateToGTime(d) { + var s = ''; + s += zeroPad(d.getUTCFullYear(), 4); + s += zeroPad(d.getUTCMonth() + 1); + s += zeroPad(d.getUTCDate()); + s += zeroPad(d.getUTCHours()); + s += zeroPad(d.getUTCMinutes()); + s += zeroPad(d.getUTCSeconds()); + s += 'Z'; + return (s); +} + +function sign(cert, key) { + if (cert.signatures.x509 === undefined) + cert.signatures.x509 = {}; + var sig = cert.signatures.x509; + + sig.algo = key.type + '-' + key.defaultHashAlgorithm(); + if (SIGN_ALGS[sig.algo] === undefined) + return (false); + + var der = new asn1.BerWriter(); + writeTBSCert(cert, der); + var blob = der.buffer; + sig.cache = blob; + + var signer = key.createSign(); + signer.write(blob); + cert.signatures.x509.signature = signer.sign(); + + return (true); +} + +function signAsync(cert, signer, done) { + if (cert.signatures.x509 === undefined) + cert.signatures.x509 = {}; + var sig = cert.signatures.x509; + + var der = new asn1.BerWriter(); + writeTBSCert(cert, der); + var blob = der.buffer; + sig.cache = blob; + + signer(blob, function (err, signature) { + if (err) { + done(err); + return; + } + sig.algo = signature.type + '-' + signature.hashAlgorithm; + if (SIGN_ALGS[sig.algo] === undefined) { + done(new Error('Invalid signing algorithm "' + + sig.algo + '"')); + return; + } + sig.signature = signature; + done(); + }); +} - delete options[name]; - } - } +function write(cert, options) { + var sig = cert.signatures.x509; + assert.object(sig, 'x509 signature'); - return requestWithDefaults(options); - } // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 + var der = new asn1.BerWriter(); + der.startSequence(); + if (sig.cache) { + der._ensure(sig.cache.length); + sig.cache.copy(der._buf, der._offset); + der._offset += sig.cache.length; + } else { + writeTBSCert(cert, der); + } + der.startSequence(); + der.writeOID(SIGN_ALGS[sig.algo]); + if (sig.algo.match(/^rsa-/)) + der.writeNull(); + der.endSequence(); - return requestWithDefaults(...args); - } + var sigData = sig.signature.toBuffer('asn1'); + var data = Buffer.alloc(sigData.length + 1); + data[0] = 0; + sigData.copy(data, 1); + der.writeBuffer(data, asn1.Ber.BitString); + der.endSequence(); - return Object.assign(withDecorations, requestWithDefaults); + return (der.buffer); } -function restEndpointMethods(octokit) { - const api = endpointsToMethods(octokit, Endpoints); - return { - rest: api - }; +function writeTBSCert(cert, der) { + var sig = cert.signatures.x509; + assert.object(sig, 'x509 signature'); + + der.startSequence(); + + der.startSequence(Local(0)); + der.writeInt(2); + der.endSequence(); + + der.writeBuffer(utils.mpNormalize(cert.serial), asn1.Ber.Integer); + + der.startSequence(); + der.writeOID(SIGN_ALGS[sig.algo]); + if (sig.algo.match(/^rsa-/)) + der.writeNull(); + der.endSequence(); + + cert.issuer.toAsn1(der); + + der.startSequence(); + writeDate(der, cert.validFrom); + writeDate(der, cert.validUntil); + der.endSequence(); + + var subject = cert.subjects[0]; + var altNames = cert.subjects.slice(1); + subject.toAsn1(der); + + pkcs8.writePkcs8(der, cert.subjectKey); + + if (sig.extras && sig.extras.issuerUniqueID) { + der.writeBuffer(sig.extras.issuerUniqueID, Local(1)); + } + + if (sig.extras && sig.extras.subjectUniqueID) { + der.writeBuffer(sig.extras.subjectUniqueID, Local(2)); + } + + if (altNames.length > 0 || subject.type === 'host' || + (cert.purposes !== undefined && cert.purposes.length > 0) || + (sig.extras && sig.extras.exts)) { + der.startSequence(Local(3)); + der.startSequence(); + + var exts = []; + if (cert.purposes !== undefined && cert.purposes.length > 0) { + exts.push({ + oid: EXTS.basicConstraints, + critical: true + }); + exts.push({ + oid: EXTS.keyUsage, + critical: true + }); + exts.push({ + oid: EXTS.extKeyUsage, + critical: true + }); + } + exts.push({ oid: EXTS.altName }); + if (sig.extras && sig.extras.exts) + exts = sig.extras.exts; + + for (var i = 0; i < exts.length; ++i) { + der.startSequence(); + der.writeOID(exts[i].oid); + + if (exts[i].critical !== undefined) + der.writeBoolean(exts[i].critical); + + if (exts[i].oid === EXTS.altName) { + der.startSequence(asn1.Ber.OctetString); + der.startSequence(); + if (subject.type === 'host') { + der.writeString(subject.hostname, + Context(2)); + } + for (var j = 0; j < altNames.length; ++j) { + if (altNames[j].type === 'host') { + der.writeString( + altNames[j].hostname, + ALTNAME.DNSName); + } else if (altNames[j].type === + 'email') { + der.writeString( + altNames[j].email, + ALTNAME.RFC822Name); + } else { + /* + * Encode anything else as a + * DN style name for now. + */ + der.startSequence( + ALTNAME.DirectoryName); + altNames[j].toAsn1(der); + der.endSequence(); + } + } + der.endSequence(); + der.endSequence(); + } else if (exts[i].oid === EXTS.basicConstraints) { + der.startSequence(asn1.Ber.OctetString); + der.startSequence(); + var ca = (cert.purposes.indexOf('ca') !== -1); + var pathLen = exts[i].pathLen; + der.writeBoolean(ca); + if (pathLen !== undefined) + der.writeInt(pathLen); + der.endSequence(); + der.endSequence(); + } else if (exts[i].oid === EXTS.extKeyUsage) { + der.startSequence(asn1.Ber.OctetString); + der.startSequence(); + cert.purposes.forEach(function (purpose) { + if (purpose === 'ca') + return; + if (KEYUSEBITS.indexOf(purpose) !== -1) + return; + var oid = purpose; + if (EXTPURPOSE[purpose] !== undefined) + oid = EXTPURPOSE[purpose]; + der.writeOID(oid); + }); + der.endSequence(); + der.endSequence(); + } else if (exts[i].oid === EXTS.keyUsage) { + der.startSequence(asn1.Ber.OctetString); + /* + * If we parsed this certificate from a byte + * stream (i.e. we didn't generate it in sshpk) + * then we'll have a ".bits" property on the + * ext with the original raw byte contents. + * + * If we have this, use it here instead of + * regenerating it. This guarantees we output + * the same data we parsed, so signatures still + * validate. + */ + if (exts[i].bits !== undefined) { + der.writeBuffer(exts[i].bits, + asn1.Ber.BitString); + } else { + var bits = writeBitField(cert.purposes, + KEYUSEBITS); + der.writeBuffer(bits, + asn1.Ber.BitString); + } + der.endSequence(); + } else { + der.writeBuffer(exts[i].data, + asn1.Ber.OctetString); + } + + der.endSequence(); + } + + der.endSequence(); + der.endSequence(); + } + + der.endSequence(); } -restEndpointMethods.VERSION = VERSION; -function legacyRestEndpointMethods(octokit) { - const api = endpointsToMethods(octokit, Endpoints); - return { ...api, - rest: api - }; + +/* + * Reads an ASN.1 BER bitfield out of the Buffer produced by doing + * `BerReader#readString(asn1.Ber.BitString)`. That function gives us the raw + * contents of the BitString tag, which is a count of unused bits followed by + * the bits as a right-padded byte string. + * + * `bits` is the Buffer, `bitIndex` should contain an array of string names + * for the bits in the string, ordered starting with bit #0 in the ASN.1 spec. + * + * Returns an array of Strings, the names of the bits that were set to 1. + */ +function readBitField(bits, bitIndex) { + var bitLen = 8 * (bits.length - 1) - bits[0]; + var setBits = {}; + for (var i = 0; i < bitLen; ++i) { + var byteN = 1 + Math.floor(i / 8); + var bit = 7 - (i % 8); + var mask = 1 << bit; + var bitVal = ((bits[byteN] & mask) !== 0); + var name = bitIndex[i]; + if (bitVal && typeof (name) === 'string') { + setBits[name] = true; + } + } + return (Object.keys(setBits)); } -legacyRestEndpointMethods.VERSION = VERSION; -exports.legacyRestEndpointMethods = legacyRestEndpointMethods; -exports.restEndpointMethods = restEndpointMethods; -//# sourceMappingURL=index.js.map +/* + * `setBits` is an array of strings, containing the names for each bit that + * sould be set to 1. `bitIndex` is same as in `readBitField()`. + * + * Returns a Buffer, ready to be written out with `BerWriter#writeString()`. + */ +function writeBitField(setBits, bitIndex) { + var bitLen = bitIndex.length; + var blen = Math.ceil(bitLen / 8); + var unused = blen * 8 - bitLen; + var bits = Buffer.alloc(1 + blen); // zero-filled + bits[0] = unused; + for (var i = 0; i < bitLen; ++i) { + var byteN = 1 + Math.floor(i / 8); + var bit = 7 - (i % 8); + var mask = 1 << bit; + var name = bitIndex[i]; + if (name === undefined) + continue; + var bitVal = (setBits.indexOf(name) !== -1); + if (bitVal) { + bits[byteN] |= mask; + } + } + return (bits); +} /***/ }), +/* 324 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 537: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +// getting tag from 19.1.3.6 Object.prototype.toString() +var cof = __webpack_require__(189); +var TAG = __webpack_require__(621)('toStringTag'); +// ES3 wrong here +var ARG = cof(function () { return arguments; }()) == 'Arguments'; -"use strict"; +// fallback for IE11 Script Access Denied error +var tryGet = function (it, key) { + try { + return it[key]; + } catch (e) { /* empty */ } +}; +module.exports = function (it) { + var O, T, B; + return it === undefined ? 'Undefined' : it === null ? 'Null' + // @@toStringTag case + : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T + // builtinTag case + : ARG ? cof(O) + // ES3 arguments fallback + : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; +}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } +/***/ }), +/* 325 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -var deprecation = __nccwpck_require__(8932); -var once = _interopDefault(__nccwpck_require__(1223)); +// Copyright 2011 Mark Cavage All rights reserved. -const logOnceCode = once(deprecation => console.warn(deprecation)); -const logOnceHeaders = once(deprecation => console.warn(deprecation)); -/** - * Error with extra properties to help with debugging - */ +// If you have no idea what ASN.1 or BER is, see this: +// ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc -class RequestError extends Error { - constructor(message, statusCode, options) { - super(message); // Maintains proper stack trace (only available on V8) +var Ber = __webpack_require__(249); - /* istanbul ignore next */ - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } - this.name = "HttpError"; - this.status = statusCode; - let headers; +// --- Exported API - if ("headers" in options && typeof options.headers !== "undefined") { - headers = options.headers; +module.exports = { + + Ber: Ber, + + BerReader: Ber.Reader, + + BerWriter: Ber.Writer + +}; + + +/***/ }), +/* 326 */ +/***/ (function(module) { + +module.exports = {"$id":"cookie.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["name","value"],"properties":{"name":{"type":"string"},"value":{"type":"string"},"path":{"type":"string"},"domain":{"type":"string"},"expires":{"type":["string","null"],"format":"date-time"},"httpOnly":{"type":"boolean"},"secure":{"type":"boolean"},"comment":{"type":"string"}}}; + +/***/ }), +/* 327 */ +/***/ (function(module) { + +"use strict"; + +module.exports = function generate_ref(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $async, $refCode; + if ($schema == '#' || $schema == '#/') { + if (it.isRoot) { + $async = it.async; + $refCode = 'validate'; + } else { + $async = it.root.schema.$async === true; + $refCode = 'root.refVal[0]'; + } + } else { + var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot); + if ($refVal === undefined) { + var $message = it.MissingRefError.message(it.baseId, $schema); + if (it.opts.missingRefs == 'fail') { + it.logger.error($message); + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('$ref') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { ref: \'' + (it.util.escapeQuotes($schema)) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'can\\\'t resolve reference ' + (it.util.escapeQuotes($schema)) + '\' '; + } + if (it.opts.verbose) { + out += ' , schema: ' + (it.util.toQuotedString($schema)) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + if ($breakOnError) { + out += ' if (false) { '; + } + } else if (it.opts.missingRefs == 'ignore') { + it.logger.warn($message); + if ($breakOnError) { + out += ' if (true) { '; + } + } else { + throw new it.MissingRefError(it.baseId, $schema, $message); + } + } else if ($refVal.inline) { + var $it = it.util.copy(it); + $it.level++; + var $nextValid = 'valid' + $it.level; + $it.schema = $refVal.schema; + $it.schemaPath = ''; + $it.errSchemaPath = $schema; + var $code = it.validate($it).replace(/validate\.schema/g, $refVal.code); + out += ' ' + ($code) + ' '; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + } + } else { + $async = $refVal.$async === true || (it.async && $refVal.$async !== false); + $refCode = $refVal.code; + } + } + if ($refCode) { + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; + if (it.opts.passContext) { + out += ' ' + ($refCode) + '.call(this, '; + } else { + out += ' ' + ($refCode) + '( '; + } + out += ' ' + ($data) + ', (dataPath || \'\')'; + if (it.errorPath != '""') { + out += ' + ' + (it.errorPath); + } + var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData', + $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty'; + out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ', rootData) '; + var __callValidate = out; + out = $$outStack.pop(); + if ($async) { + if (!it.async) throw new Error('async schema referenced by sync schema'); + if ($breakOnError) { + out += ' var ' + ($valid) + '; '; + } + out += ' try { await ' + (__callValidate) + '; '; + if ($breakOnError) { + out += ' ' + ($valid) + ' = true; '; + } + out += ' } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; '; + if ($breakOnError) { + out += ' ' + ($valid) + ' = false; '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (' + ($valid) + ') { '; + } + } else { + out += ' if (!' + (__callValidate) + ') { if (vErrors === null) vErrors = ' + ($refCode) + '.errors; else vErrors = vErrors.concat(' + ($refCode) + '.errors); errors = vErrors.length; } '; + if ($breakOnError) { + out += ' else { '; + } } + } + return out; +} - if ("response" in options) { - this.response = options.response; - headers = options.response.headers; - } // redact request credentials without mutating original request options +/***/ }), +/* 328 */, +/* 329 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { - const requestCopy = Object.assign({}, options.request); +"use strict"; - if (options.request.headers.authorization) { - requestCopy.headers = Object.assign({}, options.request.headers, { - authorization: options.request.headers.authorization.replace(/ .*$/, " [REDACTED]") - }); - } - requestCopy.url = requestCopy.url // client_id & client_secret can be passed as URL query parameters to increase rate limit - // see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications - .replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]") // OAuth tokens can be passed as URL query parameters, although it is not recommended - // see https://developer.github.com/v3/#oauth2-token-sent-in-a-header - .replace(/\baccess_token=\w+/g, "access_token=[REDACTED]"); - this.request = requestCopy; // deprecations +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; - Object.defineProperty(this, "code", { - get() { - logOnceCode(new deprecation.Deprecation("[@octokit/request-error] `error.code` is deprecated, use `error.status`.")); - return statusCode; - } +var _crypto = _interopRequireDefault(__webpack_require__(417)); - }); - Object.defineProperty(this, "headers", { - get() { - logOnceHeaders(new deprecation.Deprecation("[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`.")); - return headers || {}; - } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - }); +function sha1(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); } + return _crypto.default.createHash('sha1').update(bytes).digest(); } -exports.RequestError = RequestError; -//# sourceMappingURL=index.js.map - +var _default = sha1; +exports.default = _default; /***/ }), +/* 330 */, +/* 331 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 9690: -/***/ (function(module, __unused_webpack_exports, __nccwpck_require__) { - -"use strict"; - -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -const events_1 = __nccwpck_require__(2361); -const debug_1 = __importDefault(__nccwpck_require__(8237)); -const promisify_1 = __importDefault(__nccwpck_require__(6570)); -const debug = debug_1.default('agent-base'); -function isAgent(v) { - return Boolean(v) && typeof v.addRequest === 'function'; -} -function isSecureEndpoint() { - const { stack } = new Error(); - if (typeof stack !== 'string') - return false; - return stack.split('\n').some(l => l.indexOf('(https.js:') !== -1 || l.indexOf('node:https:') !== -1); -} -function createAgent(callback, opts) { - return new createAgent.Agent(callback, opts); -} -(function (createAgent) { - /** - * Base `http.Agent` implementation. - * No pooling/keep-alive is implemented by default. - * - * @param {Function} callback - * @api public - */ - class Agent extends events_1.EventEmitter { - constructor(callback, _opts) { - super(); - let opts = _opts; - if (typeof callback === 'function') { - this.callback = callback; - } - else if (callback) { - opts = callback; - } - // Timeout for the socket to be returned from the callback - this.timeout = null; - if (opts && typeof opts.timeout === 'number') { - this.timeout = opts.timeout; - } - // These aren't actually used by `agent-base`, but are required - // for the TypeScript definition files in `@types/node` :/ - this.maxFreeSockets = 1; - this.maxSockets = 1; - this.maxTotalSockets = Infinity; - this.sockets = {}; - this.freeSockets = {}; - this.requests = {}; - this.options = {}; - } - get defaultPort() { - if (typeof this.explicitDefaultPort === 'number') { - return this.explicitDefaultPort; - } - return isSecureEndpoint() ? 443 : 80; - } - set defaultPort(v) { - this.explicitDefaultPort = v; - } - get protocol() { - if (typeof this.explicitProtocol === 'string') { - return this.explicitProtocol; - } - return isSecureEndpoint() ? 'https:' : 'http:'; - } - set protocol(v) { - this.explicitProtocol = v; - } - callback(req, opts, fn) { - throw new Error('"agent-base" has no default implementation, you must subclass and override `callback()`'); - } - /** - * Called by node-core's "_http_client.js" module when creating - * a new HTTP request with this Agent instance. - * - * @api public - */ - addRequest(req, _opts) { - const opts = Object.assign({}, _opts); - if (typeof opts.secureEndpoint !== 'boolean') { - opts.secureEndpoint = isSecureEndpoint(); - } - if (opts.host == null) { - opts.host = 'localhost'; - } - if (opts.port == null) { - opts.port = opts.secureEndpoint ? 443 : 80; - } - if (opts.protocol == null) { - opts.protocol = opts.secureEndpoint ? 'https:' : 'http:'; - } - if (opts.host && opts.path) { - // If both a `host` and `path` are specified then it's most - // likely the result of a `url.parse()` call... we need to - // remove the `path` portion so that `net.connect()` doesn't - // attempt to open that as a unix socket file. - delete opts.path; - } - delete opts.agent; - delete opts.hostname; - delete opts._defaultAgent; - delete opts.defaultPort; - delete opts.createConnection; - // Hint to use "Connection: close" - // XXX: non-documented `http` module API :( - req._last = true; - req.shouldKeepAlive = false; - let timedOut = false; - let timeoutId = null; - const timeoutMs = opts.timeout || this.timeout; - const onerror = (err) => { - if (req._hadError) - return; - req.emit('error', err); - // For Safety. Some additional errors might fire later on - // and we need to make sure we don't double-fire the error event. - req._hadError = true; - }; - const ontimeout = () => { - timeoutId = null; - timedOut = true; - const err = new Error(`A "socket" was not created for HTTP request before ${timeoutMs}ms`); - err.code = 'ETIMEOUT'; - onerror(err); - }; - const callbackError = (err) => { - if (timedOut) - return; - if (timeoutId !== null) { - clearTimeout(timeoutId); - timeoutId = null; - } - onerror(err); - }; - const onsocket = (socket) => { - if (timedOut) - return; - if (timeoutId != null) { - clearTimeout(timeoutId); - timeoutId = null; - } - if (isAgent(socket)) { - // `socket` is actually an `http.Agent` instance, so - // relinquish responsibility for this `req` to the Agent - // from here on - debug('Callback returned another Agent instance %o', socket.constructor.name); - socket.addRequest(req, opts); - return; - } - if (socket) { - socket.once('free', () => { - this.freeSocket(socket, opts); - }); - req.onSocket(socket); - return; - } - const err = new Error(`no Duplex stream was returned to agent-base for \`${req.method} ${req.path}\``); - onerror(err); - }; - if (typeof this.callback !== 'function') { - onerror(new Error('`callback` is not defined')); - return; - } - if (!this.promisifiedCallback) { - if (this.callback.length >= 3) { - debug('Converting legacy callback function to promise'); - this.promisifiedCallback = promisify_1.default(this.callback); - } - else { - this.promisifiedCallback = this.callback; - } - } - if (typeof timeoutMs === 'number' && timeoutMs > 0) { - timeoutId = setTimeout(ontimeout, timeoutMs); - } - if ('port' in opts && typeof opts.port !== 'number') { - opts.port = Number(opts.port); - } - try { - debug('Resolving socket for %o request: %o', opts.protocol, `${req.method} ${req.path}`); - Promise.resolve(this.promisifiedCallback(req, opts)).then(onsocket, callbackError); - } - catch (err) { - Promise.reject(err).catch(callbackError); - } - } - freeSocket(socket, opts) { - debug('Freeing socket %o %o', socket.constructor.name, opts); - socket.destroy(); - } - destroy() { - debug('Destroying agent %o', this.constructor.name); - } - } - createAgent.Agent = Agent; - // So that `instanceof` works correctly - createAgent.prototype = createAgent.Agent.prototype; -})(createAgent || (createAgent = {})); -module.exports = createAgent; -//# sourceMappingURL=index.js.map +var shared = __webpack_require__(881)('keys'); +var uid = __webpack_require__(750); +module.exports = function (key) { + return shared[key] || (shared[key] = uid(key)); +}; + + +/***/ }), +/* 332 */ +/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { + +"use strict"; + +var $export = __webpack_require__(195); +var $filter = __webpack_require__(948)(2); + +$export($export.P + $export.F * !__webpack_require__(482)([].filter, true), 'Array', { + // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg]) + filter: function filter(callbackfn /* , thisArg */) { + return $filter(this, callbackfn, arguments[1]); + } +}); + + +/***/ }), +/* 333 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +// 19.1.2.14 / 15.2.3.14 Object.keys(O) +var $keys = __webpack_require__(206); +var enumBugKeys = __webpack_require__(5); + +module.exports = Object.keys || function keys(O) { + return $keys(O, enumBugKeys); +}; + + +/***/ }), +/* 334 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = +{ + parallel : __webpack_require__(424), + serial : __webpack_require__(91), + serialOrdered : __webpack_require__(192) +}; + + +/***/ }), +/* 335 */ +/***/ (function(module) { + +module.exports = {"$id":"query.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["name","value"],"properties":{"name":{"type":"string"},"value":{"type":"string"},"comment":{"type":"string"}}}; /***/ }), +/* 336 */, +/* 337 */ +/***/ (function(module) { -/***/ 6570: -/***/ ((__unused_webpack_module, exports) => { +module.exports = {"$schema":"http://json-schema.org/draft-06/schema#","$id":"http://json-schema.org/draft-06/schema#","title":"Core schema meta-schema","definitions":{"schemaArray":{"type":"array","minItems":1,"items":{"$ref":"#"}},"nonNegativeInteger":{"type":"integer","minimum":0},"nonNegativeIntegerDefault0":{"allOf":[{"$ref":"#/definitions/nonNegativeInteger"},{"default":0}]},"simpleTypes":{"enum":["array","boolean","integer","null","number","object","string"]},"stringArray":{"type":"array","items":{"type":"string"},"uniqueItems":true,"default":[]}},"type":["object","boolean"],"properties":{"$id":{"type":"string","format":"uri-reference"},"$schema":{"type":"string","format":"uri"},"$ref":{"type":"string","format":"uri-reference"},"title":{"type":"string"},"description":{"type":"string"},"default":{},"examples":{"type":"array","items":{}},"multipleOf":{"type":"number","exclusiveMinimum":0},"maximum":{"type":"number"},"exclusiveMaximum":{"type":"number"},"minimum":{"type":"number"},"exclusiveMinimum":{"type":"number"},"maxLength":{"$ref":"#/definitions/nonNegativeInteger"},"minLength":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"pattern":{"type":"string","format":"regex"},"additionalItems":{"$ref":"#"},"items":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/schemaArray"}],"default":{}},"maxItems":{"$ref":"#/definitions/nonNegativeInteger"},"minItems":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"uniqueItems":{"type":"boolean","default":false},"contains":{"$ref":"#"},"maxProperties":{"$ref":"#/definitions/nonNegativeInteger"},"minProperties":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"required":{"$ref":"#/definitions/stringArray"},"additionalProperties":{"$ref":"#"},"definitions":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"properties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"patternProperties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"dependencies":{"type":"object","additionalProperties":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/stringArray"}]}},"propertyNames":{"$ref":"#"},"const":{},"enum":{"type":"array","minItems":1,"uniqueItems":true},"type":{"anyOf":[{"$ref":"#/definitions/simpleTypes"},{"type":"array","items":{"$ref":"#/definitions/simpleTypes"},"minItems":1,"uniqueItems":true}]},"format":{"type":"string"},"allOf":{"$ref":"#/definitions/schemaArray"},"anyOf":{"$ref":"#/definitions/schemaArray"},"oneOf":{"$ref":"#/definitions/schemaArray"},"not":{"$ref":"#"}},"default":{}}; + +/***/ }), +/* 338 */ +/***/ (function(module, __unusedexports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", ({ value: true })); -function promisify(fn) { - return function (req, opts) { - return new Promise((resolve, reject) => { - fn.call(this, req, opts, (err, rtn) => { - if (err) { - reject(err); - } - else { - resolve(rtn); - } - }); - }); - }; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +const agent_1 = __importDefault(__webpack_require__(40)); +function createHttpsProxyAgent(opts) { + return new agent_1.default(opts); } -exports["default"] = promisify; -//# sourceMappingURL=promisify.js.map +(function (createHttpsProxyAgent) { + createHttpsProxyAgent.HttpsProxyAgent = agent_1.default; + createHttpsProxyAgent.prototype = agent_1.default.prototype; +})(createHttpsProxyAgent || (createHttpsProxyAgent = {})); +module.exports = createHttpsProxyAgent; +//# sourceMappingURL=index.js.map /***/ }), +/* 339 */ +/***/ (function(module, exports, __webpack_require__) { -/***/ 3682: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +"use strict"; -var register = __nccwpck_require__(4670) -var addHook = __nccwpck_require__(5549) -var removeHook = __nccwpck_require__(6819) -// bind with array of arguments: https://stackoverflow.com/a/21792913 -var bind = Function.bind -var bindable = bind.bind(bind) +__webpack_require__(493); -function bindApi (hook, state, name) { - var removeHookRef = bindable(removeHook, null).apply(null, name ? [state, name] : [state]) - hook.api = { remove: removeHookRef } - hook.remove = removeHookRef +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var cyrillicLettersAndMarks = /\u0400-\u04FF/; +var _default = cyrillicLettersAndMarks; +exports["default"] = _default; +module.exports = exports.default; - ;['before', 'error', 'after', 'wrap'].forEach(function (kind) { - var args = name ? [state, kind, name] : [state, kind] - hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args) - }) -} +/***/ }), +/* 340 */ +/***/ (function(module, exports, __webpack_require__) { -function HookSingular () { - var singularHookName = 'h' - var singularHookState = { - registry: {} - } - var singularHook = register.bind(null, singularHookState, singularHookName) - bindApi(singularHook, singularHookState, singularHookName) - return singularHook -} +"use strict"; -function HookCollection () { - var state = { - registry: {} - } - var hook = register.bind(null, state) - bindApi(hook, state) +var _interopRequireDefault = __webpack_require__(764); - return hook -} +__webpack_require__(493); -var collectionHookDeprecationMessageDisplayed = false -function Hook () { - if (!collectionHookDeprecationMessageDisplayed) { - console.warn('[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4') - collectionHookDeprecationMessageDisplayed = true - } - return HookCollection() -} +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; -Hook.Singular = HookSingular.bind() -Hook.Collection = HookCollection.bind() +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); -module.exports = Hook -// expose constructors as a named property for TypeScript -module.exports.Hook = Hook -module.exports.Singular = Hook.Singular -module.exports.Collection = Hook.Collection +var _validateUrlUnreserved = _interopRequireDefault(__webpack_require__(626)); + +var _validateUrlPctEncoded = _interopRequireDefault(__webpack_require__(460)); + +var _validateUrlSubDelims = _interopRequireDefault(__webpack_require__(67)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +// These URL validation pattern strings are based on the ABNF from RFC 3986 +var validateUrlPchar = (0, _regexSupplant["default"])('(?:' + '#{validateUrlUnreserved}|' + '#{validateUrlPctEncoded}|' + '#{validateUrlSubDelims}|' + '[:|@]' + ')', { + validateUrlUnreserved: _validateUrlUnreserved["default"], + validateUrlPctEncoded: _validateUrlPctEncoded["default"], + validateUrlSubDelims: _validateUrlSubDelims["default"] +}, 'i'); +var _default = validateUrlPchar; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 341 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); + +var _validUrlQueryChars = _interopRequireDefault(__webpack_require__(56)); + +var _validUrlQueryEndingChars = _interopRequireDefault(__webpack_require__(800)); +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validTcoUrl = (0, _regexSupplant["default"])(/^https?:\/\/t\.co\/([a-z0-9]+)(?:\?#{validUrlQueryChars}*#{validUrlQueryEndingChars})?/, { + validUrlQueryChars: _validUrlQueryChars["default"], + validUrlQueryEndingChars: _validUrlQueryEndingChars["default"] +}, 'i'); +var _default = validTcoUrl; +exports["default"] = _default; +module.exports = exports.default; /***/ }), +/* 342 */ +/***/ (function(module, exports, __webpack_require__) { -/***/ 5549: -/***/ ((module) => { +"use strict"; -module.exports = addHook; -function addHook(state, kind, name, hook) { - var orig = hook; - if (!state.registry[name]) { - state.registry[name] = []; - } +var _interopRequireDefault = __webpack_require__(764); - if (kind === "before") { - hook = function (method, options) { - return Promise.resolve() - .then(orig.bind(null, options)) - .then(method.bind(null, options)); - }; - } +__webpack_require__(493); - if (kind === "after") { - hook = function (method, options) { - var result; - return Promise.resolve() - .then(method.bind(null, options)) - .then(function (result_) { - result = result_; - return orig(result, options); - }) - .then(function () { - return result; - }); - }; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); + +var _validDomain = _interopRequireDefault(__webpack_require__(574)); + +var _validPortNumber = _interopRequireDefault(__webpack_require__(547)); + +var _validUrlPath = _interopRequireDefault(__webpack_require__(671)); + +var _validUrlPrecedingChars = _interopRequireDefault(__webpack_require__(533)); + +var _validUrlQueryChars = _interopRequireDefault(__webpack_require__(56)); + +var _validUrlQueryEndingChars = _interopRequireDefault(__webpack_require__(800)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var extractUrl = (0, _regexSupplant["default"])('(' + // $1 total match +'(#{validUrlPrecedingChars})' + // $2 Preceeding chracter +'(' + // $3 URL +'(https?:\\/\\/)?' + // $4 Protocol (optional) +'(#{validDomain})' + // $5 Domain(s) +'(?::(#{validPortNumber}))?' + // $6 Port number (optional) +'(\\/#{validUrlPath}*)?' + // $7 URL Path +'(\\?#{validUrlQueryChars}*#{validUrlQueryEndingChars})?' + // $8 Query String +')' + ')', { + validUrlPrecedingChars: _validUrlPrecedingChars["default"], + validDomain: _validDomain["default"], + validPortNumber: _validPortNumber["default"], + validUrlPath: _validUrlPath["default"], + validUrlQueryChars: _validUrlQueryChars["default"], + validUrlQueryEndingChars: _validUrlQueryEndingChars["default"] +}, 'gi'); +var _default = extractUrl; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 343 */ +/***/ (function(module) { + +"use strict"; + +module.exports = function generate_properties(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $key = 'key' + $lvl, + $idx = 'idx' + $lvl, + $dataNxt = $it.dataLevel = it.dataLevel + 1, + $nextData = 'data' + $dataNxt, + $dataProperties = 'dataProperties' + $lvl; + var $schemaKeys = Object.keys($schema || {}).filter(notProto), + $pProperties = it.schema.patternProperties || {}, + $pPropertyKeys = Object.keys($pProperties).filter(notProto), + $aProperties = it.schema.additionalProperties, + $someProperties = $schemaKeys.length || $pPropertyKeys.length, + $noAdditional = $aProperties === false, + $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length, + $removeAdditional = it.opts.removeAdditional, + $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional, + $ownProperties = it.opts.ownProperties, + $currentBaseId = it.baseId; + var $required = it.schema.required; + if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) { + var $requiredHash = it.util.toHash($required); + } + + function notProto(p) { + return p !== '__proto__'; + } + out += 'var ' + ($errs) + ' = errors;var ' + ($nextValid) + ' = true;'; + if ($ownProperties) { + out += ' var ' + ($dataProperties) + ' = undefined;'; + } + if ($checkAdditional) { + if ($ownProperties) { + out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; '; + } else { + out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; + } + if ($someProperties) { + out += ' var isAdditional' + ($lvl) + ' = !(false '; + if ($schemaKeys.length) { + if ($schemaKeys.length > 8) { + out += ' || validate.schema' + ($schemaPath) + '.hasOwnProperty(' + ($key) + ') '; + } else { + var arr1 = $schemaKeys; + if (arr1) { + var $propertyKey, i1 = -1, + l1 = arr1.length - 1; + while (i1 < l1) { + $propertyKey = arr1[i1 += 1]; + out += ' || ' + ($key) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' '; + } + } + } + } + if ($pPropertyKeys.length) { + var arr2 = $pPropertyKeys; + if (arr2) { + var $pProperty, $i = -1, + l2 = arr2.length - 1; + while ($i < l2) { + $pProperty = arr2[$i += 1]; + out += ' || ' + (it.usePattern($pProperty)) + '.test(' + ($key) + ') '; + } + } + } + out += ' ); if (isAdditional' + ($lvl) + ') { '; + } + if ($removeAdditional == 'all') { + out += ' delete ' + ($data) + '[' + ($key) + ']; '; + } else { + var $currentErrorPath = it.errorPath; + var $additionalProperty = '\' + ' + $key + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); + } + if ($noAdditional) { + if ($removeAdditional) { + out += ' delete ' + ($data) + '[' + ($key) + ']; '; + } else { + out += ' ' + ($nextValid) + ' = false; '; + var $currErrSchemaPath = $errSchemaPath; + $errSchemaPath = it.errSchemaPath + '/additionalProperties'; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('additionalProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { additionalProperty: \'' + ($additionalProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is an invalid additional property'; + } else { + out += 'should NOT have additional properties'; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + $errSchemaPath = $currErrSchemaPath; + if ($breakOnError) { + out += ' break; '; + } + } + } else if ($additionalIsSchema) { + if ($removeAdditional == 'failing') { + out += ' var ' + ($errs) + ' = errors; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + $it.schema = $aProperties; + $it.schemaPath = it.schemaPath + '.additionalProperties'; + $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; + $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); + var $passData = $data + '[' + $key + ']'; + $it.dataPathArr[$dataNxt] = $key; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + out += ' if (!' + ($nextValid) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[' + ($key) + ']; } '; + it.compositeRule = $it.compositeRule = $wasComposite; + } else { + $it.schema = $aProperties; + $it.schemaPath = it.schemaPath + '.additionalProperties'; + $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; + $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); + var $passData = $data + '[' + $key + ']'; + $it.dataPathArr[$dataNxt] = $key; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!' + ($nextValid) + ') break; '; + } + } + } + it.errorPath = $currentErrorPath; + } + if ($someProperties) { + out += ' } '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + var $useDefaults = it.opts.useDefaults && !it.compositeRule; + if ($schemaKeys.length) { + var arr3 = $schemaKeys; + if (arr3) { + var $propertyKey, i3 = -1, + l3 = arr3.length - 1; + while (i3 < l3) { + $propertyKey = arr3[i3 += 1]; + var $sch = $schema[$propertyKey]; + if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { + var $prop = it.util.getProperty($propertyKey), + $passData = $data + $prop, + $hasDefault = $useDefaults && $sch.default !== undefined; + $it.schema = $sch; + $it.schemaPath = $schemaPath + $prop; + $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey); + $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers); + $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey); + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + $code = it.util.varReplace($code, $nextData, $passData); + var $useData = $passData; + } else { + var $useData = $nextData; + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; '; + } + if ($hasDefault) { + out += ' ' + ($code) + ' '; + } else { + if ($requiredHash && $requiredHash[$propertyKey]) { + out += ' if ( ' + ($useData) + ' === undefined '; + if ($ownProperties) { + out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; + } + out += ') { ' + ($nextValid) + ' = false; '; + var $currentErrorPath = it.errorPath, + $currErrSchemaPath = $errSchemaPath, + $missingProperty = it.util.escapeQuotes($propertyKey); + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); + } + $errSchemaPath = it.errSchemaPath + '/required'; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + $errSchemaPath = $currErrSchemaPath; + it.errorPath = $currentErrorPath; + out += ' } else { '; + } else { + if ($breakOnError) { + out += ' if ( ' + ($useData) + ' === undefined '; + if ($ownProperties) { + out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; + } + out += ') { ' + ($nextValid) + ' = true; } else { '; + } else { + out += ' if (' + ($useData) + ' !== undefined '; + if ($ownProperties) { + out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; + } + out += ' ) { '; + } + } + out += ' ' + ($code) + ' } '; + } + } + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + } } - - if (kind === "error") { - hook = function (method, options) { - return Promise.resolve() - .then(method.bind(null, options)) - .catch(function (error) { - return orig(error, options); - }); - }; + if ($pPropertyKeys.length) { + var arr4 = $pPropertyKeys; + if (arr4) { + var $pProperty, i4 = -1, + l4 = arr4.length - 1; + while (i4 < l4) { + $pProperty = arr4[i4 += 1]; + var $sch = $pProperties[$pProperty]; + if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { + $it.schema = $sch; + $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty); + $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty); + if ($ownProperties) { + out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; '; + } else { + out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; + } + out += ' if (' + (it.usePattern($pProperty)) + '.test(' + ($key) + ')) { '; + $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); + var $passData = $data + '[' + $key + ']'; + $it.dataPathArr[$dataNxt] = $key; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!' + ($nextValid) + ') break; '; + } + out += ' } '; + if ($breakOnError) { + out += ' else ' + ($nextValid) + ' = true; '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + } + } } - - state.registry[name].push({ - hook: hook, - orig: orig, - }); + if ($breakOnError) { + out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; + } + return out; } /***/ }), +/* 344 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 4670: -/***/ ((module) => { - -module.exports = register; +"use strict"; +// JS-YAML's default schema for `safeLoad` function. +// It is not described in the YAML specification. +// +// This schema is based on standard YAML's Core schema and includes most of +// extra types described at YAML tag repository. (http://yaml.org/type/) -function register(state, name, method, options) { - if (typeof method !== "function") { - throw new Error("method for before hook must be a function"); - } - if (!options) { - options = {}; - } - if (Array.isArray(name)) { - return name.reverse().reduce(function (callback, name) { - return register.bind(null, state, name, callback, options); - }, method)(); - } - return Promise.resolve().then(function () { - if (!state.registry[name]) { - return method(options); - } - return state.registry[name].reduce(function (method, registered) { - return registered.hook.bind(null, method, options); - }, method)(); - }); -} +module.exports = __webpack_require__(77).extend({ + implicit: [ + __webpack_require__(244), + __webpack_require__(36) + ], + explicit: [ + __webpack_require__(848), + __webpack_require__(919), + __webpack_require__(224), + __webpack_require__(168) + ] +}); /***/ }), +/* 345 */, +/* 346 */, +/* 347 */ +/***/ (function(module) { -/***/ 6819: -/***/ ((module) => { - -module.exports = removeHook; - -function removeHook(state, name, method) { - if (!state.registry[name]) { - return; - } - - var index = state.registry[name] - .map(function (registered) { - return registered.orig; - }) - .indexOf(method); - - if (index === -1) { - return; - } - - state.registry[name].splice(index, 1); +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ +var byteToHex = []; +for (var i = 0; i < 256; ++i) { + byteToHex[i] = (i + 0x100).toString(16).substr(1); } +function bytesToUuid(buf, offset) { + var i = offset || 0; + var bth = byteToHex; + // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4 + return ([bth[buf[i++]], bth[buf[i++]], + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], + bth[buf[i++]], bth[buf[i++]], + bth[buf[i++]], bth[buf[i++]]]).join(''); +} -/***/ }), - -/***/ 4818: -/***/ ((module) => { - -module.exports = function (it) { - if (typeof it != 'function') throw TypeError(it + ' is not a function!'); - return it; -}; +module.exports = bytesToUuid; /***/ }), +/* 348 */ +/***/ (function(module, exports, __webpack_require__) { -/***/ 285: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +"use strict"; -// 22.1.3.31 Array.prototype[@@unscopables] -var UNSCOPABLES = __nccwpck_require__(9370)('unscopables'); -var ArrayProto = Array.prototype; -if (ArrayProto[UNSCOPABLES] == undefined) __nccwpck_require__(3735)(ArrayProto, UNSCOPABLES, {}); -module.exports = function (key) { - ArrayProto[UNSCOPABLES][key] = true; -}; +__webpack_require__(493); -/***/ }), +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; -/***/ 9780: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +__webpack_require__(210); -"use strict"; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 -var at = __nccwpck_require__(919)(true); +/** + * Copied from https://github.com/twitter/twitter-text/blob/master/js/twitter-text.js + */ +var convertUnicodeIndices = function convertUnicodeIndices(text, entities, indicesInUTF16) { + if (entities.length === 0) { + return; + } - // `AdvanceStringIndex` abstract operation -// https://tc39.github.io/ecma262/#sec-advancestringindex -module.exports = function (S, index, unicode) { - return index + (unicode ? at(S, index).length : 1); -}; + var charIndex = 0; + var codePointIndex = 0; // sort entities by start index + entities.sort(function (a, b) { + return a.indices[0] - b.indices[0]; + }); + var entityIndex = 0; + var entity = entities[0]; -/***/ }), + while (charIndex < text.length) { + if (entity.indices[0] === (indicesInUTF16 ? charIndex : codePointIndex)) { + var len = entity.indices[1] - entity.indices[0]; + entity.indices[0] = indicesInUTF16 ? codePointIndex : charIndex; + entity.indices[1] = entity.indices[0] + len; + entityIndex++; -/***/ 8846: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (entityIndex === entities.length) { + // no more entity + break; + } -var isObject = __nccwpck_require__(1048); -module.exports = function (it) { - if (!isObject(it)) throw TypeError(it + ' is not an object!'); - return it; -}; + entity = entities[entityIndex]; + } + var c = text.charCodeAt(charIndex); -/***/ }), + if (c >= 0xd800 && c <= 0xdbff && charIndex < text.length - 1) { + // Found high surrogate char + c = text.charCodeAt(charIndex + 1); -/***/ 5072: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (c >= 0xdc00 && c <= 0xdfff) { + // Found surrogate pair + charIndex++; + } + } -// false -> Array#indexOf -// true -> Array#includes -var toIObject = __nccwpck_require__(637); -var toLength = __nccwpck_require__(3738); -var toAbsoluteIndex = __nccwpck_require__(3578); -module.exports = function (IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIObject($this); - var length = toLength(O.length); - var index = toAbsoluteIndex(fromIndex, length); - var value; - // Array#includes uses SameValueZero equality algorithm - // eslint-disable-next-line no-self-compare - if (IS_INCLUDES && el != el) while (length > index) { - value = O[index++]; - // eslint-disable-next-line no-self-compare - if (value != value) return true; - // Array#indexOf ignores holes, Array#includes - not - } else for (;length > index; index++) if (IS_INCLUDES || index in O) { - if (O[index] === el) return IS_INCLUDES || index || 0; - } return !IS_INCLUDES && -1; - }; + codePointIndex++; + charIndex++; + } }; +var _default = convertUnicodeIndices; +exports["default"] = _default; +module.exports = exports.default; /***/ }), +/* 349 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { -/***/ 4740: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -// 0 -> Array#forEach -// 1 -> Array#map -// 2 -> Array#filter -// 3 -> Array#some -// 4 -> Array#every -// 5 -> Array#find -// 6 -> Array#findIndex -var ctx = __nccwpck_require__(9197); -var IObject = __nccwpck_require__(2029); -var toObject = __nccwpck_require__(2702); -var toLength = __nccwpck_require__(3738); -var asc = __nccwpck_require__(5101); -module.exports = function (TYPE, $create) { - var IS_MAP = TYPE == 1; - var IS_FILTER = TYPE == 2; - var IS_SOME = TYPE == 3; - var IS_EVERY = TYPE == 4; - var IS_FIND_INDEX = TYPE == 6; - var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; - var create = $create || asc; - return function ($this, callbackfn, that) { - var O = toObject($this); - var self = IObject(O); - var f = ctx(callbackfn, that, 3); - var length = toLength(self.length); - var index = 0; - var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; - var val, res; - for (;length > index; index++) if (NO_HOLES || index in self) { - val = self[index]; - res = f(val, index, O); - if (TYPE) { - if (IS_MAP) result[index] = res; // map - else if (res) switch (TYPE) { - case 3: return true; // some - case 5: return val; // find - case 6: return index; // findIndex - case 2: result.push(val); // filter - } else if (IS_EVERY) return false; // every - } - } - return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result; - }; -}; +"use strict"; +/*! + * Copyright (c) 2015, Salesforce.com, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. Neither the name of Salesforce.com nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +var Store = __webpack_require__(627).Store; +var permuteDomain = __webpack_require__(383).permuteDomain; +var pathMatch = __webpack_require__(54).pathMatch; +var util = __webpack_require__(669); -/***/ }), +function MemoryCookieStore() { + Store.call(this); + this.idx = {}; +} +util.inherits(MemoryCookieStore, Store); +exports.MemoryCookieStore = MemoryCookieStore; +MemoryCookieStore.prototype.idx = null; -/***/ 6027: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +// Since it's just a struct in RAM, this Store is synchronous +MemoryCookieStore.prototype.synchronous = true; -var aFunction = __nccwpck_require__(4818); -var toObject = __nccwpck_require__(2702); -var IObject = __nccwpck_require__(2029); -var toLength = __nccwpck_require__(3738); +// force a default depth: +MemoryCookieStore.prototype.inspect = function() { + return "{ idx: "+util.inspect(this.idx, false, 2)+' }'; +}; -module.exports = function (that, callbackfn, aLen, memo, isRight) { - aFunction(callbackfn); - var O = toObject(that); - var self = IObject(O); - var length = toLength(O.length); - var index = isRight ? length - 1 : 0; - var i = isRight ? -1 : 1; - if (aLen < 2) for (;;) { - if (index in self) { - memo = self[index]; - index += i; - break; - } - index += i; - if (isRight ? index < 0 : length <= index) { - throw TypeError('Reduce of empty array with no initial value'); - } +// Use the new custom inspection symbol to add the custom inspect function if +// available. +if (util.inspect.custom) { + MemoryCookieStore.prototype[util.inspect.custom] = MemoryCookieStore.prototype.inspect; +} + +MemoryCookieStore.prototype.findCookie = function(domain, path, key, cb) { + if (!this.idx[domain]) { + return cb(null,undefined); } - for (;isRight ? index >= 0 : length > index; index += i) if (index in self) { - memo = callbackfn(memo, self[index], index, O); + if (!this.idx[domain][path]) { + return cb(null,undefined); } - return memo; + return cb(null,this.idx[domain][path][key]||null); }; +MemoryCookieStore.prototype.findCookies = function(domain, path, cb) { + var results = []; + if (!domain) { + return cb(null,[]); + } -/***/ }), + var pathMatcher; + if (!path) { + // null means "all paths" + pathMatcher = function matchAll(domainIndex) { + for (var curPath in domainIndex) { + var pathIndex = domainIndex[curPath]; + for (var key in pathIndex) { + results.push(pathIndex[key]); + } + } + }; -/***/ 9415: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + } else { + pathMatcher = function matchRFC(domainIndex) { + //NOTE: we should use path-match algorithm from S5.1.4 here + //(see : https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/canonical_cookie.cc#L299) + Object.keys(domainIndex).forEach(function (cookiePath) { + if (pathMatch(path, cookiePath)) { + var pathIndex = domainIndex[cookiePath]; + + for (var key in pathIndex) { + results.push(pathIndex[key]); + } + } + }); + }; + } + + var domains = permuteDomain(domain) || [domain]; + var idx = this.idx; + domains.forEach(function(curDomain) { + var domainIndex = idx[curDomain]; + if (!domainIndex) { + return; + } + pathMatcher(domainIndex); + }); -var isObject = __nccwpck_require__(1048); -var isArray = __nccwpck_require__(4685); -var SPECIES = __nccwpck_require__(9370)('species'); + cb(null,results); +}; -module.exports = function (original) { - var C; - if (isArray(original)) { - C = original.constructor; - // cross-realm fallback - if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined; - if (isObject(C)) { - C = C[SPECIES]; - if (C === null) C = undefined; - } - } return C === undefined ? Array : C; +MemoryCookieStore.prototype.putCookie = function(cookie, cb) { + if (!this.idx[cookie.domain]) { + this.idx[cookie.domain] = {}; + } + if (!this.idx[cookie.domain][cookie.path]) { + this.idx[cookie.domain][cookie.path] = {}; + } + this.idx[cookie.domain][cookie.path][cookie.key] = cookie; + cb(null); +}; + +MemoryCookieStore.prototype.updateCookie = function(oldCookie, newCookie, cb) { + // updateCookie() may avoid updating cookies that are identical. For example, + // lastAccessed may not be important to some stores and an equality + // comparison could exclude that field. + this.putCookie(newCookie,cb); }; +MemoryCookieStore.prototype.removeCookie = function(domain, path, key, cb) { + if (this.idx[domain] && this.idx[domain][path] && this.idx[domain][path][key]) { + delete this.idx[domain][path][key]; + } + cb(null); +}; -/***/ }), +MemoryCookieStore.prototype.removeCookies = function(domain, path, cb) { + if (this.idx[domain]) { + if (path) { + delete this.idx[domain][path]; + } else { + delete this.idx[domain]; + } + } + return cb(null); +}; -/***/ 5101: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +MemoryCookieStore.prototype.getAllCookies = function(cb) { + var cookies = []; + var idx = this.idx; -// 9.4.2.3 ArraySpeciesCreate(originalArray, length) -var speciesConstructor = __nccwpck_require__(9415); + var domains = Object.keys(idx); + domains.forEach(function(domain) { + var paths = Object.keys(idx[domain]); + paths.forEach(function(path) { + var keys = Object.keys(idx[domain][path]); + keys.forEach(function(key) { + if (key !== null) { + cookies.push(idx[domain][path][key]); + } + }); + }); + }); -module.exports = function (original, length) { - return new (speciesConstructor(original))(length); + // Sort by creationIndex so deserializing retains the creation order. + // When implementing your own store, this SHOULD retain the order too + cookies.sort(function(a,b) { + return (a.creationIndex||0) - (b.creationIndex||0); + }); + + cb(null, cookies); }; /***/ }), +/* 350 */, +/* 351 */, +/* 352 */, +/* 353 */ +/***/ (function(module) { + +/** + * JSONSchema Validator - Validates JavaScript objects using JSON Schemas + * (http://www.json.com/json-schema-proposal/) + * Licensed under AFL-2.1 OR BSD-3-Clause +To use the validator call the validate function with an instance object and an optional schema object. +If a schema is provided, it will be used to validate. If the instance object refers to a schema (self-validating), +that schema will be used to validate and the schema parameter is not necessary (if both exist, +both validations will occur). +The validate method will return an array of validation errors. If there are no errors, then an +empty list will be returned. A validation error will have two properties: +"property" which indicates which property had the error +"message" which indicates what the error was + */ +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define([], function () { + return factory(); + }); + } else if ( true && module.exports) { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(); + } else { + // Browser globals + root.jsonSchema = factory(); + } +}(this, function () {// setup primitive classes to be JSON Schema types +var exports = validate +exports.Integer = {type:"integer"}; +var primitiveConstructors = { + String: String, + Boolean: Boolean, + Number: Number, + Object: Object, + Array: Array, + Date: Date +} +exports.validate = validate; +function validate(/*Any*/instance,/*Object*/schema) { + // Summary: + // To use the validator call JSONSchema.validate with an instance object and an optional schema object. + // If a schema is provided, it will be used to validate. If the instance object refers to a schema (self-validating), + // that schema will be used to validate and the schema parameter is not necessary (if both exist, + // both validations will occur). + // The validate method will return an object with two properties: + // valid: A boolean indicating if the instance is valid by the schema + // errors: An array of validation errors. If there are no errors, then an + // empty list will be returned. A validation error will have two properties: + // property: which indicates which property had the error + // message: which indicates what the error was + // + return validate(instance, schema, {changing: false});//, coerce: false, existingOnly: false}); + }; +exports.checkPropertyChange = function(/*Any*/value,/*Object*/schema, /*String*/property) { + // Summary: + // The checkPropertyChange method will check to see if an value can legally be in property with the given schema + // This is slightly different than the validate method in that it will fail if the schema is readonly and it will + // not check for self-validation, it is assumed that the passed in value is already internally valid. + // The checkPropertyChange method will return the same object type as validate, see JSONSchema.validate for + // information. + // + return validate(value, schema, {changing: property || "property"}); + }; +var validate = exports._validate = function(/*Any*/instance,/*Object*/schema,/*Object*/options) { + + if (!options) options = {}; + var _changing = options.changing; + + function getType(schema){ + return schema.type || (primitiveConstructors[schema.name] == schema && schema.name.toLowerCase()); + } + var errors = []; + // validate a value against a property definition + function checkProp(value, schema, path,i){ + + var l; + path += path ? typeof i == 'number' ? '[' + i + ']' : typeof i == 'undefined' ? '' : '.' + i : i; + function addError(message){ + errors.push({property:path,message:message}); + } + + if((typeof schema != 'object' || schema instanceof Array) && (path || typeof schema != 'function') && !(schema && getType(schema))){ + if(typeof schema == 'function'){ + if(!(value instanceof schema)){ + addError("is not an instance of the class/constructor " + schema.name); + } + }else if(schema){ + addError("Invalid schema/property definition " + schema); + } + return null; + } + if(_changing && schema.readonly){ + addError("is a readonly field, it can not be changed"); + } + if(schema['extends']){ // if it extends another schema, it must pass that schema as well + checkProp(value,schema['extends'],path,i); + } + // validate a value against a type definition + function checkType(type,value){ + if(type){ + if(typeof type == 'string' && type != 'any' && + (type == 'null' ? value !== null : typeof value != type) && + !(value instanceof Array && type == 'array') && + !(value instanceof Date && type == 'date') && + !(type == 'integer' && value%1===0)){ + return [{property:path,message:value + " - " + (typeof value) + " value found, but a " + type + " is required"}]; + } + if(type instanceof Array){ + var unionErrors=[]; + for(var j = 0; j < type.length; j++){ // a union type + if(!(unionErrors=checkType(type[j],value)).length){ + break; + } + } + if(unionErrors.length){ + return unionErrors; + } + }else if(typeof type == 'object'){ + var priorErrors = errors; + errors = []; + checkProp(value,type,path); + var theseErrors = errors; + errors = priorErrors; + return theseErrors; + } + } + return []; + } + if(value === undefined){ + if(schema.required){ + addError("is missing and it is required"); + } + }else{ + errors = errors.concat(checkType(getType(schema),value)); + if(schema.disallow && !checkType(schema.disallow,value).length){ + addError(" disallowed value was matched"); + } + if(value !== null){ + if(value instanceof Array){ + if(schema.items){ + var itemsIsArray = schema.items instanceof Array; + var propDef = schema.items; + for (i = 0, l = value.length; i < l; i += 1) { + if (itemsIsArray) + propDef = schema.items[i]; + if (options.coerce) + value[i] = options.coerce(value[i], propDef); + errors.concat(checkProp(value[i],propDef,path,i)); + } + } + if(schema.minItems && value.length < schema.minItems){ + addError("There must be a minimum of " + schema.minItems + " in the array"); + } + if(schema.maxItems && value.length > schema.maxItems){ + addError("There must be a maximum of " + schema.maxItems + " in the array"); + } + }else if(schema.properties || schema.additionalProperties){ + errors.concat(checkObj(value, schema.properties, path, schema.additionalProperties)); + } + if(schema.pattern && typeof value == 'string' && !value.match(schema.pattern)){ + addError("does not match the regex pattern " + schema.pattern); + } + if(schema.maxLength && typeof value == 'string' && value.length > schema.maxLength){ + addError("may only be " + schema.maxLength + " characters long"); + } + if(schema.minLength && typeof value == 'string' && value.length < schema.minLength){ + addError("must be at least " + schema.minLength + " characters long"); + } + if(typeof schema.minimum !== 'undefined' && typeof value == typeof schema.minimum && + schema.minimum > value){ + addError("must have a minimum value of " + schema.minimum); + } + if(typeof schema.maximum !== 'undefined' && typeof value == typeof schema.maximum && + schema.maximum < value){ + addError("must have a maximum value of " + schema.maximum); + } + if(schema['enum']){ + var enumer = schema['enum']; + l = enumer.length; + var found; + for(var j = 0; j < l; j++){ + if(enumer[j]===value){ + found=1; + break; + } + } + if(!found){ + addError("does not have a value in the enumeration " + enumer.join(", ")); + } + } + if(typeof schema.maxDecimal == 'number' && + (value.toString().match(new RegExp("\\.[0-9]{" + (schema.maxDecimal + 1) + ",}")))){ + addError("may only have " + schema.maxDecimal + " digits of decimal places"); + } + } + } + return null; + } + // validate an object against a schema + function checkObj(instance,objTypeDef,path,additionalProp){ + + if(typeof objTypeDef =='object'){ + if(typeof instance != 'object' || instance instanceof Array){ + errors.push({property:path,message:"an object is required"}); + } + + for(var i in objTypeDef){ + if(objTypeDef.hasOwnProperty(i) && i != '__proto__' && i != 'constructor'){ + var value = instance.hasOwnProperty(i) ? instance[i] : undefined; + // skip _not_ specified properties + if (value === undefined && options.existingOnly) continue; + var propDef = objTypeDef[i]; + // set default + if(value === undefined && propDef["default"]){ + value = instance[i] = propDef["default"]; + } + if(options.coerce && i in instance){ + value = instance[i] = options.coerce(value, propDef); + } + checkProp(value,propDef,path,i); + } + } + } + for(i in instance){ + if(instance.hasOwnProperty(i) && !(i.charAt(0) == '_' && i.charAt(1) == '_') && objTypeDef && !objTypeDef[i] && additionalProp===false){ + if (options.filter) { + delete instance[i]; + continue; + } else { + errors.push({property:path,message:"The property " + i + + " is not defined in the schema and the schema does not allow additional properties"}); + } + } + var requires = objTypeDef && objTypeDef[i] && objTypeDef[i].requires; + if(requires && !(requires in instance)){ + errors.push({property:path,message:"the presence of the property " + i + " requires that " + requires + " also be present"}); + } + value = instance[i]; + if(additionalProp && (!(objTypeDef && typeof objTypeDef == 'object') || !(i in objTypeDef))){ + if(options.coerce){ + value = instance[i] = options.coerce(value, additionalProp); + } + checkProp(value,additionalProp,path,i); + } + if(!_changing && value && value.$schema){ + errors = errors.concat(checkProp(value,value.$schema,path,i)); + } + } + return errors; + } + if(schema){ + checkProp(instance,schema,'',_changing || ''); + } + if(!_changing && instance && instance.$schema){ + checkProp(instance,instance.$schema,'',''); + } + return {valid:!errors.length,errors:errors}; +}; +exports.mustBeValid = function(result){ + // summary: + // This checks to ensure that the result is valid and will throw an appropriate error message if it is not + // result: the result returned from checkPropertyChange or validate + if(!result.valid){ + throw new TypeError(result.errors.map(function(error){return "for property " + error.property + ': ' + error.message;}).join(", \n")); + } +} + +return exports; +})); -/***/ 6794: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -// getting tag from 19.1.3.6 Object.prototype.toString() -var cof = __nccwpck_require__(4227); -var TAG = __nccwpck_require__(9370)('toStringTag'); -// ES3 wrong here -var ARG = cof(function () { return arguments; }()) == 'Arguments'; +/***/ }), +/* 354 */, +/* 355 */, +/* 356 */ +/***/ (function(__unusedmodule, exports) { -// fallback for IE11 Script Access Denied error -var tryGet = function (it, key) { - try { - return it[key]; - } catch (e) { /* empty */ } -}; +"use strict"; -module.exports = function (it) { - var O, T, B; - return it === undefined ? 'Undefined' : it === null ? 'Null' - // @@toStringTag case - : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T - // builtinTag case - : ARG ? cof(O) - // ES3 arguments fallback - : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; -}; +Object.defineProperty(exports, '__esModule', { value: true }); -/***/ }), +/*! + * is-plain-object + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */ -/***/ 4227: -/***/ ((module) => { +function isObject(o) { + return Object.prototype.toString.call(o) === '[object Object]'; +} -var toString = {}.toString; +function isPlainObject(o) { + var ctor,prot; -module.exports = function (it) { - return toString.call(it).slice(8, -1); -}; + if (isObject(o) === false) return false; + + // If has modified constructor + ctor = o.constructor; + if (ctor === undefined) return true; + // If has modified prototype + prot = ctor.prototype; + if (isObject(prot) === false) return false; -/***/ }), + // If constructor does not have an Object-specific method + if (prot.hasOwnProperty('isPrototypeOf') === false) { + return false; + } -/***/ 7965: -/***/ ((module) => { + // Most likely a plain Object + return true; +} -var core = module.exports = { version: '2.6.12' }; -if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef +exports.isPlainObject = isPlainObject; /***/ }), +/* 357 */ +/***/ (function(module) { -/***/ 755: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +module.exports = require("assert"); -"use strict"; +/***/ }), +/* 358 */, +/* 359 */, +/* 360 */, +/* 361 */, +/* 362 */ +/***/ (function(module) { -var $defineProperty = __nccwpck_require__(1278); -var createDesc = __nccwpck_require__(6370); +// Copyright 2011 Mark Cavage All rights reserved. -module.exports = function (object, index, value) { - if (index in object) $defineProperty.f(object, index, createDesc(0, value)); - else object[index] = value; + +module.exports = { + EOC: 0, + Boolean: 1, + Integer: 2, + BitString: 3, + OctetString: 4, + Null: 5, + OID: 6, + ObjectDescriptor: 7, + External: 8, + Real: 9, // float + Enumeration: 10, + PDV: 11, + Utf8String: 12, + RelativeOID: 13, + Sequence: 16, + Set: 17, + NumericString: 18, + PrintableString: 19, + T61String: 20, + VideotexString: 21, + IA5String: 22, + UTCTime: 23, + GeneralizedTime: 24, + GraphicString: 25, + VisibleString: 26, + GeneralString: 28, + UniversalString: 29, + CharacterString: 30, + BMPString: 31, + Constructor: 32, + Context: 128 }; /***/ }), +/* 363 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 9197: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +// Copyright 2015 Joyent, Inc. -// optional / simple context binding -var aFunction = __nccwpck_require__(4818); -module.exports = function (fn, that, length) { - aFunction(fn); - if (that === undefined) return fn; - switch (length) { - case 1: return function (a) { - return fn.call(that, a); - }; - case 2: return function (a, b) { - return fn.call(that, a, b); - }; - case 3: return function (a, b, c) { - return fn.call(that, a, b, c); - }; - } - return function (/* ...args */) { - return fn.apply(that, arguments); - }; +module.exports = { + Verifier: Verifier, + Signer: Signer }; +var nacl = __webpack_require__(196); +var stream = __webpack_require__(413); +var util = __webpack_require__(669); +var assert = __webpack_require__(489); +var Buffer = __webpack_require__(726).Buffer; +var Signature = __webpack_require__(575); -/***/ }), +function Verifier(key, hashAlgo) { + if (hashAlgo.toLowerCase() !== 'sha512') + throw (new Error('ED25519 only supports the use of ' + + 'SHA-512 hashes')); -/***/ 4596: -/***/ ((module) => { + this.key = key; + this.chunks = []; -// 7.2.1 RequireObjectCoercible(argument) -module.exports = function (it) { - if (it == undefined) throw TypeError("Can't call method on " + it); - return it; + stream.Writable.call(this, {}); +} +util.inherits(Verifier, stream.Writable); + +Verifier.prototype._write = function (chunk, enc, cb) { + this.chunks.push(chunk); + cb(); }; +Verifier.prototype.update = function (chunk) { + if (typeof (chunk) === 'string') + chunk = Buffer.from(chunk, 'binary'); + this.chunks.push(chunk); +}; -/***/ }), +Verifier.prototype.verify = function (signature, fmt) { + var sig; + if (Signature.isSignature(signature, [2, 0])) { + if (signature.type !== 'ed25519') + return (false); + sig = signature.toBuffer('raw'); -/***/ 4998: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + } else if (typeof (signature) === 'string') { + sig = Buffer.from(signature, 'base64'); -// Thank's IE8 for his funny defineProperty -module.exports = !__nccwpck_require__(6410)(function () { - return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; -}); + } else if (Signature.isSignature(signature, [1, 0])) { + throw (new Error('signature was created by too old ' + + 'a version of sshpk and cannot be verified')); + } + assert.buffer(sig); + return (nacl.sign.detached.verify( + new Uint8Array(Buffer.concat(this.chunks)), + new Uint8Array(sig), + new Uint8Array(this.key.part.A.data))); +}; -/***/ }), +function Signer(key, hashAlgo) { + if (hashAlgo.toLowerCase() !== 'sha512') + throw (new Error('ED25519 only supports the use of ' + + 'SHA-512 hashes')); -/***/ 4738: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + this.key = key; + this.chunks = []; -var isObject = __nccwpck_require__(1048); -var document = (__nccwpck_require__(9397).document); -// typeof document.createElement is 'object' in old IE -var is = isObject(document) && isObject(document.createElement); -module.exports = function (it) { - return is ? document.createElement(it) : {}; + stream.Writable.call(this, {}); +} +util.inherits(Signer, stream.Writable); + +Signer.prototype._write = function (chunk, enc, cb) { + this.chunks.push(chunk); + cb(); +}; + +Signer.prototype.update = function (chunk) { + if (typeof (chunk) === 'string') + chunk = Buffer.from(chunk, 'binary'); + this.chunks.push(chunk); +}; + +Signer.prototype.sign = function () { + var sig = nacl.sign.detached( + new Uint8Array(Buffer.concat(this.chunks)), + new Uint8Array(Buffer.concat([ + this.key.part.k.data, this.key.part.A.data]))); + var sigBuf = Buffer.from(sig); + var sigObj = Signature.parse(sigBuf, 'ed25519', 'raw'); + sigObj.hashAlgorithm = 'sha512'; + return (sigObj); }; /***/ }), +/* 364 */ +/***/ (function(module) { -/***/ 1769: -/***/ ((module) => { +"use strict"; -// IE 8- don't enum bug keys -module.exports = ( - 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' -).split(','); +module.exports = (flag, argv) => { + argv = argv || process.argv; + const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--'); + const pos = argv.indexOf(prefix + flag); + const terminatorPos = argv.indexOf('--'); + return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos); +}; /***/ }), +/* 365 */, +/* 366 */, +/* 367 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 2606: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +// Copyright 2015 Joyent, Inc. -// all enumerable object keys, includes symbols -var getKeys = __nccwpck_require__(9971); -var gOPS = __nccwpck_require__(1785); -var pIE = __nccwpck_require__(1118); -module.exports = function (it) { - var result = getKeys(it); - var getSymbols = gOPS.f; - if (getSymbols) { - var symbols = getSymbols(it); - var isEnum = pIE.f; - var i = 0; - var key; - while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key); - } return result; -}; +var parser = __webpack_require__(852); +var signer = __webpack_require__(64); +var verify = __webpack_require__(927); +var utils = __webpack_require__(909); -/***/ }), -/***/ 3725: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +///--- API -var global = __nccwpck_require__(9397); -var core = __nccwpck_require__(7965); -var hide = __nccwpck_require__(3735); -var redefine = __nccwpck_require__(5881); -var ctx = __nccwpck_require__(9197); -var PROTOTYPE = 'prototype'; +module.exports = { -var $export = function (type, name, source) { - var IS_FORCED = type & $export.F; - var IS_GLOBAL = type & $export.G; - var IS_STATIC = type & $export.S; - var IS_PROTO = type & $export.P; - var IS_BIND = type & $export.B; - var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE]; - var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); - var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {}); - var key, own, out, exp; - if (IS_GLOBAL) source = name; - for (key in source) { - // contains in native - own = !IS_FORCED && target && target[key] !== undefined; - // export native or passed - out = (own ? target : source)[key]; - // bind timers to global for call from export context - exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; - // extend global - if (target) redefine(target, key, out, type & $export.U); - // export - if (exports[key] != out) hide(exports, key, exp); - if (IS_PROTO && expProto[key] != out) expProto[key] = out; - } + parse: parser.parseRequest, + parseRequest: parser.parseRequest, + + sign: signer.signRequest, + signRequest: signer.signRequest, + createSigner: signer.createSigner, + isSigner: signer.isSigner, + + sshKeyToPEM: utils.sshKeyToPEM, + sshKeyFingerprint: utils.fingerprint, + pemToRsaSSHKey: utils.pemToRsaSSHKey, + + verify: verify.verifySignature, + verifySignature: verify.verifySignature, + verifyHMAC: verify.verifyHMAC }; -global.core = core; -// type bitmap -$export.F = 1; // forced -$export.G = 2; // global -$export.S = 4; // static -$export.P = 8; // proto -$export.B = 16; // bind -$export.W = 32; // wrap -$export.U = 64; // safe -$export.R = 128; // real proto method for `library` -module.exports = $export; /***/ }), +/* 368 */, +/* 369 */ +/***/ (function(module) { + +"use strict"; + +module.exports = function generate_dependencies(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $schemaDeps = {}, + $propertyDeps = {}, + $ownProperties = it.opts.ownProperties; + for ($property in $schema) { + if ($property == '__proto__') continue; + var $sch = $schema[$property]; + var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps; + $deps[$property] = $sch; + } + out += 'var ' + ($errs) + ' = errors;'; + var $currentErrorPath = it.errorPath; + out += 'var missing' + ($lvl) + ';'; + for (var $property in $propertyDeps) { + $deps = $propertyDeps[$property]; + if ($deps.length) { + out += ' if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined '; + if ($ownProperties) { + out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($property)) + '\') '; + } + if ($breakOnError) { + out += ' && ( '; + var arr1 = $deps; + if (arr1) { + var $propertyKey, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $propertyKey = arr1[$i += 1]; + if ($i) { + out += ' || '; + } + var $prop = it.util.getProperty($propertyKey), + $useData = $data + $prop; + out += ' ( ( ' + ($useData) + ' === undefined '; + if ($ownProperties) { + out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; + } + out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) '; + } + } + out += ')) { '; + var $propertyPath = 'missing' + $lvl, + $missingProperty = '\' + ' + $propertyPath + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath; + } + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('dependencies') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \'' + (it.util.escapeQuotes($property)) + '\', missingProperty: \'' + ($missingProperty) + '\', depsCount: ' + ($deps.length) + ', deps: \'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(", "))) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should have '; + if ($deps.length == 1) { + out += 'property ' + (it.util.escapeQuotes($deps[0])); + } else { + out += 'properties ' + (it.util.escapeQuotes($deps.join(", "))); + } + out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + } else { + out += ' ) { '; + var arr2 = $deps; + if (arr2) { + var $propertyKey, i2 = -1, + l2 = arr2.length - 1; + while (i2 < l2) { + $propertyKey = arr2[i2 += 1]; + var $prop = it.util.getProperty($propertyKey), + $missingProperty = it.util.escapeQuotes($propertyKey), + $useData = $data + $prop; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); + } + out += ' if ( ' + ($useData) + ' === undefined '; + if ($ownProperties) { + out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; + } + out += ') { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('dependencies') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \'' + (it.util.escapeQuotes($property)) + '\', missingProperty: \'' + ($missingProperty) + '\', depsCount: ' + ($deps.length) + ', deps: \'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(", "))) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should have '; + if ($deps.length == 1) { + out += 'property ' + (it.util.escapeQuotes($deps[0])); + } else { + out += 'properties ' + (it.util.escapeQuotes($deps.join(", "))); + } + out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } '; + } + } + } + out += ' } '; + if ($breakOnError) { + $closingBraces += '}'; + out += ' else { '; + } + } + } + it.errorPath = $currentErrorPath; + var $currentBaseId = $it.baseId; + for (var $property in $schemaDeps) { + var $sch = $schemaDeps[$property]; + if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { + out += ' ' + ($nextValid) + ' = true; if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined '; + if ($ownProperties) { + out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($property)) + '\') '; + } + out += ') { '; + $it.schema = $sch; + $it.schemaPath = $schemaPath + it.util.getProperty($property); + $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property); + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + out += ' } '; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + } + if ($breakOnError) { + out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; + } + return out; +} + + +/***/ }), +/* 370 */ +/***/ (function(module, exports, __webpack_require__) { -/***/ 6410: -/***/ ((module) => { +"use strict"; -module.exports = function (exec) { - try { - return !!exec(); - } catch (e) { - return true; - } -}; +__webpack_require__(493); -/***/ }), +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlSubDomainSegment = /(?:[a-z0-9](?:[a-z0-9_\-]*[a-z0-9])?)/i; +var _default = validateUrlSubDomainSegment; +exports["default"] = _default; +module.exports = exports.default; -/***/ 7464: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ }), +/* 371 */, +/* 372 */ +/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { "use strict"; -__nccwpck_require__(7917); -var redefine = __nccwpck_require__(5881); -var hide = __nccwpck_require__(3735); -var fails = __nccwpck_require__(6410); -var defined = __nccwpck_require__(4596); -var wks = __nccwpck_require__(9370); -var regexpExec = __nccwpck_require__(6207); - -var SPECIES = wks('species'); +var $at = __webpack_require__(289)(true); -var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () { - // #replace needs built-in support for named groups. - // #match works fine because it just return the exec results, even if it has - // a "grops" property. - var re = /./; - re.exec = function () { - var result = []; - result.groups = { a: '7' }; - return result; - }; - return ''.replace(re, '$
') !== '7'; +// 21.1.3.27 String.prototype[@@iterator]() +__webpack_require__(103)(String, 'String', function (iterated) { + this._t = String(iterated); // target + this._i = 0; // next index +// 21.1.5.2.1 %StringIteratorPrototype%.next() +}, function () { + var O = this._t; + var index = this._i; + var point; + if (index >= O.length) return { value: undefined, done: true }; + point = $at(O, index); + this._i += point.length; + return { value: point, done: false }; }); -var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () { - // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec - var re = /(?:)/; - var originalExec = re.exec; - re.exec = function () { return originalExec.apply(this, arguments); }; - var result = 'ab'.split(re); - return result.length === 2 && result[0] === 'a' && result[1] === 'b'; -})(); -module.exports = function (KEY, length, exec) { - var SYMBOL = wks(KEY); +/***/ }), +/* 373 */, +/* 374 */ +/***/ (function(module) { - var DELEGATES_TO_SYMBOL = !fails(function () { - // String methods call symbol-named RegEp methods - var O = {}; - O[SYMBOL] = function () { return 7; }; - return ''[KEY](O) != 7; - }); +"use strict"; - var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () { - // Symbol-named RegExp methods call .exec - var execCalled = false; - var re = /a/; - re.exec = function () { execCalled = true; return null; }; - if (KEY === 'split') { - // RegExp[@@split] doesn't call the regex's exec method, but first creates - // a new one. We need to return the patched regex when creating the new one. - re.constructor = {}; - re.constructor[SPECIES] = function () { return re; }; - } - re[SYMBOL](''); - return !execCalled; - }) : undefined; - if ( - !DELEGATES_TO_SYMBOL || - !DELEGATES_TO_EXEC || - (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) || - (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC) - ) { - var nativeRegExpMethod = /./[SYMBOL]; - var fns = exec( - defined, - SYMBOL, - ''[KEY], - function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) { - if (regexp.exec === regexpExec) { - if (DELEGATES_TO_SYMBOL && !forceStringMethod) { - // The native String method already delegates to @@method (this - // polyfilled function), leasing to infinite recursion. - // We avoid it by directly calling the native @@method method. - return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) }; - } - return { done: true, value: nativeMethod.call(str, regexp, arg2) }; - } - return { done: false }; - } - ); - var strfn = fns[0]; - var rxfn = fns[1]; +var hasOwn = Object.prototype.hasOwnProperty; +var toStr = Object.prototype.toString; +var defineProperty = Object.defineProperty; +var gOPD = Object.getOwnPropertyDescriptor; - redefine(String.prototype, KEY, strfn); - hide(RegExp.prototype, SYMBOL, length == 2 - // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue) - // 21.2.5.11 RegExp.prototype[@@split](string, limit) - ? function (string, arg) { return rxfn.call(string, this, arg); } - // 21.2.5.6 RegExp.prototype[@@match](string) - // 21.2.5.9 RegExp.prototype[@@search](string) - : function (string) { return rxfn.call(string, this); } - ); - } +var isArray = function isArray(arr) { + if (typeof Array.isArray === 'function') { + return Array.isArray(arr); + } + + return toStr.call(arr) === '[object Array]'; }; +var isPlainObject = function isPlainObject(obj) { + if (!obj || toStr.call(obj) !== '[object Object]') { + return false; + } -/***/ }), + var hasOwnConstructor = hasOwn.call(obj, 'constructor'); + var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); + // Not own constructor property must be Object + if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { + return false; + } -/***/ 7497: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + var key; + for (key in obj) { /**/ } -"use strict"; + return typeof key === 'undefined' || hasOwn.call(obj, key); +}; -// 21.2.5.3 get RegExp.prototype.flags -var anObject = __nccwpck_require__(8846); -module.exports = function () { - var that = anObject(this); - var result = ''; - if (that.global) result += 'g'; - if (that.ignoreCase) result += 'i'; - if (that.multiline) result += 'm'; - if (that.unicode) result += 'u'; - if (that.sticky) result += 'y'; - return result; +// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target +var setProperty = function setProperty(target, options) { + if (defineProperty && options.name === '__proto__') { + defineProperty(target, options.name, { + enumerable: true, + configurable: true, + value: options.newValue, + writable: true + }); + } else { + target[options.name] = options.newValue; + } }; +// Return undefined instead of __proto__ if '__proto__' is not an own property +var getProperty = function getProperty(obj, name) { + if (name === '__proto__') { + if (!hasOwn.call(obj, name)) { + return void 0; + } else if (gOPD) { + // In early versions of node, obj['__proto__'] is buggy when obj has + // __proto__ as an own property. Object.getOwnPropertyDescriptor() works. + return gOPD(obj, name).value; + } + } -/***/ }), + return obj[name]; +}; + +module.exports = function extend() { + var options, name, src, copy, copyIsArray, clone; + var target = arguments[0]; + var i = 1; + var length = arguments.length; + var deep = false; + + // Handle a deep copy situation + if (typeof target === 'boolean') { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + if (target == null || (typeof target !== 'object' && typeof target !== 'function')) { + target = {}; + } -/***/ 1366: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + for (; i < length; ++i) { + options = arguments[i]; + // Only deal with non-null/undefined values + if (options != null) { + // Extend the base object + for (name in options) { + src = getProperty(target, name); + copy = getProperty(options, name); + + // Prevent never-ending loop + if (target !== copy) { + // Recurse if we're merging plain objects or arrays + if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) { + if (copyIsArray) { + copyIsArray = false; + clone = src && isArray(src) ? src : []; + } else { + clone = src && isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + setProperty(target, { name: name, newValue: extend(deep, clone, copy) }); + + // Don't bring in undefined values + } else if (typeof copy !== 'undefined') { + setProperty(target, { name: name, newValue: copy }); + } + } + } + } + } -module.exports = __nccwpck_require__(5131)('native-function-to-string', Function.toString); + // Return the modified object + return target; +}; /***/ }), +/* 375 */, +/* 376 */, +/* 377 */, +/* 378 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +// Copyright 2017 Joyent, Inc. + +module.exports = Identity; + +var assert = __webpack_require__(489); +var algs = __webpack_require__(603); +var crypto = __webpack_require__(417); +var Fingerprint = __webpack_require__(400); +var Signature = __webpack_require__(575); +var errs = __webpack_require__(570); +var util = __webpack_require__(669); +var utils = __webpack_require__(270); +var asn1 = __webpack_require__(325); +var Buffer = __webpack_require__(726).Buffer; + +/*JSSTYLED*/ +var DNS_NAME_RE = /^([*]|[a-z0-9][a-z0-9\-]{0,62})(?:\.([*]|[a-z0-9][a-z0-9\-]{0,62}))*$/i; + +var oids = {}; +oids.cn = '2.5.4.3'; +oids.o = '2.5.4.10'; +oids.ou = '2.5.4.11'; +oids.l = '2.5.4.7'; +oids.s = '2.5.4.8'; +oids.c = '2.5.4.6'; +oids.sn = '2.5.4.4'; +oids.postalCode = '2.5.4.17'; +oids.serialNumber = '2.5.4.5'; +oids.street = '2.5.4.9'; +oids.x500UniqueIdentifier = '2.5.4.45'; +oids.role = '2.5.4.72'; +oids.telephoneNumber = '2.5.4.20'; +oids.description = '2.5.4.13'; +oids.dc = '0.9.2342.19200300.100.1.25'; +oids.uid = '0.9.2342.19200300.100.1.1'; +oids.mail = '0.9.2342.19200300.100.1.3'; +oids.title = '2.5.4.12'; +oids.gn = '2.5.4.42'; +oids.initials = '2.5.4.43'; +oids.pseudonym = '2.5.4.65'; +oids.emailAddress = '1.2.840.113549.1.9.1'; + +var unoids = {}; +Object.keys(oids).forEach(function (k) { + unoids[oids[k]] = k; +}); -/***/ 9397: -/***/ ((module) => { +function Identity(opts) { + var self = this; + assert.object(opts, 'options'); + assert.arrayOfObject(opts.components, 'options.components'); + this.components = opts.components; + this.componentLookup = {}; + this.components.forEach(function (c) { + if (c.name && !c.oid) + c.oid = oids[c.name]; + if (c.oid && !c.name) + c.name = unoids[c.oid]; + if (self.componentLookup[c.name] === undefined) + self.componentLookup[c.name] = []; + self.componentLookup[c.name].push(c); + }); + if (this.componentLookup.cn && this.componentLookup.cn.length > 0) { + this.cn = this.componentLookup.cn[0].value; + } + assert.optionalString(opts.type, 'options.type'); + if (opts.type === undefined) { + if (this.components.length === 1 && + this.componentLookup.cn && + this.componentLookup.cn.length === 1 && + this.componentLookup.cn[0].value.match(DNS_NAME_RE)) { + this.type = 'host'; + this.hostname = this.componentLookup.cn[0].value; + + } else if (this.componentLookup.dc && + this.components.length === this.componentLookup.dc.length) { + this.type = 'host'; + this.hostname = this.componentLookup.dc.map( + function (c) { + return (c.value); + }).join('.'); + + } else if (this.componentLookup.uid && + this.components.length === + this.componentLookup.uid.length) { + this.type = 'user'; + this.uid = this.componentLookup.uid[0].value; + + } else if (this.componentLookup.cn && + this.componentLookup.cn.length === 1 && + this.componentLookup.cn[0].value.match(DNS_NAME_RE)) { + this.type = 'host'; + this.hostname = this.componentLookup.cn[0].value; + + } else if (this.componentLookup.uid && + this.componentLookup.uid.length === 1) { + this.type = 'user'; + this.uid = this.componentLookup.uid[0].value; + + } else if (this.componentLookup.mail && + this.componentLookup.mail.length === 1) { + this.type = 'email'; + this.email = this.componentLookup.mail[0].value; + + } else if (this.componentLookup.cn && + this.componentLookup.cn.length === 1) { + this.type = 'user'; + this.uid = this.componentLookup.cn[0].value; -// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 -var global = module.exports = typeof window != 'undefined' && window.Math == Math - ? window : typeof self != 'undefined' && self.Math == Math ? self - // eslint-disable-next-line no-new-func - : Function('return this')(); -if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef + } else { + this.type = 'unknown'; + } + } else { + this.type = opts.type; + if (this.type === 'host') + this.hostname = opts.hostname; + else if (this.type === 'user') + this.uid = opts.uid; + else if (this.type === 'email') + this.email = opts.email; + else + throw (new Error('Unknown type ' + this.type)); + } +} + +Identity.prototype.toString = function () { + return (this.components.map(function (c) { + var n = c.name.toUpperCase(); + /*JSSTYLED*/ + n = n.replace(/=/g, '\\='); + var v = c.value; + /*JSSTYLED*/ + v = v.replace(/,/g, '\\,'); + return (n + '=' + v); + }).join(', ')); +}; +Identity.prototype.get = function (name, asArray) { + assert.string(name, 'name'); + var arr = this.componentLookup[name]; + if (arr === undefined || arr.length === 0) + return (undefined); + if (!asArray && arr.length > 1) + throw (new Error('Multiple values for attribute ' + name)); + if (!asArray) + return (arr[0].value); + return (arr.map(function (c) { + return (c.value); + })); +}; -/***/ }), +Identity.prototype.toArray = function (idx) { + return (this.components.map(function (c) { + return ({ + name: c.name, + value: c.value + }); + })); +}; -/***/ 4898: -/***/ ((module) => { +/* + * These are from X.680 -- PrintableString allowed chars are in section 37.4 + * table 8. Spec for IA5Strings is "1,6 + SPACE + DEL" where 1 refers to + * ISO IR #001 (standard ASCII control characters) and 6 refers to ISO IR #006 + * (the basic ASCII character set). + */ +/* JSSTYLED */ +var NOT_PRINTABLE = /[^a-zA-Z0-9 '(),+.\/:=?-]/; +/* JSSTYLED */ +var NOT_IA5 = /[^\x00-\x7f]/; + +Identity.prototype.toAsn1 = function (der, tag) { + der.startSequence(tag); + this.components.forEach(function (c) { + der.startSequence(asn1.Ber.Constructor | asn1.Ber.Set); + der.startSequence(); + der.writeOID(c.oid); + /* + * If we fit in a PrintableString, use that. Otherwise use an + * IA5String or UTF8String. + * + * If this identity was parsed from a DN, use the ASN.1 types + * from the original representation (otherwise this might not + * be a full match for the original in some validators). + */ + if (c.asn1type === asn1.Ber.Utf8String || + c.value.match(NOT_IA5)) { + var v = Buffer.from(c.value, 'utf8'); + der.writeBuffer(v, asn1.Ber.Utf8String); + + } else if (c.asn1type === asn1.Ber.IA5String || + c.value.match(NOT_PRINTABLE)) { + der.writeString(c.value, asn1.Ber.IA5String); -var hasOwnProperty = {}.hasOwnProperty; -module.exports = function (it, key) { - return hasOwnProperty.call(it, key); + } else { + var type = asn1.Ber.PrintableString; + if (c.asn1type !== undefined) + type = c.asn1type; + der.writeString(c.value, type); + } + der.endSequence(); + der.endSequence(); + }); + der.endSequence(); +}; + +function globMatch(a, b) { + if (a === '**' || b === '**') + return (true); + var aParts = a.split('.'); + var bParts = b.split('.'); + if (aParts.length !== bParts.length) + return (false); + for (var i = 0; i < aParts.length; ++i) { + if (aParts[i] === '*' || bParts[i] === '*') + continue; + if (aParts[i] !== bParts[i]) + return (false); + } + return (true); +} + +Identity.prototype.equals = function (other) { + if (!Identity.isIdentity(other, [1, 0])) + return (false); + if (other.components.length !== this.components.length) + return (false); + for (var i = 0; i < this.components.length; ++i) { + if (this.components[i].oid !== other.components[i].oid) + return (false); + if (!globMatch(this.components[i].value, + other.components[i].value)) { + return (false); + } + } + return (true); }; +Identity.forHost = function (hostname) { + assert.string(hostname, 'hostname'); + return (new Identity({ + type: 'host', + hostname: hostname, + components: [ { name: 'cn', value: hostname } ] + })); +}; -/***/ }), +Identity.forUser = function (uid) { + assert.string(uid, 'uid'); + return (new Identity({ + type: 'user', + uid: uid, + components: [ { name: 'uid', value: uid } ] + })); +}; -/***/ 3735: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +Identity.forEmail = function (email) { + assert.string(email, 'email'); + return (new Identity({ + type: 'email', + email: email, + components: [ { name: 'mail', value: email } ] + })); +}; -var dP = __nccwpck_require__(1278); -var createDesc = __nccwpck_require__(6370); -module.exports = __nccwpck_require__(4998) ? function (object, key, value) { - return dP.f(object, key, createDesc(1, value)); -} : function (object, key, value) { - object[key] = value; - return object; +Identity.parseDN = function (dn) { + assert.string(dn, 'dn'); + var parts = ['']; + var idx = 0; + var rem = dn; + while (rem.length > 0) { + var m; + /*JSSTYLED*/ + if ((m = /^,/.exec(rem)) !== null) { + parts[++idx] = ''; + rem = rem.slice(m[0].length); + /*JSSTYLED*/ + } else if ((m = /^\\,/.exec(rem)) !== null) { + parts[idx] += ','; + rem = rem.slice(m[0].length); + /*JSSTYLED*/ + } else if ((m = /^\\./.exec(rem)) !== null) { + parts[idx] += m[0]; + rem = rem.slice(m[0].length); + /*JSSTYLED*/ + } else if ((m = /^[^\\,]+/.exec(rem)) !== null) { + parts[idx] += m[0]; + rem = rem.slice(m[0].length); + } else { + throw (new Error('Failed to parse DN')); + } + } + var cmps = parts.map(function (c) { + c = c.trim(); + var eqPos = c.indexOf('='); + while (eqPos > 0 && c.charAt(eqPos - 1) === '\\') + eqPos = c.indexOf('=', eqPos + 1); + if (eqPos === -1) { + throw (new Error('Failed to parse DN')); + } + /*JSSTYLED*/ + var name = c.slice(0, eqPos).toLowerCase().replace(/\\=/g, '='); + var value = c.slice(eqPos + 1); + return ({ name: name, value: value }); + }); + return (new Identity({ components: cmps })); +}; + +Identity.fromArray = function (components) { + assert.arrayOfObject(components, 'components'); + components.forEach(function (cmp) { + assert.object(cmp, 'component'); + assert.string(cmp.name, 'component.name'); + if (!Buffer.isBuffer(cmp.value) && + !(typeof (cmp.value) === 'string')) { + throw (new Error('Invalid component value')); + } + }); + return (new Identity({ components: components })); }; +Identity.parseAsn1 = function (der, top) { + var components = []; + der.readSequence(top); + var end = der.offset + der.length; + while (der.offset < end) { + der.readSequence(asn1.Ber.Constructor | asn1.Ber.Set); + var after = der.offset + der.length; + der.readSequence(); + var oid = der.readOID(); + var type = der.peek(); + var value; + switch (type) { + case asn1.Ber.PrintableString: + case asn1.Ber.IA5String: + case asn1.Ber.OctetString: + case asn1.Ber.T61String: + value = der.readString(type); + break; + case asn1.Ber.Utf8String: + value = der.readString(type, true); + value = value.toString('utf8'); + break; + case asn1.Ber.CharacterString: + case asn1.Ber.BMPString: + value = der.readString(type, true); + value = value.toString('utf16le'); + break; + default: + throw (new Error('Unknown asn1 type ' + type)); + } + components.push({ oid: oid, asn1type: type, value: value }); + der._offset = after; + } + der._offset = end; + return (new Identity({ + components: components + })); +}; -/***/ }), +Identity.isIdentity = function (obj, ver) { + return (utils.isCompatible(obj, Identity, ver)); +}; -/***/ 8931: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/* + * API versions for Identity: + * [1,0] -- initial ver + */ +Identity.prototype._sshpkApiVersion = [1, 0]; -var document = (__nccwpck_require__(9397).document); -module.exports = document && document.documentElement; +Identity._oldVersionDetect = function (obj) { + return ([1, 0]); +}; /***/ }), +/* 379 */, +/* 380 */ +/***/ (function(module, exports, __webpack_require__) { -/***/ 9842: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +"use strict"; -module.exports = !__nccwpck_require__(4998) && !__nccwpck_require__(6410)(function () { - return Object.defineProperty(__nccwpck_require__(4738)('div'), 'a', { get: function () { return 7; } }).a != 7; -}); +var _interopRequireDefault = __webpack_require__(764); -/***/ }), +__webpack_require__(493); -/***/ 5116: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; -var isObject = __nccwpck_require__(1048); -var setPrototypeOf = (__nccwpck_require__(310).set); -module.exports = function (that, target, C) { - var S = target.constructor; - var P; - if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) { - setPrototypeOf(that, P); - } return that; -}; +__webpack_require__(809); +__webpack_require__(968); -/***/ }), +var _validCashtag = _interopRequireDefault(__webpack_require__(661)); -/***/ 2029: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text) { + if (!text || text.indexOf('$') === -1) { + return []; + } -// fallback for non-array-like ES3 and non-enumerable old V8 strings -var cof = __nccwpck_require__(4227); -// eslint-disable-next-line no-prototype-builtins -module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) { - return cof(it) == 'String' ? it.split('') : Object(it); -}; + var tags = []; + text.replace(_validCashtag["default"], function (match, before, dollar, cashtag, offset, chunk) { + var startPosition = offset + before.length; + var endPosition = startPosition + cashtag.length + 1; + tags.push({ + cashtag: cashtag, + indices: [startPosition, endPosition] + }); + }); + return tags; +} +module.exports = exports.default; /***/ }), +/* 381 */, +/* 382 */ +/***/ (function(module, exports, __webpack_require__) { -/***/ 5519: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +"use strict"; -// check on default Array iterator -var Iterators = __nccwpck_require__(5424); -var ITERATOR = __nccwpck_require__(9370)('iterator'); -var ArrayProto = Array.prototype; -module.exports = function (it) { - return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it); -}; +__webpack_require__(493); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlUnicodeSubDomainSegment = /(?:(?:[a-z0-9]|[^\u0000-\u007f])(?:(?:[a-z0-9_\-]|[^\u0000-\u007f])*(?:[a-z0-9]|[^\u0000-\u007f]))?)/i; +var _default = validateUrlUnicodeSubDomainSegment; +exports["default"] = _default; +module.exports = exports.default; /***/ }), +/* 383 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { -/***/ 4685: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -// 7.2.2 IsArray(argument) -var cof = __nccwpck_require__(4227); -module.exports = Array.isArray || function isArray(arg) { - return cof(arg) == 'Array'; -}; +"use strict"; +/*! + * Copyright (c) 2015, Salesforce.com, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. Neither the name of Salesforce.com nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +var pubsuffix = __webpack_require__(519); -/***/ }), +// Gives the permutation of all possible domainMatch()es of a given domain. The +// array is in shortest-to-longest order. Handy for indexing. +function permuteDomain (domain) { + var pubSuf = pubsuffix.getPublicSuffix(domain); + if (!pubSuf) { + return null; + } + if (pubSuf == domain) { + return [domain]; + } -/***/ 1048: -/***/ ((module) => { + var prefix = domain.slice(0, -(pubSuf.length + 1)); // ".example.com" + var parts = prefix.split('.').reverse(); + var cur = pubSuf; + var permutations = [cur]; + while (parts.length) { + cur = parts.shift() + '.' + cur; + permutations.push(cur); + } + return permutations; +} -module.exports = function (it) { - return typeof it === 'object' ? it !== null : typeof it === 'function'; -}; +exports.permuteDomain = permuteDomain; /***/ }), +/* 384 */, +/* 385 */ +/***/ (function(module) { -/***/ 302: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +module.exports = {"$id":"har.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["log"],"properties":{"log":{"$ref":"log.json#"}}}; -// 7.2.8 IsRegExp(argument) -var isObject = __nccwpck_require__(1048); -var cof = __nccwpck_require__(4227); -var MATCH = __nccwpck_require__(9370)('match'); -module.exports = function (it) { - var isRegExp; - return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp'); -}; +/***/ }), +/* 386 */ +/***/ (function(module, __unusedexports, __webpack_require__) { +"use strict"; -/***/ }), -/***/ 6098: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +var stringify = __webpack_require__(66); +var parse = __webpack_require__(398); +var formats = __webpack_require__(13); -// call something on iterator step with safe closing on error -var anObject = __nccwpck_require__(8846); -module.exports = function (iterator, fn, value, entries) { - try { - return entries ? fn(anObject(value)[0], value[1]) : fn(value); - // 7.4.6 IteratorClose(iterator, completion) - } catch (e) { - var ret = iterator['return']; - if (ret !== undefined) anObject(ret.call(iterator)); - throw e; - } +module.exports = { + formats: formats, + parse: parse, + stringify: stringify }; /***/ }), - -/***/ 2098: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/* 387 */, +/* 388 */, +/* 389 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var create = __nccwpck_require__(2894); -var descriptor = __nccwpck_require__(6370); -var setToStringTag = __nccwpck_require__(9845); -var IteratorPrototype = {}; -// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() -__nccwpck_require__(3735)(IteratorPrototype, __nccwpck_require__(9370)('iterator'), function () { return this; }); +var _interopRequireDefault = __webpack_require__(764); -module.exports = function (Constructor, NAME, next) { - Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) }); - setToStringTag(Constructor, NAME + ' Iterator'); -}; +__webpack_require__(493); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; -/***/ }), +__webpack_require__(809); -/***/ 1855: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +__webpack_require__(549); -"use strict"; +var _endHashtagMatch = _interopRequireDefault(__webpack_require__(69)); -var LIBRARY = __nccwpck_require__(2192); -var $export = __nccwpck_require__(3725); -var redefine = __nccwpck_require__(5881); -var hide = __nccwpck_require__(3735); -var Iterators = __nccwpck_require__(5424); -var $iterCreate = __nccwpck_require__(2098); -var setToStringTag = __nccwpck_require__(9845); -var getPrototypeOf = __nccwpck_require__(827); -var ITERATOR = __nccwpck_require__(9370)('iterator'); -var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next` -var FF_ITERATOR = '@@iterator'; -var KEYS = 'keys'; -var VALUES = 'values'; +var _extractUrlsWithIndices = _interopRequireDefault(__webpack_require__(257)); -var returnThis = function () { return this; }; +var _hashSigns = _interopRequireDefault(__webpack_require__(617)); -module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) { - $iterCreate(Constructor, NAME, next); - var getMethod = function (kind) { - if (!BUGGY && kind in proto) return proto[kind]; - switch (kind) { - case KEYS: return function keys() { return new Constructor(this, kind); }; - case VALUES: return function values() { return new Constructor(this, kind); }; - } return function entries() { return new Constructor(this, kind); }; - }; - var TAG = NAME + ' Iterator'; - var DEF_VALUES = DEFAULT == VALUES; - var VALUES_BUG = false; - var proto = Base.prototype; - var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]; - var $default = $native || getMethod(DEFAULT); - var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined; - var $anyNative = NAME == 'Array' ? proto.entries || $native : $native; - var methods, key, IteratorPrototype; - // Fix native - if ($anyNative) { - IteratorPrototype = getPrototypeOf($anyNative.call(new Base())); - if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) { - // Set @@toStringTag to native iterators - setToStringTag(IteratorPrototype, TAG, true); - // fix for some old engines - if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis); - } - } - // fix Array#{values, @@iterator}.name in V8 / FF - if (DEF_VALUES && $native && $native.name !== VALUES) { - VALUES_BUG = true; - $default = function values() { return $native.call(this); }; - } - // Define iterator - if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) { - hide(proto, ITERATOR, $default); - } - // Plug for library - Iterators[NAME] = $default; - Iterators[TAG] = returnThis; - if (DEFAULT) { - methods = { - values: DEF_VALUES ? $default : getMethod(VALUES), - keys: IS_SET ? $default : getMethod(KEYS), - entries: $entries +var _removeOverlappingEntities = _interopRequireDefault(__webpack_require__(915)); + +var _validHashtag = _interopRequireDefault(__webpack_require__(616)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var extractHashtagsWithIndices = function extractHashtagsWithIndices(text, options) { + if (!options) { + options = { + checkUrlOverlap: true }; - if (FORCED) for (key in methods) { - if (!(key in proto)) redefine(proto, key, methods[key]); - } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); } - return methods; -}; + if (!text || !text.match(_hashSigns["default"])) { + return []; + } -/***/ }), + var tags = []; + text.replace(_validHashtag["default"], function (match, before, hash, hashText, offset, chunk) { + var after = chunk.slice(offset + match.length); -/***/ 2992: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (after.match(_endHashtagMatch["default"])) { + return; + } -var ITERATOR = __nccwpck_require__(9370)('iterator'); -var SAFE_CLOSING = false; + var startPosition = offset + before.length; + var endPosition = startPosition + hashText.length + 1; + tags.push({ + hashtag: hashText, + indices: [startPosition, endPosition] + }); + }); -try { - var riter = [7][ITERATOR](); - riter['return'] = function () { SAFE_CLOSING = true; }; - // eslint-disable-next-line no-throw-literal - Array.from(riter, function () { throw 2; }); -} catch (e) { /* empty */ } + if (options.checkUrlOverlap) { + // also extract URL entities + var urls = (0, _extractUrlsWithIndices["default"])(text); -module.exports = function (exec, skipClosing) { - if (!skipClosing && !SAFE_CLOSING) return false; - var safe = false; - try { - var arr = [7]; - var iter = arr[ITERATOR](); - iter.next = function () { return { done: safe = true }; }; - arr[ITERATOR] = function () { return iter; }; - exec(arr); - } catch (e) { /* empty */ } - return safe; -}; + if (urls.length > 0) { + var entities = tags.concat(urls); // remove overlap + (0, _removeOverlappingEntities["default"])(entities); // only push back hashtags -/***/ }), + tags = []; -/***/ 1387: -/***/ ((module) => { + for (var i = 0; i < entities.length; i++) { + if (entities[i].hashtag) { + tags.push(entities[i]); + } + } + } + } -module.exports = function (done, value) { - return { value: value, done: !!done }; + return tags; }; +var _default = extractHashtagsWithIndices; +exports["default"] = _default; +module.exports = exports.default; /***/ }), +/* 390 */, +/* 391 */, +/* 392 */, +/* 393 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 5424: -/***/ ((module) => { - -module.exports = {}; - - -/***/ }), +"use strict"; -/***/ 2192: -/***/ ((module) => { +var $defineProperty = __webpack_require__(973); +var createDesc = __webpack_require__(690); -module.exports = false; +module.exports = function (object, index, value) { + if (index in object) $defineProperty.f(object, index, createDesc(0, value)); + else object[index] = value; +}; /***/ }), +/* 394 */, +/* 395 */, +/* 396 */, +/* 397 */ +/***/ (function(module) { -/***/ 4410: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +"use strict"; -var META = __nccwpck_require__(2959)('meta'); -var isObject = __nccwpck_require__(1048); -var has = __nccwpck_require__(4898); -var setDesc = (__nccwpck_require__(1278).f); -var id = 0; -var isExtensible = Object.isExtensible || function () { - return true; -}; -var FREEZE = !__nccwpck_require__(6410)(function () { - return isExtensible(Object.preventExtensions({})); -}); -var setMeta = function (it) { - setDesc(it, META, { value: { - i: 'O' + ++id, // object ID - w: {} // weak collections IDs - } }); -}; -var fastKey = function (it, create) { - // return primitive with prefix - if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; - if (!has(it, META)) { - // can't set metadata to uncaught frozen object - if (!isExtensible(it)) return 'F'; - // not necessary to add metadata - if (!create) return 'E'; - // add missing metadata - setMeta(it); - // return object ID - } return it[META].i; -}; -var getWeak = function (it, create) { - if (!has(it, META)) { - // can't set metadata to uncaught frozen object - if (!isExtensible(it)) return true; - // not necessary to add metadata - if (!create) return false; - // add missing metadata - setMeta(it); - // return hash weak collections IDs - } return it[META].w; -}; -// add metadata on freeze-family methods calling -var onFreeze = function (it) { - if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it); - return it; -}; -var meta = module.exports = { - KEY: META, - NEED: false, - fastKey: fastKey, - getWeak: getWeak, - onFreeze: onFreeze -}; +module.exports = function generate_multipleOf(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + if (!($isData || typeof $schema == 'number')) { + throw new Error($keyword + ' must be number'); + } + out += 'var division' + ($lvl) + ';if ('; + if ($isData) { + out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \'number\' || '; + } + out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', '; + if (it.opts.multipleOfPrecision) { + out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' '; + } else { + out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') '; + } + out += ' ) '; + if ($isData) { + out += ' ) '; + } + out += ' ) { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('multipleOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { multipleOf: ' + ($schemaValue) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be multiple of '; + if ($isData) { + out += '\' + ' + ($schemaValue); + } else { + out += '' + ($schemaValue) + '\''; + } + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; +} /***/ }), +/* 398 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 2894: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +"use strict"; -// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) -var anObject = __nccwpck_require__(8846); -var dPs = __nccwpck_require__(5534); -var enumBugKeys = __nccwpck_require__(1769); -var IE_PROTO = __nccwpck_require__(6613)('IE_PROTO'); -var Empty = function () { /* empty */ }; -var PROTOTYPE = 'prototype'; -// Create object with fake `null` prototype: use iframe Object with cleared prototype -var createDict = function () { - // Thrash, waste and sodomy: IE GC bug - var iframe = __nccwpck_require__(4738)('iframe'); - var i = enumBugKeys.length; - var lt = '<'; - var gt = '>'; - var iframeDocument; - iframe.style.display = 'none'; - (__nccwpck_require__(8931).appendChild)(iframe); - iframe.src = 'javascript:'; // eslint-disable-line no-script-url - // createDict = iframe.contentWindow.Object; - // html.removeChild(iframe); - iframeDocument = iframe.contentWindow.document; - iframeDocument.open(); - iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); - iframeDocument.close(); - createDict = iframeDocument.F; - while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]]; - return createDict(); -}; +var utils = __webpack_require__(581); -module.exports = Object.create || function create(O, Properties) { - var result; - if (O !== null) { - Empty[PROTOTYPE] = anObject(O); - result = new Empty(); - Empty[PROTOTYPE] = null; - // add "__proto__" for Object.getPrototypeOf polyfill - result[IE_PROTO] = O; - } else result = createDict(); - return Properties === undefined ? result : dPs(result, Properties); +var has = Object.prototype.hasOwnProperty; + +var defaults = { + allowDots: false, + allowPrototypes: false, + arrayLimit: 20, + decoder: utils.decode, + delimiter: '&', + depth: 5, + parameterLimit: 1000, + plainObjects: false, + strictNullHandling: false }; +var parseValues = function parseQueryStringValues(str, options) { + var obj = {}; + var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str; + var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit; + var parts = cleanStr.split(options.delimiter, limit); -/***/ }), + for (var i = 0; i < parts.length; ++i) { + var part = parts[i]; -/***/ 1278: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + var bracketEqualsPos = part.indexOf(']='); + var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1; -var anObject = __nccwpck_require__(8846); -var IE8_DOM_DEFINE = __nccwpck_require__(9842); -var toPrimitive = __nccwpck_require__(9075); -var dP = Object.defineProperty; + var key, val; + if (pos === -1) { + key = options.decoder(part, defaults.decoder); + val = options.strictNullHandling ? null : ''; + } else { + key = options.decoder(part.slice(0, pos), defaults.decoder); + val = options.decoder(part.slice(pos + 1), defaults.decoder); + } + if (has.call(obj, key)) { + obj[key] = [].concat(obj[key]).concat(val); + } else { + obj[key] = val; + } + } -exports.f = __nccwpck_require__(4998) ? Object.defineProperty : function defineProperty(O, P, Attributes) { - anObject(O); - P = toPrimitive(P, true); - anObject(Attributes); - if (IE8_DOM_DEFINE) try { - return dP(O, P, Attributes); - } catch (e) { /* empty */ } - if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); - if ('value' in Attributes) O[P] = Attributes.value; - return O; + return obj; }; +var parseObject = function (chain, val, options) { + var leaf = val; -/***/ }), + for (var i = chain.length - 1; i >= 0; --i) { + var obj; + var root = chain[i]; -/***/ 5534: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (root === '[]') { + obj = []; + obj = obj.concat(leaf); + } else { + obj = options.plainObjects ? Object.create(null) : {}; + var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root; + var index = parseInt(cleanRoot, 10); + if ( + !isNaN(index) + && root !== cleanRoot + && String(index) === cleanRoot + && index >= 0 + && (options.parseArrays && index <= options.arrayLimit) + ) { + obj = []; + obj[index] = leaf; + } else { + obj[cleanRoot] = leaf; + } + } -var dP = __nccwpck_require__(1278); -var anObject = __nccwpck_require__(8846); -var getKeys = __nccwpck_require__(9971); + leaf = obj; + } -module.exports = __nccwpck_require__(4998) ? Object.defineProperties : function defineProperties(O, Properties) { - anObject(O); - var keys = getKeys(Properties); - var length = keys.length; - var i = 0; - var P; - while (length > i) dP.f(O, P = keys[i++], Properties[P]); - return O; + return leaf; }; +var parseKeys = function parseQueryStringKeys(givenKey, val, options) { + if (!givenKey) { + return; + } -/***/ }), + // Transform dot notation to bracket notation + var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey; -/***/ 1611: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + // The regex chunks -var pIE = __nccwpck_require__(1118); -var createDesc = __nccwpck_require__(6370); -var toIObject = __nccwpck_require__(637); -var toPrimitive = __nccwpck_require__(9075); -var has = __nccwpck_require__(4898); -var IE8_DOM_DEFINE = __nccwpck_require__(9842); -var gOPD = Object.getOwnPropertyDescriptor; + var brackets = /(\[[^[\]]*])/; + var child = /(\[[^[\]]*])/g; -exports.f = __nccwpck_require__(4998) ? gOPD : function getOwnPropertyDescriptor(O, P) { - O = toIObject(O); - P = toPrimitive(P, true); - if (IE8_DOM_DEFINE) try { - return gOPD(O, P); - } catch (e) { /* empty */ } - if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]); -}; + // Get the parent + var segment = brackets.exec(key); + var parent = segment ? key.slice(0, segment.index) : key; -/***/ }), + // Stash the parent if it exists -/***/ 494: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + var keys = []; + if (parent) { + // If we aren't using plain objects, optionally prefix keys + // that would overwrite object prototype properties + if (!options.plainObjects && has.call(Object.prototype, parent)) { + if (!options.allowPrototypes) { + return; + } + } -// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window -var toIObject = __nccwpck_require__(637); -var gOPN = (__nccwpck_require__(7779).f); -var toString = {}.toString; + keys.push(parent); + } -var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames - ? Object.getOwnPropertyNames(window) : []; + // Loop through children appending to the array until we hit depth -var getWindowNames = function (it) { - try { - return gOPN(it); - } catch (e) { - return windowNames.slice(); - } -}; + var i = 0; + while ((segment = child.exec(key)) !== null && i < options.depth) { + i += 1; + if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) { + if (!options.allowPrototypes) { + return; + } + } + keys.push(segment[1]); + } -module.exports.f = function getOwnPropertyNames(it) { - return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it)); + // If there's a remainder, just add whatever is left + + if (segment) { + keys.push('[' + key.slice(segment.index) + ']'); + } + + return parseObject(keys, val, options); }; +module.exports = function (str, opts) { + var options = opts ? utils.assign({}, opts) : {}; -/***/ }), + if (options.decoder !== null && options.decoder !== undefined && typeof options.decoder !== 'function') { + throw new TypeError('Decoder has to be a function.'); + } -/***/ 7779: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + options.ignoreQueryPrefix = options.ignoreQueryPrefix === true; + options.delimiter = typeof options.delimiter === 'string' || utils.isRegExp(options.delimiter) ? options.delimiter : defaults.delimiter; + options.depth = typeof options.depth === 'number' ? options.depth : defaults.depth; + options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : defaults.arrayLimit; + options.parseArrays = options.parseArrays !== false; + options.decoder = typeof options.decoder === 'function' ? options.decoder : defaults.decoder; + options.allowDots = typeof options.allowDots === 'boolean' ? options.allowDots : defaults.allowDots; + options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : defaults.plainObjects; + options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : defaults.allowPrototypes; + options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : defaults.parameterLimit; + options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling; -// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) -var $keys = __nccwpck_require__(6686); -var hiddenKeys = (__nccwpck_require__(1769).concat)('length', 'prototype'); + if (str === '' || str === null || typeof str === 'undefined') { + return options.plainObjects ? Object.create(null) : {}; + } -exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { - return $keys(O, hiddenKeys); + var tempObj = typeof str === 'string' ? parseValues(str, options) : str; + var obj = options.plainObjects ? Object.create(null) : {}; + + // Iterate over the keys and setup the new object + + var keys = Object.keys(tempObj); + for (var i = 0; i < keys.length; ++i) { + var key = keys[i]; + var newObj = parseKeys(key, tempObj[key], options); + obj = utils.merge(obj, newObj, options); + } + + return utils.compact(obj); }; /***/ }), +/* 399 */ +/***/ (function(module, exports, __webpack_require__) { -/***/ 1785: -/***/ ((__unused_webpack_module, exports) => { +"use strict"; -exports.f = Object.getOwnPropertySymbols; +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); + +var _validateUrlPchar = _interopRequireDefault(__webpack_require__(340)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlPath = (0, _regexSupplant["default"])(/(\/#{validateUrlPchar}*)*/i, { + validateUrlPchar: _validateUrlPchar["default"] +}); +var _default = validateUrlPath; +exports["default"] = _default; +module.exports = exports.default; /***/ }), +/* 400 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 827: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +// Copyright 2018 Joyent, Inc. -// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) -var has = __nccwpck_require__(4898); -var toObject = __nccwpck_require__(2702); -var IE_PROTO = __nccwpck_require__(6613)('IE_PROTO'); -var ObjectProto = Object.prototype; +module.exports = Fingerprint; -module.exports = Object.getPrototypeOf || function (O) { - O = toObject(O); - if (has(O, IE_PROTO)) return O[IE_PROTO]; - if (typeof O.constructor == 'function' && O instanceof O.constructor) { - return O.constructor.prototype; - } return O instanceof Object ? ObjectProto : null; +var assert = __webpack_require__(489); +var Buffer = __webpack_require__(726).Buffer; +var algs = __webpack_require__(603); +var crypto = __webpack_require__(417); +var errs = __webpack_require__(570); +var Key = __webpack_require__(500); +var PrivateKey = __webpack_require__(502); +var Certificate = __webpack_require__(202); +var utils = __webpack_require__(270); + +var FingerprintFormatError = errs.FingerprintFormatError; +var InvalidAlgorithmError = errs.InvalidAlgorithmError; + +function Fingerprint(opts) { + assert.object(opts, 'options'); + assert.string(opts.type, 'options.type'); + assert.buffer(opts.hash, 'options.hash'); + assert.string(opts.algorithm, 'options.algorithm'); + + this.algorithm = opts.algorithm.toLowerCase(); + if (algs.hashAlgs[this.algorithm] !== true) + throw (new InvalidAlgorithmError(this.algorithm)); + + this.hash = opts.hash; + this.type = opts.type; + this.hashType = opts.hashType; +} + +Fingerprint.prototype.toString = function (format) { + if (format === undefined) { + if (this.algorithm === 'md5' || this.hashType === 'spki') + format = 'hex'; + else + format = 'base64'; + } + assert.string(format); + + switch (format) { + case 'hex': + if (this.hashType === 'spki') + return (this.hash.toString('hex')); + return (addColons(this.hash.toString('hex'))); + case 'base64': + if (this.hashType === 'spki') + return (this.hash.toString('base64')); + return (sshBase64Format(this.algorithm, + this.hash.toString('base64'))); + default: + throw (new FingerprintFormatError(undefined, format)); + } +}; + +Fingerprint.prototype.matches = function (other) { + assert.object(other, 'key or certificate'); + if (this.type === 'key' && this.hashType !== 'ssh') { + utils.assertCompatible(other, Key, [1, 7], 'key with spki'); + if (PrivateKey.isPrivateKey(other)) { + utils.assertCompatible(other, PrivateKey, [1, 6], + 'privatekey with spki support'); + } + } else if (this.type === 'key') { + utils.assertCompatible(other, Key, [1, 0], 'key'); + } else { + utils.assertCompatible(other, Certificate, [1, 0], + 'certificate'); + } + + var theirHash = other.hash(this.algorithm, this.hashType); + var theirHash2 = crypto.createHash(this.algorithm). + update(theirHash).digest('base64'); + + if (this.hash2 === undefined) + this.hash2 = crypto.createHash(this.algorithm). + update(this.hash).digest('base64'); + + return (this.hash2 === theirHash2); }; +/*JSSTYLED*/ +var base64RE = /^[A-Za-z0-9+\/=]+$/; +/*JSSTYLED*/ +var hexRE = /^[a-fA-F0-9]+$/; -/***/ }), +Fingerprint.parse = function (fp, options) { + assert.string(fp, 'fingerprint'); + + var alg, hash, enAlgs; + if (Array.isArray(options)) { + enAlgs = options; + options = {}; + } + assert.optionalObject(options, 'options'); + if (options === undefined) + options = {}; + if (options.enAlgs !== undefined) + enAlgs = options.enAlgs; + if (options.algorithms !== undefined) + enAlgs = options.algorithms; + assert.optionalArrayOfString(enAlgs, 'algorithms'); + + var hashType = 'ssh'; + if (options.hashType !== undefined) + hashType = options.hashType; + assert.string(hashType, 'options.hashType'); + + var parts = fp.split(':'); + if (parts.length == 2) { + alg = parts[0].toLowerCase(); + if (!base64RE.test(parts[1])) + throw (new FingerprintFormatError(fp)); + try { + hash = Buffer.from(parts[1], 'base64'); + } catch (e) { + throw (new FingerprintFormatError(fp)); + } + } else if (parts.length > 2) { + alg = 'md5'; + if (parts[0].toLowerCase() === 'md5') + parts = parts.slice(1); + parts = parts.map(function (p) { + while (p.length < 2) + p = '0' + p; + if (p.length > 2) + throw (new FingerprintFormatError(fp)); + return (p); + }); + parts = parts.join(''); + if (!hexRE.test(parts) || parts.length % 2 !== 0) + throw (new FingerprintFormatError(fp)); + try { + hash = Buffer.from(parts, 'hex'); + } catch (e) { + throw (new FingerprintFormatError(fp)); + } + } else { + if (hexRE.test(fp)) { + hash = Buffer.from(fp, 'hex'); + } else if (base64RE.test(fp)) { + hash = Buffer.from(fp, 'base64'); + } else { + throw (new FingerprintFormatError(fp)); + } -/***/ 6686: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + switch (hash.length) { + case 32: + alg = 'sha256'; + break; + case 16: + alg = 'md5'; + break; + case 20: + alg = 'sha1'; + break; + case 64: + alg = 'sha512'; + break; + default: + throw (new FingerprintFormatError(fp)); + } -var has = __nccwpck_require__(4898); -var toIObject = __nccwpck_require__(637); -var arrayIndexOf = __nccwpck_require__(5072)(false); -var IE_PROTO = __nccwpck_require__(6613)('IE_PROTO'); + /* Plain hex/base64: guess it's probably SPKI unless told. */ + if (options.hashType === undefined) + hashType = 'spki'; + } -module.exports = function (object, names) { - var O = toIObject(object); - var i = 0; - var result = []; - var key; - for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key); - // Don't enum bug & hidden keys - while (names.length > i) if (has(O, key = names[i++])) { - ~arrayIndexOf(result, key) || result.push(key); - } - return result; + if (alg === undefined) + throw (new FingerprintFormatError(fp)); + + if (algs.hashAlgs[alg] === undefined) + throw (new InvalidAlgorithmError(alg)); + + if (enAlgs !== undefined) { + enAlgs = enAlgs.map(function (a) { return a.toLowerCase(); }); + if (enAlgs.indexOf(alg) === -1) + throw (new InvalidAlgorithmError(alg)); + } + + return (new Fingerprint({ + algorithm: alg, + hash: hash, + type: options.type || 'key', + hashType: hashType + })); }; +function addColons(s) { + /*JSSTYLED*/ + return (s.replace(/(.{2})(?=.)/g, '$1:')); +} -/***/ }), +function base64Strip(s) { + /*JSSTYLED*/ + return (s.replace(/=*$/, '')); +} -/***/ 9971: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +function sshBase64Format(alg, h) { + return (alg.toUpperCase() + ':' + base64Strip(h)); +} -// 19.1.2.14 / 15.2.3.14 Object.keys(O) -var $keys = __nccwpck_require__(6686); -var enumBugKeys = __nccwpck_require__(1769); +Fingerprint.isFingerprint = function (obj, ver) { + return (utils.isCompatible(obj, Fingerprint, ver)); +}; -module.exports = Object.keys || function keys(O) { - return $keys(O, enumBugKeys); +/* + * API versions for Fingerprint: + * [1,0] -- initial ver + * [1,1] -- first tagged ver + * [1,2] -- hashType and spki support + */ +Fingerprint.prototype._sshpkApiVersion = [1, 2]; + +Fingerprint._oldVersionDetect = function (obj) { + assert.func(obj.toString); + assert.func(obj.matches); + return ([1, 0]); }; /***/ }), +/* 401 */ +/***/ (function(module, exports, __webpack_require__) { -/***/ 1118: -/***/ ((__unused_webpack_module, exports) => { +"use strict"; -exports.f = {}.propertyIsEnumerable; +__webpack_require__(493); -/***/ }), +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var latinAccentChars = /\xC0-\xD6\xD8-\xF6\xF8-\xFF\u0100-\u024F\u0253\u0254\u0256\u0257\u0259\u025B\u0263\u0268\u026F\u0272\u0289\u028B\u02BB\u0300-\u036F\u1E00-\u1EFF/; +var _default = latinAccentChars; +exports["default"] = _default; +module.exports = exports.default; -/***/ 4654: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ }), +/* 402 */, +/* 403 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -// most Object methods by ES6 should accept primitives -var $export = __nccwpck_require__(3725); -var core = __nccwpck_require__(7965); -var fails = __nccwpck_require__(6410); -module.exports = function (KEY, exec) { - var fn = (core.Object || {})[KEY] || Object[KEY]; - var exp = {}; - exp[KEY] = exec(fn); - $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp); -}; +module.exports = __webpack_require__(881)('native-function-to-string', Function.toString); /***/ }), +/* 404 */, +/* 405 */ +/***/ (function(module, exports, __webpack_require__) { -/***/ 524: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +"use strict"; -// all object keys, includes non-enumerable and symbols -var gOPN = __nccwpck_require__(7779); -var gOPS = __nccwpck_require__(1785); -var anObject = __nccwpck_require__(8846); -var Reflect = (__nccwpck_require__(9397).Reflect); -module.exports = Reflect && Reflect.ownKeys || function ownKeys(it) { - var keys = gOPN.f(anObject(it)); - var getSymbols = gOPS.f; - return getSymbols ? keys.concat(getSymbols(it)) : keys; -}; +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validMentionPrecedingChars = /(?:^|[^a-zA-Z0-9_!#$%&*@@]|(?:^|[^a-zA-Z0-9_+~.-])(?:rt|RT|rT|Rt):?)/; +var _default = validMentionPrecedingChars; +exports["default"] = _default; +module.exports = exports.default; /***/ }), +/* 406 */ +/***/ (function(module, exports, __webpack_require__) { -/***/ 6370: -/***/ ((module) => { +"use strict"; -module.exports = function (bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value: value - }; -}; +var _interopRequireDefault = __webpack_require__(764); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; + +__webpack_require__(493); -/***/ }), +__webpack_require__(421); -/***/ 5881: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +__webpack_require__(779); -var global = __nccwpck_require__(9397); -var hide = __nccwpck_require__(3735); -var has = __nccwpck_require__(4898); -var SRC = __nccwpck_require__(2959)('src'); -var $toString = __nccwpck_require__(1366); -var TO_STRING = 'toString'; -var TPL = ('' + $toString).split(TO_STRING); +__webpack_require__(450); -(__nccwpck_require__(7965).inspectSource) = function (it) { - return $toString.call(it); -}; +__webpack_require__(332); -(module.exports = function (O, key, val, safe) { - var isFunction = typeof val == 'function'; - if (isFunction) has(val, 'name') || hide(val, 'name', key); - if (O[key] === val) return; - if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); - if (O === global) { - O[key] = val; - } else if (!safe) { - delete O[key]; - hide(O, key, val); - } else if (O[key]) { - O[key] = val; - } else { - hide(O, key, val); - } -// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative -})(Function.prototype, TO_STRING, function toString() { - return typeof this == 'function' && this[SRC] || $toString.call(this); -}); +__webpack_require__(966); +__webpack_require__(124); -/***/ }), +__webpack_require__(157); -/***/ 208: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +__webpack_require__(684); -"use strict"; +__webpack_require__(954); +var _defineProperty2 = _interopRequireDefault(__webpack_require__(783)); -var classof = __nccwpck_require__(6794); -var builtinExec = RegExp.prototype.exec; +var _configs = _interopRequireDefault(__webpack_require__(125)); - // `RegExpExec` abstract operation -// https://tc39.github.io/ecma262/#sec-regexpexec -module.exports = function (R, S) { - var exec = R.exec; - if (typeof exec === 'function') { - var result = exec.call(R, S); - if (typeof result !== 'object') { - throw new TypeError('RegExp exec method returned something other than an Object or null'); - } - return result; - } - if (classof(R) !== 'RegExp') { - throw new TypeError('RegExp#exec called on incompatible receiver'); - } - return builtinExec.call(R, S); -}; +var _getTweetLength = _interopRequireDefault(__webpack_require__(467)); +var _hasInvalidCharacters = _interopRequireDefault(__webpack_require__(860)); -/***/ }), +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } -/***/ 6207: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } -"use strict"; +function _default(text) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _configs["default"].defaults; + if (!text) { + return 'empty'; + } -var regexpFlags = __nccwpck_require__(7497); + var mergedOptions = _objectSpread({}, _configs["default"].defaults, {}, options); -var nativeExec = RegExp.prototype.exec; -// This always refers to the native implementation, because the -// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js, -// which loads this file before patching the method. -var nativeReplace = String.prototype.replace; + var maxLength = mergedOptions.maxWeightedTweetLength; // Determine max length independent of URL length -var patchedExec = nativeExec; + if ((0, _getTweetLength["default"])(text, mergedOptions) > maxLength) { + return 'too_long'; + } -var LAST_INDEX = 'lastIndex'; + if ((0, _hasInvalidCharacters["default"])(text)) { + return 'invalid_characters'; + } -var UPDATES_LAST_INDEX_WRONG = (function () { - var re1 = /a/, - re2 = /b*/g; - nativeExec.call(re1, 'a'); - nativeExec.call(re2, 'a'); - return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0; -})(); + return false; +} -// nonparticipating capturing group, copied from es5-shim's String#split patch. -var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; +module.exports = exports.default; -var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED; +/***/ }), +/* 407 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -if (PATCH) { - patchedExec = function exec(str) { - var re = this; - var lastIndex, reCopy, match, i; +"use strict"; +// Standard YAML's JSON schema. +// http://www.yaml.org/spec/1.2/spec.html#id2803231 +// +// NOTE: JS-YAML does not support schema-specific tag resolution restrictions. +// So, this schema is not such strict as defined in the YAML specification. +// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc. - if (NPCG_INCLUDED) { - reCopy = new RegExp('^' + re.source + '$(?!\\s)', regexpFlags.call(re)); - } - if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX]; - match = nativeExec.call(re, str); - if (UPDATES_LAST_INDEX_WRONG && match) { - re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex; - } - if (NPCG_INCLUDED && match && match.length > 1) { - // Fix browsers whose `exec` methods don't consistently return `undefined` - // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/ - // eslint-disable-next-line no-loop-func - nativeReplace.call(match[0], reCopy, function () { - for (i = 1; i < arguments.length - 2; i++) { - if (arguments[i] === undefined) match[i] = undefined; - } - }); - } - return match; - }; -} -module.exports = patchedExec; +module.exports = __webpack_require__(308).extend({ + implicit: [ + __webpack_require__(72), + __webpack_require__(882), + __webpack_require__(707), + __webpack_require__(227) + ] +}); /***/ }), +/* 408 */, +/* 409 */, +/* 410 */, +/* 411 */ +/***/ (function(module) { -/***/ 310: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -// Works with __proto__ only. Old v8 can't work with null proto objects. -/* eslint-disable no-proto */ -var isObject = __nccwpck_require__(1048); -var anObject = __nccwpck_require__(8846); -var check = function (O, proto) { - anObject(O); - if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!"); -}; -module.exports = { - set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line - function (test, buggy, set) { - try { - set = __nccwpck_require__(9197)(Function.call, (__nccwpck_require__(1611).f)(Object.prototype, '__proto__').set, 2); - set(test, []); - buggy = !(test instanceof Array); - } catch (e) { buggy = true; } - return function setPrototypeOf(O, proto) { - check(O, proto); - if (buggy) O.__proto__ = proto; - else set(O, proto); - return O; - }; - }({}, false) : undefined), - check: check -}; - +module.exports = {"$id":"content.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["size","mimeType"],"properties":{"size":{"type":"integer"},"compression":{"type":"integer"},"mimeType":{"type":"string"},"text":{"type":"string"},"encoding":{"type":"string"},"comment":{"type":"string"}}}; /***/ }), - -/***/ 7205: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/* 412 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var global = __nccwpck_require__(9397); -var dP = __nccwpck_require__(1278); -var DESCRIPTORS = __nccwpck_require__(4998); -var SPECIES = __nccwpck_require__(9370)('species'); -module.exports = function (KEY) { - var C = global[KEY]; - if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, { - configurable: true, - get: function () { return this; } - }); -}; +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var punct = /\!'#%&'\(\)*\+,\\\-\.\/:;<=>\?@\[\]\^_{|}~\$/; +var _default = punct; +exports["default"] = _default; +module.exports = exports.default; +/***/ }), +/* 413 */ +/***/ (function(module) { + +module.exports = require("stream"); /***/ }), +/* 414 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { -/***/ 9845: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +"use strict"; -var def = (__nccwpck_require__(1278).f); -var has = __nccwpck_require__(4898); -var TAG = __nccwpck_require__(9370)('toStringTag'); -module.exports = function (it, tag, stat) { - if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag }); -}; +Object.defineProperty(exports, '__esModule', { value: true }); +var authToken = __webpack_require__(813); -/***/ }), +const createActionAuth = function createActionAuth() { + if (!process.env.GITHUB_ACTION) { + throw new Error("[@octokit/auth-action] `GITHUB_ACTION` environment variable is not set. @octokit/auth-action is meant to be used in GitHub Actions only."); + } -/***/ 6613: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + const definitions = [process.env.GITHUB_TOKEN, process.env.INPUT_GITHUB_TOKEN, process.env.INPUT_TOKEN].filter(Boolean); -var shared = __nccwpck_require__(5131)('keys'); -var uid = __nccwpck_require__(2959); -module.exports = function (key) { - return shared[key] || (shared[key] = uid(key)); + if (definitions.length === 0) { + throw new Error("[@octokit/auth-action] `GITHUB_TOKEN` variable is not set. It must be set on either `env:` or `with:`. See https://github.com/octokit/auth-action.js#createactionauth"); + } + + if (definitions.length > 1) { + throw new Error("[@octokit/auth-action] The token variable is specified more than once. Use either `with.token`, `with.GITHUB_TOKEN`, or `env.GITHUB_TOKEN`. See https://github.com/octokit/auth-action.js#createactionauth"); + } + + const token = definitions.pop(); + return authToken.createTokenAuth(token); }; +exports.createActionAuth = createActionAuth; +//# sourceMappingURL=index.js.map + /***/ }), +/* 415 */, +/* 416 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { -/***/ 5131: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +"use strict"; -var core = __nccwpck_require__(7965); -var global = __nccwpck_require__(9397); -var SHARED = '__core-js_shared__'; -var store = global[SHARED] || (global[SHARED] = {}); -(module.exports = function (key, value) { - return store[key] || (store[key] = value !== undefined ? value : {}); -})('versions', []).push({ - version: core.version, - mode: __nccwpck_require__(2192) ? 'pure' : 'global', - copyright: '© 2020 Denis Pushkarev (zloirock.ru)' -}); +var fs = __webpack_require__(747) +var qs = __webpack_require__(191) +var validate = __webpack_require__(846) +var extend = __webpack_require__(374) +function Har (request) { + this.request = request +} -/***/ }), +Har.prototype.reducer = function (obj, pair) { + // new property ? + if (obj[pair.name] === undefined) { + obj[pair.name] = pair.value + return obj + } -/***/ 1799: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // existing? convert to array + var arr = [ + obj[pair.name], + pair.value + ] -// 7.3.20 SpeciesConstructor(O, defaultConstructor) -var anObject = __nccwpck_require__(8846); -var aFunction = __nccwpck_require__(4818); -var SPECIES = __nccwpck_require__(9370)('species'); -module.exports = function (O, D) { - var C = anObject(O).constructor; - var S; - return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S); -}; + obj[pair.name] = arr + return obj +} -/***/ }), +Har.prototype.prep = function (data) { + // construct utility properties + data.queryObj = {} + data.headersObj = {} + data.postData.jsonObj = false + data.postData.paramsObj = false -/***/ 3700: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // construct query objects + if (data.queryString && data.queryString.length) { + data.queryObj = data.queryString.reduce(this.reducer, {}) + } -"use strict"; + // construct headers objects + if (data.headers && data.headers.length) { + // loweCase header keys + data.headersObj = data.headers.reduceRight(function (headers, header) { + headers[header.name] = header.value + return headers + }, {}) + } -var fails = __nccwpck_require__(6410); + // construct Cookie header + if (data.cookies && data.cookies.length) { + var cookies = data.cookies.map(function (cookie) { + return cookie.name + '=' + cookie.value + }) -module.exports = function (method, arg) { - return !!method && fails(function () { - // eslint-disable-next-line no-useless-call - arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null); - }); -}; + if (cookies.length) { + data.headersObj.cookie = cookies.join('; ') + } + } + // prep body + function some (arr) { + return arr.some(function (type) { + return data.postData.mimeType.indexOf(type) === 0 + }) + } -/***/ }), + if (some([ + 'multipart/mixed', + 'multipart/related', + 'multipart/form-data', + 'multipart/alternative'])) { + // reset values + data.postData.mimeType = 'multipart/form-data' + } else if (some([ + 'application/x-www-form-urlencoded'])) { + if (!data.postData.params) { + data.postData.text = '' + } else { + data.postData.paramsObj = data.postData.params.reduce(this.reducer, {}) -/***/ 919: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // always overwrite + data.postData.text = qs.stringify(data.postData.paramsObj) + } + } else if (some([ + 'text/json', + 'text/x-json', + 'application/json', + 'application/x-json'])) { + data.postData.mimeType = 'application/json' -var toInteger = __nccwpck_require__(8592); -var defined = __nccwpck_require__(4596); -// true -> String#at -// false -> String#codePointAt -module.exports = function (TO_STRING) { - return function (that, pos) { - var s = String(defined(that)); - var i = toInteger(pos); - var l = s.length; - var a, b; - if (i < 0 || i >= l) return TO_STRING ? '' : undefined; - a = s.charCodeAt(i); - return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff - ? TO_STRING ? s.charAt(i) : a - : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; - }; -}; + if (data.postData.text) { + try { + data.postData.jsonObj = JSON.parse(data.postData.text) + } catch (e) { + this.request.debug(e) + + // force back to text/plain + data.postData.mimeType = 'text/plain' + } + } + } + return data +} -/***/ }), +Har.prototype.options = function (options) { + // skip if no har property defined + if (!options.har) { + return options + } -/***/ 3578: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + var har = {} + extend(har, options.har) -var toInteger = __nccwpck_require__(8592); -var max = Math.max; -var min = Math.min; -module.exports = function (index, length) { - index = toInteger(index); - return index < 0 ? max(index + length, 0) : min(index, length); -}; + // only process the first entry + if (har.log && har.log.entries) { + har = har.log.entries[0] + } + // add optional properties to make validation successful + har.url = har.url || options.url || options.uri || options.baseUrl || '/' + har.httpVersion = har.httpVersion || 'HTTP/1.1' + har.queryString = har.queryString || [] + har.headers = har.headers || [] + har.cookies = har.cookies || [] + har.postData = har.postData || {} + har.postData.mimeType = har.postData.mimeType || 'application/octet-stream' -/***/ }), + har.bodySize = 0 + har.headersSize = 0 + har.postData.size = 0 -/***/ 8592: -/***/ ((module) => { + if (!validate.request(har)) { + return options + } -// 7.1.4 ToInteger -var ceil = Math.ceil; -var floor = Math.floor; -module.exports = function (it) { - return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); -}; + // clean up and get some utility properties + var req = this.prep(har) + // construct new options + if (req.url) { + options.url = req.url + } -/***/ }), + if (req.method) { + options.method = req.method + } -/***/ 637: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (Object.keys(req.queryObj).length) { + options.qs = req.queryObj + } -// to indexed object, toObject with fallback for non-array-like ES3 strings -var IObject = __nccwpck_require__(2029); -var defined = __nccwpck_require__(4596); -module.exports = function (it) { - return IObject(defined(it)); -}; + if (Object.keys(req.headersObj).length) { + options.headers = req.headersObj + } + function test (type) { + return req.postData.mimeType.indexOf(type) === 0 + } + if (test('application/x-www-form-urlencoded')) { + options.form = req.postData.paramsObj + } else if (test('application/json')) { + if (req.postData.jsonObj) { + options.body = req.postData.jsonObj + options.json = true + } + } else if (test('multipart/form-data')) { + options.formData = {} -/***/ }), + req.postData.params.forEach(function (param) { + var attachment = {} -/***/ 3738: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (!param.fileName && !param.fileName && !param.contentType) { + options.formData[param.name] = param.value + return + } -// 7.1.15 ToLength -var toInteger = __nccwpck_require__(8592); -var min = Math.min; -module.exports = function (it) { - return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 -}; + // attempt to read from disk! + if (param.fileName && !param.value) { + attachment.value = fs.createReadStream(param.fileName) + } else if (param.value) { + attachment.value = param.value + } + if (param.fileName) { + attachment.options = { + filename: param.fileName, + contentType: param.contentType ? param.contentType : null + } + } -/***/ }), + options.formData[param.name] = attachment + }) + } else { + if (req.postData.text) { + options.body = req.postData.text + } + } -/***/ 2702: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + return options +} -// 7.1.13 ToObject(argument) -var defined = __nccwpck_require__(4596); -module.exports = function (it) { - return Object(defined(it)); -}; +exports.Har = Har /***/ }), +/* 417 */ +/***/ (function(module) { -/***/ 9075: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +module.exports = require("crypto"); -// 7.1.1 ToPrimitive(input [, PreferredType]) -var isObject = __nccwpck_require__(1048); -// instead of the ES6 spec version, we didn't implement @@toPrimitive case -// and the second argument - flag - preferred type is a string -module.exports = function (it, S) { - if (!isObject(it)) return it; - var fn, val; - if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; - if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; - if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; - throw TypeError("Can't convert object to primitive value"); -}; +/***/ }), +/* 418 */ +/***/ (function(module, exports, __webpack_require__) { +"use strict"; -/***/ }), -/***/ 2959: -/***/ ((module) => { +__webpack_require__(493); -var id = 0; -var px = Math.random(); -module.exports = function (key) { - return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); -}; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var BOOLEAN_ATTRIBUTES = { + disabled: true, + readonly: true, + multiple: true, + checked: true +}; // Options which should not be passed as HTML attributes +var OPTIONS_NOT_ATTRIBUTES = { + urlClass: true, + listClass: true, + usernameClass: true, + hashtagClass: true, + cashtagClass: true, + usernameUrlBase: true, + listUrlBase: true, + hashtagUrlBase: true, + cashtagUrlBase: true, + usernameUrlBlock: true, + listUrlBlock: true, + hashtagUrlBlock: true, + linkUrlBlock: true, + usernameIncludeSymbol: true, + suppressLists: true, + suppressNoFollow: true, + targetBlank: true, + suppressDataScreenName: true, + urlEntities: true, + symbolTag: true, + textWithSymbolTag: true, + urlTarget: true, + invisibleTagAttrs: true, + linkAttributeBlock: true, + linkTextBlock: true, + htmlEscapeNonEntities: true +}; -/***/ }), +function _default(options) { + var htmlAttrs = {}; -/***/ 3382: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + for (var k in options) { + var v = options[k]; -var global = __nccwpck_require__(9397); -var core = __nccwpck_require__(7965); -var LIBRARY = __nccwpck_require__(2192); -var wksExt = __nccwpck_require__(3852); -var defineProperty = (__nccwpck_require__(1278).f); -module.exports = function (name) { - var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {}); - if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) }); -}; + if (OPTIONS_NOT_ATTRIBUTES[k]) { + continue; + } + if (BOOLEAN_ATTRIBUTES[k]) { + v = v ? k : null; + } -/***/ }), + if (v == null) { + continue; + } -/***/ 3852: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + htmlAttrs[k] = v; + } -exports.f = __nccwpck_require__(9370); + return htmlAttrs; +} +module.exports = exports.default; /***/ }), +/* 419 */, +/* 420 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 9370: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +// fallback for non-array-like ES3 and non-enumerable old V8 strings +var cof = __webpack_require__(189); +// eslint-disable-next-line no-prototype-builtins +module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) { + return cof(it) == 'String' ? it.split('') : Object(it); +}; -var store = __nccwpck_require__(5131)('wks'); -var uid = __nccwpck_require__(2959); -var Symbol = (__nccwpck_require__(9397).Symbol); -var USE_SYMBOL = typeof Symbol == 'function'; -var $exports = module.exports = function (name) { - return store[name] || (store[name] = - USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); -}; +/***/ }), +/* 421 */ +/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { -$exports.store = store; +var $export = __webpack_require__(195); +// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties) +$export($export.S + $export.F * !__webpack_require__(843), 'Object', { defineProperties: __webpack_require__(20) }); /***/ }), +/* 422 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 1254: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +"use strict"; -var classof = __nccwpck_require__(6794); -var ITERATOR = __nccwpck_require__(9370)('iterator'); -var Iterators = __nccwpck_require__(5424); -module.exports = (__nccwpck_require__(7965).getIteratorMethod) = function (it) { - if (it != undefined) return it[ITERATOR] - || it['@@iterator'] - || Iterators[classof(it)]; +var global = __webpack_require__(300); +var dP = __webpack_require__(973); +var DESCRIPTORS = __webpack_require__(843); +var SPECIES = __webpack_require__(621)('species'); + +module.exports = function (KEY) { + var C = global[KEY]; + if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, { + configurable: true, + get: function () { return this; } + }); }; /***/ }), +/* 423 */ +/***/ (function(module) { -/***/ 4679: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; +module.exports = function (done, value) { + return { value: value, done: !!done }; +}; -var $export = __nccwpck_require__(3725); -var $filter = __nccwpck_require__(4740)(2); -$export($export.P + $export.F * !__nccwpck_require__(3700)([].filter, true), 'Array', { - // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg]) - filter: function filter(callbackfn /* , thisArg */) { - return $filter(this, callbackfn, arguments[1]); - } -}); +/***/ }), +/* 424 */ +/***/ (function(module, __unusedexports, __webpack_require__) { +var iterate = __webpack_require__(97) + , initState = __webpack_require__(147) + , terminator = __webpack_require__(106) + ; -/***/ }), +// Public API +module.exports = parallel; -/***/ 7461: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { +/** + * Runs iterator over provided array elements in parallel + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {function} callback - invoked when all elements processed + * @returns {function} - jobs terminator + */ +function parallel(list, iterator, callback) +{ + var state = initState(list); -"use strict"; + while (state.index < (state['keyedList'] || list).length) + { + iterate(list, iterator, state, function(error, result) + { + if (error) + { + callback(error, result); + return; + } -var $export = __nccwpck_require__(3725); -var $forEach = __nccwpck_require__(4740)(0); -var STRICT = __nccwpck_require__(3700)([].forEach, true); + // looks like it's the last one + if (Object.keys(state.jobs).length === 0) + { + callback(null, state.results); + return; + } + }); -$export($export.P + $export.F * !STRICT, 'Array', { - // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg]) - forEach: function forEach(callbackfn /* , thisArg */) { - return $forEach(this, callbackfn, arguments[1]); + state.index++; } -}); + + return terminator.bind(state, callback); +} /***/ }), - -/***/ 9358: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { +/* 425 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { "use strict"; -var ctx = __nccwpck_require__(9197); -var $export = __nccwpck_require__(3725); -var toObject = __nccwpck_require__(2702); -var call = __nccwpck_require__(6098); -var isArrayIter = __nccwpck_require__(5519); -var toLength = __nccwpck_require__(3738); -var createProperty = __nccwpck_require__(755); -var getIterFn = __nccwpck_require__(1254); - -$export($export.S + $export.F * !__nccwpck_require__(2992)(function (iter) { Array.from(iter); }), 'Array', { - // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined) - from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) { - var O = toObject(arrayLike); - var C = typeof this == 'function' ? this : Array; - var aLen = arguments.length; - var mapfn = aLen > 1 ? arguments[1] : undefined; - var mapping = mapfn !== undefined; - var index = 0; - var iterFn = getIterFn(O); - var length, result, step, iterator; - if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2); - // if object isn't iterable or it's array with default iterator - use simple case - if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) { - for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) { - createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value); - } - } else { - length = toLength(O.length); - for (result = new C(length); length > index; index++) { - createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]); - } +/* eslint-disable @typescript-eslint/no-explicit-any */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0; +const http = __importStar(__webpack_require__(605)); +const https = __importStar(__webpack_require__(211)); +const pm = __importStar(__webpack_require__(177)); +const tunnel = __importStar(__webpack_require__(988)); +var HttpCodes; +(function (HttpCodes) { + HttpCodes[HttpCodes["OK"] = 200] = "OK"; + HttpCodes[HttpCodes["MultipleChoices"] = 300] = "MultipleChoices"; + HttpCodes[HttpCodes["MovedPermanently"] = 301] = "MovedPermanently"; + HttpCodes[HttpCodes["ResourceMoved"] = 302] = "ResourceMoved"; + HttpCodes[HttpCodes["SeeOther"] = 303] = "SeeOther"; + HttpCodes[HttpCodes["NotModified"] = 304] = "NotModified"; + HttpCodes[HttpCodes["UseProxy"] = 305] = "UseProxy"; + HttpCodes[HttpCodes["SwitchProxy"] = 306] = "SwitchProxy"; + HttpCodes[HttpCodes["TemporaryRedirect"] = 307] = "TemporaryRedirect"; + HttpCodes[HttpCodes["PermanentRedirect"] = 308] = "PermanentRedirect"; + HttpCodes[HttpCodes["BadRequest"] = 400] = "BadRequest"; + HttpCodes[HttpCodes["Unauthorized"] = 401] = "Unauthorized"; + HttpCodes[HttpCodes["PaymentRequired"] = 402] = "PaymentRequired"; + HttpCodes[HttpCodes["Forbidden"] = 403] = "Forbidden"; + HttpCodes[HttpCodes["NotFound"] = 404] = "NotFound"; + HttpCodes[HttpCodes["MethodNotAllowed"] = 405] = "MethodNotAllowed"; + HttpCodes[HttpCodes["NotAcceptable"] = 406] = "NotAcceptable"; + HttpCodes[HttpCodes["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired"; + HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout"; + HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict"; + HttpCodes[HttpCodes["Gone"] = 410] = "Gone"; + HttpCodes[HttpCodes["TooManyRequests"] = 429] = "TooManyRequests"; + HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError"; + HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented"; + HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway"; + HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable"; + HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout"; +})(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {})); +var Headers; +(function (Headers) { + Headers["Accept"] = "accept"; + Headers["ContentType"] = "content-type"; +})(Headers = exports.Headers || (exports.Headers = {})); +var MediaTypes; +(function (MediaTypes) { + MediaTypes["ApplicationJson"] = "application/json"; +})(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {})); +/** + * Returns the proxy URL, depending upon the supplied url and proxy environment variables. + * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + */ +function getProxyUrl(serverUrl) { + const proxyUrl = pm.getProxyUrl(new URL(serverUrl)); + return proxyUrl ? proxyUrl.href : ''; +} +exports.getProxyUrl = getProxyUrl; +const HttpRedirectCodes = [ + HttpCodes.MovedPermanently, + HttpCodes.ResourceMoved, + HttpCodes.SeeOther, + HttpCodes.TemporaryRedirect, + HttpCodes.PermanentRedirect +]; +const HttpResponseRetryCodes = [ + HttpCodes.BadGateway, + HttpCodes.ServiceUnavailable, + HttpCodes.GatewayTimeout +]; +const RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD']; +const ExponentialBackoffCeiling = 10; +const ExponentialBackoffTimeSlice = 5; +class HttpClientError extends Error { + constructor(message, statusCode) { + super(message); + this.name = 'HttpClientError'; + this.statusCode = statusCode; + Object.setPrototypeOf(this, HttpClientError.prototype); + } +} +exports.HttpClientError = HttpClientError; +class HttpClientResponse { + constructor(message) { + this.message = message; + } + readBody() { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () { + let output = Buffer.alloc(0); + this.message.on('data', (chunk) => { + output = Buffer.concat([output, chunk]); + }); + this.message.on('end', () => { + resolve(output.toString()); + }); + })); + }); + } +} +exports.HttpClientResponse = HttpClientResponse; +function isHttps(requestUrl) { + const parsedUrl = new URL(requestUrl); + return parsedUrl.protocol === 'https:'; +} +exports.isHttps = isHttps; +class HttpClient { + constructor(userAgent, handlers, requestOptions) { + this._ignoreSslError = false; + this._allowRedirects = true; + this._allowRedirectDowngrade = false; + this._maxRedirects = 50; + this._allowRetries = false; + this._maxRetries = 1; + this._keepAlive = false; + this._disposed = false; + this.userAgent = userAgent; + this.handlers = handlers || []; + this.requestOptions = requestOptions; + if (requestOptions) { + if (requestOptions.ignoreSslError != null) { + this._ignoreSslError = requestOptions.ignoreSslError; + } + this._socketTimeout = requestOptions.socketTimeout; + if (requestOptions.allowRedirects != null) { + this._allowRedirects = requestOptions.allowRedirects; + } + if (requestOptions.allowRedirectDowngrade != null) { + this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade; + } + if (requestOptions.maxRedirects != null) { + this._maxRedirects = Math.max(requestOptions.maxRedirects, 0); + } + if (requestOptions.keepAlive != null) { + this._keepAlive = requestOptions.keepAlive; + } + if (requestOptions.allowRetries != null) { + this._allowRetries = requestOptions.allowRetries; + } + if (requestOptions.maxRetries != null) { + this._maxRetries = requestOptions.maxRetries; + } + } + } + options(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('OPTIONS', requestUrl, null, additionalHeaders || {}); + }); + } + get(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('GET', requestUrl, null, additionalHeaders || {}); + }); + } + del(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('DELETE', requestUrl, null, additionalHeaders || {}); + }); + } + post(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('POST', requestUrl, data, additionalHeaders || {}); + }); + } + patch(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('PATCH', requestUrl, data, additionalHeaders || {}); + }); + } + put(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('PUT', requestUrl, data, additionalHeaders || {}); + }); + } + head(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('HEAD', requestUrl, null, additionalHeaders || {}); + }); + } + sendStream(verb, requestUrl, stream, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request(verb, requestUrl, stream, additionalHeaders); + }); + } + /** + * Gets a typed object from an endpoint + * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise + */ + getJson(requestUrl, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + const res = yield this.get(requestUrl, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + postJson(requestUrl, obj, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + const res = yield this.post(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + putJson(requestUrl, obj, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + const res = yield this.put(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + patchJson(requestUrl, obj, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + const res = yield this.patch(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + /** + * Makes a raw http request. + * All other methods such as get, post, patch, and request ultimately call this. + * Prefer get, del, post and patch + */ + request(verb, requestUrl, data, headers) { + return __awaiter(this, void 0, void 0, function* () { + if (this._disposed) { + throw new Error('Client has already been disposed.'); + } + const parsedUrl = new URL(requestUrl); + let info = this._prepareRequest(verb, parsedUrl, headers); + // Only perform retries on reads since writes may not be idempotent. + const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb) + ? this._maxRetries + 1 + : 1; + let numTries = 0; + let response; + do { + response = yield this.requestRaw(info, data); + // Check if it's an authentication challenge + if (response && + response.message && + response.message.statusCode === HttpCodes.Unauthorized) { + let authenticationHandler; + for (const handler of this.handlers) { + if (handler.canHandleAuthentication(response)) { + authenticationHandler = handler; + break; + } + } + if (authenticationHandler) { + return authenticationHandler.handleAuthentication(this, info, data); + } + else { + // We have received an unauthorized response but have no handlers to handle it. + // Let the response return to the caller. + return response; + } + } + let redirectsRemaining = this._maxRedirects; + while (response.message.statusCode && + HttpRedirectCodes.includes(response.message.statusCode) && + this._allowRedirects && + redirectsRemaining > 0) { + const redirectUrl = response.message.headers['location']; + if (!redirectUrl) { + // if there's no location to redirect to, we won't + break; + } + const parsedRedirectUrl = new URL(redirectUrl); + if (parsedUrl.protocol === 'https:' && + parsedUrl.protocol !== parsedRedirectUrl.protocol && + !this._allowRedirectDowngrade) { + throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.'); + } + // we need to finish reading the response before reassigning response + // which will leak the open socket. + yield response.readBody(); + // strip authorization header if redirected to a different hostname + if (parsedRedirectUrl.hostname !== parsedUrl.hostname) { + for (const header in headers) { + // header names are case insensitive + if (header.toLowerCase() === 'authorization') { + delete headers[header]; + } + } + } + // let's make the request with the new redirectUrl + info = this._prepareRequest(verb, parsedRedirectUrl, headers); + response = yield this.requestRaw(info, data); + redirectsRemaining--; + } + if (!response.message.statusCode || + !HttpResponseRetryCodes.includes(response.message.statusCode)) { + // If not a retry code, return immediately instead of retrying + return response; + } + numTries += 1; + if (numTries < maxTries) { + yield response.readBody(); + yield this._performExponentialBackoff(numTries); + } + } while (numTries < maxTries); + return response; + }); + } + /** + * Needs to be called if keepAlive is set to true in request options. + */ + dispose() { + if (this._agent) { + this._agent.destroy(); + } + this._disposed = true; + } + /** + * Raw request. + * @param info + * @param data + */ + requestRaw(info, data) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => { + function callbackForResult(err, res) { + if (err) { + reject(err); + } + else if (!res) { + // If `err` is not passed, then `res` must be passed. + reject(new Error('Unknown error')); + } + else { + resolve(res); + } + } + this.requestRawWithCallback(info, data, callbackForResult); + }); + }); + } + /** + * Raw request with callback. + * @param info + * @param data + * @param onResult + */ + requestRawWithCallback(info, data, onResult) { + if (typeof data === 'string') { + if (!info.options.headers) { + info.options.headers = {}; + } + info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8'); + } + let callbackCalled = false; + function handleResult(err, res) { + if (!callbackCalled) { + callbackCalled = true; + onResult(err, res); + } + } + const req = info.httpModule.request(info.options, (msg) => { + const res = new HttpClientResponse(msg); + handleResult(undefined, res); + }); + let socket; + req.on('socket', sock => { + socket = sock; + }); + // If we ever get disconnected, we want the socket to timeout eventually + req.setTimeout(this._socketTimeout || 3 * 60000, () => { + if (socket) { + socket.end(); + } + handleResult(new Error(`Request timeout: ${info.options.path}`)); + }); + req.on('error', function (err) { + // err has statusCode property + // res should have headers + handleResult(err); + }); + if (data && typeof data === 'string') { + req.write(data, 'utf8'); + } + if (data && typeof data !== 'string') { + data.on('close', function () { + req.end(); + }); + data.pipe(req); + } + else { + req.end(); + } + } + /** + * Gets an http agent. This function is useful when you need an http agent that handles + * routing through a proxy server - depending upon the url and proxy environment variables. + * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + */ + getAgent(serverUrl) { + const parsedUrl = new URL(serverUrl); + return this._getAgent(parsedUrl); + } + _prepareRequest(method, requestUrl, headers) { + const info = {}; + info.parsedUrl = requestUrl; + const usingSsl = info.parsedUrl.protocol === 'https:'; + info.httpModule = usingSsl ? https : http; + const defaultPort = usingSsl ? 443 : 80; + info.options = {}; + info.options.host = info.parsedUrl.hostname; + info.options.port = info.parsedUrl.port + ? parseInt(info.parsedUrl.port) + : defaultPort; + info.options.path = + (info.parsedUrl.pathname || '') + (info.parsedUrl.search || ''); + info.options.method = method; + info.options.headers = this._mergeHeaders(headers); + if (this.userAgent != null) { + info.options.headers['user-agent'] = this.userAgent; + } + info.options.agent = this._getAgent(info.parsedUrl); + // gives handlers an opportunity to participate + if (this.handlers) { + for (const handler of this.handlers) { + handler.prepareRequest(info.options); + } + } + return info; + } + _mergeHeaders(headers) { + if (this.requestOptions && this.requestOptions.headers) { + return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {})); + } + return lowercaseKeys(headers || {}); + } + _getExistingOrDefaultHeader(additionalHeaders, header, _default) { + let clientHeader; + if (this.requestOptions && this.requestOptions.headers) { + clientHeader = lowercaseKeys(this.requestOptions.headers)[header]; + } + return additionalHeaders[header] || clientHeader || _default; + } + _getAgent(parsedUrl) { + let agent; + const proxyUrl = pm.getProxyUrl(parsedUrl); + const useProxy = proxyUrl && proxyUrl.hostname; + if (this._keepAlive && useProxy) { + agent = this._proxyAgent; + } + if (this._keepAlive && !useProxy) { + agent = this._agent; + } + // if agent is already assigned use that agent. + if (agent) { + return agent; + } + const usingSsl = parsedUrl.protocol === 'https:'; + let maxSockets = 100; + if (this.requestOptions) { + maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets; + } + // This is `useProxy` again, but we need to check `proxyURl` directly for TypeScripts's flow analysis. + if (proxyUrl && proxyUrl.hostname) { + const agentOptions = { + maxSockets, + keepAlive: this._keepAlive, + proxy: Object.assign(Object.assign({}, ((proxyUrl.username || proxyUrl.password) && { + proxyAuth: `${proxyUrl.username}:${proxyUrl.password}` + })), { host: proxyUrl.hostname, port: proxyUrl.port }) + }; + let tunnelAgent; + const overHttps = proxyUrl.protocol === 'https:'; + if (usingSsl) { + tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp; + } + else { + tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp; + } + agent = tunnelAgent(agentOptions); + this._proxyAgent = agent; + } + // if reusing agent across request and tunneling agent isn't assigned create a new agent + if (this._keepAlive && !agent) { + const options = { keepAlive: this._keepAlive, maxSockets }; + agent = usingSsl ? new https.Agent(options) : new http.Agent(options); + this._agent = agent; + } + // if not using private agent and tunnel agent isn't setup then use global agent + if (!agent) { + agent = usingSsl ? https.globalAgent : http.globalAgent; + } + if (usingSsl && this._ignoreSslError) { + // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process + // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options + // we have to cast it to any and change it directly + agent.options = Object.assign(agent.options || {}, { + rejectUnauthorized: false + }); + } + return agent; + } + _performExponentialBackoff(retryNumber) { + return __awaiter(this, void 0, void 0, function* () { + retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); + const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber); + return new Promise(resolve => setTimeout(() => resolve(), ms)); + }); + } + _processResponse(res, options) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { + const statusCode = res.message.statusCode || 0; + const response = { + statusCode, + result: null, + headers: {} + }; + // not found leads to null obj returned + if (statusCode === HttpCodes.NotFound) { + resolve(response); + } + // get the result from the body + function dateTimeDeserializer(key, value) { + if (typeof value === 'string') { + const a = new Date(value); + if (!isNaN(a.valueOf())) { + return a; + } + } + return value; + } + let obj; + let contents; + try { + contents = yield res.readBody(); + if (contents && contents.length > 0) { + if (options && options.deserializeDates) { + obj = JSON.parse(contents, dateTimeDeserializer); + } + else { + obj = JSON.parse(contents); + } + response.result = obj; + } + response.headers = res.message.headers; + } + catch (err) { + // Invalid resource (contents not json); leaving result obj null + } + // note that 3xx redirects are handled by the http layer. + if (statusCode > 299) { + let msg; + // if exception/error in body, attempt to get better error + if (obj && obj.message) { + msg = obj.message; + } + else if (contents && contents.length > 0) { + // it may be the case that the exception is in the body message as string + msg = contents; + } + else { + msg = `Failed request: (${statusCode})`; + } + const err = new HttpClientError(msg, statusCode); + err.result = response.result; + reject(err); + } + else { + resolve(response); + } + })); + }); } - result.length = index; - return result; - } -}); - - -/***/ }), - -/***/ 8074: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - -var $export = __nccwpck_require__(3725); -var $indexOf = __nccwpck_require__(5072)(false); -var $native = [].indexOf; -var NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0; - -$export($export.P + $export.F * (NEGATIVE_ZERO || !__nccwpck_require__(3700)($native)), 'Array', { - // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex]) - indexOf: function indexOf(searchElement /* , fromIndex = 0 */) { - return NEGATIVE_ZERO - // convert -0 to +0 - ? $native.apply(this, arguments) || 0 - : $indexOf(this, searchElement, arguments[1]); - } -}); - - -/***/ }), - -/***/ 4088: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { - -// 22.1.2.2 / 15.4.3.2 Array.isArray(arg) -var $export = __nccwpck_require__(3725); - -$export($export.S, 'Array', { isArray: __nccwpck_require__(4685) }); - - -/***/ }), - -/***/ 3938: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - -var addToUnscopables = __nccwpck_require__(285); -var step = __nccwpck_require__(1387); -var Iterators = __nccwpck_require__(5424); -var toIObject = __nccwpck_require__(637); - -// 22.1.3.4 Array.prototype.entries() -// 22.1.3.13 Array.prototype.keys() -// 22.1.3.29 Array.prototype.values() -// 22.1.3.30 Array.prototype[@@iterator]() -module.exports = __nccwpck_require__(1855)(Array, 'Array', function (iterated, kind) { - this._t = toIObject(iterated); // target - this._i = 0; // next index - this._k = kind; // kind -// 22.1.5.2.1 %ArrayIteratorPrototype%.next() -}, function () { - var O = this._t; - var kind = this._k; - var index = this._i++; - if (!O || index >= O.length) { - this._t = undefined; - return step(1); - } - if (kind == 'keys') return step(0, index); - if (kind == 'values') return step(0, O[index]); - return step(0, [index, O[index]]); -}, 'values'); - -// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) -Iterators.Arguments = Iterators.Array; - -addToUnscopables('keys'); -addToUnscopables('values'); -addToUnscopables('entries'); - - -/***/ }), - -/***/ 3771: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - -var $export = __nccwpck_require__(3725); -var $reduce = __nccwpck_require__(6027); - -$export($export.P + $export.F * !__nccwpck_require__(3700)([].reduce, true), 'Array', { - // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue]) - reduce: function reduce(callbackfn /* , initialValue */) { - return $reduce(this, callbackfn, arguments.length, arguments[1], false); - } -}); - - -/***/ }), - -/***/ 7920: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - -var $export = __nccwpck_require__(3725); -var aFunction = __nccwpck_require__(4818); -var toObject = __nccwpck_require__(2702); -var fails = __nccwpck_require__(6410); -var $sort = [].sort; -var test = [1, 2, 3]; - -$export($export.P + $export.F * (fails(function () { - // IE8- - test.sort(undefined); -}) || !fails(function () { - // V8 bug - test.sort(null); - // Old WebKit -}) || !__nccwpck_require__(3700)($sort)), 'Array', { - // 22.1.3.25 Array.prototype.sort(comparefn) - sort: function sort(comparefn) { - return comparefn === undefined - ? $sort.call(toObject(this)) - : $sort.call(toObject(this), aFunction(comparefn)); - } -}); - - -/***/ }), - -/***/ 1703: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { - -var DateProto = Date.prototype; -var INVALID_DATE = 'Invalid Date'; -var TO_STRING = 'toString'; -var $toString = DateProto[TO_STRING]; -var getTime = DateProto.getTime; -if (new Date(NaN) + '' != INVALID_DATE) { - __nccwpck_require__(5881)(DateProto, TO_STRING, function toString() { - var value = getTime.call(this); - // eslint-disable-next-line no-self-compare - return value === value ? $toString.call(this) : INVALID_DATE; - }); } - - -/***/ }), - -/***/ 5085: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { - -var $export = __nccwpck_require__(3725); -// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties) -$export($export.S + $export.F * !__nccwpck_require__(4998), 'Object', { defineProperties: __nccwpck_require__(5534) }); - - -/***/ }), - -/***/ 6880: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { - -var $export = __nccwpck_require__(3725); -// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes) -$export($export.S + $export.F * !__nccwpck_require__(4998), 'Object', { defineProperty: (__nccwpck_require__(1278).f) }); - +exports.HttpClient = HttpClient; +const lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {}); +//# sourceMappingURL=index.js.map /***/ }), +/* 426 */, +/* 427 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 7103: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { - -// 19.1.2.14 Object.keys(O) -var toObject = __nccwpck_require__(2702); -var $keys = __nccwpck_require__(9971); - -__nccwpck_require__(4654)('keys', function () { - return function keys(it) { - return $keys(toObject(it)); - }; +var META = __webpack_require__(750)('meta'); +var isObject = __webpack_require__(956); +var has = __webpack_require__(975); +var setDesc = __webpack_require__(973).f; +var id = 0; +var isExtensible = Object.isExtensible || function () { + return true; +}; +var FREEZE = !__webpack_require__(971)(function () { + return isExtensible(Object.preventExtensions({})); }); +var setMeta = function (it) { + setDesc(it, META, { value: { + i: 'O' + ++id, // object ID + w: {} // weak collections IDs + } }); +}; +var fastKey = function (it, create) { + // return primitive with prefix + if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; + if (!has(it, META)) { + // can't set metadata to uncaught frozen object + if (!isExtensible(it)) return 'F'; + // not necessary to add metadata + if (!create) return 'E'; + // add missing metadata + setMeta(it); + // return object ID + } return it[META].i; +}; +var getWeak = function (it, create) { + if (!has(it, META)) { + // can't set metadata to uncaught frozen object + if (!isExtensible(it)) return true; + // not necessary to add metadata + if (!create) return false; + // add missing metadata + setMeta(it); + // return hash weak collections IDs + } return it[META].w; +}; +// add metadata on freeze-family methods calling +var onFreeze = function (it) { + if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it); + return it; +}; +var meta = module.exports = { + KEY: META, + NEED: false, + fastKey: fastKey, + getWeak: getWeak, + onFreeze: onFreeze +}; /***/ }), - -/***/ 571: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - -// 19.1.3.6 Object.prototype.toString() -var classof = __nccwpck_require__(6794); -var test = {}; -test[__nccwpck_require__(9370)('toStringTag')] = 'z'; -if (test + '' != '[object z]') { - __nccwpck_require__(5881)(Object.prototype, 'toString', function toString() { - return '[object ' + classof(this) + ']'; - }, true); -} - - -/***/ }), - -/***/ 7662: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { - -var global = __nccwpck_require__(9397); -var inheritIfRequired = __nccwpck_require__(5116); -var dP = (__nccwpck_require__(1278).f); -var gOPN = (__nccwpck_require__(7779).f); -var isRegExp = __nccwpck_require__(302); -var $flags = __nccwpck_require__(7497); -var $RegExp = global.RegExp; -var Base = $RegExp; -var proto = $RegExp.prototype; -var re1 = /a/g; -var re2 = /a/g; -// "new" creates a new object, old webkit buggy here -var CORRECT_NEW = new $RegExp(re1) !== re1; - -if (__nccwpck_require__(4998) && (!CORRECT_NEW || __nccwpck_require__(6410)(function () { - re2[__nccwpck_require__(9370)('match')] = false; - // RegExp constructor can alter flags and IsRegExp works correct with @@match - return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i'; -}))) { - $RegExp = function RegExp(p, f) { - var tiRE = this instanceof $RegExp; - var piRE = isRegExp(p); - var fiU = f === undefined; - return !tiRE && piRE && p.constructor === $RegExp && fiU ? p - : inheritIfRequired(CORRECT_NEW - ? new Base(piRE && !fiU ? p.source : p, f) - : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f) - , tiRE ? this : proto, $RegExp); - }; - var proxy = function (key) { - key in $RegExp || dP($RegExp, key, { - configurable: true, - get: function () { return Base[key]; }, - set: function (it) { Base[key] = it; } - }); - }; - for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]); - proto.constructor = $RegExp; - $RegExp.prototype = proto; - __nccwpck_require__(5881)(global, 'RegExp', $RegExp); -} - -__nccwpck_require__(7205)('RegExp'); - - -/***/ }), - -/***/ 7917: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { +/* 428 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { "use strict"; -var regexpExec = __nccwpck_require__(6207); -__nccwpck_require__(3725)({ - target: 'RegExp', - proto: true, - forced: regexpExec !== /./.exec -}, { - exec: regexpExec -}); - - -/***/ }), - -/***/ 6045: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { - -// 21.2.5.3 get RegExp.prototype.flags() -if (__nccwpck_require__(4998) && /./g.flags != 'g') (__nccwpck_require__(1278).f)(RegExp.prototype, 'flags', { - configurable: true, - get: __nccwpck_require__(7497) -}); - +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const debug_1 = __importDefault(__webpack_require__(784)); +const debug = debug_1.default('https-proxy-agent:parse-proxy-response'); +function parseProxyResponse(socket) { + return new Promise((resolve, reject) => { + // we need to buffer any HTTP traffic that happens with the proxy before we get + // the CONNECT response, so that if the response is anything other than an "200" + // response code, then we can re-play the "data" events on the socket once the + // HTTP parser is hooked up... + let buffersLength = 0; + const buffers = []; + function read() { + const b = socket.read(); + if (b) + ondata(b); + else + socket.once('readable', read); + } + function cleanup() { + socket.removeListener('end', onend); + socket.removeListener('error', onerror); + socket.removeListener('close', onclose); + socket.removeListener('readable', read); + } + function onclose(err) { + debug('onclose had error %o', err); + } + function onend() { + debug('onend'); + } + function onerror(err) { + cleanup(); + debug('onerror %o', err); + reject(err); + } + function ondata(b) { + buffers.push(b); + buffersLength += b.length; + const buffered = Buffer.concat(buffers, buffersLength); + const endOfHeaders = buffered.indexOf('\r\n\r\n'); + if (endOfHeaders === -1) { + // keep buffering + debug('have not received end of HTTP headers yet...'); + read(); + return; + } + const firstLine = buffered.toString('ascii', 0, buffered.indexOf('\r\n')); + const statusCode = +firstLine.split(' ')[1]; + debug('got proxy server response: %o', firstLine); + resolve({ + statusCode, + buffered + }); + } + socket.on('error', onerror); + socket.on('close', onclose); + socket.on('end', onend); + read(); + }); +} +exports.default = parseProxyResponse; +//# sourceMappingURL=parse-proxy-response.js.map /***/ }), - -/***/ 4931: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { +/* 429 */, +/* 430 */, +/* 431 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { "use strict"; - -var anObject = __nccwpck_require__(8846); -var toLength = __nccwpck_require__(3738); -var advanceStringIndex = __nccwpck_require__(9780); -var regExpExec = __nccwpck_require__(208); - -// @@match logic -__nccwpck_require__(7464)('match', 1, function (defined, MATCH, $match, maybeCallNative) { - return [ - // `String.prototype.match` method - // https://tc39.github.io/ecma262/#sec-string.prototype.match - function match(regexp) { - var O = defined(this); - var fn = regexp == undefined ? undefined : regexp[MATCH]; - return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O)); - }, - // `RegExp.prototype[@@match]` method - // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match - function (regexp) { - var res = maybeCallNative($match, regexp, this); - if (res.done) return res.value; - var rx = anObject(regexp); - var S = String(this); - if (!rx.global) return regExpExec(rx, S); - var fullUnicode = rx.unicode; - rx.lastIndex = 0; - var A = []; - var n = 0; - var result; - while ((result = regExpExec(rx, S)) !== null) { - var matchStr = String(result[0]); - A[n] = matchStr; - if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); - n++; - } - return n === 0 ? null : A; - } - ]; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; }); - - -/***/ }), - -/***/ 6764: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var anObject = __nccwpck_require__(8846); -var toObject = __nccwpck_require__(2702); -var toLength = __nccwpck_require__(3738); -var toInteger = __nccwpck_require__(8592); -var advanceStringIndex = __nccwpck_require__(9780); -var regExpExec = __nccwpck_require__(208); -var max = Math.max; -var min = Math.min; -var floor = Math.floor; -var SUBSTITUTION_SYMBOLS = /\$([$&`']|\d\d?|<[^>]*>)/g; -var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&`']|\d\d?)/g; - -var maybeToString = function (it) { - return it === undefined ? it : String(it); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; }; - -// @@replace logic -__nccwpck_require__(7464)('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) { - return [ - // `String.prototype.replace` method - // https://tc39.github.io/ecma262/#sec-string.prototype.replace - function replace(searchValue, replaceValue) { - var O = defined(this); - var fn = searchValue == undefined ? undefined : searchValue[REPLACE]; - return fn !== undefined - ? fn.call(searchValue, O, replaceValue) - : $replace.call(String(O), searchValue, replaceValue); - }, - // `RegExp.prototype[@@replace]` method - // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace - function (regexp, replaceValue) { - var res = maybeCallNative($replace, regexp, this, replaceValue); - if (res.done) return res.value; - - var rx = anObject(regexp); - var S = String(this); - var functionalReplace = typeof replaceValue === 'function'; - if (!functionalReplace) replaceValue = String(replaceValue); - var global = rx.global; - if (global) { - var fullUnicode = rx.unicode; - rx.lastIndex = 0; - } - var results = []; - while (true) { - var result = regExpExec(rx, S); - if (result === null) break; - results.push(result); - if (!global) break; - var matchStr = String(result[0]); - if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); - } - var accumulatedResult = ''; - var nextSourcePosition = 0; - for (var i = 0; i < results.length; i++) { - result = results[i]; - var matched = String(result[0]); - var position = max(min(toInteger(result.index), S.length), 0); - var captures = []; - // NOTE: This is equivalent to - // captures = result.slice(1).map(maybeToString) - // but for some reason `nativeSlice.call(result, 1, result.length)` (called in - // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and - // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. - for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j])); - var namedCaptures = result.groups; - if (functionalReplace) { - var replacerArgs = [matched].concat(captures, position, S); - if (namedCaptures !== undefined) replacerArgs.push(namedCaptures); - var replacement = String(replaceValue.apply(undefined, replacerArgs)); - } else { - replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue); +Object.defineProperty(exports, "__esModule", { value: true }); +exports.issue = exports.issueCommand = void 0; +const os = __importStar(__webpack_require__(87)); +const utils_1 = __webpack_require__(82); +/** + * Commands + * + * Command Format: + * ::name key=value,key=value::message + * + * Examples: + * ::warning::This is the message + * ::set-env name=MY_VAR::some value + */ +function issueCommand(command, properties, message) { + const cmd = new Command(command, properties, message); + process.stdout.write(cmd.toString() + os.EOL); +} +exports.issueCommand = issueCommand; +function issue(name, message = '') { + issueCommand(name, {}, message); +} +exports.issue = issue; +const CMD_STRING = '::'; +class Command { + constructor(command, properties, message) { + if (!command) { + command = 'missing.command'; } - if (position >= nextSourcePosition) { - accumulatedResult += S.slice(nextSourcePosition, position) + replacement; - nextSourcePosition = position + matched.length; + this.command = command; + this.properties = properties; + this.message = message; + } + toString() { + let cmdStr = CMD_STRING + this.command; + if (this.properties && Object.keys(this.properties).length > 0) { + cmdStr += ' '; + let first = true; + for (const key in this.properties) { + if (this.properties.hasOwnProperty(key)) { + const val = this.properties[key]; + if (val) { + if (first) { + first = false; + } + else { + cmdStr += ','; + } + cmdStr += `${key}=${escapeProperty(val)}`; + } + } + } } - } - return accumulatedResult + S.slice(nextSourcePosition); - } - ]; - - // https://tc39.github.io/ecma262/#sec-getsubstitution - function getSubstitution(matched, str, position, captures, namedCaptures, replacement) { - var tailPos = position + matched.length; - var m = captures.length; - var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; - if (namedCaptures !== undefined) { - namedCaptures = toObject(namedCaptures); - symbols = SUBSTITUTION_SYMBOLS; + cmdStr += `${CMD_STRING}${escapeData(this.message)}`; + return cmdStr; } - return $replace.call(replacement, symbols, function (match, ch) { - var capture; - switch (ch.charAt(0)) { - case '$': return '$'; - case '&': return matched; - case '`': return str.slice(0, position); - case "'": return str.slice(tailPos); - case '<': - capture = namedCaptures[ch.slice(1, -1)]; - break; - default: // \d\d? - var n = +ch; - if (n === 0) return match; - if (n > m) { - var f = floor(n / 10); - if (f === 0) return match; - if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1); - return match; - } - capture = captures[n - 1]; - } - return capture === undefined ? '' : capture; - }); - } -}); - +} +function escapeData(s) { + return utils_1.toCommandValue(s) + .replace(/%/g, '%25') + .replace(/\r/g, '%0D') + .replace(/\n/g, '%0A'); +} +function escapeProperty(s) { + return utils_1.toCommandValue(s) + .replace(/%/g, '%25') + .replace(/\r/g, '%0D') + .replace(/\n/g, '%0A') + .replace(/:/g, '%3A') + .replace(/,/g, '%2C'); +} +//# sourceMappingURL=command.js.map /***/ }), +/* 432 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 1351: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { +module.exports = getNewTweets; -"use strict"; +const parseDiff = __webpack_require__(557); +async function getNewTweets({ octokit, toolkit, payload }) { + // Avoid loading huuuge diffs for pull requests that don’t create a new tweet file + const response = await octokit.request( + "GET /repos/:owner/:repo/pulls/:number/files", + { + owner: payload.repository.owner.login, + repo: payload.repository.name, + number: payload.pull_request.number, + } + ); -var isRegExp = __nccwpck_require__(302); -var anObject = __nccwpck_require__(8846); -var speciesConstructor = __nccwpck_require__(1799); -var advanceStringIndex = __nccwpck_require__(9780); -var toLength = __nccwpck_require__(3738); -var callRegExpExec = __nccwpck_require__(208); -var regexpExec = __nccwpck_require__(6207); -var fails = __nccwpck_require__(6410); -var $min = Math.min; -var $push = [].push; -var $SPLIT = 'split'; -var LENGTH = 'length'; -var LAST_INDEX = 'lastIndex'; -var MAX_UINT32 = 0xffffffff; + const { data: files } = response; -// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError -var SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); }); + const newTweet = files.find( + (file) => + file.status === "added" && /^tweets\/.*\.tweet$/.test(file.filename) + ); -// @@split logic -__nccwpck_require__(7464)('split', 2, function (defined, SPLIT, $split, maybeCallNative) { - var internalSplit; - if ( - 'abbc'[$SPLIT](/(b)*/)[1] == 'c' || - 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 || - 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 || - '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 || - '.'[$SPLIT](/()()/)[LENGTH] > 1 || - ''[$SPLIT](/.?/)[LENGTH] - ) { - // based on es5-shim implementation, need to rework it - internalSplit = function (separator, limit) { - var string = String(this); - if (separator === undefined && limit === 0) return []; - // If `separator` is not a regex, use native split - if (!isRegExp(separator)) return $split.call(string, separator, limit); - var output = []; - var flags = (separator.ignoreCase ? 'i' : '') + - (separator.multiline ? 'm' : '') + - (separator.unicode ? 'u' : '') + - (separator.sticky ? 'y' : ''); - var lastLastIndex = 0; - var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0; - // Make `global` and avoid `lastIndex` issues by working with a copy - var separatorCopy = new RegExp(separator.source, flags + 'g'); - var match, lastIndex, lastLength; - while (match = regexpExec.call(separatorCopy, string)) { - lastIndex = separatorCopy[LAST_INDEX]; - if (lastIndex > lastLastIndex) { - output.push(string.slice(lastLastIndex, match.index)); - if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1)); - lastLength = match[0][LENGTH]; - lastLastIndex = lastIndex; - if (output[LENGTH] >= splitLimit) break; - } - if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop - } - if (lastLastIndex === string[LENGTH]) { - if (lastLength || !separatorCopy.test('')) output.push(''); - } else output.push(string.slice(lastLastIndex)); - return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output; - }; - // Chakra, V8 - } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) { - internalSplit = function (separator, limit) { - return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit); - }; - } else { - internalSplit = $split; + if (!newTweet) { + toolkit.info("Pull request does not include new tweets"); + process.exit(0); } - return [ - // `String.prototype.split` method - // https://tc39.github.io/ecma262/#sec-string.prototype.split - function split(separator, limit) { - var O = defined(this); - var splitter = separator == undefined ? undefined : separator[SPLIT]; - return splitter !== undefined - ? splitter.call(separator, O, limit) - : internalSplit.call(String(O), separator, limit); - }, - // `RegExp.prototype[@@split]` method - // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split - // - // NOTE: This cannot be properly polyfilled in engines that don't support - // the 'y' flag. - function (regexp, limit) { - var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split); - if (res.done) return res.value; - - var rx = anObject(regexp); - var S = String(this); - var C = speciesConstructor(rx, RegExp); - - var unicodeMatching = rx.unicode; - var flags = (rx.ignoreCase ? 'i' : '') + - (rx.multiline ? 'm' : '') + - (rx.unicode ? 'u' : '') + - (SUPPORTS_Y ? 'y' : 'g'); + toolkit.info(`${files.length} files changed`); - // ^(? + rx + ) is needed, in combination with some S slicing, to - // simulate the 'y' flag. - var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags); - var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; - if (lim === 0) return []; - if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : []; - var p = 0; - var q = 0; - var A = []; - while (q < S.length) { - splitter.lastIndex = SUPPORTS_Y ? q : 0; - var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q)); - var e; - if ( - z === null || - (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p - ) { - q = advanceStringIndex(S, q, unicodeMatching); - } else { - A.push(S.slice(p, q)); - if (A.length === lim) return A; - for (var i = 1; i <= z.length - 1; i++) { - A.push(z[i]); - if (A.length === lim) return A; - } - q = p = e; - } - } - A.push(S.slice(p)); - return A; + // We load the pull request diff in order to access the contents of the new tweets from + // pull requests coming from forks. The action does not have access to that git tree, + // neither does the action’s token have access to the fork repository + const { data } = await octokit.request( + "GET /repos/:owner/:repo/pulls/:number", + { + headers: { + accept: "application/vnd.github.diff", + }, + owner: payload.repository.owner.login, + repo: payload.repository.name, + number: payload.pull_request.number, } - ]; -}); - - -/***/ }), - -/***/ 8395: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - -__nccwpck_require__(6045); -var anObject = __nccwpck_require__(8846); -var $flags = __nccwpck_require__(7497); -var DESCRIPTORS = __nccwpck_require__(4998); -var TO_STRING = 'toString'; -var $toString = /./[TO_STRING]; + ); -var define = function (fn) { - __nccwpck_require__(5881)(RegExp.prototype, TO_STRING, fn, true); -}; + const newTweets = parseDiff(data) + .filter((file) => file.new && /^tweets\/.*\.tweet$/.test(file.to)) + .map((file) => + file.chunks[0].changes.map((line) => line.content.substr(1)).join("\n") + ); -// 21.2.5.14 RegExp.prototype.toString() -if (__nccwpck_require__(6410)(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) { - define(function toString() { - var R = anObject(this); - return '/'.concat(R.source, '/', - 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined); - }); -// FF44- RegExp#toString has a wrong name -} else if ($toString.name != TO_STRING) { - define(function toString() { - return $toString.call(this); - }); + toolkit.info(`New tweets found: ${newTweets.length}`); + return newTweets; } /***/ }), +/* 433 */, +/* 434 */, +/* 435 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 5696: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - -var $at = __nccwpck_require__(919)(true); - -// 21.1.3.27 String.prototype[@@iterator]() -__nccwpck_require__(1855)(String, 'String', function (iterated) { - this._t = String(iterated); // target - this._i = 0; // next index -// 21.1.5.2.1 %StringIteratorPrototype%.next() -}, function () { - var O = this._t; - var index = this._i; - var point; - if (index >= O.length) return { value: undefined, done: true }; - point = $at(O, index); - this._i += point.length; - return { value: point, done: false }; -}); +// Copyright 2018 Joyent, Inc. +module.exports = { + read: read, + readPkcs8: readPkcs8, + write: write, + writePkcs8: writePkcs8, + pkcs8ToBuffer: pkcs8ToBuffer, + + readECDSACurve: readECDSACurve, + writeECDSACurve: writeECDSACurve +}; -/***/ }), +var assert = __webpack_require__(489); +var asn1 = __webpack_require__(325); +var Buffer = __webpack_require__(726).Buffer; +var algs = __webpack_require__(603); +var utils = __webpack_require__(270); +var Key = __webpack_require__(500); +var PrivateKey = __webpack_require__(502); +var pem = __webpack_require__(268); -/***/ 3747: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { +function read(buf, options) { + return (pem.read(buf, options, 'pkcs8')); +} -"use strict"; +function write(key, options) { + return (pem.write(key, options, 'pkcs8')); +} -// ECMAScript 6 symbols shim -var global = __nccwpck_require__(9397); -var has = __nccwpck_require__(4898); -var DESCRIPTORS = __nccwpck_require__(4998); -var $export = __nccwpck_require__(3725); -var redefine = __nccwpck_require__(5881); -var META = (__nccwpck_require__(4410).KEY); -var $fails = __nccwpck_require__(6410); -var shared = __nccwpck_require__(5131); -var setToStringTag = __nccwpck_require__(9845); -var uid = __nccwpck_require__(2959); -var wks = __nccwpck_require__(9370); -var wksExt = __nccwpck_require__(3852); -var wksDefine = __nccwpck_require__(3382); -var enumKeys = __nccwpck_require__(2606); -var isArray = __nccwpck_require__(4685); -var anObject = __nccwpck_require__(8846); -var isObject = __nccwpck_require__(1048); -var toObject = __nccwpck_require__(2702); -var toIObject = __nccwpck_require__(637); -var toPrimitive = __nccwpck_require__(9075); -var createDesc = __nccwpck_require__(6370); -var _create = __nccwpck_require__(2894); -var gOPNExt = __nccwpck_require__(494); -var $GOPD = __nccwpck_require__(1611); -var $GOPS = __nccwpck_require__(1785); -var $DP = __nccwpck_require__(1278); -var $keys = __nccwpck_require__(9971); -var gOPD = $GOPD.f; -var dP = $DP.f; -var gOPN = gOPNExt.f; -var $Symbol = global.Symbol; -var $JSON = global.JSON; -var _stringify = $JSON && $JSON.stringify; -var PROTOTYPE = 'prototype'; -var HIDDEN = wks('_hidden'); -var TO_PRIMITIVE = wks('toPrimitive'); -var isEnum = {}.propertyIsEnumerable; -var SymbolRegistry = shared('symbol-registry'); -var AllSymbols = shared('symbols'); -var OPSymbols = shared('op-symbols'); -var ObjectProto = Object[PROTOTYPE]; -var USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f; -var QObject = global.QObject; -// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 -var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; +/* Helper to read in a single mpint */ +function readMPInt(der, nm) { + assert.strictEqual(der.peek(), asn1.Ber.Integer, + nm + ' is not an Integer'); + return (utils.mpNormalize(der.readString(asn1.Ber.Integer, true))); +} -// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 -var setSymbolDesc = DESCRIPTORS && $fails(function () { - return _create(dP({}, 'a', { - get: function () { return dP(this, 'a', { value: 7 }).a; } - })).a != 7; -}) ? function (it, key, D) { - var protoDesc = gOPD(ObjectProto, key); - if (protoDesc) delete ObjectProto[key]; - dP(it, key, D); - if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc); -} : dP; +function readPkcs8(alg, type, der) { + /* Private keys in pkcs#8 format have a weird extra int */ + if (der.peek() === asn1.Ber.Integer) { + assert.strictEqual(type, 'private', + 'unexpected Integer at start of public key'); + der.readString(asn1.Ber.Integer, true); + } -var wrap = function (tag) { - var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]); - sym._k = tag; - return sym; -}; + der.readSequence(); + var next = der.offset + der.length; + + var oid = der.readOID(); + switch (oid) { + case '1.2.840.113549.1.1.1': + der._offset = next; + if (type === 'public') + return (readPkcs8RSAPublic(der)); + else + return (readPkcs8RSAPrivate(der)); + case '1.2.840.10040.4.1': + if (type === 'public') + return (readPkcs8DSAPublic(der)); + else + return (readPkcs8DSAPrivate(der)); + case '1.2.840.10045.2.1': + if (type === 'public') + return (readPkcs8ECDSAPublic(der)); + else + return (readPkcs8ECDSAPrivate(der)); + case '1.3.101.112': + if (type === 'public') { + return (readPkcs8EdDSAPublic(der)); + } else { + return (readPkcs8EdDSAPrivate(der)); + } + case '1.3.101.110': + if (type === 'public') { + return (readPkcs8X25519Public(der)); + } else { + return (readPkcs8X25519Private(der)); + } + default: + throw (new Error('Unknown key type OID ' + oid)); + } +} -var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) { - return typeof it == 'symbol'; -} : function (it) { - return it instanceof $Symbol; -}; +function readPkcs8RSAPublic(der) { + // bit string sequence + der.readSequence(asn1.Ber.BitString); + der.readByte(); + der.readSequence(); + + // modulus + var n = readMPInt(der, 'modulus'); + var e = readMPInt(der, 'exponent'); + + // now, make the key + var key = { + type: 'rsa', + source: der.originalInput, + parts: [ + { name: 'e', data: e }, + { name: 'n', data: n } + ] + }; -var $defineProperty = function defineProperty(it, key, D) { - if (it === ObjectProto) $defineProperty(OPSymbols, key, D); - anObject(it); - key = toPrimitive(key, true); - anObject(D); - if (has(AllSymbols, key)) { - if (!D.enumerable) { - if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {})); - it[HIDDEN][key] = true; - } else { - if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false; - D = _create(D, { enumerable: createDesc(0, false) }); - } return setSymbolDesc(it, key, D); - } return dP(it, key, D); -}; -var $defineProperties = function defineProperties(it, P) { - anObject(it); - var keys = enumKeys(P = toIObject(P)); - var i = 0; - var l = keys.length; - var key; - while (l > i) $defineProperty(it, key = keys[i++], P[key]); - return it; -}; -var $create = function create(it, P) { - return P === undefined ? _create(it) : $defineProperties(_create(it), P); -}; -var $propertyIsEnumerable = function propertyIsEnumerable(key) { - var E = isEnum.call(this, key = toPrimitive(key, true)); - if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false; - return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true; -}; -var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) { - it = toIObject(it); - key = toPrimitive(key, true); - if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return; - var D = gOPD(it, key); - if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true; - return D; -}; -var $getOwnPropertyNames = function getOwnPropertyNames(it) { - var names = gOPN(toIObject(it)); - var result = []; - var i = 0; - var key; - while (names.length > i) { - if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key); - } return result; -}; -var $getOwnPropertySymbols = function getOwnPropertySymbols(it) { - var IS_OP = it === ObjectProto; - var names = gOPN(IS_OP ? OPSymbols : toIObject(it)); - var result = []; - var i = 0; - var key; - while (names.length > i) { - if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]); - } return result; -}; + return (new Key(key)); +} + +function readPkcs8RSAPrivate(der) { + der.readSequence(asn1.Ber.OctetString); + der.readSequence(); + + var ver = readMPInt(der, 'version'); + assert.equal(ver[0], 0x0, 'unknown RSA private key version'); + + // modulus then public exponent + var n = readMPInt(der, 'modulus'); + var e = readMPInt(der, 'public exponent'); + var d = readMPInt(der, 'private exponent'); + var p = readMPInt(der, 'prime1'); + var q = readMPInt(der, 'prime2'); + var dmodp = readMPInt(der, 'exponent1'); + var dmodq = readMPInt(der, 'exponent2'); + var iqmp = readMPInt(der, 'iqmp'); + + // now, make the key + var key = { + type: 'rsa', + parts: [ + { name: 'n', data: n }, + { name: 'e', data: e }, + { name: 'd', data: d }, + { name: 'iqmp', data: iqmp }, + { name: 'p', data: p }, + { name: 'q', data: q }, + { name: 'dmodp', data: dmodp }, + { name: 'dmodq', data: dmodq } + ] + }; -// 19.4.1.1 Symbol([description]) -if (!USE_NATIVE) { - $Symbol = function Symbol() { - if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!'); - var tag = uid(arguments.length > 0 ? arguments[0] : undefined); - var $set = function (value) { - if (this === ObjectProto) $set.call(OPSymbols, value); - if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false; - setSymbolDesc(this, tag, createDesc(1, value)); - }; - if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set }); - return wrap(tag); - }; - redefine($Symbol[PROTOTYPE], 'toString', function toString() { - return this._k; - }); + return (new PrivateKey(key)); +} - $GOPD.f = $getOwnPropertyDescriptor; - $DP.f = $defineProperty; - (__nccwpck_require__(7779).f) = gOPNExt.f = $getOwnPropertyNames; - (__nccwpck_require__(1118).f) = $propertyIsEnumerable; - $GOPS.f = $getOwnPropertySymbols; +function readPkcs8DSAPublic(der) { + der.readSequence(); - if (DESCRIPTORS && !__nccwpck_require__(2192)) { - redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true); - } + var p = readMPInt(der, 'p'); + var q = readMPInt(der, 'q'); + var g = readMPInt(der, 'g'); - wksExt.f = function (name) { - return wrap(wks(name)); - }; + // bit string sequence + der.readSequence(asn1.Ber.BitString); + der.readByte(); + + var y = readMPInt(der, 'y'); + + // now, make the key + var key = { + type: 'dsa', + parts: [ + { name: 'p', data: p }, + { name: 'q', data: q }, + { name: 'g', data: g }, + { name: 'y', data: y } + ] + }; + + return (new Key(key)); } -$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol }); +function readPkcs8DSAPrivate(der) { + der.readSequence(); -for (var es6Symbols = ( - // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14 - 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables' -).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]); + var p = readMPInt(der, 'p'); + var q = readMPInt(der, 'q'); + var g = readMPInt(der, 'g'); -for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]); + der.readSequence(asn1.Ber.OctetString); + var x = readMPInt(der, 'x'); -$export($export.S + $export.F * !USE_NATIVE, 'Symbol', { - // 19.4.2.1 Symbol.for(key) - 'for': function (key) { - return has(SymbolRegistry, key += '') - ? SymbolRegistry[key] - : SymbolRegistry[key] = $Symbol(key); - }, - // 19.4.2.5 Symbol.keyFor(sym) - keyFor: function keyFor(sym) { - if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!'); - for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key; - }, - useSetter: function () { setter = true; }, - useSimple: function () { setter = false; } -}); + /* The pkcs#8 format does not include the public key */ + var y = utils.calculateDSAPublic(g, p, x); -$export($export.S + $export.F * !USE_NATIVE, 'Object', { - // 19.1.2.2 Object.create(O [, Properties]) - create: $create, - // 19.1.2.4 Object.defineProperty(O, P, Attributes) - defineProperty: $defineProperty, - // 19.1.2.3 Object.defineProperties(O, Properties) - defineProperties: $defineProperties, - // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) - getOwnPropertyDescriptor: $getOwnPropertyDescriptor, - // 19.1.2.7 Object.getOwnPropertyNames(O) - getOwnPropertyNames: $getOwnPropertyNames, - // 19.1.2.8 Object.getOwnPropertySymbols(O) - getOwnPropertySymbols: $getOwnPropertySymbols -}); + var key = { + type: 'dsa', + parts: [ + { name: 'p', data: p }, + { name: 'q', data: q }, + { name: 'g', data: g }, + { name: 'y', data: y }, + { name: 'x', data: x } + ] + }; -// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives -// https://bugs.chromium.org/p/v8/issues/detail?id=3443 -var FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); }); + return (new PrivateKey(key)); +} -$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', { - getOwnPropertySymbols: function getOwnPropertySymbols(it) { - return $GOPS.f(toObject(it)); - } -}); +function readECDSACurve(der) { + var curveName, curveNames; + var j, c, cd; -// 24.3.2 JSON.stringify(value [, replacer [, space]]) -$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () { - var S = $Symbol(); - // MS Edge converts symbol values to JSON as {} - // WebKit converts symbol values to JSON as null - // V8 throws on boxed symbols - return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}'; -})), 'JSON', { - stringify: function stringify(it) { - var args = [it]; - var i = 1; - var replacer, $replacer; - while (arguments.length > i) args.push(arguments[i++]); - $replacer = replacer = args[1]; - if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined - if (!isArray(replacer)) replacer = function (key, value) { - if (typeof $replacer == 'function') value = $replacer.call(this, key, value); - if (!isSymbol(value)) return value; - }; - args[1] = replacer; - return _stringify.apply($JSON, args); - } -}); + if (der.peek() === asn1.Ber.OID) { + var oid = der.readOID(); -// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint) -$Symbol[PROTOTYPE][TO_PRIMITIVE] || __nccwpck_require__(3735)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); -// 19.4.3.5 Symbol.prototype[@@toStringTag] -setToStringTag($Symbol, 'Symbol'); -// 20.2.1.9 Math[@@toStringTag] -setToStringTag(Math, 'Math', true); -// 24.3.3 JSON[@@toStringTag] -setToStringTag(global.JSON, 'JSON', true); + curveNames = Object.keys(algs.curves); + for (j = 0; j < curveNames.length; ++j) { + c = curveNames[j]; + cd = algs.curves[c]; + if (cd.pkcs8oid === oid) { + curveName = c; + break; + } + } + + } else { + // ECParameters sequence + der.readSequence(); + var version = der.readString(asn1.Ber.Integer, true); + assert.strictEqual(version[0], 1, 'ECDSA key not version 1'); + + var curve = {}; + + // FieldID sequence + der.readSequence(); + var fieldTypeOid = der.readOID(); + assert.strictEqual(fieldTypeOid, '1.2.840.10045.1.1', + 'ECDSA key is not from a prime-field'); + var p = curve.p = utils.mpNormalize( + der.readString(asn1.Ber.Integer, true)); + /* + * p always starts with a 1 bit, so count the zeros to get its + * real size. + */ + curve.size = p.length * 8 - utils.countZeros(p); + + // Curve sequence + der.readSequence(); + curve.a = utils.mpNormalize( + der.readString(asn1.Ber.OctetString, true)); + curve.b = utils.mpNormalize( + der.readString(asn1.Ber.OctetString, true)); + if (der.peek() === asn1.Ber.BitString) + curve.s = der.readString(asn1.Ber.BitString, true); + + // Combined Gx and Gy + curve.G = der.readString(asn1.Ber.OctetString, true); + assert.strictEqual(curve.G[0], 0x4, + 'uncompressed G is required'); + + curve.n = utils.mpNormalize( + der.readString(asn1.Ber.Integer, true)); + curve.h = utils.mpNormalize( + der.readString(asn1.Ber.Integer, true)); + assert.strictEqual(curve.h[0], 0x1, 'a cofactor=1 curve is ' + + 'required'); + + curveNames = Object.keys(algs.curves); + var ks = Object.keys(curve); + for (j = 0; j < curveNames.length; ++j) { + c = curveNames[j]; + cd = algs.curves[c]; + var equal = true; + for (var i = 0; i < ks.length; ++i) { + var k = ks[i]; + if (cd[k] === undefined) + continue; + if (typeof (cd[k]) === 'object' && + cd[k].equals !== undefined) { + if (!cd[k].equals(curve[k])) { + equal = false; + break; + } + } else if (Buffer.isBuffer(cd[k])) { + if (cd[k].toString('binary') + !== curve[k].toString('binary')) { + equal = false; + break; + } + } else { + if (cd[k] !== curve[k]) { + equal = false; + break; + } + } + } + if (equal) { + curveName = c; + break; + } + } + } + return (curveName); +} +function readPkcs8ECDSAPrivate(der) { + var curveName = readECDSACurve(der); + assert.string(curveName, 'a known elliptic curve'); -/***/ }), + der.readSequence(asn1.Ber.OctetString); + der.readSequence(); -/***/ 5188: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + var version = readMPInt(der, 'version'); + assert.equal(version[0], 1, 'unknown version of ECDSA key'); -// https://github.com/tc39/proposal-object-getownpropertydescriptors -var $export = __nccwpck_require__(3725); -var ownKeys = __nccwpck_require__(524); -var toIObject = __nccwpck_require__(637); -var gOPD = __nccwpck_require__(1611); -var createProperty = __nccwpck_require__(755); + var d = der.readString(asn1.Ber.OctetString, true); + var Q; -$export($export.S, 'Object', { - getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) { - var O = toIObject(object); - var getDesc = gOPD.f; - var keys = ownKeys(O); - var result = {}; - var i = 0; - var key, desc; - while (keys.length > i) { - desc = getDesc(O, key = keys[i++]); - if (desc !== undefined) createProperty(result, key, desc); - } - return result; - } -}); + if (der.peek() == 0xa0) { + der.readSequence(0xa0); + der._offset += der.length; + } + if (der.peek() == 0xa1) { + der.readSequence(0xa1); + Q = der.readString(asn1.Ber.BitString, true); + Q = utils.ecNormalize(Q); + } + if (Q === undefined) { + var pub = utils.publicFromPrivateECDSA(curveName, d); + Q = pub.part.Q.data; + } -/***/ }), + var key = { + type: 'ecdsa', + parts: [ + { name: 'curve', data: Buffer.from(curveName) }, + { name: 'Q', data: Q }, + { name: 'd', data: d } + ] + }; -/***/ 230: -/***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { + return (new PrivateKey(key)); +} -var $iterators = __nccwpck_require__(3938); -var getKeys = __nccwpck_require__(9971); -var redefine = __nccwpck_require__(5881); -var global = __nccwpck_require__(9397); -var hide = __nccwpck_require__(3735); -var Iterators = __nccwpck_require__(5424); -var wks = __nccwpck_require__(9370); -var ITERATOR = wks('iterator'); -var TO_STRING_TAG = wks('toStringTag'); -var ArrayValues = Iterators.Array; +function readPkcs8ECDSAPublic(der) { + var curveName = readECDSACurve(der); + assert.string(curveName, 'a known elliptic curve'); -var DOMIterables = { - CSSRuleList: true, // TODO: Not spec compliant, should be false. - CSSStyleDeclaration: false, - CSSValueList: false, - ClientRectList: false, - DOMRectList: false, - DOMStringList: false, - DOMTokenList: true, - DataTransferItemList: false, - FileList: false, - HTMLAllCollection: false, - HTMLCollection: false, - HTMLFormElement: false, - HTMLSelectElement: false, - MediaList: true, // TODO: Not spec compliant, should be false. - MimeTypeArray: false, - NamedNodeMap: false, - NodeList: true, - PaintRequestList: false, - Plugin: false, - PluginArray: false, - SVGLengthList: false, - SVGNumberList: false, - SVGPathSegList: false, - SVGPointList: false, - SVGStringList: false, - SVGTransformList: false, - SourceBufferList: false, - StyleSheetList: true, // TODO: Not spec compliant, should be false. - TextTrackCueList: false, - TextTrackList: false, - TouchList: false -}; + var Q = der.readString(asn1.Ber.BitString, true); + Q = utils.ecNormalize(Q); -for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) { - var NAME = collections[i]; - var explicit = DOMIterables[NAME]; - var Collection = global[NAME]; - var proto = Collection && Collection.prototype; - var key; - if (proto) { - if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues); - if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME); - Iterators[NAME] = ArrayValues; - if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true); - } + var key = { + type: 'ecdsa', + parts: [ + { name: 'curve', data: Buffer.from(curveName) }, + { name: 'Q', data: Q } + ] + }; + + return (new Key(key)); } +function readPkcs8EdDSAPublic(der) { + if (der.peek() === 0x00) + der.readByte(); -/***/ }), + var A = utils.readBitString(der); -/***/ 8222: -/***/ ((module, exports, __nccwpck_require__) => { + var key = { + type: 'ed25519', + parts: [ + { name: 'A', data: utils.zeroPadToLength(A, 32) } + ] + }; -/* eslint-env browser */ + return (new Key(key)); +} -/** - * This is the web browser implementation of `debug()`. - */ +function readPkcs8X25519Public(der) { + var A = utils.readBitString(der); -exports.log = log; -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; -exports.storage = localstorage(); + var key = { + type: 'curve25519', + parts: [ + { name: 'A', data: utils.zeroPadToLength(A, 32) } + ] + }; -/** - * Colors. - */ + return (new Key(key)); +} -exports.colors = [ - '#0000CC', - '#0000FF', - '#0033CC', - '#0033FF', - '#0066CC', - '#0066FF', - '#0099CC', - '#0099FF', - '#00CC00', - '#00CC33', - '#00CC66', - '#00CC99', - '#00CCCC', - '#00CCFF', - '#3300CC', - '#3300FF', - '#3333CC', - '#3333FF', - '#3366CC', - '#3366FF', - '#3399CC', - '#3399FF', - '#33CC00', - '#33CC33', - '#33CC66', - '#33CC99', - '#33CCCC', - '#33CCFF', - '#6600CC', - '#6600FF', - '#6633CC', - '#6633FF', - '#66CC00', - '#66CC33', - '#9900CC', - '#9900FF', - '#9933CC', - '#9933FF', - '#99CC00', - '#99CC33', - '#CC0000', - '#CC0033', - '#CC0066', - '#CC0099', - '#CC00CC', - '#CC00FF', - '#CC3300', - '#CC3333', - '#CC3366', - '#CC3399', - '#CC33CC', - '#CC33FF', - '#CC6600', - '#CC6633', - '#CC9900', - '#CC9933', - '#CCCC00', - '#CCCC33', - '#FF0000', - '#FF0033', - '#FF0066', - '#FF0099', - '#FF00CC', - '#FF00FF', - '#FF3300', - '#FF3333', - '#FF3366', - '#FF3399', - '#FF33CC', - '#FF33FF', - '#FF6600', - '#FF6633', - '#FF9900', - '#FF9933', - '#FFCC00', - '#FFCC33' -]; +function readPkcs8EdDSAPrivate(der) { + if (der.peek() === 0x00) + der.readByte(); -/** - * Currently only WebKit-based Web Inspectors, Firefox >= v31, - * and the Firebug extension (any Firefox version) are known - * to support "%c" CSS customizations. - * - * TODO: add a `localStorage` variable to explicitly enable/disable colors - */ + der.readSequence(asn1.Ber.OctetString); + var k = der.readString(asn1.Ber.OctetString, true); + k = utils.zeroPadToLength(k, 32); -// eslint-disable-next-line complexity -function useColors() { - // NB: In an Electron preload script, document will be defined but not fully - // initialized. Since we know we're in Chrome, we'll just detect this case - // explicitly - if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { - return true; + var A; + if (der.peek() === asn1.Ber.BitString) { + A = utils.readBitString(der); + A = utils.zeroPadToLength(A, 32); + } else { + A = utils.calculateED25519Public(k); } - // Internet Explorer and Edge do not support colors. - if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { - return false; - } + var key = { + type: 'ed25519', + parts: [ + { name: 'A', data: utils.zeroPadToLength(A, 32) }, + { name: 'k', data: utils.zeroPadToLength(k, 32) } + ] + }; - // Is webkit? http://stackoverflow.com/a/16459606/376773 - // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 - return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || - // Is firebug? http://stackoverflow.com/a/398120/376773 - (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || - // Is firefox >= v31? - // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages - (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || - // Double check webkit in userAgent just in case we are in a worker - (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); + return (new PrivateKey(key)); } -/** - * Colorize log arguments if enabled. - * - * @api public - */ +function readPkcs8X25519Private(der) { + if (der.peek() === 0x00) + der.readByte(); -function formatArgs(args) { - args[0] = (this.useColors ? '%c' : '') + - this.namespace + - (this.useColors ? ' %c' : ' ') + - args[0] + - (this.useColors ? '%c ' : ' ') + - '+' + module.exports.humanize(this.diff); + der.readSequence(asn1.Ber.OctetString); + var k = der.readString(asn1.Ber.OctetString, true); + k = utils.zeroPadToLength(k, 32); - if (!this.useColors) { - return; + var A = utils.calculateX25519Public(k); + + var key = { + type: 'curve25519', + parts: [ + { name: 'A', data: utils.zeroPadToLength(A, 32) }, + { name: 'k', data: utils.zeroPadToLength(k, 32) } + ] + }; + + return (new PrivateKey(key)); +} + +function pkcs8ToBuffer(key) { + var der = new asn1.BerWriter(); + writePkcs8(der, key); + return (der.buffer); +} + +function writePkcs8(der, key) { + der.startSequence(); + + if (PrivateKey.isPrivateKey(key)) { + var sillyInt = Buffer.from([0]); + der.writeBuffer(sillyInt, asn1.Ber.Integer); } - const c = 'color: ' + this.color; - args.splice(1, 0, c, 'color: inherit'); + der.startSequence(); + switch (key.type) { + case 'rsa': + der.writeOID('1.2.840.113549.1.1.1'); + if (PrivateKey.isPrivateKey(key)) + writePkcs8RSAPrivate(key, der); + else + writePkcs8RSAPublic(key, der); + break; + case 'dsa': + der.writeOID('1.2.840.10040.4.1'); + if (PrivateKey.isPrivateKey(key)) + writePkcs8DSAPrivate(key, der); + else + writePkcs8DSAPublic(key, der); + break; + case 'ecdsa': + der.writeOID('1.2.840.10045.2.1'); + if (PrivateKey.isPrivateKey(key)) + writePkcs8ECDSAPrivate(key, der); + else + writePkcs8ECDSAPublic(key, der); + break; + case 'ed25519': + der.writeOID('1.3.101.112'); + if (PrivateKey.isPrivateKey(key)) + throw (new Error('Ed25519 private keys in pkcs8 ' + + 'format are not supported')); + writePkcs8EdDSAPublic(key, der); + break; + default: + throw (new Error('Unsupported key type: ' + key.type)); + } - // The final "%c" is somewhat tricky, because there could be other - // arguments passed either before or after the %c, so we need to - // figure out the correct index to insert the CSS into - let index = 0; - let lastC = 0; - args[0].replace(/%[a-zA-Z%]/g, match => { - if (match === '%%') { - return; - } - index++; - if (match === '%c') { - // We only are interested in the *last* %c - // (the user may have provided their own) - lastC = index; - } - }); + der.endSequence(); +} - args.splice(lastC, 0, c); +function writePkcs8RSAPrivate(key, der) { + der.writeNull(); + der.endSequence(); + + der.startSequence(asn1.Ber.OctetString); + der.startSequence(); + + var version = Buffer.from([0]); + der.writeBuffer(version, asn1.Ber.Integer); + + der.writeBuffer(key.part.n.data, asn1.Ber.Integer); + der.writeBuffer(key.part.e.data, asn1.Ber.Integer); + der.writeBuffer(key.part.d.data, asn1.Ber.Integer); + der.writeBuffer(key.part.p.data, asn1.Ber.Integer); + der.writeBuffer(key.part.q.data, asn1.Ber.Integer); + if (!key.part.dmodp || !key.part.dmodq) + utils.addRSAMissing(key); + der.writeBuffer(key.part.dmodp.data, asn1.Ber.Integer); + der.writeBuffer(key.part.dmodq.data, asn1.Ber.Integer); + der.writeBuffer(key.part.iqmp.data, asn1.Ber.Integer); + + der.endSequence(); + der.endSequence(); } -/** - * Invokes `console.log()` when available. - * No-op when `console.log` is not a "function". - * - * @api public - */ -function log(...args) { - // This hackery is required for IE8/9, where - // the `console.log` function doesn't have 'apply' - return typeof console === 'object' && - console.log && - console.log(...args); +function writePkcs8RSAPublic(key, der) { + der.writeNull(); + der.endSequence(); + + der.startSequence(asn1.Ber.BitString); + der.writeByte(0x00); + + der.startSequence(); + der.writeBuffer(key.part.n.data, asn1.Ber.Integer); + der.writeBuffer(key.part.e.data, asn1.Ber.Integer); + der.endSequence(); + + der.endSequence(); } -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ -function save(namespaces) { - try { - if (namespaces) { - exports.storage.setItem('debug', namespaces); - } else { - exports.storage.removeItem('debug'); +function writePkcs8DSAPrivate(key, der) { + der.startSequence(); + der.writeBuffer(key.part.p.data, asn1.Ber.Integer); + der.writeBuffer(key.part.q.data, asn1.Ber.Integer); + der.writeBuffer(key.part.g.data, asn1.Ber.Integer); + der.endSequence(); + + der.endSequence(); + + der.startSequence(asn1.Ber.OctetString); + der.writeBuffer(key.part.x.data, asn1.Ber.Integer); + der.endSequence(); +} + +function writePkcs8DSAPublic(key, der) { + der.startSequence(); + der.writeBuffer(key.part.p.data, asn1.Ber.Integer); + der.writeBuffer(key.part.q.data, asn1.Ber.Integer); + der.writeBuffer(key.part.g.data, asn1.Ber.Integer); + der.endSequence(); + der.endSequence(); + + der.startSequence(asn1.Ber.BitString); + der.writeByte(0x00); + der.writeBuffer(key.part.y.data, asn1.Ber.Integer); + der.endSequence(); +} + +function writeECDSACurve(key, der) { + var curve = algs.curves[key.curve]; + if (curve.pkcs8oid) { + /* This one has a name in pkcs#8, so just write the oid */ + der.writeOID(curve.pkcs8oid); + + } else { + // ECParameters sequence + der.startSequence(); + + var version = Buffer.from([1]); + der.writeBuffer(version, asn1.Ber.Integer); + + // FieldID sequence + der.startSequence(); + der.writeOID('1.2.840.10045.1.1'); // prime-field + der.writeBuffer(curve.p, asn1.Ber.Integer); + der.endSequence(); + + // Curve sequence + der.startSequence(); + var a = curve.p; + if (a[0] === 0x0) + a = a.slice(1); + der.writeBuffer(a, asn1.Ber.OctetString); + der.writeBuffer(curve.b, asn1.Ber.OctetString); + der.writeBuffer(curve.s, asn1.Ber.BitString); + der.endSequence(); + + der.writeBuffer(curve.G, asn1.Ber.OctetString); + der.writeBuffer(curve.n, asn1.Ber.Integer); + var h = curve.h; + if (!h) { + h = Buffer.from([1]); } - } catch (error) { - // Swallow - // XXX (@Qix-) should we be logging these? + der.writeBuffer(h, asn1.Ber.Integer); + + // ECParameters + der.endSequence(); } } -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ -function load() { - let r; - try { - r = exports.storage.getItem('debug'); - } catch (error) { - // Swallow - // XXX (@Qix-) should we be logging these? - } +function writePkcs8ECDSAPublic(key, der) { + writeECDSACurve(key, der); + der.endSequence(); - // If debug isn't set in LS, and we're in Electron, try to load $DEBUG - if (!r && typeof process !== 'undefined' && 'env' in process) { - r = process.env.DEBUG; - } + var Q = utils.ecNormalize(key.part.Q.data, true); + der.writeBuffer(Q, asn1.Ber.BitString); +} - return r; +function writePkcs8ECDSAPrivate(key, der) { + writeECDSACurve(key, der); + der.endSequence(); + + der.startSequence(asn1.Ber.OctetString); + der.startSequence(); + + var version = Buffer.from([1]); + der.writeBuffer(version, asn1.Ber.Integer); + + der.writeBuffer(key.part.d.data, asn1.Ber.OctetString); + + der.startSequence(0xa1); + var Q = utils.ecNormalize(key.part.Q.data, true); + der.writeBuffer(Q, asn1.Ber.BitString); + der.endSequence(); + + der.endSequence(); + der.endSequence(); } -/** - * Localstorage attempts to return the localstorage. - * - * This is necessary because safari throws - * when a user disables cookies/localstorage - * and you attempt to access it. - * - * @return {LocalStorage} - * @api private - */ +function writePkcs8EdDSAPublic(key, der) { + der.endSequence(); -function localstorage() { - try { - // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context - // The Browser also has localStorage in the global context. - return localStorage; - } catch (error) { - // Swallow - // XXX (@Qix-) should we be logging these? - } + utils.writeBitString(der, key.part.A.data); } -module.exports = __nccwpck_require__(6243)(exports); +function writePkcs8EdDSAPrivate(key, der) { + der.endSequence(); -const {formatters} = module.exports; + var k = utils.mpNormalize(key.part.k.data, true); + der.startSequence(asn1.Ber.OctetString); + der.writeBuffer(k, asn1.Ber.OctetString); + der.endSequence(); +} -/** - * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. - */ -formatters.j = function (v) { - try { - return JSON.stringify(v); - } catch (error) { - return '[UnexpectedJSONParseError]: ' + error.message; - } +/***/ }), +/* 436 */, +/* 437 */, +/* 438 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +// 7.3.20 SpeciesConstructor(O, defaultConstructor) +var anObject = __webpack_require__(990); +var aFunction = __webpack_require__(569); +var SPECIES = __webpack_require__(621)('species'); +module.exports = function (O, D) { + var C = anObject(O).constructor; + var S; + return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S); }; /***/ }), +/* 439 */, +/* 440 */, +/* 441 */, +/* 442 */, +/* 443 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +const events_1 = __webpack_require__(614); +const debug_1 = __importDefault(__webpack_require__(784)); +const promisify_1 = __importDefault(__webpack_require__(537)); +const debug = debug_1.default('agent-base'); +function isAgent(v) { + return Boolean(v) && typeof v.addRequest === 'function'; +} +function isSecureEndpoint() { + const { stack } = new Error(); + if (typeof stack !== 'string') + return false; + return stack.split('\n').some(l => l.indexOf('(https.js:') !== -1 || l.indexOf('node:https:') !== -1); +} +function createAgent(callback, opts) { + return new createAgent.Agent(callback, opts); +} +(function (createAgent) { + /** + * Base `http.Agent` implementation. + * No pooling/keep-alive is implemented by default. + * + * @param {Function} callback + * @api public + */ + class Agent extends events_1.EventEmitter { + constructor(callback, _opts) { + super(); + let opts = _opts; + if (typeof callback === 'function') { + this.callback = callback; + } + else if (callback) { + opts = callback; + } + // Timeout for the socket to be returned from the callback + this.timeout = null; + if (opts && typeof opts.timeout === 'number') { + this.timeout = opts.timeout; + } + // These aren't actually used by `agent-base`, but are required + // for the TypeScript definition files in `@types/node` :/ + this.maxFreeSockets = 1; + this.maxSockets = 1; + this.maxTotalSockets = Infinity; + this.sockets = {}; + this.freeSockets = {}; + this.requests = {}; + this.options = {}; + } + get defaultPort() { + if (typeof this.explicitDefaultPort === 'number') { + return this.explicitDefaultPort; + } + return isSecureEndpoint() ? 443 : 80; + } + set defaultPort(v) { + this.explicitDefaultPort = v; + } + get protocol() { + if (typeof this.explicitProtocol === 'string') { + return this.explicitProtocol; + } + return isSecureEndpoint() ? 'https:' : 'http:'; + } + set protocol(v) { + this.explicitProtocol = v; + } + callback(req, opts, fn) { + throw new Error('"agent-base" has no default implementation, you must subclass and override `callback()`'); + } + /** + * Called by node-core's "_http_client.js" module when creating + * a new HTTP request with this Agent instance. + * + * @api public + */ + addRequest(req, _opts) { + const opts = Object.assign({}, _opts); + if (typeof opts.secureEndpoint !== 'boolean') { + opts.secureEndpoint = isSecureEndpoint(); + } + if (opts.host == null) { + opts.host = 'localhost'; + } + if (opts.port == null) { + opts.port = opts.secureEndpoint ? 443 : 80; + } + if (opts.protocol == null) { + opts.protocol = opts.secureEndpoint ? 'https:' : 'http:'; + } + if (opts.host && opts.path) { + // If both a `host` and `path` are specified then it's most + // likely the result of a `url.parse()` call... we need to + // remove the `path` portion so that `net.connect()` doesn't + // attempt to open that as a unix socket file. + delete opts.path; + } + delete opts.agent; + delete opts.hostname; + delete opts._defaultAgent; + delete opts.defaultPort; + delete opts.createConnection; + // Hint to use "Connection: close" + // XXX: non-documented `http` module API :( + req._last = true; + req.shouldKeepAlive = false; + let timedOut = false; + let timeoutId = null; + const timeoutMs = opts.timeout || this.timeout; + const onerror = (err) => { + if (req._hadError) + return; + req.emit('error', err); + // For Safety. Some additional errors might fire later on + // and we need to make sure we don't double-fire the error event. + req._hadError = true; + }; + const ontimeout = () => { + timeoutId = null; + timedOut = true; + const err = new Error(`A "socket" was not created for HTTP request before ${timeoutMs}ms`); + err.code = 'ETIMEOUT'; + onerror(err); + }; + const callbackError = (err) => { + if (timedOut) + return; + if (timeoutId !== null) { + clearTimeout(timeoutId); + timeoutId = null; + } + onerror(err); + }; + const onsocket = (socket) => { + if (timedOut) + return; + if (timeoutId != null) { + clearTimeout(timeoutId); + timeoutId = null; + } + if (isAgent(socket)) { + // `socket` is actually an `http.Agent` instance, so + // relinquish responsibility for this `req` to the Agent + // from here on + debug('Callback returned another Agent instance %o', socket.constructor.name); + socket.addRequest(req, opts); + return; + } + if (socket) { + socket.once('free', () => { + this.freeSocket(socket, opts); + }); + req.onSocket(socket); + return; + } + const err = new Error(`no Duplex stream was returned to agent-base for \`${req.method} ${req.path}\``); + onerror(err); + }; + if (typeof this.callback !== 'function') { + onerror(new Error('`callback` is not defined')); + return; + } + if (!this.promisifiedCallback) { + if (this.callback.length >= 3) { + debug('Converting legacy callback function to promise'); + this.promisifiedCallback = promisify_1.default(this.callback); + } + else { + this.promisifiedCallback = this.callback; + } + } + if (typeof timeoutMs === 'number' && timeoutMs > 0) { + timeoutId = setTimeout(ontimeout, timeoutMs); + } + if ('port' in opts && typeof opts.port !== 'number') { + opts.port = Number(opts.port); + } + try { + debug('Resolving socket for %o request: %o', opts.protocol, `${req.method} ${req.path}`); + Promise.resolve(this.promisifiedCallback(req, opts)).then(onsocket, callbackError); + } + catch (err) { + Promise.reject(err).catch(callbackError); + } + } + freeSocket(socket, opts) { + debug('Freeing socket %o %o', socket.constructor.name, opts); + socket.destroy(); + } + destroy() { + debug('Destroying agent %o', this.constructor.name); + } + } + createAgent.Agent = Agent; + // So that `instanceof` works correctly + createAgent.prototype = createAgent.Agent.prototype; +})(createAgent || (createAgent = {})); +module.exports = createAgent; +//# sourceMappingURL=index.js.map + +/***/ }), +/* 444 */, +/* 445 */, +/* 446 */, +/* 447 */, +/* 448 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { -/***/ 6243: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - - -/** - * This is the common logic for both the Node.js and web browser - * implementations of `debug()`. - */ - -function setup(env) { - createDebug.debug = createDebug; - createDebug.default = createDebug; - createDebug.coerce = coerce; - createDebug.disable = disable; - createDebug.enable = enable; - createDebug.enabled = enabled; - createDebug.humanize = __nccwpck_require__(900); - - Object.keys(env).forEach(key => { - createDebug[key] = env[key]; - }); - - /** - * Active `debug` instances. - */ - createDebug.instances = []; - - /** - * The currently active debug mode names, and names to skip. - */ - - createDebug.names = []; - createDebug.skips = []; - - /** - * Map of special "%n" handling functions, for the debug "format" argument. - * - * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". - */ - createDebug.formatters = {}; - - /** - * Selects a color for a debug namespace - * @param {String} namespace The namespace string for the for the debug instance to be colored - * @return {Number|String} An ANSI color code for the given namespace - * @api private - */ - function selectColor(namespace) { - let hash = 0; - - for (let i = 0; i < namespace.length; i++) { - hash = ((hash << 5) - hash) + namespace.charCodeAt(i); - hash |= 0; // Convert to 32bit integer - } - - return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; - } - createDebug.selectColor = selectColor; - - /** - * Create a debugger with the given `namespace`. - * - * @param {String} namespace - * @return {Function} - * @api public - */ - function createDebug(namespace) { - let prevTime; - - function debug(...args) { - // Disabled? - if (!debug.enabled) { - return; - } - - const self = debug; - - // Set `diff` timestamp - const curr = Number(new Date()); - const ms = curr - (prevTime || curr); - self.diff = ms; - self.prev = prevTime; - self.curr = curr; - prevTime = curr; - - args[0] = createDebug.coerce(args[0]); - - if (typeof args[0] !== 'string') { - // Anything else let's inspect with %O - args.unshift('%O'); - } - - // Apply any `formatters` transformations - let index = 0; - args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { - // If we encounter an escaped % then don't increase the array index - if (match === '%%') { - return match; - } - index++; - const formatter = createDebug.formatters[format]; - if (typeof formatter === 'function') { - const val = args[index]; - match = formatter.call(self, val); - - // Now we need to remove `args[index]` since it's inlined in the `format` - args.splice(index, 1); - index--; - } - return match; - }); - - // Apply env-specific formatting (colors, etc.) - createDebug.formatArgs.call(self, args); - - const logFn = self.log || createDebug.log; - logFn.apply(self, args); - } - - debug.namespace = namespace; - debug.enabled = createDebug.enabled(namespace); - debug.useColors = createDebug.useColors(); - debug.color = selectColor(namespace); - debug.destroy = destroy; - debug.extend = extend; - // Debug.formatArgs = formatArgs; - // debug.rawLog = rawLog; - - // env-specific initialization logic for debug instances - if (typeof createDebug.init === 'function') { - createDebug.init(debug); - } - - createDebug.instances.push(debug); - - return debug; - } - - function destroy() { - const index = createDebug.instances.indexOf(this); - if (index !== -1) { - createDebug.instances.splice(index, 1); - return true; - } - return false; - } - - function extend(namespace, delimiter) { - const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); - newDebug.log = this.log; - return newDebug; - } - - /** - * Enables a debug mode by namespaces. This can include modes - * separated by a colon and wildcards. - * - * @param {String} namespaces - * @api public - */ - function enable(namespaces) { - createDebug.save(namespaces); - - createDebug.names = []; - createDebug.skips = []; - - let i; - const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); - const len = split.length; - - for (i = 0; i < len; i++) { - if (!split[i]) { - // ignore empty strings - continue; - } - - namespaces = split[i].replace(/\*/g, '.*?'); - - if (namespaces[0] === '-') { - createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); - } else { - createDebug.names.push(new RegExp('^' + namespaces + '$')); - } - } +"use strict"; - for (i = 0; i < createDebug.instances.length; i++) { - const instance = createDebug.instances[i]; - instance.enabled = createDebug.enabled(instance.namespace); - } - } - /** - * Disable debug output. - * - * @return {String} namespaces - * @api public - */ - function disable() { - const namespaces = [ - ...createDebug.names.map(toNamespace), - ...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace) - ].join(','); - createDebug.enable(''); - return namespaces; - } +Object.defineProperty(exports, '__esModule', { value: true }); - /** - * Returns true if the given mode name is enabled, false otherwise. - * - * @param {String} name - * @return {Boolean} - * @api public - */ - function enabled(name) { - if (name[name.length - 1] === '*') { - return true; - } +var universalUserAgent = __webpack_require__(796); +var beforeAfterHook = __webpack_require__(523); +var request = __webpack_require__(586); +var graphql = __webpack_require__(898); +var authToken = __webpack_require__(813); - let i; - let len; +const VERSION = "4.0.5"; - for (i = 0, len = createDebug.skips.length; i < len; i++) { - if (createDebug.skips[i].test(name)) { - return false; - } - } +class Octokit { + constructor(options = {}) { + const hook = new beforeAfterHook.Collection(); + const requestDefaults = { + baseUrl: request.request.endpoint.DEFAULTS.baseUrl, + headers: {}, + request: Object.assign({}, options.request, { + // @ts-ignore internal usage only, no need to type + hook: hook.bind(null, "request") + }), + mediaType: { + previews: [], + format: "" + } + }; // prepend default user agent with `options.userAgent` if set - for (i = 0, len = createDebug.names.length; i < len; i++) { - if (createDebug.names[i].test(name)) { - return true; - } - } + requestDefaults.headers["user-agent"] = [options.userAgent, `octokit-core.js/${VERSION} ${universalUserAgent.getUserAgent()}`].filter(Boolean).join(" "); - return false; - } + if (options.baseUrl) { + requestDefaults.baseUrl = options.baseUrl; + } - /** - * Convert regexp to namespace - * - * @param {RegExp} regxep - * @return {String} namespace - * @api private - */ - function toNamespace(regexp) { - return regexp.toString() - .substring(2, regexp.toString().length - 2) - .replace(/\.\*\?$/, '*'); - } + if (options.previews) { + requestDefaults.mediaType.previews = options.previews; + } - /** - * Coerce `val`. - * - * @param {Mixed} val - * @return {Mixed} - * @api private - */ - function coerce(val) { - if (val instanceof Error) { - return val.stack || val.message; - } - return val; - } + if (options.timeZone) { + requestDefaults.headers["time-zone"] = options.timeZone; + } - createDebug.enable(createDebug.load()); + this.request = request.request.defaults(requestDefaults); + this.graphql = graphql.withCustomRequest(this.request).defaults(requestDefaults); + this.log = Object.assign({ + debug: () => {}, + info: () => {}, + warn: console.warn.bind(console), + error: console.error.bind(console) + }, options.log); + this.hook = hook; // (1) If neither `options.authStrategy` nor `options.auth` are set, the `octokit` instance + // is unauthenticated. The `this.auth()` method is a no-op and no request hook is registered. + // (2) If only `options.auth` is set, use the default token authentication strategy. + // (3) If `options.authStrategy` is set then use it and pass in `options.auth`. Always pass own request as many strategies accept a custom request instance. + // TODO: type `options.auth` based on `options.authStrategy`. - return createDebug; -} + if (!options.authStrategy) { + if (!options.auth) { + // (1) + this.auth = async () => ({ + type: "unauthenticated" + }); + } else { + // (2) + const auth = authToken.createTokenAuth(options.auth); // @ts-ignore ¯\_(ツ)_/¯ -module.exports = setup; + hook.wrap("request", auth.hook); + this.auth = auth; + } + } else { + const { + authStrategy, + ...otherOptions + } = options; + const auth = authStrategy(Object.assign({ + request: this.request, + log: this.log, + // we pass the current octokit instance as well as its constructor options + // to allow for authentication strategies that return a new octokit instance + // that shares the same internal state as the current one. The original + // requirement for this was the "event-octokit" authentication strategy + // of https://github.com/probot/octokit-auth-probot. + octokit: this, + octokitOptions: otherOptions + }, options.auth)); // @ts-ignore ¯\_(ツ)_/¯ + hook.wrap("request", auth.hook); + this.auth = auth; + } // apply plugins + // https://stackoverflow.com/a/16345172 -/***/ }), -/***/ 8237: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + const classConstructor = this.constructor; + classConstructor.plugins.forEach(plugin => { + Object.assign(this, plugin(this, options)); + }); + } -/** - * Detect Electron renderer / nwjs process, which is node, but we should - * treat as a browser. - */ + static defaults(defaults) { + const OctokitWithDefaults = class extends this { + constructor(...args) { + const options = args[0] || {}; -if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) { - module.exports = __nccwpck_require__(8222); -} else { - module.exports = __nccwpck_require__(5332); -} + if (typeof defaults === "function") { + super(defaults(options)); + return; + } + super(Object.assign({}, defaults, options, options.userAgent && defaults.userAgent ? { + userAgent: `${options.userAgent} ${defaults.userAgent}` + } : null)); + } -/***/ }), + }; + return OctokitWithDefaults; + } + /** + * Attach a plugin (or many) to your Octokit instance. + * + * @example + * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...) + */ -/***/ 5332: -/***/ ((module, exports, __nccwpck_require__) => { -/** - * Module dependencies. - */ + static plugin(...newPlugins) { + var _a; -const tty = __nccwpck_require__(6224); -const util = __nccwpck_require__(3837); + const currentPlugins = this.plugins; + const NewOctokit = (_a = class extends this {}, _a.plugins = currentPlugins.concat(newPlugins.filter(plugin => !currentPlugins.includes(plugin))), _a); + return NewOctokit; + } -/** - * This is the Node.js implementation of `debug()`. - */ +} +Octokit.VERSION = VERSION; +Octokit.plugins = []; -exports.init = init; -exports.log = log; -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; +exports.Octokit = Octokit; +//# sourceMappingURL=index.js.map -/** - * Colors. - */ -exports.colors = [6, 2, 3, 4, 5, 1]; +/***/ }), +/* 449 */ +/***/ (function(module, exports, __webpack_require__) { -try { - // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json) - // eslint-disable-next-line import/no-extraneous-dependencies - const supportsColor = __nccwpck_require__(9318); +"use strict"; - if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { - exports.colors = [ - 20, - 21, - 26, - 27, - 32, - 33, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 56, - 57, - 62, - 63, - 68, - 69, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 92, - 93, - 98, - 99, - 112, - 113, - 128, - 129, - 134, - 135, - 148, - 149, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 178, - 179, - 184, - 185, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 214, - 215, - 220, - 221 - ]; - } -} catch (error) { - // Swallow - we only care if `supports-color` is available; it doesn't have to be. -} -/** - * Build up the default `inspectOpts` object from the environment variables. - * - * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js - */ +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var directionalMarkersGroup = /\u202A-\u202E\u061C\u200E\u200F\u2066\u2067\u2068\u2069/; +var _default = directionalMarkersGroup; +exports["default"] = _default; +module.exports = exports.default; -exports.inspectOpts = Object.keys(process.env).filter(key => { - return /^debug_/i.test(key); -}).reduce((obj, key) => { - // Camel-case - const prop = key - .substring(6) - .toLowerCase() - .replace(/_([a-z])/g, (_, k) => { - return k.toUpperCase(); - }); +/***/ }), +/* 450 */ +/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { - // Coerce string value into JS value - let val = process.env[key]; - if (/^(yes|on|true|enabled)$/i.test(val)) { - val = true; - } else if (/^(no|off|false|disabled)$/i.test(val)) { - val = false; - } else if (val === 'null') { - val = null; - } else { - val = Number(val); - } +"use strict"; - obj[prop] = val; - return obj; -}, {}); +var $export = __webpack_require__(195); +var $forEach = __webpack_require__(948)(0); +var STRICT = __webpack_require__(482)([].forEach, true); -/** - * Is stdout a TTY? Colored output is enabled when `true`. - */ +$export($export.P + $export.F * !STRICT, 'Array', { + // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg]) + forEach: function forEach(callbackfn /* , thisArg */) { + return $forEach(this, callbackfn, arguments[1]); + } +}); -function useColors() { - return 'colors' in exports.inspectOpts ? - Boolean(exports.inspectOpts.colors) : - tty.isatty(process.stderr.fd); -} -/** - * Adds ANSI color escape codes if enabled. - * - * @api public - */ +/***/ }), +/* 451 */, +/* 452 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { -function formatArgs(args) { - const {namespace: name, useColors} = this; +"use strict"; - if (useColors) { - const c = this.color; - const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c); - const prefix = ` ${colorCode};1m${name} \u001B[0m`; - args[0] = prefix + args[0].split('\n').join('\n' + prefix); - args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m'); - } else { - args[0] = getDate() + name + ' ' + args[0]; - } +var crypto = __webpack_require__(417) + +function randomString (size) { + var bits = (size + 1) * 6 + var buffer = crypto.randomBytes(Math.ceil(bits / 8)) + var string = buffer.toString('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '') + return string.slice(0, size) } -function getDate() { - if (exports.inspectOpts.hideDate) { - return ''; - } - return new Date().toISOString() + ' '; +function calculatePayloadHash (payload, algorithm, contentType) { + var hash = crypto.createHash(algorithm) + hash.update('hawk.1.payload\n') + hash.update((contentType ? contentType.split(';')[0].trim().toLowerCase() : '') + '\n') + hash.update(payload || '') + hash.update('\n') + return hash.digest('base64') } -/** - * Invokes `util.format()` with the specified arguments and writes to stderr. - */ +exports.calculateMac = function (credentials, opts) { + var normalized = 'hawk.1.header\n' + + opts.ts + '\n' + + opts.nonce + '\n' + + (opts.method || '').toUpperCase() + '\n' + + opts.resource + '\n' + + opts.host.toLowerCase() + '\n' + + opts.port + '\n' + + (opts.hash || '') + '\n' -function log(...args) { - return process.stderr.write(util.format(...args) + '\n'); -} + if (opts.ext) { + normalized = normalized + opts.ext.replace('\\', '\\\\').replace('\n', '\\n') + } -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ -function save(namespaces) { - if (namespaces) { - process.env.DEBUG = namespaces; - } else { - // If you set a process.env field to null or undefined, it gets cast to the - // string 'null' or 'undefined'. Just delete instead. - delete process.env.DEBUG; - } -} + normalized = normalized + '\n' -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ + if (opts.app) { + normalized = normalized + opts.app + '\n' + (opts.dlg || '') + '\n' + } -function load() { - return process.env.DEBUG; + var hmac = crypto.createHmac(credentials.algorithm, credentials.key).update(normalized) + var digest = hmac.digest('base64') + return digest } -/** - * Init logic for `debug` instances. - * - * Create a new `inspectOpts` object in case `useColors` is set - * differently for a particular `debug` instance. - */ +exports.header = function (uri, method, opts) { + var timestamp = opts.timestamp || Math.floor((Date.now() + (opts.localtimeOffsetMsec || 0)) / 1000) + var credentials = opts.credentials + if (!credentials || !credentials.id || !credentials.key || !credentials.algorithm) { + return '' + } -function init(debug) { - debug.inspectOpts = {}; + if (['sha1', 'sha256'].indexOf(credentials.algorithm) === -1) { + return '' + } - const keys = Object.keys(exports.inspectOpts); - for (let i = 0; i < keys.length; i++) { - debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; - } + var artifacts = { + ts: timestamp, + nonce: opts.nonce || randomString(6), + method: method, + resource: uri.pathname + (uri.search || ''), + host: uri.hostname, + port: uri.port || (uri.protocol === 'http:' ? 80 : 443), + hash: opts.hash, + ext: opts.ext, + app: opts.app, + dlg: opts.dlg + } + + if (!artifacts.hash && (opts.payload || opts.payload === '')) { + artifacts.hash = calculatePayloadHash(opts.payload, credentials.algorithm, opts.contentType) + } + + var mac = exports.calculateMac(credentials, artifacts) + + var hasExt = artifacts.ext !== null && artifacts.ext !== undefined && artifacts.ext !== '' + var header = 'Hawk id="' + credentials.id + + '", ts="' + artifacts.ts + + '", nonce="' + artifacts.nonce + + (artifacts.hash ? '", hash="' + artifacts.hash : '') + + (hasExt ? '", ext="' + artifacts.ext.replace(/\\/g, '\\\\').replace(/"/g, '\\"') : '') + + '", mac="' + mac + '"' + + if (artifacts.app) { + header = header + ', app="' + artifacts.app + (artifacts.dlg ? '", dlg="' + artifacts.dlg : '') + '"' + } + + return header } -module.exports = __nccwpck_require__(6243)(exports); -const {formatters} = module.exports; +/***/ }), +/* 453 */, +/* 454 */ +/***/ (function(module, exports, __webpack_require__) { -/** - * Map %o to `util.inspect()`, all on a single line. - */ +"use strict"; -formatters.o = function (v) { - this.inspectOpts.colors = this.useColors; - return util.inspect(v, this.inspectOpts) - .replace(/\s*\n\s*/g, ' '); -}; -/** - * Map %O to `util.inspect()`, allowing multiple lines if needed. - */ +Object.defineProperty(exports, '__esModule', { value: true }); -formatters.O = function (v) { - this.inspectOpts.colors = this.useColors; - return util.inspect(v, this.inspectOpts); -}; +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } +var Stream = _interopDefault(__webpack_require__(413)); +var http = _interopDefault(__webpack_require__(605)); +var Url = _interopDefault(__webpack_require__(835)); +var whatwgUrl = _interopDefault(__webpack_require__(176)); +var https = _interopDefault(__webpack_require__(211)); +var zlib = _interopDefault(__webpack_require__(761)); -/***/ }), +// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js -/***/ 8932: -/***/ ((__unused_webpack_module, exports) => { +// fix for "Readable" isn't a named export issue +const Readable = Stream.Readable; -"use strict"; +const BUFFER = Symbol('buffer'); +const TYPE = Symbol('type'); +class Blob { + constructor() { + this[TYPE] = ''; -Object.defineProperty(exports, "__esModule", ({ value: true })); + const blobParts = arguments[0]; + const options = arguments[1]; -class Deprecation extends Error { - constructor(message) { - super(message); // Maintains proper stack trace (only available on V8) + const buffers = []; + let size = 0; + + if (blobParts) { + const a = blobParts; + const length = Number(a.length); + for (let i = 0; i < length; i++) { + const element = a[i]; + let buffer; + if (element instanceof Buffer) { + buffer = element; + } else if (ArrayBuffer.isView(element)) { + buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength); + } else if (element instanceof ArrayBuffer) { + buffer = Buffer.from(element); + } else if (element instanceof Blob) { + buffer = element[BUFFER]; + } else { + buffer = Buffer.from(typeof element === 'string' ? element : String(element)); + } + size += buffer.length; + buffers.push(buffer); + } + } + + this[BUFFER] = Buffer.concat(buffers); + + let type = options && options.type !== undefined && String(options.type).toLowerCase(); + if (type && !/[^\u0020-\u007E]/.test(type)) { + this[TYPE] = type; + } + } + get size() { + return this[BUFFER].length; + } + get type() { + return this[TYPE]; + } + text() { + return Promise.resolve(this[BUFFER].toString()); + } + arrayBuffer() { + const buf = this[BUFFER]; + const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + return Promise.resolve(ab); + } + stream() { + const readable = new Readable(); + readable._read = function () {}; + readable.push(this[BUFFER]); + readable.push(null); + return readable; + } + toString() { + return '[object Blob]'; + } + slice() { + const size = this.size; + + const start = arguments[0]; + const end = arguments[1]; + let relativeStart, relativeEnd; + if (start === undefined) { + relativeStart = 0; + } else if (start < 0) { + relativeStart = Math.max(size + start, 0); + } else { + relativeStart = Math.min(start, size); + } + if (end === undefined) { + relativeEnd = size; + } else if (end < 0) { + relativeEnd = Math.max(size + end, 0); + } else { + relativeEnd = Math.min(end, size); + } + const span = Math.max(relativeEnd - relativeStart, 0); + + const buffer = this[BUFFER]; + const slicedBuffer = buffer.slice(relativeStart, relativeStart + span); + const blob = new Blob([], { type: arguments[2] }); + blob[BUFFER] = slicedBuffer; + return blob; + } +} + +Object.defineProperties(Blob.prototype, { + size: { enumerable: true }, + type: { enumerable: true }, + slice: { enumerable: true } +}); + +Object.defineProperty(Blob.prototype, Symbol.toStringTag, { + value: 'Blob', + writable: false, + enumerable: false, + configurable: true +}); + +/** + * fetch-error.js + * + * FetchError interface for operational errors + */ - /* istanbul ignore next */ +/** + * Create FetchError instance + * + * @param String message Error message for human + * @param String type Error type for machine + * @param String systemError For Node.js system error + * @return FetchError + */ +function FetchError(message, type, systemError) { + Error.call(this, message); - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } + this.message = message; + this.type = type; - this.name = 'Deprecation'; + // when err.type is `system`, err.code contains system error code + if (systemError) { + this.code = this.errno = systemError.code; } + // hide custom error implementation details from end-users + Error.captureStackTrace(this, this.constructor); } -exports.Deprecation = Deprecation; - - -/***/ }), - -/***/ 1621: -/***/ ((module) => { - -"use strict"; - -module.exports = (flag, argv) => { - argv = argv || process.argv; - const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--'); - const pos = argv.indexOf(prefix + flag); - const terminatorPos = argv.indexOf('--'); - return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos); -}; - +FetchError.prototype = Object.create(Error.prototype); +FetchError.prototype.constructor = FetchError; +FetchError.prototype.name = 'FetchError'; -/***/ }), +let convert; +try { + convert = __webpack_require__(18).convert; +} catch (e) {} -/***/ 5098: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { +const INTERNALS = Symbol('Body internals'); -"use strict"; +// fix an issue where "PassThrough" isn't a named export for node <10 +const PassThrough = Stream.PassThrough; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -const net_1 = __importDefault(__nccwpck_require__(1808)); -const tls_1 = __importDefault(__nccwpck_require__(4404)); -const url_1 = __importDefault(__nccwpck_require__(7310)); -const assert_1 = __importDefault(__nccwpck_require__(9491)); -const debug_1 = __importDefault(__nccwpck_require__(8237)); -const agent_base_1 = __nccwpck_require__(9690); -const parse_proxy_response_1 = __importDefault(__nccwpck_require__(595)); -const debug = debug_1.default('https-proxy-agent:agent'); /** - * The `HttpsProxyAgent` implements an HTTP Agent subclass that connects to - * the specified "HTTP(s) proxy server" in order to proxy HTTPS requests. - * - * Outgoing HTTP requests are first tunneled through the proxy server using the - * `CONNECT` HTTP request method to establish a connection to the proxy server, - * and then the proxy server connects to the destination target and issues the - * HTTP request from the proxy server. + * Body mixin * - * `https:` requests have their socket connection upgraded to TLS once - * the connection to the proxy server has been established. + * Ref: https://fetch.spec.whatwg.org/#body * - * @api public + * @param Stream body Readable stream + * @param Object opts Response options + * @return Void */ -class HttpsProxyAgent extends agent_base_1.Agent { - constructor(_opts) { - let opts; - if (typeof _opts === 'string') { - opts = url_1.default.parse(_opts); - } - else { - opts = _opts; - } - if (!opts) { - throw new Error('an HTTP(S) proxy server `host` and `port` must be specified!'); - } - debug('creating new HttpsProxyAgent instance: %o', opts); - super(opts); - const proxy = Object.assign({}, opts); - // If `true`, then connect to the proxy server over TLS. - // Defaults to `false`. - this.secureProxy = opts.secureProxy || isHTTPS(proxy.protocol); - // Prefer `hostname` over `host`, and set the `port` if needed. - proxy.host = proxy.hostname || proxy.host; - if (typeof proxy.port === 'string') { - proxy.port = parseInt(proxy.port, 10); - } - if (!proxy.port && proxy.host) { - proxy.port = this.secureProxy ? 443 : 80; - } - // ALPN is supported by Node.js >= v5. - // attempt to negotiate http/1.1 for proxy servers that support http/2 - if (this.secureProxy && !('ALPNProtocols' in proxy)) { - proxy.ALPNProtocols = ['http 1.1']; - } - if (proxy.host && proxy.path) { - // If both a `host` and `path` are specified then it's most likely - // the result of a `url.parse()` call... we need to remove the - // `path` portion so that `net.connect()` doesn't attempt to open - // that as a Unix socket file. - delete proxy.path; - delete proxy.pathname; - } - this.proxy = proxy; - } - /** - * Called when the node-core HTTP client library is creating a - * new HTTP request. - * - * @api protected - */ - callback(req, opts) { - return __awaiter(this, void 0, void 0, function* () { - const { proxy, secureProxy } = this; - // Create a socket connection to the proxy server. - let socket; - if (secureProxy) { - debug('Creating `tls.Socket`: %o', proxy); - socket = tls_1.default.connect(proxy); - } - else { - debug('Creating `net.Socket`: %o', proxy); - socket = net_1.default.connect(proxy); - } - const headers = Object.assign({}, proxy.headers); - const hostname = `${opts.host}:${opts.port}`; - let payload = `CONNECT ${hostname} HTTP/1.1\r\n`; - // Inject the `Proxy-Authorization` header if necessary. - if (proxy.auth) { - headers['Proxy-Authorization'] = `Basic ${Buffer.from(proxy.auth).toString('base64')}`; - } - // The `Host` header should only include the port - // number when it is not the default port. - let { host, port, secureEndpoint } = opts; - if (!isDefaultPort(port, secureEndpoint)) { - host += `:${port}`; - } - headers.Host = host; - headers.Connection = 'close'; - for (const name of Object.keys(headers)) { - payload += `${name}: ${headers[name]}\r\n`; - } - const proxyResponsePromise = parse_proxy_response_1.default(socket); - socket.write(`${payload}\r\n`); - const { statusCode, buffered } = yield proxyResponsePromise; - if (statusCode === 200) { - req.once('socket', resume); - if (opts.secureEndpoint) { - // The proxy is connecting to a TLS server, so upgrade - // this socket connection to a TLS connection. - debug('Upgrading socket connection to TLS'); - const servername = opts.servername || opts.host; - return tls_1.default.connect(Object.assign(Object.assign({}, omit(opts, 'host', 'hostname', 'path', 'port')), { socket, - servername })); - } - return socket; - } - // Some other status code that's not 200... need to re-play the HTTP - // header "data" events onto the socket once the HTTP machinery is - // attached so that the node core `http` can parse and handle the - // error status code. - // Close the original socket, and a new "fake" socket is returned - // instead, so that the proxy doesn't get the HTTP request - // written to it (which may contain `Authorization` headers or other - // sensitive data). - // - // See: https://hackerone.com/reports/541502 - socket.destroy(); - const fakeSocket = new net_1.default.Socket({ writable: false }); - fakeSocket.readable = true; - // Need to wait for the "socket" event to re-play the "data" events. - req.once('socket', (s) => { - debug('replaying proxy buffer for failed request'); - assert_1.default(s.listenerCount('data') > 0); - // Replay the "buffered" Buffer onto the fake `socket`, since at - // this point the HTTP module machinery has been hooked up for - // the user. - s.push(buffered); - s.push(null); - }); - return fakeSocket; - }); - } -} -exports["default"] = HttpsProxyAgent; -function resume(socket) { - socket.resume(); -} -function isDefaultPort(port, secure) { - return Boolean((!secure && port === 80) || (secure && port === 443)); -} -function isHTTPS(protocol) { - return typeof protocol === 'string' ? /^https:?$/i.test(protocol) : false; -} -function omit(obj, ...keys) { - const ret = {}; - let key; - for (key in obj) { - if (!keys.includes(key)) { - ret[key] = obj[key]; - } - } - return ret; +function Body(body) { + var _this = this; + + var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref$size = _ref.size; + + let size = _ref$size === undefined ? 0 : _ref$size; + var _ref$timeout = _ref.timeout; + let timeout = _ref$timeout === undefined ? 0 : _ref$timeout; + + if (body == null) { + // body is undefined or null + body = null; + } else if (isURLSearchParams(body)) { + // body is a URLSearchParams + body = Buffer.from(body.toString()); + } else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') { + // body is ArrayBuffer + body = Buffer.from(body); + } else if (ArrayBuffer.isView(body)) { + // body is ArrayBufferView + body = Buffer.from(body.buffer, body.byteOffset, body.byteLength); + } else if (body instanceof Stream) ; else { + // none of the above + // coerce to string then buffer + body = Buffer.from(String(body)); + } + this[INTERNALS] = { + body, + disturbed: false, + error: null + }; + this.size = size; + this.timeout = timeout; + + if (body instanceof Stream) { + body.on('error', function (err) { + const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err); + _this[INTERNALS].error = error; + }); + } } -//# sourceMappingURL=agent.js.map -/***/ }), +Body.prototype = { + get body() { + return this[INTERNALS].body; + }, -/***/ 7219: -/***/ (function(module, __unused_webpack_exports, __nccwpck_require__) { + get bodyUsed() { + return this[INTERNALS].disturbed; + }, -"use strict"; + /** + * Decode response as ArrayBuffer + * + * @return Promise + */ + arrayBuffer() { + return consumeBody.call(this).then(function (buf) { + return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + }); + }, -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -const agent_1 = __importDefault(__nccwpck_require__(5098)); -function createHttpsProxyAgent(opts) { - return new agent_1.default(opts); -} -(function (createHttpsProxyAgent) { - createHttpsProxyAgent.HttpsProxyAgent = agent_1.default; - createHttpsProxyAgent.prototype = agent_1.default.prototype; -})(createHttpsProxyAgent || (createHttpsProxyAgent = {})); -module.exports = createHttpsProxyAgent; -//# sourceMappingURL=index.js.map + /** + * Return raw response as Blob + * + * @return Promise + */ + blob() { + let ct = this.headers && this.headers.get('content-type') || ''; + return consumeBody.call(this).then(function (buf) { + return Object.assign( + // Prevent copying + new Blob([], { + type: ct.toLowerCase() + }), { + [BUFFER]: buf + }); + }); + }, -/***/ }), + /** + * Decode response as json + * + * @return Promise + */ + json() { + var _this2 = this; + + return consumeBody.call(this).then(function (buffer) { + try { + return JSON.parse(buffer.toString()); + } catch (err) { + return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json')); + } + }); + }, -/***/ 595: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + /** + * Decode response as text + * + * @return Promise + */ + text() { + return consumeBody.call(this).then(function (buffer) { + return buffer.toString(); + }); + }, -"use strict"; + /** + * Decode response as buffer (non-spec api) + * + * @return Promise + */ + buffer() { + return consumeBody.call(this); + }, -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; + /** + * Decode response as text, while automatically detecting the encoding and + * trying to decode to UTF-8 (non-spec api) + * + * @return Promise + */ + textConverted() { + var _this3 = this; + + return consumeBody.call(this).then(function (buffer) { + return convertBody(buffer, _this3.headers); + }); + } }; -Object.defineProperty(exports, "__esModule", ({ value: true })); -const debug_1 = __importDefault(__nccwpck_require__(8237)); -const debug = debug_1.default('https-proxy-agent:parse-proxy-response'); -function parseProxyResponse(socket) { - return new Promise((resolve, reject) => { - // we need to buffer any HTTP traffic that happens with the proxy before we get - // the CONNECT response, so that if the response is anything other than an "200" - // response code, then we can re-play the "data" events on the socket once the - // HTTP parser is hooked up... - let buffersLength = 0; - const buffers = []; - function read() { - const b = socket.read(); - if (b) - ondata(b); - else - socket.once('readable', read); - } - function cleanup() { - socket.removeListener('end', onend); - socket.removeListener('error', onerror); - socket.removeListener('close', onclose); - socket.removeListener('readable', read); - } - function onclose(err) { - debug('onclose had error %o', err); - } - function onend() { - debug('onend'); - } - function onerror(err) { - cleanup(); - debug('onerror %o', err); - reject(err); - } - function ondata(b) { - buffers.push(b); - buffersLength += b.length; - const buffered = Buffer.concat(buffers, buffersLength); - const endOfHeaders = buffered.indexOf('\r\n\r\n'); - if (endOfHeaders === -1) { - // keep buffering - debug('have not received end of HTTP headers yet...'); - read(); - return; - } - const firstLine = buffered.toString('ascii', 0, buffered.indexOf('\r\n')); - const statusCode = +firstLine.split(' ')[1]; - debug('got proxy server response: %o', firstLine); - resolve({ - statusCode, - buffered - }); - } - socket.on('error', onerror); - socket.on('close', onclose); - socket.on('end', onend); - read(); - }); -} -exports["default"] = parseProxyResponse; -//# sourceMappingURL=parse-proxy-response.js.map -/***/ }), +// In browsers, all properties are enumerable. +Object.defineProperties(Body.prototype, { + body: { enumerable: true }, + bodyUsed: { enumerable: true }, + arrayBuffer: { enumerable: true }, + blob: { enumerable: true }, + json: { enumerable: true }, + text: { enumerable: true } +}); + +Body.mixIn = function (proto) { + for (const name of Object.getOwnPropertyNames(Body.prototype)) { + // istanbul ignore else: future proof + if (!(name in proto)) { + const desc = Object.getOwnPropertyDescriptor(Body.prototype, name); + Object.defineProperty(proto, name, desc); + } + } +}; + +/** + * Consume and convert an entire Body to a Buffer. + * + * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body + * + * @return Promise + */ +function consumeBody() { + var _this4 = this; + + if (this[INTERNALS].disturbed) { + return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`)); + } + + this[INTERNALS].disturbed = true; + + if (this[INTERNALS].error) { + return Body.Promise.reject(this[INTERNALS].error); + } + + let body = this.body; + + // body is null + if (body === null) { + return Body.Promise.resolve(Buffer.alloc(0)); + } + + // body is blob + if (isBlob(body)) { + body = body.stream(); + } + + // body is buffer + if (Buffer.isBuffer(body)) { + return Body.Promise.resolve(body); + } + + // istanbul ignore if: should never happen + if (!(body instanceof Stream)) { + return Body.Promise.resolve(Buffer.alloc(0)); + } + + // body is stream + // get ready to actually consume the body + let accum = []; + let accumBytes = 0; + let abort = false; + + return new Body.Promise(function (resolve, reject) { + let resTimeout; + + // allow timeout on slow response body + if (_this4.timeout) { + resTimeout = setTimeout(function () { + abort = true; + reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout')); + }, _this4.timeout); + } + + // handle stream errors + body.on('error', function (err) { + if (err.name === 'AbortError') { + // if the request was aborted, reject with this Error + abort = true; + reject(err); + } else { + // other errors, such as incorrect content-encoding + reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err)); + } + }); + + body.on('data', function (chunk) { + if (abort || chunk === null) { + return; + } + + if (_this4.size && accumBytes + chunk.length > _this4.size) { + abort = true; + reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size')); + return; + } -/***/ 3287: -/***/ ((__unused_webpack_module, exports) => { + accumBytes += chunk.length; + accum.push(chunk); + }); -"use strict"; + body.on('end', function () { + if (abort) { + return; + } + clearTimeout(resTimeout); -Object.defineProperty(exports, "__esModule", ({ value: true })); + try { + resolve(Buffer.concat(accum, accumBytes)); + } catch (err) { + // handle streams that have accumulated too much data (issue #414) + reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err)); + } + }); + }); +} -/*! - * is-plain-object +/** + * Detect buffer encoding and convert to target encoding + * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. + * @param Buffer buffer Incoming buffer + * @param String encoding Target encoding + * @return String */ +function convertBody(buffer, headers) { + if (typeof convert !== 'function') { + throw new Error('The package `encoding` must be installed to use the textConverted() function'); + } -function isObject(o) { - return Object.prototype.toString.call(o) === '[object Object]'; -} + const ct = headers.get('content-type'); + let charset = 'utf-8'; + let res, str; -function isPlainObject(o) { - var ctor,prot; + // header + if (ct) { + res = /charset=([^;]*)/i.exec(ct); + } - if (isObject(o) === false) return false; + // no charset in content type, peek at response body for at most 1024 bytes + str = buffer.slice(0, 1024).toString(); - // If has modified constructor - ctor = o.constructor; - if (ctor === undefined) return true; + // html5 + if (!res && str) { + res = / { +/** + * Detect a URLSearchParams object + * ref: https://github.com/bitinn/node-fetch/issues/296#issuecomment-307598143 + * + * @param Object obj Object to detect by type or brand + * @return String + */ +function isURLSearchParams(obj) { + // Duck-typing as a necessary condition. + if (typeof obj !== 'object' || typeof obj.append !== 'function' || typeof obj.delete !== 'function' || typeof obj.get !== 'function' || typeof obj.getAll !== 'function' || typeof obj.has !== 'function' || typeof obj.set !== 'function') { + return false; + } -"use strict"; + // Brand-checking and more duck-typing as optional condition. + return obj.constructor.name === 'URLSearchParams' || Object.prototype.toString.call(obj) === '[object URLSearchParams]' || typeof obj.sort === 'function'; +} +/** + * Check if `obj` is a W3C `Blob` object (which `File` inherits from) + * @param {*} obj + * @return {boolean} + */ +function isBlob(obj) { + return typeof obj === 'object' && typeof obj.arrayBuffer === 'function' && typeof obj.type === 'string' && typeof obj.stream === 'function' && typeof obj.constructor === 'function' && typeof obj.constructor.name === 'string' && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]); +} +/** + * Clone body given Res/Req instance + * + * @param Mixed instance Response or Request instance + * @return Mixed + */ +function clone(instance) { + let p1, p2; + let body = instance.body; -var loader = __nccwpck_require__(1161); -var dumper = __nccwpck_require__(8866); + // don't allow cloning a used body + if (instance.bodyUsed) { + throw new Error('cannot clone body after it is used'); + } + // check that body is a stream and not form-data object + // note: we can't clone the form-data object without having it as a dependency + if (body instanceof Stream && typeof body.getBoundary !== 'function') { + // tee instance body + p1 = new PassThrough(); + p2 = new PassThrough(); + body.pipe(p1); + body.pipe(p2); + // set instance body to teed body and return the other teed body + instance[INTERNALS].body = p1; + body = p2; + } -function renamed(from, to) { - return function () { - throw new Error('Function yaml.' + from + ' is removed in js-yaml 4. ' + - 'Use yaml.' + to + ' instead, which is now safe by default.'); - }; + return body; } +/** + * Performs the operation "extract a `Content-Type` value from |object|" as + * specified in the specification: + * https://fetch.spec.whatwg.org/#concept-bodyinit-extract + * + * This function assumes that instance.body is present. + * + * @param Mixed instance Any options.body input + */ +function extractContentType(body) { + if (body === null) { + // body is null + return null; + } else if (typeof body === 'string') { + // body is string + return 'text/plain;charset=UTF-8'; + } else if (isURLSearchParams(body)) { + // body is a URLSearchParams + return 'application/x-www-form-urlencoded;charset=UTF-8'; + } else if (isBlob(body)) { + // body is blob + return body.type || null; + } else if (Buffer.isBuffer(body)) { + // body is buffer + return null; + } else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') { + // body is ArrayBuffer + return null; + } else if (ArrayBuffer.isView(body)) { + // body is ArrayBufferView + return null; + } else if (typeof body.getBoundary === 'function') { + // detect form data input from form-data module + return `multipart/form-data;boundary=${body.getBoundary()}`; + } else if (body instanceof Stream) { + // body is stream + // can't really do much about this + return null; + } else { + // Body constructor defaults other things to string + return 'text/plain;charset=UTF-8'; + } +} -module.exports.Type = __nccwpck_require__(6073); -module.exports.Schema = __nccwpck_require__(1082); -module.exports.FAILSAFE_SCHEMA = __nccwpck_require__(8562); -module.exports.JSON_SCHEMA = __nccwpck_require__(1035); -module.exports.CORE_SCHEMA = __nccwpck_require__(2011); -module.exports.DEFAULT_SCHEMA = __nccwpck_require__(8759); -module.exports.load = loader.load; -module.exports.loadAll = loader.loadAll; -module.exports.dump = dumper.dump; -module.exports.YAMLException = __nccwpck_require__(8179); +/** + * The Fetch Standard treats this as if "total bytes" is a property on the body. + * For us, we have to explicitly get it with a function. + * + * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes + * + * @param Body instance Instance of Body + * @return Number? Number of bytes, or null if not possible + */ +function getTotalBytes(instance) { + const body = instance.body; -// Re-export all types in case user wants to create custom schema -module.exports.types = { - binary: __nccwpck_require__(7900), - float: __nccwpck_require__(2705), - map: __nccwpck_require__(6150), - null: __nccwpck_require__(721), - pairs: __nccwpck_require__(6860), - set: __nccwpck_require__(9548), - timestamp: __nccwpck_require__(9212), - bool: __nccwpck_require__(4993), - int: __nccwpck_require__(1615), - merge: __nccwpck_require__(6104), - omap: __nccwpck_require__(9046), - seq: __nccwpck_require__(7283), - str: __nccwpck_require__(3619) -}; -// Removed functions from JS-YAML 3.0.x -module.exports.safeLoad = renamed('safeLoad', 'load'); -module.exports.safeLoadAll = renamed('safeLoadAll', 'loadAll'); -module.exports.safeDump = renamed('safeDump', 'dump'); + if (body === null) { + // body is null + return 0; + } else if (isBlob(body)) { + return body.size; + } else if (Buffer.isBuffer(body)) { + // body is buffer + return body.length; + } else if (body && typeof body.getLengthSync === 'function') { + // detect form data input from form-data module + if (body._lengthRetrievers && body._lengthRetrievers.length == 0 || // 1.x + body.hasKnownLength && body.hasKnownLength()) { + // 2.x + return body.getLengthSync(); + } + return null; + } else { + // body is stream + return null; + } +} +/** + * Write a Body to a Node.js WritableStream (e.g. http.Request) object. + * + * @param Body instance Instance of Body + * @return Void + */ +function writeToStream(dest, instance) { + const body = instance.body; -/***/ }), -/***/ 6829: -/***/ ((module) => { + if (body === null) { + // body is null + dest.end(); + } else if (isBlob(body)) { + body.stream().pipe(dest); + } else if (Buffer.isBuffer(body)) { + // body is buffer + dest.write(body); + dest.end(); + } else { + // body is stream + body.pipe(dest); + } +} -"use strict"; +// expose Promise +Body.Promise = global.Promise; +/** + * headers.js + * + * Headers class offers convenient helpers + */ +const invalidTokenRegex = /[^\^_`a-zA-Z\-0-9!#$%&'*+.|~]/; +const invalidHeaderCharRegex = /[^\t\x20-\x7e\x80-\xff]/; -function isNothing(subject) { - return (typeof subject === 'undefined') || (subject === null); +function validateName(name) { + name = `${name}`; + if (invalidTokenRegex.test(name) || name === '') { + throw new TypeError(`${name} is not a legal HTTP header name`); + } } - -function isObject(subject) { - return (typeof subject === 'object') && (subject !== null); +function validateValue(value) { + value = `${value}`; + if (invalidHeaderCharRegex.test(value)) { + throw new TypeError(`${value} is not a legal HTTP header value`); + } } +/** + * Find the key in the map object given a header name. + * + * Returns undefined if not found. + * + * @param String name Header name + * @return String|Undefined + */ +function find(map, name) { + name = name.toLowerCase(); + for (const key in map) { + if (key.toLowerCase() === name) { + return key; + } + } + return undefined; +} -function toArray(sequence) { - if (Array.isArray(sequence)) return sequence; - else if (isNothing(sequence)) return []; +const MAP = Symbol('map'); +class Headers { + /** + * Headers class + * + * @param Object headers Response headers + * @return Void + */ + constructor() { + let init = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined; - return [ sequence ]; -} + this[MAP] = Object.create(null); + if (init instanceof Headers) { + const rawHeaders = init.raw(); + const headerNames = Object.keys(rawHeaders); -function extend(target, source) { - var index, length, key, sourceKeys; + for (const headerName of headerNames) { + for (const value of rawHeaders[headerName]) { + this.append(headerName, value); + } + } - if (source) { - sourceKeys = Object.keys(source); + return; + } - for (index = 0, length = sourceKeys.length; index < length; index += 1) { - key = sourceKeys[index]; - target[key] = source[key]; - } - } + // We don't worry about converting prop to ByteString here as append() + // will handle it. + if (init == null) ; else if (typeof init === 'object') { + const method = init[Symbol.iterator]; + if (method != null) { + if (typeof method !== 'function') { + throw new TypeError('Header pairs must be iterable'); + } - return target; -} + // sequence> + // Note: per spec we have to first exhaust the lists then process them + const pairs = []; + for (const pair of init) { + if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') { + throw new TypeError('Each header pair must be iterable'); + } + pairs.push(Array.from(pair)); + } + for (const pair of pairs) { + if (pair.length !== 2) { + throw new TypeError('Each header pair must be a name/value tuple'); + } + this.append(pair[0], pair[1]); + } + } else { + // record + for (const key of Object.keys(init)) { + const value = init[key]; + this.append(key, value); + } + } + } else { + throw new TypeError('Provided initializer must be an object'); + } + } -function repeat(string, count) { - var result = '', cycle; + /** + * Return combined header value given name + * + * @param String name Header name + * @return Mixed + */ + get(name) { + name = `${name}`; + validateName(name); + const key = find(this[MAP], name); + if (key === undefined) { + return null; + } - for (cycle = 0; cycle < count; cycle += 1) { - result += string; - } + return this[MAP][key].join(', '); + } - return result; -} + /** + * Iterate over all headers + * + * @param Function callback Executed for each item with parameters (value, name, thisArg) + * @param Boolean thisArg `this` context for callback function + * @return Void + */ + forEach(callback) { + let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; + let pairs = getHeaders(this); + let i = 0; + while (i < pairs.length) { + var _pairs$i = pairs[i]; + const name = _pairs$i[0], + value = _pairs$i[1]; -function isNegativeZero(number) { - return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number); -} + callback.call(thisArg, value, name, this); + pairs = getHeaders(this); + i++; + } + } + /** + * Overwrite header values given name + * + * @param String name Header name + * @param String value Header value + * @return Void + */ + set(name, value) { + name = `${name}`; + value = `${value}`; + validateName(name); + validateValue(value); + const key = find(this[MAP], name); + this[MAP][key !== undefined ? key : name] = [value]; + } -module.exports.isNothing = isNothing; -module.exports.isObject = isObject; -module.exports.toArray = toArray; -module.exports.repeat = repeat; -module.exports.isNegativeZero = isNegativeZero; -module.exports.extend = extend; + /** + * Append a value onto existing header + * + * @param String name Header name + * @param String value Header value + * @return Void + */ + append(name, value) { + name = `${name}`; + value = `${value}`; + validateName(name); + validateValue(value); + const key = find(this[MAP], name); + if (key !== undefined) { + this[MAP][key].push(value); + } else { + this[MAP][name] = [value]; + } + } + /** + * Check for header name existence + * + * @param String name Header name + * @return Boolean + */ + has(name) { + name = `${name}`; + validateName(name); + return find(this[MAP], name) !== undefined; + } -/***/ }), + /** + * Delete all header values given name + * + * @param String name Header name + * @return Void + */ + delete(name) { + name = `${name}`; + validateName(name); + const key = find(this[MAP], name); + if (key !== undefined) { + delete this[MAP][key]; + } + } -/***/ 8866: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + /** + * Return raw headers (non-spec api) + * + * @return Object + */ + raw() { + return this[MAP]; + } -"use strict"; + /** + * Get an iterator on keys. + * + * @return Iterator + */ + keys() { + return createHeadersIterator(this, 'key'); + } + /** + * Get an iterator on values. + * + * @return Iterator + */ + values() { + return createHeadersIterator(this, 'value'); + } -/*eslint-disable no-use-before-define*/ + /** + * Get an iterator on entries. + * + * This is the default iterator of the Headers object. + * + * @return Iterator + */ + [Symbol.iterator]() { + return createHeadersIterator(this, 'key+value'); + } +} +Headers.prototype.entries = Headers.prototype[Symbol.iterator]; -var common = __nccwpck_require__(6829); -var YAMLException = __nccwpck_require__(8179); -var DEFAULT_SCHEMA = __nccwpck_require__(8759); +Object.defineProperty(Headers.prototype, Symbol.toStringTag, { + value: 'Headers', + writable: false, + enumerable: false, + configurable: true +}); -var _toString = Object.prototype.toString; -var _hasOwnProperty = Object.prototype.hasOwnProperty; +Object.defineProperties(Headers.prototype, { + get: { enumerable: true }, + forEach: { enumerable: true }, + set: { enumerable: true }, + append: { enumerable: true }, + has: { enumerable: true }, + delete: { enumerable: true }, + keys: { enumerable: true }, + values: { enumerable: true }, + entries: { enumerable: true } +}); -var CHAR_BOM = 0xFEFF; -var CHAR_TAB = 0x09; /* Tab */ -var CHAR_LINE_FEED = 0x0A; /* LF */ -var CHAR_CARRIAGE_RETURN = 0x0D; /* CR */ -var CHAR_SPACE = 0x20; /* Space */ -var CHAR_EXCLAMATION = 0x21; /* ! */ -var CHAR_DOUBLE_QUOTE = 0x22; /* " */ -var CHAR_SHARP = 0x23; /* # */ -var CHAR_PERCENT = 0x25; /* % */ -var CHAR_AMPERSAND = 0x26; /* & */ -var CHAR_SINGLE_QUOTE = 0x27; /* ' */ -var CHAR_ASTERISK = 0x2A; /* * */ -var CHAR_COMMA = 0x2C; /* , */ -var CHAR_MINUS = 0x2D; /* - */ -var CHAR_COLON = 0x3A; /* : */ -var CHAR_EQUALS = 0x3D; /* = */ -var CHAR_GREATER_THAN = 0x3E; /* > */ -var CHAR_QUESTION = 0x3F; /* ? */ -var CHAR_COMMERCIAL_AT = 0x40; /* @ */ -var CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */ -var CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */ -var CHAR_GRAVE_ACCENT = 0x60; /* ` */ -var CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */ -var CHAR_VERTICAL_LINE = 0x7C; /* | */ -var CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */ +function getHeaders(headers) { + let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value'; -var ESCAPE_SEQUENCES = {}; + const keys = Object.keys(headers[MAP]).sort(); + return keys.map(kind === 'key' ? function (k) { + return k.toLowerCase(); + } : kind === 'value' ? function (k) { + return headers[MAP][k].join(', '); + } : function (k) { + return [k.toLowerCase(), headers[MAP][k].join(', ')]; + }); +} -ESCAPE_SEQUENCES[0x00] = '\\0'; -ESCAPE_SEQUENCES[0x07] = '\\a'; -ESCAPE_SEQUENCES[0x08] = '\\b'; -ESCAPE_SEQUENCES[0x09] = '\\t'; -ESCAPE_SEQUENCES[0x0A] = '\\n'; -ESCAPE_SEQUENCES[0x0B] = '\\v'; -ESCAPE_SEQUENCES[0x0C] = '\\f'; -ESCAPE_SEQUENCES[0x0D] = '\\r'; -ESCAPE_SEQUENCES[0x1B] = '\\e'; -ESCAPE_SEQUENCES[0x22] = '\\"'; -ESCAPE_SEQUENCES[0x5C] = '\\\\'; -ESCAPE_SEQUENCES[0x85] = '\\N'; -ESCAPE_SEQUENCES[0xA0] = '\\_'; -ESCAPE_SEQUENCES[0x2028] = '\\L'; -ESCAPE_SEQUENCES[0x2029] = '\\P'; +const INTERNAL = Symbol('internal'); -var DEPRECATED_BOOLEANS_SYNTAX = [ - 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON', - 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF' -]; +function createHeadersIterator(target, kind) { + const iterator = Object.create(HeadersIteratorPrototype); + iterator[INTERNAL] = { + target, + kind, + index: 0 + }; + return iterator; +} -var DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/; +const HeadersIteratorPrototype = Object.setPrototypeOf({ + next() { + // istanbul ignore if + if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) { + throw new TypeError('Value of `this` is not a HeadersIterator'); + } -function compileStyleMap(schema, map) { - var result, keys, index, length, tag, style, type; + var _INTERNAL = this[INTERNAL]; + const target = _INTERNAL.target, + kind = _INTERNAL.kind, + index = _INTERNAL.index; - if (map === null) return {}; + const values = getHeaders(target, kind); + const len = values.length; + if (index >= len) { + return { + value: undefined, + done: true + }; + } - result = {}; - keys = Object.keys(map); + this[INTERNAL].index = index + 1; - for (index = 0, length = keys.length; index < length; index += 1) { - tag = keys[index]; - style = String(map[tag]); + return { + value: values[index], + done: false + }; + } +}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))); - if (tag.slice(0, 2) === '!!') { - tag = 'tag:yaml.org,2002:' + tag.slice(2); - } - type = schema.compiledTypeMap['fallback'][tag]; +Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, { + value: 'HeadersIterator', + writable: false, + enumerable: false, + configurable: true +}); - if (type && _hasOwnProperty.call(type.styleAliases, style)) { - style = type.styleAliases[style]; - } +/** + * Export the Headers object in a form that Node.js can consume. + * + * @param Headers headers + * @return Object + */ +function exportNodeCompatibleHeaders(headers) { + const obj = Object.assign({ __proto__: null }, headers[MAP]); - result[tag] = style; - } + // http.request() only supports string as Host header. This hack makes + // specifying custom Host header possible. + const hostHeaderKey = find(headers[MAP], 'Host'); + if (hostHeaderKey !== undefined) { + obj[hostHeaderKey] = obj[hostHeaderKey][0]; + } - return result; + return obj; } -function encodeHex(character) { - var string, handle, length; +/** + * Create a Headers object from an object of headers, ignoring those that do + * not conform to HTTP grammar productions. + * + * @param Object obj Object of headers + * @return Headers + */ +function createHeadersLenient(obj) { + const headers = new Headers(); + for (const name of Object.keys(obj)) { + if (invalidTokenRegex.test(name)) { + continue; + } + if (Array.isArray(obj[name])) { + for (const val of obj[name]) { + if (invalidHeaderCharRegex.test(val)) { + continue; + } + if (headers[MAP][name] === undefined) { + headers[MAP][name] = [val]; + } else { + headers[MAP][name].push(val); + } + } + } else if (!invalidHeaderCharRegex.test(obj[name])) { + headers[MAP][name] = [obj[name]]; + } + } + return headers; +} - string = character.toString(16).toUpperCase(); +const INTERNALS$1 = Symbol('Response internals'); - if (character <= 0xFF) { - handle = 'x'; - length = 2; - } else if (character <= 0xFFFF) { - handle = 'u'; - length = 4; - } else if (character <= 0xFFFFFFFF) { - handle = 'U'; - length = 8; - } else { - throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF'); - } +// fix an issue where "STATUS_CODES" aren't a named export for node <10 +const STATUS_CODES = http.STATUS_CODES; - return '\\' + handle + common.repeat('0', length - string.length) + string; -} +/** + * Response class + * + * @param Stream body Readable stream + * @param Object opts Response options + * @return Void + */ +class Response { + constructor() { + let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + Body.call(this, body, opts); -var QUOTING_TYPE_SINGLE = 1, - QUOTING_TYPE_DOUBLE = 2; + const status = opts.status || 200; + const headers = new Headers(opts.headers); -function State(options) { - this.schema = options['schema'] || DEFAULT_SCHEMA; - this.indent = Math.max(1, (options['indent'] || 2)); - this.noArrayIndent = options['noArrayIndent'] || false; - this.skipInvalid = options['skipInvalid'] || false; - this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']); - this.styleMap = compileStyleMap(this.schema, options['styles'] || null); - this.sortKeys = options['sortKeys'] || false; - this.lineWidth = options['lineWidth'] || 80; - this.noRefs = options['noRefs'] || false; - this.noCompatMode = options['noCompatMode'] || false; - this.condenseFlow = options['condenseFlow'] || false; - this.quotingType = options['quotingType'] === '"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE; - this.forceQuotes = options['forceQuotes'] || false; - this.replacer = typeof options['replacer'] === 'function' ? options['replacer'] : null; + if (body != null && !headers.has('Content-Type')) { + const contentType = extractContentType(body); + if (contentType) { + headers.append('Content-Type', contentType); + } + } - this.implicitTypes = this.schema.compiledImplicit; - this.explicitTypes = this.schema.compiledExplicit; + this[INTERNALS$1] = { + url: opts.url, + status, + statusText: opts.statusText || STATUS_CODES[status], + headers, + counter: opts.counter + }; + } - this.tag = null; - this.result = ''; + get url() { + return this[INTERNALS$1].url || ''; + } - this.duplicates = []; - this.usedDuplicates = null; -} + get status() { + return this[INTERNALS$1].status; + } -// Indents every line in a string. Empty lines (\n only) are not indented. -function indentString(string, spaces) { - var ind = common.repeat(' ', spaces), - position = 0, - next = -1, - result = '', - line, - length = string.length; + /** + * Convenience property representing if the request ended normally + */ + get ok() { + return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300; + } - while (position < length) { - next = string.indexOf('\n', position); - if (next === -1) { - line = string.slice(position); - position = length; - } else { - line = string.slice(position, next + 1); - position = next + 1; - } + get redirected() { + return this[INTERNALS$1].counter > 0; + } - if (line.length && line !== '\n') result += ind; + get statusText() { + return this[INTERNALS$1].statusText; + } - result += line; - } + get headers() { + return this[INTERNALS$1].headers; + } - return result; + /** + * Clone this response + * + * @return Response + */ + clone() { + return new Response(clone(this), { + url: this.url, + status: this.status, + statusText: this.statusText, + headers: this.headers, + ok: this.ok, + redirected: this.redirected + }); + } } -function generateNextLine(state, level) { - return '\n' + common.repeat(' ', state.indent * level); -} +Body.mixIn(Response.prototype); -function testImplicitResolving(state, str) { - var index, length, type; +Object.defineProperties(Response.prototype, { + url: { enumerable: true }, + status: { enumerable: true }, + ok: { enumerable: true }, + redirected: { enumerable: true }, + statusText: { enumerable: true }, + headers: { enumerable: true }, + clone: { enumerable: true } +}); - for (index = 0, length = state.implicitTypes.length; index < length; index += 1) { - type = state.implicitTypes[index]; +Object.defineProperty(Response.prototype, Symbol.toStringTag, { + value: 'Response', + writable: false, + enumerable: false, + configurable: true +}); - if (type.resolve(str)) { - return true; - } - } +const INTERNALS$2 = Symbol('Request internals'); +const URL = Url.URL || whatwgUrl.URL; - return false; -} +// fix an issue where "format", "parse" aren't a named export for node <10 +const parse_url = Url.parse; +const format_url = Url.format; -// [33] s-white ::= s-space | s-tab -function isWhitespace(c) { - return c === CHAR_SPACE || c === CHAR_TAB; -} +/** + * Wrapper around `new URL` to handle arbitrary URLs + * + * @param {string} urlStr + * @return {void} + */ +function parseURL(urlStr) { + /* + Check whether the URL is absolute or not + Scheme: https://tools.ietf.org/html/rfc3986#section-3.1 + Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3 + */ + if (/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(urlStr)) { + urlStr = new URL(urlStr).toString(); + } -// Returns true if the character can be printed without escaping. -// From YAML 1.2: "any allowed characters known to be non-printable -// should also be escaped. [However,] This isn’t mandatory" -// Derived from nb-char - \t - #x85 - #xA0 - #x2028 - #x2029. -function isPrintable(c) { - return (0x00020 <= c && c <= 0x00007E) - || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029) - || ((0x0E000 <= c && c <= 0x00FFFD) && c !== CHAR_BOM) - || (0x10000 <= c && c <= 0x10FFFF); + // Fallback to old implementation for arbitrary URLs + return parse_url(urlStr); } -// [34] ns-char ::= nb-char - s-white -// [27] nb-char ::= c-printable - b-char - c-byte-order-mark -// [26] b-char ::= b-line-feed | b-carriage-return -// Including s-white (for some reason, examples doesn't match specs in this aspect) -// ns-char ::= c-printable - b-line-feed - b-carriage-return - c-byte-order-mark -function isNsCharOrWhitespace(c) { - return isPrintable(c) - && c !== CHAR_BOM - // - b-char - && c !== CHAR_CARRIAGE_RETURN - && c !== CHAR_LINE_FEED; -} +const streamDestructionSupported = 'destroy' in Stream.Readable.prototype; -// [127] ns-plain-safe(c) ::= c = flow-out ⇒ ns-plain-safe-out -// c = flow-in ⇒ ns-plain-safe-in -// c = block-key ⇒ ns-plain-safe-out -// c = flow-key ⇒ ns-plain-safe-in -// [128] ns-plain-safe-out ::= ns-char -// [129] ns-plain-safe-in ::= ns-char - c-flow-indicator -// [130] ns-plain-char(c) ::= ( ns-plain-safe(c) - “:” - “#” ) -// | ( /* An ns-char preceding */ “#” ) -// | ( “:” /* Followed by an ns-plain-safe(c) */ ) -function isPlainSafe(c, prev, inblock) { - var cIsNsCharOrWhitespace = isNsCharOrWhitespace(c); - var cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c); - return ( - // ns-plain-safe - inblock ? // c = flow-in - cIsNsCharOrWhitespace - : cIsNsCharOrWhitespace - // - c-flow-indicator - && c !== CHAR_COMMA - && c !== CHAR_LEFT_SQUARE_BRACKET - && c !== CHAR_RIGHT_SQUARE_BRACKET - && c !== CHAR_LEFT_CURLY_BRACKET - && c !== CHAR_RIGHT_CURLY_BRACKET - ) - // ns-plain-char - && c !== CHAR_SHARP // false on '#' - && !(prev === CHAR_COLON && !cIsNsChar) // false on ': ' - || (isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP) // change to true on '[^ ]#' - || (prev === CHAR_COLON && cIsNsChar); // change to true on ':[^ ]' +/** + * Check if a value is an instance of Request. + * + * @param Mixed input + * @return Boolean + */ +function isRequest(input) { + return typeof input === 'object' && typeof input[INTERNALS$2] === 'object'; } -// Simplified test for values allowed as the first character in plain style. -function isPlainSafeFirst(c) { - // Uses a subset of ns-char - c-indicator - // where ns-char = nb-char - s-white. - // No support of ( ( “?” | “:” | “-” ) /* Followed by an ns-plain-safe(c)) */ ) part - return isPrintable(c) && c !== CHAR_BOM - && !isWhitespace(c) // - s-white - // - (c-indicator ::= - // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}” - && c !== CHAR_MINUS - && c !== CHAR_QUESTION - && c !== CHAR_COLON - && c !== CHAR_COMMA - && c !== CHAR_LEFT_SQUARE_BRACKET - && c !== CHAR_RIGHT_SQUARE_BRACKET - && c !== CHAR_LEFT_CURLY_BRACKET - && c !== CHAR_RIGHT_CURLY_BRACKET - // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “"” - && c !== CHAR_SHARP - && c !== CHAR_AMPERSAND - && c !== CHAR_ASTERISK - && c !== CHAR_EXCLAMATION - && c !== CHAR_VERTICAL_LINE - && c !== CHAR_EQUALS - && c !== CHAR_GREATER_THAN - && c !== CHAR_SINGLE_QUOTE - && c !== CHAR_DOUBLE_QUOTE - // | “%” | “@” | “`”) - && c !== CHAR_PERCENT - && c !== CHAR_COMMERCIAL_AT - && c !== CHAR_GRAVE_ACCENT; +function isAbortSignal(signal) { + const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal); + return !!(proto && proto.constructor.name === 'AbortSignal'); } -// Simplified test for values allowed as the last character in plain style. -function isPlainSafeLast(c) { - // just not whitespace or colon, it will be checked to be plain character later - return !isWhitespace(c) && c !== CHAR_COLON; -} +/** + * Request class + * + * @param Mixed input Url or Request instance + * @param Object init Custom options + * @return Void + */ +class Request { + constructor(input) { + let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + let parsedURL; + + // normalize input + if (!isRequest(input)) { + if (input && input.href) { + // in order to support Node.js' Url objects; though WHATWG's URL objects + // will fall into this branch also (since their `toString()` will return + // `href` property anyway) + parsedURL = parseURL(input.href); + } else { + // coerce input to a string before attempting to parse + parsedURL = parseURL(`${input}`); + } + input = {}; + } else { + parsedURL = parseURL(input.url); + } + + let method = init.method || input.method || 'GET'; + method = method.toUpperCase(); + + if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) { + throw new TypeError('Request with GET/HEAD method cannot have body'); + } + + let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null; + + Body.call(this, inputBody, { + timeout: init.timeout || input.timeout || 0, + size: init.size || input.size || 0 + }); + + const headers = new Headers(init.headers || input.headers || {}); -// Same as 'string'.codePointAt(pos), but works in older browsers. -function codePointAt(string, pos) { - var first = string.charCodeAt(pos), second; - if (first >= 0xD800 && first <= 0xDBFF && pos + 1 < string.length) { - second = string.charCodeAt(pos + 1); - if (second >= 0xDC00 && second <= 0xDFFF) { - // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae - return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000; - } - } - return first; -} + if (inputBody != null && !headers.has('Content-Type')) { + const contentType = extractContentType(inputBody); + if (contentType) { + headers.append('Content-Type', contentType); + } + } -// Determines whether block indentation indicator is required. -function needIndentIndicator(string) { - var leadingSpaceRe = /^\n* /; - return leadingSpaceRe.test(string); -} + let signal = isRequest(input) ? input.signal : null; + if ('signal' in init) signal = init.signal; -var STYLE_PLAIN = 1, - STYLE_SINGLE = 2, - STYLE_LITERAL = 3, - STYLE_FOLDED = 4, - STYLE_DOUBLE = 5; + if (signal != null && !isAbortSignal(signal)) { + throw new TypeError('Expected signal to be an instanceof AbortSignal'); + } -// Determines which scalar styles are possible and returns the preferred style. -// lineWidth = -1 => no limit. -// Pre-conditions: str.length > 0. -// Post-conditions: -// STYLE_PLAIN or STYLE_SINGLE => no \n are in the string. -// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1). -// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1). -function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, - testAmbiguousType, quotingType, forceQuotes, inblock) { + this[INTERNALS$2] = { + method, + redirect: init.redirect || input.redirect || 'follow', + headers, + parsedURL, + signal + }; - var i; - var char = 0; - var prevChar = null; - var hasLineBreak = false; - var hasFoldableLine = false; // only checked if shouldTrackWidth - var shouldTrackWidth = lineWidth !== -1; - var previousLineBreak = -1; // count the first line correctly - var plain = isPlainSafeFirst(codePointAt(string, 0)) - && isPlainSafeLast(codePointAt(string, string.length - 1)); + // node-fetch-only options + this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20; + this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true; + this.counter = init.counter || input.counter || 0; + this.agent = init.agent || input.agent; + } - if (singleLineOnly || forceQuotes) { - // Case: no block styles. - // Check for disallowed characters to rule out plain and single. - for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) { - char = codePointAt(string, i); - if (!isPrintable(char)) { - return STYLE_DOUBLE; - } - plain = plain && isPlainSafe(char, prevChar, inblock); - prevChar = char; - } - } else { - // Case: block styles permitted. - for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) { - char = codePointAt(string, i); - if (char === CHAR_LINE_FEED) { - hasLineBreak = true; - // Check if any line can be folded. - if (shouldTrackWidth) { - hasFoldableLine = hasFoldableLine || - // Foldable line = too long, and not more-indented. - (i - previousLineBreak - 1 > lineWidth && - string[previousLineBreak + 1] !== ' '); - previousLineBreak = i; - } - } else if (!isPrintable(char)) { - return STYLE_DOUBLE; - } - plain = plain && isPlainSafe(char, prevChar, inblock); - prevChar = char; - } - // in case the end is missing a \n - hasFoldableLine = hasFoldableLine || (shouldTrackWidth && - (i - previousLineBreak - 1 > lineWidth && - string[previousLineBreak + 1] !== ' ')); - } - // Although every style can represent \n without escaping, prefer block styles - // for multiline, since they're more readable and they don't add empty lines. - // Also prefer folding a super-long line. - if (!hasLineBreak && !hasFoldableLine) { - // Strings interpretable as another type have to be quoted; - // e.g. the string 'true' vs. the boolean true. - if (plain && !forceQuotes && !testAmbiguousType(string)) { - return STYLE_PLAIN; - } - return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE; - } - // Edge case: block indentation indicator can only have one digit. - if (indentPerLevel > 9 && needIndentIndicator(string)) { - return STYLE_DOUBLE; - } - // At this point we know block styles are valid. - // Prefer literal style unless we want to fold. - if (!forceQuotes) { - return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL; - } - return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE; -} + get method() { + return this[INTERNALS$2].method; + } -// Note: line breaking/folding is implemented for only the folded style. -// NB. We drop the last trailing newline (if any) of a returned block scalar -// since the dumper adds its own newline. This always works: -// • No ending newline => unaffected; already using strip "-" chomping. -// • Ending newline => removed then restored. -// Importantly, this keeps the "+" chomp indicator from gaining an extra line. -function writeScalar(state, string, level, iskey, inblock) { - state.dump = (function () { - if (string.length === 0) { - return state.quotingType === QUOTING_TYPE_DOUBLE ? '""' : "''"; - } - if (!state.noCompatMode) { - if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) { - return state.quotingType === QUOTING_TYPE_DOUBLE ? ('"' + string + '"') : ("'" + string + "'"); - } - } + get url() { + return format_url(this[INTERNALS$2].parsedURL); + } - var indent = state.indent * Math.max(1, level); // no 0-indent scalars - // As indentation gets deeper, let the width decrease monotonically - // to the lower bound min(state.lineWidth, 40). - // Note that this implies - // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound. - // state.lineWidth > 40 + state.indent: width decreases until the lower bound. - // This behaves better than a constant minimum width which disallows narrower options, - // or an indent threshold which causes the width to suddenly increase. - var lineWidth = state.lineWidth === -1 - ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent); + get headers() { + return this[INTERNALS$2].headers; + } - // Without knowing if keys are implicit/explicit, assume implicit for safety. - var singleLineOnly = iskey - // No block styles in flow mode. - || (state.flowLevel > -1 && level >= state.flowLevel); - function testAmbiguity(string) { - return testImplicitResolving(state, string); - } + get redirect() { + return this[INTERNALS$2].redirect; + } - switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, - testAmbiguity, state.quotingType, state.forceQuotes && !iskey, inblock)) { + get signal() { + return this[INTERNALS$2].signal; + } - case STYLE_PLAIN: - return string; - case STYLE_SINGLE: - return "'" + string.replace(/'/g, "''") + "'"; - case STYLE_LITERAL: - return '|' + blockHeader(string, state.indent) - + dropEndingNewline(indentString(string, indent)); - case STYLE_FOLDED: - return '>' + blockHeader(string, state.indent) - + dropEndingNewline(indentString(foldString(string, lineWidth), indent)); - case STYLE_DOUBLE: - return '"' + escapeString(string, lineWidth) + '"'; - default: - throw new YAMLException('impossible error: invalid scalar style'); - } - }()); + /** + * Clone this request + * + * @return Request + */ + clone() { + return new Request(this); + } } -// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9. -function blockHeader(string, indentPerLevel) { - var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : ''; +Body.mixIn(Request.prototype); - // note the special case: the string '\n' counts as a "trailing" empty line. - var clip = string[string.length - 1] === '\n'; - var keep = clip && (string[string.length - 2] === '\n' || string === '\n'); - var chomp = keep ? '+' : (clip ? '' : '-'); +Object.defineProperty(Request.prototype, Symbol.toStringTag, { + value: 'Request', + writable: false, + enumerable: false, + configurable: true +}); - return indentIndicator + chomp + '\n'; -} +Object.defineProperties(Request.prototype, { + method: { enumerable: true }, + url: { enumerable: true }, + headers: { enumerable: true }, + redirect: { enumerable: true }, + clone: { enumerable: true }, + signal: { enumerable: true } +}); -// (See the note for writeScalar.) -function dropEndingNewline(string) { - return string[string.length - 1] === '\n' ? string.slice(0, -1) : string; -} +/** + * Convert a Request to Node.js http request options. + * + * @param Request A Request instance + * @return Object The options object to be passed to http.request + */ +function getNodeRequestOptions(request) { + const parsedURL = request[INTERNALS$2].parsedURL; + const headers = new Headers(request[INTERNALS$2].headers); -// Note: a long line without a suitable break point will exceed the width limit. -// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0. -function foldString(string, width) { - // In folded style, $k$ consecutive newlines output as $k+1$ newlines— - // unless they're before or after a more-indented line, or at the very - // beginning or end, in which case $k$ maps to $k$. - // Therefore, parse each chunk as newline(s) followed by a content line. - var lineRe = /(\n+)([^\n]*)/g; + // fetch step 1.3 + if (!headers.has('Accept')) { + headers.set('Accept', '*/*'); + } + + // Basic fetch + if (!parsedURL.protocol || !parsedURL.hostname) { + throw new TypeError('Only absolute URLs are supported'); + } - // first line (possibly an empty line) - var result = (function () { - var nextLF = string.indexOf('\n'); - nextLF = nextLF !== -1 ? nextLF : string.length; - lineRe.lastIndex = nextLF; - return foldLine(string.slice(0, nextLF), width); - }()); - // If we haven't reached the first content line yet, don't add an extra \n. - var prevMoreIndented = string[0] === '\n' || string[0] === ' '; - var moreIndented; + if (!/^https?:$/.test(parsedURL.protocol)) { + throw new TypeError('Only HTTP(S) protocols are supported'); + } - // rest of the lines - var match; - while ((match = lineRe.exec(string))) { - var prefix = match[1], line = match[2]; - moreIndented = (line[0] === ' '); - result += prefix - + (!prevMoreIndented && !moreIndented && line !== '' - ? '\n' : '') - + foldLine(line, width); - prevMoreIndented = moreIndented; - } + if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) { + throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8'); + } - return result; -} + // HTTP-network-or-cache fetch steps 2.4-2.7 + let contentLengthValue = null; + if (request.body == null && /^(POST|PUT)$/i.test(request.method)) { + contentLengthValue = '0'; + } + if (request.body != null) { + const totalBytes = getTotalBytes(request); + if (typeof totalBytes === 'number') { + contentLengthValue = String(totalBytes); + } + } + if (contentLengthValue) { + headers.set('Content-Length', contentLengthValue); + } -// Greedy line breaking. -// Picks the longest line under the limit each time, -// otherwise settles for the shortest line over the limit. -// NB. More-indented lines *cannot* be folded, as that would add an extra \n. -function foldLine(line, width) { - if (line === '' || line[0] === ' ') return line; + // HTTP-network-or-cache fetch step 2.11 + if (!headers.has('User-Agent')) { + headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)'); + } - // Since a more-indented line adds a \n, breaks can't be followed by a space. - var breakRe = / [^ ]/g; // note: the match index will always be <= length-2. - var match; - // start is an inclusive index. end, curr, and next are exclusive. - var start = 0, end, curr = 0, next = 0; - var result = ''; + // HTTP-network-or-cache fetch step 2.15 + if (request.compress && !headers.has('Accept-Encoding')) { + headers.set('Accept-Encoding', 'gzip,deflate'); + } - // Invariants: 0 <= start <= length-1. - // 0 <= curr <= next <= max(0, length-2). curr - start <= width. - // Inside the loop: - // A match implies length >= 2, so curr and next are <= length-2. - while ((match = breakRe.exec(line))) { - next = match.index; - // maintain invariant: curr - start <= width - if (next - start > width) { - end = (curr > start) ? curr : next; // derive end <= length-2 - result += '\n' + line.slice(start, end); - // skip the space that was output as \n - start = end + 1; // derive start <= length-1 - } - curr = next; - } + let agent = request.agent; + if (typeof agent === 'function') { + agent = agent(parsedURL); + } - // By the invariants, start <= length-1, so there is something left over. - // It is either the whole string or a part starting from non-whitespace. - result += '\n'; - // Insert a break if the remainder is too long and there is a break available. - if (line.length - start > width && curr > start) { - result += line.slice(start, curr) + '\n' + line.slice(curr + 1); - } else { - result += line.slice(start); - } + if (!headers.has('Connection') && !agent) { + headers.set('Connection', 'close'); + } - return result.slice(1); // drop extra \n joiner + // HTTP-network fetch step 4.2 + // chunked encoding is handled by Node.js + + return Object.assign({}, parsedURL, { + method: request.method, + headers: exportNodeCompatibleHeaders(headers), + agent + }); } -// Escapes a double-quoted string. -function escapeString(string) { - var result = ''; - var char = 0; - var escapeSeq; +/** + * abort-error.js + * + * AbortError interface for cancelled requests + */ - for (var i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) { - char = codePointAt(string, i); - escapeSeq = ESCAPE_SEQUENCES[char]; +/** + * Create AbortError instance + * + * @param String message Error message for human + * @return AbortError + */ +function AbortError(message) { + Error.call(this, message); - if (!escapeSeq && isPrintable(char)) { - result += string[i]; - if (char >= 0x10000) result += string[i + 1]; - } else { - result += escapeSeq || encodeHex(char); - } - } + this.type = 'aborted'; + this.message = message; - return result; + // hide custom error implementation details from end-users + Error.captureStackTrace(this, this.constructor); } -function writeFlowSequence(state, level, object) { - var _result = '', - _tag = state.tag, - index, - length, - value; +AbortError.prototype = Object.create(Error.prototype); +AbortError.prototype.constructor = AbortError; +AbortError.prototype.name = 'AbortError'; - for (index = 0, length = object.length; index < length; index += 1) { - value = object[index]; +const URL$1 = Url.URL || whatwgUrl.URL; - if (state.replacer) { - value = state.replacer.call(object, String(index), value); - } +// fix an issue where "PassThrough", "resolve" aren't a named export for node <10 +const PassThrough$1 = Stream.PassThrough; - // Write only valid elements, put null instead of invalid elements. - if (writeNode(state, level, value, false, false) || - (typeof value === 'undefined' && - writeNode(state, level, null, false, false))) { +const isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) { + const orig = new URL$1(original).hostname; + const dest = new URL$1(destination).hostname; - if (_result !== '') _result += ',' + (!state.condenseFlow ? ' ' : ''); - _result += state.dump; - } - } + return orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest); +}; - state.tag = _tag; - state.dump = '[' + _result + ']'; -} +/** + * Fetch function + * + * @param Mixed url Absolute url or Request instance + * @param Object opts Fetch options + * @return Promise + */ +function fetch(url, opts) { -function writeBlockSequence(state, level, object, compact) { - var _result = '', - _tag = state.tag, - index, - length, - value; + // allow custom promise + if (!fetch.Promise) { + throw new Error('native promise missing, set fetch.Promise to your favorite alternative'); + } - for (index = 0, length = object.length; index < length; index += 1) { - value = object[index]; + Body.Promise = fetch.Promise; - if (state.replacer) { - value = state.replacer.call(object, String(index), value); - } + // wrap http.request into fetch + return new fetch.Promise(function (resolve, reject) { + // build request object + const request = new Request(url, opts); + const options = getNodeRequestOptions(request); - // Write only valid elements, put null instead of invalid elements. - if (writeNode(state, level + 1, value, true, true, false, true) || - (typeof value === 'undefined' && - writeNode(state, level + 1, null, true, true, false, true))) { + const send = (options.protocol === 'https:' ? https : http).request; + const signal = request.signal; - if (!compact || _result !== '') { - _result += generateNextLine(state, level); - } + let response = null; - if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { - _result += '-'; - } else { - _result += '- '; - } + const abort = function abort() { + let error = new AbortError('The user aborted a request.'); + reject(error); + if (request.body && request.body instanceof Stream.Readable) { + request.body.destroy(error); + } + if (!response || !response.body) return; + response.body.emit('error', error); + }; - _result += state.dump; - } - } + if (signal && signal.aborted) { + abort(); + return; + } - state.tag = _tag; - state.dump = _result || '[]'; // Empty sequence if no valid values. -} + const abortAndFinalize = function abortAndFinalize() { + abort(); + finalize(); + }; -function writeFlowMapping(state, level, object) { - var _result = '', - _tag = state.tag, - objectKeyList = Object.keys(object), - index, - length, - objectKey, - objectValue, - pairBuffer; + // send request + const req = send(options); + let reqTimeout; - for (index = 0, length = objectKeyList.length; index < length; index += 1) { + if (signal) { + signal.addEventListener('abort', abortAndFinalize); + } - pairBuffer = ''; - if (_result !== '') pairBuffer += ', '; + function finalize() { + req.abort(); + if (signal) signal.removeEventListener('abort', abortAndFinalize); + clearTimeout(reqTimeout); + } - if (state.condenseFlow) pairBuffer += '"'; + if (request.timeout) { + req.once('socket', function (socket) { + reqTimeout = setTimeout(function () { + reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout')); + finalize(); + }, request.timeout); + }); + } - objectKey = objectKeyList[index]; - objectValue = object[objectKey]; + req.on('error', function (err) { + reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err)); + finalize(); + }); - if (state.replacer) { - objectValue = state.replacer.call(object, objectKey, objectValue); - } + req.on('response', function (res) { + clearTimeout(reqTimeout); - if (!writeNode(state, level, objectKey, false, false)) { - continue; // Skip this pair because of invalid key; - } + const headers = createHeadersLenient(res.headers); - if (state.dump.length > 1024) pairBuffer += '? '; + // HTTP fetch step 5 + if (fetch.isRedirect(res.statusCode)) { + // HTTP fetch step 5.2 + const location = headers.get('Location'); - pairBuffer += state.dump + (state.condenseFlow ? '"' : '') + ':' + (state.condenseFlow ? '' : ' '); + // HTTP fetch step 5.3 + let locationURL = null; + try { + locationURL = location === null ? null : new URL$1(location, request.url).toString(); + } catch (err) { + // error here can only be invalid URL in Location: header + // do not throw when options.redirect == manual + // let the user extract the errorneous redirect URL + if (request.redirect !== 'manual') { + reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect')); + finalize(); + return; + } + } - if (!writeNode(state, level, objectValue, false, false)) { - continue; // Skip this pair because of invalid value. - } + // HTTP fetch step 5.5 + switch (request.redirect) { + case 'error': + reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect')); + finalize(); + return; + case 'manual': + // node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL. + if (locationURL !== null) { + // handle corrupted header + try { + headers.set('Location', locationURL); + } catch (err) { + // istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request + reject(err); + } + } + break; + case 'follow': + // HTTP-redirect fetch step 2 + if (locationURL === null) { + break; + } - pairBuffer += state.dump; + // HTTP-redirect fetch step 5 + if (request.counter >= request.follow) { + reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect')); + finalize(); + return; + } - // Both key and value are valid. - _result += pairBuffer; - } + // HTTP-redirect fetch step 6 (counter increment) + // Create a new Request object. + const requestOpts = { + headers: new Headers(request.headers), + follow: request.follow, + counter: request.counter + 1, + agent: request.agent, + compress: request.compress, + method: request.method, + body: request.body, + signal: request.signal, + timeout: request.timeout, + size: request.size + }; - state.tag = _tag; - state.dump = '{' + _result + '}'; -} + if (!isDomainOrSubdomain(request.url, locationURL)) { + for (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) { + requestOpts.headers.delete(name); + } + } -function writeBlockMapping(state, level, object, compact) { - var _result = '', - _tag = state.tag, - objectKeyList = Object.keys(object), - index, - length, - objectKey, - objectValue, - explicitPair, - pairBuffer; + // HTTP-redirect fetch step 9 + if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) { + reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect')); + finalize(); + return; + } - // Allow sorting keys so that the output file is deterministic - if (state.sortKeys === true) { - // Default sorting - objectKeyList.sort(); - } else if (typeof state.sortKeys === 'function') { - // Custom sort function - objectKeyList.sort(state.sortKeys); - } else if (state.sortKeys) { - // Something is wrong - throw new YAMLException('sortKeys must be a boolean or a function'); - } + // HTTP-redirect fetch step 11 + if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') { + requestOpts.method = 'GET'; + requestOpts.body = undefined; + requestOpts.headers.delete('content-length'); + } - for (index = 0, length = objectKeyList.length; index < length; index += 1) { - pairBuffer = ''; + // HTTP-redirect fetch step 15 + resolve(fetch(new Request(locationURL, requestOpts))); + finalize(); + return; + } + } - if (!compact || _result !== '') { - pairBuffer += generateNextLine(state, level); - } + // prepare response + res.once('end', function () { + if (signal) signal.removeEventListener('abort', abortAndFinalize); + }); + let body = res.pipe(new PassThrough$1()); - objectKey = objectKeyList[index]; - objectValue = object[objectKey]; + const response_options = { + url: request.url, + status: res.statusCode, + statusText: res.statusMessage, + headers: headers, + size: request.size, + timeout: request.timeout, + counter: request.counter + }; - if (state.replacer) { - objectValue = state.replacer.call(object, objectKey, objectValue); - } + // HTTP-network fetch step 12.1.1.3 + const codings = headers.get('Content-Encoding'); - if (!writeNode(state, level + 1, objectKey, true, true, true)) { - continue; // Skip this pair because of invalid key. - } + // HTTP-network fetch step 12.1.1.4: handle content codings - explicitPair = (state.tag !== null && state.tag !== '?') || - (state.dump && state.dump.length > 1024); + // in following scenarios we ignore compression support + // 1. compression support is disabled + // 2. HEAD request + // 3. no Content-Encoding header + // 4. no content response (204) + // 5. content not modified response (304) + if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) { + response = new Response(body, response_options); + resolve(response); + return; + } - if (explicitPair) { - if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { - pairBuffer += '?'; - } else { - pairBuffer += '? '; - } - } + // For Node v6+ + // Be less strict when decoding compressed responses, since sometimes + // servers send slightly invalid responses that are still accepted + // by common browsers. + // Always using Z_SYNC_FLUSH is what cURL does. + const zlibOptions = { + flush: zlib.Z_SYNC_FLUSH, + finishFlush: zlib.Z_SYNC_FLUSH + }; - pairBuffer += state.dump; + // for gzip + if (codings == 'gzip' || codings == 'x-gzip') { + body = body.pipe(zlib.createGunzip(zlibOptions)); + response = new Response(body, response_options); + resolve(response); + return; + } - if (explicitPair) { - pairBuffer += generateNextLine(state, level); - } + // for deflate + if (codings == 'deflate' || codings == 'x-deflate') { + // handle the infamous raw deflate response from old servers + // a hack for old IIS and Apache servers + const raw = res.pipe(new PassThrough$1()); + raw.once('data', function (chunk) { + // see http://stackoverflow.com/questions/37519828 + if ((chunk[0] & 0x0F) === 0x08) { + body = body.pipe(zlib.createInflate()); + } else { + body = body.pipe(zlib.createInflateRaw()); + } + response = new Response(body, response_options); + resolve(response); + }); + return; + } - if (!writeNode(state, level + 1, objectValue, true, explicitPair)) { - continue; // Skip this pair because of invalid value. - } + // for br + if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') { + body = body.pipe(zlib.createBrotliDecompress()); + response = new Response(body, response_options); + resolve(response); + return; + } - if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { - pairBuffer += ':'; - } else { - pairBuffer += ': '; - } + // otherwise, use response as-is + response = new Response(body, response_options); + resolve(response); + }); - pairBuffer += state.dump; + writeToStream(req, request); + }); +} +/** + * Redirect code matching + * + * @param Number code Status code + * @return Boolean + */ +fetch.isRedirect = function (code) { + return code === 301 || code === 302 || code === 303 || code === 307 || code === 308; +}; - // Both key and value are valid. - _result += pairBuffer; - } +// expose Promise +fetch.Promise = global.Promise; - state.tag = _tag; - state.dump = _result || '{}'; // Empty mapping if no valid pairs. -} +module.exports = exports = fetch; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = exports; +exports.Headers = Headers; +exports.Request = Request; +exports.Response = Response; +exports.FetchError = FetchError; -function detectType(state, object, explicit) { - var _result, typeList, index, length, type, style; - typeList = explicit ? state.explicitTypes : state.implicitTypes; +/***/ }), +/* 455 */ +/***/ (function(module, __unusedexports, __webpack_require__) { - for (index = 0, length = typeList.length; index < length; index += 1) { - type = typeList[index]; +"use strict"; - if ((type.instanceOf || type.predicate) && - (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) && - (!type.predicate || type.predicate(object))) { - if (explicit) { - if (type.multi && type.representName) { - state.tag = type.representName(object); - } else { - state.tag = type.tag; - } - } else { - state.tag = '?'; - } +var http = __webpack_require__(605) +var https = __webpack_require__(211) +var url = __webpack_require__(835) +var util = __webpack_require__(669) +var stream = __webpack_require__(413) +var zlib = __webpack_require__(761) +var aws2 = __webpack_require__(942) +var aws4 = __webpack_require__(658) +var httpSignature = __webpack_require__(367) +var mime = __webpack_require__(233) +var caseless = __webpack_require__(254) +var ForeverAgent = __webpack_require__(792) +var FormData = __webpack_require__(928) +var extend = __webpack_require__(374) +var isstream = __webpack_require__(857) +var isTypedArray = __webpack_require__(978).strict +var helpers = __webpack_require__(151) +var cookies = __webpack_require__(602) +var getProxyFromURI = __webpack_require__(721) +var Querystring = __webpack_require__(902).Querystring +var Har = __webpack_require__(416).Har +var Auth = __webpack_require__(220).Auth +var OAuth = __webpack_require__(287).OAuth +var hawk = __webpack_require__(452) +var Multipart = __webpack_require__(469).Multipart +var Redirect = __webpack_require__(552).Redirect +var Tunnel = __webpack_require__(461).Tunnel +var now = __webpack_require__(551) +var Buffer = __webpack_require__(149).Buffer - if (type.represent) { - style = state.styleMap[type.tag] || type.defaultStyle; +var safeStringify = helpers.safeStringify +var isReadStream = helpers.isReadStream +var toBase64 = helpers.toBase64 +var defer = helpers.defer +var copy = helpers.copy +var version = helpers.version +var globalCookieJar = cookies.jar() - if (_toString.call(type.represent) === '[object Function]') { - _result = type.represent(object, style); - } else if (_hasOwnProperty.call(type.represent, style)) { - _result = type.represent[style](object, style); - } else { - throw new YAMLException('!<' + type.tag + '> tag resolver accepts not "' + style + '" style'); - } +var globalPool = {} - state.dump = _result; - } +function filterForNonReserved (reserved, options) { + // Filter out properties that are not reserved. + // Reserved values are passed in at call site. - return true; + var object = {} + for (var i in options) { + var notReserved = (reserved.indexOf(i) === -1) + if (notReserved) { + object[i] = options[i] } } - - return false; + return object } -// Serializes `object` and writes it to global `result`. -// Returns true on success, or false on invalid object. -// -function writeNode(state, level, object, block, compact, iskey, isblockseq) { - state.tag = null; - state.dump = object; - - if (!detectType(state, object, false)) { - detectType(state, object, true); - } - - var type = _toString.call(state.dump); - var inblock = block; - var tagStr; +function filterOutReservedFunctions (reserved, options) { + // Filter out properties that are functions and are reserved. + // Reserved values are passed in at call site. - if (block) { - block = (state.flowLevel < 0 || state.flowLevel > level); + var object = {} + for (var i in options) { + var isReserved = !(reserved.indexOf(i) === -1) + var isFunction = (typeof options[i] === 'function') + if (!(isReserved && isFunction)) { + object[i] = options[i] + } } + return object +} - var objectOrArray = type === '[object Object]' || type === '[object Array]', - duplicateIndex, - duplicate; - - if (objectOrArray) { - duplicateIndex = state.duplicates.indexOf(object); - duplicate = duplicateIndex !== -1; +// Return a simpler request object to allow serialization +function requestToJSON () { + var self = this + return { + uri: self.uri, + method: self.method, + headers: self.headers } +} - if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) { - compact = false; +// Return a simpler response object to allow serialization +function responseToJSON () { + var self = this + return { + statusCode: self.statusCode, + body: self.body, + headers: self.headers, + request: requestToJSON.call(self.request) } +} - if (duplicate && state.usedDuplicates[duplicateIndex]) { - state.dump = '*ref_' + duplicateIndex; - } else { - if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) { - state.usedDuplicates[duplicateIndex] = true; - } - if (type === '[object Object]') { - if (block && (Object.keys(state.dump).length !== 0)) { - writeBlockMapping(state, level, state.dump, compact); - if (duplicate) { - state.dump = '&ref_' + duplicateIndex + state.dump; - } - } else { - writeFlowMapping(state, level, state.dump); - if (duplicate) { - state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; - } - } - } else if (type === '[object Array]') { - if (block && (state.dump.length !== 0)) { - if (state.noArrayIndent && !isblockseq && level > 0) { - writeBlockSequence(state, level - 1, state.dump, compact); - } else { - writeBlockSequence(state, level, state.dump, compact); - } - if (duplicate) { - state.dump = '&ref_' + duplicateIndex + state.dump; - } - } else { - writeFlowSequence(state, level, state.dump); - if (duplicate) { - state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; - } - } - } else if (type === '[object String]') { - if (state.tag !== '?') { - writeScalar(state, state.dump, level, iskey, inblock); - } - } else if (type === '[object Undefined]') { - return false; - } else { - if (state.skipInvalid) return false; - throw new YAMLException('unacceptable kind of an object to dump ' + type); - } +function Request (options) { + // if given the method property in options, set property explicitMethod to true - if (state.tag !== null && state.tag !== '?') { - // Need to encode all characters except those allowed by the spec: - // - // [35] ns-dec-digit ::= [#x30-#x39] /* 0-9 */ - // [36] ns-hex-digit ::= ns-dec-digit - // | [#x41-#x46] /* A-F */ | [#x61-#x66] /* a-f */ - // [37] ns-ascii-letter ::= [#x41-#x5A] /* A-Z */ | [#x61-#x7A] /* a-z */ - // [38] ns-word-char ::= ns-dec-digit | ns-ascii-letter | “-” - // [39] ns-uri-char ::= “%” ns-hex-digit ns-hex-digit | ns-word-char | “#” - // | “;” | “/” | “?” | “:” | “@” | “&” | “=” | “+” | “$” | “,” - // | “_” | “.” | “!” | “~” | “*” | “'” | “(” | “)” | “[” | “]” - // - // Also need to encode '!' because it has special meaning (end of tag prefix). - // - tagStr = encodeURI( - state.tag[0] === '!' ? state.tag.slice(1) : state.tag - ).replace(/!/g, '%21'); + // extend the Request instance with any non-reserved properties + // remove any reserved functions from the options object + // set Request instance to be readable and writable + // call init - if (state.tag[0] === '!') { - tagStr = '!' + tagStr; - } else if (tagStr.slice(0, 18) === 'tag:yaml.org,2002:') { - tagStr = '!!' + tagStr.slice(18); - } else { - tagStr = '!<' + tagStr + '>'; - } + var self = this - state.dump = tagStr + ' ' + state.dump; - } + // start with HAR, then override with additional options + if (options.har) { + self._har = new Har(self) + options = self._har.options(options) } - return true; -} - -function getDuplicateReferences(object, state) { - var objects = [], - duplicatesIndexes = [], - index, - length; + stream.Stream.call(self) + var reserved = Object.keys(Request.prototype) + var nonReserved = filterForNonReserved(reserved, options) - inspectNode(object, objects, duplicatesIndexes); + extend(self, nonReserved) + options = filterOutReservedFunctions(reserved, options) - for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) { - state.duplicates.push(objects[duplicatesIndexes[index]]); + self.readable = true + self.writable = true + if (options.method) { + self.explicitMethod = true } - state.usedDuplicates = new Array(length); + self._qs = new Querystring(self) + self._auth = new Auth(self) + self._oauth = new OAuth(self) + self._multipart = new Multipart(self) + self._redirect = new Redirect(self) + self._tunnel = new Tunnel(self) + self.init(options) } -function inspectNode(object, objects, duplicatesIndexes) { - var objectKeyList, - index, - length; - - if (object !== null && typeof object === 'object') { - index = objects.indexOf(object); - if (index !== -1) { - if (duplicatesIndexes.indexOf(index) === -1) { - duplicatesIndexes.push(index); - } - } else { - objects.push(object); - - if (Array.isArray(object)) { - for (index = 0, length = object.length; index < length; index += 1) { - inspectNode(object[index], objects, duplicatesIndexes); - } - } else { - objectKeyList = Object.keys(object); +util.inherits(Request, stream.Stream) - for (index = 0, length = objectKeyList.length; index < length; index += 1) { - inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes); - } - } - } +// Debugging +Request.debug = process.env.NODE_DEBUG && /\brequest\b/.test(process.env.NODE_DEBUG) +function debug () { + if (Request.debug) { + console.error('REQUEST %s', util.format.apply(util, arguments)) } } +Request.prototype.debug = debug -function dump(input, options) { - options = options || {}; - - var state = new State(options); - - if (!state.noRefs) getDuplicateReferences(input, state); - - var value = input; - - if (state.replacer) { - value = state.replacer.call({ '': value }, '', value); +Request.prototype.init = function (options) { + // init() contains all the code to setup the request object. + // the actual outgoing request is not started until start() is called + // this function is called from both the constructor and on redirect. + var self = this + if (!options) { + options = {} } + self.headers = self.headers ? copy(self.headers) : {} - if (writeNode(state, 0, value, true, true)) return state.dump + '\n'; + // Delete headers with value undefined since they break + // ClientRequest.OutgoingMessage.setHeader in node 0.12 + for (var headerName in self.headers) { + if (typeof self.headers[headerName] === 'undefined') { + delete self.headers[headerName] + } + } - return ''; -} + caseless.httpify(self, self.headers) -module.exports.dump = dump; + if (!self.method) { + self.method = options.method || 'GET' + } + if (!self.localAddress) { + self.localAddress = options.localAddress + } + self._qs.init(options) -/***/ }), + debug(options) + if (!self.pool && self.pool !== false) { + self.pool = globalPool + } + self.dests = self.dests || [] + self.__isRequestRequest = true -/***/ 8179: -/***/ ((module) => { + // Protect against double callback + if (!self._callback && self.callback) { + self._callback = self.callback + self.callback = function () { + if (self._callbackCalled) { + return // Print a warning maybe? + } + self._callbackCalled = true + self._callback.apply(self, arguments) + } + self.on('error', self.callback.bind()) + self.on('complete', self.callback.bind(self, null)) + } -"use strict"; -// YAML error class. http://stackoverflow.com/questions/8458984 -// + // People use this property instead all the time, so support it + if (!self.uri && self.url) { + self.uri = self.url + delete self.url + } + // If there's a baseUrl, then use it as the base URL (i.e. uri must be + // specified as a relative path and is appended to baseUrl). + if (self.baseUrl) { + if (typeof self.baseUrl !== 'string') { + return self.emit('error', new Error('options.baseUrl must be a string')) + } + if (typeof self.uri !== 'string') { + return self.emit('error', new Error('options.uri must be a string when using options.baseUrl')) + } -function formatError(exception, compact) { - var where = '', message = exception.reason || '(unknown reason)'; + if (self.uri.indexOf('//') === 0 || self.uri.indexOf('://') !== -1) { + return self.emit('error', new Error('options.uri must be a path when using options.baseUrl')) + } - if (!exception.mark) return message; + // Handle all cases to make sure that there's only one slash between + // baseUrl and uri. + var baseUrlEndsWithSlash = self.baseUrl.lastIndexOf('/') === self.baseUrl.length - 1 + var uriStartsWithSlash = self.uri.indexOf('/') === 0 - if (exception.mark.name) { - where += 'in "' + exception.mark.name + '" '; + if (baseUrlEndsWithSlash && uriStartsWithSlash) { + self.uri = self.baseUrl + self.uri.slice(1) + } else if (baseUrlEndsWithSlash || uriStartsWithSlash) { + self.uri = self.baseUrl + self.uri + } else if (self.uri === '') { + self.uri = self.baseUrl + } else { + self.uri = self.baseUrl + '/' + self.uri + } + delete self.baseUrl } - where += '(' + (exception.mark.line + 1) + ':' + (exception.mark.column + 1) + ')'; - - if (!compact && exception.mark.snippet) { - where += '\n\n' + exception.mark.snippet; + // A URI is needed by this point, emit error if we haven't been able to get one + if (!self.uri) { + return self.emit('error', new Error('options.uri is a required argument')) } - return message + ' ' + where; -} + // If a string URI/URL was given, parse it into a URL object + if (typeof self.uri === 'string') { + self.uri = url.parse(self.uri) + } + // Some URL objects are not from a URL parsed string and need href added + if (!self.uri.href) { + self.uri.href = url.format(self.uri) + } -function YAMLException(reason, mark) { - // Super constructor - Error.call(this); + // DEPRECATED: Warning for users of the old Unix Sockets URL Scheme + if (self.uri.protocol === 'unix:') { + return self.emit('error', new Error('`unix://` URL scheme is no longer supported. Please use the format `http://unix:SOCKET:PATH`')) + } - this.name = 'YAMLException'; - this.reason = reason; - this.mark = mark; - this.message = formatError(this, false); + // Support Unix Sockets + if (self.uri.host === 'unix') { + self.enableUnixSocket() + } - // Include stack trace in error object - if (Error.captureStackTrace) { - // Chrome and NodeJS - Error.captureStackTrace(this, this.constructor); - } else { - // FF, IE 10+ and Safari 6+. Fallback for others - this.stack = (new Error()).stack || ''; + if (self.strictSSL === false) { + self.rejectUnauthorized = false } -} + if (!self.uri.pathname) { self.uri.pathname = '/' } -// Inherit from Error -YAMLException.prototype = Object.create(Error.prototype); -YAMLException.prototype.constructor = YAMLException; + if (!(self.uri.host || (self.uri.hostname && self.uri.port)) && !self.uri.isUnix) { + // Invalid URI: it may generate lot of bad errors, like 'TypeError: Cannot call method `indexOf` of undefined' in CookieJar + // Detect and reject it as soon as possible + var faultyUri = url.format(self.uri) + var message = 'Invalid URI "' + faultyUri + '"' + if (Object.keys(options).length === 0) { + // No option ? This can be the sign of a redirect + // As this is a case where the user cannot do anything (they didn't call request directly with this URL) + // they should be warned that it can be caused by a redirection (can save some hair) + message += '. This can be caused by a crappy redirection.' + } + // This error was fatal + self.abort() + return self.emit('error', new Error(message)) + } + if (!self.hasOwnProperty('proxy')) { + self.proxy = getProxyFromURI(self.uri) + } -YAMLException.prototype.toString = function toString(compact) { - return this.name + ': ' + formatError(this, compact); -}; + self.tunnel = self._tunnel.isEnabled() + if (self.proxy) { + self._tunnel.setup(options) + } + self._redirect.onRequest(options) -module.exports = YAMLException; + self.setHost = false + if (!self.hasHeader('host')) { + var hostHeaderName = self.originalHostHeaderName || 'host' + self.setHeader(hostHeaderName, self.uri.host) + // Drop :port suffix from Host header if known protocol. + if (self.uri.port) { + if ((self.uri.port === '80' && self.uri.protocol === 'http:') || + (self.uri.port === '443' && self.uri.protocol === 'https:')) { + self.setHeader(hostHeaderName, self.uri.hostname) + } + } + self.setHost = true + } + self.jar(self._jar || options.jar) -/***/ }), + if (!self.uri.port) { + if (self.uri.protocol === 'http:') { self.uri.port = 80 } else if (self.uri.protocol === 'https:') { self.uri.port = 443 } + } -/***/ 1161: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (self.proxy && !self.tunnel) { + self.port = self.proxy.port + self.host = self.proxy.hostname + } else { + self.port = self.uri.port + self.host = self.uri.hostname + } -"use strict"; + if (options.form) { + self.form(options.form) + } + if (options.formData) { + var formData = options.formData + var requestForm = self.form() + var appendFormValue = function (key, value) { + if (value && value.hasOwnProperty('value') && value.hasOwnProperty('options')) { + requestForm.append(key, value.value, value.options) + } else { + requestForm.append(key, value) + } + } + for (var formKey in formData) { + if (formData.hasOwnProperty(formKey)) { + var formValue = formData[formKey] + if (formValue instanceof Array) { + for (var j = 0; j < formValue.length; j++) { + appendFormValue(formKey, formValue[j]) + } + } else { + appendFormValue(formKey, formValue) + } + } + } + } -/*eslint-disable max-len,no-use-before-define*/ + if (options.qs) { + self.qs(options.qs) + } -var common = __nccwpck_require__(6829); -var YAMLException = __nccwpck_require__(8179); -var makeSnippet = __nccwpck_require__(6975); -var DEFAULT_SCHEMA = __nccwpck_require__(8759); + if (self.uri.path) { + self.path = self.uri.path + } else { + self.path = self.uri.pathname + (self.uri.search || '') + } + if (self.path.length === 0) { + self.path = '/' + } -var _hasOwnProperty = Object.prototype.hasOwnProperty; + // Auth must happen last in case signing is dependent on other headers + if (options.aws) { + self.aws(options.aws) + } + if (options.hawk) { + self.hawk(options.hawk) + } -var CONTEXT_FLOW_IN = 1; -var CONTEXT_FLOW_OUT = 2; -var CONTEXT_BLOCK_IN = 3; -var CONTEXT_BLOCK_OUT = 4; + if (options.httpSignature) { + self.httpSignature(options.httpSignature) + } + if (options.auth) { + if (Object.prototype.hasOwnProperty.call(options.auth, 'username')) { + options.auth.user = options.auth.username + } + if (Object.prototype.hasOwnProperty.call(options.auth, 'password')) { + options.auth.pass = options.auth.password + } -var CHOMPING_CLIP = 1; -var CHOMPING_STRIP = 2; -var CHOMPING_KEEP = 3; + self.auth( + options.auth.user, + options.auth.pass, + options.auth.sendImmediately, + options.auth.bearer + ) + } + if (self.gzip && !self.hasHeader('accept-encoding')) { + self.setHeader('accept-encoding', 'gzip, deflate') + } -var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; -var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/; -var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/; -var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i; -var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i; + if (self.uri.auth && !self.hasHeader('authorization')) { + var uriAuthPieces = self.uri.auth.split(':').map(function (item) { return self._qs.unescape(item) }) + self.auth(uriAuthPieces[0], uriAuthPieces.slice(1).join(':'), true) + } + if (!self.tunnel && self.proxy && self.proxy.auth && !self.hasHeader('proxy-authorization')) { + var proxyAuthPieces = self.proxy.auth.split(':').map(function (item) { return self._qs.unescape(item) }) + var authHeader = 'Basic ' + toBase64(proxyAuthPieces.join(':')) + self.setHeader('proxy-authorization', authHeader) + } -function _class(obj) { return Object.prototype.toString.call(obj); } + if (self.proxy && !self.tunnel) { + self.path = (self.uri.protocol + '//' + self.uri.host + self.path) + } -function is_EOL(c) { - return (c === 0x0A/* LF */) || (c === 0x0D/* CR */); -} + if (options.json) { + self.json(options.json) + } + if (options.multipart) { + self.multipart(options.multipart) + } -function is_WHITE_SPACE(c) { - return (c === 0x09/* Tab */) || (c === 0x20/* Space */); -} + if (options.time) { + self.timing = true -function is_WS_OR_EOL(c) { - return (c === 0x09/* Tab */) || - (c === 0x20/* Space */) || - (c === 0x0A/* LF */) || - (c === 0x0D/* CR */); -} + // NOTE: elapsedTime is deprecated in favor of .timings + self.elapsedTime = self.elapsedTime || 0 + } -function is_FLOW_INDICATOR(c) { - return c === 0x2C/* , */ || - c === 0x5B/* [ */ || - c === 0x5D/* ] */ || - c === 0x7B/* { */ || - c === 0x7D/* } */; -} + function setContentLength () { + if (isTypedArray(self.body)) { + self.body = Buffer.from(self.body) + } -function fromHexCode(c) { - var lc; + if (!self.hasHeader('content-length')) { + var length + if (typeof self.body === 'string') { + length = Buffer.byteLength(self.body) + } else if (Array.isArray(self.body)) { + length = self.body.reduce(function (a, b) { return a + b.length }, 0) + } else { + length = self.body.length + } - if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { - return c - 0x30; + if (length) { + self.setHeader('content-length', length) + } else { + self.emit('error', new Error('Argument error, options.body.')) + } + } + } + if (self.body && !isstream(self.body)) { + setContentLength() } - /*eslint-disable no-bitwise*/ - lc = c | 0x20; - - if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) { - return lc - 0x61 + 10; + if (options.oauth) { + self.oauth(options.oauth) + } else if (self._oauth.params && self.hasHeader('authorization')) { + self.oauth(self._oauth.params) } - return -1; -} + var protocol = self.proxy && !self.tunnel ? self.proxy.protocol : self.uri.protocol + var defaultModules = {'http:': http, 'https:': https} + var httpModules = self.httpModules || {} -function escapedHexLen(c) { - if (c === 0x78/* x */) { return 2; } - if (c === 0x75/* u */) { return 4; } - if (c === 0x55/* U */) { return 8; } - return 0; -} + self.httpModule = httpModules[protocol] || defaultModules[protocol] -function fromDecimalCode(c) { - if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { - return c - 0x30; + if (!self.httpModule) { + return self.emit('error', new Error('Invalid protocol: ' + protocol)) } - return -1; -} + if (options.ca) { + self.ca = options.ca + } -function simpleEscapeSequence(c) { - /* eslint-disable indent */ - return (c === 0x30/* 0 */) ? '\x00' : - (c === 0x61/* a */) ? '\x07' : - (c === 0x62/* b */) ? '\x08' : - (c === 0x74/* t */) ? '\x09' : - (c === 0x09/* Tab */) ? '\x09' : - (c === 0x6E/* n */) ? '\x0A' : - (c === 0x76/* v */) ? '\x0B' : - (c === 0x66/* f */) ? '\x0C' : - (c === 0x72/* r */) ? '\x0D' : - (c === 0x65/* e */) ? '\x1B' : - (c === 0x20/* Space */) ? ' ' : - (c === 0x22/* " */) ? '\x22' : - (c === 0x2F/* / */) ? '/' : - (c === 0x5C/* \ */) ? '\x5C' : - (c === 0x4E/* N */) ? '\x85' : - (c === 0x5F/* _ */) ? '\xA0' : - (c === 0x4C/* L */) ? '\u2028' : - (c === 0x50/* P */) ? '\u2029' : ''; -} + if (!self.agent) { + if (options.agentOptions) { + self.agentOptions = options.agentOptions + } -function charFromCodepoint(c) { - if (c <= 0xFFFF) { - return String.fromCharCode(c); + if (options.agentClass) { + self.agentClass = options.agentClass + } else if (options.forever) { + var v = version() + // use ForeverAgent in node 0.10- only + if (v.major === 0 && v.minor <= 10) { + self.agentClass = protocol === 'http:' ? ForeverAgent : ForeverAgent.SSL + } else { + self.agentClass = self.httpModule.Agent + self.agentOptions = self.agentOptions || {} + self.agentOptions.keepAlive = true + } + } else { + self.agentClass = self.httpModule.Agent + } } - // Encode UTF-16 surrogate pair - // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF - return String.fromCharCode( - ((c - 0x010000) >> 10) + 0xD800, - ((c - 0x010000) & 0x03FF) + 0xDC00 - ); -} -var simpleEscapeCheck = new Array(256); // integer, for fast access -var simpleEscapeMap = new Array(256); -for (var i = 0; i < 256; i++) { - simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0; - simpleEscapeMap[i] = simpleEscapeSequence(i); + if (self.pool === false) { + self.agent = false + } else { + self.agent = self.agent || self.getNewAgent() + } + + self.on('pipe', function (src) { + if (self.ntick && self._started) { + self.emit('error', new Error('You cannot pipe to this stream after the outbound request has started.')) + } + self.src = src + if (isReadStream(src)) { + if (!self.hasHeader('content-type')) { + self.setHeader('content-type', mime.lookup(src.path)) + } + } else { + if (src.headers) { + for (var i in src.headers) { + if (!self.hasHeader(i)) { + self.setHeader(i, src.headers[i]) + } + } + } + if (self._json && !self.hasHeader('content-type')) { + self.setHeader('content-type', 'application/json') + } + if (src.method && !self.explicitMethod) { + self.method = src.method + } + } + + // self.on('pipe', function () { + // console.error('You have already piped to this stream. Pipeing twice is likely to break the request.') + // }) + }) + + defer(function () { + if (self._aborted) { + return + } + + var end = function () { + if (self._form) { + if (!self._auth.hasAuth) { + self._form.pipe(self) + } else if (self._auth.hasAuth && self._auth.sentAuth) { + self._form.pipe(self) + } + } + if (self._multipart && self._multipart.chunked) { + self._multipart.body.pipe(self) + } + if (self.body) { + if (isstream(self.body)) { + self.body.pipe(self) + } else { + setContentLength() + if (Array.isArray(self.body)) { + self.body.forEach(function (part) { + self.write(part) + }) + } else { + self.write(self.body) + } + self.end() + } + } else if (self.requestBodyStream) { + console.warn('options.requestBodyStream is deprecated, please pass the request object to stream.pipe.') + self.requestBodyStream.pipe(self) + } else if (!self.src) { + if (self._auth.hasAuth && !self._auth.sentAuth) { + self.end() + return + } + if (self.method !== 'GET' && typeof self.method !== 'undefined') { + self.setHeader('content-length', 0) + } + self.end() + } + } + + if (self._form && !self.hasHeader('content-length')) { + // Before ending the request, we had to compute the length of the whole form, asyncly + self.setHeader(self._form.getHeaders(), true) + self._form.getLength(function (err, length) { + if (!err && !isNaN(length)) { + self.setHeader('content-length', length) + } + end() + }) + } else { + end() + } + + self.ntick = true + }) } +Request.prototype.getNewAgent = function () { + var self = this + var Agent = self.agentClass + var options = {} + if (self.agentOptions) { + for (var i in self.agentOptions) { + options[i] = self.agentOptions[i] + } + } + if (self.ca) { + options.ca = self.ca + } + if (self.ciphers) { + options.ciphers = self.ciphers + } + if (self.secureProtocol) { + options.secureProtocol = self.secureProtocol + } + if (self.secureOptions) { + options.secureOptions = self.secureOptions + } + if (typeof self.rejectUnauthorized !== 'undefined') { + options.rejectUnauthorized = self.rejectUnauthorized + } + + if (self.cert && self.key) { + options.key = self.key + options.cert = self.cert + } -function State(input, options) { - this.input = input; + if (self.pfx) { + options.pfx = self.pfx + } - this.filename = options['filename'] || null; - this.schema = options['schema'] || DEFAULT_SCHEMA; - this.onWarning = options['onWarning'] || null; - // (Hidden) Remove? makes the loader to expect YAML 1.1 documents - // if such documents have no explicit %YAML directive - this.legacy = options['legacy'] || false; + if (self.passphrase) { + options.passphrase = self.passphrase + } - this.json = options['json'] || false; - this.listener = options['listener'] || null; + var poolKey = '' - this.implicitTypes = this.schema.compiledImplicit; - this.typeMap = this.schema.compiledTypeMap; + // different types of agents are in different pools + if (Agent !== self.httpModule.Agent) { + poolKey += Agent.name + } - this.length = input.length; - this.position = 0; - this.line = 0; - this.lineStart = 0; - this.lineIndent = 0; + // ca option is only relevant if proxy or destination are https + var proxy = self.proxy + if (typeof proxy === 'string') { + proxy = url.parse(proxy) + } + var isHttps = (proxy && proxy.protocol === 'https:') || this.uri.protocol === 'https:' - // position of first leading tab in the current line, - // used to make sure there are no tabs in the indentation - this.firstTabInLine = -1; + if (isHttps) { + if (options.ca) { + if (poolKey) { + poolKey += ':' + } + poolKey += options.ca + } - this.documents = []; + if (typeof options.rejectUnauthorized !== 'undefined') { + if (poolKey) { + poolKey += ':' + } + poolKey += options.rejectUnauthorized + } - /* - this.version; - this.checkLineBreaks; - this.tagMap; - this.anchorMap; - this.tag; - this.anchor; - this.kind; - this.result;*/ + if (options.cert) { + if (poolKey) { + poolKey += ':' + } + poolKey += options.cert.toString('ascii') + options.key.toString('ascii') + } -} + if (options.pfx) { + if (poolKey) { + poolKey += ':' + } + poolKey += options.pfx.toString('ascii') + } + if (options.ciphers) { + if (poolKey) { + poolKey += ':' + } + poolKey += options.ciphers + } -function generateError(state, message) { - var mark = { - name: state.filename, - buffer: state.input.slice(0, -1), // omit trailing \0 - position: state.position, - line: state.line, - column: state.position - state.lineStart - }; + if (options.secureProtocol) { + if (poolKey) { + poolKey += ':' + } + poolKey += options.secureProtocol + } - mark.snippet = makeSnippet(mark); + if (options.secureOptions) { + if (poolKey) { + poolKey += ':' + } + poolKey += options.secureOptions + } + } - return new YAMLException(message, mark); -} + if (self.pool === globalPool && !poolKey && Object.keys(options).length === 0 && self.httpModule.globalAgent) { + // not doing anything special. Use the globalAgent + return self.httpModule.globalAgent + } -function throwError(state, message) { - throw generateError(state, message); -} + // we're using a stored agent. Make sure it's protocol-specific + poolKey = self.uri.protocol + poolKey -function throwWarning(state, message) { - if (state.onWarning) { - state.onWarning.call(null, generateError(state, message)); + // generate a new agent for this setting if none yet exists + if (!self.pool[poolKey]) { + self.pool[poolKey] = new Agent(options) + // properly set maxSockets on new agents + if (self.pool.maxSockets) { + self.pool[poolKey].maxSockets = self.pool.maxSockets + } } + + return self.pool[poolKey] } +Request.prototype.start = function () { + // start() is called once we are ready to send the outgoing HTTP request. + // this is usually called on the first write(), end() or on nextTick() + var self = this -var directiveHandlers = { + if (self.timing) { + // All timings will be relative to this request's startTime. In order to do this, + // we need to capture the wall-clock start time (via Date), immediately followed + // by the high-resolution timer (via now()). While these two won't be set + // at the _exact_ same time, they should be close enough to be able to calculate + // high-resolution, monotonically non-decreasing timestamps relative to startTime. + var startTime = new Date().getTime() + var startTimeNow = now() + } - YAML: function handleYamlDirective(state, name, args) { + if (self._aborted) { + return + } - var match, major, minor; + self._started = true + self.method = self.method || 'GET' + self.href = self.uri.href - if (state.version !== null) { - throwError(state, 'duplication of %YAML directive'); - } + if (self.src && self.src.stat && self.src.stat.size && !self.hasHeader('content-length')) { + self.setHeader('content-length', self.src.stat.size) + } + if (self._aws) { + self.aws(self._aws, true) + } - if (args.length !== 1) { - throwError(state, 'YAML directive accepts exactly one argument'); - } + // We have a method named auth, which is completely different from the http.request + // auth option. If we don't remove it, we're gonna have a bad time. + var reqOptions = copy(self) + delete reqOptions.auth - match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]); + debug('make request', self.uri.href) - if (match === null) { - throwError(state, 'ill-formed argument of the YAML directive'); - } + // node v6.8.0 now supports a `timeout` value in `http.request()`, but we + // should delete it for now since we handle timeouts manually for better + // consistency with node versions before v6.8.0 + delete reqOptions.timeout - major = parseInt(match[1], 10); - minor = parseInt(match[2], 10); + try { + self.req = self.httpModule.request(reqOptions) + } catch (err) { + self.emit('error', err) + return + } - if (major !== 1) { - throwError(state, 'unacceptable YAML version of the document'); - } + if (self.timing) { + self.startTime = startTime + self.startTimeNow = startTimeNow - state.version = args[0]; - state.checkLineBreaks = (minor < 2); + // Timing values will all be relative to startTime (by comparing to startTimeNow + // so we have an accurate clock) + self.timings = {} + } - if (minor !== 1 && minor !== 2) { - throwWarning(state, 'unsupported YAML version of the document'); + var timeout + if (self.timeout && !self.timeoutTimer) { + if (self.timeout < 0) { + timeout = 0 + } else if (typeof self.timeout === 'number' && isFinite(self.timeout)) { + timeout = self.timeout } - }, - - TAG: function handleTagDirective(state, name, args) { + } - var handle, prefix; + self.req.on('response', self.onRequestResponse.bind(self)) + self.req.on('error', self.onRequestError.bind(self)) + self.req.on('drain', function () { + self.emit('drain') + }) - if (args.length !== 2) { - throwError(state, 'TAG directive accepts exactly two arguments'); - } + self.req.on('socket', function (socket) { + // `._connecting` was the old property which was made public in node v6.1.0 + var isConnecting = socket._connecting || socket.connecting + if (self.timing) { + self.timings.socket = now() - self.startTimeNow - handle = args[0]; - prefix = args[1]; + if (isConnecting) { + var onLookupTiming = function () { + self.timings.lookup = now() - self.startTimeNow + } - if (!PATTERN_TAG_HANDLE.test(handle)) { - throwError(state, 'ill-formed tag handle (first argument) of the TAG directive'); - } + var onConnectTiming = function () { + self.timings.connect = now() - self.startTimeNow + } - if (_hasOwnProperty.call(state.tagMap, handle)) { - throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle'); - } + socket.once('lookup', onLookupTiming) + socket.once('connect', onConnectTiming) - if (!PATTERN_TAG_URI.test(prefix)) { - throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive'); + // clean up timing event listeners if needed on error + self.req.once('error', function () { + socket.removeListener('lookup', onLookupTiming) + socket.removeListener('connect', onConnectTiming) + }) + } } - try { - prefix = decodeURIComponent(prefix); - } catch (err) { - throwError(state, 'tag prefix is malformed: ' + prefix); + var setReqTimeout = function () { + // This timeout sets the amount of time to wait *between* bytes sent + // from the server once connected. + // + // In particular, it's useful for erroring if the server fails to send + // data halfway through streaming a response. + self.req.setTimeout(timeout, function () { + if (self.req) { + self.abort() + var e = new Error('ESOCKETTIMEDOUT') + e.code = 'ESOCKETTIMEDOUT' + e.connect = false + self.emit('error', e) + } + }) } + if (timeout !== undefined) { + // Only start the connection timer if we're actually connecting a new + // socket, otherwise if we're already connected (because this is a + // keep-alive connection) do not bother. This is important since we won't + // get a 'connect' event for an already connected socket. + if (isConnecting) { + var onReqSockConnect = function () { + socket.removeListener('connect', onReqSockConnect) + clearTimeout(self.timeoutTimer) + self.timeoutTimer = null + setReqTimeout() + } - state.tagMap[handle] = prefix; - } -}; - - -function captureSegment(state, start, end, checkJson) { - var _position, _length, _character, _result; + socket.on('connect', onReqSockConnect) - if (start < end) { - _result = state.input.slice(start, end); + self.req.on('error', function (err) { // eslint-disable-line handle-callback-err + socket.removeListener('connect', onReqSockConnect) + }) - if (checkJson) { - for (_position = 0, _length = _result.length; _position < _length; _position += 1) { - _character = _result.charCodeAt(_position); - if (!(_character === 0x09 || - (0x20 <= _character && _character <= 0x10FFFF))) { - throwError(state, 'expected valid JSON character'); - } + // Set a timeout in memory - this block will throw if the server takes more + // than `timeout` to write the HTTP status and headers (corresponding to + // the on('response') event on the client). NB: this measures wall-clock + // time, not the time between bytes sent by the server. + self.timeoutTimer = setTimeout(function () { + socket.removeListener('connect', onReqSockConnect) + self.abort() + var e = new Error('ETIMEDOUT') + e.code = 'ETIMEDOUT' + e.connect = true + self.emit('error', e) + }, timeout) + } else { + // We're already connected + setReqTimeout() } - } else if (PATTERN_NON_PRINTABLE.test(_result)) { - throwError(state, 'the stream contains non-printable characters'); } + self.emit('socket', socket) + }) - state.result += _result; + self.emit('request', self.req) +} + +Request.prototype.onRequestError = function (error) { + var self = this + if (self._aborted) { + return + } + if (self.req && self.req._reusedSocket && error.code === 'ECONNRESET' && + self.agent.addRequestNoreuse) { + self.agent = { addRequest: self.agent.addRequestNoreuse.bind(self.agent) } + self.start() + self.req.end() + return } + if (self.timeout && self.timeoutTimer) { + clearTimeout(self.timeoutTimer) + self.timeoutTimer = null + } + self.emit('error', error) } -function mergeMappings(state, destination, source, overridableKeys) { - var sourceKeys, key, index, quantity; +Request.prototype.onRequestResponse = function (response) { + var self = this - if (!common.isObject(source)) { - throwError(state, 'cannot merge mappings; the provided source object is unacceptable'); + if (self.timing) { + self.timings.response = now() - self.startTimeNow } - sourceKeys = Object.keys(source); - - for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) { - key = sourceKeys[index]; + debug('onRequestResponse', self.uri.href, response.statusCode, response.headers) + response.on('end', function () { + if (self.timing) { + self.timings.end = now() - self.startTimeNow + response.timingStart = self.startTime - if (!_hasOwnProperty.call(destination, key)) { - destination[key] = source[key]; - overridableKeys[key] = true; - } - } -} + // fill in the blanks for any periods that didn't trigger, such as + // no lookup or connect due to keep alive + if (!self.timings.socket) { + self.timings.socket = 0 + } + if (!self.timings.lookup) { + self.timings.lookup = self.timings.socket + } + if (!self.timings.connect) { + self.timings.connect = self.timings.lookup + } + if (!self.timings.response) { + self.timings.response = self.timings.connect + } -function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, - startLine, startLineStart, startPos) { + debug('elapsed time', self.timings.end) - var index, quantity; + // elapsedTime includes all redirects + self.elapsedTime += Math.round(self.timings.end) - // The output is a plain object here, so keys can only be strings. - // We need to convert keyNode to a string, but doing so can hang the process - // (deeply nested arrays that explode exponentially using aliases). - if (Array.isArray(keyNode)) { - keyNode = Array.prototype.slice.call(keyNode); + // NOTE: elapsedTime is deprecated in favor of .timings + response.elapsedTime = self.elapsedTime - for (index = 0, quantity = keyNode.length; index < quantity; index += 1) { - if (Array.isArray(keyNode[index])) { - throwError(state, 'nested arrays are not supported inside keys'); - } + // timings is just for the final fetch + response.timings = self.timings - if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') { - keyNode[index] = '[object Object]'; + // pre-calculate phase timings as well + response.timingPhases = { + wait: self.timings.socket, + dns: self.timings.lookup - self.timings.socket, + tcp: self.timings.connect - self.timings.lookup, + firstByte: self.timings.response - self.timings.connect, + download: self.timings.end - self.timings.response, + total: self.timings.end } } - } + debug('response end', self.uri.href, response.statusCode, response.headers) + }) - // Avoid code execution in load() via toString property - // (still use its own toString for arrays, timestamps, - // and whatever user schema extensions happen to have @@toStringTag) - if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') { - keyNode = '[object Object]'; + if (self._aborted) { + debug('aborted', self.uri.href) + response.resume() + return } + self.response = response + response.request = self + response.toJSON = responseToJSON - keyNode = String(keyNode); + // XXX This is different on 0.10, because SSL is strict by default + if (self.httpModule === https && + self.strictSSL && (!response.hasOwnProperty('socket') || + !response.socket.authorized)) { + debug('strict ssl error', self.uri.href) + var sslErr = response.hasOwnProperty('socket') ? response.socket.authorizationError : self.uri.href + ' does not support SSL' + self.emit('error', new Error('SSL Error: ' + sslErr)) + return + } - if (_result === null) { - _result = {}; + // Save the original host before any redirect (if it changes, we need to + // remove any authorization headers). Also remember the case of the header + // name because lots of broken servers expect Host instead of host and we + // want the caller to be able to specify this. + self.originalHost = self.getHeader('host') + if (!self.originalHostHeaderName) { + self.originalHostHeaderName = self.hasHeader('host') + } + if (self.setHost) { + self.removeHeader('host') + } + if (self.timeout && self.timeoutTimer) { + clearTimeout(self.timeoutTimer) + self.timeoutTimer = null } - if (keyTag === 'tag:yaml.org,2002:merge') { - if (Array.isArray(valueNode)) { - for (index = 0, quantity = valueNode.length; index < quantity; index += 1) { - mergeMappings(state, _result, valueNode[index], overridableKeys); - } - } else { - mergeMappings(state, _result, valueNode, overridableKeys); - } - } else { - if (!state.json && - !_hasOwnProperty.call(overridableKeys, keyNode) && - _hasOwnProperty.call(_result, keyNode)) { - state.line = startLine || state.line; - state.lineStart = startLineStart || state.lineStart; - state.position = startPos || state.position; - throwError(state, 'duplicated mapping key'); + var targetCookieJar = (self._jar && self._jar.setCookie) ? self._jar : globalCookieJar + var addCookie = function (cookie) { + // set the cookie if it's domain in the href's domain. + try { + targetCookieJar.setCookie(cookie, self.uri.href, {ignoreError: true}) + } catch (e) { + self.emit('error', e) } + } - // used for this specific key only because Object.defineProperty is slow - if (keyNode === '__proto__') { - Object.defineProperty(_result, keyNode, { - configurable: true, - enumerable: true, - writable: true, - value: valueNode - }); + response.caseless = caseless(response.headers) + + if (response.caseless.has('set-cookie') && (!self._disableCookies)) { + var headerName = response.caseless.has('set-cookie') + if (Array.isArray(response.headers[headerName])) { + response.headers[headerName].forEach(addCookie) } else { - _result[keyNode] = valueNode; + addCookie(response.headers[headerName]) } - delete overridableKeys[keyNode]; } - return _result; -} + if (self._redirect.onResponse(response)) { + return // Ignore the rest of the response + } else { + // Be a good stream and emit end when the response is finished. + // Hack to emit end on close because of a core bug that never fires end + response.on('close', function () { + if (!self._ended) { + self.response.emit('end') + } + }) -function readLineBreak(state) { - var ch; + response.once('end', function () { + self._ended = true + }) - ch = state.input.charCodeAt(state.position); + var noBody = function (code) { + return ( + self.method === 'HEAD' || + // Informational + (code >= 100 && code < 200) || + // No Content + code === 204 || + // Not Modified + code === 304 + ) + } + + var responseContent + if (self.gzip && !noBody(response.statusCode)) { + var contentEncoding = response.headers['content-encoding'] || 'identity' + contentEncoding = contentEncoding.trim().toLowerCase() + + // Be more lenient with decoding compressed responses, since (very rarely) + // servers send slightly invalid gzip responses that are still accepted + // by common browsers. + // Always using Z_SYNC_FLUSH is what cURL does. + var zlibOptions = { + flush: zlib.Z_SYNC_FLUSH, + finishFlush: zlib.Z_SYNC_FLUSH + } - if (ch === 0x0A/* LF */) { - state.position++; - } else if (ch === 0x0D/* CR */) { - state.position++; - if (state.input.charCodeAt(state.position) === 0x0A/* LF */) { - state.position++; + if (contentEncoding === 'gzip') { + responseContent = zlib.createGunzip(zlibOptions) + response.pipe(responseContent) + } else if (contentEncoding === 'deflate') { + responseContent = zlib.createInflate(zlibOptions) + response.pipe(responseContent) + } else { + // Since previous versions didn't check for Content-Encoding header, + // ignore any invalid values to preserve backwards-compatibility + if (contentEncoding !== 'identity') { + debug('ignoring unrecognized Content-Encoding ' + contentEncoding) + } + responseContent = response + } + } else { + responseContent = response } - } else { - throwError(state, 'a line break is expected'); - } - - state.line += 1; - state.lineStart = state.position; - state.firstTabInLine = -1; -} - -function skipSeparationSpace(state, allowComments, checkIndent) { - var lineBreaks = 0, - ch = state.input.charCodeAt(state.position); - while (ch !== 0) { - while (is_WHITE_SPACE(ch)) { - if (ch === 0x09/* Tab */ && state.firstTabInLine === -1) { - state.firstTabInLine = state.position; + if (self.encoding) { + if (self.dests.length !== 0) { + console.error('Ignoring encoding parameter as this stream is being piped to another stream which makes the encoding option invalid.') + } else { + responseContent.setEncoding(self.encoding) } - ch = state.input.charCodeAt(++state.position); } - if (allowComments && ch === 0x23/* # */) { - do { - ch = state.input.charCodeAt(++state.position); - } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0); + if (self._paused) { + responseContent.pause() } - if (is_EOL(ch)) { - readLineBreak(state); + self.responseContent = responseContent - ch = state.input.charCodeAt(state.position); - lineBreaks++; - state.lineIndent = 0; + self.emit('response', response) - while (ch === 0x20/* Space */) { - state.lineIndent++; - ch = state.input.charCodeAt(++state.position); + self.dests.forEach(function (dest) { + self.pipeDest(dest) + }) + + responseContent.on('data', function (chunk) { + if (self.timing && !self.responseStarted) { + self.responseStartTime = (new Date()).getTime() + + // NOTE: responseStartTime is deprecated in favor of .timings + response.responseStartTime = self.responseStartTime } - } else { - break; - } - } + self._destdata = true + self.emit('data', chunk) + }) + responseContent.once('end', function (chunk) { + self.emit('end', chunk) + }) + responseContent.on('error', function (error) { + self.emit('error', error) + }) + responseContent.on('close', function () { self.emit('close') }) - if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) { - throwWarning(state, 'deficient indentation'); + if (self.callback) { + self.readResponseBody(response) + } else { // if no callback + self.on('end', function () { + if (self._aborted) { + debug('aborted', self.uri.href) + return + } + self.emit('complete', response) + }) + } } - - return lineBreaks; + debug('finish init function', self.uri.href) } -function testDocumentSeparator(state) { - var _position = state.position, - ch; +Request.prototype.readResponseBody = function (response) { + var self = this + debug("reading response's body") + var buffers = [] + var bufferLength = 0 + var strings = [] - ch = state.input.charCodeAt(_position); + self.on('data', function (chunk) { + if (!Buffer.isBuffer(chunk)) { + strings.push(chunk) + } else if (chunk.length) { + bufferLength += chunk.length + buffers.push(chunk) + } + }) + self.on('end', function () { + debug('end event', self.uri.href) + if (self._aborted) { + debug('aborted', self.uri.href) + // `buffer` is defined in the parent scope and used in a closure it exists for the life of the request. + // This can lead to leaky behavior if the user retains a reference to the request object. + buffers = [] + bufferLength = 0 + return + } - // Condition state.position === state.lineStart is tested - // in parent on each call, for efficiency. No needs to test here again. - if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) && - ch === state.input.charCodeAt(_position + 1) && - ch === state.input.charCodeAt(_position + 2)) { + if (bufferLength) { + debug('has body', self.uri.href, bufferLength) + response.body = Buffer.concat(buffers, bufferLength) + if (self.encoding !== null) { + response.body = response.body.toString(self.encoding) + } + // `buffer` is defined in the parent scope and used in a closure it exists for the life of the Request. + // This can lead to leaky behavior if the user retains a reference to the request object. + buffers = [] + bufferLength = 0 + } else if (strings.length) { + // The UTF8 BOM [0xEF,0xBB,0xBF] is converted to [0xFE,0xFF] in the JS UTC16/UCS2 representation. + // Strip this value out when the encoding is set to 'utf8', as upstream consumers won't expect it and it breaks JSON.parse(). + if (self.encoding === 'utf8' && strings[0].length > 0 && strings[0][0] === '\uFEFF') { + strings[0] = strings[0].substring(1) + } + response.body = strings.join('') + } - _position += 3; + if (self._json) { + try { + response.body = JSON.parse(response.body, self._jsonReviver) + } catch (e) { + debug('invalid JSON received', self.uri.href) + } + } + debug('emitting complete', self.uri.href) + if (typeof response.body === 'undefined' && !self._json) { + response.body = self.encoding === null ? Buffer.alloc(0) : '' + } + self.emit('complete', response, response.body) + }) +} - ch = state.input.charCodeAt(_position); +Request.prototype.abort = function () { + var self = this + self._aborted = true - if (ch === 0 || is_WS_OR_EOL(ch)) { - return true; - } + if (self.req) { + self.req.abort() + } else if (self.response) { + self.response.destroy() } - return false; + self.emit('abort') } -function writeFoldedLines(state, count) { - if (count === 1) { - state.result += ' '; - } else if (count > 1) { - state.result += common.repeat('\n', count - 1); +Request.prototype.pipeDest = function (dest) { + var self = this + var response = self.response + // Called after the response is received + if (dest.headers && !dest.headersSent) { + if (response.caseless.has('content-type')) { + var ctname = response.caseless.has('content-type') + if (dest.setHeader) { + dest.setHeader(ctname, response.headers[ctname]) + } else { + dest.headers[ctname] = response.headers[ctname] + } + } + + if (response.caseless.has('content-length')) { + var clname = response.caseless.has('content-length') + if (dest.setHeader) { + dest.setHeader(clname, response.headers[clname]) + } else { + dest.headers[clname] = response.headers[clname] + } + } + } + if (dest.setHeader && !dest.headersSent) { + for (var i in response.headers) { + // If the response content is being decoded, the Content-Encoding header + // of the response doesn't represent the piped content, so don't pass it. + if (!self.gzip || i !== 'content-encoding') { + dest.setHeader(i, response.headers[i]) + } + } + dest.statusCode = response.statusCode + } + if (self.pipefilter) { + self.pipefilter(response, dest) } } +Request.prototype.qs = function (q, clobber) { + var self = this + var base + if (!clobber && self.uri.query) { + base = self._qs.parse(self.uri.query) + } else { + base = {} + } -function readPlainScalar(state, nodeIndent, withinFlowCollection) { - var preceding, - following, - captureStart, - captureEnd, - hasPendingContent, - _line, - _lineStart, - _lineIndent, - _kind = state.kind, - _result = state.result, - ch; + for (var i in q) { + base[i] = q[i] + } - ch = state.input.charCodeAt(state.position); + var qs = self._qs.stringify(base) - if (is_WS_OR_EOL(ch) || - is_FLOW_INDICATOR(ch) || - ch === 0x23/* # */ || - ch === 0x26/* & */ || - ch === 0x2A/* * */ || - ch === 0x21/* ! */ || - ch === 0x7C/* | */ || - ch === 0x3E/* > */ || - ch === 0x27/* ' */ || - ch === 0x22/* " */ || - ch === 0x25/* % */ || - ch === 0x40/* @ */ || - ch === 0x60/* ` */) { - return false; + if (qs === '') { + return self } - if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) { - following = state.input.charCodeAt(state.position + 1); + self.uri = url.parse(self.uri.href.split('?')[0] + '?' + qs) + self.url = self.uri + self.path = self.uri.path - if (is_WS_OR_EOL(following) || - withinFlowCollection && is_FLOW_INDICATOR(following)) { - return false; - } + if (self.uri.host === 'unix') { + self.enableUnixSocket() } - state.kind = 'scalar'; - state.result = ''; - captureStart = captureEnd = state.position; - hasPendingContent = false; - - while (ch !== 0) { - if (ch === 0x3A/* : */) { - following = state.input.charCodeAt(state.position + 1); + return self +} +Request.prototype.form = function (form) { + var self = this + if (form) { + if (!/^application\/x-www-form-urlencoded\b/.test(self.getHeader('content-type'))) { + self.setHeader('content-type', 'application/x-www-form-urlencoded') + } + self.body = (typeof form === 'string') + ? self._qs.rfc3986(form.toString('utf8')) + : self._qs.stringify(form).toString('utf8') + return self + } + // create form-data object + self._form = new FormData() + self._form.on('error', function (err) { + err.message = 'form-data: ' + err.message + self.emit('error', err) + self.abort() + }) + return self._form +} +Request.prototype.multipart = function (multipart) { + var self = this - if (is_WS_OR_EOL(following) || - withinFlowCollection && is_FLOW_INDICATOR(following)) { - break; - } + self._multipart.onRequest(multipart) - } else if (ch === 0x23/* # */) { - preceding = state.input.charCodeAt(state.position - 1); + if (!self._multipart.chunked) { + self.body = self._multipart.body + } - if (is_WS_OR_EOL(preceding)) { - break; - } + return self +} +Request.prototype.json = function (val) { + var self = this - } else if ((state.position === state.lineStart && testDocumentSeparator(state)) || - withinFlowCollection && is_FLOW_INDICATOR(ch)) { - break; + if (!self.hasHeader('accept')) { + self.setHeader('accept', 'application/json') + } - } else if (is_EOL(ch)) { - _line = state.line; - _lineStart = state.lineStart; - _lineIndent = state.lineIndent; - skipSeparationSpace(state, false, -1); + if (typeof self.jsonReplacer === 'function') { + self._jsonReplacer = self.jsonReplacer + } - if (state.lineIndent >= nodeIndent) { - hasPendingContent = true; - ch = state.input.charCodeAt(state.position); - continue; + self._json = true + if (typeof val === 'boolean') { + if (self.body !== undefined) { + if (!/^application\/x-www-form-urlencoded\b/.test(self.getHeader('content-type'))) { + self.body = safeStringify(self.body, self._jsonReplacer) } else { - state.position = captureEnd; - state.line = _line; - state.lineStart = _lineStart; - state.lineIndent = _lineIndent; - break; + self.body = self._qs.rfc3986(self.body) + } + if (!self.hasHeader('content-type')) { + self.setHeader('content-type', 'application/json') } } - - if (hasPendingContent) { - captureSegment(state, captureStart, captureEnd, false); - writeFoldedLines(state, state.line - _line); - captureStart = captureEnd = state.position; - hasPendingContent = false; + } else { + self.body = safeStringify(val, self._jsonReplacer) + if (!self.hasHeader('content-type')) { + self.setHeader('content-type', 'application/json') } + } - if (!is_WHITE_SPACE(ch)) { - captureEnd = state.position + 1; - } + if (typeof self.jsonReviver === 'function') { + self._jsonReviver = self.jsonReviver + } - ch = state.input.charCodeAt(++state.position); + return self +} +Request.prototype.getHeader = function (name, headers) { + var self = this + var result, re, match + if (!headers) { + headers = self.headers } + Object.keys(headers).forEach(function (key) { + if (key.length !== name.length) { + return + } + re = new RegExp(name, 'i') + match = key.match(re) + if (match) { + result = headers[key] + } + }) + return result +} +Request.prototype.enableUnixSocket = function () { + // Get the socket & request paths from the URL + var unixParts = this.uri.path.split(':') + var host = unixParts[0] + var path = unixParts[1] + // Apply unix properties to request + this.socketPath = host + this.uri.pathname = path + this.uri.path = path + this.uri.host = host + this.uri.hostname = host + this.uri.isUnix = true +} - captureSegment(state, captureStart, captureEnd, false); +Request.prototype.auth = function (user, pass, sendImmediately, bearer) { + var self = this - if (state.result) { - return true; - } + self._auth.onRequest(user, pass, sendImmediately, bearer) - state.kind = _kind; - state.result = _result; - return false; + return self } +Request.prototype.aws = function (opts, now) { + var self = this -function readSingleQuotedScalar(state, nodeIndent) { - var ch, - captureStart, captureEnd; + if (!now) { + self._aws = opts + return self + } - ch = state.input.charCodeAt(state.position); + if (opts.sign_version === 4 || opts.sign_version === '4') { + // use aws4 + var options = { + host: self.uri.host, + path: self.uri.path, + method: self.method, + headers: self.headers, + body: self.body + } + if (opts.service) { + options.service = opts.service + } + var signRes = aws4.sign(options, { + accessKeyId: opts.key, + secretAccessKey: opts.secret, + sessionToken: opts.session + }) + self.setHeader('authorization', signRes.headers.Authorization) + self.setHeader('x-amz-date', signRes.headers['X-Amz-Date']) + if (signRes.headers['X-Amz-Security-Token']) { + self.setHeader('x-amz-security-token', signRes.headers['X-Amz-Security-Token']) + } + } else { + // default: use aws-sign2 + var date = new Date() + self.setHeader('date', date.toUTCString()) + var auth = { + key: opts.key, + secret: opts.secret, + verb: self.method.toUpperCase(), + date: date, + contentType: self.getHeader('content-type') || '', + md5: self.getHeader('content-md5') || '', + amazonHeaders: aws2.canonicalizeHeaders(self.headers) + } + var path = self.uri.path + if (opts.bucket && path) { + auth.resource = '/' + opts.bucket + path + } else if (opts.bucket && !path) { + auth.resource = '/' + opts.bucket + } else if (!opts.bucket && path) { + auth.resource = path + } else if (!opts.bucket && !path) { + auth.resource = '/' + } + auth.resource = aws2.canonicalizeResource(auth.resource) + self.setHeader('authorization', aws2.authorization(auth)) + } + + return self +} +Request.prototype.httpSignature = function (opts) { + var self = this + httpSignature.signRequest({ + getHeader: function (header) { + return self.getHeader(header, self.headers) + }, + setHeader: function (header, value) { + self.setHeader(header, value) + }, + method: self.method, + path: self.path + }, opts) + debug('httpSignature authorization', self.getHeader('authorization')) - if (ch !== 0x27/* ' */) { - return false; - } + return self +} +Request.prototype.hawk = function (opts) { + var self = this + self.setHeader('Authorization', hawk.header(self.uri, self.method, opts)) +} +Request.prototype.oauth = function (_oauth) { + var self = this - state.kind = 'scalar'; - state.result = ''; - state.position++; - captureStart = captureEnd = state.position; + self._oauth.onRequest(_oauth) - while ((ch = state.input.charCodeAt(state.position)) !== 0) { - if (ch === 0x27/* ' */) { - captureSegment(state, captureStart, state.position, true); - ch = state.input.charCodeAt(++state.position); + return self +} - if (ch === 0x27/* ' */) { - captureStart = state.position; - state.position++; - captureEnd = state.position; - } else { - return true; - } +Request.prototype.jar = function (jar) { + var self = this + var cookies - } else if (is_EOL(ch)) { - captureSegment(state, captureStart, captureEnd, true); - writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); - captureStart = captureEnd = state.position; + if (self._redirect.redirectsFollowed === 0) { + self.originalCookieHeader = self.getHeader('cookie') + } - } else if (state.position === state.lineStart && testDocumentSeparator(state)) { - throwError(state, 'unexpected end of the document within a single quoted scalar'); + if (!jar) { + // disable cookies + cookies = false + self._disableCookies = true + } else { + var targetCookieJar = (jar && jar.getCookieString) ? jar : globalCookieJar + var urihref = self.uri.href + // fetch cookie in the Specified host + if (targetCookieJar) { + cookies = targetCookieJar.getCookieString(urihref) + } + } + // if need cookie and cookie is not empty + if (cookies && cookies.length) { + if (self.originalCookieHeader) { + // Don't overwrite existing Cookie header + self.setHeader('cookie', self.originalCookieHeader + '; ' + cookies) } else { - state.position++; - captureEnd = state.position; + self.setHeader('cookie', cookies) } } - - throwError(state, 'unexpected end of the stream within a single quoted scalar'); + self._jar = jar + return self } -function readDoubleQuotedScalar(state, nodeIndent) { - var captureStart, - captureEnd, - hexLength, - hexResult, - tmp, - ch; +// Stream API +Request.prototype.pipe = function (dest, opts) { + var self = this - ch = state.input.charCodeAt(state.position); + if (self.response) { + if (self._destdata) { + self.emit('error', new Error('You cannot pipe after data has been emitted from the response.')) + } else if (self._ended) { + self.emit('error', new Error('You cannot pipe after the response has been ended.')) + } else { + stream.Stream.prototype.pipe.call(self, dest, opts) + self.pipeDest(dest) + return dest + } + } else { + self.dests.push(dest) + stream.Stream.prototype.pipe.call(self, dest, opts) + return dest + } +} +Request.prototype.write = function () { + var self = this + if (self._aborted) { return } - if (ch !== 0x22/* " */) { - return false; + if (!self._started) { + self.start() } + if (self.req) { + return self.req.write.apply(self.req, arguments) + } +} +Request.prototype.end = function (chunk) { + var self = this + if (self._aborted) { return } - state.kind = 'scalar'; - state.result = ''; - state.position++; - captureStart = captureEnd = state.position; + if (chunk) { + self.write(chunk) + } + if (!self._started) { + self.start() + } + if (self.req) { + self.req.end() + } +} +Request.prototype.pause = function () { + var self = this + if (!self.responseContent) { + self._paused = true + } else { + self.responseContent.pause.apply(self.responseContent, arguments) + } +} +Request.prototype.resume = function () { + var self = this + if (!self.responseContent) { + self._paused = false + } else { + self.responseContent.resume.apply(self.responseContent, arguments) + } +} +Request.prototype.destroy = function () { + var self = this + if (!self._ended) { + self.end() + } else if (self.response) { + self.response.destroy() + } +} - while ((ch = state.input.charCodeAt(state.position)) !== 0) { - if (ch === 0x22/* " */) { - captureSegment(state, captureStart, state.position, true); - state.position++; - return true; +Request.defaultProxyHeaderWhiteList = + Tunnel.defaultProxyHeaderWhiteList.slice() - } else if (ch === 0x5C/* \ */) { - captureSegment(state, captureStart, state.position, true); - ch = state.input.charCodeAt(++state.position); +Request.defaultProxyHeaderExclusiveList = + Tunnel.defaultProxyHeaderExclusiveList.slice() - if (is_EOL(ch)) { - skipSeparationSpace(state, false, nodeIndent); +// Exports - // TODO: rework to inline fn with no type cast? - } else if (ch < 256 && simpleEscapeCheck[ch]) { - state.result += simpleEscapeMap[ch]; - state.position++; +Request.prototype.toJSON = requestToJSON +module.exports = Request - } else if ((tmp = escapedHexLen(ch)) > 0) { - hexLength = tmp; - hexResult = 0; - for (; hexLength > 0; hexLength--) { - ch = state.input.charCodeAt(++state.position); +/***/ }), +/* 456 */, +/* 457 */, +/* 458 */ +/***/ (function(module, exports, __webpack_require__) { - if ((tmp = fromHexCode(ch)) >= 0) { - hexResult = (hexResult << 4) + tmp; +"use strict"; - } else { - throwError(state, 'expected hexadecimal character'); - } - } - state.result += charFromCodepoint(hexResult); +var _interopRequireDefault = __webpack_require__(764); - state.position++; +__webpack_require__(493); - } else { - throwError(state, 'unknown escape sequence'); - } +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; - captureStart = captureEnd = state.position; +var _extractCashtagsWithIndices = _interopRequireDefault(__webpack_require__(380)); - } else if (is_EOL(ch)) { - captureSegment(state, captureStart, captureEnd, true); - writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); - captureStart = captureEnd = state.position; +var _extractHashtagsWithIndices = _interopRequireDefault(__webpack_require__(389)); - } else if (state.position === state.lineStart && testDocumentSeparator(state)) { - throwError(state, 'unexpected end of the document within a double quoted scalar'); +var _extractMentionsOrListsWithIndices = _interopRequireDefault(__webpack_require__(680)); - } else { - state.position++; - captureEnd = state.position; - } +var _extractUrlsWithIndices = _interopRequireDefault(__webpack_require__(257)); + +var _removeOverlappingEntities = _interopRequireDefault(__webpack_require__(915)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text, options) { + var entities = (0, _extractUrlsWithIndices["default"])(text, options).concat((0, _extractMentionsOrListsWithIndices["default"])(text)).concat((0, _extractHashtagsWithIndices["default"])(text, { + checkUrlOverlap: false + })).concat((0, _extractCashtagsWithIndices["default"])(text)); + + if (entities.length == 0) { + return []; } - throwError(state, 'unexpected end of the stream within a double quoted scalar'); + (0, _removeOverlappingEntities["default"])(entities); + return entities; } -function readFlowCollection(state, nodeIndent) { - var readNext = true, - _line, - _lineStart, - _pos, - _tag = state.tag, - _result, - _anchor = state.anchor, - following, - terminator, - isPair, - isExplicitPair, - isMapping, - overridableKeys = Object.create(null), - keyNode, - keyTag, - valueNode, - ch; +module.exports = exports.default; - ch = state.input.charCodeAt(state.position); +/***/ }), +/* 459 */ +/***/ (function(module, exports, __webpack_require__) { - if (ch === 0x5B/* [ */) { - terminator = 0x5D;/* ] */ - isMapping = false; - _result = []; - } else if (ch === 0x7B/* { */) { - terminator = 0x7D;/* } */ - isMapping = true; - _result = {}; - } else { - return false; - } +"use strict"; - if (state.anchor !== null) { - state.anchorMap[state.anchor] = _result; - } - ch = state.input.charCodeAt(++state.position); +__webpack_require__(493); - while (ch !== 0) { - skipSeparationSpace(state, true, nodeIndent); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; - ch = state.input.charCodeAt(state.position); +__webpack_require__(604); - if (ch === terminator) { - state.position++; - state.tag = _tag; - state.anchor = _anchor; - state.kind = isMapping ? 'mapping' : 'sequence'; - state.result = _result; - return true; - } else if (!readNext) { - throwError(state, 'missed comma between flow collection entries'); - } else if (ch === 0x2C/* , */) { - // "flow collection entries can never be completely empty", as per YAML 1.2, section 7.4 - throwError(state, "expected the node content, but found ','"); - } +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +// this essentially does text.split(/<|>/) +// except that won't work in IE, where empty strings are ommitted +// so "<>".split(/<|>/) => [] in IE, but is ["", "", ""] in all others +// but "<<".split("<") => ["", "", ""] +function _default(text) { + var firstSplits = text.split('<'), + secondSplits, + allSplits = [], + split; - keyTag = keyNode = valueNode = null; - isPair = isExplicitPair = false; + for (var i = 0; i < firstSplits.length; i += 1) { + split = firstSplits[i]; - if (ch === 0x3F/* ? */) { - following = state.input.charCodeAt(state.position + 1); + if (!split) { + allSplits.push(''); + } else { + secondSplits = split.split('>'); - if (is_WS_OR_EOL(following)) { - isPair = isExplicitPair = true; - state.position++; - skipSeparationSpace(state, true, nodeIndent); + for (var j = 0; j < secondSplits.length; j += 1) { + allSplits.push(secondSplits[j]); } } + } - _line = state.line; // Save the current line. - _lineStart = state.lineStart; - _pos = state.position; - composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); - keyTag = state.tag; - keyNode = state.result; - skipSeparationSpace(state, true, nodeIndent); + return allSplits; +} - ch = state.input.charCodeAt(state.position); +module.exports = exports.default; - if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) { - isPair = true; - ch = state.input.charCodeAt(++state.position); - skipSeparationSpace(state, true, nodeIndent); - composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); - valueNode = state.result; - } +/***/ }), +/* 460 */ +/***/ (function(module, exports, __webpack_require__) { - if (isMapping) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos); - } else if (isPair) { - _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos)); - } else { - _result.push(keyNode); - } +"use strict"; - skipSeparationSpace(state, true, nodeIndent); - ch = state.input.charCodeAt(state.position); +__webpack_require__(493); - if (ch === 0x2C/* , */) { - readNext = true; - ch = state.input.charCodeAt(++state.position); - } else { - readNext = false; - } +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlPctEncoded = /(?:%[0-9a-f]{2})/i; +var _default = validateUrlPctEncoded; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 461 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + + +var url = __webpack_require__(835) +var tunnel = __webpack_require__(875) + +var defaultProxyHeaderWhiteList = [ + 'accept', + 'accept-charset', + 'accept-encoding', + 'accept-language', + 'accept-ranges', + 'cache-control', + 'content-encoding', + 'content-language', + 'content-location', + 'content-md5', + 'content-range', + 'content-type', + 'connection', + 'date', + 'expect', + 'max-forwards', + 'pragma', + 'referer', + 'te', + 'user-agent', + 'via' +] + +var defaultProxyHeaderExclusiveList = [ + 'proxy-authorization' +] + +function constructProxyHost (uriObject) { + var port = uriObject.port + var protocol = uriObject.protocol + var proxyHost = uriObject.hostname + ':' + + if (port) { + proxyHost += port + } else if (protocol === 'https:') { + proxyHost += '443' + } else { + proxyHost += '80' } - throwError(state, 'unexpected end of the stream within a flow collection'); + return proxyHost } -function readBlockScalar(state, nodeIndent) { - var captureStart, - folding, - chomping = CHOMPING_CLIP, - didReadContent = false, - detectedIndent = false, - textIndent = nodeIndent, - emptyLines = 0, - atMoreIndented = false, - tmp, - ch; +function constructProxyHeaderWhiteList (headers, proxyHeaderWhiteList) { + var whiteList = proxyHeaderWhiteList + .reduce(function (set, header) { + set[header.toLowerCase()] = true + return set + }, {}) - ch = state.input.charCodeAt(state.position); + return Object.keys(headers) + .filter(function (header) { + return whiteList[header.toLowerCase()] + }) + .reduce(function (set, header) { + set[header] = headers[header] + return set + }, {}) +} - if (ch === 0x7C/* | */) { - folding = false; - } else if (ch === 0x3E/* > */) { - folding = true; - } else { - return false; - } +function constructTunnelOptions (request, proxyHeaders) { + var proxy = request.proxy - state.kind = 'scalar'; - state.result = ''; + var tunnelOptions = { + proxy: { + host: proxy.hostname, + port: +proxy.port, + proxyAuth: proxy.auth, + headers: proxyHeaders + }, + headers: request.headers, + ca: request.ca, + cert: request.cert, + key: request.key, + passphrase: request.passphrase, + pfx: request.pfx, + ciphers: request.ciphers, + rejectUnauthorized: request.rejectUnauthorized, + secureOptions: request.secureOptions, + secureProtocol: request.secureProtocol + } - while (ch !== 0) { - ch = state.input.charCodeAt(++state.position); + return tunnelOptions +} - if (ch === 0x2B/* + */ || ch === 0x2D/* - */) { - if (CHOMPING_CLIP === chomping) { - chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP; - } else { - throwError(state, 'repeat of a chomping mode identifier'); - } +function constructTunnelFnName (uri, proxy) { + var uriProtocol = (uri.protocol === 'https:' ? 'https' : 'http') + var proxyProtocol = (proxy.protocol === 'https:' ? 'Https' : 'Http') + return [uriProtocol, proxyProtocol].join('Over') +} - } else if ((tmp = fromDecimalCode(ch)) >= 0) { - if (tmp === 0) { - throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one'); - } else if (!detectedIndent) { - textIndent = nodeIndent + tmp - 1; - detectedIndent = true; - } else { - throwError(state, 'repeat of an indentation width identifier'); - } +function getTunnelFn (request) { + var uri = request.uri + var proxy = request.proxy + var tunnelFnName = constructTunnelFnName(uri, proxy) + return tunnel[tunnelFnName] +} - } else { - break; - } +function Tunnel (request) { + this.request = request + this.proxyHeaderWhiteList = defaultProxyHeaderWhiteList + this.proxyHeaderExclusiveList = [] + if (typeof request.tunnel !== 'undefined') { + this.tunnelOverride = request.tunnel } +} - if (is_WHITE_SPACE(ch)) { - do { ch = state.input.charCodeAt(++state.position); } - while (is_WHITE_SPACE(ch)); +Tunnel.prototype.isEnabled = function () { + var self = this + var request = self.request + // Tunnel HTTPS by default. Allow the user to override this setting. - if (ch === 0x23/* # */) { - do { ch = state.input.charCodeAt(++state.position); } - while (!is_EOL(ch) && (ch !== 0)); - } + // If self.tunnelOverride is set (the user specified a value), use it. + if (typeof self.tunnelOverride !== 'undefined') { + return self.tunnelOverride } - while (ch !== 0) { - readLineBreak(state); - state.lineIndent = 0; - - ch = state.input.charCodeAt(state.position); + // If the destination is HTTPS, tunnel. + if (request.uri.protocol === 'https:') { + return true + } - while ((!detectedIndent || state.lineIndent < textIndent) && - (ch === 0x20/* Space */)) { - state.lineIndent++; - ch = state.input.charCodeAt(++state.position); - } + // Otherwise, do not use tunnel. + return false +} - if (!detectedIndent && state.lineIndent > textIndent) { - textIndent = state.lineIndent; - } +Tunnel.prototype.setup = function (options) { + var self = this + var request = self.request - if (is_EOL(ch)) { - emptyLines++; - continue; - } + options = options || {} - // End of the scalar. - if (state.lineIndent < textIndent) { + if (typeof request.proxy === 'string') { + request.proxy = url.parse(request.proxy) + } - // Perform the chomping. - if (chomping === CHOMPING_KEEP) { - state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); - } else if (chomping === CHOMPING_CLIP) { - if (didReadContent) { // i.e. only if the scalar is not empty. - state.result += '\n'; - } - } + if (!request.proxy || !request.tunnel) { + return false + } - // Break this `while` cycle and go to the funciton's epilogue. - break; - } + // Setup Proxy Header Exclusive List and White List + if (options.proxyHeaderWhiteList) { + self.proxyHeaderWhiteList = options.proxyHeaderWhiteList + } + if (options.proxyHeaderExclusiveList) { + self.proxyHeaderExclusiveList = options.proxyHeaderExclusiveList + } - // Folded style: use fancy rules to handle line breaks. - if (folding) { + var proxyHeaderExclusiveList = self.proxyHeaderExclusiveList.concat(defaultProxyHeaderExclusiveList) + var proxyHeaderWhiteList = self.proxyHeaderWhiteList.concat(proxyHeaderExclusiveList) - // Lines starting with white space characters (more-indented lines) are not folded. - if (is_WHITE_SPACE(ch)) { - atMoreIndented = true; - // except for the first content line (cf. Example 8.1) - state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + // Setup Proxy Headers and Proxy Headers Host + // Only send the Proxy White Listed Header names + var proxyHeaders = constructProxyHeaderWhiteList(request.headers, proxyHeaderWhiteList) + proxyHeaders.host = constructProxyHost(request.uri) - // End of more-indented block. - } else if (atMoreIndented) { - atMoreIndented = false; - state.result += common.repeat('\n', emptyLines + 1); + proxyHeaderExclusiveList.forEach(request.removeHeader, request) - // Just one line break - perceive as the same line. - } else if (emptyLines === 0) { - if (didReadContent) { // i.e. only if we have already read some scalar content. - state.result += ' '; - } + // Set Agent from Tunnel Data + var tunnelFn = getTunnelFn(request) + var tunnelOptions = constructTunnelOptions(request, proxyHeaders) + request.agent = tunnelFn(tunnelOptions) - // Several line breaks - perceive as different lines. - } else { - state.result += common.repeat('\n', emptyLines); - } + return true +} - // Literal style: just add exact number of line breaks between content lines. - } else { - // Keep all line breaks except the header line break. - state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); - } +Tunnel.defaultProxyHeaderWhiteList = defaultProxyHeaderWhiteList +Tunnel.defaultProxyHeaderExclusiveList = defaultProxyHeaderExclusiveList +exports.Tunnel = Tunnel - didReadContent = true; - detectedIndent = true; - emptyLines = 0; - captureStart = state.position; - while (!is_EOL(ch) && (ch !== 0)) { - ch = state.input.charCodeAt(++state.position); - } +/***/ }), +/* 462 */, +/* 463 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { - captureSegment(state, captureStart, state.position, false); - } +"use strict"; - return true; -} -function readBlockSequence(state, nodeIndent) { - var _line, - _tag = state.tag, - _anchor = state.anchor, - _result = [], - following, - detected = false, - ch; +Object.defineProperty(exports, '__esModule', { value: true }); - // there is a leading tab before this token, so it can't be a block sequence/mapping; - // it can still be flow sequence/mapping or a scalar - if (state.firstTabInLine !== -1) return false; +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } - if (state.anchor !== null) { - state.anchorMap[state.anchor] = _result; - } +var deprecation = __webpack_require__(692); +var once = _interopDefault(__webpack_require__(49)); - ch = state.input.charCodeAt(state.position); +const logOnceCode = once(deprecation => console.warn(deprecation)); +const logOnceHeaders = once(deprecation => console.warn(deprecation)); +/** + * Error with extra properties to help with debugging + */ - while (ch !== 0) { - if (state.firstTabInLine !== -1) { - state.position = state.firstTabInLine; - throwError(state, 'tab characters must not be used in indentation'); - } +class RequestError extends Error { + constructor(message, statusCode, options) { + super(message); // Maintains proper stack trace (only available on V8) - if (ch !== 0x2D/* - */) { - break; + /* istanbul ignore next */ + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); } - following = state.input.charCodeAt(state.position + 1); + this.name = "HttpError"; + this.status = statusCode; + let headers; - if (!is_WS_OR_EOL(following)) { - break; + if ("headers" in options && typeof options.headers !== "undefined") { + headers = options.headers; } - detected = true; - state.position++; + if ("response" in options) { + this.response = options.response; + headers = options.response.headers; + } // redact request credentials without mutating original request options - if (skipSeparationSpace(state, true, -1)) { - if (state.lineIndent <= nodeIndent) { - _result.push(null); - ch = state.input.charCodeAt(state.position); - continue; - } + + const requestCopy = Object.assign({}, options.request); + + if (options.request.headers.authorization) { + requestCopy.headers = Object.assign({}, options.request.headers, { + authorization: options.request.headers.authorization.replace(/ .*$/, " [REDACTED]") + }); } - _line = state.line; - composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true); - _result.push(state.result); - skipSeparationSpace(state, true, -1); + requestCopy.url = requestCopy.url // client_id & client_secret can be passed as URL query parameters to increase rate limit + // see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications + .replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]") // OAuth tokens can be passed as URL query parameters, although it is not recommended + // see https://developer.github.com/v3/#oauth2-token-sent-in-a-header + .replace(/\baccess_token=\w+/g, "access_token=[REDACTED]"); + this.request = requestCopy; // deprecations - ch = state.input.charCodeAt(state.position); + Object.defineProperty(this, "code", { + get() { + logOnceCode(new deprecation.Deprecation("[@octokit/request-error] `error.code` is deprecated, use `error.status`.")); + return statusCode; + } - if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) { - throwError(state, 'bad indentation of a sequence entry'); - } else if (state.lineIndent < nodeIndent) { - break; - } - } + }); + Object.defineProperty(this, "headers", { + get() { + logOnceHeaders(new deprecation.Deprecation("[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`.")); + return headers || {}; + } - if (detected) { - state.tag = _tag; - state.anchor = _anchor; - state.kind = 'sequence'; - state.result = _result; - return true; + }); } - return false; + } -function readBlockMapping(state, nodeIndent, flowIndent) { - var following, - allowCompact, - _line, - _keyLine, - _keyLineStart, - _keyPos, - _tag = state.tag, - _anchor = state.anchor, - _result = {}, - overridableKeys = Object.create(null), - keyTag = null, - keyNode = null, - valueNode = null, - atExplicitKey = false, - detected = false, - ch; +exports.RequestError = RequestError; +//# sourceMappingURL=index.js.map - // there is a leading tab before this token, so it can't be a block sequence/mapping; - // it can still be flow sequence/mapping or a scalar - if (state.firstTabInLine !== -1) return false; - if (state.anchor !== null) { - state.anchorMap[state.anchor] = _result; - } +/***/ }), +/* 464 */, +/* 465 */ +/***/ (function(module) { - ch = state.input.charCodeAt(state.position); +module.exports = {"$id":"log.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["version","creator","entries"],"properties":{"version":{"type":"string"},"creator":{"$ref":"creator.json#"},"browser":{"$ref":"browser.json#"},"pages":{"type":"array","items":{"$ref":"page.json#"}},"entries":{"type":"array","items":{"$ref":"entry.json#"}},"comment":{"type":"string"}}}; - while (ch !== 0) { - if (!atExplicitKey && state.firstTabInLine !== -1) { - state.position = state.firstTabInLine; - throwError(state, 'tab characters must not be used in indentation'); - } +/***/ }), +/* 466 */ +/***/ (function(module, __unusedexports, __webpack_require__) { - following = state.input.charCodeAt(state.position + 1); - _line = state.line; // Save the current line. +"use strict"; - // - // Explicit notation case. There are two separate blocks: - // first for the key (denoted by "?") and second for the value (denoted by ":") - // - if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) { - if (ch === 0x3F/* ? */) { - if (atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); - keyTag = keyNode = valueNode = null; - } +/*eslint-disable max-len,no-use-before-define*/ - detected = true; - atExplicitKey = true; - allowCompact = true; +var common = __webpack_require__(701); +var YAMLException = __webpack_require__(652); +var makeSnippet = __webpack_require__(98); +var DEFAULT_SCHEMA = __webpack_require__(344); - } else if (atExplicitKey) { - // i.e. 0x3A/* : */ === character after the explicit key. - atExplicitKey = false; - allowCompact = true; - } else { - throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line'); - } +var _hasOwnProperty = Object.prototype.hasOwnProperty; - state.position += 1; - ch = following; - // - // Implicit notation case. Flow-style node as the key first, then ":", and the value. - // - } else { - _keyLine = state.line; - _keyLineStart = state.lineStart; - _keyPos = state.position; +var CONTEXT_FLOW_IN = 1; +var CONTEXT_FLOW_OUT = 2; +var CONTEXT_BLOCK_IN = 3; +var CONTEXT_BLOCK_OUT = 4; - if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) { - // Neither implicit nor explicit notation. - // Reading is done. Go to the epilogue. - break; - } - if (state.line === _line) { - ch = state.input.charCodeAt(state.position); +var CHOMPING_CLIP = 1; +var CHOMPING_STRIP = 2; +var CHOMPING_KEEP = 3; - while (is_WHITE_SPACE(ch)) { - ch = state.input.charCodeAt(++state.position); - } - if (ch === 0x3A/* : */) { - ch = state.input.charCodeAt(++state.position); +var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; +var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/; +var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/; +var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i; +var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i; + + +function _class(obj) { return Object.prototype.toString.call(obj); } + +function is_EOL(c) { + return (c === 0x0A/* LF */) || (c === 0x0D/* CR */); +} + +function is_WHITE_SPACE(c) { + return (c === 0x09/* Tab */) || (c === 0x20/* Space */); +} + +function is_WS_OR_EOL(c) { + return (c === 0x09/* Tab */) || + (c === 0x20/* Space */) || + (c === 0x0A/* LF */) || + (c === 0x0D/* CR */); +} + +function is_FLOW_INDICATOR(c) { + return c === 0x2C/* , */ || + c === 0x5B/* [ */ || + c === 0x5D/* ] */ || + c === 0x7B/* { */ || + c === 0x7D/* } */; +} + +function fromHexCode(c) { + var lc; + + if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { + return c - 0x30; + } + + /*eslint-disable no-bitwise*/ + lc = c | 0x20; - if (!is_WS_OR_EOL(ch)) { - throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping'); - } + if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) { + return lc - 0x61 + 10; + } - if (atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); - keyTag = keyNode = valueNode = null; - } + return -1; +} - detected = true; - atExplicitKey = false; - allowCompact = false; - keyTag = state.tag; - keyNode = state.result; +function escapedHexLen(c) { + if (c === 0x78/* x */) { return 2; } + if (c === 0x75/* u */) { return 4; } + if (c === 0x55/* U */) { return 8; } + return 0; +} - } else if (detected) { - throwError(state, 'can not read an implicit mapping pair; a colon is missed'); +function fromDecimalCode(c) { + if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { + return c - 0x30; + } - } else { - state.tag = _tag; - state.anchor = _anchor; - return true; // Keep the result of `composeNode`. - } + return -1; +} - } else if (detected) { - throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key'); +function simpleEscapeSequence(c) { + /* eslint-disable indent */ + return (c === 0x30/* 0 */) ? '\x00' : + (c === 0x61/* a */) ? '\x07' : + (c === 0x62/* b */) ? '\x08' : + (c === 0x74/* t */) ? '\x09' : + (c === 0x09/* Tab */) ? '\x09' : + (c === 0x6E/* n */) ? '\x0A' : + (c === 0x76/* v */) ? '\x0B' : + (c === 0x66/* f */) ? '\x0C' : + (c === 0x72/* r */) ? '\x0D' : + (c === 0x65/* e */) ? '\x1B' : + (c === 0x20/* Space */) ? ' ' : + (c === 0x22/* " */) ? '\x22' : + (c === 0x2F/* / */) ? '/' : + (c === 0x5C/* \ */) ? '\x5C' : + (c === 0x4E/* N */) ? '\x85' : + (c === 0x5F/* _ */) ? '\xA0' : + (c === 0x4C/* L */) ? '\u2028' : + (c === 0x50/* P */) ? '\u2029' : ''; +} - } else { - state.tag = _tag; - state.anchor = _anchor; - return true; // Keep the result of `composeNode`. - } - } +function charFromCodepoint(c) { + if (c <= 0xFFFF) { + return String.fromCharCode(c); + } + // Encode UTF-16 surrogate pair + // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF + return String.fromCharCode( + ((c - 0x010000) >> 10) + 0xD800, + ((c - 0x010000) & 0x03FF) + 0xDC00 + ); +} - // - // Common reading code for both explicit and implicit notations. - // - if (state.line === _line || state.lineIndent > nodeIndent) { - if (atExplicitKey) { - _keyLine = state.line; - _keyLineStart = state.lineStart; - _keyPos = state.position; - } +var simpleEscapeCheck = new Array(256); // integer, for fast access +var simpleEscapeMap = new Array(256); +for (var i = 0; i < 256; i++) { + simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0; + simpleEscapeMap[i] = simpleEscapeSequence(i); +} - if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) { - if (atExplicitKey) { - keyNode = state.result; - } else { - valueNode = state.result; - } - } - if (!atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos); - keyTag = keyNode = valueNode = null; - } +function State(input, options) { + this.input = input; - skipSeparationSpace(state, true, -1); - ch = state.input.charCodeAt(state.position); - } + this.filename = options['filename'] || null; + this.schema = options['schema'] || DEFAULT_SCHEMA; + this.onWarning = options['onWarning'] || null; + // (Hidden) Remove? makes the loader to expect YAML 1.1 documents + // if such documents have no explicit %YAML directive + this.legacy = options['legacy'] || false; - if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) { - throwError(state, 'bad indentation of a mapping entry'); - } else if (state.lineIndent < nodeIndent) { - break; - } - } + this.json = options['json'] || false; + this.listener = options['listener'] || null; - // - // Epilogue. - // + this.implicitTypes = this.schema.compiledImplicit; + this.typeMap = this.schema.compiledTypeMap; - // Special case: last mapping's node contains only the key in explicit notation. - if (atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); - } + this.length = input.length; + this.position = 0; + this.line = 0; + this.lineStart = 0; + this.lineIndent = 0; - // Expose the resulting mapping. - if (detected) { - state.tag = _tag; - state.anchor = _anchor; - state.kind = 'mapping'; - state.result = _result; - } + // position of first leading tab in the current line, + // used to make sure there are no tabs in the indentation + this.firstTabInLine = -1; - return detected; -} + this.documents = []; -function readTagProperty(state) { - var _position, - isVerbatim = false, - isNamed = false, - tagHandle, - tagName, - ch; + /* + this.version; + this.checkLineBreaks; + this.tagMap; + this.anchorMap; + this.tag; + this.anchor; + this.kind; + this.result;*/ - ch = state.input.charCodeAt(state.position); +} - if (ch !== 0x21/* ! */) return false; - if (state.tag !== null) { - throwError(state, 'duplication of a tag property'); - } +function generateError(state, message) { + var mark = { + name: state.filename, + buffer: state.input.slice(0, -1), // omit trailing \0 + position: state.position, + line: state.line, + column: state.position - state.lineStart + }; - ch = state.input.charCodeAt(++state.position); + mark.snippet = makeSnippet(mark); - if (ch === 0x3C/* < */) { - isVerbatim = true; - ch = state.input.charCodeAt(++state.position); + return new YAMLException(message, mark); +} - } else if (ch === 0x21/* ! */) { - isNamed = true; - tagHandle = '!!'; - ch = state.input.charCodeAt(++state.position); +function throwError(state, message) { + throw generateError(state, message); +} - } else { - tagHandle = '!'; +function throwWarning(state, message) { + if (state.onWarning) { + state.onWarning.call(null, generateError(state, message)); } +} - _position = state.position; - - if (isVerbatim) { - do { ch = state.input.charCodeAt(++state.position); } - while (ch !== 0 && ch !== 0x3E/* > */); - if (state.position < state.length) { - tagName = state.input.slice(_position, state.position); - ch = state.input.charCodeAt(++state.position); - } else { - throwError(state, 'unexpected end of the stream within a verbatim tag'); - } - } else { - while (ch !== 0 && !is_WS_OR_EOL(ch)) { +var directiveHandlers = { - if (ch === 0x21/* ! */) { - if (!isNamed) { - tagHandle = state.input.slice(_position - 1, state.position + 1); + YAML: function handleYamlDirective(state, name, args) { - if (!PATTERN_TAG_HANDLE.test(tagHandle)) { - throwError(state, 'named tag handle cannot contain such characters'); - } + var match, major, minor; - isNamed = true; - _position = state.position + 1; - } else { - throwError(state, 'tag suffix cannot contain exclamation marks'); - } - } + if (state.version !== null) { + throwError(state, 'duplication of %YAML directive'); + } - ch = state.input.charCodeAt(++state.position); + if (args.length !== 1) { + throwError(state, 'YAML directive accepts exactly one argument'); } - tagName = state.input.slice(_position, state.position); + match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]); - if (PATTERN_FLOW_INDICATORS.test(tagName)) { - throwError(state, 'tag suffix cannot contain flow indicator characters'); + if (match === null) { + throwError(state, 'ill-formed argument of the YAML directive'); } - } - - if (tagName && !PATTERN_TAG_URI.test(tagName)) { - throwError(state, 'tag name cannot contain such characters: ' + tagName); - } - try { - tagName = decodeURIComponent(tagName); - } catch (err) { - throwError(state, 'tag name is malformed: ' + tagName); - } + major = parseInt(match[1], 10); + minor = parseInt(match[2], 10); - if (isVerbatim) { - state.tag = tagName; + if (major !== 1) { + throwError(state, 'unacceptable YAML version of the document'); + } - } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) { - state.tag = state.tagMap[tagHandle] + tagName; + state.version = args[0]; + state.checkLineBreaks = (minor < 2); - } else if (tagHandle === '!') { - state.tag = '!' + tagName; + if (minor !== 1 && minor !== 2) { + throwWarning(state, 'unsupported YAML version of the document'); + } + }, - } else if (tagHandle === '!!') { - state.tag = 'tag:yaml.org,2002:' + tagName; + TAG: function handleTagDirective(state, name, args) { - } else { - throwError(state, 'undeclared tag handle "' + tagHandle + '"'); - } + var handle, prefix; - return true; -} + if (args.length !== 2) { + throwError(state, 'TAG directive accepts exactly two arguments'); + } -function readAnchorProperty(state) { - var _position, - ch; + handle = args[0]; + prefix = args[1]; - ch = state.input.charCodeAt(state.position); + if (!PATTERN_TAG_HANDLE.test(handle)) { + throwError(state, 'ill-formed tag handle (first argument) of the TAG directive'); + } - if (ch !== 0x26/* & */) return false; + if (_hasOwnProperty.call(state.tagMap, handle)) { + throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle'); + } - if (state.anchor !== null) { - throwError(state, 'duplication of an anchor property'); - } + if (!PATTERN_TAG_URI.test(prefix)) { + throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive'); + } - ch = state.input.charCodeAt(++state.position); - _position = state.position; + try { + prefix = decodeURIComponent(prefix); + } catch (err) { + throwError(state, 'tag prefix is malformed: ' + prefix); + } - while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { - ch = state.input.charCodeAt(++state.position); + state.tagMap[handle] = prefix; } +}; - if (state.position === _position) { - throwError(state, 'name of an anchor node must contain at least one character'); - } - state.anchor = state.input.slice(_position, state.position); - return true; -} +function captureSegment(state, start, end, checkJson) { + var _position, _length, _character, _result; -function readAlias(state) { - var _position, alias, - ch; + if (start < end) { + _result = state.input.slice(start, end); - ch = state.input.charCodeAt(state.position); + if (checkJson) { + for (_position = 0, _length = _result.length; _position < _length; _position += 1) { + _character = _result.charCodeAt(_position); + if (!(_character === 0x09 || + (0x20 <= _character && _character <= 0x10FFFF))) { + throwError(state, 'expected valid JSON character'); + } + } + } else if (PATTERN_NON_PRINTABLE.test(_result)) { + throwError(state, 'the stream contains non-printable characters'); + } - if (ch !== 0x2A/* * */) return false; + state.result += _result; + } +} - ch = state.input.charCodeAt(++state.position); - _position = state.position; +function mergeMappings(state, destination, source, overridableKeys) { + var sourceKeys, key, index, quantity; - while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { - ch = state.input.charCodeAt(++state.position); + if (!common.isObject(source)) { + throwError(state, 'cannot merge mappings; the provided source object is unacceptable'); } - if (state.position === _position) { - throwError(state, 'name of an alias node must contain at least one character'); - } + sourceKeys = Object.keys(source); - alias = state.input.slice(_position, state.position); + for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) { + key = sourceKeys[index]; - if (!_hasOwnProperty.call(state.anchorMap, alias)) { - throwError(state, 'unidentified alias "' + alias + '"'); + if (!_hasOwnProperty.call(destination, key)) { + destination[key] = source[key]; + overridableKeys[key] = true; + } } - - state.result = state.anchorMap[alias]; - skipSeparationSpace(state, true, -1); - return true; } -function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) { - var allowBlockStyles, - allowBlockScalars, - allowBlockCollections, - indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) { - indentStatus = 1; - } else if (state.lineIndent === parentIndent) { - indentStatus = 0; - } else if (state.lineIndent < parentIndent) { - indentStatus = -1; + if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') { + keyNode[index] = '[object Object]'; } } } - if (indentStatus === 1) { - while (readTagProperty(state) || readAnchorProperty(state)) { - if (skipSeparationSpace(state, true, -1)) { - atNewLine = true; - allowBlockCollections = allowBlockStyles; - - if (state.lineIndent > parentIndent) { - indentStatus = 1; - } else if (state.lineIndent === parentIndent) { - indentStatus = 0; - } else if (state.lineIndent < parentIndent) { - indentStatus = -1; - } - } else { - allowBlockCollections = false; - } - } + // Avoid code execution in load() via toString property + // (still use its own toString for arrays, timestamps, + // and whatever user schema extensions happen to have @@toStringTag) + if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') { + keyNode = '[object Object]'; } - if (allowBlockCollections) { - allowBlockCollections = atNewLine || allowCompact; + + keyNode = String(keyNode); + + if (_result === null) { + _result = {}; } - if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) { - if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) { - flowIndent = parentIndent; + if (keyTag === 'tag:yaml.org,2002:merge') { + if (Array.isArray(valueNode)) { + for (index = 0, quantity = valueNode.length; index < quantity; index += 1) { + mergeMappings(state, _result, valueNode[index], overridableKeys); + } } else { - flowIndent = parentIndent + 1; + mergeMappings(state, _result, valueNode, overridableKeys); + } + } else { + if (!state.json && + !_hasOwnProperty.call(overridableKeys, keyNode) && + _hasOwnProperty.call(_result, keyNode)) { + state.line = startLine || state.line; + state.lineStart = startLineStart || state.lineStart; + state.position = startPos || state.position; + throwError(state, 'duplicated mapping key'); } - blockIndent = state.position - state.lineStart; - - if (indentStatus === 1) { - if (allowBlockCollections && - (readBlockSequence(state, blockIndent) || - readBlockMapping(state, blockIndent, flowIndent)) || - readFlowCollection(state, flowIndent)) { - hasContent = true; - } else { - if ((allowBlockScalars && readBlockScalar(state, flowIndent)) || - readSingleQuotedScalar(state, flowIndent) || - readDoubleQuotedScalar(state, flowIndent)) { - hasContent = true; - - } else if (readAlias(state)) { - hasContent = true; + // used for this specific key only because Object.defineProperty is slow + if (keyNode === '__proto__') { + Object.defineProperty(_result, keyNode, { + configurable: true, + enumerable: true, + writable: true, + value: valueNode + }); + } else { + _result[keyNode] = valueNode; + } + delete overridableKeys[keyNode]; + } - if (state.tag !== null || state.anchor !== null) { - throwError(state, 'alias node should not have any properties'); - } + return _result; +} - } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) { - hasContent = true; +function readLineBreak(state) { + var ch; - if (state.tag === null) { - state.tag = '?'; - } - } + ch = state.input.charCodeAt(state.position); - if (state.anchor !== null) { - state.anchorMap[state.anchor] = state.result; - } - } - } else if (indentStatus === 0) { - // Special case: block sequences are allowed to have same indentation level as the parent. - // http://www.yaml.org/spec/1.2/spec.html#id2799784 - hasContent = allowBlockCollections && readBlockSequence(state, blockIndent); + if (ch === 0x0A/* LF */) { + state.position++; + } else if (ch === 0x0D/* CR */) { + state.position++; + if (state.input.charCodeAt(state.position) === 0x0A/* LF */) { + state.position++; } + } else { + throwError(state, 'a line break is expected'); } - if (state.tag === null) { - if (state.anchor !== null) { - state.anchorMap[state.anchor] = state.result; - } - - } else if (state.tag === '?') { - // Implicit resolving is not allowed for non-scalar types, and '?' - // non-specific tag is only automatically assigned to plain scalars. - // - // We only need to check kind conformity in case user explicitly assigns '?' - // tag, for example like this: "! [0]" - // - if (state.result !== null && state.kind !== 'scalar') { - throwError(state, 'unacceptable node kind for ! tag; it should be "scalar", not "' + state.kind + '"'); - } + state.line += 1; + state.lineStart = state.position; + state.firstTabInLine = -1; +} - for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) { - type = state.implicitTypes[typeIndex]; +function skipSeparationSpace(state, allowComments, checkIndent) { + var lineBreaks = 0, + ch = state.input.charCodeAt(state.position); - if (type.resolve(state.result)) { // `state.result` updated in resolver if matched - state.result = type.construct(state.result); - state.tag = type.tag; - if (state.anchor !== null) { - state.anchorMap[state.anchor] = state.result; - } - break; + while (ch !== 0) { + while (is_WHITE_SPACE(ch)) { + if (ch === 0x09/* Tab */ && state.firstTabInLine === -1) { + state.firstTabInLine = state.position; } + ch = state.input.charCodeAt(++state.position); } - } else if (state.tag !== '!') { - if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) { - type = state.typeMap[state.kind || 'fallback'][state.tag]; - } else { - // looking for multi type - type = null; - typeList = state.typeMap.multi[state.kind || 'fallback']; - for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) { - if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) { - type = typeList[typeIndex]; - break; - } - } + if (allowComments && ch === 0x23/* # */) { + do { + ch = state.input.charCodeAt(++state.position); + } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0); } - if (!type) { - throwError(state, 'unknown tag !<' + state.tag + '>'); - } + if (is_EOL(ch)) { + readLineBreak(state); - if (state.result !== null && type.kind !== state.kind) { - throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be "' + type.kind + '", not "' + state.kind + '"'); - } + ch = state.input.charCodeAt(state.position); + lineBreaks++; + state.lineIndent = 0; - if (!type.resolve(state.result, state.tag)) { // `state.result` updated in resolver if matched - throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag'); - } else { - state.result = type.construct(state.result, state.tag); - if (state.anchor !== null) { - state.anchorMap[state.anchor] = state.result; + while (ch === 0x20/* Space */) { + state.lineIndent++; + ch = state.input.charCodeAt(++state.position); } + } else { + break; } } - if (state.listener !== null) { - state.listener('close', state); + if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) { + throwWarning(state, 'deficient indentation'); } - return state.tag !== null || state.anchor !== null || hasContent; + + return lineBreaks; } -function readDocument(state) { - var documentStart = state.position, - _position, - directiveName, - directiveArgs, - hasDirectives = false, +function testDocumentSeparator(state) { + var _position = state.position, ch; - state.version = null; - state.checkLineBreaks = state.legacy; - state.tagMap = Object.create(null); - state.anchorMap = Object.create(null); + ch = state.input.charCodeAt(_position); - while ((ch = state.input.charCodeAt(state.position)) !== 0) { - skipSeparationSpace(state, true, -1); + // Condition state.position === state.lineStart is tested + // in parent on each call, for efficiency. No needs to test here again. + if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) && + ch === state.input.charCodeAt(_position + 1) && + ch === state.input.charCodeAt(_position + 2)) { - ch = state.input.charCodeAt(state.position); + _position += 3; - if (state.lineIndent > 0 || ch !== 0x25/* % */) { - break; + ch = state.input.charCodeAt(_position); + + if (ch === 0 || is_WS_OR_EOL(ch)) { + return true; } + } - hasDirectives = true; - ch = state.input.charCodeAt(++state.position); - _position = state.position; + return false; +} - while (ch !== 0 && !is_WS_OR_EOL(ch)) { - ch = state.input.charCodeAt(++state.position); - } +function writeFoldedLines(state, count) { + if (count === 1) { + state.result += ' '; + } else if (count > 1) { + state.result += common.repeat('\n', count - 1); + } +} - directiveName = state.input.slice(_position, state.position); - directiveArgs = []; - if (directiveName.length < 1) { - throwError(state, 'directive name must not be less than one character in length'); +function readPlainScalar(state, nodeIndent, withinFlowCollection) { + var preceding, + following, + captureStart, + captureEnd, + hasPendingContent, + _line, + _lineStart, + _lineIndent, + _kind = state.kind, + _result = state.result, + ch; + + ch = state.input.charCodeAt(state.position); + + if (is_WS_OR_EOL(ch) || + is_FLOW_INDICATOR(ch) || + ch === 0x23/* # */ || + ch === 0x26/* & */ || + ch === 0x2A/* * */ || + ch === 0x21/* ! */ || + ch === 0x7C/* | */ || + ch === 0x3E/* > */ || + ch === 0x27/* ' */ || + ch === 0x22/* " */ || + ch === 0x25/* % */ || + ch === 0x40/* @ */ || + ch === 0x60/* ` */) { + return false; + } + + if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) { + following = state.input.charCodeAt(state.position + 1); + + if (is_WS_OR_EOL(following) || + withinFlowCollection && is_FLOW_INDICATOR(following)) { + return false; } + } - while (ch !== 0) { - while (is_WHITE_SPACE(ch)) { - ch = state.input.charCodeAt(++state.position); + state.kind = 'scalar'; + state.result = ''; + captureStart = captureEnd = state.position; + hasPendingContent = false; + + while (ch !== 0) { + if (ch === 0x3A/* : */) { + following = state.input.charCodeAt(state.position + 1); + + if (is_WS_OR_EOL(following) || + withinFlowCollection && is_FLOW_INDICATOR(following)) { + break; } - if (ch === 0x23/* # */) { - do { ch = state.input.charCodeAt(++state.position); } - while (ch !== 0 && !is_EOL(ch)); + } else if (ch === 0x23/* # */) { + preceding = state.input.charCodeAt(state.position - 1); + + if (is_WS_OR_EOL(preceding)) { break; } - if (is_EOL(ch)) break; + } else if ((state.position === state.lineStart && testDocumentSeparator(state)) || + withinFlowCollection && is_FLOW_INDICATOR(ch)) { + break; - _position = state.position; + } else if (is_EOL(ch)) { + _line = state.line; + _lineStart = state.lineStart; + _lineIndent = state.lineIndent; + skipSeparationSpace(state, false, -1); - while (ch !== 0 && !is_WS_OR_EOL(ch)) { - ch = state.input.charCodeAt(++state.position); + if (state.lineIndent >= nodeIndent) { + hasPendingContent = true; + ch = state.input.charCodeAt(state.position); + continue; + } else { + state.position = captureEnd; + state.line = _line; + state.lineStart = _lineStart; + state.lineIndent = _lineIndent; + break; } - - directiveArgs.push(state.input.slice(_position, state.position)); } - if (ch !== 0) readLineBreak(state); + if (hasPendingContent) { + captureSegment(state, captureStart, captureEnd, false); + writeFoldedLines(state, state.line - _line); + captureStart = captureEnd = state.position; + hasPendingContent = false; + } - if (_hasOwnProperty.call(directiveHandlers, directiveName)) { - directiveHandlers[directiveName](state, directiveName, directiveArgs); - } else { - throwWarning(state, 'unknown document directive "' + directiveName + '"'); + if (!is_WHITE_SPACE(ch)) { + captureEnd = state.position + 1; } + + ch = state.input.charCodeAt(++state.position); } - skipSeparationSpace(state, true, -1); + captureSegment(state, captureStart, captureEnd, false); - if (state.lineIndent === 0 && - state.input.charCodeAt(state.position) === 0x2D/* - */ && - state.input.charCodeAt(state.position + 1) === 0x2D/* - */ && - state.input.charCodeAt(state.position + 2) === 0x2D/* - */) { - state.position += 3; - skipSeparationSpace(state, true, -1); + if (state.result) { + return true; + } + + state.kind = _kind; + state.result = _result; + return false; +} + +function readSingleQuotedScalar(state, nodeIndent) { + var ch, + captureStart, captureEnd; + + ch = state.input.charCodeAt(state.position); - } else if (hasDirectives) { - throwError(state, 'directives end mark is expected'); + if (ch !== 0x27/* ' */) { + return false; } - composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true); - skipSeparationSpace(state, true, -1); + state.kind = 'scalar'; + state.result = ''; + state.position++; + captureStart = captureEnd = state.position; - if (state.checkLineBreaks && - PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) { - throwWarning(state, 'non-ASCII line breaks are interpreted as content'); - } + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + if (ch === 0x27/* ' */) { + captureSegment(state, captureStart, state.position, true); + ch = state.input.charCodeAt(++state.position); - state.documents.push(state.result); + if (ch === 0x27/* ' */) { + captureStart = state.position; + state.position++; + captureEnd = state.position; + } else { + return true; + } - if (state.position === state.lineStart && testDocumentSeparator(state)) { + } else if (is_EOL(ch)) { + captureSegment(state, captureStart, captureEnd, true); + writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); + captureStart = captureEnd = state.position; - if (state.input.charCodeAt(state.position) === 0x2E/* . */) { - state.position += 3; - skipSeparationSpace(state, true, -1); + } else if (state.position === state.lineStart && testDocumentSeparator(state)) { + throwError(state, 'unexpected end of the document within a single quoted scalar'); + + } else { + state.position++; + captureEnd = state.position; } - return; } - if (state.position < (state.length - 1)) { - throwError(state, 'end of the stream or a document separator is expected'); - } else { - return; - } + throwError(state, 'unexpected end of the stream within a single quoted scalar'); } +function readDoubleQuotedScalar(state, nodeIndent) { + var captureStart, + captureEnd, + hexLength, + hexResult, + tmp, + ch; -function loadDocuments(input, options) { - input = String(input); - options = options || {}; - - if (input.length !== 0) { - - // Add tailing `\n` if not exists - if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ && - input.charCodeAt(input.length - 1) !== 0x0D/* CR */) { - input += '\n'; - } + ch = state.input.charCodeAt(state.position); - // Strip BOM - if (input.charCodeAt(0) === 0xFEFF) { - input = input.slice(1); - } + if (ch !== 0x22/* " */) { + return false; } - var state = new State(input, options); + state.kind = 'scalar'; + state.result = ''; + state.position++; + captureStart = captureEnd = state.position; - var nullpos = input.indexOf('\0'); + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + if (ch === 0x22/* " */) { + captureSegment(state, captureStart, state.position, true); + state.position++; + return true; - if (nullpos !== -1) { - state.position = nullpos; - throwError(state, 'null byte is not allowed in input'); - } + } else if (ch === 0x5C/* \ */) { + captureSegment(state, captureStart, state.position, true); + ch = state.input.charCodeAt(++state.position); - // Use 0 as string terminator. That significantly simplifies bounds check. - state.input += '\0'; + if (is_EOL(ch)) { + skipSeparationSpace(state, false, nodeIndent); - while (state.input.charCodeAt(state.position) === 0x20/* Space */) { - state.lineIndent += 1; - state.position += 1; - } + // TODO: rework to inline fn with no type cast? + } else if (ch < 256 && simpleEscapeCheck[ch]) { + state.result += simpleEscapeMap[ch]; + state.position++; - while (state.position < (state.length - 1)) { - readDocument(state); - } + } else if ((tmp = escapedHexLen(ch)) > 0) { + hexLength = tmp; + hexResult = 0; - return state.documents; -} + for (; hexLength > 0; hexLength--) { + ch = state.input.charCodeAt(++state.position); + if ((tmp = fromHexCode(ch)) >= 0) { + hexResult = (hexResult << 4) + tmp; -function loadAll(input, iterator, options) { - if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') { - options = iterator; - iterator = null; - } + } else { + throwError(state, 'expected hexadecimal character'); + } + } - var documents = loadDocuments(input, options); + state.result += charFromCodepoint(hexResult); - if (typeof iterator !== 'function') { - return documents; - } + state.position++; - for (var index = 0, length = documents.length; index < length; index += 1) { - iterator(documents[index]); - } -} + } else { + throwError(state, 'unknown escape sequence'); + } + captureStart = captureEnd = state.position; -function load(input, options) { - var documents = loadDocuments(input, options); + } else if (is_EOL(ch)) { + captureSegment(state, captureStart, captureEnd, true); + writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); + captureStart = captureEnd = state.position; - if (documents.length === 0) { - /*eslint-disable no-undefined*/ - return undefined; - } else if (documents.length === 1) { - return documents[0]; + } else if (state.position === state.lineStart && testDocumentSeparator(state)) { + throwError(state, 'unexpected end of the document within a double quoted scalar'); + + } else { + state.position++; + captureEnd = state.position; + } } - throw new YAMLException('expected a single document in the stream, but found more'); -} + throwError(state, 'unexpected end of the stream within a double quoted scalar'); +} -module.exports.loadAll = loadAll; -module.exports.load = load; +function readFlowCollection(state, nodeIndent) { + var readNext = true, + _line, + _lineStart, + _pos, + _tag = state.tag, + _result, + _anchor = state.anchor, + following, + terminator, + isPair, + isExplicitPair, + isMapping, + overridableKeys = Object.create(null), + keyNode, + keyTag, + valueNode, + ch; + ch = state.input.charCodeAt(state.position); -/***/ }), + if (ch === 0x5B/* [ */) { + terminator = 0x5D;/* ] */ + isMapping = false; + _result = []; + } else if (ch === 0x7B/* { */) { + terminator = 0x7D;/* } */ + isMapping = true; + _result = {}; + } else { + return false; + } -/***/ 1082: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } -"use strict"; + ch = state.input.charCodeAt(++state.position); + while (ch !== 0) { + skipSeparationSpace(state, true, nodeIndent); -/*eslint-disable max-len*/ + ch = state.input.charCodeAt(state.position); -var YAMLException = __nccwpck_require__(8179); -var Type = __nccwpck_require__(6073); + if (ch === terminator) { + state.position++; + state.tag = _tag; + state.anchor = _anchor; + state.kind = isMapping ? 'mapping' : 'sequence'; + state.result = _result; + return true; + } else if (!readNext) { + throwError(state, 'missed comma between flow collection entries'); + } else if (ch === 0x2C/* , */) { + // "flow collection entries can never be completely empty", as per YAML 1.2, section 7.4 + throwError(state, "expected the node content, but found ','"); + } + keyTag = keyNode = valueNode = null; + isPair = isExplicitPair = false; -function compileList(schema, name) { - var result = []; + if (ch === 0x3F/* ? */) { + following = state.input.charCodeAt(state.position + 1); - schema[name].forEach(function (currentType) { - var newIndex = result.length; + if (is_WS_OR_EOL(following)) { + isPair = isExplicitPair = true; + state.position++; + skipSeparationSpace(state, true, nodeIndent); + } + } - result.forEach(function (previousType, previousIndex) { - if (previousType.tag === currentType.tag && - previousType.kind === currentType.kind && - previousType.multi === currentType.multi) { + _line = state.line; // Save the current line. + _lineStart = state.lineStart; + _pos = state.position; + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); + keyTag = state.tag; + keyNode = state.result; + skipSeparationSpace(state, true, nodeIndent); - newIndex = previousIndex; - } - }); + ch = state.input.charCodeAt(state.position); - result[newIndex] = currentType; - }); + if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) { + isPair = true; + ch = state.input.charCodeAt(++state.position); + skipSeparationSpace(state, true, nodeIndent); + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); + valueNode = state.result; + } - return result; -} + if (isMapping) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos); + } else if (isPair) { + _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos)); + } else { + _result.push(keyNode); + } + skipSeparationSpace(state, true, nodeIndent); -function compileMap(/* lists... */) { - var result = { - scalar: {}, - sequence: {}, - mapping: {}, - fallback: {}, - multi: { - scalar: [], - sequence: [], - mapping: [], - fallback: [] - } - }, index, length; + ch = state.input.charCodeAt(state.position); - function collectType(type) { - if (type.multi) { - result.multi[type.kind].push(type); - result.multi['fallback'].push(type); + if (ch === 0x2C/* , */) { + readNext = true; + ch = state.input.charCodeAt(++state.position); } else { - result[type.kind][type.tag] = result['fallback'][type.tag] = type; + readNext = false; } } - for (index = 0, length = arguments.length; index < length; index += 1) { - arguments[index].forEach(collectType); - } - return result; -} - - -function Schema(definition) { - return this.extend(definition); + throwError(state, 'unexpected end of the stream within a flow collection'); } +function readBlockScalar(state, nodeIndent) { + var captureStart, + folding, + chomping = CHOMPING_CLIP, + didReadContent = false, + detectedIndent = false, + textIndent = nodeIndent, + emptyLines = 0, + atMoreIndented = false, + tmp, + ch; -Schema.prototype.extend = function extend(definition) { - var implicit = []; - var explicit = []; + ch = state.input.charCodeAt(state.position); - if (definition instanceof Type) { - // Schema.extend(type) - explicit.push(definition); + if (ch === 0x7C/* | */) { + folding = false; + } else if (ch === 0x3E/* > */) { + folding = true; + } else { + return false; + } - } else if (Array.isArray(definition)) { - // Schema.extend([ type1, type2, ... ]) - explicit = explicit.concat(definition); + state.kind = 'scalar'; + state.result = ''; - } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) { - // Schema.extend({ explicit: [ type1, type2, ... ], implicit: [ type1, type2, ... ] }) - if (definition.implicit) implicit = implicit.concat(definition.implicit); - if (definition.explicit) explicit = explicit.concat(definition.explicit); + while (ch !== 0) { + ch = state.input.charCodeAt(++state.position); - } else { - throw new YAMLException('Schema.extend argument should be a Type, [ Type ], ' + - 'or a schema definition ({ implicit: [...], explicit: [...] })'); - } + if (ch === 0x2B/* + */ || ch === 0x2D/* - */) { + if (CHOMPING_CLIP === chomping) { + chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP; + } else { + throwError(state, 'repeat of a chomping mode identifier'); + } - implicit.forEach(function (type) { - if (!(type instanceof Type)) { - throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.'); - } + } else if ((tmp = fromDecimalCode(ch)) >= 0) { + if (tmp === 0) { + throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one'); + } else if (!detectedIndent) { + textIndent = nodeIndent + tmp - 1; + detectedIndent = true; + } else { + throwError(state, 'repeat of an indentation width identifier'); + } - if (type.loadKind && type.loadKind !== 'scalar') { - throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.'); + } else { + break; } + } - if (type.multi) { - throw new YAMLException('There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.'); - } - }); + if (is_WHITE_SPACE(ch)) { + do { ch = state.input.charCodeAt(++state.position); } + while (is_WHITE_SPACE(ch)); - explicit.forEach(function (type) { - if (!(type instanceof Type)) { - throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.'); + if (ch === 0x23/* # */) { + do { ch = state.input.charCodeAt(++state.position); } + while (!is_EOL(ch) && (ch !== 0)); } - }); - - var result = Object.create(Schema.prototype); + } - result.implicit = (this.implicit || []).concat(implicit); - result.explicit = (this.explicit || []).concat(explicit); + while (ch !== 0) { + readLineBreak(state); + state.lineIndent = 0; - result.compiledImplicit = compileList(result, 'implicit'); - result.compiledExplicit = compileList(result, 'explicit'); - result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit); + ch = state.input.charCodeAt(state.position); - return result; -}; + while ((!detectedIndent || state.lineIndent < textIndent) && + (ch === 0x20/* Space */)) { + state.lineIndent++; + ch = state.input.charCodeAt(++state.position); + } + if (!detectedIndent && state.lineIndent > textIndent) { + textIndent = state.lineIndent; + } -module.exports = Schema; + if (is_EOL(ch)) { + emptyLines++; + continue; + } + // End of the scalar. + if (state.lineIndent < textIndent) { -/***/ }), + // Perform the chomping. + if (chomping === CHOMPING_KEEP) { + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + } else if (chomping === CHOMPING_CLIP) { + if (didReadContent) { // i.e. only if the scalar is not empty. + state.result += '\n'; + } + } -/***/ 2011: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + // Break this `while` cycle and go to the funciton's epilogue. + break; + } -"use strict"; -// Standard YAML's Core schema. -// http://www.yaml.org/spec/1.2/spec.html#id2804923 -// -// NOTE: JS-YAML does not support schema-specific tag resolution restrictions. -// So, Core schema has no distinctions from JSON schema is JS-YAML. + // Folded style: use fancy rules to handle line breaks. + if (folding) { + // Lines starting with white space characters (more-indented lines) are not folded. + if (is_WHITE_SPACE(ch)) { + atMoreIndented = true; + // except for the first content line (cf. Example 8.1) + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + // End of more-indented block. + } else if (atMoreIndented) { + atMoreIndented = false; + state.result += common.repeat('\n', emptyLines + 1); + // Just one line break - perceive as the same line. + } else if (emptyLines === 0) { + if (didReadContent) { // i.e. only if we have already read some scalar content. + state.result += ' '; + } + // Several line breaks - perceive as different lines. + } else { + state.result += common.repeat('\n', emptyLines); + } -module.exports = __nccwpck_require__(1035); + // Literal style: just add exact number of line breaks between content lines. + } else { + // Keep all line breaks except the header line break. + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + } + didReadContent = true; + detectedIndent = true; + emptyLines = 0; + captureStart = state.position; -/***/ }), + while (!is_EOL(ch) && (ch !== 0)) { + ch = state.input.charCodeAt(++state.position); + } -/***/ 8759: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + captureSegment(state, captureStart, state.position, false); + } -"use strict"; -// JS-YAML's default schema for `safeLoad` function. -// It is not described in the YAML specification. -// -// This schema is based on standard YAML's Core schema and includes most of -// extra types described at YAML tag repository. (http://yaml.org/type/) + return true; +} +function readBlockSequence(state, nodeIndent) { + var _line, + _tag = state.tag, + _anchor = state.anchor, + _result = [], + following, + detected = false, + ch; + // there is a leading tab before this token, so it can't be a block sequence/mapping; + // it can still be flow sequence/mapping or a scalar + if (state.firstTabInLine !== -1) return false; + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } + ch = state.input.charCodeAt(state.position); -module.exports = (__nccwpck_require__(2011).extend)({ - implicit: [ - __nccwpck_require__(9212), - __nccwpck_require__(6104) - ], - explicit: [ - __nccwpck_require__(7900), - __nccwpck_require__(9046), - __nccwpck_require__(6860), - __nccwpck_require__(9548) - ] -}); + while (ch !== 0) { + if (state.firstTabInLine !== -1) { + state.position = state.firstTabInLine; + throwError(state, 'tab characters must not be used in indentation'); + } + if (ch !== 0x2D/* - */) { + break; + } -/***/ }), + following = state.input.charCodeAt(state.position + 1); -/***/ 8562: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (!is_WS_OR_EOL(following)) { + break; + } -"use strict"; -// Standard YAML's Failsafe schema. -// http://www.yaml.org/spec/1.2/spec.html#id2802346 + detected = true; + state.position++; + if (skipSeparationSpace(state, true, -1)) { + if (state.lineIndent <= nodeIndent) { + _result.push(null); + ch = state.input.charCodeAt(state.position); + continue; + } + } + _line = state.line; + composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true); + _result.push(state.result); + skipSeparationSpace(state, true, -1); + ch = state.input.charCodeAt(state.position); + if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) { + throwError(state, 'bad indentation of a sequence entry'); + } else if (state.lineIndent < nodeIndent) { + break; + } + } -var Schema = __nccwpck_require__(1082); + if (detected) { + state.tag = _tag; + state.anchor = _anchor; + state.kind = 'sequence'; + state.result = _result; + return true; + } + return false; +} +function readBlockMapping(state, nodeIndent, flowIndent) { + var following, + allowCompact, + _line, + _keyLine, + _keyLineStart, + _keyPos, + _tag = state.tag, + _anchor = state.anchor, + _result = {}, + overridableKeys = Object.create(null), + keyTag = null, + keyNode = null, + valueNode = null, + atExplicitKey = false, + detected = false, + ch; -module.exports = new Schema({ - explicit: [ - __nccwpck_require__(3619), - __nccwpck_require__(7283), - __nccwpck_require__(6150) - ] -}); + // there is a leading tab before this token, so it can't be a block sequence/mapping; + // it can still be flow sequence/mapping or a scalar + if (state.firstTabInLine !== -1) return false; + if (state.anchor !== null) { + state.anchorMap[state.anchor] = _result; + } -/***/ }), + ch = state.input.charCodeAt(state.position); -/***/ 1035: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + while (ch !== 0) { + if (!atExplicitKey && state.firstTabInLine !== -1) { + state.position = state.firstTabInLine; + throwError(state, 'tab characters must not be used in indentation'); + } -"use strict"; -// Standard YAML's JSON schema. -// http://www.yaml.org/spec/1.2/spec.html#id2803231 -// -// NOTE: JS-YAML does not support schema-specific tag resolution restrictions. -// So, this schema is not such strict as defined in the YAML specification. -// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc. + following = state.input.charCodeAt(state.position + 1); + _line = state.line; // Save the current line. + // + // Explicit notation case. There are two separate blocks: + // first for the key (denoted by "?") and second for the value (denoted by ":") + // + if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) { + if (ch === 0x3F/* ? */) { + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); + keyTag = keyNode = valueNode = null; + } + detected = true; + atExplicitKey = true; + allowCompact = true; + } else if (atExplicitKey) { + // i.e. 0x3A/* : */ === character after the explicit key. + atExplicitKey = false; + allowCompact = true; -module.exports = (__nccwpck_require__(8562).extend)({ - implicit: [ - __nccwpck_require__(721), - __nccwpck_require__(4993), - __nccwpck_require__(1615), - __nccwpck_require__(2705) - ] -}); + } else { + throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line'); + } + state.position += 1; + ch = following; -/***/ }), + // + // Implicit notation case. Flow-style node as the key first, then ":", and the value. + // + } else { + _keyLine = state.line; + _keyLineStart = state.lineStart; + _keyPos = state.position; -/***/ 6975: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) { + // Neither implicit nor explicit notation. + // Reading is done. Go to the epilogue. + break; + } -"use strict"; + if (state.line === _line) { + ch = state.input.charCodeAt(state.position); + while (is_WHITE_SPACE(ch)) { + ch = state.input.charCodeAt(++state.position); + } + if (ch === 0x3A/* : */) { + ch = state.input.charCodeAt(++state.position); -var common = __nccwpck_require__(6829); + if (!is_WS_OR_EOL(ch)) { + throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping'); + } + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); + keyTag = keyNode = valueNode = null; + } -// get snippet for a single line, respecting maxLength -function getLine(buffer, lineStart, lineEnd, position, maxLineLength) { - var head = ''; - var tail = ''; - var maxHalfLength = Math.floor(maxLineLength / 2) - 1; + detected = true; + atExplicitKey = false; + allowCompact = false; + keyTag = state.tag; + keyNode = state.result; - if (position - lineStart > maxHalfLength) { - head = ' ... '; - lineStart = position - maxHalfLength + head.length; - } + } else if (detected) { + throwError(state, 'can not read an implicit mapping pair; a colon is missed'); - if (lineEnd - position > maxHalfLength) { - tail = ' ...'; - lineEnd = position + maxHalfLength - tail.length; - } + } else { + state.tag = _tag; + state.anchor = _anchor; + return true; // Keep the result of `composeNode`. + } - return { - str: head + buffer.slice(lineStart, lineEnd).replace(/\t/g, '→') + tail, - pos: position - lineStart + head.length // relative position - }; -} + } else if (detected) { + throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key'); + } else { + state.tag = _tag; + state.anchor = _anchor; + return true; // Keep the result of `composeNode`. + } + } -function padStart(string, max) { - return common.repeat(' ', max - string.length) + string; -} + // + // Common reading code for both explicit and implicit notations. + // + if (state.line === _line || state.lineIndent > nodeIndent) { + if (atExplicitKey) { + _keyLine = state.line; + _keyLineStart = state.lineStart; + _keyPos = state.position; + } + if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) { + if (atExplicitKey) { + keyNode = state.result; + } else { + valueNode = state.result; + } + } -function makeSnippet(mark, options) { - options = Object.create(options || null); + if (!atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos); + keyTag = keyNode = valueNode = null; + } - if (!mark.buffer) return null; + skipSeparationSpace(state, true, -1); + ch = state.input.charCodeAt(state.position); + } - if (!options.maxLength) options.maxLength = 79; - if (typeof options.indent !== 'number') options.indent = 1; - if (typeof options.linesBefore !== 'number') options.linesBefore = 3; - if (typeof options.linesAfter !== 'number') options.linesAfter = 2; + if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) { + throwError(state, 'bad indentation of a mapping entry'); + } else if (state.lineIndent < nodeIndent) { + break; + } + } - var re = /\r?\n|\r|\0/g; - var lineStarts = [ 0 ]; - var lineEnds = []; - var match; - var foundLineNo = -1; + // + // Epilogue. + // - while ((match = re.exec(mark.buffer))) { - lineEnds.push(match.index); - lineStarts.push(match.index + match[0].length); + // Special case: last mapping's node contains only the key in explicit notation. + if (atExplicitKey) { + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); + } - if (mark.position <= match.index && foundLineNo < 0) { - foundLineNo = lineStarts.length - 2; - } + // Expose the resulting mapping. + if (detected) { + state.tag = _tag; + state.anchor = _anchor; + state.kind = 'mapping'; + state.result = _result; } - if (foundLineNo < 0) foundLineNo = lineStarts.length - 1; + return detected; +} - var result = '', i, line; - var lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length; - var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3); +function readTagProperty(state) { + var _position, + isVerbatim = false, + isNamed = false, + tagHandle, + tagName, + ch; - for (i = 1; i <= options.linesBefore; i++) { - if (foundLineNo - i < 0) break; - line = getLine( - mark.buffer, - lineStarts[foundLineNo - i], - lineEnds[foundLineNo - i], - mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]), - maxLineLength - ); - result = common.repeat(' ', options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) + - ' | ' + line.str + '\n' + result; - } + ch = state.input.charCodeAt(state.position); - line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength); - result += common.repeat(' ', options.indent) + padStart((mark.line + 1).toString(), lineNoLength) + - ' | ' + line.str + '\n'; - result += common.repeat('-', options.indent + lineNoLength + 3 + line.pos) + '^' + '\n'; + if (ch !== 0x21/* ! */) return false; - for (i = 1; i <= options.linesAfter; i++) { - if (foundLineNo + i >= lineEnds.length) break; - line = getLine( - mark.buffer, - lineStarts[foundLineNo + i], - lineEnds[foundLineNo + i], - mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]), - maxLineLength - ); - result += common.repeat(' ', options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) + - ' | ' + line.str + '\n'; + if (state.tag !== null) { + throwError(state, 'duplication of a tag property'); } - return result.replace(/\n$/, ''); -} + ch = state.input.charCodeAt(++state.position); + if (ch === 0x3C/* < */) { + isVerbatim = true; + ch = state.input.charCodeAt(++state.position); -module.exports = makeSnippet; + } else if (ch === 0x21/* ! */) { + isNamed = true; + tagHandle = '!!'; + ch = state.input.charCodeAt(++state.position); + } else { + tagHandle = '!'; + } -/***/ }), + _position = state.position; -/***/ 6073: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (isVerbatim) { + do { ch = state.input.charCodeAt(++state.position); } + while (ch !== 0 && ch !== 0x3E/* > */); -"use strict"; + if (state.position < state.length) { + tagName = state.input.slice(_position, state.position); + ch = state.input.charCodeAt(++state.position); + } else { + throwError(state, 'unexpected end of the stream within a verbatim tag'); + } + } else { + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + if (ch === 0x21/* ! */) { + if (!isNamed) { + tagHandle = state.input.slice(_position - 1, state.position + 1); -var YAMLException = __nccwpck_require__(8179); + if (!PATTERN_TAG_HANDLE.test(tagHandle)) { + throwError(state, 'named tag handle cannot contain such characters'); + } -var TYPE_CONSTRUCTOR_OPTIONS = [ - 'kind', - 'multi', - 'resolve', - 'construct', - 'instanceOf', - 'predicate', - 'represent', - 'representName', - 'defaultStyle', - 'styleAliases' -]; + isNamed = true; + _position = state.position + 1; + } else { + throwError(state, 'tag suffix cannot contain exclamation marks'); + } + } -var YAML_NODE_KINDS = [ - 'scalar', - 'sequence', - 'mapping' -]; + ch = state.input.charCodeAt(++state.position); + } -function compileStyleAliases(map) { - var result = {}; + tagName = state.input.slice(_position, state.position); - if (map !== null) { - Object.keys(map).forEach(function (style) { - map[style].forEach(function (alias) { - result[String(alias)] = style; - }); - }); + if (PATTERN_FLOW_INDICATORS.test(tagName)) { + throwError(state, 'tag suffix cannot contain flow indicator characters'); + } } - return result; -} + if (tagName && !PATTERN_TAG_URI.test(tagName)) { + throwError(state, 'tag name cannot contain such characters: ' + tagName); + } -function Type(tag, options) { - options = options || {}; + try { + tagName = decodeURIComponent(tagName); + } catch (err) { + throwError(state, 'tag name is malformed: ' + tagName); + } - Object.keys(options).forEach(function (name) { - if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) { - throw new YAMLException('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.'); - } - }); + if (isVerbatim) { + state.tag = tagName; - // TODO: Add tag format check. - this.options = options; // keep original options in case user wants to extend this type later - this.tag = tag; - this.kind = options['kind'] || null; - this.resolve = options['resolve'] || function () { return true; }; - this.construct = options['construct'] || function (data) { return data; }; - this.instanceOf = options['instanceOf'] || null; - this.predicate = options['predicate'] || null; - this.represent = options['represent'] || null; - this.representName = options['representName'] || null; - this.defaultStyle = options['defaultStyle'] || null; - this.multi = options['multi'] || false; - this.styleAliases = compileStyleAliases(options['styleAliases'] || null); + } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) { + state.tag = state.tagMap[tagHandle] + tagName; - if (YAML_NODE_KINDS.indexOf(this.kind) === -1) { - throw new YAMLException('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.'); + } else if (tagHandle === '!') { + state.tag = '!' + tagName; + + } else if (tagHandle === '!!') { + state.tag = 'tag:yaml.org,2002:' + tagName; + + } else { + throwError(state, 'undeclared tag handle "' + tagHandle + '"'); } + + return true; } -module.exports = Type; +function readAnchorProperty(state) { + var _position, + ch; + ch = state.input.charCodeAt(state.position); -/***/ }), + if (ch !== 0x26/* & */) return false; + + if (state.anchor !== null) { + throwError(state, 'duplication of an anchor property'); + } -/***/ 7900: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + ch = state.input.charCodeAt(++state.position); + _position = state.position; -"use strict"; + while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { + ch = state.input.charCodeAt(++state.position); + } + if (state.position === _position) { + throwError(state, 'name of an anchor node must contain at least one character'); + } -/*eslint-disable no-bitwise*/ + state.anchor = state.input.slice(_position, state.position); + return true; +} +function readAlias(state) { + var _position, alias, + ch; -var Type = __nccwpck_require__(6073); + ch = state.input.charCodeAt(state.position); + if (ch !== 0x2A/* * */) return false; -// [ 64, 65, 66 ] -> [ padding, CR, LF ] -var BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r'; + ch = state.input.charCodeAt(++state.position); + _position = state.position; + while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { + ch = state.input.charCodeAt(++state.position); + } -function resolveYamlBinary(data) { - if (data === null) return false; + if (state.position === _position) { + throwError(state, 'name of an alias node must contain at least one character'); + } - var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP; + alias = state.input.slice(_position, state.position); - // Convert one by one. - for (idx = 0; idx < max; idx++) { - code = map.indexOf(data.charAt(idx)); + if (!_hasOwnProperty.call(state.anchorMap, alias)) { + throwError(state, 'unidentified alias "' + alias + '"'); + } - // Skip CR/LF - if (code > 64) continue; + state.result = state.anchorMap[alias]; + skipSeparationSpace(state, true, -1); + return true; +} - // Fail on illegal characters - if (code < 0) return false; +function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) { + var allowBlockStyles, + allowBlockScalars, + allowBlockCollections, + indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this> 16) & 0xFF); - result.push((bits >> 8) & 0xFF); - result.push(bits & 0xFF); + if (state.lineIndent > parentIndent) { + indentStatus = 1; + } else if (state.lineIndent === parentIndent) { + indentStatus = 0; + } else if (state.lineIndent < parentIndent) { + indentStatus = -1; + } } - - bits = (bits << 6) | map.indexOf(input.charAt(idx)); } - // Dump tail + if (indentStatus === 1) { + while (readTagProperty(state) || readAnchorProperty(state)) { + if (skipSeparationSpace(state, true, -1)) { + atNewLine = true; + allowBlockCollections = allowBlockStyles; - tailbits = (max % 4) * 6; + if (state.lineIndent > parentIndent) { + indentStatus = 1; + } else if (state.lineIndent === parentIndent) { + indentStatus = 0; + } else if (state.lineIndent < parentIndent) { + indentStatus = -1; + } + } else { + allowBlockCollections = false; + } + } + } - if (tailbits === 0) { - result.push((bits >> 16) & 0xFF); - result.push((bits >> 8) & 0xFF); - result.push(bits & 0xFF); - } else if (tailbits === 18) { - result.push((bits >> 10) & 0xFF); - result.push((bits >> 2) & 0xFF); - } else if (tailbits === 12) { - result.push((bits >> 4) & 0xFF); + if (allowBlockCollections) { + allowBlockCollections = atNewLine || allowCompact; } - return new Uint8Array(result); -} + if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) { + if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) { + flowIndent = parentIndent; + } else { + flowIndent = parentIndent + 1; + } -function representYamlBinary(object /*, style*/) { - var result = '', bits = 0, idx, tail, - max = object.length, - map = BASE64_MAP; + blockIndent = state.position - state.lineStart; - // Convert every three bytes to 4 ASCII characters. + if (indentStatus === 1) { + if (allowBlockCollections && + (readBlockSequence(state, blockIndent) || + readBlockMapping(state, blockIndent, flowIndent)) || + readFlowCollection(state, flowIndent)) { + hasContent = true; + } else { + if ((allowBlockScalars && readBlockScalar(state, flowIndent)) || + readSingleQuotedScalar(state, flowIndent) || + readDoubleQuotedScalar(state, flowIndent)) { + hasContent = true; - for (idx = 0; idx < max; idx++) { - if ((idx % 3 === 0) && idx) { - result += map[(bits >> 18) & 0x3F]; - result += map[(bits >> 12) & 0x3F]; - result += map[(bits >> 6) & 0x3F]; - result += map[bits & 0x3F]; - } + } else if (readAlias(state)) { + hasContent = true; - bits = (bits << 8) + object[idx]; - } + if (state.tag !== null || state.anchor !== null) { + throwError(state, 'alias node should not have any properties'); + } - // Dump tail + } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) { + hasContent = true; - tail = max % 3; + if (state.tag === null) { + state.tag = '?'; + } + } - if (tail === 0) { - result += map[(bits >> 18) & 0x3F]; - result += map[(bits >> 12) & 0x3F]; - result += map[(bits >> 6) & 0x3F]; - result += map[bits & 0x3F]; - } else if (tail === 2) { - result += map[(bits >> 10) & 0x3F]; - result += map[(bits >> 4) & 0x3F]; - result += map[(bits << 2) & 0x3F]; - result += map[64]; - } else if (tail === 1) { - result += map[(bits >> 2) & 0x3F]; - result += map[(bits << 4) & 0x3F]; - result += map[64]; - result += map[64]; + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + } + } else if (indentStatus === 0) { + // Special case: block sequences are allowed to have same indentation level as the parent. + // http://www.yaml.org/spec/1.2/spec.html#id2799784 + hasContent = allowBlockCollections && readBlockSequence(state, blockIndent); + } } - return result; -} + if (state.tag === null) { + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } -function isBinary(obj) { - return Object.prototype.toString.call(obj) === '[object Uint8Array]'; -} + } else if (state.tag === '?') { + // Implicit resolving is not allowed for non-scalar types, and '?' + // non-specific tag is only automatically assigned to plain scalars. + // + // We only need to check kind conformity in case user explicitly assigns '?' + // tag, for example like this: "! [0]" + // + if (state.result !== null && state.kind !== 'scalar') { + throwError(state, 'unacceptable node kind for ! tag; it should be "scalar", not "' + state.kind + '"'); + } -module.exports = new Type('tag:yaml.org,2002:binary', { - kind: 'scalar', - resolve: resolveYamlBinary, - construct: constructYamlBinary, - predicate: isBinary, - represent: representYamlBinary -}); + for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) { + type = state.implicitTypes[typeIndex]; + if (type.resolve(state.result)) { // `state.result` updated in resolver if matched + state.result = type.construct(state.result); + state.tag = type.tag; + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + break; + } + } + } else if (state.tag !== '!') { + if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) { + type = state.typeMap[state.kind || 'fallback'][state.tag]; + } else { + // looking for multi type + type = null; + typeList = state.typeMap.multi[state.kind || 'fallback']; -/***/ }), + for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) { + if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) { + type = typeList[typeIndex]; + break; + } + } + } -/***/ 4993: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (!type) { + throwError(state, 'unknown tag !<' + state.tag + '>'); + } -"use strict"; + if (state.result !== null && type.kind !== state.kind) { + throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be "' + type.kind + '", not "' + state.kind + '"'); + } + if (!type.resolve(state.result, state.tag)) { // `state.result` updated in resolver if matched + throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag'); + } else { + state.result = type.construct(state.result, state.tag); + if (state.anchor !== null) { + state.anchorMap[state.anchor] = state.result; + } + } + } -var Type = __nccwpck_require__(6073); + if (state.listener !== null) { + state.listener('close', state); + } + return state.tag !== null || state.anchor !== null || hasContent; +} -function resolveYamlBoolean(data) { - if (data === null) return false; +function readDocument(state) { + var documentStart = state.position, + _position, + directiveName, + directiveArgs, + hasDirectives = false, + ch; - var max = data.length; + state.version = null; + state.checkLineBreaks = state.legacy; + state.tagMap = Object.create(null); + state.anchorMap = Object.create(null); - return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) || - (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE')); -} + while ((ch = state.input.charCodeAt(state.position)) !== 0) { + skipSeparationSpace(state, true, -1); -function constructYamlBoolean(data) { - return data === 'true' || - data === 'True' || - data === 'TRUE'; -} + ch = state.input.charCodeAt(state.position); -function isBoolean(object) { - return Object.prototype.toString.call(object) === '[object Boolean]'; -} + if (state.lineIndent > 0 || ch !== 0x25/* % */) { + break; + } -module.exports = new Type('tag:yaml.org,2002:bool', { - kind: 'scalar', - resolve: resolveYamlBoolean, - construct: constructYamlBoolean, - predicate: isBoolean, - represent: { - lowercase: function (object) { return object ? 'true' : 'false'; }, - uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; }, - camelcase: function (object) { return object ? 'True' : 'False'; } - }, - defaultStyle: 'lowercase' -}); + hasDirectives = true; + ch = state.input.charCodeAt(++state.position); + _position = state.position; + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + ch = state.input.charCodeAt(++state.position); + } -/***/ }), + directiveName = state.input.slice(_position, state.position); + directiveArgs = []; -/***/ 2705: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (directiveName.length < 1) { + throwError(state, 'directive name must not be less than one character in length'); + } -"use strict"; + while (ch !== 0) { + while (is_WHITE_SPACE(ch)) { + ch = state.input.charCodeAt(++state.position); + } + if (ch === 0x23/* # */) { + do { ch = state.input.charCodeAt(++state.position); } + while (ch !== 0 && !is_EOL(ch)); + break; + } -var common = __nccwpck_require__(6829); -var Type = __nccwpck_require__(6073); + if (is_EOL(ch)) break; -var YAML_FLOAT_PATTERN = new RegExp( - // 2.5e4, 2.5 and integers - '^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' + - // .2e4, .2 - // special case, seems not from spec - '|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' + - // .inf - '|[-+]?\\.(?:inf|Inf|INF)' + - // .nan - '|\\.(?:nan|NaN|NAN))$'); + _position = state.position; -function resolveYamlFloat(data) { - if (data === null) return false; + while (ch !== 0 && !is_WS_OR_EOL(ch)) { + ch = state.input.charCodeAt(++state.position); + } - if (!YAML_FLOAT_PATTERN.test(data) || - // Quick hack to not allow integers end with `_` - // Probably should update regexp & check speed - data[data.length - 1] === '_') { - return false; - } + directiveArgs.push(state.input.slice(_position, state.position)); + } - return true; -} + if (ch !== 0) readLineBreak(state); -function constructYamlFloat(data) { - var value, sign; + if (_hasOwnProperty.call(directiveHandlers, directiveName)) { + directiveHandlers[directiveName](state, directiveName, directiveArgs); + } else { + throwWarning(state, 'unknown document directive "' + directiveName + '"'); + } + } - value = data.replace(/_/g, '').toLowerCase(); - sign = value[0] === '-' ? -1 : 1; + skipSeparationSpace(state, true, -1); - if ('+-'.indexOf(value[0]) >= 0) { - value = value.slice(1); + if (state.lineIndent === 0 && + state.input.charCodeAt(state.position) === 0x2D/* - */ && + state.input.charCodeAt(state.position + 1) === 0x2D/* - */ && + state.input.charCodeAt(state.position + 2) === 0x2D/* - */) { + state.position += 3; + skipSeparationSpace(state, true, -1); + + } else if (hasDirectives) { + throwError(state, 'directives end mark is expected'); } - if (value === '.inf') { - return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY; + composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true); + skipSeparationSpace(state, true, -1); - } else if (value === '.nan') { - return NaN; + if (state.checkLineBreaks && + PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) { + throwWarning(state, 'non-ASCII line breaks are interpreted as content'); } - return sign * parseFloat(value, 10); -} + state.documents.push(state.result); -var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/; - -function representYamlFloat(object, style) { - var res; + if (state.position === state.lineStart && testDocumentSeparator(state)) { - if (isNaN(object)) { - switch (style) { - case 'lowercase': return '.nan'; - case 'uppercase': return '.NAN'; - case 'camelcase': return '.NaN'; - } - } else if (Number.POSITIVE_INFINITY === object) { - switch (style) { - case 'lowercase': return '.inf'; - case 'uppercase': return '.INF'; - case 'camelcase': return '.Inf'; - } - } else if (Number.NEGATIVE_INFINITY === object) { - switch (style) { - case 'lowercase': return '-.inf'; - case 'uppercase': return '-.INF'; - case 'camelcase': return '-.Inf'; + if (state.input.charCodeAt(state.position) === 0x2E/* . */) { + state.position += 3; + skipSeparationSpace(state, true, -1); } - } else if (common.isNegativeZero(object)) { - return '-0.0'; + return; } - res = object.toString(10); - - // JS stringifier can build scientific format without dots: 5e-100, - // while YAML requres dot: 5.e-100. Fix it with simple hack - - return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res; -} - -function isFloat(object) { - return (Object.prototype.toString.call(object) === '[object Number]') && - (object % 1 !== 0 || common.isNegativeZero(object)); + if (state.position < (state.length - 1)) { + throwError(state, 'end of the stream or a document separator is expected'); + } else { + return; + } } -module.exports = new Type('tag:yaml.org,2002:float', { - kind: 'scalar', - resolve: resolveYamlFloat, - construct: constructYamlFloat, - predicate: isFloat, - represent: representYamlFloat, - defaultStyle: 'lowercase' -}); - -/***/ }), +function loadDocuments(input, options) { + input = String(input); + options = options || {}; -/***/ 1615: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (input.length !== 0) { -"use strict"; + // Add tailing `\n` if not exists + if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ && + input.charCodeAt(input.length - 1) !== 0x0D/* CR */) { + input += '\n'; + } + // Strip BOM + if (input.charCodeAt(0) === 0xFEFF) { + input = input.slice(1); + } + } -var common = __nccwpck_require__(6829); -var Type = __nccwpck_require__(6073); + var state = new State(input, options); -function isHexCode(c) { - return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) || - ((0x41/* A */ <= c) && (c <= 0x46/* F */)) || - ((0x61/* a */ <= c) && (c <= 0x66/* f */)); -} + var nullpos = input.indexOf('\0'); -function isOctCode(c) { - return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */)); -} + if (nullpos !== -1) { + state.position = nullpos; + throwError(state, 'null byte is not allowed in input'); + } -function isDecCode(c) { - return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)); -} + // Use 0 as string terminator. That significantly simplifies bounds check. + state.input += '\0'; -function resolveYamlInteger(data) { - if (data === null) return false; + while (state.input.charCodeAt(state.position) === 0x20/* Space */) { + state.lineIndent += 1; + state.position += 1; + } - var max = data.length, - index = 0, - hasDigits = false, - ch; + while (state.position < (state.length - 1)) { + readDocument(state); + } - if (!max) return false; + return state.documents; +} - ch = data[index]; - // sign - if (ch === '-' || ch === '+') { - ch = data[++index]; +function loadAll(input, iterator, options) { + if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') { + options = iterator; + iterator = null; } - if (ch === '0') { - // 0 - if (index + 1 === max) return true; - ch = data[++index]; - - // base 2, base 8, base 16 + var documents = loadDocuments(input, options); - if (ch === 'b') { - // base 2 - index++; + if (typeof iterator !== 'function') { + return documents; + } - for (; index < max; index++) { - ch = data[index]; - if (ch === '_') continue; - if (ch !== '0' && ch !== '1') return false; - hasDigits = true; - } - return hasDigits && ch !== '_'; - } + for (var index = 0, length = documents.length; index < length; index += 1) { + iterator(documents[index]); + } +} - if (ch === 'x') { - // base 16 - index++; +function load(input, options) { + var documents = loadDocuments(input, options); - for (; index < max; index++) { - ch = data[index]; - if (ch === '_') continue; - if (!isHexCode(data.charCodeAt(index))) return false; - hasDigits = true; - } - return hasDigits && ch !== '_'; - } + if (documents.length === 0) { + /*eslint-disable no-undefined*/ + return undefined; + } else if (documents.length === 1) { + return documents[0]; + } + throw new YAMLException('expected a single document in the stream, but found more'); +} - if (ch === 'o') { - // base 8 - index++; +module.exports.loadAll = loadAll; +module.exports.load = load; - for (; index < max; index++) { - ch = data[index]; - if (ch === '_') continue; - if (!isOctCode(data.charCodeAt(index))) return false; - hasDigits = true; - } - return hasDigits && ch !== '_'; - } - } - // base 10 (except 0) +/***/ }), +/* 467 */ +/***/ (function(module, exports, __webpack_require__) { - // value should not start with `_`; - if (ch === '_') return false; +"use strict"; - for (; index < max; index++) { - ch = data[index]; - if (ch === '_') continue; - if (!isDecCode(data.charCodeAt(index))) { - return false; - } - hasDigits = true; - } - // Should have digits and should not end with `_` - if (!hasDigits || ch === '_') return false; +var _interopRequireDefault = __webpack_require__(764); - return true; -} +__webpack_require__(493); -function constructYamlInteger(data) { - var value = data, sign = 1, ch; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; - if (value.indexOf('_') !== -1) { - value = value.replace(/_/g, ''); - } +var _configs = _interopRequireDefault(__webpack_require__(125)); - ch = value[0]; +var _extractUrlsWithIndices = _interopRequireDefault(__webpack_require__(257)); - if (ch === '-' || ch === '+') { - if (ch === '-') sign = -1; - value = value.slice(1); - ch = value[0]; - } +var _getCharacterWeight = _interopRequireDefault(__webpack_require__(41)); - if (value === '0') return 0; +var _modifyIndicesFromUTF16ToUnicode = _interopRequireDefault(__webpack_require__(964)); - if (ch === '0') { - if (value[1] === 'b') return sign * parseInt(value.slice(2), 2); - if (value[1] === 'x') return sign * parseInt(value.slice(2), 16); - if (value[1] === 'o') return sign * parseInt(value.slice(2), 8); - } +var _nonBmpCodePairs = _interopRequireDefault(__webpack_require__(235)); - return sign * parseInt(value, 10); -} +var _parseTweet = _interopRequireDefault(__webpack_require__(166)); -function isInteger(object) { - return (Object.prototype.toString.call(object)) === '[object Number]' && - (object % 1 === 0 && !common.isNegativeZero(object)); -} +var _urlHasHttps = _interopRequireDefault(__webpack_require__(477)); -module.exports = new Type('tag:yaml.org,2002:int', { - kind: 'scalar', - resolve: resolveYamlInteger, - construct: constructYamlInteger, - predicate: isInteger, - represent: { - binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); }, - octal: function (obj) { return obj >= 0 ? '0o' + obj.toString(8) : '-0o' + obj.toString(8).slice(1); }, - decimal: function (obj) { return obj.toString(10); }, - /* eslint-disable max-len */ - hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); } - }, - defaultStyle: 'decimal', - styleAliases: { - binary: [ 2, 'bin' ], - octal: [ 8, 'oct' ], - decimal: [ 10, 'dec' ], - hexadecimal: [ 16, 'hex' ] - } -}); +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var getTweetLength = function getTweetLength(text) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _configs["default"].defaults; + return (0, _parseTweet["default"])(text, options).weightedLength; +}; +var _default = getTweetLength; +exports["default"] = _default; +module.exports = exports.default; /***/ }), - -/***/ 6150: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/* 468 */, +/* 469 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { "use strict"; -var Type = __nccwpck_require__(6073); +var uuid = __webpack_require__(826) +var CombinedStream = __webpack_require__(2) +var isstream = __webpack_require__(857) +var Buffer = __webpack_require__(149).Buffer -module.exports = new Type('tag:yaml.org,2002:map', { - kind: 'mapping', - construct: function (data) { return data !== null ? data : {}; } -}); +function Multipart (request) { + this.request = request + this.boundary = uuid() + this.chunked = false + this.body = null +} +Multipart.prototype.isChunked = function (options) { + var self = this + var chunked = false + var parts = options.data || options -/***/ }), + if (!parts.forEach) { + self.request.emit('error', new Error('Argument error, options.multipart.')) + } -/***/ 6104: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (options.chunked !== undefined) { + chunked = options.chunked + } -"use strict"; + if (self.request.getHeader('transfer-encoding') === 'chunked') { + chunked = true + } + + if (!chunked) { + parts.forEach(function (part) { + if (typeof part.body === 'undefined') { + self.request.emit('error', new Error('Body attribute missing in multipart.')) + } + if (isstream(part.body)) { + chunked = true + } + }) + } + return chunked +} -var Type = __nccwpck_require__(6073); +Multipart.prototype.setHeaders = function (chunked) { + var self = this -function resolveYamlMerge(data) { - return data === '<<' || data === null; + if (chunked && !self.request.hasHeader('transfer-encoding')) { + self.request.setHeader('transfer-encoding', 'chunked') + } + + var header = self.request.getHeader('content-type') + + if (!header || header.indexOf('multipart') === -1) { + self.request.setHeader('content-type', 'multipart/related; boundary=' + self.boundary) + } else { + if (header.indexOf('boundary') !== -1) { + self.boundary = header.replace(/.*boundary=([^\s;]+).*/, '$1') + } else { + self.request.setHeader('content-type', header + '; boundary=' + self.boundary) + } + } } -module.exports = new Type('tag:yaml.org,2002:merge', { - kind: 'scalar', - resolve: resolveYamlMerge -}); +Multipart.prototype.build = function (parts, chunked) { + var self = this + var body = chunked ? new CombinedStream() : [] + function add (part) { + if (typeof part === 'number') { + part = part.toString() + } + return chunked ? body.append(part) : body.push(Buffer.from(part)) + } -/***/ }), + if (self.request.preambleCRLF) { + add('\r\n') + } -/***/ 721: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + parts.forEach(function (part) { + var preamble = '--' + self.boundary + '\r\n' + Object.keys(part).forEach(function (key) { + if (key === 'body') { return } + preamble += key + ': ' + part[key] + '\r\n' + }) + preamble += '\r\n' + add(preamble) + add(part.body) + add('\r\n') + }) + add('--' + self.boundary + '--') -"use strict"; + if (self.request.postambleCRLF) { + add('\r\n') + } + return body +} -var Type = __nccwpck_require__(6073); +Multipart.prototype.onRequest = function (options) { + var self = this -function resolveYamlNull(data) { - if (data === null) return true; + var chunked = self.isChunked(options) + var parts = options.data || options - var max = data.length; + self.setHeaders(chunked) + self.chunked = chunked + self.body = self.build(parts, chunked) +} - return (max === 1 && data === '~') || - (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL')); +exports.Multipart = Multipart + + +/***/ }), +/* 470 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0; +const command_1 = __webpack_require__(431); +const file_command_1 = __webpack_require__(102); +const utils_1 = __webpack_require__(82); +const os = __importStar(__webpack_require__(87)); +const path = __importStar(__webpack_require__(622)); +const uuid_1 = __webpack_require__(25); +const oidc_utils_1 = __webpack_require__(742); +/** + * The code to exit an action + */ +var ExitCode; +(function (ExitCode) { + /** + * A code indicating that the action was successful + */ + ExitCode[ExitCode["Success"] = 0] = "Success"; + /** + * A code indicating that the action was a failure + */ + ExitCode[ExitCode["Failure"] = 1] = "Failure"; +})(ExitCode = exports.ExitCode || (exports.ExitCode = {})); +//----------------------------------------------------------------------- +// Variables +//----------------------------------------------------------------------- +/** + * Sets env variable for this action and future actions in the job + * @param name the name of the variable to set + * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function exportVariable(name, val) { + const convertedVal = utils_1.toCommandValue(val); + process.env[name] = convertedVal; + const filePath = process.env['GITHUB_ENV'] || ''; + if (filePath) { + const delimiter = `ghadelimiter_${uuid_1.v4()}`; + // These should realistically never happen, but just in case someone finds a way to exploit uuid generation let's not allow keys or values that contain the delimiter. + if (name.includes(delimiter)) { + throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter}"`); + } + if (convertedVal.includes(delimiter)) { + throw new Error(`Unexpected input: value should not contain the delimiter "${delimiter}"`); + } + const commandValue = `${name}<<${delimiter}${os.EOL}${convertedVal}${os.EOL}${delimiter}`; + file_command_1.issueCommand('ENV', commandValue); + } + else { + command_1.issueCommand('set-env', { name }, convertedVal); + } +} +exports.exportVariable = exportVariable; +/** + * Registers a secret which will get masked from logs + * @param secret value of the secret + */ +function setSecret(secret) { + command_1.issueCommand('add-mask', {}, secret); +} +exports.setSecret = setSecret; +/** + * Prepends inputPath to the PATH (for this action and future actions) + * @param inputPath + */ +function addPath(inputPath) { + const filePath = process.env['GITHUB_PATH'] || ''; + if (filePath) { + file_command_1.issueCommand('PATH', inputPath); + } + else { + command_1.issueCommand('add-path', {}, inputPath); + } + process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`; +} +exports.addPath = addPath; +/** + * Gets the value of an input. + * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed. + * Returns an empty string if the value is not defined. + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns string + */ +function getInput(name, options) { + const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || ''; + if (options && options.required && !val) { + throw new Error(`Input required and not supplied: ${name}`); + } + if (options && options.trimWhitespace === false) { + return val; + } + return val.trim(); +} +exports.getInput = getInput; +/** + * Gets the values of an multiline input. Each value is also trimmed. + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns string[] + * + */ +function getMultilineInput(name, options) { + const inputs = getInput(name, options) + .split('\n') + .filter(x => x !== ''); + return inputs; +} +exports.getMultilineInput = getMultilineInput; +/** + * Gets the input value of the boolean type in the YAML 1.2 "core schema" specification. + * Support boolean input list: `true | True | TRUE | false | False | FALSE` . + * The return value is also in boolean type. + * ref: https://yaml.org/spec/1.2/spec.html#id2804923 + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns boolean + */ +function getBooleanInput(name, options) { + const trueValue = ['true', 'True', 'TRUE']; + const falseValue = ['false', 'False', 'FALSE']; + const val = getInput(name, options); + if (trueValue.includes(val)) + return true; + if (falseValue.includes(val)) + return false; + throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${name}\n` + + `Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); +} +exports.getBooleanInput = getBooleanInput; +/** + * Sets the value of an output. + * + * @param name name of the output to set + * @param value value to store. Non-string values will be converted to a string via JSON.stringify + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function setOutput(name, value) { + process.stdout.write(os.EOL); + command_1.issueCommand('set-output', { name }, value); +} +exports.setOutput = setOutput; +/** + * Enables or disables the echoing of commands into stdout for the rest of the step. + * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set. + * + */ +function setCommandEcho(enabled) { + command_1.issue('echo', enabled ? 'on' : 'off'); +} +exports.setCommandEcho = setCommandEcho; +//----------------------------------------------------------------------- +// Results +//----------------------------------------------------------------------- +/** + * Sets the action status to failed. + * When the action exits it will be with an exit code of 1 + * @param message add error issue message + */ +function setFailed(message) { + process.exitCode = ExitCode.Failure; + error(message); +} +exports.setFailed = setFailed; +//----------------------------------------------------------------------- +// Logging Commands +//----------------------------------------------------------------------- +/** + * Gets whether Actions Step Debug is on or not + */ +function isDebug() { + return process.env['RUNNER_DEBUG'] === '1'; +} +exports.isDebug = isDebug; +/** + * Writes debug message to user log + * @param message debug message + */ +function debug(message) { + command_1.issueCommand('debug', {}, message); } - -function constructYamlNull() { - return null; +exports.debug = debug; +/** + * Adds an error issue + * @param message error issue message. Errors will be converted to string via toString() + * @param properties optional properties to add to the annotation. + */ +function error(message, properties = {}) { + command_1.issueCommand('error', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); } - -function isNull(object) { - return object === null; +exports.error = error; +/** + * Adds a warning issue + * @param message warning issue message. Errors will be converted to string via toString() + * @param properties optional properties to add to the annotation. + */ +function warning(message, properties = {}) { + command_1.issueCommand('warning', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); } - -module.exports = new Type('tag:yaml.org,2002:null', { - kind: 'scalar', - resolve: resolveYamlNull, - construct: constructYamlNull, - predicate: isNull, - represent: { - canonical: function () { return '~'; }, - lowercase: function () { return 'null'; }, - uppercase: function () { return 'NULL'; }, - camelcase: function () { return 'Null'; }, - empty: function () { return ''; } - }, - defaultStyle: 'lowercase' -}); - - -/***/ }), - -/***/ 9046: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var Type = __nccwpck_require__(6073); - -var _hasOwnProperty = Object.prototype.hasOwnProperty; -var _toString = Object.prototype.toString; - -function resolveYamlOmap(data) { - if (data === null) return true; - - var objectKeys = [], index, length, pair, pairKey, pairHasKey, - object = data; - - for (index = 0, length = object.length; index < length; index += 1) { - pair = object[index]; - pairHasKey = false; - - if (_toString.call(pair) !== '[object Object]') return false; - - for (pairKey in pair) { - if (_hasOwnProperty.call(pair, pairKey)) { - if (!pairHasKey) pairHasKey = true; - else return false; - } - } - - if (!pairHasKey) return false; - - if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey); - else return false; - } - - return true; +exports.warning = warning; +/** + * Adds a notice issue + * @param message notice issue message. Errors will be converted to string via toString() + * @param properties optional properties to add to the annotation. + */ +function notice(message, properties = {}) { + command_1.issueCommand('notice', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); } - -function constructYamlOmap(data) { - return data !== null ? data : []; +exports.notice = notice; +/** + * Writes info to log with console.log. + * @param message info message + */ +function info(message) { + process.stdout.write(message + os.EOL); } - -module.exports = new Type('tag:yaml.org,2002:omap', { - kind: 'sequence', - resolve: resolveYamlOmap, - construct: constructYamlOmap -}); - - -/***/ }), - -/***/ 6860: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var Type = __nccwpck_require__(6073); - -var _toString = Object.prototype.toString; - -function resolveYamlPairs(data) { - if (data === null) return true; - - var index, length, pair, keys, result, - object = data; - - result = new Array(object.length); - - for (index = 0, length = object.length; index < length; index += 1) { - pair = object[index]; - - if (_toString.call(pair) !== '[object Object]') return false; - - keys = Object.keys(pair); - - if (keys.length !== 1) return false; - - result[index] = [ keys[0], pair[keys[0]] ]; - } - - return true; +exports.info = info; +/** + * Begin an output group. + * + * Output until the next `groupEnd` will be foldable in this group + * + * @param name The name of the output group + */ +function startGroup(name) { + command_1.issue('group', name); } - -function constructYamlPairs(data) { - if (data === null) return []; - - var index, length, pair, keys, result, - object = data; - - result = new Array(object.length); - - for (index = 0, length = object.length; index < length; index += 1) { - pair = object[index]; - - keys = Object.keys(pair); - - result[index] = [ keys[0], pair[keys[0]] ]; - } - - return result; +exports.startGroup = startGroup; +/** + * End an output group. + */ +function endGroup() { + command_1.issue('endgroup'); } - -module.exports = new Type('tag:yaml.org,2002:pairs', { - kind: 'sequence', - resolve: resolveYamlPairs, - construct: constructYamlPairs -}); - - -/***/ }), - -/***/ 7283: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var Type = __nccwpck_require__(6073); - -module.exports = new Type('tag:yaml.org,2002:seq', { - kind: 'sequence', - construct: function (data) { return data !== null ? data : []; } -}); - - -/***/ }), - -/***/ 9548: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var Type = __nccwpck_require__(6073); - -var _hasOwnProperty = Object.prototype.hasOwnProperty; - -function resolveYamlSet(data) { - if (data === null) return true; - - var key, object = data; - - for (key in object) { - if (_hasOwnProperty.call(object, key)) { - if (object[key] !== null) return false; - } - } - - return true; +exports.endGroup = endGroup; +/** + * Wrap an asynchronous function call in a group. + * + * Returns the same type as the function itself. + * + * @param name The name of the group + * @param fn The function to wrap in the group + */ +function group(name, fn) { + return __awaiter(this, void 0, void 0, function* () { + startGroup(name); + let result; + try { + result = yield fn(); + } + finally { + endGroup(); + } + return result; + }); } - -function constructYamlSet(data) { - return data !== null ? data : {}; +exports.group = group; +//----------------------------------------------------------------------- +// Wrapper action state +//----------------------------------------------------------------------- +/** + * Saves state for current action, the state can only be retrieved by this action's post job execution. + * + * @param name name of the state to store + * @param value value to store. Non-string values will be converted to a string via JSON.stringify + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function saveState(name, value) { + command_1.issueCommand('save-state', { name }, value); +} +exports.saveState = saveState; +/** + * Gets the value of an state set by this action's main execution. + * + * @param name name of the state to get + * @returns string + */ +function getState(name) { + return process.env[`STATE_${name}`] || ''; } - -module.exports = new Type('tag:yaml.org,2002:set', { - kind: 'mapping', - resolve: resolveYamlSet, - construct: constructYamlSet -}); - +exports.getState = getState; +function getIDToken(aud) { + return __awaiter(this, void 0, void 0, function* () { + return yield oidc_utils_1.OidcClient.getIDToken(aud); + }); +} +exports.getIDToken = getIDToken; +/** + * Summary exports + */ +var summary_1 = __webpack_require__(665); +Object.defineProperty(exports, "summary", { enumerable: true, get: function () { return summary_1.summary; } }); +/** + * @deprecated use core.summary + */ +var summary_2 = __webpack_require__(665); +Object.defineProperty(exports, "markdownSummary", { enumerable: true, get: function () { return summary_2.markdownSummary; } }); +/** + * Path exports + */ +var path_utils_1 = __webpack_require__(573); +Object.defineProperty(exports, "toPosixPath", { enumerable: true, get: function () { return path_utils_1.toPosixPath; } }); +Object.defineProperty(exports, "toWin32Path", { enumerable: true, get: function () { return path_utils_1.toWin32Path; } }); +Object.defineProperty(exports, "toPlatformPath", { enumerable: true, get: function () { return path_utils_1.toPlatformPath; } }); +//# sourceMappingURL=core.js.map /***/ }), +/* 471 */, +/* 472 */, +/* 473 */, +/* 474 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 3619: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var Type = __nccwpck_require__(6073); - -module.exports = new Type('tag:yaml.org,2002:str', { - kind: 'scalar', - construct: function (data) { return data !== null ? data : ''; } -}); +var classof = __webpack_require__(324); +var ITERATOR = __webpack_require__(621)('iterator'); +var Iterators = __webpack_require__(907); +module.exports = __webpack_require__(245).getIteratorMethod = function (it) { + if (it != undefined) return it[ITERATOR] + || it['@@iterator'] + || Iterators[classof(it)]; +}; /***/ }), - -/***/ 9212: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/* 475 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { "use strict"; -var Type = __nccwpck_require__(6073); - -var YAML_DATE_REGEXP = new RegExp( - '^([0-9][0-9][0-9][0-9])' + // [1] year - '-([0-9][0-9])' + // [2] month - '-([0-9][0-9])$'); // [3] day - -var YAML_TIMESTAMP_REGEXP = new RegExp( - '^([0-9][0-9][0-9][0-9])' + // [1] year - '-([0-9][0-9]?)' + // [2] month - '-([0-9][0-9]?)' + // [3] day - '(?:[Tt]|[ \\t]+)' + // ... - '([0-9][0-9]?)' + // [4] hour - ':([0-9][0-9])' + // [5] minute - ':([0-9][0-9])' + // [6] second - '(?:\\.([0-9]*))?' + // [7] fraction - '(?:[ \\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour - '(?::([0-9][0-9]))?))?$'); // [11] tz_minute - -function resolveYamlTimestamp(data) { - if (data === null) return false; - if (YAML_DATE_REGEXP.exec(data) !== null) return true; - if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true; - return false; -} - -function constructYamlTimestamp(data) { - var match, year, month, day, hour, minute, second, fraction = 0, - delta = null, tz_hour, tz_minute, date; - - match = YAML_DATE_REGEXP.exec(data); - if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data); - - if (match === null) throw new Error('Date resolve error'); - - // match: [1] year [2] month [3] day +Object.defineProperty(exports, '__esModule', { value: true }); - year = +(match[1]); - month = +(match[2]) - 1; // JS month starts with 0 - day = +(match[3]); +var isPlainObject = __webpack_require__(356); +var universalUserAgent = __webpack_require__(796); - if (!match[4]) { // no hour - return new Date(Date.UTC(year, month, day)); +function lowercaseKeys(object) { + if (!object) { + return {}; } - // match: [4] hour [5] minute [6] second [7] fraction - - hour = +(match[4]); - minute = +(match[5]); - second = +(match[6]); + return Object.keys(object).reduce((newObj, key) => { + newObj[key.toLowerCase()] = object[key]; + return newObj; + }, {}); +} - if (match[7]) { - fraction = match[7].slice(0, 3); - while (fraction.length < 3) { // milli-seconds - fraction += '0'; +function mergeDeep(defaults, options) { + const result = Object.assign({}, defaults); + Object.keys(options).forEach(key => { + if (isPlainObject.isPlainObject(options[key])) { + if (!(key in defaults)) Object.assign(result, { + [key]: options[key] + });else result[key] = mergeDeep(defaults[key], options[key]); + } else { + Object.assign(result, { + [key]: options[key] + }); } - fraction = +fraction; - } - - // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute + }); + return result; +} - if (match[9]) { - tz_hour = +(match[10]); - tz_minute = +(match[11] || 0); - delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds - if (match[9] === '-') delta = -delta; +function removeUndefinedProperties(obj) { + for (const key in obj) { + if (obj[key] === undefined) { + delete obj[key]; + } } - date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction)); - - if (delta) date.setTime(date.getTime() - delta); - - return date; -} - -function representYamlTimestamp(object /*, style*/) { - return object.toISOString(); + return obj; } -module.exports = new Type('tag:yaml.org,2002:timestamp', { - kind: 'scalar', - resolve: resolveYamlTimestamp, - construct: constructYamlTimestamp, - instanceOf: Date, - represent: representYamlTimestamp -}); - - -/***/ }), +function merge(defaults, route, options) { + if (typeof route === "string") { + let [method, url] = route.split(" "); + options = Object.assign(url ? { + method, + url + } : { + url: method + }, options); + } else { + options = Object.assign({}, route); + } // lowercase header names before merging with defaults to avoid duplicates -/***/ 7426: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -/*! - * mime-db - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015-2022 Douglas Christopher Wilson - * MIT Licensed - */ + options.headers = lowercaseKeys(options.headers); // remove properties with undefined values before merging -/** - * Module exports. - */ + removeUndefinedProperties(options); + removeUndefinedProperties(options.headers); + const mergedOptions = mergeDeep(defaults || {}, options); // mediaType.previews arrays are merged, instead of overwritten -module.exports = __nccwpck_require__(3765) + if (defaults && defaults.mediaType.previews.length) { + mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(preview => !mergedOptions.mediaType.previews.includes(preview)).concat(mergedOptions.mediaType.previews); + } + mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map(preview => preview.replace(/-preview/, "")); + return mergedOptions; +} -/***/ }), +function addQueryParameters(url, parameters) { + const separator = /\?/.test(url) ? "&" : "?"; + const names = Object.keys(parameters); -/***/ 3583: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + if (names.length === 0) { + return url; + } -"use strict"; -/*! - * mime-types - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ + return url + separator + names.map(name => { + if (name === "q") { + return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+"); + } + return `${name}=${encodeURIComponent(parameters[name])}`; + }).join("&"); +} +const urlVariableRegex = /\{[^}]+\}/g; -/** - * Module dependencies. - * @private - */ +function removeNonChars(variableName) { + return variableName.replace(/^\W+|\W+$/g, "").split(/,/); +} -var db = __nccwpck_require__(7426) -var extname = (__nccwpck_require__(1017).extname) +function extractUrlVariableNames(url) { + const matches = url.match(urlVariableRegex); -/** - * Module variables. - * @private - */ + if (!matches) { + return []; + } -var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/ -var TEXT_TYPE_REGEXP = /^text\//i + return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []); +} -/** - * Module exports. - * @public - */ +function omit(object, keysToOmit) { + return Object.keys(object).filter(option => !keysToOmit.includes(option)).reduce((obj, key) => { + obj[key] = object[key]; + return obj; + }, {}); +} -exports.charset = charset -exports.charsets = { lookup: charset } -exports.contentType = contentType -exports.extension = extension -exports.extensions = Object.create(null) -exports.lookup = lookup -exports.types = Object.create(null) +// Based on https://github.com/bramstein/url-template, licensed under BSD +// TODO: create separate package. +// +// Copyright (c) 2012-2014, Bram Stein +// All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// 3. The name of the author may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// Populate the extensions/types maps -populateMaps(exports.extensions, exports.types) +/* istanbul ignore file */ +function encodeReserved(str) { + return str.split(/(%[0-9A-Fa-f]{2})/g).map(function (part) { + if (!/%[0-9A-Fa-f]/.test(part)) { + part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]"); + } -/** - * Get the default charset for a MIME type. - * - * @param {string} type - * @return {boolean|string} - */ + return part; + }).join(""); +} -function charset (type) { - if (!type || typeof type !== 'string') { - return false - } +function encodeUnreserved(str) { + return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { + return "%" + c.charCodeAt(0).toString(16).toUpperCase(); + }); +} - // TODO: use media-typer - var match = EXTRACT_TYPE_REGEXP.exec(type) - var mime = match && db[match[1].toLowerCase()] +function encodeValue(operator, value, key) { + value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value); - if (mime && mime.charset) { - return mime.charset + if (key) { + return encodeUnreserved(key) + "=" + value; + } else { + return value; } +} - // default text/* to utf-8 - if (match && TEXT_TYPE_REGEXP.test(match[1])) { - return 'UTF-8' - } +function isDefined(value) { + return value !== undefined && value !== null; +} - return false +function isKeyOperator(operator) { + return operator === ";" || operator === "&" || operator === "?"; } -/** - * Create a full Content-Type header given a MIME type or extension. - * - * @param {string} str - * @return {boolean|string} - */ +function getValues(context, operator, key, modifier) { + var value = context[key], + result = []; -function contentType (str) { - // TODO: should this even be in this module? - if (!str || typeof str !== 'string') { - return false - } + if (isDefined(value) && value !== "") { + if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") { + value = value.toString(); - var mime = str.indexOf('/') === -1 - ? exports.lookup(str) - : str + if (modifier && modifier !== "*") { + value = value.substring(0, parseInt(modifier, 10)); + } - if (!mime) { - return false - } + result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); + } else { + if (modifier === "*") { + if (Array.isArray(value)) { + value.filter(isDefined).forEach(function (value) { + result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); + }); + } else { + Object.keys(value).forEach(function (k) { + if (isDefined(value[k])) { + result.push(encodeValue(operator, value[k], k)); + } + }); + } + } else { + const tmp = []; - // TODO: use content-type or other module - if (mime.indexOf('charset') === -1) { - var charset = exports.charset(mime) - if (charset) mime += '; charset=' + charset.toLowerCase() + if (Array.isArray(value)) { + value.filter(isDefined).forEach(function (value) { + tmp.push(encodeValue(operator, value)); + }); + } else { + Object.keys(value).forEach(function (k) { + if (isDefined(value[k])) { + tmp.push(encodeUnreserved(k)); + tmp.push(encodeValue(operator, value[k].toString())); + } + }); + } + + if (isKeyOperator(operator)) { + result.push(encodeUnreserved(key) + "=" + tmp.join(",")); + } else if (tmp.length !== 0) { + result.push(tmp.join(",")); + } + } + } + } else { + if (operator === ";") { + if (isDefined(value)) { + result.push(encodeUnreserved(key)); + } + } else if (value === "" && (operator === "&" || operator === "?")) { + result.push(encodeUnreserved(key) + "="); + } else if (value === "") { + result.push(""); + } } - return mime + return result; } -/** - * Get the default extension for a MIME type. - * - * @param {string} type - * @return {boolean|string} - */ +function parseUrl(template) { + return { + expand: expand.bind(null, template) + }; +} -function extension (type) { - if (!type || typeof type !== 'string') { - return false - } +function expand(template, context) { + var operators = ["+", "#", ".", "/", ";", "?", "&"]; + return template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (_, expression, literal) { + if (expression) { + let operator = ""; + const values = []; - // TODO: use media-typer - var match = EXTRACT_TYPE_REGEXP.exec(type) + if (operators.indexOf(expression.charAt(0)) !== -1) { + operator = expression.charAt(0); + expression = expression.substr(1); + } - // get extensions - var exts = match && exports.extensions[match[1].toLowerCase()] + expression.split(/,/g).forEach(function (variable) { + var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable); + values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3])); + }); - if (!exts || !exts.length) { - return false - } + if (operator && operator !== "+") { + var separator = ","; - return exts[0] + if (operator === "?") { + separator = "&"; + } else if (operator !== "#") { + separator = operator; + } + + return (values.length !== 0 ? operator : "") + values.join(separator); + } else { + return values.join(","); + } + } else { + return encodeReserved(literal); + } + }); } -/** - * Lookup the MIME type for a file path/extension. - * - * @param {string} path - * @return {boolean|string} - */ +function parse(options) { + // https://fetch.spec.whatwg.org/#methods + let method = options.method.toUpperCase(); // replace :varname with {varname} to make it RFC 6570 compatible -function lookup (path) { - if (!path || typeof path !== 'string') { - return false - } + let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}"); + let headers = Object.assign({}, options.headers); + let body; + let parameters = omit(options, ["method", "baseUrl", "url", "headers", "request", "mediaType"]); // extract variable names from URL to calculate remaining variables later - // get the extension ("ext" or ".ext" or full path) - var extension = extname('x.' + path) - .toLowerCase() - .substr(1) + const urlVariableNames = extractUrlVariableNames(url); + url = parseUrl(url).expand(parameters); - if (!extension) { - return false + if (!/^http/.test(url)) { + url = options.baseUrl + url; } - return exports.types[extension] || false -} + const omittedParameters = Object.keys(options).filter(option => urlVariableNames.includes(option)).concat("baseUrl"); + const remainingParameters = omit(parameters, omittedParameters); + const isBinaryRequest = /application\/octet-stream/i.test(headers.accept); -/** - * Populate the extensions and types maps. - * @private - */ + if (!isBinaryRequest) { + if (options.mediaType.format) { + // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw + headers.accept = headers.accept.split(/,/).map(preview => preview.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`)).join(","); + } -function populateMaps (extensions, types) { - // source preference (least -> most) - var preference = ['nginx', 'apache', undefined, 'iana'] + if (options.mediaType.previews.length) { + const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || []; + headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map(preview => { + const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json"; + return `application/vnd.github.${preview}-preview${format}`; + }).join(","); + } + } // for GET/HEAD requests, set URL query parameters from remaining parameters + // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters - Object.keys(db).forEach(function forEachMimeType (type) { - var mime = db[type] - var exts = mime.extensions - if (!exts || !exts.length) { - return + if (["GET", "HEAD"].includes(method)) { + url = addQueryParameters(url, remainingParameters); + } else { + if ("data" in remainingParameters) { + body = remainingParameters.data; + } else { + if (Object.keys(remainingParameters).length) { + body = remainingParameters; + } } + } // default content-type for JSON if body is set + + + if (!headers["content-type"] && typeof body !== "undefined") { + headers["content-type"] = "application/json; charset=utf-8"; + } // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body. + // fetch does not allow to set `content-length` header, but we can set body to an empty string + - // mime -> extensions - extensions[type] = exts + if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") { + body = ""; + } // Only return body/request keys if present - // extension -> mime - for (var i = 0; i < exts.length; i++) { - var extension = exts[i] - if (types[extension]) { - var from = preference.indexOf(db[types[extension]].source) - var to = preference.indexOf(mime.source) + return Object.assign({ + method, + url, + headers + }, typeof body !== "undefined" ? { + body + } : null, options.request ? { + request: options.request + } : null); +} - if (types[extension] !== 'application/octet-stream' && - (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) { - // skip the remapping - continue - } - } +function endpointWithDefaults(defaults, route, options) { + return parse(merge(defaults, route, options)); +} - // set the extension -> mime - types[extension] = type - } - }) +function withDefaults(oldDefaults, newDefaults) { + const DEFAULTS = merge(oldDefaults, newDefaults); + const endpoint = endpointWithDefaults.bind(null, DEFAULTS); + return Object.assign(endpoint, { + DEFAULTS, + defaults: withDefaults.bind(null, DEFAULTS), + merge: merge.bind(null, DEFAULTS), + parse + }); } +const VERSION = "7.0.2"; -/***/ }), +const userAgent = `octokit-endpoint.js/${VERSION} ${universalUserAgent.getUserAgent()}`; // DEFAULTS has all properties set that EndpointOptions has, except url. +// So we use RequestParameters and add method as additional required property. -/***/ 900: -/***/ ((module) => { +const DEFAULTS = { + method: "GET", + baseUrl: "https://api.github.com", + headers: { + accept: "application/vnd.github.v3+json", + "user-agent": userAgent + }, + mediaType: { + format: "", + previews: [] + } +}; -/** - * Helpers. - */ +const endpoint = withDefaults(null, DEFAULTS); -var s = 1000; -var m = s * 60; -var h = m * 60; -var d = h * 24; -var w = d * 7; -var y = d * 365.25; +exports.endpoint = endpoint; +//# sourceMappingURL=index.js.map -/** - * Parse or format the given `val`. - * - * Options: - * - * - `long` verbose formatting [false] - * - * @param {String|Number} val - * @param {Object} [options] - * @throws {Error} throw an error if val is not a non-empty string or a number - * @return {String|Number} - * @api public - */ -module.exports = function(val, options) { - options = options || {}; - var type = typeof val; - if (type === 'string' && val.length > 0) { - return parse(val); - } else if (type === 'number' && isFinite(val)) { - return options.long ? fmtLong(val) : fmtShort(val); - } - throw new Error( - 'val is not a non-empty string or a valid number. val=' + - JSON.stringify(val) - ); -}; +/***/ }), +/* 476 */ +/***/ (function(module, exports, __webpack_require__) { -/** - * Parse the given `str` and return milliseconds. - * - * @param {String} str - * @return {Number} - * @api private - */ +"use strict"; -function parse(str) { - str = String(str); - if (str.length > 100) { - return; - } - var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( - str - ); - if (!match) { - return; - } - var n = parseFloat(match[1]); - var type = (match[2] || 'ms').toLowerCase(); - switch (type) { - case 'years': - case 'year': - case 'yrs': - case 'yr': - case 'y': - return n * y; - case 'weeks': - case 'week': - case 'w': - return n * w; - case 'days': - case 'day': - case 'd': - return n * d; - case 'hours': - case 'hour': - case 'hrs': - case 'hr': - case 'h': - return n * h; - case 'minutes': - case 'minute': - case 'mins': - case 'min': - case 'm': - return n * m; - case 'seconds': - case 'second': - case 'secs': - case 'sec': - case 's': - return n * s; - case 'milliseconds': - case 'millisecond': - case 'msecs': - case 'msec': - case 'ms': - return n; - default: - return undefined; - } -} -/** - * Short format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ +var _interopRequireDefault = __webpack_require__(764); -function fmtShort(ms) { - var msAbs = Math.abs(ms); - if (msAbs >= d) { - return Math.round(ms / d) + 'd'; - } - if (msAbs >= h) { - return Math.round(ms / h) + 'h'; - } - if (msAbs >= m) { - return Math.round(ms / m) + 'm'; - } - if (msAbs >= s) { - return Math.round(ms / s) + 's'; - } - return ms + 'ms'; -} +__webpack_require__(493); -/** - * Long format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; -function fmtLong(ms) { - var msAbs = Math.abs(ms); - if (msAbs >= d) { - return plural(ms, msAbs, d, 'day'); - } - if (msAbs >= h) { - return plural(ms, msAbs, h, 'hour'); - } - if (msAbs >= m) { - return plural(ms, msAbs, m, 'minute'); - } - if (msAbs >= s) { - return plural(ms, msAbs, s, 'second'); - } - return ms + ' ms'; -} +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); -/** - * Pluralization helper. - */ +var _validateUrlIpv = _interopRequireDefault(__webpack_require__(115)); -function plural(ms, msAbs, n, name) { - var isPlural = msAbs >= n * 1.5; - return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); -} +var _validateUrlIpv2 = _interopRequireDefault(__webpack_require__(871)); +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +// Punting on IPvFuture for now +var validateUrlIp = (0, _regexSupplant["default"])('(?:' + '#{validateUrlIpv4}|' + '#{validateUrlIpv6}' + ')', { + validateUrlIpv4: _validateUrlIpv["default"], + validateUrlIpv6: _validateUrlIpv2["default"] +}, 'i'); +var _default = validateUrlIp; +exports["default"] = _default; +module.exports = exports.default; /***/ }), - -/***/ 467: -/***/ ((module, exports, __nccwpck_require__) => { +/* 477 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", ({ value: true })); +__webpack_require__(493); -function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var urlHasHttps = /^https:\/\//i; +var _default = urlHasHttps; +exports["default"] = _default; +module.exports = exports.default; -var Stream = _interopDefault(__nccwpck_require__(2781)); -var http = _interopDefault(__nccwpck_require__(3685)); -var Url = _interopDefault(__nccwpck_require__(7310)); -var whatwgUrl = _interopDefault(__nccwpck_require__(8665)); -var https = _interopDefault(__nccwpck_require__(5687)); -var zlib = _interopDefault(__nccwpck_require__(9796)); +/***/ }), +/* 478 */, +/* 479 */ +/***/ (function(module) { + +"use strict"; + +module.exports = function generate_if(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + $it.level++; + var $nextValid = 'valid' + $it.level; + var $thenSch = it.schema['then'], + $elseSch = it.schema['else'], + $thenPresent = $thenSch !== undefined && (it.opts.strictKeywords ? (typeof $thenSch == 'object' && Object.keys($thenSch).length > 0) || $thenSch === false : it.util.schemaHasRules($thenSch, it.RULES.all)), + $elsePresent = $elseSch !== undefined && (it.opts.strictKeywords ? (typeof $elseSch == 'object' && Object.keys($elseSch).length > 0) || $elseSch === false : it.util.schemaHasRules($elseSch, it.RULES.all)), + $currentBaseId = $it.baseId; + if ($thenPresent || $elsePresent) { + var $ifClause; + $it.createErrors = false; + $it.schema = $schema; + $it.schemaPath = $schemaPath; + $it.errSchemaPath = $errSchemaPath; + out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = true; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + $it.createErrors = true; + out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; + it.compositeRule = $it.compositeRule = $wasComposite; + if ($thenPresent) { + out += ' if (' + ($nextValid) + ') { '; + $it.schema = it.schema['then']; + $it.schemaPath = it.schemaPath + '.then'; + $it.errSchemaPath = it.errSchemaPath + '/then'; + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + out += ' ' + ($valid) + ' = ' + ($nextValid) + '; '; + if ($thenPresent && $elsePresent) { + $ifClause = 'ifClause' + $lvl; + out += ' var ' + ($ifClause) + ' = \'then\'; '; + } else { + $ifClause = '\'then\''; + } + out += ' } '; + if ($elsePresent) { + out += ' else { '; + } + } else { + out += ' if (!' + ($nextValid) + ') { '; + } + if ($elsePresent) { + $it.schema = it.schema['else']; + $it.schemaPath = it.schemaPath + '.else'; + $it.errSchemaPath = it.errSchemaPath + '/else'; + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + out += ' ' + ($valid) + ' = ' + ($nextValid) + '; '; + if ($thenPresent && $elsePresent) { + $ifClause = 'ifClause' + $lvl; + out += ' var ' + ($ifClause) + ' = \'else\'; '; + } else { + $ifClause = '\'else\''; + } + out += ' } '; + } + out += ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('if') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { failingKeyword: ' + ($ifClause) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should match "\' + ' + ($ifClause) + ' + \'" schema\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError(vErrors); '; + } else { + out += ' validate.errors = vErrors; return false; '; + } + } + out += ' } '; + if ($breakOnError) { + out += ' else { '; + } + } else { + if ($breakOnError) { + out += ' if (true) { '; + } + } + return out; +} -// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js -// fix for "Readable" isn't a named export issue -const Readable = Stream.Readable; +/***/ }), +/* 480 */, +/* 481 */ +/***/ (function(module, exports, __webpack_require__) { -const BUFFER = Symbol('buffer'); -const TYPE = Symbol('type'); +"use strict"; -class Blob { - constructor() { - this[TYPE] = ''; - const blobParts = arguments[0]; - const options = arguments[1]; +__webpack_require__(493); - const buffers = []; - let size = 0; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +// Generated from unicode_regex/unicode_regex_groups.scala, same as objective c's \p{L}\p{M} +var astralLetterAndMarks = /\ud800[\udc00-\udc0b\udc0d-\udc26\udc28-\udc3a\udc3c\udc3d\udc3f-\udc4d\udc50-\udc5d\udc80-\udcfa\uddfd\ude80-\ude9c\udea0-\uded0\udee0\udf00-\udf1f\udf30-\udf40\udf42-\udf49\udf50-\udf7a\udf80-\udf9d\udfa0-\udfc3\udfc8-\udfcf]|\ud801[\udc00-\udc9d\udd00-\udd27\udd30-\udd63\ude00-\udf36\udf40-\udf55\udf60-\udf67]|\ud802[\udc00-\udc05\udc08\udc0a-\udc35\udc37\udc38\udc3c\udc3f-\udc55\udc60-\udc76\udc80-\udc9e\udd00-\udd15\udd20-\udd39\udd80-\uddb7\uddbe\uddbf\ude00-\ude03\ude05\ude06\ude0c-\ude13\ude15-\ude17\ude19-\ude33\ude38-\ude3a\ude3f\ude60-\ude7c\ude80-\ude9c\udec0-\udec7\udec9-\udee6\udf00-\udf35\udf40-\udf55\udf60-\udf72\udf80-\udf91]|\ud803[\udc00-\udc48]|\ud804[\udc00-\udc46\udc7f-\udcba\udcd0-\udce8\udd00-\udd34\udd50-\udd73\udd76\udd80-\uddc4\uddda\ude00-\ude11\ude13-\ude37\udeb0-\udeea\udf01-\udf03\udf05-\udf0c\udf0f\udf10\udf13-\udf28\udf2a-\udf30\udf32\udf33\udf35-\udf39\udf3c-\udf44\udf47\udf48\udf4b-\udf4d\udf57\udf5d-\udf63\udf66-\udf6c\udf70-\udf74]|\ud805[\udc80-\udcc5\udcc7\udd80-\uddb5\uddb8-\uddc0\ude00-\ude40\ude44\ude80-\udeb7]|\ud806[\udca0-\udcdf\udcff\udec0-\udef8]|\ud808[\udc00-\udf98]|\ud80c[\udc00-\udfff]|\ud80d[\udc00-\udc2e]|\ud81a[\udc00-\ude38\ude40-\ude5e\uded0-\udeed\udef0-\udef4\udf00-\udf36\udf40-\udf43\udf63-\udf77\udf7d-\udf8f]|\ud81b[\udf00-\udf44\udf50-\udf7e\udf8f-\udf9f]|\ud82c[\udc00\udc01]|\ud82f[\udc00-\udc6a\udc70-\udc7c\udc80-\udc88\udc90-\udc99\udc9d\udc9e]|\ud834[\udd65-\udd69\udd6d-\udd72\udd7b-\udd82\udd85-\udd8b\uddaa-\uddad\ude42-\ude44]|\ud835[\udc00-\udc54\udc56-\udc9c\udc9e\udc9f\udca2\udca5\udca6\udca9-\udcac\udcae-\udcb9\udcbb\udcbd-\udcc3\udcc5-\udd05\udd07-\udd0a\udd0d-\udd14\udd16-\udd1c\udd1e-\udd39\udd3b-\udd3e\udd40-\udd44\udd46\udd4a-\udd50\udd52-\udea5\udea8-\udec0\udec2-\udeda\udedc-\udefa\udefc-\udf14\udf16-\udf34\udf36-\udf4e\udf50-\udf6e\udf70-\udf88\udf8a-\udfa8\udfaa-\udfc2\udfc4-\udfcb]|\ud83a[\udc00-\udcc4\udcd0-\udcd6]|\ud83b[\ude00-\ude03\ude05-\ude1f\ude21\ude22\ude24\ude27\ude29-\ude32\ude34-\ude37\ude39\ude3b\ude42\ude47\ude49\ude4b\ude4d-\ude4f\ude51\ude52\ude54\ude57\ude59\ude5b\ude5d\ude5f\ude61\ude62\ude64\ude67-\ude6a\ude6c-\ude72\ude74-\ude77\ude79-\ude7c\ude7e\ude80-\ude89\ude8b-\ude9b\udea1-\udea3\udea5-\udea9\udeab-\udebb]|\ud840[\udc00-\udfff]|\ud841[\udc00-\udfff]|\ud842[\udc00-\udfff]|\ud843[\udc00-\udfff]|\ud844[\udc00-\udfff]|\ud845[\udc00-\udfff]|\ud846[\udc00-\udfff]|\ud847[\udc00-\udfff]|\ud848[\udc00-\udfff]|\ud849[\udc00-\udfff]|\ud84a[\udc00-\udfff]|\ud84b[\udc00-\udfff]|\ud84c[\udc00-\udfff]|\ud84d[\udc00-\udfff]|\ud84e[\udc00-\udfff]|\ud84f[\udc00-\udfff]|\ud850[\udc00-\udfff]|\ud851[\udc00-\udfff]|\ud852[\udc00-\udfff]|\ud853[\udc00-\udfff]|\ud854[\udc00-\udfff]|\ud855[\udc00-\udfff]|\ud856[\udc00-\udfff]|\ud857[\udc00-\udfff]|\ud858[\udc00-\udfff]|\ud859[\udc00-\udfff]|\ud85a[\udc00-\udfff]|\ud85b[\udc00-\udfff]|\ud85c[\udc00-\udfff]|\ud85d[\udc00-\udfff]|\ud85e[\udc00-\udfff]|\ud85f[\udc00-\udfff]|\ud860[\udc00-\udfff]|\ud861[\udc00-\udfff]|\ud862[\udc00-\udfff]|\ud863[\udc00-\udfff]|\ud864[\udc00-\udfff]|\ud865[\udc00-\udfff]|\ud866[\udc00-\udfff]|\ud867[\udc00-\udfff]|\ud868[\udc00-\udfff]|\ud869[\udc00-\uded6\udf00-\udfff]|\ud86a[\udc00-\udfff]|\ud86b[\udc00-\udfff]|\ud86c[\udc00-\udfff]|\ud86d[\udc00-\udf34\udf40-\udfff]|\ud86e[\udc00-\udc1d]|\ud87e[\udc00-\ude1d]|\udb40[\udd00-\uddef]/; +var _default = astralLetterAndMarks; +exports["default"] = _default; +module.exports = exports.default; - if (blobParts) { - const a = blobParts; - const length = Number(a.length); - for (let i = 0; i < length; i++) { - const element = a[i]; - let buffer; - if (element instanceof Buffer) { - buffer = element; - } else if (ArrayBuffer.isView(element)) { - buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength); - } else if (element instanceof ArrayBuffer) { - buffer = Buffer.from(element); - } else if (element instanceof Blob) { - buffer = element[BUFFER]; - } else { - buffer = Buffer.from(typeof element === 'string' ? element : String(element)); - } - size += buffer.length; - buffers.push(buffer); - } - } +/***/ }), +/* 482 */ +/***/ (function(module, __unusedexports, __webpack_require__) { - this[BUFFER] = Buffer.concat(buffers); +"use strict"; - let type = options && options.type !== undefined && String(options.type).toLowerCase(); - if (type && !/[^\u0020-\u007E]/.test(type)) { - this[TYPE] = type; - } - } - get size() { - return this[BUFFER].length; - } - get type() { - return this[TYPE]; - } - text() { - return Promise.resolve(this[BUFFER].toString()); - } - arrayBuffer() { - const buf = this[BUFFER]; - const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); - return Promise.resolve(ab); - } - stream() { - const readable = new Readable(); - readable._read = function () {}; - readable.push(this[BUFFER]); - readable.push(null); - return readable; - } - toString() { - return '[object Blob]'; - } - slice() { - const size = this.size; +var fails = __webpack_require__(971); - const start = arguments[0]; - const end = arguments[1]; - let relativeStart, relativeEnd; - if (start === undefined) { - relativeStart = 0; - } else if (start < 0) { - relativeStart = Math.max(size + start, 0); - } else { - relativeStart = Math.min(start, size); - } - if (end === undefined) { - relativeEnd = size; - } else if (end < 0) { - relativeEnd = Math.max(size + end, 0); - } else { - relativeEnd = Math.min(end, size); - } - const span = Math.max(relativeEnd - relativeStart, 0); +module.exports = function (method, arg) { + return !!method && fails(function () { + // eslint-disable-next-line no-useless-call + arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null); + }); +}; - const buffer = this[BUFFER]; - const slicedBuffer = buffer.slice(relativeStart, relativeStart + span); - const blob = new Blob([], { type: arguments[2] }); - blob[BUFFER] = slicedBuffer; - return blob; - } -} -Object.defineProperties(Blob.prototype, { - size: { enumerable: true }, - type: { enumerable: true }, - slice: { enumerable: true } -}); +/***/ }), +/* 483 */, +/* 484 */, +/* 485 */, +/* 486 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -Object.defineProperty(Blob.prototype, Symbol.toStringTag, { - value: 'Blob', - writable: false, - enumerable: false, - configurable: true -}); /** - * fetch-error.js - * - * FetchError interface for operational errors + * This is the common logic for both the Node.js and web browser + * implementations of `debug()`. */ -/** - * Create FetchError instance - * - * @param String message Error message for human - * @param String type Error type for machine - * @param String systemError For Node.js system error - * @return FetchError - */ -function FetchError(message, type, systemError) { - Error.call(this, message); +function setup(env) { + createDebug.debug = createDebug; + createDebug.default = createDebug; + createDebug.coerce = coerce; + createDebug.disable = disable; + createDebug.enable = enable; + createDebug.enabled = enabled; + createDebug.humanize = __webpack_require__(317); - this.message = message; - this.type = type; + Object.keys(env).forEach(key => { + createDebug[key] = env[key]; + }); - // when err.type is `system`, err.code contains system error code - if (systemError) { - this.code = this.errno = systemError.code; - } + /** + * Active `debug` instances. + */ + createDebug.instances = []; - // hide custom error implementation details from end-users - Error.captureStackTrace(this, this.constructor); -} + /** + * The currently active debug mode names, and names to skip. + */ -FetchError.prototype = Object.create(Error.prototype); -FetchError.prototype.constructor = FetchError; -FetchError.prototype.name = 'FetchError'; + createDebug.names = []; + createDebug.skips = []; -let convert; -try { - convert = (__nccwpck_require__(2877).convert); -} catch (e) {} + /** + * Map of special "%n" handling functions, for the debug "format" argument. + * + * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". + */ + createDebug.formatters = {}; -const INTERNALS = Symbol('Body internals'); + /** + * Selects a color for a debug namespace + * @param {String} namespace The namespace string for the for the debug instance to be colored + * @return {Number|String} An ANSI color code for the given namespace + * @api private + */ + function selectColor(namespace) { + let hash = 0; -// fix an issue where "PassThrough" isn't a named export for node <10 -const PassThrough = Stream.PassThrough; + for (let i = 0; i < namespace.length; i++) { + hash = ((hash << 5) - hash) + namespace.charCodeAt(i); + hash |= 0; // Convert to 32bit integer + } -/** - * Body mixin - * - * Ref: https://fetch.spec.whatwg.org/#body - * - * @param Stream body Readable stream - * @param Object opts Response options - * @return Void - */ -function Body(body) { - var _this = this; + return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; + } + createDebug.selectColor = selectColor; - var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, - _ref$size = _ref.size; + /** + * Create a debugger with the given `namespace`. + * + * @param {String} namespace + * @return {Function} + * @api public + */ + function createDebug(namespace) { + let prevTime; - let size = _ref$size === undefined ? 0 : _ref$size; - var _ref$timeout = _ref.timeout; - let timeout = _ref$timeout === undefined ? 0 : _ref$timeout; + function debug(...args) { + // Disabled? + if (!debug.enabled) { + return; + } - if (body == null) { - // body is undefined or null - body = null; - } else if (isURLSearchParams(body)) { - // body is a URLSearchParams - body = Buffer.from(body.toString()); - } else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') { - // body is ArrayBuffer - body = Buffer.from(body); - } else if (ArrayBuffer.isView(body)) { - // body is ArrayBufferView - body = Buffer.from(body.buffer, body.byteOffset, body.byteLength); - } else if (body instanceof Stream) ; else { - // none of the above - // coerce to string then buffer - body = Buffer.from(String(body)); - } - this[INTERNALS] = { - body, - disturbed: false, - error: null - }; - this.size = size; - this.timeout = timeout; + const self = debug; - if (body instanceof Stream) { - body.on('error', function (err) { - const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err); - _this[INTERNALS].error = error; - }); - } -} + // Set `diff` timestamp + const curr = Number(new Date()); + const ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; -Body.prototype = { - get body() { - return this[INTERNALS].body; - }, + args[0] = createDebug.coerce(args[0]); - get bodyUsed() { - return this[INTERNALS].disturbed; - }, + if (typeof args[0] !== 'string') { + // Anything else let's inspect with %O + args.unshift('%O'); + } - /** - * Decode response as ArrayBuffer - * - * @return Promise - */ - arrayBuffer() { - return consumeBody.call(this).then(function (buf) { - return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); - }); - }, + // Apply any `formatters` transformations + let index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { + // If we encounter an escaped % then don't increase the array index + if (match === '%%') { + return match; + } + index++; + const formatter = createDebug.formatters[format]; + if (typeof formatter === 'function') { + const val = args[index]; + match = formatter.call(self, val); - /** - * Return raw response as Blob - * - * @return Promise - */ - blob() { - let ct = this.headers && this.headers.get('content-type') || ''; - return consumeBody.call(this).then(function (buf) { - return Object.assign( - // Prevent copying - new Blob([], { - type: ct.toLowerCase() - }), { - [BUFFER]: buf + // Now we need to remove `args[index]` since it's inlined in the `format` + args.splice(index, 1); + index--; + } + return match; }); - }); - }, - /** - * Decode response as json - * - * @return Promise - */ - json() { - var _this2 = this; + // Apply env-specific formatting (colors, etc.) + createDebug.formatArgs.call(self, args); - return consumeBody.call(this).then(function (buffer) { - try { - return JSON.parse(buffer.toString()); - } catch (err) { - return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json')); - } - }); - }, + const logFn = self.log || createDebug.log; + logFn.apply(self, args); + } - /** - * Decode response as text - * - * @return Promise - */ - text() { - return consumeBody.call(this).then(function (buffer) { - return buffer.toString(); - }); - }, + debug.namespace = namespace; + debug.enabled = createDebug.enabled(namespace); + debug.useColors = createDebug.useColors(); + debug.color = selectColor(namespace); + debug.destroy = destroy; + debug.extend = extend; + // Debug.formatArgs = formatArgs; + // debug.rawLog = rawLog; - /** - * Decode response as buffer (non-spec api) - * - * @return Promise - */ - buffer() { - return consumeBody.call(this); - }, + // env-specific initialization logic for debug instances + if (typeof createDebug.init === 'function') { + createDebug.init(debug); + } - /** - * Decode response as text, while automatically detecting the encoding and - * trying to decode to UTF-8 (non-spec api) - * - * @return Promise - */ - textConverted() { - var _this3 = this; + createDebug.instances.push(debug); - return consumeBody.call(this).then(function (buffer) { - return convertBody(buffer, _this3.headers); - }); + return debug; } -}; - -// In browsers, all properties are enumerable. -Object.defineProperties(Body.prototype, { - body: { enumerable: true }, - bodyUsed: { enumerable: true }, - arrayBuffer: { enumerable: true }, - blob: { enumerable: true }, - json: { enumerable: true }, - text: { enumerable: true } -}); -Body.mixIn = function (proto) { - for (const name of Object.getOwnPropertyNames(Body.prototype)) { - // istanbul ignore else: future proof - if (!(name in proto)) { - const desc = Object.getOwnPropertyDescriptor(Body.prototype, name); - Object.defineProperty(proto, name, desc); + function destroy() { + const index = createDebug.instances.indexOf(this); + if (index !== -1) { + createDebug.instances.splice(index, 1); + return true; } + return false; } -}; - -/** - * Consume and convert an entire Body to a Buffer. - * - * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body - * - * @return Promise - */ -function consumeBody() { - var _this4 = this; - if (this[INTERNALS].disturbed) { - return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`)); + function extend(namespace, delimiter) { + const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); + newDebug.log = this.log; + return newDebug; } - this[INTERNALS].disturbed = true; + /** + * Enables a debug mode by namespaces. This can include modes + * separated by a colon and wildcards. + * + * @param {String} namespaces + * @api public + */ + function enable(namespaces) { + createDebug.save(namespaces); - if (this[INTERNALS].error) { - return Body.Promise.reject(this[INTERNALS].error); - } + createDebug.names = []; + createDebug.skips = []; - let body = this.body; + let i; + const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); + const len = split.length; - // body is null - if (body === null) { - return Body.Promise.resolve(Buffer.alloc(0)); - } + for (i = 0; i < len; i++) { + if (!split[i]) { + // ignore empty strings + continue; + } - // body is blob - if (isBlob(body)) { - body = body.stream(); - } + namespaces = split[i].replace(/\*/g, '.*?'); - // body is buffer - if (Buffer.isBuffer(body)) { - return Body.Promise.resolve(body); - } + if (namespaces[0] === '-') { + createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); + } else { + createDebug.names.push(new RegExp('^' + namespaces + '$')); + } + } - // istanbul ignore if: should never happen - if (!(body instanceof Stream)) { - return Body.Promise.resolve(Buffer.alloc(0)); + for (i = 0; i < createDebug.instances.length; i++) { + const instance = createDebug.instances[i]; + instance.enabled = createDebug.enabled(instance.namespace); + } } - // body is stream - // get ready to actually consume the body - let accum = []; - let accumBytes = 0; - let abort = false; - - return new Body.Promise(function (resolve, reject) { - let resTimeout; + /** + * Disable debug output. + * + * @return {String} namespaces + * @api public + */ + function disable() { + const namespaces = [ + ...createDebug.names.map(toNamespace), + ...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace) + ].join(','); + createDebug.enable(''); + return namespaces; + } - // allow timeout on slow response body - if (_this4.timeout) { - resTimeout = setTimeout(function () { - abort = true; - reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout')); - }, _this4.timeout); + /** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + function enabled(name) { + if (name[name.length - 1] === '*') { + return true; } - // handle stream errors - body.on('error', function (err) { - if (err.name === 'AbortError') { - // if the request was aborted, reject with this Error - abort = true; - reject(err); - } else { - // other errors, such as incorrect content-encoding - reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err)); - } - }); + let i; + let len; - body.on('data', function (chunk) { - if (abort || chunk === null) { - return; + for (i = 0, len = createDebug.skips.length; i < len; i++) { + if (createDebug.skips[i].test(name)) { + return false; } + } - if (_this4.size && accumBytes + chunk.length > _this4.size) { - abort = true; - reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size')); - return; + for (i = 0, len = createDebug.names.length; i < len; i++) { + if (createDebug.names[i].test(name)) { + return true; } + } - accumBytes += chunk.length; - accum.push(chunk); - }); + return false; + } - body.on('end', function () { - if (abort) { - return; - } + /** + * Convert regexp to namespace + * + * @param {RegExp} regxep + * @return {String} namespace + * @api private + */ + function toNamespace(regexp) { + return regexp.toString() + .substring(2, regexp.toString().length - 2) + .replace(/\.\*\?$/, '*'); + } - clearTimeout(resTimeout); + /** + * Coerce `val`. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + function coerce(val) { + if (val instanceof Error) { + return val.stack || val.message; + } + return val; + } - try { - resolve(Buffer.concat(accum, accumBytes)); - } catch (err) { - // handle streams that have accumulated too much data (issue #414) - reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err)); - } - }); - }); + createDebug.enable(createDebug.load()); + + return createDebug; } -/** - * Detect buffer encoding and convert to target encoding - * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding - * - * @param Buffer buffer Incoming buffer - * @param String encoding Target encoding - * @return String - */ -function convertBody(buffer, headers) { - if (typeof convert !== 'function') { - throw new Error('The package `encoding` must be installed to use the textConverted() function'); - } +module.exports = setup; - const ct = headers.get('content-type'); - let charset = 'utf-8'; - let res, str; - // header - if (ct) { - res = /charset=([^;]*)/i.exec(ct); - } +/***/ }), +/* 487 */, +/* 488 */, +/* 489 */ +/***/ (function(module, __unusedexports, __webpack_require__) { - // no charset in content type, peek at response body for at most 1024 bytes - str = buffer.slice(0, 1024).toString(); +// Copyright (c) 2012, Mark Cavage. All rights reserved. +// Copyright 2015 Joyent, Inc. - // html5 - if (!res && str) { - res = /%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i; +// For the source: https://gist.github.com/dperini/729294 +// For test cases: https://mathiasbynens.be/demo/url-regex +// @todo Delete current URL in favour of the commented out URL rule when this issue is fixed https://github.com/eslint/eslint/issues/7983. +// var URL = /^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u{00a1}-\u{ffff}0-9]+-)*[a-z\u{00a1}-\u{ffff}0-9]+)(?:\.(?:[a-z\u{00a1}-\u{ffff}0-9]+-)*[a-z\u{00a1}-\u{ffff}0-9]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu; +var URL = /^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i; +var UUID = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i; +var JSON_POINTER = /^(?:\/(?:[^~/]|~0|~1)*)*$/; +var JSON_POINTER_URI_FRAGMENT = /^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i; +var RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/; + + +module.exports = formats; + +function formats(mode) { + mode = mode == 'full' ? 'full' : 'fast'; + return util.copy(formats[mode]); +} + + +formats.fast = { + // date: http://tools.ietf.org/html/rfc3339#section-5.6 + date: /^\d\d\d\d-[0-1]\d-[0-3]\d$/, + // date-time: http://tools.ietf.org/html/rfc3339#section-5.6 + time: /^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i, + 'date-time': /^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i, + // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js + uri: /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i, + 'uri-reference': /^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i, + 'uri-template': URITEMPLATE, + url: URL, + // email (sources from jsen validator): + // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363 + // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation') + email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i, + hostname: HOSTNAME, + // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html + ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/, + // optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses + ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i, + regex: regex, + // uuid: http://tools.ietf.org/html/rfc4122 + uuid: UUID, + // JSON-pointer: https://tools.ietf.org/html/rfc6901 + // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A + 'json-pointer': JSON_POINTER, + 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT, + // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00 + 'relative-json-pointer': RELATIVE_JSON_POINTER +}; + + +formats.full = { + date: date, + time: time, + 'date-time': date_time, + uri: uri, + 'uri-reference': URIREF, + 'uri-template': URITEMPLATE, + url: URL, + email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i, + hostname: HOSTNAME, + ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/, + ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i, + regex: regex, + uuid: UUID, + 'json-pointer': JSON_POINTER, + 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT, + 'relative-json-pointer': RELATIVE_JSON_POINTER +}; + + +function isLeapYear(year) { + // https://tools.ietf.org/html/rfc3339#appendix-C + return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); } -/** - * Write a Body to a Node.js WritableStream (e.g. http.Request) object. - * - * @param Body instance Instance of Body - * @return Void - */ -function writeToStream(dest, instance) { - const body = instance.body; +function date(str) { + // full-date from http://tools.ietf.org/html/rfc3339#section-5.6 + var matches = str.match(DATE); + if (!matches) return false; - if (body === null) { - // body is null - dest.end(); - } else if (isBlob(body)) { - body.stream().pipe(dest); - } else if (Buffer.isBuffer(body)) { - // body is buffer - dest.write(body); - dest.end(); - } else { - // body is stream - body.pipe(dest); - } + var year = +matches[1]; + var month = +matches[2]; + var day = +matches[3]; + + return month >= 1 && month <= 12 && day >= 1 && + day <= (month == 2 && isLeapYear(year) ? 29 : DAYS[month]); } -// expose Promise -Body.Promise = global.Promise; -/** - * headers.js - * - * Headers class offers convenient helpers - */ +function time(str, full) { + var matches = str.match(TIME); + if (!matches) return false; -const invalidTokenRegex = /[^\^_`a-zA-Z\-0-9!#$%&'*+.|~]/; -const invalidHeaderCharRegex = /[^\t\x20-\x7e\x80-\xff]/; + var hour = matches[1]; + var minute = matches[2]; + var second = matches[3]; + var timeZone = matches[5]; + return ((hour <= 23 && minute <= 59 && second <= 59) || + (hour == 23 && minute == 59 && second == 60)) && + (!full || timeZone); +} -function validateName(name) { - name = `${name}`; - if (invalidTokenRegex.test(name) || name === '') { - throw new TypeError(`${name} is not a legal HTTP header name`); - } + +var DATE_TIME_SEPARATOR = /t|\s/i; +function date_time(str) { + // http://tools.ietf.org/html/rfc3339#section-5.6 + var dateTime = str.split(DATE_TIME_SEPARATOR); + return dateTime.length == 2 && date(dateTime[0]) && time(dateTime[1], true); } -function validateValue(value) { - value = `${value}`; - if (invalidHeaderCharRegex.test(value)) { - throw new TypeError(`${value} is not a legal HTTP header value`); - } + +var NOT_URI_FRAGMENT = /\/|:/; +function uri(str) { + // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required "." + return NOT_URI_FRAGMENT.test(str) && URI.test(str); } -/** - * Find the key in the map object given a header name. - * - * Returns undefined if not found. - * - * @param String name Header name - * @return String|Undefined - */ -function find(map, name) { - name = name.toLowerCase(); - for (const key in map) { - if (key.toLowerCase() === name) { - return key; - } - } - return undefined; + +var Z_ANCHOR = /[^\\]\\Z/; +function regex(str) { + if (Z_ANCHOR.test(str)) return false; + try { + new RegExp(str); + return true; + } catch(e) { + return false; + } } -const MAP = Symbol('map'); -class Headers { - /** - * Headers class - * - * @param Object headers Response headers - * @return Void - */ - constructor() { - let init = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined; - this[MAP] = Object.create(null); +/***/ }), +/* 493 */ +/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { - if (init instanceof Headers) { - const rawHeaders = init.raw(); - const headerNames = Object.keys(rawHeaders); +var $export = __webpack_require__(195); +// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes) +$export($export.S + $export.F * !__webpack_require__(843), 'Object', { defineProperty: __webpack_require__(973).f }); - for (const headerName of headerNames) { - for (const value of rawHeaders[headerName]) { - this.append(headerName, value); - } - } - return; - } +/***/ }), +/* 494 */, +/* 495 */, +/* 496 */ +/***/ (function(module, __unusedexports, __webpack_require__) { - // We don't worry about converting prop to ByteString here as append() - // will handle it. - if (init == null) ; else if (typeof init === 'object') { - const method = init[Symbol.iterator]; - if (method != null) { - if (typeof method !== 'function') { - throw new TypeError('Header pairs must be iterable'); - } +"use strict"; - // sequence> - // Note: per spec we have to first exhaust the lists then process them - const pairs = []; - for (const pair of init) { - if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') { - throw new TypeError('Each header pair must be iterable'); - } - pairs.push(Array.from(pair)); - } - for (const pair of pairs) { - if (pair.length !== 2) { - throw new TypeError('Each header pair must be a name/value tuple'); - } - this.append(pair[0], pair[1]); - } - } else { - // record - for (const key of Object.keys(init)) { - const value = init[key]; - this.append(key, value); - } - } - } else { - throw new TypeError('Provided initializer must be an object'); - } +var ruleModules = __webpack_require__(894) + , toHash = __webpack_require__(855).toHash; + +module.exports = function rules() { + var RULES = [ + { type: 'number', + rules: [ { 'maximum': ['exclusiveMaximum'] }, + { 'minimum': ['exclusiveMinimum'] }, 'multipleOf', 'format'] }, + { type: 'string', + rules: [ 'maxLength', 'minLength', 'pattern', 'format' ] }, + { type: 'array', + rules: [ 'maxItems', 'minItems', 'items', 'contains', 'uniqueItems' ] }, + { type: 'object', + rules: [ 'maxProperties', 'minProperties', 'required', 'dependencies', 'propertyNames', + { 'properties': ['additionalProperties', 'patternProperties'] } ] }, + { rules: [ '$ref', 'const', 'enum', 'not', 'anyOf', 'oneOf', 'allOf', 'if' ] } + ]; + + var ALL = [ 'type', '$comment' ]; + var KEYWORDS = [ + '$schema', '$id', 'id', '$data', '$async', 'title', + 'description', 'default', 'definitions', + 'examples', 'readOnly', 'writeOnly', + 'contentMediaType', 'contentEncoding', + 'additionalItems', 'then', 'else' + ]; + var TYPES = [ 'number', 'integer', 'string', 'array', 'object', 'boolean', 'null' ]; + RULES.all = toHash(ALL); + RULES.types = toHash(TYPES); + + RULES.forEach(function (group) { + group.rules = group.rules.map(function (keyword) { + var implKeywords; + if (typeof keyword == 'object') { + var key = Object.keys(keyword)[0]; + implKeywords = keyword[key]; + keyword = key; + implKeywords.forEach(function (k) { + ALL.push(k); + RULES.all[k] = true; + }); + } + ALL.push(keyword); + var rule = RULES.all[keyword] = { + keyword: keyword, + code: ruleModules[keyword], + implements: implKeywords + }; + return rule; + }); + + RULES.all.$comment = { + keyword: '$comment', + code: ruleModules.$comment + }; + + if (group.type) RULES.types[group.type] = group; + }); + + RULES.keywords = toHash(ALL.concat(KEYWORDS)); + RULES.custom = {}; + + return RULES; +}; + + +/***/ }), +/* 497 */, +/* 498 */, +/* 499 */, +/* 500 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +// Copyright 2018 Joyent, Inc. + +module.exports = Key; + +var assert = __webpack_require__(489); +var algs = __webpack_require__(603); +var crypto = __webpack_require__(417); +var Fingerprint = __webpack_require__(400); +var Signature = __webpack_require__(575); +var DiffieHellman = __webpack_require__(290).DiffieHellman; +var errs = __webpack_require__(570); +var utils = __webpack_require__(270); +var PrivateKey = __webpack_require__(502); +var edCompat; + +try { + edCompat = __webpack_require__(363); +} catch (e) { + /* Just continue through, and bail out if we try to use it. */ +} + +var InvalidAlgorithmError = errs.InvalidAlgorithmError; +var KeyParseError = errs.KeyParseError; + +var formats = {}; +formats['auto'] = __webpack_require__(241); +formats['pem'] = __webpack_require__(268); +formats['pkcs1'] = __webpack_require__(508); +formats['pkcs8'] = __webpack_require__(435); +formats['rfc4253'] = __webpack_require__(538); +formats['ssh'] = __webpack_require__(854); +formats['ssh-private'] = __webpack_require__(862); +formats['openssh'] = formats['ssh-private']; +formats['dnssec'] = __webpack_require__(982); +formats['putty'] = __webpack_require__(624); +formats['ppk'] = formats['putty']; + +function Key(opts) { + assert.object(opts, 'options'); + assert.arrayOfObject(opts.parts, 'options.parts'); + assert.string(opts.type, 'options.type'); + assert.optionalString(opts.comment, 'options.comment'); + + var algInfo = algs.info[opts.type]; + if (typeof (algInfo) !== 'object') + throw (new InvalidAlgorithmError(opts.type)); + + var partLookup = {}; + for (var i = 0; i < opts.parts.length; ++i) { + var part = opts.parts[i]; + partLookup[part.name] = part; } - /** - * Return combined header value given name - * - * @param String name Header name - * @return Mixed - */ - get(name) { - name = `${name}`; - validateName(name); - const key = find(this[MAP], name); - if (key === undefined) { - return null; - } + this.type = opts.type; + this.parts = opts.parts; + this.part = partLookup; + this.comment = undefined; + this.source = opts.source; + + /* for speeding up hashing/fingerprint operations */ + this._rfc4253Cache = opts._rfc4253Cache; + this._hashCache = {}; + + var sz; + this.curve = undefined; + if (this.type === 'ecdsa') { + var curve = this.part.curve.data.toString(); + this.curve = curve; + sz = algs.curves[curve].size; + } else if (this.type === 'ed25519' || this.type === 'curve25519') { + sz = 256; + this.curve = 'curve25519'; + } else { + var szPart = this.part[algInfo.sizePart]; + sz = szPart.data.length; + sz = sz * 8 - utils.countZeros(szPart.data); + } + this.size = sz; +} - return this[MAP][key].join(', '); +Key.formats = formats; + +Key.prototype.toBuffer = function (format, options) { + if (format === undefined) + format = 'ssh'; + assert.string(format, 'format'); + assert.object(formats[format], 'formats[format]'); + assert.optionalObject(options, 'options'); + + if (format === 'rfc4253') { + if (this._rfc4253Cache === undefined) + this._rfc4253Cache = formats['rfc4253'].write(this); + return (this._rfc4253Cache); } - /** - * Iterate over all headers - * - * @param Function callback Executed for each item with parameters (value, name, thisArg) - * @param Boolean thisArg `this` context for callback function - * @return Void - */ - forEach(callback) { - let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; + return (formats[format].write(this, options)); +}; - let pairs = getHeaders(this); - let i = 0; - while (i < pairs.length) { - var _pairs$i = pairs[i]; - const name = _pairs$i[0], - value = _pairs$i[1]; +Key.prototype.toString = function (format, options) { + return (this.toBuffer(format, options).toString()); +}; - callback.call(thisArg, value, name, this); - pairs = getHeaders(this); - i++; - } +Key.prototype.hash = function (algo, type) { + assert.string(algo, 'algorithm'); + assert.optionalString(type, 'type'); + if (type === undefined) + type = 'ssh'; + algo = algo.toLowerCase(); + if (algs.hashAlgs[algo] === undefined) + throw (new InvalidAlgorithmError(algo)); + + var cacheKey = algo + '||' + type; + if (this._hashCache[cacheKey]) + return (this._hashCache[cacheKey]); + + var buf; + if (type === 'ssh') { + buf = this.toBuffer('rfc4253'); + } else if (type === 'spki') { + buf = formats.pkcs8.pkcs8ToBuffer(this); + } else { + throw (new Error('Hash type ' + type + ' not supported')); + } + var hash = crypto.createHash(algo).update(buf).digest(); + this._hashCache[cacheKey] = hash; + return (hash); +}; + +Key.prototype.fingerprint = function (algo, type) { + if (algo === undefined) + algo = 'sha256'; + if (type === undefined) + type = 'ssh'; + assert.string(algo, 'algorithm'); + assert.string(type, 'type'); + var opts = { + type: 'key', + hash: this.hash(algo, type), + algorithm: algo, + hashType: type + }; + return (new Fingerprint(opts)); +}; + +Key.prototype.defaultHashAlgorithm = function () { + var hashAlgo = 'sha1'; + if (this.type === 'rsa') + hashAlgo = 'sha256'; + if (this.type === 'dsa' && this.size > 1024) + hashAlgo = 'sha256'; + if (this.type === 'ed25519') + hashAlgo = 'sha512'; + if (this.type === 'ecdsa') { + if (this.size <= 256) + hashAlgo = 'sha256'; + else if (this.size <= 384) + hashAlgo = 'sha384'; + else + hashAlgo = 'sha512'; } + return (hashAlgo); +}; - /** - * Overwrite header values given name - * - * @param String name Header name - * @param String value Header value - * @return Void - */ - set(name, value) { - name = `${name}`; - value = `${value}`; - validateName(name); - validateValue(value); - const key = find(this[MAP], name); - this[MAP][key !== undefined ? key : name] = [value]; +Key.prototype.createVerify = function (hashAlgo) { + if (hashAlgo === undefined) + hashAlgo = this.defaultHashAlgorithm(); + assert.string(hashAlgo, 'hash algorithm'); + + /* ED25519 is not supported by OpenSSL, use a javascript impl. */ + if (this.type === 'ed25519' && edCompat !== undefined) + return (new edCompat.Verifier(this, hashAlgo)); + if (this.type === 'curve25519') + throw (new Error('Curve25519 keys are not suitable for ' + + 'signing or verification')); + + var v, nm, err; + try { + nm = hashAlgo.toUpperCase(); + v = crypto.createVerify(nm); + } catch (e) { + err = e; + } + if (v === undefined || (err instanceof Error && + err.message.match(/Unknown message digest/))) { + nm = 'RSA-'; + nm += hashAlgo.toUpperCase(); + v = crypto.createVerify(nm); } + assert.ok(v, 'failed to create verifier'); + var oldVerify = v.verify.bind(v); + var key = this.toBuffer('pkcs8'); + var curve = this.curve; + var self = this; + v.verify = function (signature, fmt) { + if (Signature.isSignature(signature, [2, 0])) { + if (signature.type !== self.type) + return (false); + if (signature.hashAlgorithm && + signature.hashAlgorithm !== hashAlgo) + return (false); + if (signature.curve && self.type === 'ecdsa' && + signature.curve !== curve) + return (false); + return (oldVerify(key, signature.toBuffer('asn1'))); + + } else if (typeof (signature) === 'string' || + Buffer.isBuffer(signature)) { + return (oldVerify(key, signature, fmt)); + + /* + * Avoid doing this on valid arguments, walking the prototype + * chain can be quite slow. + */ + } else if (Signature.isSignature(signature, [1, 0])) { + throw (new Error('signature was created by too old ' + + 'a version of sshpk and cannot be verified')); - /** - * Append a value onto existing header - * - * @param String name Header name - * @param String value Header value - * @return Void - */ - append(name, value) { - name = `${name}`; - value = `${value}`; - validateName(name); - validateValue(value); - const key = find(this[MAP], name); - if (key !== undefined) { - this[MAP][key].push(value); } else { - this[MAP][name] = [value]; + throw (new TypeError('signature must be a string, ' + + 'Buffer, or Signature object')); } - } + }; + return (v); +}; - /** - * Check for header name existence - * - * @param String name Header name - * @return Boolean - */ - has(name) { - name = `${name}`; - validateName(name); - return find(this[MAP], name) !== undefined; +Key.prototype.createDiffieHellman = function () { + if (this.type === 'rsa') + throw (new Error('RSA keys do not support Diffie-Hellman')); + + return (new DiffieHellman(this)); +}; +Key.prototype.createDH = Key.prototype.createDiffieHellman; + +Key.parse = function (data, format, options) { + if (typeof (data) !== 'string') + assert.buffer(data, 'data'); + if (format === undefined) + format = 'auto'; + assert.string(format, 'format'); + if (typeof (options) === 'string') + options = { filename: options }; + assert.optionalObject(options, 'options'); + if (options === undefined) + options = {}; + assert.optionalString(options.filename, 'options.filename'); + if (options.filename === undefined) + options.filename = '(unnamed)'; + + assert.object(formats[format], 'formats[format]'); + + try { + var k = formats[format].read(data, options); + if (k instanceof PrivateKey) + k = k.toPublic(); + if (!k.comment) + k.comment = options.filename; + return (k); + } catch (e) { + if (e.name === 'KeyEncryptedError') + throw (e); + throw (new KeyParseError(options.filename, format, e)); } +}; - /** - * Delete all header values given name - * - * @param String name Header name - * @return Void - */ - delete(name) { - name = `${name}`; - validateName(name); - const key = find(this[MAP], name); - if (key !== undefined) { - delete this[MAP][key]; - } +Key.isKey = function (obj, ver) { + return (utils.isCompatible(obj, Key, ver)); +}; + +/* + * API versions for Key: + * [1,0] -- initial ver, may take Signature for createVerify or may not + * [1,1] -- added pkcs1, pkcs8 formats + * [1,2] -- added auto, ssh-private, openssh formats + * [1,3] -- added defaultHashAlgorithm + * [1,4] -- added ed support, createDH + * [1,5] -- first explicitly tagged version + * [1,6] -- changed ed25519 part names + * [1,7] -- spki hash types + */ +Key.prototype._sshpkApiVersion = [1, 7]; + +Key._oldVersionDetect = function (obj) { + assert.func(obj.toBuffer); + assert.func(obj.fingerprint); + if (obj.createDH) + return ([1, 4]); + if (obj.defaultHashAlgorithm) + return ([1, 3]); + if (obj.formats['auto']) + return ([1, 2]); + if (obj.formats['pkcs1']) + return ([1, 1]); + return ([1, 0]); +}; + + +/***/ }), +/* 501 */, +/* 502 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +// Copyright 2017 Joyent, Inc. + +module.exports = PrivateKey; + +var assert = __webpack_require__(489); +var Buffer = __webpack_require__(726).Buffer; +var algs = __webpack_require__(603); +var crypto = __webpack_require__(417); +var Fingerprint = __webpack_require__(400); +var Signature = __webpack_require__(575); +var errs = __webpack_require__(570); +var util = __webpack_require__(669); +var utils = __webpack_require__(270); +var dhe = __webpack_require__(290); +var generateECDSA = dhe.generateECDSA; +var generateED25519 = dhe.generateED25519; +var edCompat = __webpack_require__(363); +var nacl = __webpack_require__(196); + +var Key = __webpack_require__(500); + +var InvalidAlgorithmError = errs.InvalidAlgorithmError; +var KeyParseError = errs.KeyParseError; +var KeyEncryptedError = errs.KeyEncryptedError; + +var formats = {}; +formats['auto'] = __webpack_require__(241); +formats['pem'] = __webpack_require__(268); +formats['pkcs1'] = __webpack_require__(508); +formats['pkcs8'] = __webpack_require__(435); +formats['rfc4253'] = __webpack_require__(538); +formats['ssh-private'] = __webpack_require__(862); +formats['openssh'] = formats['ssh-private']; +formats['ssh'] = formats['ssh-private']; +formats['dnssec'] = __webpack_require__(982); + +function PrivateKey(opts) { + assert.object(opts, 'options'); + Key.call(this, opts); + + this._pubCache = undefined; +} +util.inherits(PrivateKey, Key); + +PrivateKey.formats = formats; + +PrivateKey.prototype.toBuffer = function (format, options) { + if (format === undefined) + format = 'pkcs1'; + assert.string(format, 'format'); + assert.object(formats[format], 'formats[format]'); + assert.optionalObject(options, 'options'); + + return (formats[format].write(this, options)); +}; + +PrivateKey.prototype.hash = function (algo, type) { + return (this.toPublic().hash(algo, type)); +}; + +PrivateKey.prototype.fingerprint = function (algo, type) { + return (this.toPublic().fingerprint(algo, type)); +}; + +PrivateKey.prototype.toPublic = function () { + if (this._pubCache) + return (this._pubCache); + + var algInfo = algs.info[this.type]; + var pubParts = []; + for (var i = 0; i < algInfo.parts.length; ++i) { + var p = algInfo.parts[i]; + pubParts.push(this.part[p]); } - /** - * Return raw headers (non-spec api) - * - * @return Object - */ - raw() { - return this[MAP]; + this._pubCache = new Key({ + type: this.type, + source: this, + parts: pubParts + }); + if (this.comment) + this._pubCache.comment = this.comment; + return (this._pubCache); +}; + +PrivateKey.prototype.derive = function (newType) { + assert.string(newType, 'type'); + var priv, pub, pair; + + if (this.type === 'ed25519' && newType === 'curve25519') { + priv = this.part.k.data; + if (priv[0] === 0x00) + priv = priv.slice(1); + + pair = nacl.box.keyPair.fromSecretKey(new Uint8Array(priv)); + pub = Buffer.from(pair.publicKey); + + return (new PrivateKey({ + type: 'curve25519', + parts: [ + { name: 'A', data: utils.mpNormalize(pub) }, + { name: 'k', data: utils.mpNormalize(priv) } + ] + })); + } else if (this.type === 'curve25519' && newType === 'ed25519') { + priv = this.part.k.data; + if (priv[0] === 0x00) + priv = priv.slice(1); + + pair = nacl.sign.keyPair.fromSeed(new Uint8Array(priv)); + pub = Buffer.from(pair.publicKey); + + return (new PrivateKey({ + type: 'ed25519', + parts: [ + { name: 'A', data: utils.mpNormalize(pub) }, + { name: 'k', data: utils.mpNormalize(priv) } + ] + })); } + throw (new Error('Key derivation not supported from ' + this.type + + ' to ' + newType)); +}; - /** - * Get an iterator on keys. - * - * @return Iterator - */ - keys() { - return createHeadersIterator(this, 'key'); +PrivateKey.prototype.createVerify = function (hashAlgo) { + return (this.toPublic().createVerify(hashAlgo)); +}; + +PrivateKey.prototype.createSign = function (hashAlgo) { + if (hashAlgo === undefined) + hashAlgo = this.defaultHashAlgorithm(); + assert.string(hashAlgo, 'hash algorithm'); + + /* ED25519 is not supported by OpenSSL, use a javascript impl. */ + if (this.type === 'ed25519' && edCompat !== undefined) + return (new edCompat.Signer(this, hashAlgo)); + if (this.type === 'curve25519') + throw (new Error('Curve25519 keys are not suitable for ' + + 'signing or verification')); + + var v, nm, err; + try { + nm = hashAlgo.toUpperCase(); + v = crypto.createSign(nm); + } catch (e) { + err = e; } + if (v === undefined || (err instanceof Error && + err.message.match(/Unknown message digest/))) { + nm = 'RSA-'; + nm += hashAlgo.toUpperCase(); + v = crypto.createSign(nm); + } + assert.ok(v, 'failed to create verifier'); + var oldSign = v.sign.bind(v); + var key = this.toBuffer('pkcs1'); + var type = this.type; + var curve = this.curve; + v.sign = function () { + var sig = oldSign(key); + if (typeof (sig) === 'string') + sig = Buffer.from(sig, 'binary'); + sig = Signature.parse(sig, type, 'asn1'); + sig.hashAlgorithm = hashAlgo; + sig.curve = curve; + return (sig); + }; + return (v); +}; - /** - * Get an iterator on values. - * - * @return Iterator - */ - values() { - return createHeadersIterator(this, 'value'); +PrivateKey.parse = function (data, format, options) { + if (typeof (data) !== 'string') + assert.buffer(data, 'data'); + if (format === undefined) + format = 'auto'; + assert.string(format, 'format'); + if (typeof (options) === 'string') + options = { filename: options }; + assert.optionalObject(options, 'options'); + if (options === undefined) + options = {}; + assert.optionalString(options.filename, 'options.filename'); + if (options.filename === undefined) + options.filename = '(unnamed)'; + + assert.object(formats[format], 'formats[format]'); + + try { + var k = formats[format].read(data, options); + assert.ok(k instanceof PrivateKey, 'key is not a private key'); + if (!k.comment) + k.comment = options.filename; + return (k); + } catch (e) { + if (e.name === 'KeyEncryptedError') + throw (e); + throw (new KeyParseError(options.filename, format, e)); } +}; - /** - * Get an iterator on entries. - * - * This is the default iterator of the Headers object. - * - * @return Iterator - */ - [Symbol.iterator]() { - return createHeadersIterator(this, 'key+value'); +PrivateKey.isPrivateKey = function (obj, ver) { + return (utils.isCompatible(obj, PrivateKey, ver)); +}; + +PrivateKey.generate = function (type, options) { + if (options === undefined) + options = {}; + assert.object(options, 'options'); + + switch (type) { + case 'ecdsa': + if (options.curve === undefined) + options.curve = 'nistp256'; + assert.string(options.curve, 'options.curve'); + return (generateECDSA(options.curve)); + case 'ed25519': + return (generateED25519()); + default: + throw (new Error('Key generation not supported with key ' + + 'type "' + type + '"')); } -} -Headers.prototype.entries = Headers.prototype[Symbol.iterator]; +}; -Object.defineProperty(Headers.prototype, Symbol.toStringTag, { - value: 'Headers', - writable: false, - enumerable: false, - configurable: true +/* + * API versions for PrivateKey: + * [1,0] -- initial ver + * [1,1] -- added auto, pkcs[18], openssh/ssh-private formats + * [1,2] -- added defaultHashAlgorithm + * [1,3] -- added derive, ed, createDH + * [1,4] -- first tagged version + * [1,5] -- changed ed25519 part names and format + * [1,6] -- type arguments for hash() and fingerprint() + */ +PrivateKey.prototype._sshpkApiVersion = [1, 6]; + +PrivateKey._oldVersionDetect = function (obj) { + assert.func(obj.toPublic); + assert.func(obj.createSign); + if (obj.derive) + return ([1, 3]); + if (obj.defaultHashAlgorithm) + return ([1, 2]); + if (obj.formats['auto']) + return ([1, 1]); + return ([1, 0]); +}; + + +/***/ }), +/* 503 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var Type = __webpack_require__(755); + +module.exports = new Type('tag:yaml.org,2002:seq', { + kind: 'sequence', + construct: function (data) { return data !== null ? data : []; } }); -Object.defineProperties(Headers.prototype, { - get: { enumerable: true }, - forEach: { enumerable: true }, - set: { enumerable: true }, - append: { enumerable: true }, - has: { enumerable: true }, - delete: { enumerable: true }, - keys: { enumerable: true }, - values: { enumerable: true }, - entries: { enumerable: true } + +/***/ }), +/* 504 */ +/***/ (function(module) { + +module.exports = defer; + +/** + * Runs provided function on next iteration of the event loop + * + * @param {function} fn - function to run + */ +function defer(fn) +{ + var nextTick = typeof setImmediate == 'function' + ? setImmediate + : ( + typeof process == 'object' && typeof process.nextTick == 'function' + ? process.nextTick + : null + ); + + if (nextTick) + { + nextTick(fn); + } + else + { + setTimeout(fn, 0); + } +} + + +/***/ }), +/* 505 */, +/* 506 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true }); +exports.default = rng; -function getHeaders(headers) { - let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value'; +var _crypto = _interopRequireDefault(__webpack_require__(417)); - const keys = Object.keys(headers[MAP]).sort(); - return keys.map(kind === 'key' ? function (k) { - return k.toLowerCase(); - } : kind === 'value' ? function (k) { - return headers[MAP][k].join(', '); - } : function (k) { - return [k.toLowerCase(), headers[MAP][k].join(', ')]; - }); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate + +let poolPtr = rnds8Pool.length; + +function rng() { + if (poolPtr > rnds8Pool.length - 16) { + _crypto.default.randomFillSync(rnds8Pool); + + poolPtr = 0; + } + + return rnds8Pool.slice(poolPtr, poolPtr += 16); } -const INTERNAL = Symbol('internal'); +/***/ }), +/* 507 */, +/* 508 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -function createHeadersIterator(target, kind) { - const iterator = Object.create(HeadersIteratorPrototype); - iterator[INTERNAL] = { - target, - kind, - index: 0 +// Copyright 2015 Joyent, Inc. + +module.exports = { + read: read, + readPkcs1: readPkcs1, + write: write, + writePkcs1: writePkcs1 +}; + +var assert = __webpack_require__(489); +var asn1 = __webpack_require__(325); +var Buffer = __webpack_require__(726).Buffer; +var algs = __webpack_require__(603); +var utils = __webpack_require__(270); + +var Key = __webpack_require__(500); +var PrivateKey = __webpack_require__(502); +var pem = __webpack_require__(268); + +var pkcs8 = __webpack_require__(435); +var readECDSACurve = pkcs8.readECDSACurve; + +function read(buf, options) { + return (pem.read(buf, options, 'pkcs1')); +} + +function write(key, options) { + return (pem.write(key, options, 'pkcs1')); +} + +/* Helper to read in a single mpint */ +function readMPInt(der, nm) { + assert.strictEqual(der.peek(), asn1.Ber.Integer, + nm + ' is not an Integer'); + return (utils.mpNormalize(der.readString(asn1.Ber.Integer, true))); +} + +function readPkcs1(alg, type, der) { + switch (alg) { + case 'RSA': + if (type === 'public') + return (readPkcs1RSAPublic(der)); + else if (type === 'private') + return (readPkcs1RSAPrivate(der)); + throw (new Error('Unknown key type: ' + type)); + case 'DSA': + if (type === 'public') + return (readPkcs1DSAPublic(der)); + else if (type === 'private') + return (readPkcs1DSAPrivate(der)); + throw (new Error('Unknown key type: ' + type)); + case 'EC': + case 'ECDSA': + if (type === 'private') + return (readPkcs1ECDSAPrivate(der)); + else if (type === 'public') + return (readPkcs1ECDSAPublic(der)); + throw (new Error('Unknown key type: ' + type)); + case 'EDDSA': + case 'EdDSA': + if (type === 'private') + return (readPkcs1EdDSAPrivate(der)); + throw (new Error(type + ' keys not supported with EdDSA')); + default: + throw (new Error('Unknown key algo: ' + alg)); + } +} + +function readPkcs1RSAPublic(der) { + // modulus and exponent + var n = readMPInt(der, 'modulus'); + var e = readMPInt(der, 'exponent'); + + // now, make the key + var key = { + type: 'rsa', + parts: [ + { name: 'e', data: e }, + { name: 'n', data: n } + ] }; - return iterator; + + return (new Key(key)); +} + +function readPkcs1RSAPrivate(der) { + var version = readMPInt(der, 'version'); + assert.strictEqual(version[0], 0); + + // modulus then public exponent + var n = readMPInt(der, 'modulus'); + var e = readMPInt(der, 'public exponent'); + var d = readMPInt(der, 'private exponent'); + var p = readMPInt(der, 'prime1'); + var q = readMPInt(der, 'prime2'); + var dmodp = readMPInt(der, 'exponent1'); + var dmodq = readMPInt(der, 'exponent2'); + var iqmp = readMPInt(der, 'iqmp'); + + // now, make the key + var key = { + type: 'rsa', + parts: [ + { name: 'n', data: n }, + { name: 'e', data: e }, + { name: 'd', data: d }, + { name: 'iqmp', data: iqmp }, + { name: 'p', data: p }, + { name: 'q', data: q }, + { name: 'dmodp', data: dmodp }, + { name: 'dmodq', data: dmodq } + ] + }; + + return (new PrivateKey(key)); +} + +function readPkcs1DSAPrivate(der) { + var version = readMPInt(der, 'version'); + assert.strictEqual(version.readUInt8(0), 0); + + var p = readMPInt(der, 'p'); + var q = readMPInt(der, 'q'); + var g = readMPInt(der, 'g'); + var y = readMPInt(der, 'y'); + var x = readMPInt(der, 'x'); + + // now, make the key + var key = { + type: 'dsa', + parts: [ + { name: 'p', data: p }, + { name: 'q', data: q }, + { name: 'g', data: g }, + { name: 'y', data: y }, + { name: 'x', data: x } + ] + }; + + return (new PrivateKey(key)); } -const HeadersIteratorPrototype = Object.setPrototypeOf({ - next() { - // istanbul ignore if - if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) { - throw new TypeError('Value of `this` is not a HeadersIterator'); - } +function readPkcs1EdDSAPrivate(der) { + var version = readMPInt(der, 'version'); + assert.strictEqual(version.readUInt8(0), 1); - var _INTERNAL = this[INTERNAL]; - const target = _INTERNAL.target, - kind = _INTERNAL.kind, - index = _INTERNAL.index; + // private key + var k = der.readString(asn1.Ber.OctetString, true); - const values = getHeaders(target, kind); - const len = values.length; - if (index >= len) { - return { - value: undefined, - done: true - }; - } + der.readSequence(0xa0); + var oid = der.readOID(); + assert.strictEqual(oid, '1.3.101.112', 'the ed25519 curve identifier'); - this[INTERNAL].index = index + 1; + der.readSequence(0xa1); + var A = utils.readBitString(der); - return { - value: values[index], - done: false - }; - } -}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))); + var key = { + type: 'ed25519', + parts: [ + { name: 'A', data: utils.zeroPadToLength(A, 32) }, + { name: 'k', data: k } + ] + }; -Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, { - value: 'HeadersIterator', - writable: false, - enumerable: false, - configurable: true -}); + return (new PrivateKey(key)); +} -/** - * Export the Headers object in a form that Node.js can consume. - * - * @param Headers headers - * @return Object - */ -function exportNodeCompatibleHeaders(headers) { - const obj = Object.assign({ __proto__: null }, headers[MAP]); +function readPkcs1DSAPublic(der) { + var y = readMPInt(der, 'y'); + var p = readMPInt(der, 'p'); + var q = readMPInt(der, 'q'); + var g = readMPInt(der, 'g'); - // http.request() only supports string as Host header. This hack makes - // specifying custom Host header possible. - const hostHeaderKey = find(headers[MAP], 'Host'); - if (hostHeaderKey !== undefined) { - obj[hostHeaderKey] = obj[hostHeaderKey][0]; - } + var key = { + type: 'dsa', + parts: [ + { name: 'y', data: y }, + { name: 'p', data: p }, + { name: 'q', data: q }, + { name: 'g', data: g } + ] + }; - return obj; + return (new Key(key)); } -/** - * Create a Headers object from an object of headers, ignoring those that do - * not conform to HTTP grammar productions. - * - * @param Object obj Object of headers - * @return Headers - */ -function createHeadersLenient(obj) { - const headers = new Headers(); - for (const name of Object.keys(obj)) { - if (invalidTokenRegex.test(name)) { - continue; - } - if (Array.isArray(obj[name])) { - for (const val of obj[name]) { - if (invalidHeaderCharRegex.test(val)) { - continue; - } - if (headers[MAP][name] === undefined) { - headers[MAP][name] = [val]; - } else { - headers[MAP][name].push(val); - } - } - } else if (!invalidHeaderCharRegex.test(obj[name])) { - headers[MAP][name] = [obj[name]]; +function readPkcs1ECDSAPublic(der) { + der.readSequence(); + + var oid = der.readOID(); + assert.strictEqual(oid, '1.2.840.10045.2.1', 'must be ecPublicKey'); + + var curveOid = der.readOID(); + + var curve; + var curves = Object.keys(algs.curves); + for (var j = 0; j < curves.length; ++j) { + var c = curves[j]; + var cd = algs.curves[c]; + if (cd.pkcs8oid === curveOid) { + curve = c; + break; } } - return headers; -} + assert.string(curve, 'a known ECDSA named curve'); -const INTERNALS$1 = Symbol('Response internals'); + var Q = der.readString(asn1.Ber.BitString, true); + Q = utils.ecNormalize(Q); -// fix an issue where "STATUS_CODES" aren't a named export for node <10 -const STATUS_CODES = http.STATUS_CODES; + var key = { + type: 'ecdsa', + parts: [ + { name: 'curve', data: Buffer.from(curve) }, + { name: 'Q', data: Q } + ] + }; -/** - * Response class - * - * @param Stream body Readable stream - * @param Object opts Response options - * @return Void - */ -class Response { - constructor() { - let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return (new Key(key)); +} - Body.call(this, body, opts); +function readPkcs1ECDSAPrivate(der) { + var version = readMPInt(der, 'version'); + assert.strictEqual(version.readUInt8(0), 1); - const status = opts.status || 200; - const headers = new Headers(opts.headers); + // private key + var d = der.readString(asn1.Ber.OctetString, true); - if (body != null && !headers.has('Content-Type')) { - const contentType = extractContentType(body); - if (contentType) { - headers.append('Content-Type', contentType); - } - } + der.readSequence(0xa0); + var curve = readECDSACurve(der); + assert.string(curve, 'a known elliptic curve'); - this[INTERNALS$1] = { - url: opts.url, - status, - statusText: opts.statusText || STATUS_CODES[status], - headers, - counter: opts.counter - }; - } + der.readSequence(0xa1); + var Q = der.readString(asn1.Ber.BitString, true); + Q = utils.ecNormalize(Q); - get url() { - return this[INTERNALS$1].url || ''; - } + var key = { + type: 'ecdsa', + parts: [ + { name: 'curve', data: Buffer.from(curve) }, + { name: 'Q', data: Q }, + { name: 'd', data: d } + ] + }; - get status() { - return this[INTERNALS$1].status; + return (new PrivateKey(key)); +} + +function writePkcs1(der, key) { + der.startSequence(); + + switch (key.type) { + case 'rsa': + if (PrivateKey.isPrivateKey(key)) + writePkcs1RSAPrivate(der, key); + else + writePkcs1RSAPublic(der, key); + break; + case 'dsa': + if (PrivateKey.isPrivateKey(key)) + writePkcs1DSAPrivate(der, key); + else + writePkcs1DSAPublic(der, key); + break; + case 'ecdsa': + if (PrivateKey.isPrivateKey(key)) + writePkcs1ECDSAPrivate(der, key); + else + writePkcs1ECDSAPublic(der, key); + break; + case 'ed25519': + if (PrivateKey.isPrivateKey(key)) + writePkcs1EdDSAPrivate(der, key); + else + writePkcs1EdDSAPublic(der, key); + break; + default: + throw (new Error('Unknown key algo: ' + key.type)); } - /** - * Convenience property representing if the request ended normally - */ - get ok() { - return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300; - } + der.endSequence(); +} - get redirected() { - return this[INTERNALS$1].counter > 0; - } +function writePkcs1RSAPublic(der, key) { + der.writeBuffer(key.part.n.data, asn1.Ber.Integer); + der.writeBuffer(key.part.e.data, asn1.Ber.Integer); +} - get statusText() { - return this[INTERNALS$1].statusText; - } +function writePkcs1RSAPrivate(der, key) { + var ver = Buffer.from([0]); + der.writeBuffer(ver, asn1.Ber.Integer); - get headers() { - return this[INTERNALS$1].headers; - } + der.writeBuffer(key.part.n.data, asn1.Ber.Integer); + der.writeBuffer(key.part.e.data, asn1.Ber.Integer); + der.writeBuffer(key.part.d.data, asn1.Ber.Integer); + der.writeBuffer(key.part.p.data, asn1.Ber.Integer); + der.writeBuffer(key.part.q.data, asn1.Ber.Integer); + if (!key.part.dmodp || !key.part.dmodq) + utils.addRSAMissing(key); + der.writeBuffer(key.part.dmodp.data, asn1.Ber.Integer); + der.writeBuffer(key.part.dmodq.data, asn1.Ber.Integer); + der.writeBuffer(key.part.iqmp.data, asn1.Ber.Integer); +} - /** - * Clone this response - * - * @return Response - */ - clone() { - return new Response(clone(this), { - url: this.url, - status: this.status, - statusText: this.statusText, - headers: this.headers, - ok: this.ok, - redirected: this.redirected - }); - } +function writePkcs1DSAPrivate(der, key) { + var ver = Buffer.from([0]); + der.writeBuffer(ver, asn1.Ber.Integer); + + der.writeBuffer(key.part.p.data, asn1.Ber.Integer); + der.writeBuffer(key.part.q.data, asn1.Ber.Integer); + der.writeBuffer(key.part.g.data, asn1.Ber.Integer); + der.writeBuffer(key.part.y.data, asn1.Ber.Integer); + der.writeBuffer(key.part.x.data, asn1.Ber.Integer); } -Body.mixIn(Response.prototype); +function writePkcs1DSAPublic(der, key) { + der.writeBuffer(key.part.y.data, asn1.Ber.Integer); + der.writeBuffer(key.part.p.data, asn1.Ber.Integer); + der.writeBuffer(key.part.q.data, asn1.Ber.Integer); + der.writeBuffer(key.part.g.data, asn1.Ber.Integer); +} -Object.defineProperties(Response.prototype, { - url: { enumerable: true }, - status: { enumerable: true }, - ok: { enumerable: true }, - redirected: { enumerable: true }, - statusText: { enumerable: true }, - headers: { enumerable: true }, - clone: { enumerable: true } -}); +function writePkcs1ECDSAPublic(der, key) { + der.startSequence(); -Object.defineProperty(Response.prototype, Symbol.toStringTag, { - value: 'Response', - writable: false, - enumerable: false, - configurable: true -}); + der.writeOID('1.2.840.10045.2.1'); /* ecPublicKey */ + var curve = key.part.curve.data.toString(); + var curveOid = algs.curves[curve].pkcs8oid; + assert.string(curveOid, 'a known ECDSA named curve'); + der.writeOID(curveOid); -const INTERNALS$2 = Symbol('Request internals'); -const URL = Url.URL || whatwgUrl.URL; + der.endSequence(); -// fix an issue where "format", "parse" aren't a named export for node <10 -const parse_url = Url.parse; -const format_url = Url.format; + var Q = utils.ecNormalize(key.part.Q.data, true); + der.writeBuffer(Q, asn1.Ber.BitString); +} -/** - * Wrapper around `new URL` to handle arbitrary URLs - * - * @param {string} urlStr - * @return {void} - */ -function parseURL(urlStr) { - /* - Check whether the URL is absolute or not - Scheme: https://tools.ietf.org/html/rfc3986#section-3.1 - Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3 - */ - if (/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(urlStr)) { - urlStr = new URL(urlStr).toString(); - } +function writePkcs1ECDSAPrivate(der, key) { + var ver = Buffer.from([1]); + der.writeBuffer(ver, asn1.Ber.Integer); - // Fallback to old implementation for arbitrary URLs - return parse_url(urlStr); + der.writeBuffer(key.part.d.data, asn1.Ber.OctetString); + + der.startSequence(0xa0); + var curve = key.part.curve.data.toString(); + var curveOid = algs.curves[curve].pkcs8oid; + assert.string(curveOid, 'a known ECDSA named curve'); + der.writeOID(curveOid); + der.endSequence(); + + der.startSequence(0xa1); + var Q = utils.ecNormalize(key.part.Q.data, true); + der.writeBuffer(Q, asn1.Ber.BitString); + der.endSequence(); } -const streamDestructionSupported = 'destroy' in Stream.Readable.prototype; +function writePkcs1EdDSAPrivate(der, key) { + var ver = Buffer.from([1]); + der.writeBuffer(ver, asn1.Ber.Integer); -/** - * Check if a value is an instance of Request. - * - * @param Mixed input - * @return Boolean - */ -function isRequest(input) { - return typeof input === 'object' && typeof input[INTERNALS$2] === 'object'; + der.writeBuffer(key.part.k.data, asn1.Ber.OctetString); + + der.startSequence(0xa0); + der.writeOID('1.3.101.112'); + der.endSequence(); + + der.startSequence(0xa1); + utils.writeBitString(der, key.part.A.data); + der.endSequence(); } -function isAbortSignal(signal) { - const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal); - return !!(proto && proto.constructor.name === 'AbortSignal'); +function writePkcs1EdDSAPublic(der, key) { + throw (new Error('Public keys are not supported for EdDSA PKCS#1')); } -/** - * Request class - * - * @param Mixed input Url or Request instance - * @param Object init Custom options - * @return Void - */ -class Request { - constructor(input) { - let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - let parsedURL; +/***/ }), +/* 509 */, +/* 510 */ +/***/ (function(module) { - // normalize input - if (!isRequest(input)) { - if (input && input.href) { - // in order to support Node.js' Url objects; though WHATWG's URL objects - // will fall into this branch also (since their `toString()` will return - // `href` property anyway) - parsedURL = parseURL(input.href); - } else { - // coerce input to a string before attempting to parse - parsedURL = parseURL(`${input}`); - } - input = {}; - } else { - parsedURL = parseURL(input.url); - } +module.exports = addHook; + +function addHook(state, kind, name, hook) { + var orig = hook; + if (!state.registry[name]) { + state.registry[name] = []; + } + + if (kind === "before") { + hook = function (method, options) { + return Promise.resolve() + .then(orig.bind(null, options)) + .then(method.bind(null, options)); + }; + } + + if (kind === "after") { + hook = function (method, options) { + var result; + return Promise.resolve() + .then(method.bind(null, options)) + .then(function (result_) { + result = result_; + return orig(result, options); + }) + .then(function () { + return result; + }); + }; + } + + if (kind === "error") { + hook = function (method, options) { + return Promise.resolve() + .then(method.bind(null, options)) + .catch(function (error) { + return orig(error, options); + }); + }; + } - let method = init.method || input.method || 'GET'; - method = method.toUpperCase(); + state.registry[name].push({ + hook: hook, + orig: orig, + }); +} - if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) { - throw new TypeError('Request with GET/HEAD method cannot have body'); - } - let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null; +/***/ }), +/* 511 */, +/* 512 */ +/***/ (function(module) { - Body.call(this, inputBody, { - timeout: init.timeout || input.timeout || 0, - size: init.size || input.size || 0 - }); +module.exports = {"application/1d-interleaved-parityfec":{"source":"iana"},"application/3gpdash-qoe-report+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/3gpp-ims+xml":{"source":"iana","compressible":true},"application/3gpphal+json":{"source":"iana","compressible":true},"application/3gpphalforms+json":{"source":"iana","compressible":true},"application/a2l":{"source":"iana"},"application/ace+cbor":{"source":"iana"},"application/activemessage":{"source":"iana"},"application/activity+json":{"source":"iana","compressible":true},"application/alto-costmap+json":{"source":"iana","compressible":true},"application/alto-costmapfilter+json":{"source":"iana","compressible":true},"application/alto-directory+json":{"source":"iana","compressible":true},"application/alto-endpointcost+json":{"source":"iana","compressible":true},"application/alto-endpointcostparams+json":{"source":"iana","compressible":true},"application/alto-endpointprop+json":{"source":"iana","compressible":true},"application/alto-endpointpropparams+json":{"source":"iana","compressible":true},"application/alto-error+json":{"source":"iana","compressible":true},"application/alto-networkmap+json":{"source":"iana","compressible":true},"application/alto-networkmapfilter+json":{"source":"iana","compressible":true},"application/alto-updatestreamcontrol+json":{"source":"iana","compressible":true},"application/alto-updatestreamparams+json":{"source":"iana","compressible":true},"application/aml":{"source":"iana"},"application/andrew-inset":{"source":"iana","extensions":["ez"]},"application/applefile":{"source":"iana"},"application/applixware":{"source":"apache","extensions":["aw"]},"application/at+jwt":{"source":"iana"},"application/atf":{"source":"iana"},"application/atfx":{"source":"iana"},"application/atom+xml":{"source":"iana","compressible":true,"extensions":["atom"]},"application/atomcat+xml":{"source":"iana","compressible":true,"extensions":["atomcat"]},"application/atomdeleted+xml":{"source":"iana","compressible":true,"extensions":["atomdeleted"]},"application/atomicmail":{"source":"iana"},"application/atomsvc+xml":{"source":"iana","compressible":true,"extensions":["atomsvc"]},"application/atsc-dwd+xml":{"source":"iana","compressible":true,"extensions":["dwd"]},"application/atsc-dynamic-event-message":{"source":"iana"},"application/atsc-held+xml":{"source":"iana","compressible":true,"extensions":["held"]},"application/atsc-rdt+json":{"source":"iana","compressible":true},"application/atsc-rsat+xml":{"source":"iana","compressible":true,"extensions":["rsat"]},"application/atxml":{"source":"iana"},"application/auth-policy+xml":{"source":"iana","compressible":true},"application/bacnet-xdd+zip":{"source":"iana","compressible":false},"application/batch-smtp":{"source":"iana"},"application/bdoc":{"compressible":false,"extensions":["bdoc"]},"application/beep+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/calendar+json":{"source":"iana","compressible":true},"application/calendar+xml":{"source":"iana","compressible":true,"extensions":["xcs"]},"application/call-completion":{"source":"iana"},"application/cals-1840":{"source":"iana"},"application/captive+json":{"source":"iana","compressible":true},"application/cbor":{"source":"iana"},"application/cbor-seq":{"source":"iana"},"application/cccex":{"source":"iana"},"application/ccmp+xml":{"source":"iana","compressible":true},"application/ccxml+xml":{"source":"iana","compressible":true,"extensions":["ccxml"]},"application/cdfx+xml":{"source":"iana","compressible":true,"extensions":["cdfx"]},"application/cdmi-capability":{"source":"iana","extensions":["cdmia"]},"application/cdmi-container":{"source":"iana","extensions":["cdmic"]},"application/cdmi-domain":{"source":"iana","extensions":["cdmid"]},"application/cdmi-object":{"source":"iana","extensions":["cdmio"]},"application/cdmi-queue":{"source":"iana","extensions":["cdmiq"]},"application/cdni":{"source":"iana"},"application/cea":{"source":"iana"},"application/cea-2018+xml":{"source":"iana","compressible":true},"application/cellml+xml":{"source":"iana","compressible":true},"application/cfw":{"source":"iana"},"application/city+json":{"source":"iana","compressible":true},"application/clr":{"source":"iana"},"application/clue+xml":{"source":"iana","compressible":true},"application/clue_info+xml":{"source":"iana","compressible":true},"application/cms":{"source":"iana"},"application/cnrp+xml":{"source":"iana","compressible":true},"application/coap-group+json":{"source":"iana","compressible":true},"application/coap-payload":{"source":"iana"},"application/commonground":{"source":"iana"},"application/conference-info+xml":{"source":"iana","compressible":true},"application/cose":{"source":"iana"},"application/cose-key":{"source":"iana"},"application/cose-key-set":{"source":"iana"},"application/cpl+xml":{"source":"iana","compressible":true,"extensions":["cpl"]},"application/csrattrs":{"source":"iana"},"application/csta+xml":{"source":"iana","compressible":true},"application/cstadata+xml":{"source":"iana","compressible":true},"application/csvm+json":{"source":"iana","compressible":true},"application/cu-seeme":{"source":"apache","extensions":["cu"]},"application/cwt":{"source":"iana"},"application/cybercash":{"source":"iana"},"application/dart":{"compressible":true},"application/dash+xml":{"source":"iana","compressible":true,"extensions":["mpd"]},"application/dash-patch+xml":{"source":"iana","compressible":true,"extensions":["mpp"]},"application/dashdelta":{"source":"iana"},"application/davmount+xml":{"source":"iana","compressible":true,"extensions":["davmount"]},"application/dca-rft":{"source":"iana"},"application/dcd":{"source":"iana"},"application/dec-dx":{"source":"iana"},"application/dialog-info+xml":{"source":"iana","compressible":true},"application/dicom":{"source":"iana"},"application/dicom+json":{"source":"iana","compressible":true},"application/dicom+xml":{"source":"iana","compressible":true},"application/dii":{"source":"iana"},"application/dit":{"source":"iana"},"application/dns":{"source":"iana"},"application/dns+json":{"source":"iana","compressible":true},"application/dns-message":{"source":"iana"},"application/docbook+xml":{"source":"apache","compressible":true,"extensions":["dbk"]},"application/dots+cbor":{"source":"iana"},"application/dskpp+xml":{"source":"iana","compressible":true},"application/dssc+der":{"source":"iana","extensions":["dssc"]},"application/dssc+xml":{"source":"iana","compressible":true,"extensions":["xdssc"]},"application/dvcs":{"source":"iana"},"application/ecmascript":{"source":"iana","compressible":true,"extensions":["es","ecma"]},"application/edi-consent":{"source":"iana"},"application/edi-x12":{"source":"iana","compressible":false},"application/edifact":{"source":"iana","compressible":false},"application/efi":{"source":"iana"},"application/elm+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/elm+xml":{"source":"iana","compressible":true},"application/emergencycalldata.cap+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/emergencycalldata.comment+xml":{"source":"iana","compressible":true},"application/emergencycalldata.control+xml":{"source":"iana","compressible":true},"application/emergencycalldata.deviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.ecall.msd":{"source":"iana"},"application/emergencycalldata.providerinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.serviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.subscriberinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.veds+xml":{"source":"iana","compressible":true},"application/emma+xml":{"source":"iana","compressible":true,"extensions":["emma"]},"application/emotionml+xml":{"source":"iana","compressible":true,"extensions":["emotionml"]},"application/encaprtp":{"source":"iana"},"application/epp+xml":{"source":"iana","compressible":true},"application/epub+zip":{"source":"iana","compressible":false,"extensions":["epub"]},"application/eshop":{"source":"iana"},"application/exi":{"source":"iana","extensions":["exi"]},"application/expect-ct-report+json":{"source":"iana","compressible":true},"application/express":{"source":"iana","extensions":["exp"]},"application/fastinfoset":{"source":"iana"},"application/fastsoap":{"source":"iana"},"application/fdt+xml":{"source":"iana","compressible":true,"extensions":["fdt"]},"application/fhir+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/fhir+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/fido.trusted-apps+json":{"compressible":true},"application/fits":{"source":"iana"},"application/flexfec":{"source":"iana"},"application/font-sfnt":{"source":"iana"},"application/font-tdpfr":{"source":"iana","extensions":["pfr"]},"application/font-woff":{"source":"iana","compressible":false},"application/framework-attributes+xml":{"source":"iana","compressible":true},"application/geo+json":{"source":"iana","compressible":true,"extensions":["geojson"]},"application/geo+json-seq":{"source":"iana"},"application/geopackage+sqlite3":{"source":"iana"},"application/geoxacml+xml":{"source":"iana","compressible":true},"application/gltf-buffer":{"source":"iana"},"application/gml+xml":{"source":"iana","compressible":true,"extensions":["gml"]},"application/gpx+xml":{"source":"apache","compressible":true,"extensions":["gpx"]},"application/gxf":{"source":"apache","extensions":["gxf"]},"application/gzip":{"source":"iana","compressible":false,"extensions":["gz"]},"application/h224":{"source":"iana"},"application/held+xml":{"source":"iana","compressible":true},"application/hjson":{"extensions":["hjson"]},"application/http":{"source":"iana"},"application/hyperstudio":{"source":"iana","extensions":["stk"]},"application/ibe-key-request+xml":{"source":"iana","compressible":true},"application/ibe-pkg-reply+xml":{"source":"iana","compressible":true},"application/ibe-pp-data":{"source":"iana"},"application/iges":{"source":"iana"},"application/im-iscomposing+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/index":{"source":"iana"},"application/index.cmd":{"source":"iana"},"application/index.obj":{"source":"iana"},"application/index.response":{"source":"iana"},"application/index.vnd":{"source":"iana"},"application/inkml+xml":{"source":"iana","compressible":true,"extensions":["ink","inkml"]},"application/iotp":{"source":"iana"},"application/ipfix":{"source":"iana","extensions":["ipfix"]},"application/ipp":{"source":"iana"},"application/isup":{"source":"iana"},"application/its+xml":{"source":"iana","compressible":true,"extensions":["its"]},"application/java-archive":{"source":"apache","compressible":false,"extensions":["jar","war","ear"]},"application/java-serialized-object":{"source":"apache","compressible":false,"extensions":["ser"]},"application/java-vm":{"source":"apache","compressible":false,"extensions":["class"]},"application/javascript":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["js","mjs"]},"application/jf2feed+json":{"source":"iana","compressible":true},"application/jose":{"source":"iana"},"application/jose+json":{"source":"iana","compressible":true},"application/jrd+json":{"source":"iana","compressible":true},"application/jscalendar+json":{"source":"iana","compressible":true},"application/json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["json","map"]},"application/json-patch+json":{"source":"iana","compressible":true},"application/json-seq":{"source":"iana"},"application/json5":{"extensions":["json5"]},"application/jsonml+json":{"source":"apache","compressible":true,"extensions":["jsonml"]},"application/jwk+json":{"source":"iana","compressible":true},"application/jwk-set+json":{"source":"iana","compressible":true},"application/jwt":{"source":"iana"},"application/kpml-request+xml":{"source":"iana","compressible":true},"application/kpml-response+xml":{"source":"iana","compressible":true},"application/ld+json":{"source":"iana","compressible":true,"extensions":["jsonld"]},"application/lgr+xml":{"source":"iana","compressible":true,"extensions":["lgr"]},"application/link-format":{"source":"iana"},"application/load-control+xml":{"source":"iana","compressible":true},"application/lost+xml":{"source":"iana","compressible":true,"extensions":["lostxml"]},"application/lostsync+xml":{"source":"iana","compressible":true},"application/lpf+zip":{"source":"iana","compressible":false},"application/lxf":{"source":"iana"},"application/mac-binhex40":{"source":"iana","extensions":["hqx"]},"application/mac-compactpro":{"source":"apache","extensions":["cpt"]},"application/macwriteii":{"source":"iana"},"application/mads+xml":{"source":"iana","compressible":true,"extensions":["mads"]},"application/manifest+json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["webmanifest"]},"application/marc":{"source":"iana","extensions":["mrc"]},"application/marcxml+xml":{"source":"iana","compressible":true,"extensions":["mrcx"]},"application/mathematica":{"source":"iana","extensions":["ma","nb","mb"]},"application/mathml+xml":{"source":"iana","compressible":true,"extensions":["mathml"]},"application/mathml-content+xml":{"source":"iana","compressible":true},"application/mathml-presentation+xml":{"source":"iana","compressible":true},"application/mbms-associated-procedure-description+xml":{"source":"iana","compressible":true},"application/mbms-deregister+xml":{"source":"iana","compressible":true},"application/mbms-envelope+xml":{"source":"iana","compressible":true},"application/mbms-msk+xml":{"source":"iana","compressible":true},"application/mbms-msk-response+xml":{"source":"iana","compressible":true},"application/mbms-protection-description+xml":{"source":"iana","compressible":true},"application/mbms-reception-report+xml":{"source":"iana","compressible":true},"application/mbms-register+xml":{"source":"iana","compressible":true},"application/mbms-register-response+xml":{"source":"iana","compressible":true},"application/mbms-schedule+xml":{"source":"iana","compressible":true},"application/mbms-user-service-description+xml":{"source":"iana","compressible":true},"application/mbox":{"source":"iana","extensions":["mbox"]},"application/media-policy-dataset+xml":{"source":"iana","compressible":true,"extensions":["mpf"]},"application/media_control+xml":{"source":"iana","compressible":true},"application/mediaservercontrol+xml":{"source":"iana","compressible":true,"extensions":["mscml"]},"application/merge-patch+json":{"source":"iana","compressible":true},"application/metalink+xml":{"source":"apache","compressible":true,"extensions":["metalink"]},"application/metalink4+xml":{"source":"iana","compressible":true,"extensions":["meta4"]},"application/mets+xml":{"source":"iana","compressible":true,"extensions":["mets"]},"application/mf4":{"source":"iana"},"application/mikey":{"source":"iana"},"application/mipc":{"source":"iana"},"application/missing-blocks+cbor-seq":{"source":"iana"},"application/mmt-aei+xml":{"source":"iana","compressible":true,"extensions":["maei"]},"application/mmt-usd+xml":{"source":"iana","compressible":true,"extensions":["musd"]},"application/mods+xml":{"source":"iana","compressible":true,"extensions":["mods"]},"application/moss-keys":{"source":"iana"},"application/moss-signature":{"source":"iana"},"application/mosskey-data":{"source":"iana"},"application/mosskey-request":{"source":"iana"},"application/mp21":{"source":"iana","extensions":["m21","mp21"]},"application/mp4":{"source":"iana","extensions":["mp4s","m4p"]},"application/mpeg4-generic":{"source":"iana"},"application/mpeg4-iod":{"source":"iana"},"application/mpeg4-iod-xmt":{"source":"iana"},"application/mrb-consumer+xml":{"source":"iana","compressible":true},"application/mrb-publish+xml":{"source":"iana","compressible":true},"application/msc-ivr+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msc-mixer+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msword":{"source":"iana","compressible":false,"extensions":["doc","dot"]},"application/mud+json":{"source":"iana","compressible":true},"application/multipart-core":{"source":"iana"},"application/mxf":{"source":"iana","extensions":["mxf"]},"application/n-quads":{"source":"iana","extensions":["nq"]},"application/n-triples":{"source":"iana","extensions":["nt"]},"application/nasdata":{"source":"iana"},"application/news-checkgroups":{"source":"iana","charset":"US-ASCII"},"application/news-groupinfo":{"source":"iana","charset":"US-ASCII"},"application/news-transmission":{"source":"iana"},"application/nlsml+xml":{"source":"iana","compressible":true},"application/node":{"source":"iana","extensions":["cjs"]},"application/nss":{"source":"iana"},"application/oauth-authz-req+jwt":{"source":"iana"},"application/oblivious-dns-message":{"source":"iana"},"application/ocsp-request":{"source":"iana"},"application/ocsp-response":{"source":"iana"},"application/octet-stream":{"source":"iana","compressible":false,"extensions":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{"source":"iana","extensions":["oda"]},"application/odm+xml":{"source":"iana","compressible":true},"application/odx":{"source":"iana"},"application/oebps-package+xml":{"source":"iana","compressible":true,"extensions":["opf"]},"application/ogg":{"source":"iana","compressible":false,"extensions":["ogx"]},"application/omdoc+xml":{"source":"apache","compressible":true,"extensions":["omdoc"]},"application/onenote":{"source":"apache","extensions":["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{"source":"iana","compressible":true},"application/oscore":{"source":"iana"},"application/oxps":{"source":"iana","extensions":["oxps"]},"application/p21":{"source":"iana"},"application/p21+zip":{"source":"iana","compressible":false},"application/p2p-overlay+xml":{"source":"iana","compressible":true,"extensions":["relo"]},"application/parityfec":{"source":"iana"},"application/passport":{"source":"iana"},"application/patch-ops-error+xml":{"source":"iana","compressible":true,"extensions":["xer"]},"application/pdf":{"source":"iana","compressible":false,"extensions":["pdf"]},"application/pdx":{"source":"iana"},"application/pem-certificate-chain":{"source":"iana"},"application/pgp-encrypted":{"source":"iana","compressible":false,"extensions":["pgp"]},"application/pgp-keys":{"source":"iana","extensions":["asc"]},"application/pgp-signature":{"source":"iana","extensions":["asc","sig"]},"application/pics-rules":{"source":"apache","extensions":["prf"]},"application/pidf+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pidf-diff+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pkcs10":{"source":"iana","extensions":["p10"]},"application/pkcs12":{"source":"iana"},"application/pkcs7-mime":{"source":"iana","extensions":["p7m","p7c"]},"application/pkcs7-signature":{"source":"iana","extensions":["p7s"]},"application/pkcs8":{"source":"iana","extensions":["p8"]},"application/pkcs8-encrypted":{"source":"iana"},"application/pkix-attr-cert":{"source":"iana","extensions":["ac"]},"application/pkix-cert":{"source":"iana","extensions":["cer"]},"application/pkix-crl":{"source":"iana","extensions":["crl"]},"application/pkix-pkipath":{"source":"iana","extensions":["pkipath"]},"application/pkixcmp":{"source":"iana","extensions":["pki"]},"application/pls+xml":{"source":"iana","compressible":true,"extensions":["pls"]},"application/poc-settings+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/postscript":{"source":"iana","compressible":true,"extensions":["ai","eps","ps"]},"application/ppsp-tracker+json":{"source":"iana","compressible":true},"application/problem+json":{"source":"iana","compressible":true},"application/problem+xml":{"source":"iana","compressible":true},"application/provenance+xml":{"source":"iana","compressible":true,"extensions":["provx"]},"application/prs.alvestrand.titrax-sheet":{"source":"iana"},"application/prs.cww":{"source":"iana","extensions":["cww"]},"application/prs.cyn":{"source":"iana","charset":"7-BIT"},"application/prs.hpub+zip":{"source":"iana","compressible":false},"application/prs.nprend":{"source":"iana"},"application/prs.plucker":{"source":"iana"},"application/prs.rdf-xml-crypt":{"source":"iana"},"application/prs.xsf+xml":{"source":"iana","compressible":true},"application/pskc+xml":{"source":"iana","compressible":true,"extensions":["pskcxml"]},"application/pvd+json":{"source":"iana","compressible":true},"application/qsig":{"source":"iana"},"application/raml+yaml":{"compressible":true,"extensions":["raml"]},"application/raptorfec":{"source":"iana"},"application/rdap+json":{"source":"iana","compressible":true},"application/rdf+xml":{"source":"iana","compressible":true,"extensions":["rdf","owl"]},"application/reginfo+xml":{"source":"iana","compressible":true,"extensions":["rif"]},"application/relax-ng-compact-syntax":{"source":"iana","extensions":["rnc"]},"application/remote-printing":{"source":"iana"},"application/reputon+json":{"source":"iana","compressible":true},"application/resource-lists+xml":{"source":"iana","compressible":true,"extensions":["rl"]},"application/resource-lists-diff+xml":{"source":"iana","compressible":true,"extensions":["rld"]},"application/rfc+xml":{"source":"iana","compressible":true},"application/riscos":{"source":"iana"},"application/rlmi+xml":{"source":"iana","compressible":true},"application/rls-services+xml":{"source":"iana","compressible":true,"extensions":["rs"]},"application/route-apd+xml":{"source":"iana","compressible":true,"extensions":["rapd"]},"application/route-s-tsid+xml":{"source":"iana","compressible":true,"extensions":["sls"]},"application/route-usd+xml":{"source":"iana","compressible":true,"extensions":["rusd"]},"application/rpki-ghostbusters":{"source":"iana","extensions":["gbr"]},"application/rpki-manifest":{"source":"iana","extensions":["mft"]},"application/rpki-publication":{"source":"iana"},"application/rpki-roa":{"source":"iana","extensions":["roa"]},"application/rpki-updown":{"source":"iana"},"application/rsd+xml":{"source":"apache","compressible":true,"extensions":["rsd"]},"application/rss+xml":{"source":"apache","compressible":true,"extensions":["rss"]},"application/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"application/rtploopback":{"source":"iana"},"application/rtx":{"source":"iana"},"application/samlassertion+xml":{"source":"iana","compressible":true},"application/samlmetadata+xml":{"source":"iana","compressible":true},"application/sarif+json":{"source":"iana","compressible":true},"application/sarif-external-properties+json":{"source":"iana","compressible":true},"application/sbe":{"source":"iana"},"application/sbml+xml":{"source":"iana","compressible":true,"extensions":["sbml"]},"application/scaip+xml":{"source":"iana","compressible":true},"application/scim+json":{"source":"iana","compressible":true},"application/scvp-cv-request":{"source":"iana","extensions":["scq"]},"application/scvp-cv-response":{"source":"iana","extensions":["scs"]},"application/scvp-vp-request":{"source":"iana","extensions":["spq"]},"application/scvp-vp-response":{"source":"iana","extensions":["spp"]},"application/sdp":{"source":"iana","extensions":["sdp"]},"application/secevent+jwt":{"source":"iana"},"application/senml+cbor":{"source":"iana"},"application/senml+json":{"source":"iana","compressible":true},"application/senml+xml":{"source":"iana","compressible":true,"extensions":["senmlx"]},"application/senml-etch+cbor":{"source":"iana"},"application/senml-etch+json":{"source":"iana","compressible":true},"application/senml-exi":{"source":"iana"},"application/sensml+cbor":{"source":"iana"},"application/sensml+json":{"source":"iana","compressible":true},"application/sensml+xml":{"source":"iana","compressible":true,"extensions":["sensmlx"]},"application/sensml-exi":{"source":"iana"},"application/sep+xml":{"source":"iana","compressible":true},"application/sep-exi":{"source":"iana"},"application/session-info":{"source":"iana"},"application/set-payment":{"source":"iana"},"application/set-payment-initiation":{"source":"iana","extensions":["setpay"]},"application/set-registration":{"source":"iana"},"application/set-registration-initiation":{"source":"iana","extensions":["setreg"]},"application/sgml":{"source":"iana"},"application/sgml-open-catalog":{"source":"iana"},"application/shf+xml":{"source":"iana","compressible":true,"extensions":["shf"]},"application/sieve":{"source":"iana","extensions":["siv","sieve"]},"application/simple-filter+xml":{"source":"iana","compressible":true},"application/simple-message-summary":{"source":"iana"},"application/simplesymbolcontainer":{"source":"iana"},"application/sipc":{"source":"iana"},"application/slate":{"source":"iana"},"application/smil":{"source":"iana"},"application/smil+xml":{"source":"iana","compressible":true,"extensions":["smi","smil"]},"application/smpte336m":{"source":"iana"},"application/soap+fastinfoset":{"source":"iana"},"application/soap+xml":{"source":"iana","compressible":true},"application/sparql-query":{"source":"iana","extensions":["rq"]},"application/sparql-results+xml":{"source":"iana","compressible":true,"extensions":["srx"]},"application/spdx+json":{"source":"iana","compressible":true},"application/spirits-event+xml":{"source":"iana","compressible":true},"application/sql":{"source":"iana"},"application/srgs":{"source":"iana","extensions":["gram"]},"application/srgs+xml":{"source":"iana","compressible":true,"extensions":["grxml"]},"application/sru+xml":{"source":"iana","compressible":true,"extensions":["sru"]},"application/ssdl+xml":{"source":"apache","compressible":true,"extensions":["ssdl"]},"application/ssml+xml":{"source":"iana","compressible":true,"extensions":["ssml"]},"application/stix+json":{"source":"iana","compressible":true},"application/swid+xml":{"source":"iana","compressible":true,"extensions":["swidtag"]},"application/tamp-apex-update":{"source":"iana"},"application/tamp-apex-update-confirm":{"source":"iana"},"application/tamp-community-update":{"source":"iana"},"application/tamp-community-update-confirm":{"source":"iana"},"application/tamp-error":{"source":"iana"},"application/tamp-sequence-adjust":{"source":"iana"},"application/tamp-sequence-adjust-confirm":{"source":"iana"},"application/tamp-status-query":{"source":"iana"},"application/tamp-status-response":{"source":"iana"},"application/tamp-update":{"source":"iana"},"application/tamp-update-confirm":{"source":"iana"},"application/tar":{"compressible":true},"application/taxii+json":{"source":"iana","compressible":true},"application/td+json":{"source":"iana","compressible":true},"application/tei+xml":{"source":"iana","compressible":true,"extensions":["tei","teicorpus"]},"application/tetra_isi":{"source":"iana"},"application/thraud+xml":{"source":"iana","compressible":true,"extensions":["tfi"]},"application/timestamp-query":{"source":"iana"},"application/timestamp-reply":{"source":"iana"},"application/timestamped-data":{"source":"iana","extensions":["tsd"]},"application/tlsrpt+gzip":{"source":"iana"},"application/tlsrpt+json":{"source":"iana","compressible":true},"application/tnauthlist":{"source":"iana"},"application/token-introspection+jwt":{"source":"iana"},"application/toml":{"compressible":true,"extensions":["toml"]},"application/trickle-ice-sdpfrag":{"source":"iana"},"application/trig":{"source":"iana","extensions":["trig"]},"application/ttml+xml":{"source":"iana","compressible":true,"extensions":["ttml"]},"application/tve-trigger":{"source":"iana"},"application/tzif":{"source":"iana"},"application/tzif-leap":{"source":"iana"},"application/ubjson":{"compressible":false,"extensions":["ubj"]},"application/ulpfec":{"source":"iana"},"application/urc-grpsheet+xml":{"source":"iana","compressible":true},"application/urc-ressheet+xml":{"source":"iana","compressible":true,"extensions":["rsheet"]},"application/urc-targetdesc+xml":{"source":"iana","compressible":true,"extensions":["td"]},"application/urc-uisocketdesc+xml":{"source":"iana","compressible":true},"application/vcard+json":{"source":"iana","compressible":true},"application/vcard+xml":{"source":"iana","compressible":true},"application/vemmi":{"source":"iana"},"application/vividence.scriptfile":{"source":"apache"},"application/vnd.1000minds.decision-model+xml":{"source":"iana","compressible":true,"extensions":["1km"]},"application/vnd.3gpp-prose+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-prose-pc3ch+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-v2x-local-service-information":{"source":"iana"},"application/vnd.3gpp.5gnas":{"source":"iana"},"application/vnd.3gpp.access-transfer-events+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.bsf+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gmop+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gtpc":{"source":"iana"},"application/vnd.3gpp.interworking-data":{"source":"iana"},"application/vnd.3gpp.lpp":{"source":"iana"},"application/vnd.3gpp.mc-signalling-ear":{"source":"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-payload":{"source":"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-signalling":{"source":"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-floor-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-signed+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-init-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-transmission-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mid-call+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ngap":{"source":"iana"},"application/vnd.3gpp.pfcp":{"source":"iana"},"application/vnd.3gpp.pic-bw-large":{"source":"iana","extensions":["plb"]},"application/vnd.3gpp.pic-bw-small":{"source":"iana","extensions":["psb"]},"application/vnd.3gpp.pic-bw-var":{"source":"iana","extensions":["pvb"]},"application/vnd.3gpp.s1ap":{"source":"iana"},"application/vnd.3gpp.sms":{"source":"iana"},"application/vnd.3gpp.sms+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-ext+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.state-and-event-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ussd+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.bcmcsinfo+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.sms":{"source":"iana"},"application/vnd.3gpp2.tcap":{"source":"iana","extensions":["tcap"]},"application/vnd.3lightssoftware.imagescal":{"source":"iana"},"application/vnd.3m.post-it-notes":{"source":"iana","extensions":["pwn"]},"application/vnd.accpac.simply.aso":{"source":"iana","extensions":["aso"]},"application/vnd.accpac.simply.imp":{"source":"iana","extensions":["imp"]},"application/vnd.acucobol":{"source":"iana","extensions":["acu"]},"application/vnd.acucorp":{"source":"iana","extensions":["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{"source":"apache","compressible":false,"extensions":["air"]},"application/vnd.adobe.flash.movie":{"source":"iana"},"application/vnd.adobe.formscentral.fcdt":{"source":"iana","extensions":["fcdt"]},"application/vnd.adobe.fxp":{"source":"iana","extensions":["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{"source":"iana"},"application/vnd.adobe.xdp+xml":{"source":"iana","compressible":true,"extensions":["xdp"]},"application/vnd.adobe.xfdf":{"source":"iana","extensions":["xfdf"]},"application/vnd.aether.imp":{"source":"iana"},"application/vnd.afpc.afplinedata":{"source":"iana"},"application/vnd.afpc.afplinedata-pagedef":{"source":"iana"},"application/vnd.afpc.cmoca-cmresource":{"source":"iana"},"application/vnd.afpc.foca-charset":{"source":"iana"},"application/vnd.afpc.foca-codedfont":{"source":"iana"},"application/vnd.afpc.foca-codepage":{"source":"iana"},"application/vnd.afpc.modca":{"source":"iana"},"application/vnd.afpc.modca-cmtable":{"source":"iana"},"application/vnd.afpc.modca-formdef":{"source":"iana"},"application/vnd.afpc.modca-mediummap":{"source":"iana"},"application/vnd.afpc.modca-objectcontainer":{"source":"iana"},"application/vnd.afpc.modca-overlay":{"source":"iana"},"application/vnd.afpc.modca-pagesegment":{"source":"iana"},"application/vnd.age":{"source":"iana","extensions":["age"]},"application/vnd.ah-barcode":{"source":"iana"},"application/vnd.ahead.space":{"source":"iana","extensions":["ahead"]},"application/vnd.airzip.filesecure.azf":{"source":"iana","extensions":["azf"]},"application/vnd.airzip.filesecure.azs":{"source":"iana","extensions":["azs"]},"application/vnd.amadeus+json":{"source":"iana","compressible":true},"application/vnd.amazon.ebook":{"source":"apache","extensions":["azw"]},"application/vnd.amazon.mobi8-ebook":{"source":"iana"},"application/vnd.americandynamics.acc":{"source":"iana","extensions":["acc"]},"application/vnd.amiga.ami":{"source":"iana","extensions":["ami"]},"application/vnd.amundsen.maze+xml":{"source":"iana","compressible":true},"application/vnd.android.ota":{"source":"iana"},"application/vnd.android.package-archive":{"source":"apache","compressible":false,"extensions":["apk"]},"application/vnd.anki":{"source":"iana"},"application/vnd.anser-web-certificate-issue-initiation":{"source":"iana","extensions":["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{"source":"apache","extensions":["fti"]},"application/vnd.antix.game-component":{"source":"iana","extensions":["atx"]},"application/vnd.apache.arrow.file":{"source":"iana"},"application/vnd.apache.arrow.stream":{"source":"iana"},"application/vnd.apache.thrift.binary":{"source":"iana"},"application/vnd.apache.thrift.compact":{"source":"iana"},"application/vnd.apache.thrift.json":{"source":"iana"},"application/vnd.api+json":{"source":"iana","compressible":true},"application/vnd.aplextor.warrp+json":{"source":"iana","compressible":true},"application/vnd.apothekende.reservation+json":{"source":"iana","compressible":true},"application/vnd.apple.installer+xml":{"source":"iana","compressible":true,"extensions":["mpkg"]},"application/vnd.apple.keynote":{"source":"iana","extensions":["key"]},"application/vnd.apple.mpegurl":{"source":"iana","extensions":["m3u8"]},"application/vnd.apple.numbers":{"source":"iana","extensions":["numbers"]},"application/vnd.apple.pages":{"source":"iana","extensions":["pages"]},"application/vnd.apple.pkpass":{"compressible":false,"extensions":["pkpass"]},"application/vnd.arastra.swi":{"source":"iana"},"application/vnd.aristanetworks.swi":{"source":"iana","extensions":["swi"]},"application/vnd.artisan+json":{"source":"iana","compressible":true},"application/vnd.artsquare":{"source":"iana"},"application/vnd.astraea-software.iota":{"source":"iana","extensions":["iota"]},"application/vnd.audiograph":{"source":"iana","extensions":["aep"]},"application/vnd.autopackage":{"source":"iana"},"application/vnd.avalon+json":{"source":"iana","compressible":true},"application/vnd.avistar+xml":{"source":"iana","compressible":true},"application/vnd.balsamiq.bmml+xml":{"source":"iana","compressible":true,"extensions":["bmml"]},"application/vnd.balsamiq.bmpr":{"source":"iana"},"application/vnd.banana-accounting":{"source":"iana"},"application/vnd.bbf.usp.error":{"source":"iana"},"application/vnd.bbf.usp.msg":{"source":"iana"},"application/vnd.bbf.usp.msg+json":{"source":"iana","compressible":true},"application/vnd.bekitzur-stech+json":{"source":"iana","compressible":true},"application/vnd.bint.med-content":{"source":"iana"},"application/vnd.biopax.rdf+xml":{"source":"iana","compressible":true},"application/vnd.blink-idb-value-wrapper":{"source":"iana"},"application/vnd.blueice.multipass":{"source":"iana","extensions":["mpm"]},"application/vnd.bluetooth.ep.oob":{"source":"iana"},"application/vnd.bluetooth.le.oob":{"source":"iana"},"application/vnd.bmi":{"source":"iana","extensions":["bmi"]},"application/vnd.bpf":{"source":"iana"},"application/vnd.bpf3":{"source":"iana"},"application/vnd.businessobjects":{"source":"iana","extensions":["rep"]},"application/vnd.byu.uapi+json":{"source":"iana","compressible":true},"application/vnd.cab-jscript":{"source":"iana"},"application/vnd.canon-cpdl":{"source":"iana"},"application/vnd.canon-lips":{"source":"iana"},"application/vnd.capasystems-pg+json":{"source":"iana","compressible":true},"application/vnd.cendio.thinlinc.clientconf":{"source":"iana"},"application/vnd.century-systems.tcp_stream":{"source":"iana"},"application/vnd.chemdraw+xml":{"source":"iana","compressible":true,"extensions":["cdxml"]},"application/vnd.chess-pgn":{"source":"iana"},"application/vnd.chipnuts.karaoke-mmd":{"source":"iana","extensions":["mmd"]},"application/vnd.ciedi":{"source":"iana"},"application/vnd.cinderella":{"source":"iana","extensions":["cdy"]},"application/vnd.cirpack.isdn-ext":{"source":"iana"},"application/vnd.citationstyles.style+xml":{"source":"iana","compressible":true,"extensions":["csl"]},"application/vnd.claymore":{"source":"iana","extensions":["cla"]},"application/vnd.cloanto.rp9":{"source":"iana","extensions":["rp9"]},"application/vnd.clonk.c4group":{"source":"iana","extensions":["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{"source":"iana","extensions":["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{"source":"iana","extensions":["c11amz"]},"application/vnd.coffeescript":{"source":"iana"},"application/vnd.collabio.xodocuments.document":{"source":"iana"},"application/vnd.collabio.xodocuments.document-template":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation-template":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{"source":"iana"},"application/vnd.collection+json":{"source":"iana","compressible":true},"application/vnd.collection.doc+json":{"source":"iana","compressible":true},"application/vnd.collection.next+json":{"source":"iana","compressible":true},"application/vnd.comicbook+zip":{"source":"iana","compressible":false},"application/vnd.comicbook-rar":{"source":"iana"},"application/vnd.commerce-battelle":{"source":"iana"},"application/vnd.commonspace":{"source":"iana","extensions":["csp"]},"application/vnd.contact.cmsg":{"source":"iana","extensions":["cdbcmsg"]},"application/vnd.coreos.ignition+json":{"source":"iana","compressible":true},"application/vnd.cosmocaller":{"source":"iana","extensions":["cmc"]},"application/vnd.crick.clicker":{"source":"iana","extensions":["clkx"]},"application/vnd.crick.clicker.keyboard":{"source":"iana","extensions":["clkk"]},"application/vnd.crick.clicker.palette":{"source":"iana","extensions":["clkp"]},"application/vnd.crick.clicker.template":{"source":"iana","extensions":["clkt"]},"application/vnd.crick.clicker.wordbank":{"source":"iana","extensions":["clkw"]},"application/vnd.criticaltools.wbs+xml":{"source":"iana","compressible":true,"extensions":["wbs"]},"application/vnd.cryptii.pipe+json":{"source":"iana","compressible":true},"application/vnd.crypto-shade-file":{"source":"iana"},"application/vnd.cryptomator.encrypted":{"source":"iana"},"application/vnd.cryptomator.vault":{"source":"iana"},"application/vnd.ctc-posml":{"source":"iana","extensions":["pml"]},"application/vnd.ctct.ws+xml":{"source":"iana","compressible":true},"application/vnd.cups-pdf":{"source":"iana"},"application/vnd.cups-postscript":{"source":"iana"},"application/vnd.cups-ppd":{"source":"iana","extensions":["ppd"]},"application/vnd.cups-raster":{"source":"iana"},"application/vnd.cups-raw":{"source":"iana"},"application/vnd.curl":{"source":"iana"},"application/vnd.curl.car":{"source":"apache","extensions":["car"]},"application/vnd.curl.pcurl":{"source":"apache","extensions":["pcurl"]},"application/vnd.cyan.dean.root+xml":{"source":"iana","compressible":true},"application/vnd.cybank":{"source":"iana"},"application/vnd.cyclonedx+json":{"source":"iana","compressible":true},"application/vnd.cyclonedx+xml":{"source":"iana","compressible":true},"application/vnd.d2l.coursepackage1p0+zip":{"source":"iana","compressible":false},"application/vnd.d3m-dataset":{"source":"iana"},"application/vnd.d3m-problem":{"source":"iana"},"application/vnd.dart":{"source":"iana","compressible":true,"extensions":["dart"]},"application/vnd.data-vision.rdz":{"source":"iana","extensions":["rdz"]},"application/vnd.datapackage+json":{"source":"iana","compressible":true},"application/vnd.dataresource+json":{"source":"iana","compressible":true},"application/vnd.dbf":{"source":"iana","extensions":["dbf"]},"application/vnd.debian.binary-package":{"source":"iana"},"application/vnd.dece.data":{"source":"iana","extensions":["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{"source":"iana","compressible":true,"extensions":["uvt","uvvt"]},"application/vnd.dece.unspecified":{"source":"iana","extensions":["uvx","uvvx"]},"application/vnd.dece.zip":{"source":"iana","extensions":["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{"source":"iana","extensions":["fe_launch"]},"application/vnd.desmume.movie":{"source":"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{"source":"iana"},"application/vnd.dm.delegation+xml":{"source":"iana","compressible":true},"application/vnd.dna":{"source":"iana","extensions":["dna"]},"application/vnd.document+json":{"source":"iana","compressible":true},"application/vnd.dolby.mlp":{"source":"apache","extensions":["mlp"]},"application/vnd.dolby.mobile.1":{"source":"iana"},"application/vnd.dolby.mobile.2":{"source":"iana"},"application/vnd.doremir.scorecloud-binary-document":{"source":"iana"},"application/vnd.dpgraph":{"source":"iana","extensions":["dpg"]},"application/vnd.dreamfactory":{"source":"iana","extensions":["dfac"]},"application/vnd.drive+json":{"source":"iana","compressible":true},"application/vnd.ds-keypoint":{"source":"apache","extensions":["kpxx"]},"application/vnd.dtg.local":{"source":"iana"},"application/vnd.dtg.local.flash":{"source":"iana"},"application/vnd.dtg.local.html":{"source":"iana"},"application/vnd.dvb.ait":{"source":"iana","extensions":["ait"]},"application/vnd.dvb.dvbisl+xml":{"source":"iana","compressible":true},"application/vnd.dvb.dvbj":{"source":"iana"},"application/vnd.dvb.esgcontainer":{"source":"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess2":{"source":"iana"},"application/vnd.dvb.ipdcesgpdd":{"source":"iana"},"application/vnd.dvb.ipdcroaming":{"source":"iana"},"application/vnd.dvb.iptv.alfec-base":{"source":"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{"source":"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-container+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-generic+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-msglist+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-request+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-response+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-init+xml":{"source":"iana","compressible":true},"application/vnd.dvb.pfr":{"source":"iana"},"application/vnd.dvb.service":{"source":"iana","extensions":["svc"]},"application/vnd.dxr":{"source":"iana"},"application/vnd.dynageo":{"source":"iana","extensions":["geo"]},"application/vnd.dzr":{"source":"iana"},"application/vnd.easykaraoke.cdgdownload":{"source":"iana"},"application/vnd.ecdis-update":{"source":"iana"},"application/vnd.ecip.rlp":{"source":"iana"},"application/vnd.eclipse.ditto+json":{"source":"iana","compressible":true},"application/vnd.ecowin.chart":{"source":"iana","extensions":["mag"]},"application/vnd.ecowin.filerequest":{"source":"iana"},"application/vnd.ecowin.fileupdate":{"source":"iana"},"application/vnd.ecowin.series":{"source":"iana"},"application/vnd.ecowin.seriesrequest":{"source":"iana"},"application/vnd.ecowin.seriesupdate":{"source":"iana"},"application/vnd.efi.img":{"source":"iana"},"application/vnd.efi.iso":{"source":"iana"},"application/vnd.emclient.accessrequest+xml":{"source":"iana","compressible":true},"application/vnd.enliven":{"source":"iana","extensions":["nml"]},"application/vnd.enphase.envoy":{"source":"iana"},"application/vnd.eprints.data+xml":{"source":"iana","compressible":true},"application/vnd.epson.esf":{"source":"iana","extensions":["esf"]},"application/vnd.epson.msf":{"source":"iana","extensions":["msf"]},"application/vnd.epson.quickanime":{"source":"iana","extensions":["qam"]},"application/vnd.epson.salt":{"source":"iana","extensions":["slt"]},"application/vnd.epson.ssf":{"source":"iana","extensions":["ssf"]},"application/vnd.ericsson.quickcall":{"source":"iana"},"application/vnd.espass-espass+zip":{"source":"iana","compressible":false},"application/vnd.eszigno3+xml":{"source":"iana","compressible":true,"extensions":["es3","et3"]},"application/vnd.etsi.aoc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.asic-e+zip":{"source":"iana","compressible":false},"application/vnd.etsi.asic-s+zip":{"source":"iana","compressible":false},"application/vnd.etsi.cug+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvcommand+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-bc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-cod+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-npvr+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvservice+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsync+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvueprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mcid+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mheg5":{"source":"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{"source":"iana","compressible":true},"application/vnd.etsi.pstn+xml":{"source":"iana","compressible":true},"application/vnd.etsi.sci+xml":{"source":"iana","compressible":true},"application/vnd.etsi.simservs+xml":{"source":"iana","compressible":true},"application/vnd.etsi.timestamp-token":{"source":"iana"},"application/vnd.etsi.tsl+xml":{"source":"iana","compressible":true},"application/vnd.etsi.tsl.der":{"source":"iana"},"application/vnd.eu.kasparian.car+json":{"source":"iana","compressible":true},"application/vnd.eudora.data":{"source":"iana"},"application/vnd.evolv.ecig.profile":{"source":"iana"},"application/vnd.evolv.ecig.settings":{"source":"iana"},"application/vnd.evolv.ecig.theme":{"source":"iana"},"application/vnd.exstream-empower+zip":{"source":"iana","compressible":false},"application/vnd.exstream-package":{"source":"iana"},"application/vnd.ezpix-album":{"source":"iana","extensions":["ez2"]},"application/vnd.ezpix-package":{"source":"iana","extensions":["ez3"]},"application/vnd.f-secure.mobile":{"source":"iana"},"application/vnd.familysearch.gedcom+zip":{"source":"iana","compressible":false},"application/vnd.fastcopy-disk-image":{"source":"iana"},"application/vnd.fdf":{"source":"iana","extensions":["fdf"]},"application/vnd.fdsn.mseed":{"source":"iana","extensions":["mseed"]},"application/vnd.fdsn.seed":{"source":"iana","extensions":["seed","dataless"]},"application/vnd.ffsns":{"source":"iana"},"application/vnd.ficlab.flb+zip":{"source":"iana","compressible":false},"application/vnd.filmit.zfc":{"source":"iana"},"application/vnd.fints":{"source":"iana"},"application/vnd.firemonkeys.cloudcell":{"source":"iana"},"application/vnd.flographit":{"source":"iana","extensions":["gph"]},"application/vnd.fluxtime.clip":{"source":"iana","extensions":["ftc"]},"application/vnd.font-fontforge-sfd":{"source":"iana"},"application/vnd.framemaker":{"source":"iana","extensions":["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{"source":"iana","extensions":["fnc"]},"application/vnd.frogans.ltf":{"source":"iana","extensions":["ltf"]},"application/vnd.fsc.weblaunch":{"source":"iana","extensions":["fsc"]},"application/vnd.fujifilm.fb.docuworks":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.container":{"source":"iana"},"application/vnd.fujifilm.fb.jfi+xml":{"source":"iana","compressible":true},"application/vnd.fujitsu.oasys":{"source":"iana","extensions":["oas"]},"application/vnd.fujitsu.oasys2":{"source":"iana","extensions":["oa2"]},"application/vnd.fujitsu.oasys3":{"source":"iana","extensions":["oa3"]},"application/vnd.fujitsu.oasysgp":{"source":"iana","extensions":["fg5"]},"application/vnd.fujitsu.oasysprs":{"source":"iana","extensions":["bh2"]},"application/vnd.fujixerox.art-ex":{"source":"iana"},"application/vnd.fujixerox.art4":{"source":"iana"},"application/vnd.fujixerox.ddd":{"source":"iana","extensions":["ddd"]},"application/vnd.fujixerox.docuworks":{"source":"iana","extensions":["xdw"]},"application/vnd.fujixerox.docuworks.binder":{"source":"iana","extensions":["xbd"]},"application/vnd.fujixerox.docuworks.container":{"source":"iana"},"application/vnd.fujixerox.hbpl":{"source":"iana"},"application/vnd.fut-misnet":{"source":"iana"},"application/vnd.futoin+cbor":{"source":"iana"},"application/vnd.futoin+json":{"source":"iana","compressible":true},"application/vnd.fuzzysheet":{"source":"iana","extensions":["fzs"]},"application/vnd.genomatix.tuxedo":{"source":"iana","extensions":["txd"]},"application/vnd.gentics.grd+json":{"source":"iana","compressible":true},"application/vnd.geo+json":{"source":"iana","compressible":true},"application/vnd.geocube+xml":{"source":"iana","compressible":true},"application/vnd.geogebra.file":{"source":"iana","extensions":["ggb"]},"application/vnd.geogebra.slides":{"source":"iana"},"application/vnd.geogebra.tool":{"source":"iana","extensions":["ggt"]},"application/vnd.geometry-explorer":{"source":"iana","extensions":["gex","gre"]},"application/vnd.geonext":{"source":"iana","extensions":["gxt"]},"application/vnd.geoplan":{"source":"iana","extensions":["g2w"]},"application/vnd.geospace":{"source":"iana","extensions":["g3w"]},"application/vnd.gerber":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt-response":{"source":"iana"},"application/vnd.gmx":{"source":"iana","extensions":["gmx"]},"application/vnd.google-apps.document":{"compressible":false,"extensions":["gdoc"]},"application/vnd.google-apps.presentation":{"compressible":false,"extensions":["gslides"]},"application/vnd.google-apps.spreadsheet":{"compressible":false,"extensions":["gsheet"]},"application/vnd.google-earth.kml+xml":{"source":"iana","compressible":true,"extensions":["kml"]},"application/vnd.google-earth.kmz":{"source":"iana","compressible":false,"extensions":["kmz"]},"application/vnd.gov.sk.e-form+xml":{"source":"iana","compressible":true},"application/vnd.gov.sk.e-form+zip":{"source":"iana","compressible":false},"application/vnd.gov.sk.xmldatacontainer+xml":{"source":"iana","compressible":true},"application/vnd.grafeq":{"source":"iana","extensions":["gqf","gqs"]},"application/vnd.gridmp":{"source":"iana"},"application/vnd.groove-account":{"source":"iana","extensions":["gac"]},"application/vnd.groove-help":{"source":"iana","extensions":["ghf"]},"application/vnd.groove-identity-message":{"source":"iana","extensions":["gim"]},"application/vnd.groove-injector":{"source":"iana","extensions":["grv"]},"application/vnd.groove-tool-message":{"source":"iana","extensions":["gtm"]},"application/vnd.groove-tool-template":{"source":"iana","extensions":["tpl"]},"application/vnd.groove-vcard":{"source":"iana","extensions":["vcg"]},"application/vnd.hal+json":{"source":"iana","compressible":true},"application/vnd.hal+xml":{"source":"iana","compressible":true,"extensions":["hal"]},"application/vnd.handheld-entertainment+xml":{"source":"iana","compressible":true,"extensions":["zmm"]},"application/vnd.hbci":{"source":"iana","extensions":["hbci"]},"application/vnd.hc+json":{"source":"iana","compressible":true},"application/vnd.hcl-bireports":{"source":"iana"},"application/vnd.hdt":{"source":"iana"},"application/vnd.heroku+json":{"source":"iana","compressible":true},"application/vnd.hhe.lesson-player":{"source":"iana","extensions":["les"]},"application/vnd.hl7cda+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.hl7v2+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.hp-hpgl":{"source":"iana","extensions":["hpgl"]},"application/vnd.hp-hpid":{"source":"iana","extensions":["hpid"]},"application/vnd.hp-hps":{"source":"iana","extensions":["hps"]},"application/vnd.hp-jlyt":{"source":"iana","extensions":["jlt"]},"application/vnd.hp-pcl":{"source":"iana","extensions":["pcl"]},"application/vnd.hp-pclxl":{"source":"iana","extensions":["pclxl"]},"application/vnd.httphone":{"source":"iana"},"application/vnd.hydrostatix.sof-data":{"source":"iana","extensions":["sfd-hdstx"]},"application/vnd.hyper+json":{"source":"iana","compressible":true},"application/vnd.hyper-item+json":{"source":"iana","compressible":true},"application/vnd.hyperdrive+json":{"source":"iana","compressible":true},"application/vnd.hzn-3d-crossword":{"source":"iana"},"application/vnd.ibm.afplinedata":{"source":"iana"},"application/vnd.ibm.electronic-media":{"source":"iana"},"application/vnd.ibm.minipay":{"source":"iana","extensions":["mpy"]},"application/vnd.ibm.modcap":{"source":"iana","extensions":["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{"source":"iana","extensions":["irm"]},"application/vnd.ibm.secure-container":{"source":"iana","extensions":["sc"]},"application/vnd.iccprofile":{"source":"iana","extensions":["icc","icm"]},"application/vnd.ieee.1905":{"source":"iana"},"application/vnd.igloader":{"source":"iana","extensions":["igl"]},"application/vnd.imagemeter.folder+zip":{"source":"iana","compressible":false},"application/vnd.imagemeter.image+zip":{"source":"iana","compressible":false},"application/vnd.immervision-ivp":{"source":"iana","extensions":["ivp"]},"application/vnd.immervision-ivu":{"source":"iana","extensions":["ivu"]},"application/vnd.ims.imsccv1p1":{"source":"iana"},"application/vnd.ims.imsccv1p2":{"source":"iana"},"application/vnd.ims.imsccv1p3":{"source":"iana"},"application/vnd.ims.lis.v2.result+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy.id+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings.simple+json":{"source":"iana","compressible":true},"application/vnd.informedcontrol.rms+xml":{"source":"iana","compressible":true},"application/vnd.informix-visionary":{"source":"iana"},"application/vnd.infotech.project":{"source":"iana"},"application/vnd.infotech.project+xml":{"source":"iana","compressible":true},"application/vnd.innopath.wamp.notification":{"source":"iana"},"application/vnd.insors.igm":{"source":"iana","extensions":["igm"]},"application/vnd.intercon.formnet":{"source":"iana","extensions":["xpw","xpx"]},"application/vnd.intergeo":{"source":"iana","extensions":["i2g"]},"application/vnd.intertrust.digibox":{"source":"iana"},"application/vnd.intertrust.nncp":{"source":"iana"},"application/vnd.intu.qbo":{"source":"iana","extensions":["qbo"]},"application/vnd.intu.qfx":{"source":"iana","extensions":["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.conceptitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.knowledgeitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsmessage+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.packageitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.planningitem+xml":{"source":"iana","compressible":true},"application/vnd.ipunplugged.rcprofile":{"source":"iana","extensions":["rcprofile"]},"application/vnd.irepository.package+xml":{"source":"iana","compressible":true,"extensions":["irp"]},"application/vnd.is-xpr":{"source":"iana","extensions":["xpr"]},"application/vnd.isac.fcs":{"source":"iana","extensions":["fcs"]},"application/vnd.iso11783-10+zip":{"source":"iana","compressible":false},"application/vnd.jam":{"source":"iana","extensions":["jam"]},"application/vnd.japannet-directory-service":{"source":"iana"},"application/vnd.japannet-jpnstore-wakeup":{"source":"iana"},"application/vnd.japannet-payment-wakeup":{"source":"iana"},"application/vnd.japannet-registration":{"source":"iana"},"application/vnd.japannet-registration-wakeup":{"source":"iana"},"application/vnd.japannet-setstore-wakeup":{"source":"iana"},"application/vnd.japannet-verification":{"source":"iana"},"application/vnd.japannet-verification-wakeup":{"source":"iana"},"application/vnd.jcp.javame.midlet-rms":{"source":"iana","extensions":["rms"]},"application/vnd.jisp":{"source":"iana","extensions":["jisp"]},"application/vnd.joost.joda-archive":{"source":"iana","extensions":["joda"]},"application/vnd.jsk.isdn-ngn":{"source":"iana"},"application/vnd.kahootz":{"source":"iana","extensions":["ktz","ktr"]},"application/vnd.kde.karbon":{"source":"iana","extensions":["karbon"]},"application/vnd.kde.kchart":{"source":"iana","extensions":["chrt"]},"application/vnd.kde.kformula":{"source":"iana","extensions":["kfo"]},"application/vnd.kde.kivio":{"source":"iana","extensions":["flw"]},"application/vnd.kde.kontour":{"source":"iana","extensions":["kon"]},"application/vnd.kde.kpresenter":{"source":"iana","extensions":["kpr","kpt"]},"application/vnd.kde.kspread":{"source":"iana","extensions":["ksp"]},"application/vnd.kde.kword":{"source":"iana","extensions":["kwd","kwt"]},"application/vnd.kenameaapp":{"source":"iana","extensions":["htke"]},"application/vnd.kidspiration":{"source":"iana","extensions":["kia"]},"application/vnd.kinar":{"source":"iana","extensions":["kne","knp"]},"application/vnd.koan":{"source":"iana","extensions":["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{"source":"iana","extensions":["sse"]},"application/vnd.las":{"source":"iana"},"application/vnd.las.las+json":{"source":"iana","compressible":true},"application/vnd.las.las+xml":{"source":"iana","compressible":true,"extensions":["lasxml"]},"application/vnd.laszip":{"source":"iana"},"application/vnd.leap+json":{"source":"iana","compressible":true},"application/vnd.liberty-request+xml":{"source":"iana","compressible":true},"application/vnd.llamagraphics.life-balance.desktop":{"source":"iana","extensions":["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{"source":"iana","compressible":true,"extensions":["lbe"]},"application/vnd.logipipe.circuit+zip":{"source":"iana","compressible":false},"application/vnd.loom":{"source":"iana"},"application/vnd.lotus-1-2-3":{"source":"iana","extensions":["123"]},"application/vnd.lotus-approach":{"source":"iana","extensions":["apr"]},"application/vnd.lotus-freelance":{"source":"iana","extensions":["pre"]},"application/vnd.lotus-notes":{"source":"iana","extensions":["nsf"]},"application/vnd.lotus-organizer":{"source":"iana","extensions":["org"]},"application/vnd.lotus-screencam":{"source":"iana","extensions":["scm"]},"application/vnd.lotus-wordpro":{"source":"iana","extensions":["lwp"]},"application/vnd.macports.portpkg":{"source":"iana","extensions":["portpkg"]},"application/vnd.mapbox-vector-tile":{"source":"iana","extensions":["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.conftoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.license+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.mdcf":{"source":"iana"},"application/vnd.mason+json":{"source":"iana","compressible":true},"application/vnd.maxar.archive.3tz+zip":{"source":"iana","compressible":false},"application/vnd.maxmind.maxmind-db":{"source":"iana"},"application/vnd.mcd":{"source":"iana","extensions":["mcd"]},"application/vnd.medcalcdata":{"source":"iana","extensions":["mc1"]},"application/vnd.mediastation.cdkey":{"source":"iana","extensions":["cdkey"]},"application/vnd.meridian-slingshot":{"source":"iana"},"application/vnd.mfer":{"source":"iana","extensions":["mwf"]},"application/vnd.mfmp":{"source":"iana","extensions":["mfm"]},"application/vnd.micro+json":{"source":"iana","compressible":true},"application/vnd.micrografx.flo":{"source":"iana","extensions":["flo"]},"application/vnd.micrografx.igx":{"source":"iana","extensions":["igx"]},"application/vnd.microsoft.portable-executable":{"source":"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{"source":"iana"},"application/vnd.miele+json":{"source":"iana","compressible":true},"application/vnd.mif":{"source":"iana","extensions":["mif"]},"application/vnd.minisoft-hp3000-save":{"source":"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{"source":"iana"},"application/vnd.mobius.daf":{"source":"iana","extensions":["daf"]},"application/vnd.mobius.dis":{"source":"iana","extensions":["dis"]},"application/vnd.mobius.mbk":{"source":"iana","extensions":["mbk"]},"application/vnd.mobius.mqy":{"source":"iana","extensions":["mqy"]},"application/vnd.mobius.msl":{"source":"iana","extensions":["msl"]},"application/vnd.mobius.plc":{"source":"iana","extensions":["plc"]},"application/vnd.mobius.txf":{"source":"iana","extensions":["txf"]},"application/vnd.mophun.application":{"source":"iana","extensions":["mpn"]},"application/vnd.mophun.certificate":{"source":"iana","extensions":["mpc"]},"application/vnd.motorola.flexsuite":{"source":"iana"},"application/vnd.motorola.flexsuite.adsi":{"source":"iana"},"application/vnd.motorola.flexsuite.fis":{"source":"iana"},"application/vnd.motorola.flexsuite.gotap":{"source":"iana"},"application/vnd.motorola.flexsuite.kmr":{"source":"iana"},"application/vnd.motorola.flexsuite.ttc":{"source":"iana"},"application/vnd.motorola.flexsuite.wem":{"source":"iana"},"application/vnd.motorola.iprm":{"source":"iana"},"application/vnd.mozilla.xul+xml":{"source":"iana","compressible":true,"extensions":["xul"]},"application/vnd.ms-3mfdocument":{"source":"iana"},"application/vnd.ms-artgalry":{"source":"iana","extensions":["cil"]},"application/vnd.ms-asf":{"source":"iana"},"application/vnd.ms-cab-compressed":{"source":"iana","extensions":["cab"]},"application/vnd.ms-color.iccprofile":{"source":"apache"},"application/vnd.ms-excel":{"source":"iana","compressible":false,"extensions":["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{"source":"iana","extensions":["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{"source":"iana","extensions":["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{"source":"iana","extensions":["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{"source":"iana","extensions":["xltm"]},"application/vnd.ms-fontobject":{"source":"iana","compressible":true,"extensions":["eot"]},"application/vnd.ms-htmlhelp":{"source":"iana","extensions":["chm"]},"application/vnd.ms-ims":{"source":"iana","extensions":["ims"]},"application/vnd.ms-lrm":{"source":"iana","extensions":["lrm"]},"application/vnd.ms-office.activex+xml":{"source":"iana","compressible":true},"application/vnd.ms-officetheme":{"source":"iana","extensions":["thmx"]},"application/vnd.ms-opentype":{"source":"apache","compressible":true},"application/vnd.ms-outlook":{"compressible":false,"extensions":["msg"]},"application/vnd.ms-package.obfuscated-opentype":{"source":"apache"},"application/vnd.ms-pki.seccat":{"source":"apache","extensions":["cat"]},"application/vnd.ms-pki.stl":{"source":"apache","extensions":["stl"]},"application/vnd.ms-playready.initiator+xml":{"source":"iana","compressible":true},"application/vnd.ms-powerpoint":{"source":"iana","compressible":false,"extensions":["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{"source":"iana","extensions":["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{"source":"iana","extensions":["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{"source":"iana","extensions":["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{"source":"iana","extensions":["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{"source":"iana","extensions":["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{"source":"iana","compressible":true},"application/vnd.ms-printing.printticket+xml":{"source":"apache","compressible":true},"application/vnd.ms-printschematicket+xml":{"source":"iana","compressible":true},"application/vnd.ms-project":{"source":"iana","extensions":["mpp","mpt"]},"application/vnd.ms-tnef":{"source":"iana"},"application/vnd.ms-windows.devicepairing":{"source":"iana"},"application/vnd.ms-windows.nwprinting.oob":{"source":"iana"},"application/vnd.ms-windows.printerpairing":{"source":"iana"},"application/vnd.ms-windows.wsd.oob":{"source":"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.lic-resp":{"source":"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.meter-resp":{"source":"iana"},"application/vnd.ms-word.document.macroenabled.12":{"source":"iana","extensions":["docm"]},"application/vnd.ms-word.template.macroenabled.12":{"source":"iana","extensions":["dotm"]},"application/vnd.ms-works":{"source":"iana","extensions":["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{"source":"iana","extensions":["wpl"]},"application/vnd.ms-xpsdocument":{"source":"iana","compressible":false,"extensions":["xps"]},"application/vnd.msa-disk-image":{"source":"iana"},"application/vnd.mseq":{"source":"iana","extensions":["mseq"]},"application/vnd.msign":{"source":"iana"},"application/vnd.multiad.creator":{"source":"iana"},"application/vnd.multiad.creator.cif":{"source":"iana"},"application/vnd.music-niff":{"source":"iana"},"application/vnd.musician":{"source":"iana","extensions":["mus"]},"application/vnd.muvee.style":{"source":"iana","extensions":["msty"]},"application/vnd.mynfc":{"source":"iana","extensions":["taglet"]},"application/vnd.nacamar.ybrid+json":{"source":"iana","compressible":true},"application/vnd.ncd.control":{"source":"iana"},"application/vnd.ncd.reference":{"source":"iana"},"application/vnd.nearst.inv+json":{"source":"iana","compressible":true},"application/vnd.nebumind.line":{"source":"iana"},"application/vnd.nervana":{"source":"iana"},"application/vnd.netfpx":{"source":"iana"},"application/vnd.neurolanguage.nlu":{"source":"iana","extensions":["nlu"]},"application/vnd.nimn":{"source":"iana"},"application/vnd.nintendo.nitro.rom":{"source":"iana"},"application/vnd.nintendo.snes.rom":{"source":"iana"},"application/vnd.nitf":{"source":"iana","extensions":["ntf","nitf"]},"application/vnd.noblenet-directory":{"source":"iana","extensions":["nnd"]},"application/vnd.noblenet-sealer":{"source":"iana","extensions":["nns"]},"application/vnd.noblenet-web":{"source":"iana","extensions":["nnw"]},"application/vnd.nokia.catalogs":{"source":"iana"},"application/vnd.nokia.conml+wbxml":{"source":"iana"},"application/vnd.nokia.conml+xml":{"source":"iana","compressible":true},"application/vnd.nokia.iptv.config+xml":{"source":"iana","compressible":true},"application/vnd.nokia.isds-radio-presets":{"source":"iana"},"application/vnd.nokia.landmark+wbxml":{"source":"iana"},"application/vnd.nokia.landmark+xml":{"source":"iana","compressible":true},"application/vnd.nokia.landmarkcollection+xml":{"source":"iana","compressible":true},"application/vnd.nokia.n-gage.ac+xml":{"source":"iana","compressible":true,"extensions":["ac"]},"application/vnd.nokia.n-gage.data":{"source":"iana","extensions":["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{"source":"iana","extensions":["n-gage"]},"application/vnd.nokia.ncd":{"source":"iana"},"application/vnd.nokia.pcd+wbxml":{"source":"iana"},"application/vnd.nokia.pcd+xml":{"source":"iana","compressible":true},"application/vnd.nokia.radio-preset":{"source":"iana","extensions":["rpst"]},"application/vnd.nokia.radio-presets":{"source":"iana","extensions":["rpss"]},"application/vnd.novadigm.edm":{"source":"iana","extensions":["edm"]},"application/vnd.novadigm.edx":{"source":"iana","extensions":["edx"]},"application/vnd.novadigm.ext":{"source":"iana","extensions":["ext"]},"application/vnd.ntt-local.content-share":{"source":"iana"},"application/vnd.ntt-local.file-transfer":{"source":"iana"},"application/vnd.ntt-local.ogw_remote-access":{"source":"iana"},"application/vnd.ntt-local.sip-ta_remote":{"source":"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{"source":"iana"},"application/vnd.oasis.opendocument.chart":{"source":"iana","extensions":["odc"]},"application/vnd.oasis.opendocument.chart-template":{"source":"iana","extensions":["otc"]},"application/vnd.oasis.opendocument.database":{"source":"iana","extensions":["odb"]},"application/vnd.oasis.opendocument.formula":{"source":"iana","extensions":["odf"]},"application/vnd.oasis.opendocument.formula-template":{"source":"iana","extensions":["odft"]},"application/vnd.oasis.opendocument.graphics":{"source":"iana","compressible":false,"extensions":["odg"]},"application/vnd.oasis.opendocument.graphics-template":{"source":"iana","extensions":["otg"]},"application/vnd.oasis.opendocument.image":{"source":"iana","extensions":["odi"]},"application/vnd.oasis.opendocument.image-template":{"source":"iana","extensions":["oti"]},"application/vnd.oasis.opendocument.presentation":{"source":"iana","compressible":false,"extensions":["odp"]},"application/vnd.oasis.opendocument.presentation-template":{"source":"iana","extensions":["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{"source":"iana","compressible":false,"extensions":["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{"source":"iana","extensions":["ots"]},"application/vnd.oasis.opendocument.text":{"source":"iana","compressible":false,"extensions":["odt"]},"application/vnd.oasis.opendocument.text-master":{"source":"iana","extensions":["odm"]},"application/vnd.oasis.opendocument.text-template":{"source":"iana","extensions":["ott"]},"application/vnd.oasis.opendocument.text-web":{"source":"iana","extensions":["oth"]},"application/vnd.obn":{"source":"iana"},"application/vnd.ocf+cbor":{"source":"iana"},"application/vnd.oci.image.manifest.v1+json":{"source":"iana","compressible":true},"application/vnd.oftn.l10n+json":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessdownload+xml":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessstreaming+xml":{"source":"iana","compressible":true},"application/vnd.oipf.cspg-hexbinary":{"source":"iana"},"application/vnd.oipf.dae.svg+xml":{"source":"iana","compressible":true},"application/vnd.oipf.dae.xhtml+xml":{"source":"iana","compressible":true},"application/vnd.oipf.mippvcontrolmessage+xml":{"source":"iana","compressible":true},"application/vnd.oipf.pae.gem":{"source":"iana"},"application/vnd.oipf.spdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.oipf.spdlist+xml":{"source":"iana","compressible":true},"application/vnd.oipf.ueprofile+xml":{"source":"iana","compressible":true},"application/vnd.oipf.userprofile+xml":{"source":"iana","compressible":true},"application/vnd.olpc-sugar":{"source":"iana","extensions":["xo"]},"application/vnd.oma-scws-config":{"source":"iana"},"application/vnd.oma-scws-http-request":{"source":"iana"},"application/vnd.oma-scws-http-response":{"source":"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.drm-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.imd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.ltkm":{"source":"iana"},"application/vnd.oma.bcast.notification+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.provisioningtrigger":{"source":"iana"},"application/vnd.oma.bcast.sgboot":{"source":"iana"},"application/vnd.oma.bcast.sgdd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sgdu":{"source":"iana"},"application/vnd.oma.bcast.simple-symbol-container":{"source":"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sprov+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.stkm":{"source":"iana"},"application/vnd.oma.cab-address-book+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-feature-handler+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-pcc+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-subs-invite+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-user-prefs+xml":{"source":"iana","compressible":true},"application/vnd.oma.dcd":{"source":"iana"},"application/vnd.oma.dcdc":{"source":"iana"},"application/vnd.oma.dd2+xml":{"source":"iana","compressible":true,"extensions":["dd2"]},"application/vnd.oma.drm.risd+xml":{"source":"iana","compressible":true},"application/vnd.oma.group-usage-list+xml":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+cbor":{"source":"iana"},"application/vnd.oma.lwm2m+json":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+tlv":{"source":"iana"},"application/vnd.oma.pal+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.detailed-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.final-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.groups+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.invocation-descriptor+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.optimized-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.push":{"source":"iana"},"application/vnd.oma.scidm.messages+xml":{"source":"iana","compressible":true},"application/vnd.oma.xcap-directory+xml":{"source":"iana","compressible":true},"application/vnd.omads-email+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-file+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-folder+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omaloc-supl-init":{"source":"iana"},"application/vnd.onepager":{"source":"iana"},"application/vnd.onepagertamp":{"source":"iana"},"application/vnd.onepagertamx":{"source":"iana"},"application/vnd.onepagertat":{"source":"iana"},"application/vnd.onepagertatp":{"source":"iana"},"application/vnd.onepagertatx":{"source":"iana"},"application/vnd.openblox.game+xml":{"source":"iana","compressible":true,"extensions":["obgx"]},"application/vnd.openblox.game-binary":{"source":"iana"},"application/vnd.openeye.oeb":{"source":"iana"},"application/vnd.openofficeorg.extension":{"source":"apache","extensions":["oxt"]},"application/vnd.openstreetmap.data+xml":{"source":"iana","compressible":true,"extensions":["osm"]},"application/vnd.opentimestamps.ots":{"source":"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawing+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{"source":"iana","compressible":false,"extensions":["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slide":{"source":"iana","extensions":["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{"source":"iana","extensions":["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.template":{"source":"iana","extensions":["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"source":"iana","compressible":false,"extensions":["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{"source":"iana","extensions":["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.theme+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.vmldrawing":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{"source":"iana","compressible":false,"extensions":["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{"source":"iana","extensions":["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.core-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.relationships+xml":{"source":"iana","compressible":true},"application/vnd.oracle.resource+json":{"source":"iana","compressible":true},"application/vnd.orange.indata":{"source":"iana"},"application/vnd.osa.netdeploy":{"source":"iana"},"application/vnd.osgeo.mapguide.package":{"source":"iana","extensions":["mgp"]},"application/vnd.osgi.bundle":{"source":"iana"},"application/vnd.osgi.dp":{"source":"iana","extensions":["dp"]},"application/vnd.osgi.subsystem":{"source":"iana","extensions":["esa"]},"application/vnd.otps.ct-kip+xml":{"source":"iana","compressible":true},"application/vnd.oxli.countgraph":{"source":"iana"},"application/vnd.pagerduty+json":{"source":"iana","compressible":true},"application/vnd.palm":{"source":"iana","extensions":["pdb","pqa","oprc"]},"application/vnd.panoply":{"source":"iana"},"application/vnd.paos.xml":{"source":"iana"},"application/vnd.patentdive":{"source":"iana"},"application/vnd.patientecommsdoc":{"source":"iana"},"application/vnd.pawaafile":{"source":"iana","extensions":["paw"]},"application/vnd.pcos":{"source":"iana"},"application/vnd.pg.format":{"source":"iana","extensions":["str"]},"application/vnd.pg.osasli":{"source":"iana","extensions":["ei6"]},"application/vnd.piaccess.application-licence":{"source":"iana"},"application/vnd.picsel":{"source":"iana","extensions":["efif"]},"application/vnd.pmi.widget":{"source":"iana","extensions":["wg"]},"application/vnd.poc.group-advertisement+xml":{"source":"iana","compressible":true},"application/vnd.pocketlearn":{"source":"iana","extensions":["plf"]},"application/vnd.powerbuilder6":{"source":"iana","extensions":["pbd"]},"application/vnd.powerbuilder6-s":{"source":"iana"},"application/vnd.powerbuilder7":{"source":"iana"},"application/vnd.powerbuilder7-s":{"source":"iana"},"application/vnd.powerbuilder75":{"source":"iana"},"application/vnd.powerbuilder75-s":{"source":"iana"},"application/vnd.preminet":{"source":"iana"},"application/vnd.previewsystems.box":{"source":"iana","extensions":["box"]},"application/vnd.proteus.magazine":{"source":"iana","extensions":["mgz"]},"application/vnd.psfs":{"source":"iana"},"application/vnd.publishare-delta-tree":{"source":"iana","extensions":["qps"]},"application/vnd.pvi.ptid1":{"source":"iana","extensions":["ptid"]},"application/vnd.pwg-multiplexed":{"source":"iana"},"application/vnd.pwg-xhtml-print+xml":{"source":"iana","compressible":true},"application/vnd.qualcomm.brew-app-res":{"source":"iana"},"application/vnd.quarantainenet":{"source":"iana"},"application/vnd.quark.quarkxpress":{"source":"iana","extensions":["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{"source":"iana"},"application/vnd.radisys.moml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conn+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-stream+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-base+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-detect+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-group+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-speech+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-transform+xml":{"source":"iana","compressible":true},"application/vnd.rainstor.data":{"source":"iana"},"application/vnd.rapid":{"source":"iana"},"application/vnd.rar":{"source":"iana","extensions":["rar"]},"application/vnd.realvnc.bed":{"source":"iana","extensions":["bed"]},"application/vnd.recordare.musicxml":{"source":"iana","extensions":["mxl"]},"application/vnd.recordare.musicxml+xml":{"source":"iana","compressible":true,"extensions":["musicxml"]},"application/vnd.renlearn.rlprint":{"source":"iana"},"application/vnd.resilient.logic":{"source":"iana"},"application/vnd.restful+json":{"source":"iana","compressible":true},"application/vnd.rig.cryptonote":{"source":"iana","extensions":["cryptonote"]},"application/vnd.rim.cod":{"source":"apache","extensions":["cod"]},"application/vnd.rn-realmedia":{"source":"apache","extensions":["rm"]},"application/vnd.rn-realmedia-vbr":{"source":"apache","extensions":["rmvb"]},"application/vnd.route66.link66+xml":{"source":"iana","compressible":true,"extensions":["link66"]},"application/vnd.rs-274x":{"source":"iana"},"application/vnd.ruckus.download":{"source":"iana"},"application/vnd.s3sms":{"source":"iana"},"application/vnd.sailingtracker.track":{"source":"iana","extensions":["st"]},"application/vnd.sar":{"source":"iana"},"application/vnd.sbm.cid":{"source":"iana"},"application/vnd.sbm.mid2":{"source":"iana"},"application/vnd.scribus":{"source":"iana"},"application/vnd.sealed.3df":{"source":"iana"},"application/vnd.sealed.csf":{"source":"iana"},"application/vnd.sealed.doc":{"source":"iana"},"application/vnd.sealed.eml":{"source":"iana"},"application/vnd.sealed.mht":{"source":"iana"},"application/vnd.sealed.net":{"source":"iana"},"application/vnd.sealed.ppt":{"source":"iana"},"application/vnd.sealed.tiff":{"source":"iana"},"application/vnd.sealed.xls":{"source":"iana"},"application/vnd.sealedmedia.softseal.html":{"source":"iana"},"application/vnd.sealedmedia.softseal.pdf":{"source":"iana"},"application/vnd.seemail":{"source":"iana","extensions":["see"]},"application/vnd.seis+json":{"source":"iana","compressible":true},"application/vnd.sema":{"source":"iana","extensions":["sema"]},"application/vnd.semd":{"source":"iana","extensions":["semd"]},"application/vnd.semf":{"source":"iana","extensions":["semf"]},"application/vnd.shade-save-file":{"source":"iana"},"application/vnd.shana.informed.formdata":{"source":"iana","extensions":["ifm"]},"application/vnd.shana.informed.formtemplate":{"source":"iana","extensions":["itp"]},"application/vnd.shana.informed.interchange":{"source":"iana","extensions":["iif"]},"application/vnd.shana.informed.package":{"source":"iana","extensions":["ipk"]},"application/vnd.shootproof+json":{"source":"iana","compressible":true},"application/vnd.shopkick+json":{"source":"iana","compressible":true},"application/vnd.shp":{"source":"iana"},"application/vnd.shx":{"source":"iana"},"application/vnd.sigrok.session":{"source":"iana"},"application/vnd.simtech-mindmapper":{"source":"iana","extensions":["twd","twds"]},"application/vnd.siren+json":{"source":"iana","compressible":true},"application/vnd.smaf":{"source":"iana","extensions":["mmf"]},"application/vnd.smart.notebook":{"source":"iana"},"application/vnd.smart.teacher":{"source":"iana","extensions":["teacher"]},"application/vnd.snesdev-page-table":{"source":"iana"},"application/vnd.software602.filler.form+xml":{"source":"iana","compressible":true,"extensions":["fo"]},"application/vnd.software602.filler.form-xml-zip":{"source":"iana"},"application/vnd.solent.sdkm+xml":{"source":"iana","compressible":true,"extensions":["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{"source":"iana","extensions":["dxp"]},"application/vnd.spotfire.sfs":{"source":"iana","extensions":["sfs"]},"application/vnd.sqlite3":{"source":"iana"},"application/vnd.sss-cod":{"source":"iana"},"application/vnd.sss-dtf":{"source":"iana"},"application/vnd.sss-ntf":{"source":"iana"},"application/vnd.stardivision.calc":{"source":"apache","extensions":["sdc"]},"application/vnd.stardivision.draw":{"source":"apache","extensions":["sda"]},"application/vnd.stardivision.impress":{"source":"apache","extensions":["sdd"]},"application/vnd.stardivision.math":{"source":"apache","extensions":["smf"]},"application/vnd.stardivision.writer":{"source":"apache","extensions":["sdw","vor"]},"application/vnd.stardivision.writer-global":{"source":"apache","extensions":["sgl"]},"application/vnd.stepmania.package":{"source":"iana","extensions":["smzip"]},"application/vnd.stepmania.stepchart":{"source":"iana","extensions":["sm"]},"application/vnd.street-stream":{"source":"iana"},"application/vnd.sun.wadl+xml":{"source":"iana","compressible":true,"extensions":["wadl"]},"application/vnd.sun.xml.calc":{"source":"apache","extensions":["sxc"]},"application/vnd.sun.xml.calc.template":{"source":"apache","extensions":["stc"]},"application/vnd.sun.xml.draw":{"source":"apache","extensions":["sxd"]},"application/vnd.sun.xml.draw.template":{"source":"apache","extensions":["std"]},"application/vnd.sun.xml.impress":{"source":"apache","extensions":["sxi"]},"application/vnd.sun.xml.impress.template":{"source":"apache","extensions":["sti"]},"application/vnd.sun.xml.math":{"source":"apache","extensions":["sxm"]},"application/vnd.sun.xml.writer":{"source":"apache","extensions":["sxw"]},"application/vnd.sun.xml.writer.global":{"source":"apache","extensions":["sxg"]},"application/vnd.sun.xml.writer.template":{"source":"apache","extensions":["stw"]},"application/vnd.sus-calendar":{"source":"iana","extensions":["sus","susp"]},"application/vnd.svd":{"source":"iana","extensions":["svd"]},"application/vnd.swiftview-ics":{"source":"iana"},"application/vnd.sycle+xml":{"source":"iana","compressible":true},"application/vnd.syft+json":{"source":"iana","compressible":true},"application/vnd.symbian.install":{"source":"apache","extensions":["sis","sisx"]},"application/vnd.syncml+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xsm"]},"application/vnd.syncml.dm+wbxml":{"source":"iana","charset":"UTF-8","extensions":["bdm"]},"application/vnd.syncml.dm+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xdm"]},"application/vnd.syncml.dm.notification":{"source":"iana"},"application/vnd.syncml.dmddf+wbxml":{"source":"iana"},"application/vnd.syncml.dmddf+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{"source":"iana"},"application/vnd.syncml.dmtnds+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.syncml.ds.notification":{"source":"iana"},"application/vnd.tableschema+json":{"source":"iana","compressible":true},"application/vnd.tao.intent-module-archive":{"source":"iana","extensions":["tao"]},"application/vnd.tcpdump.pcap":{"source":"iana","extensions":["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{"source":"iana","compressible":true},"application/vnd.tmd.mediaflex.api+xml":{"source":"iana","compressible":true},"application/vnd.tml":{"source":"iana"},"application/vnd.tmobile-livetv":{"source":"iana","extensions":["tmo"]},"application/vnd.tri.onesource":{"source":"iana"},"application/vnd.trid.tpt":{"source":"iana","extensions":["tpt"]},"application/vnd.triscape.mxs":{"source":"iana","extensions":["mxs"]},"application/vnd.trueapp":{"source":"iana","extensions":["tra"]},"application/vnd.truedoc":{"source":"iana"},"application/vnd.ubisoft.webplayer":{"source":"iana"},"application/vnd.ufdl":{"source":"iana","extensions":["ufd","ufdl"]},"application/vnd.uiq.theme":{"source":"iana","extensions":["utz"]},"application/vnd.umajin":{"source":"iana","extensions":["umj"]},"application/vnd.unity":{"source":"iana","extensions":["unityweb"]},"application/vnd.uoml+xml":{"source":"iana","compressible":true,"extensions":["uoml"]},"application/vnd.uplanet.alert":{"source":"iana"},"application/vnd.uplanet.alert-wbxml":{"source":"iana"},"application/vnd.uplanet.bearer-choice":{"source":"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{"source":"iana"},"application/vnd.uplanet.cacheop":{"source":"iana"},"application/vnd.uplanet.cacheop-wbxml":{"source":"iana"},"application/vnd.uplanet.channel":{"source":"iana"},"application/vnd.uplanet.channel-wbxml":{"source":"iana"},"application/vnd.uplanet.list":{"source":"iana"},"application/vnd.uplanet.list-wbxml":{"source":"iana"},"application/vnd.uplanet.listcmd":{"source":"iana"},"application/vnd.uplanet.listcmd-wbxml":{"source":"iana"},"application/vnd.uplanet.signal":{"source":"iana"},"application/vnd.uri-map":{"source":"iana"},"application/vnd.valve.source.material":{"source":"iana"},"application/vnd.vcx":{"source":"iana","extensions":["vcx"]},"application/vnd.vd-study":{"source":"iana"},"application/vnd.vectorworks":{"source":"iana"},"application/vnd.vel+json":{"source":"iana","compressible":true},"application/vnd.verimatrix.vcas":{"source":"iana"},"application/vnd.veritone.aion+json":{"source":"iana","compressible":true},"application/vnd.veryant.thin":{"source":"iana"},"application/vnd.ves.encrypted":{"source":"iana"},"application/vnd.vidsoft.vidconference":{"source":"iana"},"application/vnd.visio":{"source":"iana","extensions":["vsd","vst","vss","vsw"]},"application/vnd.visionary":{"source":"iana","extensions":["vis"]},"application/vnd.vividence.scriptfile":{"source":"iana"},"application/vnd.vsf":{"source":"iana","extensions":["vsf"]},"application/vnd.wap.sic":{"source":"iana"},"application/vnd.wap.slc":{"source":"iana"},"application/vnd.wap.wbxml":{"source":"iana","charset":"UTF-8","extensions":["wbxml"]},"application/vnd.wap.wmlc":{"source":"iana","extensions":["wmlc"]},"application/vnd.wap.wmlscriptc":{"source":"iana","extensions":["wmlsc"]},"application/vnd.webturbo":{"source":"iana","extensions":["wtb"]},"application/vnd.wfa.dpp":{"source":"iana"},"application/vnd.wfa.p2p":{"source":"iana"},"application/vnd.wfa.wsc":{"source":"iana"},"application/vnd.windows.devicepairing":{"source":"iana"},"application/vnd.wmc":{"source":"iana"},"application/vnd.wmf.bootstrap":{"source":"iana"},"application/vnd.wolfram.mathematica":{"source":"iana"},"application/vnd.wolfram.mathematica.package":{"source":"iana"},"application/vnd.wolfram.player":{"source":"iana","extensions":["nbp"]},"application/vnd.wordperfect":{"source":"iana","extensions":["wpd"]},"application/vnd.wqd":{"source":"iana","extensions":["wqd"]},"application/vnd.wrq-hp3000-labelled":{"source":"iana"},"application/vnd.wt.stf":{"source":"iana","extensions":["stf"]},"application/vnd.wv.csp+wbxml":{"source":"iana"},"application/vnd.wv.csp+xml":{"source":"iana","compressible":true},"application/vnd.wv.ssp+xml":{"source":"iana","compressible":true},"application/vnd.xacml+json":{"source":"iana","compressible":true},"application/vnd.xara":{"source":"iana","extensions":["xar"]},"application/vnd.xfdl":{"source":"iana","extensions":["xfdl"]},"application/vnd.xfdl.webform":{"source":"iana"},"application/vnd.xmi+xml":{"source":"iana","compressible":true},"application/vnd.xmpie.cpkg":{"source":"iana"},"application/vnd.xmpie.dpkg":{"source":"iana"},"application/vnd.xmpie.plan":{"source":"iana"},"application/vnd.xmpie.ppkg":{"source":"iana"},"application/vnd.xmpie.xlim":{"source":"iana"},"application/vnd.yamaha.hv-dic":{"source":"iana","extensions":["hvd"]},"application/vnd.yamaha.hv-script":{"source":"iana","extensions":["hvs"]},"application/vnd.yamaha.hv-voice":{"source":"iana","extensions":["hvp"]},"application/vnd.yamaha.openscoreformat":{"source":"iana","extensions":["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{"source":"iana","compressible":true,"extensions":["osfpvg"]},"application/vnd.yamaha.remote-setup":{"source":"iana"},"application/vnd.yamaha.smaf-audio":{"source":"iana","extensions":["saf"]},"application/vnd.yamaha.smaf-phrase":{"source":"iana","extensions":["spf"]},"application/vnd.yamaha.through-ngn":{"source":"iana"},"application/vnd.yamaha.tunnel-udpencap":{"source":"iana"},"application/vnd.yaoweme":{"source":"iana"},"application/vnd.yellowriver-custom-menu":{"source":"iana","extensions":["cmp"]},"application/vnd.youtube.yt":{"source":"iana"},"application/vnd.zul":{"source":"iana","extensions":["zir","zirz"]},"application/vnd.zzazz.deck+xml":{"source":"iana","compressible":true,"extensions":["zaz"]},"application/voicexml+xml":{"source":"iana","compressible":true,"extensions":["vxml"]},"application/voucher-cms+json":{"source":"iana","compressible":true},"application/vq-rtcpxr":{"source":"iana"},"application/wasm":{"source":"iana","compressible":true,"extensions":["wasm"]},"application/watcherinfo+xml":{"source":"iana","compressible":true,"extensions":["wif"]},"application/webpush-options+json":{"source":"iana","compressible":true},"application/whoispp-query":{"source":"iana"},"application/whoispp-response":{"source":"iana"},"application/widget":{"source":"iana","extensions":["wgt"]},"application/winhlp":{"source":"apache","extensions":["hlp"]},"application/wita":{"source":"iana"},"application/wordperfect5.1":{"source":"iana"},"application/wsdl+xml":{"source":"iana","compressible":true,"extensions":["wsdl"]},"application/wspolicy+xml":{"source":"iana","compressible":true,"extensions":["wspolicy"]},"application/x-7z-compressed":{"source":"apache","compressible":false,"extensions":["7z"]},"application/x-abiword":{"source":"apache","extensions":["abw"]},"application/x-ace-compressed":{"source":"apache","extensions":["ace"]},"application/x-amf":{"source":"apache"},"application/x-apple-diskimage":{"source":"apache","extensions":["dmg"]},"application/x-arj":{"compressible":false,"extensions":["arj"]},"application/x-authorware-bin":{"source":"apache","extensions":["aab","x32","u32","vox"]},"application/x-authorware-map":{"source":"apache","extensions":["aam"]},"application/x-authorware-seg":{"source":"apache","extensions":["aas"]},"application/x-bcpio":{"source":"apache","extensions":["bcpio"]},"application/x-bdoc":{"compressible":false,"extensions":["bdoc"]},"application/x-bittorrent":{"source":"apache","extensions":["torrent"]},"application/x-blorb":{"source":"apache","extensions":["blb","blorb"]},"application/x-bzip":{"source":"apache","compressible":false,"extensions":["bz"]},"application/x-bzip2":{"source":"apache","compressible":false,"extensions":["bz2","boz"]},"application/x-cbr":{"source":"apache","extensions":["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{"source":"apache","extensions":["vcd"]},"application/x-cfs-compressed":{"source":"apache","extensions":["cfs"]},"application/x-chat":{"source":"apache","extensions":["chat"]},"application/x-chess-pgn":{"source":"apache","extensions":["pgn"]},"application/x-chrome-extension":{"extensions":["crx"]},"application/x-cocoa":{"source":"nginx","extensions":["cco"]},"application/x-compress":{"source":"apache"},"application/x-conference":{"source":"apache","extensions":["nsc"]},"application/x-cpio":{"source":"apache","extensions":["cpio"]},"application/x-csh":{"source":"apache","extensions":["csh"]},"application/x-deb":{"compressible":false},"application/x-debian-package":{"source":"apache","extensions":["deb","udeb"]},"application/x-dgc-compressed":{"source":"apache","extensions":["dgc"]},"application/x-director":{"source":"apache","extensions":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{"source":"apache","extensions":["wad"]},"application/x-dtbncx+xml":{"source":"apache","compressible":true,"extensions":["ncx"]},"application/x-dtbook+xml":{"source":"apache","compressible":true,"extensions":["dtb"]},"application/x-dtbresource+xml":{"source":"apache","compressible":true,"extensions":["res"]},"application/x-dvi":{"source":"apache","compressible":false,"extensions":["dvi"]},"application/x-envoy":{"source":"apache","extensions":["evy"]},"application/x-eva":{"source":"apache","extensions":["eva"]},"application/x-font-bdf":{"source":"apache","extensions":["bdf"]},"application/x-font-dos":{"source":"apache"},"application/x-font-framemaker":{"source":"apache"},"application/x-font-ghostscript":{"source":"apache","extensions":["gsf"]},"application/x-font-libgrx":{"source":"apache"},"application/x-font-linux-psf":{"source":"apache","extensions":["psf"]},"application/x-font-pcf":{"source":"apache","extensions":["pcf"]},"application/x-font-snf":{"source":"apache","extensions":["snf"]},"application/x-font-speedo":{"source":"apache"},"application/x-font-sunos-news":{"source":"apache"},"application/x-font-type1":{"source":"apache","extensions":["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{"source":"apache"},"application/x-freearc":{"source":"apache","extensions":["arc"]},"application/x-futuresplash":{"source":"apache","extensions":["spl"]},"application/x-gca-compressed":{"source":"apache","extensions":["gca"]},"application/x-glulx":{"source":"apache","extensions":["ulx"]},"application/x-gnumeric":{"source":"apache","extensions":["gnumeric"]},"application/x-gramps-xml":{"source":"apache","extensions":["gramps"]},"application/x-gtar":{"source":"apache","extensions":["gtar"]},"application/x-gzip":{"source":"apache"},"application/x-hdf":{"source":"apache","extensions":["hdf"]},"application/x-httpd-php":{"compressible":true,"extensions":["php"]},"application/x-install-instructions":{"source":"apache","extensions":["install"]},"application/x-iso9660-image":{"source":"apache","extensions":["iso"]},"application/x-iwork-keynote-sffkey":{"extensions":["key"]},"application/x-iwork-numbers-sffnumbers":{"extensions":["numbers"]},"application/x-iwork-pages-sffpages":{"extensions":["pages"]},"application/x-java-archive-diff":{"source":"nginx","extensions":["jardiff"]},"application/x-java-jnlp-file":{"source":"apache","compressible":false,"extensions":["jnlp"]},"application/x-javascript":{"compressible":true},"application/x-keepass2":{"extensions":["kdbx"]},"application/x-latex":{"source":"apache","compressible":false,"extensions":["latex"]},"application/x-lua-bytecode":{"extensions":["luac"]},"application/x-lzh-compressed":{"source":"apache","extensions":["lzh","lha"]},"application/x-makeself":{"source":"nginx","extensions":["run"]},"application/x-mie":{"source":"apache","extensions":["mie"]},"application/x-mobipocket-ebook":{"source":"apache","extensions":["prc","mobi"]},"application/x-mpegurl":{"compressible":false},"application/x-ms-application":{"source":"apache","extensions":["application"]},"application/x-ms-shortcut":{"source":"apache","extensions":["lnk"]},"application/x-ms-wmd":{"source":"apache","extensions":["wmd"]},"application/x-ms-wmz":{"source":"apache","extensions":["wmz"]},"application/x-ms-xbap":{"source":"apache","extensions":["xbap"]},"application/x-msaccess":{"source":"apache","extensions":["mdb"]},"application/x-msbinder":{"source":"apache","extensions":["obd"]},"application/x-mscardfile":{"source":"apache","extensions":["crd"]},"application/x-msclip":{"source":"apache","extensions":["clp"]},"application/x-msdos-program":{"extensions":["exe"]},"application/x-msdownload":{"source":"apache","extensions":["exe","dll","com","bat","msi"]},"application/x-msmediaview":{"source":"apache","extensions":["mvb","m13","m14"]},"application/x-msmetafile":{"source":"apache","extensions":["wmf","wmz","emf","emz"]},"application/x-msmoney":{"source":"apache","extensions":["mny"]},"application/x-mspublisher":{"source":"apache","extensions":["pub"]},"application/x-msschedule":{"source":"apache","extensions":["scd"]},"application/x-msterminal":{"source":"apache","extensions":["trm"]},"application/x-mswrite":{"source":"apache","extensions":["wri"]},"application/x-netcdf":{"source":"apache","extensions":["nc","cdf"]},"application/x-ns-proxy-autoconfig":{"compressible":true,"extensions":["pac"]},"application/x-nzb":{"source":"apache","extensions":["nzb"]},"application/x-perl":{"source":"nginx","extensions":["pl","pm"]},"application/x-pilot":{"source":"nginx","extensions":["prc","pdb"]},"application/x-pkcs12":{"source":"apache","compressible":false,"extensions":["p12","pfx"]},"application/x-pkcs7-certificates":{"source":"apache","extensions":["p7b","spc"]},"application/x-pkcs7-certreqresp":{"source":"apache","extensions":["p7r"]},"application/x-pki-message":{"source":"iana"},"application/x-rar-compressed":{"source":"apache","compressible":false,"extensions":["rar"]},"application/x-redhat-package-manager":{"source":"nginx","extensions":["rpm"]},"application/x-research-info-systems":{"source":"apache","extensions":["ris"]},"application/x-sea":{"source":"nginx","extensions":["sea"]},"application/x-sh":{"source":"apache","compressible":true,"extensions":["sh"]},"application/x-shar":{"source":"apache","extensions":["shar"]},"application/x-shockwave-flash":{"source":"apache","compressible":false,"extensions":["swf"]},"application/x-silverlight-app":{"source":"apache","extensions":["xap"]},"application/x-sql":{"source":"apache","extensions":["sql"]},"application/x-stuffit":{"source":"apache","compressible":false,"extensions":["sit"]},"application/x-stuffitx":{"source":"apache","extensions":["sitx"]},"application/x-subrip":{"source":"apache","extensions":["srt"]},"application/x-sv4cpio":{"source":"apache","extensions":["sv4cpio"]},"application/x-sv4crc":{"source":"apache","extensions":["sv4crc"]},"application/x-t3vm-image":{"source":"apache","extensions":["t3"]},"application/x-tads":{"source":"apache","extensions":["gam"]},"application/x-tar":{"source":"apache","compressible":true,"extensions":["tar"]},"application/x-tcl":{"source":"apache","extensions":["tcl","tk"]},"application/x-tex":{"source":"apache","extensions":["tex"]},"application/x-tex-tfm":{"source":"apache","extensions":["tfm"]},"application/x-texinfo":{"source":"apache","extensions":["texinfo","texi"]},"application/x-tgif":{"source":"apache","extensions":["obj"]},"application/x-ustar":{"source":"apache","extensions":["ustar"]},"application/x-virtualbox-hdd":{"compressible":true,"extensions":["hdd"]},"application/x-virtualbox-ova":{"compressible":true,"extensions":["ova"]},"application/x-virtualbox-ovf":{"compressible":true,"extensions":["ovf"]},"application/x-virtualbox-vbox":{"compressible":true,"extensions":["vbox"]},"application/x-virtualbox-vbox-extpack":{"compressible":false,"extensions":["vbox-extpack"]},"application/x-virtualbox-vdi":{"compressible":true,"extensions":["vdi"]},"application/x-virtualbox-vhd":{"compressible":true,"extensions":["vhd"]},"application/x-virtualbox-vmdk":{"compressible":true,"extensions":["vmdk"]},"application/x-wais-source":{"source":"apache","extensions":["src"]},"application/x-web-app-manifest+json":{"compressible":true,"extensions":["webapp"]},"application/x-www-form-urlencoded":{"source":"iana","compressible":true},"application/x-x509-ca-cert":{"source":"iana","extensions":["der","crt","pem"]},"application/x-x509-ca-ra-cert":{"source":"iana"},"application/x-x509-next-ca-cert":{"source":"iana"},"application/x-xfig":{"source":"apache","extensions":["fig"]},"application/x-xliff+xml":{"source":"apache","compressible":true,"extensions":["xlf"]},"application/x-xpinstall":{"source":"apache","compressible":false,"extensions":["xpi"]},"application/x-xz":{"source":"apache","extensions":["xz"]},"application/x-zmachine":{"source":"apache","extensions":["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{"source":"iana"},"application/xacml+xml":{"source":"iana","compressible":true},"application/xaml+xml":{"source":"apache","compressible":true,"extensions":["xaml"]},"application/xcap-att+xml":{"source":"iana","compressible":true,"extensions":["xav"]},"application/xcap-caps+xml":{"source":"iana","compressible":true,"extensions":["xca"]},"application/xcap-diff+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/xcap-el+xml":{"source":"iana","compressible":true,"extensions":["xel"]},"application/xcap-error+xml":{"source":"iana","compressible":true},"application/xcap-ns+xml":{"source":"iana","compressible":true,"extensions":["xns"]},"application/xcon-conference-info+xml":{"source":"iana","compressible":true},"application/xcon-conference-info-diff+xml":{"source":"iana","compressible":true},"application/xenc+xml":{"source":"iana","compressible":true,"extensions":["xenc"]},"application/xhtml+xml":{"source":"iana","compressible":true,"extensions":["xhtml","xht"]},"application/xhtml-voice+xml":{"source":"apache","compressible":true},"application/xliff+xml":{"source":"iana","compressible":true,"extensions":["xlf"]},"application/xml":{"source":"iana","compressible":true,"extensions":["xml","xsl","xsd","rng"]},"application/xml-dtd":{"source":"iana","compressible":true,"extensions":["dtd"]},"application/xml-external-parsed-entity":{"source":"iana"},"application/xml-patch+xml":{"source":"iana","compressible":true},"application/xmpp+xml":{"source":"iana","compressible":true},"application/xop+xml":{"source":"iana","compressible":true,"extensions":["xop"]},"application/xproc+xml":{"source":"apache","compressible":true,"extensions":["xpl"]},"application/xslt+xml":{"source":"iana","compressible":true,"extensions":["xsl","xslt"]},"application/xspf+xml":{"source":"apache","compressible":true,"extensions":["xspf"]},"application/xv+xml":{"source":"iana","compressible":true,"extensions":["mxml","xhvml","xvml","xvm"]},"application/yang":{"source":"iana","extensions":["yang"]},"application/yang-data+json":{"source":"iana","compressible":true},"application/yang-data+xml":{"source":"iana","compressible":true},"application/yang-patch+json":{"source":"iana","compressible":true},"application/yang-patch+xml":{"source":"iana","compressible":true},"application/yin+xml":{"source":"iana","compressible":true,"extensions":["yin"]},"application/zip":{"source":"iana","compressible":false,"extensions":["zip"]},"application/zlib":{"source":"iana"},"application/zstd":{"source":"iana"},"audio/1d-interleaved-parityfec":{"source":"iana"},"audio/32kadpcm":{"source":"iana"},"audio/3gpp":{"source":"iana","compressible":false,"extensions":["3gpp"]},"audio/3gpp2":{"source":"iana"},"audio/aac":{"source":"iana"},"audio/ac3":{"source":"iana"},"audio/adpcm":{"source":"apache","extensions":["adp"]},"audio/amr":{"source":"iana","extensions":["amr"]},"audio/amr-wb":{"source":"iana"},"audio/amr-wb+":{"source":"iana"},"audio/aptx":{"source":"iana"},"audio/asc":{"source":"iana"},"audio/atrac-advanced-lossless":{"source":"iana"},"audio/atrac-x":{"source":"iana"},"audio/atrac3":{"source":"iana"},"audio/basic":{"source":"iana","compressible":false,"extensions":["au","snd"]},"audio/bv16":{"source":"iana"},"audio/bv32":{"source":"iana"},"audio/clearmode":{"source":"iana"},"audio/cn":{"source":"iana"},"audio/dat12":{"source":"iana"},"audio/dls":{"source":"iana"},"audio/dsr-es201108":{"source":"iana"},"audio/dsr-es202050":{"source":"iana"},"audio/dsr-es202211":{"source":"iana"},"audio/dsr-es202212":{"source":"iana"},"audio/dv":{"source":"iana"},"audio/dvi4":{"source":"iana"},"audio/eac3":{"source":"iana"},"audio/encaprtp":{"source":"iana"},"audio/evrc":{"source":"iana"},"audio/evrc-qcp":{"source":"iana"},"audio/evrc0":{"source":"iana"},"audio/evrc1":{"source":"iana"},"audio/evrcb":{"source":"iana"},"audio/evrcb0":{"source":"iana"},"audio/evrcb1":{"source":"iana"},"audio/evrcnw":{"source":"iana"},"audio/evrcnw0":{"source":"iana"},"audio/evrcnw1":{"source":"iana"},"audio/evrcwb":{"source":"iana"},"audio/evrcwb0":{"source":"iana"},"audio/evrcwb1":{"source":"iana"},"audio/evs":{"source":"iana"},"audio/flexfec":{"source":"iana"},"audio/fwdred":{"source":"iana"},"audio/g711-0":{"source":"iana"},"audio/g719":{"source":"iana"},"audio/g722":{"source":"iana"},"audio/g7221":{"source":"iana"},"audio/g723":{"source":"iana"},"audio/g726-16":{"source":"iana"},"audio/g726-24":{"source":"iana"},"audio/g726-32":{"source":"iana"},"audio/g726-40":{"source":"iana"},"audio/g728":{"source":"iana"},"audio/g729":{"source":"iana"},"audio/g7291":{"source":"iana"},"audio/g729d":{"source":"iana"},"audio/g729e":{"source":"iana"},"audio/gsm":{"source":"iana"},"audio/gsm-efr":{"source":"iana"},"audio/gsm-hr-08":{"source":"iana"},"audio/ilbc":{"source":"iana"},"audio/ip-mr_v2.5":{"source":"iana"},"audio/isac":{"source":"apache"},"audio/l16":{"source":"iana"},"audio/l20":{"source":"iana"},"audio/l24":{"source":"iana","compressible":false},"audio/l8":{"source":"iana"},"audio/lpc":{"source":"iana"},"audio/melp":{"source":"iana"},"audio/melp1200":{"source":"iana"},"audio/melp2400":{"source":"iana"},"audio/melp600":{"source":"iana"},"audio/mhas":{"source":"iana"},"audio/midi":{"source":"apache","extensions":["mid","midi","kar","rmi"]},"audio/mobile-xmf":{"source":"iana","extensions":["mxmf"]},"audio/mp3":{"compressible":false,"extensions":["mp3"]},"audio/mp4":{"source":"iana","compressible":false,"extensions":["m4a","mp4a"]},"audio/mp4a-latm":{"source":"iana"},"audio/mpa":{"source":"iana"},"audio/mpa-robust":{"source":"iana"},"audio/mpeg":{"source":"iana","compressible":false,"extensions":["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{"source":"iana"},"audio/musepack":{"source":"apache"},"audio/ogg":{"source":"iana","compressible":false,"extensions":["oga","ogg","spx","opus"]},"audio/opus":{"source":"iana"},"audio/parityfec":{"source":"iana"},"audio/pcma":{"source":"iana"},"audio/pcma-wb":{"source":"iana"},"audio/pcmu":{"source":"iana"},"audio/pcmu-wb":{"source":"iana"},"audio/prs.sid":{"source":"iana"},"audio/qcelp":{"source":"iana"},"audio/raptorfec":{"source":"iana"},"audio/red":{"source":"iana"},"audio/rtp-enc-aescm128":{"source":"iana"},"audio/rtp-midi":{"source":"iana"},"audio/rtploopback":{"source":"iana"},"audio/rtx":{"source":"iana"},"audio/s3m":{"source":"apache","extensions":["s3m"]},"audio/scip":{"source":"iana"},"audio/silk":{"source":"apache","extensions":["sil"]},"audio/smv":{"source":"iana"},"audio/smv-qcp":{"source":"iana"},"audio/smv0":{"source":"iana"},"audio/sofa":{"source":"iana"},"audio/sp-midi":{"source":"iana"},"audio/speex":{"source":"iana"},"audio/t140c":{"source":"iana"},"audio/t38":{"source":"iana"},"audio/telephone-event":{"source":"iana"},"audio/tetra_acelp":{"source":"iana"},"audio/tetra_acelp_bb":{"source":"iana"},"audio/tone":{"source":"iana"},"audio/tsvcis":{"source":"iana"},"audio/uemclip":{"source":"iana"},"audio/ulpfec":{"source":"iana"},"audio/usac":{"source":"iana"},"audio/vdvi":{"source":"iana"},"audio/vmr-wb":{"source":"iana"},"audio/vnd.3gpp.iufp":{"source":"iana"},"audio/vnd.4sb":{"source":"iana"},"audio/vnd.audiokoz":{"source":"iana"},"audio/vnd.celp":{"source":"iana"},"audio/vnd.cisco.nse":{"source":"iana"},"audio/vnd.cmles.radio-events":{"source":"iana"},"audio/vnd.cns.anp1":{"source":"iana"},"audio/vnd.cns.inf1":{"source":"iana"},"audio/vnd.dece.audio":{"source":"iana","extensions":["uva","uvva"]},"audio/vnd.digital-winds":{"source":"iana","extensions":["eol"]},"audio/vnd.dlna.adts":{"source":"iana"},"audio/vnd.dolby.heaac.1":{"source":"iana"},"audio/vnd.dolby.heaac.2":{"source":"iana"},"audio/vnd.dolby.mlp":{"source":"iana"},"audio/vnd.dolby.mps":{"source":"iana"},"audio/vnd.dolby.pl2":{"source":"iana"},"audio/vnd.dolby.pl2x":{"source":"iana"},"audio/vnd.dolby.pl2z":{"source":"iana"},"audio/vnd.dolby.pulse.1":{"source":"iana"},"audio/vnd.dra":{"source":"iana","extensions":["dra"]},"audio/vnd.dts":{"source":"iana","extensions":["dts"]},"audio/vnd.dts.hd":{"source":"iana","extensions":["dtshd"]},"audio/vnd.dts.uhd":{"source":"iana"},"audio/vnd.dvb.file":{"source":"iana"},"audio/vnd.everad.plj":{"source":"iana"},"audio/vnd.hns.audio":{"source":"iana"},"audio/vnd.lucent.voice":{"source":"iana","extensions":["lvp"]},"audio/vnd.ms-playready.media.pya":{"source":"iana","extensions":["pya"]},"audio/vnd.nokia.mobile-xmf":{"source":"iana"},"audio/vnd.nortel.vbk":{"source":"iana"},"audio/vnd.nuera.ecelp4800":{"source":"iana","extensions":["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{"source":"iana","extensions":["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{"source":"iana","extensions":["ecelp9600"]},"audio/vnd.octel.sbc":{"source":"iana"},"audio/vnd.presonus.multitrack":{"source":"iana"},"audio/vnd.qcelp":{"source":"iana"},"audio/vnd.rhetorex.32kadpcm":{"source":"iana"},"audio/vnd.rip":{"source":"iana","extensions":["rip"]},"audio/vnd.rn-realaudio":{"compressible":false},"audio/vnd.sealedmedia.softseal.mpeg":{"source":"iana"},"audio/vnd.vmx.cvsd":{"source":"iana"},"audio/vnd.wave":{"compressible":false},"audio/vorbis":{"source":"iana","compressible":false},"audio/vorbis-config":{"source":"iana"},"audio/wav":{"compressible":false,"extensions":["wav"]},"audio/wave":{"compressible":false,"extensions":["wav"]},"audio/webm":{"source":"apache","compressible":false,"extensions":["weba"]},"audio/x-aac":{"source":"apache","compressible":false,"extensions":["aac"]},"audio/x-aiff":{"source":"apache","extensions":["aif","aiff","aifc"]},"audio/x-caf":{"source":"apache","compressible":false,"extensions":["caf"]},"audio/x-flac":{"source":"apache","extensions":["flac"]},"audio/x-m4a":{"source":"nginx","extensions":["m4a"]},"audio/x-matroska":{"source":"apache","extensions":["mka"]},"audio/x-mpegurl":{"source":"apache","extensions":["m3u"]},"audio/x-ms-wax":{"source":"apache","extensions":["wax"]},"audio/x-ms-wma":{"source":"apache","extensions":["wma"]},"audio/x-pn-realaudio":{"source":"apache","extensions":["ram","ra"]},"audio/x-pn-realaudio-plugin":{"source":"apache","extensions":["rmp"]},"audio/x-realaudio":{"source":"nginx","extensions":["ra"]},"audio/x-tta":{"source":"apache"},"audio/x-wav":{"source":"apache","extensions":["wav"]},"audio/xm":{"source":"apache","extensions":["xm"]},"chemical/x-cdx":{"source":"apache","extensions":["cdx"]},"chemical/x-cif":{"source":"apache","extensions":["cif"]},"chemical/x-cmdf":{"source":"apache","extensions":["cmdf"]},"chemical/x-cml":{"source":"apache","extensions":["cml"]},"chemical/x-csml":{"source":"apache","extensions":["csml"]},"chemical/x-pdb":{"source":"apache"},"chemical/x-xyz":{"source":"apache","extensions":["xyz"]},"font/collection":{"source":"iana","extensions":["ttc"]},"font/otf":{"source":"iana","compressible":true,"extensions":["otf"]},"font/sfnt":{"source":"iana"},"font/ttf":{"source":"iana","compressible":true,"extensions":["ttf"]},"font/woff":{"source":"iana","extensions":["woff"]},"font/woff2":{"source":"iana","extensions":["woff2"]},"image/aces":{"source":"iana","extensions":["exr"]},"image/apng":{"compressible":false,"extensions":["apng"]},"image/avci":{"source":"iana","extensions":["avci"]},"image/avcs":{"source":"iana","extensions":["avcs"]},"image/avif":{"source":"iana","compressible":false,"extensions":["avif"]},"image/bmp":{"source":"iana","compressible":true,"extensions":["bmp"]},"image/cgm":{"source":"iana","extensions":["cgm"]},"image/dicom-rle":{"source":"iana","extensions":["drle"]},"image/emf":{"source":"iana","extensions":["emf"]},"image/fits":{"source":"iana","extensions":["fits"]},"image/g3fax":{"source":"iana","extensions":["g3"]},"image/gif":{"source":"iana","compressible":false,"extensions":["gif"]},"image/heic":{"source":"iana","extensions":["heic"]},"image/heic-sequence":{"source":"iana","extensions":["heics"]},"image/heif":{"source":"iana","extensions":["heif"]},"image/heif-sequence":{"source":"iana","extensions":["heifs"]},"image/hej2k":{"source":"iana","extensions":["hej2"]},"image/hsj2":{"source":"iana","extensions":["hsj2"]},"image/ief":{"source":"iana","extensions":["ief"]},"image/jls":{"source":"iana","extensions":["jls"]},"image/jp2":{"source":"iana","compressible":false,"extensions":["jp2","jpg2"]},"image/jpeg":{"source":"iana","compressible":false,"extensions":["jpeg","jpg","jpe"]},"image/jph":{"source":"iana","extensions":["jph"]},"image/jphc":{"source":"iana","extensions":["jhc"]},"image/jpm":{"source":"iana","compressible":false,"extensions":["jpm"]},"image/jpx":{"source":"iana","compressible":false,"extensions":["jpx","jpf"]},"image/jxr":{"source":"iana","extensions":["jxr"]},"image/jxra":{"source":"iana","extensions":["jxra"]},"image/jxrs":{"source":"iana","extensions":["jxrs"]},"image/jxs":{"source":"iana","extensions":["jxs"]},"image/jxsc":{"source":"iana","extensions":["jxsc"]},"image/jxsi":{"source":"iana","extensions":["jxsi"]},"image/jxss":{"source":"iana","extensions":["jxss"]},"image/ktx":{"source":"iana","extensions":["ktx"]},"image/ktx2":{"source":"iana","extensions":["ktx2"]},"image/naplps":{"source":"iana"},"image/pjpeg":{"compressible":false},"image/png":{"source":"iana","compressible":false,"extensions":["png"]},"image/prs.btif":{"source":"iana","extensions":["btif"]},"image/prs.pti":{"source":"iana","extensions":["pti"]},"image/pwg-raster":{"source":"iana"},"image/sgi":{"source":"apache","extensions":["sgi"]},"image/svg+xml":{"source":"iana","compressible":true,"extensions":["svg","svgz"]},"image/t38":{"source":"iana","extensions":["t38"]},"image/tiff":{"source":"iana","compressible":false,"extensions":["tif","tiff"]},"image/tiff-fx":{"source":"iana","extensions":["tfx"]},"image/vnd.adobe.photoshop":{"source":"iana","compressible":true,"extensions":["psd"]},"image/vnd.airzip.accelerator.azv":{"source":"iana","extensions":["azv"]},"image/vnd.cns.inf2":{"source":"iana"},"image/vnd.dece.graphic":{"source":"iana","extensions":["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{"source":"iana","extensions":["djvu","djv"]},"image/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"image/vnd.dwg":{"source":"iana","extensions":["dwg"]},"image/vnd.dxf":{"source":"iana","extensions":["dxf"]},"image/vnd.fastbidsheet":{"source":"iana","extensions":["fbs"]},"image/vnd.fpx":{"source":"iana","extensions":["fpx"]},"image/vnd.fst":{"source":"iana","extensions":["fst"]},"image/vnd.fujixerox.edmics-mmr":{"source":"iana","extensions":["mmr"]},"image/vnd.fujixerox.edmics-rlc":{"source":"iana","extensions":["rlc"]},"image/vnd.globalgraphics.pgb":{"source":"iana"},"image/vnd.microsoft.icon":{"source":"iana","compressible":true,"extensions":["ico"]},"image/vnd.mix":{"source":"iana"},"image/vnd.mozilla.apng":{"source":"iana"},"image/vnd.ms-dds":{"compressible":true,"extensions":["dds"]},"image/vnd.ms-modi":{"source":"iana","extensions":["mdi"]},"image/vnd.ms-photo":{"source":"apache","extensions":["wdp"]},"image/vnd.net-fpx":{"source":"iana","extensions":["npx"]},"image/vnd.pco.b16":{"source":"iana","extensions":["b16"]},"image/vnd.radiance":{"source":"iana"},"image/vnd.sealed.png":{"source":"iana"},"image/vnd.sealedmedia.softseal.gif":{"source":"iana"},"image/vnd.sealedmedia.softseal.jpg":{"source":"iana"},"image/vnd.svf":{"source":"iana"},"image/vnd.tencent.tap":{"source":"iana","extensions":["tap"]},"image/vnd.valve.source.texture":{"source":"iana","extensions":["vtf"]},"image/vnd.wap.wbmp":{"source":"iana","extensions":["wbmp"]},"image/vnd.xiff":{"source":"iana","extensions":["xif"]},"image/vnd.zbrush.pcx":{"source":"iana","extensions":["pcx"]},"image/webp":{"source":"apache","extensions":["webp"]},"image/wmf":{"source":"iana","extensions":["wmf"]},"image/x-3ds":{"source":"apache","extensions":["3ds"]},"image/x-cmu-raster":{"source":"apache","extensions":["ras"]},"image/x-cmx":{"source":"apache","extensions":["cmx"]},"image/x-freehand":{"source":"apache","extensions":["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{"source":"apache","compressible":true,"extensions":["ico"]},"image/x-jng":{"source":"nginx","extensions":["jng"]},"image/x-mrsid-image":{"source":"apache","extensions":["sid"]},"image/x-ms-bmp":{"source":"nginx","compressible":true,"extensions":["bmp"]},"image/x-pcx":{"source":"apache","extensions":["pcx"]},"image/x-pict":{"source":"apache","extensions":["pic","pct"]},"image/x-portable-anymap":{"source":"apache","extensions":["pnm"]},"image/x-portable-bitmap":{"source":"apache","extensions":["pbm"]},"image/x-portable-graymap":{"source":"apache","extensions":["pgm"]},"image/x-portable-pixmap":{"source":"apache","extensions":["ppm"]},"image/x-rgb":{"source":"apache","extensions":["rgb"]},"image/x-tga":{"source":"apache","extensions":["tga"]},"image/x-xbitmap":{"source":"apache","extensions":["xbm"]},"image/x-xcf":{"compressible":false},"image/x-xpixmap":{"source":"apache","extensions":["xpm"]},"image/x-xwindowdump":{"source":"apache","extensions":["xwd"]},"message/cpim":{"source":"iana"},"message/delivery-status":{"source":"iana"},"message/disposition-notification":{"source":"iana","extensions":["disposition-notification"]},"message/external-body":{"source":"iana"},"message/feedback-report":{"source":"iana"},"message/global":{"source":"iana","extensions":["u8msg"]},"message/global-delivery-status":{"source":"iana","extensions":["u8dsn"]},"message/global-disposition-notification":{"source":"iana","extensions":["u8mdn"]},"message/global-headers":{"source":"iana","extensions":["u8hdr"]},"message/http":{"source":"iana","compressible":false},"message/imdn+xml":{"source":"iana","compressible":true},"message/news":{"source":"iana"},"message/partial":{"source":"iana","compressible":false},"message/rfc822":{"source":"iana","compressible":true,"extensions":["eml","mime"]},"message/s-http":{"source":"iana"},"message/sip":{"source":"iana"},"message/sipfrag":{"source":"iana"},"message/tracking-status":{"source":"iana"},"message/vnd.si.simp":{"source":"iana"},"message/vnd.wfa.wsc":{"source":"iana","extensions":["wsc"]},"model/3mf":{"source":"iana","extensions":["3mf"]},"model/e57":{"source":"iana"},"model/gltf+json":{"source":"iana","compressible":true,"extensions":["gltf"]},"model/gltf-binary":{"source":"iana","compressible":true,"extensions":["glb"]},"model/iges":{"source":"iana","compressible":false,"extensions":["igs","iges"]},"model/mesh":{"source":"iana","compressible":false,"extensions":["msh","mesh","silo"]},"model/mtl":{"source":"iana","extensions":["mtl"]},"model/obj":{"source":"iana","extensions":["obj"]},"model/step":{"source":"iana"},"model/step+xml":{"source":"iana","compressible":true,"extensions":["stpx"]},"model/step+zip":{"source":"iana","compressible":false,"extensions":["stpz"]},"model/step-xml+zip":{"source":"iana","compressible":false,"extensions":["stpxz"]},"model/stl":{"source":"iana","extensions":["stl"]},"model/vnd.collada+xml":{"source":"iana","compressible":true,"extensions":["dae"]},"model/vnd.dwf":{"source":"iana","extensions":["dwf"]},"model/vnd.flatland.3dml":{"source":"iana"},"model/vnd.gdl":{"source":"iana","extensions":["gdl"]},"model/vnd.gs-gdl":{"source":"apache"},"model/vnd.gs.gdl":{"source":"iana"},"model/vnd.gtw":{"source":"iana","extensions":["gtw"]},"model/vnd.moml+xml":{"source":"iana","compressible":true},"model/vnd.mts":{"source":"iana","extensions":["mts"]},"model/vnd.opengex":{"source":"iana","extensions":["ogex"]},"model/vnd.parasolid.transmit.binary":{"source":"iana","extensions":["x_b"]},"model/vnd.parasolid.transmit.text":{"source":"iana","extensions":["x_t"]},"model/vnd.pytha.pyox":{"source":"iana"},"model/vnd.rosette.annotated-data-model":{"source":"iana"},"model/vnd.sap.vds":{"source":"iana","extensions":["vds"]},"model/vnd.usdz+zip":{"source":"iana","compressible":false,"extensions":["usdz"]},"model/vnd.valve.source.compiled-map":{"source":"iana","extensions":["bsp"]},"model/vnd.vtu":{"source":"iana","extensions":["vtu"]},"model/vrml":{"source":"iana","compressible":false,"extensions":["wrl","vrml"]},"model/x3d+binary":{"source":"apache","compressible":false,"extensions":["x3db","x3dbz"]},"model/x3d+fastinfoset":{"source":"iana","extensions":["x3db"]},"model/x3d+vrml":{"source":"apache","compressible":false,"extensions":["x3dv","x3dvz"]},"model/x3d+xml":{"source":"iana","compressible":true,"extensions":["x3d","x3dz"]},"model/x3d-vrml":{"source":"iana","extensions":["x3dv"]},"multipart/alternative":{"source":"iana","compressible":false},"multipart/appledouble":{"source":"iana"},"multipart/byteranges":{"source":"iana"},"multipart/digest":{"source":"iana"},"multipart/encrypted":{"source":"iana","compressible":false},"multipart/form-data":{"source":"iana","compressible":false},"multipart/header-set":{"source":"iana"},"multipart/mixed":{"source":"iana"},"multipart/multilingual":{"source":"iana"},"multipart/parallel":{"source":"iana"},"multipart/related":{"source":"iana","compressible":false},"multipart/report":{"source":"iana"},"multipart/signed":{"source":"iana","compressible":false},"multipart/vnd.bint.med-plus":{"source":"iana"},"multipart/voice-message":{"source":"iana"},"multipart/x-mixed-replace":{"source":"iana"},"text/1d-interleaved-parityfec":{"source":"iana"},"text/cache-manifest":{"source":"iana","compressible":true,"extensions":["appcache","manifest"]},"text/calendar":{"source":"iana","extensions":["ics","ifb"]},"text/calender":{"compressible":true},"text/cmd":{"compressible":true},"text/coffeescript":{"extensions":["coffee","litcoffee"]},"text/cql":{"source":"iana"},"text/cql-expression":{"source":"iana"},"text/cql-identifier":{"source":"iana"},"text/css":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["css"]},"text/csv":{"source":"iana","compressible":true,"extensions":["csv"]},"text/csv-schema":{"source":"iana"},"text/directory":{"source":"iana"},"text/dns":{"source":"iana"},"text/ecmascript":{"source":"iana"},"text/encaprtp":{"source":"iana"},"text/enriched":{"source":"iana"},"text/fhirpath":{"source":"iana"},"text/flexfec":{"source":"iana"},"text/fwdred":{"source":"iana"},"text/gff3":{"source":"iana"},"text/grammar-ref-list":{"source":"iana"},"text/html":{"source":"iana","compressible":true,"extensions":["html","htm","shtml"]},"text/jade":{"extensions":["jade"]},"text/javascript":{"source":"iana","compressible":true},"text/jcr-cnd":{"source":"iana"},"text/jsx":{"compressible":true,"extensions":["jsx"]},"text/less":{"compressible":true,"extensions":["less"]},"text/markdown":{"source":"iana","compressible":true,"extensions":["markdown","md"]},"text/mathml":{"source":"nginx","extensions":["mml"]},"text/mdx":{"compressible":true,"extensions":["mdx"]},"text/mizar":{"source":"iana"},"text/n3":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["n3"]},"text/parameters":{"source":"iana","charset":"UTF-8"},"text/parityfec":{"source":"iana"},"text/plain":{"source":"iana","compressible":true,"extensions":["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{"source":"iana","charset":"UTF-8"},"text/prs.fallenstein.rst":{"source":"iana"},"text/prs.lines.tag":{"source":"iana","extensions":["dsc"]},"text/prs.prop.logic":{"source":"iana"},"text/raptorfec":{"source":"iana"},"text/red":{"source":"iana"},"text/rfc822-headers":{"source":"iana"},"text/richtext":{"source":"iana","compressible":true,"extensions":["rtx"]},"text/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"text/rtp-enc-aescm128":{"source":"iana"},"text/rtploopback":{"source":"iana"},"text/rtx":{"source":"iana"},"text/sgml":{"source":"iana","extensions":["sgml","sgm"]},"text/shaclc":{"source":"iana"},"text/shex":{"source":"iana","extensions":["shex"]},"text/slim":{"extensions":["slim","slm"]},"text/spdx":{"source":"iana","extensions":["spdx"]},"text/strings":{"source":"iana"},"text/stylus":{"extensions":["stylus","styl"]},"text/t140":{"source":"iana"},"text/tab-separated-values":{"source":"iana","compressible":true,"extensions":["tsv"]},"text/troff":{"source":"iana","extensions":["t","tr","roff","man","me","ms"]},"text/turtle":{"source":"iana","charset":"UTF-8","extensions":["ttl"]},"text/ulpfec":{"source":"iana"},"text/uri-list":{"source":"iana","compressible":true,"extensions":["uri","uris","urls"]},"text/vcard":{"source":"iana","compressible":true,"extensions":["vcard"]},"text/vnd.a":{"source":"iana"},"text/vnd.abc":{"source":"iana"},"text/vnd.ascii-art":{"source":"iana"},"text/vnd.curl":{"source":"iana","extensions":["curl"]},"text/vnd.curl.dcurl":{"source":"apache","extensions":["dcurl"]},"text/vnd.curl.mcurl":{"source":"apache","extensions":["mcurl"]},"text/vnd.curl.scurl":{"source":"apache","extensions":["scurl"]},"text/vnd.debian.copyright":{"source":"iana","charset":"UTF-8"},"text/vnd.dmclientscript":{"source":"iana"},"text/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"text/vnd.esmertec.theme-descriptor":{"source":"iana","charset":"UTF-8"},"text/vnd.familysearch.gedcom":{"source":"iana","extensions":["ged"]},"text/vnd.ficlab.flt":{"source":"iana"},"text/vnd.fly":{"source":"iana","extensions":["fly"]},"text/vnd.fmi.flexstor":{"source":"iana","extensions":["flx"]},"text/vnd.gml":{"source":"iana"},"text/vnd.graphviz":{"source":"iana","extensions":["gv"]},"text/vnd.hans":{"source":"iana"},"text/vnd.hgl":{"source":"iana"},"text/vnd.in3d.3dml":{"source":"iana","extensions":["3dml"]},"text/vnd.in3d.spot":{"source":"iana","extensions":["spot"]},"text/vnd.iptc.newsml":{"source":"iana"},"text/vnd.iptc.nitf":{"source":"iana"},"text/vnd.latex-z":{"source":"iana"},"text/vnd.motorola.reflex":{"source":"iana"},"text/vnd.ms-mediapackage":{"source":"iana"},"text/vnd.net2phone.commcenter.command":{"source":"iana"},"text/vnd.radisys.msml-basic-layout":{"source":"iana"},"text/vnd.senx.warpscript":{"source":"iana"},"text/vnd.si.uricatalogue":{"source":"iana"},"text/vnd.sosi":{"source":"iana"},"text/vnd.sun.j2me.app-descriptor":{"source":"iana","charset":"UTF-8","extensions":["jad"]},"text/vnd.trolltech.linguist":{"source":"iana","charset":"UTF-8"},"text/vnd.wap.si":{"source":"iana"},"text/vnd.wap.sl":{"source":"iana"},"text/vnd.wap.wml":{"source":"iana","extensions":["wml"]},"text/vnd.wap.wmlscript":{"source":"iana","extensions":["wmls"]},"text/vtt":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["vtt"]},"text/x-asm":{"source":"apache","extensions":["s","asm"]},"text/x-c":{"source":"apache","extensions":["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{"source":"nginx","extensions":["htc"]},"text/x-fortran":{"source":"apache","extensions":["f","for","f77","f90"]},"text/x-gwt-rpc":{"compressible":true},"text/x-handlebars-template":{"extensions":["hbs"]},"text/x-java-source":{"source":"apache","extensions":["java"]},"text/x-jquery-tmpl":{"compressible":true},"text/x-lua":{"extensions":["lua"]},"text/x-markdown":{"compressible":true,"extensions":["mkd"]},"text/x-nfo":{"source":"apache","extensions":["nfo"]},"text/x-opml":{"source":"apache","extensions":["opml"]},"text/x-org":{"compressible":true,"extensions":["org"]},"text/x-pascal":{"source":"apache","extensions":["p","pas"]},"text/x-processing":{"compressible":true,"extensions":["pde"]},"text/x-sass":{"extensions":["sass"]},"text/x-scss":{"extensions":["scss"]},"text/x-setext":{"source":"apache","extensions":["etx"]},"text/x-sfv":{"source":"apache","extensions":["sfv"]},"text/x-suse-ymp":{"compressible":true,"extensions":["ymp"]},"text/x-uuencode":{"source":"apache","extensions":["uu"]},"text/x-vcalendar":{"source":"apache","extensions":["vcs"]},"text/x-vcard":{"source":"apache","extensions":["vcf"]},"text/xml":{"source":"iana","compressible":true,"extensions":["xml"]},"text/xml-external-parsed-entity":{"source":"iana"},"text/yaml":{"compressible":true,"extensions":["yaml","yml"]},"video/1d-interleaved-parityfec":{"source":"iana"},"video/3gpp":{"source":"iana","extensions":["3gp","3gpp"]},"video/3gpp-tt":{"source":"iana"},"video/3gpp2":{"source":"iana","extensions":["3g2"]},"video/av1":{"source":"iana"},"video/bmpeg":{"source":"iana"},"video/bt656":{"source":"iana"},"video/celb":{"source":"iana"},"video/dv":{"source":"iana"},"video/encaprtp":{"source":"iana"},"video/ffv1":{"source":"iana"},"video/flexfec":{"source":"iana"},"video/h261":{"source":"iana","extensions":["h261"]},"video/h263":{"source":"iana","extensions":["h263"]},"video/h263-1998":{"source":"iana"},"video/h263-2000":{"source":"iana"},"video/h264":{"source":"iana","extensions":["h264"]},"video/h264-rcdo":{"source":"iana"},"video/h264-svc":{"source":"iana"},"video/h265":{"source":"iana"},"video/iso.segment":{"source":"iana","extensions":["m4s"]},"video/jpeg":{"source":"iana","extensions":["jpgv"]},"video/jpeg2000":{"source":"iana"},"video/jpm":{"source":"apache","extensions":["jpm","jpgm"]},"video/jxsv":{"source":"iana"},"video/mj2":{"source":"iana","extensions":["mj2","mjp2"]},"video/mp1s":{"source":"iana"},"video/mp2p":{"source":"iana"},"video/mp2t":{"source":"iana","extensions":["ts"]},"video/mp4":{"source":"iana","compressible":false,"extensions":["mp4","mp4v","mpg4"]},"video/mp4v-es":{"source":"iana"},"video/mpeg":{"source":"iana","compressible":false,"extensions":["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{"source":"iana"},"video/mpv":{"source":"iana"},"video/nv":{"source":"iana"},"video/ogg":{"source":"iana","compressible":false,"extensions":["ogv"]},"video/parityfec":{"source":"iana"},"video/pointer":{"source":"iana"},"video/quicktime":{"source":"iana","compressible":false,"extensions":["qt","mov"]},"video/raptorfec":{"source":"iana"},"video/raw":{"source":"iana"},"video/rtp-enc-aescm128":{"source":"iana"},"video/rtploopback":{"source":"iana"},"video/rtx":{"source":"iana"},"video/scip":{"source":"iana"},"video/smpte291":{"source":"iana"},"video/smpte292m":{"source":"iana"},"video/ulpfec":{"source":"iana"},"video/vc1":{"source":"iana"},"video/vc2":{"source":"iana"},"video/vnd.cctv":{"source":"iana"},"video/vnd.dece.hd":{"source":"iana","extensions":["uvh","uvvh"]},"video/vnd.dece.mobile":{"source":"iana","extensions":["uvm","uvvm"]},"video/vnd.dece.mp4":{"source":"iana"},"video/vnd.dece.pd":{"source":"iana","extensions":["uvp","uvvp"]},"video/vnd.dece.sd":{"source":"iana","extensions":["uvs","uvvs"]},"video/vnd.dece.video":{"source":"iana","extensions":["uvv","uvvv"]},"video/vnd.directv.mpeg":{"source":"iana"},"video/vnd.directv.mpeg-tts":{"source":"iana"},"video/vnd.dlna.mpeg-tts":{"source":"iana"},"video/vnd.dvb.file":{"source":"iana","extensions":["dvb"]},"video/vnd.fvt":{"source":"iana","extensions":["fvt"]},"video/vnd.hns.video":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.ttsavc":{"source":"iana"},"video/vnd.iptvforum.ttsmpeg2":{"source":"iana"},"video/vnd.motorola.video":{"source":"iana"},"video/vnd.motorola.videop":{"source":"iana"},"video/vnd.mpegurl":{"source":"iana","extensions":["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{"source":"iana","extensions":["pyv"]},"video/vnd.nokia.interleaved-multimedia":{"source":"iana"},"video/vnd.nokia.mp4vr":{"source":"iana"},"video/vnd.nokia.videovoip":{"source":"iana"},"video/vnd.objectvideo":{"source":"iana"},"video/vnd.radgamettools.bink":{"source":"iana"},"video/vnd.radgamettools.smacker":{"source":"iana"},"video/vnd.sealed.mpeg1":{"source":"iana"},"video/vnd.sealed.mpeg4":{"source":"iana"},"video/vnd.sealed.swf":{"source":"iana"},"video/vnd.sealedmedia.softseal.mov":{"source":"iana"},"video/vnd.uvvu.mp4":{"source":"iana","extensions":["uvu","uvvu"]},"video/vnd.vivo":{"source":"iana","extensions":["viv"]},"video/vnd.youtube.yt":{"source":"iana"},"video/vp8":{"source":"iana"},"video/vp9":{"source":"iana"},"video/webm":{"source":"apache","compressible":false,"extensions":["webm"]},"video/x-f4v":{"source":"apache","extensions":["f4v"]},"video/x-fli":{"source":"apache","extensions":["fli"]},"video/x-flv":{"source":"apache","compressible":false,"extensions":["flv"]},"video/x-m4v":{"source":"apache","extensions":["m4v"]},"video/x-matroska":{"source":"apache","compressible":false,"extensions":["mkv","mk3d","mks"]},"video/x-mng":{"source":"apache","extensions":["mng"]},"video/x-ms-asf":{"source":"apache","extensions":["asf","asx"]},"video/x-ms-vob":{"source":"apache","extensions":["vob"]},"video/x-ms-wm":{"source":"apache","extensions":["wm"]},"video/x-ms-wmv":{"source":"apache","compressible":false,"extensions":["wmv"]},"video/x-ms-wmx":{"source":"apache","extensions":["wmx"]},"video/x-ms-wvx":{"source":"apache","extensions":["wvx"]},"video/x-msvideo":{"source":"apache","extensions":["avi"]},"video/x-sgi-movie":{"source":"apache","extensions":["movie"]},"video/x-smv":{"source":"apache","extensions":["smv"]},"x-conference/x-cooltalk":{"source":"apache","extensions":["ice"]},"x-shader/x-fragment":{"compressible":true},"x-shader/x-vertex":{"compressible":true}}; - const headers = new Headers(init.headers || input.headers || {}); +/***/ }), +/* 513 */, +/* 514 */ +/***/ (function(module, __unusedexports, __webpack_require__) { - if (inputBody != null && !headers.has('Content-Type')) { - const contentType = extractContentType(inputBody); - if (contentType) { - headers.append('Content-Type', contentType); - } - } +"use strict"; - let signal = isRequest(input) ? input.signal : null; - if ('signal' in init) signal = init.signal; - if (signal != null && !isAbortSignal(signal)) { - throw new TypeError('Expected signal to be an instanceof AbortSignal'); - } +var compileSchema = __webpack_require__(563) + , resolve = __webpack_require__(283) + , Cache = __webpack_require__(921) + , SchemaObject = __webpack_require__(955) + , stableStringify = __webpack_require__(741) + , formats = __webpack_require__(492) + , rules = __webpack_require__(496) + , $dataMetaSchema = __webpack_require__(628) + , util = __webpack_require__(855); - this[INTERNALS$2] = { - method, - redirect: init.redirect || input.redirect || 'follow', - headers, - parsedURL, - signal - }; +module.exports = Ajv; - // node-fetch-only options - this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20; - this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true; - this.counter = init.counter || input.counter || 0; - this.agent = init.agent || input.agent; - } +Ajv.prototype.validate = validate; +Ajv.prototype.compile = compile; +Ajv.prototype.addSchema = addSchema; +Ajv.prototype.addMetaSchema = addMetaSchema; +Ajv.prototype.validateSchema = validateSchema; +Ajv.prototype.getSchema = getSchema; +Ajv.prototype.removeSchema = removeSchema; +Ajv.prototype.addFormat = addFormat; +Ajv.prototype.errorsText = errorsText; - get method() { - return this[INTERNALS$2].method; - } +Ajv.prototype._addSchema = _addSchema; +Ajv.prototype._compile = _compile; - get url() { - return format_url(this[INTERNALS$2].parsedURL); - } +Ajv.prototype.compileAsync = __webpack_require__(890); +var customKeyword = __webpack_require__(45); +Ajv.prototype.addKeyword = customKeyword.add; +Ajv.prototype.getKeyword = customKeyword.get; +Ajv.prototype.removeKeyword = customKeyword.remove; +Ajv.prototype.validateKeyword = customKeyword.validate; - get headers() { - return this[INTERNALS$2].headers; - } +var errorClasses = __webpack_require__(580); +Ajv.ValidationError = errorClasses.Validation; +Ajv.MissingRefError = errorClasses.MissingRef; +Ajv.$dataMetaSchema = $dataMetaSchema; - get redirect() { - return this[INTERNALS$2].redirect; - } +var META_SCHEMA_ID = 'http://json-schema.org/draft-07/schema'; - get signal() { - return this[INTERNALS$2].signal; - } +var META_IGNORE_OPTIONS = [ 'removeAdditional', 'useDefaults', 'coerceTypes', 'strictDefaults' ]; +var META_SUPPORT_DATA = ['/properties']; - /** - * Clone this request - * - * @return Request - */ - clone() { - return new Request(this); - } -} +/** + * Creates validator instance. + * Usage: `Ajv(opts)` + * @param {Object} opts optional options + * @return {Object} ajv instance + */ +function Ajv(opts) { + if (!(this instanceof Ajv)) return new Ajv(opts); + opts = this._opts = util.copy(opts) || {}; + setLogger(this); + this._schemas = {}; + this._refs = {}; + this._fragments = {}; + this._formats = formats(opts.format); -Body.mixIn(Request.prototype); + this._cache = opts.cache || new Cache; + this._loadingSchemas = {}; + this._compilations = []; + this.RULES = rules(); + this._getId = chooseGetId(opts); + + opts.loopRequired = opts.loopRequired || Infinity; + if (opts.errorDataPath == 'property') opts._errorDataPathProperty = true; + if (opts.serialize === undefined) opts.serialize = stableStringify; + this._metaOpts = getMetaSchemaOptions(this); + + if (opts.formats) addInitialFormats(this); + if (opts.keywords) addInitialKeywords(this); + addDefaultMetaSchema(this); + if (typeof opts.meta == 'object') this.addMetaSchema(opts.meta); + if (opts.nullable) this.addKeyword('nullable', {metaSchema: {type: 'boolean'}}); + addInitialSchemas(this); +} -Object.defineProperty(Request.prototype, Symbol.toStringTag, { - value: 'Request', - writable: false, - enumerable: false, - configurable: true -}); -Object.defineProperties(Request.prototype, { - method: { enumerable: true }, - url: { enumerable: true }, - headers: { enumerable: true }, - redirect: { enumerable: true }, - clone: { enumerable: true }, - signal: { enumerable: true } -}); /** - * Convert a Request to Node.js http request options. - * - * @param Request A Request instance - * @return Object The options object to be passed to http.request + * Validate data using schema + * Schema will be compiled and cached (using serialized JSON as key. [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used to serialize. + * @this Ajv + * @param {String|Object} schemaKeyRef key, ref or schema object + * @param {Any} data to be validated + * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`). */ -function getNodeRequestOptions(request) { - const parsedURL = request[INTERNALS$2].parsedURL; - const headers = new Headers(request[INTERNALS$2].headers); +function validate(schemaKeyRef, data) { + var v; + if (typeof schemaKeyRef == 'string') { + v = this.getSchema(schemaKeyRef); + if (!v) throw new Error('no schema with key or ref "' + schemaKeyRef + '"'); + } else { + var schemaObj = this._addSchema(schemaKeyRef); + v = schemaObj.validate || this._compile(schemaObj); + } - // fetch step 1.3 - if (!headers.has('Accept')) { - headers.set('Accept', '*/*'); - } + var valid = v(data); + if (v.$async !== true) this.errors = v.errors; + return valid; +} - // Basic fetch - if (!parsedURL.protocol || !parsedURL.hostname) { - throw new TypeError('Only absolute URLs are supported'); - } - if (!/^https?:$/.test(parsedURL.protocol)) { - throw new TypeError('Only HTTP(S) protocols are supported'); - } +/** + * Create validating function for passed schema. + * @this Ajv + * @param {Object} schema schema object + * @param {Boolean} _meta true if schema is a meta-schema. Used internally to compile meta schemas of custom keywords. + * @return {Function} validating function + */ +function compile(schema, _meta) { + var schemaObj = this._addSchema(schema, undefined, _meta); + return schemaObj.validate || this._compile(schemaObj); +} - if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) { - throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8'); - } - // HTTP-network-or-cache fetch steps 2.4-2.7 - let contentLengthValue = null; - if (request.body == null && /^(POST|PUT)$/i.test(request.method)) { - contentLengthValue = '0'; - } - if (request.body != null) { - const totalBytes = getTotalBytes(request); - if (typeof totalBytes === 'number') { - contentLengthValue = String(totalBytes); - } - } - if (contentLengthValue) { - headers.set('Content-Length', contentLengthValue); - } +/** + * Adds schema to the instance. + * @this Ajv + * @param {Object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored. + * @param {String} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`. + * @param {Boolean} _skipValidation true to skip schema validation. Used internally, option validateSchema should be used instead. + * @param {Boolean} _meta true if schema is a meta-schema. Used internally, addMetaSchema should be used instead. + * @return {Ajv} this for method chaining + */ +function addSchema(schema, key, _skipValidation, _meta) { + if (Array.isArray(schema)){ + for (var i=0; i} errors optional array of validation errors, if not passed errors from the instance are used. + * @param {Object} options optional options with properties `separator` and `dataVar`. + * @return {String} human readable string with all errors descriptions + */ +function errorsText(errors, options) { + errors = errors || this.errors; + if (!errors) return 'No errors'; + options = options || {}; + var separator = options.separator === undefined ? ', ' : options.separator; + var dataVar = options.dataVar === undefined ? 'data' : options.dataVar; + + var text = ''; + for (var i=0; i= request.follow) { - reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect')); - finalize(); - return; - } +function getMetaSchemaOptions(self) { + var metaOpts = util.copy(self._opts); + for (var i=0; i { +"use strict"; -var wrappy = __nccwpck_require__(2940) -module.exports = wrappy(once) -module.exports.strict = wrappy(onceStrict) -once.proto = once(function () { - Object.defineProperty(Function.prototype, 'once', { - value: function () { - return once(this) - }, - configurable: true - }) +Object.defineProperty(exports, '__esModule', { value: true }); - Object.defineProperty(Function.prototype, 'onceStrict', { - value: function () { - return onceStrict(this) - }, - configurable: true - }) -}) +var isPlainObject = __webpack_require__(356); +var universalUserAgent = __webpack_require__(796); -function once (fn) { - var f = function () { - if (f.called) return f.value - f.called = true - return f.value = fn.apply(this, arguments) +function lowercaseKeys(object) { + if (!object) { + return {}; } - f.called = false - return f + + return Object.keys(object).reduce((newObj, key) => { + newObj[key.toLowerCase()] = object[key]; + return newObj; + }, {}); } -function onceStrict (fn) { - var f = function () { - if (f.called) - throw new Error(f.onceError) - f.called = true - return f.value = fn.apply(this, arguments) - } - var name = fn.name || 'Function wrapped with `once`' - f.onceError = name + " shouldn't be called more than once" - f.called = false - return f +function mergeDeep(defaults, options) { + const result = Object.assign({}, defaults); + Object.keys(options).forEach(key => { + if (isPlainObject.isPlainObject(options[key])) { + if (!(key in defaults)) Object.assign(result, { + [key]: options[key] + });else result[key] = mergeDeep(defaults[key], options[key]); + } else { + Object.assign(result, { + [key]: options[key] + }); + } + }); + return result; } +function removeUndefinedProperties(obj) { + for (const key in obj) { + if (obj[key] === undefined) { + delete obj[key]; + } + } -/***/ }), + return obj; +} -/***/ 4833: -/***/ ((module) => { +function merge(defaults, route, options) { + if (typeof route === "string") { + let [method, url] = route.split(" "); + options = Object.assign(url ? { + method, + url + } : { + url: method + }, options); + } else { + options = Object.assign({}, route); + } // lowercase header names before merging with defaults to avoid duplicates -"use strict"; -function _createForOfIteratorHelper(o,allowArrayLike){var it=typeof Symbol!=="undefined"&&o[Symbol.iterator]||o["@@iterator"];if(!it){if(Array.isArray(o)||(it=_unsupportedIterableToArray(o))||allowArrayLike&&o&&typeof o.length==="number"){if(it)o=it;var i=0;var F=function F(){};return{s:F,n:function n(){if(i>=o.length)return{done:true};return{done:false,value:o[i++]}},e:function e(_e2){throw _e2},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var normalCompletion=true,didErr=false,err;return{s:function s(){it=it.call(o)},n:function n(){var step=it.next();normalCompletion=step.done;return step},e:function e(_e3){didErr=true;err=_e3},f:function f(){try{if(!normalCompletion&&it["return"]!=null)it["return"]()}finally{if(didErr)throw err}}}}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_unsupportedIterableToArray(arr,i)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(o);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i { + if (defaults && defaults.mediaType.previews.length) { + mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(preview => !mergedOptions.mediaType.previews.includes(preview)).concat(mergedOptions.mediaType.previews); + } -"use strict"; + mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map(preview => preview.replace(/-preview/, "")); + return mergedOptions; +} -const os = __nccwpck_require__(2037); -const hasFlag = __nccwpck_require__(1621); +function addQueryParameters(url, parameters) { + const separator = /\?/.test(url) ? "&" : "?"; + const names = Object.keys(parameters); -const env = process.env; + if (names.length === 0) { + return url; + } -let forceColor; -if (hasFlag('no-color') || - hasFlag('no-colors') || - hasFlag('color=false')) { - forceColor = false; -} else if (hasFlag('color') || - hasFlag('colors') || - hasFlag('color=true') || - hasFlag('color=always')) { - forceColor = true; -} -if ('FORCE_COLOR' in env) { - forceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0; + return url + separator + names.map(name => { + if (name === "q") { + return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+"); + } + + return `${name}=${encodeURIComponent(parameters[name])}`; + }).join("&"); } -function translateLevel(level) { - if (level === 0) { - return false; - } +const urlVariableRegex = /\{[^}]+\}/g; - return { - level, - hasBasic: true, - has256: level >= 2, - has16m: level >= 3 - }; +function removeNonChars(variableName) { + return variableName.replace(/^\W+|\W+$/g, "").split(/,/); } -function supportsColor(stream) { - if (forceColor === false) { - return 0; - } +function extractUrlVariableNames(url) { + const matches = url.match(urlVariableRegex); - if (hasFlag('color=16m') || - hasFlag('color=full') || - hasFlag('color=truecolor')) { - return 3; - } + if (!matches) { + return []; + } - if (hasFlag('color=256')) { - return 2; - } + return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []); +} - if (stream && !stream.isTTY && forceColor !== true) { - return 0; - } +function omit(object, keysToOmit) { + return Object.keys(object).filter(option => !keysToOmit.includes(option)).reduce((obj, key) => { + obj[key] = object[key]; + return obj; + }, {}); +} - const min = forceColor ? 1 : 0; +// Based on https://github.com/bramstein/url-template, licensed under BSD +// TODO: create separate package. +// +// Copyright (c) 2012-2014, Bram Stein +// All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// 3. The name of the author may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - if (process.platform === 'win32') { - // Node.js 7.5.0 is the first version of Node.js to include a patch to - // libuv that enables 256 color output on Windows. Anything earlier and it - // won't work. However, here we target Node.js 8 at minimum as it is an LTS - // release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows - // release that supports 256 colors. Windows 10 build 14931 is the first release - // that supports 16m/TrueColor. - const osRelease = os.release().split('.'); - if ( - Number(process.versions.node.split('.')[0]) >= 8 && - Number(osRelease[0]) >= 10 && - Number(osRelease[2]) >= 10586 - ) { - return Number(osRelease[2]) >= 14931 ? 3 : 2; - } +/* istanbul ignore file */ +function encodeReserved(str) { + return str.split(/(%[0-9A-Fa-f]{2})/g).map(function (part) { + if (!/%[0-9A-Fa-f]/.test(part)) { + part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]"); + } - return 1; - } + return part; + }).join(""); +} - if ('CI' in env) { - if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') { - return 1; - } +function encodeUnreserved(str) { + return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { + return "%" + c.charCodeAt(0).toString(16).toUpperCase(); + }); +} - return min; - } +function encodeValue(operator, value, key) { + value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value); - if ('TEAMCITY_VERSION' in env) { - return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; - } + if (key) { + return encodeUnreserved(key) + "=" + value; + } else { + return value; + } +} + +function isDefined(value) { + return value !== undefined && value !== null; +} - if (env.COLORTERM === 'truecolor') { - return 3; - } +function isKeyOperator(operator) { + return operator === ";" || operator === "&" || operator === "?"; +} - if ('TERM_PROGRAM' in env) { - const version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10); +function getValues(context, operator, key, modifier) { + var value = context[key], + result = []; - switch (env.TERM_PROGRAM) { - case 'iTerm.app': - return version >= 3 ? 3 : 2; - case 'Apple_Terminal': - return 2; - // No default - } - } + if (isDefined(value) && value !== "") { + if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") { + value = value.toString(); - if (/-256(color)?$/i.test(env.TERM)) { - return 2; - } + if (modifier && modifier !== "*") { + value = value.substring(0, parseInt(modifier, 10)); + } - if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { - return 1; - } + result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); + } else { + if (modifier === "*") { + if (Array.isArray(value)) { + value.filter(isDefined).forEach(function (value) { + result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : "")); + }); + } else { + Object.keys(value).forEach(function (k) { + if (isDefined(value[k])) { + result.push(encodeValue(operator, value[k], k)); + } + }); + } + } else { + const tmp = []; - if ('COLORTERM' in env) { - return 1; - } + if (Array.isArray(value)) { + value.filter(isDefined).forEach(function (value) { + tmp.push(encodeValue(operator, value)); + }); + } else { + Object.keys(value).forEach(function (k) { + if (isDefined(value[k])) { + tmp.push(encodeUnreserved(k)); + tmp.push(encodeValue(operator, value[k].toString())); + } + }); + } - if (env.TERM === 'dumb') { - return min; - } + if (isKeyOperator(operator)) { + result.push(encodeUnreserved(key) + "=" + tmp.join(",")); + } else if (tmp.length !== 0) { + result.push(tmp.join(",")); + } + } + } + } else { + if (operator === ";") { + if (isDefined(value)) { + result.push(encodeUnreserved(key)); + } + } else if (value === "" && (operator === "&" || operator === "?")) { + result.push(encodeUnreserved(key) + "="); + } else if (value === "") { + result.push(""); + } + } - return min; + return result; } -function getSupportLevel(stream) { - const level = supportsColor(stream); - return translateLevel(level); +function parseUrl(template) { + return { + expand: expand.bind(null, template) + }; } -module.exports = { - supportsColor: getSupportLevel, - stdout: getSupportLevel(process.stdout), - stderr: getSupportLevel(process.stderr) -}; +function expand(template, context) { + var operators = ["+", "#", ".", "/", ";", "?", "&"]; + return template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (_, expression, literal) { + if (expression) { + let operator = ""; + const values = []; + if (operators.indexOf(expression.charAt(0)) !== -1) { + operator = expression.charAt(0); + expression = expression.substr(1); + } -/***/ }), + expression.split(/,/g).forEach(function (variable) { + var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable); + values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3])); + }); -/***/ 4256: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + if (operator && operator !== "+") { + var separator = ","; -"use strict"; + if (operator === "?") { + separator = "&"; + } else if (operator !== "#") { + separator = operator; + } + + return (values.length !== 0 ? operator : "") + values.join(separator); + } else { + return values.join(","); + } + } else { + return encodeReserved(literal); + } + }); +} +function parse(options) { + // https://fetch.spec.whatwg.org/#methods + let method = options.method.toUpperCase(); // replace :varname with {varname} to make it RFC 6570 compatible -var punycode = __nccwpck_require__(5477); -var mappingTable = __nccwpck_require__(2020); + let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}"); + let headers = Object.assign({}, options.headers); + let body; + let parameters = omit(options, ["method", "baseUrl", "url", "headers", "request", "mediaType"]); // extract variable names from URL to calculate remaining variables later -var PROCESSING_OPTIONS = { - TRANSITIONAL: 0, - NONTRANSITIONAL: 1 -}; + const urlVariableNames = extractUrlVariableNames(url); + url = parseUrl(url).expand(parameters); -function normalize(str) { // fix bug in v8 - return str.split('\u0000').map(function (s) { return s.normalize('NFC'); }).join('\u0000'); -} + if (!/^http/.test(url)) { + url = options.baseUrl + url; + } -function findStatus(val) { - var start = 0; - var end = mappingTable.length - 1; + const omittedParameters = Object.keys(options).filter(option => urlVariableNames.includes(option)).concat("baseUrl"); + const remainingParameters = omit(parameters, omittedParameters); + const isBinaryRequest = /application\/octet-stream/i.test(headers.accept); - while (start <= end) { - var mid = Math.floor((start + end) / 2); + if (!isBinaryRequest) { + if (options.mediaType.format) { + // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw + headers.accept = headers.accept.split(/,/).map(preview => preview.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`)).join(","); + } - var target = mappingTable[mid]; - if (target[0][0] <= val && target[0][1] >= val) { - return target; - } else if (target[0][0] > val) { - end = mid - 1; - } else { - start = mid + 1; + if (options.mediaType.previews.length) { + const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || []; + headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map(preview => { + const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json"; + return `application/vnd.github.${preview}-preview${format}`; + }).join(","); } - } + } // for GET/HEAD requests, set URL query parameters from remaining parameters + // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters - return null; -} -var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; + if (["GET", "HEAD"].includes(method)) { + url = addQueryParameters(url, remainingParameters); + } else { + if ("data" in remainingParameters) { + body = remainingParameters.data; + } else { + if (Object.keys(remainingParameters).length) { + body = remainingParameters; + } + } + } // default content-type for JSON if body is set -function countSymbols(string) { - return string - // replace every surrogate pair with a BMP symbol - .replace(regexAstralSymbols, '_') - // then get the length - .length; -} -function mapChars(domain_name, useSTD3, processing_option) { - var hasError = false; - var processed = ""; + if (!headers["content-type"] && typeof body !== "undefined") { + headers["content-type"] = "application/json; charset=utf-8"; + } // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body. + // fetch does not allow to set `content-length` header, but we can set body to an empty string - var len = countSymbols(domain_name); - for (var i = 0; i < len; ++i) { - var codePoint = domain_name.codePointAt(i); - var status = findStatus(codePoint); - switch (status[1]) { - case "disallowed": - hasError = true; - processed += String.fromCodePoint(codePoint); - break; - case "ignored": - break; - case "mapped": - processed += String.fromCodePoint.apply(String, status[2]); - break; - case "deviation": - if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) { - processed += String.fromCodePoint.apply(String, status[2]); - } else { - processed += String.fromCodePoint(codePoint); - } - break; - case "valid": - processed += String.fromCodePoint(codePoint); - break; - case "disallowed_STD3_mapped": - if (useSTD3) { - hasError = true; - processed += String.fromCodePoint(codePoint); - } else { - processed += String.fromCodePoint.apply(String, status[2]); - } - break; - case "disallowed_STD3_valid": - if (useSTD3) { - hasError = true; - } + if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") { + body = ""; + } // Only return body/request keys if present - processed += String.fromCodePoint(codePoint); - break; - } - } - return { - string: processed, - error: hasError - }; + return Object.assign({ + method, + url, + headers + }, typeof body !== "undefined" ? { + body + } : null, options.request ? { + request: options.request + } : null); +} + +function endpointWithDefaults(defaults, route, options) { + return parse(merge(defaults, route, options)); } -var combiningMarksRegex = /[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08E4-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u192B\u1930-\u193B\u19B0-\u19C0\u19C8\u19C9\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFC-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C4\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2D]|\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC7F-\uDC82\uDCB0-\uDCBA\uDD00-\uDD02\uDD27-\uDD34\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDE2C-\uDE37\uDEDF-\uDEEA\uDF01-\uDF03\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDCB0-\uDCC3\uDDAF-\uDDB5\uDDB8-\uDDC0\uDE30-\uDE40\uDEAB-\uDEB7]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF51-\uDF7E\uDF8F-\uDF92]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD83A[\uDCD0-\uDCD6]|\uDB40[\uDD00-\uDDEF]/; +function withDefaults(oldDefaults, newDefaults) { + const DEFAULTS = merge(oldDefaults, newDefaults); + const endpoint = endpointWithDefaults.bind(null, DEFAULTS); + return Object.assign(endpoint, { + DEFAULTS, + defaults: withDefaults.bind(null, DEFAULTS), + merge: merge.bind(null, DEFAULTS), + parse + }); +} -function validateLabel(label, processing_option) { - if (label.substr(0, 4) === "xn--") { - label = punycode.toUnicode(label); - processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL; - } +const VERSION = "7.0.2"; - var error = false; +const userAgent = `octokit-endpoint.js/${VERSION} ${universalUserAgent.getUserAgent()}`; // DEFAULTS has all properties set that EndpointOptions has, except url. +// So we use RequestParameters and add method as additional required property. - if (normalize(label) !== label || - (label[3] === "-" && label[4] === "-") || - label[0] === "-" || label[label.length - 1] === "-" || - label.indexOf(".") !== -1 || - label.search(combiningMarksRegex) === 0) { - error = true; +const DEFAULTS = { + method: "GET", + baseUrl: "https://api.github.com", + headers: { + accept: "application/vnd.github.v3+json", + "user-agent": userAgent + }, + mediaType: { + format: "", + previews: [] } +}; - var len = countSymbols(label); - for (var i = 0; i < len; ++i) { - var status = findStatus(label.codePointAt(i)); - if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== "valid") || - (processing === PROCESSING_OPTIONS.NONTRANSITIONAL && - status[1] !== "valid" && status[1] !== "deviation")) { - error = true; - break; - } - } +const endpoint = withDefaults(null, DEFAULTS); - return { - label: label, - error: error - }; -} +exports.endpoint = endpoint; +//# sourceMappingURL=index.js.map -function processing(domain_name, useSTD3, processing_option) { - var result = mapChars(domain_name, useSTD3, processing_option); - result.string = normalize(result.string); - var labels = result.string.split("."); - for (var i = 0; i < labels.length; ++i) { - try { - var validation = validateLabel(labels[i]); - labels[i] = validation.label; - result.error = result.error || validation.error; - } catch(e) { - result.error = true; - } - } +/***/ }), +/* 522 */ +/***/ (function(module) { - return { - string: labels.join("."), - error: result.error - }; -} +module.exports = {"$schema":"http://json-schema.org/draft-07/schema#","$id":"http://json-schema.org/draft-07/schema#","title":"Core schema meta-schema","definitions":{"schemaArray":{"type":"array","minItems":1,"items":{"$ref":"#"}},"nonNegativeInteger":{"type":"integer","minimum":0},"nonNegativeIntegerDefault0":{"allOf":[{"$ref":"#/definitions/nonNegativeInteger"},{"default":0}]},"simpleTypes":{"enum":["array","boolean","integer","null","number","object","string"]},"stringArray":{"type":"array","items":{"type":"string"},"uniqueItems":true,"default":[]}},"type":["object","boolean"],"properties":{"$id":{"type":"string","format":"uri-reference"},"$schema":{"type":"string","format":"uri"},"$ref":{"type":"string","format":"uri-reference"},"$comment":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"default":true,"readOnly":{"type":"boolean","default":false},"examples":{"type":"array","items":true},"multipleOf":{"type":"number","exclusiveMinimum":0},"maximum":{"type":"number"},"exclusiveMaximum":{"type":"number"},"minimum":{"type":"number"},"exclusiveMinimum":{"type":"number"},"maxLength":{"$ref":"#/definitions/nonNegativeInteger"},"minLength":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"pattern":{"type":"string","format":"regex"},"additionalItems":{"$ref":"#"},"items":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/schemaArray"}],"default":true},"maxItems":{"$ref":"#/definitions/nonNegativeInteger"},"minItems":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"uniqueItems":{"type":"boolean","default":false},"contains":{"$ref":"#"},"maxProperties":{"$ref":"#/definitions/nonNegativeInteger"},"minProperties":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"required":{"$ref":"#/definitions/stringArray"},"additionalProperties":{"$ref":"#"},"definitions":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"properties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"patternProperties":{"type":"object","additionalProperties":{"$ref":"#"},"propertyNames":{"format":"regex"},"default":{}},"dependencies":{"type":"object","additionalProperties":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/stringArray"}]}},"propertyNames":{"$ref":"#"},"const":true,"enum":{"type":"array","items":true,"minItems":1,"uniqueItems":true},"type":{"anyOf":[{"$ref":"#/definitions/simpleTypes"},{"type":"array","items":{"$ref":"#/definitions/simpleTypes"},"minItems":1,"uniqueItems":true}]},"format":{"type":"string"},"contentMediaType":{"type":"string"},"contentEncoding":{"type":"string"},"if":{"$ref":"#"},"then":{"$ref":"#"},"else":{"$ref":"#"},"allOf":{"$ref":"#/definitions/schemaArray"},"anyOf":{"$ref":"#/definitions/schemaArray"},"oneOf":{"$ref":"#/definitions/schemaArray"},"not":{"$ref":"#"}},"default":true}; -module.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) { - var result = processing(domain_name, useSTD3, processing_option); - var labels = result.string.split("."); - labels = labels.map(function(l) { - try { - return punycode.toASCII(l); - } catch(e) { - result.error = true; - return l; - } - }); +/***/ }), +/* 523 */ +/***/ (function(module, __unusedexports, __webpack_require__) { - if (verifyDnsLength) { - var total = labels.slice(0, labels.length - 1).join(".").length; - if (total.length > 253 || total.length === 0) { - result.error = true; - } +var register = __webpack_require__(280) +var addHook = __webpack_require__(510) +var removeHook = __webpack_require__(866) - for (var i=0; i < labels.length; ++i) { - if (labels.length > 63 || labels.length === 0) { - result.error = true; - break; - } - } - } +// bind with array of arguments: https://stackoverflow.com/a/21792913 +var bind = Function.bind +var bindable = bind.bind(bind) - if (result.error) return null; - return labels.join("."); -}; +function bindApi (hook, state, name) { + var removeHookRef = bindable(removeHook, null).apply(null, name ? [state, name] : [state]) + hook.api = { remove: removeHookRef } + hook.remove = removeHookRef -module.exports.toUnicode = function(domain_name, useSTD3) { - var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL); + ;['before', 'error', 'after', 'wrap'].forEach(function (kind) { + var args = name ? [state, kind, name] : [state, kind] + hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args) + }) +} - return { - domain: result.string, - error: result.error - }; -}; +function HookSingular () { + var singularHookName = 'h' + var singularHookState = { + registry: {} + } + var singularHook = register.bind(null, singularHookState, singularHookName) + bindApi(singularHook, singularHookState, singularHookName) + return singularHook +} -module.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS; +function HookCollection () { + var state = { + registry: {} + } + var hook = register.bind(null, state) + bindApi(hook, state) -/***/ }), + return hook +} + +var collectionHookDeprecationMessageDisplayed = false +function Hook () { + if (!collectionHookDeprecationMessageDisplayed) { + console.warn('[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4') + collectionHookDeprecationMessageDisplayed = true + } + return HookCollection() +} -/***/ 4294: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +Hook.Singular = HookSingular.bind() +Hook.Collection = HookCollection.bind() -module.exports = __nccwpck_require__(4219); +module.exports = Hook +// expose constructors as a named property for TypeScript +module.exports.Hook = Hook +module.exports.Singular = Hook.Singular +module.exports.Collection = Hook.Collection /***/ }), - -/***/ 4219: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/* 524 */, +/* 525 */ +/***/ (function(__unusedmodule, exports) { "use strict"; -var net = __nccwpck_require__(1808); -var tls = __nccwpck_require__(4404); -var http = __nccwpck_require__(3685); -var https = __nccwpck_require__(5687); -var events = __nccwpck_require__(2361); -var assert = __nccwpck_require__(9491); -var util = __nccwpck_require__(3837); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +var _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i; +exports.default = _default; +/***/ }), +/* 526 */ +/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { -exports.httpOverHttp = httpOverHttp; -exports.httpsOverHttp = httpsOverHttp; -exports.httpOverHttps = httpOverHttps; -exports.httpsOverHttps = httpsOverHttps; +const { readFileSync } = __webpack_require__(747); +const { resolve, basename } = __webpack_require__(622); +const { Octokit } = __webpack_require__(725); +const toolkit = __webpack_require__(470); -function httpOverHttp(options) { - var agent = new TunnelingAgent(options); - agent.request = http.request; - return agent; -} +const handlePullRequest = __webpack_require__(815); +const handlePush = __webpack_require__(555); +const parseTweetFileContent = __webpack_require__(746); +const tweet = __webpack_require__(713); -function httpsOverHttp(options) { - var agent = new TunnelingAgent(options); - agent.request = http.request; - agent.createSocket = createSecureSocket; - agent.defaultPort = 443; - return agent; -} +const VERSION = __webpack_require__(731).version; -function httpOverHttps(options) { - var agent = new TunnelingAgent(options); - agent.request = https.request; - return agent; -} +console.log(`Running twitter-together version ${VERSION}`); -function httpsOverHttps(options) { - var agent = new TunnelingAgent(options); - agent.request = https.request; - agent.createSocket = createSecureSocket; - agent.defaultPort = 443; - return agent; -} +async function main() { + const state = { + startedAt: new Date().toISOString(), + twitterCredentials: { + consumer_key: process.env.TWITTER_API_KEY, + consumer_secret: process.env.TWITTER_API_SECRET_KEY, + access_token_key: process.env.TWITTER_ACCESS_TOKEN, + access_token_secret: process.env.TWITTER_ACCESS_TOKEN_SECRET, + }, + }; + // Allow for CLI invocation using `--file tweets/test.tweet` + if (process.argv.length > 2 && process.argv[2] === "--file") { + if (!process.argv[3]) throw new Error("No file specified for --file"); + const fileState = { + ...state, + dir: resolve(process.argv[3], "..", ".."), + }; -function TunnelingAgent(options) { - var self = this; - self.options = options || {}; - self.proxyOptions = self.options.proxy || {}; - self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets; - self.requests = []; - self.sockets = []; + const payload = readFileSync(resolve(process.argv[3]), "utf8"); + const parsed = parseTweetFileContent(payload, fileState.dir); + console.log("Parsed tweet:", parsed); + console.log(await tweet(fileState, parsed, basename(process.argv[3]))); + return; + } - self.on('free', function onFree(socket, host, port, localAddress) { - var options = toOptions(host, port, localAddress); - for (var i = 0, len = self.requests.length; i < len; ++i) { - var pending = self.requests[i]; - if (pending.host === options.host && pending.port === options.port) { - // Detect the request to connect same origin server, - // reuse the connection. - self.requests.splice(i, 1); - pending.request.onSocket(socket); - return; - } - } - socket.destroy(); - self.removeSocket(socket); - }); + // If not given file flag, assume GitHub Action + const payload = JSON.parse( + readFileSync(process.env.GITHUB_EVENT_PATH, "utf8") + ); + const ref = process.env.GITHUB_REF; + const sha = process.env.GITHUB_SHA; + const dir = process.env.GITHUB_WORKSPACE; + const githubState = { + ...state, + toolkit, + octokit: new Octokit(), + payload, + ref, + sha, + dir, + }; + + switch (process.env.GITHUB_EVENT_NAME) { + case "push": + await handlePush(githubState); + break; + case "pull_request": + await handlePullRequest(githubState); + break; + } } -util.inherits(TunnelingAgent, events.EventEmitter); -TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) { - var self = this; - var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress)); +main().catch((error) => { + console.error(error); + process.exit(1); +}); - if (self.sockets.length >= this.maxSockets) { - // We are over limit so we'll add it to the queue. - self.requests.push(options); - return; - } - // If we are under maxSockets create a new one. - self.createSocket(options, function(socket) { - socket.on('free', onFree); - socket.on('close', onCloseOrRemove); - socket.on('agentRemove', onCloseOrRemove); - req.onSocket(socket); +/***/ }), +/* 527 */, +/* 528 */, +/* 529 */, +/* 530 */ +/***/ (function(module, __unusedexports, __webpack_require__) { - function onFree() { - self.emit('free', socket, options); - } +"use strict"; - function onCloseOrRemove(err) { - self.removeSocket(socket); - socket.removeListener('free', onFree); - socket.removeListener('close', onCloseOrRemove); - socket.removeListener('agentRemove', onCloseOrRemove); - } - }); + +var punycode = __webpack_require__(213); +var mappingTable = __webpack_require__(967); + +var PROCESSING_OPTIONS = { + TRANSITIONAL: 0, + NONTRANSITIONAL: 1 }; -TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { - var self = this; - var placeholder = {}; - self.sockets.push(placeholder); +function normalize(str) { // fix bug in v8 + return str.split('\u0000').map(function (s) { return s.normalize('NFC'); }).join('\u0000'); +} - var connectOptions = mergeOptions({}, self.proxyOptions, { - method: 'CONNECT', - path: options.host + ':' + options.port, - agent: false, - headers: { - host: options.host + ':' + options.port - } - }); - if (options.localAddress) { - connectOptions.localAddress = options.localAddress; - } - if (connectOptions.proxyAuth) { - connectOptions.headers = connectOptions.headers || {}; - connectOptions.headers['Proxy-Authorization'] = 'Basic ' + - new Buffer(connectOptions.proxyAuth).toString('base64'); - } +function findStatus(val) { + var start = 0; + var end = mappingTable.length - 1; - debug('making CONNECT request'); - var connectReq = self.request(connectOptions); - connectReq.useChunkedEncodingByDefault = false; // for v0.6 - connectReq.once('response', onResponse); // for v0.6 - connectReq.once('upgrade', onUpgrade); // for v0.6 - connectReq.once('connect', onConnect); // for v0.7 or later - connectReq.once('error', onError); - connectReq.end(); + while (start <= end) { + var mid = Math.floor((start + end) / 2); - function onResponse(res) { - // Very hacky. This is necessary to avoid http-parser leaks. - res.upgrade = true; + var target = mappingTable[mid]; + if (target[0][0] <= val && target[0][1] >= val) { + return target; + } else if (target[0][0] > val) { + end = mid - 1; + } else { + start = mid + 1; + } } - function onUpgrade(res, socket, head) { - // Hacky. - process.nextTick(function() { - onConnect(res, socket, head); - }); - } + return null; +} - function onConnect(res, socket, head) { - connectReq.removeAllListeners(); - socket.removeAllListeners(); +var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; - if (res.statusCode !== 200) { - debug('tunneling socket could not be established, statusCode=%d', - res.statusCode); - socket.destroy(); - var error = new Error('tunneling socket could not be established, ' + - 'statusCode=' + res.statusCode); - error.code = 'ECONNRESET'; - options.request.emit('error', error); - self.removeSocket(placeholder); - return; - } - if (head.length > 0) { - debug('got illegal response body from proxy'); - socket.destroy(); - var error = new Error('got illegal response body from proxy'); - error.code = 'ECONNRESET'; - options.request.emit('error', error); - self.removeSocket(placeholder); - return; - } - debug('tunneling connection has established'); - self.sockets[self.sockets.indexOf(placeholder)] = socket; - return cb(socket); - } +function countSymbols(string) { + return string + // replace every surrogate pair with a BMP symbol + .replace(regexAstralSymbols, '_') + // then get the length + .length; +} - function onError(cause) { - connectReq.removeAllListeners(); +function mapChars(domain_name, useSTD3, processing_option) { + var hasError = false; + var processed = ""; - debug('tunneling socket could not be established, cause=%s\n', - cause.message, cause.stack); - var error = new Error('tunneling socket could not be established, ' + - 'cause=' + cause.message); - error.code = 'ECONNRESET'; - options.request.emit('error', error); - self.removeSocket(placeholder); - } -}; + var len = countSymbols(domain_name); + for (var i = 0; i < len; ++i) { + var codePoint = domain_name.codePointAt(i); + var status = findStatus(codePoint); -TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { - var pos = this.sockets.indexOf(socket) - if (pos === -1) { - return; - } - this.sockets.splice(pos, 1); + switch (status[1]) { + case "disallowed": + hasError = true; + processed += String.fromCodePoint(codePoint); + break; + case "ignored": + break; + case "mapped": + processed += String.fromCodePoint.apply(String, status[2]); + break; + case "deviation": + if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) { + processed += String.fromCodePoint.apply(String, status[2]); + } else { + processed += String.fromCodePoint(codePoint); + } + break; + case "valid": + processed += String.fromCodePoint(codePoint); + break; + case "disallowed_STD3_mapped": + if (useSTD3) { + hasError = true; + processed += String.fromCodePoint(codePoint); + } else { + processed += String.fromCodePoint.apply(String, status[2]); + } + break; + case "disallowed_STD3_valid": + if (useSTD3) { + hasError = true; + } - var pending = this.requests.shift(); - if (pending) { - // If we have pending requests and a socket gets closed a new one - // needs to be created to take over in the pool for the one that closed. - this.createSocket(pending, function(socket) { - pending.request.onSocket(socket); - }); + processed += String.fromCodePoint(codePoint); + break; + } } -}; - -function createSecureSocket(options, cb) { - var self = this; - TunnelingAgent.prototype.createSocket.call(self, options, function(socket) { - var hostHeader = options.request.getHeader('host'); - var tlsOptions = mergeOptions({}, self.options, { - socket: socket, - servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host - }); - // 0 is dummy port for v0.6 - var secureSocket = tls.connect(0, tlsOptions); - self.sockets[self.sockets.indexOf(socket)] = secureSocket; - cb(secureSocket); - }); + return { + string: processed, + error: hasError + }; } +var combiningMarksRegex = /[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08E4-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D01-\u0D03\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u18A9\u1920-\u192B\u1930-\u193B\u19B0-\u19C0\u19C8\u19C9\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF5\u1DFC-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C4\uA8E0-\uA8F1\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2D]|\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC7F-\uDC82\uDCB0-\uDCBA\uDD00-\uDD02\uDD27-\uDD34\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDE2C-\uDE37\uDEDF-\uDEEA\uDF01-\uDF03\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDCB0-\uDCC3\uDDAF-\uDDB5\uDDB8-\uDDC0\uDE30-\uDE40\uDEAB-\uDEB7]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF51-\uDF7E\uDF8F-\uDF92]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD83A[\uDCD0-\uDCD6]|\uDB40[\uDD00-\uDDEF]/; -function toOptions(host, port, localAddress) { - if (typeof host === 'string') { // since v0.10 - return { - host: host, - port: port, - localAddress: localAddress - }; +function validateLabel(label, processing_option) { + if (label.substr(0, 4) === "xn--") { + label = punycode.toUnicode(label); + processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL; } - return host; // for v0.11 or later -} -function mergeOptions(target) { - for (var i = 1, len = arguments.length; i < len; ++i) { - var overrides = arguments[i]; - if (typeof overrides === 'object') { - var keys = Object.keys(overrides); - for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { - var k = keys[j]; - if (overrides[k] !== undefined) { - target[k] = overrides[k]; - } - } + var error = false; + + if (normalize(label) !== label || + (label[3] === "-" && label[4] === "-") || + label[0] === "-" || label[label.length - 1] === "-" || + label.indexOf(".") !== -1 || + label.search(combiningMarksRegex) === 0) { + error = true; + } + + var len = countSymbols(label); + for (var i = 0; i < len; ++i) { + var status = findStatus(label.codePointAt(i)); + if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== "valid") || + (processing === PROCESSING_OPTIONS.NONTRANSITIONAL && + status[1] !== "valid" && status[1] !== "deviation")) { + error = true; + break; } } - return target; + + return { + label: label, + error: error + }; } +function processing(domain_name, useSTD3, processing_option) { + var result = mapChars(domain_name, useSTD3, processing_option); + result.string = normalize(result.string); -var debug; -if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { - debug = function() { - var args = Array.prototype.slice.call(arguments); - if (typeof args[0] === 'string') { - args[0] = 'TUNNEL: ' + args[0]; - } else { - args.unshift('TUNNEL:'); + var labels = result.string.split("."); + for (var i = 0; i < labels.length; ++i) { + try { + var validation = validateLabel(labels[i]); + labels[i] = validation.label; + result.error = result.error || validation.error; + } catch(e) { + result.error = true; } - console.error.apply(console, args); } -} else { - debug = function() {}; + + return { + string: labels.join("."), + error: result.error + }; } -exports.debug = debug; // for test +module.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) { + var result = processing(domain_name, useSTD3, processing_option); + var labels = result.string.split("."); + labels = labels.map(function(l) { + try { + return punycode.toASCII(l); + } catch(e) { + result.error = true; + return l; + } + }); -/***/ }), + if (verifyDnsLength) { + var total = labels.slice(0, labels.length - 1).join(".").length; + if (total.length > 253 || total.length === 0) { + result.error = true; + } -/***/ 829: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + for (var i=0; i < labels.length; ++i) { + if (labels.length > 63 || labels.length === 0) { + result.error = true; + break; + } + } + } -"use strict"; + if (result.error) return null; + return labels.join("."); +}; +module.exports.toUnicode = function(domain_name, useSTD3) { + var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.TypeName = undefined; -exports.parse = parse; -exports.toCodePoints = toCodePoints; + return { + domain: result.string, + error: result.error + }; +}; -var _regex = __nccwpck_require__(507); +module.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS; -var _regex2 = _interopRequireDefault(_regex); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +/***/ }), +/* 531 */ +/***/ (function(module, exports, __webpack_require__) { -var TypeName = exports.TypeName = 'emoji'; -// Copyright Twitter Inc. Licensed under MIT -// https://github.com/twitter/twemoji-parser/blob/master/LICENSE.md -function parse(text, options) { - var assetType = options && options.assetType ? options.assetType : 'svg'; - var getTwemojiUrl = options && options.buildUrl ? options.buildUrl : function (codepoints, assetType) { - return assetType === 'png' ? 'https://twemoji.maxcdn.com/2/72x72/' + codepoints + '.png' : 'https://twemoji.maxcdn.com/2/svg/' + codepoints + '.svg'; - }; +"use strict"; - var entities = []; - _regex2.default.lastIndex = 0; - while (true) { - var result = _regex2.default.exec(text); - if (!result) { - break; - } +var _interopRequireDefault = __webpack_require__(764); - var emojiText = result[0]; - var codepoints = toCodePoints(removeVS16s(emojiText)).join('-'); +__webpack_require__(493); - entities.push({ - url: codepoints ? getTwemojiUrl(codepoints, assetType) : '', - indices: [result.index, _regex2.default.lastIndex], - text: emojiText, - type: TypeName - }); - } - return entities; -} +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; -var vs16RegExp = /\uFE0F/g; -// avoid using a string literal like '\u200D' here because minifiers expand it inline -var zeroWidthJoiner = String.fromCharCode(0x200d); +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); -var removeVS16s = function removeVS16s(rawEmoji) { - return rawEmoji.indexOf(zeroWidthJoiner) < 0 ? rawEmoji.replace(vs16RegExp, '') : rawEmoji; -}; +var _validDomainChars = _interopRequireDefault(__webpack_require__(823)); -function toCodePoints(unicodeSurrogates) { - var points = []; - var char = 0; - var previous = 0; - var i = 0; - while (i < unicodeSurrogates.length) { - char = unicodeSurrogates.charCodeAt(i++); - if (previous) { - points.push((0x10000 + (previous - 0xd800 << 10) + (char - 0xdc00)).toString(16)); - previous = 0; - } else if (char > 0xd800 && char <= 0xdbff) { - previous = char; - } else { - points.push(char.toString(16)); - } - } - return points; -} +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validSubdomain = (0, _regexSupplant["default"])(/(?:(?:#{validDomainChars}(?:[_-]|#{validDomainChars})*)?#{validDomainChars}\.)/, { + validDomainChars: _validDomainChars["default"] +}); +var _default = validSubdomain; +exports["default"] = _default; +module.exports = exports.default; /***/ }), - -/***/ 507: -/***/ ((__unused_webpack_module, exports) => { +/* 532 */, +/* 533 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -// Copyright Twitter Inc. Licensed under MIT -// https://github.com/twitter/twemoji-parser/blob/master/LICENSE.md +var _interopRequireDefault = __webpack_require__(764); -// This file is auto-generated -exports["default"] = /(?:\ud83d[\udc68\udc69])(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddb0-\uddb3])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f)|[#*0-9]\ufe0f?\u20e3|(?:[©®\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\uddb5\uddb6\uddb8\uddb9\uddd1-\udddd]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a-\udc6d\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\udeeb\udeec\udef4-\udef9]|\ud83e[\udd10-\udd17\udd1d\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd40-\udd45\udd47-\udd70\udd73-\udd76\udd7a\udd7c-\udda2\uddb4\uddb7\uddc0-\uddc2\uddd0\uddde-\uddff]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g; +__webpack_require__(493); -/***/ }), +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; -/***/ 8274: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +var _directionalMarkersGroup = _interopRequireDefault(__webpack_require__(449)); -"use strict"; +var _invalidCharsGroup = _interopRequireDefault(__webpack_require__(148)); -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.FormDataHelper = void 0; -const helpers_1 = __nccwpck_require__(1120); -// This class is partially inspired by https://github.com/form-data/form-data/blob/master/lib/form_data.js -// All credits to their authors. -class FormDataHelper { - constructor() { - this._boundary = ''; - this._chunks = []; - } - bodyAppend(...values) { - const allAsBuffer = values.map(val => val instanceof Buffer ? val : Buffer.from(val)); - this._chunks.push(...allAsBuffer); - } - append(field, value, contentType) { - const convertedValue = value instanceof Buffer ? value : value.toString(); - const header = this.getMultipartHeader(field, convertedValue, contentType); - this.bodyAppend(header, convertedValue, FormDataHelper.LINE_BREAK); - } - getHeaders() { - return { - 'content-type': 'multipart/form-data; boundary=' + this.getBoundary(), - }; - } - /** Length of form-data (including footer length). */ - getLength() { - return this._chunks.reduce((acc, cur) => acc + cur.length, this.getMultipartFooter().length); - } - getBuffer() { - const allChunks = [...this._chunks, this.getMultipartFooter()]; - const totalBuffer = Buffer.alloc(this.getLength()); - let i = 0; - for (const chunk of allChunks) { - for (let j = 0; j < chunk.length; i++, j++) { - totalBuffer[i] = chunk[j]; - } - } - return totalBuffer; - } - getBoundary() { - if (!this._boundary) { - this.generateBoundary(); - } - return this._boundary; - } - generateBoundary() { - // This generates a 50 character boundary similar to those used by Firefox. - let boundary = '--------------------------'; - for (let i = 0; i < 24; i++) { - boundary += Math.floor(Math.random() * 10).toString(16); - } - this._boundary = boundary; - } - getMultipartHeader(field, value, contentType) { - // In this lib no need to guess more the content type, octet stream is ok of buffers - if (!contentType) { - contentType = value instanceof Buffer ? FormDataHelper.DEFAULT_CONTENT_TYPE : ''; - } - const headers = { - 'Content-Disposition': ['form-data', `name="${field}"`], - 'Content-Type': contentType, - }; - let contents = ''; - for (const [prop, header] of Object.entries(headers)) { - // skip nullish headers. - if (!header.length) { - continue; - } - contents += prop + ': ' + (0, helpers_1.arrayWrap)(header).join('; ') + FormDataHelper.LINE_BREAK; - } - return '--' + this.getBoundary() + FormDataHelper.LINE_BREAK + contents + FormDataHelper.LINE_BREAK; - } - getMultipartFooter() { - if (this._footerChunk) { - return this._footerChunk; - } - return this._footerChunk = Buffer.from('--' + this.getBoundary() + '--' + FormDataHelper.LINE_BREAK); - } -} -exports.FormDataHelper = FormDataHelper; -FormDataHelper.LINE_BREAK = '\r\n'; -FormDataHelper.DEFAULT_CONTENT_TYPE = 'application/octet-stream'; +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validUrlPrecedingChars = (0, _regexSupplant["default"])(/(?:[^A-Za-z0-9@@$###{invalidCharsGroup}]|[#{directionalMarkersGroup}]|^)/, { + invalidCharsGroup: _invalidCharsGroup["default"], + directionalMarkersGroup: _directionalMarkersGroup["default"] +}); +var _default = validUrlPrecedingChars; +exports["default"] = _default; +module.exports = exports.default; /***/ }), - -/***/ 8291: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { +/* 534 */, +/* 535 */, +/* 536 */, +/* 537 */ +/***/ (function(__unusedmodule, exports) { "use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.OAuth1Helper = void 0; -const crypto = __importStar(__nccwpck_require__(6113)); -class OAuth1Helper { - constructor(options) { - this.nonceLength = 32; - this.consumerKeys = options.consumerKeys; - } - static percentEncode(str) { - return encodeURIComponent(str) - .replace(/!/g, '%21') - .replace(/\*/g, '%2A') - .replace(/'/g, '%27') - .replace(/\(/g, '%28') - .replace(/\)/g, '%29'); - } - hash(base, key) { - return crypto - .createHmac('sha1', key) - .update(base) - .digest('base64'); - } - authorize(request, accessTokens = {}) { - const oauthInfo = { - oauth_consumer_key: this.consumerKeys.key, - oauth_nonce: this.getNonce(), - oauth_signature_method: 'HMAC-SHA1', - oauth_timestamp: this.getTimestamp(), - oauth_version: '1.0', - }; - if (accessTokens.key !== undefined) { - oauthInfo.oauth_token = accessTokens.key; - } - if (!request.data) { - request.data = {}; - } - oauthInfo.oauth_signature = this.getSignature(request, accessTokens.secret, oauthInfo); - return oauthInfo; - } - toHeader(oauthInfo) { - const sorted = sortObject(oauthInfo); - let header_value = 'OAuth '; - for (const element of sorted) { - if (element.key.indexOf('oauth_') !== 0) { - continue; - } - header_value += OAuth1Helper.percentEncode(element.key) + '="' + OAuth1Helper.percentEncode(element.value) + '",'; - } - return { - // Remove the last , - Authorization: header_value.slice(0, header_value.length - 1), - }; - } - getNonce() { - const wordCharacters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; - let result = ''; - for (let i = 0; i < this.nonceLength; i++) { - result += wordCharacters[Math.trunc(Math.random() * wordCharacters.length)]; - } - return result; - } - getTimestamp() { - return Math.trunc(new Date().getTime() / 1000); - } - getSignature(request, tokenSecret, oauthInfo) { - return this.hash(this.getBaseString(request, oauthInfo), this.getSigningKey(tokenSecret)); - } - getSigningKey(tokenSecret) { - return OAuth1Helper.percentEncode(this.consumerKeys.secret) + '&' + OAuth1Helper.percentEncode(tokenSecret || ''); - } - getBaseString(request, oauthInfo) { - return request.method.toUpperCase() + '&' - + OAuth1Helper.percentEncode(this.getBaseUrl(request.url)) + '&' - + OAuth1Helper.percentEncode(this.getParameterString(request, oauthInfo)); - } - getParameterString(request, oauthInfo) { - const baseStringData = sortObject(percentEncodeData(mergeObject(oauthInfo, mergeObject(request.data, deParamUrl(request.url))))); - let dataStr = ''; - for (const { key, value } of baseStringData) { - // check if the value is an array - // this means that this key has multiple values - if (value && Array.isArray(value)) { - // sort the array first - value.sort(); - let valString = ''; - // serialize all values for this key: e.g. formkey=formvalue1&formkey=formvalue2 - value.forEach((item, i) => { - valString += key + '=' + item; - if (i < value.length) { - valString += '&'; - } - }); - dataStr += valString; - } - else { - dataStr += key + '=' + value + '&'; - } - } - // Remove the last character - return dataStr.slice(0, dataStr.length - 1); - } - getBaseUrl(url) { - return url.split('?')[0]; - } -} -exports.OAuth1Helper = OAuth1Helper; -exports["default"] = OAuth1Helper; -// Helper functions // -function mergeObject(obj1, obj2) { - return { - ...obj1 || {}, - ...obj2 || {}, - }; -} -function sortObject(data) { - return Object.keys(data) - .sort() - .map(key => ({ key, value: data[key] })); -} -function deParam(string) { - const splitted = string.split('&'); - const data = {}; - for (const coupleKeyValue of splitted) { - const [key, value = ''] = coupleKeyValue.split('='); - // check if the key already exists - // this can occur if the QS part of the url contains duplicate keys like this: ?formkey=formvalue1&formkey=formvalue2 - if (data[key]) { - // the key exists already - if (!Array.isArray(data[key])) { - // replace the value with an array containing the already present value - data[key] = [data[key]]; - } - // and add the new found value to it - data[key].push(decodeURIComponent(value)); - } - else { - // it doesn't exist, just put the found value in the data object - data[key] = decodeURIComponent(value); - } - } - return data; -} -function deParamUrl(url) { - const tmp = url.split('?'); - if (tmp.length === 1) - return {}; - return deParam(tmp[1]); -} -function percentEncodeData(data) { - const result = {}; - for (const key in data) { - let value = data[key]; - // check if the value is an array - if (value && Array.isArray(value)) { - value = value.map(v => OAuth1Helper.percentEncode(v)); - } - else { - value = OAuth1Helper.percentEncode(value); - } - result[OAuth1Helper.percentEncode(key)] = value; - } - return result; +Object.defineProperty(exports, "__esModule", { value: true }); +function promisify(fn) { + return function (req, opts) { + return new Promise((resolve, reject) => { + fn.call(this, req, opts, (err, rtn) => { + if (err) { + reject(err); + } + else { + resolve(rtn); + } + }); + }); + }; } - +exports.default = promisify; +//# sourceMappingURL=promisify.js.map /***/ }), +/* 538 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 9791: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { +// Copyright 2015 Joyent, Inc. -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; +module.exports = { + read: read.bind(undefined, false, undefined), + readType: read.bind(undefined, false), + write: write, + /* semi-private api, used by sshpk-agent */ + readPartial: read.bind(undefined, true), + + /* shared with ssh format */ + readInternal: read, + keyTypeToAlg: keyTypeToAlg, + algToKeyType: algToKeyType }; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.OAuth2Helper = void 0; -const crypto = __importStar(__nccwpck_require__(6113)); -class OAuth2Helper { - static getCodeVerifier() { - return this.generateRandomString(128); - } - static getCodeChallengeFromVerifier(verifier) { - return this.escapeBase64Url(crypto - .createHash('sha256') - .update(verifier) - .digest('base64')); - } - static getAuthHeader(clientId, clientSecret) { - const key = encodeURIComponent(clientId) + ':' + encodeURIComponent(clientSecret); - return Buffer.from(key).toString('base64'); - } - static generateRandomString(length) { - let text = ''; - const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~'; - for (let i = 0; i < length; i++) { - text += possible[Math.floor(Math.random() * possible.length)]; - } - return text; - } - static escapeBase64Url(string) { - return string.replace(/=/g, '').replace(/\+/g, '-').replace(/\//g, '_'); - } -} -exports.OAuth2Helper = OAuth2Helper; +var assert = __webpack_require__(489); +var Buffer = __webpack_require__(726).Buffer; +var algs = __webpack_require__(603); +var utils = __webpack_require__(270); +var Key = __webpack_require__(500); +var PrivateKey = __webpack_require__(502); +var SSHBuffer = __webpack_require__(940); + +function algToKeyType(alg) { + assert.string(alg); + if (alg === 'ssh-dss') + return ('dsa'); + else if (alg === 'ssh-rsa') + return ('rsa'); + else if (alg === 'ssh-ed25519') + return ('ed25519'); + else if (alg === 'ssh-curve25519') + return ('curve25519'); + else if (alg.match(/^ecdsa-sha2-/)) + return ('ecdsa'); + else + throw (new Error('Unknown algorithm ' + alg)); +} + +function keyTypeToAlg(key) { + assert.object(key); + if (key.type === 'dsa') + return ('ssh-dss'); + else if (key.type === 'rsa') + return ('ssh-rsa'); + else if (key.type === 'ed25519') + return ('ssh-ed25519'); + else if (key.type === 'curve25519') + return ('ssh-curve25519'); + else if (key.type === 'ecdsa') + return ('ecdsa-sha2-' + key.part.curve.data.toString()); + else + throw (new Error('Unknown key type ' + key.type)); +} + +function read(partial, type, buf, options) { + if (typeof (buf) === 'string') + buf = Buffer.from(buf); + assert.buffer(buf, 'buf'); + + var key = {}; + + var parts = key.parts = []; + var sshbuf = new SSHBuffer({buffer: buf}); + + var alg = sshbuf.readString(); + assert.ok(!sshbuf.atEnd(), 'key must have at least one part'); + + key.type = algToKeyType(alg); + + var partCount = algs.info[key.type].parts.length; + if (type && type === 'private') + partCount = algs.privInfo[key.type].parts.length; + + while (!sshbuf.atEnd() && parts.length < partCount) + parts.push(sshbuf.readPart()); + while (!partial && !sshbuf.atEnd()) + parts.push(sshbuf.readPart()); + + assert.ok(parts.length >= 1, + 'key must have at least one part'); + assert.ok(partial || sshbuf.atEnd(), + 'leftover bytes at end of key'); + + var Constructor = Key; + var algInfo = algs.info[key.type]; + if (type === 'private' || algInfo.parts.length !== parts.length) { + algInfo = algs.privInfo[key.type]; + Constructor = PrivateKey; + } + assert.strictEqual(algInfo.parts.length, parts.length); -/***/ }), + if (key.type === 'ecdsa') { + var res = /^ecdsa-sha2-(.+)$/.exec(alg); + assert.ok(res !== null); + assert.strictEqual(res[1], parts[0].data.toString()); + } -/***/ 3768: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + var normalized = true; + for (var i = 0; i < algInfo.parts.length; ++i) { + var p = parts[i]; + p.name = algInfo.parts[i]; + /* + * OpenSSH stores ed25519 "private" keys as seed + public key + * concat'd together (k followed by A). We want to keep them + * separate for other formats that don't do this. + */ + if (key.type === 'ed25519' && p.name === 'k') + p.data = p.data.slice(0, 32); + + if (p.name !== 'curve' && algInfo.normalize !== false) { + var nd; + if (key.type === 'ed25519') { + nd = utils.zeroPadToLength(p.data, 32); + } else { + nd = utils.mpNormalize(p.data); + } + if (nd.toString('binary') !== + p.data.toString('binary')) { + p.data = nd; + normalized = false; + } + } + } -"use strict"; + if (normalized) + key._rfc4253Cache = sshbuf.toBuffer(); -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.RequestHandlerHelper = void 0; -const https_1 = __nccwpck_require__(5687); -const settings_1 = __nccwpck_require__(6273); -const TweetStream_1 = __importDefault(__nccwpck_require__(9362)); -const types_1 = __nccwpck_require__(1638); -const zlib = __importStar(__nccwpck_require__(9796)); -class RequestHandlerHelper { - constructor(requestData) { - this.requestData = requestData; - this.requestErrorHandled = false; - this.responseData = []; - } - /* Request helpers */ - get hrefPathname() { - const url = this.requestData.url; - return url.hostname + url.pathname; - } - isCompressionDisabled() { - return !this.requestData.compression || this.requestData.compression === 'identity'; - } - isFormEncodedEndpoint() { - return this.requestData.url.href.startsWith('https://api.twitter.com/oauth/'); - } - /* Error helpers */ - createRequestError(error) { - if (settings_1.TwitterApiV2Settings.debug) { - settings_1.TwitterApiV2Settings.logger.log('Request error:', error); - } - return new types_1.ApiRequestError('Request failed.', { - request: this.req, - error, - }); - } - createPartialResponseError(error, abortClose) { - const res = this.res; - let message = `Request failed with partial response with HTTP code ${res.statusCode}`; - if (abortClose) { - message += ' (connection abruptly closed)'; - } - else { - message += ' (parse error)'; - } - return new types_1.ApiPartialResponseError(message, { - request: this.req, - response: this.res, - responseError: error, - rawContent: Buffer.concat(this.responseData).toString(), - }); - } - formatV1Errors(errors) { - return errors - .map(({ code, message }) => `${message} (Twitter code ${code})`) - .join(', '); - } - formatV2Error(error) { - return `${error.title}: ${error.detail} (see ${error.type})`; - } - createResponseError({ res, data, rateLimit, code }) { - var _a; - if (settings_1.TwitterApiV2Settings.debug) { - settings_1.TwitterApiV2Settings.logger.log(`Request failed with code ${code}, data:`, data); - settings_1.TwitterApiV2Settings.logger.log('Response headers:', res.headers); - } - // Errors formatting. - let errorString = `Request failed with code ${code}`; - if ((_a = data === null || data === void 0 ? void 0 : data.errors) === null || _a === void 0 ? void 0 : _a.length) { - const errors = data.errors; - if ('code' in errors[0]) { - errorString += ' - ' + this.formatV1Errors(errors); - } - else { - errorString += ' - ' + this.formatV2Error(data); - } - } - return new types_1.ApiResponseError(errorString, { - code, - data, - headers: res.headers, - request: this.req, - response: res, - rateLimit, - }); - } - /* Response helpers */ - getResponseDataStream(res) { - if (this.isCompressionDisabled()) { - return res; - } - const contentEncoding = (res.headers['content-encoding'] || 'identity').trim().toLowerCase(); - if (contentEncoding === 'br') { - const brotli = zlib.createBrotliDecompress({ - flush: zlib.constants.BROTLI_OPERATION_FLUSH, - finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH, - }); - res.pipe(brotli); - return brotli; - } - if (contentEncoding === 'gzip') { - const gunzip = zlib.createGunzip({ - flush: zlib.constants.Z_SYNC_FLUSH, - finishFlush: zlib.constants.Z_SYNC_FLUSH, - }); - res.pipe(gunzip); - return gunzip; - } - if (contentEncoding === 'deflate') { - const inflate = zlib.createInflate({ - flush: zlib.constants.Z_SYNC_FLUSH, - finishFlush: zlib.constants.Z_SYNC_FLUSH, - }); - res.pipe(inflate); - return inflate; - } - return res; - } - detectResponseType(res) { - var _a, _b; - // Auto parse if server responds with JSON body - if (((_a = res.headers['content-type']) === null || _a === void 0 ? void 0 : _a.includes('application/json')) || ((_b = res.headers['content-type']) === null || _b === void 0 ? void 0 : _b.includes('application/problem+json'))) { - return 'json'; - } - // f-e oauth token endpoints - else if (this.isFormEncodedEndpoint()) { - return 'url'; - } - return 'text'; - } - getParsedResponse(res) { - const data = this.responseData; - const mode = this.requestData.forceParseMode || this.detectResponseType(res); - if (mode === 'buffer') { - return Buffer.concat(data); - } - else if (mode === 'text') { - return Buffer.concat(data).toString(); - } - else if (mode === 'json') { - const asText = Buffer.concat(data).toString(); - return asText.length ? JSON.parse(asText) : undefined; - } - else if (mode === 'url') { - const asText = Buffer.concat(data).toString(); - const formEntries = {}; - for (const [item, value] of new URLSearchParams(asText)) { - formEntries[item] = value; - } - return formEntries; - } - else { - // mode === 'none' - return undefined; - } - } - getRateLimitFromResponse(res) { - let rateLimit = undefined; - if (res.headers['x-rate-limit-limit']) { - rateLimit = { - limit: Number(res.headers['x-rate-limit-limit']), - remaining: Number(res.headers['x-rate-limit-remaining']), - reset: Number(res.headers['x-rate-limit-reset']), - }; - if (this.requestData.rateLimitSaver) { - this.requestData.rateLimitSaver(rateLimit); - } - } - return rateLimit; - } - /* Request event handlers */ - onSocketEventHandler(reject, socket) { - socket.on('close', this.onSocketCloseHandler.bind(this, reject)); - } - onSocketCloseHandler(reject) { - this.req.removeAllListeners('timeout'); - const res = this.res; - if (res) { - // Response ok, res.close/res.end can handle request ending - return; - } - if (!this.requestErrorHandled) { - return reject(this.createRequestError(new Error('Socket closed without any information.'))); - } - // else: other situation - } - requestErrorHandler(reject, requestError) { - var _a, _b; - (_b = (_a = this.requestData).requestEventDebugHandler) === null || _b === void 0 ? void 0 : _b.call(_a, 'request-error', { requestError }); - this.requestErrorHandled = true; - reject(this.createRequestError(requestError)); - } - timeoutErrorHandler() { - this.requestErrorHandled = true; - this.req.destroy(new Error('Request timeout.')); - } - /* Response event handlers */ - classicResponseHandler(resolve, reject, res) { - this.res = res; - const dataStream = this.getResponseDataStream(res); - // Register the response data - dataStream.on('data', chunk => this.responseData.push(chunk)); - dataStream.on('end', this.onResponseEndHandler.bind(this, resolve, reject)); - dataStream.on('close', this.onResponseCloseHandler.bind(this, resolve, reject)); - // Debug handlers - if (this.requestData.requestEventDebugHandler) { - this.requestData.requestEventDebugHandler('response', { res }); - res.on('aborted', error => this.requestData.requestEventDebugHandler('response-aborted', { error })); - res.on('error', error => this.requestData.requestEventDebugHandler('response-error', { error })); - res.on('close', () => this.requestData.requestEventDebugHandler('response-close', { data: this.responseData })); - res.on('end', () => this.requestData.requestEventDebugHandler('response-end')); - } - } - onResponseEndHandler(resolve, reject) { - const rateLimit = this.getRateLimitFromResponse(this.res); - let data; - try { - data = this.getParsedResponse(this.res); - } - catch (e) { - reject(this.createPartialResponseError(e, false)); - return; - } - // Handle bad error codes - const code = this.res.statusCode; - if (code >= 400) { - reject(this.createResponseError({ data, res: this.res, rateLimit, code })); - return; - } - if (settings_1.TwitterApiV2Settings.debug) { - settings_1.TwitterApiV2Settings.logger.log(`[${this.requestData.options.method} ${this.hrefPathname}]: Request succeeds with code ${this.res.statusCode}`); - settings_1.TwitterApiV2Settings.logger.log('Response body:', data); - } - resolve({ - data, - headers: this.res.headers, - rateLimit, - }); - } - onResponseCloseHandler(resolve, reject) { - const res = this.res; - if (res.aborted) { - // Try to parse the request (?) - try { - this.getParsedResponse(this.res); - // Ok, try to resolve normally the request - return this.onResponseEndHandler(resolve, reject); - } - catch (e) { - // Parse error, just drop with content - return reject(this.createPartialResponseError(e, true)); - } - } - if (!res.complete) { - return reject(this.createPartialResponseError(new Error('Response has been interrupted before response could be parsed.'), true)); - } - // else: end has been called - } - streamResponseHandler(resolve, reject, res) { - const code = res.statusCode; - if (code < 400) { - if (settings_1.TwitterApiV2Settings.debug) { - settings_1.TwitterApiV2Settings.logger.log(`[${this.requestData.options.method} ${this.hrefPathname}]: Request succeeds with code ${res.statusCode} (starting stream)`); - } - const dataStream = this.getResponseDataStream(res); - // HTTP code ok, consume stream - resolve({ req: this.req, res: dataStream, originalResponse: res, requestData: this.requestData }); - } - else { - // Handle response normally, can only rejects - this.classicResponseHandler(() => undefined, reject, res); - } - } - /* Wrappers for request lifecycle */ - debugRequest() { - const url = this.requestData.url; - settings_1.TwitterApiV2Settings.logger.log(`[${this.requestData.options.method} ${this.hrefPathname}]`, this.requestData.options); - if (url.search) { - settings_1.TwitterApiV2Settings.logger.log('Request parameters:', [...url.searchParams.entries()].map(([key, value]) => `${key}: ${value}`)); - } - if (this.requestData.body) { - settings_1.TwitterApiV2Settings.logger.log('Request body:', this.requestData.body); - } - } - buildRequest() { - var _a; - const url = this.requestData.url; - const auth = url.username ? `${url.username}:${url.password}` : undefined; - const headers = (_a = this.requestData.options.headers) !== null && _a !== void 0 ? _a : {}; - if (this.requestData.compression === true || this.requestData.compression === 'brotli') { - headers['accept-encoding'] = 'br;q=1.0, gzip;q=0.8, deflate;q=0.5, *;q=0.1'; - } - else if (this.requestData.compression === 'gzip') { - headers['accept-encoding'] = 'gzip;q=1, deflate;q=0.5, *;q=0.1'; - } - else if (this.requestData.compression === 'deflate') { - headers['accept-encoding'] = 'deflate;q=1, *;q=0.1'; - } - if (settings_1.TwitterApiV2Settings.debug) { - this.debugRequest(); - } - this.req = (0, https_1.request)({ - ...this.requestData.options, - // Define URL params manually, addresses dependencies error https://github.com/PLhery/node-twitter-api-v2/issues/94 - host: url.hostname, - port: url.port || undefined, - path: url.pathname + url.search, - protocol: url.protocol, - auth, - headers, - }); - } - registerRequestEventDebugHandlers(req) { - req.on('close', () => this.requestData.requestEventDebugHandler('close')); - req.on('abort', () => this.requestData.requestEventDebugHandler('abort')); - req.on('socket', socket => { - this.requestData.requestEventDebugHandler('socket', { socket }); - socket.on('error', error => this.requestData.requestEventDebugHandler('socket-error', { socket, error })); - socket.on('connect', () => this.requestData.requestEventDebugHandler('socket-connect', { socket })); - socket.on('close', withError => this.requestData.requestEventDebugHandler('socket-close', { socket, withError })); - socket.on('end', () => this.requestData.requestEventDebugHandler('socket-end', { socket })); - socket.on('lookup', (...data) => this.requestData.requestEventDebugHandler('socket-lookup', { socket, data })); - socket.on('timeout', () => this.requestData.requestEventDebugHandler('socket-timeout', { socket })); - }); - } - makeRequest() { - this.buildRequest(); - return new Promise((resolve, reject) => { - const req = this.req; - // Handle request errors - req.on('error', this.requestErrorHandler.bind(this, reject)); - req.on('socket', this.onSocketEventHandler.bind(this, reject)); - req.on('response', this.classicResponseHandler.bind(this, resolve, reject)); - if (this.requestData.options.timeout) { - req.on('timeout', this.timeoutErrorHandler.bind(this)); - } - // Debug handlers - if (this.requestData.requestEventDebugHandler) { - this.registerRequestEventDebugHandlers(req); - } - if (this.requestData.body) { - req.write(this.requestData.body); - } - req.end(); - }); - } - async makeRequestAsStream() { - const { req, res, requestData, originalResponse } = await this.makeRequestAndResolveWhenReady(); - return new TweetStream_1.default(requestData, { req, res, originalResponse }); - } - makeRequestAndResolveWhenReady() { - this.buildRequest(); - return new Promise((resolve, reject) => { - const req = this.req; - // Handle request errors - req.on('error', this.requestErrorHandler.bind(this, reject)); - req.on('response', this.streamResponseHandler.bind(this, resolve, reject)); - if (this.requestData.body) { - req.write(this.requestData.body); - } - req.end(); - }); - } + if (partial && typeof (partial) === 'object') { + partial.remainder = sshbuf.remainder(); + partial.consumed = sshbuf._offset; + } + + return (new Constructor(key)); } -exports.RequestHandlerHelper = RequestHandlerHelper; -exports["default"] = RequestHandlerHelper; +function write(key, options) { + assert.object(key); -/***/ }), + var alg = keyTypeToAlg(key); + var i; -/***/ 6131: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + var algInfo = algs.info[key.type]; + if (PrivateKey.isPrivateKey(key)) + algInfo = algs.privInfo[key.type]; + var parts = algInfo.parts; -"use strict"; + var buf = new SSHBuffer({}); -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.ClientRequestMaker = void 0; -const types_1 = __nccwpck_require__(1638); -const TweetStream_1 = __importDefault(__nccwpck_require__(9362)); -const helpers_1 = __nccwpck_require__(247); -const helpers_2 = __nccwpck_require__(1120); -const oauth1_helper_1 = __importDefault(__nccwpck_require__(8291)); -const request_handler_helper_1 = __importDefault(__nccwpck_require__(3768)); -const request_param_helper_1 = __importDefault(__nccwpck_require__(7954)); -const oauth2_helper_1 = __nccwpck_require__(9791); -class ClientRequestMaker { - constructor(settings) { - this.rateLimits = {}; - this.clientSettings = {}; - if (settings) { - this.clientSettings = settings; - } - } - /** @deprecated - Switch to `@twitter-api-v2/plugin-rate-limit` */ - getRateLimits() { - return this.rateLimits; - } - saveRateLimit(originalUrl, rateLimit) { - this.rateLimits[originalUrl] = rateLimit; - } - /** Send a new request and returns a wrapped `Promise`. */ - async send(requestParams) { - var _a, _b, _c, _d, _e; - // Pre-request config hooks - if ((_a = this.clientSettings.plugins) === null || _a === void 0 ? void 0 : _a.length) { - const possibleResponse = await this.applyPreRequestConfigHooks(requestParams); - if (possibleResponse) { - return possibleResponse; - } - } - const args = this.getHttpRequestArgs(requestParams); - const options = { - method: args.method, - headers: args.headers, - timeout: requestParams.timeout, - agent: this.clientSettings.httpAgent, - }; - const enableRateLimitSave = requestParams.enableRateLimitSave !== false; - if (args.body) { - request_param_helper_1.default.setBodyLengthHeader(options, args.body); - } - // Pre-request hooks - if ((_b = this.clientSettings.plugins) === null || _b === void 0 ? void 0 : _b.length) { - await this.applyPreRequestHooks(requestParams, args, options); - } - let request = new request_handler_helper_1.default({ - url: args.url, - options, - body: args.body, - rateLimitSaver: enableRateLimitSave ? this.saveRateLimit.bind(this, args.rawUrl) : undefined, - requestEventDebugHandler: requestParams.requestEventDebugHandler, - compression: (_d = (_c = requestParams.compression) !== null && _c !== void 0 ? _c : this.clientSettings.compression) !== null && _d !== void 0 ? _d : true, - forceParseMode: requestParams.forceParseMode, - }) - .makeRequest(); - if ((0, helpers_1.hasRequestErrorPlugins)(this)) { - request = this.applyResponseErrorHooks(requestParams, args, options, request); - } - const response = await request; - // Post-request hooks - if ((_e = this.clientSettings.plugins) === null || _e === void 0 ? void 0 : _e.length) { - const responseOverride = await this.applyPostRequestHooks(requestParams, args, options, response); - if (responseOverride) { - return responseOverride.value; - } - } - return response; - } - sendStream(requestParams) { - var _a, _b; - // Pre-request hooks - if (this.clientSettings.plugins) { - this.applyPreStreamRequestConfigHooks(requestParams); - } - const args = this.getHttpRequestArgs(requestParams); - const options = { - method: args.method, - headers: args.headers, - agent: this.clientSettings.httpAgent, - }; - const enableRateLimitSave = requestParams.enableRateLimitSave !== false; - const enableAutoConnect = requestParams.autoConnect !== false; - if (args.body) { - request_param_helper_1.default.setBodyLengthHeader(options, args.body); - } - const requestData = { - url: args.url, - options, - body: args.body, - rateLimitSaver: enableRateLimitSave ? this.saveRateLimit.bind(this, args.rawUrl) : undefined, - payloadIsError: requestParams.payloadIsError, - compression: (_b = (_a = requestParams.compression) !== null && _a !== void 0 ? _a : this.clientSettings.compression) !== null && _b !== void 0 ? _b : true, - }; - const stream = new TweetStream_1.default(requestData); - if (!enableAutoConnect) { - return stream; - } - return stream.connect(); - } - /* Token helpers */ - initializeToken(token) { - if (typeof token === 'string') { - this.bearerToken = token; - } - else if (typeof token === 'object' && 'appKey' in token) { - this.consumerToken = token.appKey; - this.consumerSecret = token.appSecret; - if (token.accessToken && token.accessSecret) { - this.accessToken = token.accessToken; - this.accessSecret = token.accessSecret; - } - this._oauth = this.buildOAuth(); - } - else if (typeof token === 'object' && 'username' in token) { - const key = encodeURIComponent(token.username) + ':' + encodeURIComponent(token.password); - this.basicToken = Buffer.from(key).toString('base64'); - } - else if (typeof token === 'object' && 'clientId' in token) { - this.clientId = token.clientId; - this.clientSecret = token.clientSecret; - } - } - getActiveTokens() { - if (this.bearerToken) { - return { - type: 'oauth2', - bearerToken: this.bearerToken, - }; - } - else if (this.basicToken) { - return { - type: 'basic', - token: this.basicToken, - }; - } - else if (this.consumerSecret && this._oauth) { - return { - type: 'oauth-1.0a', - appKey: this.consumerToken, - appSecret: this.consumerSecret, - accessToken: this.accessToken, - accessSecret: this.accessSecret, - }; - } - else if (this.clientId) { - return { - type: 'oauth2-user', - clientId: this.clientId, - }; - } - return { type: 'none' }; - } - buildOAuth() { - if (!this.consumerSecret || !this.consumerToken) - throw new Error('Invalid consumer tokens'); - return new oauth1_helper_1.default({ - consumerKeys: { key: this.consumerToken, secret: this.consumerSecret }, - }); - } - getOAuthAccessTokens() { - if (!this.accessSecret || !this.accessToken) - return; - return { - key: this.accessToken, - secret: this.accessSecret, - }; - } - /* Plugin helpers */ - getPlugins() { - var _a; - return (_a = this.clientSettings.plugins) !== null && _a !== void 0 ? _a : []; - } - hasPlugins() { - var _a; - return !!((_a = this.clientSettings.plugins) === null || _a === void 0 ? void 0 : _a.length); - } - async applyPluginMethod(method, args) { - var _a; - let returnValue; - for (const plugin of this.getPlugins()) { - const value = await ((_a = plugin[method]) === null || _a === void 0 ? void 0 : _a.call(plugin, args)); - if (value && value instanceof types_1.TwitterApiPluginResponseOverride) { - returnValue = value; - } - } - return returnValue; - } - /* Request helpers */ - writeAuthHeaders({ headers, bodyInSignature, url, method, query, body }) { - headers = { ...headers }; - if (this.bearerToken) { - headers.Authorization = 'Bearer ' + this.bearerToken; - } - else if (this.basicToken) { - // Basic auth, to request a bearer token - headers.Authorization = 'Basic ' + this.basicToken; - } - else if (this.clientId && this.clientSecret) { - // Basic auth with clientId + clientSecret - headers.Authorization = 'Basic ' + oauth2_helper_1.OAuth2Helper.getAuthHeader(this.clientId, this.clientSecret); - } - else if (this.consumerSecret && this._oauth) { - // Merge query and body - const data = bodyInSignature ? request_param_helper_1.default.mergeQueryAndBodyForOAuth(query, body) : query; - const auth = this._oauth.authorize({ - url: url.toString(), - method, - data, - }, this.getOAuthAccessTokens()); - headers = { ...headers, ...this._oauth.toHeader(auth) }; - } - return headers; - } - getUrlObjectFromUrlString(url) { - // Add protocol to URL if needed - if (!url.startsWith('http')) { - url = 'https://' + url; - } - // Convert URL to object that will receive all URL modifications - return new URL(url); - } - getHttpRequestArgs({ url: stringUrl, method, query: rawQuery = {}, body: rawBody = {}, headers, forceBodyMode, enableAuth, params, }) { - let body = undefined; - method = method.toUpperCase(); - headers = headers !== null && headers !== void 0 ? headers : {}; - // Add user agent header (Twitter recommends it) - if (!headers['x-user-agent']) { - headers['x-user-agent'] = 'Node.twitter-api-v2'; - } - const url = this.getUrlObjectFromUrlString(stringUrl); - // URL without query string to save as endpoint name - const rawUrl = url.origin + url.pathname; - // Apply URL parameters - if (params) { - request_param_helper_1.default.applyRequestParametersToUrl(url, params); - } - // Build a URL without anything in QS, and QSP in query - const query = request_param_helper_1.default.formatQueryToString(rawQuery); - request_param_helper_1.default.moveUrlQueryParamsIntoObject(url, query); - // Delete undefined parameters - if (!(rawBody instanceof Buffer)) { - (0, helpers_2.trimUndefinedProperties)(rawBody); - } - // OAuth signature should not include parameters when using multipart. - const bodyType = forceBodyMode !== null && forceBodyMode !== void 0 ? forceBodyMode : request_param_helper_1.default.autoDetectBodyType(url); - // If undefined or true, enable auth by headers - if (enableAuth !== false) { - // OAuth needs body signature only if body is URL encoded. - const bodyInSignature = ClientRequestMaker.BODY_METHODS.has(method) && bodyType === 'url'; - headers = this.writeAuthHeaders({ headers, bodyInSignature, method, query, url, body: rawBody }); - } - if (ClientRequestMaker.BODY_METHODS.has(method)) { - body = request_param_helper_1.default.constructBodyParams(rawBody, headers, bodyType) || undefined; - } - request_param_helper_1.default.addQueryParamsToUrl(url, query); - return { - rawUrl, - url, - method, - headers, - body, - }; - } - /* Plugin helpers */ - async applyPreRequestConfigHooks(requestParams) { - var _a; - const url = this.getUrlObjectFromUrlString(requestParams.url); - for (const plugin of this.getPlugins()) { - const result = await ((_a = plugin.onBeforeRequestConfig) === null || _a === void 0 ? void 0 : _a.call(plugin, { - client: this, - url, - params: requestParams, - })); - if (result) { - return result; - } - } - } - applyPreStreamRequestConfigHooks(requestParams) { - var _a; - const url = this.getUrlObjectFromUrlString(requestParams.url); - for (const plugin of this.getPlugins()) { - (_a = plugin.onBeforeStreamRequestConfig) === null || _a === void 0 ? void 0 : _a.call(plugin, { - client: this, - url, - params: requestParams, - }); - } - } - async applyPreRequestHooks(requestParams, computedParams, requestOptions) { - await this.applyPluginMethod('onBeforeRequest', { - client: this, - url: this.getUrlObjectFromUrlString(requestParams.url), - params: requestParams, - computedParams, - requestOptions, - }); - } - async applyPostRequestHooks(requestParams, computedParams, requestOptions, response) { - return await this.applyPluginMethod('onAfterRequest', { - client: this, - url: this.getUrlObjectFromUrlString(requestParams.url), - params: requestParams, - computedParams, - requestOptions, - response, - }); - } - applyResponseErrorHooks(requestParams, computedParams, requestOptions, promise) { - return promise.catch(helpers_1.applyResponseHooks.bind(this, requestParams, computedParams, requestOptions)); - } + buf.writeString(alg); + + for (i = 0; i < parts.length; ++i) { + var data = key.part[parts[i]].data; + if (algInfo.normalize !== false) { + if (key.type === 'ed25519') + data = utils.zeroPadToLength(data, 32); + else + data = utils.mpNormalize(data); + } + if (key.type === 'ed25519' && parts[i] === 'k') + data = Buffer.concat([data, key.part.A.data]); + buf.writeBuffer(data); + } + + return (buf.toBuffer()); } -exports.ClientRequestMaker = ClientRequestMaker; -ClientRequestMaker.BODY_METHODS = new Set(['POST', 'PUT', 'PATCH']); /***/ }), +/* 539 */, +/* 540 */ +/***/ (function(module) { + +module.exports = {"name":"twitter","version":"1.7.1","description":"Twitter API client library for node.js","license":"MIT","keywords":["twitter","streaming","oauth"],"homepage":"https://github.com/desmondmorris/node-twitter","author":"Desmond Morris ","repository":{"type":"git","url":"https://github.com/desmondmorris/node-twitter"},"scripts":{"test":"npm run lint && mocha","lint":"./node_modules/.bin/eslint test/*.js lib/*.js"},"dependencies":{"deep-extend":"^0.5.0","request":"^2.72.0"},"devDependencies":{"eslint":"^3.12.0","mocha":"^3.2.0","nock":"^9.0.2"},"main":"./lib/twitter"}; -/***/ 7954: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { +/***/ }), +/* 541 */, +/* 542 */ +/***/ (function(module) { "use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.RequestParamHelpers = void 0; -const form_data_helper_1 = __nccwpck_require__(8274); -const oauth1_helper_1 = __importDefault(__nccwpck_require__(8291)); -/* Helpers functions that are specific to this class but do not depends on instance */ -class RequestParamHelpers { - static formatQueryToString(query) { - const formattedQuery = {}; - for (const prop in query) { - if (typeof query[prop] === 'string') { - formattedQuery[prop] = query[prop]; - } - else if (typeof query[prop] !== 'undefined') { - formattedQuery[prop] = String(query[prop]); - } - } - return formattedQuery; - } - static autoDetectBodyType(url) { - if (url.pathname.startsWith('/2/') || url.pathname.startsWith('/labs/2/')) { - // oauth2 takes url encoded - if (url.password.startsWith('/2/oauth2')) { - return 'url'; - } - // Twitter API v2 has JSON-encoded requests for everything else - return 'json'; - } - if (url.hostname === 'upload.twitter.com') { - if (url.pathname === '/1.1/media/upload.json') { - return 'form-data'; - } - // json except for media/upload command, that is form-data. - return 'json'; - } - const endpoint = url.pathname.split('/1.1/', 2)[1]; - if (this.JSON_1_1_ENDPOINTS.has(endpoint)) { - return 'json'; - } - return 'url'; - } - static addQueryParamsToUrl(url, query) { - const queryEntries = Object.entries(query); - if (queryEntries.length) { - let search = ''; - for (const [key, value] of queryEntries) { - search += (search.length ? '&' : '?') + `${oauth1_helper_1.default.percentEncode(key)}=${oauth1_helper_1.default.percentEncode(value)}`; - } - url.search = search; - } - } - static constructBodyParams(body, headers, mode) { - if (body instanceof Buffer) { - return body; - } - if (mode === 'json') { - headers['content-type'] = 'application/json;charset=UTF-8'; - return JSON.stringify(body); - } - else if (mode === 'url') { - headers['content-type'] = 'application/x-www-form-urlencoded;charset=UTF-8'; - if (Object.keys(body).length) { - return new URLSearchParams(body) - .toString() - .replace(/\*/g, '%2A'); // URLSearchParams doesnt encode '*', but Twitter wants it encoded. - } - return ''; - } - else if (mode === 'raw') { - throw new Error('You can only use raw body mode with Buffers. To give a string, use Buffer.from(str).'); - } - else { - const form = new form_data_helper_1.FormDataHelper(); - for (const parameter in body) { - form.append(parameter, body[parameter]); - } - const formHeaders = form.getHeaders(); - headers['content-type'] = formHeaders['content-type']; - return form.getBuffer(); - } - } - static setBodyLengthHeader(options, body) { - var _a; - options.headers = (_a = options.headers) !== null && _a !== void 0 ? _a : {}; - if (typeof body === 'string') { - options.headers['content-length'] = Buffer.byteLength(body); - } - else { - options.headers['content-length'] = body.length; - } - } - static isOAuthSerializable(item) { - return !(item instanceof Buffer); - } - static mergeQueryAndBodyForOAuth(query, body) { - const parameters = {}; - for (const prop in query) { - parameters[prop] = query[prop]; - } - if (this.isOAuthSerializable(body)) { - for (const prop in body) { - const bodyProp = body[prop]; - if (this.isOAuthSerializable(bodyProp)) { - parameters[prop] = typeof bodyProp === 'object' && bodyProp !== null && 'toString' in bodyProp - ? bodyProp.toString() - : bodyProp; - } - } - } - return parameters; +module.exports = function generate_pattern(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema); + out += 'if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'string\') || '; + } + out += ' !' + ($regexp) + '.test(' + ($data) + ') ) { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('pattern') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { pattern: '; + if ($isData) { + out += '' + ($schemaValue); + } else { + out += '' + (it.util.toQuotedString($schema)); } - static moveUrlQueryParamsIntoObject(url, query) { - for (const [param, value] of url.searchParams) { - query[param] = value; - } - // Remove the query string - url.search = ''; - return url; + out += ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should match pattern "'; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + (it.util.escapeQuotes($schema)); + } + out += '"\' '; } - /** - * Replace URL parameters available in pathname, like `:id`, with data given in `parameters`: - * `https://twitter.com/:id.json` + `{ id: '20' }` => `https://twitter.com/20.json` - */ - static applyRequestParametersToUrl(url, parameters) { - url.pathname = url.pathname.replace(/:([A-Z_-]+)/ig, (fullMatch, paramName) => { - if (parameters[paramName] !== undefined) { - return String(parameters[paramName]); - } - return fullMatch; - }); - return url; + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; } -exports.RequestParamHelpers = RequestParamHelpers; -RequestParamHelpers.JSON_1_1_ENDPOINTS = new Set([ - 'direct_messages/events/new.json', - 'direct_messages/welcome_messages/new.json', - 'direct_messages/welcome_messages/rules/new.json', - 'media/metadata/create.json', - 'collections/entries/curate.json', -]); -exports["default"] = RequestParamHelpers; /***/ }), - -/***/ 8726: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/* 543 */, +/* 544 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", ({ value: true })); -const request_maker_mixin_1 = __nccwpck_require__(6131); -const helpers_1 = __nccwpck_require__(1120); -const globals_1 = __nccwpck_require__(3444); -/** - * Base class for Twitter instances - */ -class TwitterApiBase { - constructor(token, settings = {}) { - this._currentUser = null; - this._currentUserV2 = null; - if (token instanceof TwitterApiBase) { - this._requestMaker = token._requestMaker; - } - else { - this._requestMaker = new request_maker_mixin_1.ClientRequestMaker(settings); - this._requestMaker.initializeToken(token); - } - } - /* Prefix/Token handling */ - setPrefix(prefix) { - this._prefix = prefix; - } - cloneWithPrefix(prefix) { - const clone = this.constructor(this); - clone.setPrefix(prefix); - return clone; - } - getActiveTokens() { - return this._requestMaker.getActiveTokens(); - } - /* Rate limit cache / Plugins */ - getPlugins() { - return this._requestMaker.getPlugins(); - } - getPluginOfType(type) { - return this.getPlugins().find(plugin => plugin instanceof type); - } - /** - * @deprecated - Migrate to plugin `@twitter-api-v2/plugin-rate-limit` - * - * Tells if you hit the Twitter rate limit for {endpoint}. - * (local data only, this should not ask anything to Twitter) - */ - hasHitRateLimit(endpoint) { - var _a; - if (this.isRateLimitStatusObsolete(endpoint)) { - return false; - } - return ((_a = this.getLastRateLimitStatus(endpoint)) === null || _a === void 0 ? void 0 : _a.remaining) === 0; - } - /** - * @deprecated - Migrate to plugin `@twitter-api-v2/plugin-rate-limit` - * - * Tells if you hit the returned Twitter rate limit for {endpoint} has expired. - * If client has no saved rate limit data for {endpoint}, this will gives you `true`. - */ - isRateLimitStatusObsolete(endpoint) { - const rateLimit = this.getLastRateLimitStatus(endpoint); - if (rateLimit === undefined) { - return true; - } - // Timestamps are exprimed in seconds, JS works with ms - return (rateLimit.reset * 1000) < Date.now(); - } - /** - * @deprecated - Migrate to plugin `@twitter-api-v2/plugin-rate-limit` - * - * Get the last obtained Twitter rate limit information for {endpoint}. - * (local data only, this should not ask anything to Twitter) - */ - getLastRateLimitStatus(endpoint) { - const endpointWithPrefix = endpoint.match(/^https?:\/\//) ? endpoint : (this._prefix + endpoint); - return this._requestMaker.getRateLimits()[endpointWithPrefix]; - } - /* Current user cache */ - /** Get cached current user. */ - getCurrentUserObject(forceFetch = false) { - if (!forceFetch && this._currentUser) { - if (this._currentUser.value) { - return Promise.resolve(this._currentUser.value); - } - return this._currentUser.promise; - } - this._currentUser = (0, helpers_1.sharedPromise)(() => this.get('account/verify_credentials.json', { tweet_mode: 'extended' }, { prefix: globals_1.API_V1_1_PREFIX })); - return this._currentUser.promise; - } - /** - * Get cached current user from v2 API. - * This can only be the slimest available `UserV2` object, with only `id`, `name` and `username` properties defined. - * - * To get a customized `UserV2Result`, use `.v2.me()` - * - * OAuth2 scopes: `tweet.read` & `users.read` - */ - getCurrentUserV2Object(forceFetch = false) { - if (!forceFetch && this._currentUserV2) { - if (this._currentUserV2.value) { - return Promise.resolve(this._currentUserV2.value); - } - return this._currentUserV2.promise; - } - this._currentUserV2 = (0, helpers_1.sharedPromise)(() => this.get('users/me', undefined, { prefix: globals_1.API_V2_PREFIX })); - return this._currentUserV2.promise; - } - async get(url, query = {}, { fullResponse, prefix = this._prefix, ...rest } = {}) { - if (prefix) - url = prefix + url; - const resp = await this._requestMaker.send({ - url, - method: 'GET', - query, - ...rest, - }); - return fullResponse ? resp : resp.data; - } - async delete(url, query = {}, { fullResponse, prefix = this._prefix, ...rest } = {}) { - if (prefix) - url = prefix + url; - const resp = await this._requestMaker.send({ - url, - method: 'DELETE', - query, - ...rest, - }); - return fullResponse ? resp : resp.data; - } - async post(url, body, { fullResponse, prefix = this._prefix, ...rest } = {}) { - if (prefix) - url = prefix + url; - const resp = await this._requestMaker.send({ - url, - method: 'POST', - body, - ...rest, - }); - return fullResponse ? resp : resp.data; - } - async put(url, body, { fullResponse, prefix = this._prefix, ...rest } = {}) { - if (prefix) - url = prefix + url; - const resp = await this._requestMaker.send({ - url, - method: 'PUT', - body, - ...rest, - }); - return fullResponse ? resp : resp.data; + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; + +var _autoLinkEntities = _interopRequireDefault(__webpack_require__(93)); + +var _modifyIndicesFromUnicodeToUTF = _interopRequireDefault(__webpack_require__(787)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text, json, options) { + // map JSON entity to twitter-text entity + if (json.user_mentions) { + for (var i = 0; i < json.user_mentions.length; i++) { + // this is a @mention + json.user_mentions[i].screenName = json.user_mentions[i].screen_name; } - async patch(url, body, { fullResponse, prefix = this._prefix, ...rest } = {}) { - if (prefix) - url = prefix + url; - const resp = await this._requestMaker.send({ - url, - method: 'PATCH', - body, - ...rest, - }); - return fullResponse ? resp : resp.data; - } - getStream(url, query, { prefix = this._prefix, ...rest } = {}) { - return this._requestMaker.sendStream({ - url: prefix ? prefix + url : url, - method: 'GET', - query, - ...rest, - }); + } + + if (json.hashtags) { + for (var i = 0; i < json.hashtags.length; i++) { + // this is a #hashtag + json.hashtags[i].hashtag = json.hashtags[i].text; } - postStream(url, body, { prefix = this._prefix, ...rest } = {}) { - return this._requestMaker.sendStream({ - url: prefix ? prefix + url : url, - method: 'POST', - body, - ...rest, - }); + } + + if (json.symbols) { + for (var i = 0; i < json.symbols.length; i++) { + // this is a $CASH tag + json.symbols[i].cashtag = json.symbols[i].text; } -} -exports["default"] = TwitterApiBase; + } // concatenate all entities -/***/ }), + var entities = []; -/***/ 3810: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + for (var key in json) { + entities = entities.concat(json[key]); + } // modify indices to UTF-16 -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -const client_base_1 = __importDefault(__nccwpck_require__(8726)); -/** - * Base subclient for every v1 and v2 client. - */ -class TwitterApiSubClient extends client_base_1.default { - constructor(instance) { - if (!(instance instanceof client_base_1.default)) { - throw new Error('You must instance SubTwitterApi instance from existing TwitterApi instance.'); - } - super(instance); - } + (0, _modifyIndicesFromUnicodeToUTF["default"])(text, entities); + return (0, _autoLinkEntities["default"])(text, entities, options); } -exports["default"] = TwitterApiSubClient; +module.exports = exports.default; /***/ }), - -/***/ 6118: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { +/* 545 */, +/* 546 */, +/* 547 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.TwitterApiReadOnly = exports.TwitterApiReadWrite = exports.TwitterApi = void 0; -const client_v1_1 = __importDefault(__nccwpck_require__(7030)); -const client_v2_1 = __importDefault(__nccwpck_require__(4692)); -const readwrite_1 = __importDefault(__nccwpck_require__(489)); -// "Real" exported client for usage of TwitterApi. -/** - * Twitter v1.1 and v2 API client. - */ -class TwitterApi extends readwrite_1.default { - /* Direct access to subclients */ - get v1() { - if (this._v1) - return this._v1; - return this._v1 = new client_v1_1.default(this); - } - get v2() { - if (this._v2) - return this._v2; - return this._v2 = new client_v2_1.default(this); - } - /** - * Get a client with read/write rights. - */ - get readWrite() { - return this; - } - /* Static helpers */ - static getErrors(error) { - var _a; - if (typeof error !== 'object') - return []; - if (!('data' in error)) - return []; - return (_a = error.data.errors) !== null && _a !== void 0 ? _a : []; - } - /** Extract another image size than obtained in a `profile_image_url` or `profile_image_url_https` field of a user object. */ - static getProfileImageInSize(profileImageUrl, size) { - const lastPart = profileImageUrl.split('/').pop(); - const sizes = ['normal', 'bigger', 'mini']; - let originalUrl = profileImageUrl; - for (const availableSize of sizes) { - if (lastPart.includes(`_${availableSize}`)) { - originalUrl = profileImageUrl.replace(`_${availableSize}`, ''); - break; - } - } - if (size === 'original') { - return originalUrl; - } - const extPos = originalUrl.lastIndexOf('.'); - if (extPos !== -1) { - const ext = originalUrl.slice(extPos + 1); - return originalUrl.slice(0, extPos) + '_' + size + '.' + ext; - } - else { - return originalUrl + '_' + size; - } - } -} -exports.TwitterApi = TwitterApi; -var readwrite_2 = __nccwpck_require__(489); -Object.defineProperty(exports, "TwitterApiReadWrite", ({ enumerable: true, get: function () { return __importDefault(readwrite_2).default; } })); -var readonly_1 = __nccwpck_require__(7344); -Object.defineProperty(exports, "TwitterApiReadOnly", ({ enumerable: true, get: function () { return __importDefault(readonly_1).default; } })); -exports["default"] = TwitterApi; +__webpack_require__(493); -/***/ }), +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validPortNumber = /[0-9]+/; +var _default = validPortNumber; +exports["default"] = _default; +module.exports = exports.default; -/***/ 7344: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { +/***/ }), +/* 548 */, +/* 549 */ +/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { "use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -const _1 = __importDefault(__nccwpck_require__(6118)); -const client_base_1 = __importDefault(__nccwpck_require__(8726)); -const client_v1_read_1 = __importDefault(__nccwpck_require__(4273)); -const client_v2_read_1 = __importDefault(__nccwpck_require__(7318)); -const oauth2_helper_1 = __nccwpck_require__(9791); -const request_param_helper_1 = __importDefault(__nccwpck_require__(7954)); -/** - * Twitter v1.1 and v2 API client. - */ -class TwitterApiReadOnly extends client_base_1.default { - /* Direct access to subclients */ - get v1() { - if (this._v1) - return this._v1; - return this._v1 = new client_v1_read_1.default(this); - } - get v2() { - if (this._v2) - return this._v2; - return this._v2 = new client_v2_read_1.default(this); - } - /** - * Fetch and cache current user. - * This method can only be called with a OAuth 1.0a user authentication. - * - * You can use this method to test if authentication was successful. - * Next calls to this methods will use the cached user, unless `forceFetch: true` is given. - */ - async currentUser(forceFetch = false) { - return await this.getCurrentUserObject(forceFetch); - } - /** - * Fetch and cache current user. - * This method can only be called with a OAuth 1.0a or OAuth2 user authentication. - * - * This can only be the slimest available `UserV2` object, with only id, name and username properties defined. - * To get a customized `UserV2Result`, use `.v2.me()` - * - * You can use this method to test if authentication was successful. - * Next calls to this methods will use the cached user, unless `forceFetch: true` is given. - * - * OAuth2 scopes: `tweet.read` & `users.read` - */ - async currentUserV2(forceFetch = false) { - return await this.getCurrentUserV2Object(forceFetch); - } - /* Shortcuts to endpoints */ - search(what, options) { - return this.v2.search(what, options); - } - /* Authentication */ - /** - * Generate the OAuth request token link for user-based OAuth 1.0 auth. - * - * ```ts - * // Instanciate TwitterApi with consumer keys - * const client = new TwitterApi({ appKey: 'consumer_key', appSecret: 'consumer_secret' }); - * - * const tokenRequest = await client.generateAuthLink('oob-or-your-callback-url'); - * // redirect end-user to tokenRequest.url - * - * // Save tokenRequest.oauth_token_secret somewhere, it will be needed for next auth step. - * ``` - */ - async generateAuthLink(oauth_callback = 'oob', { authAccessType, linkMode = 'authenticate', forceLogin, screenName, } = {}) { - const oauthResult = await this.post('https://api.twitter.com/oauth/request_token', { oauth_callback, x_auth_access_type: authAccessType }); - let url = `https://api.twitter.com/oauth/${linkMode}?oauth_token=${encodeURIComponent(oauthResult.oauth_token)}`; - if (forceLogin !== undefined) { - url += `&force_login=${encodeURIComponent(forceLogin)}`; - } - if (screenName !== undefined) { - url += `&screen_name=${encodeURIComponent(screenName)}`; - } - if (this._requestMaker.hasPlugins()) { - this._requestMaker.applyPluginMethod('onOAuth1RequestToken', { - client: this._requestMaker, - url, - oauthResult, - }); - } - return { - url, - ...oauthResult, - }; - } - /** - * Obtain access to user-based OAuth 1.0 auth. - * - * After user is redirect from your callback, use obtained oauth_token and oauth_verifier to - * instanciate the new TwitterApi instance. - * - * ```ts - * // Use the saved oauth_token_secret associated to oauth_token returned by callback - * const requestClient = new TwitterApi({ - * appKey: 'consumer_key', - * appSecret: 'consumer_secret', - * accessToken: 'oauth_token', - * accessSecret: 'oauth_token_secret' - * }); - * - * // Use oauth_verifier obtained from callback request - * const { client: userClient } = await requestClient.login('oauth_verifier'); - * - * // {userClient} is a valid {TwitterApi} object you can use for future requests - * ``` - */ - async login(oauth_verifier) { - const tokens = this.getActiveTokens(); - if (tokens.type !== 'oauth-1.0a') - throw new Error('You must setup TwitterApi instance with consumer keys to accept OAuth 1.0 login'); - const oauth_result = await this.post('https://api.twitter.com/oauth/access_token', { oauth_token: tokens.accessToken, oauth_verifier }); - const client = new _1.default({ - appKey: tokens.appKey, - appSecret: tokens.appSecret, - accessToken: oauth_result.oauth_token, - accessSecret: oauth_result.oauth_token_secret, - }, this._requestMaker.clientSettings); - return { - accessToken: oauth_result.oauth_token, - accessSecret: oauth_result.oauth_token_secret, - userId: oauth_result.user_id, - screenName: oauth_result.screen_name, - client, - }; - } - /** - * Enable application-only authentication. - * - * To make the request, instanciate TwitterApi with consumer and secret. - * - * ```ts - * const requestClient = new TwitterApi({ appKey: 'consumer', appSecret: 'secret' }); - * const appClient = await requestClient.appLogin(); - * - * // Use {appClient} to make requests - * ``` - */ - async appLogin() { - const tokens = this.getActiveTokens(); - if (tokens.type !== 'oauth-1.0a') - throw new Error('You must setup TwitterApi instance with consumer keys to accept app-only login'); - // Create a client with Basic authentication - const basicClient = new _1.default({ username: tokens.appKey, password: tokens.appSecret }); - const res = await basicClient.post('https://api.twitter.com/oauth2/token', { grant_type: 'client_credentials' }); - // New object with Bearer token - return new _1.default(res.access_token, this._requestMaker.clientSettings); - } - /* OAuth 2 user authentication */ - /** - * Generate the OAuth request token link for user-based OAuth 2.0 auth. - * - * - **You can only use v2 API endpoints with this authentication method.** - * - **You need to specify which scope you want to have when you create your auth link. Make sure it matches your needs.** - * - * See https://developer.twitter.com/en/docs/authentication/oauth-2-0/user-access-token for details. - * - * ```ts - * // Instanciate TwitterApi with client ID - * const client = new TwitterApi({ clientId: 'yourClientId' }); - * - * // Generate a link to callback URL that will gives a token with tweet+user read access - * const link = client.generateOAuth2AuthLink('your-callback-url', { scope: ['tweet.read', 'users.read'] }); - * - * // Extract props from generate link - * const { url, state, codeVerifier } = link; - * - * // redirect end-user to url - * // Save `state` and `codeVerifier` somewhere, it will be needed for next auth step. - * ``` - */ - generateOAuth2AuthLink(redirectUri, options = {}) { - var _a, _b; - if (!this._requestMaker.clientId) { - throw new Error('Twitter API instance is not initialized with client ID. You can find your client ID in Twitter Developer Portal. ' + - 'Please build an instance with: new TwitterApi({ clientId: \'\' })'); - } - const state = (_a = options.state) !== null && _a !== void 0 ? _a : oauth2_helper_1.OAuth2Helper.generateRandomString(32); - const codeVerifier = oauth2_helper_1.OAuth2Helper.getCodeVerifier(); - const codeChallenge = oauth2_helper_1.OAuth2Helper.getCodeChallengeFromVerifier(codeVerifier); - const rawScope = (_b = options.scope) !== null && _b !== void 0 ? _b : ''; - const scope = Array.isArray(rawScope) ? rawScope.join(' ') : rawScope; - const url = new URL('https://twitter.com/i/oauth2/authorize'); - const query = { - response_type: 'code', - client_id: this._requestMaker.clientId, - redirect_uri: redirectUri, - state, - code_challenge: codeChallenge, - code_challenge_method: 's256', - scope, - }; - request_param_helper_1.default.addQueryParamsToUrl(url, query); - const result = { - url: url.toString(), - state, - codeVerifier, - codeChallenge, - }; - if (this._requestMaker.hasPlugins()) { - this._requestMaker.applyPluginMethod('onOAuth2RequestToken', { - client: this._requestMaker, - result, - redirectUri, - }); - } - return result; - } - /** - * Obtain access to user-based OAuth 2.0 auth. - * - * After user is redirect from your callback, use obtained code to - * instanciate the new TwitterApi instance. - * - * You need to obtain `codeVerifier` from a call to `.generateOAuth2AuthLink`. - * - * ```ts - * // Use the saved codeVerifier associated to state (present in query string of callback) - * const requestClient = new TwitterApi({ clientId: 'yourClientId' }); - * - * const { client: userClient, refreshToken } = await requestClient.loginWithOAuth2({ - * code: 'codeFromQueryString', - * // the same URL given to generateOAuth2AuthLink - * redirectUri, - * // the verifier returned by generateOAuth2AuthLink - * codeVerifier, - * }); - * - * // {userClient} is a valid {TwitterApi} object you can use for future requests - * // {refreshToken} is defined if 'offline.access' is in scope. - * ``` - */ - async loginWithOAuth2({ code, codeVerifier, redirectUri }) { - if (!this._requestMaker.clientId) { - throw new Error('Twitter API instance is not initialized with client ID. ' + - 'Please build an instance with: new TwitterApi({ clientId: \'\' })'); - } - const accessTokenResult = await this.post('https://api.twitter.com/2/oauth2/token', { - code, - code_verifier: codeVerifier, - redirect_uri: redirectUri, - grant_type: 'authorization_code', - client_id: this._requestMaker.clientId, - client_secret: this._requestMaker.clientSecret, - }); - return this.parseOAuth2AccessTokenResult(accessTokenResult); - } - /** - * Obtain a new access token to user-based OAuth 2.0 auth from a refresh token. - * - * ```ts - * const requestClient = new TwitterApi({ clientId: 'yourClientId' }); - * - * const { client: userClient } = await requestClient.refreshOAuth2Token('refreshToken'); - * // {userClient} is a valid {TwitterApi} object you can use for future requests - * ``` - */ - async refreshOAuth2Token(refreshToken) { - if (!this._requestMaker.clientId) { - throw new Error('Twitter API instance is not initialized with client ID. ' + - 'Please build an instance with: new TwitterApi({ clientId: \'\' })'); - } - const accessTokenResult = await this.post('https://api.twitter.com/2/oauth2/token', { - refresh_token: refreshToken, - grant_type: 'refresh_token', - client_id: this._requestMaker.clientId, - client_secret: this._requestMaker.clientSecret, - }); - return this.parseOAuth2AccessTokenResult(accessTokenResult); - } - /** - * Revoke a single user-based OAuth 2.0 token. - * - * You must specify its source, access token (directly after login) - * or refresh token (if you've called `.refreshOAuth2Token` before). - */ - async revokeOAuth2Token(token, tokenType = 'access_token') { - if (!this._requestMaker.clientId) { - throw new Error('Twitter API instance is not initialized with client ID. ' + - 'Please build an instance with: new TwitterApi({ clientId: \'\' })'); - } - return await this.post('https://api.twitter.com/2/oauth2/revoke', { - client_id: this._requestMaker.clientId, - client_secret: this._requestMaker.clientSecret, - token, - token_type_hint: tokenType, - }); - } - parseOAuth2AccessTokenResult(result) { - const client = new _1.default(result.access_token, this._requestMaker.clientSettings); - const scope = result.scope.split(' ').filter(e => e); - return { - client, - expiresIn: result.expires_in, - accessToken: result.access_token, - scope, - refreshToken: result.refresh_token, - }; + +var anObject = __webpack_require__(990); +var toLength = __webpack_require__(853); +var advanceStringIndex = __webpack_require__(215); +var regExpExec = __webpack_require__(319); + +// @@match logic +__webpack_require__(35)('match', 1, function (defined, MATCH, $match, maybeCallNative) { + return [ + // `String.prototype.match` method + // https://tc39.github.io/ecma262/#sec-string.prototype.match + function match(regexp) { + var O = defined(this); + var fn = regexp == undefined ? undefined : regexp[MATCH]; + return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O)); + }, + // `RegExp.prototype[@@match]` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match + function (regexp) { + var res = maybeCallNative($match, regexp, this); + if (res.done) return res.value; + var rx = anObject(regexp); + var S = String(this); + if (!rx.global) return regExpExec(rx, S); + var fullUnicode = rx.unicode; + rx.lastIndex = 0; + var A = []; + var n = 0; + var result; + while ((result = regExpExec(rx, S)) !== null) { + var matchStr = String(result[0]); + A[n] = matchStr; + if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); + n++; + } + return n === 0 ? null : A; } -} -exports["default"] = TwitterApiReadOnly; + ]; +}); + + +/***/ }), +/* 550 */, +/* 551 */ +/***/ (function(module) { + +// Generated by CoffeeScript 1.12.2 +(function() { + var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime; + + if ((typeof performance !== "undefined" && performance !== null) && performance.now) { + module.exports = function() { + return performance.now(); + }; + } else if ((typeof process !== "undefined" && process !== null) && process.hrtime) { + module.exports = function() { + return (getNanoSeconds() - nodeLoadTime) / 1e6; + }; + hrtime = process.hrtime; + getNanoSeconds = function() { + var hr; + hr = hrtime(); + return hr[0] * 1e9 + hr[1]; + }; + moduleLoadTime = getNanoSeconds(); + upTime = process.uptime() * 1e9; + nodeLoadTime = moduleLoadTime - upTime; + } else if (Date.now) { + module.exports = function() { + return Date.now() - loadTime; + }; + loadTime = Date.now(); + } else { + module.exports = function() { + return new Date().getTime() - loadTime; + }; + loadTime = new Date().getTime(); + } +}).call(this); -/***/ }), +//# sourceMappingURL=performance-now.js.map -/***/ 489: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +/***/ }), +/* 552 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { "use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -const client_v1_write_1 = __importDefault(__nccwpck_require__(6685)); -const client_v2_write_1 = __importDefault(__nccwpck_require__(5587)); -const readonly_1 = __importDefault(__nccwpck_require__(7344)); -/** - * Twitter v1.1 and v2 API client. - */ -class TwitterApiReadWrite extends readonly_1.default { - /* Direct access to subclients */ - get v1() { - if (this._v1) - return this._v1; - return this._v1 = new client_v1_write_1.default(this); - } - get v2() { - if (this._v2) - return this._v2; - return this._v2 = new client_v2_write_1.default(this); + +var url = __webpack_require__(835) +var isUrl = /^https?:/ + +function Redirect (request) { + this.request = request + this.followRedirect = true + this.followRedirects = true + this.followAllRedirects = false + this.followOriginalHttpMethod = false + this.allowRedirect = function () { return true } + this.maxRedirects = 10 + this.redirects = [] + this.redirectsFollowed = 0 + this.removeRefererHeader = false +} + +Redirect.prototype.onRequest = function (options) { + var self = this + + if (options.maxRedirects !== undefined) { + self.maxRedirects = options.maxRedirects + } + if (typeof options.followRedirect === 'function') { + self.allowRedirect = options.followRedirect + } + if (options.followRedirect !== undefined) { + self.followRedirects = !!options.followRedirect + } + if (options.followAllRedirects !== undefined) { + self.followAllRedirects = options.followAllRedirects + } + if (self.followRedirects || self.followAllRedirects) { + self.redirects = self.redirects || [] + } + if (options.removeRefererHeader !== undefined) { + self.removeRefererHeader = options.removeRefererHeader + } + if (options.followOriginalHttpMethod !== undefined) { + self.followOriginalHttpMethod = options.followOriginalHttpMethod + } +} + +Redirect.prototype.redirectTo = function (response) { + var self = this + var request = self.request + + var redirectTo = null + if (response.statusCode >= 300 && response.statusCode < 400 && response.caseless.has('location')) { + var location = response.caseless.get('location') + request.debug('redirect', location) + + if (self.followAllRedirects) { + redirectTo = location + } else if (self.followRedirects) { + switch (request.method) { + case 'PATCH': + case 'PUT': + case 'POST': + case 'DELETE': + // Do not follow redirects + break + default: + redirectTo = location + break + } } - /** - * Get a client with read only rights. - */ - get readOnly() { - return this; + } else if (response.statusCode === 401) { + var authHeader = request._auth.onResponse(response) + if (authHeader) { + request.setHeader('authorization', authHeader) + redirectTo = request.uri } + } + return redirectTo } -exports["default"] = TwitterApiReadWrite; +Redirect.prototype.onResponse = function (response) { + var self = this + var request = self.request -/***/ }), + var redirectTo = self.redirectTo(response) + if (!redirectTo || !self.allowRedirect.call(request, response)) { + return false + } -/***/ 3444: -/***/ ((__unused_webpack_module, exports) => { + request.debug('redirect to', redirectTo) -"use strict"; + // ignore any potential response body. it cannot possibly be useful + // to us at this point. + // response.resume should be defined, but check anyway before calling. Workaround for browserify. + if (response.resume) { + response.resume() + } -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.API_V1_1_STREAM_PREFIX = exports.API_V1_1_UPLOAD_PREFIX = exports.API_V1_1_PREFIX = exports.API_V2_LABS_PREFIX = exports.API_V2_PREFIX = void 0; -exports.API_V2_PREFIX = 'https://api.twitter.com/2/'; -exports.API_V2_LABS_PREFIX = 'https://api.twitter.com/labs/2/'; -exports.API_V1_1_PREFIX = 'https://api.twitter.com/1.1/'; -exports.API_V1_1_UPLOAD_PREFIX = 'https://upload.twitter.com/1.1/'; -exports.API_V1_1_STREAM_PREFIX = 'https://stream.twitter.com/1.1/'; + if (self.redirectsFollowed >= self.maxRedirects) { + request.emit('error', new Error('Exceeded maxRedirects. Probably stuck in a redirect loop ' + request.uri.href)) + return false + } + self.redirectsFollowed += 1 + if (!isUrl.test(redirectTo)) { + redirectTo = url.resolve(request.uri.href, redirectTo) + } -/***/ }), + var uriPrev = request.uri + request.uri = url.parse(redirectTo) -/***/ 1120: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + // handle the case where we change protocol from https to http or vice versa + if (request.uri.protocol !== uriPrev.protocol) { + delete request.agent + } -"use strict"; + self.redirects.push({ statusCode: response.statusCode, redirectUri: redirectTo }) -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.safeDeprecationWarning = exports.hasMultipleItems = exports.isTweetStreamV2ErrorPayload = exports.trimUndefinedProperties = exports.arrayWrap = exports.sharedPromise = void 0; -const settings_1 = __nccwpck_require__(6273); -function sharedPromise(getter) { - const sharedPromise = { - value: undefined, - promise: getter().then(val => { - sharedPromise.value = val; - return val; - }), - }; - return sharedPromise; -} -exports.sharedPromise = sharedPromise; -function arrayWrap(value) { - if (Array.isArray(value)) { - return value; - } - return [value]; -} -exports.arrayWrap = arrayWrap; -function trimUndefinedProperties(object) { - // Delete undefined parameters - for (const parameter in object) { - if (object[parameter] === undefined) - delete object[parameter]; - } -} -exports.trimUndefinedProperties = trimUndefinedProperties; -function isTweetStreamV2ErrorPayload(payload) { - // Is error only if 'errors' is present and 'data' does not exists - return typeof payload === 'object' - && 'errors' in payload - && !('data' in payload); -} -exports.isTweetStreamV2ErrorPayload = isTweetStreamV2ErrorPayload; -function hasMultipleItems(item) { - if (Array.isArray(item) && item.length > 1) { - return true; - } - return item.toString().includes(','); -} -exports.hasMultipleItems = hasMultipleItems; -const deprecationWarningsCache = new Set(); -function safeDeprecationWarning(message) { - if (typeof console === 'undefined' || !console.warn || !settings_1.TwitterApiV2Settings.deprecationWarnings) { - return; - } - const hash = `${message.instance}-${message.method}-${message.problem}`; - if (deprecationWarningsCache.has(hash)) { - return; + if (self.followAllRedirects && request.method !== 'HEAD' && + response.statusCode !== 401 && response.statusCode !== 307) { + request.method = self.followOriginalHttpMethod ? request.method : 'GET' + } + // request.method = 'GET' // Force all redirects to use GET || commented out fixes #215 + delete request.src + delete request.req + delete request._started + if (response.statusCode !== 401 && response.statusCode !== 307) { + // Remove parameters from the previous response, unless this is the second request + // for a server that requires digest authentication. + delete request.body + delete request._form + if (request.headers) { + request.removeHeader('host') + request.removeHeader('content-type') + request.removeHeader('content-length') + if (request.uri.hostname !== request.originalHost.split(':')[0]) { + // Remove authorization if changing hostnames (but not if just + // changing ports or protocols). This matches the behavior of curl: + // https://github.com/bagder/curl/blob/6beb0eee/lib/http.c#L710 + request.removeHeader('authorization') + } } - const formattedMsg = `[twitter-api-v2] Deprecation warning: In ${message.instance}.${message.method}() call` + - `, ${message.problem}.\n${message.resolution}.`; - console.warn(formattedMsg); - console.warn('To disable this message, import variable TwitterApiV2Settings from twitter-api-v2 and set TwitterApiV2Settings.deprecationWarnings to false.'); - deprecationWarningsCache.add(hash); -} -exports.safeDeprecationWarning = safeDeprecationWarning; + } + if (!self.removeRefererHeader) { + request.setHeader('referer', uriPrev.href) + } -/***/ }), + request.emit('redirect') -/***/ 9360: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + request.init() -"use strict"; + return true +} -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports["default"] = void 0; -var client_1 = __nccwpck_require__(6118); -Object.defineProperty(exports, "default", ({ enumerable: true, get: function () { return __importDefault(client_1).default; } })); -__exportStar(__nccwpck_require__(6118), exports); -__exportStar(__nccwpck_require__(7030), exports); -__exportStar(__nccwpck_require__(4692), exports); -__exportStar(__nccwpck_require__(876), exports); -__exportStar(__nccwpck_require__(1204), exports); -__exportStar(__nccwpck_require__(1638), exports); -__exportStar(__nccwpck_require__(5814), exports); -__exportStar(__nccwpck_require__(9362), exports); -__exportStar(__nccwpck_require__(6273), exports); +exports.Redirect = Redirect /***/ }), - -/***/ 5317: -/***/ ((__unused_webpack_module, exports) => { +/* 553 */, +/* 554 */ +/***/ (function(__unusedmodule, exports) { "use strict"; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.PreviousableTwitterPaginator = exports.TwitterPaginator = void 0; -/** TwitterPaginator: able to get consume data from initial request, then fetch next data sequentially. */ -class TwitterPaginator { - // noinspection TypeScriptAbstractClassConstructorCanBeMadeProtected - constructor({ realData, rateLimit, instance, queryParams, sharedParams }) { - this._maxResultsWhenFetchLast = 100; - this._realData = realData; - this._rateLimit = rateLimit; - this._instance = instance; - this._queryParams = queryParams; - this._sharedParams = sharedParams; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PersonalAccessTokenCredentialHandler = exports.BearerCredentialHandler = exports.BasicCredentialHandler = void 0; +class BasicCredentialHandler { + constructor(username, password) { + this.username = username; + this.password = password; } - get _isRateLimitOk() { - if (!this._rateLimit) { - return true; - } - const resetDate = this._rateLimit.reset * 1000; - if (resetDate < Date.now()) { - return true; + prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); } - return this._rateLimit.remaining > 0; + options.headers['Authorization'] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString('base64')}`; } - makeRequest(queryParams) { - return this._instance.get(this.getEndpoint(), queryParams, { fullResponse: true, params: this._sharedParams }); + // This handler cannot handle 401 + canHandleAuthentication() { + return false; } - makeNewInstanceFromResult(result, queryParams) { - // Construct a subclass - return new this.constructor({ - realData: result.data, - rateLimit: result.rateLimit, - instance: this._instance, - queryParams, - sharedParams: this._sharedParams, + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('not implemented'); }); } - getEndpoint() { - return this._endpoint; - } - injectQueryParams(maxResults) { - return { - ...(maxResults ? { max_results: maxResults } : {}), - ...this._queryParams, - }; - } - /* ---------------------- */ - /* Real paginator methods */ - /* ---------------------- */ - /** - * Next page. - */ - async next(maxResults) { - const queryParams = this.getNextQueryParams(maxResults); - const result = await this.makeRequest(queryParams); - return this.makeNewInstanceFromResult(result, queryParams); - } - /** - * Next page, but store it in current instance. - */ - async fetchNext(maxResults) { - const queryParams = this.getNextQueryParams(maxResults); - const result = await this.makeRequest(queryParams); - // Await in case of async sub-methods - await this.refreshInstanceFromResult(result, true); - return this; +} +exports.BasicCredentialHandler = BasicCredentialHandler; +class BearerCredentialHandler { + constructor(token) { + this.token = token; } - /** - * Fetch up to {count} items after current page, - * as long as rate limit is not hit and Twitter has some results - */ - async fetchLast(count = Infinity) { - let queryParams = this.getNextQueryParams(this._maxResultsWhenFetchLast); - let resultCount = 0; - // Break at rate limit limit - while (resultCount < count && this._isRateLimitOk) { - const response = await this.makeRequest(queryParams); - await this.refreshInstanceFromResult(response, true); - resultCount += this.getPageLengthFromRequest(response); - if (this.isFetchLastOver(response)) { - break; - } - queryParams = this.getNextQueryParams(this._maxResultsWhenFetchLast); + // currently implements pre-authorization + // TODO: support preAuth = false where it hooks on 401 + prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); } - return this; - } - get rateLimit() { - var _a; - return { ...(_a = this._rateLimit) !== null && _a !== void 0 ? _a : {} }; - } - /** Get raw data returned by Twitter API. */ - get data() { - return this._realData; + options.headers['Authorization'] = `Bearer ${this.token}`; } - get done() { - return !this.canFetchNextPage(this._realData); + // This handler cannot handle 401 + canHandleAuthentication() { + return false; } - /** - * Iterate over currently fetched items. - */ - *[Symbol.iterator]() { - yield* this.getItemArray(); + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('not implemented'); + }); } - /** - * Iterate over items "undefinitely" (until rate limit is hit / they're no more items available) - * This will **mutate the current instance** and fill data, metas, etc. inside this instance. - * - * If you need to handle concurrent requests, or you need to rely on immutability, please use `.fetchAndIterate()` instead. - */ - async *[Symbol.asyncIterator]() { - yield* this.getItemArray(); - // eslint-disable-next-line @typescript-eslint/no-this-alias - let paginator = this; - let canFetchNextPage = this.canFetchNextPage(this._realData); - while (canFetchNextPage && this._isRateLimitOk && paginator.getItemArray().length > 0) { - const next = await paginator.next(this._maxResultsWhenFetchLast); - // Store data into current instance [needed to access includes and meta] - this.refreshInstanceFromResult({ data: next._realData, headers: {}, rateLimit: next._rateLimit }, true); - canFetchNextPage = this.canFetchNextPage(next._realData); - const items = next.getItemArray(); - yield* items; - paginator = next; - } +} +exports.BearerCredentialHandler = BearerCredentialHandler; +class PersonalAccessTokenCredentialHandler { + constructor(token) { + this.token = token; } - /** - * Iterate over items "undefinitely" without modifying the current instance (until rate limit is hit / they're no more items available) - * - * This will **NOT** mutate the current instance, meaning that current instance will not inherit from `includes` and `meta` (v2 API only). - * Use `Symbol.asyncIterator` (`for-await of`) to directly access items with current instance mutation. - */ - async *fetchAndIterate() { - for (const item of this.getItemArray()) { - yield [item, this]; - } - // eslint-disable-next-line @typescript-eslint/no-this-alias - let paginator = this; - let canFetchNextPage = this.canFetchNextPage(this._realData); - while (canFetchNextPage && this._isRateLimitOk && paginator.getItemArray().length > 0) { - const next = await paginator.next(this._maxResultsWhenFetchLast); - // Store data into current instance [needed to access includes and meta] - this.refreshInstanceFromResult({ data: next._realData, headers: {}, rateLimit: next._rateLimit }, true); - canFetchNextPage = this.canFetchNextPage(next._realData); - for (const item of next.getItemArray()) { - yield [item, next]; - } - this._rateLimit = next._rateLimit; - paginator = next; + // currently implements pre-authorization + // TODO: support preAuth = false where it hooks on 401 + prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); } + options.headers['Authorization'] = `Basic ${Buffer.from(`PAT:${this.token}`).toString('base64')}`; } -} -exports.TwitterPaginator = TwitterPaginator; -/** PreviousableTwitterPaginator: a TwitterPaginator able to get consume data from both side, next and previous. */ -class PreviousableTwitterPaginator extends TwitterPaginator { - /** - * Previous page (new tweets) - */ - async previous(maxResults) { - const queryParams = this.getPreviousQueryParams(maxResults); - const result = await this.makeRequest(queryParams); - return this.makeNewInstanceFromResult(result, queryParams); + // This handler cannot handle 401 + canHandleAuthentication() { + return false; } - /** - * Previous page, but in current instance. - */ - async fetchPrevious(maxResults) { - const queryParams = this.getPreviousQueryParams(maxResults); - const result = await this.makeRequest(queryParams); - await this.refreshInstanceFromResult(result, false); - return this; + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('not implemented'); + }); } } -exports.PreviousableTwitterPaginator = PreviousableTwitterPaginator; -exports["default"] = TwitterPaginator; - +exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler; +//# sourceMappingURL=auth.js.map /***/ }), +/* 555 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 823: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +module.exports = handlePush; -"use strict"; +const { inspect } = __webpack_require__(669); -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.WelcomeDmV1Paginator = exports.DmEventsV1Paginator = void 0; -const paginator_v1_1 = __nccwpck_require__(593); -class DmEventsV1Paginator extends paginator_v1_1.CursoredV1Paginator { - constructor() { - super(...arguments); - this._endpoint = 'direct_messages/events/list.json'; - } - refreshInstanceFromResult(response, isNextPage) { - const result = response.data; - this._rateLimit = response.rateLimit; - if (isNextPage) { - this._realData.events.push(...result.events); - this._realData.next_cursor = result.next_cursor; - } - } - getPageLengthFromRequest(result) { - return result.data.events.length; - } - getItemArray() { - return this.events; - } - /** - * Events returned by paginator. - */ - get events() { - return this._realData.events; - } -} -exports.DmEventsV1Paginator = DmEventsV1Paginator; -class WelcomeDmV1Paginator extends paginator_v1_1.CursoredV1Paginator { - constructor() { - super(...arguments); - this._endpoint = 'direct_messages/welcome_messages/list.json'; - } - refreshInstanceFromResult(response, isNextPage) { - const result = response.data; - this._rateLimit = response.rateLimit; - if (isNextPage) { - this._realData.welcome_messages.push(...result.welcome_messages); - this._realData.next_cursor = result.next_cursor; - } - } - getPageLengthFromRequest(result) { - return result.data.welcome_messages.length; - } - getItemArray() { - return this.welcomeMessages; - } - get welcomeMessages() { - return this._realData.welcome_messages; - } -} -exports.WelcomeDmV1Paginator = WelcomeDmV1Paginator; +const addComment = __webpack_require__(591); +const getNewTweets = __webpack_require__(629); +const isSetupDone = __webpack_require__(269); +const setup = __webpack_require__(802); +const tweet = __webpack_require__(713); +const parseTweetFileContent = __webpack_require__(746); -/***/ }), +async function handlePush(state) { + const { toolkit, octokit, payload, ref } = state; -/***/ 5814: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + // ignore builds from tags + if (!ref.startsWith("refs/heads/")) { + toolkit.info(`GITHUB_REF is not a branch: ${ref}`); + return; + } -"use strict"; + // ignore builds from branches other than the repository’s defaul branch + const defaultBranch = payload.repository.default_branch; + const branch = process.env.GITHUB_REF.substr("refs/heads/".length); + if (branch !== defaultBranch) { + toolkit.info(`"${branch}" is not the default branch`); + return; + } -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; + // on request errors, log the requset options and error, then end process + octokit.hook.error("request", (error, options) => { + if (options.request.expectStatus === error.status) { + throw error; } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -__exportStar(__nccwpck_require__(6301), exports); -__exportStar(__nccwpck_require__(5317), exports); -__exportStar(__nccwpck_require__(823), exports); -__exportStar(__nccwpck_require__(7277), exports); -__exportStar(__nccwpck_require__(9848), exports); -__exportStar(__nccwpck_require__(8985), exports); -__exportStar(__nccwpck_require__(2178), exports); -__exportStar(__nccwpck_require__(5631), exports); -__exportStar(__nccwpck_require__(7874), exports); + toolkit.info(error); + toolkit.setFailed(error.stack); + process.exit(); + }); -/***/ }), + // make sure repository is already setup + if (!(await isSetupDone())) { + toolkit.info("tweets/ folder does not yet exist. Starting setup"); + return setup(state); + } + + // find tweets + const newTweets = await getNewTweets(state); + if (newTweets.length === 0) { + toolkit.info("No new tweets"); + return; + } + + // post all the tweets + const tweetUrls = []; + const tweetErrors = []; + for (let i = 0; i < newTweets.length; i++) { + try { + const parsed = parseTweetFileContent(newTweets[i].text, state.dir); + + toolkit.info(`Tweeting: ${parsed.text}`); + if (parsed.poll) { + toolkit.info( + `Tweet has poll with ${ + parsed.poll.length + } options: ${parsed.poll.join(", ")}` + ); + } -/***/ 5631: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + let result = await tweet(state, parsed, newTweets[i].filename); + while (result) { + toolkit.info(`tweeted: ${result.url}`); + tweetUrls.push(result.url); + result = result.thread; + } + } catch (error) { + console.log(`error`); + console.log(error[0] || error); + tweetErrors.push(error[0] || error); + } + } -"use strict"; + if (tweetUrls.length) { + await addComment(state, "Tweeted:\n\n- " + tweetUrls.join("\n- ")); + } -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.ListSubscribersV1Paginator = exports.ListMembersV1Paginator = exports.ListSubscriptionsV1Paginator = exports.ListOwnershipsV1Paginator = exports.ListMembershipsV1Paginator = void 0; -const paginator_v1_1 = __nccwpck_require__(593); -class ListListsV1Paginator extends paginator_v1_1.CursoredV1Paginator { - refreshInstanceFromResult(response, isNextPage) { - const result = response.data; - this._rateLimit = response.rateLimit; - if (isNextPage) { - this._realData.lists.push(...result.lists); - this._realData.next_cursor = result.next_cursor; - } - } - getPageLengthFromRequest(result) { - return result.data.lists.length; - } - getItemArray() { - return this.lists; - } - /** - * Lists returned by paginator. - */ - get lists() { - return this._realData.lists; - } -} -class ListMembershipsV1Paginator extends ListListsV1Paginator { - constructor() { - super(...arguments); - this._endpoint = 'lists/memberships.json'; - } -} -exports.ListMembershipsV1Paginator = ListMembershipsV1Paginator; -class ListOwnershipsV1Paginator extends ListListsV1Paginator { - constructor() { - super(...arguments); - this._endpoint = 'lists/ownerships.json'; - } -} -exports.ListOwnershipsV1Paginator = ListOwnershipsV1Paginator; -class ListSubscriptionsV1Paginator extends ListListsV1Paginator { - constructor() { - super(...arguments); - this._endpoint = 'lists/subscriptions.json'; - } -} -exports.ListSubscriptionsV1Paginator = ListSubscriptionsV1Paginator; -class ListUsersV1Paginator extends paginator_v1_1.CursoredV1Paginator { - refreshInstanceFromResult(response, isNextPage) { - const result = response.data; - this._rateLimit = response.rateLimit; - if (isNextPage) { - this._realData.users.push(...result.users); - this._realData.next_cursor = result.next_cursor; - } - } - getPageLengthFromRequest(result) { - return result.data.users.length; - } - getItemArray() { - return this.users; - } - /** - * Users returned by paginator. - */ - get users() { - return this._realData.users; - } -} -class ListMembersV1Paginator extends ListUsersV1Paginator { - constructor() { - super(...arguments); - this._endpoint = 'lists/members.json'; - } -} -exports.ListMembersV1Paginator = ListMembersV1Paginator; -class ListSubscribersV1Paginator extends ListUsersV1Paginator { - constructor() { - super(...arguments); - this._endpoint = 'lists/subscribers.json'; - } + if (tweetErrors.length) { + tweetErrors.forEach((error) => toolkit.error(inspect(error))); + await addComment( + state, + "Errors:\n\n- " + tweetErrors.map((error) => error.message).join("\n- ") + ); + return toolkit.setFailed("Error tweeting"); + } } -exports.ListSubscribersV1Paginator = ListSubscribersV1Paginator; /***/ }), - -/***/ 7874: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/* 556 */, +/* 557 */ +/***/ (function(module) { "use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.UserListFollowedV2Paginator = exports.UserListMembershipsV2Paginator = exports.UserOwnedListsV2Paginator = void 0; -const v2_paginator_1 = __nccwpck_require__(8108); -class ListTimelineV2Paginator extends v2_paginator_1.TimelineV2Paginator { - getItemArray() { - return this.lists; - } - /** - * Lists returned by paginator. - */ - get lists() { - var _a; - return (_a = this._realData.data) !== null && _a !== void 0 ? _a : []; - } - get meta() { - return super.meta; - } -} -class UserOwnedListsV2Paginator extends ListTimelineV2Paginator { - constructor() { - super(...arguments); - this._endpoint = 'users/:id/owned_lists'; - } -} -exports.UserOwnedListsV2Paginator = UserOwnedListsV2Paginator; -class UserListMembershipsV2Paginator extends ListTimelineV2Paginator { - constructor() { - super(...arguments); - this._endpoint = 'users/:id/list_memberships'; - } -} -exports.UserListMembershipsV2Paginator = UserListMembershipsV2Paginator; -class UserListFollowedV2Paginator extends ListTimelineV2Paginator { - constructor() { - super(...arguments); - this._endpoint = 'users/:id/followed_lists'; - } -} -exports.UserListFollowedV2Paginator = UserListFollowedV2Paginator; +function _createForOfIteratorHelper(o,allowArrayLike){var it=typeof Symbol!=="undefined"&&o[Symbol.iterator]||o["@@iterator"];if(!it){if(Array.isArray(o)||(it=_unsupportedIterableToArray(o))||allowArrayLike&&o&&typeof o.length==="number"){if(it)o=it;var i=0;var F=function F(){};return{s:F,n:function n(){if(i>=o.length)return{done:true};return{done:false,value:o[i++]}},e:function e(_e2){throw _e2},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var normalCompletion=true,didErr=false,err;return{s:function s(){it=it.call(o)},n:function n(){var step=it.next();normalCompletion=step.done;return step},e:function e(_e3){didErr=true;err=_e3},f:function f(){try{if(!normalCompletion&&it["return"]!=null)it["return"]()}finally{if(didErr)throw err}}}}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_unsupportedIterableToArray(arr,i)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(o);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i { +/* 558 */, +/* 559 */, +/* 560 */ +/***/ (function(module) { "use strict"; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.MuteUserIdsV1Paginator = exports.MuteUserListV1Paginator = void 0; -const paginator_v1_1 = __nccwpck_require__(593); -class MuteUserListV1Paginator extends paginator_v1_1.CursoredV1Paginator { - constructor() { - super(...arguments); - this._endpoint = 'mutes/users/list.json'; - } - refreshInstanceFromResult(response, isNextPage) { - const result = response.data; - this._rateLimit = response.rateLimit; - if (isNextPage) { - this._realData.users.push(...result.users); - this._realData.next_cursor = result.next_cursor; - } - } - getPageLengthFromRequest(result) { - return result.data.users.length; - } - getItemArray() { - return this.users; - } - /** - * Users returned by paginator. - */ - get users() { - return this._realData.users; - } -} -exports.MuteUserListV1Paginator = MuteUserListV1Paginator; -class MuteUserIdsV1Paginator extends paginator_v1_1.CursoredV1Paginator { - constructor() { - super(...arguments); - this._endpoint = 'mutes/users/ids.json'; - this._maxResultsWhenFetchLast = 5000; - } - refreshInstanceFromResult(response, isNextPage) { - const result = response.data; - this._rateLimit = response.rateLimit; - if (isNextPage) { - this._realData.ids.push(...result.ids); - this._realData.next_cursor = result.next_cursor; - } - } - getPageLengthFromRequest(result) { - return result.data.ids.length; +module.exports = function generate__limitProperties(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + if (!($isData || typeof $schema == 'number')) { + throw new Error($keyword + ' must be number'); + } + var $op = $keyword == 'maxProperties' ? '>' : '<'; + out += 'if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { '; + var $errorKeyword = $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_limitProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have '; + if ($keyword == 'maxProperties') { + out += 'more'; + } else { + out += 'fewer'; + } + out += ' than '; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + ($schema); + } + out += ' properties\' '; } - getItemArray() { - return this.ids; + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; } - /** - * Users IDs returned by paginator. - */ - get ids() { - return this._realData.ids; + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; } -exports.MuteUserIdsV1Paginator = MuteUserIdsV1Paginator; /***/ }), - -/***/ 593: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { +/* 561 */, +/* 562 */ +/***/ (function(__unusedmodule, exports) { "use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.CursoredV1Paginator = void 0; -const TwitterPaginator_1 = __importDefault(__nccwpck_require__(5317)); -class CursoredV1Paginator extends TwitterPaginator_1.default { - getNextQueryParams(maxResults) { - var _a; - return { - ...this._queryParams, - cursor: (_a = this._realData.next_cursor_str) !== null && _a !== void 0 ? _a : this._realData.next_cursor, - ...(maxResults ? { count: maxResults } : {}), - }; - } - isFetchLastOver(result) { - // If we cant fetch next page - return !this.canFetchNextPage(result.data); - } - canFetchNextPage(result) { - // If one of cursor is valid - return !this.isNextCursorInvalid(result.next_cursor) || !this.isNextCursorInvalid(result.next_cursor_str); - } - isNextCursorInvalid(value) { - return value === undefined - || value === 0 - || value === -1 - || value === '0' - || value === '-1'; - } -} -exports.CursoredV1Paginator = CursoredV1Paginator; +Object.defineProperty(exports, "__esModule", { + value: true +}); +// Copyright Twitter Inc. Licensed under MIT +// https://github.com/twitter/twemoji-parser/blob/master/LICENSE.md -/***/ }), +// This file is auto-generated +exports.default = /(?:\ud83d[\udc68\udc69])(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddb0-\uddb3])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f)|[#*0-9]\ufe0f?\u20e3|(?:[©®\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\uddb5\uddb6\uddb8\uddb9\uddd1-\udddd]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a-\udc6d\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\udeeb\udeec\udef4-\udef9]|\ud83e[\udd10-\udd17\udd1d\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd40-\udd45\udd47-\udd70\udd73-\udd76\udd7a\udd7c-\udda2\uddb4\uddb7\uddc0-\uddc2\uddd0\uddde-\uddff]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g; -/***/ 9848: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { +/***/ }), +/* 563 */ +/***/ (function(module, __unusedexports, __webpack_require__) { "use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.UserFavoritesV1Paginator = exports.ListTimelineV1Paginator = exports.UserTimelineV1Paginator = exports.MentionTimelineV1Paginator = exports.HomeTimelineV1Paginator = void 0; -const TwitterPaginator_1 = __importDefault(__nccwpck_require__(5317)); -/** A generic TwitterPaginator able to consume TweetV1 timelines. */ -class TweetTimelineV1Paginator extends TwitterPaginator_1.default { - constructor() { - super(...arguments); - this.hasFinishedFetch = false; - } - refreshInstanceFromResult(response, isNextPage) { - const result = response.data; - this._rateLimit = response.rateLimit; - if (isNextPage) { - this._realData.push(...result); - // HINT: This is an approximation, as "end" of pagination cannot be safely determined without cursors. - this.hasFinishedFetch = result.length === 0; - } - } - getNextQueryParams(maxResults) { - const lastestId = BigInt(this._realData[this._realData.length - 1].id_str); - return { - ...this.injectQueryParams(maxResults), - max_id: (lastestId - BigInt(1)).toString(), - }; - } - getPageLengthFromRequest(result) { - return result.data.length; - } - isFetchLastOver(result) { - return !result.data.length; - } - canFetchNextPage(result) { - return result.length > 0; - } - getItemArray() { - return this.tweets; - } - /** - * Tweets returned by paginator. - */ - get tweets() { - return this._realData; - } - get done() { - return super.done || this.hasFinishedFetch; - } -} -// Timelines -// Home -class HomeTimelineV1Paginator extends TweetTimelineV1Paginator { - constructor() { - super(...arguments); - this._endpoint = 'statuses/home_timeline.json'; - } -} -exports.HomeTimelineV1Paginator = HomeTimelineV1Paginator; -// Mention -class MentionTimelineV1Paginator extends TweetTimelineV1Paginator { - constructor() { - super(...arguments); - this._endpoint = 'statuses/mentions_timeline.json'; - } -} -exports.MentionTimelineV1Paginator = MentionTimelineV1Paginator; -// User -class UserTimelineV1Paginator extends TweetTimelineV1Paginator { - constructor() { - super(...arguments); - this._endpoint = 'statuses/user_timeline.json'; - } -} -exports.UserTimelineV1Paginator = UserTimelineV1Paginator; -// Lists -class ListTimelineV1Paginator extends TweetTimelineV1Paginator { - constructor() { - super(...arguments); - this._endpoint = 'lists/statuses.json'; - } -} -exports.ListTimelineV1Paginator = ListTimelineV1Paginator; -// Favorites -class UserFavoritesV1Paginator extends TweetTimelineV1Paginator { - constructor() { - super(...arguments); - this._endpoint = 'favorites/list.json'; - } -} -exports.UserFavoritesV1Paginator = UserFavoritesV1Paginator; - -/***/ }), +var resolve = __webpack_require__(283) + , util = __webpack_require__(855) + , errorClasses = __webpack_require__(580) + , stableStringify = __webpack_require__(741); -/***/ 6301: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +var validateGenerator = __webpack_require__(212); -"use strict"; +/** + * Functions below are used inside compiled validations function + */ -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.TweetV2ListTweetsPaginator = exports.TweetV2UserLikedTweetsPaginator = exports.TweetBookmarksTimelineV2Paginator = exports.TweetUserMentionTimelineV2Paginator = exports.TweetUserTimelineV2Paginator = exports.TweetHomeTimelineV2Paginator = exports.QuotedTweetsTimelineV2Paginator = exports.TweetSearchAllV2Paginator = exports.TweetSearchRecentV2Paginator = void 0; -const v2_paginator_1 = __nccwpck_require__(8108); -/** A generic PreviousableTwitterPaginator able to consume TweetV2 timelines with since_id, until_id and next_token (when available). */ -class TweetTimelineV2Paginator extends v2_paginator_1.TwitterV2Paginator { - refreshInstanceFromResult(response, isNextPage) { - var _a; - const result = response.data; - const resultData = (_a = result.data) !== null && _a !== void 0 ? _a : []; - this._rateLimit = response.rateLimit; - if (!this._realData.data) { - this._realData.data = []; - } - if (isNextPage) { - this._realData.meta.oldest_id = result.meta.oldest_id; - this._realData.meta.result_count += result.meta.result_count; - this._realData.meta.next_token = result.meta.next_token; - this._realData.data.push(...resultData); - } - else { - this._realData.meta.newest_id = result.meta.newest_id; - this._realData.meta.result_count += result.meta.result_count; - this._realData.data.unshift(...resultData); - } - this.updateIncludes(result); - } - getNextQueryParams(maxResults) { - this.assertUsable(); - const params = { ...this.injectQueryParams(maxResults) }; - if (this._realData.meta.next_token) { - params.next_token = this._realData.meta.next_token; - } - else { - if (params.start_time) { - // until_id and start_time are forbidden together for some reason, so convert start_time to a since_id. - params.since_id = this.dateStringToSnowflakeId(params.start_time); - delete params.start_time; - } - if (params.end_time) { - // until_id overrides end_time, so delete it - delete params.end_time; - } - params.until_id = this._realData.meta.oldest_id; - } - return params; - } - getPreviousQueryParams(maxResults) { - this.assertUsable(); - return { - ...this.injectQueryParams(maxResults), - since_id: this._realData.meta.newest_id, - }; - } - getPageLengthFromRequest(result) { - var _a, _b; - return (_b = (_a = result.data.data) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0; - } - isFetchLastOver(result) { - var _a; - return !((_a = result.data.data) === null || _a === void 0 ? void 0 : _a.length) || !this.canFetchNextPage(result.data); - } - canFetchNextPage(result) { - return !!result.meta.next_token; - } - getItemArray() { - return this.tweets; - } - dateStringToSnowflakeId(dateStr) { - const TWITTER_START_EPOCH = BigInt('1288834974657'); - const date = new Date(dateStr); - if (isNaN(date.valueOf())) { - throw new Error('Unable to convert start_time/end_time to a valid date. A ISO 8601 DateTime is excepted, please check your input.'); - } - const dateTimestamp = BigInt(date.valueOf()); - return ((dateTimestamp - TWITTER_START_EPOCH) << BigInt('22')).toString(); - } - /** - * Tweets returned by paginator. - */ - get tweets() { - var _a; - return (_a = this._realData.data) !== null && _a !== void 0 ? _a : []; - } - get meta() { - return super.meta; - } -} -/** A generic PreviousableTwitterPaginator able to consume TweetV2 timelines with pagination_tokens. */ -class TweetPaginableTimelineV2Paginator extends v2_paginator_1.TimelineV2Paginator { - refreshInstanceFromResult(response, isNextPage) { - super.refreshInstanceFromResult(response, isNextPage); - const result = response.data; - if (isNextPage) { - this._realData.meta.oldest_id = result.meta.oldest_id; - } - else { - this._realData.meta.newest_id = result.meta.newest_id; - } - } - getItemArray() { - return this.tweets; - } - /** - * Tweets returned by paginator. - */ - get tweets() { - var _a; - return (_a = this._realData.data) !== null && _a !== void 0 ? _a : []; - } - get meta() { - return super.meta; - } -} -// ---------------- -// - Tweet search - -// ---------------- -class TweetSearchRecentV2Paginator extends TweetTimelineV2Paginator { - constructor() { - super(...arguments); - this._endpoint = 'tweets/search/recent'; - } -} -exports.TweetSearchRecentV2Paginator = TweetSearchRecentV2Paginator; -class TweetSearchAllV2Paginator extends TweetTimelineV2Paginator { - constructor() { - super(...arguments); - this._endpoint = 'tweets/search/all'; - } -} -exports.TweetSearchAllV2Paginator = TweetSearchAllV2Paginator; -class QuotedTweetsTimelineV2Paginator extends TweetPaginableTimelineV2Paginator { - constructor() { - super(...arguments); - this._endpoint = 'tweets/:id/quote_tweets'; - } -} -exports.QuotedTweetsTimelineV2Paginator = QuotedTweetsTimelineV2Paginator; -// ----------------- -// - Home timeline - -// ----------------- -class TweetHomeTimelineV2Paginator extends TweetPaginableTimelineV2Paginator { - constructor() { - super(...arguments); - this._endpoint = 'users/:id/timelines/reverse_chronological'; - } -} -exports.TweetHomeTimelineV2Paginator = TweetHomeTimelineV2Paginator; -class TweetUserTimelineV2Paginator extends TweetPaginableTimelineV2Paginator { - constructor() { - super(...arguments); - this._endpoint = 'users/:id/tweets'; - } -} -exports.TweetUserTimelineV2Paginator = TweetUserTimelineV2Paginator; -class TweetUserMentionTimelineV2Paginator extends TweetPaginableTimelineV2Paginator { - constructor() { - super(...arguments); - this._endpoint = 'users/:id/mentions'; - } -} -exports.TweetUserMentionTimelineV2Paginator = TweetUserMentionTimelineV2Paginator; -// ------------- -// - Bookmarks - -// ------------- -class TweetBookmarksTimelineV2Paginator extends TweetPaginableTimelineV2Paginator { - constructor() { - super(...arguments); - this._endpoint = 'users/:id/bookmarks'; - } -} -exports.TweetBookmarksTimelineV2Paginator = TweetBookmarksTimelineV2Paginator; -// --------------------------------------------------------------------------------- -// - Tweet lists (consume tweets with pagination tokens instead of since/until id) - -// --------------------------------------------------------------------------------- -/** A generic TwitterPaginator able to consume TweetV2 timelines. */ -class TweetListV2Paginator extends v2_paginator_1.TimelineV2Paginator { - /** - * Tweets returned by paginator. - */ - get tweets() { - var _a; - return (_a = this._realData.data) !== null && _a !== void 0 ? _a : []; - } - get meta() { - return super.meta; - } - getItemArray() { - return this.tweets; - } -} -class TweetV2UserLikedTweetsPaginator extends TweetListV2Paginator { - constructor() { - super(...arguments); - this._endpoint = 'users/:id/liked_tweets'; - } -} -exports.TweetV2UserLikedTweetsPaginator = TweetV2UserLikedTweetsPaginator; -class TweetV2ListTweetsPaginator extends TweetListV2Paginator { - constructor() { - super(...arguments); - this._endpoint = 'lists/:id/tweets'; - } -} -exports.TweetV2ListTweetsPaginator = TweetV2ListTweetsPaginator; +var ucs2length = util.ucs2length; +var equal = __webpack_require__(264); +// this error is thrown by async schemas to return validation errors via exception +var ValidationError = errorClasses.Validation; -/***/ }), +module.exports = compile; -/***/ 8985: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { -"use strict"; +/** + * Compiles schema to validation function + * @this Ajv + * @param {Object} schema schema object + * @param {Object} root object with information about the root schema for this schema + * @param {Object} localRefs the hash of local references inside the schema (created by resolve.id), used for inline resolution + * @param {String} baseId base ID for IDs in the schema + * @return {Function} validation function + */ +function compile(schema, root, localRefs, baseId) { + /* jshint validthis: true, evil: true */ + /* eslint no-shadow: 0 */ + var self = this + , opts = this._opts + , refVal = [ undefined ] + , refs = {} + , patterns = [] + , patternsHash = {} + , defaults = [] + , defaultsHash = {} + , customRules = []; + + root = root || { schema: schema, refVal: refVal, refs: refs }; + + var c = checkCompiling.call(this, schema, root, baseId); + var compilation = this._compilations[c.index]; + if (c.compiling) return (compilation.callValidate = callValidate); + + var formats = this._formats; + var RULES = this.RULES; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.FriendshipsOutgoingV1Paginator = exports.FriendshipsIncomingV1Paginator = exports.UserSearchV1Paginator = void 0; -const TwitterPaginator_1 = __importDefault(__nccwpck_require__(5317)); -const paginator_v1_1 = __nccwpck_require__(593); -/** A generic TwitterPaginator able to consume TweetV1 timelines. */ -class UserSearchV1Paginator extends TwitterPaginator_1.default { - constructor() { - super(...arguments); - this._endpoint = 'users/search.json'; - } - refreshInstanceFromResult(response, isNextPage) { - const result = response.data; - this._rateLimit = response.rateLimit; - if (isNextPage) { - this._realData.push(...result); - } - } - getNextQueryParams(maxResults) { - var _a; - const previousPage = Number((_a = this._queryParams.page) !== null && _a !== void 0 ? _a : '1'); - return { - ...this._queryParams, - page: previousPage + 1, - ...maxResults ? { count: maxResults } : {}, - }; - } - getPageLengthFromRequest(result) { - return result.data.length; - } - isFetchLastOver(result) { - return !result.data.length; - } - canFetchNextPage(result) { - return result.length > 0; - } - getItemArray() { - return this.users; - } - /** - * Users returned by paginator. - */ - get users() { - return this._realData; - } -} -exports.UserSearchV1Paginator = UserSearchV1Paginator; -class FriendshipsIncomingV1Paginator extends paginator_v1_1.CursoredV1Paginator { - constructor() { - super(...arguments); - this._endpoint = 'friendships/incoming.json'; - this._maxResultsWhenFetchLast = 5000; - } - refreshInstanceFromResult(response, isNextPage) { - const result = response.data; - this._rateLimit = response.rateLimit; - if (isNextPage) { - this._realData.ids.push(...result.ids); - this._realData.next_cursor = result.next_cursor; - } + try { + var v = localCompile(schema, root, localRefs, baseId); + compilation.validate = v; + var cv = compilation.callValidate; + if (cv) { + cv.schema = v.schema; + cv.errors = null; + cv.refs = v.refs; + cv.refVal = v.refVal; + cv.root = v.root; + cv.$async = v.$async; + if (opts.sourceCode) cv.source = v.source; + } + return v; + } finally { + endCompiling.call(this, schema, root, baseId); + } + + /* @this {*} - custom context, see passContext option */ + function callValidate() { + /* jshint validthis: true */ + var validate = compilation.validate; + var result = validate.apply(this, arguments); + callValidate.errors = validate.errors; + return result; + } + + function localCompile(_schema, _root, localRefs, baseId) { + var isRoot = !_root || (_root && _root.schema == _schema); + if (_root.schema != root.schema) + return compile.call(self, _schema, _root, localRefs, baseId); + + var $async = _schema.$async === true; + + var sourceCode = validateGenerator({ + isTop: true, + schema: _schema, + isRoot: isRoot, + baseId: baseId, + root: _root, + schemaPath: '', + errSchemaPath: '#', + errorPath: '""', + MissingRefError: errorClasses.MissingRef, + RULES: RULES, + validate: validateGenerator, + util: util, + resolve: resolve, + resolveRef: resolveRef, + usePattern: usePattern, + useDefault: useDefault, + useCustomRule: useCustomRule, + opts: opts, + formats: formats, + logger: self.logger, + self: self + }); + + sourceCode = vars(refVal, refValCode) + vars(patterns, patternCode) + + vars(defaults, defaultCode) + vars(customRules, customRuleCode) + + sourceCode; + + if (opts.processCode) sourceCode = opts.processCode(sourceCode, _schema); + // console.log('\n\n\n *** \n', JSON.stringify(sourceCode)); + var validate; + try { + var makeValidate = new Function( + 'self', + 'RULES', + 'formats', + 'root', + 'refVal', + 'defaults', + 'customRules', + 'equal', + 'ucs2length', + 'ValidationError', + sourceCode + ); + + validate = makeValidate( + self, + RULES, + formats, + root, + refVal, + defaults, + customRules, + equal, + ucs2length, + ValidationError + ); + + refVal[0] = validate; + } catch(e) { + self.logger.error('Error compiling schema, function code:', sourceCode); + throw e; + } + + validate.schema = _schema; + validate.errors = null; + validate.refs = refs; + validate.refVal = refVal; + validate.root = isRoot ? validate : _root; + if ($async) validate.$async = true; + if (opts.sourceCode === true) { + validate.source = { + code: sourceCode, + patterns: patterns, + defaults: defaults + }; } - getPageLengthFromRequest(result) { - return result.data.ids.length; + + return validate; + } + + function resolveRef(baseId, ref, isRoot) { + ref = resolve.url(baseId, ref); + var refIndex = refs[ref]; + var _refVal, refCode; + if (refIndex !== undefined) { + _refVal = refVal[refIndex]; + refCode = 'refVal[' + refIndex + ']'; + return resolvedRef(_refVal, refCode); } - getItemArray() { - return this.ids; + if (!isRoot && root.refs) { + var rootRefId = root.refs[ref]; + if (rootRefId !== undefined) { + _refVal = root.refVal[rootRefId]; + refCode = addLocalRef(ref, _refVal); + return resolvedRef(_refVal, refCode); + } } - /** - * Users IDs returned by paginator. - */ - get ids() { - return this._realData.ids; + + refCode = addLocalRef(ref); + var v = resolve.call(self, localCompile, root, ref); + if (v === undefined) { + var localSchema = localRefs && localRefs[ref]; + if (localSchema) { + v = resolve.inlineRef(localSchema, opts.inlineRefs) + ? localSchema + : compile.call(self, localSchema, root, localRefs, baseId); + } } -} -exports.FriendshipsIncomingV1Paginator = FriendshipsIncomingV1Paginator; -class FriendshipsOutgoingV1Paginator extends FriendshipsIncomingV1Paginator { - constructor() { - super(...arguments); - this._endpoint = 'friendships/outgoing.json'; + + if (v === undefined) { + removeLocalRef(ref); + } else { + replaceLocalRef(ref, v); + return resolvedRef(v, refCode); } -} -exports.FriendshipsOutgoingV1Paginator = FriendshipsOutgoingV1Paginator; + } + function addLocalRef(ref, v) { + var refId = refVal.length; + refVal[refId] = v; + refs[ref] = refId; + return 'refVal' + refId; + } -/***/ }), + function removeLocalRef(ref) { + delete refs[ref]; + } -/***/ 2178: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + function replaceLocalRef(ref, v) { + var refId = refs[ref]; + refVal[refId] = v; + } -"use strict"; + function resolvedRef(refVal, code) { + return typeof refVal == 'object' || typeof refVal == 'boolean' + ? { code: code, schema: refVal, inline: true } + : { code: code, $async: refVal && !!refVal.$async }; + } -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.TweetRetweetersUsersV2Paginator = exports.TweetLikingUsersV2Paginator = exports.UserListFollowersV2Paginator = exports.UserListMembersV2Paginator = exports.UserFollowingV2Paginator = exports.UserFollowersV2Paginator = exports.UserMutingUsersV2Paginator = exports.UserBlockingUsersV2Paginator = void 0; -const v2_paginator_1 = __nccwpck_require__(8108); -/** A generic PreviousableTwitterPaginator able to consume UserV2 timelines. */ -class UserTimelineV2Paginator extends v2_paginator_1.TimelineV2Paginator { - getItemArray() { - return this.users; + function usePattern(regexStr) { + var index = patternsHash[regexStr]; + if (index === undefined) { + index = patternsHash[regexStr] = patterns.length; + patterns[index] = regexStr; } - /** - * Users returned by paginator. - */ - get users() { - var _a; - return (_a = this._realData.data) !== null && _a !== void 0 ? _a : []; + return 'pattern' + index; + } + + function useDefault(value) { + switch (typeof value) { + case 'boolean': + case 'number': + return '' + value; + case 'string': + return util.toQuotedString(value); + case 'object': + if (value === null) return 'null'; + var valueStr = stableStringify(value); + var index = defaultsHash[valueStr]; + if (index === undefined) { + index = defaultsHash[valueStr] = defaults.length; + defaults[index] = value; + } + return 'default' + index; } - get meta() { - return super.meta; + } + + function useCustomRule(rule, schema, parentSchema, it) { + if (self._opts.validateSchema !== false) { + var deps = rule.definition.dependencies; + if (deps && !deps.every(function(keyword) { + return Object.prototype.hasOwnProperty.call(parentSchema, keyword); + })) + throw new Error('parent schema must have all required keywords: ' + deps.join(',')); + + var validateSchema = rule.definition.validateSchema; + if (validateSchema) { + var valid = validateSchema(schema); + if (!valid) { + var message = 'keyword schema is invalid: ' + self.errorsText(validateSchema.errors); + if (self._opts.validateSchema == 'log') self.logger.error(message); + else throw new Error(message); + } + } } -} -class UserBlockingUsersV2Paginator extends UserTimelineV2Paginator { - constructor() { - super(...arguments); - this._endpoint = 'users/:id/blocking'; + + var compile = rule.definition.compile + , inline = rule.definition.inline + , macro = rule.definition.macro; + + var validate; + if (compile) { + validate = compile.call(self, schema, parentSchema, it); + } else if (macro) { + validate = macro.call(self, schema, parentSchema, it); + if (opts.validateSchema !== false) self.validateSchema(validate, true); + } else if (inline) { + validate = inline.call(self, it, rule.keyword, schema, parentSchema); + } else { + validate = rule.definition.validate; + if (!validate) return; } + + if (validate === undefined) + throw new Error('custom keyword "' + rule.keyword + '"failed to compile'); + + var index = customRules.length; + customRules[index] = validate; + + return { + code: 'customRule' + index, + validate: validate + }; + } } -exports.UserBlockingUsersV2Paginator = UserBlockingUsersV2Paginator; -class UserMutingUsersV2Paginator extends UserTimelineV2Paginator { - constructor() { - super(...arguments); - this._endpoint = 'users/:id/muting'; - } + + +/** + * Checks if the schema is currently compiled + * @this Ajv + * @param {Object} schema schema to compile + * @param {Object} root root object + * @param {String} baseId base schema ID + * @return {Object} object with properties "index" (compilation index) and "compiling" (boolean) + */ +function checkCompiling(schema, root, baseId) { + /* jshint validthis: true */ + var index = compIndex.call(this, schema, root, baseId); + if (index >= 0) return { index: index, compiling: true }; + index = this._compilations.length; + this._compilations[index] = { + schema: schema, + root: root, + baseId: baseId + }; + return { index: index, compiling: false }; } -exports.UserMutingUsersV2Paginator = UserMutingUsersV2Paginator; -class UserFollowersV2Paginator extends UserTimelineV2Paginator { - constructor() { - super(...arguments); - this._endpoint = 'users/:id/followers'; - } + + +/** + * Removes the schema from the currently compiled list + * @this Ajv + * @param {Object} schema schema to compile + * @param {Object} root root object + * @param {String} baseId base schema ID + */ +function endCompiling(schema, root, baseId) { + /* jshint validthis: true */ + var i = compIndex.call(this, schema, root, baseId); + if (i >= 0) this._compilations.splice(i, 1); } -exports.UserFollowersV2Paginator = UserFollowersV2Paginator; -class UserFollowingV2Paginator extends UserTimelineV2Paginator { - constructor() { - super(...arguments); - this._endpoint = 'users/:id/following'; - } + + +/** + * Index of schema compilation in the currently compiled list + * @this Ajv + * @param {Object} schema schema to compile + * @param {Object} root root object + * @param {String} baseId base schema ID + * @return {Integer} compilation index + */ +function compIndex(schema, root, baseId) { + /* jshint validthis: true */ + for (var i=0; i { +/***/ }), +/* 564 */, +/* 565 */, +/* 566 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.TimelineV2Paginator = exports.TwitterV2Paginator = void 0; -const includes_v2_helper_1 = __nccwpck_require__(876); -const TwitterPaginator_1 = __nccwpck_require__(5317); -/** A generic PreviousableTwitterPaginator with common v2 helper methods. */ -class TwitterV2Paginator extends TwitterPaginator_1.PreviousableTwitterPaginator { - updateIncludes(data) { - // Update errors - if (data.errors) { - if (!this._realData.errors) { - this._realData.errors = []; - } - this._realData.errors = [...this._realData.errors, ...data.errors]; - } - // Update includes - if (!data.includes) { - return; - } - if (!this._realData.includes) { - this._realData.includes = {}; - } - const includesRealData = this._realData.includes; - for (const [includeKey, includeArray] of Object.entries(data.includes)) { - if (!includesRealData[includeKey]) { - includesRealData[includeKey] = []; - } - includesRealData[includeKey] = [ - ...includesRealData[includeKey], - ...includeArray, - ]; - } - } - /** Throw if the current paginator is not usable. */ - assertUsable() { - if (this.unusable) { - throw new Error('Unable to use this paginator to fetch more data, as it does not contain any metadata.' + - ' Check .errors property for more details.'); - } - } - get meta() { - return this._realData.meta; - } - get includes() { - var _a; - if (!((_a = this._realData) === null || _a === void 0 ? void 0 : _a.includes)) { - return new includes_v2_helper_1.TwitterV2IncludesHelper(this._realData); - } - if (this._includesInstance) { - return this._includesInstance; - } - return this._includesInstance = new includes_v2_helper_1.TwitterV2IncludesHelper(this._realData); - } - get errors() { - var _a; - return (_a = this._realData.errors) !== null && _a !== void 0 ? _a : []; - } - /** `true` if this paginator only contains error payload and no metadata found to consume data. */ - get unusable() { - return this.errors.length > 0 && !this._realData.meta && !this._realData.data; - } -} -exports.TwitterV2Paginator = TwitterV2Paginator; -/** A generic TwitterV2Paginator able to consume v2 timelines that use max_results and pagination tokens. */ -class TimelineV2Paginator extends TwitterV2Paginator { - refreshInstanceFromResult(response, isNextPage) { - var _a; - const result = response.data; - const resultData = (_a = result.data) !== null && _a !== void 0 ? _a : []; - this._rateLimit = response.rateLimit; - if (!this._realData.data) { - this._realData.data = []; - } - if (isNextPage) { - this._realData.meta.result_count += result.meta.result_count; - this._realData.meta.next_token = result.meta.next_token; - this._realData.data.push(...resultData); - } - else { - this._realData.meta.result_count += result.meta.result_count; - this._realData.meta.previous_token = result.meta.previous_token; - this._realData.data.unshift(...resultData); - } - this.updateIncludes(result); - } - getNextQueryParams(maxResults) { - this.assertUsable(); - return { - ...this.injectQueryParams(maxResults), - pagination_token: this._realData.meta.next_token, - }; - } - getPreviousQueryParams(maxResults) { - this.assertUsable(); - return { - ...this.injectQueryParams(maxResults), - pagination_token: this._realData.meta.previous_token, - }; - } - getPageLengthFromRequest(result) { - var _a, _b; - return (_b = (_a = result.data.data) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0; - } - isFetchLastOver(result) { - var _a; - return !((_a = result.data.data) === null || _a === void 0 ? void 0 : _a.length) || !this.canFetchNextPage(result.data); - } - canFetchNextPage(result) { - var _a; - return !!((_a = result.meta) === null || _a === void 0 ? void 0 : _a.next_token); - } -} -exports.TimelineV2Paginator = TimelineV2Paginator; +var _interopRequireDefault = __webpack_require__(764); -/***/ }), +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; -/***/ 247: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +var _extractHashtagsWithIndices = _interopRequireDefault(__webpack_require__(389)); -"use strict"; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text) { + var hashtagsOnly = []; + var hashtagsWithIndices = (0, _extractHashtagsWithIndices["default"])(text); -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.applyResponseHooks = exports.hasRequestErrorPlugins = void 0; -const types_1 = __nccwpck_require__(1638); -/* Plugin helpers */ -function hasRequestErrorPlugins(client) { - var _a; - if (!((_a = client.clientSettings.plugins) === null || _a === void 0 ? void 0 : _a.length)) { - return false; - } - for (const plugin of client.clientSettings.plugins) { - if (plugin.onRequestError || plugin.onResponseError) { - return true; - } - } - return false; -} -exports.hasRequestErrorPlugins = hasRequestErrorPlugins; -async function applyResponseHooks(requestParams, computedParams, requestOptions, error) { - let override; - if (error instanceof types_1.ApiRequestError || error instanceof types_1.ApiPartialResponseError) { - override = await this.applyPluginMethod('onRequestError', { - client: this, - url: this.getUrlObjectFromUrlString(requestParams.url), - params: requestParams, - computedParams, - requestOptions, - error, - }); - } - else if (error instanceof types_1.ApiResponseError) { - override = await this.applyPluginMethod('onResponseError', { - client: this, - url: this.getUrlObjectFromUrlString(requestParams.url), - params: requestParams, - computedParams, - requestOptions, - error, - }); - } - if (override && override instanceof types_1.TwitterApiPluginResponseOverride) { - return override.value; - } - return Promise.reject(error); + for (var i = 0; i < hashtagsWithIndices.length; i++) { + hashtagsOnly.push(hashtagsWithIndices[i].hashtag); + } + + return hashtagsOnly; } -exports.applyResponseHooks = applyResponseHooks; +module.exports = exports.default; /***/ }), +/* 567 */, +/* 568 */, +/* 569 */ +/***/ (function(module) { + +module.exports = function (it) { + if (typeof it != 'function') throw TypeError(it + ' is not a function!'); + return it; +}; -/***/ 6273: -/***/ ((__unused_webpack_module, exports) => { -"use strict"; +/***/ }), +/* 570 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +// Copyright 2015 Joyent, Inc. + +var assert = __webpack_require__(489); +var util = __webpack_require__(669); + +function FingerprintFormatError(fp, format) { + if (Error.captureStackTrace) + Error.captureStackTrace(this, FingerprintFormatError); + this.name = 'FingerprintFormatError'; + this.fingerprint = fp; + this.format = format; + this.message = 'Fingerprint format is not supported, or is invalid: '; + if (fp !== undefined) + this.message += ' fingerprint = ' + fp; + if (format !== undefined) + this.message += ' format = ' + format; +} +util.inherits(FingerprintFormatError, Error); + +function InvalidAlgorithmError(alg) { + if (Error.captureStackTrace) + Error.captureStackTrace(this, InvalidAlgorithmError); + this.name = 'InvalidAlgorithmError'; + this.algorithm = alg; + this.message = 'Algorithm "' + alg + '" is not supported'; +} +util.inherits(InvalidAlgorithmError, Error); + +function KeyParseError(name, format, innerErr) { + if (Error.captureStackTrace) + Error.captureStackTrace(this, KeyParseError); + this.name = 'KeyParseError'; + this.format = format; + this.keyName = name; + this.innerErr = innerErr; + this.message = 'Failed to parse ' + name + ' as a valid ' + format + + ' format key: ' + innerErr.message; +} +util.inherits(KeyParseError, Error); + +function SignatureParseError(type, format, innerErr) { + if (Error.captureStackTrace) + Error.captureStackTrace(this, SignatureParseError); + this.name = 'SignatureParseError'; + this.type = type; + this.format = format; + this.innerErr = innerErr; + this.message = 'Failed to parse the given data as a ' + type + + ' signature in ' + format + ' format: ' + innerErr.message; +} +util.inherits(SignatureParseError, Error); + +function CertificateParseError(name, format, innerErr) { + if (Error.captureStackTrace) + Error.captureStackTrace(this, CertificateParseError); + this.name = 'CertificateParseError'; + this.format = format; + this.certName = name; + this.innerErr = innerErr; + this.message = 'Failed to parse ' + name + ' as a valid ' + format + + ' format certificate: ' + innerErr.message; +} +util.inherits(CertificateParseError, Error); + +function KeyEncryptedError(name, format) { + if (Error.captureStackTrace) + Error.captureStackTrace(this, KeyEncryptedError); + this.name = 'KeyEncryptedError'; + this.format = format; + this.keyName = name; + this.message = 'The ' + format + ' format key ' + name + ' is ' + + 'encrypted (password-protected), and no passphrase was ' + + 'provided in `options`'; +} +util.inherits(KeyEncryptedError, Error); -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.TwitterApiV2Settings = void 0; -exports.TwitterApiV2Settings = { - debug: false, - deprecationWarnings: true, - logger: { log: console.log.bind(console) }, +module.exports = { + FingerprintFormatError: FingerprintFormatError, + InvalidAlgorithmError: InvalidAlgorithmError, + KeyParseError: KeyParseError, + SignatureParseError: SignatureParseError, + KeyEncryptedError: KeyEncryptedError, + CertificateParseError: CertificateParseError }; /***/ }), +/* 571 */, +/* 572 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _v = _interopRequireDefault(__webpack_require__(136)); + +var _md = _interopRequireDefault(__webpack_require__(659)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const v3 = (0, _v.default)('v3', 0x30, _md.default); +var _default = v3; +exports.default = _default; -/***/ 9362: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { +/***/ }), +/* 573 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { "use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; @@ -20599,9832 +34436,13854 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? ( o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.TweetStream = void 0; -const events_1 = __nccwpck_require__(2361); -const request_handler_helper_1 = __importDefault(__nccwpck_require__(3768)); -const types_1 = __nccwpck_require__(1638); -const TweetStreamEventCombiner_1 = __importDefault(__nccwpck_require__(1132)); -const TweetStreamParser_1 = __importStar(__nccwpck_require__(7467)); -// In seconds -const basicRetriesAttempt = [5, 15, 30, 60, 90, 120, 180, 300, 600, 900]; -// Default retry function -const basicReconnectRetry = tryOccurence => tryOccurence > basicRetriesAttempt.length - ? 901000 - : basicRetriesAttempt[tryOccurence - 1] * 1000; -class TweetStream extends events_1.EventEmitter { - constructor(requestData, connection) { - super(); - this.requestData = requestData; - this.autoReconnect = false; - this.autoReconnectRetries = 5; - // 2 minutes without any Twitter signal - this.keepAliveTimeoutMs = 1000 * 120; - this.nextRetryTimeout = basicReconnectRetry; - this.parser = new TweetStreamParser_1.default(); - this.connectionProcessRunning = false; - this.onKeepAliveTimeout = this.onKeepAliveTimeout.bind(this); - this.initEventsFromParser(); - if (connection) { - this.req = connection.req; - this.res = connection.res; - this.originalResponse = connection.originalResponse; - this.initEventsFromRequest(); - } - } - on(event, handler) { - return super.on(event, handler); - } - initEventsFromRequest() { - if (!this.req || !this.res) { - throw new Error('TweetStream error: You cannot init TweetStream without a request and response object.'); - } - const errorHandler = (err) => { - this.emit(types_1.ETwitterStreamEvent.ConnectionError, err); - this.emit(types_1.ETwitterStreamEvent.Error, { - type: types_1.ETwitterStreamEvent.ConnectionError, - error: err, - message: 'Connection lost or closed by Twitter.', - }); - this.onConnectionError(); - }; - this.req.on('error', errorHandler); - this.res.on('error', errorHandler); - // Usually, connection should not be closed by Twitter! - this.res.on('close', () => errorHandler(new Error('Connection closed by Twitter.'))); - this.res.on('data', (chunk) => { - this.resetKeepAliveTimeout(); - if (chunk.toString() === '\r\n') { - return this.emit(types_1.ETwitterStreamEvent.DataKeepAlive); - } - this.parser.push(chunk.toString()); - }); - // Starts the keep alive timeout - this.resetKeepAliveTimeout(); - } - initEventsFromParser() { - const payloadIsError = this.requestData.payloadIsError; - this.parser.on(TweetStreamParser_1.EStreamParserEvent.ParsedData, (eventData) => { - if (payloadIsError && payloadIsError(eventData)) { - this.emit(types_1.ETwitterStreamEvent.DataError, eventData); - this.emit(types_1.ETwitterStreamEvent.Error, { - type: types_1.ETwitterStreamEvent.DataError, - error: eventData, - message: 'Twitter sent a payload that is detected as an error payload.', - }); - } - else { - this.emit(types_1.ETwitterStreamEvent.Data, eventData); - } - }); - this.parser.on(TweetStreamParser_1.EStreamParserEvent.ParseError, (error) => { - this.emit(types_1.ETwitterStreamEvent.TweetParseError, error); - this.emit(types_1.ETwitterStreamEvent.Error, { - type: types_1.ETwitterStreamEvent.TweetParseError, - error, - message: 'Failed to parse stream data.', - }); - }); - } - resetKeepAliveTimeout() { - this.unbindKeepAliveTimeout(); - if (this.keepAliveTimeoutMs !== Infinity) { - this.keepAliveTimeout = setTimeout(this.onKeepAliveTimeout, this.keepAliveTimeoutMs); - } - } - onKeepAliveTimeout() { - this.emit(types_1.ETwitterStreamEvent.ConnectionLost); - this.onConnectionError(); - } - unbindTimeouts() { - this.unbindRetryTimeout(); - this.unbindKeepAliveTimeout(); - } - unbindKeepAliveTimeout() { - if (this.keepAliveTimeout) { - clearTimeout(this.keepAliveTimeout); - this.keepAliveTimeout = undefined; - } - } - unbindRetryTimeout() { - if (this.retryTimeout) { - clearTimeout(this.retryTimeout); - this.retryTimeout = undefined; - } - } - closeWithoutEmit() { - this.unbindTimeouts(); - if (this.res) { - this.res.removeAllListeners(); - // Close response silentely - this.res.destroy(); - } - if (this.req) { - this.req.removeAllListeners(); - // Close connection silentely - this.req.destroy(); - } - } - /** Terminate connection to Twitter. */ - close() { - this.emit(types_1.ETwitterStreamEvent.ConnectionClosed); - this.closeWithoutEmit(); - } - /** Unbind all listeners, and close connection. */ - destroy() { - this.removeAllListeners(); - this.close(); - } - /** - * Make a new request that creates a new `TweetStream` instance with - * the same parameters, and bind current listeners to new stream. - */ - async clone() { - const newRequest = new request_handler_helper_1.default(this.requestData); - const newStream = await newRequest.makeRequestAsStream(); - // Clone attached listeners - const listenerNames = this.eventNames(); - for (const listener of listenerNames) { - const callbacks = this.listeners(listener); - for (const callback of callbacks) { - newStream.on(listener, callback); - } - } - return newStream; - } - /** Start initial stream connection, setup options on current instance and returns itself. */ - async connect(options = {}) { - if (typeof options.autoReconnect !== 'undefined') { - this.autoReconnect = options.autoReconnect; - } - if (typeof options.autoReconnectRetries !== 'undefined') { - this.autoReconnectRetries = options.autoReconnectRetries === 'unlimited' - ? Infinity - : options.autoReconnectRetries; - } - if (typeof options.keepAliveTimeout !== 'undefined') { - this.keepAliveTimeoutMs = options.keepAliveTimeout === 'disable' - ? Infinity - : options.keepAliveTimeout; - } - if (typeof options.nextRetryTimeout !== 'undefined') { - this.nextRetryTimeout = options.nextRetryTimeout; - } - // Make the connection - this.unbindTimeouts(); - try { - await this.reconnect(); - } - catch (e) { - this.emit(types_1.ETwitterStreamEvent.ConnectError, 0); - this.emit(types_1.ETwitterStreamEvent.Error, { - type: types_1.ETwitterStreamEvent.ConnectError, - error: e, - message: 'Connect error - Initial connection just failed.', - }); - // Only make a reconnection attempt if autoReconnect is true! - // Otherwise, let error be propagated - if (this.autoReconnect) { - this.makeAutoReconnectRetry(0, e); - } - else { - throw e; - } - } - return this; - } - /** Make a new request to (re)connect to Twitter. */ - async reconnect() { - if (this.connectionProcessRunning) { - throw new Error('Connection process is already running.'); - } - this.connectionProcessRunning = true; - try { - let initialConnection = true; - if (this.req) { - initialConnection = false; - this.closeWithoutEmit(); - } - const { req, res, originalResponse } = await new request_handler_helper_1.default(this.requestData).makeRequestAndResolveWhenReady(); - this.req = req; - this.res = res; - this.originalResponse = originalResponse; - this.emit(initialConnection ? types_1.ETwitterStreamEvent.Connected : types_1.ETwitterStreamEvent.Reconnected); - this.parser.reset(); - this.initEventsFromRequest(); - } - finally { - this.connectionProcessRunning = false; - } - } - async onConnectionError(retryOccurence = 0) { - this.unbindTimeouts(); - // Close the request if necessary - this.closeWithoutEmit(); - // Terminate stream by events if necessary (no auto-reconnect or retries exceeded) - if (!this.autoReconnect) { - this.emit(types_1.ETwitterStreamEvent.ConnectionClosed); - return; - } - if (retryOccurence >= this.autoReconnectRetries) { - this.emit(types_1.ETwitterStreamEvent.ReconnectLimitExceeded); - this.emit(types_1.ETwitterStreamEvent.ConnectionClosed); - return; - } - // If all other conditions fails, do a reconnect attempt - try { - this.emit(types_1.ETwitterStreamEvent.ReconnectAttempt, retryOccurence); - await this.reconnect(); - } - catch (e) { - this.emit(types_1.ETwitterStreamEvent.ReconnectError, retryOccurence); - this.emit(types_1.ETwitterStreamEvent.Error, { - type: types_1.ETwitterStreamEvent.ReconnectError, - error: e, - message: `Reconnect error - ${retryOccurence + 1} attempts made yet.`, - }); - this.makeAutoReconnectRetry(retryOccurence, e); - } - } - makeAutoReconnectRetry(retryOccurence, error) { - const nextRetry = this.nextRetryTimeout(retryOccurence + 1, error); - this.retryTimeout = setTimeout(() => { - this.onConnectionError(retryOccurence + 1); - }, nextRetry); - } - async *[Symbol.asyncIterator]() { - const eventCombiner = new TweetStreamEventCombiner_1.default(this); - try { - while (true) { - if (!this.req || this.req.aborted) { - throw new Error('Connection closed'); - } - if (eventCombiner.hasStack()) { - yield* eventCombiner.popStack(); - } - const { type, payload } = await eventCombiner.nextEvent(); - if (type === 'error') { - throw payload; - } - } - } - finally { - eventCombiner.destroy(); - } - } + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0; +const path = __importStar(__webpack_require__(622)); +/** + * toPosixPath converts the given path to the posix form. On Windows, \\ will be + * replaced with /. + * + * @param pth. Path to transform. + * @return string Posix path. + */ +function toPosixPath(pth) { + return pth.replace(/[\\]/g, '/'); } -exports.TweetStream = TweetStream; -exports["default"] = TweetStream; - +exports.toPosixPath = toPosixPath; +/** + * toWin32Path converts the given path to the win32 form. On Linux, / will be + * replaced with \\. + * + * @param pth. Path to transform. + * @return string Win32 path. + */ +function toWin32Path(pth) { + return pth.replace(/[/]/g, '\\'); +} +exports.toWin32Path = toWin32Path; +/** + * toPlatformPath converts the given path to a platform-specific path. It does + * this by replacing instances of / and \ with the platform-specific path + * separator. + * + * @param pth The path to platformize. + * @return string The platform-specific path. + */ +function toPlatformPath(pth) { + return pth.replace(/[/\\]/g, path.sep); +} +exports.toPlatformPath = toPlatformPath; +//# sourceMappingURL=path-utils.js.map /***/ }), - -/***/ 1132: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/* 574 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.TweetStreamEventCombiner = void 0; -const events_1 = __nccwpck_require__(2361); -const types_1 = __nccwpck_require__(1638); -class TweetStreamEventCombiner extends events_1.EventEmitter { - constructor(stream) { - super(); - this.stream = stream; - this.stack = []; - this.onStreamData = this.onStreamData.bind(this); - this.onStreamError = this.onStreamError.bind(this); - this.onceNewEvent = this.once.bind(this, 'event'); - // Init events from stream - stream.on(types_1.ETwitterStreamEvent.Data, this.onStreamData); - // Ignore reconnect errors: Don't close event combiner until connection error/closed - stream.on(types_1.ETwitterStreamEvent.ConnectionError, this.onStreamError); - stream.on(types_1.ETwitterStreamEvent.TweetParseError, this.onStreamError); - stream.on(types_1.ETwitterStreamEvent.ConnectionClosed, this.onStreamError); - } - /** Returns a new `Promise` that will `resolve` on next event (`data` or any sort of error). */ - nextEvent() { - return new Promise(this.onceNewEvent); - } - /** Returns `true` if there's something in the stack. */ - hasStack() { - return this.stack.length > 0; - } - /** Returns stacked data events, and clean the stack. */ - popStack() { - const stack = this.stack; - this.stack = []; - return stack; - } - /** Cleanup all the listeners attached on stream. */ - destroy() { - this.removeAllListeners(); - this.stream.off(types_1.ETwitterStreamEvent.Data, this.onStreamData); - this.stream.off(types_1.ETwitterStreamEvent.ConnectionError, this.onStreamError); - this.stream.off(types_1.ETwitterStreamEvent.TweetParseError, this.onStreamError); - this.stream.off(types_1.ETwitterStreamEvent.ConnectionClosed, this.onStreamError); - } - emitEvent(type, payload) { - this.emit('event', { type, payload }); - } - onStreamError(payload) { - this.emitEvent('error', payload); - } - onStreamData(payload) { - this.stack.push(payload); - this.emitEvent('data', payload); - } -} -exports.TweetStreamEventCombiner = TweetStreamEventCombiner; -exports["default"] = TweetStreamEventCombiner; +var _interopRequireDefault = __webpack_require__(764); -/***/ }), +__webpack_require__(493); -/***/ 7467: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; -"use strict"; +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.EStreamParserEvent = void 0; -const events_1 = __nccwpck_require__(2361); -class TweetStreamParser extends events_1.EventEmitter { - constructor() { - super(...arguments); - this.currentMessage = ''; - } - // Code partially belongs to twitter-stream-api for this - // https://github.com/trygve-lie/twitter-stream-api/blob/master/lib/parser.js - push(chunk) { - this.currentMessage += chunk; - chunk = this.currentMessage; - const size = chunk.length; - let start = 0; - let offset = 0; - while (offset < size) { - // Take [offset, offset+1] inside a new string - if (chunk.slice(offset, offset + 2) === '\r\n') { - // If chunk contains \r\n after current offset, - // parse [start, ..., offset] as a tweet - const piece = chunk.slice(start, offset); - start = offset += 2; - // If empty object - if (!piece.length) { - continue; - } - try { - const payload = JSON.parse(piece); - if (payload) { - this.emit(EStreamParserEvent.ParsedData, payload); - continue; - } - } - catch (error) { - this.emit(EStreamParserEvent.ParseError, error); - } - } - offset++; - } - this.currentMessage = chunk.slice(start, size); - } - /** Reset the currently stored message (f.e. on connection reset) */ - reset() { - this.currentMessage = ''; - } -} -exports["default"] = TweetStreamParser; -var EStreamParserEvent; -(function (EStreamParserEvent) { - EStreamParserEvent["ParsedData"] = "parsed data"; - EStreamParserEvent["ParseError"] = "parse error"; -})(EStreamParserEvent = exports.EStreamParserEvent || (exports.EStreamParserEvent = {})); +var _validCCTLD = _interopRequireDefault(__webpack_require__(662)); + +var _validDomainName = _interopRequireDefault(__webpack_require__(178)); + +var _validGTLD = _interopRequireDefault(__webpack_require__(79)); + +var _validPunycode = _interopRequireDefault(__webpack_require__(131)); + +var _validSubdomain = _interopRequireDefault(__webpack_require__(531)); +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validDomain = (0, _regexSupplant["default"])(/(?:#{validSubdomain}*#{validDomainName}(?:#{validGTLD}|#{validCCTLD}|#{validPunycode}))/, { + validDomainName: _validDomainName["default"], + validSubdomain: _validSubdomain["default"], + validGTLD: _validGTLD["default"], + validCCTLD: _validCCTLD["default"], + validPunycode: _validPunycode["default"] +}); +var _default = validDomain; +exports["default"] = _default; +module.exports = exports.default; /***/ }), +/* 575 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 8294: -/***/ ((__unused_webpack_module, exports) => { +// Copyright 2015 Joyent, Inc. -"use strict"; +module.exports = Signature; -Object.defineProperty(exports, "__esModule", ({ value: true })); +var assert = __webpack_require__(489); +var Buffer = __webpack_require__(726).Buffer; +var algs = __webpack_require__(603); +var crypto = __webpack_require__(417); +var errs = __webpack_require__(570); +var utils = __webpack_require__(270); +var asn1 = __webpack_require__(325); +var SSHBuffer = __webpack_require__(940); +var InvalidAlgorithmError = errs.InvalidAlgorithmError; +var SignatureParseError = errs.SignatureParseError; -/***/ }), +function Signature(opts) { + assert.object(opts, 'options'); + assert.arrayOfObject(opts.parts, 'options.parts'); + assert.string(opts.type, 'options.type'); -/***/ 948: -/***/ ((__unused_webpack_module, exports) => { + var partLookup = {}; + for (var i = 0; i < opts.parts.length; ++i) { + var part = opts.parts[i]; + partLookup[part.name] = part; + } -"use strict"; + this.type = opts.type; + this.hashAlgorithm = opts.hashAlgo; + this.curve = opts.curve; + this.parts = opts.parts; + this.part = partLookup; +} + +Signature.prototype.toBuffer = function (format) { + if (format === undefined) + format = 'asn1'; + assert.string(format, 'format'); + + var buf; + var stype = 'ssh-' + this.type; + + switch (this.type) { + case 'rsa': + switch (this.hashAlgorithm) { + case 'sha256': + stype = 'rsa-sha2-256'; + break; + case 'sha512': + stype = 'rsa-sha2-512'; + break; + case 'sha1': + case undefined: + break; + default: + throw (new Error('SSH signature ' + + 'format does not support hash ' + + 'algorithm ' + this.hashAlgorithm)); + } + if (format === 'ssh') { + buf = new SSHBuffer({}); + buf.writeString(stype); + buf.writePart(this.part.sig); + return (buf.toBuffer()); + } else { + return (this.part.sig.data); + } + break; + + case 'ed25519': + if (format === 'ssh') { + buf = new SSHBuffer({}); + buf.writeString(stype); + buf.writePart(this.part.sig); + return (buf.toBuffer()); + } else { + return (this.part.sig.data); + } + break; + + case 'dsa': + case 'ecdsa': + var r, s; + if (format === 'asn1') { + var der = new asn1.BerWriter(); + der.startSequence(); + r = utils.mpNormalize(this.part.r.data); + s = utils.mpNormalize(this.part.s.data); + der.writeBuffer(r, asn1.Ber.Integer); + der.writeBuffer(s, asn1.Ber.Integer); + der.endSequence(); + return (der.buffer); + } else if (format === 'ssh' && this.type === 'dsa') { + buf = new SSHBuffer({}); + buf.writeString('ssh-dss'); + r = this.part.r.data; + if (r.length > 20 && r[0] === 0x00) + r = r.slice(1); + s = this.part.s.data; + if (s.length > 20 && s[0] === 0x00) + s = s.slice(1); + if ((this.hashAlgorithm && + this.hashAlgorithm !== 'sha1') || + r.length + s.length !== 40) { + throw (new Error('OpenSSH only supports ' + + 'DSA signatures with SHA1 hash')); + } + buf.writeBuffer(Buffer.concat([r, s])); + return (buf.toBuffer()); + } else if (format === 'ssh' && this.type === 'ecdsa') { + var inner = new SSHBuffer({}); + r = this.part.r.data; + inner.writeBuffer(r); + inner.writePart(this.part.s); + + buf = new SSHBuffer({}); + /* XXX: find a more proper way to do this? */ + var curve; + if (r[0] === 0x00) + r = r.slice(1); + var sz = r.length * 8; + if (sz === 256) + curve = 'nistp256'; + else if (sz === 384) + curve = 'nistp384'; + else if (sz === 528) + curve = 'nistp521'; + buf.writeString('ecdsa-sha2-' + curve); + buf.writeBuffer(inner.toBuffer()); + return (buf.toBuffer()); + } + throw (new Error('Invalid signature format')); + default: + throw (new Error('Invalid signature data')); + } +}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.ETwitterStreamEvent = void 0; -var ETwitterStreamEvent; -(function (ETwitterStreamEvent) { - ETwitterStreamEvent["Connected"] = "connected"; - ETwitterStreamEvent["ConnectError"] = "connect error"; - ETwitterStreamEvent["ConnectionError"] = "connection error"; - ETwitterStreamEvent["ConnectionClosed"] = "connection closed"; - ETwitterStreamEvent["ConnectionLost"] = "connection lost"; - ETwitterStreamEvent["ReconnectAttempt"] = "reconnect attempt"; - ETwitterStreamEvent["Reconnected"] = "reconnected"; - ETwitterStreamEvent["ReconnectError"] = "reconnect error"; - ETwitterStreamEvent["ReconnectLimitExceeded"] = "reconnect limit exceeded"; - ETwitterStreamEvent["DataKeepAlive"] = "data keep-alive"; - ETwitterStreamEvent["Data"] = "data event content"; - ETwitterStreamEvent["DataError"] = "data twitter error"; - ETwitterStreamEvent["TweetParseError"] = "data tweet parse error"; - ETwitterStreamEvent["Error"] = "stream error"; -})(ETwitterStreamEvent = exports.ETwitterStreamEvent || (exports.ETwitterStreamEvent = {})); +Signature.prototype.toString = function (format) { + assert.optionalString(format, 'format'); + return (this.toBuffer(format).toString('base64')); +}; +Signature.parse = function (data, type, format) { + if (typeof (data) === 'string') + data = Buffer.from(data, 'base64'); + assert.buffer(data, 'data'); + assert.string(format, 'format'); + assert.string(type, 'type'); -/***/ }), + var opts = {}; + opts.type = type.toLowerCase(); + opts.parts = []; -/***/ 3549: -/***/ ((__unused_webpack_module, exports) => { + try { + assert.ok(data.length > 0, 'signature must not be empty'); + switch (opts.type) { + case 'rsa': + return (parseOneNum(data, type, format, opts)); + case 'ed25519': + return (parseOneNum(data, type, format, opts)); + + case 'dsa': + case 'ecdsa': + if (format === 'asn1') + return (parseDSAasn1(data, type, format, opts)); + else if (opts.type === 'dsa') + return (parseDSA(data, type, format, opts)); + else + return (parseECDSA(data, type, format, opts)); + + default: + throw (new InvalidAlgorithmError(type)); + } -"use strict"; + } catch (e) { + if (e instanceof InvalidAlgorithmError) + throw (e); + throw (new SignatureParseError(type, format, e)); + } +}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.EApiV2ErrorCode = exports.EApiV1ErrorCode = exports.ApiResponseError = exports.ApiPartialResponseError = exports.ApiRequestError = exports.ETwitterApiError = void 0; -var ETwitterApiError; -(function (ETwitterApiError) { - ETwitterApiError["Request"] = "request"; - ETwitterApiError["PartialResponse"] = "partial-response"; - ETwitterApiError["Response"] = "response"; -})(ETwitterApiError = exports.ETwitterApiError || (exports.ETwitterApiError = {})); -/* ERRORS INSTANCES */ -class ApiError extends Error { - constructor() { - super(...arguments); - this.error = true; - } -} -class ApiRequestError extends ApiError { - constructor(message, options) { - super(message); - this.type = ETwitterApiError.Request; - Error.captureStackTrace(this, this.constructor); - // Do not show on Node stack trace - Object.defineProperty(this, '_options', { value: options }); - } - get request() { - return this._options.request; - } - get requestError() { - return this._options.requestError; - } - toJSON() { - return { - type: this.type, - error: this.requestError, - }; - } +function parseOneNum(data, type, format, opts) { + if (format === 'ssh') { + try { + var buf = new SSHBuffer({buffer: data}); + var head = buf.readString(); + } catch (e) { + /* fall through */ + } + if (buf !== undefined) { + var msg = 'SSH signature does not match expected ' + + 'type (expected ' + type + ', got ' + head + ')'; + switch (head) { + case 'ssh-rsa': + assert.strictEqual(type, 'rsa', msg); + opts.hashAlgo = 'sha1'; + break; + case 'rsa-sha2-256': + assert.strictEqual(type, 'rsa', msg); + opts.hashAlgo = 'sha256'; + break; + case 'rsa-sha2-512': + assert.strictEqual(type, 'rsa', msg); + opts.hashAlgo = 'sha512'; + break; + case 'ssh-ed25519': + assert.strictEqual(type, 'ed25519', msg); + opts.hashAlgo = 'sha512'; + break; + default: + throw (new Error('Unknown SSH signature ' + + 'type: ' + head)); + } + var sig = buf.readPart(); + assert.ok(buf.atEnd(), 'extra trailing bytes'); + sig.name = 'sig'; + opts.parts.push(sig); + return (new Signature(opts)); + } + } + opts.parts.push({name: 'sig', data: data}); + return (new Signature(opts)); } -exports.ApiRequestError = ApiRequestError; -class ApiPartialResponseError extends ApiError { - constructor(message, options) { - super(message); - this.type = ETwitterApiError.PartialResponse; - Error.captureStackTrace(this, this.constructor); - // Do not show on Node stack trace - Object.defineProperty(this, '_options', { value: options }); - } - get request() { - return this._options.request; - } - get response() { - return this._options.response; - } - get responseError() { - return this._options.responseError; - } - get rawContent() { - return this._options.rawContent; - } - toJSON() { - return { - type: this.type, - error: this.responseError, - }; - } + +function parseDSAasn1(data, type, format, opts) { + var der = new asn1.BerReader(data); + der.readSequence(); + var r = der.readString(asn1.Ber.Integer, true); + var s = der.readString(asn1.Ber.Integer, true); + + opts.parts.push({name: 'r', data: utils.mpNormalize(r)}); + opts.parts.push({name: 's', data: utils.mpNormalize(s)}); + + return (new Signature(opts)); } -exports.ApiPartialResponseError = ApiPartialResponseError; -class ApiResponseError extends ApiError { - constructor(message, options) { - super(message); - this.type = ETwitterApiError.Response; - Error.captureStackTrace(this, this.constructor); - // Do not show on Node stack trace - Object.defineProperty(this, '_options', { value: options }); - this.code = options.code; - this.headers = options.headers; - this.rateLimit = options.rateLimit; - // Fix bad error data payload on some v1 endpoints (see https://github.com/PLhery/node-twitter-api-v2/issues/342) - if (options.data && typeof options.data === 'object' && 'error' in options.data && !options.data.errors) { - const data = { ...options.data }; - data.errors = [{ - code: EApiV1ErrorCode.InternalError, - message: data.error, - }]; - this.data = data; - } - else { - this.data = options.data; - } - } - get request() { - return this._options.request; - } - get response() { - return this._options.response; - } - /** Check for presence of one of given v1/v2 error codes. */ - hasErrorCode(...codes) { - const errors = this.errors; - // No errors - if (!(errors === null || errors === void 0 ? void 0 : errors.length)) { - return false; - } - // v1 errors - if ('code' in errors[0]) { - const v1errors = errors; - return v1errors.some(error => codes.includes(error.code)); - } - // v2 error - const v2error = this.data; - return codes.includes(v2error.type); - } - get errors() { - var _a; - return (_a = this.data) === null || _a === void 0 ? void 0 : _a.errors; - } - get rateLimitError() { - return this.code === 420 || this.code === 429; - } - get isAuthError() { - if (this.code === 401) { - return true; - } - return this.hasErrorCode(EApiV1ErrorCode.AuthTimestampInvalid, EApiV1ErrorCode.AuthenticationFail, EApiV1ErrorCode.BadAuthenticationData, EApiV1ErrorCode.InvalidOrExpiredToken); - } - toJSON() { - return { - type: this.type, - code: this.code, - error: this.data, - rateLimit: this.rateLimit, - headers: this.headers, - }; - } + +function parseDSA(data, type, format, opts) { + if (data.length != 40) { + var buf = new SSHBuffer({buffer: data}); + var d = buf.readBuffer(); + if (d.toString('ascii') === 'ssh-dss') + d = buf.readBuffer(); + assert.ok(buf.atEnd(), 'extra trailing bytes'); + assert.strictEqual(d.length, 40, 'invalid inner length'); + data = d; + } + opts.parts.push({name: 'r', data: data.slice(0, 20)}); + opts.parts.push({name: 's', data: data.slice(20, 40)}); + return (new Signature(opts)); +} + +function parseECDSA(data, type, format, opts) { + var buf = new SSHBuffer({buffer: data}); + + var r, s; + var inner = buf.readBuffer(); + var stype = inner.toString('ascii'); + if (stype.slice(0, 6) === 'ecdsa-') { + var parts = stype.split('-'); + assert.strictEqual(parts[0], 'ecdsa'); + assert.strictEqual(parts[1], 'sha2'); + opts.curve = parts[2]; + switch (opts.curve) { + case 'nistp256': + opts.hashAlgo = 'sha256'; + break; + case 'nistp384': + opts.hashAlgo = 'sha384'; + break; + case 'nistp521': + opts.hashAlgo = 'sha512'; + break; + default: + throw (new Error('Unsupported ECDSA curve: ' + + opts.curve)); + } + inner = buf.readBuffer(); + assert.ok(buf.atEnd(), 'extra trailing bytes on outer'); + buf = new SSHBuffer({buffer: inner}); + r = buf.readPart(); + } else { + r = {data: inner}; + } + + s = buf.readPart(); + assert.ok(buf.atEnd(), 'extra trailing bytes'); + + r.name = 'r'; + s.name = 's'; + + opts.parts.push(r); + opts.parts.push(s); + return (new Signature(opts)); } -exports.ApiResponseError = ApiResponseError; -var EApiV1ErrorCode; -(function (EApiV1ErrorCode) { - // Location errors - EApiV1ErrorCode[EApiV1ErrorCode["InvalidCoordinates"] = 3] = "InvalidCoordinates"; - EApiV1ErrorCode[EApiV1ErrorCode["NoLocationFound"] = 13] = "NoLocationFound"; - // Authentication failures - EApiV1ErrorCode[EApiV1ErrorCode["AuthenticationFail"] = 32] = "AuthenticationFail"; - EApiV1ErrorCode[EApiV1ErrorCode["InvalidOrExpiredToken"] = 89] = "InvalidOrExpiredToken"; - EApiV1ErrorCode[EApiV1ErrorCode["UnableToVerifyCredentials"] = 99] = "UnableToVerifyCredentials"; - EApiV1ErrorCode[EApiV1ErrorCode["AuthTimestampInvalid"] = 135] = "AuthTimestampInvalid"; - EApiV1ErrorCode[EApiV1ErrorCode["BadAuthenticationData"] = 215] = "BadAuthenticationData"; - // Resources not found or visible - EApiV1ErrorCode[EApiV1ErrorCode["NoUserMatch"] = 17] = "NoUserMatch"; - EApiV1ErrorCode[EApiV1ErrorCode["UserNotFound"] = 50] = "UserNotFound"; - EApiV1ErrorCode[EApiV1ErrorCode["ResourceNotFound"] = 34] = "ResourceNotFound"; - EApiV1ErrorCode[EApiV1ErrorCode["TweetNotFound"] = 144] = "TweetNotFound"; - EApiV1ErrorCode[EApiV1ErrorCode["TweetNotVisible"] = 179] = "TweetNotVisible"; - EApiV1ErrorCode[EApiV1ErrorCode["NotAllowedResource"] = 220] = "NotAllowedResource"; - EApiV1ErrorCode[EApiV1ErrorCode["MediaIdNotFound"] = 325] = "MediaIdNotFound"; - EApiV1ErrorCode[EApiV1ErrorCode["TweetNoLongerAvailable"] = 421] = "TweetNoLongerAvailable"; - EApiV1ErrorCode[EApiV1ErrorCode["TweetViolatedRules"] = 422] = "TweetViolatedRules"; - // Account errors - EApiV1ErrorCode[EApiV1ErrorCode["TargetUserSuspended"] = 63] = "TargetUserSuspended"; - EApiV1ErrorCode[EApiV1ErrorCode["YouAreSuspended"] = 64] = "YouAreSuspended"; - EApiV1ErrorCode[EApiV1ErrorCode["AccountUpdateFailed"] = 120] = "AccountUpdateFailed"; - EApiV1ErrorCode[EApiV1ErrorCode["NoSelfSpamReport"] = 36] = "NoSelfSpamReport"; - EApiV1ErrorCode[EApiV1ErrorCode["NoSelfMute"] = 271] = "NoSelfMute"; - EApiV1ErrorCode[EApiV1ErrorCode["AccountLocked"] = 326] = "AccountLocked"; - // Application live errors / Twitter errors - EApiV1ErrorCode[EApiV1ErrorCode["RateLimitExceeded"] = 88] = "RateLimitExceeded"; - EApiV1ErrorCode[EApiV1ErrorCode["NoDMRightForApp"] = 93] = "NoDMRightForApp"; - EApiV1ErrorCode[EApiV1ErrorCode["OverCapacity"] = 130] = "OverCapacity"; - EApiV1ErrorCode[EApiV1ErrorCode["InternalError"] = 131] = "InternalError"; - EApiV1ErrorCode[EApiV1ErrorCode["TooManyFollowings"] = 161] = "TooManyFollowings"; - EApiV1ErrorCode[EApiV1ErrorCode["TweetLimitExceeded"] = 185] = "TweetLimitExceeded"; - EApiV1ErrorCode[EApiV1ErrorCode["DuplicatedTweet"] = 187] = "DuplicatedTweet"; - EApiV1ErrorCode[EApiV1ErrorCode["TooManySpamReports"] = 205] = "TooManySpamReports"; - EApiV1ErrorCode[EApiV1ErrorCode["RequestLooksLikeSpam"] = 226] = "RequestLooksLikeSpam"; - EApiV1ErrorCode[EApiV1ErrorCode["NoWriteRightForApp"] = 261] = "NoWriteRightForApp"; - EApiV1ErrorCode[EApiV1ErrorCode["TweetActionsDisabled"] = 425] = "TweetActionsDisabled"; - EApiV1ErrorCode[EApiV1ErrorCode["TweetRepliesRestricted"] = 433] = "TweetRepliesRestricted"; - // Invalid request parameters - EApiV1ErrorCode[EApiV1ErrorCode["NamedParameterMissing"] = 38] = "NamedParameterMissing"; - EApiV1ErrorCode[EApiV1ErrorCode["InvalidAttachmentUrl"] = 44] = "InvalidAttachmentUrl"; - EApiV1ErrorCode[EApiV1ErrorCode["TweetTextTooLong"] = 186] = "TweetTextTooLong"; - EApiV1ErrorCode[EApiV1ErrorCode["MissingUrlParameter"] = 195] = "MissingUrlParameter"; - EApiV1ErrorCode[EApiV1ErrorCode["NoMultipleGifs"] = 323] = "NoMultipleGifs"; - EApiV1ErrorCode[EApiV1ErrorCode["InvalidMediaIds"] = 324] = "InvalidMediaIds"; - EApiV1ErrorCode[EApiV1ErrorCode["InvalidUrl"] = 407] = "InvalidUrl"; - EApiV1ErrorCode[EApiV1ErrorCode["TooManyTweetAttachments"] = 386] = "TooManyTweetAttachments"; - // Already sent/deleted item - EApiV1ErrorCode[EApiV1ErrorCode["StatusAlreadyFavorited"] = 139] = "StatusAlreadyFavorited"; - EApiV1ErrorCode[EApiV1ErrorCode["FollowRequestAlreadySent"] = 160] = "FollowRequestAlreadySent"; - EApiV1ErrorCode[EApiV1ErrorCode["CannotUnmuteANonMutedAccount"] = 272] = "CannotUnmuteANonMutedAccount"; - EApiV1ErrorCode[EApiV1ErrorCode["TweetAlreadyRetweeted"] = 327] = "TweetAlreadyRetweeted"; - EApiV1ErrorCode[EApiV1ErrorCode["ReplyToDeletedTweet"] = 385] = "ReplyToDeletedTweet"; - // DM Errors - EApiV1ErrorCode[EApiV1ErrorCode["DMReceiverNotFollowingYou"] = 150] = "DMReceiverNotFollowingYou"; - EApiV1ErrorCode[EApiV1ErrorCode["UnableToSendDM"] = 151] = "UnableToSendDM"; - EApiV1ErrorCode[EApiV1ErrorCode["MustAllowDMFromAnyone"] = 214] = "MustAllowDMFromAnyone"; - EApiV1ErrorCode[EApiV1ErrorCode["CannotSendDMToThisUser"] = 349] = "CannotSendDMToThisUser"; - EApiV1ErrorCode[EApiV1ErrorCode["DMTextTooLong"] = 354] = "DMTextTooLong"; - // Appication misconfiguration - EApiV1ErrorCode[EApiV1ErrorCode["SubscriptionAlreadyExists"] = 355] = "SubscriptionAlreadyExists"; - EApiV1ErrorCode[EApiV1ErrorCode["CallbackUrlNotApproved"] = 415] = "CallbackUrlNotApproved"; - EApiV1ErrorCode[EApiV1ErrorCode["SuspendedApplication"] = 416] = "SuspendedApplication"; - EApiV1ErrorCode[EApiV1ErrorCode["OobOauthIsNotAllowed"] = 417] = "OobOauthIsNotAllowed"; -})(EApiV1ErrorCode = exports.EApiV1ErrorCode || (exports.EApiV1ErrorCode = {})); -var EApiV2ErrorCode; -(function (EApiV2ErrorCode) { - // Request errors - EApiV2ErrorCode["InvalidRequest"] = "https://api.twitter.com/2/problems/invalid-request"; - EApiV2ErrorCode["ClientForbidden"] = "https://api.twitter.com/2/problems/client-forbidden"; - EApiV2ErrorCode["UnsupportedAuthentication"] = "https://api.twitter.com/2/problems/unsupported-authentication"; - // Stream rules errors - EApiV2ErrorCode["InvalidRules"] = "https://api.twitter.com/2/problems/invalid-rules"; - EApiV2ErrorCode["TooManyRules"] = "https://api.twitter.com/2/problems/rule-cap"; - EApiV2ErrorCode["DuplicatedRules"] = "https://api.twitter.com/2/problems/duplicate-rules"; - // Twitter errors - EApiV2ErrorCode["RateLimitExceeded"] = "https://api.twitter.com/2/problems/usage-capped"; - EApiV2ErrorCode["ConnectionError"] = "https://api.twitter.com/2/problems/streaming-connection"; - EApiV2ErrorCode["ClientDisconnected"] = "https://api.twitter.com/2/problems/client-disconnected"; - EApiV2ErrorCode["TwitterDisconnectedYou"] = "https://api.twitter.com/2/problems/operational-disconnect"; - // Resource errors - EApiV2ErrorCode["ResourceNotFound"] = "https://api.twitter.com/2/problems/resource-not-found"; - EApiV2ErrorCode["ResourceUnauthorized"] = "https://api.twitter.com/2/problems/not-authorized-for-resource"; - EApiV2ErrorCode["DisallowedResource"] = "https://api.twitter.com/2/problems/disallowed-resource"; -})(EApiV2ErrorCode = exports.EApiV2ErrorCode || (exports.EApiV2ErrorCode = {})); - - -/***/ }), - -/***/ 1638: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { -"use strict"; +Signature.isSignature = function (obj, ver) { + return (utils.isCompatible(obj, Signature, ver)); +}; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +/* + * API versions for Signature: + * [1,0] -- initial ver + * [2,0] -- support for rsa in full ssh format, compat with sshpk-agent + * hashAlgorithm property + * [2,1] -- first tagged version + */ +Signature.prototype._sshpkApiVersion = [2, 1]; + +Signature._oldVersionDetect = function (obj) { + assert.func(obj.toBuffer); + if (obj.hasOwnProperty('hashAlgorithm')) + return ([2, 0]); + return ([1, 0]); }; -Object.defineProperty(exports, "__esModule", ({ value: true })); -__exportStar(__nccwpck_require__(5401), exports); -__exportStar(__nccwpck_require__(7109), exports); -__exportStar(__nccwpck_require__(3549), exports); -__exportStar(__nccwpck_require__(6296), exports); -__exportStar(__nccwpck_require__(948), exports); -__exportStar(__nccwpck_require__(8294), exports); -__exportStar(__nccwpck_require__(547), exports); /***/ }), +/* 576 */, +/* 577 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 3924: -/***/ ((__unused_webpack_module, exports) => { +// call something on iterator step with safe closing on error +var anObject = __webpack_require__(990); +module.exports = function (iterator, fn, value, entries) { + try { + return entries ? fn(anObject(value)[0], value[1]) : fn(value); + // 7.4.6 IteratorClose(iterator, completion) + } catch (e) { + var ret = iterator['return']; + if (ret !== undefined) anObject(ret.call(iterator)); + throw e; + } +}; -"use strict"; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.TwitterApiPluginResponseOverride = void 0; -class TwitterApiPluginResponseOverride { - constructor(value) { - this.value = value; - } -} -exports.TwitterApiPluginResponseOverride = TwitterApiPluginResponseOverride; +/***/ }), +/* 578 */ +/***/ (function(module) { +module.exports = {"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#","description":"Meta-schema for $data reference (JSON Schema extension proposal)","type":"object","required":["$data"],"properties":{"$data":{"type":"string","anyOf":[{"format":"relative-json-pointer"},{"format":"json-pointer"}]}},"additionalProperties":false}; /***/ }), - -/***/ 547: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { +/* 579 */, +/* 580 */ +/***/ (function(module, __unusedexports, __webpack_require__) { "use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); + +var resolve = __webpack_require__(283); + +module.exports = { + Validation: errorSubclass(ValidationError), + MissingRef: errorSubclass(MissingRefError) }; -Object.defineProperty(exports, "__esModule", ({ value: true })); -__exportStar(__nccwpck_require__(3924), exports); -/***/ }), +function ValidationError(errors) { + this.message = 'validation failed'; + this.errors = errors; + this.ajv = this.validation = true; +} -/***/ 6296: -/***/ ((__unused_webpack_module, exports) => { -"use strict"; +MissingRefError.message = function (baseId, ref) { + return 'can\'t resolve reference ' + ref + ' from id ' + baseId; +}; -Object.defineProperty(exports, "__esModule", ({ value: true })); +function MissingRefError(baseId, ref, message) { + this.message = message || MissingRefError.message(baseId, ref); + this.missingRef = resolve.url(baseId, ref); + this.missingSchema = resolve.normalizeId(resolve.fullPath(this.missingRef)); +} -/***/ }), -/***/ 9740: -/***/ ((__unused_webpack_module, exports) => { +function errorSubclass(Subclass) { + Subclass.prototype = Object.create(Error.prototype); + Subclass.prototype.constructor = Subclass; + return Subclass; +} + + +/***/ }), +/* 581 */ +/***/ (function(module) { "use strict"; -Object.defineProperty(exports, "__esModule", ({ value: true })); +var has = Object.prototype.hasOwnProperty; -/***/ }), +var hexTable = (function () { + var array = []; + for (var i = 0; i < 256; ++i) { + array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase()); + } -/***/ 6430: -/***/ ((__unused_webpack_module, exports) => { + return array; +}()); -"use strict"; +var compactQueue = function compactQueue(queue) { + var obj; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.EDirectMessageEventTypeV1 = void 0; -// Creation of DMs -var EDirectMessageEventTypeV1; -(function (EDirectMessageEventTypeV1) { - EDirectMessageEventTypeV1["Create"] = "message_create"; - EDirectMessageEventTypeV1["WelcomeCreate"] = "welcome_message"; -})(EDirectMessageEventTypeV1 = exports.EDirectMessageEventTypeV1 || (exports.EDirectMessageEventTypeV1 = {})); + while (queue.length) { + var item = queue.pop(); + obj = item.obj[item.prop]; + if (Array.isArray(obj)) { + var compacted = []; -/***/ }), + for (var j = 0; j < obj.length; ++j) { + if (typeof obj[j] !== 'undefined') { + compacted.push(obj[j]); + } + } -/***/ 6426: -/***/ ((__unused_webpack_module, exports) => { + item.obj[item.prop] = compacted; + } + } -"use strict"; + return obj; +}; -Object.defineProperty(exports, "__esModule", ({ value: true })); +var arrayToObject = function arrayToObject(source, options) { + var obj = options && options.plainObjects ? Object.create(null) : {}; + for (var i = 0; i < source.length; ++i) { + if (typeof source[i] !== 'undefined') { + obj[i] = source[i]; + } + } + return obj; +}; -/***/ }), +var merge = function merge(target, source, options) { + if (!source) { + return target; + } -/***/ 712: -/***/ ((__unused_webpack_module, exports) => { + if (typeof source !== 'object') { + if (Array.isArray(target)) { + target.push(source); + } else if (typeof target === 'object') { + if (options.plainObjects || options.allowPrototypes || !has.call(Object.prototype, source)) { + target[source] = true; + } + } else { + return [target, source]; + } -"use strict"; + return target; + } -Object.defineProperty(exports, "__esModule", ({ value: true })); + if (typeof target !== 'object') { + return [target].concat(source); + } + var mergeTarget = target; + if (Array.isArray(target) && !Array.isArray(source)) { + mergeTarget = arrayToObject(target, options); + } -/***/ }), + if (Array.isArray(target) && Array.isArray(source)) { + source.forEach(function (item, i) { + if (has.call(target, i)) { + if (target[i] && typeof target[i] === 'object') { + target[i] = merge(target[i], item, options); + } else { + target.push(item); + } + } else { + target[i] = item; + } + }); + return target; + } -/***/ 5401: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + return Object.keys(source).reduce(function (acc, key) { + var value = source[key]; -"use strict"; + if (has.call(acc, key)) { + acc[key] = merge(acc[key], value, options); + } else { + acc[key] = value; + } + return acc; + }, mergeTarget); +}; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; +var assign = function assignSingleSource(target, source) { + return Object.keys(source).reduce(function (acc, key) { + acc[key] = source[key]; + return acc; + }, target); +}; + +var decode = function (str) { + try { + return decodeURIComponent(str.replace(/\+/g, ' ')); + } catch (e) { + return str; } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; -Object.defineProperty(exports, "__esModule", ({ value: true })); -__exportStar(__nccwpck_require__(2362), exports); -__exportStar(__nccwpck_require__(7953), exports); -__exportStar(__nccwpck_require__(6426), exports); -__exportStar(__nccwpck_require__(9045), exports); -__exportStar(__nccwpck_require__(9740), exports); -__exportStar(__nccwpck_require__(712), exports); -__exportStar(__nccwpck_require__(9622), exports); -__exportStar(__nccwpck_require__(6430), exports); -__exportStar(__nccwpck_require__(3268), exports); +var encode = function encode(str) { + // This code was originally written by Brian White (mscdex) for the io.js core querystring library. + // It has been adapted here for stricter adherence to RFC 3986 + if (str.length === 0) { + return str; + } + + var string = typeof str === 'string' ? str : String(str); + + var out = ''; + for (var i = 0; i < string.length; ++i) { + var c = string.charCodeAt(i); + + if ( + c === 0x2D // - + || c === 0x2E // . + || c === 0x5F // _ + || c === 0x7E // ~ + || (c >= 0x30 && c <= 0x39) // 0-9 + || (c >= 0x41 && c <= 0x5A) // a-z + || (c >= 0x61 && c <= 0x7A) // A-Z + ) { + out += string.charAt(i); + continue; + } + + if (c < 0x80) { + out = out + hexTable[c]; + continue; + } + + if (c < 0x800) { + out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]); + continue; + } -/***/ }), + if (c < 0xD800 || c >= 0xE000) { + out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]); + continue; + } -/***/ 3268: -/***/ ((__unused_webpack_module, exports) => { + i += 1; + c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF)); + out += hexTable[0xF0 | (c >> 18)] + + hexTable[0x80 | ((c >> 12) & 0x3F)] + + hexTable[0x80 | ((c >> 6) & 0x3F)] + + hexTable[0x80 | (c & 0x3F)]; + } -"use strict"; + return out; +}; -Object.defineProperty(exports, "__esModule", ({ value: true })); +var compact = function compact(value) { + var queue = [{ obj: { o: value }, prop: 'o' }]; + var refs = []; + + for (var i = 0; i < queue.length; ++i) { + var item = queue[i]; + var obj = item.obj[item.prop]; + + var keys = Object.keys(obj); + for (var j = 0; j < keys.length; ++j) { + var key = keys[j]; + var val = obj[key]; + if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) { + queue.push({ obj: obj, prop: key }); + refs.push(val); + } + } + } + return compactQueue(queue); +}; -/***/ }), +var isRegExp = function isRegExp(obj) { + return Object.prototype.toString.call(obj) === '[object RegExp]'; +}; -/***/ 2362: -/***/ ((__unused_webpack_module, exports) => { +var isBuffer = function isBuffer(obj) { + if (obj === null || typeof obj === 'undefined') { + return false; + } -"use strict"; + return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj)); +}; -Object.defineProperty(exports, "__esModule", ({ value: true })); +module.exports = { + arrayToObject: arrayToObject, + assign: assign, + compact: compact, + decode: decode, + encode: encode, + isBuffer: isBuffer, + isRegExp: isRegExp, + merge: merge +}; /***/ }), - -/***/ 9622: -/***/ ((__unused_webpack_module, exports) => { +/* 582 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", ({ value: true })); +__webpack_require__(493); -/***/ }), +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; -/***/ 7953: -/***/ ((__unused_webpack_module, exports) => { +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(o) { + var r = {}; -"use strict"; + for (var k in o) { + if (o.hasOwnProperty(k)) { + r[k] = o[k]; + } + } -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.EUploadMimeType = void 0; -var EUploadMimeType; -(function (EUploadMimeType) { - EUploadMimeType["Jpeg"] = "image/jpeg"; - EUploadMimeType["Mp4"] = "video/mp4"; - EUploadMimeType["Gif"] = "image/gif"; - EUploadMimeType["Png"] = "image/png"; - EUploadMimeType["Srt"] = "text/plain"; - EUploadMimeType["Webp"] = "image/webp"; -})(EUploadMimeType = exports.EUploadMimeType || (exports.EUploadMimeType = {})); + return r; +} +module.exports = exports.default; /***/ }), - -/***/ 9045: -/***/ ((__unused_webpack_module, exports) => { +/* 583 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", ({ value: true })); - - -/***/ }), -/***/ 7109: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { +var _interopRequireDefault = __webpack_require__(764); -"use strict"; +__webpack_require__(493); -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -__exportStar(__nccwpck_require__(9608), exports); -__exportStar(__nccwpck_require__(7295), exports); -__exportStar(__nccwpck_require__(5894), exports); -__exportStar(__nccwpck_require__(4292), exports); -__exportStar(__nccwpck_require__(7323), exports); -__exportStar(__nccwpck_require__(970), exports); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; +var _stringSupplant = _interopRequireDefault(__webpack_require__(57)); -/***/ }), +var _tagAttrs = _interopRequireDefault(__webpack_require__(181)); -/***/ 970: -/***/ ((__unused_webpack_module, exports) => { +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(entity, text, attributes, options) { + if (!options.suppressNoFollow) { + attributes.rel = 'nofollow'; + } // if linkAttributeBlock is specified, call it to modify the attributes -"use strict"; -Object.defineProperty(exports, "__esModule", ({ value: true })); + if (options.linkAttributeBlock) { + options.linkAttributeBlock(entity, attributes); + } // if linkTextBlock is specified, call it to get a new/modified link text -/***/ }), + if (options.linkTextBlock) { + text = options.linkTextBlock(entity, text); + } -/***/ 7323: -/***/ ((__unused_webpack_module, exports) => { + var d = { + text: text, + attr: (0, _tagAttrs["default"])(attributes) + }; + return (0, _stringSupplant["default"])('#{text}', d); +} -"use strict"; +module.exports = exports.default; -Object.defineProperty(exports, "__esModule", ({ value: true })); +/***/ }), +/* 584 */ +/***/ (function(module) { +// Copyright 2011 Mark Cavage All rights reserved. -/***/ }), -/***/ 9608: -/***/ ((__unused_webpack_module, exports) => { +module.exports = { -"use strict"; + newInvalidAsn1Error: function (msg) { + var e = new Error(); + e.name = 'InvalidAsn1Error'; + e.message = msg || ''; + return e; + } -// --------------- -// -- Streaming -- -// --------------- -Object.defineProperty(exports, "__esModule", ({ value: true })); +}; /***/ }), - -/***/ 5894: -/***/ ((__unused_webpack_module, exports) => { +/* 585 */, +/* 586 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", ({ value: true })); +Object.defineProperty(exports, '__esModule', { value: true }); -/***/ }), - -/***/ 7295: -/***/ ((__unused_webpack_module, exports) => { +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } -"use strict"; +var endpoint = __webpack_require__(475); +var universalUserAgent = __webpack_require__(796); +var isPlainObject = __webpack_require__(356); +var nodeFetch = _interopDefault(__webpack_require__(454)); +var requestError = __webpack_require__(463); -Object.defineProperty(exports, "__esModule", ({ value: true })); -; +const VERSION = "6.2.1"; +function getBufferResponse(response) { + return response.arrayBuffer(); +} -/***/ }), +function fetchWrapper(requestOptions) { + const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console; -/***/ 4292: -/***/ ((__unused_webpack_module, exports) => { + if (isPlainObject.isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) { + requestOptions.body = JSON.stringify(requestOptions.body); + } -"use strict"; + let headers = {}; + let status; + let url; + const fetch = requestOptions.request && requestOptions.request.fetch || globalThis.fetch || + /* istanbul ignore next */ + nodeFetch; + return fetch(requestOptions.url, Object.assign({ + method: requestOptions.method, + body: requestOptions.body, + headers: requestOptions.headers, + redirect: requestOptions.redirect + }, // `requestOptions.request.agent` type is incompatible + // see https://github.com/octokit/types.ts/pull/264 + requestOptions.request)).then(async response => { + url = response.url; + status = response.status; -Object.defineProperty(exports, "__esModule", ({ value: true })); + for (const keyAndValue of response.headers) { + headers[keyAndValue[0]] = keyAndValue[1]; + } + if ("deprecation" in headers) { + const matches = headers.link && headers.link.match(/<([^>]+)>; rel="deprecation"/); + const deprecationLink = matches && matches.pop(); + log.warn(`[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}`); + } -/***/ }), + if (status === 204 || status === 205) { + return; + } // GitHub API returns 200 for HEAD requests -/***/ 7030: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { -"use strict"; + if (requestOptions.method === "HEAD") { + if (status < 400) { + return; + } -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.TwitterApiv1 = void 0; -const globals_1 = __nccwpck_require__(3444); -const dm_paginator_v1_1 = __nccwpck_require__(823); -const types_1 = __nccwpck_require__(1638); -const client_v1_write_1 = __importDefault(__nccwpck_require__(6685)); -/** - * Twitter v1.1 API client with read/write/DMs rights. - */ -class TwitterApiv1 extends client_v1_write_1.default { - constructor() { - super(...arguments); - this._prefix = globals_1.API_V1_1_PREFIX; - } - /** - * Get a client with read/write rights. - */ - get readWrite() { - return this; - } - /* Direct messages */ - // Part: Sending and receiving events - /** - * Publishes a new message_create event resulting in a Direct Message sent to a specified user from the authenticating user. - * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/sending-and-receiving/api-reference/new-event - */ - sendDm({ recipient_id, custom_profile_id, ...params }) { - const args = { - event: { - type: types_1.EDirectMessageEventTypeV1.Create, - [types_1.EDirectMessageEventTypeV1.Create]: { - target: { recipient_id }, - message_data: params, - }, - }, - }; - if (custom_profile_id) { - args.event[types_1.EDirectMessageEventTypeV1.Create].custom_profile_id = custom_profile_id; - } - return this.post('direct_messages/events/new.json', args, { - forceBodyMode: 'json', - }); - } - /** - * Returns a single Direct Message event by the given id. - * - * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/sending-and-receiving/api-reference/get-event - */ - getDmEvent(id) { - return this.get('direct_messages/events/show.json', { id }); - } - /** - * Deletes the direct message specified in the required ID parameter. - * The authenticating user must be the recipient of the specified direct message. - * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/sending-and-receiving/api-reference/delete-message-event - */ - deleteDm(id) { - return this.delete('direct_messages/events/destroy.json', { id }); - } - /** - * Returns all Direct Message events (both sent and received) within the last 30 days. - * Sorted in reverse-chronological order. - * - * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/sending-and-receiving/api-reference/list-events - */ - async listDmEvents(args = {}) { - const queryParams = { ...args }; - const initialRq = await this.get('direct_messages/events/list.json', queryParams, { fullResponse: true }); - return new dm_paginator_v1_1.DmEventsV1Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams, - }); - } - // Part: Welcome messages (events) - /** - * Creates a new Welcome Message that will be stored and sent in the future from the authenticating user in defined circumstances. - * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/welcome-messages/api-reference/new-welcome-message - */ - newWelcomeDm(name, data) { - const args = { - [types_1.EDirectMessageEventTypeV1.WelcomeCreate]: { - name, - message_data: data, - }, - }; - return this.post('direct_messages/welcome_messages/new.json', args, { - forceBodyMode: 'json', - }); - } - /** - * Returns a Welcome Message by the given id. - * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/welcome-messages/api-reference/get-welcome-message - */ - getWelcomeDm(id) { - return this.get('direct_messages/welcome_messages/show.json', { id }); - } - /** - * Deletes a Welcome Message by the given id. - * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/welcome-messages/api-reference/delete-welcome-message - */ - deleteWelcomeDm(id) { - return this.delete('direct_messages/welcome_messages/destroy.json', { id }); - } - /** - * Updates a Welcome Message by the given ID. - * Updates to the welcome_message object are atomic. - * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/welcome-messages/api-reference/update-welcome-message - */ - updateWelcomeDm(id, data) { - const args = { message_data: data }; - return this.put('direct_messages/welcome_messages/update.json', args, { - forceBodyMode: 'json', - query: { id }, - }); - } - /** - * Returns all Direct Message events (both sent and received) within the last 30 days. - * Sorted in reverse-chronological order. - * - * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/sending-and-receiving/api-reference/list-events - */ - async listWelcomeDms(args = {}) { - const queryParams = { ...args }; - const initialRq = await this.get('direct_messages/welcome_messages/list.json', queryParams, { fullResponse: true }); - return new dm_paginator_v1_1.WelcomeDmV1Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams, - }); - } - // Part: Welcome message (rules) - /** - * Creates a new Welcome Message Rule that determines which Welcome Message will be shown in a given conversation. - * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/welcome-messages/api-reference/new-welcome-message-rule - */ - newWelcomeDmRule(welcomeMessageId) { - return this.post('direct_messages/welcome_messages/rules/new.json', { - welcome_message_rule: { welcome_message_id: welcomeMessageId }, - }, { - forceBodyMode: 'json', - }); - } - /** - * Returns a Welcome Message Rule by the given id. - * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/welcome-messages/api-reference/get-welcome-message-rule - */ - getWelcomeDmRule(id) { - return this.get('direct_messages/welcome_messages/rules/show.json', { id }); - } - /** - * Deletes a Welcome Message Rule by the given id. - * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/welcome-messages/api-reference/delete-welcome-message-rule - */ - deleteWelcomeDmRule(id) { - return this.delete('direct_messages/welcome_messages/rules/destroy.json', { id }); - } - /** - * Retrieves all welcome DM rules for this account. - * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/welcome-messages/api-reference/list-welcome-message-rules - */ - async listWelcomeDmRules(args = {}) { - const queryParams = { ...args }; - return this.get('direct_messages/welcome_messages/rules/list.json', queryParams); + throw new requestError.RequestError(response.statusText, status, { + response: { + url, + status, + headers, + data: undefined + }, + request: requestOptions + }); } - /** - * Set the current showed welcome message for logged account ; wrapper for Welcome DM rules. - * Test if a rule already exists, delete if any, then create a rule for current message ID. - * - * If you don't have already a welcome message, create it with `.newWelcomeMessage`. - */ - async setWelcomeDm(welcomeMessageId, deleteAssociatedWelcomeDmWhenDeletingRule = true) { - var _a; - const existingRules = await this.listWelcomeDmRules(); - if ((_a = existingRules.welcome_message_rules) === null || _a === void 0 ? void 0 : _a.length) { - for (const rule of existingRules.welcome_message_rules) { - await this.deleteWelcomeDmRule(rule.id); - if (deleteAssociatedWelcomeDmWhenDeletingRule) { - await this.deleteWelcomeDm(rule.welcome_message_id); - } - } - } - return this.newWelcomeDmRule(welcomeMessageId); + + if (status === 304) { + throw new requestError.RequestError("Not modified", status, { + response: { + url, + status, + headers, + data: await getResponseData(response) + }, + request: requestOptions + }); } - // Part: Read indicator - /** - * Marks a message as read in the recipient’s Direct Message conversation view with the sender. - * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/typing-indicator-and-read-receipts/api-reference/new-read-receipt - */ - markDmAsRead(lastEventId, recipientId) { - return this.post('direct_messages/mark_read.json', { - last_read_event_id: lastEventId, - recipient_id: recipientId, - }, { forceBodyMode: 'url' }); + + if (status >= 400) { + const data = await getResponseData(response); + const error = new requestError.RequestError(toErrorMessage(data), status, { + response: { + url, + status, + headers, + data + }, + request: requestOptions + }); + throw error; } - /** - * Displays a visual typing indicator in the recipient’s Direct Message conversation view with the sender. - * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/typing-indicator-and-read-receipts/api-reference/new-typing-indicator - */ - indicateDmTyping(recipientId) { - return this.post('direct_messages/indicate_typing.json', { - recipient_id: recipientId, - }, { forceBodyMode: 'url' }); + + return getResponseData(response); + }).then(data => { + return { + status, + url, + headers, + data + }; + }).catch(error => { + if (error instanceof requestError.RequestError) throw error;else if (error.name === "AbortError") throw error; + throw new requestError.RequestError(error.message, 500, { + request: requestOptions + }); + }); +} + +async function getResponseData(response) { + const contentType = response.headers.get("content-type"); + + if (/application\/json/.test(contentType)) { + return response.json(); + } + + if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) { + return response.text(); + } + + return getBufferResponse(response); +} + +function toErrorMessage(data) { + if (typeof data === "string") return data; // istanbul ignore else - just in case + + if ("message" in data) { + if (Array.isArray(data.errors)) { + return `${data.message}: ${data.errors.map(JSON.stringify).join(", ")}`; } - // Part: Images - /** - * Get a single image attached to a direct message. TwitterApi client must be logged with OAuth 1.0a. - * https://developer.twitter.com/en/docs/twitter-api/v1/direct-messages/message-attachments/guides/retrieving-media - */ - async downloadDmImage(urlOrDm) { - if (typeof urlOrDm !== 'string') { - const attachment = urlOrDm[types_1.EDirectMessageEventTypeV1.Create].message_data.attachment; - if (!attachment) { - throw new Error('The given direct message doesn\'t contain any attachment'); - } - urlOrDm = attachment.media_url_https; - } - const data = await this.get(urlOrDm, undefined, { forceParseMode: 'buffer', prefix: '' }); - if (!data.length) { - throw new Error('Image not found. Make sure you are logged with credentials able to access direct messages, and check the URL.'); - } - return data; + + return data.message; + } // istanbul ignore next - just in case + + + return `Unknown error: ${JSON.stringify(data)}`; +} + +function withDefaults(oldEndpoint, newDefaults) { + const endpoint = oldEndpoint.defaults(newDefaults); + + const newApi = function (route, parameters) { + const endpointOptions = endpoint.merge(route, parameters); + + if (!endpointOptions.request || !endpointOptions.request.hook) { + return fetchWrapper(endpoint.parse(endpointOptions)); } + + const request = (route, parameters) => { + return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters))); + }; + + Object.assign(request, { + endpoint, + defaults: withDefaults.bind(null, endpoint) + }); + return endpointOptions.request.hook(request, endpointOptions); + }; + + return Object.assign(newApi, { + endpoint, + defaults: withDefaults.bind(null, endpoint) + }); } -exports.TwitterApiv1 = TwitterApiv1; -exports["default"] = TwitterApiv1; + +const request = withDefaults(endpoint.endpoint, { + headers: { + "user-agent": `octokit-request.js/${VERSION} ${universalUserAgent.getUserAgent()}` + } +}); + +exports.request = request; +//# sourceMappingURL=index.js.map /***/ }), +/* 587 */, +/* 588 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 4273: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { +var ITERATOR = __webpack_require__(621)('iterator'); +var SAFE_CLOSING = false; -"use strict"; +try { + var riter = [7][ITERATOR](); + riter['return'] = function () { SAFE_CLOSING = true; }; + // eslint-disable-next-line no-throw-literal + Array.from(riter, function () { throw 2; }); +} catch (e) { /* empty */ } -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; +module.exports = function (exec, skipClosing) { + if (!skipClosing && !SAFE_CLOSING) return false; + var safe = false; + try { + var arr = [7]; + var iter = arr[ITERATOR](); + iter.next = function () { return { done: safe = true }; }; + arr[ITERATOR] = function () { return iter; }; + exec(arr); + } catch (e) { /* empty */ } + return safe; }; -Object.defineProperty(exports, "__esModule", ({ value: true })); -const client_subclient_1 = __importDefault(__nccwpck_require__(3810)); -const globals_1 = __nccwpck_require__(3444); -const helpers_1 = __nccwpck_require__(1120); -const client_v1_1 = __importDefault(__nccwpck_require__(7030)); -const tweet_paginator_v1_1 = __nccwpck_require__(9848); -const mutes_paginator_v1_1 = __nccwpck_require__(7277); -const user_paginator_v1_1 = __nccwpck_require__(8985); -const list_paginator_v1_1 = __nccwpck_require__(5631); -/** - * Base Twitter v1 client with only read right. - */ -class TwitterApiv1ReadOnly extends client_subclient_1.default { - constructor() { - super(...arguments); - this._prefix = globals_1.API_V1_1_PREFIX; - } - /* Tweets */ - /** - * Returns a single Tweet, specified by the id parameter. The Tweet's author will also be embedded within the Tweet. - * https://developer.twitter.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/get-statuses-show-id - */ - singleTweet(tweetId, options = {}) { - return this.get('statuses/show.json', { tweet_mode: 'extended', id: tweetId, ...options }); - } - tweets(ids, options = {}) { - return this.post('statuses/lookup.json', { tweet_mode: 'extended', id: ids, ...options }); - } - /** - * Returns a single Tweet, specified by either a Tweet web URL or the Tweet ID, in an oEmbed-compatible format. - * The returned HTML snippet will be automatically recognized as an Embedded Tweet when Twitter's widget JavaScript is included on the page. - * https://developer.twitter.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/get-statuses-oembed - */ - oembedTweet(tweetId, options = {}) { - return this.get('oembed', { - url: `https://twitter.com/i/statuses/${tweetId}`, - ...options, - }, { prefix: 'https://publish.twitter.com/' }); - } - /* Tweets timelines */ - /** - * Returns a collection of the most recent Tweets and Retweets posted by the authenticating user and the users they follow. - * The home timeline is central to how most users interact with the Twitter service. - * https://developer.twitter.com/en/docs/twitter-api/v1/tweets/timelines/api-reference/get-statuses-home_timeline - */ - async homeTimeline(options = {}) { - const queryParams = { - tweet_mode: 'extended', - ...options, - }; - const initialRq = await this.get('statuses/home_timeline.json', queryParams, { fullResponse: true }); - return new tweet_paginator_v1_1.HomeTimelineV1Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams, - }); - } - /** - * Returns the 20 most recent mentions (Tweets containing a users's @screen_name) for the authenticating user. - * The timeline returned is the equivalent of the one seen when you view your mentions on twitter.com. - * https://developer.twitter.com/en/docs/twitter-api/v1/tweets/timelines/api-reference/get-statuses-mentions_timeline - */ - async mentionTimeline(options = {}) { - const queryParams = { - tweet_mode: 'extended', - ...options, - }; - const initialRq = await this.get('statuses/mentions_timeline.json', queryParams, { fullResponse: true }); - return new tweet_paginator_v1_1.MentionTimelineV1Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams, - }); - } - /** - * Returns a collection of the most recent Tweets posted by the user indicated by the user_id parameters. - * User timelines belonging to protected users may only be requested when the authenticated user either "owns" the timeline or is an approved follower of the owner. - * https://developer.twitter.com/en/docs/twitter-api/v1/tweets/timelines/api-reference/get-statuses-user_timeline - */ - async userTimeline(userId, options = {}) { - const queryParams = { - tweet_mode: 'extended', - user_id: userId, - ...options, - }; - const initialRq = await this.get('statuses/user_timeline.json', queryParams, { fullResponse: true }); - return new tweet_paginator_v1_1.UserTimelineV1Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams, - }); - } - /** - * Returns a collection of the most recent Tweets posted by the user indicated by the screen_name parameters. - * User timelines belonging to protected users may only be requested when the authenticated user either "owns" the timeline or is an approved follower of the owner. - * https://developer.twitter.com/en/docs/twitter-api/v1/tweets/timelines/api-reference/get-statuses-user_timeline - */ - async userTimelineByUsername(username, options = {}) { - const queryParams = { - tweet_mode: 'extended', - screen_name: username, - ...options, - }; - const initialRq = await this.get('statuses/user_timeline.json', queryParams, { fullResponse: true }); - return new tweet_paginator_v1_1.UserTimelineV1Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams, - }); - } - /** - * Returns the most recent Tweets liked by the authenticating or specified user, 20 tweets by default. - * Note: favorites are now known as likes. - * https://developer.twitter.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/get-favorites-list - */ - async favoriteTimeline(userId, options = {}) { - const queryParams = { - tweet_mode: 'extended', - user_id: userId, - ...options, - }; - const initialRq = await this.get('favorites/list.json', queryParams, { fullResponse: true }); - return new tweet_paginator_v1_1.UserFavoritesV1Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams, - }); - } - /** - * Returns the most recent Tweets liked by the authenticating or specified user, 20 tweets by default. - * Note: favorites are now known as likes. - * https://developer.twitter.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/get-favorites-list - */ - async favoriteTimelineByUsername(username, options = {}) { - const queryParams = { - tweet_mode: 'extended', - screen_name: username, - ...options, - }; - const initialRq = await this.get('favorites/list.json', queryParams, { fullResponse: true }); - return new tweet_paginator_v1_1.UserFavoritesV1Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams, - }); - } - /* Users */ - /** - * Returns a variety of information about the user specified by the required user_id or screen_name parameter. - * The author's most recent Tweet will be returned inline when possible. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/get-users-show - */ - user(user) { - return this.get('users/show.json', { tweet_mode: 'extended', ...user }); - } - /** - * Returns fully-hydrated user objects for up to 100 users per request, - * as specified by comma-separated values passed to the user_id and/or screen_name parameters. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/get-users-lookup - */ - users(query) { - return this.get('users/lookup.json', { tweet_mode: 'extended', ...query }); - } - /** - * Returns an HTTP 200 OK response code and a representation of the requesting user if authentication was successful; - * returns a 401 status code and an error message if not. - * Use this method to test if supplied user credentials are valid. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/manage-account-settings/api-reference/get-account-verify_credentials - */ - verifyCredentials(options = {}) { - return this.get('account/verify_credentials.json', options); - } - /** - * Returns an array of user objects the authenticating user has muted. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/mute-block-report-users/api-reference/get-mutes-users-list - */ - async listMutedUsers(options = {}) { - const queryParams = { - tweet_mode: 'extended', - ...options, - }; - const initialRq = await this.get('mutes/users/list.json', queryParams, { fullResponse: true }); - return new mutes_paginator_v1_1.MuteUserListV1Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams, - }); - } - /** - * Returns an array of numeric user ids the authenticating user has muted. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/mute-block-report-users/api-reference/get-mutes-users-ids - */ - async listMutedUserIds(options = {}) { - const queryParams = { - stringify_ids: true, - ...options, - }; - const initialRq = await this.get('mutes/users/ids.json', queryParams, { fullResponse: true }); - return new mutes_paginator_v1_1.MuteUserIdsV1Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams, - }); - } - /** - * Provides a simple, relevance-based search interface to public user accounts on Twitter. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/get-users-search - */ - async searchUsers(query, options = {}) { - const queryParams = { - q: query, - tweet_mode: 'extended', - page: 1, - ...options, - }; - const initialRq = await this.get('users/search.json', queryParams, { fullResponse: true }); - return new user_paginator_v1_1.UserSearchV1Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams, - }); - } - /* Friendship API */ - /** - * Returns detailed information about the relationship between two arbitrary users. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/get-friendships-show - */ - friendship(sources) { - return this.get('friendships/show.json', sources); - } - /** - * Returns the relationships of the authenticating user to the comma-separated list of up to 100 screen_names or user_ids provided. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/get-friendships-lookup - */ - friendships(friendships) { - return this.get('friendships/lookup.json', friendships); - } - /** - * Returns a collection of user_ids that the currently authenticated user does not want to receive retweets from. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/get-friendships-no_retweets-ids - */ - friendshipsNoRetweets() { - return this.get('friendships/no_retweets/ids.json', { stringify_ids: true }); - } - /** - * Returns a collection of numeric IDs for every user who has a pending request to follow the authenticating user. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/get-friendships-incoming - */ - async friendshipsIncoming(options = {}) { - const queryParams = { - stringify_ids: true, - ...options, - }; - const initialRq = await this.get('friendships/incoming.json', queryParams, { fullResponse: true }); - return new user_paginator_v1_1.FriendshipsIncomingV1Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams, - }); - } - /** - * Returns a collection of numeric IDs for every protected user for whom the authenticating user has a pending follow request. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/get-friendships-outgoing - */ - async friendshipsOutgoing(options = {}) { - const queryParams = { - stringify_ids: true, - ...options, - }; - const initialRq = await this.get('friendships/outgoing.json', queryParams, { fullResponse: true }); - return new user_paginator_v1_1.FriendshipsOutgoingV1Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams, - }); - } - /* Account/user API */ - /** - * Get current account settings for authenticating user. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/manage-account-settings/api-reference/get-account-settings - */ - accountSettings() { - return this.get('account/settings.json'); - } - /** - * Returns a map of the available size variations of the specified user's profile banner. - * If the user has not uploaded a profile banner, a HTTP 404 will be served instead. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/manage-account-settings/api-reference/get-users-profile_banner - */ - userProfileBannerSizes(params) { - return this.get('users/profile_banner.json', params); - } - /* Lists */ - /** - * Returns the specified list. Private lists will only be shown if the authenticated user owns the specified list. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-show - */ - list(options) { - return this.get('lists/show.json', { tweet_mode: 'extended', ...options }); - } - /** - * Returns all lists the authenticating or specified user subscribes to, including their own. - * If no user is given, the authenticating user is used. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-list - */ - lists(options = {}) { - return this.get('lists/list.json', { tweet_mode: 'extended', ...options }); - } - /** - * Returns the members of the specified list. Private list members will only be shown if the authenticated user owns the specified list. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-members - */ - async listMembers(options = {}) { - const queryParams = { - tweet_mode: 'extended', - ...options, - }; - const initialRq = await this.get('lists/members.json', queryParams, { fullResponse: true }); - return new list_paginator_v1_1.ListMembersV1Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams, - }); - } - /** - * Check if the specified user is a member of the specified list. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-members-show - */ - listGetMember(options) { - return this.get('lists/members/show.json', { tweet_mode: 'extended', ...options }); - } - /** - * Returns the lists the specified user has been added to. - * If user_id or screen_name are not provided, the memberships for the authenticating user are returned. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-memberships - */ - async listMemberships(options = {}) { - const queryParams = { - tweet_mode: 'extended', - ...options, - }; - const initialRq = await this.get('lists/memberships.json', queryParams, { fullResponse: true }); - return new list_paginator_v1_1.ListMembershipsV1Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams, - }); - } - /** - * Returns the lists owned by the specified Twitter user. Private lists will only be shown if the authenticated user is also the owner of the lists. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-ownerships - */ - async listOwnerships(options = {}) { - const queryParams = { - tweet_mode: 'extended', - ...options, - }; - const initialRq = await this.get('lists/ownerships.json', queryParams, { fullResponse: true }); - return new list_paginator_v1_1.ListOwnershipsV1Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams, - }); - } - /** - * Returns a timeline of tweets authored by members of the specified list. Retweets are included by default. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-statuses - */ - async listStatuses(options) { - const queryParams = { - tweet_mode: 'extended', - ...options, - }; - const initialRq = await this.get('lists/statuses.json', queryParams, { fullResponse: true }); - return new tweet_paginator_v1_1.ListTimelineV1Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams, - }); - } - /** - * Returns the subscribers of the specified list. Private list subscribers will only be shown if the authenticated user owns the specified list. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-subscribers - */ - async listSubscribers(options = {}) { - const queryParams = { - tweet_mode: 'extended', - ...options, - }; - const initialRq = await this.get('lists/subscribers.json', queryParams, { fullResponse: true }); - return new list_paginator_v1_1.ListSubscribersV1Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams, - }); - } - /** - * Check if the specified user is a subscriber of the specified list. Returns the user if they are a subscriber. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-subscribers-show - */ - listGetSubscriber(options) { - return this.get('lists/subscribers/show.json', { tweet_mode: 'extended', ...options }); - } - /** - * Obtain a collection of the lists the specified user is subscribed to, 20 lists per page by default. - * Does not include the user's own lists. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/get-lists-subscriptions - */ - async listSubscriptions(options = {}) { - const queryParams = { - tweet_mode: 'extended', - ...options, - }; - const initialRq = await this.get('lists/subscriptions.json', queryParams, { fullResponse: true }); - return new list_paginator_v1_1.ListSubscriptionsV1Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams, - }); - } - /* Media upload API */ - /** - * The STATUS command (this method) is used to periodically poll for updates of media processing operation. - * After the STATUS command response returns succeeded, you can move on to the next step which is usually create Tweet with media_id. - * https://developer.twitter.com/en/docs/twitter-api/v1/media/upload-media/api-reference/get-media-upload-status - */ - mediaInfo(mediaId) { - return this.get('media/upload.json', { - command: 'STATUS', - media_id: mediaId, - }, { prefix: globals_1.API_V1_1_UPLOAD_PREFIX }); - } - filterStream({ autoConnect, ...params } = {}) { - const parameters = {}; - for (const [key, value] of Object.entries(params)) { - if (key === 'follow' || key === 'track') { - parameters[key] = value.toString(); - } - else if (key === 'locations') { - const locations = value; - parameters.locations = (0, helpers_1.arrayWrap)(locations).map(loc => `${loc.lng},${loc.lat}`).join(','); - } - else { - parameters[key] = value; - } - } - const streamClient = this.stream; - return streamClient.postStream('statuses/filter.json', parameters, { autoConnect }); - } - sampleStream({ autoConnect, ...params } = {}) { - const streamClient = this.stream; - return streamClient.getStream('statuses/sample.json', params, { autoConnect }); - } - /** - * Create a client that is prefixed with `https//stream.twitter.com` instead of classic API URL. - */ - get stream() { - const copiedClient = new client_v1_1.default(this); - copiedClient.setPrefix(globals_1.API_V1_1_STREAM_PREFIX); - return copiedClient; - } - /* Trends API */ - /** - * Returns the top 50 trending topics for a specific id, if trending information is available for it. - * Note: The id parameter for this endpoint is the "where on earth identifier" or WOEID, which is a legacy identifier created by Yahoo and has been deprecated. - * https://developer.twitter.com/en/docs/twitter-api/v1/trends/trends-for-location/api-reference/get-trends-place - */ - trendsByPlace(woeId, options = {}) { - return this.get('trends/place.json', { id: woeId, ...options }); - } - /** - * Returns the locations that Twitter has trending topic information for. - * The response is an array of "locations" that encode the location's WOEID - * and some other human-readable information such as a canonical name and country the location belongs in. - * https://developer.twitter.com/en/docs/twitter-api/v1/trends/locations-with-trending-topics/api-reference/get-trends-available - */ - trendsAvailable() { - return this.get('trends/available.json'); - } - /** - * Returns the locations that Twitter has trending topic information for, closest to a specified location. - * https://developer.twitter.com/en/docs/twitter-api/v1/trends/locations-with-trending-topics/api-reference/get-trends-closest - */ - trendsClosest(lat, long) { - return this.get('trends/closest.json', { lat, long }); - } - /* Geo API */ - /** - * Returns all the information about a known place. - * https://developer.twitter.com/en/docs/twitter-api/v1/geo/place-information/api-reference/get-geo-id-place_id - */ - geoPlace(placeId) { - return this.get('geo/id/:place_id.json', undefined, { params: { place_id: placeId } }); - } - /** - * Search for places that can be attached to a Tweet via POST statuses/update. - * This request will return a list of all the valid places that can be used as the place_id when updating a status. - * https://developer.twitter.com/en/docs/twitter-api/v1/geo/places-near-location/api-reference/get-geo-search - */ - geoSearch(options) { - return this.get('geo/search.json', options); - } - /** - * Given a latitude and a longitude, searches for up to 20 places that can be used as a place_id when updating a status. - * This request is an informative call and will deliver generalized results about geography. - * https://developer.twitter.com/en/docs/twitter-api/v1/geo/places-near-location/api-reference/get-geo-reverse_geocode - */ - geoReverseGeoCode(options) { - return this.get('geo/reverse_geocode.json', options); - } - /* Developer utilities */ - /** - * Returns the current rate limits for methods belonging to the specified resource families. - * Each API resource belongs to a "resource family" which is indicated in its method documentation. - * The method's resource family can be determined from the first component of the path after the resource version. - * https://developer.twitter.com/en/docs/twitter-api/v1/developer-utilities/rate-limit-status/api-reference/get-application-rate_limit_status - */ - rateLimitStatuses(...resources) { - return this.get('application/rate_limit_status.json', { resources }); - } - /** - * Returns the list of languages supported by Twitter along with the language code supported by Twitter. - * https://developer.twitter.com/en/docs/twitter-api/v1/developer-utilities/supported-languages/api-reference/get-help-languages - */ - supportedLanguages() { - return this.get('help/languages.json'); - } + + +/***/ }), +/* 589 */, +/* 590 */ +/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { + +"use strict"; + +__webpack_require__(752); +var anObject = __webpack_require__(990); +var $flags = __webpack_require__(788); +var DESCRIPTORS = __webpack_require__(843); +var TO_STRING = 'toString'; +var $toString = /./[TO_STRING]; + +var define = function (fn) { + __webpack_require__(976)(RegExp.prototype, TO_STRING, fn, true); +}; + +// 21.2.5.14 RegExp.prototype.toString() +if (__webpack_require__(971)(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) { + define(function toString() { + var R = anObject(this); + return '/'.concat(R.source, '/', + 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined); + }); +// FF44- RegExp#toString has a wrong name +} else if ($toString.name != TO_STRING) { + define(function toString() { + return $toString.call(this); + }); } -exports["default"] = TwitterApiv1ReadOnly; /***/ }), +/* 591 */ +/***/ (function(module) { -/***/ 6685: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { +module.exports = addComment; -"use strict"; +function addComment({ octokit, payload }, body) { + // add comment with tweet URLs + // https://developer.github.com/v3/repos/comments/#create-a-commit-comment + return octokit.request("POST /repos/:owner/:repo/commits/:sha/comments", { + owner: payload.repository.owner.login, + repo: payload.repository.name, + sha: payload.head_commit.id, + body, + }); +} -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; + +/***/ }), +/* 592 */, +/* 593 */, +/* 594 */, +/* 595 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +var isObject = __webpack_require__(956); +var setPrototypeOf = __webpack_require__(820).set; +module.exports = function (that, target, C) { + var S = target.constructor; + var P; + if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) { + setPrototypeOf(that, P); + } return that; }; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; + + +/***/ }), +/* 596 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +// Copyright 2017 Joyent, Inc. + +module.exports = { + read: read, + verify: verify, + sign: sign, + signAsync: signAsync, + write: write, + + /* Internal private API */ + fromBuffer: fromBuffer, + toBuffer: toBuffer }; -Object.defineProperty(exports, "__esModule", ({ value: true })); -const globals_1 = __nccwpck_require__(3444); -const client_v1_read_1 = __importDefault(__nccwpck_require__(4273)); -const types_1 = __nccwpck_require__(1638); -const fs = __importStar(__nccwpck_require__(7147)); -const media_helpers_v1_1 = __nccwpck_require__(8738); -const helpers_1 = __nccwpck_require__(1120); -const UPLOAD_ENDPOINT = 'media/upload.json'; -/** - * Base Twitter v1 client with read/write rights. - */ -class TwitterApiv1ReadWrite extends client_v1_read_1.default { - constructor() { - super(...arguments); - this._prefix = globals_1.API_V1_1_PREFIX; - } - /** - * Get a client with only read rights. - */ - get readOnly() { - return this; - } - /* Tweet API */ - /** - * Post a new tweet. - * https://developer.twitter.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/post-statuses-update - */ - tweet(status, payload = {}) { - const queryParams = { - status, - tweet_mode: 'extended', - ...payload, - }; - return this.post('statuses/update.json', queryParams); - } - /** - * Quote an existing tweet. - * https://developer.twitter.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/post-statuses-update - */ - async quote(status, quotingStatusId, payload = {}) { - const url = 'https://twitter.com/i/statuses/' + quotingStatusId; - return this.tweet(status, { ...payload, attachment_url: url }); - } - /** - * Post a series of tweets. - * https://developer.twitter.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/post-statuses-update - */ - async tweetThread(tweets) { - const postedTweets = []; - for (const tweet of tweets) { - // Retrieve the last sent tweet - const lastTweet = postedTweets.length ? postedTweets[postedTweets.length - 1] : null; - // Build the tweet query params - const queryParams = { ...(typeof tweet === 'string' ? ({ status: tweet }) : tweet) }; - // Reply to an existing tweet if needed - const inReplyToId = lastTweet ? lastTweet.id_str : queryParams.in_reply_to_status_id; - const status = queryParams.status; - if (inReplyToId) { - postedTweets.push(await this.reply(status, inReplyToId, queryParams)); - } - else { - postedTweets.push(await this.tweet(status, queryParams)); - } - } - return postedTweets; - } - /** - * Reply to an existing tweet. Shortcut to `.tweet` with tweaked parameters. - * https://developer.twitter.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/post-statuses-update - */ - reply(status, in_reply_to_status_id, payload = {}) { - return this.tweet(status, { - auto_populate_reply_metadata: true, - in_reply_to_status_id, - ...payload, - }); - } - /** - * Delete an existing tweet belonging to you. - * https://developer.twitter.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/post-statuses-destroy-id - */ - deleteTweet(tweetId) { - return this.post('statuses/destroy/:id.json', { tweet_mode: 'extended' }, { params: { id: tweetId } }); - } - /* User API */ - /** - * Report the specified user as a spam account to Twitter. - * Additionally, optionally performs the equivalent of POST blocks/create on behalf of the authenticated user. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/mute-block-report-users/api-reference/post-users-report_spam - */ - reportUserAsSpam(options) { - return this.post('users/report_spam.json', { tweet_mode: 'extended', ...options }); - } - /** - * Turn on/off Retweets and device notifications from the specified user. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/post-friendships-update - */ - updateFriendship(options) { - return this.post('friendships/update.json', options); - } - /** - * Follow the specified user. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/post-friendships-create - */ - createFriendship(options) { - return this.post('friendships/create.json', options); - } - /** - * Unfollow the specified user. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/follow-search-get-users/api-reference/post-friendships-destroy - */ - destroyFriendship(options) { - return this.post('friendships/destroy.json', options); - } - /* Account API */ - /** - * Update current account settings for authenticating user. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/manage-account-settings/api-reference/get-account-settings - */ - updateAccountSettings(options) { - return this.post('account/settings.json', options); - } - /** - * Sets some values that users are able to set under the "Account" tab of their settings page. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/manage-account-settings/api-reference/post-account-update_profile - */ - updateAccountProfile(options) { - return this.post('account/update_profile.json', options); - } - /** - * Uploads a profile banner on behalf of the authenticating user. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/manage-account-settings/api-reference/post-account-update_profile_banner - */ - async updateAccountProfileBanner(file, options = {}) { - const queryParams = { - banner: await (0, media_helpers_v1_1.readFileIntoBuffer)(file), - ...options, - }; - return this.post('account/update_profile_banner.json', queryParams, { forceBodyMode: 'form-data' }); - } - /** - * Updates the authenticating user's profile image. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/manage-account-settings/api-reference/post-account-update_profile_image - */ - async updateAccountProfileImage(file, options = {}) { - const queryParams = { - tweet_mode: 'extended', - image: await (0, media_helpers_v1_1.readFileIntoBuffer)(file), - ...options, - }; - return this.post('account/update_profile_image.json', queryParams, { forceBodyMode: 'form-data' }); - } - /** - * Removes the uploaded profile banner for the authenticating user. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/manage-account-settings/api-reference/post-account-remove_profile_banner - */ - removeAccountProfileBanner() { - return this.post('account/remove_profile_banner.json'); - } - /* Lists */ - /** - * Creates a new list for the authenticated user. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/post-lists-create - */ - createList(options) { - return this.post('lists/create.json', { tweet_mode: 'extended', ...options }); - } - /** - * Updates the specified list. The authenticated user must own the list to be able to update it. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/post-lists-update - */ - updateList(options) { - return this.post('lists/update.json', { tweet_mode: 'extended', ...options }); - } - /** - * Deletes the specified list. The authenticated user must own the list to be able to destroy it. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/post-lists-destroy - */ - removeList(options) { - return this.post('lists/destroy.json', { tweet_mode: 'extended', ...options }); - } - /** - * Adds multiple members to a list, by specifying a comma-separated list of member ids or screen names. - * If you add a single `user_id` or `screen_name`, it will target `lists/members/create.json`, otherwise - * it will target `lists/members/create_all.json`. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/post-lists-members-create_all - */ - addListMembers(options) { - const hasMultiple = (options.user_id && (0, helpers_1.hasMultipleItems)(options.user_id)) || (options.screen_name && (0, helpers_1.hasMultipleItems)(options.screen_name)); - const endpoint = hasMultiple ? 'lists/members/create_all.json' : 'lists/members/create.json'; - return this.post(endpoint, options); - } - /** - * Removes multiple members to a list, by specifying a comma-separated list of member ids or screen names. - * If you add a single `user_id` or `screen_name`, it will target `lists/members/destroy.json`, otherwise - * it will target `lists/members/destroy_all.json`. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/post-lists-members-destroy_all - */ - removeListMembers(options) { - const hasMultiple = (options.user_id && (0, helpers_1.hasMultipleItems)(options.user_id)) || (options.screen_name && (0, helpers_1.hasMultipleItems)(options.screen_name)); - const endpoint = hasMultiple ? 'lists/members/destroy_all.json' : 'lists/members/destroy.json'; - return this.post(endpoint, options); - } - /** - * Subscribes the authenticated user to the specified list. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/post-lists-subscribers-create - */ - subscribeToList(options) { - return this.post('lists/subscribers/create.json', { tweet_mode: 'extended', ...options }); - } - /** - * Unsubscribes the authenticated user of the specified list. - * https://developer.twitter.com/en/docs/twitter-api/v1/accounts-and-users/create-manage-lists/api-reference/post-lists-subscribers-destroy - */ - unsubscribeOfList(options) { - return this.post('lists/subscribers/destroy.json', { tweet_mode: 'extended', ...options }); - } - /* Media upload API */ - /** - * This endpoint can be used to provide additional information about the uploaded media_id. - * This feature is currently only supported for images and GIFs. - * https://developer.twitter.com/en/docs/twitter-api/v1/media/upload-media/api-reference/post-media-metadata-create - */ - createMediaMetadata(mediaId, metadata) { - return this.post('media/metadata/create.json', { media_id: mediaId, ...metadata }, { prefix: globals_1.API_V1_1_UPLOAD_PREFIX, forceBodyMode: 'json' }); - } - /** - * Use this endpoint to associate uploaded subtitles to an uploaded video. You can associate subtitles to video before or after Tweeting. - * **To obtain subtitle media ID, you must upload each subtitle file separately using `.uploadMedia()` method.** - * - * https://developer.twitter.com/en/docs/twitter-api/v1/media/upload-media/api-reference/post-media-subtitles-create - */ - createMediaSubtitles(mediaId, subtitles) { - return this.post('media/subtitles/create.json', { media_id: mediaId, media_category: 'TweetVideo', subtitle_info: { subtitles } }, { prefix: globals_1.API_V1_1_UPLOAD_PREFIX, forceBodyMode: 'json' }); - } - /** - * Use this endpoint to dissociate subtitles from a video and delete the subtitles. You can dissociate subtitles from a video before or after Tweeting. - * https://developer.twitter.com/en/docs/twitter-api/v1/media/upload-media/api-reference/post-media-subtitles-delete - */ - deleteMediaSubtitles(mediaId, ...languages) { - return this.post('media/subtitles/delete.json', { - media_id: mediaId, - media_category: 'TweetVideo', - subtitle_info: { subtitles: languages.map(lang => ({ language_code: lang })) }, - }, { prefix: globals_1.API_V1_1_UPLOAD_PREFIX, forceBodyMode: 'json' }); - } - /** - * Upload a media (JPG/PNG/GIF/MP4/WEBP) or subtitle (SRT) to Twitter and return the media_id to use in tweet/DM send. - * - * @param file If `string`, filename is supposed. - * A `Buffer` is a raw file. - * `fs.promises.FileHandle` or `number` are file pointers. - * - * @param options.type File type (Enum 'jpg' | 'longmp4' | 'mp4' | 'png' | 'gif' | 'srt' | 'webp'). - * If filename is given, it could be guessed with file extension, otherwise this parameter is mandatory. - * If type is not part of the enum, it will be used as mime type. - * - * Type `longmp4` is **required** is you try to upload a video higher than 140 seconds. - * - * @param options.chunkLength Maximum chunk length sent to Twitter. Default goes to 1 MB. - * - * @param options.additionalOwners Other user IDs allowed to use the returned media_id. Default goes to none. - * - * @param options.maxConcurrentUploads Maximum uploaded chunks in the same time. Default goes to 3. - * - * @param options.target Target type `tweet` or `dm`. Defaults to `tweet`. - * You must specify it if you send a media to use in DMs. - */ - async uploadMedia(file, options = {}) { - var _a; - const chunkLength = (_a = options.chunkLength) !== null && _a !== void 0 ? _a : (1024 * 1024); - const { fileHandle, mediaCategory, fileSize, mimeType } = await this.getUploadMediaRequirements(file, options); - // Get the file handle (if not buffer) - try { - // Finally! We can send INIT message. - const mediaData = await this.post(UPLOAD_ENDPOINT, { - command: 'INIT', - total_bytes: fileSize, - media_type: mimeType, - media_category: mediaCategory, - additional_owners: options.additionalOwners, - shared: options.shared ? true : undefined, - }, { prefix: globals_1.API_V1_1_UPLOAD_PREFIX }); - // Upload the media chunk by chunk - await this.mediaChunkedUpload(fileHandle, chunkLength, mediaData.media_id_string, options.maxConcurrentUploads); - // Finalize media - const fullMediaData = await this.post(UPLOAD_ENDPOINT, { - command: 'FINALIZE', - media_id: mediaData.media_id_string, - }, { prefix: globals_1.API_V1_1_UPLOAD_PREFIX }); - if (fullMediaData.processing_info && fullMediaData.processing_info.state !== 'succeeded') { - // Must wait if video is still computed - await this.awaitForMediaProcessingCompletion(fullMediaData); - } - // Video is ready, return media_id - return fullMediaData.media_id_string; - } - finally { - // Close file if any - if (typeof file === 'number') { - // eslint-disable-next-line @typescript-eslint/no-empty-function - fs.close(file, () => { }); - } - else if (typeof fileHandle === 'object' && !(fileHandle instanceof Buffer)) { - fileHandle.close(); - } - } - } - async awaitForMediaProcessingCompletion(fullMediaData) { - // eslint-disable-next-line no-constant-condition - while (true) { - fullMediaData = await this.mediaInfo(fullMediaData.media_id_string); - const { processing_info } = fullMediaData; - if (!processing_info || processing_info.state === 'succeeded') { - // Ok, completed! - return; - } - if (processing_info.state === 'failed') { - if (processing_info.error) { - const { name, message } = processing_info.error; - throw new Error(`Failed to process media: ${name} - ${message}.`); - } - throw new Error('Failed to process the media.'); - } - if (processing_info.check_after_secs) { - // Await for given seconds - await (0, media_helpers_v1_1.sleepSecs)(processing_info.check_after_secs); - } - else { - // No info; Await for 5 seconds - await (0, media_helpers_v1_1.sleepSecs)(5); - } - } - } - async getUploadMediaRequirements(file, { mimeType, type, target, longVideo } = {}) { - // Get the file handle (if not buffer) - let fileHandle; - try { - fileHandle = await (0, media_helpers_v1_1.getFileHandle)(file); - // Get the mimetype - const realMimeType = (0, media_helpers_v1_1.getMimeType)(file, type, mimeType); - // Get the media category - let mediaCategory; - // If explicit longmp4 OR explicit MIME type and not DM target - if (realMimeType === types_1.EUploadMimeType.Mp4 && ((!mimeType && !type && target !== 'dm') || longVideo)) { - mediaCategory = 'amplify_video'; - } - else { - mediaCategory = (0, media_helpers_v1_1.getMediaCategoryByMime)(realMimeType, target !== null && target !== void 0 ? target : 'tweet'); - } - return { - fileHandle, - mediaCategory, - fileSize: await (0, media_helpers_v1_1.getFileSizeFromFileHandle)(fileHandle), - mimeType: realMimeType, - }; - } - catch (e) { - // Close file if any - if (typeof file === 'number') { - // eslint-disable-next-line @typescript-eslint/no-empty-function - fs.close(file, () => { }); - } - else if (typeof fileHandle === 'object' && !(fileHandle instanceof Buffer)) { - fileHandle.close(); - } - throw e; - } - } - async mediaChunkedUpload(fileHandle, chunkLength, mediaId, maxConcurrentUploads = 3) { - // Send chunk by chunk - let chunkIndex = 0; - if (maxConcurrentUploads < 1) { - throw new RangeError('Bad maxConcurrentUploads parameter.'); - } - // Creating a buffer for doing file stuff (if we don't have one) - const buffer = fileHandle instanceof Buffer ? undefined : Buffer.alloc(chunkLength); - // Sliced/filled buffer returned for each part - let readBuffer; - // Needed to know when we should stop reading the file - let nread; - // Needed to use the buffer object (file handles always "remembers" file position) - let offset = 0; - [readBuffer, nread] = await (0, media_helpers_v1_1.readNextPartOf)(fileHandle, chunkLength, offset, buffer); - offset += nread; - // Handle max concurrent uploads - const currentUploads = new Set(); - // Read buffer until file is completely read - while (nread) { - const mediaBufferPart = readBuffer.slice(0, nread); - // Sent part if part has something inside - if (mediaBufferPart.length) { - const request = this.post(UPLOAD_ENDPOINT, { - command: 'APPEND', - media_id: mediaId, - segment_index: chunkIndex, - media: mediaBufferPart, - }, { prefix: globals_1.API_V1_1_UPLOAD_PREFIX }); - currentUploads.add(request); - request.then(() => { - currentUploads.delete(request); - }); - chunkIndex++; - } - if (currentUploads.size >= maxConcurrentUploads) { - // Await for first promise to be finished - await Promise.race(currentUploads); - } - [readBuffer, nread] = await (0, media_helpers_v1_1.readNextPartOf)(fileHandle, chunkLength, offset, buffer); - offset += nread; - } - await Promise.all([...currentUploads]); - } + +var assert = __webpack_require__(489); +var SSHBuffer = __webpack_require__(940); +var crypto = __webpack_require__(417); +var Buffer = __webpack_require__(726).Buffer; +var algs = __webpack_require__(603); +var Key = __webpack_require__(500); +var PrivateKey = __webpack_require__(502); +var Identity = __webpack_require__(378); +var rfc4253 = __webpack_require__(538); +var Signature = __webpack_require__(575); +var utils = __webpack_require__(270); +var Certificate = __webpack_require__(202); + +function verify(cert, key) { + /* + * We always give an issuerKey, so if our verify() is being called then + * there was no signature. Return false. + */ + return (false); +} + +var TYPES = { + 'user': 1, + 'host': 2 +}; +Object.keys(TYPES).forEach(function (k) { TYPES[TYPES[k]] = k; }); + +var ECDSA_ALGO = /^ecdsa-sha2-([^@-]+)-cert-v01@openssh.com$/; + +function read(buf, options) { + if (Buffer.isBuffer(buf)) + buf = buf.toString('ascii'); + var parts = buf.trim().split(/[ \t\n]+/g); + if (parts.length < 2 || parts.length > 3) + throw (new Error('Not a valid SSH certificate line')); + + var algo = parts[0]; + var data = parts[1]; + + data = Buffer.from(data, 'base64'); + return (fromBuffer(data, algo)); +} + +function fromBuffer(data, algo, partial) { + var sshbuf = new SSHBuffer({ buffer: data }); + var innerAlgo = sshbuf.readString(); + if (algo !== undefined && innerAlgo !== algo) + throw (new Error('SSH certificate algorithm mismatch')); + if (algo === undefined) + algo = innerAlgo; + + var cert = {}; + cert.signatures = {}; + cert.signatures.openssh = {}; + + cert.signatures.openssh.nonce = sshbuf.readBuffer(); + + var key = {}; + var parts = (key.parts = []); + key.type = getAlg(algo); + + var partCount = algs.info[key.type].parts.length; + while (parts.length < partCount) + parts.push(sshbuf.readPart()); + assert.ok(parts.length >= 1, 'key must have at least one part'); + + var algInfo = algs.info[key.type]; + if (key.type === 'ecdsa') { + var res = ECDSA_ALGO.exec(algo); + assert.ok(res !== null); + assert.strictEqual(res[1], parts[0].data.toString()); + } + + for (var i = 0; i < algInfo.parts.length; ++i) { + parts[i].name = algInfo.parts[i]; + if (parts[i].name !== 'curve' && + algInfo.normalize !== false) { + var p = parts[i]; + p.data = utils.mpNormalize(p.data); + } + } + + cert.subjectKey = new Key(key); + + cert.serial = sshbuf.readInt64(); + + var type = TYPES[sshbuf.readInt()]; + assert.string(type, 'valid cert type'); + + cert.signatures.openssh.keyId = sshbuf.readString(); + + var principals = []; + var pbuf = sshbuf.readBuffer(); + var psshbuf = new SSHBuffer({ buffer: pbuf }); + while (!psshbuf.atEnd()) + principals.push(psshbuf.readString()); + if (principals.length === 0) + principals = ['*']; + + cert.subjects = principals.map(function (pr) { + if (type === 'user') + return (Identity.forUser(pr)); + else if (type === 'host') + return (Identity.forHost(pr)); + throw (new Error('Unknown identity type ' + type)); + }); + + cert.validFrom = int64ToDate(sshbuf.readInt64()); + cert.validUntil = int64ToDate(sshbuf.readInt64()); + + var exts = []; + var extbuf = new SSHBuffer({ buffer: sshbuf.readBuffer() }); + var ext; + while (!extbuf.atEnd()) { + ext = { critical: true }; + ext.name = extbuf.readString(); + ext.data = extbuf.readBuffer(); + exts.push(ext); + } + extbuf = new SSHBuffer({ buffer: sshbuf.readBuffer() }); + while (!extbuf.atEnd()) { + ext = { critical: false }; + ext.name = extbuf.readString(); + ext.data = extbuf.readBuffer(); + exts.push(ext); + } + cert.signatures.openssh.exts = exts; + + /* reserved */ + sshbuf.readBuffer(); + + var signingKeyBuf = sshbuf.readBuffer(); + cert.issuerKey = rfc4253.read(signingKeyBuf); + + /* + * OpenSSH certs don't give the identity of the issuer, just their + * public key. So, we use an Identity that matches anything. The + * isSignedBy() function will later tell you if the key matches. + */ + cert.issuer = Identity.forHost('**'); + + var sigBuf = sshbuf.readBuffer(); + cert.signatures.openssh.signature = + Signature.parse(sigBuf, cert.issuerKey.type, 'ssh'); + + if (partial !== undefined) { + partial.remainder = sshbuf.remainder(); + partial.consumed = sshbuf._offset; + } + + return (new Certificate(cert)); +} + +function int64ToDate(buf) { + var i = buf.readUInt32BE(0) * 4294967296; + i += buf.readUInt32BE(4); + var d = new Date(); + d.setTime(i * 1000); + d.sourceInt64 = buf; + return (d); +} + +function dateToInt64(date) { + if (date.sourceInt64 !== undefined) + return (date.sourceInt64); + var i = Math.round(date.getTime() / 1000); + var upper = Math.floor(i / 4294967296); + var lower = Math.floor(i % 4294967296); + var buf = Buffer.alloc(8); + buf.writeUInt32BE(upper, 0); + buf.writeUInt32BE(lower, 4); + return (buf); +} + +function sign(cert, key) { + if (cert.signatures.openssh === undefined) + cert.signatures.openssh = {}; + try { + var blob = toBuffer(cert, true); + } catch (e) { + delete (cert.signatures.openssh); + return (false); + } + var sig = cert.signatures.openssh; + var hashAlgo = undefined; + if (key.type === 'rsa' || key.type === 'dsa') + hashAlgo = 'sha1'; + var signer = key.createSign(hashAlgo); + signer.write(blob); + sig.signature = signer.sign(); + return (true); +} + +function signAsync(cert, signer, done) { + if (cert.signatures.openssh === undefined) + cert.signatures.openssh = {}; + try { + var blob = toBuffer(cert, true); + } catch (e) { + delete (cert.signatures.openssh); + done(e); + return; + } + var sig = cert.signatures.openssh; + + signer(blob, function (err, signature) { + if (err) { + done(err); + return; + } + try { + /* + * This will throw if the signature isn't of a + * type/algo that can be used for SSH. + */ + signature.toBuffer('ssh'); + } catch (e) { + done(e); + return; + } + sig.signature = signature; + done(); + }); +} + +function write(cert, options) { + if (options === undefined) + options = {}; + + var blob = toBuffer(cert); + var out = getCertType(cert.subjectKey) + ' ' + blob.toString('base64'); + if (options.comment) + out = out + ' ' + options.comment; + return (out); +} + + +function toBuffer(cert, noSig) { + assert.object(cert.signatures.openssh, 'signature for openssh format'); + var sig = cert.signatures.openssh; + + if (sig.nonce === undefined) + sig.nonce = crypto.randomBytes(16); + var buf = new SSHBuffer({}); + buf.writeString(getCertType(cert.subjectKey)); + buf.writeBuffer(sig.nonce); + + var key = cert.subjectKey; + var algInfo = algs.info[key.type]; + algInfo.parts.forEach(function (part) { + buf.writePart(key.part[part]); + }); + + buf.writeInt64(cert.serial); + + var type = cert.subjects[0].type; + assert.notStrictEqual(type, 'unknown'); + cert.subjects.forEach(function (id) { + assert.strictEqual(id.type, type); + }); + type = TYPES[type]; + buf.writeInt(type); + + if (sig.keyId === undefined) { + sig.keyId = cert.subjects[0].type + '_' + + (cert.subjects[0].uid || cert.subjects[0].hostname); + } + buf.writeString(sig.keyId); + + var sub = new SSHBuffer({}); + cert.subjects.forEach(function (id) { + if (type === TYPES.host) + sub.writeString(id.hostname); + else if (type === TYPES.user) + sub.writeString(id.uid); + }); + buf.writeBuffer(sub.toBuffer()); + + buf.writeInt64(dateToInt64(cert.validFrom)); + buf.writeInt64(dateToInt64(cert.validUntil)); + + var exts = sig.exts; + if (exts === undefined) + exts = []; + + var extbuf = new SSHBuffer({}); + exts.forEach(function (ext) { + if (ext.critical !== true) + return; + extbuf.writeString(ext.name); + extbuf.writeBuffer(ext.data); + }); + buf.writeBuffer(extbuf.toBuffer()); + + extbuf = new SSHBuffer({}); + exts.forEach(function (ext) { + if (ext.critical === true) + return; + extbuf.writeString(ext.name); + extbuf.writeBuffer(ext.data); + }); + buf.writeBuffer(extbuf.toBuffer()); + + /* reserved */ + buf.writeBuffer(Buffer.alloc(0)); + + sub = rfc4253.write(cert.issuerKey); + buf.writeBuffer(sub); + + if (!noSig) + buf.writeBuffer(sig.signature.toBuffer('ssh')); + + return (buf.toBuffer()); +} + +function getAlg(certType) { + if (certType === 'ssh-rsa-cert-v01@openssh.com') + return ('rsa'); + if (certType === 'ssh-dss-cert-v01@openssh.com') + return ('dsa'); + if (certType.match(ECDSA_ALGO)) + return ('ecdsa'); + if (certType === 'ssh-ed25519-cert-v01@openssh.com') + return ('ed25519'); + throw (new Error('Unsupported cert type ' + certType)); +} + +function getCertType(key) { + if (key.type === 'rsa') + return ('ssh-rsa-cert-v01@openssh.com'); + if (key.type === 'dsa') + return ('ssh-dss-cert-v01@openssh.com'); + if (key.type === 'ecdsa') + return ('ecdsa-sha2-' + key.curve + '-cert-v01@openssh.com'); + if (key.type === 'ed25519') + return ('ssh-ed25519-cert-v01@openssh.com'); + throw (new Error('Unsupported key type ' + key.type)); } -exports["default"] = TwitterApiv1ReadWrite; /***/ }), +/* 597 */, +/* 598 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +var isObject = __webpack_require__(956); +var document = __webpack_require__(300).document; +// typeof document.createElement is 'object' in old IE +var is = isObject(document) && isObject(document.createElement); +module.exports = function (it) { + return is ? document.createElement(it) : {}; +}; + -/***/ 8738: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { +/***/ }), +/* 599 */ +/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { "use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; +var $export = __webpack_require__(195); +var $reduce = __webpack_require__(12); + +$export($export.P + $export.F * !__webpack_require__(482)([].reduce, true), 'Array', { + // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue]) + reduce: function reduce(callbackfn /* , initialValue */) { + return $reduce(this, callbackfn, arguments.length, arguments[1], false); + } }); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.readNextPartOf = exports.sleepSecs = exports.getMediaCategoryByMime = exports.getMimeType = exports.getFileSizeFromFileHandle = exports.getFileHandle = exports.readFileIntoBuffer = void 0; -const fs = __importStar(__nccwpck_require__(7147)); -const helpers_1 = __nccwpck_require__(1120); -const types_1 = __nccwpck_require__(1638); -async function readFileIntoBuffer(file) { - const handle = await getFileHandle(file); - if (typeof handle === 'number') { - return new Promise((resolve, reject) => { - fs.readFile(handle, (err, data) => { - if (err) { - return reject(err); - } - resolve(data); - }); - }); - } - else if (handle instanceof Buffer) { - return handle; - } - else { - return handle.readFile(); - } + + +/***/ }), +/* 600 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlDecOctet = /(?:[0-9]|(?:[1-9][0-9])|(?:1[0-9]{2})|(?:2[0-4][0-9])|(?:25[0-5]))/i; +var _default = validateUrlDecOctet; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 601 */, +/* 602 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + + +var tough = __webpack_require__(892) + +var Cookie = tough.Cookie +var CookieJar = tough.CookieJar + +exports.parse = function (str) { + if (str && str.uri) { + str = str.uri + } + if (typeof str !== 'string') { + throw new Error('The cookie function only accepts STRING as param') + } + return Cookie.parse(str, {loose: true}) } -exports.readFileIntoBuffer = readFileIntoBuffer; -function getFileHandle(file) { - if (typeof file === 'string') { - return fs.promises.open(file, 'r'); - } - else if (typeof file === 'number') { - return file; - } - else if (typeof file === 'object' && !(file instanceof Buffer)) { - return file; - } - else if (!(file instanceof Buffer)) { - throw new Error('Given file is not valid, please check its type.'); - } - else { - return file; - } + +// Adapt the sometimes-Async api of tough.CookieJar to our requirements +function RequestJar (store) { + var self = this + self._jar = new CookieJar(store, {looseMode: true}) } -exports.getFileHandle = getFileHandle; -async function getFileSizeFromFileHandle(fileHandle) { - // Get the file size - if (typeof fileHandle === 'number') { - const stats = await new Promise((resolve, reject) => { - fs.fstat(fileHandle, (err, stats) => { - if (err) - reject(err); - resolve(stats); - }); - }); - return stats.size; - } - else if (fileHandle instanceof Buffer) { - return fileHandle.length; - } - else { - return (await fileHandle.stat()).size; - } -} -exports.getFileSizeFromFileHandle = getFileSizeFromFileHandle; -function getMimeType(file, type, mimeType) { - if (typeof mimeType === 'string') { - return mimeType; - } - else if (typeof file === 'string' && !type) { - return getMimeByName(file); - } - else if (typeof type === 'string') { - return getMimeByType(type); - } - throw new Error('You must specify type if file is a file handle or Buffer.'); -} -exports.getMimeType = getMimeType; -function getMimeByName(name) { - if (name.endsWith('.jpeg') || name.endsWith('.jpg')) - return types_1.EUploadMimeType.Jpeg; - if (name.endsWith('.png')) - return types_1.EUploadMimeType.Png; - if (name.endsWith('.webp')) - return types_1.EUploadMimeType.Webp; - if (name.endsWith('.gif')) - return types_1.EUploadMimeType.Gif; - if (name.endsWith('.mpeg4') || name.endsWith('.mp4')) - return types_1.EUploadMimeType.Mp4; - if (name.endsWith('.srt')) - return types_1.EUploadMimeType.Srt; - (0, helpers_1.safeDeprecationWarning)({ - instance: 'TwitterApiv1ReadWrite', - method: 'uploadMedia', - problem: `options.mimeType is missing and filename couldn't help to resolve MIME type, so it will fallback to image/jpeg`, - resolution: `If you except to give filenames without extensions, please specify explicitlty the MIME type using options.mimeType`, - }); - return types_1.EUploadMimeType.Jpeg; -} -function getMimeByType(type) { - (0, helpers_1.safeDeprecationWarning)({ - instance: 'TwitterApiv1ReadWrite', - method: 'uploadMedia', - problem: `you're using options.type`, - resolution: `Remove options.type argument and migrate to options.mimeType which takes the real MIME type. ` + - `If you're using type=longmp4, add options.longVideo alongside of mimeType=EUploadMimeType.Mp4`, - }); - if (type === 'gif') - return types_1.EUploadMimeType.Gif; - if (type === 'jpg') - return types_1.EUploadMimeType.Jpeg; - if (type === 'png') - return types_1.EUploadMimeType.Png; - if (type === 'webp') - return types_1.EUploadMimeType.Webp; - if (type === 'srt') - return types_1.EUploadMimeType.Srt; - if (type === 'mp4' || type === 'longmp4') - return types_1.EUploadMimeType.Mp4; - return type; -} -function getMediaCategoryByMime(name, target) { - if (name === types_1.EUploadMimeType.Mp4) - return target === 'tweet' ? 'TweetVideo' : 'DmVideo'; - if (name === types_1.EUploadMimeType.Gif) - return target === 'tweet' ? 'TweetGif' : 'DmGif'; - if (name === types_1.EUploadMimeType.Srt) - return 'Subtitles'; - else - return target === 'tweet' ? 'TweetImage' : 'DmImage'; -} -exports.getMediaCategoryByMime = getMediaCategoryByMime; -function sleepSecs(seconds) { - return new Promise(resolve => setTimeout(resolve, seconds * 1000)); -} -exports.sleepSecs = sleepSecs; -async function readNextPartOf(file, chunkLength, bufferOffset = 0, buffer) { - if (file instanceof Buffer) { - const rt = file.slice(bufferOffset, bufferOffset + chunkLength); - return [rt, rt.length]; - } - if (!buffer) { - throw new Error('Well, we will need a buffer to store file content.'); - } - let bytesRead; - if (typeof file === 'number') { - bytesRead = await new Promise((resolve, reject) => { - fs.read(file, buffer, 0, chunkLength, bufferOffset, (err, nread) => { - if (err) - reject(err); - resolve(nread); - }); - }); - } - else { - const res = await file.read(buffer, 0, chunkLength, bufferOffset); - bytesRead = res.bytesRead; +RequestJar.prototype.setCookie = function (cookieOrStr, uri, options) { + var self = this + return self._jar.setCookieSync(cookieOrStr, uri, options || {}) +} +RequestJar.prototype.getCookieString = function (uri) { + var self = this + return self._jar.getCookieStringSync(uri) +} +RequestJar.prototype.getCookies = function (uri) { + var self = this + return self._jar.getCookiesSync(uri) +} + +exports.jar = function (store) { + return new RequestJar(store) +} + + +/***/ }), +/* 603 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +// Copyright 2015 Joyent, Inc. + +var Buffer = __webpack_require__(726).Buffer; + +var algInfo = { + 'dsa': { + parts: ['p', 'q', 'g', 'y'], + sizePart: 'p' + }, + 'rsa': { + parts: ['e', 'n'], + sizePart: 'n' + }, + 'ecdsa': { + parts: ['curve', 'Q'], + sizePart: 'Q' + }, + 'ed25519': { + parts: ['A'], + sizePart: 'A' + } +}; +algInfo['curve25519'] = algInfo['ed25519']; + +var algPrivInfo = { + 'dsa': { + parts: ['p', 'q', 'g', 'y', 'x'] + }, + 'rsa': { + parts: ['n', 'e', 'd', 'iqmp', 'p', 'q'] + }, + 'ecdsa': { + parts: ['curve', 'Q', 'd'] + }, + 'ed25519': { + parts: ['A', 'k'] + } +}; +algPrivInfo['curve25519'] = algPrivInfo['ed25519']; + +var hashAlgs = { + 'md5': true, + 'sha1': true, + 'sha256': true, + 'sha384': true, + 'sha512': true +}; + +/* + * Taken from + * http://csrc.nist.gov/groups/ST/toolkit/documents/dss/NISTReCur.pdf + */ +var curves = { + 'nistp256': { + size: 256, + pkcs8oid: '1.2.840.10045.3.1.7', + p: Buffer.from(('00' + + 'ffffffff 00000001 00000000 00000000' + + '00000000 ffffffff ffffffff ffffffff'). + replace(/ /g, ''), 'hex'), + a: Buffer.from(('00' + + 'FFFFFFFF 00000001 00000000 00000000' + + '00000000 FFFFFFFF FFFFFFFF FFFFFFFC'). + replace(/ /g, ''), 'hex'), + b: Buffer.from(( + '5ac635d8 aa3a93e7 b3ebbd55 769886bc' + + '651d06b0 cc53b0f6 3bce3c3e 27d2604b'). + replace(/ /g, ''), 'hex'), + s: Buffer.from(('00' + + 'c49d3608 86e70493 6a6678e1 139d26b7' + + '819f7e90'). + replace(/ /g, ''), 'hex'), + n: Buffer.from(('00' + + 'ffffffff 00000000 ffffffff ffffffff' + + 'bce6faad a7179e84 f3b9cac2 fc632551'). + replace(/ /g, ''), 'hex'), + G: Buffer.from(('04' + + '6b17d1f2 e12c4247 f8bce6e5 63a440f2' + + '77037d81 2deb33a0 f4a13945 d898c296' + + '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16' + + '2bce3357 6b315ece cbb64068 37bf51f5'). + replace(/ /g, ''), 'hex') + }, + 'nistp384': { + size: 384, + pkcs8oid: '1.3.132.0.34', + p: Buffer.from(('00' + + 'ffffffff ffffffff ffffffff ffffffff' + + 'ffffffff ffffffff ffffffff fffffffe' + + 'ffffffff 00000000 00000000 ffffffff'). + replace(/ /g, ''), 'hex'), + a: Buffer.from(('00' + + 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' + + 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE' + + 'FFFFFFFF 00000000 00000000 FFFFFFFC'). + replace(/ /g, ''), 'hex'), + b: Buffer.from(( + 'b3312fa7 e23ee7e4 988e056b e3f82d19' + + '181d9c6e fe814112 0314088f 5013875a' + + 'c656398d 8a2ed19d 2a85c8ed d3ec2aef'). + replace(/ /g, ''), 'hex'), + s: Buffer.from(('00' + + 'a335926a a319a27a 1d00896a 6773a482' + + '7acdac73'). + replace(/ /g, ''), 'hex'), + n: Buffer.from(('00' + + 'ffffffff ffffffff ffffffff ffffffff' + + 'ffffffff ffffffff c7634d81 f4372ddf' + + '581a0db2 48b0a77a ecec196a ccc52973'). + replace(/ /g, ''), 'hex'), + G: Buffer.from(('04' + + 'aa87ca22 be8b0537 8eb1c71e f320ad74' + + '6e1d3b62 8ba79b98 59f741e0 82542a38' + + '5502f25d bf55296c 3a545e38 72760ab7' + + '3617de4a 96262c6f 5d9e98bf 9292dc29' + + 'f8f41dbd 289a147c e9da3113 b5f0b8c0' + + '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'). + replace(/ /g, ''), 'hex') + }, + 'nistp521': { + size: 521, + pkcs8oid: '1.3.132.0.35', + p: Buffer.from(( + '01ffffff ffffffff ffffffff ffffffff' + + 'ffffffff ffffffff ffffffff ffffffff' + + 'ffffffff ffffffff ffffffff ffffffff' + + 'ffffffff ffffffff ffffffff ffffffff' + + 'ffff').replace(/ /g, ''), 'hex'), + a: Buffer.from(('01FF' + + 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' + + 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' + + 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' + + 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFC'). + replace(/ /g, ''), 'hex'), + b: Buffer.from(('51' + + '953eb961 8e1c9a1f 929a21a0 b68540ee' + + 'a2da725b 99b315f3 b8b48991 8ef109e1' + + '56193951 ec7e937b 1652c0bd 3bb1bf07' + + '3573df88 3d2c34f1 ef451fd4 6b503f00'). + replace(/ /g, ''), 'hex'), + s: Buffer.from(('00' + + 'd09e8800 291cb853 96cc6717 393284aa' + + 'a0da64ba').replace(/ /g, ''), 'hex'), + n: Buffer.from(('01ff' + + 'ffffffff ffffffff ffffffff ffffffff' + + 'ffffffff ffffffff ffffffff fffffffa' + + '51868783 bf2f966b 7fcc0148 f709a5d0' + + '3bb5c9b8 899c47ae bb6fb71e 91386409'). + replace(/ /g, ''), 'hex'), + G: Buffer.from(('04' + + '00c6 858e06b7 0404e9cd 9e3ecb66 2395b442' + + '9c648139 053fb521 f828af60 6b4d3dba' + + 'a14b5e77 efe75928 fe1dc127 a2ffa8de' + + '3348b3c1 856a429b f97e7e31 c2e5bd66' + + '0118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9' + + '98f54449 579b4468 17afbd17 273e662c' + + '97ee7299 5ef42640 c550b901 3fad0761' + + '353c7086 a272c240 88be9476 9fd16650'). + replace(/ /g, ''), 'hex') + } +}; + +module.exports = { + info: algInfo, + privInfo: algPrivInfo, + hashAlgs: hashAlgs, + curves: curves +}; + + +/***/ }), +/* 604 */ +/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { + +"use strict"; + + +var isRegExp = __webpack_require__(694); +var anObject = __webpack_require__(990); +var speciesConstructor = __webpack_require__(438); +var advanceStringIndex = __webpack_require__(215); +var toLength = __webpack_require__(853); +var callRegExpExec = __webpack_require__(319); +var regexpExec = __webpack_require__(663); +var fails = __webpack_require__(971); +var $min = Math.min; +var $push = [].push; +var $SPLIT = 'split'; +var LENGTH = 'length'; +var LAST_INDEX = 'lastIndex'; +var MAX_UINT32 = 0xffffffff; + +// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError +var SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); }); + +// @@split logic +__webpack_require__(35)('split', 2, function (defined, SPLIT, $split, maybeCallNative) { + var internalSplit; + if ( + 'abbc'[$SPLIT](/(b)*/)[1] == 'c' || + 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 || + 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 || + '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 || + '.'[$SPLIT](/()()/)[LENGTH] > 1 || + ''[$SPLIT](/.?/)[LENGTH] + ) { + // based on es5-shim implementation, need to rework it + internalSplit = function (separator, limit) { + var string = String(this); + if (separator === undefined && limit === 0) return []; + // If `separator` is not a regex, use native split + if (!isRegExp(separator)) return $split.call(string, separator, limit); + var output = []; + var flags = (separator.ignoreCase ? 'i' : '') + + (separator.multiline ? 'm' : '') + + (separator.unicode ? 'u' : '') + + (separator.sticky ? 'y' : ''); + var lastLastIndex = 0; + var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0; + // Make `global` and avoid `lastIndex` issues by working with a copy + var separatorCopy = new RegExp(separator.source, flags + 'g'); + var match, lastIndex, lastLength; + while (match = regexpExec.call(separatorCopy, string)) { + lastIndex = separatorCopy[LAST_INDEX]; + if (lastIndex > lastLastIndex) { + output.push(string.slice(lastLastIndex, match.index)); + if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1)); + lastLength = match[0][LENGTH]; + lastLastIndex = lastIndex; + if (output[LENGTH] >= splitLimit) break; + } + if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop + } + if (lastLastIndex === string[LENGTH]) { + if (lastLength || !separatorCopy.test('')) output.push(''); + } else output.push(string.slice(lastLastIndex)); + return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output; + }; + // Chakra, V8 + } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) { + internalSplit = function (separator, limit) { + return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit); + }; + } else { + internalSplit = $split; + } + + return [ + // `String.prototype.split` method + // https://tc39.github.io/ecma262/#sec-string.prototype.split + function split(separator, limit) { + var O = defined(this); + var splitter = separator == undefined ? undefined : separator[SPLIT]; + return splitter !== undefined + ? splitter.call(separator, O, limit) + : internalSplit.call(String(O), separator, limit); + }, + // `RegExp.prototype[@@split]` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split + // + // NOTE: This cannot be properly polyfilled in engines that don't support + // the 'y' flag. + function (regexp, limit) { + var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split); + if (res.done) return res.value; + + var rx = anObject(regexp); + var S = String(this); + var C = speciesConstructor(rx, RegExp); + + var unicodeMatching = rx.unicode; + var flags = (rx.ignoreCase ? 'i' : '') + + (rx.multiline ? 'm' : '') + + (rx.unicode ? 'u' : '') + + (SUPPORTS_Y ? 'y' : 'g'); + + // ^(? + rx + ) is needed, in combination with some S slicing, to + // simulate the 'y' flag. + var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags); + var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; + if (lim === 0) return []; + if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : []; + var p = 0; + var q = 0; + var A = []; + while (q < S.length) { + splitter.lastIndex = SUPPORTS_Y ? q : 0; + var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q)); + var e; + if ( + z === null || + (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p + ) { + q = advanceStringIndex(S, q, unicodeMatching); + } else { + A.push(S.slice(p, q)); + if (A.length === lim) return A; + for (var i = 1; i <= z.length - 1; i++) { + A.push(z[i]); + if (A.length === lim) return A; + } + q = p = e; + } + } + A.push(S.slice(p)); + return A; } - return [buffer, bytesRead]; -} -exports.readNextPartOf = readNextPartOf; + ]; +}); /***/ }), +/* 605 */ +/***/ (function(module) { -/***/ 1204: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.TwitterApiv2Labs = void 0; -const globals_1 = __nccwpck_require__(3444); -const client_v2_labs_write_1 = __importDefault(__nccwpck_require__(8191)); -/** - * Twitter v2 labs client with all rights (read/write/DMs) - */ -class TwitterApiv2Labs extends client_v2_labs_write_1.default { - constructor() { - super(...arguments); - this._prefix = globals_1.API_V2_LABS_PREFIX; - } - /** - * Get a client with read/write rights. - */ - get readWrite() { - return this; - } -} -exports.TwitterApiv2Labs = TwitterApiv2Labs; -exports["default"] = TwitterApiv2Labs; - +module.exports = require("http"); /***/ }), - -/***/ 5248: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { +/* 606 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -const client_subclient_1 = __importDefault(__nccwpck_require__(3810)); -const globals_1 = __nccwpck_require__(3444); -/** - * Base Twitter v2 labs client with only read right. - */ -class TwitterApiv2LabsReadOnly extends client_subclient_1.default { - constructor() { - super(...arguments); - this._prefix = globals_1.API_V2_LABS_PREFIX; - } -} -exports["default"] = TwitterApiv2LabsReadOnly; +var _interopRequireDefault = __webpack_require__(764); -/***/ }), +__webpack_require__(493); -/***/ 8191: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; -"use strict"; +var _extractEntitiesWithIndices = _interopRequireDefault(__webpack_require__(458)); -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -const globals_1 = __nccwpck_require__(3444); -const client_v2_labs_read_1 = __importDefault(__nccwpck_require__(5248)); -/** - * Base Twitter v2 labs client with read/write rights. - */ -class TwitterApiv2LabsReadWrite extends client_v2_labs_read_1.default { - constructor() { - super(...arguments); - this._prefix = globals_1.API_V2_LABS_PREFIX; - } - /** - * Get a client with only read rights. - */ - get readOnly() { - return this; - } +var _autoLinkEntities = _interopRequireDefault(__webpack_require__(93)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text, options) { + var entities = (0, _extractEntitiesWithIndices["default"])(text, { + extractUrlsWithoutProtocol: false + }); + return (0, _autoLinkEntities["default"])(text, entities, options); } -exports["default"] = TwitterApiv2LabsReadWrite; +module.exports = exports.default; /***/ }), - -/***/ 4692: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { +/* 607 */, +/* 608 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.TwitterApiv2 = void 0; -const globals_1 = __nccwpck_require__(3444); -const client_v2_write_1 = __importDefault(__nccwpck_require__(5587)); -const client_v2_labs_1 = __importDefault(__nccwpck_require__(1204)); -/** - * Twitter v2 client with all rights (read/write/DMs) - */ -class TwitterApiv2 extends client_v2_write_1.default { - constructor() { - super(...arguments); - this._prefix = globals_1.API_V2_PREFIX; - } - /* Sub-clients */ - /** - * Get a client with read/write rights. - */ - get readWrite() { - return this; - } - /** - * Get a client for v2 labs endpoints. - */ - get labs() { - if (this._labs) - return this._labs; - return this._labs = new client_v2_labs_1.default(this); - } -} -exports.TwitterApiv2 = TwitterApiv2; -exports["default"] = TwitterApiv2; +var _interopRequireDefault = __webpack_require__(764); -/***/ }), +__webpack_require__(493); -/***/ 7318: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; -"use strict"; +var _extractUrlsWithIndices = _interopRequireDefault(__webpack_require__(257)); -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -const client_subclient_1 = __importDefault(__nccwpck_require__(3810)); -const globals_1 = __nccwpck_require__(3444); -const paginators_1 = __nccwpck_require__(5814); -const client_v2_labs_read_1 = __importDefault(__nccwpck_require__(5248)); -const user_paginator_v2_1 = __nccwpck_require__(2178); -const helpers_1 = __nccwpck_require__(1120); -/** - * Base Twitter v2 client with only read right. - */ -class TwitterApiv2ReadOnly extends client_subclient_1.default { - constructor() { - super(...arguments); - this._prefix = globals_1.API_V2_PREFIX; - } - /* Sub-clients */ - /** - * Get a client for v2 labs endpoints. - */ - get labs() { - if (this._labs) - return this._labs; - return this._labs = new client_v2_labs_read_1.default(this); - } - async search(queryOrOptions, options = {}) { - const query = typeof queryOrOptions === 'string' ? queryOrOptions : undefined; - const realOptions = typeof queryOrOptions === 'object' && queryOrOptions !== null ? queryOrOptions : options; - const queryParams = { ...realOptions, query }; - const initialRq = await this.get('tweets/search/recent', queryParams, { fullResponse: true }); - return new paginators_1.TweetSearchRecentV2Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams, - }); - } - /** - * The full-archive search endpoint returns the complete history of public Tweets matching a search query; - * since the first Tweet was created March 26, 2006. - * - * This endpoint is only available to those users who have been approved for the Academic Research product track. - * https://developer.twitter.com/en/docs/twitter-api/tweets/search/api-reference/get-tweets-search-all - */ - async searchAll(query, options = {}) { - const queryParams = { ...options, query }; - const initialRq = await this.get('tweets/search/all', queryParams, { fullResponse: true }); - return new paginators_1.TweetSearchAllV2Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams, - }); - } - /** - * Returns a variety of information about a single Tweet specified by the requested ID. - * https://developer.twitter.com/en/docs/twitter-api/tweets/lookup/api-reference/get-tweets-id - * - * OAuth2 scope: `users.read`, `tweet.read` - */ - singleTweet(tweetId, options = {}) { - return this.get('tweets/:id', options, { params: { id: tweetId } }); - } - /** - * Returns a variety of information about tweets specified by list of IDs. - * https://developer.twitter.com/en/docs/twitter-api/tweets/lookup/api-reference/get-tweets - * - * OAuth2 scope: `users.read`, `tweet.read` - */ - tweets(tweetIds, options = {}) { - return this.get('tweets', { ids: tweetIds, ...options }); - } - /** - * The recent Tweet counts endpoint returns count of Tweets from the last seven days that match a search query. - * OAuth2 Bearer auth only. - * https://developer.twitter.com/en/docs/twitter-api/tweets/counts/api-reference/get-tweets-counts-recent - */ - tweetCountRecent(query, options = {}) { - return this.get('tweets/counts/recent', { query, ...options }); - } - /** - * This endpoint is only available to those users who have been approved for the Academic Research product track. - * The full-archive search endpoint returns the complete history of public Tweets matching a search query; - * since the first Tweet was created March 26, 2006. - * OAuth2 Bearer auth only. - * **This endpoint has pagination, yet it is not supported by bundled paginators. Use `next_token` to fetch next page.** - * https://developer.twitter.com/en/docs/twitter-api/tweets/counts/api-reference/get-tweets-counts-all - */ - tweetCountAll(query, options = {}) { - return this.get('tweets/counts/all', { query, ...options }); - } - async tweetRetweetedBy(tweetId, options = {}) { - const { asPaginator, ...parameters } = options; - const initialRq = await this.get('tweets/:id/retweeted_by', parameters, { - fullResponse: true, - params: { id: tweetId }, - }); - if (!asPaginator) { - return initialRq.data; - } - return new user_paginator_v2_1.TweetRetweetersUsersV2Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams: parameters, - sharedParams: { id: tweetId }, - }); - } - async tweetLikedBy(tweetId, options = {}) { - const { asPaginator, ...parameters } = options; - const initialRq = await this.get('tweets/:id/liking_users', parameters, { - fullResponse: true, - params: { id: tweetId }, - }); - if (!asPaginator) { - return initialRq.data; - } - return new user_paginator_v2_1.TweetLikingUsersV2Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams: parameters, - sharedParams: { id: tweetId }, - }); - } - /** - * Allows you to retrieve a collection of the most recent Tweets and Retweets posted by you and users you follow, also known as home timeline. - * This endpoint returns up to the last 3200 Tweets. - * https://developer.twitter.com/en/docs/twitter-api/tweets/timelines/api-reference/get-users-id-reverse-chronological - * - * OAuth 2 scopes: `tweet.read` `users.read` - */ - async homeTimeline(options = {}) { - const meUser = await this.getCurrentUserV2Object(); - const initialRq = await this.get('users/:id/timelines/reverse_chronological', options, { - fullResponse: true, - params: { id: meUser.data.id }, - }); - return new paginators_1.TweetHomeTimelineV2Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams: options, - sharedParams: { id: meUser.data.id }, - }); - } - /** - * Returns Tweets composed by a single user, specified by the requested user ID. - * By default, the most recent ten Tweets are returned per request. - * Using pagination, the most recent 3,200 Tweets can be retrieved. - * https://developer.twitter.com/en/docs/twitter-api/tweets/timelines/api-reference/get-users-id-tweets - */ - async userTimeline(userId, options = {}) { - const initialRq = await this.get('users/:id/tweets', options, { - fullResponse: true, - params: { id: userId }, - }); - return new paginators_1.TweetUserTimelineV2Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams: options, - sharedParams: { id: userId }, - }); - } - /** - * Returns Tweets mentioning a single user specified by the requested user ID. - * By default, the most recent ten Tweets are returned per request. - * Using pagination, up to the most recent 800 Tweets can be retrieved. - * https://developer.twitter.com/en/docs/twitter-api/tweets/timelines/api-reference/get-users-id-mentions - */ - async userMentionTimeline(userId, options = {}) { - const initialRq = await this.get('users/:id/mentions', options, { - fullResponse: true, - params: { id: userId }, - }); - return new paginators_1.TweetUserMentionTimelineV2Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams: options, - sharedParams: { id: userId }, - }); - } - /** - * Returns Quote Tweets for a Tweet specified by the requested Tweet ID. - * https://developer.twitter.com/en/docs/twitter-api/tweets/quote-tweets/api-reference/get-tweets-id-quote_tweets - * - * OAuth2 scopes: `users.read` `tweet.read` - */ - async quotes(tweetId, options = {}) { - const initialRq = await this.get('tweets/:id/quote_tweets', options, { - fullResponse: true, - params: { id: tweetId }, - }); - return new paginators_1.QuotedTweetsTimelineV2Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams: options, - sharedParams: { id: tweetId }, - }); - } - /* Bookmarks */ - /** - * Allows you to get information about a authenticated user’s 800 most recent bookmarked Tweets. - * https://developer.twitter.com/en/docs/twitter-api/tweets/bookmarks/api-reference/get-users-id-bookmarks - * - * OAuth2 scopes: `users.read` `tweet.read` `bookmark.read` - */ - async bookmarks(options = {}) { - const user = await this.getCurrentUserV2Object(); - const initialRq = await this.get('users/:id/bookmarks', options, { - fullResponse: true, - params: { id: user.data.id }, - }); - return new paginators_1.TweetBookmarksTimelineV2Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams: options, - sharedParams: { id: user.data.id }, - }); - } - /* Users */ - /** - * Returns information about an authorized user. - * https://developer.twitter.com/en/docs/twitter-api/users/lookup/api-reference/get-users-me - * - * OAuth2 scopes: `tweet.read` & `users.read` - */ - me(options = {}) { - return this.get('users/me', options); - } - /** - * Returns a variety of information about a single user specified by the requested ID. - * https://developer.twitter.com/en/docs/twitter-api/users/lookup/api-reference/get-users-id - */ - user(userId, options = {}) { - return this.get('users/:id', options, { params: { id: userId } }); - } - /** - * Returns a variety of information about one or more users specified by the requested IDs. - * https://developer.twitter.com/en/docs/twitter-api/users/lookup/api-reference/get-users - */ - users(userIds, options = {}) { - const ids = Array.isArray(userIds) ? userIds.join(',') : userIds; - return this.get('users', { ...options, ids }); - } - /** - * Returns a variety of information about a single user specified by their username. - * https://developer.twitter.com/en/docs/twitter-api/users/lookup/api-reference/get-users-by-username-username - */ - userByUsername(username, options = {}) { - return this.get('users/by/username/:username', options, { params: { username } }); - } - /** - * Returns a variety of information about one or more users specified by their usernames. - * https://developer.twitter.com/en/docs/twitter-api/users/lookup/api-reference/get-users-by - * - * OAuth2 scope: `users.read`, `tweet.read` - */ - usersByUsernames(usernames, options = {}) { - usernames = Array.isArray(usernames) ? usernames.join(',') : usernames; - return this.get('users/by', { ...options, usernames }); - } - async followers(userId, options = {}) { - const { asPaginator, ...parameters } = options; - const params = { id: userId }; - if (!asPaginator) { - return this.get('users/:id/followers', parameters, { params }); - } - const initialRq = await this.get('users/:id/followers', parameters, { fullResponse: true, params }); - return new user_paginator_v2_1.UserFollowersV2Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams: parameters, - sharedParams: params, - }); - } - async following(userId, options = {}) { - const { asPaginator, ...parameters } = options; - const params = { id: userId }; - if (!asPaginator) { - return this.get('users/:id/following', parameters, { params }); - } - const initialRq = await this.get('users/:id/following', parameters, { fullResponse: true, params }); - return new user_paginator_v2_1.UserFollowingV2Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams: parameters, - sharedParams: params, - }); - } - /** - * Allows you to get information about a user’s liked Tweets. - * https://developer.twitter.com/en/docs/twitter-api/tweets/likes/api-reference/get-users-id-liked_tweets - */ - async userLikedTweets(userId, options = {}) { - const params = { id: userId }; - const initialRq = await this.get('users/:id/liked_tweets', options, { fullResponse: true, params }); - return new paginators_1.TweetV2UserLikedTweetsPaginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams: { ...options }, - sharedParams: params, - }); - } - /** - * Returns a list of users who are blocked by the authenticating user. - * https://developer.twitter.com/en/docs/twitter-api/users/blocks/api-reference/get-users-blocking - */ - async userBlockingUsers(userId, options = {}) { - const params = { id: userId }; - const initialRq = await this.get('users/:id/blocking', options, { fullResponse: true, params }); - return new user_paginator_v2_1.UserBlockingUsersV2Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams: { ...options }, - sharedParams: params, - }); - } - /** - * Returns a list of users who are muted by the authenticating user. - * https://developer.twitter.com/en/docs/twitter-api/users/mutes/api-reference/get-users-muting - */ - async userMutingUsers(userId, options = {}) { - const params = { id: userId }; - const initialRq = await this.get('users/:id/muting', options, { fullResponse: true, params }); - return new user_paginator_v2_1.UserMutingUsersV2Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams: { ...options }, - sharedParams: params, - }); - } - /* Lists */ - /** - * Returns the details of a specified List. - * https://developer.twitter.com/en/docs/twitter-api/lists/list-lookup/api-reference/get-lists-id - */ - list(id, options = {}) { - return this.get('lists/:id', options, { params: { id } }); - } - /** - * Returns all Lists owned by the specified user. - * https://developer.twitter.com/en/docs/twitter-api/lists/list-lookup/api-reference/get-users-id-owned_lists - */ - async listsOwned(userId, options = {}) { - const params = { id: userId }; - const initialRq = await this.get('users/:id/owned_lists', options, { fullResponse: true, params }); - return new paginators_1.UserOwnedListsV2Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams: { ...options }, - sharedParams: params, - }); - } - /** - * Returns all Lists a specified user is a member of. - * https://developer.twitter.com/en/docs/twitter-api/lists/list-members/api-reference/get-users-id-list_memberships - */ - async listMemberships(userId, options = {}) { - const params = { id: userId }; - const initialRq = await this.get('users/:id/list_memberships', options, { fullResponse: true, params }); - return new paginators_1.UserListMembershipsV2Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams: { ...options }, - sharedParams: params, - }); - } - /** - * Returns all Lists a specified user follows. - * https://developer.twitter.com/en/docs/twitter-api/lists/list-follows/api-reference/get-users-id-followed_lists - */ - async listFollowed(userId, options = {}) { - const params = { id: userId }; - const initialRq = await this.get('users/:id/followed_lists', options, { fullResponse: true, params }); - return new paginators_1.UserListFollowedV2Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams: { ...options }, - sharedParams: params, - }); - } - /** - * Returns a list of Tweets from the specified List. - * https://developer.twitter.com/en/docs/twitter-api/lists/list-tweets/api-reference/get-lists-id-tweets - */ - async listTweets(listId, options = {}) { - const params = { id: listId }; - const initialRq = await this.get('lists/:id/tweets', options, { fullResponse: true, params }); - return new paginators_1.TweetV2ListTweetsPaginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams: { ...options }, - sharedParams: params, - }); - } - /** - * Returns a list of users who are members of the specified List. - * https://developer.twitter.com/en/docs/twitter-api/lists/list-members/api-reference/get-lists-id-members - */ - async listMembers(listId, options = {}) { - const params = { id: listId }; - const initialRq = await this.get('lists/:id/members', options, { fullResponse: true, params }); - return new user_paginator_v2_1.UserListMembersV2Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams: { ...options }, - sharedParams: params, - }); - } - /** - * Returns a list of users who are followers of the specified List. - * https://developer.twitter.com/en/docs/twitter-api/lists/list-follows/api-reference/get-lists-id-followers - */ - async listFollowers(listId, options = {}) { - const params = { id: listId }; - const initialRq = await this.get('lists/:id/followers', options, { fullResponse: true, params }); - return new user_paginator_v2_1.UserListFollowersV2Paginator({ - realData: initialRq.data, - rateLimit: initialRq.rateLimit, - instance: this, - queryParams: { ...options }, - sharedParams: params, - }); - } - /* Spaces */ - /** - * Get a single space by ID. - * https://developer.twitter.com/en/docs/twitter-api/spaces/lookup/api-reference/get-spaces-id - * - * OAuth2 scopes: `tweet.read`, `users.read`, `space.read`. - */ - space(spaceId, options = {}) { - return this.get('spaces/:id', options, { params: { id: spaceId } }); - } - /** - * Get spaces using their IDs. - * https://developer.twitter.com/en/docs/twitter-api/spaces/lookup/api-reference/get-spaces - * - * OAuth2 scopes: `tweet.read`, `users.read`, `space.read`. - */ - spaces(spaceIds, options = {}) { - return this.get('spaces', { ids: spaceIds, ...options }); - } - /** - * Get spaces using their creator user ID(s). (no pagination available) - * https://developer.twitter.com/en/docs/twitter-api/spaces/lookup/api-reference/get-spaces-by-creator-ids - * - * OAuth2 scopes: `tweet.read`, `users.read`, `space.read`. - */ - spacesByCreators(creatorIds, options = {}) { - return this.get('spaces/by/creator_ids', { user_ids: creatorIds, ...options }); - } - /** - * Search through spaces using multiple params. (no pagination available) - * https://developer.twitter.com/en/docs/twitter-api/spaces/search/api-reference/get-spaces-search - */ - searchSpaces(options) { - return this.get('spaces/search', options); - } - /** - * Returns a list of user who purchased a ticket to the requested Space. - * You must authenticate the request using the Access Token of the creator of the requested Space. - * - * **OAuth 2.0 Access Token required** - * - * https://developer.twitter.com/en/docs/twitter-api/spaces/lookup/api-reference/get-spaces-id-buyers - * - * OAuth2 scopes: `tweet.read`, `users.read`, `space.read`. - */ - spaceBuyers(spaceId, options = {}) { - return this.get('spaces/:id/buyers', options, { params: { id: spaceId } }); - } - searchStream({ autoConnect, ...options } = {}) { - return this.getStream('tweets/search/stream', options, { payloadIsError: helpers_1.isTweetStreamV2ErrorPayload, autoConnect }); - } - /** - * Return a list of rules currently active on the streaming endpoint, either as a list or individually. - * https://developer.twitter.com/en/docs/twitter-api/tweets/filtered-stream/api-reference/get-tweets-search-stream-rules - */ - streamRules(options = {}) { - return this.get('tweets/search/stream/rules', options); - } - updateStreamRules(options, query = {}) { - return this.post('tweets/search/stream/rules', options, { query }); - } - sampleStream({ autoConnect, ...options } = {}) { - return this.getStream('tweets/sample/stream', options, { payloadIsError: helpers_1.isTweetStreamV2ErrorPayload, autoConnect }); - } - /* Batch compliance */ - /** - * Returns a list of recent compliance jobs. - * https://developer.twitter.com/en/docs/twitter-api/compliance/batch-compliance/api-reference/get-compliance-jobs - */ - complianceJobs(options) { - return this.get('compliance/jobs', options); - } - /** - * Get a single compliance job with the specified ID. - * https://developer.twitter.com/en/docs/twitter-api/compliance/batch-compliance/api-reference/get-compliance-jobs-id - */ - complianceJob(jobId) { - return this.get('compliance/jobs/:id', undefined, { params: { id: jobId } }); - } - /** - * Creates a new compliance job for Tweet IDs or user IDs, send your file, await result and parse it into an array. - * You can run one batch job at a time. Returns the created job, but **not the job result!**. - * - * You can obtain the result (**after job is completed**) with `.complianceJobResult`. - * https://developer.twitter.com/en/docs/twitter-api/compliance/batch-compliance/api-reference/post-compliance-jobs - */ - async sendComplianceJob(jobParams) { - const job = await this.post('compliance/jobs', { type: jobParams.type, name: jobParams.name }); - // Send the IDs - const rawIdsBody = jobParams.ids instanceof Buffer ? jobParams.ids : Buffer.from(jobParams.ids.join('\n')); - // Upload the IDs - await this.put(job.data.upload_url, rawIdsBody, { - forceBodyMode: 'raw', - enableAuth: false, - headers: { 'Content-Type': 'text/plain' }, - prefix: '', - }); - return job; - } - /** - * Get the result of a running or completed job, obtained through `.complianceJob`, `.complianceJobs` or `.sendComplianceJob`. - * If job is still running (`in_progress`), it will await until job is completed. **This could be quite long!** - * https://developer.twitter.com/en/docs/twitter-api/compliance/batch-compliance/api-reference/post-compliance-jobs - */ - async complianceJobResult(job) { - let runningJob = job; - while (runningJob.status !== 'complete') { - if (runningJob.status === 'expired' || runningJob.status === 'failed') { - throw new Error('Job failed to be completed.'); - } - await new Promise(resolve => setTimeout(resolve, 3500)); - runningJob = (await this.complianceJob(job.id)).data; - } - // Download and parse result - const result = await this.get(job.download_url, undefined, { - enableAuth: false, - prefix: '', - }); - return result - .trim() - .split('\n') - .filter(line => line) - .map(line => JSON.parse(line)); - } +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text, options) { + var urlsOnly = []; + var urlsWithIndices = (0, _extractUrlsWithIndices["default"])(text, options); + + for (var i = 0; i < urlsWithIndices.length; i++) { + urlsOnly.push(urlsWithIndices[i].url); + } + + return urlsOnly; } -exports["default"] = TwitterApiv2ReadOnly; +module.exports = exports.default; /***/ }), +/* 609 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 5587: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { +var dP = __webpack_require__(973); +var createDesc = __webpack_require__(690); +module.exports = __webpack_require__(843) ? function (object, key, value) { + return dP.f(object, key, createDesc(1, value)); +} : function (object, key, value) { + object[key] = value; + return object; +}; + + +/***/ }), +/* 610 */ +/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { "use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -const globals_1 = __nccwpck_require__(3444); -const client_v2_read_1 = __importDefault(__nccwpck_require__(7318)); -const client_v2_labs_write_1 = __importDefault(__nccwpck_require__(8191)); -/** - * Base Twitter v2 client with read/write rights. - */ -class TwitterApiv2ReadWrite extends client_v2_read_1.default { - constructor() { - super(...arguments); - this._prefix = globals_1.API_V2_PREFIX; - } - /* Sub-clients */ - /** - * Get a client with only read rights. - */ - get readOnly() { - return this; - } - /** - * Get a client for v2 labs endpoints. - */ - get labs() { - if (this._labs) - return this._labs; - return this._labs = new client_v2_labs_write_1.default(this); - } - /* Tweets */ - /** - * Hides or unhides a reply to a Tweet. - * https://developer.twitter.com/en/docs/twitter-api/tweets/hide-replies/api-reference/put-tweets-id-hidden - */ - hideReply(tweetId, makeHidden) { - return this.put('tweets/:id/hidden', { hidden: makeHidden }, { params: { id: tweetId } }); - } - /** - * Causes the user ID identified in the path parameter to Like the target Tweet. - * https://developer.twitter.com/en/docs/twitter-api/tweets/likes/api-reference/post-users-user_id-likes - * - * **Note**: You must specify the currently logged user ID ; you can obtain it through v1.1 API. - */ - like(loggedUserId, targetTweetId) { - return this.post('users/:id/likes', { tweet_id: targetTweetId }, { params: { id: loggedUserId } }); - } - /** - * Allows a user or authenticated user ID to unlike a Tweet. - * The request succeeds with no action when the user sends a request to a user they're not liking the Tweet or have already unliked the Tweet. - * https://developer.twitter.com/en/docs/twitter-api/tweets/likes/api-reference/delete-users-id-likes-tweet_id - * - * **Note**: You must specify the currently logged user ID ; you can obtain it through v1.1 API. - */ - unlike(loggedUserId, targetTweetId) { - return this.delete('users/:id/likes/:tweet_id', undefined, { - params: { id: loggedUserId, tweet_id: targetTweetId }, - }); - } - /** - * Causes the user ID identified in the path parameter to Retweet the target Tweet. - * https://developer.twitter.com/en/docs/twitter-api/tweets/retweets/api-reference/post-users-id-retweets - * - * **Note**: You must specify the currently logged user ID ; you can obtain it through v1.1 API. - */ - retweet(loggedUserId, targetTweetId) { - return this.post('users/:id/retweets', { tweet_id: targetTweetId }, { params: { id: loggedUserId } }); - } - /** - * Allows a user or authenticated user ID to remove the Retweet of a Tweet. - * The request succeeds with no action when the user sends a request to a user they're not Retweeting the Tweet or have already removed the Retweet of. - * https://developer.twitter.com/en/docs/twitter-api/tweets/retweets/api-reference/delete-users-id-retweets-tweet_id - * - * **Note**: You must specify the currently logged user ID ; you can obtain it through v1.1 API. - */ - unretweet(loggedUserId, targetTweetId) { - return this.delete('users/:id/retweets/:tweet_id', undefined, { - params: { id: loggedUserId, tweet_id: targetTweetId }, - }); - } - tweet(status, payload = {}) { - if (typeof status === 'object') { - payload = status; - } - else { - payload = { text: status, ...payload }; - } - return this.post('tweets', payload); - } - /** - * Reply to a Tweet on behalf of an authenticated user. - * https://developer.twitter.com/en/docs/twitter-api/tweets/manage-tweets/api-reference/post-tweets - */ - reply(status, toTweetId, payload = {}) { - var _a; - const reply = { in_reply_to_tweet_id: toTweetId, ...(_a = payload.reply) !== null && _a !== void 0 ? _a : {} }; - return this.post('tweets', { text: status, ...payload, reply }); - } - /** - * Quote an existing Tweet on behalf of an authenticated user. - * https://developer.twitter.com/en/docs/twitter-api/tweets/manage-tweets/api-reference/post-tweets - */ - quote(status, quotedTweetId, payload = {}) { - return this.tweet(status, { ...payload, quote_tweet_id: quotedTweetId }); - } - /** - * Post a series of tweets. - * https://developer.twitter.com/en/docs/twitter-api/tweets/manage-tweets/api-reference/post-tweets - */ - async tweetThread(tweets) { - var _a, _b; - const postedTweets = []; - for (const tweet of tweets) { - // Retrieve the last sent tweet - const lastTweet = postedTweets.length ? postedTweets[postedTweets.length - 1] : null; - // Build the tweet query params - const queryParams = { ...(typeof tweet === 'string' ? ({ text: tweet }) : tweet) }; - // Reply to an existing tweet if needed - const inReplyToId = lastTweet ? lastTweet.data.id : (_a = queryParams.reply) === null || _a === void 0 ? void 0 : _a.in_reply_to_tweet_id; - const status = (_b = queryParams.text) !== null && _b !== void 0 ? _b : ''; - if (inReplyToId) { - postedTweets.push(await this.reply(status, inReplyToId, queryParams)); - } - else { - postedTweets.push(await this.tweet(status, queryParams)); - } - } - return postedTweets; - } - /** - * Allows a user or authenticated user ID to delete a Tweet - * https://developer.twitter.com/en/docs/twitter-api/tweets/manage-tweets/api-reference/delete-tweets-id - */ - deleteTweet(tweetId) { - return this.delete('tweets/:id', undefined, { - params: { - id: tweetId, - }, - }); - } - /* Bookmarks */ - /** - * Causes the user ID of an authenticated user identified in the path parameter to Bookmark the target Tweet provided in the request body. - * https://developer.twitter.com/en/docs/twitter-api/tweets/bookmarks/api-reference/post-users-id-bookmarks - * - * OAuth2 scopes: `users.read` `tweet.read` `bookmark.write` - */ - async bookmark(tweetId) { - const user = await this.getCurrentUserV2Object(); - return this.post('users/:id/bookmarks', { tweet_id: tweetId }, { params: { id: user.data.id } }); - } - /** - * Allows a user or authenticated user ID to remove a Bookmark of a Tweet. - * https://developer.twitter.com/en/docs/twitter-api/tweets/bookmarks/api-reference/delete-users-id-bookmarks-tweet_id - * - * OAuth2 scopes: `users.read` `tweet.read` `bookmark.write` - */ - async deleteBookmark(tweetId) { - const user = await this.getCurrentUserV2Object(); - return this.delete('users/:id/bookmarks/:tweet_id', undefined, { params: { id: user.data.id, tweet_id: tweetId } }); - } - /* Users */ - /** - * Allows a user ID to follow another user. - * If the target user does not have public Tweets, this endpoint will send a follow request. - * https://developer.twitter.com/en/docs/twitter-api/users/follows/api-reference/post-users-source_user_id-following - * - * OAuth2 scope: `follows.write` - * - * **Note**: You must specify the currently logged user ID ; you can obtain it through v1.1 API. - */ - follow(loggedUserId, targetUserId) { - return this.post('users/:id/following', { target_user_id: targetUserId }, { params: { id: loggedUserId } }); - } - /** - * Allows a user ID to unfollow another user. - * https://developer.twitter.com/en/docs/twitter-api/users/follows/api-reference/delete-users-source_id-following - * - * OAuth2 scope: `follows.write` - * - * **Note**: You must specify the currently logged user ID ; you can obtain it through v1.1 API. - */ - unfollow(loggedUserId, targetUserId) { - return this.delete('users/:source_user_id/following/:target_user_id', undefined, { - params: { source_user_id: loggedUserId, target_user_id: targetUserId }, - }); - } - /** - * Causes the user (in the path) to block the target user. - * The user (in the path) must match the user context authorizing the request. - * https://developer.twitter.com/en/docs/twitter-api/users/blocks/api-reference/post-users-user_id-blocking - * - * **Note**: You must specify the currently logged user ID ; you can obtain it through v1.1 API. - */ - block(loggedUserId, targetUserId) { - return this.post('users/:id/blocking', { target_user_id: targetUserId }, { params: { id: loggedUserId } }); - } - /** - * Allows a user or authenticated user ID to unblock another user. - * https://developer.twitter.com/en/docs/twitter-api/users/blocks/api-reference/delete-users-user_id-blocking - * - * **Note**: You must specify the currently logged user ID ; you can obtain it through v1.1 API. - */ - unblock(loggedUserId, targetUserId) { - return this.delete('users/:source_user_id/blocking/:target_user_id', undefined, { - params: { source_user_id: loggedUserId, target_user_id: targetUserId }, - }); - } - /** - * Allows an authenticated user ID to mute the target user. - * https://developer.twitter.com/en/docs/twitter-api/users/mutes/api-reference/post-users-user_id-muting - * - * **Note**: You must specify the currently logged user ID ; you can obtain it through v1.1 API. - */ - mute(loggedUserId, targetUserId) { - return this.post('users/:id/muting', { target_user_id: targetUserId }, { params: { id: loggedUserId } }); - } - /** - * Allows an authenticated user ID to unmute the target user. - * The request succeeds with no action when the user sends a request to a user they're not muting or have already unmuted. - * https://developer.twitter.com/en/docs/twitter-api/users/mutes/api-reference/delete-users-user_id-muting - * - * **Note**: You must specify the currently logged user ID ; you can obtain it through v1.1 API. - */ - unmute(loggedUserId, targetUserId) { - return this.delete('users/:source_user_id/muting/:target_user_id', undefined, { - params: { source_user_id: loggedUserId, target_user_id: targetUserId }, - }); - } - /* Lists */ - /** - * Creates a new list for the authenticated user. - * https://developer.twitter.com/en/docs/twitter-api/lists/manage-lists/api-reference/post-lists - */ - createList(options) { - return this.post('lists', options); - } - /** - * Updates the specified list. The authenticated user must own the list to be able to update it. - * https://developer.twitter.com/en/docs/twitter-api/lists/manage-lists/api-reference/put-lists-id - */ - updateList(listId, options = {}) { - return this.put('lists/:id', options, { params: { id: listId } }); - } - /** - * Deletes the specified list. The authenticated user must own the list to be able to destroy it. - * https://developer.twitter.com/en/docs/twitter-api/lists/manage-lists/api-reference/delete-lists-id - */ - removeList(listId) { - return this.delete('lists/:id', undefined, { params: { id: listId } }); - } - /** - * Adds a member to a list. - * https://developer.twitter.com/en/docs/twitter-api/lists/manage-lists/api-reference/post-lists-id-members - */ - addListMember(listId, userId) { - return this.post('lists/:id/members', { user_id: userId }, { params: { id: listId } }); - } - /** - * Remember a member to a list. - * https://developer.twitter.com/en/docs/twitter-api/lists/manage-lists/api-reference/delete-lists-id-members-user_id - */ - removeListMember(listId, userId) { - return this.delete('lists/:id/members/:user_id', undefined, { params: { id: listId, user_id: userId } }); - } - /** - * Subscribes the authenticated user to the specified list. - * https://developer.twitter.com/en/docs/twitter-api/lists/manage-lists/api-reference/post-users-id-followed-lists - */ - subscribeToList(loggedUserId, listId) { - return this.post('users/:id/followed_lists', { list_id: listId }, { params: { id: loggedUserId } }); - } - /** - * Unsubscribes the authenticated user to the specified list. - * https://developer.twitter.com/en/docs/twitter-api/lists/manage-lists/api-reference/delete-users-id-followed-lists-list_id - */ - unsubscribeOfList(loggedUserId, listId) { - return this.delete('users/:id/followed_lists/:list_id', undefined, { params: { id: loggedUserId, list_id: listId } }); - } - /** - * Enables the authenticated user to pin a List. - * https://developer.twitter.com/en/docs/twitter-api/lists/manage-lists/api-reference/post-users-id-pinned-lists - */ - pinList(loggedUserId, listId) { - return this.post('users/:id/pinned_lists', { list_id: listId }, { params: { id: loggedUserId } }); - } - /** - * Enables the authenticated user to unpin a List. - * https://developer.twitter.com/en/docs/twitter-api/lists/manage-lists/api-reference/delete-users-id-pinned-lists-list_id - */ - unpinList(loggedUserId, listId) { - return this.delete('users/:id/pinned_lists/:list_id', undefined, { params: { id: loggedUserId, list_id: listId } }); +var ctx = __webpack_require__(743); +var $export = __webpack_require__(195); +var toObject = __webpack_require__(230); +var call = __webpack_require__(577); +var isArrayIter = __webpack_require__(993); +var toLength = __webpack_require__(853); +var createProperty = __webpack_require__(393); +var getIterFn = __webpack_require__(474); + +$export($export.S + $export.F * !__webpack_require__(588)(function (iter) { Array.from(iter); }), 'Array', { + // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined) + from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) { + var O = toObject(arrayLike); + var C = typeof this == 'function' ? this : Array; + var aLen = arguments.length; + var mapfn = aLen > 1 ? arguments[1] : undefined; + var mapping = mapfn !== undefined; + var index = 0; + var iterFn = getIterFn(O); + var length, result, step, iterator; + if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2); + // if object isn't iterable or it's array with default iterator - use simple case + if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) { + for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) { + createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value); + } + } else { + length = toLength(O.length); + for (result = new C(length); length > index; index++) { + createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]); + } } + result.length = index; + return result; + } +}); + + +/***/ }), +/* 611 */, +/* 612 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); + +var _validateUrlDomain = _interopRequireDefault(__webpack_require__(985)); + +var _validateUrlIp = _interopRequireDefault(__webpack_require__(476)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlHost = (0, _regexSupplant["default"])('(?:' + '#{validateUrlIp}|' + '#{validateUrlDomain}' + ')', { + validateUrlIp: _validateUrlIp["default"], + validateUrlDomain: _validateUrlDomain["default"] +}, 'i'); +var _default = validateUrlHost; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 613 */, +/* 614 */ +/***/ (function(module) { + +module.exports = require("events"); + +/***/ }), +/* 615 */, +/* 616 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _hashSigns = _interopRequireDefault(__webpack_require__(617)); + +var _hashtagAlpha = _interopRequireDefault(__webpack_require__(62)); + +var _hashtagAlphaNumeric = _interopRequireDefault(__webpack_require__(965)); + +var _hashtagBoundary = _interopRequireDefault(__webpack_require__(38)); + +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validHashtag = (0, _regexSupplant["default"])(/(#{hashtagBoundary})(#{hashSigns})(?!\uFE0F|\u20E3)(#{hashtagAlphaNumeric}*#{hashtagAlpha}#{hashtagAlphaNumeric}*)/gi, { + hashtagBoundary: _hashtagBoundary["default"], + hashSigns: _hashSigns["default"], + hashtagAlphaNumeric: _hashtagAlphaNumeric["default"], + hashtagAlpha: _hashtagAlpha["default"] +}); +var _default = validHashtag; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 617 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var hashSigns = /[##]/; +var _default = hashSigns; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 618 */, +/* 619 */, +/* 620 */, +/* 621 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +var store = __webpack_require__(881)('wks'); +var uid = __webpack_require__(750); +var Symbol = __webpack_require__(300).Symbol; +var USE_SYMBOL = typeof Symbol == 'function'; + +var $exports = module.exports = function (name) { + return store[name] || (store[name] = + USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); +}; + +$exports.store = store; + + +/***/ }), +/* 622 */ +/***/ (function(module) { + +module.exports = require("path"); + +/***/ }), +/* 623 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +module.exports = { + afterRequest: __webpack_require__(672), + beforeRequest: __webpack_require__(318), + browser: __webpack_require__(222), + cache: __webpack_require__(901), + content: __webpack_require__(411), + cookie: __webpack_require__(326), + creator: __webpack_require__(776), + entry: __webpack_require__(96), + har: __webpack_require__(385), + header: __webpack_require__(841), + log: __webpack_require__(465), + page: __webpack_require__(744), + pageTimings: __webpack_require__(679), + postData: __webpack_require__(740), + query: __webpack_require__(335), + request: __webpack_require__(133), + response: __webpack_require__(226), + timings: __webpack_require__(758) } -exports["default"] = TwitterApiv2ReadWrite; /***/ }), +/* 624 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 876: -/***/ ((__unused_webpack_module, exports) => { +// Copyright 2018 Joyent, Inc. -"use strict"; +module.exports = { + read: read, + write: write +}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.TwitterV2IncludesHelper = void 0; -/** - * Provide helpers for `.includes` of a v2 API result. - * Needed expansions for a method to work are specified (*`like this`*). - */ -class TwitterV2IncludesHelper { - constructor(result) { - this.result = result; - } - /* Tweets */ - get tweets() { - return TwitterV2IncludesHelper.tweets(this.result); - } - static tweets(result) { - var _a, _b; - return (_b = (_a = result.includes) === null || _a === void 0 ? void 0 : _a.tweets) !== null && _b !== void 0 ? _b : []; - } - tweetById(id) { - return TwitterV2IncludesHelper.tweetById(this.result, id); - } - static tweetById(result, id) { - return this.tweets(result).find(tweet => tweet.id === id); - } - /** Retweet associated with the given tweet (*`referenced_tweets.id`*) */ - retweet(tweet) { - return TwitterV2IncludesHelper.retweet(this.result, tweet); - } - /** Retweet associated with the given tweet (*`referenced_tweets.id`*) */ - static retweet(result, tweet) { - var _a; - const retweetIds = ((_a = tweet.referenced_tweets) !== null && _a !== void 0 ? _a : []) - .filter(ref => ref.type === 'retweeted') - .map(ref => ref.id); - return this.tweets(result).find(t => retweetIds.includes(t.id)); - } - /** Quoted tweet associated with the given tweet (*`referenced_tweets.id`*) */ - quote(tweet) { - return TwitterV2IncludesHelper.quote(this.result, tweet); - } - /** Quoted tweet associated with the given tweet (*`referenced_tweets.id`*) */ - static quote(result, tweet) { - var _a; - const quoteIds = ((_a = tweet.referenced_tweets) !== null && _a !== void 0 ? _a : []) - .filter(ref => ref.type === 'quoted') - .map(ref => ref.id); - return this.tweets(result).find(t => quoteIds.includes(t.id)); - } - /** Tweet whose has been answered by the given tweet (*`referenced_tweets.id`*) */ - repliedTo(tweet) { - return TwitterV2IncludesHelper.repliedTo(this.result, tweet); - } - /** Tweet whose has been answered by the given tweet (*`referenced_tweets.id`*) */ - static repliedTo(result, tweet) { - var _a; - const repliesIds = ((_a = tweet.referenced_tweets) !== null && _a !== void 0 ? _a : []) - .filter(ref => ref.type === 'replied_to') - .map(ref => ref.id); - return this.tweets(result).find(t => repliesIds.includes(t.id)); - } - /** Tweet author user object of the given tweet (*`author_id`* or *`referenced_tweets.id.author_id`*) */ - author(tweet) { - return TwitterV2IncludesHelper.author(this.result, tweet); - } - /** Tweet author user object of the given tweet (*`author_id`* or *`referenced_tweets.id.author_id`*) */ - static author(result, tweet) { - const authorId = tweet.author_id; - return authorId ? this.users(result).find(u => u.id === authorId) : undefined; - } - /** Tweet author user object of the tweet answered by the given tweet (*`in_reply_to_user_id`*) */ - repliedToAuthor(tweet) { - return TwitterV2IncludesHelper.repliedToAuthor(this.result, tweet); - } - /** Tweet author user object of the tweet answered by the given tweet (*`in_reply_to_user_id`*) */ - static repliedToAuthor(result, tweet) { - const inReplyUserId = tweet.in_reply_to_user_id; - return inReplyUserId ? this.users(result).find(u => u.id === inReplyUserId) : undefined; - } - /* Users */ - get users() { - return TwitterV2IncludesHelper.users(this.result); - } - static users(result) { - var _a, _b; - return (_b = (_a = result.includes) === null || _a === void 0 ? void 0 : _a.users) !== null && _b !== void 0 ? _b : []; - } - userById(id) { - return TwitterV2IncludesHelper.userById(this.result, id); - } - static userById(result, id) { - return this.users(result).find(u => u.id === id); - } - /** Pinned tweet of the given user (*`pinned_tweet_id`*) */ - pinnedTweet(user) { - return TwitterV2IncludesHelper.pinnedTweet(this.result, user); - } - /** Pinned tweet of the given user (*`pinned_tweet_id`*) */ - static pinnedTweet(result, user) { - return user.pinned_tweet_id ? this.tweets(result).find(t => t.id === user.pinned_tweet_id) : undefined; - } - /* Medias */ - get media() { - return TwitterV2IncludesHelper.media(this.result); - } - static media(result) { - var _a, _b; - return (_b = (_a = result.includes) === null || _a === void 0 ? void 0 : _a.media) !== null && _b !== void 0 ? _b : []; - } - /** Medias associated with the given tweet (*`attachments.media_keys`*) */ - medias(tweet) { - return TwitterV2IncludesHelper.medias(this.result, tweet); - } - /** Medias associated with the given tweet (*`attachments.media_keys`*) */ - static medias(result, tweet) { - var _a, _b; - const keys = (_b = (_a = tweet.attachments) === null || _a === void 0 ? void 0 : _a.media_keys) !== null && _b !== void 0 ? _b : []; - return this.media(result).filter(m => keys.includes(m.media_key)); - } - /* Polls */ - get polls() { - return TwitterV2IncludesHelper.polls(this.result); - } - static polls(result) { - var _a, _b; - return (_b = (_a = result.includes) === null || _a === void 0 ? void 0 : _a.polls) !== null && _b !== void 0 ? _b : []; - } - /** Poll associated with the given tweet (*`attachments.poll_ids`*) */ - poll(tweet) { - return TwitterV2IncludesHelper.poll(this.result, tweet); - } - /** Poll associated with the given tweet (*`attachments.poll_ids`*) */ - static poll(result, tweet) { - var _a, _b; - const pollIds = (_b = (_a = tweet.attachments) === null || _a === void 0 ? void 0 : _a.poll_ids) !== null && _b !== void 0 ? _b : []; - if (pollIds.length) { - const pollId = pollIds[0]; - return this.polls(result).find(p => p.id === pollId); - } - return undefined; - } - /* Places */ - get places() { - return TwitterV2IncludesHelper.places(this.result); - } - static places(result) { - var _a, _b; - return (_b = (_a = result.includes) === null || _a === void 0 ? void 0 : _a.places) !== null && _b !== void 0 ? _b : []; - } - /** Place associated with the given tweet (*`geo.place_id`*) */ - place(tweet) { - return TwitterV2IncludesHelper.place(this.result, tweet); - } - /** Place associated with the given tweet (*`geo.place_id`*) */ - static place(result, tweet) { - var _a; - const placeId = (_a = tweet.geo) === null || _a === void 0 ? void 0 : _a.place_id; - return placeId ? this.places(result).find(p => p.id === placeId) : undefined; - } - /* Lists */ - /** List owner of the given list (*`owner_id`*) */ - listOwner(list) { - return TwitterV2IncludesHelper.listOwner(this.result, list); - } - /** List owner of the given list (*`owner_id`*) */ - static listOwner(result, list) { - const creatorId = list.owner_id; - return creatorId ? this.users(result).find(p => p.id === creatorId) : undefined; - } - /* Spaces */ - /** Creator of the given space (*`creator_id`*) */ - spaceCreator(space) { - return TwitterV2IncludesHelper.spaceCreator(this.result, space); - } - /** Creator of the given space (*`creator_id`*) */ - static spaceCreator(result, space) { - const creatorId = space.creator_id; - return creatorId ? this.users(result).find(p => p.id === creatorId) : undefined; - } - /** Current hosts of the given space (*`host_ids`*) */ - spaceHosts(space) { - return TwitterV2IncludesHelper.spaceHosts(this.result, space); - } - /** Current hosts of the given space (*`host_ids`*) */ - static spaceHosts(result, space) { - var _a; - const hostIds = (_a = space.host_ids) !== null && _a !== void 0 ? _a : []; - return this.users(result).filter(u => hostIds.includes(u.id)); - } - /** Current speakers of the given space (*`speaker_ids`*) */ - spaceSpeakers(space) { - return TwitterV2IncludesHelper.spaceSpeakers(this.result, space); - } - /** Current speakers of the given space (*`speaker_ids`*) */ - static spaceSpeakers(result, space) { - var _a; - const speakerIds = (_a = space.speaker_ids) !== null && _a !== void 0 ? _a : []; - return this.users(result).filter(u => speakerIds.includes(u.id)); - } - /** Current invited users of the given space (*`invited_user_ids`*) */ - spaceInvitedUsers(space) { - return TwitterV2IncludesHelper.spaceInvitedUsers(this.result, space); - } - /** Current invited users of the given space (*`invited_user_ids`*) */ - static spaceInvitedUsers(result, space) { - var _a; - const invitedUserIds = (_a = space.invited_user_ids) !== null && _a !== void 0 ? _a : []; - return this.users(result).filter(u => invitedUserIds.includes(u.id)); - } +var assert = __webpack_require__(489); +var Buffer = __webpack_require__(726).Buffer; +var rfc4253 = __webpack_require__(538); +var Key = __webpack_require__(500); + +var errors = __webpack_require__(570); + +function read(buf, options) { + var lines = buf.toString('ascii').split(/[\r\n]+/); + var found = false; + var parts; + var si = 0; + while (si < lines.length) { + parts = splitHeader(lines[si++]); + if (parts && + parts[0].toLowerCase() === 'putty-user-key-file-2') { + found = true; + break; + } + } + if (!found) { + throw (new Error('No PuTTY format first line found')); + } + var alg = parts[1]; + + parts = splitHeader(lines[si++]); + assert.equal(parts[0].toLowerCase(), 'encryption'); + + parts = splitHeader(lines[si++]); + assert.equal(parts[0].toLowerCase(), 'comment'); + var comment = parts[1]; + + parts = splitHeader(lines[si++]); + assert.equal(parts[0].toLowerCase(), 'public-lines'); + var publicLines = parseInt(parts[1], 10); + if (!isFinite(publicLines) || publicLines < 0 || + publicLines > lines.length) { + throw (new Error('Invalid public-lines count')); + } + + var publicBuf = Buffer.from( + lines.slice(si, si + publicLines).join(''), 'base64'); + var keyType = rfc4253.algToKeyType(alg); + var key = rfc4253.read(publicBuf); + if (key.type !== keyType) { + throw (new Error('Outer key algorithm mismatch')); + } + key.comment = comment; + return (key); +} + +function splitHeader(line) { + var idx = line.indexOf(':'); + if (idx === -1) + return (null); + var header = line.slice(0, idx); + ++idx; + while (line[idx] === ' ') + ++idx; + var rest = line.slice(idx); + return ([header, rest]); } -exports.TwitterV2IncludesHelper = TwitterV2IncludesHelper; +function write(key, options) { + assert.object(key); + if (!Key.isKey(key)) + throw (new Error('Must be a public key')); -/***/ }), + var alg = rfc4253.keyTypeToAlg(key); + var buf = rfc4253.write(key); + var comment = key.comment || ''; -/***/ 6300: -/***/ ((module, exports, __nccwpck_require__) => { + var b64 = buf.toString('base64'); + var lines = wrap(b64, 64); -"use strict"; + lines.unshift('Public-Lines: ' + lines.length); + lines.unshift('Comment: ' + comment); + lines.unshift('Encryption: none'); + lines.unshift('PuTTY-User-Key-File-2: ' + alg); + return (Buffer.from(lines.join('\n') + '\n')); +} -var _interopRequireDefault = __nccwpck_require__(3286); +function wrap(txt, len) { + var lines = []; + var pos = 0; + while (pos < txt.length) { + lines.push(txt.slice(pos, pos + 64)); + pos += 64; + } + return (lines); +} -__nccwpck_require__(6880); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; +/***/ }), +/* 625 */, +/* 626 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; -var _extractEntitiesWithIndices = _interopRequireDefault(__nccwpck_require__(7375)); -var _autoLinkEntities = _interopRequireDefault(__nccwpck_require__(1352)); +__webpack_require__(493); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -function _default(text, options) { - var entities = (0, _extractEntitiesWithIndices["default"])(text, { - extractUrlsWithoutProtocol: false +var validateUrlUnreserved = /[a-z\u0400-\u04FF0-9\-._~]/i; +var _default = validateUrlUnreserved; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 627 */ +/***/ (function(__unusedmodule, exports) { + +"use strict"; +/*! + * Copyright (c) 2015, Salesforce.com, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. Neither the name of Salesforce.com nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/*jshint unused:false */ + +function Store() { +} +exports.Store = Store; + +// Stores may be synchronous, but are still required to use a +// Continuation-Passing Style API. The CookieJar itself will expose a "*Sync" +// API that converts from synchronous-callbacks to imperative style. +Store.prototype.synchronous = false; + +Store.prototype.findCookie = function(domain, path, key, cb) { + throw new Error('findCookie is not implemented'); +}; + +Store.prototype.findCookies = function(domain, path, cb) { + throw new Error('findCookies is not implemented'); +}; + +Store.prototype.putCookie = function(cookie, cb) { + throw new Error('putCookie is not implemented'); +}; + +Store.prototype.updateCookie = function(oldCookie, newCookie, cb) { + // recommended default implementation: + // return this.putCookie(newCookie, cb); + throw new Error('updateCookie is not implemented'); +}; + +Store.prototype.removeCookie = function(domain, path, key, cb) { + throw new Error('removeCookie is not implemented'); +}; + +Store.prototype.removeCookies = function(domain, path, cb) { + throw new Error('removeCookies is not implemented'); +}; + +Store.prototype.getAllCookies = function(cb) { + throw new Error('getAllCookies is not implemented (therefore jar cannot be serialized)'); +}; + + +/***/ }), +/* 628 */ +/***/ (function(module) { + +"use strict"; + + +var KEYWORDS = [ + 'multipleOf', + 'maximum', + 'exclusiveMaximum', + 'minimum', + 'exclusiveMinimum', + 'maxLength', + 'minLength', + 'pattern', + 'additionalItems', + 'maxItems', + 'minItems', + 'uniqueItems', + 'maxProperties', + 'minProperties', + 'required', + 'additionalProperties', + 'enum', + 'format', + 'const' +]; + +module.exports = function (metaSchema, keywordsJsonPointers) { + for (var i=0; i + file.status === "added" && /^tweets\/.*\.tweet$/.test(file.filename) + ) + .map((file) => { + const text = readFileSync( + resolvePath(process.env.GITHUB_WORKSPACE, file.filename), + "utf8" + ).trim(); + return { + text, + filename: file.filename, + }; + }); } -module.exports = exports.default; /***/ }), +/* 630 */, +/* 631 */ +/***/ (function(module) { + +module.exports = require("net"); -/***/ 9915: -/***/ ((module, exports, __nccwpck_require__) => { +/***/ }), +/* 632 */ +/***/ (function(__unusedmodule, exports) { -"use strict"; +exports.f = {}.propertyIsEnumerable; -var _interopRequireDefault = __nccwpck_require__(3286); +/***/ }), +/* 633 */, +/* 634 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; -__nccwpck_require__(6880); -Object.defineProperty(exports, "__esModule", ({ +Object.defineProperty(exports, "__esModule", { value: true -})); -exports["default"] = _default; +}); +exports.default = void 0; -var _autoLinkEntities = _interopRequireDefault(__nccwpck_require__(1352)); +var _regex = _interopRequireDefault(__webpack_require__(525)); -var _extractCashtagsWithIndices = _interopRequireDefault(__nccwpck_require__(7504)); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text, options) { - var entities = (0, _extractCashtagsWithIndices["default"])(text); - return (0, _autoLinkEntities["default"])(text, entities, options); +function validate(uuid) { + return typeof uuid === 'string' && _regex.default.test(uuid); } -module.exports = exports.default; +var _default = validate; +exports.default = _default; /***/ }), - -/***/ 1352: -/***/ ((module, exports, __nccwpck_require__) => { +/* 635 */, +/* 636 */, +/* 637 */, +/* 638 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { "use strict"; -var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, '__esModule', { value: true }); -__nccwpck_require__(6880); +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; +var endpoint = __webpack_require__(521); +var universalUserAgent = __webpack_require__(796); +var isPlainObject = __webpack_require__(356); +var nodeFetch = _interopDefault(__webpack_require__(454)); +var requestError = __webpack_require__(463); + +const VERSION = "6.2.1"; + +function getBufferResponse(response) { + return response.arrayBuffer(); +} + +function fetchWrapper(requestOptions) { + const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console; + + if (isPlainObject.isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) { + requestOptions.body = JSON.stringify(requestOptions.body); + } + + let headers = {}; + let status; + let url; + const fetch = requestOptions.request && requestOptions.request.fetch || globalThis.fetch || + /* istanbul ignore next */ + nodeFetch; + return fetch(requestOptions.url, Object.assign({ + method: requestOptions.method, + body: requestOptions.body, + headers: requestOptions.headers, + redirect: requestOptions.redirect + }, // `requestOptions.request.agent` type is incompatible + // see https://github.com/octokit/types.ts/pull/264 + requestOptions.request)).then(async response => { + url = response.url; + status = response.status; + + for (const keyAndValue of response.headers) { + headers[keyAndValue[0]] = keyAndValue[1]; + } + + if ("deprecation" in headers) { + const matches = headers.link && headers.link.match(/<([^>]+)>; rel="deprecation"/); + const deprecationLink = matches && matches.pop(); + log.warn(`[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}`); + } + + if (status === 204 || status === 205) { + return; + } // GitHub API returns 200 for HEAD requests + + + if (requestOptions.method === "HEAD") { + if (status < 400) { + return; + } -__nccwpck_require__(7920); + throw new requestError.RequestError(response.statusText, status, { + response: { + url, + status, + headers, + data: undefined + }, + request: requestOptions + }); + } -var _clone = _interopRequireDefault(__nccwpck_require__(2105)); + if (status === 304) { + throw new requestError.RequestError("Not modified", status, { + response: { + url, + status, + headers, + data: await getResponseData(response) + }, + request: requestOptions + }); + } -var _extractHtmlAttrsFromOptions = _interopRequireDefault(__nccwpck_require__(6167)); + if (status >= 400) { + const data = await getResponseData(response); + const error = new requestError.RequestError(toErrorMessage(data), status, { + response: { + url, + status, + headers, + data + }, + request: requestOptions + }); + throw error; + } -var _htmlEscape = _interopRequireDefault(__nccwpck_require__(8113)); + return getResponseData(response); + }).then(data => { + return { + status, + url, + headers, + data + }; + }).catch(error => { + if (error instanceof requestError.RequestError) throw error;else if (error.name === "AbortError") throw error; + throw new requestError.RequestError(error.message, 500, { + request: requestOptions + }); + }); +} -var _linkToCashtag = _interopRequireDefault(__nccwpck_require__(5583)); +async function getResponseData(response) { + const contentType = response.headers.get("content-type"); -var _linkToHashtag = _interopRequireDefault(__nccwpck_require__(5537)); + if (/application\/json/.test(contentType)) { + return response.json(); + } -var _linkToUrl = _interopRequireDefault(__nccwpck_require__(1656)); + if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) { + return response.text(); + } -var _linkToMentionAndList = _interopRequireDefault(__nccwpck_require__(8702)); + return getBufferResponse(response); +} -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -// Default CSS class for auto-linked lists (along with the url class) -var DEFAULT_LIST_CLASS = 'tweet-url list-slug'; // Default CSS class for auto-linked usernames (along with the url class) +function toErrorMessage(data) { + if (typeof data === "string") return data; // istanbul ignore else - just in case -var DEFAULT_USERNAME_CLASS = 'tweet-url username'; // Default CSS class for auto-linked hashtags (along with the url class) + if ("message" in data) { + if (Array.isArray(data.errors)) { + return `${data.message}: ${data.errors.map(JSON.stringify).join(", ")}`; + } -var DEFAULT_HASHTAG_CLASS = 'tweet-url hashtag'; // Default CSS class for auto-linked cashtags (along with the url class) + return data.message; + } // istanbul ignore next - just in case -var DEFAULT_CASHTAG_CLASS = 'tweet-url cashtag'; -function _default(text, entities, options) { - var options = (0, _clone["default"])(options || {}); - options.hashtagClass = options.hashtagClass || DEFAULT_HASHTAG_CLASS; - options.hashtagUrlBase = options.hashtagUrlBase || 'https://twitter.com/search?q=%23'; - options.cashtagClass = options.cashtagClass || DEFAULT_CASHTAG_CLASS; - options.cashtagUrlBase = options.cashtagUrlBase || 'https://twitter.com/search?q=%24'; - options.listClass = options.listClass || DEFAULT_LIST_CLASS; - options.usernameClass = options.usernameClass || DEFAULT_USERNAME_CLASS; - options.usernameUrlBase = options.usernameUrlBase || 'https://twitter.com/'; - options.listUrlBase = options.listUrlBase || 'https://twitter.com/'; - options.htmlAttrs = (0, _extractHtmlAttrsFromOptions["default"])(options); - options.invisibleTagAttrs = options.invisibleTagAttrs || "style='position:absolute;left:-9999px;'"; // remap url entities to hash + return `Unknown error: ${JSON.stringify(data)}`; +} - var urlEntities, i, len; +function withDefaults(oldEndpoint, newDefaults) { + const endpoint = oldEndpoint.defaults(newDefaults); - if (options.urlEntities) { - urlEntities = {}; + const newApi = function (route, parameters) { + const endpointOptions = endpoint.merge(route, parameters); - for (i = 0, len = options.urlEntities.length; i < len; i++) { - urlEntities[options.urlEntities[i].url] = options.urlEntities[i]; + if (!endpointOptions.request || !endpointOptions.request.hook) { + return fetchWrapper(endpoint.parse(endpointOptions)); } - options.urlEntities = urlEntities; - } - - var result = ''; - var beginIndex = 0; // sort entities by start index + const request = (route, parameters) => { + return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters))); + }; - entities.sort(function (a, b) { - return a.indices[0] - b.indices[0]; - }); - var nonEntity = options.htmlEscapeNonEntities ? _htmlEscape["default"] : function (text) { - return text; + Object.assign(request, { + endpoint, + defaults: withDefaults.bind(null, endpoint) + }); + return endpointOptions.request.hook(request, endpointOptions); }; - for (var i = 0; i < entities.length; i++) { - var entity = entities[i]; - result += nonEntity(text.substring(beginIndex, entity.indices[0])); - - if (entity.url) { - result += (0, _linkToUrl["default"])(entity, text, options); - } else if (entity.hashtag) { - result += (0, _linkToHashtag["default"])(entity, text, options); - } else if (entity.screenName) { - result += (0, _linkToMentionAndList["default"])(entity, text, options); - } else if (entity.cashtag) { - result += (0, _linkToCashtag["default"])(entity, text, options); - } + return Object.assign(newApi, { + endpoint, + defaults: withDefaults.bind(null, endpoint) + }); +} - beginIndex = entity.indices[1]; +const request = withDefaults(endpoint.endpoint, { + headers: { + "user-agent": `octokit-request.js/${VERSION} ${universalUserAgent.getUserAgent()}` } +}); - result += nonEntity(text.substring(beginIndex, text.length)); - return result; -} +exports.request = request; +//# sourceMappingURL=index.js.map -module.exports = exports.default; /***/ }), +/* 639 */, +/* 640 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 5165: -/***/ ((module, exports, __nccwpck_require__) => { +/* + * verror.js: richer JavaScript errors + */ -"use strict"; +var mod_assertplus = __webpack_require__(489); +var mod_util = __webpack_require__(669); +var mod_extsprintf = __webpack_require__(697); +var mod_isError = __webpack_require__(286).isError; +var sprintf = mod_extsprintf.sprintf; -var _interopRequireDefault = __nccwpck_require__(3286); +/* + * Public interface + */ -__nccwpck_require__(6880); +/* So you can 'var VError = require('verror')' */ +module.exports = VError; +/* For compatibility */ +VError.VError = VError; +/* Other exported classes */ +VError.SError = SError; +VError.WError = WError; +VError.MultiError = MultiError; + +/* + * Common function used to parse constructor arguments for VError, WError, and + * SError. Named arguments to this function: + * + * strict force strict interpretation of sprintf arguments, even + * if the options in "argv" don't say so + * + * argv error's constructor arguments, which are to be + * interpreted as described in README.md. For quick + * reference, "argv" has one of the following forms: + * + * [ sprintf_args... ] (argv[0] is a string) + * [ cause, sprintf_args... ] (argv[0] is an Error) + * [ options, sprintf_args... ] (argv[0] is an object) + * + * This function normalizes these forms, producing an object with the following + * properties: + * + * options equivalent to "options" in third form. This will never + * be a direct reference to what the caller passed in + * (i.e., it may be a shallow copy), so it can be freely + * modified. + * + * shortmessage result of sprintf(sprintf_args), taking options.strict + * into account as described in README.md. + */ +function parseConstructorArguments(args) +{ + var argv, options, sprintf_args, shortmessage, k; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; + mod_assertplus.object(args, 'args'); + mod_assertplus.bool(args.strict, 'args.strict'); + mod_assertplus.array(args.argv, 'args.argv'); + argv = args.argv; -var _extractHashtagsWithIndices = _interopRequireDefault(__nccwpck_require__(2280)); + /* + * First, figure out which form of invocation we've been given. + */ + if (argv.length === 0) { + options = {}; + sprintf_args = []; + } else if (mod_isError(argv[0])) { + options = { 'cause': argv[0] }; + sprintf_args = argv.slice(1); + } else if (typeof (argv[0]) === 'object') { + options = {}; + for (k in argv[0]) { + options[k] = argv[0][k]; + } + sprintf_args = argv.slice(1); + } else { + mod_assertplus.string(argv[0], + 'first argument to VError, SError, or WError ' + + 'constructor must be a string, object, or Error'); + options = {}; + sprintf_args = argv; + } -var _autoLinkEntities = _interopRequireDefault(__nccwpck_require__(1352)); + /* + * Now construct the error's message. + * + * extsprintf (which we invoke here with our caller's arguments in order + * to construct this Error's message) is strict in its interpretation of + * values to be processed by the "%s" specifier. The value passed to + * extsprintf must actually be a string or something convertible to a + * String using .toString(). Passing other values (notably "null" and + * "undefined") is considered a programmer error. The assumption is + * that if you actually want to print the string "null" or "undefined", + * then that's easy to do that when you're calling extsprintf; on the + * other hand, if you did NOT want that (i.e., there's actually a bug + * where the program assumes some variable is non-null and tries to + * print it, which might happen when constructing a packet or file in + * some specific format), then it's better to stop immediately than + * produce bogus output. + * + * However, sometimes the bug is only in the code calling VError, and a + * programmer might prefer to have the error message contain "null" or + * "undefined" rather than have the bug in the error path crash the + * program (making the first bug harder to identify). For that reason, + * by default VError converts "null" or "undefined" arguments to their + * string representations and passes those to extsprintf. Programmers + * desiring the strict behavior can use the SError class or pass the + * "strict" option to the VError constructor. + */ + mod_assertplus.object(options); + if (!options.strict && !args.strict) { + sprintf_args = sprintf_args.map(function (a) { + return (a === null ? 'null' : + a === undefined ? 'undefined' : a); + }); + } -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text, options) { - var entities = (0, _extractHashtagsWithIndices["default"])(text); - return (0, _autoLinkEntities["default"])(text, entities, options); + if (sprintf_args.length === 0) { + shortmessage = ''; + } else { + shortmessage = sprintf.apply(null, sprintf_args); + } + + return ({ + 'options': options, + 'shortmessage': shortmessage + }); } -module.exports = exports.default; +/* + * See README.md for reference documentation. + */ +function VError() +{ + var args, obj, parsed, cause, ctor, message, k; -/***/ }), + args = Array.prototype.slice.call(arguments, 0); -/***/ 7465: -/***/ ((module, exports, __nccwpck_require__) => { + /* + * This is a regrettable pattern, but JavaScript's built-in Error class + * is defined to work this way, so we allow the constructor to be called + * without "new". + */ + if (!(this instanceof VError)) { + obj = Object.create(VError.prototype); + VError.apply(obj, arguments); + return (obj); + } -"use strict"; + /* + * For convenience and backwards compatibility, we support several + * different calling forms. Normalize them here. + */ + parsed = parseConstructorArguments({ + 'argv': args, + 'strict': false + }); + /* + * If we've been given a name, apply it now. + */ + if (parsed.options.name) { + mod_assertplus.string(parsed.options.name, + 'error\'s "name" must be a string'); + this.name = parsed.options.name; + } -var _interopRequireDefault = __nccwpck_require__(3286); + /* + * For debugging, we keep track of the original short message (attached + * this Error particularly) separately from the complete message (which + * includes the messages of our cause chain). + */ + this.jse_shortmsg = parsed.shortmessage; + message = parsed.shortmessage; -__nccwpck_require__(6880); + /* + * If we've been given a cause, record a reference to it and update our + * message appropriately. + */ + cause = parsed.options.cause; + if (cause) { + mod_assertplus.ok(mod_isError(cause), 'cause is not an Error'); + this.jse_cause = cause; + + if (!parsed.options.skipCauseMessage) { + message += ': ' + cause.message; + } + } -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; + /* + * If we've been given an object with properties, shallow-copy that + * here. We don't want to use a deep copy in case there are non-plain + * objects here, but we don't want to use the original object in case + * the caller modifies it later. + */ + this.jse_info = {}; + if (parsed.options.info) { + for (k in parsed.options.info) { + this.jse_info[k] = parsed.options.info[k]; + } + } -var _autoLinkEntities = _interopRequireDefault(__nccwpck_require__(1352)); + this.message = message; + Error.call(this, message); -var _extractUrlsWithIndices = _interopRequireDefault(__nccwpck_require__(2429)); + if (Error.captureStackTrace) { + ctor = parsed.options.constructorOpt || this.constructor; + Error.captureStackTrace(this, ctor); + } -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text, options) { - var entities = (0, _extractUrlsWithIndices["default"])(text, { - extractUrlsWithoutProtocol: false - }); - return (0, _autoLinkEntities["default"])(text, entities, options); + return (this); } -module.exports = exports.default; +mod_util.inherits(VError, Error); +VError.prototype.name = 'VError'; -/***/ }), +VError.prototype.toString = function ve_toString() +{ + var str = (this.hasOwnProperty('name') && this.name || + this.constructor.name || this.constructor.prototype.name); + if (this.message) + str += ': ' + this.message; -/***/ 4240: -/***/ ((module, exports, __nccwpck_require__) => { + return (str); +}; -"use strict"; +/* + * This method is provided for compatibility. New callers should use + * VError.cause() instead. That method also uses the saner `null` return value + * when there is no cause. + */ +VError.prototype.cause = function ve_cause() +{ + var cause = VError.cause(this); + return (cause === null ? undefined : cause); +}; +/* + * Static methods + * + * These class-level methods are provided so that callers can use them on + * instances of Errors that are not VErrors. New interfaces should be provided + * only using static methods to eliminate the class of programming mistake where + * people fail to check whether the Error object has the corresponding methods. + */ -var _interopRequireDefault = __nccwpck_require__(3286); +VError.cause = function (err) +{ + mod_assertplus.ok(mod_isError(err), 'err must be an Error'); + return (mod_isError(err.jse_cause) ? err.jse_cause : null); +}; -__nccwpck_require__(6880); +VError.info = function (err) +{ + var rv, cause, k; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; + mod_assertplus.ok(mod_isError(err), 'err must be an Error'); + cause = VError.cause(err); + if (cause !== null) { + rv = VError.info(cause); + } else { + rv = {}; + } -var _extractMentionsOrListsWithIndices = _interopRequireDefault(__nccwpck_require__(2895)); + if (typeof (err.jse_info) == 'object' && err.jse_info !== null) { + for (k in err.jse_info) { + rv[k] = err.jse_info[k]; + } + } -var _autoLinkEntities = _interopRequireDefault(__nccwpck_require__(1352)); + return (rv); +}; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text, options) { - var entities = (0, _extractMentionsOrListsWithIndices["default"])(text); - return (0, _autoLinkEntities["default"])(text, entities, options); -} +VError.findCauseByName = function (err, name) +{ + var cause; -module.exports = exports.default; + mod_assertplus.ok(mod_isError(err), 'err must be an Error'); + mod_assertplus.string(name, 'name'); + mod_assertplus.ok(name.length > 0, 'name cannot be empty'); -/***/ }), + for (cause = err; cause !== null; cause = VError.cause(cause)) { + mod_assertplus.ok(mod_isError(cause)); + if (cause.name == name) { + return (cause); + } + } -/***/ 8478: -/***/ ((module, exports, __nccwpck_require__) => { + return (null); +}; -"use strict"; +VError.hasCauseWithName = function (err, name) +{ + return (VError.findCauseByName(err, name) !== null); +}; +VError.fullStack = function (err) +{ + mod_assertplus.ok(mod_isError(err), 'err must be an Error'); -var _interopRequireDefault = __nccwpck_require__(3286); + var cause = VError.cause(err); -__nccwpck_require__(6880); + if (cause) { + return (err.stack + '\ncaused by: ' + VError.fullStack(cause)); + } -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; + return (err.stack); +}; -var _autoLinkEntities = _interopRequireDefault(__nccwpck_require__(1352)); +VError.errorFromList = function (errors) +{ + mod_assertplus.arrayOfObject(errors, 'errors'); -var _modifyIndicesFromUnicodeToUTF = _interopRequireDefault(__nccwpck_require__(1614)); + if (errors.length === 0) { + return (null); + } -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text, json, options) { - // map JSON entity to twitter-text entity - if (json.user_mentions) { - for (var i = 0; i < json.user_mentions.length; i++) { - // this is a @mention - json.user_mentions[i].screenName = json.user_mentions[i].screen_name; - } - } + errors.forEach(function (e) { + mod_assertplus.ok(mod_isError(e)); + }); - if (json.hashtags) { - for (var i = 0; i < json.hashtags.length; i++) { - // this is a #hashtag - json.hashtags[i].hashtag = json.hashtags[i].text; - } - } + if (errors.length == 1) { + return (errors[0]); + } + + return (new MultiError(errors)); +}; + +VError.errorForEach = function (err, func) +{ + mod_assertplus.ok(mod_isError(err), 'err must be an Error'); + mod_assertplus.func(func, 'func'); + + if (err instanceof MultiError) { + err.errors().forEach(function iterError(e) { func(e); }); + } else { + func(err); + } +}; - if (json.symbols) { - for (var i = 0; i < json.symbols.length; i++) { - // this is a $CASH tag - json.symbols[i].cashtag = json.symbols[i].text; - } - } // concatenate all entities +/* + * SError is like VError, but stricter about types. You cannot pass "null" or + * "undefined" as string arguments to the formatter. + */ +function SError() +{ + var args, obj, parsed, options; - var entities = []; + args = Array.prototype.slice.call(arguments, 0); + if (!(this instanceof SError)) { + obj = Object.create(SError.prototype); + SError.apply(obj, arguments); + return (obj); + } - for (var key in json) { - entities = entities.concat(json[key]); - } // modify indices to UTF-16 + parsed = parseConstructorArguments({ + 'argv': args, + 'strict': true + }); + options = parsed.options; + VError.call(this, options, '%s', parsed.shortmessage); - (0, _modifyIndicesFromUnicodeToUTF["default"])(text, entities); - return (0, _autoLinkEntities["default"])(text, entities, options); + return (this); } -module.exports = exports.default; - -/***/ }), +/* + * We don't bother setting SError.prototype.name because once constructed, + * SErrors are just like VErrors. + */ +mod_util.inherits(SError, VError); -/***/ 6290: -/***/ ((module, exports, __nccwpck_require__) => { -"use strict"; +/* + * Represents a collection of errors for the purpose of consumers that generally + * only deal with one error. Callers can extract the individual errors + * contained in this object, but may also just treat it as a normal single + * error, in which case a summary message will be printed. + */ +function MultiError(errors) +{ + mod_assertplus.array(errors, 'list of errors'); + mod_assertplus.ok(errors.length > 0, 'must be at least one error'); + this.ase_errors = errors; + VError.call(this, { + 'cause': errors[0] + }, 'first of %d error%s', errors.length, errors.length == 1 ? '' : 's'); +} -__nccwpck_require__(6880); +mod_util.inherits(MultiError, VError); +MultiError.prototype.name = 'MultiError'; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -// This file is generated by scripts/buildConfig.js -var _default = { - version1: { - version: 1, - maxWeightedTweetLength: 140, - scale: 1, - defaultWeight: 1, - transformedURLLength: 23, - ranges: [] - }, - version2: { - version: 2, - maxWeightedTweetLength: 280, - scale: 100, - defaultWeight: 200, - transformedURLLength: 23, - ranges: [{ - start: 0, - end: 4351, - weight: 100 - }, { - start: 8192, - end: 8205, - weight: 100 - }, { - start: 8208, - end: 8223, - weight: 100 - }, { - start: 8242, - end: 8247, - weight: 100 - }] - }, - version3: { - version: 3, - maxWeightedTweetLength: 280, - scale: 100, - defaultWeight: 200, - emojiParsingEnabled: true, - transformedURLLength: 23, - ranges: [{ - start: 0, - end: 4351, - weight: 100 - }, { - start: 8192, - end: 8205, - weight: 100 - }, { - start: 8208, - end: 8223, - weight: 100 - }, { - start: 8242, - end: 8247, - weight: 100 - }] - }, - defaults: { - version: 3, - maxWeightedTweetLength: 280, - scale: 100, - defaultWeight: 200, - emojiParsingEnabled: true, - transformedURLLength: 23, - ranges: [{ - start: 0, - end: 4351, - weight: 100 - }, { - start: 8192, - end: 8205, - weight: 100 - }, { - start: 8208, - end: 8223, - weight: 100 - }, { - start: 8242, - end: 8247, - weight: 100 - }] - } +MultiError.prototype.errors = function me_errors() +{ + return (this.ase_errors.slice(0)); }; -exports["default"] = _default; -module.exports = exports.default; -/***/ }), -/***/ 1398: -/***/ ((module, exports, __nccwpck_require__) => { +/* + * See README.md for reference details. + */ +function WError() +{ + var args, obj, parsed, options; -"use strict"; + args = Array.prototype.slice.call(arguments, 0); + if (!(this instanceof WError)) { + obj = Object.create(WError.prototype); + WError.apply(obj, args); + return (obj); + } + parsed = parseConstructorArguments({ + 'argv': args, + 'strict': false + }); -__nccwpck_require__(6880); + options = parsed.options; + options['skipCauseMessage'] = true; + VError.call(this, options, '%s', parsed.shortmessage); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; + return (this); +} -__nccwpck_require__(7920); +mod_util.inherits(WError, VError); +WError.prototype.name = 'WError'; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text, entities, indicesInUTF16) { - if (entities.length == 0) { - return; - } +WError.prototype.toString = function we_toString() +{ + var str = (this.hasOwnProperty('name') && this.name || + this.constructor.name || this.constructor.prototype.name); + if (this.message) + str += ': ' + this.message; + if (this.jse_cause && this.jse_cause.message) + str += '; caused by ' + this.jse_cause.toString(); + + return (str); +}; - var charIndex = 0; - var codePointIndex = 0; // sort entities by start index +/* + * For purely historical reasons, WError's cause() function allows you to set + * the cause. + */ +WError.prototype.cause = function we_cause(c) +{ + if (mod_isError(c)) + this.jse_cause = c; - entities.sort(function (a, b) { - return a.indices[0] - b.indices[0]; - }); - var entityIndex = 0; - var entity = entities[0]; + return (this.jse_cause); +}; - while (charIndex < text.length) { - if (entity.indices[0] == (indicesInUTF16 ? charIndex : codePointIndex)) { - var len = entity.indices[1] - entity.indices[0]; - entity.indices[0] = indicesInUTF16 ? codePointIndex : charIndex; - entity.indices[1] = entity.indices[0] + len; - entityIndex++; - if (entityIndex == entities.length) { - // no more entity - break; - } +/***/ }), +/* 641 */ +/***/ (function(module, __unusedexports, __webpack_require__) { - entity = entities[entityIndex]; - } +"use strict"; - var c = text.charCodeAt(charIndex); - if (c >= 0xd800 && c <= 0xdbff && charIndex < text.length - 1) { - // Found high surrogate char - c = text.charCodeAt(charIndex + 1); +var crypto_hash_sha512 = __webpack_require__(196).lowlevel.crypto_hash; - if (c >= 0xdc00 && c <= 0xdfff) { - // Found surrogate pair - charIndex++; - } - } +/* + * This file is a 1:1 port from the OpenBSD blowfish.c and bcrypt_pbkdf.c. As a + * result, it retains the original copyright and license. The two files are + * under slightly different (but compatible) licenses, and are here combined in + * one file. + * + * Credit for the actual porting work goes to: + * Devi Mandiri + */ - codePointIndex++; - charIndex++; - } -} +/* + * The Blowfish portions are under the following license: + * + * Blowfish block cipher for OpenBSD + * Copyright 1997 Niels Provos + * All rights reserved. + * + * Implementation advice by David Mazieres . + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ -module.exports = exports.default; +/* + * The bcrypt_pbkdf portions are under the following license: + * + * Copyright (c) 2013 Ted Unangst + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ -/***/ }), +/* + * Performance improvements (Javascript-specific): + * + * Copyright 2016, Joyent Inc + * Author: Alex Wilson + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +// Ported from OpenBSD bcrypt_pbkdf.c v1.9 + +var BLF_J = 0; + +var Blowfish = function() { + this.S = [ + new Uint32Array([ + 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, + 0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99, + 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, + 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, + 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee, + 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, + 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, + 0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e, + 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60, + 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, + 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce, + 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a, + 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, + 0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677, + 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193, + 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, + 0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88, + 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239, + 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, + 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0, + 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, + 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, + 0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88, + 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe, + 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, + 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d, + 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b, + 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, + 0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba, + 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463, + 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, + 0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09, + 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3, + 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, + 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279, + 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, + 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, + 0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82, + 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db, + 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, + 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0, + 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, + 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, + 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8, + 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4, + 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, + 0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7, + 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c, + 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, + 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1, + 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, + 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, + 0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477, + 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf, + 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, + 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af, + 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa, + 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, + 0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41, + 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915, + 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, + 0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915, + 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664, + 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a]), + new Uint32Array([ + 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, + 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266, + 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, + 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, + 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6, + 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, + 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, + 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1, + 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, + 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, + 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff, + 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, + 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, + 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7, + 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, + 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, + 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf, + 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, + 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, + 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87, + 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, + 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, + 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16, + 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, + 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, + 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509, + 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, + 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, + 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f, + 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, + 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, + 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960, + 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, + 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, + 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802, + 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, + 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, + 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf, + 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, + 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, + 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50, + 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, + 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, + 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281, + 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, + 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, + 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128, + 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, + 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, + 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0, + 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, + 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, + 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3, + 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, + 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, + 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061, + 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, + 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, + 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735, + 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, + 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, + 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340, + 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, + 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7]), + new Uint32Array([ + 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, + 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068, + 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, + 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, + 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45, + 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504, + 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, + 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, + 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee, + 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, + 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42, + 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b, + 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, + 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb, + 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527, + 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, + 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33, + 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, + 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, + 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc, + 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17, + 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, + 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, + 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115, + 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, + 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728, + 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0, + 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, + 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37, + 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d, + 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, + 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b, + 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, + 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, + 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d, + 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c, + 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, + 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, + 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a, + 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, + 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d, + 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc, + 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, + 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61, + 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2, + 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, + 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2, + 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, + 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, + 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633, + 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10, + 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, + 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, + 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027, + 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, + 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62, + 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634, + 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, + 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24, + 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc, + 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, + 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c, + 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, + 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0]), + new Uint32Array([ + 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, + 0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe, + 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b, + 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, + 0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8, + 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6, + 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, + 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22, + 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, + 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, + 0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9, + 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59, + 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, + 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51, + 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, + 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, + 0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b, + 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28, + 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, + 0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd, + 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a, + 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, + 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb, + 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, + 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, + 0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32, + 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680, + 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, + 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae, + 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, + 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, + 0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47, + 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370, + 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, + 0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84, + 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048, + 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, + 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd, + 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, + 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, + 0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38, + 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f, + 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, + 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525, + 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1, + 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, + 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964, + 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e, + 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, + 0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d, + 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f, + 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, + 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02, + 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, + 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, + 0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a, + 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6, + 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, + 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0, + 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060, + 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, + 0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9, + 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f, + 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6]) + ]; + this.P = new Uint32Array([ + 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, + 0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89, + 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, + 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, + 0x9216d5d9, 0x8979fb1b]); +}; -/***/ 7456: -/***/ ((module, exports, __nccwpck_require__) => { +function F(S, x8, i) { + return (((S[0][x8[i+3]] + + S[1][x8[i+2]]) ^ + S[2][x8[i+1]]) + + S[3][x8[i]]); +}; -"use strict"; +Blowfish.prototype.encipher = function(x, x8) { + if (x8 === undefined) { + x8 = new Uint8Array(x.buffer); + if (x.byteOffset !== 0) + x8 = x8.subarray(x.byteOffset); + } + x[0] ^= this.P[0]; + for (var i = 1; i < 16; i += 2) { + x[1] ^= F(this.S, x8, 0) ^ this.P[i]; + x[0] ^= F(this.S, x8, 4) ^ this.P[i+1]; + } + var t = x[0]; + x[0] = x[1] ^ this.P[17]; + x[1] = t; +}; +Blowfish.prototype.decipher = function(x) { + var x8 = new Uint8Array(x.buffer); + if (x.byteOffset !== 0) + x8 = x8.subarray(x.byteOffset); + x[0] ^= this.P[17]; + for (var i = 16; i > 0; i -= 2) { + x[1] ^= F(this.S, x8, 0) ^ this.P[i]; + x[0] ^= F(this.S, x8, 4) ^ this.P[i-1]; + } + var t = x[0]; + x[0] = x[1] ^ this.P[0]; + x[1] = t; +}; -var _interopRequireDefault = __nccwpck_require__(3286); +function stream2word(data, databytes){ + var i, temp = 0; + for (i = 0; i < 4; i++, BLF_J++) { + if (BLF_J >= databytes) BLF_J = 0; + temp = (temp << 8) | data[BLF_J]; + } + return temp; +}; -__nccwpck_require__(6880); +Blowfish.prototype.expand0state = function(key, keybytes) { + var d = new Uint32Array(2), i, k; + var d8 = new Uint8Array(d.buffer); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; + for (i = 0, BLF_J = 0; i < 18; i++) { + this.P[i] ^= stream2word(key, keybytes); + } + BLF_J = 0; -var _extractCashtagsWithIndices = _interopRequireDefault(__nccwpck_require__(7504)); + for (i = 0; i < 18; i += 2) { + this.encipher(d, d8); + this.P[i] = d[0]; + this.P[i+1] = d[1]; + } -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text) { - var cashtagsOnly = [], - cashtagsWithIndices = (0, _extractCashtagsWithIndices["default"])(text); + for (i = 0; i < 4; i++) { + for (k = 0; k < 256; k += 2) { + this.encipher(d, d8); + this.S[i][k] = d[0]; + this.S[i][k+1] = d[1]; + } + } +}; - for (var i = 0; i < cashtagsWithIndices.length; i++) { - cashtagsOnly.push(cashtagsWithIndices[i].cashtag); +Blowfish.prototype.expandstate = function(data, databytes, key, keybytes) { + var d = new Uint32Array(2), i, k; + + for (i = 0, BLF_J = 0; i < 18; i++) { + this.P[i] ^= stream2word(key, keybytes); } - return cashtagsOnly; -} + for (i = 0, BLF_J = 0; i < 18; i += 2) { + d[0] ^= stream2word(data, databytes); + d[1] ^= stream2word(data, databytes); + this.encipher(d); + this.P[i] = d[0]; + this.P[i+1] = d[1]; + } -module.exports = exports.default; + for (i = 0; i < 4; i++) { + for (k = 0; k < 256; k += 2) { + d[0] ^= stream2word(data, databytes); + d[1] ^= stream2word(data, databytes); + this.encipher(d); + this.S[i][k] = d[0]; + this.S[i][k+1] = d[1]; + } + } + BLF_J = 0; +}; -/***/ }), +Blowfish.prototype.enc = function(data, blocks) { + for (var i = 0; i < blocks; i++) { + this.encipher(data.subarray(i*2)); + } +}; -/***/ 7504: -/***/ ((module, exports, __nccwpck_require__) => { +Blowfish.prototype.dec = function(data, blocks) { + for (var i = 0; i < blocks; i++) { + this.decipher(data.subarray(i*2)); + } +}; -"use strict"; +var BCRYPT_BLOCKS = 8, + BCRYPT_HASHSIZE = 32; +function bcrypt_hash(sha2pass, sha2salt, out) { + var state = new Blowfish(), + cdata = new Uint32Array(BCRYPT_BLOCKS), i, + ciphertext = new Uint8Array([79,120,121,99,104,114,111,109,97,116,105, + 99,66,108,111,119,102,105,115,104,83,119,97,116,68,121,110,97,109, + 105,116,101]); //"OxychromaticBlowfishSwatDynamite" -var _interopRequireDefault = __nccwpck_require__(3286); + state.expandstate(sha2salt, 64, sha2pass, 64); + for (i = 0; i < 64; i++) { + state.expand0state(sha2salt, 64); + state.expand0state(sha2pass, 64); + } -__nccwpck_require__(6880); + for (i = 0; i < BCRYPT_BLOCKS; i++) + cdata[i] = stream2word(ciphertext, ciphertext.byteLength); + for (i = 0; i < 64; i++) + state.enc(cdata, cdata.byteLength / 8); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; + for (i = 0; i < BCRYPT_BLOCKS; i++) { + out[4*i+3] = cdata[i] >>> 24; + out[4*i+2] = cdata[i] >>> 16; + out[4*i+1] = cdata[i] >>> 8; + out[4*i+0] = cdata[i]; + } +}; + +function bcrypt_pbkdf(pass, passlen, salt, saltlen, key, keylen, rounds) { + var sha2pass = new Uint8Array(64), + sha2salt = new Uint8Array(64), + out = new Uint8Array(BCRYPT_HASHSIZE), + tmpout = new Uint8Array(BCRYPT_HASHSIZE), + countsalt = new Uint8Array(saltlen+4), + i, j, amt, stride, dest, count, + origkeylen = keylen; + + if (rounds < 1) + return -1; + if (passlen === 0 || saltlen === 0 || keylen === 0 || + keylen > (out.byteLength * out.byteLength) || saltlen > (1<<20)) + return -1; + + stride = Math.floor((keylen + out.byteLength - 1) / out.byteLength); + amt = Math.floor((keylen + stride - 1) / stride); + + for (i = 0; i < saltlen; i++) + countsalt[i] = salt[i]; + + crypto_hash_sha512(sha2pass, pass, passlen); + + for (count = 1; keylen > 0; count++) { + countsalt[saltlen+0] = count >>> 24; + countsalt[saltlen+1] = count >>> 16; + countsalt[saltlen+2] = count >>> 8; + countsalt[saltlen+3] = count; + + crypto_hash_sha512(sha2salt, countsalt, saltlen + 4); + bcrypt_hash(sha2pass, sha2salt, tmpout); + for (i = out.byteLength; i--;) + out[i] = tmpout[i]; + + for (i = 1; i < rounds; i++) { + crypto_hash_sha512(sha2salt, tmpout, tmpout.byteLength); + bcrypt_hash(sha2pass, sha2salt, tmpout); + for (j = 0; j < out.byteLength; j++) + out[j] ^= tmpout[j]; + } + + amt = Math.min(amt, keylen); + for (i = 0; i < amt; i++) { + dest = i * stride + (count - 1); + if (dest >= origkeylen) + break; + key[dest] = out[i]; + } + keylen -= i; + } -__nccwpck_require__(6764); + return 0; +}; -__nccwpck_require__(8074); +module.exports = { + BLOCKS: BCRYPT_BLOCKS, + HASHSIZE: BCRYPT_HASHSIZE, + hash: bcrypt_hash, + pbkdf: bcrypt_pbkdf +}; -var _validCashtag = _interopRequireDefault(__nccwpck_require__(8382)); -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text) { - if (!text || text.indexOf('$') === -1) { - return []; +/***/ }), +/* 642 */, +/* 643 */ +/***/ (function(module) { + +"use strict"; + +module.exports = function generate_items(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $idx = 'i' + $lvl, + $dataNxt = $it.dataLevel = it.dataLevel + 1, + $nextData = 'data' + $dataNxt, + $currentBaseId = it.baseId; + out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';'; + if (Array.isArray($schema)) { + var $additionalItems = it.schema.additionalItems; + if ($additionalItems === false) { + out += ' ' + ($valid) + ' = ' + ($data) + '.length <= ' + ($schema.length) + '; '; + var $currErrSchemaPath = $errSchemaPath; + $errSchemaPath = it.errSchemaPath + '/additionalItems'; + out += ' if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('additionalItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schema.length) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have more than ' + ($schema.length) + ' items\' '; + } + if (it.opts.verbose) { + out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + $errSchemaPath = $currErrSchemaPath; + if ($breakOnError) { + $closingBraces += '}'; + out += ' else { '; + } + } + var arr1 = $schema; + if (arr1) { + var $sch, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $sch = arr1[$i += 1]; + if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { + out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($i) + ') { '; + var $passData = $data + '[' + $i + ']'; + $it.schema = $sch; + $it.schemaPath = $schemaPath + '[' + $i + ']'; + $it.errSchemaPath = $errSchemaPath + '/' + $i; + $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true); + $it.dataPathArr[$dataNxt] = $i; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + } + } + if (typeof $additionalItems == 'object' && (it.opts.strictKeywords ? (typeof $additionalItems == 'object' && Object.keys($additionalItems).length > 0) || $additionalItems === false : it.util.schemaHasRules($additionalItems, it.RULES.all))) { + $it.schema = $additionalItems; + $it.schemaPath = it.schemaPath + '.additionalItems'; + $it.errSchemaPath = it.errSchemaPath + '/additionalItems'; + out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') { for (var ' + ($idx) + ' = ' + ($schema.length) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; + $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); + var $passData = $data + '[' + $idx + ']'; + $it.dataPathArr[$dataNxt] = $idx; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!' + ($nextValid) + ') break; '; + } + out += ' } } '; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + } else if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) { + $it.schema = $schema; + $it.schemaPath = $schemaPath; + $it.errSchemaPath = $errSchemaPath; + out += ' for (var ' + ($idx) + ' = ' + (0) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; + $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); + var $passData = $data + '[' + $idx + ']'; + $it.dataPathArr[$dataNxt] = $idx; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!' + ($nextValid) + ') break; '; + } + out += ' }'; } - - var tags = []; - text.replace(_validCashtag["default"], function (match, before, dollar, cashtag, offset, chunk) { - var startPosition = offset + before.length; - var endPosition = startPosition + cashtag.length + 1; - tags.push({ - cashtag: cashtag, - indices: [startPosition, endPosition] - }); - }); - return tags; + if ($breakOnError) { + out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; + } + return out; } -module.exports = exports.default; /***/ }), +/* 644 */, +/* 645 */, +/* 646 */, +/* 647 */, +/* 648 */, +/* 649 */, +/* 650 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 7375: -/***/ ((module, exports, __nccwpck_require__) => { +// Copyright 2015 Joyent, Inc. -"use strict"; +var Key = __webpack_require__(500); +var Fingerprint = __webpack_require__(400); +var Signature = __webpack_require__(575); +var PrivateKey = __webpack_require__(502); +var Certificate = __webpack_require__(202); +var Identity = __webpack_require__(378); +var errs = __webpack_require__(570); +module.exports = { + /* top-level classes */ + Key: Key, + parseKey: Key.parse, + Fingerprint: Fingerprint, + parseFingerprint: Fingerprint.parse, + Signature: Signature, + parseSignature: Signature.parse, + PrivateKey: PrivateKey, + parsePrivateKey: PrivateKey.parse, + generatePrivateKey: PrivateKey.generate, + Certificate: Certificate, + parseCertificate: Certificate.parse, + createSelfSignedCertificate: Certificate.createSelfSigned, + createCertificate: Certificate.create, + Identity: Identity, + identityFromDN: Identity.parseDN, + identityForHost: Identity.forHost, + identityForUser: Identity.forUser, + identityForEmail: Identity.forEmail, + identityFromArray: Identity.fromArray, + + /* errors */ + FingerprintFormatError: errs.FingerprintFormatError, + InvalidAlgorithmError: errs.InvalidAlgorithmError, + KeyParseError: errs.KeyParseError, + SignatureParseError: errs.SignatureParseError, + KeyEncryptedError: errs.KeyEncryptedError, + CertificateParseError: errs.CertificateParseError +}; -var _interopRequireDefault = __nccwpck_require__(3286); -__nccwpck_require__(6880); +/***/ }), +/* 651 */, +/* 652 */ +/***/ (function(module) { -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; +"use strict"; +// YAML error class. http://stackoverflow.com/questions/8458984 +// -var _extractCashtagsWithIndices = _interopRequireDefault(__nccwpck_require__(7504)); -var _extractHashtagsWithIndices = _interopRequireDefault(__nccwpck_require__(2280)); -var _extractMentionsOrListsWithIndices = _interopRequireDefault(__nccwpck_require__(2895)); +function formatError(exception, compact) { + var where = '', message = exception.reason || '(unknown reason)'; -var _extractUrlsWithIndices = _interopRequireDefault(__nccwpck_require__(2429)); + if (!exception.mark) return message; -var _removeOverlappingEntities = _interopRequireDefault(__nccwpck_require__(9479)); + if (exception.mark.name) { + where += 'in "' + exception.mark.name + '" '; + } -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text, options) { - var entities = (0, _extractUrlsWithIndices["default"])(text, options).concat((0, _extractMentionsOrListsWithIndices["default"])(text)).concat((0, _extractHashtagsWithIndices["default"])(text, { - checkUrlOverlap: false - })).concat((0, _extractCashtagsWithIndices["default"])(text)); + where += '(' + (exception.mark.line + 1) + ':' + (exception.mark.column + 1) + ')'; - if (entities.length == 0) { - return []; + if (!compact && exception.mark.snippet) { + where += '\n\n' + exception.mark.snippet; } - (0, _removeOverlappingEntities["default"])(entities); - return entities; + return message + ' ' + where; } -module.exports = exports.default; -/***/ }), +function YAMLException(reason, mark) { + // Super constructor + Error.call(this); -/***/ 9422: -/***/ ((module, exports, __nccwpck_require__) => { + this.name = 'YAMLException'; + this.reason = reason; + this.mark = mark; + this.message = formatError(this, false); -"use strict"; + // Include stack trace in error object + if (Error.captureStackTrace) { + // Chrome and NodeJS + Error.captureStackTrace(this, this.constructor); + } else { + // FF, IE 10+ and Safari 6+. Fallback for others + this.stack = (new Error()).stack || ''; + } +} -var _interopRequireDefault = __nccwpck_require__(3286); +// Inherit from Error +YAMLException.prototype = Object.create(Error.prototype); +YAMLException.prototype.constructor = YAMLException; -__nccwpck_require__(6880); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; +YAMLException.prototype.toString = function toString(compact) { + return this.name + ': ' + formatError(this, compact); +}; -var _extractHashtagsWithIndices = _interopRequireDefault(__nccwpck_require__(2280)); -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text) { - var hashtagsOnly = []; - var hashtagsWithIndices = (0, _extractHashtagsWithIndices["default"])(text); +module.exports = YAMLException; - for (var i = 0; i < hashtagsWithIndices.length; i++) { - hashtagsOnly.push(hashtagsWithIndices[i].hashtag); - } - return hashtagsOnly; +/***/ }), +/* 653 */ +/***/ (function(module) { + +"use strict"; + +module.exports = function generate_oneOf(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $currentBaseId = $it.baseId, + $prevValid = 'prevValid' + $lvl, + $passingSchemas = 'passingSchemas' + $lvl; + out += 'var ' + ($errs) + ' = errors , ' + ($prevValid) + ' = false , ' + ($valid) + ' = false , ' + ($passingSchemas) + ' = null; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + var arr1 = $schema; + if (arr1) { + var $sch, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $sch = arr1[$i += 1]; + if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { + $it.schema = $sch; + $it.schemaPath = $schemaPath + '[' + $i + ']'; + $it.errSchemaPath = $errSchemaPath + '/' + $i; + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + } else { + out += ' var ' + ($nextValid) + ' = true; '; + } + if ($i) { + out += ' if (' + ($nextValid) + ' && ' + ($prevValid) + ') { ' + ($valid) + ' = false; ' + ($passingSchemas) + ' = [' + ($passingSchemas) + ', ' + ($i) + ']; } else { '; + $closingBraces += '}'; + } + out += ' if (' + ($nextValid) + ') { ' + ($valid) + ' = ' + ($prevValid) + ' = true; ' + ($passingSchemas) + ' = ' + ($i) + '; }'; + } + } + it.compositeRule = $it.compositeRule = $wasComposite; + out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('oneOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { passingSchemas: ' + ($passingSchemas) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should match exactly one schema in oneOf\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError(vErrors); '; + } else { + out += ' validate.errors = vErrors; return false; '; + } + } + out += '} else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }'; + if (it.opts.allErrors) { + out += ' } '; + } + return out; } -module.exports = exports.default; /***/ }), - -/***/ 2280: -/***/ ((module, exports, __nccwpck_require__) => { +/* 654 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var _interopRequireDefault = __nccwpck_require__(3286); - -__nccwpck_require__(6880); +__webpack_require__(493); -Object.defineProperty(exports, "__esModule", ({ +Object.defineProperty(exports, "__esModule", { value: true -})); +}); exports["default"] = void 0; - -__nccwpck_require__(6764); - -__nccwpck_require__(4931); - -var _endHashtagMatch = _interopRequireDefault(__nccwpck_require__(1226)); - -var _extractUrlsWithIndices = _interopRequireDefault(__nccwpck_require__(2429)); - -var _hashSigns = _interopRequireDefault(__nccwpck_require__(3466)); - -var _removeOverlappingEntities = _interopRequireDefault(__nccwpck_require__(9479)); - -var _validHashtag = _interopRequireDefault(__nccwpck_require__(6826)); - // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -var extractHashtagsWithIndices = function extractHashtagsWithIndices(text, options) { - if (!options) { - options = { - checkUrlOverlap: true - }; - } - - if (!text || !text.match(_hashSigns["default"])) { - return []; - } - - var tags = []; - text.replace(_validHashtag["default"], function (match, before, hash, hashText, offset, chunk) { - var after = chunk.slice(offset + match.length); - - if (after.match(_endHashtagMatch["default"])) { - return; - } - - var startPosition = offset + before.length; - var endPosition = startPosition + hashText.length + 1; - tags.push({ - hashtag: hashText, - indices: [startPosition, endPosition] - }); - }); - - if (options.checkUrlOverlap) { - // also extract URL entities - var urls = (0, _extractUrlsWithIndices["default"])(text); +var urlHasProtocol = /^https?:\/\//i; +var _default = urlHasProtocol; +exports["default"] = _default; +module.exports = exports.default; - if (urls.length > 0) { - var entities = tags.concat(urls); // remove overlap +/***/ }), +/* 655 */ +/***/ (function(module, exports, __webpack_require__) { - (0, _removeOverlappingEntities["default"])(entities); // only push back hashtags +"use strict"; - tags = []; - for (var i = 0; i < entities.length; i++) { - if (entities[i].hashtag) { - tags.push(entities[i]); - } - } - } - } +var _interopRequireDefault = __webpack_require__(764); - return tags; -}; +__webpack_require__(493); -var _default = extractHashtagsWithIndices; +Object.defineProperty(exports, "__esModule", { + value: true +}); exports["default"] = _default; -module.exports = exports.default; -/***/ }), +__webpack_require__(549); -/***/ 6167: -/***/ ((module, exports, __nccwpck_require__) => { +__webpack_require__(968); -"use strict"; +__webpack_require__(809); +var _htmlEscape = _interopRequireDefault(__webpack_require__(63)); -__nccwpck_require__(6880); +var _stringSupplant = _interopRequireDefault(__webpack_require__(57)); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -var BOOLEAN_ATTRIBUTES = { - disabled: true, - readonly: true, - multiple: true, - checked: true -}; // Options which should not be passed as HTML attributes - -var OPTIONS_NOT_ATTRIBUTES = { - urlClass: true, - listClass: true, - usernameClass: true, - hashtagClass: true, - cashtagClass: true, - usernameUrlBase: true, - listUrlBase: true, - hashtagUrlBase: true, - cashtagUrlBase: true, - usernameUrlBlock: true, - listUrlBlock: true, - hashtagUrlBlock: true, - linkUrlBlock: true, - usernameIncludeSymbol: true, - suppressLists: true, - suppressNoFollow: true, - targetBlank: true, - suppressDataScreenName: true, - urlEntities: true, - symbolTag: true, - textWithSymbolTag: true, - urlTarget: true, - invisibleTagAttrs: true, - linkAttributeBlock: true, - linkTextBlock: true, - htmlEscapeNonEntities: true -}; - -function _default(options) { - var htmlAttrs = {}; +function _default(entity, options) { + var displayUrl = entity.display_url; + var expandedUrl = entity.expanded_url; // Goal: If a user copies and pastes a tweet containing t.co'ed link, the resulting paste + // should contain the full original URL (expanded_url), not the display URL. + // + // Method: Whenever possible, we actually emit HTML that contains expanded_url, and use + // font-size:0 to hide those parts that should not be displayed (because they are not part of display_url). + // Elements with font-size:0 get copied even though they are not visible. + // Note that display:none doesn't work here. Elements with display:none don't get copied. + // + // Additionally, we want to *display* ellipses, but we don't want them copied. To make this happen we + // wrap the ellipses in a tco-ellipsis class and provide an onCopy handler that sets display:none on + // everything with the tco-ellipsis class. + // + // Exception: pic.twitter.com images, for which expandedUrl = "https://twitter.com/#!/username/status/1234/photo/1 + // For those URLs, display_url is not a substring of expanded_url, so we don't do anything special to render the elided parts. + // For a pic.twitter.com URL, the only elided part will be the "https://", so this is fine. - for (var k in options) { - var v = options[k]; + var displayUrlSansEllipses = displayUrl.replace(/…/g, ''); // We have to disregard ellipses for matching + // Note: we currently only support eliding parts of the URL at the beginning or the end. + // Eventually we may want to elide parts of the URL in the *middle*. If so, this code will + // become more complicated. We will probably want to create a regexp out of display URL, + // replacing every ellipsis with a ".*". - if (OPTIONS_NOT_ATTRIBUTES[k]) { - continue; - } + if (expandedUrl.indexOf(displayUrlSansEllipses) != -1) { + var displayUrlIndex = expandedUrl.indexOf(displayUrlSansEllipses); + var v = { + displayUrlSansEllipses: displayUrlSansEllipses, + // Portion of expandedUrl that precedes the displayUrl substring + beforeDisplayUrl: expandedUrl.substr(0, displayUrlIndex), + // Portion of expandedUrl that comes after displayUrl + afterDisplayUrl: expandedUrl.substr(displayUrlIndex + displayUrlSansEllipses.length), + precedingEllipsis: displayUrl.match(/^…/) ? '…' : '', + followingEllipsis: displayUrl.match(/…$/) ? '…' : '' + }; - if (BOOLEAN_ATTRIBUTES[k]) { - v = v ? k : null; - } + for (var k in v) { + if (v.hasOwnProperty(k)) { + v[k] = (0, _htmlEscape["default"])(v[k]); + } + } // As an example: The user tweets "hi http://longdomainname.com/foo" + // This gets shortened to "hi http://t.co/xyzabc", with display_url = "…nname.com/foo" + // This will get rendered as: + // + // … + // + // http://longdomai + // + // + // nname.com/foo + // + // + //   + // … + // - if (v == null) { - continue; - } - htmlAttrs[k] = v; + v['invisible'] = options.invisibleTagAttrs; + return (0, _stringSupplant["default"])("#{precedingEllipsis} #{beforeDisplayUrl}#{displayUrlSansEllipses}#{afterDisplayUrl} #{followingEllipsis}", v); } - return htmlAttrs; + return displayUrl; } module.exports = exports.default; /***/ }), +/* 656 */, +/* 657 */, +/* 658 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { -/***/ 10: -/***/ ((module, exports, __nccwpck_require__) => { - -"use strict"; - - -var _interopRequireDefault = __nccwpck_require__(3286); - -__nccwpck_require__(6880); - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; +var aws4 = exports, + url = __webpack_require__(835), + querystring = __webpack_require__(191), + crypto = __webpack_require__(417), + lru = __webpack_require__(951), + credentialsCache = lru(1000) -var _extractMentionsWithIndices = _interopRequireDefault(__nccwpck_require__(172)); +// http://docs.amazonwebservices.com/general/latest/gr/signature-version-4.html -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text) { - var screenNamesOnly = [], - screenNamesWithIndices = (0, _extractMentionsWithIndices["default"])(text); +function hmac(key, string, encoding) { + return crypto.createHmac('sha256', key).update(string, 'utf8').digest(encoding) +} - for (var i = 0; i < screenNamesWithIndices.length; i++) { - var screenName = screenNamesWithIndices[i].screenName; - screenNamesOnly.push(screenName); - } +function hash(string, encoding) { + return crypto.createHash('sha256').update(string, 'utf8').digest(encoding) +} - return screenNamesOnly; +// This function assumes the string has already been percent encoded +function encodeRfc3986(urlEncodedString) { + return urlEncodedString.replace(/[!'()*]/g, function(c) { + return '%' + c.charCodeAt(0).toString(16).toUpperCase() + }) } -module.exports = exports.default; +// request: { path | body, [host], [method], [headers], [service], [region] } +// credentials: { accessKeyId, secretAccessKey, [sessionToken] } +function RequestSigner(request, credentials) { -/***/ }), + if (typeof request === 'string') request = url.parse(request) -/***/ 2895: -/***/ ((module, exports, __nccwpck_require__) => { + var headers = request.headers = (request.headers || {}), + hostParts = this.matchHost(request.hostname || request.host || headers.Host || headers.host) -"use strict"; + this.request = request + this.credentials = credentials || this.defaultCredentials() + this.service = request.service || hostParts[0] || '' + this.region = request.region || hostParts[1] || 'us-east-1' -var _interopRequireDefault = __nccwpck_require__(3286); + // SES uses a different domain from the service name + if (this.service === 'email') this.service = 'ses' -__nccwpck_require__(6880); + if (!request.method && request.body) + request.method = 'POST' -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; + if (!headers.Host && !headers.host) { + headers.Host = request.hostname || request.host || this.createHost() -__nccwpck_require__(6764); + // If a port is specified explicitly, use it as is + if (request.port) + headers.Host += ':' + request.port + } + if (!request.hostname && !request.host) + request.hostname = headers.Host || headers.host -__nccwpck_require__(4931); + this.isCodeCommitGit = this.service === 'codecommit' && request.method === 'GIT' +} -var _atSigns = _interopRequireDefault(__nccwpck_require__(6683)); +RequestSigner.prototype.matchHost = function(host) { + var match = (host || '').match(/([^\.]+)\.(?:([^\.]*)\.)?amazonaws\.com(\.cn)?$/) + var hostParts = (match || []).slice(1, 3) -var _endMentionMatch = _interopRequireDefault(__nccwpck_require__(2240)); + // ES's hostParts are sometimes the other way round, if the value that is expected + // to be region equals ‘es’ switch them back + // e.g. search-cluster-name-aaaa00aaaa0aaa0aaaaaaa0aaa.us-east-1.es.amazonaws.com + if (hostParts[1] === 'es') + hostParts = hostParts.reverse() -var _validMentionOrList = _interopRequireDefault(__nccwpck_require__(6882)); + return hostParts +} -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text) { - if (!text || !text.match(_atSigns["default"])) { - return []; - } +// http://docs.aws.amazon.com/general/latest/gr/rande.html +RequestSigner.prototype.isSingleRegion = function() { + // Special case for S3 and SimpleDB in us-east-1 + if (['s3', 'sdb'].indexOf(this.service) >= 0 && this.region === 'us-east-1') return true - var possibleNames = []; - text.replace(_validMentionOrList["default"], function (match, before, atSign, screenName, slashListname, offset, chunk) { - var after = chunk.slice(offset + match.length); + return ['cloudfront', 'ls', 'route53', 'iam', 'importexport', 'sts'] + .indexOf(this.service) >= 0 +} - if (!after.match(_endMentionMatch["default"])) { - slashListname = slashListname || ''; - var startPosition = offset + before.length; - var endPosition = startPosition + screenName.length + slashListname.length + 1; - possibleNames.push({ - screenName: screenName, - listSlug: slashListname, - indices: [startPosition, endPosition] - }); - } - }); - return possibleNames; +RequestSigner.prototype.createHost = function() { + var region = this.isSingleRegion() ? '' : + (this.service === 's3' && this.region !== 'us-east-1' ? '-' : '.') + this.region, + service = this.service === 'ses' ? 'email' : this.service + return service + region + '.amazonaws.com' } -module.exports = exports.default; +RequestSigner.prototype.prepareRequest = function() { + this.parsePath() -/***/ }), + var request = this.request, headers = request.headers, query -/***/ 172: -/***/ ((module, exports, __nccwpck_require__) => { + if (request.signQuery) { -"use strict"; + this.parsedPath.query = query = this.parsedPath.query || {} + if (this.credentials.sessionToken) + query['X-Amz-Security-Token'] = this.credentials.sessionToken -var _interopRequireDefault = __nccwpck_require__(3286); + if (this.service === 's3' && !query['X-Amz-Expires']) + query['X-Amz-Expires'] = 86400 -__nccwpck_require__(6880); + if (query['X-Amz-Date']) + this.datetime = query['X-Amz-Date'] + else + query['X-Amz-Date'] = this.getDateTime() -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; + query['X-Amz-Algorithm'] = 'AWS4-HMAC-SHA256' + query['X-Amz-Credential'] = this.credentials.accessKeyId + '/' + this.credentialString() + query['X-Amz-SignedHeaders'] = this.signedHeaders() -var _extractMentionsOrListsWithIndices = _interopRequireDefault(__nccwpck_require__(2895)); + } else { -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text) { - var mentions = []; - var mentionOrList; - var mentionsOrLists = (0, _extractMentionsOrListsWithIndices["default"])(text); + if (!request.doNotModifyHeaders && !this.isCodeCommitGit) { + if (request.body && !headers['Content-Type'] && !headers['content-type']) + headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=utf-8' - for (var i = 0; i < mentionsOrLists.length; i++) { - mentionOrList = mentionsOrLists[i]; + if (request.body && !headers['Content-Length'] && !headers['content-length']) + headers['Content-Length'] = Buffer.byteLength(request.body) - if (mentionOrList.listSlug === '') { - mentions.push({ - screenName: mentionOrList.screenName, - indices: mentionOrList.indices - }); - } - } + if (this.credentials.sessionToken && !headers['X-Amz-Security-Token'] && !headers['x-amz-security-token']) + headers['X-Amz-Security-Token'] = this.credentials.sessionToken - return mentions; -} + if (this.service === 's3' && !headers['X-Amz-Content-Sha256'] && !headers['x-amz-content-sha256']) + headers['X-Amz-Content-Sha256'] = hash(this.request.body || '', 'hex') -module.exports = exports.default; + if (headers['X-Amz-Date'] || headers['x-amz-date']) + this.datetime = headers['X-Amz-Date'] || headers['x-amz-date'] + else + headers['X-Amz-Date'] = this.getDateTime() + } -/***/ }), + delete headers.Authorization + delete headers.authorization + } +} -/***/ 9043: -/***/ ((module, exports, __nccwpck_require__) => { +RequestSigner.prototype.sign = function() { + if (!this.parsedPath) this.prepareRequest() -"use strict"; + if (this.request.signQuery) { + this.parsedPath.query['X-Amz-Signature'] = this.signature() + } else { + this.request.headers.Authorization = this.authHeader() + } + this.request.path = this.formatPath() -var _interopRequireDefault = __nccwpck_require__(3286); + return this.request +} -__nccwpck_require__(6880); +RequestSigner.prototype.getDateTime = function() { + if (!this.datetime) { + var headers = this.request.headers, + date = new Date(headers.Date || headers.date || new Date) -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; + this.datetime = date.toISOString().replace(/[:\-]|\.\d{3}/g, '') -__nccwpck_require__(7662); + // Remove the trailing 'Z' on the timestamp string for CodeCommit git access + if (this.isCodeCommitGit) this.datetime = this.datetime.slice(0, -1) + } + return this.datetime +} -__nccwpck_require__(4931); +RequestSigner.prototype.getDate = function() { + return this.getDateTime().substr(0, 8) +} -var _endMentionMatch = _interopRequireDefault(__nccwpck_require__(2240)); +RequestSigner.prototype.authHeader = function() { + return [ + 'AWS4-HMAC-SHA256 Credential=' + this.credentials.accessKeyId + '/' + this.credentialString(), + 'SignedHeaders=' + this.signedHeaders(), + 'Signature=' + this.signature(), + ].join(', ') +} -var _validReply = _interopRequireDefault(__nccwpck_require__(2575)); +RequestSigner.prototype.signature = function() { + var date = this.getDate(), + cacheKey = [this.credentials.secretAccessKey, date, this.region, this.service].join(), + kDate, kRegion, kService, kCredentials = credentialsCache.get(cacheKey) + if (!kCredentials) { + kDate = hmac('AWS4' + this.credentials.secretAccessKey, date) + kRegion = hmac(kDate, this.region) + kService = hmac(kRegion, this.service) + kCredentials = hmac(kService, 'aws4_request') + credentialsCache.set(cacheKey, kCredentials) + } + return hmac(kCredentials, this.stringToSign(), 'hex') +} -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text) { - if (!text) { - return null; +RequestSigner.prototype.stringToSign = function() { + return [ + 'AWS4-HMAC-SHA256', + this.getDateTime(), + this.credentialString(), + hash(this.canonicalString(), 'hex'), + ].join('\n') +} + +RequestSigner.prototype.canonicalString = function() { + if (!this.parsedPath) this.prepareRequest() + + var pathStr = this.parsedPath.path, + query = this.parsedPath.query, + headers = this.request.headers, + queryStr = '', + normalizePath = this.service !== 's3', + decodePath = this.service === 's3' || this.request.doNotEncodePath, + decodeSlashesInPath = this.service === 's3', + firstValOnly = this.service === 's3', + bodyHash + + if (this.service === 's3' && this.request.signQuery) { + bodyHash = 'UNSIGNED-PAYLOAD' + } else if (this.isCodeCommitGit) { + bodyHash = '' + } else { + bodyHash = headers['X-Amz-Content-Sha256'] || headers['x-amz-content-sha256'] || + hash(this.request.body || '', 'hex') + } + + if (query) { + queryStr = encodeRfc3986(querystring.stringify(Object.keys(query).sort().reduce(function(obj, key) { + if (!key) return obj + obj[key] = !Array.isArray(query[key]) ? query[key] : + (firstValOnly ? query[key][0] : query[key].slice().sort()) + return obj + }, {}))) + } + if (pathStr !== '/') { + if (normalizePath) pathStr = pathStr.replace(/\/{2,}/g, '/') + pathStr = pathStr.split('/').reduce(function(path, piece) { + if (normalizePath && piece === '..') { + path.pop() + } else if (!normalizePath || piece !== '.') { + if (decodePath) piece = decodeURIComponent(piece) + path.push(encodeRfc3986(encodeURIComponent(piece))) + } + return path + }, []).join('/') + if (pathStr[0] !== '/') pathStr = '/' + pathStr + if (decodeSlashesInPath) pathStr = pathStr.replace(/%2F/g, '/') } - var possibleScreenName = text.match(_validReply["default"]); + return [ + this.request.method || 'GET', + pathStr, + queryStr, + this.canonicalHeaders() + '\n', + this.signedHeaders(), + bodyHash, + ].join('\n') +} - if (!possibleScreenName || RegExp.rightContext.match(_endMentionMatch["default"])) { - return null; +RequestSigner.prototype.canonicalHeaders = function() { + var headers = this.request.headers + function trimAll(header) { + return header.toString().trim().replace(/\s+/g, ' ') } + return Object.keys(headers) + .sort(function(a, b) { return a.toLowerCase() < b.toLowerCase() ? -1 : 1 }) + .map(function(key) { return key.toLowerCase() + ':' + trimAll(headers[key]) }) + .join('\n') +} - return possibleScreenName[1]; +RequestSigner.prototype.signedHeaders = function() { + return Object.keys(this.request.headers) + .map(function(key) { return key.toLowerCase() }) + .sort() + .join(';') } -module.exports = exports.default; +RequestSigner.prototype.credentialString = function() { + return [ + this.getDate(), + this.region, + this.service, + 'aws4_request', + ].join('/') +} -/***/ }), +RequestSigner.prototype.defaultCredentials = function() { + var env = process.env + return { + accessKeyId: env.AWS_ACCESS_KEY_ID || env.AWS_ACCESS_KEY, + secretAccessKey: env.AWS_SECRET_ACCESS_KEY || env.AWS_SECRET_KEY, + sessionToken: env.AWS_SESSION_TOKEN, + } +} -/***/ 4419: -/***/ ((module, exports, __nccwpck_require__) => { +RequestSigner.prototype.parsePath = function() { + var path = this.request.path || '/', + queryIx = path.indexOf('?'), + query = null -"use strict"; + if (queryIx >= 0) { + query = querystring.parse(path.slice(queryIx + 1)) + path = path.slice(0, queryIx) + } + // S3 doesn't always encode characters > 127 correctly and + // all services don't encode characters > 255 correctly + // So if there are non-reserved chars (and it's not already all % encoded), just encode them all + if (/[^0-9A-Za-z!'()*\-._~%/]/.test(path)) { + path = path.split('/').map(function(piece) { + return encodeURIComponent(decodeURIComponent(piece)) + }).join('/') + } -var _interopRequireDefault = __nccwpck_require__(3286); + this.parsedPath = { + path: path, + query: query, + } +} -__nccwpck_require__(6880); +RequestSigner.prototype.formatPath = function() { + var path = this.parsedPath.path, + query = this.parsedPath.query -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; + if (!query) return path -var _extractUrlsWithIndices = _interopRequireDefault(__nccwpck_require__(2429)); + // Services don't support empty query string keys + if (query[''] != null) delete query[''] -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text, options) { - var urlsOnly = []; - var urlsWithIndices = (0, _extractUrlsWithIndices["default"])(text, options); + return path + '?' + encodeRfc3986(querystring.stringify(query)) +} - for (var i = 0; i < urlsWithIndices.length; i++) { - urlsOnly.push(urlsWithIndices[i].url); - } +aws4.RequestSigner = RequestSigner - return urlsOnly; +aws4.sign = function(request, credentials) { + return new RequestSigner(request, credentials).sign() } -module.exports = exports.default; /***/ }), - -/***/ 2429: -/***/ ((module, exports, __nccwpck_require__) => { +/* 659 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { "use strict"; -var _interopRequireDefault = __nccwpck_require__(3286); - -__nccwpck_require__(6880); - -Object.defineProperty(exports, "__esModule", ({ +Object.defineProperty(exports, "__esModule", { value: true -})); -exports["default"] = void 0; - -__nccwpck_require__(8074); - -__nccwpck_require__(6764); - -__nccwpck_require__(7662); - -__nccwpck_require__(4931); - -var _extractUrl = _interopRequireDefault(__nccwpck_require__(9871)); - -var _invalidUrlWithoutProtocolPrecedingChars = _interopRequireDefault(__nccwpck_require__(4130)); - -var _idna = _interopRequireDefault(__nccwpck_require__(770)); - -var _validAsciiDomain = _interopRequireDefault(__nccwpck_require__(3598)); - -var _validTcoUrl = _interopRequireDefault(__nccwpck_require__(1527)); +}); +exports.default = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var DEFAULT_PROTOCOL = 'https://'; -var DEFAULT_PROTOCOL_OPTIONS = { - extractUrlsWithoutProtocol: true -}; -var MAX_URL_LENGTH = 4096; -var MAX_TCO_SLUG_LENGTH = 40; +var _crypto = _interopRequireDefault(__webpack_require__(417)); -var extractUrlsWithIndices = function extractUrlsWithIndices(text) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_PROTOCOL_OPTIONS; +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - if (!text || (options.extractUrlsWithoutProtocol ? !text.match(/\./) : !text.match(/:/))) { - return []; +function md5(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); } - var urls = []; - - var _loop = function _loop() { - var before = RegExp.$2; - var url = RegExp.$3; - var protocol = RegExp.$4; - var domain = RegExp.$5; - var path = RegExp.$7; - var endPosition = _extractUrl["default"].lastIndex; - var startPosition = endPosition - url.length; - - if (!isValidUrl(url, protocol || DEFAULT_PROTOCOL, domain)) { - return "continue"; - } // extract ASCII-only domains. - - - if (!protocol) { - if (!options.extractUrlsWithoutProtocol || before.match(_invalidUrlWithoutProtocolPrecedingChars["default"])) { - return "continue"; - } - - var lastUrl = null; - var asciiEndPosition = 0; - domain.replace(_validAsciiDomain["default"], function (asciiDomain) { - var asciiStartPosition = domain.indexOf(asciiDomain, asciiEndPosition); - asciiEndPosition = asciiStartPosition + asciiDomain.length; - lastUrl = { - url: asciiDomain, - indices: [startPosition + asciiStartPosition, startPosition + asciiEndPosition] - }; - urls.push(lastUrl); - }); // no ASCII-only domain found. Skip the entire URL. - - if (lastUrl == null) { - return "continue"; - } // lastUrl only contains domain. Need to add path and query if they exist. - + return _crypto.default.createHash('md5').update(bytes).digest(); +} - if (path) { - lastUrl.url = url.replace(domain, lastUrl.url); - lastUrl.indices[1] = endPosition; - } - } else { - // In the case of t.co URLs, don't allow additional path characters. - if (url.match(_validTcoUrl["default"])) { - var tcoUrlSlug = RegExp.$1; +var _default = md5; +exports.default = _default; - if (tcoUrlSlug && tcoUrlSlug.length > MAX_TCO_SLUG_LENGTH) { - return "continue"; - } else { - url = RegExp.lastMatch; - endPosition = startPosition + url.length; - } - } +/***/ }), +/* 660 */ +/***/ (function(module, exports, __webpack_require__) { - urls.push({ - url: url, - indices: [startPosition, endPosition] - }); - } - }; +"use strict"; - while (_extractUrl["default"].exec(text)) { - var _ret = _loop(); - if (_ret === "continue") continue; - } +var _interopRequireDefault = __webpack_require__(764); - return urls; -}; +__webpack_require__(493); -var isValidUrl = function isValidUrl(url, protocol, domain) { - var urlLength = url.length; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; - var punycodeEncodedDomain = _idna["default"].toAscii(domain); +var _clone = _interopRequireDefault(__webpack_require__(582)); - if (!punycodeEncodedDomain || !punycodeEncodedDomain.length) { - return false; +var _htmlEscape = _interopRequireDefault(__webpack_require__(63)); + +var _linkToTextWithSymbol = _interopRequireDefault(__webpack_require__(900)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(entity, text, options) { + var at = text.substring(entity.indices[0], entity.indices[0] + 1); + var user = (0, _htmlEscape["default"])(entity.screenName); + var slashListname = (0, _htmlEscape["default"])(entity.listSlug); + var isList = entity.listSlug && !options.suppressLists; + var attrs = (0, _clone["default"])(options.htmlAttrs || {}); + attrs['class'] = isList ? options.listClass : options.usernameClass; + attrs.href = isList ? options.listUrlBase + user + slashListname : options.usernameUrlBase + user; + + if (!isList && !options.suppressDataScreenName) { + attrs['data-screen-name'] = user; } - urlLength = urlLength + punycodeEncodedDomain.length - domain.length; - return protocol.length + urlLength <= MAX_URL_LENGTH; -}; + if (options.targetBlank) { + attrs.target = '_blank'; + } + + return (0, _linkToTextWithSymbol["default"])(entity, at, isList ? user + slashListname : user, attrs, options); +} -var _default = extractUrlsWithIndices; -exports["default"] = _default; module.exports = exports.default; /***/ }), - -/***/ 7425: -/***/ ((module, exports, __nccwpck_require__) => { +/* 661 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var _interopRequireDefault = __nccwpck_require__(3286); +var _interopRequireDefault = __webpack_require__(764); -__nccwpck_require__(6880); +__webpack_require__(493); -Object.defineProperty(exports, "__esModule", ({ +Object.defineProperty(exports, "__esModule", { value: true -})); +}); exports["default"] = void 0; -var _configs = _interopRequireDefault(__nccwpck_require__(6290)); - -var _extractUrlsWithIndices = _interopRequireDefault(__nccwpck_require__(2429)); +var _cashtag = _interopRequireDefault(__webpack_require__(728)); -var _getCharacterWeight = _interopRequireDefault(__nccwpck_require__(8606)); +var _punct = _interopRequireDefault(__webpack_require__(412)); -var _modifyIndicesFromUTF16ToUnicode = _interopRequireDefault(__nccwpck_require__(9403)); +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); -var _nonBmpCodePairs = _interopRequireDefault(__nccwpck_require__(1575)); - -var _parseTweet = _interopRequireDefault(__nccwpck_require__(8532)); - -var _urlHasHttps = _interopRequireDefault(__nccwpck_require__(4926)); +var _spaces = _interopRequireDefault(__webpack_require__(61)); // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -var getTweetLength = function getTweetLength(text) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _configs["default"].defaults; - return (0, _parseTweet["default"])(text, options).weightedLength; -}; - -var _default = getTweetLength; +var validCashtag = (0, _regexSupplant["default"])('(^|#{spaces})(\\$)(#{cashtag})(?=$|\\s|[#{punct}])', { + cashtag: _cashtag["default"], + spaces: _spaces["default"], + punct: _punct["default"] +}, 'gi'); +var _default = validCashtag; exports["default"] = _default; module.exports = exports.default; /***/ }), - -/***/ 2091: -/***/ ((module, exports, __nccwpck_require__) => { +/* 662 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var _interopRequireDefault = __nccwpck_require__(3286); +var _interopRequireDefault = __webpack_require__(764); -__nccwpck_require__(6880); +__webpack_require__(493); -Object.defineProperty(exports, "__esModule", ({ +Object.defineProperty(exports, "__esModule", { value: true -})); -exports["default"] = _default; +}); +exports["default"] = void 0; -__nccwpck_require__(6764); +__webpack_require__(277); -var _nonBmpCodePairs = _interopRequireDefault(__nccwpck_require__(1575)); +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 - -/** - * Copied from https://github.com/twitter/twitter-text/blob/master/js/twitter-text.js - */ -function _default(text) { - return text.replace(_nonBmpCodePairs["default"], ' ').length; -} - +var validCCTLD = (0, _regexSupplant["default"])(RegExp('(?:(?:' + '한국|香港|澳門|新加坡|台灣|台湾|中國|中国|გე|ລາວ|ไทย|ලංකා|ഭാരതം|ಭಾರತ|భారత్|சிங்கப்பூர்|இலங்கை|இந்தியா|ଭାରତ|' + 'ભારત|ਭਾਰਤ|ভাৰত|ভারত|বাংলা|भारोत|भारतम्|भारत|ڀارت|پاکستان|موريتانيا|مليسيا|مصر|قطر|فلسطين|عمان|' + 'عراق|سورية|سودان|تونس|بھارت|بارت|ایران|امارات|المغرب|السعودية|الجزائر|البحرين|الاردن|հայ|қаз|' + 'укр|срб|рф|мон|мкд|ею|бел|бг|ευ|ελ|zw|zm|za|yt|ye|ws|wf|vu|vn|vi|vg|ve|vc|va|uz|uy|us|um|uk|' + 'ug|ua|tz|tw|tv|tt|tr|tp|to|tn|tm|tl|tk|tj|th|tg|tf|td|tc|sz|sy|sx|sv|su|st|ss|sr|so|sn|sm|sl|' + 'sk|sj|si|sh|sg|se|sd|sc|sb|sa|rw|ru|rs|ro|re|qa|py|pw|pt|ps|pr|pn|pm|pl|pk|ph|pg|pf|pe|pa|om|' + 'nz|nu|nr|np|no|nl|ni|ng|nf|ne|nc|na|mz|my|mx|mw|mv|mu|mt|ms|mr|mq|mp|mo|mn|mm|ml|mk|mh|mg|mf|' + 'me|md|mc|ma|ly|lv|lu|lt|ls|lr|lk|li|lc|lb|la|kz|ky|kw|kr|kp|kn|km|ki|kh|kg|ke|jp|jo|jm|je|it|' + 'is|ir|iq|io|in|im|il|ie|id|hu|ht|hr|hn|hm|hk|gy|gw|gu|gt|gs|gr|gq|gp|gn|gm|gl|gi|gh|gg|gf|ge|' + 'gd|gb|ga|fr|fo|fm|fk|fj|fi|eu|et|es|er|eh|eg|ee|ec|dz|do|dm|dk|dj|de|cz|cy|cx|cw|cv|cu|cr|co|' + 'cn|cm|cl|ck|ci|ch|cg|cf|cd|cc|ca|bz|by|bw|bv|bt|bs|br|bq|bo|bn|bm|bl|bj|bi|bh|bg|bf|be|bd|bb|' + 'ba|az|ax|aw|au|at|as|ar|aq|ao|an|am|al|ai|ag|af|ae|ad|ac' + ')(?=[^0-9a-zA-Z@+-]|$))')); +var _default = validCCTLD; +exports["default"] = _default; module.exports = exports.default; /***/ }), - -/***/ 4597: -/***/ ((module, exports, __nccwpck_require__) => { +/* 663 */ +/***/ (function(module, __unusedexports, __webpack_require__) { "use strict"; -var _interopRequireDefault = __nccwpck_require__(3286); - -__nccwpck_require__(6880); +var regexpFlags = __webpack_require__(788); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; +var nativeExec = RegExp.prototype.exec; +// This always refers to the native implementation, because the +// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js, +// which loads this file before patching the method. +var nativeReplace = String.prototype.replace; -var _invalidChars = _interopRequireDefault(__nccwpck_require__(8678)); +var patchedExec = nativeExec; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text) { - return _invalidChars["default"].test(text); -} +var LAST_INDEX = 'lastIndex'; -module.exports = exports.default; +var UPDATES_LAST_INDEX_WRONG = (function () { + var re1 = /a/, + re2 = /b*/g; + nativeExec.call(re1, 'a'); + nativeExec.call(re2, 'a'); + return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0; +})(); -/***/ }), +// nonparticipating capturing group, copied from es5-shim's String#split patch. +var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; -/***/ 7334: -/***/ ((module, exports, __nccwpck_require__) => { +var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED; -"use strict"; +if (PATCH) { + patchedExec = function exec(str) { + var re = this; + var lastIndex, reCopy, match, i; + if (NPCG_INCLUDED) { + reCopy = new RegExp('^' + re.source + '$(?!\\s)', regexpFlags.call(re)); + } + if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX]; -var _interopRequireDefault = __nccwpck_require__(3286); + match = nativeExec.call(re, str); -__nccwpck_require__(6880); + if (UPDATES_LAST_INDEX_WRONG && match) { + re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex; + } + if (NPCG_INCLUDED && match && match.length > 1) { + // Fix browsers whose `exec` methods don't consistently return `undefined` + // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/ + // eslint-disable-next-line no-loop-func + nativeReplace.call(match[0], reCopy, function () { + for (i = 1; i < arguments.length - 2; i++) { + if (arguments[i] === undefined) match[i] = undefined; + } + }); + } -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; + return match; + }; +} -var _splitTags = _interopRequireDefault(__nccwpck_require__(7422)); +module.exports = patchedExec; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text, hits, options) { - var defaultHighlightTag = 'em'; - hits = hits || []; - options = options || {}; - if (hits.length === 0) { - return text; - } +/***/ }), +/* 664 */, +/* 665 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { - var tagName = options.tag || defaultHighlightTag, - tags = ["<".concat(tagName, ">"), "")], - chunks = (0, _splitTags["default"])(text), - i, - j, - result = '', - chunkIndex = 0, - chunk = chunks[0], - prevChunksLen = 0, - chunkCursor = 0, - startInChunk = false, - chunkChars = chunk, - flatHits = [], - index, - hit, - tag, - placed, - hitSpot; +"use strict"; - for (i = 0; i < hits.length; i += 1) { - for (j = 0; j < hits[i].length; j += 1) { - flatHits.push(hits[i][j]); +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.summary = exports.markdownSummary = exports.SUMMARY_DOCS_URL = exports.SUMMARY_ENV_VAR = void 0; +const os_1 = __webpack_require__(87); +const fs_1 = __webpack_require__(747); +const { access, appendFile, writeFile } = fs_1.promises; +exports.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY'; +exports.SUMMARY_DOCS_URL = 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary'; +class Summary { + constructor() { + this._buffer = ''; + } + /** + * Finds the summary file path from the environment, rejects if env var is not found or file does not exist + * Also checks r/w permissions. + * + * @returns step summary file path + */ + filePath() { + return __awaiter(this, void 0, void 0, function* () { + if (this._filePath) { + return this._filePath; + } + const pathFromEnv = process.env[exports.SUMMARY_ENV_VAR]; + if (!pathFromEnv) { + throw new Error(`Unable to find environment variable for $${exports.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`); + } + try { + yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK); + } + catch (_a) { + throw new Error(`Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`); + } + this._filePath = pathFromEnv; + return this._filePath; + }); + } + /** + * Wraps content in an HTML tag, adding any HTML attributes + * + * @param {string} tag HTML tag to wrap + * @param {string | null} content content within the tag + * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add + * + * @returns {string} content wrapped in HTML element + */ + wrap(tag, content, attrs = {}) { + const htmlAttrs = Object.entries(attrs) + .map(([key, value]) => ` ${key}="${value}"`) + .join(''); + if (!content) { + return `<${tag}${htmlAttrs}>`; + } + return `<${tag}${htmlAttrs}>${content}`; + } + /** + * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default. + * + * @param {SummaryWriteOptions} [options] (optional) options for write operation + * + * @returns {Promise} summary instance + */ + write(options) { + return __awaiter(this, void 0, void 0, function* () { + const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite); + const filePath = yield this.filePath(); + const writeFunc = overwrite ? writeFile : appendFile; + yield writeFunc(filePath, this._buffer, { encoding: 'utf8' }); + return this.emptyBuffer(); + }); } - } - - for (index = 0; index < flatHits.length; index += 1) { - hit = flatHits[index]; - tag = tags[index % 2]; - placed = false; - - while (chunk != null && hit >= prevChunksLen + chunk.length) { - result += chunkChars.slice(chunkCursor); - - if (startInChunk && hit === prevChunksLen + chunkChars.length) { - result += tag; - placed = true; - } - - if (chunks[chunkIndex + 1]) { - result += "<".concat(chunks[chunkIndex + 1], ">"); - } - - prevChunksLen += chunkChars.length; - chunkCursor = 0; - chunkIndex += 2; - chunk = chunks[chunkIndex]; - chunkChars = chunk; - startInChunk = false; + /** + * Clears the summary buffer and wipes the summary file + * + * @returns {Summary} summary instance + */ + clear() { + return __awaiter(this, void 0, void 0, function* () { + return this.emptyBuffer().write({ overwrite: true }); + }); } - - if (!placed && chunk != null) { - hitSpot = hit - prevChunksLen; - result += chunkChars.slice(chunkCursor, hitSpot) + tag; - chunkCursor = hitSpot; - - if (index % 2 === 0) { - startInChunk = true; - } else { - startInChunk = false; - } - } else if (!placed) { - placed = true; - result += tag; + /** + * Returns the current summary buffer as a string + * + * @returns {string} string of summary buffer + */ + stringify() { + return this._buffer; } - } - - if (chunk != null) { - if (chunkCursor < chunkChars.length) { - result += chunkChars.slice(chunkCursor); + /** + * If the summary buffer is empty + * + * @returns {boolen} true if the buffer is empty + */ + isEmptyBuffer() { + return this._buffer.length === 0; } - - for (index = chunkIndex + 1; index < chunks.length; index += 1) { - result += index % 2 === 0 ? chunks[index] : "<".concat(chunks[index], ">"); + /** + * Resets the summary buffer without writing to summary file + * + * @returns {Summary} summary instance + */ + emptyBuffer() { + this._buffer = ''; + return this; + } + /** + * Adds raw text to the summary buffer + * + * @param {string} text content to add + * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false) + * + * @returns {Summary} summary instance + */ + addRaw(text, addEOL = false) { + this._buffer += text; + return addEOL ? this.addEOL() : this; + } + /** + * Adds the operating system-specific end-of-line marker to the buffer + * + * @returns {Summary} summary instance + */ + addEOL() { + return this.addRaw(os_1.EOL); + } + /** + * Adds an HTML codeblock to the summary buffer + * + * @param {string} code content to render within fenced code block + * @param {string} lang (optional) language to syntax highlight code + * + * @returns {Summary} summary instance + */ + addCodeBlock(code, lang) { + const attrs = Object.assign({}, (lang && { lang })); + const element = this.wrap('pre', this.wrap('code', code), attrs); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML list to the summary buffer + * + * @param {string[]} items list of items to render + * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false) + * + * @returns {Summary} summary instance + */ + addList(items, ordered = false) { + const tag = ordered ? 'ol' : 'ul'; + const listItems = items.map(item => this.wrap('li', item)).join(''); + const element = this.wrap(tag, listItems); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML table to the summary buffer + * + * @param {SummaryTableCell[]} rows table rows + * + * @returns {Summary} summary instance + */ + addTable(rows) { + const tableBody = rows + .map(row => { + const cells = row + .map(cell => { + if (typeof cell === 'string') { + return this.wrap('td', cell); + } + const { header, data, colspan, rowspan } = cell; + const tag = header ? 'th' : 'td'; + const attrs = Object.assign(Object.assign({}, (colspan && { colspan })), (rowspan && { rowspan })); + return this.wrap(tag, data, attrs); + }) + .join(''); + return this.wrap('tr', cells); + }) + .join(''); + const element = this.wrap('table', tableBody); + return this.addRaw(element).addEOL(); + } + /** + * Adds a collapsable HTML details element to the summary buffer + * + * @param {string} label text for the closed state + * @param {string} content collapsable content + * + * @returns {Summary} summary instance + */ + addDetails(label, content) { + const element = this.wrap('details', this.wrap('summary', label) + content); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML image tag to the summary buffer + * + * @param {string} src path to the image you to embed + * @param {string} alt text description of the image + * @param {SummaryImageOptions} options (optional) addition image attributes + * + * @returns {Summary} summary instance + */ + addImage(src, alt, options) { + const { width, height } = options || {}; + const attrs = Object.assign(Object.assign({}, (width && { width })), (height && { height })); + const element = this.wrap('img', null, Object.assign({ src, alt }, attrs)); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML section heading element + * + * @param {string} text heading text + * @param {number | string} [level=1] (optional) the heading level, default: 1 + * + * @returns {Summary} summary instance + */ + addHeading(text, level) { + const tag = `h${level}`; + const allowedTag = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag) + ? tag + : 'h1'; + const element = this.wrap(allowedTag, text); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML thematic break (
) to the summary buffer + * + * @returns {Summary} summary instance + */ + addSeparator() { + const element = this.wrap('hr', null); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML line break (
) to the summary buffer + * + * @returns {Summary} summary instance + */ + addBreak() { + const element = this.wrap('br', null); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML blockquote to the summary buffer + * + * @param {string} text quote text + * @param {string} cite (optional) citation url + * + * @returns {Summary} summary instance + */ + addQuote(text, cite) { + const attrs = Object.assign({}, (cite && { cite })); + const element = this.wrap('blockquote', text, attrs); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML anchor tag to the summary buffer + * + * @param {string} text link text/content + * @param {string} href hyperlink + * + * @returns {Summary} summary instance + */ + addLink(text, href) { + const element = this.wrap('a', text, { href }); + return this.addRaw(element).addEOL(); } - } - - return result; } +const _summary = new Summary(); +/** + * @deprecated use `core.summary` + */ +exports.markdownSummary = _summary; +exports.summary = _summary; +//# sourceMappingURL=summary.js.map -module.exports = exports.default; - -/***/ }), - -/***/ 8113: -/***/ ((module, exports, __nccwpck_require__) => { - -"use strict"; - - -__nccwpck_require__(6880); - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; - -__nccwpck_require__(6764); +/***/ }), +/* 666 */, +/* 667 */, +/* 668 */, +/* 669 */ +/***/ (function(module) { -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var HTML_ENTITIES = { - '&': '&', - '>': '>', - '<': '<', - '"': '"', - "'": ''' -}; +module.exports = require("util"); -function _default(text) { - return text && text.replace(/[&"'><]/g, function (character) { - return HTML_ENTITIES[character]; - }); -} +/***/ }), +/* 670 */ +/***/ (function(module) { -module.exports = exports.default; +module.exports = require("buffer"); /***/ }), - -/***/ 6223: -/***/ ((module, exports, __nccwpck_require__) => { +/* 671 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var _interopRequireDefault = __nccwpck_require__(3286); +var _interopRequireDefault = __webpack_require__(764); -__nccwpck_require__(6880); +__webpack_require__(493); -Object.defineProperty(exports, "__esModule", ({ +Object.defineProperty(exports, "__esModule", { value: true -})); +}); exports["default"] = void 0; -var _autoLink = _interopRequireDefault(__nccwpck_require__(6300)); - -var _autoLinkCashtags = _interopRequireDefault(__nccwpck_require__(9915)); - -var _autoLinkEntities = _interopRequireDefault(__nccwpck_require__(1352)); - -var _autoLinkHashtags = _interopRequireDefault(__nccwpck_require__(5165)); - -var _autoLinkUrlsCustom = _interopRequireDefault(__nccwpck_require__(7465)); - -var _autoLinkUsernamesOrLists = _interopRequireDefault(__nccwpck_require__(4240)); - -var _autoLinkWithJSON = _interopRequireDefault(__nccwpck_require__(8478)); - -var _configs = _interopRequireDefault(__nccwpck_require__(6290)); - -var _convertUnicodeIndices = _interopRequireDefault(__nccwpck_require__(1398)); - -var _extractCashtags = _interopRequireDefault(__nccwpck_require__(7456)); - -var _extractCashtagsWithIndices = _interopRequireDefault(__nccwpck_require__(7504)); - -var _extractEntitiesWithIndices = _interopRequireDefault(__nccwpck_require__(7375)); - -var _extractHashtags = _interopRequireDefault(__nccwpck_require__(9422)); - -var _extractHashtagsWithIndices = _interopRequireDefault(__nccwpck_require__(2280)); - -var _extractHtmlAttrsFromOptions = _interopRequireDefault(__nccwpck_require__(6167)); - -var _extractMentions = _interopRequireDefault(__nccwpck_require__(10)); - -var _extractMentionsOrListsWithIndices = _interopRequireDefault(__nccwpck_require__(2895)); - -var _extractMentionsWithIndices = _interopRequireDefault(__nccwpck_require__(172)); - -var _extractReplies = _interopRequireDefault(__nccwpck_require__(9043)); - -var _extractUrls = _interopRequireDefault(__nccwpck_require__(4419)); - -var _extractUrlsWithIndices = _interopRequireDefault(__nccwpck_require__(2429)); - -var _getTweetLength = _interopRequireDefault(__nccwpck_require__(7425)); - -var _getUnicodeTextLength = _interopRequireDefault(__nccwpck_require__(2091)); - -var _hasInvalidCharacters = _interopRequireDefault(__nccwpck_require__(4597)); - -var _hitHighlight = _interopRequireDefault(__nccwpck_require__(7334)); - -var _htmlEscape = _interopRequireDefault(__nccwpck_require__(8113)); - -var _isInvalidTweet = _interopRequireDefault(__nccwpck_require__(4137)); - -var _isValidHashtag = _interopRequireDefault(__nccwpck_require__(9121)); - -var _isValidList = _interopRequireDefault(__nccwpck_require__(9437)); - -var _isValidTweetText = _interopRequireDefault(__nccwpck_require__(946)); - -var _isValidUrl = _interopRequireDefault(__nccwpck_require__(6524)); - -var _isValidUsername = _interopRequireDefault(__nccwpck_require__(9772)); - -var _linkTextWithEntity = _interopRequireDefault(__nccwpck_require__(1543)); - -var _linkToCashtag = _interopRequireDefault(__nccwpck_require__(5583)); - -var _linkToHashtag = _interopRequireDefault(__nccwpck_require__(5537)); - -var _linkToMentionAndList = _interopRequireDefault(__nccwpck_require__(8702)); +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); -var _linkToText = _interopRequireDefault(__nccwpck_require__(3390)); +var _validGeneralUrlPathChars = _interopRequireDefault(__webpack_require__(949)); -var _linkToTextWithSymbol = _interopRequireDefault(__nccwpck_require__(3673)); +var _validUrlBalancedParens = _interopRequireDefault(__webpack_require__(122)); -var _linkToUrl = _interopRequireDefault(__nccwpck_require__(1656)); - -var _modifyIndicesFromUTF16ToUnicode = _interopRequireDefault(__nccwpck_require__(9403)); - -var _modifyIndicesFromUnicodeToUTF = _interopRequireDefault(__nccwpck_require__(1614)); - -var _index = _interopRequireDefault(__nccwpck_require__(4440)); - -var _removeOverlappingEntities = _interopRequireDefault(__nccwpck_require__(9479)); - -var _parseTweet = _interopRequireDefault(__nccwpck_require__(8532)); - -var _splitTags = _interopRequireDefault(__nccwpck_require__(7422)); - -var _standardizeIndices = _interopRequireDefault(__nccwpck_require__(1232)); - -var _tagAttrs = _interopRequireDefault(__nccwpck_require__(3995)); +var _validUrlPathEndingChars = _interopRequireDefault(__webpack_require__(205)); // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -var _default = { - autoLink: _autoLink["default"], - autoLinkCashtags: _autoLinkCashtags["default"], - autoLinkEntities: _autoLinkEntities["default"], - autoLinkHashtags: _autoLinkHashtags["default"], - autoLinkUrlsCustom: _autoLinkUrlsCustom["default"], - autoLinkUsernamesOrLists: _autoLinkUsernamesOrLists["default"], - autoLinkWithJSON: _autoLinkWithJSON["default"], - configs: _configs["default"], - convertUnicodeIndices: _convertUnicodeIndices["default"], - extractCashtags: _extractCashtags["default"], - extractCashtagsWithIndices: _extractCashtagsWithIndices["default"], - extractEntitiesWithIndices: _extractEntitiesWithIndices["default"], - extractHashtags: _extractHashtags["default"], - extractHashtagsWithIndices: _extractHashtagsWithIndices["default"], - extractHtmlAttrsFromOptions: _extractHtmlAttrsFromOptions["default"], - extractMentions: _extractMentions["default"], - extractMentionsOrListsWithIndices: _extractMentionsOrListsWithIndices["default"], - extractMentionsWithIndices: _extractMentionsWithIndices["default"], - extractReplies: _extractReplies["default"], - extractUrls: _extractUrls["default"], - extractUrlsWithIndices: _extractUrlsWithIndices["default"], - getTweetLength: _getTweetLength["default"], - getUnicodeTextLength: _getUnicodeTextLength["default"], - hasInvalidCharacters: _hasInvalidCharacters["default"], - hitHighlight: _hitHighlight["default"], - htmlEscape: _htmlEscape["default"], - isInvalidTweet: _isInvalidTweet["default"], - isValidHashtag: _isValidHashtag["default"], - isValidList: _isValidList["default"], - isValidTweetText: _isValidTweetText["default"], - isValidUrl: _isValidUrl["default"], - isValidUsername: _isValidUsername["default"], - linkTextWithEntity: _linkTextWithEntity["default"], - linkToCashtag: _linkToCashtag["default"], - linkToHashtag: _linkToHashtag["default"], - linkToMentionAndList: _linkToMentionAndList["default"], - linkToText: _linkToText["default"], - linkToTextWithSymbol: _linkToTextWithSymbol["default"], - linkToUrl: _linkToUrl["default"], - modifyIndicesFromUTF16ToUnicode: _modifyIndicesFromUTF16ToUnicode["default"], - modifyIndicesFromUnicodeToUTF16: _modifyIndicesFromUnicodeToUTF["default"], - regexen: _index["default"], - removeOverlappingEntities: _removeOverlappingEntities["default"], - parseTweet: _parseTweet["default"], - splitTags: _splitTags["default"], - standardizeIndices: _standardizeIndices["default"], - tagAttrs: _tagAttrs["default"] -}; +// Allow @ in a url, but only in the middle. Catch things like http://example.com/@user/ +var validUrlPath = (0, _regexSupplant["default"])('(?:' + '(?:' + '#{validGeneralUrlPathChars}*' + '(?:#{validUrlBalancedParens}#{validGeneralUrlPathChars}*)*' + '#{validUrlPathEndingChars}' + ')|(?:@#{validGeneralUrlPathChars}+/)' + ')', { + validGeneralUrlPathChars: _validGeneralUrlPathChars["default"], + validUrlBalancedParens: _validUrlBalancedParens["default"], + validUrlPathEndingChars: _validUrlPathEndingChars["default"] +}, 'i'); +var _default = validUrlPath; exports["default"] = _default; module.exports = exports.default; /***/ }), +/* 672 */ +/***/ (function(module) { + +module.exports = {"$id":"afterRequest.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","optional":true,"required":["lastAccess","eTag","hitCount"],"properties":{"expires":{"type":"string","pattern":"^(\\d{4})(-)?(\\d\\d)(-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)(:)?(\\d\\d)(\\.\\d+)?(Z|([+-])(\\d\\d)(:)?(\\d\\d))?"},"lastAccess":{"type":"string","pattern":"^(\\d{4})(-)?(\\d\\d)(-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)(:)?(\\d\\d)(\\.\\d+)?(Z|([+-])(\\d\\d)(:)?(\\d\\d))?"},"eTag":{"type":"string"},"hitCount":{"type":"integer"},"comment":{"type":"string"}}}; + +/***/ }), +/* 673 */ +/***/ (function(module) { + +"use strict"; + +module.exports = function generate_not(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + $it.level++; + var $nextValid = 'valid' + $it.level; + if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) { + $it.schema = $schema; + $it.schemaPath = $schemaPath; + $it.errSchemaPath = $errSchemaPath; + out += ' var ' + ($errs) + ' = errors; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + $it.createErrors = false; + var $allErrorsOption; + if ($it.opts.allErrors) { + $allErrorsOption = $it.opts.allErrors; + $it.opts.allErrors = false; + } + out += ' ' + (it.validate($it)) + ' '; + $it.createErrors = true; + if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption; + it.compositeRule = $it.compositeRule = $wasComposite; + out += ' if (' + ($nextValid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT be valid\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; + if (it.opts.allErrors) { + out += ' } '; + } + } else { + out += ' var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT be valid\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + if ($breakOnError) { + out += ' if (false) { '; + } + } + return out; +} -/***/ 4137: -/***/ ((module, exports, __nccwpck_require__) => { - -"use strict"; +/***/ }), +/* 674 */, +/* 675 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -var _interopRequireDefault = __nccwpck_require__(3286); +// most Object methods by ES6 should accept primitives +var $export = __webpack_require__(195); +var core = __webpack_require__(245); +var fails = __webpack_require__(971); +module.exports = function (KEY, exec) { + var fn = (core.Object || {})[KEY] || Object[KEY]; + var exp = {}; + exp[KEY] = exec(fn); + $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp); +}; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; -__nccwpck_require__(6880); +/***/ }), +/* 676 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -__nccwpck_require__(5085); +// 7.2.2 IsArray(argument) +var cof = __webpack_require__(189); +module.exports = Array.isArray || function isArray(arg) { + return cof(arg) == 'Array'; +}; -__nccwpck_require__(5188); -__nccwpck_require__(7461); +/***/ }), +/* 677 */, +/* 678 */, +/* 679 */ +/***/ (function(module) { -__nccwpck_require__(4679); +module.exports = {"$id":"pageTimings.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","properties":{"onContentLoad":{"type":"number","min":-1},"onLoad":{"type":"number","min":-1},"comment":{"type":"string"}}}; -__nccwpck_require__(3747); +/***/ }), +/* 680 */ +/***/ (function(module, exports, __webpack_require__) { -__nccwpck_require__(230); +"use strict"; -__nccwpck_require__(3938); -__nccwpck_require__(571); +var _interopRequireDefault = __webpack_require__(764); -__nccwpck_require__(7103); +__webpack_require__(493); -var _defineProperty2 = _interopRequireDefault(__nccwpck_require__(1814)); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; -var _configs = _interopRequireDefault(__nccwpck_require__(6290)); +__webpack_require__(809); -var _getTweetLength = _interopRequireDefault(__nccwpck_require__(7425)); +__webpack_require__(549); -var _hasInvalidCharacters = _interopRequireDefault(__nccwpck_require__(4597)); +var _atSigns = _interopRequireDefault(__webpack_require__(1)); -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } +var _endMentionMatch = _interopRequireDefault(__webpack_require__(944)); -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } +var _validMentionOrList = _interopRequireDefault(__webpack_require__(50)); +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 function _default(text) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _configs["default"].defaults; - - if (!text) { - return 'empty'; - } - - var mergedOptions = _objectSpread({}, _configs["default"].defaults, {}, options); - - var maxLength = mergedOptions.maxWeightedTweetLength; // Determine max length independent of URL length - - if ((0, _getTweetLength["default"])(text, mergedOptions) > maxLength) { - return 'too_long'; + if (!text || !text.match(_atSigns["default"])) { + return []; } - if ((0, _hasInvalidCharacters["default"])(text)) { - return 'invalid_characters'; - } + var possibleNames = []; + text.replace(_validMentionOrList["default"], function (match, before, atSign, screenName, slashListname, offset, chunk) { + var after = chunk.slice(offset + match.length); - return false; + if (!after.match(_endMentionMatch["default"])) { + slashListname = slashListname || ''; + var startPosition = offset + before.length; + var endPosition = startPosition + screenName.length + slashListname.length + 1; + possibleNames.push({ + screenName: screenName, + listSlug: slashListname, + indices: [startPosition, endPosition] + }); + } + }); + return possibleNames; } module.exports = exports.default; /***/ }), - -/***/ 9121: -/***/ ((module, exports, __nccwpck_require__) => { +/* 681 */, +/* 682 */, +/* 683 */, +/* 684 */ +/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { "use strict"; +// 19.1.3.6 Object.prototype.toString() +var classof = __webpack_require__(324); +var test = {}; +test[__webpack_require__(621)('toStringTag')] = 'z'; +if (test + '' != '[object z]') { + __webpack_require__(976)(Object.prototype, 'toString', function toString() { + return '[object ' + classof(this) + ']'; + }, true); +} -var _interopRequireDefault = __nccwpck_require__(3286); - -__nccwpck_require__(6880); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; +/***/ }), +/* 685 */, +/* 686 */, +/* 687 */ +/***/ (function(module) { -var _extractHashtags = _interopRequireDefault(__nccwpck_require__(9422)); +"use strict"; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(hashtag) { - if (!hashtag) { - return false; +module.exports = function generate_format(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + if (it.opts.format === false) { + if ($breakOnError) { + out += ' if (true) { '; + } + return out; + } + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + var $unknownFormats = it.opts.unknownFormats, + $allowUnknown = Array.isArray($unknownFormats); + if ($isData) { + var $format = 'format' + $lvl, + $isObject = 'isObject' + $lvl, + $formatType = 'formatType' + $lvl; + out += ' var ' + ($format) + ' = formats[' + ($schemaValue) + ']; var ' + ($isObject) + ' = typeof ' + ($format) + ' == \'object\' && !(' + ($format) + ' instanceof RegExp) && ' + ($format) + '.validate; var ' + ($formatType) + ' = ' + ($isObject) + ' && ' + ($format) + '.type || \'string\'; if (' + ($isObject) + ') { '; + if (it.async) { + out += ' var async' + ($lvl) + ' = ' + ($format) + '.async; '; + } + out += ' ' + ($format) + ' = ' + ($format) + '.validate; } if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'string\') || '; + } + out += ' ('; + if ($unknownFormats != 'ignore') { + out += ' (' + ($schemaValue) + ' && !' + ($format) + ' '; + if ($allowUnknown) { + out += ' && self._opts.unknownFormats.indexOf(' + ($schemaValue) + ') == -1 '; + } + out += ') || '; + } + out += ' (' + ($format) + ' && ' + ($formatType) + ' == \'' + ($ruleType) + '\' && !(typeof ' + ($format) + ' == \'function\' ? '; + if (it.async) { + out += ' (async' + ($lvl) + ' ? await ' + ($format) + '(' + ($data) + ') : ' + ($format) + '(' + ($data) + ')) '; + } else { + out += ' ' + ($format) + '(' + ($data) + ') '; + } + out += ' : ' + ($format) + '.test(' + ($data) + '))))) {'; + } else { + var $format = it.formats[$schema]; + if (!$format) { + if ($unknownFormats == 'ignore') { + it.logger.warn('unknown format "' + $schema + '" ignored in schema at path "' + it.errSchemaPath + '"'); + if ($breakOnError) { + out += ' if (true) { '; + } + return out; + } else if ($allowUnknown && $unknownFormats.indexOf($schema) >= 0) { + if ($breakOnError) { + out += ' if (true) { '; + } + return out; + } else { + throw new Error('unknown format "' + $schema + '" is used in schema at path "' + it.errSchemaPath + '"'); + } + } + var $isObject = typeof $format == 'object' && !($format instanceof RegExp) && $format.validate; + var $formatType = $isObject && $format.type || 'string'; + if ($isObject) { + var $async = $format.async === true; + $format = $format.validate; + } + if ($formatType != $ruleType) { + if ($breakOnError) { + out += ' if (true) { '; + } + return out; + } + if ($async) { + if (!it.async) throw new Error('async format in sync schema'); + var $formatRef = 'formats' + it.util.getProperty($schema) + '.validate'; + out += ' if (!(await ' + ($formatRef) + '(' + ($data) + '))) { '; + } else { + out += ' if (! '; + var $formatRef = 'formats' + it.util.getProperty($schema); + if ($isObject) $formatRef += '.validate'; + if (typeof $format == 'function') { + out += ' ' + ($formatRef) + '(' + ($data) + ') '; + } else { + out += ' ' + ($formatRef) + '.test(' + ($data) + ') '; + } + out += ') { '; + } + } + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('format') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { format: '; + if ($isData) { + out += '' + ($schemaValue); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should match format "'; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + (it.util.escapeQuotes($schema)); + } + out += '"\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; } - - var extracted = (0, _extractHashtags["default"])(hashtag); // Should extract the hashtag minus the # sign, hence the .slice(1) - - return extracted.length === 1 && extracted[0] === hashtag.slice(1); + out += ' } '; + if ($breakOnError) { + out += ' else { '; + } + return out; } -module.exports = exports.default; /***/ }), +/* 688 */, +/* 689 */, +/* 690 */ +/***/ (function(module) { + +module.exports = function (bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value: value + }; +}; + -/***/ 9437: -/***/ ((module, exports, __nccwpck_require__) => { +/***/ }), +/* 691 */ +/***/ (function(module) { "use strict"; -var _interopRequireDefault = __nccwpck_require__(3286); +// https://mathiasbynens.be/notes/javascript-encoding +// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode +module.exports = function ucs2length(str) { + var length = 0 + , len = str.length + , pos = 0 + , value; + while (pos < len) { + length++; + value = str.charCodeAt(pos++); + if (value >= 0xD800 && value <= 0xDBFF && pos < len) { + // high surrogate, and there is a next character + value = str.charCodeAt(pos); + if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate + } + } + return length; +}; -__nccwpck_require__(6880); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; +/***/ }), +/* 692 */ +/***/ (function(__unusedmodule, exports) { -__nccwpck_require__(4931); +"use strict"; -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); -var _validMentionOrList = _interopRequireDefault(__nccwpck_require__(6882)); +Object.defineProperty(exports, '__esModule', { value: true }); -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var VALID_LIST_RE = (0, _regexSupplant["default"])(/^#{validMentionOrList}$/, { - validMentionOrList: _validMentionOrList["default"] -}); +class Deprecation extends Error { + constructor(message) { + super(message); // Maintains proper stack trace (only available on V8) -function _default(usernameList) { - var match = usernameList.match(VALID_LIST_RE); // Must have matched and had nothing before or after + /* istanbul ignore next */ - return !!(match && match[1] == '' && match[4]); -} + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } -module.exports = exports.default; + this.name = 'Deprecation'; + } -/***/ }), +} -/***/ 946: -/***/ ((module, exports, __nccwpck_require__) => { +exports.Deprecation = Deprecation; -"use strict"; +/***/ }), +/* 693 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -var _interopRequireDefault = __nccwpck_require__(3286); +var defer = __webpack_require__(504); -__nccwpck_require__(6880); +// API +module.exports = async; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; +/** + * Runs provided callback asynchronously + * even if callback itself is not + * + * @param {function} callback - callback to invoke + * @returns {function} - augmented callback + */ +function async(callback) +{ + var isAsync = false; -var _isInvalidTweet = _interopRequireDefault(__nccwpck_require__(4137)); + // check if async happened + defer(function() { isAsync = true; }); -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text, options) { - return !(0, _isInvalidTweet["default"])(text, options); + return function async_callback(err, result) + { + if (isAsync) + { + callback(err, result); + } + else + { + defer(function nextTick_callback() + { + callback(err, result); + }); + } + }; } -module.exports = exports.default; /***/ }), +/* 694 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 6524: -/***/ ((module, exports, __nccwpck_require__) => { - -"use strict"; - - -var _interopRequireDefault = __nccwpck_require__(3286); - -__nccwpck_require__(6880); - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; +// 7.2.8 IsRegExp(argument) +var isObject = __webpack_require__(956); +var cof = __webpack_require__(189); +var MATCH = __webpack_require__(621)('match'); +module.exports = function (it) { + var isRegExp; + return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp'); +}; -__nccwpck_require__(7662); -__nccwpck_require__(4931); +/***/ }), +/* 695 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -var _validateUrlAuthority = _interopRequireDefault(__nccwpck_require__(9072)); +// all object keys, includes non-enumerable and symbols +var gOPN = __webpack_require__(996); +var gOPS = __webpack_require__(243); +var anObject = __webpack_require__(990); +var Reflect = __webpack_require__(300).Reflect; +module.exports = Reflect && Reflect.ownKeys || function ownKeys(it) { + var keys = gOPN.f(anObject(it)); + var getSymbols = gOPS.f; + return getSymbols ? keys.concat(getSymbols(it)) : keys; +}; -var _validateUrlFragment = _interopRequireDefault(__nccwpck_require__(2769)); -var _validateUrlPath = _interopRequireDefault(__nccwpck_require__(1075)); +/***/ }), +/* 696 */, +/* 697 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { -var _validateUrlQuery = _interopRequireDefault(__nccwpck_require__(1697)); +/* + * extsprintf.js: extended POSIX-style sprintf + */ -var _validateUrlScheme = _interopRequireDefault(__nccwpck_require__(6579)); +var mod_assert = __webpack_require__(357); +var mod_util = __webpack_require__(669); -var _validateUrlUnencoded = _interopRequireDefault(__nccwpck_require__(3907)); +/* + * Public interface + */ +exports.sprintf = jsSprintf; +exports.printf = jsPrintf; +exports.fprintf = jsFprintf; + +/* + * Stripped down version of s[n]printf(3c). We make a best effort to throw an + * exception when given a format string we don't understand, rather than + * ignoring it, so that we won't break existing programs if/when we go implement + * the rest of this. + * + * This implementation currently supports specifying + * - field alignment ('-' flag), + * - zero-pad ('0' flag) + * - always show numeric sign ('+' flag), + * - field width + * - conversions for strings, decimal integers, and floats (numbers). + * - argument size specifiers. These are all accepted but ignored, since + * Javascript has no notion of the physical size of an argument. + * + * Everything else is currently unsupported, most notably precision, unsigned + * numbers, non-decimal numbers, and characters. + */ +function jsSprintf(fmt) +{ + var regex = [ + '([^%]*)', /* normal text */ + '%', /* start of format */ + '([\'\\-+ #0]*?)', /* flags (optional) */ + '([1-9]\\d*)?', /* width (optional) */ + '(\\.([1-9]\\d*))?', /* precision (optional) */ + '[lhjztL]*?', /* length mods (ignored) */ + '([diouxXfFeEgGaAcCsSp%jr])' /* conversion */ + ].join(''); + + var re = new RegExp(regex); + var args = Array.prototype.slice.call(arguments, 1); + var flags, width, precision, conversion; + var left, pad, sign, arg, match; + var ret = ''; + var argn = 1; + + mod_assert.equal('string', typeof (fmt)); + + while ((match = re.exec(fmt)) !== null) { + ret += match[1]; + fmt = fmt.substring(match[0].length); + + flags = match[2] || ''; + width = match[3] || 0; + precision = match[4] || ''; + conversion = match[6]; + left = false; + sign = false; + pad = ' '; + + if (conversion == '%') { + ret += '%'; + continue; + } -var _validateUrlUnicodeAuthority = _interopRequireDefault(__nccwpck_require__(977)); + if (args.length === 0) + throw (new Error('too few args to sprintf')); + + arg = args.shift(); + argn++; + + if (flags.match(/[\' #]/)) + throw (new Error( + 'unsupported flags: ' + flags)); + + if (precision.length > 0) + throw (new Error( + 'non-zero precision not supported')); + + if (flags.match(/-/)) + left = true; + + if (flags.match(/0/)) + pad = '0'; + + if (flags.match(/\+/)) + sign = true; + + switch (conversion) { + case 's': + if (arg === undefined || arg === null) + throw (new Error('argument ' + argn + + ': attempted to print undefined or null ' + + 'as a string')); + ret += doPad(pad, width, left, arg.toString()); + break; + + case 'd': + arg = Math.floor(arg); + /*jsl:fallthru*/ + case 'f': + sign = sign && arg > 0 ? '+' : ''; + ret += sign + doPad(pad, width, left, + arg.toString()); + break; + + case 'x': + ret += doPad(pad, width, left, arg.toString(16)); + break; + + case 'j': /* non-standard */ + if (width === 0) + width = 10; + ret += mod_util.inspect(arg, false, width); + break; + + case 'r': /* non-standard */ + ret += dumpException(arg); + break; + + default: + throw (new Error('unsupported conversion: ' + + conversion)); + } + } -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function isValidMatch(string, regex, optional) { - if (!optional) { - // RegExp["$&"] is the text of the last match - // blank strings are ok, but are falsy, so we check stringiness instead of truthiness - return typeof string === 'string' && string.match(regex) && RegExp['$&'] === string; - } // RegExp["$&"] is the text of the last match + ret += fmt; + return (ret); +} +function jsPrintf() { + var args = Array.prototype.slice.call(arguments); + args.unshift(process.stdout); + jsFprintf.apply(null, args); +} - return !string || string.match(regex) && RegExp['$&'] === string; +function jsFprintf(stream) { + var args = Array.prototype.slice.call(arguments, 1); + return (stream.write(jsSprintf.apply(this, args))); } -function _default(url, unicodeDomains, requireProtocol) { - if (unicodeDomains == null) { - unicodeDomains = true; - } +function doPad(chr, width, left, str) +{ + var ret = str; - if (requireProtocol == null) { - requireProtocol = true; - } + while (ret.length < width) { + if (left) + ret += chr; + else + ret = chr + ret; + } - if (!url) { - return false; - } + return (ret); +} - var urlParts = url.match(_validateUrlUnencoded["default"]); +/* + * This function dumps long stack traces for exceptions having a cause() method. + * See node-verror for an example. + */ +function dumpException(ex) +{ + var ret; - if (!urlParts || urlParts[0] !== url) { - return false; - } + if (!(ex instanceof Error)) + throw (new Error(jsSprintf('invalid type for %%r: %j', ex))); - var scheme = urlParts[1], - authority = urlParts[2], - path = urlParts[3], - query = urlParts[4], - fragment = urlParts[5]; + /* Note that V8 prepends "ex.stack" with ex.toString(). */ + ret = 'EXCEPTION: ' + ex.constructor.name + ': ' + ex.stack; - if (!((!requireProtocol || isValidMatch(scheme, _validateUrlScheme["default"]) && scheme.match(/^https?$/i)) && isValidMatch(path, _validateUrlPath["default"]) && isValidMatch(query, _validateUrlQuery["default"], true) && isValidMatch(fragment, _validateUrlFragment["default"], true))) { - return false; - } + if (ex.cause && typeof (ex.cause) === 'function') { + var cex = ex.cause(); + if (cex) { + ret += '\nCaused by: ' + dumpException(cex); + } + } - return unicodeDomains && isValidMatch(authority, _validateUrlUnicodeAuthority["default"]) || !unicodeDomains && isValidMatch(authority, _validateUrlAuthority["default"]); + return (ret); } -module.exports = exports.default; /***/ }), - -/***/ 9772: -/***/ ((module, exports, __nccwpck_require__) => { +/* 698 */, +/* 699 */, +/* 700 */, +/* 701 */ +/***/ (function(module) { "use strict"; -var _interopRequireDefault = __nccwpck_require__(3286); -__nccwpck_require__(6880); +function isNothing(subject) { + return (typeof subject === 'undefined') || (subject === null); +} -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; -var _extractMentions = _interopRequireDefault(__nccwpck_require__(10)); +function isObject(subject) { + return (typeof subject === 'object') && (subject !== null); +} -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(username) { - if (!username) { - return false; - } - var extracted = (0, _extractMentions["default"])(username); // Should extract the username minus the @ sign, hence the .slice(1) +function toArray(sequence) { + if (Array.isArray(sequence)) return sequence; + else if (isNothing(sequence)) return []; - return extracted.length === 1 && extracted[0] === username.slice(1); + return [ sequence ]; } -module.exports = exports.default; - -/***/ }), -/***/ 2105: -/***/ ((module, exports, __nccwpck_require__) => { +function extend(target, source) { + var index, length, key, sourceKeys; -"use strict"; + if (source) { + sourceKeys = Object.keys(source); + for (index = 0, length = sourceKeys.length; index < length; index += 1) { + key = sourceKeys[index]; + target[key] = source[key]; + } + } -__nccwpck_require__(6880); + return target; +} -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(o) { - var r = {}; +function repeat(string, count) { + var result = '', cycle; - for (var k in o) { - if (o.hasOwnProperty(k)) { - r[k] = o[k]; - } + for (cycle = 0; cycle < count; cycle += 1) { + result += string; } - return r; + return result; } -module.exports = exports.default; -/***/ }), +function isNegativeZero(number) { + return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number); +} + + +module.exports.isNothing = isNothing; +module.exports.isObject = isObject; +module.exports.toArray = toArray; +module.exports.repeat = repeat; +module.exports.isNegativeZero = isNegativeZero; +module.exports.extend = extend; -/***/ 6954: -/***/ ((module, exports, __nccwpck_require__) => { + +/***/ }), +/* 702 */, +/* 703 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -__nccwpck_require__(6880); +__webpack_require__(493); -Object.defineProperty(exports, "__esModule", ({ +Object.defineProperty(exports, "__esModule", { value: true -})); +}); exports["default"] = void 0; - -__nccwpck_require__(7920); - // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 +var invalidUrlWithoutProtocolPrecedingChars = /[-_.\/]$/; +var _default = invalidUrlWithoutProtocolPrecedingChars; +exports["default"] = _default; +module.exports = exports.default; -/** - * Copied from https://github.com/twitter/twitter-text/blob/master/js/twitter-text.js - */ -var convertUnicodeIndices = function convertUnicodeIndices(text, entities, indicesInUTF16) { - if (entities.length === 0) { - return; - } - - var charIndex = 0; - var codePointIndex = 0; // sort entities by start index +/***/ }), +/* 704 */ +/***/ (function(module, __unusedexports, __webpack_require__) { - entities.sort(function (a, b) { - return a.indices[0] - b.indices[0]; - }); - var entityIndex = 0; - var entity = entities[0]; +module.exports = !__webpack_require__(843) && !__webpack_require__(971)(function () { + return Object.defineProperty(__webpack_require__(598)('div'), 'a', { get: function () { return 7; } }).a != 7; +}); - while (charIndex < text.length) { - if (entity.indices[0] === (indicesInUTF16 ? charIndex : codePointIndex)) { - var len = entity.indices[1] - entity.indices[0]; - entity.indices[0] = indicesInUTF16 ? codePointIndex : charIndex; - entity.indices[1] = entity.indices[0] + len; - entityIndex++; - if (entityIndex === entities.length) { - // no more entity - break; +/***/ }), +/* 705 */, +/* 706 */ +/***/ (function(module) { + +"use strict"; + +module.exports = function generate_propertyNames(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + out += 'var ' + ($errs) + ' = errors;'; + if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) { + $it.schema = $schema; + $it.schemaPath = $schemaPath; + $it.errSchemaPath = $errSchemaPath; + var $key = 'key' + $lvl, + $idx = 'idx' + $lvl, + $i = 'i' + $lvl, + $invalidName = '\' + ' + $key + ' + \'', + $dataNxt = $it.dataLevel = it.dataLevel + 1, + $nextData = 'data' + $dataNxt, + $dataProperties = 'dataProperties' + $lvl, + $ownProperties = it.opts.ownProperties, + $currentBaseId = it.baseId; + if ($ownProperties) { + out += ' var ' + ($dataProperties) + ' = undefined; '; + } + if ($ownProperties) { + out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; '; + } else { + out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; + } + out += ' var startErrs' + ($lvl) + ' = errors; '; + var $passData = $key; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + it.compositeRule = $it.compositeRule = $wasComposite; + out += ' if (!' + ($nextValid) + ') { for (var ' + ($i) + '=startErrs' + ($lvl) + '; ' + ($i) + '= 0xd800 && c <= 0xdbff && charIndex < text.length - 1) { - // Found high surrogate char - c = text.charCodeAt(charIndex + 1); +/***/ }), +/* 707 */ +/***/ (function(module, __unusedexports, __webpack_require__) { - if (c >= 0xdc00 && c <= 0xdfff) { - // Found surrogate pair - charIndex++; - } - } +"use strict"; - codePointIndex++; - charIndex++; - } -}; -var _default = convertUnicodeIndices; -exports["default"] = _default; -module.exports = exports.default; +var common = __webpack_require__(701); +var Type = __webpack_require__(755); -/***/ }), +function isHexCode(c) { + return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) || + ((0x41/* A */ <= c) && (c <= 0x46/* F */)) || + ((0x61/* a */ <= c) && (c <= 0x66/* f */)); +} -/***/ 8606: -/***/ ((module, exports, __nccwpck_require__) => { +function isOctCode(c) { + return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */)); +} -"use strict"; +function isDecCode(c) { + return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)); +} +function resolveYamlInteger(data) { + if (data === null) return false; -__nccwpck_require__(6880); + var max = data.length, + index = 0, + hasDigits = false, + ch; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + if (!max) return false; -__nccwpck_require__(4088); + ch = data[index]; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var getCharacterWeight = function getCharacterWeight(ch, options) { - var defaultWeight = options.defaultWeight, - ranges = options.ranges; - var weight = defaultWeight; - var chCodePoint = ch.charCodeAt(0); + // sign + if (ch === '-' || ch === '+') { + ch = data[++index]; + } - if (Array.isArray(ranges)) { - for (var i = 0, length = ranges.length; i < length; i++) { - var currRange = ranges[i]; + if (ch === '0') { + // 0 + if (index + 1 === max) return true; + ch = data[++index]; - if (chCodePoint >= currRange.start && chCodePoint <= currRange.end) { - weight = currRange.weight; - break; + // base 2, base 8, base 16 + + if (ch === 'b') { + // base 2 + index++; + + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (ch !== '0' && ch !== '1') return false; + hasDigits = true; } + return hasDigits && ch !== '_'; } - } - return weight; -}; -var _default = getCharacterWeight; -exports["default"] = _default; -module.exports = exports.default; + if (ch === 'x') { + // base 16 + index++; -/***/ }), + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (!isHexCode(data.charCodeAt(index))) return false; + hasDigits = true; + } + return hasDigits && ch !== '_'; + } -/***/ 770: -/***/ ((module, exports, __nccwpck_require__) => { -"use strict"; + if (ch === 'o') { + // base 8 + index++; + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (!isOctCode(data.charCodeAt(index))) return false; + hasDigits = true; + } + return hasDigits && ch !== '_'; + } + } -var _interopRequireDefault = __nccwpck_require__(3286); + // base 10 (except 0) -__nccwpck_require__(6880); + // value should not start with `_`; + if (ch === '_') return false; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + for (; index < max; index++) { + ch = data[index]; + if (ch === '_') continue; + if (!isDecCode(data.charCodeAt(index))) { + return false; + } + hasDigits = true; + } -__nccwpck_require__(1351); + // Should have digits and should not end with `_` + if (!hasDigits || ch === '_') return false; -__nccwpck_require__(4931); + return true; +} -var _punycode = _interopRequireDefault(__nccwpck_require__(5477)); +function constructYamlInteger(data) { + var value = data, sign = 1, ch; -var _validAsciiDomain = _interopRequireDefault(__nccwpck_require__(3598)); + if (value.indexOf('_') !== -1) { + value = value.replace(/_/g, ''); + } -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var MAX_DOMAIN_LABEL_LENGTH = 63; -var PUNYCODE_ENCODED_DOMAIN_PREFIX = 'xn--'; // This is an extremely lightweight implementation of domain name validation according to RFC 3490 -// Our regexes handle most of the cases well enough -// See https://tools.ietf.org/html/rfc3490#section-4.1 for details + ch = value[0]; -var idna = { - toAscii: function toAscii(domain) { - if (domain.substring(0, 4) === PUNYCODE_ENCODED_DOMAIN_PREFIX && !domain.match(_validAsciiDomain["default"])) { - // Punycode encoded url cannot contain non ASCII characters - return; - } + if (ch === '-' || ch === '+') { + if (ch === '-') sign = -1; + value = value.slice(1); + ch = value[0]; + } - var labels = domain.split('.'); + if (value === '0') return 0; - for (var i = 0; i < labels.length; i++) { - var label = labels[i]; + if (ch === '0') { + if (value[1] === 'b') return sign * parseInt(value.slice(2), 2); + if (value[1] === 'x') return sign * parseInt(value.slice(2), 16); + if (value[1] === 'o') return sign * parseInt(value.slice(2), 8); + } - var punycodeEncodedLabel = _punycode["default"].toASCII(label); + return sign * parseInt(value, 10); +} - if (punycodeEncodedLabel.length < 1 || punycodeEncodedLabel.length > MAX_DOMAIN_LABEL_LENGTH) { - // DNS label has invalid length - return; - } - } +function isInteger(object) { + return (Object.prototype.toString.call(object)) === '[object Number]' && + (object % 1 === 0 && !common.isNegativeZero(object)); +} - return labels.join('.'); +module.exports = new Type('tag:yaml.org,2002:int', { + kind: 'scalar', + resolve: resolveYamlInteger, + construct: constructYamlInteger, + predicate: isInteger, + represent: { + binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); }, + octal: function (obj) { return obj >= 0 ? '0o' + obj.toString(8) : '-0o' + obj.toString(8).slice(1); }, + decimal: function (obj) { return obj.toString(10); }, + /* eslint-disable max-len */ + hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); } + }, + defaultStyle: 'decimal', + styleAliases: { + binary: [ 2, 'bin' ], + octal: [ 8, 'oct' ], + decimal: [ 10, 'dec' ], + hexadecimal: [ 16, 'hex' ] } -}; -var _default = idna; -exports["default"] = _default; -module.exports = exports.default; +}); + /***/ }), +/* 708 */, +/* 709 */, +/* 710 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 8662: -/***/ ((module, exports, __nccwpck_require__) => { +// 7.1.1 ToPrimitive(input [, PreferredType]) +var isObject = __webpack_require__(956); +// instead of the ES6 spec version, we didn't implement @@toPrimitive case +// and the second argument - flag - preferred type is a string +module.exports = function (it, S) { + if (!isObject(it)) return it; + var fn, val; + if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; + if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; + if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; + throw TypeError("Can't convert object to primitive value"); +}; -"use strict"; +/***/ }), +/* 711 */, +/* 712 */, +/* 713 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -__nccwpck_require__(6880); +module.exports = tweet; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; +const { promises: fs } = __webpack_require__(747); +const Twitter = __webpack_require__(918); +const mime = __webpack_require__(233); -__nccwpck_require__(6764); +const TWEET_REGEX = /^https:\/\/twitter\.com\/[^/]+\/status\/(\d+)$/; -__nccwpck_require__(7662); +async function tweet({ twitterCredentials }, tweetData, tweetFile) { + const client = new Twitter(twitterCredentials); + return handleTweet(client, tweetData, tweetFile); +} -__nccwpck_require__(8074); +async function handleTweet(client, tweet, name) { + if (tweet.retweet && !tweet.text) { + // TODO: Should this throw if an invalid tweet is passed and there is no match? + const match = tweet.retweet.match(TWEET_REGEX); + if (match) return createRetweet(client, match[1]); + } -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -// Builds a RegExp -function _default(regex, map, flags) { - flags = flags || ''; + const tweetData = { + status: tweet.text, + }; - if (typeof regex !== 'string') { - if (regex.global && flags.indexOf('g') < 0) { - flags += 'g'; + if (tweet.poll) { + /* istanbul ignore if */ + if (!process.env.TWITTER_ACCOUNT_ID) { + throw new Error(`TWITTER_ACCOUNT_ID environment variable must be set`); } - if (regex.ignoreCase && flags.indexOf('i') < 0) { - flags += 'i'; - } + tweetData.card_uri = await createPoll(client, { + name, + pollOptions: tweet.poll, + }).then((poll) => poll.card_uri); + } - if (regex.multiline && flags.indexOf('m') < 0) { - flags += 'm'; + if (tweet.reply) { + // TODO: Should this throw if an invalid reply is passed and there is no match? + const match = tweet.reply.match(TWEET_REGEX); + if (match) { + tweetData.in_reply_to_status_id = match[1]; + tweetData.auto_populate_reply_metadata = true; } + } - regex = regex.source; + if (tweet.retweet) { + // TODO: Should this throw if an invalid tweet is passed and there is no match? + const match = tweet.retweet.match(TWEET_REGEX); + if (match) tweetData.attachment_url = match[0]; } - return new RegExp(regex.replace(/#\{(\w+)\}/g, function (match, name) { - var newRegex = map[name] || ''; + if (tweet.media) + tweetData.media_ids = await Promise.all( + tweet.media.map((media) => createMedia(client, media)) + ).then((ids) => ids.join(",")); - if (typeof newRegex !== 'string') { - newRegex = newRegex.source; - } + const tweetResult = await createTweet(client, tweetData); + if (tweet.thread) + tweetResult.thread = await handleTweet( + client, + { ...tweet.thread, reply: tweetResult.url }, + name + ); - return newRegex; - }), flags); + return tweetResult; } -module.exports = exports.default; +function createPoll( + client, + { + name, + text, + pollOptions: [first_choice, second_choice, third_choice, fourth_choice], + } +) { + return new Promise((resolve, reject) => { + // TODO: Switch to the v2 Twitter API for creating tweets and use the `poll` object, not Ads API + // https://developer.twitter.com/en/docs/ads/creatives/api-reference/poll#post-accounts-account-id-cards-poll + client.post( + `https://ads-api.twitter.com/11/accounts/${process.env.TWITTER_ACCOUNT_ID}/cards/poll`, + { + name, + duration_in_minutes: 1440, // two days + first_choice, + second_choice, + third_choice, + fourth_choice, + text, + }, + (error, result) => { + /* istanbul ignore if */ + if (error) { + return reject(error); + } -/***/ }), + resolve({ card_uri: result.data.card_uri }); + } + ); + }); +} + +async function createMedia(client, { file, alt }) { + const { size } = await fs.stat(file); + + const id = await new Promise((resolve, reject) => { + client.post( + "media/upload", + { + command: "INIT", + total_bytes: size, + media_type: mime.lookup(file), + }, + (error, result) => { + if (error) return reject(error); + resolve(result.media_id_string); + } + ); + }); -/***/ 1168: -/***/ ((module, exports, __nccwpck_require__) => { + const data = await fs.readFile(file); -"use strict"; + await new Promise((resolve, reject) => { + client.post( + "media/upload", + { + command: "APPEND", + media_id: id, + media: data, + segment_index: 0, + }, + (error) => { + if (error) return reject(error); + resolve(); + } + ); + }); + await new Promise((resolve, reject) => { + client.post( + "media/upload", + { + command: "FINALIZE", + media_id: id, + }, + (error) => { + if (error) return reject(error); + resolve(); + } + ); + }); -__nccwpck_require__(6880); + // TODO: Support alt text (twitter library does not support JSON payloads) + // https://github.com/desmondmorris/node-twitter/issues/347 + // if (alt) { + // await new Promise((resolve, reject) => { + // client.post( + // "media/metadata/create", + // { + // media_id: id, + // alt_text: { + // text: alt, + // }, + // }, + // (error) => { + // if (error) return reject(error); + // resolve(); + // } + // ); + // }); + // } + + return id; +} + +function createTweet(client, options) { + return new Promise((resolve, reject) => { + client.post("statuses/update", options, (error, result) => { + if (error) { + return reject(error); + } -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; + resolve({ + text: options.status, + url: `https://twitter.com/${result.user.screen_name}/status/${result.id_str}`, + }); + }); + }); +} -__nccwpck_require__(6764); +function createRetweet(client, id) { + return new Promise((resolve, reject) => { + client.post(`statuses/retweet/${id}`, {}, (error, result) => { + if (error) { + return reject(error); + } -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -// simple string interpolation -function _default(str, map) { - return str.replace(/#\{(\w+)\}/g, function (match, name) { - return map[name] || ''; + resolve({ + retweet: `https://twitter.com/${result.retweeted_status.user.screen_name}/status/${result.retweeted_status.id_str}`, + url: `https://twitter.com/${result.user.screen_name}/status/${result.id_str}`, + }); + }); }); } -module.exports = exports.default; /***/ }), - -/***/ 1543: -/***/ ((module, exports, __nccwpck_require__) => { +/* 714 */, +/* 715 */, +/* 716 */, +/* 717 */, +/* 718 */, +/* 719 */, +/* 720 */, +/* 721 */ +/***/ (function(module) { "use strict"; -var _interopRequireDefault = __nccwpck_require__(3286); +function formatHostname (hostname) { + // canonicalize the hostname, so that 'oogle.com' won't match 'google.com' + return hostname.replace(/^\.*/, '.').toLowerCase() +} -__nccwpck_require__(6880); +function parseNoProxyZone (zone) { + zone = zone.trim().toLowerCase() -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; + var zoneParts = zone.split(':', 2) + var zoneHost = formatHostname(zoneParts[0]) + var zonePort = zoneParts[1] + var hasPort = zone.indexOf(':') > -1 -__nccwpck_require__(4931); + return {hostname: zoneHost, port: zonePort, hasPort: hasPort} +} -__nccwpck_require__(8074); +function uriInNoProxy (uri, noProxy) { + var port = uri.port || (uri.protocol === 'https:' ? '443' : '80') + var hostname = formatHostname(uri.hostname) + var noProxyList = noProxy.split(',') -__nccwpck_require__(6764); + // iterate through the noProxyList until it finds a match. + return noProxyList.map(parseNoProxyZone).some(function (noProxyZone) { + var isMatchedAt = hostname.indexOf(noProxyZone.hostname) + var hostnameMatched = ( + isMatchedAt > -1 && + (isMatchedAt === hostname.length - noProxyZone.hostname.length) + ) -var _htmlEscape = _interopRequireDefault(__nccwpck_require__(8113)); + if (noProxyZone.hasPort) { + return (port === noProxyZone.port) && hostnameMatched + } -var _stringSupplant = _interopRequireDefault(__nccwpck_require__(1168)); + return hostnameMatched + }) +} -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(entity, options) { - var displayUrl = entity.display_url; - var expandedUrl = entity.expanded_url; // Goal: If a user copies and pastes a tweet containing t.co'ed link, the resulting paste - // should contain the full original URL (expanded_url), not the display URL. - // - // Method: Whenever possible, we actually emit HTML that contains expanded_url, and use - // font-size:0 to hide those parts that should not be displayed (because they are not part of display_url). - // Elements with font-size:0 get copied even though they are not visible. - // Note that display:none doesn't work here. Elements with display:none don't get copied. - // - // Additionally, we want to *display* ellipses, but we don't want them copied. To make this happen we - // wrap the ellipses in a tco-ellipsis class and provide an onCopy handler that sets display:none on - // everything with the tco-ellipsis class. - // - // Exception: pic.twitter.com images, for which expandedUrl = "https://twitter.com/#!/username/status/1234/photo/1 - // For those URLs, display_url is not a substring of expanded_url, so we don't do anything special to render the elided parts. - // For a pic.twitter.com URL, the only elided part will be the "https://", so this is fine. +function getProxyFromURI (uri) { + // Decide the proper request proxy to use based on the request URI object and the + // environmental variables (NO_PROXY, HTTP_PROXY, etc.) + // respect NO_PROXY environment variables (see: http://lynx.isc.org/current/breakout/lynx_help/keystrokes/environments.html) - var displayUrlSansEllipses = displayUrl.replace(/…/g, ''); // We have to disregard ellipses for matching - // Note: we currently only support eliding parts of the URL at the beginning or the end. - // Eventually we may want to elide parts of the URL in the *middle*. If so, this code will - // become more complicated. We will probably want to create a regexp out of display URL, - // replacing every ellipsis with a ".*". + var noProxy = process.env.NO_PROXY || process.env.no_proxy || '' - if (expandedUrl.indexOf(displayUrlSansEllipses) != -1) { - var displayUrlIndex = expandedUrl.indexOf(displayUrlSansEllipses); - var v = { - displayUrlSansEllipses: displayUrlSansEllipses, - // Portion of expandedUrl that precedes the displayUrl substring - beforeDisplayUrl: expandedUrl.substr(0, displayUrlIndex), - // Portion of expandedUrl that comes after displayUrl - afterDisplayUrl: expandedUrl.substr(displayUrlIndex + displayUrlSansEllipses.length), - precedingEllipsis: displayUrl.match(/^…/) ? '…' : '', - followingEllipsis: displayUrl.match(/…$/) ? '…' : '' - }; + // if the noProxy is a wildcard then return null - for (var k in v) { - if (v.hasOwnProperty(k)) { - v[k] = (0, _htmlEscape["default"])(v[k]); - } - } // As an example: The user tweets "hi http://longdomainname.com/foo" - // This gets shortened to "hi http://t.co/xyzabc", with display_url = "…nname.com/foo" - // This will get rendered as: - // - // … - // - // http://longdomai - // - // - // nname.com/foo - // - // - //   - // … - // + if (noProxy === '*') { + return null + } + // if the noProxy is not empty and the uri is found return null - v['invisible'] = options.invisibleTagAttrs; - return (0, _stringSupplant["default"])("#{precedingEllipsis} #{beforeDisplayUrl}#{displayUrlSansEllipses}#{afterDisplayUrl} #{followingEllipsis}", v); + if (noProxy !== '' && uriInNoProxy(uri, noProxy)) { + return null } - return displayUrl; + // Check for HTTP or HTTPS Proxy in environment Else default to null + + if (uri.protocol === 'http:') { + return process.env.HTTP_PROXY || + process.env.http_proxy || null + } + + if (uri.protocol === 'https:') { + return process.env.HTTPS_PROXY || + process.env.https_proxy || + process.env.HTTP_PROXY || + process.env.http_proxy || null + } + + // if none of that works, return null + // (What uri protocol are you using then?) + + return null } -module.exports = exports.default; +module.exports = getProxyFromURI -/***/ }), -/***/ 5583: -/***/ ((module, exports, __nccwpck_require__) => { +/***/ }), +/* 722 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var _interopRequireDefault = __nccwpck_require__(3286); +__webpack_require__(493); -__nccwpck_require__(6880); - -Object.defineProperty(exports, "__esModule", ({ +Object.defineProperty(exports, "__esModule", { value: true -})); +}); exports["default"] = _default; -var _clone = _interopRequireDefault(__nccwpck_require__(2105)); - -var _htmlEscape = _interopRequireDefault(__nccwpck_require__(8113)); - -var _linkToTextWithSymbol = _interopRequireDefault(__nccwpck_require__(3673)); +__webpack_require__(210); // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -function _default(entity, text, options) { - var cashtag = (0, _htmlEscape["default"])(entity.cashtag); - var attrs = (0, _clone["default"])(options.htmlAttrs || {}); - attrs.href = options.cashtagUrlBase + cashtag; - attrs.title = "$".concat(cashtag); - attrs['class'] = options.cashtagClass; - - if (options.targetBlank) { - attrs.target = '_blank'; +function _default(text, entities, indicesInUTF16) { + if (entities.length == 0) { + return; } - return (0, _linkToTextWithSymbol["default"])(entity, '$', cashtag, attrs, options); + var charIndex = 0; + var codePointIndex = 0; // sort entities by start index + + entities.sort(function (a, b) { + return a.indices[0] - b.indices[0]; + }); + var entityIndex = 0; + var entity = entities[0]; + + while (charIndex < text.length) { + if (entity.indices[0] == (indicesInUTF16 ? charIndex : codePointIndex)) { + var len = entity.indices[1] - entity.indices[0]; + entity.indices[0] = indicesInUTF16 ? codePointIndex : charIndex; + entity.indices[1] = entity.indices[0] + len; + entityIndex++; + + if (entityIndex == entities.length) { + // no more entity + break; + } + + entity = entities[entityIndex]; + } + + var c = text.charCodeAt(charIndex); + + if (c >= 0xd800 && c <= 0xdbff && charIndex < text.length - 1) { + // Found high surrogate char + c = text.charCodeAt(charIndex + 1); + + if (c >= 0xdc00 && c <= 0xdfff) { + // Found surrogate pair + charIndex++; + } + } + + codePointIndex++; + charIndex++; + } } module.exports = exports.default; /***/ }), - -/***/ 5537: -/***/ ((module, exports, __nccwpck_require__) => { +/* 723 */, +/* 724 */, +/* 725 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { "use strict"; -var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, '__esModule', { value: true }); -__nccwpck_require__(6880); - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; +var core = __webpack_require__(448); +var authAction = __webpack_require__(414); +var pluginPaginateRest = __webpack_require__(299); +var pluginRestEndpointMethods = __webpack_require__(842); -__nccwpck_require__(4931); +const VERSION = "4.0.8"; -var _clone = _interopRequireDefault(__nccwpck_require__(2105)); +const HttpsProxyAgent = __webpack_require__(338); -var _htmlEscape = _interopRequireDefault(__nccwpck_require__(8113)); +const DEFAULTS = { + authStrategy: authAction.createActionAuth, + baseUrl: getApiBaseUrl(), + userAgent: `octokit-action.js/${VERSION}` +}; -var _rtlChars = _interopRequireDefault(__nccwpck_require__(6462)); +function getProxyAgent() { + const httpProxy = process.env["HTTP_PROXY"] || process.env["http_proxy"]; -var _linkToTextWithSymbol = _interopRequireDefault(__nccwpck_require__(3673)); + if (httpProxy) { + return new HttpsProxyAgent(httpProxy); + } -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(entity, text, options) { - var hash = text.substring(entity.indices[0], entity.indices[0] + 1); - var hashtag = (0, _htmlEscape["default"])(entity.hashtag); - var attrs = (0, _clone["default"])(options.htmlAttrs || {}); - attrs.href = options.hashtagUrlBase + hashtag; - attrs.title = "#".concat(hashtag); - attrs['class'] = options.hashtagClass; + const httpsProxy = process.env["HTTPS_PROXY"] || process.env["https_proxy"]; - if (hashtag.charAt(0).match(_rtlChars["default"])) { - attrs['class'] += ' rtl'; + if (httpsProxy) { + return new HttpsProxyAgent(httpsProxy); } - if (options.targetBlank) { - attrs.target = '_blank'; - } + return undefined; +} - return (0, _linkToTextWithSymbol["default"])(entity, hash, hashtag, attrs, options); +const Octokit = core.Octokit.plugin(pluginPaginateRest.paginateRest, pluginRestEndpointMethods.legacyRestEndpointMethods).defaults(function buildDefaults(options) { + return { ...DEFAULTS, + ...options, + request: { + agent: getProxyAgent(), + ...options.request + } + }; +}); + +function getApiBaseUrl() { + /* istanbul ignore next */ + return process.env["GITHUB_API_URL"] || "https://api.github.com"; } -module.exports = exports.default; +exports.Octokit = Octokit; +//# sourceMappingURL=index.js.map -/***/ }), -/***/ 8702: -/***/ ((module, exports, __nccwpck_require__) => { +/***/ }), +/* 726 */ +/***/ (function(module, __unusedexports, __webpack_require__) { "use strict"; +/* eslint-disable node/no-deprecated-api */ -var _interopRequireDefault = __nccwpck_require__(3286); -__nccwpck_require__(6880); +var buffer = __webpack_require__(670) +var Buffer = buffer.Buffer -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; +var safer = {} -var _clone = _interopRequireDefault(__nccwpck_require__(2105)); +var key -var _htmlEscape = _interopRequireDefault(__nccwpck_require__(8113)); +for (key in buffer) { + if (!buffer.hasOwnProperty(key)) continue + if (key === 'SlowBuffer' || key === 'Buffer') continue + safer[key] = buffer[key] +} -var _linkToTextWithSymbol = _interopRequireDefault(__nccwpck_require__(3673)); +var Safer = safer.Buffer = {} +for (key in Buffer) { + if (!Buffer.hasOwnProperty(key)) continue + if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue + Safer[key] = Buffer[key] +} -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(entity, text, options) { - var at = text.substring(entity.indices[0], entity.indices[0] + 1); - var user = (0, _htmlEscape["default"])(entity.screenName); - var slashListname = (0, _htmlEscape["default"])(entity.listSlug); - var isList = entity.listSlug && !options.suppressLists; - var attrs = (0, _clone["default"])(options.htmlAttrs || {}); - attrs['class'] = isList ? options.listClass : options.usernameClass; - attrs.href = isList ? options.listUrlBase + user + slashListname : options.usernameUrlBase + user; +safer.Buffer.prototype = Buffer.prototype - if (!isList && !options.suppressDataScreenName) { - attrs['data-screen-name'] = user; +if (!Safer.from || Safer.from === Uint8Array.from) { + Safer.from = function (value, encodingOrOffset, length) { + if (typeof value === 'number') { + throw new TypeError('The "value" argument must not be of type number. Received type ' + typeof value) + } + if (value && typeof value.length === 'undefined') { + throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value) + } + return Buffer(value, encodingOrOffset, length) } +} - if (options.targetBlank) { - attrs.target = '_blank'; +if (!Safer.alloc) { + Safer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size) + } + if (size < 0 || size >= 2 * (1 << 30)) { + throw new RangeError('The value "' + size + '" is invalid for option "size"') + } + var buf = Buffer(size) + if (!fill || fill.length === 0) { + buf.fill(0) + } else if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + return buf } +} - return (0, _linkToTextWithSymbol["default"])(entity, at, isList ? user + slashListname : user, attrs, options); +if (!safer.kStringMaxLength) { + try { + safer.kStringMaxLength = process.binding('buffer').kStringMaxLength + } catch (e) { + // we can't determine kStringMaxLength in environments where process.binding + // is unsupported, so let's not set it + } } -module.exports = exports.default; +if (!safer.constants) { + safer.constants = { + MAX_LENGTH: safer.kMaxLength + } + if (safer.kStringMaxLength) { + safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength + } +} -/***/ }), +module.exports = safer -/***/ 3390: -/***/ ((module, exports, __nccwpck_require__) => { -"use strict"; +/***/ }), +/* 727 */, +/* 728 */ +/***/ (function(module, exports, __webpack_require__) { +"use strict"; -var _interopRequireDefault = __nccwpck_require__(3286); -__nccwpck_require__(6880); +__webpack_require__(493); -Object.defineProperty(exports, "__esModule", ({ +Object.defineProperty(exports, "__esModule", { value: true -})); -exports["default"] = _default; - -var _stringSupplant = _interopRequireDefault(__nccwpck_require__(1168)); - -var _tagAttrs = _interopRequireDefault(__nccwpck_require__(3995)); - +}); +exports["default"] = void 0; // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -function _default(entity, text, attributes, options) { - if (!options.suppressNoFollow) { - attributes.rel = 'nofollow'; - } // if linkAttributeBlock is specified, call it to modify the attributes - - - if (options.linkAttributeBlock) { - options.linkAttributeBlock(entity, attributes); - } // if linkTextBlock is specified, call it to get a new/modified link text - - - if (options.linkTextBlock) { - text = options.linkTextBlock(entity, text); - } - - var d = { - text: text, - attr: (0, _tagAttrs["default"])(attributes) - }; - return (0, _stringSupplant["default"])('#{text}', d); -} - +var cashtag = /[a-z]{1,6}(?:[._][a-z]{1,2})?/i; +var _default = cashtag; +exports["default"] = _default; module.exports = exports.default; /***/ }), - -/***/ 3673: -/***/ ((module, exports, __nccwpck_require__) => { +/* 729 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var _interopRequireDefault = __nccwpck_require__(3286); - -__nccwpck_require__(6880); +__webpack_require__(493); -Object.defineProperty(exports, "__esModule", ({ +Object.defineProperty(exports, "__esModule", { value: true -})); +}); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlDomainSegment = /(?:[a-z0-9](?:[a-z0-9\-]*[a-z0-9])?)/i; +var _default = validateUrlDomainSegment; exports["default"] = _default; +module.exports = exports.default; -__nccwpck_require__(4931); - -var _atSigns = _interopRequireDefault(__nccwpck_require__(6683)); +/***/ }), +/* 730 */ +/***/ (function(__unusedmodule, exports) { -var _htmlEscape = _interopRequireDefault(__nccwpck_require__(8113)); +/** @license URI.js v4.2.1 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js */ +(function (global, factory) { + true ? factory(exports) : + undefined; +}(this, (function (exports) { 'use strict'; -var _linkToText = _interopRequireDefault(__nccwpck_require__(3390)); +function merge() { + for (var _len = arguments.length, sets = Array(_len), _key = 0; _key < _len; _key++) { + sets[_key] = arguments[_key]; + } -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(entity, symbol, text, attributes, options) { - var taggedSymbol = options.symbolTag ? "<".concat(options.symbolTag, ">").concat(symbol, "") : symbol; - text = (0, _htmlEscape["default"])(text); - var taggedText = options.textWithSymbolTag ? "<".concat(options.textWithSymbolTag, ">").concat(text, "") : text; + if (sets.length > 1) { + sets[0] = sets[0].slice(0, -1); + var xl = sets.length - 1; + for (var x = 1; x < xl; ++x) { + sets[x] = sets[x].slice(1, -1); + } + sets[xl] = sets[xl].slice(1); + return sets.join(''); + } else { + return sets[0]; + } +} +function subexp(str) { + return "(?:" + str + ")"; +} +function typeOf(o) { + return o === undefined ? "undefined" : o === null ? "null" : Object.prototype.toString.call(o).split(" ").pop().split("]").shift().toLowerCase(); +} +function toUpperCase(str) { + return str.toUpperCase(); +} +function toArray(obj) { + return obj !== undefined && obj !== null ? obj instanceof Array ? obj : typeof obj.length !== "number" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj) : []; +} +function assign(target, source) { + var obj = target; + if (source) { + for (var key in source) { + obj[key] = source[key]; + } + } + return obj; +} - if (options.usernameIncludeSymbol || !symbol.match(_atSigns["default"])) { - return (0, _linkToText["default"])(entity, taggedSymbol + taggedText, attributes, options); - } else { - return taggedSymbol + (0, _linkToText["default"])(entity, taggedText, attributes, options); - } +function buildExps(isIRI) { + var ALPHA$$ = "[A-Za-z]", + CR$ = "[\\x0D]", + DIGIT$$ = "[0-9]", + DQUOTE$$ = "[\\x22]", + HEXDIG$$ = merge(DIGIT$$, "[A-Fa-f]"), + //case-insensitive + LF$$ = "[\\x0A]", + SP$$ = "[\\x20]", + PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)), + //expanded + GEN_DELIMS$$ = "[\\:\\/\\?\\#\\[\\]\\@]", + SUB_DELIMS$$ = "[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]", + RESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$), + UCSCHAR$$ = isIRI ? "[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]" : "[]", + //subset, excludes bidi control characters + IPRIVATE$$ = isIRI ? "[\\uE000-\\uF8FF]" : "[]", + //subset + UNRESERVED$$ = merge(ALPHA$$, DIGIT$$, "[\\-\\.\\_\\~]", UCSCHAR$$), + SCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, "[\\+\\-\\.]") + "*"), + USERINFO$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:]")) + "*"), + DEC_OCTET$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("[1-9]" + DIGIT$$) + "|" + DIGIT$$), + DEC_OCTET_RELAXED$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("0?[1-9]" + DIGIT$$) + "|0?0?" + DIGIT$$), + //relaxed parsing rules + IPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$), + H16$ = subexp(HEXDIG$$ + "{1,4}"), + LS32$ = subexp(subexp(H16$ + "\\:" + H16$) + "|" + IPV4ADDRESS$), + IPV6ADDRESS1$ = subexp(subexp(H16$ + "\\:") + "{6}" + LS32$), + // 6( h16 ":" ) ls32 + IPV6ADDRESS2$ = subexp("\\:\\:" + subexp(H16$ + "\\:") + "{5}" + LS32$), + // "::" 5( h16 ":" ) ls32 + IPV6ADDRESS3$ = subexp(subexp(H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{4}" + LS32$), + //[ h16 ] "::" 4( h16 ":" ) ls32 + IPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,1}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{3}" + LS32$), + //[ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 + IPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,2}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{2}" + LS32$), + //[ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 + IPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,3}" + H16$) + "?\\:\\:" + H16$ + "\\:" + LS32$), + //[ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 + IPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,4}" + H16$) + "?\\:\\:" + LS32$), + //[ *4( h16 ":" ) h16 ] "::" ls32 + IPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,5}" + H16$) + "?\\:\\:" + H16$), + //[ *5( h16 ":" ) h16 ] "::" h16 + IPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,6}" + H16$) + "?\\:\\:"), + //[ *6( h16 ":" ) h16 ] "::" + IPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join("|")), + ZONEID$ = subexp(subexp(UNRESERVED$$ + "|" + PCT_ENCODED$) + "+"), + //RFC 6874 + IPV6ADDRZ$ = subexp(IPV6ADDRESS$ + "\\%25" + ZONEID$), + //RFC 6874 + IPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp("\\%25|\\%(?!" + HEXDIG$$ + "{2})") + ZONEID$), + //RFC 6874, with relaxed parsing rules + IPVFUTURE$ = subexp("[vV]" + HEXDIG$$ + "+\\." + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:]") + "+"), + IP_LITERAL$ = subexp("\\[" + subexp(IPV6ADDRZ_RELAXED$ + "|" + IPV6ADDRESS$ + "|" + IPVFUTURE$) + "\\]"), + //RFC 6874 + REG_NAME$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$)) + "*"), + HOST$ = subexp(IP_LITERAL$ + "|" + IPV4ADDRESS$ + "(?!" + REG_NAME$ + ")" + "|" + REG_NAME$), + PORT$ = subexp(DIGIT$$ + "*"), + AUTHORITY$ = subexp(subexp(USERINFO$ + "@") + "?" + HOST$ + subexp("\\:" + PORT$) + "?"), + PCHAR$ = subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@]")), + SEGMENT$ = subexp(PCHAR$ + "*"), + SEGMENT_NZ$ = subexp(PCHAR$ + "+"), + SEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\@]")) + "+"), + PATH_ABEMPTY$ = subexp(subexp("\\/" + SEGMENT$) + "*"), + PATH_ABSOLUTE$ = subexp("\\/" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + "?"), + //simplified + PATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$), + //simplified + PATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$), + //simplified + PATH_EMPTY$ = "(?!" + PCHAR$ + ")", + PATH$ = subexp(PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$), + QUERY$ = subexp(subexp(PCHAR$ + "|" + merge("[\\/\\?]", IPRIVATE$$)) + "*"), + FRAGMENT$ = subexp(subexp(PCHAR$ + "|[\\/\\?]") + "*"), + HIER_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$), + URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"), + RELATIVE_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$), + RELATIVE$ = subexp(RELATIVE_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"), + URI_REFERENCE$ = subexp(URI$ + "|" + RELATIVE$), + ABSOLUTE_URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?"), + GENERIC_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", + RELATIVE_REF$ = "^(){0}" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", + ABSOLUTE_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?$", + SAMEDOC_REF$ = "^" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", + AUTHORITY_REF$ = "^" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?$"; + return { + NOT_SCHEME: new RegExp(merge("[^]", ALPHA$$, DIGIT$$, "[\\+\\-\\.]"), "g"), + NOT_USERINFO: new RegExp(merge("[^\\%\\:]", UNRESERVED$$, SUB_DELIMS$$), "g"), + NOT_HOST: new RegExp(merge("[^\\%\\[\\]\\:]", UNRESERVED$$, SUB_DELIMS$$), "g"), + NOT_PATH: new RegExp(merge("[^\\%\\/\\:\\@]", UNRESERVED$$, SUB_DELIMS$$), "g"), + NOT_PATH_NOSCHEME: new RegExp(merge("[^\\%\\/\\@]", UNRESERVED$$, SUB_DELIMS$$), "g"), + NOT_QUERY: new RegExp(merge("[^\\%]", UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@\\/\\?]", IPRIVATE$$), "g"), + NOT_FRAGMENT: new RegExp(merge("[^\\%]", UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@\\/\\?]"), "g"), + ESCAPE: new RegExp(merge("[^]", UNRESERVED$$, SUB_DELIMS$$), "g"), + UNRESERVED: new RegExp(UNRESERVED$$, "g"), + OTHER_CHARS: new RegExp(merge("[^\\%]", UNRESERVED$$, RESERVED$$), "g"), + PCT_ENCODED: new RegExp(PCT_ENCODED$, "g"), + IPV4ADDRESS: new RegExp("^(" + IPV4ADDRESS$ + ")$"), + IPV6ADDRESS: new RegExp("^\\[?(" + IPV6ADDRESS$ + ")" + subexp(subexp("\\%25|\\%(?!" + HEXDIG$$ + "{2})") + "(" + ZONEID$ + ")") + "?\\]?$") //RFC 6874, with relaxed parsing rules + }; } +var URI_PROTOCOL = buildExps(false); -module.exports = exports.default; +var IRI_PROTOCOL = buildExps(true); -/***/ }), +var slicedToArray = function () { + function sliceIterator(arr, i) { + var _arr = []; + var _n = true; + var _d = false; + var _e = undefined; -/***/ 1656: -/***/ ((module, exports, __nccwpck_require__) => { + try { + for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); -"use strict"; + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"]) _i["return"](); + } finally { + if (_d) throw _e; + } + } + return _arr; + } -var _interopRequireDefault = __nccwpck_require__(3286); + return function (arr, i) { + if (Array.isArray(arr)) { + return arr; + } else if (Symbol.iterator in Object(arr)) { + return sliceIterator(arr, i); + } else { + throw new TypeError("Invalid attempt to destructure non-iterable instance"); + } + }; +}(); -__nccwpck_require__(6880); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; -__nccwpck_require__(4931); -var _clone = _interopRequireDefault(__nccwpck_require__(2105)); -var _htmlEscape = _interopRequireDefault(__nccwpck_require__(8113)); -var _linkToText = _interopRequireDefault(__nccwpck_require__(3390)); -var _linkTextWithEntity = _interopRequireDefault(__nccwpck_require__(1543)); -var _urlHasProtocol = _interopRequireDefault(__nccwpck_require__(2025)); -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(entity, text, options) { - var url = entity.url; - var displayUrl = url; - var linkText = (0, _htmlEscape["default"])(displayUrl); // If the caller passed a urlEntities object (provided by a Twitter API - // response with include_entities=true), we use that to render the display_url - // for each URL instead of it's underlying t.co URL. - var urlEntity = options.urlEntities && options.urlEntities[url] || entity; - if (urlEntity.display_url) { - linkText = (0, _linkTextWithEntity["default"])(urlEntity, options); - } - var attrs = (0, _clone["default"])(options.htmlAttrs || {}); - if (!url.match(_urlHasProtocol["default"])) { - url = "http://".concat(url); - } +var toConsumableArray = function (arr) { + if (Array.isArray(arr)) { + for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; - attrs.href = url; + return arr2; + } else { + return Array.from(arr); + } +}; - if (options.targetBlank) { - attrs.target = '_blank'; - } // set class only if urlClass is specified. +/** Highest positive signed 32-bit float value */ + +var maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1 + +/** Bootstring parameters */ +var base = 36; +var tMin = 1; +var tMax = 26; +var skew = 38; +var damp = 700; +var initialBias = 72; +var initialN = 128; // 0x80 +var delimiter = '-'; // '\x2D' + +/** Regular expressions */ +var regexPunycode = /^xn--/; +var regexNonASCII = /[^\0-\x7E]/; // non-ASCII chars +var regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g; // RFC 3490 separators + +/** Error messages */ +var errors = { + 'overflow': 'Overflow: input needs wider integers to process', + 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', + 'invalid-input': 'Invalid input' +}; +/** Convenience shortcuts */ +var baseMinusTMin = base - tMin; +var floor = Math.floor; +var stringFromCharCode = String.fromCharCode; - if (options.urlClass) { - attrs['class'] = options.urlClass; - } // set target only if urlTarget is specified. +/*--------------------------------------------------------------------------*/ +/** + * A generic error utility function. + * @private + * @param {String} type The error type. + * @returns {Error} Throws a `RangeError` with the applicable error message. + */ +function error$1(type) { + throw new RangeError(errors[type]); +} - if (options.urlTarget) { - attrs.target = options.urlTarget; - } +/** + * A generic `Array#map` utility function. + * @private + * @param {Array} array The array to iterate over. + * @param {Function} callback The function that gets called for every array + * item. + * @returns {Array} A new array of values returned by the callback function. + */ +function map(array, fn) { + var result = []; + var length = array.length; + while (length--) { + result[length] = fn(array[length]); + } + return result; +} - if (!options.title && urlEntity.display_url) { - attrs.title = urlEntity.expanded_url; - } +/** + * A simple `Array#map`-like wrapper to work with domain name strings or email + * addresses. + * @private + * @param {String} domain The domain name or email address. + * @param {Function} callback The function that gets called for every + * character. + * @returns {Array} A new string of characters returned by the callback + * function. + */ +function mapDomain(string, fn) { + var parts = string.split('@'); + var result = ''; + if (parts.length > 1) { + // In email addresses, only the domain name should be punycoded. Leave + // the local part (i.e. everything up to `@`) intact. + result = parts[0] + '@'; + string = parts[1]; + } + // Avoid `split(regex)` for IE8 compatibility. See #17. + string = string.replace(regexSeparators, '\x2E'); + var labels = string.split('.'); + var encoded = map(labels, fn).join('.'); + return result + encoded; +} - return (0, _linkToText["default"])(entity, linkText, attrs, options); +/** + * Creates an array containing the numeric code points of each Unicode + * character in the string. While JavaScript uses UCS-2 internally, + * this function will convert a pair of surrogate halves (each of which + * UCS-2 exposes as separate characters) into a single code point, + * matching UTF-16. + * @see `punycode.ucs2.encode` + * @see + * @memberOf punycode.ucs2 + * @name decode + * @param {String} string The Unicode input string (UCS-2). + * @returns {Array} The new array of code points. + */ +function ucs2decode(string) { + var output = []; + var counter = 0; + var length = string.length; + while (counter < length) { + var value = string.charCodeAt(counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + // It's a high surrogate, and there is a next character. + var extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { + // Low surrogate. + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + // It's an unmatched surrogate; only append this code unit, in case the + // next code unit is the high surrogate of a surrogate pair. + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; } -module.exports = exports.default; +/** + * Creates a string based on an array of numeric code points. + * @see `punycode.ucs2.decode` + * @memberOf punycode.ucs2 + * @name encode + * @param {Array} codePoints The array of numeric code points. + * @returns {String} The new Unicode string (UCS-2). + */ +var ucs2encode = function ucs2encode(array) { + return String.fromCodePoint.apply(String, toConsumableArray(array)); +}; -/***/ }), +/** + * Converts a basic code point into a digit/integer. + * @see `digitToBasic()` + * @private + * @param {Number} codePoint The basic numeric code point value. + * @returns {Number} The numeric value of a basic code point (for use in + * representing integers) in the range `0` to `base - 1`, or `base` if + * the code point does not represent a value. + */ +var basicToDigit = function basicToDigit(codePoint) { + if (codePoint - 0x30 < 0x0A) { + return codePoint - 0x16; + } + if (codePoint - 0x41 < 0x1A) { + return codePoint - 0x41; + } + if (codePoint - 0x61 < 0x1A) { + return codePoint - 0x61; + } + return base; +}; -/***/ 9403: -/***/ ((module, exports, __nccwpck_require__) => { +/** + * Converts a digit/integer into a basic code point. + * @see `basicToDigit()` + * @private + * @param {Number} digit The numeric value of a basic code point. + * @returns {Number} The basic code point whose value (when used for + * representing integers) is `digit`, which needs to be in the range + * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is + * used; else, the lowercase form is used. The behavior is undefined + * if `flag` is non-zero and `digit` has no uppercase form. + */ +var digitToBasic = function digitToBasic(digit, flag) { + // 0..25 map to ASCII a..z or A..Z + // 26..35 map to ASCII 0..9 + return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); +}; -"use strict"; +/** + * Bias adaptation function as per section 3.4 of RFC 3492. + * https://tools.ietf.org/html/rfc3492#section-3.4 + * @private + */ +var adapt = function adapt(delta, numPoints, firstTime) { + var k = 0; + delta = firstTime ? floor(delta / damp) : delta >> 1; + delta += floor(delta / numPoints); + for (; /* no initialization */delta > baseMinusTMin * tMax >> 1; k += base) { + delta = floor(delta / baseMinusTMin); + } + return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); +}; +/** + * Converts a Punycode string of ASCII-only symbols to a string of Unicode + * symbols. + * @memberOf punycode + * @param {String} input The Punycode string of ASCII-only symbols. + * @returns {String} The resulting string of Unicode symbols. + */ +var decode = function decode(input) { + // Don't use UCS-2. + var output = []; + var inputLength = input.length; + var i = 0; + var n = initialN; + var bias = initialBias; + + // Handle the basic code points: let `basic` be the number of input code + // points before the last delimiter, or `0` if there is none, then copy + // the first basic code points to the output. + + var basic = input.lastIndexOf(delimiter); + if (basic < 0) { + basic = 0; + } -var _interopRequireDefault = __nccwpck_require__(3286); + for (var j = 0; j < basic; ++j) { + // if it's not a basic code point + if (input.charCodeAt(j) >= 0x80) { + error$1('not-basic'); + } + output.push(input.charCodeAt(j)); + } -__nccwpck_require__(6880); + // Main decoding loop: start just after the last delimiter if any basic code + // points were copied; start at the beginning otherwise. -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; + for (var index = basic > 0 ? basic + 1 : 0; index < inputLength;) /* no final expression */{ -var _convertUnicodeIndices = _interopRequireDefault(__nccwpck_require__(6954)); + // `index` is the index of the next character to be consumed. + // Decode a generalized variable-length integer into `delta`, + // which gets added to `i`. The overflow checking is easier + // if we increase `i` as we go, then subtract off its starting + // value at the end to obtain `delta`. + var oldi = i; + for (var w = 1, k = base;; /* no condition */k += base) { -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text, entities) { - (0, _convertUnicodeIndices["default"])(text, entities, true); -} + if (index >= inputLength) { + error$1('invalid-input'); + } -module.exports = exports.default; + var digit = basicToDigit(input.charCodeAt(index++)); -/***/ }), + if (digit >= base || digit > floor((maxInt - i) / w)) { + error$1('overflow'); + } -/***/ 1614: -/***/ ((module, exports, __nccwpck_require__) => { + i += digit * w; + var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias; -"use strict"; + if (digit < t) { + break; + } + var baseMinusT = base - t; + if (w > floor(maxInt / baseMinusT)) { + error$1('overflow'); + } -var _interopRequireDefault = __nccwpck_require__(3286); + w *= baseMinusT; + } -__nccwpck_require__(6880); + var out = output.length + 1; + bias = adapt(i - oldi, out, oldi == 0); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; + // `i` was supposed to wrap around from `out` to `0`, + // incrementing `n` each time, so we'll fix that now: + if (floor(i / out) > maxInt - n) { + error$1('overflow'); + } -var _convertUnicodeIndices = _interopRequireDefault(__nccwpck_require__(6954)); + n += floor(i / out); + i %= out; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(text, entities) { - (0, _convertUnicodeIndices["default"])(text, entities, false); -} + // Insert `n` at position `i` of the output. + output.splice(i++, 0, n); + } -module.exports = exports.default; + return String.fromCodePoint.apply(String, output); +}; -/***/ }), +/** + * Converts a string of Unicode symbols (e.g. a domain name label) to a + * Punycode string of ASCII-only symbols. + * @memberOf punycode + * @param {String} input The string of Unicode symbols. + * @returns {String} The resulting Punycode string of ASCII-only symbols. + */ +var encode = function encode(input) { + var output = []; -/***/ 8532: -/***/ ((module, exports, __nccwpck_require__) => { + // Convert the input in UCS-2 to an array of Unicode code points. + input = ucs2decode(input); -"use strict"; + // Cache the length. + var inputLength = input.length; + + // Initialize the state. + var n = initialN; + var delta = 0; + var bias = initialBias; + // Handle the basic code points. + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; -var _interopRequireDefault = __nccwpck_require__(3286); + try { + for (var _iterator = input[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var _currentValue2 = _step.value; + + if (_currentValue2 < 0x80) { + output.push(stringFromCharCode(_currentValue2)); + } + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } -__nccwpck_require__(6880); + var basicLength = output.length; + var handledCPCount = basicLength; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + // `handledCPCount` is the number of code points that have been handled; + // `basicLength` is the number of basic code points. -__nccwpck_require__(3771); + // Finish the basic string with a delimiter unless it's empty. + if (basicLength) { + output.push(delimiter); + } -__nccwpck_require__(230); + // Main encoding loop: + while (handledCPCount < inputLength) { -__nccwpck_require__(3938); + // All non-basic code points < n have been handled already. Find the next + // larger one: + var m = maxInt; + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; -__nccwpck_require__(571); + try { + for (var _iterator2 = input[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var currentValue = _step2.value; -__nccwpck_require__(7103); + if (currentValue >= n && currentValue < m) { + m = currentValue; + } + } -var _configs = _interopRequireDefault(__nccwpck_require__(6290)); + // Increase `delta` enough to advance the decoder's state to , + // but guard against overflow. + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; + } finally { + try { + if (!_iteratorNormalCompletion2 && _iterator2.return) { + _iterator2.return(); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } + } + } -var _extractUrlsWithIndices = _interopRequireDefault(__nccwpck_require__(2429)); + var handledCPCountPlusOne = handledCPCount + 1; + if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { + error$1('overflow'); + } -var _getCharacterWeight = _interopRequireDefault(__nccwpck_require__(8606)); + delta += (m - n) * handledCPCountPlusOne; + n = m; -var _hasInvalidCharacters = _interopRequireDefault(__nccwpck_require__(4597)); + var _iteratorNormalCompletion3 = true; + var _didIteratorError3 = false; + var _iteratorError3 = undefined; -var _modifyIndicesFromUTF16ToUnicode = _interopRequireDefault(__nccwpck_require__(9403)); + try { + for (var _iterator3 = input[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { + var _currentValue = _step3.value; -var _twemojiParser = __nccwpck_require__(829); + if (_currentValue < n && ++delta > maxInt) { + error$1('overflow'); + } + if (_currentValue == n) { + // Represent delta as a generalized variable-length integer. + var q = delta; + for (var k = base;; /* no condition */k += base) { + var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias; + if (q < t) { + break; + } + var qMinusT = q - t; + var baseMinusT = base - t; + output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))); + q = floor(qMinusT / baseMinusT); + } -var _urlHasHttps = _interopRequireDefault(__nccwpck_require__(4926)); + output.push(stringFromCharCode(digitToBasic(q, 0))); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); + delta = 0; + ++handledCPCount; + } + } + } catch (err) { + _didIteratorError3 = true; + _iteratorError3 = err; + } finally { + try { + if (!_iteratorNormalCompletion3 && _iterator3.return) { + _iterator3.return(); + } + } finally { + if (_didIteratorError3) { + throw _iteratorError3; + } + } + } -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -// TODO: WEB-19861 Replace with public package after it is open sourced + ++delta; + ++n; + } + return output.join(''); +}; /** - * [parseTweet description] - * @param {string} text tweet text to parse - * @param {Object} options config options to pass - * @return {Object} Fields in response described below: - * - * Response fields: - * weightedLength {int} the weighted length of tweet based on weights specified in the config - * valid {bool} If tweet is valid - * permillage {float} permillage of the tweet over the max length specified in config - * validRangeStart {int} beginning of valid text - * validRangeEnd {int} End index of valid part of the tweet text (inclusive) in utf16 - * displayRangeStart {int} beginning index of display text - * displayRangeEnd {int} end index of display text (inclusive) in utf16 + * Converts a Punycode string representing a domain name or an email address + * to Unicode. Only the Punycoded parts of the input will be converted, i.e. + * it doesn't matter if you call it on a string that has already been + * converted to Unicode. + * @memberOf punycode + * @param {String} input The Punycoded domain name or email address to + * convert to Unicode. + * @returns {String} The Unicode representation of the given Punycode + * string. */ -var parseTweet = function parseTweet() { - var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _configs["default"].defaults; - var mergedOptions = Object.keys(options).length ? options : _configs["default"].defaults; - var defaultWeight = mergedOptions.defaultWeight, - emojiParsingEnabled = mergedOptions.emojiParsingEnabled, - scale = mergedOptions.scale, - maxWeightedTweetLength = mergedOptions.maxWeightedTweetLength, - transformedURLLength = mergedOptions.transformedURLLength; - var normalizedText = typeof String.prototype.normalize === 'function' ? text.normalize() : text; // Hash all entities by their startIndex for fast lookup - - var urlEntitiesMap = transformEntitiesToHash((0, _extractUrlsWithIndices["default"])(normalizedText)); - var emojiEntitiesMap = emojiParsingEnabled ? transformEntitiesToHash((0, _twemojiParser.parse)(normalizedText)) : []; - var tweetLength = normalizedText.length; - var weightedLength = 0; - var validDisplayIndex = 0; - var valid = true; // Go through every character and calculate weight - - for (var charIndex = 0; charIndex < tweetLength; charIndex++) { - // If a url begins at the specified index handle, add constant length - if (urlEntitiesMap[charIndex]) { - var _urlEntitiesMap$charI = urlEntitiesMap[charIndex], - url = _urlEntitiesMap$charI.url, - indices = _urlEntitiesMap$charI.indices; - weightedLength += transformedURLLength * scale; - charIndex += url.length - 1; - } else if (emojiParsingEnabled && emojiEntitiesMap[charIndex]) { - var _emojiEntitiesMap$cha = emojiEntitiesMap[charIndex], - emoji = _emojiEntitiesMap$cha.text, - _indices = _emojiEntitiesMap$cha.indices; - weightedLength += defaultWeight; - charIndex += emoji.length - 1; - } else { - charIndex += isSurrogatePair(normalizedText, charIndex) ? 1 : 0; - weightedLength += (0, _getCharacterWeight["default"])(normalizedText.charAt(charIndex), mergedOptions); - } // Only test for validity of character if it is still valid - - - if (valid) { - valid = !(0, _hasInvalidCharacters["default"])(normalizedText.substring(charIndex, charIndex + 1)); - } - - if (valid && weightedLength <= maxWeightedTweetLength * scale) { - validDisplayIndex = charIndex; - } - } - - weightedLength = weightedLength / scale; - valid = valid && weightedLength > 0 && weightedLength <= maxWeightedTweetLength; - var permillage = Math.floor(weightedLength / maxWeightedTweetLength * 1000); - var normalizationOffset = text.length - normalizedText.length; - validDisplayIndex += normalizationOffset; - return { - weightedLength: weightedLength, - valid: valid, - permillage: permillage, - validRangeStart: 0, - validRangeEnd: validDisplayIndex, - displayRangeStart: 0, - displayRangeEnd: text.length > 0 ? text.length - 1 : 0 - }; +var toUnicode = function toUnicode(input) { + return mapDomain(input, function (string) { + return regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string; + }); }; -var transformEntitiesToHash = function transformEntitiesToHash(entities) { - return entities.reduce(function (map, entity) { - map[entity.indices[0]] = entity; - return map; - }, {}); +/** + * Converts a Unicode string representing a domain name or an email address to + * Punycode. Only the non-ASCII parts of the domain name will be converted, + * i.e. it doesn't matter if you call it with a domain that's already in + * ASCII. + * @memberOf punycode + * @param {String} input The domain name or email address to convert, as a + * Unicode string. + * @returns {String} The Punycode representation of the given domain name or + * email address. + */ +var toASCII = function toASCII(input) { + return mapDomain(input, function (string) { + return regexNonASCII.test(string) ? 'xn--' + encode(string) : string; + }); }; -var isSurrogatePair = function isSurrogatePair(text, cIndex) { - // Test if a character is the beginning of a surrogate pair - if (cIndex < text.length - 1) { - var c = text.charCodeAt(cIndex); - var cNext = text.charCodeAt(cIndex + 1); - return 0xd800 <= c && c <= 0xdbff && 0xdc00 <= cNext && cNext <= 0xdfff; - } +/*--------------------------------------------------------------------------*/ - return false; +/** Define the public API */ +var punycode = { + /** + * A string representing the current Punycode.js version number. + * @memberOf punycode + * @type String + */ + 'version': '2.1.0', + /** + * An object of methods to convert from JavaScript's internal character + * representation (UCS-2) to Unicode code points, and back. + * @see + * @memberOf punycode + * @type Object + */ + 'ucs2': { + 'decode': ucs2decode, + 'encode': ucs2encode + }, + 'decode': decode, + 'encode': encode, + 'toASCII': toASCII, + 'toUnicode': toUnicode }; -var _default = parseTweet; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), - -/***/ 4079: -/***/ ((module, exports, __nccwpck_require__) => { - -"use strict"; - - -__nccwpck_require__(6880); +/** + * URI.js + * + * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript. + * @author Gary Court + * @see http://github.com/garycourt/uri-js + */ +/** + * Copyright 2011 Gary Court. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of Gary Court. + */ +var SCHEMES = {}; +function pctEncChar(chr) { + var c = chr.charCodeAt(0); + var e = void 0; + if (c < 16) e = "%0" + c.toString(16).toUpperCase();else if (c < 128) e = "%" + c.toString(16).toUpperCase();else if (c < 2048) e = "%" + (c >> 6 | 192).toString(16).toUpperCase() + "%" + (c & 63 | 128).toString(16).toUpperCase();else e = "%" + (c >> 12 | 224).toString(16).toUpperCase() + "%" + (c >> 6 & 63 | 128).toString(16).toUpperCase() + "%" + (c & 63 | 128).toString(16).toUpperCase(); + return e; +} +function pctDecChars(str) { + var newStr = ""; + var i = 0; + var il = str.length; + while (i < il) { + var c = parseInt(str.substr(i + 1, 2), 16); + if (c < 128) { + newStr += String.fromCharCode(c); + i += 3; + } else if (c >= 194 && c < 224) { + if (il - i >= 6) { + var c2 = parseInt(str.substr(i + 4, 2), 16); + newStr += String.fromCharCode((c & 31) << 6 | c2 & 63); + } else { + newStr += str.substr(i, 6); + } + i += 6; + } else if (c >= 224) { + if (il - i >= 9) { + var _c = parseInt(str.substr(i + 4, 2), 16); + var c3 = parseInt(str.substr(i + 7, 2), 16); + newStr += String.fromCharCode((c & 15) << 12 | (_c & 63) << 6 | c3 & 63); + } else { + newStr += str.substr(i, 9); + } + i += 9; + } else { + newStr += str.substr(i, 3); + i += 3; + } + } + return newStr; +} +function _normalizeComponentEncoding(components, protocol) { + function decodeUnreserved(str) { + var decStr = pctDecChars(str); + return !decStr.match(protocol.UNRESERVED) ? str : decStr; + } + if (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, ""); + if (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); + if (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); + if (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); + if (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); + if (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); + return components; +} -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -// Generated from unicode_regex/unicode_regex_groups.scala, same as objective c's \p{L}\p{M} -var astralLetterAndMarks = /\ud800[\udc00-\udc0b\udc0d-\udc26\udc28-\udc3a\udc3c\udc3d\udc3f-\udc4d\udc50-\udc5d\udc80-\udcfa\uddfd\ude80-\ude9c\udea0-\uded0\udee0\udf00-\udf1f\udf30-\udf40\udf42-\udf49\udf50-\udf7a\udf80-\udf9d\udfa0-\udfc3\udfc8-\udfcf]|\ud801[\udc00-\udc9d\udd00-\udd27\udd30-\udd63\ude00-\udf36\udf40-\udf55\udf60-\udf67]|\ud802[\udc00-\udc05\udc08\udc0a-\udc35\udc37\udc38\udc3c\udc3f-\udc55\udc60-\udc76\udc80-\udc9e\udd00-\udd15\udd20-\udd39\udd80-\uddb7\uddbe\uddbf\ude00-\ude03\ude05\ude06\ude0c-\ude13\ude15-\ude17\ude19-\ude33\ude38-\ude3a\ude3f\ude60-\ude7c\ude80-\ude9c\udec0-\udec7\udec9-\udee6\udf00-\udf35\udf40-\udf55\udf60-\udf72\udf80-\udf91]|\ud803[\udc00-\udc48]|\ud804[\udc00-\udc46\udc7f-\udcba\udcd0-\udce8\udd00-\udd34\udd50-\udd73\udd76\udd80-\uddc4\uddda\ude00-\ude11\ude13-\ude37\udeb0-\udeea\udf01-\udf03\udf05-\udf0c\udf0f\udf10\udf13-\udf28\udf2a-\udf30\udf32\udf33\udf35-\udf39\udf3c-\udf44\udf47\udf48\udf4b-\udf4d\udf57\udf5d-\udf63\udf66-\udf6c\udf70-\udf74]|\ud805[\udc80-\udcc5\udcc7\udd80-\uddb5\uddb8-\uddc0\ude00-\ude40\ude44\ude80-\udeb7]|\ud806[\udca0-\udcdf\udcff\udec0-\udef8]|\ud808[\udc00-\udf98]|\ud80c[\udc00-\udfff]|\ud80d[\udc00-\udc2e]|\ud81a[\udc00-\ude38\ude40-\ude5e\uded0-\udeed\udef0-\udef4\udf00-\udf36\udf40-\udf43\udf63-\udf77\udf7d-\udf8f]|\ud81b[\udf00-\udf44\udf50-\udf7e\udf8f-\udf9f]|\ud82c[\udc00\udc01]|\ud82f[\udc00-\udc6a\udc70-\udc7c\udc80-\udc88\udc90-\udc99\udc9d\udc9e]|\ud834[\udd65-\udd69\udd6d-\udd72\udd7b-\udd82\udd85-\udd8b\uddaa-\uddad\ude42-\ude44]|\ud835[\udc00-\udc54\udc56-\udc9c\udc9e\udc9f\udca2\udca5\udca6\udca9-\udcac\udcae-\udcb9\udcbb\udcbd-\udcc3\udcc5-\udd05\udd07-\udd0a\udd0d-\udd14\udd16-\udd1c\udd1e-\udd39\udd3b-\udd3e\udd40-\udd44\udd46\udd4a-\udd50\udd52-\udea5\udea8-\udec0\udec2-\udeda\udedc-\udefa\udefc-\udf14\udf16-\udf34\udf36-\udf4e\udf50-\udf6e\udf70-\udf88\udf8a-\udfa8\udfaa-\udfc2\udfc4-\udfcb]|\ud83a[\udc00-\udcc4\udcd0-\udcd6]|\ud83b[\ude00-\ude03\ude05-\ude1f\ude21\ude22\ude24\ude27\ude29-\ude32\ude34-\ude37\ude39\ude3b\ude42\ude47\ude49\ude4b\ude4d-\ude4f\ude51\ude52\ude54\ude57\ude59\ude5b\ude5d\ude5f\ude61\ude62\ude64\ude67-\ude6a\ude6c-\ude72\ude74-\ude77\ude79-\ude7c\ude7e\ude80-\ude89\ude8b-\ude9b\udea1-\udea3\udea5-\udea9\udeab-\udebb]|\ud840[\udc00-\udfff]|\ud841[\udc00-\udfff]|\ud842[\udc00-\udfff]|\ud843[\udc00-\udfff]|\ud844[\udc00-\udfff]|\ud845[\udc00-\udfff]|\ud846[\udc00-\udfff]|\ud847[\udc00-\udfff]|\ud848[\udc00-\udfff]|\ud849[\udc00-\udfff]|\ud84a[\udc00-\udfff]|\ud84b[\udc00-\udfff]|\ud84c[\udc00-\udfff]|\ud84d[\udc00-\udfff]|\ud84e[\udc00-\udfff]|\ud84f[\udc00-\udfff]|\ud850[\udc00-\udfff]|\ud851[\udc00-\udfff]|\ud852[\udc00-\udfff]|\ud853[\udc00-\udfff]|\ud854[\udc00-\udfff]|\ud855[\udc00-\udfff]|\ud856[\udc00-\udfff]|\ud857[\udc00-\udfff]|\ud858[\udc00-\udfff]|\ud859[\udc00-\udfff]|\ud85a[\udc00-\udfff]|\ud85b[\udc00-\udfff]|\ud85c[\udc00-\udfff]|\ud85d[\udc00-\udfff]|\ud85e[\udc00-\udfff]|\ud85f[\udc00-\udfff]|\ud860[\udc00-\udfff]|\ud861[\udc00-\udfff]|\ud862[\udc00-\udfff]|\ud863[\udc00-\udfff]|\ud864[\udc00-\udfff]|\ud865[\udc00-\udfff]|\ud866[\udc00-\udfff]|\ud867[\udc00-\udfff]|\ud868[\udc00-\udfff]|\ud869[\udc00-\uded6\udf00-\udfff]|\ud86a[\udc00-\udfff]|\ud86b[\udc00-\udfff]|\ud86c[\udc00-\udfff]|\ud86d[\udc00-\udf34\udf40-\udfff]|\ud86e[\udc00-\udc1d]|\ud87e[\udc00-\ude1d]|\udb40[\udd00-\uddef]/; -var _default = astralLetterAndMarks; -exports["default"] = _default; -module.exports = exports.default; +function _stripLeadingZeros(str) { + return str.replace(/^0*(.*)/, "$1") || "0"; +} +function _normalizeIPv4(host, protocol) { + var matches = host.match(protocol.IPV4ADDRESS) || []; -/***/ }), + var _matches = slicedToArray(matches, 2), + address = _matches[1]; -/***/ 777: -/***/ ((module, exports, __nccwpck_require__) => { + if (address) { + return address.split(".").map(_stripLeadingZeros).join("."); + } else { + return host; + } +} +function _normalizeIPv6(host, protocol) { + var matches = host.match(protocol.IPV6ADDRESS) || []; + + var _matches2 = slicedToArray(matches, 3), + address = _matches2[1], + zone = _matches2[2]; + + if (address) { + var _address$toLowerCase$ = address.toLowerCase().split('::').reverse(), + _address$toLowerCase$2 = slicedToArray(_address$toLowerCase$, 2), + last = _address$toLowerCase$2[0], + first = _address$toLowerCase$2[1]; + + var firstFields = first ? first.split(":").map(_stripLeadingZeros) : []; + var lastFields = last.split(":").map(_stripLeadingZeros); + var isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]); + var fieldCount = isLastFieldIPv4Address ? 7 : 8; + var lastFieldsStart = lastFields.length - fieldCount; + var fields = Array(fieldCount); + for (var x = 0; x < fieldCount; ++x) { + fields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || ''; + } + if (isLastFieldIPv4Address) { + fields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol); + } + var allZeroFields = fields.reduce(function (acc, field, index) { + if (!field || field === "0") { + var lastLongest = acc[acc.length - 1]; + if (lastLongest && lastLongest.index + lastLongest.length === index) { + lastLongest.length++; + } else { + acc.push({ index: index, length: 1 }); + } + } + return acc; + }, []); + var longestZeroFields = allZeroFields.sort(function (a, b) { + return b.length - a.length; + })[0]; + var newHost = void 0; + if (longestZeroFields && longestZeroFields.length > 1) { + var newFirst = fields.slice(0, longestZeroFields.index); + var newLast = fields.slice(longestZeroFields.index + longestZeroFields.length); + newHost = newFirst.join(":") + "::" + newLast.join(":"); + } else { + newHost = fields.join(":"); + } + if (zone) { + newHost += "%" + zone; + } + return newHost; + } else { + return host; + } +} +var URI_PARSE = /^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i; +var NO_MATCH_IS_UNDEFINED = "".match(/(){0}/)[1] === undefined; +function parse(uriString) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + var components = {}; + var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL; + if (options.reference === "suffix") uriString = (options.scheme ? options.scheme + ":" : "") + "//" + uriString; + var matches = uriString.match(URI_PARSE); + if (matches) { + if (NO_MATCH_IS_UNDEFINED) { + //store each component + components.scheme = matches[1]; + components.userinfo = matches[3]; + components.host = matches[4]; + components.port = parseInt(matches[5], 10); + components.path = matches[6] || ""; + components.query = matches[7]; + components.fragment = matches[8]; + //fix port number + if (isNaN(components.port)) { + components.port = matches[5]; + } + } else { + //IE FIX for improper RegExp matching + //store each component + components.scheme = matches[1] || undefined; + components.userinfo = uriString.indexOf("@") !== -1 ? matches[3] : undefined; + components.host = uriString.indexOf("//") !== -1 ? matches[4] : undefined; + components.port = parseInt(matches[5], 10); + components.path = matches[6] || ""; + components.query = uriString.indexOf("?") !== -1 ? matches[7] : undefined; + components.fragment = uriString.indexOf("#") !== -1 ? matches[8] : undefined; + //fix port number + if (isNaN(components.port)) { + components.port = uriString.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/) ? matches[4] : undefined; + } + } + if (components.host) { + //normalize IP hosts + components.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol); + } + //determine reference type + if (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) { + components.reference = "same-document"; + } else if (components.scheme === undefined) { + components.reference = "relative"; + } else if (components.fragment === undefined) { + components.reference = "absolute"; + } else { + components.reference = "uri"; + } + //check for reference errors + if (options.reference && options.reference !== "suffix" && options.reference !== components.reference) { + components.error = components.error || "URI is not a " + options.reference + " reference."; + } + //find scheme handler + var schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()]; + //check if scheme can't handle IRIs + if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) { + //if host component is a domain name + if (components.host && (options.domainHost || schemeHandler && schemeHandler.domainHost)) { + //convert Unicode IDN -> ASCII IDN + try { + components.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()); + } catch (e) { + components.error = components.error || "Host's domain name can not be converted to ASCII via punycode: " + e; + } + } + //convert IRI -> URI + _normalizeComponentEncoding(components, URI_PROTOCOL); + } else { + //normalize encodings + _normalizeComponentEncoding(components, protocol); + } + //perform scheme specific parsing + if (schemeHandler && schemeHandler.parse) { + schemeHandler.parse(components, options); + } + } else { + components.error = components.error || "URI can not be parsed."; + } + return components; +} + +function _recomposeAuthority(components, options) { + var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL; + var uriTokens = []; + if (components.userinfo !== undefined) { + uriTokens.push(components.userinfo); + uriTokens.push("@"); + } + if (components.host !== undefined) { + //normalize IP hosts, add brackets and escape zone separator for IPv6 + uriTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, function (_, $1, $2) { + return "[" + $1 + ($2 ? "%25" + $2 : "") + "]"; + })); + } + if (typeof components.port === "number") { + uriTokens.push(":"); + uriTokens.push(components.port.toString(10)); + } + return uriTokens.length ? uriTokens.join("") : undefined; +} + +var RDS1 = /^\.\.?\//; +var RDS2 = /^\/\.(\/|$)/; +var RDS3 = /^\/\.\.(\/|$)/; +var RDS5 = /^\/?(?:.|\n)*?(?=\/|$)/; +function removeDotSegments(input) { + var output = []; + while (input.length) { + if (input.match(RDS1)) { + input = input.replace(RDS1, ""); + } else if (input.match(RDS2)) { + input = input.replace(RDS2, "/"); + } else if (input.match(RDS3)) { + input = input.replace(RDS3, "/"); + output.pop(); + } else if (input === "." || input === "..") { + input = ""; + } else { + var im = input.match(RDS5); + if (im) { + var s = im[0]; + input = input.slice(s.length); + output.push(s); + } else { + throw new Error("Unexpected dot segment condition"); + } + } + } + return output.join(""); +} -"use strict"; +function serialize(components) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var protocol = options.iri ? IRI_PROTOCOL : URI_PROTOCOL; + var uriTokens = []; + //find scheme handler + var schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()]; + //perform scheme specific serialization + if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options); + if (components.host) { + //if host component is an IPv6 address + if (protocol.IPV6ADDRESS.test(components.host)) {} + //TODO: normalize IPv6 address as per RFC 5952 -__nccwpck_require__(6880); + //if host component is a domain name + else if (options.domainHost || schemeHandler && schemeHandler.domainHost) { + //convert IDN via punycode + try { + components.host = !options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host); + } catch (e) { + components.error = components.error || "Host's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e; + } + } + } + //normalize encoding + _normalizeComponentEncoding(components, protocol); + if (options.reference !== "suffix" && components.scheme) { + uriTokens.push(components.scheme); + uriTokens.push(":"); + } + var authority = _recomposeAuthority(components, options); + if (authority !== undefined) { + if (options.reference !== "suffix") { + uriTokens.push("//"); + } + uriTokens.push(authority); + if (components.path && components.path.charAt(0) !== "/") { + uriTokens.push("/"); + } + } + if (components.path !== undefined) { + var s = components.path; + if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) { + s = removeDotSegments(s); + } + if (authority === undefined) { + s = s.replace(/^\/\//, "/%2F"); //don't allow the path to start with "//" + } + uriTokens.push(s); + } + if (components.query !== undefined) { + uriTokens.push("?"); + uriTokens.push(components.query); + } + if (components.fragment !== undefined) { + uriTokens.push("#"); + uriTokens.push(components.fragment); + } + return uriTokens.join(""); //merge tokens into a string +} -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var astralNumerals = /\ud801[\udca0-\udca9]|\ud804[\udc66-\udc6f\udcf0-\udcf9\udd36-\udd3f\uddd0-\uddd9\udef0-\udef9]|\ud805[\udcd0-\udcd9\ude50-\ude59\udec0-\udec9]|\ud806[\udce0-\udce9]|\ud81a[\ude60-\ude69\udf50-\udf59]|\ud835[\udfce-\udfff]/; -var _default = astralNumerals; -exports["default"] = _default; -module.exports = exports.default; +function resolveComponents(base, relative) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var skipNormalization = arguments[3]; -/***/ }), + var target = {}; + if (!skipNormalization) { + base = parse(serialize(base, options), options); //normalize base components + relative = parse(serialize(relative, options), options); //normalize relative components + } + options = options || {}; + if (!options.tolerant && relative.scheme) { + target.scheme = relative.scheme; + //target.authority = relative.authority; + target.userinfo = relative.userinfo; + target.host = relative.host; + target.port = relative.port; + target.path = removeDotSegments(relative.path || ""); + target.query = relative.query; + } else { + if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) { + //target.authority = relative.authority; + target.userinfo = relative.userinfo; + target.host = relative.host; + target.port = relative.port; + target.path = removeDotSegments(relative.path || ""); + target.query = relative.query; + } else { + if (!relative.path) { + target.path = base.path; + if (relative.query !== undefined) { + target.query = relative.query; + } else { + target.query = base.query; + } + } else { + if (relative.path.charAt(0) === "/") { + target.path = removeDotSegments(relative.path); + } else { + if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) { + target.path = "/" + relative.path; + } else if (!base.path) { + target.path = relative.path; + } else { + target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative.path; + } + target.path = removeDotSegments(target.path); + } + target.query = relative.query; + } + //target.authority = base.authority; + target.userinfo = base.userinfo; + target.host = base.host; + target.port = base.port; + } + target.scheme = base.scheme; + } + target.fragment = relative.fragment; + return target; +} -/***/ 6683: -/***/ ((module, exports, __nccwpck_require__) => { +function resolve(baseURI, relativeURI, options) { + var schemelessOptions = assign({ scheme: 'null' }, options); + return serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions); +} -"use strict"; +function normalize(uri, options) { + if (typeof uri === "string") { + uri = serialize(parse(uri, options), options); + } else if (typeOf(uri) === "object") { + uri = parse(serialize(uri, options), options); + } + return uri; +} +function equal(uriA, uriB, options) { + if (typeof uriA === "string") { + uriA = serialize(parse(uriA, options), options); + } else if (typeOf(uriA) === "object") { + uriA = serialize(uriA, options); + } + if (typeof uriB === "string") { + uriB = serialize(parse(uriB, options), options); + } else if (typeOf(uriB) === "object") { + uriB = serialize(uriB, options); + } + return uriA === uriB; +} -__nccwpck_require__(6880); +function escapeComponent(str, options) { + return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE, pctEncChar); +} -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var atSigns = /[@@]/; -var _default = atSigns; -exports["default"] = _default; -module.exports = exports.default; +function unescapeComponent(str, options) { + return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED, pctDecChars); +} -/***/ }), +var handler = { + scheme: "http", + domainHost: true, + parse: function parse(components, options) { + //report missing host + if (!components.host) { + components.error = components.error || "HTTP URIs must have a host."; + } + return components; + }, + serialize: function serialize(components, options) { + //normalize the default port + if (components.port === (String(components.scheme).toLowerCase() !== "https" ? 80 : 443) || components.port === "") { + components.port = undefined; + } + //normalize the empty path + if (!components.path) { + components.path = "/"; + } + //NOTE: We do not parse query strings for HTTP URIs + //as WWW Form Url Encoded query strings are part of the HTML4+ spec, + //and not the HTTP spec. + return components; + } +}; -/***/ 797: -/***/ ((module, exports, __nccwpck_require__) => { +var handler$1 = { + scheme: "https", + domainHost: handler.domainHost, + parse: handler.parse, + serialize: handler.serialize +}; -"use strict"; +var O = {}; +var isIRI = true; +//RFC 3986 +var UNRESERVED$$ = "[A-Za-z0-9\\-\\.\\_\\~" + (isIRI ? "\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF" : "") + "]"; +var HEXDIG$$ = "[0-9A-Fa-f]"; //case-insensitive +var PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)); //expanded +//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; = +//const ATEXT$$ = "[A-Za-z0-9\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~]"; +//const WSP$$ = "[\\x20\\x09]"; +//const OBS_QTEXT$$ = "[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F]"; //(%d1-8 / %d11-12 / %d14-31 / %d127) +//const QTEXT$$ = merge("[\\x21\\x23-\\x5B\\x5D-\\x7E]", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext +//const VCHAR$$ = "[\\x21-\\x7E]"; +//const WSP$$ = "[\\x20\\x09]"; +//const OBS_QP$ = subexp("\\\\" + merge("[\\x00\\x0D\\x0A]", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext +//const FWS$ = subexp(subexp(WSP$$ + "*" + "\\x0D\\x0A") + "?" + WSP$$ + "+"); +//const QUOTED_PAIR$ = subexp(subexp("\\\\" + subexp(VCHAR$$ + "|" + WSP$$)) + "|" + OBS_QP$); +//const QUOTED_STRING$ = subexp('\\"' + subexp(FWS$ + "?" + QCONTENT$) + "*" + FWS$ + "?" + '\\"'); +var ATEXT$$ = "[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]"; +var QTEXT$$ = "[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]"; +var VCHAR$$ = merge(QTEXT$$, "[\\\"\\\\]"); +var SOME_DELIMS$$ = "[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"; +var UNRESERVED = new RegExp(UNRESERVED$$, "g"); +var PCT_ENCODED = new RegExp(PCT_ENCODED$, "g"); +var NOT_LOCAL_PART = new RegExp(merge("[^]", ATEXT$$, "[\\.]", '[\\"]', VCHAR$$), "g"); +var NOT_HFNAME = new RegExp(merge("[^]", UNRESERVED$$, SOME_DELIMS$$), "g"); +var NOT_HFVALUE = NOT_HFNAME; +function decodeUnreserved(str) { + var decStr = pctDecChars(str); + return !decStr.match(UNRESERVED) ? str : decStr; +} +var handler$2 = { + scheme: "mailto", + parse: function parse$$1(components, options) { + var mailtoComponents = components; + var to = mailtoComponents.to = mailtoComponents.path ? mailtoComponents.path.split(",") : []; + mailtoComponents.path = undefined; + if (mailtoComponents.query) { + var unknownHeaders = false; + var headers = {}; + var hfields = mailtoComponents.query.split("&"); + for (var x = 0, xl = hfields.length; x < xl; ++x) { + var hfield = hfields[x].split("="); + switch (hfield[0]) { + case "to": + var toAddrs = hfield[1].split(","); + for (var _x = 0, _xl = toAddrs.length; _x < _xl; ++_x) { + to.push(toAddrs[_x]); + } + break; + case "subject": + mailtoComponents.subject = unescapeComponent(hfield[1], options); + break; + case "body": + mailtoComponents.body = unescapeComponent(hfield[1], options); + break; + default: + unknownHeaders = true; + headers[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options); + break; + } + } + if (unknownHeaders) mailtoComponents.headers = headers; + } + mailtoComponents.query = undefined; + for (var _x2 = 0, _xl2 = to.length; _x2 < _xl2; ++_x2) { + var addr = to[_x2].split("@"); + addr[0] = unescapeComponent(addr[0]); + if (!options.unicodeSupport) { + //convert Unicode IDN -> ASCII IDN + try { + addr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase()); + } catch (e) { + mailtoComponents.error = mailtoComponents.error || "Email address's domain name can not be converted to ASCII via punycode: " + e; + } + } else { + addr[1] = unescapeComponent(addr[1], options).toLowerCase(); + } + to[_x2] = addr.join("@"); + } + return mailtoComponents; + }, + serialize: function serialize$$1(mailtoComponents, options) { + var components = mailtoComponents; + var to = toArray(mailtoComponents.to); + if (to) { + for (var x = 0, xl = to.length; x < xl; ++x) { + var toAddr = String(to[x]); + var atIdx = toAddr.lastIndexOf("@"); + var localPart = toAddr.slice(0, atIdx).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar); + var domain = toAddr.slice(atIdx + 1); + //convert IDN via punycode + try { + domain = !options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain); + } catch (e) { + components.error = components.error || "Email address's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e; + } + to[x] = localPart + "@" + domain; + } + components.path = to.join(","); + } + var headers = mailtoComponents.headers = mailtoComponents.headers || {}; + if (mailtoComponents.subject) headers["subject"] = mailtoComponents.subject; + if (mailtoComponents.body) headers["body"] = mailtoComponents.body; + var fields = []; + for (var name in headers) { + if (headers[name] !== O[name]) { + fields.push(name.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) + "=" + headers[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar)); + } + } + if (fields.length) { + components.query = fields.join("&"); + } + return components; + } +}; +var URN_PARSE = /^([^\:]+)\:(.*)/; +//RFC 2141 +var handler$3 = { + scheme: "urn", + parse: function parse$$1(components, options) { + var matches = components.path && components.path.match(URN_PARSE); + var urnComponents = components; + if (matches) { + var scheme = options.scheme || urnComponents.scheme || "urn"; + var nid = matches[1].toLowerCase(); + var nss = matches[2]; + var urnScheme = scheme + ":" + (options.nid || nid); + var schemeHandler = SCHEMES[urnScheme]; + urnComponents.nid = nid; + urnComponents.nss = nss; + urnComponents.path = undefined; + if (schemeHandler) { + urnComponents = schemeHandler.parse(urnComponents, options); + } + } else { + urnComponents.error = urnComponents.error || "URN can not be parsed."; + } + return urnComponents; + }, + serialize: function serialize$$1(urnComponents, options) { + var scheme = options.scheme || urnComponents.scheme || "urn"; + var nid = urnComponents.nid; + var urnScheme = scheme + ":" + (options.nid || nid); + var schemeHandler = SCHEMES[urnScheme]; + if (schemeHandler) { + urnComponents = schemeHandler.serialize(urnComponents, options); + } + var uriComponents = urnComponents; + var nss = urnComponents.nss; + uriComponents.path = (nid || options.nid) + ":" + nss; + return uriComponents; + } +}; -__nccwpck_require__(6880); +var UUID = /^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/; +//RFC 4122 +var handler$4 = { + scheme: "urn:uuid", + parse: function parse(urnComponents, options) { + var uuidComponents = urnComponents; + uuidComponents.uuid = uuidComponents.nss; + uuidComponents.nss = undefined; + if (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) { + uuidComponents.error = uuidComponents.error || "UUID is not valid."; + } + return uuidComponents; + }, + serialize: function serialize(uuidComponents, options) { + var urnComponents = uuidComponents; + //normalize UUID + urnComponents.nss = (uuidComponents.uuid || "").toLowerCase(); + return urnComponents; + } +}; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -// Generated from unicode_regex/unicode_regex_groups.scala, same as objective c's \p{L}\p{M} -var bmpLetterAndMarks = /A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0300-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u0483-\u052f\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05d0-\u05ea\u05f0-\u05f2\u0610-\u061a\u0620-\u065f\u066e-\u06d3\u06d5-\u06dc\u06df-\u06e8\u06ea-\u06ef\u06fa-\u06fc\u06ff\u0710-\u074a\u074d-\u07b1\u07ca-\u07f5\u07fa\u0800-\u082d\u0840-\u085b\u08a0-\u08b2\u08e4-\u0963\u0971-\u0983\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7\u09c8\u09cb-\u09ce\u09d7\u09dc\u09dd\u09df-\u09e3\u09f0\u09f1\u0a01-\u0a03\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a70-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0b01-\u0b03\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b5c\u0b5d\u0b5f-\u0b63\u0b71\u0b82\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0c00-\u0c03\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c58\u0c59\u0c60-\u0c63\u0c81-\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0cde\u0ce0-\u0ce3\u0cf1\u0cf2\u0d01-\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d-\u0d44\u0d46-\u0d48\u0d4a-\u0d4e\u0d57\u0d60-\u0d63\u0d7a-\u0d7f\u0d82\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e01-\u0e3a\u0e40-\u0e4e\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb9\u0ebb-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0edc-\u0edf\u0f00\u0f18\u0f19\u0f35\u0f37\u0f39\u0f3e-\u0f47\u0f49-\u0f6c\u0f71-\u0f84\u0f86-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u103f\u1050-\u108f\u109a-\u109d\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u135d-\u135f\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16f1-\u16f8\u1700-\u170c\u170e-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772\u1773\u1780-\u17d3\u17d7\u17dc\u17dd\u180b-\u180d\u1820-\u1877\u1880-\u18aa\u18b0-\u18f5\u1900-\u191e\u1920-\u192b\u1930-\u193b\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a1b\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f\u1aa7\u1ab0-\u1abe\u1b00-\u1b4b\u1b6b-\u1b73\u1b80-\u1baf\u1bba-\u1bf3\u1c00-\u1c37\u1c4d-\u1c4f\u1c5a-\u1c7d\u1cd0-\u1cd2\u1cd4-\u1cf6\u1cf8\u1cf9\u1d00-\u1df5\u1dfc-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u20d0-\u20f0\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2183\u2184\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d7f-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2de0-\u2dff\u2e2f\u3005\u3006\u302a-\u302f\u3031-\u3035\u303b\u303c\u3041-\u3096\u3099\u309a\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua672\ua674-\ua67d\ua67f-\ua69d\ua69f-\ua6e5\ua6f0\ua6f1\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua7ad\ua7b0\ua7b1\ua7f7-\ua827\ua840-\ua873\ua880-\ua8c4\ua8e0-\ua8f7\ua8fb\ua90a-\ua92d\ua930-\ua953\ua960-\ua97c\ua980-\ua9c0\ua9cf\ua9e0-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa36\uaa40-\uaa4d\uaa60-\uaa76\uaa7a-\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf6\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab5f\uab64\uab65\uabc0-\uabea\uabec\uabed\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf870-\uf87f\uf882\uf884-\uf89f\uf8b8\uf8c1-\uf8d6\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe00-\ufe0f\ufe20-\ufe2d\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc/; -var _default = bmpLetterAndMarks; -exports["default"] = _default; -module.exports = exports.default; +SCHEMES[handler.scheme] = handler; +SCHEMES[handler$1.scheme] = handler$1; +SCHEMES[handler$2.scheme] = handler$2; +SCHEMES[handler$3.scheme] = handler$3; +SCHEMES[handler$4.scheme] = handler$4; -/***/ }), +exports.SCHEMES = SCHEMES; +exports.pctEncChar = pctEncChar; +exports.pctDecChars = pctDecChars; +exports.parse = parse; +exports.removeDotSegments = removeDotSegments; +exports.serialize = serialize; +exports.resolveComponents = resolveComponents; +exports.resolve = resolve; +exports.normalize = normalize; +exports.equal = equal; +exports.escapeComponent = escapeComponent; +exports.unescapeComponent = unescapeComponent; -/***/ 9376: -/***/ ((module, exports, __nccwpck_require__) => { +Object.defineProperty(exports, '__esModule', { value: true }); -"use strict"; +}))); +//# sourceMappingURL=uri.all.js.map -__nccwpck_require__(6880); +/***/ }), +/* 731 */ +/***/ (function(module) { -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var bmpNumerals = /0-9\u0660-\u0669\u06f0-\u06f9\u07c0-\u07c9\u0966-\u096f\u09e6-\u09ef\u0a66-\u0a6f\u0ae6-\u0aef\u0b66-\u0b6f\u0be6-\u0bef\u0c66-\u0c6f\u0ce6-\u0cef\u0d66-\u0d6f\u0de6-\u0def\u0e50-\u0e59\u0ed0-\u0ed9\u0f20-\u0f29\u1040-\u1049\u1090-\u1099\u17e0-\u17e9\u1810-\u1819\u1946-\u194f\u19d0-\u19d9\u1a80-\u1a89\u1a90-\u1a99\u1b50-\u1b59\u1bb0-\u1bb9\u1c40-\u1c49\u1c50-\u1c59\ua620-\ua629\ua8d0-\ua8d9\ua900-\ua909\ua9d0-\ua9d9\ua9f0-\ua9f9\uaa50-\uaa59\uabf0-\uabf9\uff10-\uff19/; -var _default = bmpNumerals; -exports["default"] = _default; -module.exports = exports.default; +module.exports = {"name":"twitter-together","version":"2.1.1","description":"A GitHub action to tweet together using pull requests","main":"lib/index.js","scripts":{"build":"ncc build lib/index.js -o dist","coverage":"nyc report --reporter=html && open coverage/index.html","lint":"prettier --check '{lib,test}/**/*.js' 'docs/*.md' 'tweets/README.md' README.md package.json","lint:fix":"prettier --write '{lib,test}/**/*.js' 'docs/*.md' 'tweets/README.md' README.md package.json","test":"tap --branches=70 --functions=100 --lines=80 --statements=80 test/*/test.js","posttest":"npm run -s lint"},"keywords":[],"author":"","license":"MIT","dependencies":{"@actions/core":"1.9.1","@octokit/action":"^4.0.8","js-yaml":"^4.1.0","mime-types":"^2.1.35","parse-diff":"^0.9.0","twitter":"^1.7.1","twitter-text":"^3.1.0"},"devDependencies":{"@semantic-release/git":"^10.0.1","@zeit/ncc":"^0.22.0","nock":"^13.2.9","prettier":"^2.7.1","semantic-release":"^19.0.5","tap":"^16.3.0"},"repository":"github:twitter-together/action","release":{"branches":["+([0-9]).x","main","next",{"name":"beta","prerelease":true},{"name":"debug","prerelease":true}],"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/github",["@semantic-release/npm",{"npmPublish":false}],["@semantic-release/git",{"assets":["package.json","dist/index.js"],"message":"build(release): compiled action for ${nextRelease.version}\n\n[skip ci]"}]]}}; /***/ }), +/* 732 */, +/* 733 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 1277: -/***/ ((module, exports, __nccwpck_require__) => { +// Copyright 2011 Mark Cavage All rights reserved. -"use strict"; +var assert = __webpack_require__(357); +var Buffer = __webpack_require__(726).Buffer; +var ASN1 = __webpack_require__(362); +var errors = __webpack_require__(584); -__nccwpck_require__(6880); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var cashtag = /[a-z]{1,6}(?:[._][a-z]{1,2})?/i; -var _default = cashtag; -exports["default"] = _default; -module.exports = exports.default; +// --- Globals -/***/ }), +var newInvalidAsn1Error = errors.newInvalidAsn1Error; -/***/ 5594: -/***/ ((module, exports, __nccwpck_require__) => { -"use strict"; +// --- API -__nccwpck_require__(6880); +function Reader(data) { + if (!data || !Buffer.isBuffer(data)) + throw new TypeError('data must be a node Buffer'); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var codePoint = /(?:[^\uD800-\uDFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF])/; -var _default = codePoint; -exports["default"] = _default; -module.exports = exports.default; + this._buf = data; + this._size = data.length; -/***/ }), + // These hold the "current" state + this._len = 0; + this._offset = 0; +} -/***/ 3863: -/***/ ((module, exports, __nccwpck_require__) => { +Object.defineProperty(Reader.prototype, 'length', { + enumerable: true, + get: function () { return (this._len); } +}); -"use strict"; +Object.defineProperty(Reader.prototype, 'offset', { + enumerable: true, + get: function () { return (this._offset); } +}); +Object.defineProperty(Reader.prototype, 'remain', { + get: function () { return (this._size - this._offset); } +}); -__nccwpck_require__(6880); +Object.defineProperty(Reader.prototype, 'buffer', { + get: function () { return (this._buf.slice(this._offset)); } +}); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var cyrillicLettersAndMarks = /\u0400-\u04FF/; -var _default = cyrillicLettersAndMarks; -exports["default"] = _default; -module.exports = exports.default; -/***/ }), +/** + * Reads a single byte and advances offset; you can pass in `true` to make this + * a "peek" operation (i.e., get the byte, but don't advance the offset). + * + * @param {Boolean} peek true means don't move offset. + * @return {Number} the next byte, null if not enough data. + */ +Reader.prototype.readByte = function (peek) { + if (this._size - this._offset < 1) + return null; -/***/ 6138: -/***/ ((module, exports, __nccwpck_require__) => { + var b = this._buf[this._offset] & 0xff; -"use strict"; + if (!peek) + this._offset += 1; + return b; +}; -__nccwpck_require__(6880); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var directionalMarkersGroup = /\u202A-\u202E\u061C\u200E\u200F\u2066\u2067\u2068\u2069/; -var _default = directionalMarkersGroup; -exports["default"] = _default; -module.exports = exports.default; +Reader.prototype.peek = function () { + return this.readByte(true); +}; -/***/ }), -/***/ 1226: -/***/ ((module, exports, __nccwpck_require__) => { +/** + * Reads a (potentially) variable length off the BER buffer. This call is + * not really meant to be called directly, as callers have to manipulate + * the internal buffer afterwards. + * + * As a result of this call, you can call `Reader.length`, until the + * next thing called that does a readLength. + * + * @return {Number} the amount of offset to advance the buffer. + * @throws {InvalidAsn1Error} on bad ASN.1 + */ +Reader.prototype.readLength = function (offset) { + if (offset === undefined) + offset = this._offset; -"use strict"; + if (offset >= this._size) + return null; + var lenB = this._buf[offset++] & 0xff; + if (lenB === null) + return null; -var _interopRequireDefault = __nccwpck_require__(3286); + if ((lenB & 0x80) === 0x80) { + lenB &= 0x7f; -__nccwpck_require__(6880); + if (lenB === 0) + throw newInvalidAsn1Error('Indefinite length not supported'); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + if (lenB > 4) + throw newInvalidAsn1Error('encoding too long'); -var _hashSigns = _interopRequireDefault(__nccwpck_require__(3466)); + if (this._size - offset < lenB) + return null; -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); + this._len = 0; + for (var i = 0; i < lenB; i++) + this._len = (this._len << 8) + (this._buf[offset++] & 0xff); -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var endHashtagMatch = (0, _regexSupplant["default"])(/^(?:#{hashSigns}|:\/\/)/, { - hashSigns: _hashSigns["default"] -}); -var _default = endHashtagMatch; -exports["default"] = _default; -module.exports = exports.default; + } else { + // Wasn't a variable length + this._len = lenB; + } -/***/ }), + return offset; +}; -/***/ 2240: -/***/ ((module, exports, __nccwpck_require__) => { -"use strict"; +/** + * Parses the next sequence in this BER buffer. + * + * To get the length of the sequence, call `Reader.length`. + * + * @return {Number} the sequence's tag. + */ +Reader.prototype.readSequence = function (tag) { + var seq = this.peek(); + if (seq === null) + return null; + if (tag !== undefined && tag !== seq) + throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + + ': got 0x' + seq.toString(16)); + var o = this.readLength(this._offset + 1); // stored in `length` + if (o === null) + return null; -var _interopRequireDefault = __nccwpck_require__(3286); + this._offset = o; + return seq; +}; -__nccwpck_require__(6880); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; +Reader.prototype.readInt = function () { + return this._readTag(ASN1.Integer); +}; -var _atSigns = _interopRequireDefault(__nccwpck_require__(6683)); -var _latinAccentChars = _interopRequireDefault(__nccwpck_require__(1012)); +Reader.prototype.readBoolean = function () { + return (this._readTag(ASN1.Boolean) === 0 ? false : true); +}; -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var endMentionMatch = (0, _regexSupplant["default"])(/^(?:#{atSigns}|[#{latinAccentChars}]|:\/\/)/, { - atSigns: _atSigns["default"], - latinAccentChars: _latinAccentChars["default"] -}); -var _default = endMentionMatch; -exports["default"] = _default; -module.exports = exports.default; +Reader.prototype.readEnumeration = function () { + return this._readTag(ASN1.Enumeration); +}; -/***/ }), -/***/ 9871: -/***/ ((module, exports, __nccwpck_require__) => { +Reader.prototype.readString = function (tag, retbuf) { + if (!tag) + tag = ASN1.OctetString; -"use strict"; + var b = this.peek(); + if (b === null) + return null; + if (b !== tag) + throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + + ': got 0x' + b.toString(16)); -var _interopRequireDefault = __nccwpck_require__(3286); + var o = this.readLength(this._offset + 1); // stored in `length` -__nccwpck_require__(6880); + if (o === null) + return null; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + if (this.length > this._size - o) + return null; -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); + this._offset = o; -var _validDomain = _interopRequireDefault(__nccwpck_require__(4657)); + if (this.length === 0) + return retbuf ? Buffer.alloc(0) : ''; -var _validPortNumber = _interopRequireDefault(__nccwpck_require__(7493)); + var str = this._buf.slice(this._offset, this._offset + this.length); + this._offset += this.length; -var _validUrlPath = _interopRequireDefault(__nccwpck_require__(2648)); + return retbuf ? str : str.toString('utf8'); +}; -var _validUrlPrecedingChars = _interopRequireDefault(__nccwpck_require__(2814)); +Reader.prototype.readOID = function (tag) { + if (!tag) + tag = ASN1.OID; -var _validUrlQueryChars = _interopRequireDefault(__nccwpck_require__(3567)); + var b = this.readString(tag, true); + if (b === null) + return null; -var _validUrlQueryEndingChars = _interopRequireDefault(__nccwpck_require__(7242)); + var values = []; + var value = 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var extractUrl = (0, _regexSupplant["default"])('(' + // $1 total match -'(#{validUrlPrecedingChars})' + // $2 Preceeding chracter -'(' + // $3 URL -'(https?:\\/\\/)?' + // $4 Protocol (optional) -'(#{validDomain})' + // $5 Domain(s) -'(?::(#{validPortNumber}))?' + // $6 Port number (optional) -'(\\/#{validUrlPath}*)?' + // $7 URL Path -'(\\?#{validUrlQueryChars}*#{validUrlQueryEndingChars})?' + // $8 Query String -')' + ')', { - validUrlPrecedingChars: _validUrlPrecedingChars["default"], - validDomain: _validDomain["default"], - validPortNumber: _validPortNumber["default"], - validUrlPath: _validUrlPath["default"], - validUrlQueryChars: _validUrlQueryChars["default"], - validUrlQueryEndingChars: _validUrlQueryEndingChars["default"] -}, 'gi'); -var _default = extractUrl; -exports["default"] = _default; -module.exports = exports.default; + for (var i = 0; i < b.length; i++) { + var byte = b[i] & 0xff; -/***/ }), + value <<= 7; + value += byte & 0x7f; + if ((byte & 0x80) === 0) { + values.push(value); + value = 0; + } + } -/***/ 3466: -/***/ ((module, exports, __nccwpck_require__) => { + value = values.shift(); + values.unshift(value % 40); + values.unshift((value / 40) >> 0); -"use strict"; + return values.join('.'); +}; -__nccwpck_require__(6880); +Reader.prototype._readTag = function (tag) { + assert.ok(tag !== undefined); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var hashSigns = /[##]/; -var _default = hashSigns; -exports["default"] = _default; -module.exports = exports.default; + var b = this.peek(); -/***/ }), + if (b === null) + return null; -/***/ 4420: -/***/ ((module, exports, __nccwpck_require__) => { + if (b !== tag) + throw newInvalidAsn1Error('Expected 0x' + tag.toString(16) + + ': got 0x' + b.toString(16)); -"use strict"; + var o = this.readLength(this._offset + 1); // stored in `length` + if (o === null) + return null; + if (this.length > 4) + throw newInvalidAsn1Error('Integer too long: ' + this.length); -var _interopRequireDefault = __nccwpck_require__(3286); + if (this.length > this._size - o) + return null; + this._offset = o; -__nccwpck_require__(6880); + var fb = this._buf[this._offset]; + var value = 0; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + for (var i = 0; i < this.length; i++) { + value <<= 8; + value |= (this._buf[this._offset++] & 0xff); + } -var _astralLetterAndMarks = _interopRequireDefault(__nccwpck_require__(4079)); + if ((fb & 0x80) === 0x80 && i !== 4) + value -= (1 << (i * 8)); -var _bmpLetterAndMarks = _interopRequireDefault(__nccwpck_require__(797)); + return value >> 0; +}; -var _nonBmpCodePairs = _interopRequireDefault(__nccwpck_require__(1575)); -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -// A hashtag must contain at least one unicode letter or mark, as well as numbers, underscores, and select special characters. -var hashtagAlpha = (0, _regexSupplant["default"])(/(?:[#{bmpLetterAndMarks}]|(?=#{nonBmpCodePairs})(?:#{astralLetterAndMarks}))/, { - bmpLetterAndMarks: _bmpLetterAndMarks["default"], - nonBmpCodePairs: _nonBmpCodePairs["default"], - astralLetterAndMarks: _astralLetterAndMarks["default"] -}); -var _default = hashtagAlpha; -exports["default"] = _default; -module.exports = exports.default; +// --- Exported API + +module.exports = Reader; + /***/ }), +/* 734 */, +/* 735 */, +/* 736 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 2975: -/***/ ((module, exports, __nccwpck_require__) => { +// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window +var toIObject = __webpack_require__(78); +var gOPN = __webpack_require__(996).f; +var toString = {}.toString; -"use strict"; +var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames + ? Object.getOwnPropertyNames(window) : []; + +var getWindowNames = function (it) { + try { + return gOPN(it); + } catch (e) { + return windowNames.slice(); + } +}; +module.exports.f = function getOwnPropertyNames(it) { + return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it)); +}; -var _interopRequireDefault = __nccwpck_require__(3286); -__nccwpck_require__(6880); +/***/ }), +/* 737 */, +/* 738 */, +/* 739 */ +/***/ (function(module, exports) { -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; +exports = module.exports = stringify +exports.getSerialize = serializer -var _astralLetterAndMarks = _interopRequireDefault(__nccwpck_require__(4079)); +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces) +} -var _astralNumerals = _interopRequireDefault(__nccwpck_require__(777)); +function serializer(replacer, cycleReplacer) { + var stack = [], keys = [] -var _bmpLetterAndMarks = _interopRequireDefault(__nccwpck_require__(797)); + if (cycleReplacer == null) cycleReplacer = function(key, value) { + if (stack[0] === value) return "[Circular ~]" + return "[Circular ~." + keys.slice(0, stack.indexOf(value)).join(".") + "]" + } -var _bmpNumerals = _interopRequireDefault(__nccwpck_require__(9376)); + return function(key, value) { + if (stack.length > 0) { + var thisPos = stack.indexOf(this) + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this) + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key) + if (~stack.indexOf(value)) value = cycleReplacer.call(this, key, value) + } + else stack.push(value) -var _hashtagSpecialChars = _interopRequireDefault(__nccwpck_require__(2583)); + return replacer == null ? value : replacer.call(this, key, value) + } +} -var _nonBmpCodePairs = _interopRequireDefault(__nccwpck_require__(1575)); -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); +/***/ }), +/* 740 */ +/***/ (function(module) { -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var hashtagAlphaNumeric = (0, _regexSupplant["default"])(/(?:[#{bmpLetterAndMarks}#{bmpNumerals}#{hashtagSpecialChars}]|(?=#{nonBmpCodePairs})(?:#{astralLetterAndMarks}|#{astralNumerals}))/, { - bmpLetterAndMarks: _bmpLetterAndMarks["default"], - bmpNumerals: _bmpNumerals["default"], - hashtagSpecialChars: _hashtagSpecialChars["default"], - nonBmpCodePairs: _nonBmpCodePairs["default"], - astralLetterAndMarks: _astralLetterAndMarks["default"], - astralNumerals: _astralNumerals["default"] -}); -var _default = hashtagAlphaNumeric; -exports["default"] = _default; -module.exports = exports.default; +module.exports = {"$id":"postData.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","optional":true,"required":["mimeType"],"properties":{"mimeType":{"type":"string"},"text":{"type":"string"},"params":{"type":"array","required":["name"],"properties":{"name":{"type":"string"},"value":{"type":"string"},"fileName":{"type":"string"},"contentType":{"type":"string"},"comment":{"type":"string"}}},"comment":{"type":"string"}}}; /***/ }), - -/***/ 4386: -/***/ ((module, exports, __nccwpck_require__) => { +/* 741 */ +/***/ (function(module) { "use strict"; -var _interopRequireDefault = __nccwpck_require__(3286); +module.exports = function (data, opts) { + if (!opts) opts = {}; + if (typeof opts === 'function') opts = { cmp: opts }; + var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false; + + var cmp = opts.cmp && (function (f) { + return function (node) { + return function (a, b) { + var aobj = { key: a, value: node[a] }; + var bobj = { key: b, value: node[b] }; + return f(aobj, bobj); + }; + }; + })(opts.cmp); -__nccwpck_require__(6880); + var seen = []; + return (function stringify (node) { + if (node && node.toJSON && typeof node.toJSON === 'function') { + node = node.toJSON(); + } -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + if (node === undefined) return; + if (typeof node == 'number') return isFinite(node) ? '' + node : 'null'; + if (typeof node !== 'object') return JSON.stringify(node); -var _codePoint = _interopRequireDefault(__nccwpck_require__(5594)); + var i, out; + if (Array.isArray(node)) { + out = '['; + for (i = 0; i < node.length; i++) { + if (i) out += ','; + out += stringify(node[i]) || 'null'; + } + return out + ']'; + } -var _hashtagAlphaNumeric = _interopRequireDefault(__nccwpck_require__(2975)); + if (node === null) return 'null'; -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); + if (seen.indexOf(node) !== -1) { + if (cycles) return JSON.stringify('__cycle__'); + throw new TypeError('Converting circular structure to JSON'); + } -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var hashtagBoundary = (0, _regexSupplant["default"])(/(?:^|\uFE0E|\uFE0F|$|(?!#{hashtagAlphaNumeric}|&)#{codePoint})/, { - codePoint: _codePoint["default"], - hashtagAlphaNumeric: _hashtagAlphaNumeric["default"] -}); -var _default = hashtagBoundary; -exports["default"] = _default; -module.exports = exports.default; + var seenIndex = seen.push(node) - 1; + var keys = Object.keys(node).sort(cmp && cmp(node)); + out = ''; + for (i = 0; i < keys.length; i++) { + var key = keys[i]; + var value = stringify(node[key]); -/***/ }), + if (!value) continue; + if (out) out += ','; + out += JSON.stringify(key) + ':' + value; + } + seen.splice(seenIndex, 1); + return '{' + out + '}'; + })(data); +}; -/***/ 2583: -/***/ ((module, exports, __nccwpck_require__) => { + +/***/ }), +/* 742 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { "use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.OidcClient = void 0; +const http_client_1 = __webpack_require__(425); +const auth_1 = __webpack_require__(554); +const core_1 = __webpack_require__(470); +class OidcClient { + static createHttpClient(allowRetry = true, maxRetry = 10) { + const requestOptions = { + allowRetries: allowRetry, + maxRetries: maxRetry + }; + return new http_client_1.HttpClient('actions/oidc-client', [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], requestOptions); + } + static getRequestToken() { + const token = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN']; + if (!token) { + throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable'); + } + return token; + } + static getIDTokenUrl() { + const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL']; + if (!runtimeUrl) { + throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable'); + } + return runtimeUrl; + } + static getCall(id_token_url) { + var _a; + return __awaiter(this, void 0, void 0, function* () { + const httpclient = OidcClient.createHttpClient(); + const res = yield httpclient + .getJson(id_token_url) + .catch(error => { + throw new Error(`Failed to get ID Token. \n + Error Code : ${error.statusCode}\n + Error Message: ${error.result.message}`); + }); + const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value; + if (!id_token) { + throw new Error('Response json body do not have ID Token field'); + } + return id_token; + }); + } + static getIDToken(audience) { + return __awaiter(this, void 0, void 0, function* () { + try { + // New ID Token is requested from action service + let id_token_url = OidcClient.getIDTokenUrl(); + if (audience) { + const encodedAudience = encodeURIComponent(audience); + id_token_url = `${id_token_url}&audience=${encodedAudience}`; + } + core_1.debug(`ID token url is ${id_token_url}`); + const id_token = yield OidcClient.getCall(id_token_url); + core_1.setSecret(id_token); + return id_token; + } + catch (error) { + throw new Error(`Error message: ${error.message}`); + } + }); + } +} +exports.OidcClient = OidcClient; +//# sourceMappingURL=oidc-utils.js.map -__nccwpck_require__(6880); +/***/ }), +/* 743 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +// optional / simple context binding +var aFunction = __webpack_require__(569); +module.exports = function (fn, that, length) { + aFunction(fn); + if (that === undefined) return fn; + switch (length) { + case 1: return function (a) { + return fn.call(that, a); + }; + case 2: return function (a, b) { + return fn.call(that, a, b); + }; + case 3: return function (a, b, c) { + return fn.call(that, a, b, c); + }; + } + return function (/* ...args */) { + return fn.apply(that, arguments); + }; +}; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var hashtagSpecialChars = /_\u200c\u200d\ua67e\u05be\u05f3\u05f4\uff5e\u301c\u309b\u309c\u30a0\u30fb\u3003\u0f0b\u0f0c\xb7/; -var _default = hashtagSpecialChars; -exports["default"] = _default; -module.exports = exports.default; /***/ }), +/* 744 */ +/***/ (function(module) { + +module.exports = {"$id":"page.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","optional":true,"required":["startedDateTime","id","title","pageTimings"],"properties":{"startedDateTime":{"type":"string","format":"date-time","pattern":"^(\\d{4})(-)?(\\d\\d)(-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)(:)?(\\d\\d)(\\.\\d+)?(Z|([+-])(\\d\\d)(:)?(\\d\\d))"},"id":{"type":"string","unique":true},"title":{"type":"string"},"pageTimings":{"$ref":"pageTimings.json#"},"comment":{"type":"string"}}}; -/***/ 4440: -/***/ ((module, exports, __nccwpck_require__) => { +/***/ }), +/* 745 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var _interopRequireDefault = __nccwpck_require__(3286); +var _interopRequireDefault = __webpack_require__(764); -__nccwpck_require__(6880); +__webpack_require__(493); -Object.defineProperty(exports, "__esModule", ({ +Object.defineProperty(exports, "__esModule", { value: true -})); +}); exports["default"] = void 0; -var _astralLetterAndMarks = _interopRequireDefault(__nccwpck_require__(4079)); +var _latinAccentChars = _interopRequireDefault(__webpack_require__(401)); + +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); -var _astralNumerals = _interopRequireDefault(__nccwpck_require__(777)); +var _validCCTLD = _interopRequireDefault(__webpack_require__(662)); -var _atSigns = _interopRequireDefault(__nccwpck_require__(6683)); +var _validGTLD = _interopRequireDefault(__webpack_require__(79)); -var _bmpLetterAndMarks = _interopRequireDefault(__nccwpck_require__(797)); +var _validPunycode = _interopRequireDefault(__webpack_require__(131)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validAsciiDomain = (0, _regexSupplant["default"])(/(?:(?:[\-a-z0-9#{latinAccentChars}]+)\.)+(?:#{validGTLD}|#{validCCTLD}|#{validPunycode})/gi, { + latinAccentChars: _latinAccentChars["default"], + validGTLD: _validGTLD["default"], + validCCTLD: _validCCTLD["default"], + validPunycode: _validPunycode["default"] +}); +var _default = validAsciiDomain; +exports["default"] = _default; +module.exports = exports.default; -var _bmpNumerals = _interopRequireDefault(__nccwpck_require__(9376)); +/***/ }), +/* 746 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -var _cashtag = _interopRequireDefault(__nccwpck_require__(1277)); +module.exports = parseTweetFileContent; -var _codePoint = _interopRequireDefault(__nccwpck_require__(5594)); +const EOL = __webpack_require__(87).EOL; -var _cyrillicLettersAndMarks = _interopRequireDefault(__nccwpck_require__(3863)); +const { existsSync } = __webpack_require__(747); +const { join } = __webpack_require__(622); +const { parseTweet } = __webpack_require__(914); +const { load } = __webpack_require__(186); -var _endHashtagMatch = _interopRequireDefault(__nccwpck_require__(1226)); +const OPTION_REGEX = /^\(\s?\)\s+/; +const FRONT_MATTER_REGEX = new RegExp( + `^---[ \t]*${EOL}([\\s\\S]*?)${EOL}---[ \t]*(?:$|(?:${EOL})+)` +); -var _endMentionMatch = _interopRequireDefault(__nccwpck_require__(2240)); +function parseTweetFileContent(text, dir, isThread = false) { + const options = { + threadDelimiter: "---", + reply: null, + retweet: null, + media: [], + schedule: null, + poll: null, + thread: null, + }; -var _extractUrl = _interopRequireDefault(__nccwpck_require__(9871)); + // Extract front matter options + const frontMatterMatch = text.match(FRONT_MATTER_REGEX); + if (frontMatterMatch) { + text = text.slice(frontMatterMatch[0].length); + getOptionsFromFrontMatter(frontMatterMatch[1], options, dir); -var _hashSigns = _interopRequireDefault(__nccwpck_require__(3466)); + if (isThread) { + if (options.reply) + throw new Error("Cannot set a tweet to reply to when in a thread"); + } + } -var _hashtagAlpha = _interopRequireDefault(__nccwpck_require__(4420)); + // Handle threading + if (options.threadDelimiter) { + const threadIdx = text.match( + new RegExp(`(?:${EOL})+${options.threadDelimiter}[ \t]*(?:${EOL})+`) + ); + if (threadIdx) { + const threadText = text.slice(threadIdx.index + threadIdx[0].length); + text = text.slice(0, threadIdx.index); -var _hashtagAlphaNumeric = _interopRequireDefault(__nccwpck_require__(2975)); + // Each item can have front matter, as we only split one thread delimiter at a time + options.thread = parseTweetFileContent(threadText, dir, true); + } + } -var _hashtagBoundary = _interopRequireDefault(__nccwpck_require__(4386)); + // Extract in-content options + if (!options.poll) { + const pollOptions = []; + let lastLine; + while ((lastLine = getlastLineMatchingPollOption(text))) { + pollOptions.push(lastLine.replace(OPTION_REGEX, "")); + text = withLastLineRemoved(text); + } + if (pollOptions.length) options.poll = pollOptions.reverse(); + } -var _hashtagSpecialChars = _interopRequireDefault(__nccwpck_require__(2583)); + // Validate options + validateOptions(options, text, dir); -var _invalidChars = _interopRequireDefault(__nccwpck_require__(8678)); + // Parse tweet if has text + const parsed = text ? parseTweet(text) : { valid: true, weightedLength: 0 }; + if (!parsed.valid) + throw new Error( + `Tweet exceeds maximum length of 280 characters by ${ + parsed.weightedLength - 280 + } characters` + ); -var _invalidCharsGroup = _interopRequireDefault(__nccwpck_require__(1960)); + // TODO: Support schedule from options + return { + poll: options.poll, + media: options.media, + thread: options.thread, + reply: options.reply, + retweet: options.retweet, + text, + ...parsed, + }; +} -var _invalidDomainChars = _interopRequireDefault(__nccwpck_require__(9492)); +function validateOptions(options, text, dir) { + if (options.retweet && !text && options.poll) + throw new Error("Cannot attach a poll to a retweet"); -var _invalidUrlWithoutProtocolPrecedingChars = _interopRequireDefault(__nccwpck_require__(4130)); + if (options.retweet && !text && options.reply) + throw new Error("Cannot reply to a tweet with a retweet"); -var _latinAccentChars = _interopRequireDefault(__nccwpck_require__(1012)); + if (options.retweet && !text && options.thread) + throw new Error("Cannot create a thread from a retweet"); -var _nonBmpCodePairs = _interopRequireDefault(__nccwpck_require__(1575)); + if (options.retweet && !text && options.media && options.media.length) + throw new Error("Cannot attach media to a retweet"); -var _punct = _interopRequireDefault(__nccwpck_require__(2813)); + if (options.poll && options.poll.length > 4) + throw new Error( + `Polls cannot have more than four options, found ${options.poll.length} options` + ); -var _rtlChars = _interopRequireDefault(__nccwpck_require__(6462)); + if (options.poll && options.poll.length < 2) + throw new Error( + `Polls must have at least two options, found ${options.poll.length} options` + ); -var _spaces = _interopRequireDefault(__nccwpck_require__(1985)); + if (options.media) { + for (const media of options.media) { + if (media.file.indexOf(join(dir, "media")) !== 0) + throw new Error(`Media file should be within the media directory`); -var _spacesGroup = _interopRequireDefault(__nccwpck_require__(9388)); + if (!existsSync(media.file)) + throw new Error(`Media file ${media.file} does not exist`); -var _urlHasHttps = _interopRequireDefault(__nccwpck_require__(4926)); + if (media.alt && media.alt.length > 1000) + throw new Error( + `Media alt text must be 1000 characters or less, found length ${media.alt.length}` + ); + } + } +} -var _urlHasProtocol = _interopRequireDefault(__nccwpck_require__(2025)); +function getOptionsFromFrontMatter(frontMatter, options, dir) { + const parsedFrontMatter = load(frontMatter); + if (typeof parsedFrontMatter !== "object" || !parsedFrontMatter) return; -var _validAsciiDomain = _interopRequireDefault(__nccwpck_require__(3598)); + if (typeof parsedFrontMatter["thread-delimiter"] === "string") + options.threadDelimiter = parsedFrontMatter["thread-delimiter"]; + if (typeof parsedFrontMatter.reply === "string") + options.reply = parsedFrontMatter.reply; + if (typeof parsedFrontMatter.retweet === "string") + options.retweet = parsedFrontMatter.retweet; -var _validateUrlAuthority = _interopRequireDefault(__nccwpck_require__(9072)); + if (Array.isArray(parsedFrontMatter.media)) + options.media = parsedFrontMatter.media.reduce((arr, item) => { + if (item && typeof item === "object" && typeof item.file === "string") + arr.push({ + file: join(dir, "media", item.file), + alt: typeof item.alt !== "string" ? null : item.alt, + }); + return arr; + }, []); -var _validateUrlDecOctet = _interopRequireDefault(__nccwpck_require__(3300)); + if (typeof parsedFrontMatter.schedule === "string") { + const schedule = new Date(parsedFrontMatter.schedule); + if (!isNaN(schedule.getTime())) options.schedule = schedule; + } -var _validateUrlDomain = _interopRequireDefault(__nccwpck_require__(6746)); + if (Array.isArray(parsedFrontMatter.poll)) + options.poll = parsedFrontMatter.poll.reduce((arr, item) => { + if (typeof item === "string") arr.push(item); + return arr; + }, []); +} -var _validateUrlDomainSegment = _interopRequireDefault(__nccwpck_require__(7985)); +function getlastLineMatchingPollOption(text) { + const lines = text.trim().split(EOL); + const [lastLine] = lines.reverse(); + return OPTION_REGEX.test(lastLine) ? lastLine : null; +} -var _validateUrlDomainTld = _interopRequireDefault(__nccwpck_require__(6679)); +function withLastLineRemoved(text) { + const lines = text.trim().split(EOL); + return lines + .slice(0, lines.length - 1) + .join(EOL) + .trim(); +} -var _validateUrlFragment = _interopRequireDefault(__nccwpck_require__(2769)); -var _validateUrlHost = _interopRequireDefault(__nccwpck_require__(9888)); +/***/ }), +/* 747 */ +/***/ (function(module) { -var _validateUrlIp = _interopRequireDefault(__nccwpck_require__(371)); +module.exports = require("fs"); -var _validateUrlIpv = _interopRequireDefault(__nccwpck_require__(1925)); +/***/ }), +/* 748 */, +/* 749 */, +/* 750 */ +/***/ (function(module) { -var _validateUrlIpv2 = _interopRequireDefault(__nccwpck_require__(8642)); +var id = 0; +var px = Math.random(); +module.exports = function (key) { + return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); +}; -var _validateUrlPath = _interopRequireDefault(__nccwpck_require__(1075)); -var _validateUrlPchar = _interopRequireDefault(__nccwpck_require__(2322)); +/***/ }), +/* 751 */ +/***/ (function(module) { -var _validateUrlPctEncoded = _interopRequireDefault(__nccwpck_require__(3878)); +"use strict"; -var _validateUrlPort = _interopRequireDefault(__nccwpck_require__(3077)); -var _validateUrlQuery = _interopRequireDefault(__nccwpck_require__(1697)); +var conversions = {}; +module.exports = conversions; -var _validateUrlScheme = _interopRequireDefault(__nccwpck_require__(6579)); +function sign(x) { + return x < 0 ? -1 : 1; +} -var _validateUrlSubDelims = _interopRequireDefault(__nccwpck_require__(2783)); +function evenRound(x) { + // Round x to the nearest integer, choosing the even integer if it lies halfway between two. + if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor) + return Math.floor(x); + } else { + return Math.round(x); + } +} -var _validateUrlSubDomainSegment = _interopRequireDefault(__nccwpck_require__(2379)); +function createNumberConversion(bitLength, typeOpts) { + if (!typeOpts.unsigned) { + --bitLength; + } + const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength); + const upperBound = Math.pow(2, bitLength) - 1; -var _validateUrlUnencoded = _interopRequireDefault(__nccwpck_require__(3907)); + const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength); + const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1); -var _validateUrlUnicodeAuthority = _interopRequireDefault(__nccwpck_require__(977)); + return function(V, opts) { + if (!opts) opts = {}; -var _validateUrlUnicodeDomain = _interopRequireDefault(__nccwpck_require__(6559)); + let x = +V; -var _validateUrlUnicodeDomainSegment = _interopRequireDefault(__nccwpck_require__(2823)); + if (opts.enforceRange) { + if (!Number.isFinite(x)) { + throw new TypeError("Argument is not a finite number"); + } -var _validateUrlUnicodeDomainTld = _interopRequireDefault(__nccwpck_require__(9578)); + x = sign(x) * Math.floor(Math.abs(x)); + if (x < lowerBound || x > upperBound) { + throw new TypeError("Argument is not in byte range"); + } -var _validateUrlUnicodeHost = _interopRequireDefault(__nccwpck_require__(3946)); + return x; + } -var _validateUrlUnicodeSubDomainSegment = _interopRequireDefault(__nccwpck_require__(4550)); + if (!isNaN(x) && opts.clamp) { + x = evenRound(x); -var _validateUrlUnreserved = _interopRequireDefault(__nccwpck_require__(5318)); + if (x < lowerBound) x = lowerBound; + if (x > upperBound) x = upperBound; + return x; + } -var _validateUrlUserinfo = _interopRequireDefault(__nccwpck_require__(3026)); + if (!Number.isFinite(x) || x === 0) { + return 0; + } -var _validCashtag = _interopRequireDefault(__nccwpck_require__(8382)); + x = sign(x) * Math.floor(Math.abs(x)); + x = x % moduloVal; -var _validCCTLD = _interopRequireDefault(__nccwpck_require__(7647)); + if (!typeOpts.unsigned && x >= moduloBound) { + return x - moduloVal; + } else if (typeOpts.unsigned) { + if (x < 0) { + x += moduloVal; + } else if (x === -0) { // don't return negative zero + return 0; + } + } -var _validDomain = _interopRequireDefault(__nccwpck_require__(4657)); + return x; + } +} -var _validDomainChars = _interopRequireDefault(__nccwpck_require__(2089)); +conversions["void"] = function () { + return undefined; +}; -var _validDomainName = _interopRequireDefault(__nccwpck_require__(8203)); +conversions["boolean"] = function (val) { + return !!val; +}; -var _validGeneralUrlPathChars = _interopRequireDefault(__nccwpck_require__(462)); +conversions["byte"] = createNumberConversion(8, { unsigned: false }); +conversions["octet"] = createNumberConversion(8, { unsigned: true }); -var _validGTLD = _interopRequireDefault(__nccwpck_require__(7869)); +conversions["short"] = createNumberConversion(16, { unsigned: false }); +conversions["unsigned short"] = createNumberConversion(16, { unsigned: true }); -var _validHashtag = _interopRequireDefault(__nccwpck_require__(6826)); +conversions["long"] = createNumberConversion(32, { unsigned: false }); +conversions["unsigned long"] = createNumberConversion(32, { unsigned: true }); -var _validMentionOrList = _interopRequireDefault(__nccwpck_require__(6882)); +conversions["long long"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 }); +conversions["unsigned long long"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 }); -var _validMentionPrecedingChars = _interopRequireDefault(__nccwpck_require__(8454)); +conversions["double"] = function (V) { + const x = +V; -var _validPortNumber = _interopRequireDefault(__nccwpck_require__(7493)); + if (!Number.isFinite(x)) { + throw new TypeError("Argument is not a finite floating-point value"); + } -var _validPunycode = _interopRequireDefault(__nccwpck_require__(1064)); + return x; +}; -var _validReply = _interopRequireDefault(__nccwpck_require__(2575)); +conversions["unrestricted double"] = function (V) { + const x = +V; -var _validSubdomain = _interopRequireDefault(__nccwpck_require__(6285)); + if (isNaN(x)) { + throw new TypeError("Argument is NaN"); + } -var _validTcoUrl = _interopRequireDefault(__nccwpck_require__(1527)); + return x; +}; -var _validUrlBalancedParens = _interopRequireDefault(__nccwpck_require__(109)); +// not quite valid, but good enough for JS +conversions["float"] = conversions["double"]; +conversions["unrestricted float"] = conversions["unrestricted double"]; -var _validUrlPath = _interopRequireDefault(__nccwpck_require__(2648)); +conversions["DOMString"] = function (V, opts) { + if (!opts) opts = {}; -var _validUrlPathEndingChars = _interopRequireDefault(__nccwpck_require__(9913)); + if (opts.treatNullAsEmptyString && V === null) { + return ""; + } -var _validUrlPrecedingChars = _interopRequireDefault(__nccwpck_require__(2814)); + return String(V); +}; -var _validUrlQueryChars = _interopRequireDefault(__nccwpck_require__(3567)); +conversions["ByteString"] = function (V, opts) { + const x = String(V); + let c = undefined; + for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) { + if (c > 255) { + throw new TypeError("Argument is not a valid bytestring"); + } + } -var _validUrlQueryEndingChars = _interopRequireDefault(__nccwpck_require__(7242)); + return x; +}; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var _default = { - astralLetterAndMarks: _astralLetterAndMarks["default"], - astralNumerals: _astralNumerals["default"], - atSigns: _atSigns["default"], - bmpLetterAndMarks: _bmpLetterAndMarks["default"], - bmpNumerals: _bmpNumerals["default"], - cashtag: _cashtag["default"], - codePoint: _codePoint["default"], - cyrillicLettersAndMarks: _cyrillicLettersAndMarks["default"], - endHashtagMatch: _endHashtagMatch["default"], - endMentionMatch: _endMentionMatch["default"], - extractUrl: _extractUrl["default"], - hashSigns: _hashSigns["default"], - hashtagAlpha: _hashtagAlpha["default"], - hashtagAlphaNumeric: _hashtagAlphaNumeric["default"], - hashtagBoundary: _hashtagBoundary["default"], - hashtagSpecialChars: _hashtagSpecialChars["default"], - invalidChars: _invalidChars["default"], - invalidCharsGroup: _invalidCharsGroup["default"], - invalidDomainChars: _invalidDomainChars["default"], - invalidUrlWithoutProtocolPrecedingChars: _invalidUrlWithoutProtocolPrecedingChars["default"], - latinAccentChars: _latinAccentChars["default"], - nonBmpCodePairs: _nonBmpCodePairs["default"], - punct: _punct["default"], - rtlChars: _rtlChars["default"], - spaces: _spaces["default"], - spacesGroup: _spacesGroup["default"], - urlHasHttps: _urlHasHttps["default"], - urlHasProtocol: _urlHasProtocol["default"], - validAsciiDomain: _validAsciiDomain["default"], - validateUrlAuthority: _validateUrlAuthority["default"], - validateUrlDecOctet: _validateUrlDecOctet["default"], - validateUrlDomain: _validateUrlDomain["default"], - validateUrlDomainSegment: _validateUrlDomainSegment["default"], - validateUrlDomainTld: _validateUrlDomainTld["default"], - validateUrlFragment: _validateUrlFragment["default"], - validateUrlHost: _validateUrlHost["default"], - validateUrlIp: _validateUrlIp["default"], - validateUrlIpv4: _validateUrlIpv["default"], - validateUrlIpv6: _validateUrlIpv2["default"], - validateUrlPath: _validateUrlPath["default"], - validateUrlPchar: _validateUrlPchar["default"], - validateUrlPctEncoded: _validateUrlPctEncoded["default"], - validateUrlPort: _validateUrlPort["default"], - validateUrlQuery: _validateUrlQuery["default"], - validateUrlScheme: _validateUrlScheme["default"], - validateUrlSubDelims: _validateUrlSubDelims["default"], - validateUrlSubDomainSegment: _validateUrlSubDomainSegment["default"], - validateUrlUnencoded: _validateUrlUnencoded["default"], - validateUrlUnicodeAuthority: _validateUrlUnicodeAuthority["default"], - validateUrlUnicodeDomain: _validateUrlUnicodeDomain["default"], - validateUrlUnicodeDomainSegment: _validateUrlUnicodeDomainSegment["default"], - validateUrlUnicodeDomainTld: _validateUrlUnicodeDomainTld["default"], - validateUrlUnicodeHost: _validateUrlUnicodeHost["default"], - validateUrlUnicodeSubDomainSegment: _validateUrlUnicodeSubDomainSegment["default"], - validateUrlUnreserved: _validateUrlUnreserved["default"], - validateUrlUserinfo: _validateUrlUserinfo["default"], - validCashtag: _validCashtag["default"], - validCCTLD: _validCCTLD["default"], - validDomain: _validDomain["default"], - validDomainChars: _validDomainChars["default"], - validDomainName: _validDomainName["default"], - validGeneralUrlPathChars: _validGeneralUrlPathChars["default"], - validGTLD: _validGTLD["default"], - validHashtag: _validHashtag["default"], - validMentionOrList: _validMentionOrList["default"], - validMentionPrecedingChars: _validMentionPrecedingChars["default"], - validPortNumber: _validPortNumber["default"], - validPunycode: _validPunycode["default"], - validReply: _validReply["default"], - validSubdomain: _validSubdomain["default"], - validTcoUrl: _validTcoUrl["default"], - validUrlBalancedParens: _validUrlBalancedParens["default"], - validUrlPath: _validUrlPath["default"], - validUrlPathEndingChars: _validUrlPathEndingChars["default"], - validUrlPrecedingChars: _validUrlPrecedingChars["default"], - validUrlQueryChars: _validUrlQueryChars["default"], - validUrlQueryEndingChars: _validUrlQueryEndingChars["default"] +conversions["USVString"] = function (V) { + const S = String(V); + const n = S.length; + const U = []; + for (let i = 0; i < n; ++i) { + const c = S.charCodeAt(i); + if (c < 0xD800 || c > 0xDFFF) { + U.push(String.fromCodePoint(c)); + } else if (0xDC00 <= c && c <= 0xDFFF) { + U.push(String.fromCodePoint(0xFFFD)); + } else { + if (i === n - 1) { + U.push(String.fromCodePoint(0xFFFD)); + } else { + const d = S.charCodeAt(i + 1); + if (0xDC00 <= d && d <= 0xDFFF) { + const a = c & 0x3FF; + const b = d & 0x3FF; + U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b)); + ++i; + } else { + U.push(String.fromCodePoint(0xFFFD)); + } + } + } + } + + return U.join(''); }; -exports["default"] = _default; -module.exports = exports.default; + +conversions["Date"] = function (V, opts) { + if (!(V instanceof Date)) { + throw new TypeError("Argument is not a Date object"); + } + if (isNaN(V)) { + return undefined; + } + + return V; +}; + +conversions["RegExp"] = function (V, opts) { + if (!(V instanceof RegExp)) { + V = new RegExp(V); + } + + return V; +}; + /***/ }), +/* 752 */ +/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { + +// 21.2.5.3 get RegExp.prototype.flags() +if (__webpack_require__(843) && /./g.flags != 'g') __webpack_require__(973).f(RegExp.prototype, 'flags', { + configurable: true, + get: __webpack_require__(788) +}); -/***/ 8678: -/***/ ((module, exports, __nccwpck_require__) => { + +/***/ }), +/* 753 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var _interopRequireDefault = __nccwpck_require__(3286); +var _interopRequireDefault = __webpack_require__(764); -__nccwpck_require__(6880); +__webpack_require__(493); -Object.defineProperty(exports, "__esModule", ({ +Object.defineProperty(exports, "__esModule", { value: true -})); +}); exports["default"] = void 0; -var _invalidCharsGroup = _interopRequireDefault(__nccwpck_require__(1960)); - -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -var invalidChars = (0, _regexSupplant["default"])(/[#{invalidCharsGroup}]/, { - invalidCharsGroup: _invalidCharsGroup["default"] -}); -var _default = invalidChars; +// Modified version of RFC 3986 Appendix B +var validateUrlUnencoded = (0, _regexSupplant["default"])('^' + // Full URL +'(?:' + '([^:/?#]+):\\/\\/' + // $1 Scheme +')?' + '([^/?#]*)' + // $2 Authority +'([^?#]*)' + // $3 Path +'(?:' + '\\?([^#]*)' + // $4 Query +')?' + '(?:' + '#(.*)' + // $5 Fragment +')?$', 'i'); +var _default = validateUrlUnencoded; exports["default"] = _default; module.exports = exports.default; /***/ }), - -/***/ 1960: -/***/ ((module, exports, __nccwpck_require__) => { +/* 754 */, +/* 755 */ +/***/ (function(module, __unusedexports, __webpack_require__) { "use strict"; -__nccwpck_require__(6880); - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var invalidCharsGroup = /\uFFFE\uFEFF\uFFFF/; -var _default = invalidCharsGroup; -exports["default"] = _default; -module.exports = exports.default; +var YAMLException = __webpack_require__(652); -/***/ }), +var TYPE_CONSTRUCTOR_OPTIONS = [ + 'kind', + 'multi', + 'resolve', + 'construct', + 'instanceOf', + 'predicate', + 'represent', + 'representName', + 'defaultStyle', + 'styleAliases' +]; -/***/ 9492: -/***/ ((module, exports, __nccwpck_require__) => { +var YAML_NODE_KINDS = [ + 'scalar', + 'sequence', + 'mapping' +]; -"use strict"; +function compileStyleAliases(map) { + var result = {}; + if (map !== null) { + Object.keys(map).forEach(function (style) { + map[style].forEach(function (alias) { + result[String(alias)] = style; + }); + }); + } -var _interopRequireDefault = __nccwpck_require__(3286); + return result; +} -__nccwpck_require__(6880); +function Type(tag, options) { + options = options || {}; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + Object.keys(options).forEach(function (name) { + if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) { + throw new YAMLException('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.'); + } + }); -var _directionalMarkersGroup = _interopRequireDefault(__nccwpck_require__(6138)); + // TODO: Add tag format check. + this.options = options; // keep original options in case user wants to extend this type later + this.tag = tag; + this.kind = options['kind'] || null; + this.resolve = options['resolve'] || function () { return true; }; + this.construct = options['construct'] || function (data) { return data; }; + this.instanceOf = options['instanceOf'] || null; + this.predicate = options['predicate'] || null; + this.represent = options['represent'] || null; + this.representName = options['representName'] || null; + this.defaultStyle = options['defaultStyle'] || null; + this.multi = options['multi'] || false; + this.styleAliases = compileStyleAliases(options['styleAliases'] || null); -var _invalidCharsGroup = _interopRequireDefault(__nccwpck_require__(1960)); + if (YAML_NODE_KINDS.indexOf(this.kind) === -1) { + throw new YAMLException('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.'); + } +} -var _punct = _interopRequireDefault(__nccwpck_require__(2813)); +module.exports = Type; -var _spacesGroup = _interopRequireDefault(__nccwpck_require__(9388)); -var _stringSupplant = _interopRequireDefault(__nccwpck_require__(1168)); +/***/ }), +/* 756 */, +/* 757 */, +/* 758 */ +/***/ (function(module) { -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var invalidDomainChars = (0, _stringSupplant["default"])('#{punct}#{spacesGroup}#{invalidCharsGroup}#{directionalMarkersGroup}', { - punct: _punct["default"], - spacesGroup: _spacesGroup["default"], - invalidCharsGroup: _invalidCharsGroup["default"], - directionalMarkersGroup: _directionalMarkersGroup["default"] -}); -var _default = invalidDomainChars; -exports["default"] = _default; -module.exports = exports.default; +module.exports = {"$id":"timings.json#","$schema":"http://json-schema.org/draft-06/schema#","required":["send","wait","receive"],"properties":{"dns":{"type":"number","min":-1},"connect":{"type":"number","min":-1},"blocked":{"type":"number","min":-1},"send":{"type":"number","min":-1},"wait":{"type":"number","min":-1},"receive":{"type":"number","min":-1},"ssl":{"type":"number","min":-1},"comment":{"type":"string"}}}; /***/ }), +/* 759 */, +/* 760 */, +/* 761 */ +/***/ (function(module) { + +module.exports = require("zlib"); -/***/ 4130: -/***/ ((module, exports, __nccwpck_require__) => { +/***/ }), +/* 762 */, +/* 763 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -__nccwpck_require__(6880); +__webpack_require__(493); -Object.defineProperty(exports, "__esModule", ({ +Object.defineProperty(exports, "__esModule", { value: true -})); +}); exports["default"] = void 0; // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -var invalidUrlWithoutProtocolPrecedingChars = /[-_.\/]$/; -var _default = invalidUrlWithoutProtocolPrecedingChars; +var codePoint = /(?:[^\uD800-\uDFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF])/; +var _default = codePoint; exports["default"] = _default; module.exports = exports.default; /***/ }), +/* 764 */ +/***/ (function(module) { + +function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + "default": obj + }; +} -/***/ 1012: -/***/ ((module, exports, __nccwpck_require__) => { +module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports; -"use strict"; +/***/ }), +/* 765 */ +/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { +// 22.1.2.2 / 15.4.3.2 Array.isArray(arg) +var $export = __webpack_require__(195); -__nccwpck_require__(6880); +$export($export.S, 'Array', { isArray: __webpack_require__(676) }); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var latinAccentChars = /\xC0-\xD6\xD8-\xF6\xF8-\xFF\u0100-\u024F\u0253\u0254\u0256\u0257\u0259\u025B\u0263\u0268\u026F\u0272\u0289\u028B\u02BB\u0300-\u036F\u1E00-\u1EFF/; -var _default = latinAccentChars; -exports["default"] = _default; -module.exports = exports.default; /***/ }), - -/***/ 1575: -/***/ ((module, exports, __nccwpck_require__) => { +/* 766 */, +/* 767 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -__nccwpck_require__(6880); +__webpack_require__(493); -Object.defineProperty(exports, "__esModule", ({ +Object.defineProperty(exports, "__esModule", { value: true -})); +}); exports["default"] = void 0; // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -var nonBmpCodePairs = /[\uD800-\uDBFF][\uDC00-\uDFFF]/gm; -var _default = nonBmpCodePairs; +var astralNumerals = /\ud801[\udca0-\udca9]|\ud804[\udc66-\udc6f\udcf0-\udcf9\udd36-\udd3f\uddd0-\uddd9\udef0-\udef9]|\ud805[\udcd0-\udcd9\ude50-\ude59\udec0-\udec9]|\ud806[\udce0-\udce9]|\ud81a[\ude60-\ude69\udf50-\udf59]|\ud835[\udfce-\udfff]/; +var _default = astralNumerals; exports["default"] = _default; module.exports = exports.default; /***/ }), - -/***/ 2813: -/***/ ((module, exports, __nccwpck_require__) => { +/* 768 */, +/* 769 */, +/* 770 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -__nccwpck_require__(6880); +var _interopRequireDefault = __webpack_require__(764); -Object.defineProperty(exports, "__esModule", ({ +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { value: true -})); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var punct = /\!'#%&'\(\)*\+,\\\-\.\/:;<=>\?@\[\]\^_{|}~\$/; -var _default = punct; +}); exports["default"] = _default; -module.exports = exports.default; -/***/ }), - -/***/ 6462: -/***/ ((module, exports, __nccwpck_require__) => { +__webpack_require__(277); -"use strict"; +__webpack_require__(549); +var _endMentionMatch = _interopRequireDefault(__webpack_require__(944)); -__nccwpck_require__(6880); +var _validReply = _interopRequireDefault(__webpack_require__(183)); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -var rtlChars = /[\u0600-\u06FF]|[\u0750-\u077F]|[\u0590-\u05FF]|[\uFE70-\uFEFF]/gm; -var _default = rtlChars; -exports["default"] = _default; +function _default(text) { + if (!text) { + return null; + } + + var possibleScreenName = text.match(_validReply["default"]); + + if (!possibleScreenName || RegExp.rightContext.match(_endMentionMatch["default"])) { + return null; + } + + return possibleScreenName[1]; +} + module.exports = exports.default; /***/ }), - -/***/ 1985: -/***/ ((module, exports, __nccwpck_require__) => { +/* 771 */, +/* 772 */ +/***/ (function(module) { "use strict"; +module.exports = function generate__limitLength(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + if (!($isData || typeof $schema == 'number')) { + throw new Error($keyword + ' must be number'); + } + var $op = $keyword == 'maxLength' ? '>' : '<'; + out += 'if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + if (it.opts.unicode === false) { + out += ' ' + ($data) + '.length '; + } else { + out += ' ucs2length(' + ($data) + ') '; + } + out += ' ' + ($op) + ' ' + ($schemaValue) + ') { '; + var $errorKeyword = $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_limitLength') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT be '; + if ($keyword == 'maxLength') { + out += 'longer'; + } else { + out += 'shorter'; + } + out += ' than '; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + ($schema); + } + out += ' characters\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; +} + -var _interopRequireDefault = __nccwpck_require__(3286); +/***/ }), +/* 773 */, +/* 774 */, +/* 775 */, +/* 776 */ +/***/ (function(module) { -__nccwpck_require__(6880); +module.exports = {"$id":"creator.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["name","version"],"properties":{"name":{"type":"string"},"version":{"type":"string"},"comment":{"type":"string"}}}; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; +/***/ }), +/* 777 */, +/* 778 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); +"use strict"; -var _spacesGroup = _interopRequireDefault(__nccwpck_require__(9388)); -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var _default = (0, _regexSupplant["default"])(/[#{spacesGroup}]/, { - spacesGroup: _spacesGroup["default"] +var Type = __webpack_require__(755); + +module.exports = new Type('tag:yaml.org,2002:map', { + kind: 'mapping', + construct: function (data) { return data !== null ? data : {}; } }); -exports["default"] = _default; -module.exports = exports.default; /***/ }), +/* 779 */ +/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { -/***/ 9388: -/***/ ((module, exports, __nccwpck_require__) => { +// https://github.com/tc39/proposal-object-getownpropertydescriptors +var $export = __webpack_require__(195); +var ownKeys = __webpack_require__(695); +var toIObject = __webpack_require__(78); +var gOPD = __webpack_require__(321); +var createProperty = __webpack_require__(393); -"use strict"; +$export($export.S, 'Object', { + getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) { + var O = toIObject(object); + var getDesc = gOPD.f; + var keys = ownKeys(O); + var result = {}; + var i = 0; + var key, desc; + while (keys.length > i) { + desc = getDesc(O, key = keys[i++]); + if (desc !== undefined) createProperty(result, key, desc); + } + return result; + } +}); -__nccwpck_require__(6880); +/***/ }), +/* 780 */, +/* 781 */, +/* 782 */, +/* 783 */ +/***/ (function(module) { -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var spacesGroup = /\x09-\x0D\x20\x85\xA0\u1680\u180E\u2000-\u200A\u2028\u2029\u202F\u205F\u3000/; -var _default = spacesGroup; -exports["default"] = _default; -module.exports = exports.default; +function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } -/***/ }), + return obj; +} -/***/ 4926: -/***/ ((module, exports, __nccwpck_require__) => { +module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports; -"use strict"; +/***/ }), +/* 784 */ +/***/ (function(module, __unusedexports, __webpack_require__) { +/** + * Detect Electron renderer / nwjs process, which is node, but we should + * treat as a browser. + */ -__nccwpck_require__(6880); +if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) { + module.exports = __webpack_require__(794); +} else { + module.exports = __webpack_require__(81); +} -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var urlHasHttps = /^https:\/\//i; -var _default = urlHasHttps; -exports["default"] = _default; -module.exports = exports.default; /***/ }), +/* 785 */, +/* 786 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 2025: -/***/ ((module, exports, __nccwpck_require__) => { +// false -> Array#indexOf +// true -> Array#includes +var toIObject = __webpack_require__(78); +var toLength = __webpack_require__(853); +var toAbsoluteIndex = __webpack_require__(85); +module.exports = function (IS_INCLUDES) { + return function ($this, el, fromIndex) { + var O = toIObject($this); + var length = toLength(O.length); + var index = toAbsoluteIndex(fromIndex, length); + var value; + // Array#includes uses SameValueZero equality algorithm + // eslint-disable-next-line no-self-compare + if (IS_INCLUDES && el != el) while (length > index) { + value = O[index++]; + // eslint-disable-next-line no-self-compare + if (value != value) return true; + // Array#indexOf ignores holes, Array#includes - not + } else for (;length > index; index++) if (IS_INCLUDES || index in O) { + if (O[index] === el) return IS_INCLUDES || index || 0; + } return !IS_INCLUDES && -1; + }; +}; + + +/***/ }), +/* 787 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -__nccwpck_require__(6880); +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); -Object.defineProperty(exports, "__esModule", ({ +Object.defineProperty(exports, "__esModule", { value: true -})); -exports["default"] = void 0; +}); +exports["default"] = _default; + +var _convertUnicodeIndices = _interopRequireDefault(__webpack_require__(348)); + // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -var urlHasProtocol = /^https?:\/\//i; -var _default = urlHasProtocol; -exports["default"] = _default; +function _default(text, entities) { + (0, _convertUnicodeIndices["default"])(text, entities, false); +} + module.exports = exports.default; /***/ }), - -/***/ 3598: -/***/ ((module, exports, __nccwpck_require__) => { +/* 788 */ +/***/ (function(module, __unusedexports, __webpack_require__) { "use strict"; +// 21.2.5.3 get RegExp.prototype.flags +var anObject = __webpack_require__(990); +module.exports = function () { + var that = anObject(this); + var result = ''; + if (that.global) result += 'g'; + if (that.ignoreCase) result += 'i'; + if (that.multiline) result += 'm'; + if (that.unicode) result += 'u'; + if (that.sticky) result += 'y'; + return result; +}; -var _interopRequireDefault = __nccwpck_require__(3286); - -__nccwpck_require__(6880); - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _latinAccentChars = _interopRequireDefault(__nccwpck_require__(1012)); - -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); -var _validCCTLD = _interopRequireDefault(__nccwpck_require__(7647)); +/***/ }), +/* 789 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -var _validGTLD = _interopRequireDefault(__nccwpck_require__(7869)); +// 9.4.2.3 ArraySpeciesCreate(originalArray, length) +var speciesConstructor = __webpack_require__(807); -var _validPunycode = _interopRequireDefault(__nccwpck_require__(1064)); +module.exports = function (original, length) { + return new (speciesConstructor(original))(length); +}; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validAsciiDomain = (0, _regexSupplant["default"])(/(?:(?:[\-a-z0-9#{latinAccentChars}]+)\.)+(?:#{validGTLD}|#{validCCTLD}|#{validPunycode})/gi, { - latinAccentChars: _latinAccentChars["default"], - validGTLD: _validGTLD["default"], - validCCTLD: _validCCTLD["default"], - validPunycode: _validPunycode["default"] -}); -var _default = validAsciiDomain; -exports["default"] = _default; -module.exports = exports.default; /***/ }), - -/***/ 7647: -/***/ ((module, exports, __nccwpck_require__) => { +/* 790 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var _interopRequireDefault = __nccwpck_require__(3286); +var _interopRequireDefault = __webpack_require__(764); -__nccwpck_require__(6880); +__webpack_require__(493); -Object.defineProperty(exports, "__esModule", ({ +Object.defineProperty(exports, "__esModule", { value: true -})); +}); exports["default"] = void 0; -__nccwpck_require__(7662); +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); +var _validateUrlUserinfo = _interopRequireDefault(__webpack_require__(272)); + +var _validateUrlHost = _interopRequireDefault(__webpack_require__(612)); + +var _validateUrlPort = _interopRequireDefault(__webpack_require__(302)); // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -var validCCTLD = (0, _regexSupplant["default"])(RegExp('(?:(?:' + '한국|香港|澳門|新加坡|台灣|台湾|中國|中国|გე|ລາວ|ไทย|ලංකා|ഭാരതം|ಭಾರತ|భారత్|சிங்கப்பூர்|இலங்கை|இந்தியா|ଭାରତ|' + 'ભારત|ਭਾਰਤ|ভাৰত|ভারত|বাংলা|भारोत|भारतम्|भारत|ڀارت|پاکستان|موريتانيا|مليسيا|مصر|قطر|فلسطين|عمان|' + 'عراق|سورية|سودان|تونس|بھارت|بارت|ایران|امارات|المغرب|السعودية|الجزائر|البحرين|الاردن|հայ|қаз|' + 'укр|срб|рф|мон|мкд|ею|бел|бг|ευ|ελ|zw|zm|za|yt|ye|ws|wf|vu|vn|vi|vg|ve|vc|va|uz|uy|us|um|uk|' + 'ug|ua|tz|tw|tv|tt|tr|tp|to|tn|tm|tl|tk|tj|th|tg|tf|td|tc|sz|sy|sx|sv|su|st|ss|sr|so|sn|sm|sl|' + 'sk|sj|si|sh|sg|se|sd|sc|sb|sa|rw|ru|rs|ro|re|qa|py|pw|pt|ps|pr|pn|pm|pl|pk|ph|pg|pf|pe|pa|om|' + 'nz|nu|nr|np|no|nl|ni|ng|nf|ne|nc|na|mz|my|mx|mw|mv|mu|mt|ms|mr|mq|mp|mo|mn|mm|ml|mk|mh|mg|mf|' + 'me|md|mc|ma|ly|lv|lu|lt|ls|lr|lk|li|lc|lb|la|kz|ky|kw|kr|kp|kn|km|ki|kh|kg|ke|jp|jo|jm|je|it|' + 'is|ir|iq|io|in|im|il|ie|id|hu|ht|hr|hn|hm|hk|gy|gw|gu|gt|gs|gr|gq|gp|gn|gm|gl|gi|gh|gg|gf|ge|' + 'gd|gb|ga|fr|fo|fm|fk|fj|fi|eu|et|es|er|eh|eg|ee|ec|dz|do|dm|dk|dj|de|cz|cy|cx|cw|cv|cu|cr|co|' + 'cn|cm|cl|ck|ci|ch|cg|cf|cd|cc|ca|bz|by|bw|bv|bt|bs|br|bq|bo|bn|bm|bl|bj|bi|bh|bg|bf|be|bd|bb|' + 'ba|az|ax|aw|au|at|as|ar|aq|ao|an|am|al|ai|ag|af|ae|ad|ac' + ')(?=[^0-9a-zA-Z@+-]|$))')); -var _default = validCCTLD; +var validateUrlAuthority = (0, _regexSupplant["default"])( // $1 userinfo +'(?:(#{validateUrlUserinfo})@)?' + // $2 host +'(#{validateUrlHost})' + // $3 port +'(?::(#{validateUrlPort}))?', { + validateUrlUserinfo: _validateUrlUserinfo["default"], + validateUrlHost: _validateUrlHost["default"], + validateUrlPort: _validateUrlPort["default"] +}, 'i'); +var _default = validateUrlAuthority; exports["default"] = _default; module.exports = exports.default; /***/ }), +/* 791 */, +/* 792 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 8382: -/***/ ((module, exports, __nccwpck_require__) => { - -"use strict"; +module.exports = ForeverAgent +ForeverAgent.SSL = ForeverAgentSSL +var util = __webpack_require__(669) + , Agent = __webpack_require__(605).Agent + , net = __webpack_require__(631) + , tls = __webpack_require__(16) + , AgentSSL = __webpack_require__(211).Agent + +function getConnectionName(host, port) { + var name = '' + if (typeof host === 'string') { + name = host + ':' + port + } else { + // For node.js v012.0 and iojs-v1.5.1, host is an object. And any existing localAddress is part of the connection name. + name = host.host + ':' + host.port + ':' + (host.localAddress ? (host.localAddress + ':') : ':') + } + return name +} + +function ForeverAgent(options) { + var self = this + self.options = options || {} + self.requests = {} + self.sockets = {} + self.freeSockets = {} + self.maxSockets = self.options.maxSockets || Agent.defaultMaxSockets + self.minSockets = self.options.minSockets || ForeverAgent.defaultMinSockets + self.on('free', function(socket, host, port) { + var name = getConnectionName(host, port) + + if (self.requests[name] && self.requests[name].length) { + self.requests[name].shift().onSocket(socket) + } else if (self.sockets[name].length < self.minSockets) { + if (!self.freeSockets[name]) self.freeSockets[name] = [] + self.freeSockets[name].push(socket) + + // if an error happens while we don't use the socket anyway, meh, throw the socket away + var onIdleError = function() { + socket.destroy() + } + socket._onIdleError = onIdleError + socket.on('error', onIdleError) + } else { + // If there are no pending requests just destroy the + // socket and it will get removed from the pool. This + // gets us out of timeout issues and allows us to + // default to Connection:keep-alive. + socket.destroy() + } + }) -var _interopRequireDefault = __nccwpck_require__(3286); +} +util.inherits(ForeverAgent, Agent) -__nccwpck_require__(6880); +ForeverAgent.defaultMinSockets = 5 -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -var _cashtag = _interopRequireDefault(__nccwpck_require__(1277)); +ForeverAgent.prototype.createConnection = net.createConnection +ForeverAgent.prototype.addRequestNoreuse = Agent.prototype.addRequest +ForeverAgent.prototype.addRequest = function(req, host, port) { + var name = getConnectionName(host, port) + + if (typeof host !== 'string') { + var options = host + port = options.port + host = options.host + } -var _punct = _interopRequireDefault(__nccwpck_require__(2813)); + if (this.freeSockets[name] && this.freeSockets[name].length > 0 && !req.useChunkedEncodingByDefault) { + var idleSocket = this.freeSockets[name].pop() + idleSocket.removeListener('error', idleSocket._onIdleError) + delete idleSocket._onIdleError + req._reusedSocket = true + req.onSocket(idleSocket) + } else { + this.addRequestNoreuse(req, host, port) + } +} -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); +ForeverAgent.prototype.removeSocket = function(s, name, host, port) { + if (this.sockets[name]) { + var index = this.sockets[name].indexOf(s) + if (index !== -1) { + this.sockets[name].splice(index, 1) + } + } else if (this.sockets[name] && this.sockets[name].length === 0) { + // don't leak + delete this.sockets[name] + delete this.requests[name] + } + + if (this.freeSockets[name]) { + var index = this.freeSockets[name].indexOf(s) + if (index !== -1) { + this.freeSockets[name].splice(index, 1) + if (this.freeSockets[name].length === 0) { + delete this.freeSockets[name] + } + } + } -var _spaces = _interopRequireDefault(__nccwpck_require__(1985)); + if (this.requests[name] && this.requests[name].length) { + // If we have pending requests and a socket gets closed a new one + // needs to be created to take over in the pool for the one that closed. + this.createSocket(name, host, port).emit('free') + } +} -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validCashtag = (0, _regexSupplant["default"])('(^|#{spaces})(\\$)(#{cashtag})(?=$|\\s|[#{punct}])', { - cashtag: _cashtag["default"], - spaces: _spaces["default"], - punct: _punct["default"] -}, 'gi'); -var _default = validCashtag; -exports["default"] = _default; -module.exports = exports.default; +function ForeverAgentSSL (options) { + ForeverAgent.call(this, options) +} +util.inherits(ForeverAgentSSL, ForeverAgent) -/***/ }), +ForeverAgentSSL.prototype.createConnection = createConnectionSSL +ForeverAgentSSL.prototype.addRequestNoreuse = AgentSSL.prototype.addRequest -/***/ 4657: -/***/ ((module, exports, __nccwpck_require__) => { +function createConnectionSSL (port, host, options) { + if (typeof port === 'object') { + options = port; + } else if (typeof host === 'object') { + options = host; + } else if (typeof options === 'object') { + options = options; + } else { + options = {}; + } -"use strict"; + if (typeof port === 'number') { + options.port = port; + } + if (typeof host === 'string') { + options.host = host; + } -var _interopRequireDefault = __nccwpck_require__(3286); + return tls.connect(options); +} -__nccwpck_require__(6880); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; +/***/ }), +/* 793 */, +/* 794 */ +/***/ (function(module, exports, __webpack_require__) { -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); +/* eslint-env browser */ -var _validCCTLD = _interopRequireDefault(__nccwpck_require__(7647)); +/** + * This is the web browser implementation of `debug()`. + */ -var _validDomainName = _interopRequireDefault(__nccwpck_require__(8203)); +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = localstorage(); -var _validGTLD = _interopRequireDefault(__nccwpck_require__(7869)); +/** + * Colors. + */ -var _validPunycode = _interopRequireDefault(__nccwpck_require__(1064)); +exports.colors = [ + '#0000CC', + '#0000FF', + '#0033CC', + '#0033FF', + '#0066CC', + '#0066FF', + '#0099CC', + '#0099FF', + '#00CC00', + '#00CC33', + '#00CC66', + '#00CC99', + '#00CCCC', + '#00CCFF', + '#3300CC', + '#3300FF', + '#3333CC', + '#3333FF', + '#3366CC', + '#3366FF', + '#3399CC', + '#3399FF', + '#33CC00', + '#33CC33', + '#33CC66', + '#33CC99', + '#33CCCC', + '#33CCFF', + '#6600CC', + '#6600FF', + '#6633CC', + '#6633FF', + '#66CC00', + '#66CC33', + '#9900CC', + '#9900FF', + '#9933CC', + '#9933FF', + '#99CC00', + '#99CC33', + '#CC0000', + '#CC0033', + '#CC0066', + '#CC0099', + '#CC00CC', + '#CC00FF', + '#CC3300', + '#CC3333', + '#CC3366', + '#CC3399', + '#CC33CC', + '#CC33FF', + '#CC6600', + '#CC6633', + '#CC9900', + '#CC9933', + '#CCCC00', + '#CCCC33', + '#FF0000', + '#FF0033', + '#FF0066', + '#FF0099', + '#FF00CC', + '#FF00FF', + '#FF3300', + '#FF3333', + '#FF3366', + '#FF3399', + '#FF33CC', + '#FF33FF', + '#FF6600', + '#FF6633', + '#FF9900', + '#FF9933', + '#FFCC00', + '#FFCC33' +]; -var _validSubdomain = _interopRequireDefault(__nccwpck_require__(6285)); +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validDomain = (0, _regexSupplant["default"])(/(?:#{validSubdomain}*#{validDomainName}(?:#{validGTLD}|#{validCCTLD}|#{validPunycode}))/, { - validDomainName: _validDomainName["default"], - validSubdomain: _validSubdomain["default"], - validGTLD: _validGTLD["default"], - validCCTLD: _validCCTLD["default"], - validPunycode: _validPunycode["default"] -}); -var _default = validDomain; -exports["default"] = _default; -module.exports = exports.default; +// eslint-disable-next-line complexity +function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { + return true; + } -/***/ }), + // Internet Explorer and Edge do not support colors. + if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; + } -/***/ 2089: -/***/ ((module, exports, __nccwpck_require__) => { + // Is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || + // Is firebug? http://stackoverflow.com/a/398120/376773 + (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || + // Is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || + // Double check webkit in userAgent just in case we are in a worker + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); +} -"use strict"; +/** + * Colorize log arguments if enabled. + * + * @api public + */ +function formatArgs(args) { + args[0] = (this.useColors ? '%c' : '') + + this.namespace + + (this.useColors ? ' %c' : ' ') + + args[0] + + (this.useColors ? '%c ' : ' ') + + '+' + module.exports.humanize(this.diff); -var _interopRequireDefault = __nccwpck_require__(3286); + if (!this.useColors) { + return; + } -__nccwpck_require__(6880); + const c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit'); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + // The final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + let index = 0; + let lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, match => { + if (match === '%%') { + return; + } + index++; + if (match === '%c') { + // We only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); -var _invalidDomainChars = _interopRequireDefault(__nccwpck_require__(9492)); + args.splice(lastC, 0, c); +} -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); +/** + * Invokes `console.log()` when available. + * No-op when `console.log` is not a "function". + * + * @api public + */ +function log(...args) { + // This hackery is required for IE8/9, where + // the `console.log` function doesn't have 'apply' + return typeof console === 'object' && + console.log && + console.log(...args); +} -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validDomainChars = (0, _regexSupplant["default"])(/[^#{invalidDomainChars}]/, { - invalidDomainChars: _invalidDomainChars["default"] -}); -var _default = validDomainChars; -exports["default"] = _default; -module.exports = exports.default; +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ +function save(namespaces) { + try { + if (namespaces) { + exports.storage.setItem('debug', namespaces); + } else { + exports.storage.removeItem('debug'); + } + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } +} -/***/ }), +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ +function load() { + let r; + try { + r = exports.storage.getItem('debug'); + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } -/***/ 8203: -/***/ ((module, exports, __nccwpck_require__) => { + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } -"use strict"; + return r; +} +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ -var _interopRequireDefault = __nccwpck_require__(3286); +function localstorage() { + try { + // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context + // The Browser also has localStorage in the global context. + return localStorage; + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } +} -__nccwpck_require__(6880); +module.exports = __webpack_require__(486)(exports); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; +const {formatters} = module.exports; -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ -var _validDomainChars = _interopRequireDefault(__nccwpck_require__(2089)); +formatters.j = function (v) { + try { + return JSON.stringify(v); + } catch (error) { + return '[UnexpectedJSONParseError]: ' + error.message; + } +}; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validDomainName = (0, _regexSupplant["default"])(/(?:(?:#{validDomainChars}(?:-|#{validDomainChars})*)?#{validDomainChars}\.)/, { - validDomainChars: _validDomainChars["default"] -}); -var _default = validDomainName; -exports["default"] = _default; -module.exports = exports.default; /***/ }), - -/***/ 7869: -/***/ ((module, exports, __nccwpck_require__) => { +/* 795 */, +/* 796 */ +/***/ (function(__unusedmodule, exports) { "use strict"; -var _interopRequireDefault = __nccwpck_require__(3286); +Object.defineProperty(exports, '__esModule', { value: true }); -__nccwpck_require__(6880); +function getUserAgent() { + if (typeof navigator === "object" && "userAgent" in navigator) { + return navigator.userAgent; + } -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + if (typeof process === "object" && "version" in process) { + return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; + } -__nccwpck_require__(7662); + return ""; +} -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); +exports.getUserAgent = getUserAgent; +//# sourceMappingURL=index.js.map -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validGTLD = (0, _regexSupplant["default"])(RegExp('(?:(?:' + '삼성|닷컴|닷넷|香格里拉|餐厅|食品|飞利浦|電訊盈科|集团|通販|购物|谷歌|诺基亚|联通|网络|网站|网店|网址|组织机构|移动|珠宝|点看|游戏|淡马锡|机构|書籍|时尚|新闻|' + '政府|政务|招聘|手表|手机|我爱你|慈善|微博|广东|工行|家電|娱乐|天主教|大拿|大众汽车|在线|嘉里大酒店|嘉里|商标|商店|商城|公益|公司|八卦|健康|信息|佛山|企业|' + '中文网|中信|世界|ポイント|ファッション|セール|ストア|コム|グーグル|クラウド|みんな|คอม|संगठन|नेट|कॉम|همراه|موقع|موبايلي|كوم|' + 'كاثوليك|عرب|شبكة|بيتك|بازار|العليان|ارامكو|اتصالات|ابوظبي|קום|сайт|рус|орг|онлайн|москва|ком|' + 'католик|дети|zuerich|zone|zippo|zip|zero|zara|zappos|yun|youtube|you|yokohama|yoga|yodobashi|' + 'yandex|yamaxun|yahoo|yachts|xyz|xxx|xperia|xin|xihuan|xfinity|xerox|xbox|wtf|wtc|wow|world|' + 'works|work|woodside|wolterskluwer|wme|winners|wine|windows|win|williamhill|wiki|wien|whoswho|' + 'weir|weibo|wedding|wed|website|weber|webcam|weatherchannel|weather|watches|watch|warman|' + 'wanggou|wang|walter|walmart|wales|vuelos|voyage|voto|voting|vote|volvo|volkswagen|vodka|' + 'vlaanderen|vivo|viva|vistaprint|vista|vision|visa|virgin|vip|vin|villas|viking|vig|video|' + 'viajes|vet|versicherung|vermögensberatung|vermögensberater|verisign|ventures|vegas|vanguard|' + 'vana|vacations|ups|uol|uno|university|unicom|uconnect|ubs|ubank|tvs|tushu|tunes|tui|tube|trv|' + 'trust|travelersinsurance|travelers|travelchannel|travel|training|trading|trade|toys|toyota|' + 'town|tours|total|toshiba|toray|top|tools|tokyo|today|tmall|tkmaxx|tjx|tjmaxx|tirol|tires|tips|' + 'tiffany|tienda|tickets|tiaa|theatre|theater|thd|teva|tennis|temasek|telefonica|telecity|tel|' + 'technology|tech|team|tdk|tci|taxi|tax|tattoo|tatar|tatamotors|target|taobao|talk|taipei|tab|' + 'systems|symantec|sydney|swiss|swiftcover|swatch|suzuki|surgery|surf|support|supply|supplies|' + 'sucks|style|study|studio|stream|store|storage|stockholm|stcgroup|stc|statoil|statefarm|' + 'statebank|starhub|star|staples|stada|srt|srl|spreadbetting|spot|sport|spiegel|space|soy|sony|' + 'song|solutions|solar|sohu|software|softbank|social|soccer|sncf|smile|smart|sling|skype|sky|' + 'skin|ski|site|singles|sina|silk|shriram|showtime|show|shouji|shopping|shop|shoes|shiksha|shia|' + 'shell|shaw|sharp|shangrila|sfr|sexy|sex|sew|seven|ses|services|sener|select|seek|security|' + 'secure|seat|search|scot|scor|scjohnson|science|schwarz|schule|school|scholarships|schmidt|' + 'schaeffler|scb|sca|sbs|sbi|saxo|save|sas|sarl|sapo|sap|sanofi|sandvikcoromant|sandvik|samsung|' + 'samsclub|salon|sale|sakura|safety|safe|saarland|ryukyu|rwe|run|ruhr|rugby|rsvp|room|rogers|' + 'rodeo|rocks|rocher|rmit|rip|rio|ril|rightathome|ricoh|richardli|rich|rexroth|reviews|review|' + 'restaurant|rest|republican|report|repair|rentals|rent|ren|reliance|reit|reisen|reise|rehab|' + 'redumbrella|redstone|red|recipes|realty|realtor|realestate|read|raid|radio|racing|qvc|quest|' + 'quebec|qpon|pwc|pub|prudential|pru|protection|property|properties|promo|progressive|prof|' + 'productions|prod|pro|prime|press|praxi|pramerica|post|porn|politie|poker|pohl|pnc|plus|' + 'plumbing|playstation|play|place|pizza|pioneer|pink|ping|pin|pid|pictures|pictet|pics|piaget|' + 'physio|photos|photography|photo|phone|philips|phd|pharmacy|pfizer|pet|pccw|pay|passagens|' + 'party|parts|partners|pars|paris|panerai|panasonic|pamperedchef|page|ovh|ott|otsuka|osaka|' + 'origins|orientexpress|organic|org|orange|oracle|open|ooo|onyourside|online|onl|ong|one|omega|' + 'ollo|oldnavy|olayangroup|olayan|okinawa|office|off|observer|obi|nyc|ntt|nrw|nra|nowtv|nowruz|' + 'now|norton|northwesternmutual|nokia|nissay|nissan|ninja|nikon|nike|nico|nhk|ngo|nfl|nexus|' + 'nextdirect|next|news|newholland|new|neustar|network|netflix|netbank|net|nec|nba|navy|natura|' + 'nationwide|name|nagoya|nadex|nab|mutuelle|mutual|museum|mtr|mtpc|mtn|msd|movistar|movie|mov|' + 'motorcycles|moto|moscow|mortgage|mormon|mopar|montblanc|monster|money|monash|mom|moi|moe|moda|' + 'mobily|mobile|mobi|mma|mls|mlb|mitsubishi|mit|mint|mini|mil|microsoft|miami|metlife|merckmsd|' + 'meo|menu|men|memorial|meme|melbourne|meet|media|med|mckinsey|mcdonalds|mcd|mba|mattel|' + 'maserati|marshalls|marriott|markets|marketing|market|map|mango|management|man|makeup|maison|' + 'maif|madrid|macys|luxury|luxe|lupin|lundbeck|ltda|ltd|lplfinancial|lpl|love|lotto|lotte|' + 'london|lol|loft|locus|locker|loans|loan|llp|llc|lixil|living|live|lipsy|link|linde|lincoln|' + 'limo|limited|lilly|like|lighting|lifestyle|lifeinsurance|life|lidl|liaison|lgbt|lexus|lego|' + 'legal|lefrak|leclerc|lease|lds|lawyer|law|latrobe|latino|lat|lasalle|lanxess|landrover|land|' + 'lancome|lancia|lancaster|lamer|lamborghini|ladbrokes|lacaixa|kyoto|kuokgroup|kred|krd|kpn|' + 'kpmg|kosher|komatsu|koeln|kiwi|kitchen|kindle|kinder|kim|kia|kfh|kerryproperties|' + 'kerrylogistics|kerryhotels|kddi|kaufen|juniper|juegos|jprs|jpmorgan|joy|jot|joburg|jobs|jnj|' + 'jmp|jll|jlc|jio|jewelry|jetzt|jeep|jcp|jcb|java|jaguar|iwc|iveco|itv|itau|istanbul|ist|' + 'ismaili|iselect|irish|ipiranga|investments|intuit|international|intel|int|insure|insurance|' + 'institute|ink|ing|info|infiniti|industries|inc|immobilien|immo|imdb|imamat|ikano|iinet|ifm|' + 'ieee|icu|ice|icbc|ibm|hyundai|hyatt|hughes|htc|hsbc|how|house|hotmail|hotels|hoteles|hot|' + 'hosting|host|hospital|horse|honeywell|honda|homesense|homes|homegoods|homedepot|holiday|' + 'holdings|hockey|hkt|hiv|hitachi|hisamitsu|hiphop|hgtv|hermes|here|helsinki|help|healthcare|' + 'health|hdfcbank|hdfc|hbo|haus|hangout|hamburg|hair|guru|guitars|guide|guge|gucci|guardian|' + 'group|grocery|gripe|green|gratis|graphics|grainger|gov|got|gop|google|goog|goodyear|goodhands|' + 'goo|golf|goldpoint|gold|godaddy|gmx|gmo|gmbh|gmail|globo|global|gle|glass|glade|giving|gives|' + 'gifts|gift|ggee|george|genting|gent|gea|gdn|gbiz|gay|garden|gap|games|game|gallup|gallo|' + 'gallery|gal|fyi|futbol|furniture|fund|fun|fujixerox|fujitsu|ftr|frontier|frontdoor|frogans|' + 'frl|fresenius|free|fox|foundation|forum|forsale|forex|ford|football|foodnetwork|food|foo|fly|' + 'flsmidth|flowers|florist|flir|flights|flickr|fitness|fit|fishing|fish|firmdale|firestone|fire|' + 'financial|finance|final|film|fido|fidelity|fiat|ferrero|ferrari|feedback|fedex|fast|fashion|' + 'farmers|farm|fans|fan|family|faith|fairwinds|fail|fage|extraspace|express|exposed|expert|' + 'exchange|everbank|events|eus|eurovision|etisalat|esurance|estate|esq|erni|ericsson|equipment|' + 'epson|epost|enterprises|engineering|engineer|energy|emerck|email|education|edu|edeka|eco|eat|' + 'earth|dvr|dvag|durban|dupont|duns|dunlop|duck|dubai|dtv|drive|download|dot|doosan|domains|' + 'doha|dog|dodge|doctor|docs|dnp|diy|dish|discover|discount|directory|direct|digital|diet|' + 'diamonds|dhl|dev|design|desi|dentist|dental|democrat|delta|deloitte|dell|delivery|degree|' + 'deals|dealer|deal|dds|dclk|day|datsun|dating|date|data|dance|dad|dabur|cyou|cymru|cuisinella|' + 'csc|cruises|cruise|crs|crown|cricket|creditunion|creditcard|credit|cpa|courses|coupons|coupon|' + 'country|corsica|coop|cool|cookingchannel|cooking|contractors|contact|consulting|construction|' + 'condos|comsec|computer|compare|company|community|commbank|comcast|com|cologne|college|coffee|' + 'codes|coach|clubmed|club|cloud|clothing|clinique|clinic|click|cleaning|claims|cityeats|city|' + 'citic|citi|citadel|cisco|circle|cipriani|church|chrysler|chrome|christmas|chloe|chintai|cheap|' + 'chat|chase|charity|channel|chanel|cfd|cfa|cern|ceo|center|ceb|cbs|cbre|cbn|cba|catholic|' + 'catering|cat|casino|cash|caseih|case|casa|cartier|cars|careers|career|care|cards|caravan|car|' + 'capitalone|capital|capetown|canon|cancerresearch|camp|camera|cam|calvinklein|call|cal|cafe|' + 'cab|bzh|buzz|buy|business|builders|build|bugatti|budapest|brussels|brother|broker|broadway|' + 'bridgestone|bradesco|box|boutique|bot|boston|bostik|bosch|boots|booking|book|boo|bond|bom|' + 'bofa|boehringer|boats|bnpparibas|bnl|bmw|bms|blue|bloomberg|blog|blockbuster|blanco|' + 'blackfriday|black|biz|bio|bingo|bing|bike|bid|bible|bharti|bet|bestbuy|best|berlin|bentley|' + 'beer|beauty|beats|bcn|bcg|bbva|bbt|bbc|bayern|bauhaus|basketball|baseball|bargains|barefoot|' + 'barclays|barclaycard|barcelona|bar|bank|band|bananarepublic|banamex|baidu|baby|azure|axa|aws|' + 'avianca|autos|auto|author|auspost|audio|audible|audi|auction|attorney|athleta|associates|asia|' + 'asda|arte|art|arpa|army|archi|aramco|arab|aquarelle|apple|app|apartments|aol|anz|anquan|' + 'android|analytics|amsterdam|amica|amfam|amex|americanfamily|americanexpress|alstom|alsace|' + 'ally|allstate|allfinanz|alipay|alibaba|alfaromeo|akdn|airtel|airforce|airbus|aigo|aig|agency|' + 'agakhan|africa|afl|afamilycompany|aetna|aero|aeg|adult|ads|adac|actor|active|aco|accountants|' + 'accountant|accenture|academy|abudhabi|abogado|able|abc|abbvie|abbott|abb|abarth|aarp|aaa|' + 'onion' + ')(?=[^0-9a-zA-Z@+-]|$))')); -var _default = validGTLD; -exports["default"] = _default; -module.exports = exports.default; /***/ }), - -/***/ 462: -/***/ ((module, exports, __nccwpck_require__) => { +/* 797 */, +/* 798 */, +/* 799 */, +/* 800 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var _interopRequireDefault = __nccwpck_require__(3286); - -__nccwpck_require__(6880); +__webpack_require__(493); -Object.defineProperty(exports, "__esModule", ({ +Object.defineProperty(exports, "__esModule", { value: true -})); -exports["default"] = void 0; - -var _cyrillicLettersAndMarks = _interopRequireDefault(__nccwpck_require__(3863)); - -var _latinAccentChars = _interopRequireDefault(__nccwpck_require__(1012)); - -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); - +}); +exports["default"] = void 0; // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -var validGeneralUrlPathChars = (0, _regexSupplant["default"])(/[a-z#{cyrillicLettersAndMarks}0-9!\*';:=\+,\.\$\/%#\[\]\-\u2013_~@\|&#{latinAccentChars}]/i, { - cyrillicLettersAndMarks: _cyrillicLettersAndMarks["default"], - latinAccentChars: _latinAccentChars["default"] -}); -var _default = validGeneralUrlPathChars; +var validUrlQueryEndingChars = /[a-z0-9\-_&=#\/]/i; +var _default = validUrlQueryEndingChars; exports["default"] = _default; module.exports = exports.default; /***/ }), +/* 801 */, +/* 802 */ +/***/ (function(module) { -/***/ 6826: -/***/ ((module, exports, __nccwpck_require__) => { - -"use strict"; - +module.exports = setup; -var _interopRequireDefault = __nccwpck_require__(3286); +async function setup({ toolkit, octokit, payload, sha }) { + toolkit.info('Checking if "twitter-together-setup" branch exists already'); -__nccwpck_require__(6880); + try { + // Check if "twitter-together-setup" branch exists + // https://developer.github.com/v3/git/refs/#get-a-reference + await octokit.request("HEAD /repos/:owner/:repo/git/refs/:ref", { + owner: payload.repository.owner.login, + repo: payload.repository.name, + ref: "heads/twitter-together-setup", + request: { + expectStatus: 404, + }, + }); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + // If it does, the script assumes that the setup pull requset already exists + // and stops here + return toolkit.info('"twitter-together-setup" branch already exists'); + } catch (error) { + toolkit.info('"twitter-together-setup" branch does not yet exist'); + } -var _hashSigns = _interopRequireDefault(__nccwpck_require__(3466)); + // Create the "twitter-together-setup" branch + // https://developer.github.com/v3/git/refs/#create-a-reference + await octokit.request("POST /repos/:owner/:repo/git/refs", { + owner: payload.repository.owner.login, + repo: payload.repository.name, + ref: "refs/heads/twitter-together-setup", + sha, + }); + toolkit.info('"twitter-together-setup" branch created'); -var _hashtagAlpha = _interopRequireDefault(__nccwpck_require__(4420)); + // Create tweets/README.md from same file in twitter-together/action repo + // https://developer.github.com/v3/repos/contents/#get-contents + const { data: readmeContent } = await octokit.request( + "GET /repos/:owner/:repo/contents/:path", + { + mediaType: { + format: "raw", + }, + owner: "twitter-together", + repo: "action", + path: "tweets/README.md", + } + ); + // https://developer.github.com/v3/repos/contents/#create-or-update-a-file + await octokit.request("PUT /repos/:owner/:repo/contents/:path", { + owner: payload.repository.owner.login, + repo: payload.repository.name, + path: "tweets/README.md", + content: Buffer.from(readmeContent).toString("base64"), + branch: "twitter-together-setup", + message: "twitter-together setup", + }); + toolkit.info('"tweets/README.md" created in "twitter-together-setup" branch'); -var _hashtagAlphaNumeric = _interopRequireDefault(__nccwpck_require__(2975)); + // Create pull request + // https://developer.github.com/v3/pulls/#create-a-pull-request + const { data: pr } = await octokit.request("POST /repos/:owner/:repo/pulls", { + owner: payload.repository.owner.login, + repo: payload.repository.name, + title: "🐦 twitter-together setup", + body: `This pull request creates the \`tweets/\` folder where your \`*.tweet\` files go into. It also creates the \`tweets/README.md\` file with instructions. -var _hashtagBoundary = _interopRequireDefault(__nccwpck_require__(4386)); +Note that if you plan to support tweets with polls, your app has to be approved for Twitter's Ads API. See [the Ads API Application Form](https://github.com/twitter-together/action/blob/main/docs/03-apply-for-access-to-the-twitter-ads-api.md) documentation for more details. -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); +Enjoy!`, + head: "twitter-together-setup", + base: payload.repository.default_branch, + }); + toolkit.info(`Setup pull request created: ${pr.html_url}`); +} -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validHashtag = (0, _regexSupplant["default"])(/(#{hashtagBoundary})(#{hashSigns})(?!\uFE0F|\u20E3)(#{hashtagAlphaNumeric}*#{hashtagAlpha}#{hashtagAlphaNumeric}*)/gi, { - hashtagBoundary: _hashtagBoundary["default"], - hashSigns: _hashSigns["default"], - hashtagAlphaNumeric: _hashtagAlphaNumeric["default"], - hashtagAlpha: _hashtagAlpha["default"] -}); -var _default = validHashtag; -exports["default"] = _default; -module.exports = exports.default; /***/ }), - -/***/ 6882: -/***/ ((module, exports, __nccwpck_require__) => { +/* 803 */, +/* 804 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { "use strict"; -var _interopRequireDefault = __nccwpck_require__(3286); - -__nccwpck_require__(6880); - -Object.defineProperty(exports, "__esModule", ({ +Object.defineProperty(exports, "__esModule", { value: true -})); -exports["default"] = void 0; +}); +exports.default = void 0; -var _atSigns = _interopRequireDefault(__nccwpck_require__(6683)); +var _v = _interopRequireDefault(__webpack_require__(136)); -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); +var _sha = _interopRequireDefault(__webpack_require__(329)); -var _validMentionPrecedingChars = _interopRequireDefault(__nccwpck_require__(8454)); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validMentionOrList = (0, _regexSupplant["default"])('(#{validMentionPrecedingChars})' + // $1: Preceding character -'(#{atSigns})' + // $2: At mark -'([a-zA-Z0-9_]{1,20})' + // $3: Screen name -'(/[a-zA-Z][a-zA-Z0-9_-]{0,24})?', // $4: List (optional) -{ - validMentionPrecedingChars: _validMentionPrecedingChars["default"], - atSigns: _atSigns["default"] -}, 'g'); -var _default = validMentionOrList; -exports["default"] = _default; -module.exports = exports.default; +const v5 = (0, _v.default)('v5', 0x50, _sha.default); +var _default = v5; +exports.default = _default; /***/ }), +/* 805 */ +/***/ (function(module) { -/***/ 8454: -/***/ ((module, exports, __nccwpck_require__) => { +// 7.2.1 RequireObjectCoercible(argument) +module.exports = function (it) { + if (it == undefined) throw TypeError("Can't call method on " + it); + return it; +}; -"use strict"; +/***/ }), +/* 806 */, +/* 807 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -__nccwpck_require__(6880); +var isObject = __webpack_require__(956); +var isArray = __webpack_require__(676); +var SPECIES = __webpack_require__(621)('species'); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validMentionPrecedingChars = /(?:^|[^a-zA-Z0-9_!#$%&*@@]|(?:^|[^a-zA-Z0-9_+~.-])(?:rt|RT|rT|Rt):?)/; -var _default = validMentionPrecedingChars; -exports["default"] = _default; -module.exports = exports.default; +module.exports = function (original) { + var C; + if (isArray(original)) { + C = original.constructor; + // cross-realm fallback + if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined; + if (isObject(C)) { + C = C[SPECIES]; + if (C === null) C = undefined; + } + } return C === undefined ? Array : C; +}; -/***/ }), -/***/ 7493: -/***/ ((module, exports, __nccwpck_require__) => { +/***/ }), +/* 808 */, +/* 809 */ +/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { "use strict"; -__nccwpck_require__(6880); +var anObject = __webpack_require__(990); +var toObject = __webpack_require__(230); +var toLength = __webpack_require__(853); +var toInteger = __webpack_require__(43); +var advanceStringIndex = __webpack_require__(215); +var regExpExec = __webpack_require__(319); +var max = Math.max; +var min = Math.min; +var floor = Math.floor; +var SUBSTITUTION_SYMBOLS = /\$([$&`']|\d\d?|<[^>]*>)/g; +var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&`']|\d\d?)/g; + +var maybeToString = function (it) { + return it === undefined ? it : String(it); +}; + +// @@replace logic +__webpack_require__(35)('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) { + return [ + // `String.prototype.replace` method + // https://tc39.github.io/ecma262/#sec-string.prototype.replace + function replace(searchValue, replaceValue) { + var O = defined(this); + var fn = searchValue == undefined ? undefined : searchValue[REPLACE]; + return fn !== undefined + ? fn.call(searchValue, O, replaceValue) + : $replace.call(String(O), searchValue, replaceValue); + }, + // `RegExp.prototype[@@replace]` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace + function (regexp, replaceValue) { + var res = maybeCallNative($replace, regexp, this, replaceValue); + if (res.done) return res.value; + + var rx = anObject(regexp); + var S = String(this); + var functionalReplace = typeof replaceValue === 'function'; + if (!functionalReplace) replaceValue = String(replaceValue); + var global = rx.global; + if (global) { + var fullUnicode = rx.unicode; + rx.lastIndex = 0; + } + var results = []; + while (true) { + var result = regExpExec(rx, S); + if (result === null) break; + results.push(result); + if (!global) break; + var matchStr = String(result[0]); + if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); + } + var accumulatedResult = ''; + var nextSourcePosition = 0; + for (var i = 0; i < results.length; i++) { + result = results[i]; + var matched = String(result[0]); + var position = max(min(toInteger(result.index), S.length), 0); + var captures = []; + // NOTE: This is equivalent to + // captures = result.slice(1).map(maybeToString) + // but for some reason `nativeSlice.call(result, 1, result.length)` (called in + // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and + // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. + for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j])); + var namedCaptures = result.groups; + if (functionalReplace) { + var replacerArgs = [matched].concat(captures, position, S); + if (namedCaptures !== undefined) replacerArgs.push(namedCaptures); + var replacement = String(replaceValue.apply(undefined, replacerArgs)); + } else { + replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue); + } + if (position >= nextSourcePosition) { + accumulatedResult += S.slice(nextSourcePosition, position) + replacement; + nextSourcePosition = position + matched.length; + } + } + return accumulatedResult + S.slice(nextSourcePosition); + } + ]; + + // https://tc39.github.io/ecma262/#sec-getsubstitution + function getSubstitution(matched, str, position, captures, namedCaptures, replacement) { + var tailPos = position + matched.length; + var m = captures.length; + var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; + if (namedCaptures !== undefined) { + namedCaptures = toObject(namedCaptures); + symbols = SUBSTITUTION_SYMBOLS; + } + return $replace.call(replacement, symbols, function (match, ch) { + var capture; + switch (ch.charAt(0)) { + case '$': return '$'; + case '&': return matched; + case '`': return str.slice(0, position); + case "'": return str.slice(tailPos); + case '<': + capture = namedCaptures[ch.slice(1, -1)]; + break; + default: // \d\d? + var n = +ch; + if (n === 0) return match; + if (n > m) { + var f = floor(n / 10); + if (f === 0) return match; + if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1); + return match; + } + capture = captures[n - 1]; + } + return capture === undefined ? '' : capture; + }); + } +}); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validPortNumber = /[0-9]+/; -var _default = validPortNumber; -exports["default"] = _default; -module.exports = exports.default; /***/ }), - -/***/ 1064: -/***/ ((module, exports, __nccwpck_require__) => { +/* 810 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { "use strict"; -__nccwpck_require__(6880); - -Object.defineProperty(exports, "__esModule", ({ +Object.defineProperty(exports, "__esModule", { value: true -})); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validPunycode = /(?:xn--[\-0-9a-z]+)/; -var _default = validPunycode; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), +}); +exports.default = void 0; -/***/ 2575: -/***/ ((module, exports, __nccwpck_require__) => { +var _rng = _interopRequireDefault(__webpack_require__(506)); -"use strict"; +var _stringify = _interopRequireDefault(__webpack_require__(960)); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -var _interopRequireDefault = __nccwpck_require__(3286); +// **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html +let _nodeId; -__nccwpck_require__(6880); +let _clockseq; // Previous uuid creation time -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -var _atSigns = _interopRequireDefault(__nccwpck_require__(6683)); +let _lastMSecs = 0; +let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); +function v1(options, buf, offset) { + let i = buf && offset || 0; + const b = buf || new Array(16); + options = options || {}; + let node = options.node || _nodeId; + let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not + // specified. We do this lazily to minimize issues related to insufficient + // system entropy. See #189 -var _spaces = _interopRequireDefault(__nccwpck_require__(1985)); + if (node == null || clockseq == null) { + const seedBytes = options.random || (options.rng || _rng.default)(); -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validReply = (0, _regexSupplant["default"])(/^(?:#{spaces})*#{atSigns}([a-zA-Z0-9_]{1,20})/, { - atSigns: _atSigns["default"], - spaces: _spaces["default"] -}); -var _default = validReply; -exports["default"] = _default; -module.exports = exports.default; + if (node == null) { + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + } -/***/ }), + if (clockseq == null) { + // Per 4.2.2, randomize (14 bit) clockseq + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + } + } // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. -/***/ 6285: -/***/ ((module, exports, __nccwpck_require__) => { -"use strict"; + let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) -var _interopRequireDefault = __nccwpck_require__(3286); + const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression -__nccwpck_require__(6880); + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } // Per 4.2.1.2 Throw error if too many uuids are requested -var _validDomainChars = _interopRequireDefault(__nccwpck_require__(2089)); -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validSubdomain = (0, _regexSupplant["default"])(/(?:(?:#{validDomainChars}(?:[_-]|#{validDomainChars})*)?#{validDomainChars}\.)/, { - validDomainChars: _validDomainChars["default"] -}); -var _default = validSubdomain; -exports["default"] = _default; -module.exports = exports.default; + if (nsecs >= 10000) { + throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); + } -/***/ }), + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch -/***/ 1527: -/***/ ((module, exports, __nccwpck_require__) => { + msecs += 12219292800000; // `time_low` -"use strict"; + const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; // `time_mid` + const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; // `time_high_and_version` -var _interopRequireDefault = __nccwpck_require__(3286); + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version -__nccwpck_require__(6880); + b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); + b[i++] = clockseq & 0xff; // `node` -var _validUrlQueryChars = _interopRequireDefault(__nccwpck_require__(3567)); + for (let n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } -var _validUrlQueryEndingChars = _interopRequireDefault(__nccwpck_require__(7242)); + return buf || (0, _stringify.default)(b); +} -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validTcoUrl = (0, _regexSupplant["default"])(/^https?:\/\/t\.co\/([a-z0-9]+)(?:\?#{validUrlQueryChars}*#{validUrlQueryEndingChars})?/, { - validUrlQueryChars: _validUrlQueryChars["default"], - validUrlQueryEndingChars: _validUrlQueryEndingChars["default"] -}, 'i'); -var _default = validTcoUrl; -exports["default"] = _default; -module.exports = exports.default; +var _default = v1; +exports.default = _default; /***/ }), +/* 811 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 109: -/***/ ((module, exports, __nccwpck_require__) => { - -"use strict"; - - -var _interopRequireDefault = __nccwpck_require__(3286); - -__nccwpck_require__(6880); - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); - -var _validGeneralUrlPathChars = _interopRequireDefault(__nccwpck_require__(462)); +// all enumerable object keys, includes symbols +var getKeys = __webpack_require__(333); +var gOPS = __webpack_require__(243); +var pIE = __webpack_require__(632); +module.exports = function (it) { + var result = getKeys(it); + var getSymbols = gOPS.f; + if (getSymbols) { + var symbols = getSymbols(it); + var isEnum = pIE.f; + var i = 0; + var key; + while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key); + } return result; +}; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -// Allow URL paths to contain up to two nested levels of balanced parens -// 1. Used in Wikipedia URLs like /Primer_(film) -// 2. Used in IIS sessions like /S(dfd346)/ -// 3. Used in Rdio URLs like /track/We_Up_(Album_Version_(Edited))/ -var validUrlBalancedParens = (0, _regexSupplant["default"])('\\(' + '(?:' + '#{validGeneralUrlPathChars}+' + '|' + // allow one nested level of balanced parentheses -'(?:' + '#{validGeneralUrlPathChars}*' + '\\(' + '#{validGeneralUrlPathChars}+' + '\\)' + '#{validGeneralUrlPathChars}*' + ')' + ')' + '\\)', { - validGeneralUrlPathChars: _validGeneralUrlPathChars["default"] -}, 'i'); -var _default = validUrlBalancedParens; -exports["default"] = _default; -module.exports = exports.default; /***/ }), - -/***/ 2648: -/***/ ((module, exports, __nccwpck_require__) => { +/* 812 */, +/* 813 */ +/***/ (function(__unusedmodule, exports) { "use strict"; -var _interopRequireDefault = __nccwpck_require__(3286); - -__nccwpck_require__(6880); - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; - -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); +Object.defineProperty(exports, '__esModule', { value: true }); -var _validGeneralUrlPathChars = _interopRequireDefault(__nccwpck_require__(462)); +const REGEX_IS_INSTALLATION_LEGACY = /^v1\./; +const REGEX_IS_INSTALLATION = /^ghs_/; +const REGEX_IS_USER_TO_SERVER = /^ghu_/; +async function auth(token) { + const isApp = token.split(/\./).length === 3; + const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token); + const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token); + const tokenType = isApp ? "app" : isInstallation ? "installation" : isUserToServer ? "user-to-server" : "oauth"; + return { + type: "token", + token: token, + tokenType + }; +} -var _validUrlBalancedParens = _interopRequireDefault(__nccwpck_require__(109)); +/** + * Prefix token for usage in the Authorization header + * + * @param token OAuth token or JSON Web Token + */ +function withAuthorizationPrefix(token) { + if (token.split(/\./).length === 3) { + return `bearer ${token}`; + } -var _validUrlPathEndingChars = _interopRequireDefault(__nccwpck_require__(9913)); + return `token ${token}`; +} -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -// Allow @ in a url, but only in the middle. Catch things like http://example.com/@user/ -var validUrlPath = (0, _regexSupplant["default"])('(?:' + '(?:' + '#{validGeneralUrlPathChars}*' + '(?:#{validUrlBalancedParens}#{validGeneralUrlPathChars}*)*' + '#{validUrlPathEndingChars}' + ')|(?:@#{validGeneralUrlPathChars}+/)' + ')', { - validGeneralUrlPathChars: _validGeneralUrlPathChars["default"], - validUrlBalancedParens: _validUrlBalancedParens["default"], - validUrlPathEndingChars: _validUrlPathEndingChars["default"] -}, 'i'); -var _default = validUrlPath; -exports["default"] = _default; -module.exports = exports.default; +async function hook(token, request, route, parameters) { + const endpoint = request.endpoint.merge(route, parameters); + endpoint.headers.authorization = withAuthorizationPrefix(token); + return request(endpoint); +} -/***/ }), +const createTokenAuth = function createTokenAuth(token) { + if (!token) { + throw new Error("[@octokit/auth-token] No token passed to createTokenAuth"); + } -/***/ 9913: -/***/ ((module, exports, __nccwpck_require__) => { + if (typeof token !== "string") { + throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string"); + } -"use strict"; + token = token.replace(/^(token|bearer) +/i, ""); + return Object.assign(auth.bind(null, token), { + hook: hook.bind(null, token) + }); +}; +exports.createTokenAuth = createTokenAuth; +//# sourceMappingURL=index.js.map -var _interopRequireDefault = __nccwpck_require__(3286); -__nccwpck_require__(6880); +/***/ }), +/* 814 */ +/***/ (function(module) { -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; +function HARError (errors) { + var message = 'validation failed' -var _cyrillicLettersAndMarks = _interopRequireDefault(__nccwpck_require__(3863)); + this.name = 'HARError' + this.message = message + this.errors = errors -var _latinAccentChars = _interopRequireDefault(__nccwpck_require__(1012)); + if (typeof Error.captureStackTrace === 'function') { + Error.captureStackTrace(this, this.constructor) + } else { + this.stack = (new Error(message)).stack + } +} -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); +HARError.prototype = Error.prototype -var _validUrlBalancedParens = _interopRequireDefault(__nccwpck_require__(109)); +module.exports = HARError -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -// Valid end-of-path chracters (so /foo. does not gobble the period). -// 1. Allow =&# for empty URL parameters and other URL-join artifacts -var validUrlPathEndingChars = (0, _regexSupplant["default"])(/[\+\-a-z#{cyrillicLettersAndMarks}0-9=_#\/#{latinAccentChars}]|(?:#{validUrlBalancedParens})/i, { - cyrillicLettersAndMarks: _cyrillicLettersAndMarks["default"], - latinAccentChars: _latinAccentChars["default"], - validUrlBalancedParens: _validUrlBalancedParens["default"] -}); -var _default = validUrlPathEndingChars; -exports["default"] = _default; -module.exports = exports.default; /***/ }), +/* 815 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 2814: -/***/ ((module, exports, __nccwpck_require__) => { +module.exports = handlePullRequest; -"use strict"; +const getNewTweets = __webpack_require__(432); +const createCheckRun = __webpack_require__(219); +async function handlePullRequest(state) { + const { octokit, toolkit, payload } = state; -var _interopRequireDefault = __nccwpck_require__(3286); + // ignore builds from branches other than the repository’s defaul branch + const base = payload.pull_request.base.ref; + const defaultBranch = payload.repository.default_branch; + if (defaultBranch !== base) { + return toolkit.info( + `Pull request base "${base}" is not the repository’s default branch` + ); + } -__nccwpck_require__(6880); + // on request errors, log the requset options and error, then end process + octokit.hook.error("request", (error) => { + toolkit.info(error); + toolkit.setFailed(error.stack); + process.exit(); + }); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + const newTweets = await getNewTweets(state); + await createCheckRun(state, newTweets); +} -var _directionalMarkersGroup = _interopRequireDefault(__nccwpck_require__(6138)); -var _invalidCharsGroup = _interopRequireDefault(__nccwpck_require__(1960)); +/***/ }), +/* 816 */, +/* 817 */, +/* 818 */, +/* 819 */, +/* 820 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); +// Works with __proto__ only. Old v8 can't work with null proto objects. +/* eslint-disable no-proto */ +var isObject = __webpack_require__(956); +var anObject = __webpack_require__(990); +var check = function (O, proto) { + anObject(O); + if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!"); +}; +module.exports = { + set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line + function (test, buggy, set) { + try { + set = __webpack_require__(743)(Function.call, __webpack_require__(321).f(Object.prototype, '__proto__').set, 2); + set(test, []); + buggy = !(test instanceof Array); + } catch (e) { buggy = true; } + return function setPrototypeOf(O, proto) { + check(O, proto); + if (buggy) O.__proto__ = proto; + else set(O, proto); + return O; + }; + }({}, false) : undefined), + check: check +}; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validUrlPrecedingChars = (0, _regexSupplant["default"])(/(?:[^A-Za-z0-9@@$###{invalidCharsGroup}]|[#{directionalMarkersGroup}]|^)/, { - invalidCharsGroup: _invalidCharsGroup["default"], - directionalMarkersGroup: _directionalMarkersGroup["default"] -}); -var _default = validUrlPrecedingChars; -exports["default"] = _default; -module.exports = exports.default; /***/ }), - -/***/ 3567: -/***/ ((module, exports, __nccwpck_require__) => { +/* 821 */, +/* 822 */, +/* 823 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -__nccwpck_require__(6880); +var _interopRequireDefault = __webpack_require__(764); -Object.defineProperty(exports, "__esModule", ({ +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { value: true -})); +}); exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validUrlQueryChars = /[a-z0-9!?\*'@\(\);:&=\+\$\/%#\[\]\-_\.,~|]/i; -var _default = validUrlQueryChars; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), - -/***/ 7242: -/***/ ((module, exports, __nccwpck_require__) => { - -"use strict"; +var _invalidDomainChars = _interopRequireDefault(__webpack_require__(265)); -__nccwpck_require__(6880); +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -var validUrlQueryEndingChars = /[a-z0-9\-_&=#\/]/i; -var _default = validUrlQueryEndingChars; +var validDomainChars = (0, _regexSupplant["default"])(/[^#{invalidDomainChars}]/, { + invalidDomainChars: _invalidDomainChars["default"] +}); +var _default = validDomainChars; exports["default"] = _default; module.exports = exports.default; /***/ }), +/* 824 */, +/* 825 */, +/* 826 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 9072: -/***/ ((module, exports, __nccwpck_require__) => { - -"use strict"; - +var rng = __webpack_require__(139); +var bytesToUuid = __webpack_require__(347); -var _interopRequireDefault = __nccwpck_require__(3286); +function v4(options, buf, offset) { + var i = buf && offset || 0; -__nccwpck_require__(6880); + if (typeof(options) == 'string') { + buf = options === 'binary' ? new Array(16) : null; + options = null; + } + options = options || {}; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + var rnds = options.random || (options.rng || rng)(); -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); + // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + rnds[6] = (rnds[6] & 0x0f) | 0x40; + rnds[8] = (rnds[8] & 0x3f) | 0x80; -var _validateUrlUserinfo = _interopRequireDefault(__nccwpck_require__(3026)); + // Copy bytes to buffer, if provided + if (buf) { + for (var ii = 0; ii < 16; ++ii) { + buf[i + ii] = rnds[ii]; + } + } -var _validateUrlHost = _interopRequireDefault(__nccwpck_require__(9888)); + return buf || bytesToUuid(rnds); +} -var _validateUrlPort = _interopRequireDefault(__nccwpck_require__(3077)); +module.exports = v4; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlAuthority = (0, _regexSupplant["default"])( // $1 userinfo -'(?:(#{validateUrlUserinfo})@)?' + // $2 host -'(#{validateUrlHost})' + // $3 port -'(?::(#{validateUrlPort}))?', { - validateUrlUserinfo: _validateUrlUserinfo["default"], - validateUrlHost: _validateUrlHost["default"], - validateUrlPort: _validateUrlPort["default"] -}, 'i'); -var _default = validateUrlAuthority; -exports["default"] = _default; -module.exports = exports.default; /***/ }), - -/***/ 3300: -/***/ ((module, exports, __nccwpck_require__) => { +/* 827 */, +/* 828 */, +/* 829 */, +/* 830 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -__nccwpck_require__(6880); +var _interopRequireDefault = __webpack_require__(764); -Object.defineProperty(exports, "__esModule", ({ +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { value: true -})); -exports["default"] = void 0; +}); +exports["default"] = _default; + +var _splitTags = _interopRequireDefault(__webpack_require__(459)); + // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlDecOctet = /(?:[0-9]|(?:[1-9][0-9])|(?:1[0-9]{2})|(?:2[0-4][0-9])|(?:25[0-5]))/i; -var _default = validateUrlDecOctet; -exports["default"] = _default; -module.exports = exports.default; +function _default(text, hits, options) { + var defaultHighlightTag = 'em'; + hits = hits || []; + options = options || {}; -/***/ }), + if (hits.length === 0) { + return text; + } + + var tagName = options.tag || defaultHighlightTag, + tags = ["<".concat(tagName, ">"), "")], + chunks = (0, _splitTags["default"])(text), + i, + j, + result = '', + chunkIndex = 0, + chunk = chunks[0], + prevChunksLen = 0, + chunkCursor = 0, + startInChunk = false, + chunkChars = chunk, + flatHits = [], + index, + hit, + tag, + placed, + hitSpot; + + for (i = 0; i < hits.length; i += 1) { + for (j = 0; j < hits[i].length; j += 1) { + flatHits.push(hits[i][j]); + } + } -/***/ 6746: -/***/ ((module, exports, __nccwpck_require__) => { + for (index = 0; index < flatHits.length; index += 1) { + hit = flatHits[index]; + tag = tags[index % 2]; + placed = false; -"use strict"; + while (chunk != null && hit >= prevChunksLen + chunk.length) { + result += chunkChars.slice(chunkCursor); + if (startInChunk && hit === prevChunksLen + chunkChars.length) { + result += tag; + placed = true; + } -var _interopRequireDefault = __nccwpck_require__(3286); + if (chunks[chunkIndex + 1]) { + result += "<".concat(chunks[chunkIndex + 1], ">"); + } -__nccwpck_require__(6880); + prevChunksLen += chunkChars.length; + chunkCursor = 0; + chunkIndex += 2; + chunk = chunks[chunkIndex]; + chunkChars = chunk; + startInChunk = false; + } -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + if (!placed && chunk != null) { + hitSpot = hit - prevChunksLen; + result += chunkChars.slice(chunkCursor, hitSpot) + tag; + chunkCursor = hitSpot; -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); + if (index % 2 === 0) { + startInChunk = true; + } else { + startInChunk = false; + } + } else if (!placed) { + placed = true; + result += tag; + } + } -var _validateUrlDomainSegment = _interopRequireDefault(__nccwpck_require__(7985)); + if (chunk != null) { + if (chunkCursor < chunkChars.length) { + result += chunkChars.slice(chunkCursor); + } -var _validateUrlDomainTld = _interopRequireDefault(__nccwpck_require__(6679)); + for (index = chunkIndex + 1; index < chunks.length; index += 1) { + result += index % 2 === 0 ? chunks[index] : "<".concat(chunks[index], ">"); + } + } -var _validateUrlSubDomainSegment = _interopRequireDefault(__nccwpck_require__(2379)); + return result; +} -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlDomain = (0, _regexSupplant["default"])(/(?:(?:#{validateUrlSubDomainSegment}\.)*(?:#{validateUrlDomainSegment}\.)#{validateUrlDomainTld})/i, { - validateUrlSubDomainSegment: _validateUrlSubDomainSegment["default"], - validateUrlDomainSegment: _validateUrlDomainSegment["default"], - validateUrlDomainTld: _validateUrlDomainTld["default"] -}); -var _default = validateUrlDomain; -exports["default"] = _default; module.exports = exports.default; /***/ }), - -/***/ 7985: -/***/ ((module, exports, __nccwpck_require__) => { +/* 831 */, +/* 832 */, +/* 833 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -__nccwpck_require__(6880); +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); -Object.defineProperty(exports, "__esModule", ({ +Object.defineProperty(exports, "__esModule", { value: true -})); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlDomainSegment = /(?:[a-z0-9](?:[a-z0-9\-]*[a-z0-9])?)/i; -var _default = validateUrlDomainSegment; +}); exports["default"] = _default; -module.exports = exports.default; - -/***/ }), - -/***/ 6679: -/***/ ((module, exports, __nccwpck_require__) => { -"use strict"; +var _clone = _interopRequireDefault(__webpack_require__(582)); +var _htmlEscape = _interopRequireDefault(__webpack_require__(63)); -__nccwpck_require__(6880); +var _linkToTextWithSymbol = _interopRequireDefault(__webpack_require__(900)); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; // Copyright 2018 Twitter, Inc. // Licensed under the Apache License, Version 2.0 // http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlDomainTld = /(?:[a-z](?:[a-z0-9\-]*[a-z0-9])?)/i; -var _default = validateUrlDomainTld; -exports["default"] = _default; -module.exports = exports.default; - -/***/ }), - -/***/ 2769: -/***/ ((module, exports, __nccwpck_require__) => { - -"use strict"; +function _default(entity, text, options) { + var cashtag = (0, _htmlEscape["default"])(entity.cashtag); + var attrs = (0, _clone["default"])(options.htmlAttrs || {}); + attrs.href = options.cashtagUrlBase + cashtag; + attrs.title = "$".concat(cashtag); + attrs['class'] = options.cashtagClass; + if (options.targetBlank) { + attrs.target = '_blank'; + } -var _interopRequireDefault = __nccwpck_require__(3286); + return (0, _linkToTextWithSymbol["default"])(entity, '$', cashtag, attrs, options); +} -__nccwpck_require__(6880); +module.exports = exports.default; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; +/***/ }), +/* 834 */, +/* 835 */ +/***/ (function(module) { -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); +module.exports = require("url"); -var _validateUrlPchar = _interopRequireDefault(__nccwpck_require__(2322)); +/***/ }), +/* 836 */, +/* 837 */, +/* 838 */, +/* 839 */, +/* 840 */, +/* 841 */ +/***/ (function(module) { -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlFragment = (0, _regexSupplant["default"])(/(#{validateUrlPchar}|\/|\?)*/i, { - validateUrlPchar: _validateUrlPchar["default"] -}); -var _default = validateUrlFragment; -exports["default"] = _default; -module.exports = exports.default; +module.exports = {"$id":"header.json#","$schema":"http://json-schema.org/draft-06/schema#","type":"object","required":["name","value"],"properties":{"name":{"type":"string"},"value":{"type":"string"},"comment":{"type":"string"}}}; /***/ }), +/* 842 */ +/***/ (function(__unusedmodule, exports) { + +"use strict"; -/***/ 9888: -/***/ ((module, exports, __nccwpck_require__) => { -"use strict"; +Object.defineProperty(exports, '__esModule', { value: true }); + +const Endpoints = { + actions: { + addCustomLabelsToSelfHostedRunnerForOrg: ["POST /orgs/{org}/actions/runners/{runner_id}/labels"], + addCustomLabelsToSelfHostedRunnerForRepo: ["POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"], + addSelectedRepoToOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"], + approveWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"], + cancelWorkflowRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"], + createOrUpdateEnvironmentSecret: ["PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"], + createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"], + createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"], + createRegistrationTokenForOrg: ["POST /orgs/{org}/actions/runners/registration-token"], + createRegistrationTokenForRepo: ["POST /repos/{owner}/{repo}/actions/runners/registration-token"], + createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"], + createRemoveTokenForRepo: ["POST /repos/{owner}/{repo}/actions/runners/remove-token"], + createWorkflowDispatch: ["POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"], + deleteActionsCacheById: ["DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"], + deleteActionsCacheByKey: ["DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"], + deleteArtifact: ["DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"], + deleteEnvironmentSecret: ["DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"], + deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"], + deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"], + deleteSelfHostedRunnerFromOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}"], + deleteSelfHostedRunnerFromRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"], + deleteWorkflowRun: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"], + deleteWorkflowRunLogs: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"], + disableSelectedRepositoryGithubActionsOrganization: ["DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"], + disableWorkflow: ["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"], + downloadArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"], + downloadJobLogsForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"], + downloadWorkflowRunAttemptLogs: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs"], + downloadWorkflowRunLogs: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"], + enableSelectedRepositoryGithubActionsOrganization: ["PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"], + enableWorkflow: ["PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"], + getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"], + getActionsCacheUsage: ["GET /repos/{owner}/{repo}/actions/cache/usage"], + getActionsCacheUsageByRepoForOrg: ["GET /orgs/{org}/actions/cache/usage-by-repository"], + getActionsCacheUsageForEnterprise: ["GET /enterprises/{enterprise}/actions/cache/usage"], + getActionsCacheUsageForOrg: ["GET /orgs/{org}/actions/cache/usage"], + getAllowedActionsOrganization: ["GET /orgs/{org}/actions/permissions/selected-actions"], + getAllowedActionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions/selected-actions"], + getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"], + getEnvironmentPublicKey: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key"], + getEnvironmentSecret: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"], + getGithubActionsDefaultWorkflowPermissionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/workflow"], + getGithubActionsDefaultWorkflowPermissionsOrganization: ["GET /orgs/{org}/actions/permissions/workflow"], + getGithubActionsDefaultWorkflowPermissionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions/workflow"], + getGithubActionsPermissionsOrganization: ["GET /orgs/{org}/actions/permissions"], + getGithubActionsPermissionsRepository: ["GET /repos/{owner}/{repo}/actions/permissions"], + getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"], + getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"], + getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"], + getPendingDeploymentsForRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"], + getRepoPermissions: ["GET /repos/{owner}/{repo}/actions/permissions", {}, { + renamed: ["actions", "getGithubActionsPermissionsRepository"] + }], + getRepoPublicKey: ["GET /repos/{owner}/{repo}/actions/secrets/public-key"], + getRepoSecret: ["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"], + getReviewsForRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"], + getSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}"], + getSelfHostedRunnerForRepo: ["GET /repos/{owner}/{repo}/actions/runners/{runner_id}"], + getWorkflow: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"], + getWorkflowAccessToRepository: ["GET /repos/{owner}/{repo}/actions/permissions/access"], + getWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}"], + getWorkflowRunAttempt: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}"], + getWorkflowRunUsage: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"], + getWorkflowUsage: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"], + listArtifactsForRepo: ["GET /repos/{owner}/{repo}/actions/artifacts"], + listEnvironmentSecrets: ["GET /repositories/{repository_id}/environments/{environment_name}/secrets"], + listJobsForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"], + listJobsForWorkflowRunAttempt: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"], + listLabelsForSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}/labels"], + listLabelsForSelfHostedRunnerForRepo: ["GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"], + listOrgSecrets: ["GET /orgs/{org}/actions/secrets"], + listRepoSecrets: ["GET /repos/{owner}/{repo}/actions/secrets"], + listRepoWorkflows: ["GET /repos/{owner}/{repo}/actions/workflows"], + listRunnerApplicationsForOrg: ["GET /orgs/{org}/actions/runners/downloads"], + listRunnerApplicationsForRepo: ["GET /repos/{owner}/{repo}/actions/runners/downloads"], + listSelectedReposForOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}/repositories"], + listSelectedRepositoriesEnabledGithubActionsOrganization: ["GET /orgs/{org}/actions/permissions/repositories"], + listSelfHostedRunnersForOrg: ["GET /orgs/{org}/actions/runners"], + listSelfHostedRunnersForRepo: ["GET /repos/{owner}/{repo}/actions/runners"], + listWorkflowRunArtifacts: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"], + listWorkflowRuns: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"], + listWorkflowRunsForRepo: ["GET /repos/{owner}/{repo}/actions/runs"], + reRunJobForWorkflowRun: ["POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"], + reRunWorkflow: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"], + reRunWorkflowFailedJobs: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs"], + removeAllCustomLabelsFromSelfHostedRunnerForOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}/labels"], + removeAllCustomLabelsFromSelfHostedRunnerForRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"], + removeCustomLabelFromSelfHostedRunnerForOrg: ["DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}"], + removeCustomLabelFromSelfHostedRunnerForRepo: ["DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"], + removeSelectedRepoFromOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"], + reviewPendingDeploymentsForRun: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"], + setAllowedActionsOrganization: ["PUT /orgs/{org}/actions/permissions/selected-actions"], + setAllowedActionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"], + setCustomLabelsForSelfHostedRunnerForOrg: ["PUT /orgs/{org}/actions/runners/{runner_id}/labels"], + setCustomLabelsForSelfHostedRunnerForRepo: ["PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"], + setGithubActionsDefaultWorkflowPermissionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/workflow"], + setGithubActionsDefaultWorkflowPermissionsOrganization: ["PUT /orgs/{org}/actions/permissions/workflow"], + setGithubActionsDefaultWorkflowPermissionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/workflow"], + setGithubActionsPermissionsOrganization: ["PUT /orgs/{org}/actions/permissions"], + setGithubActionsPermissionsRepository: ["PUT /repos/{owner}/{repo}/actions/permissions"], + setSelectedReposForOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"], + setSelectedRepositoriesEnabledGithubActionsOrganization: ["PUT /orgs/{org}/actions/permissions/repositories"], + setWorkflowAccessToRepository: ["PUT /repos/{owner}/{repo}/actions/permissions/access"] + }, + activity: { + checkRepoIsStarredByAuthenticatedUser: ["GET /user/starred/{owner}/{repo}"], + deleteRepoSubscription: ["DELETE /repos/{owner}/{repo}/subscription"], + deleteThreadSubscription: ["DELETE /notifications/threads/{thread_id}/subscription"], + getFeeds: ["GET /feeds"], + getRepoSubscription: ["GET /repos/{owner}/{repo}/subscription"], + getThread: ["GET /notifications/threads/{thread_id}"], + getThreadSubscriptionForAuthenticatedUser: ["GET /notifications/threads/{thread_id}/subscription"], + listEventsForAuthenticatedUser: ["GET /users/{username}/events"], + listNotificationsForAuthenticatedUser: ["GET /notifications"], + listOrgEventsForAuthenticatedUser: ["GET /users/{username}/events/orgs/{org}"], + listPublicEvents: ["GET /events"], + listPublicEventsForRepoNetwork: ["GET /networks/{owner}/{repo}/events"], + listPublicEventsForUser: ["GET /users/{username}/events/public"], + listPublicOrgEvents: ["GET /orgs/{org}/events"], + listReceivedEventsForUser: ["GET /users/{username}/received_events"], + listReceivedPublicEventsForUser: ["GET /users/{username}/received_events/public"], + listRepoEvents: ["GET /repos/{owner}/{repo}/events"], + listRepoNotificationsForAuthenticatedUser: ["GET /repos/{owner}/{repo}/notifications"], + listReposStarredByAuthenticatedUser: ["GET /user/starred"], + listReposStarredByUser: ["GET /users/{username}/starred"], + listReposWatchedByUser: ["GET /users/{username}/subscriptions"], + listStargazersForRepo: ["GET /repos/{owner}/{repo}/stargazers"], + listWatchedReposForAuthenticatedUser: ["GET /user/subscriptions"], + listWatchersForRepo: ["GET /repos/{owner}/{repo}/subscribers"], + markNotificationsAsRead: ["PUT /notifications"], + markRepoNotificationsAsRead: ["PUT /repos/{owner}/{repo}/notifications"], + markThreadAsRead: ["PATCH /notifications/threads/{thread_id}"], + setRepoSubscription: ["PUT /repos/{owner}/{repo}/subscription"], + setThreadSubscription: ["PUT /notifications/threads/{thread_id}/subscription"], + starRepoForAuthenticatedUser: ["PUT /user/starred/{owner}/{repo}"], + unstarRepoForAuthenticatedUser: ["DELETE /user/starred/{owner}/{repo}"] + }, + apps: { + addRepoToInstallation: ["PUT /user/installations/{installation_id}/repositories/{repository_id}", {}, { + renamed: ["apps", "addRepoToInstallationForAuthenticatedUser"] + }], + addRepoToInstallationForAuthenticatedUser: ["PUT /user/installations/{installation_id}/repositories/{repository_id}"], + checkToken: ["POST /applications/{client_id}/token"], + createFromManifest: ["POST /app-manifests/{code}/conversions"], + createInstallationAccessToken: ["POST /app/installations/{installation_id}/access_tokens"], + deleteAuthorization: ["DELETE /applications/{client_id}/grant"], + deleteInstallation: ["DELETE /app/installations/{installation_id}"], + deleteToken: ["DELETE /applications/{client_id}/token"], + getAuthenticated: ["GET /app"], + getBySlug: ["GET /apps/{app_slug}"], + getInstallation: ["GET /app/installations/{installation_id}"], + getOrgInstallation: ["GET /orgs/{org}/installation"], + getRepoInstallation: ["GET /repos/{owner}/{repo}/installation"], + getSubscriptionPlanForAccount: ["GET /marketplace_listing/accounts/{account_id}"], + getSubscriptionPlanForAccountStubbed: ["GET /marketplace_listing/stubbed/accounts/{account_id}"], + getUserInstallation: ["GET /users/{username}/installation"], + getWebhookConfigForApp: ["GET /app/hook/config"], + getWebhookDelivery: ["GET /app/hook/deliveries/{delivery_id}"], + listAccountsForPlan: ["GET /marketplace_listing/plans/{plan_id}/accounts"], + listAccountsForPlanStubbed: ["GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"], + listInstallationReposForAuthenticatedUser: ["GET /user/installations/{installation_id}/repositories"], + listInstallations: ["GET /app/installations"], + listInstallationsForAuthenticatedUser: ["GET /user/installations"], + listPlans: ["GET /marketplace_listing/plans"], + listPlansStubbed: ["GET /marketplace_listing/stubbed/plans"], + listReposAccessibleToInstallation: ["GET /installation/repositories"], + listSubscriptionsForAuthenticatedUser: ["GET /user/marketplace_purchases"], + listSubscriptionsForAuthenticatedUserStubbed: ["GET /user/marketplace_purchases/stubbed"], + listWebhookDeliveries: ["GET /app/hook/deliveries"], + redeliverWebhookDelivery: ["POST /app/hook/deliveries/{delivery_id}/attempts"], + removeRepoFromInstallation: ["DELETE /user/installations/{installation_id}/repositories/{repository_id}", {}, { + renamed: ["apps", "removeRepoFromInstallationForAuthenticatedUser"] + }], + removeRepoFromInstallationForAuthenticatedUser: ["DELETE /user/installations/{installation_id}/repositories/{repository_id}"], + resetToken: ["PATCH /applications/{client_id}/token"], + revokeInstallationAccessToken: ["DELETE /installation/token"], + scopeToken: ["POST /applications/{client_id}/token/scoped"], + suspendInstallation: ["PUT /app/installations/{installation_id}/suspended"], + unsuspendInstallation: ["DELETE /app/installations/{installation_id}/suspended"], + updateWebhookConfigForApp: ["PATCH /app/hook/config"] + }, + billing: { + getGithubActionsBillingOrg: ["GET /orgs/{org}/settings/billing/actions"], + getGithubActionsBillingUser: ["GET /users/{username}/settings/billing/actions"], + getGithubAdvancedSecurityBillingGhe: ["GET /enterprises/{enterprise}/settings/billing/advanced-security"], + getGithubAdvancedSecurityBillingOrg: ["GET /orgs/{org}/settings/billing/advanced-security"], + getGithubPackagesBillingOrg: ["GET /orgs/{org}/settings/billing/packages"], + getGithubPackagesBillingUser: ["GET /users/{username}/settings/billing/packages"], + getSharedStorageBillingOrg: ["GET /orgs/{org}/settings/billing/shared-storage"], + getSharedStorageBillingUser: ["GET /users/{username}/settings/billing/shared-storage"] + }, + checks: { + create: ["POST /repos/{owner}/{repo}/check-runs"], + createSuite: ["POST /repos/{owner}/{repo}/check-suites"], + get: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"], + getSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"], + listAnnotations: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"], + listForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"], + listForSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"], + listSuitesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"], + rerequestRun: ["POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"], + rerequestSuite: ["POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"], + setSuitesPreferences: ["PATCH /repos/{owner}/{repo}/check-suites/preferences"], + update: ["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"] + }, + codeScanning: { + deleteAnalysis: ["DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}"], + getAlert: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}", {}, { + renamedParameters: { + alert_id: "alert_number" + } + }], + getAnalysis: ["GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"], + getSarif: ["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"], + listAlertInstances: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"], + listAlertsForEnterprise: ["GET /enterprises/{enterprise}/code-scanning/alerts"], + listAlertsForOrg: ["GET /orgs/{org}/code-scanning/alerts"], + listAlertsForRepo: ["GET /repos/{owner}/{repo}/code-scanning/alerts"], + listAlertsInstances: ["GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", {}, { + renamed: ["codeScanning", "listAlertInstances"] + }], + listRecentAnalyses: ["GET /repos/{owner}/{repo}/code-scanning/analyses"], + updateAlert: ["PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"], + uploadSarif: ["POST /repos/{owner}/{repo}/code-scanning/sarifs"] + }, + codesOfConduct: { + getAllCodesOfConduct: ["GET /codes_of_conduct"], + getConductCode: ["GET /codes_of_conduct/{key}"] + }, + codespaces: { + addRepositoryForSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"], + codespaceMachinesForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}/machines"], + createForAuthenticatedUser: ["POST /user/codespaces"], + createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"], + createOrUpdateSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}"], + createWithPrForAuthenticatedUser: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"], + createWithRepoForAuthenticatedUser: ["POST /repos/{owner}/{repo}/codespaces"], + deleteForAuthenticatedUser: ["DELETE /user/codespaces/{codespace_name}"], + deleteFromOrganization: ["DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"], + deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"], + deleteSecretForAuthenticatedUser: ["DELETE /user/codespaces/secrets/{secret_name}"], + exportForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/exports"], + getExportDetailsForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}/exports/{export_id}"], + getForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}"], + getPublicKeyForAuthenticatedUser: ["GET /user/codespaces/secrets/public-key"], + getRepoPublicKey: ["GET /repos/{owner}/{repo}/codespaces/secrets/public-key"], + getRepoSecret: ["GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"], + getSecretForAuthenticatedUser: ["GET /user/codespaces/secrets/{secret_name}"], + listDevcontainersInRepositoryForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/devcontainers"], + listForAuthenticatedUser: ["GET /user/codespaces"], + listInOrganization: ["GET /orgs/{org}/codespaces", {}, { + renamedParameters: { + org_id: "org" + } + }], + listInRepositoryForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces"], + listRepoSecrets: ["GET /repos/{owner}/{repo}/codespaces/secrets"], + listRepositoriesForSecretForAuthenticatedUser: ["GET /user/codespaces/secrets/{secret_name}/repositories"], + listSecretsForAuthenticatedUser: ["GET /user/codespaces/secrets"], + preFlightWithRepoForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/new"], + removeRepositoryForSecretForAuthenticatedUser: ["DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"], + repoMachinesForAuthenticatedUser: ["GET /repos/{owner}/{repo}/codespaces/machines"], + setRepositoriesForSecretForAuthenticatedUser: ["PUT /user/codespaces/secrets/{secret_name}/repositories"], + startForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/start"], + stopForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/stop"], + stopInOrganization: ["POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"], + updateForAuthenticatedUser: ["PATCH /user/codespaces/{codespace_name}"] + }, + dependabot: { + addSelectedRepoToOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"], + createOrUpdateOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}"], + createOrUpdateRepoSecret: ["PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"], + deleteOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"], + deleteRepoSecret: ["DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"], + getOrgPublicKey: ["GET /orgs/{org}/dependabot/secrets/public-key"], + getOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}"], + getRepoPublicKey: ["GET /repos/{owner}/{repo}/dependabot/secrets/public-key"], + getRepoSecret: ["GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"], + listOrgSecrets: ["GET /orgs/{org}/dependabot/secrets"], + listRepoSecrets: ["GET /repos/{owner}/{repo}/dependabot/secrets"], + listSelectedReposForOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"], + removeSelectedRepoFromOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"], + setSelectedReposForOrgSecret: ["PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"] + }, + dependencyGraph: { + createRepositorySnapshot: ["POST /repos/{owner}/{repo}/dependency-graph/snapshots"], + diffRange: ["GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"] + }, + emojis: { + get: ["GET /emojis"] + }, + enterpriseAdmin: { + addCustomLabelsToSelfHostedRunnerForEnterprise: ["POST /enterprises/{enterprise}/actions/runners/{runner_id}/labels"], + disableSelectedOrganizationGithubActionsEnterprise: ["DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id}"], + enableSelectedOrganizationGithubActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id}"], + getAllowedActionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/selected-actions"], + getGithubActionsPermissionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions"], + getServerStatistics: ["GET /enterprise-installation/{enterprise_or_org}/server-statistics"], + listLabelsForSelfHostedRunnerForEnterprise: ["GET /enterprises/{enterprise}/actions/runners/{runner_id}/labels"], + listSelectedOrganizationsEnabledGithubActionsEnterprise: ["GET /enterprises/{enterprise}/actions/permissions/organizations"], + removeAllCustomLabelsFromSelfHostedRunnerForEnterprise: ["DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels"], + removeCustomLabelFromSelfHostedRunnerForEnterprise: ["DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels/{name}"], + setAllowedActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/selected-actions"], + setCustomLabelsForSelfHostedRunnerForEnterprise: ["PUT /enterprises/{enterprise}/actions/runners/{runner_id}/labels"], + setGithubActionsPermissionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions"], + setSelectedOrganizationsEnabledGithubActionsEnterprise: ["PUT /enterprises/{enterprise}/actions/permissions/organizations"] + }, + gists: { + checkIsStarred: ["GET /gists/{gist_id}/star"], + create: ["POST /gists"], + createComment: ["POST /gists/{gist_id}/comments"], + delete: ["DELETE /gists/{gist_id}"], + deleteComment: ["DELETE /gists/{gist_id}/comments/{comment_id}"], + fork: ["POST /gists/{gist_id}/forks"], + get: ["GET /gists/{gist_id}"], + getComment: ["GET /gists/{gist_id}/comments/{comment_id}"], + getRevision: ["GET /gists/{gist_id}/{sha}"], + list: ["GET /gists"], + listComments: ["GET /gists/{gist_id}/comments"], + listCommits: ["GET /gists/{gist_id}/commits"], + listForUser: ["GET /users/{username}/gists"], + listForks: ["GET /gists/{gist_id}/forks"], + listPublic: ["GET /gists/public"], + listStarred: ["GET /gists/starred"], + star: ["PUT /gists/{gist_id}/star"], + unstar: ["DELETE /gists/{gist_id}/star"], + update: ["PATCH /gists/{gist_id}"], + updateComment: ["PATCH /gists/{gist_id}/comments/{comment_id}"] + }, + git: { + createBlob: ["POST /repos/{owner}/{repo}/git/blobs"], + createCommit: ["POST /repos/{owner}/{repo}/git/commits"], + createRef: ["POST /repos/{owner}/{repo}/git/refs"], + createTag: ["POST /repos/{owner}/{repo}/git/tags"], + createTree: ["POST /repos/{owner}/{repo}/git/trees"], + deleteRef: ["DELETE /repos/{owner}/{repo}/git/refs/{ref}"], + getBlob: ["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"], + getCommit: ["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"], + getRef: ["GET /repos/{owner}/{repo}/git/ref/{ref}"], + getTag: ["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"], + getTree: ["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"], + listMatchingRefs: ["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"], + updateRef: ["PATCH /repos/{owner}/{repo}/git/refs/{ref}"] + }, + gitignore: { + getAllTemplates: ["GET /gitignore/templates"], + getTemplate: ["GET /gitignore/templates/{name}"] + }, + interactions: { + getRestrictionsForAuthenticatedUser: ["GET /user/interaction-limits"], + getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"], + getRestrictionsForRepo: ["GET /repos/{owner}/{repo}/interaction-limits"], + getRestrictionsForYourPublicRepos: ["GET /user/interaction-limits", {}, { + renamed: ["interactions", "getRestrictionsForAuthenticatedUser"] + }], + removeRestrictionsForAuthenticatedUser: ["DELETE /user/interaction-limits"], + removeRestrictionsForOrg: ["DELETE /orgs/{org}/interaction-limits"], + removeRestrictionsForRepo: ["DELETE /repos/{owner}/{repo}/interaction-limits"], + removeRestrictionsForYourPublicRepos: ["DELETE /user/interaction-limits", {}, { + renamed: ["interactions", "removeRestrictionsForAuthenticatedUser"] + }], + setRestrictionsForAuthenticatedUser: ["PUT /user/interaction-limits"], + setRestrictionsForOrg: ["PUT /orgs/{org}/interaction-limits"], + setRestrictionsForRepo: ["PUT /repos/{owner}/{repo}/interaction-limits"], + setRestrictionsForYourPublicRepos: ["PUT /user/interaction-limits", {}, { + renamed: ["interactions", "setRestrictionsForAuthenticatedUser"] + }] + }, + issues: { + addAssignees: ["POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"], + addLabels: ["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"], + checkUserCanBeAssigned: ["GET /repos/{owner}/{repo}/assignees/{assignee}"], + create: ["POST /repos/{owner}/{repo}/issues"], + createComment: ["POST /repos/{owner}/{repo}/issues/{issue_number}/comments"], + createLabel: ["POST /repos/{owner}/{repo}/labels"], + createMilestone: ["POST /repos/{owner}/{repo}/milestones"], + deleteComment: ["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"], + deleteLabel: ["DELETE /repos/{owner}/{repo}/labels/{name}"], + deleteMilestone: ["DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"], + get: ["GET /repos/{owner}/{repo}/issues/{issue_number}"], + getComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"], + getEvent: ["GET /repos/{owner}/{repo}/issues/events/{event_id}"], + getLabel: ["GET /repos/{owner}/{repo}/labels/{name}"], + getMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}"], + list: ["GET /issues"], + listAssignees: ["GET /repos/{owner}/{repo}/assignees"], + listComments: ["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"], + listCommentsForRepo: ["GET /repos/{owner}/{repo}/issues/comments"], + listEvents: ["GET /repos/{owner}/{repo}/issues/{issue_number}/events"], + listEventsForRepo: ["GET /repos/{owner}/{repo}/issues/events"], + listEventsForTimeline: ["GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"], + listForAuthenticatedUser: ["GET /user/issues"], + listForOrg: ["GET /orgs/{org}/issues"], + listForRepo: ["GET /repos/{owner}/{repo}/issues"], + listLabelsForMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"], + listLabelsForRepo: ["GET /repos/{owner}/{repo}/labels"], + listLabelsOnIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/labels"], + listMilestones: ["GET /repos/{owner}/{repo}/milestones"], + lock: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"], + removeAllLabels: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"], + removeAssignees: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"], + removeLabel: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"], + setLabels: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"], + unlock: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"], + update: ["PATCH /repos/{owner}/{repo}/issues/{issue_number}"], + updateComment: ["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"], + updateLabel: ["PATCH /repos/{owner}/{repo}/labels/{name}"], + updateMilestone: ["PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"] + }, + licenses: { + get: ["GET /licenses/{license}"], + getAllCommonlyUsed: ["GET /licenses"], + getForRepo: ["GET /repos/{owner}/{repo}/license"] + }, + markdown: { + render: ["POST /markdown"], + renderRaw: ["POST /markdown/raw", { + headers: { + "content-type": "text/plain; charset=utf-8" + } + }] + }, + meta: { + get: ["GET /meta"], + getOctocat: ["GET /octocat"], + getZen: ["GET /zen"], + root: ["GET /"] + }, + migrations: { + cancelImport: ["DELETE /repos/{owner}/{repo}/import"], + deleteArchiveForAuthenticatedUser: ["DELETE /user/migrations/{migration_id}/archive"], + deleteArchiveForOrg: ["DELETE /orgs/{org}/migrations/{migration_id}/archive"], + downloadArchiveForOrg: ["GET /orgs/{org}/migrations/{migration_id}/archive"], + getArchiveForAuthenticatedUser: ["GET /user/migrations/{migration_id}/archive"], + getCommitAuthors: ["GET /repos/{owner}/{repo}/import/authors"], + getImportStatus: ["GET /repos/{owner}/{repo}/import"], + getLargeFiles: ["GET /repos/{owner}/{repo}/import/large_files"], + getStatusForAuthenticatedUser: ["GET /user/migrations/{migration_id}"], + getStatusForOrg: ["GET /orgs/{org}/migrations/{migration_id}"], + listForAuthenticatedUser: ["GET /user/migrations"], + listForOrg: ["GET /orgs/{org}/migrations"], + listReposForAuthenticatedUser: ["GET /user/migrations/{migration_id}/repositories"], + listReposForOrg: ["GET /orgs/{org}/migrations/{migration_id}/repositories"], + listReposForUser: ["GET /user/migrations/{migration_id}/repositories", {}, { + renamed: ["migrations", "listReposForAuthenticatedUser"] + }], + mapCommitAuthor: ["PATCH /repos/{owner}/{repo}/import/authors/{author_id}"], + setLfsPreference: ["PATCH /repos/{owner}/{repo}/import/lfs"], + startForAuthenticatedUser: ["POST /user/migrations"], + startForOrg: ["POST /orgs/{org}/migrations"], + startImport: ["PUT /repos/{owner}/{repo}/import"], + unlockRepoForAuthenticatedUser: ["DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"], + unlockRepoForOrg: ["DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"], + updateImport: ["PATCH /repos/{owner}/{repo}/import"] + }, + orgs: { + addSecurityManagerTeam: ["PUT /orgs/{org}/security-managers/teams/{team_slug}"], + blockUser: ["PUT /orgs/{org}/blocks/{username}"], + cancelInvitation: ["DELETE /orgs/{org}/invitations/{invitation_id}"], + checkBlockedUser: ["GET /orgs/{org}/blocks/{username}"], + checkMembershipForUser: ["GET /orgs/{org}/members/{username}"], + checkPublicMembershipForUser: ["GET /orgs/{org}/public_members/{username}"], + convertMemberToOutsideCollaborator: ["PUT /orgs/{org}/outside_collaborators/{username}"], + createCustomRole: ["POST /orgs/{org}/custom_roles"], + createInvitation: ["POST /orgs/{org}/invitations"], + createWebhook: ["POST /orgs/{org}/hooks"], + deleteCustomRole: ["DELETE /orgs/{org}/custom_roles/{role_id}"], + deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"], + enableOrDisableSecurityProductOnAllOrgRepos: ["POST /orgs/{org}/{security_product}/{enablement}"], + get: ["GET /orgs/{org}"], + getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"], + getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"], + getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"], + getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"], + getWebhookDelivery: ["GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"], + list: ["GET /organizations"], + listAppInstallations: ["GET /orgs/{org}/installations"], + listBlockedUsers: ["GET /orgs/{org}/blocks"], + listCustomRoles: ["GET /organizations/{organization_id}/custom_roles"], + listFailedInvitations: ["GET /orgs/{org}/failed_invitations"], + listFineGrainedPermissions: ["GET /orgs/{org}/fine_grained_permissions"], + listForAuthenticatedUser: ["GET /user/orgs"], + listForUser: ["GET /users/{username}/orgs"], + listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"], + listMembers: ["GET /orgs/{org}/members"], + listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"], + listOutsideCollaborators: ["GET /orgs/{org}/outside_collaborators"], + listPendingInvitations: ["GET /orgs/{org}/invitations"], + listPublicMembers: ["GET /orgs/{org}/public_members"], + listSecurityManagerTeams: ["GET /orgs/{org}/security-managers"], + listWebhookDeliveries: ["GET /orgs/{org}/hooks/{hook_id}/deliveries"], + listWebhooks: ["GET /orgs/{org}/hooks"], + pingWebhook: ["POST /orgs/{org}/hooks/{hook_id}/pings"], + redeliverWebhookDelivery: ["POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"], + removeMember: ["DELETE /orgs/{org}/members/{username}"], + removeMembershipForUser: ["DELETE /orgs/{org}/memberships/{username}"], + removeOutsideCollaborator: ["DELETE /orgs/{org}/outside_collaborators/{username}"], + removePublicMembershipForAuthenticatedUser: ["DELETE /orgs/{org}/public_members/{username}"], + removeSecurityManagerTeam: ["DELETE /orgs/{org}/security-managers/teams/{team_slug}"], + setMembershipForUser: ["PUT /orgs/{org}/memberships/{username}"], + setPublicMembershipForAuthenticatedUser: ["PUT /orgs/{org}/public_members/{username}"], + unblockUser: ["DELETE /orgs/{org}/blocks/{username}"], + update: ["PATCH /orgs/{org}"], + updateCustomRole: ["PATCH /orgs/{org}/custom_roles/{role_id}"], + updateMembershipForAuthenticatedUser: ["PATCH /user/memberships/orgs/{org}"], + updateWebhook: ["PATCH /orgs/{org}/hooks/{hook_id}"], + updateWebhookConfigForOrg: ["PATCH /orgs/{org}/hooks/{hook_id}/config"] + }, + packages: { + deletePackageForAuthenticatedUser: ["DELETE /user/packages/{package_type}/{package_name}"], + deletePackageForOrg: ["DELETE /orgs/{org}/packages/{package_type}/{package_name}"], + deletePackageForUser: ["DELETE /users/{username}/packages/{package_type}/{package_name}"], + deletePackageVersionForAuthenticatedUser: ["DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}"], + deletePackageVersionForOrg: ["DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"], + deletePackageVersionForUser: ["DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"], + getAllPackageVersionsForAPackageOwnedByAnOrg: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions", {}, { + renamed: ["packages", "getAllPackageVersionsForPackageOwnedByOrg"] + }], + getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions", {}, { + renamed: ["packages", "getAllPackageVersionsForPackageOwnedByAuthenticatedUser"] + }], + getAllPackageVersionsForPackageOwnedByAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions"], + getAllPackageVersionsForPackageOwnedByOrg: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions"], + getAllPackageVersionsForPackageOwnedByUser: ["GET /users/{username}/packages/{package_type}/{package_name}/versions"], + getPackageForAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}"], + getPackageForOrganization: ["GET /orgs/{org}/packages/{package_type}/{package_name}"], + getPackageForUser: ["GET /users/{username}/packages/{package_type}/{package_name}"], + getPackageVersionForAuthenticatedUser: ["GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}"], + getPackageVersionForOrganization: ["GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"], + getPackageVersionForUser: ["GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"], + listPackagesForAuthenticatedUser: ["GET /user/packages"], + listPackagesForOrganization: ["GET /orgs/{org}/packages"], + listPackagesForUser: ["GET /users/{username}/packages"], + restorePackageForAuthenticatedUser: ["POST /user/packages/{package_type}/{package_name}/restore{?token}"], + restorePackageForOrg: ["POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}"], + restorePackageForUser: ["POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}"], + restorePackageVersionForAuthenticatedUser: ["POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"], + restorePackageVersionForOrg: ["POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"], + restorePackageVersionForUser: ["POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"] + }, + projects: { + addCollaborator: ["PUT /projects/{project_id}/collaborators/{username}"], + createCard: ["POST /projects/columns/{column_id}/cards"], + createColumn: ["POST /projects/{project_id}/columns"], + createForAuthenticatedUser: ["POST /user/projects"], + createForOrg: ["POST /orgs/{org}/projects"], + createForRepo: ["POST /repos/{owner}/{repo}/projects"], + delete: ["DELETE /projects/{project_id}"], + deleteCard: ["DELETE /projects/columns/cards/{card_id}"], + deleteColumn: ["DELETE /projects/columns/{column_id}"], + get: ["GET /projects/{project_id}"], + getCard: ["GET /projects/columns/cards/{card_id}"], + getColumn: ["GET /projects/columns/{column_id}"], + getPermissionForUser: ["GET /projects/{project_id}/collaborators/{username}/permission"], + listCards: ["GET /projects/columns/{column_id}/cards"], + listCollaborators: ["GET /projects/{project_id}/collaborators"], + listColumns: ["GET /projects/{project_id}/columns"], + listForOrg: ["GET /orgs/{org}/projects"], + listForRepo: ["GET /repos/{owner}/{repo}/projects"], + listForUser: ["GET /users/{username}/projects"], + moveCard: ["POST /projects/columns/cards/{card_id}/moves"], + moveColumn: ["POST /projects/columns/{column_id}/moves"], + removeCollaborator: ["DELETE /projects/{project_id}/collaborators/{username}"], + update: ["PATCH /projects/{project_id}"], + updateCard: ["PATCH /projects/columns/cards/{card_id}"], + updateColumn: ["PATCH /projects/columns/{column_id}"] + }, + pulls: { + checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"], + create: ["POST /repos/{owner}/{repo}/pulls"], + createReplyForReviewComment: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"], + createReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], + createReviewComment: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"], + deletePendingReview: ["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"], + deleteReviewComment: ["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"], + dismissReview: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"], + get: ["GET /repos/{owner}/{repo}/pulls/{pull_number}"], + getReview: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"], + getReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"], + list: ["GET /repos/{owner}/{repo}/pulls"], + listCommentsForReview: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"], + listCommits: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"], + listFiles: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"], + listRequestedReviewers: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"], + listReviewComments: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"], + listReviewCommentsForRepo: ["GET /repos/{owner}/{repo}/pulls/comments"], + listReviews: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"], + merge: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"], + removeRequestedReviewers: ["DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"], + requestReviewers: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"], + submitReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"], + update: ["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"], + updateBranch: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"], + updateReview: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"], + updateReviewComment: ["PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"] + }, + rateLimit: { + get: ["GET /rate_limit"] + }, + reactions: { + createForCommitComment: ["POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"], + createForIssue: ["POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"], + createForIssueComment: ["POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"], + createForPullRequestReviewComment: ["POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"], + createForRelease: ["POST /repos/{owner}/{repo}/releases/{release_id}/reactions"], + createForTeamDiscussionCommentInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"], + createForTeamDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"], + deleteForCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"], + deleteForIssue: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"], + deleteForIssueComment: ["DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"], + deleteForPullRequestComment: ["DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"], + deleteForRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}"], + deleteForTeamDiscussion: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"], + deleteForTeamDiscussionComment: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"], + listForCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"], + listForIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"], + listForIssueComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"], + listForPullRequestReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"], + listForRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}/reactions"], + listForTeamDiscussionCommentInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"], + listForTeamDiscussionInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"] + }, + repos: { + acceptInvitation: ["PATCH /user/repository_invitations/{invitation_id}", {}, { + renamed: ["repos", "acceptInvitationForAuthenticatedUser"] + }], + acceptInvitationForAuthenticatedUser: ["PATCH /user/repository_invitations/{invitation_id}"], + addAppAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, { + mapToData: "apps" + }], + addCollaborator: ["PUT /repos/{owner}/{repo}/collaborators/{username}"], + addStatusCheckContexts: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, { + mapToData: "contexts" + }], + addTeamAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, { + mapToData: "teams" + }], + addUserAccessRestrictions: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, { + mapToData: "users" + }], + checkCollaborator: ["GET /repos/{owner}/{repo}/collaborators/{username}"], + checkVulnerabilityAlerts: ["GET /repos/{owner}/{repo}/vulnerability-alerts"], + codeownersErrors: ["GET /repos/{owner}/{repo}/codeowners/errors"], + compareCommits: ["GET /repos/{owner}/{repo}/compare/{base}...{head}"], + compareCommitsWithBasehead: ["GET /repos/{owner}/{repo}/compare/{basehead}"], + createAutolink: ["POST /repos/{owner}/{repo}/autolinks"], + createCommitComment: ["POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"], + createCommitSignatureProtection: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"], + createCommitStatus: ["POST /repos/{owner}/{repo}/statuses/{sha}"], + createDeployKey: ["POST /repos/{owner}/{repo}/keys"], + createDeployment: ["POST /repos/{owner}/{repo}/deployments"], + createDeploymentBranchPolicy: ["POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"], + createDeploymentStatus: ["POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"], + createDispatchEvent: ["POST /repos/{owner}/{repo}/dispatches"], + createForAuthenticatedUser: ["POST /user/repos"], + createFork: ["POST /repos/{owner}/{repo}/forks"], + createInOrg: ["POST /orgs/{org}/repos"], + createOrUpdateEnvironment: ["PUT /repos/{owner}/{repo}/environments/{environment_name}"], + createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"], + createPagesDeployment: ["POST /repos/{owner}/{repo}/pages/deployment"], + createPagesSite: ["POST /repos/{owner}/{repo}/pages"], + createRelease: ["POST /repos/{owner}/{repo}/releases"], + createTagProtection: ["POST /repos/{owner}/{repo}/tags/protection"], + createUsingTemplate: ["POST /repos/{template_owner}/{template_repo}/generate"], + createWebhook: ["POST /repos/{owner}/{repo}/hooks"], + declineInvitation: ["DELETE /user/repository_invitations/{invitation_id}", {}, { + renamed: ["repos", "declineInvitationForAuthenticatedUser"] + }], + declineInvitationForAuthenticatedUser: ["DELETE /user/repository_invitations/{invitation_id}"], + delete: ["DELETE /repos/{owner}/{repo}"], + deleteAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"], + deleteAdminBranchProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"], + deleteAnEnvironment: ["DELETE /repos/{owner}/{repo}/environments/{environment_name}"], + deleteAutolink: ["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"], + deleteBranchProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection"], + deleteCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}"], + deleteCommitSignatureProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"], + deleteDeployKey: ["DELETE /repos/{owner}/{repo}/keys/{key_id}"], + deleteDeployment: ["DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"], + deleteDeploymentBranchPolicy: ["DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"], + deleteFile: ["DELETE /repos/{owner}/{repo}/contents/{path}"], + deleteInvitation: ["DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"], + deletePagesSite: ["DELETE /repos/{owner}/{repo}/pages"], + deletePullRequestReviewProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"], + deleteRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}"], + deleteReleaseAsset: ["DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"], + deleteTagProtection: ["DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}"], + deleteWebhook: ["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"], + disableAutomatedSecurityFixes: ["DELETE /repos/{owner}/{repo}/automated-security-fixes"], + disableLfsForRepo: ["DELETE /repos/{owner}/{repo}/lfs"], + disableVulnerabilityAlerts: ["DELETE /repos/{owner}/{repo}/vulnerability-alerts"], + downloadArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}", {}, { + renamed: ["repos", "downloadZipballArchive"] + }], + downloadTarballArchive: ["GET /repos/{owner}/{repo}/tarball/{ref}"], + downloadZipballArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}"], + enableAutomatedSecurityFixes: ["PUT /repos/{owner}/{repo}/automated-security-fixes"], + enableLfsForRepo: ["PUT /repos/{owner}/{repo}/lfs"], + enableVulnerabilityAlerts: ["PUT /repos/{owner}/{repo}/vulnerability-alerts"], + generateReleaseNotes: ["POST /repos/{owner}/{repo}/releases/generate-notes"], + get: ["GET /repos/{owner}/{repo}"], + getAccessRestrictions: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"], + getAdminBranchProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"], + getAllEnvironments: ["GET /repos/{owner}/{repo}/environments"], + getAllStatusCheckContexts: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"], + getAllTopics: ["GET /repos/{owner}/{repo}/topics"], + getAppsWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"], + getAutolink: ["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"], + getBranch: ["GET /repos/{owner}/{repo}/branches/{branch}"], + getBranchProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection"], + getClones: ["GET /repos/{owner}/{repo}/traffic/clones"], + getCodeFrequencyStats: ["GET /repos/{owner}/{repo}/stats/code_frequency"], + getCollaboratorPermissionLevel: ["GET /repos/{owner}/{repo}/collaborators/{username}/permission"], + getCombinedStatusForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/status"], + getCommit: ["GET /repos/{owner}/{repo}/commits/{ref}"], + getCommitActivityStats: ["GET /repos/{owner}/{repo}/stats/commit_activity"], + getCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}"], + getCommitSignatureProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"], + getCommunityProfileMetrics: ["GET /repos/{owner}/{repo}/community/profile"], + getContent: ["GET /repos/{owner}/{repo}/contents/{path}"], + getContributorsStats: ["GET /repos/{owner}/{repo}/stats/contributors"], + getDeployKey: ["GET /repos/{owner}/{repo}/keys/{key_id}"], + getDeployment: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}"], + getDeploymentBranchPolicy: ["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"], + getDeploymentStatus: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"], + getEnvironment: ["GET /repos/{owner}/{repo}/environments/{environment_name}"], + getLatestPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/latest"], + getLatestRelease: ["GET /repos/{owner}/{repo}/releases/latest"], + getPages: ["GET /repos/{owner}/{repo}/pages"], + getPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/{build_id}"], + getPagesHealthCheck: ["GET /repos/{owner}/{repo}/pages/health"], + getParticipationStats: ["GET /repos/{owner}/{repo}/stats/participation"], + getPullRequestReviewProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"], + getPunchCardStats: ["GET /repos/{owner}/{repo}/stats/punch_card"], + getReadme: ["GET /repos/{owner}/{repo}/readme"], + getReadmeInDirectory: ["GET /repos/{owner}/{repo}/readme/{dir}"], + getRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}"], + getReleaseAsset: ["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"], + getReleaseByTag: ["GET /repos/{owner}/{repo}/releases/tags/{tag}"], + getStatusChecksProtection: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"], + getTeamsWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"], + getTopPaths: ["GET /repos/{owner}/{repo}/traffic/popular/paths"], + getTopReferrers: ["GET /repos/{owner}/{repo}/traffic/popular/referrers"], + getUsersWithAccessToProtectedBranch: ["GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"], + getViews: ["GET /repos/{owner}/{repo}/traffic/views"], + getWebhook: ["GET /repos/{owner}/{repo}/hooks/{hook_id}"], + getWebhookConfigForRepo: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/config"], + getWebhookDelivery: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}"], + listAutolinks: ["GET /repos/{owner}/{repo}/autolinks"], + listBranches: ["GET /repos/{owner}/{repo}/branches"], + listBranchesForHeadCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"], + listCollaborators: ["GET /repos/{owner}/{repo}/collaborators"], + listCommentsForCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"], + listCommitCommentsForRepo: ["GET /repos/{owner}/{repo}/comments"], + listCommitStatusesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/statuses"], + listCommits: ["GET /repos/{owner}/{repo}/commits"], + listContributors: ["GET /repos/{owner}/{repo}/contributors"], + listDeployKeys: ["GET /repos/{owner}/{repo}/keys"], + listDeploymentBranchPolicies: ["GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"], + listDeploymentStatuses: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"], + listDeployments: ["GET /repos/{owner}/{repo}/deployments"], + listForAuthenticatedUser: ["GET /user/repos"], + listForOrg: ["GET /orgs/{org}/repos"], + listForUser: ["GET /users/{username}/repos"], + listForks: ["GET /repos/{owner}/{repo}/forks"], + listInvitations: ["GET /repos/{owner}/{repo}/invitations"], + listInvitationsForAuthenticatedUser: ["GET /user/repository_invitations"], + listLanguages: ["GET /repos/{owner}/{repo}/languages"], + listPagesBuilds: ["GET /repos/{owner}/{repo}/pages/builds"], + listPublic: ["GET /repositories"], + listPullRequestsAssociatedWithCommit: ["GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"], + listReleaseAssets: ["GET /repos/{owner}/{repo}/releases/{release_id}/assets"], + listReleases: ["GET /repos/{owner}/{repo}/releases"], + listTagProtection: ["GET /repos/{owner}/{repo}/tags/protection"], + listTags: ["GET /repos/{owner}/{repo}/tags"], + listTeams: ["GET /repos/{owner}/{repo}/teams"], + listWebhookDeliveries: ["GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"], + listWebhooks: ["GET /repos/{owner}/{repo}/hooks"], + merge: ["POST /repos/{owner}/{repo}/merges"], + mergeUpstream: ["POST /repos/{owner}/{repo}/merge-upstream"], + pingWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"], + redeliverWebhookDelivery: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"], + removeAppAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, { + mapToData: "apps" + }], + removeCollaborator: ["DELETE /repos/{owner}/{repo}/collaborators/{username}"], + removeStatusCheckContexts: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, { + mapToData: "contexts" + }], + removeStatusCheckProtection: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"], + removeTeamAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, { + mapToData: "teams" + }], + removeUserAccessRestrictions: ["DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, { + mapToData: "users" + }], + renameBranch: ["POST /repos/{owner}/{repo}/branches/{branch}/rename"], + replaceAllTopics: ["PUT /repos/{owner}/{repo}/topics"], + requestPagesBuild: ["POST /repos/{owner}/{repo}/pages/builds"], + setAdminBranchProtection: ["POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"], + setAppAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps", {}, { + mapToData: "apps" + }], + setStatusCheckContexts: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts", {}, { + mapToData: "contexts" + }], + setTeamAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams", {}, { + mapToData: "teams" + }], + setUserAccessRestrictions: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users", {}, { + mapToData: "users" + }], + testPushWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"], + transfer: ["POST /repos/{owner}/{repo}/transfer"], + update: ["PATCH /repos/{owner}/{repo}"], + updateBranchProtection: ["PUT /repos/{owner}/{repo}/branches/{branch}/protection"], + updateCommitComment: ["PATCH /repos/{owner}/{repo}/comments/{comment_id}"], + updateDeploymentBranchPolicy: ["PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"], + updateInformationAboutPagesSite: ["PUT /repos/{owner}/{repo}/pages"], + updateInvitation: ["PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"], + updatePullRequestReviewProtection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"], + updateRelease: ["PATCH /repos/{owner}/{repo}/releases/{release_id}"], + updateReleaseAsset: ["PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"], + updateStatusCheckPotection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks", {}, { + renamed: ["repos", "updateStatusCheckProtection"] + }], + updateStatusCheckProtection: ["PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"], + updateWebhook: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"], + updateWebhookConfigForRepo: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"], + uploadReleaseAsset: ["POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}", { + baseUrl: "https://uploads.github.com" + }] + }, + search: { + code: ["GET /search/code"], + commits: ["GET /search/commits"], + issuesAndPullRequests: ["GET /search/issues"], + labels: ["GET /search/labels"], + repos: ["GET /search/repositories"], + topics: ["GET /search/topics"], + users: ["GET /search/users"] + }, + secretScanning: { + getAlert: ["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"], + listAlertsForEnterprise: ["GET /enterprises/{enterprise}/secret-scanning/alerts"], + listAlertsForOrg: ["GET /orgs/{org}/secret-scanning/alerts"], + listAlertsForRepo: ["GET /repos/{owner}/{repo}/secret-scanning/alerts"], + listLocationsForAlert: ["GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"], + updateAlert: ["PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"] + }, + teams: { + addOrUpdateMembershipForUserInOrg: ["PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"], + addOrUpdateProjectPermissionsInOrg: ["PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}"], + addOrUpdateRepoPermissionsInOrg: ["PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"], + checkPermissionsForProjectInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects/{project_id}"], + checkPermissionsForRepoInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"], + create: ["POST /orgs/{org}/teams"], + createDiscussionCommentInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"], + createDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions"], + deleteDiscussionCommentInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"], + deleteDiscussionInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"], + deleteInOrg: ["DELETE /orgs/{org}/teams/{team_slug}"], + getByName: ["GET /orgs/{org}/teams/{team_slug}"], + getDiscussionCommentInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"], + getDiscussionInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"], + getMembershipForUserInOrg: ["GET /orgs/{org}/teams/{team_slug}/memberships/{username}"], + list: ["GET /orgs/{org}/teams"], + listChildInOrg: ["GET /orgs/{org}/teams/{team_slug}/teams"], + listDiscussionCommentsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"], + listDiscussionsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions"], + listForAuthenticatedUser: ["GET /user/teams"], + listMembersInOrg: ["GET /orgs/{org}/teams/{team_slug}/members"], + listPendingInvitationsInOrg: ["GET /orgs/{org}/teams/{team_slug}/invitations"], + listProjectsInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects"], + listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"], + removeMembershipForUserInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"], + removeProjectInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}"], + removeRepoInOrg: ["DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"], + updateDiscussionCommentInOrg: ["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"], + updateDiscussionInOrg: ["PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"], + updateInOrg: ["PATCH /orgs/{org}/teams/{team_slug}"] + }, + users: { + addEmailForAuthenticated: ["POST /user/emails", {}, { + renamed: ["users", "addEmailForAuthenticatedUser"] + }], + addEmailForAuthenticatedUser: ["POST /user/emails"], + block: ["PUT /user/blocks/{username}"], + checkBlocked: ["GET /user/blocks/{username}"], + checkFollowingForUser: ["GET /users/{username}/following/{target_user}"], + checkPersonIsFollowedByAuthenticated: ["GET /user/following/{username}"], + createGpgKeyForAuthenticated: ["POST /user/gpg_keys", {}, { + renamed: ["users", "createGpgKeyForAuthenticatedUser"] + }], + createGpgKeyForAuthenticatedUser: ["POST /user/gpg_keys"], + createPublicSshKeyForAuthenticated: ["POST /user/keys", {}, { + renamed: ["users", "createPublicSshKeyForAuthenticatedUser"] + }], + createPublicSshKeyForAuthenticatedUser: ["POST /user/keys"], + createSshSigningKeyForAuthenticatedUser: ["POST /user/ssh_signing_keys"], + deleteEmailForAuthenticated: ["DELETE /user/emails", {}, { + renamed: ["users", "deleteEmailForAuthenticatedUser"] + }], + deleteEmailForAuthenticatedUser: ["DELETE /user/emails"], + deleteGpgKeyForAuthenticated: ["DELETE /user/gpg_keys/{gpg_key_id}", {}, { + renamed: ["users", "deleteGpgKeyForAuthenticatedUser"] + }], + deleteGpgKeyForAuthenticatedUser: ["DELETE /user/gpg_keys/{gpg_key_id}"], + deletePublicSshKeyForAuthenticated: ["DELETE /user/keys/{key_id}", {}, { + renamed: ["users", "deletePublicSshKeyForAuthenticatedUser"] + }], + deletePublicSshKeyForAuthenticatedUser: ["DELETE /user/keys/{key_id}"], + deleteSshSigningKeyForAuthenticatedUser: ["DELETE /user/ssh_signing_keys/{ssh_signing_key_id}"], + follow: ["PUT /user/following/{username}"], + getAuthenticated: ["GET /user"], + getByUsername: ["GET /users/{username}"], + getContextForUser: ["GET /users/{username}/hovercard"], + getGpgKeyForAuthenticated: ["GET /user/gpg_keys/{gpg_key_id}", {}, { + renamed: ["users", "getGpgKeyForAuthenticatedUser"] + }], + getGpgKeyForAuthenticatedUser: ["GET /user/gpg_keys/{gpg_key_id}"], + getPublicSshKeyForAuthenticated: ["GET /user/keys/{key_id}", {}, { + renamed: ["users", "getPublicSshKeyForAuthenticatedUser"] + }], + getPublicSshKeyForAuthenticatedUser: ["GET /user/keys/{key_id}"], + getSshSigningKeyForAuthenticatedUser: ["GET /user/ssh_signing_keys/{ssh_signing_key_id}"], + list: ["GET /users"], + listBlockedByAuthenticated: ["GET /user/blocks", {}, { + renamed: ["users", "listBlockedByAuthenticatedUser"] + }], + listBlockedByAuthenticatedUser: ["GET /user/blocks"], + listEmailsForAuthenticated: ["GET /user/emails", {}, { + renamed: ["users", "listEmailsForAuthenticatedUser"] + }], + listEmailsForAuthenticatedUser: ["GET /user/emails"], + listFollowedByAuthenticated: ["GET /user/following", {}, { + renamed: ["users", "listFollowedByAuthenticatedUser"] + }], + listFollowedByAuthenticatedUser: ["GET /user/following"], + listFollowersForAuthenticatedUser: ["GET /user/followers"], + listFollowersForUser: ["GET /users/{username}/followers"], + listFollowingForUser: ["GET /users/{username}/following"], + listGpgKeysForAuthenticated: ["GET /user/gpg_keys", {}, { + renamed: ["users", "listGpgKeysForAuthenticatedUser"] + }], + listGpgKeysForAuthenticatedUser: ["GET /user/gpg_keys"], + listGpgKeysForUser: ["GET /users/{username}/gpg_keys"], + listPublicEmailsForAuthenticated: ["GET /user/public_emails", {}, { + renamed: ["users", "listPublicEmailsForAuthenticatedUser"] + }], + listPublicEmailsForAuthenticatedUser: ["GET /user/public_emails"], + listPublicKeysForUser: ["GET /users/{username}/keys"], + listPublicSshKeysForAuthenticated: ["GET /user/keys", {}, { + renamed: ["users", "listPublicSshKeysForAuthenticatedUser"] + }], + listPublicSshKeysForAuthenticatedUser: ["GET /user/keys"], + listSshSigningKeysForAuthenticatedUser: ["GET /user/ssh_signing_keys"], + listSshSigningKeysForUser: ["GET /users/{username}/ssh_signing_keys"], + setPrimaryEmailVisibilityForAuthenticated: ["PATCH /user/email/visibility", {}, { + renamed: ["users", "setPrimaryEmailVisibilityForAuthenticatedUser"] + }], + setPrimaryEmailVisibilityForAuthenticatedUser: ["PATCH /user/email/visibility"], + unblock: ["DELETE /user/blocks/{username}"], + unfollow: ["DELETE /user/following/{username}"], + updateAuthenticated: ["PATCH /user"] + } +}; + +const VERSION = "6.6.2"; +function endpointsToMethods(octokit, endpointsMap) { + const newMethods = {}; -var _interopRequireDefault = __nccwpck_require__(3286); + for (const [scope, endpoints] of Object.entries(endpointsMap)) { + for (const [methodName, endpoint] of Object.entries(endpoints)) { + const [route, defaults, decorations] = endpoint; + const [method, url] = route.split(/ /); + const endpointDefaults = Object.assign({ + method, + url + }, defaults); -__nccwpck_require__(6880); + if (!newMethods[scope]) { + newMethods[scope] = {}; + } -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + const scopeMethods = newMethods[scope]; -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); + if (decorations) { + scopeMethods[methodName] = decorate(octokit, scope, methodName, endpointDefaults, decorations); + continue; + } -var _validateUrlDomain = _interopRequireDefault(__nccwpck_require__(6746)); + scopeMethods[methodName] = octokit.request.defaults(endpointDefaults); + } + } -var _validateUrlIp = _interopRequireDefault(__nccwpck_require__(371)); + return newMethods; +} -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlHost = (0, _regexSupplant["default"])('(?:' + '#{validateUrlIp}|' + '#{validateUrlDomain}' + ')', { - validateUrlIp: _validateUrlIp["default"], - validateUrlDomain: _validateUrlDomain["default"] -}, 'i'); -var _default = validateUrlHost; -exports["default"] = _default; -module.exports = exports.default; +function decorate(octokit, scope, methodName, defaults, decorations) { + const requestWithDefaults = octokit.request.defaults(defaults); + /* istanbul ignore next */ -/***/ }), + function withDecorations(...args) { + // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 + let options = requestWithDefaults.endpoint.merge(...args); // There are currently no other decorations than `.mapToData` -/***/ 371: -/***/ ((module, exports, __nccwpck_require__) => { + if (decorations.mapToData) { + options = Object.assign({}, options, { + data: options[decorations.mapToData], + [decorations.mapToData]: undefined + }); + return requestWithDefaults(options); + } -"use strict"; + if (decorations.renamed) { + const [newScope, newMethodName] = decorations.renamed; + octokit.log.warn(`octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`); + } + if (decorations.deprecated) { + octokit.log.warn(decorations.deprecated); + } -var _interopRequireDefault = __nccwpck_require__(3286); + if (decorations.renamedParameters) { + // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 + const options = requestWithDefaults.endpoint.merge(...args); -__nccwpck_require__(6880); + for (const [name, alias] of Object.entries(decorations.renamedParameters)) { + if (name in options) { + octokit.log.warn(`"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead`); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + if (!(alias in options)) { + options[alias] = options[name]; + } -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); + delete options[name]; + } + } -var _validateUrlIpv = _interopRequireDefault(__nccwpck_require__(1925)); + return requestWithDefaults(options); + } // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488 -var _validateUrlIpv2 = _interopRequireDefault(__nccwpck_require__(8642)); -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -// Punting on IPvFuture for now -var validateUrlIp = (0, _regexSupplant["default"])('(?:' + '#{validateUrlIpv4}|' + '#{validateUrlIpv6}' + ')', { - validateUrlIpv4: _validateUrlIpv["default"], - validateUrlIpv6: _validateUrlIpv2["default"] -}, 'i'); -var _default = validateUrlIp; -exports["default"] = _default; -module.exports = exports.default; + return requestWithDefaults(...args); + } -/***/ }), + return Object.assign(withDecorations, requestWithDefaults); +} -/***/ 1925: -/***/ ((module, exports, __nccwpck_require__) => { +function restEndpointMethods(octokit) { + const api = endpointsToMethods(octokit, Endpoints); + return { + rest: api + }; +} +restEndpointMethods.VERSION = VERSION; +function legacyRestEndpointMethods(octokit) { + const api = endpointsToMethods(octokit, Endpoints); + return { ...api, + rest: api + }; +} +legacyRestEndpointMethods.VERSION = VERSION; -"use strict"; +exports.legacyRestEndpointMethods = legacyRestEndpointMethods; +exports.restEndpointMethods = restEndpointMethods; +//# sourceMappingURL=index.js.map -var _interopRequireDefault = __nccwpck_require__(3286); +/***/ }), +/* 843 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -__nccwpck_require__(6880); +// Thank's IE8 for his funny defineProperty +module.exports = !__webpack_require__(971)(function () { + return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; +}); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); +/***/ }), +/* 844 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -var _validateUrlDecOctet = _interopRequireDefault(__nccwpck_require__(3300)); +"use strict"; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlIpv4 = (0, _regexSupplant["default"])(/(?:#{validateUrlDecOctet}(?:\.#{validateUrlDecOctet}){3})/i, { - validateUrlDecOctet: _validateUrlDecOctet["default"] -}); -var _default = validateUrlIpv4; -exports["default"] = _default; -module.exports = exports.default; -/***/ }), +/*eslint-disable no-use-before-define*/ -/***/ 8642: -/***/ ((module, exports, __nccwpck_require__) => { +var common = __webpack_require__(701); +var YAMLException = __webpack_require__(652); +var DEFAULT_SCHEMA = __webpack_require__(344); -"use strict"; +var _toString = Object.prototype.toString; +var _hasOwnProperty = Object.prototype.hasOwnProperty; +var CHAR_BOM = 0xFEFF; +var CHAR_TAB = 0x09; /* Tab */ +var CHAR_LINE_FEED = 0x0A; /* LF */ +var CHAR_CARRIAGE_RETURN = 0x0D; /* CR */ +var CHAR_SPACE = 0x20; /* Space */ +var CHAR_EXCLAMATION = 0x21; /* ! */ +var CHAR_DOUBLE_QUOTE = 0x22; /* " */ +var CHAR_SHARP = 0x23; /* # */ +var CHAR_PERCENT = 0x25; /* % */ +var CHAR_AMPERSAND = 0x26; /* & */ +var CHAR_SINGLE_QUOTE = 0x27; /* ' */ +var CHAR_ASTERISK = 0x2A; /* * */ +var CHAR_COMMA = 0x2C; /* , */ +var CHAR_MINUS = 0x2D; /* - */ +var CHAR_COLON = 0x3A; /* : */ +var CHAR_EQUALS = 0x3D; /* = */ +var CHAR_GREATER_THAN = 0x3E; /* > */ +var CHAR_QUESTION = 0x3F; /* ? */ +var CHAR_COMMERCIAL_AT = 0x40; /* @ */ +var CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */ +var CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */ +var CHAR_GRAVE_ACCENT = 0x60; /* ` */ +var CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */ +var CHAR_VERTICAL_LINE = 0x7C; /* | */ +var CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */ -__nccwpck_require__(6880); +var ESCAPE_SEQUENCES = {}; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -// Punting on real IPv6 validation for now -var validateUrlIpv6 = /(?:\[[a-f0-9:\.]+\])/i; -var _default = validateUrlIpv6; -exports["default"] = _default; -module.exports = exports.default; +ESCAPE_SEQUENCES[0x00] = '\\0'; +ESCAPE_SEQUENCES[0x07] = '\\a'; +ESCAPE_SEQUENCES[0x08] = '\\b'; +ESCAPE_SEQUENCES[0x09] = '\\t'; +ESCAPE_SEQUENCES[0x0A] = '\\n'; +ESCAPE_SEQUENCES[0x0B] = '\\v'; +ESCAPE_SEQUENCES[0x0C] = '\\f'; +ESCAPE_SEQUENCES[0x0D] = '\\r'; +ESCAPE_SEQUENCES[0x1B] = '\\e'; +ESCAPE_SEQUENCES[0x22] = '\\"'; +ESCAPE_SEQUENCES[0x5C] = '\\\\'; +ESCAPE_SEQUENCES[0x85] = '\\N'; +ESCAPE_SEQUENCES[0xA0] = '\\_'; +ESCAPE_SEQUENCES[0x2028] = '\\L'; +ESCAPE_SEQUENCES[0x2029] = '\\P'; -/***/ }), +var DEPRECATED_BOOLEANS_SYNTAX = [ + 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON', + 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF' +]; -/***/ 1075: -/***/ ((module, exports, __nccwpck_require__) => { +var DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/; -"use strict"; +function compileStyleMap(schema, map) { + var result, keys, index, length, tag, style, type; + if (map === null) return {}; -var _interopRequireDefault = __nccwpck_require__(3286); + result = {}; + keys = Object.keys(map); -__nccwpck_require__(6880); + for (index = 0, length = keys.length; index < length; index += 1) { + tag = keys[index]; + style = String(map[tag]); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + if (tag.slice(0, 2) === '!!') { + tag = 'tag:yaml.org,2002:' + tag.slice(2); + } + type = schema.compiledTypeMap['fallback'][tag]; -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); + if (type && _hasOwnProperty.call(type.styleAliases, style)) { + style = type.styleAliases[style]; + } -var _validateUrlPchar = _interopRequireDefault(__nccwpck_require__(2322)); + result[tag] = style; + } -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlPath = (0, _regexSupplant["default"])(/(\/#{validateUrlPchar}*)*/i, { - validateUrlPchar: _validateUrlPchar["default"] -}); -var _default = validateUrlPath; -exports["default"] = _default; -module.exports = exports.default; + return result; +} -/***/ }), +function encodeHex(character) { + var string, handle, length; -/***/ 2322: -/***/ ((module, exports, __nccwpck_require__) => { + string = character.toString(16).toUpperCase(); -"use strict"; + if (character <= 0xFF) { + handle = 'x'; + length = 2; + } else if (character <= 0xFFFF) { + handle = 'u'; + length = 4; + } else if (character <= 0xFFFFFFFF) { + handle = 'U'; + length = 8; + } else { + throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF'); + } + return '\\' + handle + common.repeat('0', length - string.length) + string; +} -var _interopRequireDefault = __nccwpck_require__(3286); -__nccwpck_require__(6880); +var QUOTING_TYPE_SINGLE = 1, + QUOTING_TYPE_DOUBLE = 2; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; +function State(options) { + this.schema = options['schema'] || DEFAULT_SCHEMA; + this.indent = Math.max(1, (options['indent'] || 2)); + this.noArrayIndent = options['noArrayIndent'] || false; + this.skipInvalid = options['skipInvalid'] || false; + this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']); + this.styleMap = compileStyleMap(this.schema, options['styles'] || null); + this.sortKeys = options['sortKeys'] || false; + this.lineWidth = options['lineWidth'] || 80; + this.noRefs = options['noRefs'] || false; + this.noCompatMode = options['noCompatMode'] || false; + this.condenseFlow = options['condenseFlow'] || false; + this.quotingType = options['quotingType'] === '"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE; + this.forceQuotes = options['forceQuotes'] || false; + this.replacer = typeof options['replacer'] === 'function' ? options['replacer'] : null; -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); + this.implicitTypes = this.schema.compiledImplicit; + this.explicitTypes = this.schema.compiledExplicit; -var _validateUrlUnreserved = _interopRequireDefault(__nccwpck_require__(5318)); + this.tag = null; + this.result = ''; -var _validateUrlPctEncoded = _interopRequireDefault(__nccwpck_require__(3878)); + this.duplicates = []; + this.usedDuplicates = null; +} -var _validateUrlSubDelims = _interopRequireDefault(__nccwpck_require__(2783)); +// Indents every line in a string. Empty lines (\n only) are not indented. +function indentString(string, spaces) { + var ind = common.repeat(' ', spaces), + position = 0, + next = -1, + result = '', + line, + length = string.length; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -// These URL validation pattern strings are based on the ABNF from RFC 3986 -var validateUrlPchar = (0, _regexSupplant["default"])('(?:' + '#{validateUrlUnreserved}|' + '#{validateUrlPctEncoded}|' + '#{validateUrlSubDelims}|' + '[:|@]' + ')', { - validateUrlUnreserved: _validateUrlUnreserved["default"], - validateUrlPctEncoded: _validateUrlPctEncoded["default"], - validateUrlSubDelims: _validateUrlSubDelims["default"] -}, 'i'); -var _default = validateUrlPchar; -exports["default"] = _default; -module.exports = exports.default; + while (position < length) { + next = string.indexOf('\n', position); + if (next === -1) { + line = string.slice(position); + position = length; + } else { + line = string.slice(position, next + 1); + position = next + 1; + } -/***/ }), + if (line.length && line !== '\n') result += ind; -/***/ 3878: -/***/ ((module, exports, __nccwpck_require__) => { + result += line; + } -"use strict"; + return result; +} +function generateNextLine(state, level) { + return '\n' + common.repeat(' ', state.indent * level); +} -__nccwpck_require__(6880); +function testImplicitResolving(state, str) { + var index, length, type; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlPctEncoded = /(?:%[0-9a-f]{2})/i; -var _default = validateUrlPctEncoded; -exports["default"] = _default; -module.exports = exports.default; + for (index = 0, length = state.implicitTypes.length; index < length; index += 1) { + type = state.implicitTypes[index]; -/***/ }), + if (type.resolve(str)) { + return true; + } + } -/***/ 3077: -/***/ ((module, exports, __nccwpck_require__) => { + return false; +} -"use strict"; +// [33] s-white ::= s-space | s-tab +function isWhitespace(c) { + return c === CHAR_SPACE || c === CHAR_TAB; +} +// Returns true if the character can be printed without escaping. +// From YAML 1.2: "any allowed characters known to be non-printable +// should also be escaped. [However,] This isn’t mandatory" +// Derived from nb-char - \t - #x85 - #xA0 - #x2028 - #x2029. +function isPrintable(c) { + return (0x00020 <= c && c <= 0x00007E) + || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029) + || ((0x0E000 <= c && c <= 0x00FFFD) && c !== CHAR_BOM) + || (0x10000 <= c && c <= 0x10FFFF); +} -__nccwpck_require__(6880); +// [34] ns-char ::= nb-char - s-white +// [27] nb-char ::= c-printable - b-char - c-byte-order-mark +// [26] b-char ::= b-line-feed | b-carriage-return +// Including s-white (for some reason, examples doesn't match specs in this aspect) +// ns-char ::= c-printable - b-line-feed - b-carriage-return - c-byte-order-mark +function isNsCharOrWhitespace(c) { + return isPrintable(c) + && c !== CHAR_BOM + // - b-char + && c !== CHAR_CARRIAGE_RETURN + && c !== CHAR_LINE_FEED; +} -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlPort = /[0-9]{1,5}/; -var _default = validateUrlPort; -exports["default"] = _default; -module.exports = exports.default; +// [127] ns-plain-safe(c) ::= c = flow-out ⇒ ns-plain-safe-out +// c = flow-in ⇒ ns-plain-safe-in +// c = block-key ⇒ ns-plain-safe-out +// c = flow-key ⇒ ns-plain-safe-in +// [128] ns-plain-safe-out ::= ns-char +// [129] ns-plain-safe-in ::= ns-char - c-flow-indicator +// [130] ns-plain-char(c) ::= ( ns-plain-safe(c) - “:” - “#” ) +// | ( /* An ns-char preceding */ “#” ) +// | ( “:” /* Followed by an ns-plain-safe(c) */ ) +function isPlainSafe(c, prev, inblock) { + var cIsNsCharOrWhitespace = isNsCharOrWhitespace(c); + var cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c); + return ( + // ns-plain-safe + inblock ? // c = flow-in + cIsNsCharOrWhitespace + : cIsNsCharOrWhitespace + // - c-flow-indicator + && c !== CHAR_COMMA + && c !== CHAR_LEFT_SQUARE_BRACKET + && c !== CHAR_RIGHT_SQUARE_BRACKET + && c !== CHAR_LEFT_CURLY_BRACKET + && c !== CHAR_RIGHT_CURLY_BRACKET + ) + // ns-plain-char + && c !== CHAR_SHARP // false on '#' + && !(prev === CHAR_COLON && !cIsNsChar) // false on ': ' + || (isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP) // change to true on '[^ ]#' + || (prev === CHAR_COLON && cIsNsChar); // change to true on ':[^ ]' +} -/***/ }), +// Simplified test for values allowed as the first character in plain style. +function isPlainSafeFirst(c) { + // Uses a subset of ns-char - c-indicator + // where ns-char = nb-char - s-white. + // No support of ( ( “?” | “:” | “-” ) /* Followed by an ns-plain-safe(c)) */ ) part + return isPrintable(c) && c !== CHAR_BOM + && !isWhitespace(c) // - s-white + // - (c-indicator ::= + // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}” + && c !== CHAR_MINUS + && c !== CHAR_QUESTION + && c !== CHAR_COLON + && c !== CHAR_COMMA + && c !== CHAR_LEFT_SQUARE_BRACKET + && c !== CHAR_RIGHT_SQUARE_BRACKET + && c !== CHAR_LEFT_CURLY_BRACKET + && c !== CHAR_RIGHT_CURLY_BRACKET + // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “"” + && c !== CHAR_SHARP + && c !== CHAR_AMPERSAND + && c !== CHAR_ASTERISK + && c !== CHAR_EXCLAMATION + && c !== CHAR_VERTICAL_LINE + && c !== CHAR_EQUALS + && c !== CHAR_GREATER_THAN + && c !== CHAR_SINGLE_QUOTE + && c !== CHAR_DOUBLE_QUOTE + // | “%” | “@” | “`”) + && c !== CHAR_PERCENT + && c !== CHAR_COMMERCIAL_AT + && c !== CHAR_GRAVE_ACCENT; +} -/***/ 1697: -/***/ ((module, exports, __nccwpck_require__) => { +// Simplified test for values allowed as the last character in plain style. +function isPlainSafeLast(c) { + // just not whitespace or colon, it will be checked to be plain character later + return !isWhitespace(c) && c !== CHAR_COLON; +} -"use strict"; +// Same as 'string'.codePointAt(pos), but works in older browsers. +function codePointAt(string, pos) { + var first = string.charCodeAt(pos), second; + if (first >= 0xD800 && first <= 0xDBFF && pos + 1 < string.length) { + second = string.charCodeAt(pos + 1); + if (second >= 0xDC00 && second <= 0xDFFF) { + // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000; + } + } + return first; +} + +// Determines whether block indentation indicator is required. +function needIndentIndicator(string) { + var leadingSpaceRe = /^\n* /; + return leadingSpaceRe.test(string); +} + +var STYLE_PLAIN = 1, + STYLE_SINGLE = 2, + STYLE_LITERAL = 3, + STYLE_FOLDED = 4, + STYLE_DOUBLE = 5; + +// Determines which scalar styles are possible and returns the preferred style. +// lineWidth = -1 => no limit. +// Pre-conditions: str.length > 0. +// Post-conditions: +// STYLE_PLAIN or STYLE_SINGLE => no \n are in the string. +// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1). +// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1). +function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, + testAmbiguousType, quotingType, forceQuotes, inblock) { + var i; + var char = 0; + var prevChar = null; + var hasLineBreak = false; + var hasFoldableLine = false; // only checked if shouldTrackWidth + var shouldTrackWidth = lineWidth !== -1; + var previousLineBreak = -1; // count the first line correctly + var plain = isPlainSafeFirst(codePointAt(string, 0)) + && isPlainSafeLast(codePointAt(string, string.length - 1)); -var _interopRequireDefault = __nccwpck_require__(3286); + if (singleLineOnly || forceQuotes) { + // Case: no block styles. + // Check for disallowed characters to rule out plain and single. + for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) { + char = codePointAt(string, i); + if (!isPrintable(char)) { + return STYLE_DOUBLE; + } + plain = plain && isPlainSafe(char, prevChar, inblock); + prevChar = char; + } + } else { + // Case: block styles permitted. + for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) { + char = codePointAt(string, i); + if (char === CHAR_LINE_FEED) { + hasLineBreak = true; + // Check if any line can be folded. + if (shouldTrackWidth) { + hasFoldableLine = hasFoldableLine || + // Foldable line = too long, and not more-indented. + (i - previousLineBreak - 1 > lineWidth && + string[previousLineBreak + 1] !== ' '); + previousLineBreak = i; + } + } else if (!isPrintable(char)) { + return STYLE_DOUBLE; + } + plain = plain && isPlainSafe(char, prevChar, inblock); + prevChar = char; + } + // in case the end is missing a \n + hasFoldableLine = hasFoldableLine || (shouldTrackWidth && + (i - previousLineBreak - 1 > lineWidth && + string[previousLineBreak + 1] !== ' ')); + } + // Although every style can represent \n without escaping, prefer block styles + // for multiline, since they're more readable and they don't add empty lines. + // Also prefer folding a super-long line. + if (!hasLineBreak && !hasFoldableLine) { + // Strings interpretable as another type have to be quoted; + // e.g. the string 'true' vs. the boolean true. + if (plain && !forceQuotes && !testAmbiguousType(string)) { + return STYLE_PLAIN; + } + return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE; + } + // Edge case: block indentation indicator can only have one digit. + if (indentPerLevel > 9 && needIndentIndicator(string)) { + return STYLE_DOUBLE; + } + // At this point we know block styles are valid. + // Prefer literal style unless we want to fold. + if (!forceQuotes) { + return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL; + } + return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE; +} -__nccwpck_require__(6880); +// Note: line breaking/folding is implemented for only the folded style. +// NB. We drop the last trailing newline (if any) of a returned block scalar +// since the dumper adds its own newline. This always works: +// • No ending newline => unaffected; already using strip "-" chomping. +// • Ending newline => removed then restored. +// Importantly, this keeps the "+" chomp indicator from gaining an extra line. +function writeScalar(state, string, level, iskey, inblock) { + state.dump = (function () { + if (string.length === 0) { + return state.quotingType === QUOTING_TYPE_DOUBLE ? '""' : "''"; + } + if (!state.noCompatMode) { + if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) { + return state.quotingType === QUOTING_TYPE_DOUBLE ? ('"' + string + '"') : ("'" + string + "'"); + } + } -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + var indent = state.indent * Math.max(1, level); // no 0-indent scalars + // As indentation gets deeper, let the width decrease monotonically + // to the lower bound min(state.lineWidth, 40). + // Note that this implies + // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound. + // state.lineWidth > 40 + state.indent: width decreases until the lower bound. + // This behaves better than a constant minimum width which disallows narrower options, + // or an indent threshold which causes the width to suddenly increase. + var lineWidth = state.lineWidth === -1 + ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent); -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); + // Without knowing if keys are implicit/explicit, assume implicit for safety. + var singleLineOnly = iskey + // No block styles in flow mode. + || (state.flowLevel > -1 && level >= state.flowLevel); + function testAmbiguity(string) { + return testImplicitResolving(state, string); + } -var _validateUrlPchar = _interopRequireDefault(__nccwpck_require__(2322)); + switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, + testAmbiguity, state.quotingType, state.forceQuotes && !iskey, inblock)) { -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlQuery = (0, _regexSupplant["default"])(/(#{validateUrlPchar}|\/|\?)*/i, { - validateUrlPchar: _validateUrlPchar["default"] -}); -var _default = validateUrlQuery; -exports["default"] = _default; -module.exports = exports.default; + case STYLE_PLAIN: + return string; + case STYLE_SINGLE: + return "'" + string.replace(/'/g, "''") + "'"; + case STYLE_LITERAL: + return '|' + blockHeader(string, state.indent) + + dropEndingNewline(indentString(string, indent)); + case STYLE_FOLDED: + return '>' + blockHeader(string, state.indent) + + dropEndingNewline(indentString(foldString(string, lineWidth), indent)); + case STYLE_DOUBLE: + return '"' + escapeString(string, lineWidth) + '"'; + default: + throw new YAMLException('impossible error: invalid scalar style'); + } + }()); +} -/***/ }), +// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9. +function blockHeader(string, indentPerLevel) { + var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : ''; -/***/ 6579: -/***/ ((module, exports, __nccwpck_require__) => { + // note the special case: the string '\n' counts as a "trailing" empty line. + var clip = string[string.length - 1] === '\n'; + var keep = clip && (string[string.length - 2] === '\n' || string === '\n'); + var chomp = keep ? '+' : (clip ? '' : '-'); -"use strict"; + return indentIndicator + chomp + '\n'; +} +// (See the note for writeScalar.) +function dropEndingNewline(string) { + return string[string.length - 1] === '\n' ? string.slice(0, -1) : string; +} -__nccwpck_require__(6880); +// Note: a long line without a suitable break point will exceed the width limit. +// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0. +function foldString(string, width) { + // In folded style, $k$ consecutive newlines output as $k+1$ newlines— + // unless they're before or after a more-indented line, or at the very + // beginning or end, in which case $k$ maps to $k$. + // Therefore, parse each chunk as newline(s) followed by a content line. + var lineRe = /(\n+)([^\n]*)/g; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlScheme = /(?:[a-z][a-z0-9+\-.]*)/i; -var _default = validateUrlScheme; -exports["default"] = _default; -module.exports = exports.default; + // first line (possibly an empty line) + var result = (function () { + var nextLF = string.indexOf('\n'); + nextLF = nextLF !== -1 ? nextLF : string.length; + lineRe.lastIndex = nextLF; + return foldLine(string.slice(0, nextLF), width); + }()); + // If we haven't reached the first content line yet, don't add an extra \n. + var prevMoreIndented = string[0] === '\n' || string[0] === ' '; + var moreIndented; -/***/ }), + // rest of the lines + var match; + while ((match = lineRe.exec(string))) { + var prefix = match[1], line = match[2]; + moreIndented = (line[0] === ' '); + result += prefix + + (!prevMoreIndented && !moreIndented && line !== '' + ? '\n' : '') + + foldLine(line, width); + prevMoreIndented = moreIndented; + } -/***/ 2783: -/***/ ((module, exports, __nccwpck_require__) => { + return result; +} -"use strict"; +// Greedy line breaking. +// Picks the longest line under the limit each time, +// otherwise settles for the shortest line over the limit. +// NB. More-indented lines *cannot* be folded, as that would add an extra \n. +function foldLine(line, width) { + if (line === '' || line[0] === ' ') return line; + // Since a more-indented line adds a \n, breaks can't be followed by a space. + var breakRe = / [^ ]/g; // note: the match index will always be <= length-2. + var match; + // start is an inclusive index. end, curr, and next are exclusive. + var start = 0, end, curr = 0, next = 0; + var result = ''; -__nccwpck_require__(6880); + // Invariants: 0 <= start <= length-1. + // 0 <= curr <= next <= max(0, length-2). curr - start <= width. + // Inside the loop: + // A match implies length >= 2, so curr and next are <= length-2. + while ((match = breakRe.exec(line))) { + next = match.index; + // maintain invariant: curr - start <= width + if (next - start > width) { + end = (curr > start) ? curr : next; // derive end <= length-2 + result += '\n' + line.slice(start, end); + // skip the space that was output as \n + start = end + 1; // derive start <= length-1 + } + curr = next; + } -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlSubDelims = /[!$&'()*+,;=]/i; -var _default = validateUrlSubDelims; -exports["default"] = _default; -module.exports = exports.default; + // By the invariants, start <= length-1, so there is something left over. + // It is either the whole string or a part starting from non-whitespace. + result += '\n'; + // Insert a break if the remainder is too long and there is a break available. + if (line.length - start > width && curr > start) { + result += line.slice(start, curr) + '\n' + line.slice(curr + 1); + } else { + result += line.slice(start); + } -/***/ }), + return result.slice(1); // drop extra \n joiner +} -/***/ 2379: -/***/ ((module, exports, __nccwpck_require__) => { +// Escapes a double-quoted string. +function escapeString(string) { + var result = ''; + var char = 0; + var escapeSeq; -"use strict"; + for (var i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) { + char = codePointAt(string, i); + escapeSeq = ESCAPE_SEQUENCES[char]; + if (!escapeSeq && isPrintable(char)) { + result += string[i]; + if (char >= 0x10000) result += string[i + 1]; + } else { + result += escapeSeq || encodeHex(char); + } + } -__nccwpck_require__(6880); + return result; +} -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlSubDomainSegment = /(?:[a-z0-9](?:[a-z0-9_\-]*[a-z0-9])?)/i; -var _default = validateUrlSubDomainSegment; -exports["default"] = _default; -module.exports = exports.default; +function writeFlowSequence(state, level, object) { + var _result = '', + _tag = state.tag, + index, + length, + value; -/***/ }), + for (index = 0, length = object.length; index < length; index += 1) { + value = object[index]; -/***/ 3907: -/***/ ((module, exports, __nccwpck_require__) => { + if (state.replacer) { + value = state.replacer.call(object, String(index), value); + } -"use strict"; + // Write only valid elements, put null instead of invalid elements. + if (writeNode(state, level, value, false, false) || + (typeof value === 'undefined' && + writeNode(state, level, null, false, false))) { + if (_result !== '') _result += ',' + (!state.condenseFlow ? ' ' : ''); + _result += state.dump; + } + } -var _interopRequireDefault = __nccwpck_require__(3286); + state.tag = _tag; + state.dump = '[' + _result + ']'; +} -__nccwpck_require__(6880); +function writeBlockSequence(state, level, object, compact) { + var _result = '', + _tag = state.tag, + index, + length, + value; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + for (index = 0, length = object.length; index < length; index += 1) { + value = object[index]; -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); + if (state.replacer) { + value = state.replacer.call(object, String(index), value); + } -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -// Modified version of RFC 3986 Appendix B -var validateUrlUnencoded = (0, _regexSupplant["default"])('^' + // Full URL -'(?:' + '([^:/?#]+):\\/\\/' + // $1 Scheme -')?' + '([^/?#]*)' + // $2 Authority -'([^?#]*)' + // $3 Path -'(?:' + '\\?([^#]*)' + // $4 Query -')?' + '(?:' + '#(.*)' + // $5 Fragment -')?$', 'i'); -var _default = validateUrlUnencoded; -exports["default"] = _default; -module.exports = exports.default; + // Write only valid elements, put null instead of invalid elements. + if (writeNode(state, level + 1, value, true, true, false, true) || + (typeof value === 'undefined' && + writeNode(state, level + 1, null, true, true, false, true))) { -/***/ }), + if (!compact || _result !== '') { + _result += generateNextLine(state, level); + } -/***/ 977: -/***/ ((module, exports, __nccwpck_require__) => { + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + _result += '-'; + } else { + _result += '- '; + } -"use strict"; + _result += state.dump; + } + } + state.tag = _tag; + state.dump = _result || '[]'; // Empty sequence if no valid values. +} -var _interopRequireDefault = __nccwpck_require__(3286); +function writeFlowMapping(state, level, object) { + var _result = '', + _tag = state.tag, + objectKeyList = Object.keys(object), + index, + length, + objectKey, + objectValue, + pairBuffer; -__nccwpck_require__(6880); + for (index = 0, length = objectKeyList.length; index < length; index += 1) { -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + pairBuffer = ''; + if (_result !== '') pairBuffer += ', '; -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); + if (state.condenseFlow) pairBuffer += '"'; -var _validateUrlUserinfo = _interopRequireDefault(__nccwpck_require__(3026)); + objectKey = objectKeyList[index]; + objectValue = object[objectKey]; -var _validateUrlUnicodeHost = _interopRequireDefault(__nccwpck_require__(3946)); + if (state.replacer) { + objectValue = state.replacer.call(object, objectKey, objectValue); + } -var _validateUrlPort = _interopRequireDefault(__nccwpck_require__(3077)); + if (!writeNode(state, level, objectKey, false, false)) { + continue; // Skip this pair because of invalid key; + } -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlUnicodeAuthority = (0, _regexSupplant["default"])( // $1 userinfo -'(?:(#{validateUrlUserinfo})@)?' + // $2 host -'(#{validateUrlUnicodeHost})' + // $3 port -'(?::(#{validateUrlPort}))?', { - validateUrlUserinfo: _validateUrlUserinfo["default"], - validateUrlUnicodeHost: _validateUrlUnicodeHost["default"], - validateUrlPort: _validateUrlPort["default"] -}, 'i'); -var _default = validateUrlUnicodeAuthority; -exports["default"] = _default; -module.exports = exports.default; + if (state.dump.length > 1024) pairBuffer += '? '; -/***/ }), + pairBuffer += state.dump + (state.condenseFlow ? '"' : '') + ':' + (state.condenseFlow ? '' : ' '); -/***/ 6559: -/***/ ((module, exports, __nccwpck_require__) => { + if (!writeNode(state, level, objectValue, false, false)) { + continue; // Skip this pair because of invalid value. + } -"use strict"; + pairBuffer += state.dump; + // Both key and value are valid. + _result += pairBuffer; + } -var _interopRequireDefault = __nccwpck_require__(3286); + state.tag = _tag; + state.dump = '{' + _result + '}'; +} -__nccwpck_require__(6880); +function writeBlockMapping(state, level, object, compact) { + var _result = '', + _tag = state.tag, + objectKeyList = Object.keys(object), + index, + length, + objectKey, + objectValue, + explicitPair, + pairBuffer; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + // Allow sorting keys so that the output file is deterministic + if (state.sortKeys === true) { + // Default sorting + objectKeyList.sort(); + } else if (typeof state.sortKeys === 'function') { + // Custom sort function + objectKeyList.sort(state.sortKeys); + } else if (state.sortKeys) { + // Something is wrong + throw new YAMLException('sortKeys must be a boolean or a function'); + } -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + pairBuffer = ''; -var _validateUrlUnicodeSubDomainSegment = _interopRequireDefault(__nccwpck_require__(4550)); + if (!compact || _result !== '') { + pairBuffer += generateNextLine(state, level); + } -var _validateUrlUnicodeDomainSegment = _interopRequireDefault(__nccwpck_require__(2823)); + objectKey = objectKeyList[index]; + objectValue = object[objectKey]; -var _validateUrlUnicodeDomainTld = _interopRequireDefault(__nccwpck_require__(9578)); + if (state.replacer) { + objectValue = state.replacer.call(object, objectKey, objectValue); + } -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -// Unencoded internationalized domains - this doesn't check for invalid UTF-8 sequences -var validateUrlUnicodeDomain = (0, _regexSupplant["default"])(/(?:(?:#{validateUrlUnicodeSubDomainSegment}\.)*(?:#{validateUrlUnicodeDomainSegment}\.)#{validateUrlUnicodeDomainTld})/i, { - validateUrlUnicodeSubDomainSegment: _validateUrlUnicodeSubDomainSegment["default"], - validateUrlUnicodeDomainSegment: _validateUrlUnicodeDomainSegment["default"], - validateUrlUnicodeDomainTld: _validateUrlUnicodeDomainTld["default"] -}); -var _default = validateUrlUnicodeDomain; -exports["default"] = _default; -module.exports = exports.default; + if (!writeNode(state, level + 1, objectKey, true, true, true)) { + continue; // Skip this pair because of invalid key. + } -/***/ }), + explicitPair = (state.tag !== null && state.tag !== '?') || + (state.dump && state.dump.length > 1024); -/***/ 2823: -/***/ ((module, exports, __nccwpck_require__) => { + if (explicitPair) { + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + pairBuffer += '?'; + } else { + pairBuffer += '? '; + } + } -"use strict"; + pairBuffer += state.dump; + if (explicitPair) { + pairBuffer += generateNextLine(state, level); + } -__nccwpck_require__(6880); + if (!writeNode(state, level + 1, objectValue, true, explicitPair)) { + continue; // Skip this pair because of invalid value. + } -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlUnicodeDomainSegment = /(?:(?:[a-z0-9]|[^\u0000-\u007f])(?:(?:[a-z0-9\-]|[^\u0000-\u007f])*(?:[a-z0-9]|[^\u0000-\u007f]))?)/i; -var _default = validateUrlUnicodeDomainSegment; -exports["default"] = _default; -module.exports = exports.default; + if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { + pairBuffer += ':'; + } else { + pairBuffer += ': '; + } -/***/ }), + pairBuffer += state.dump; -/***/ 9578: -/***/ ((module, exports, __nccwpck_require__) => { + // Both key and value are valid. + _result += pairBuffer; + } -"use strict"; + state.tag = _tag; + state.dump = _result || '{}'; // Empty mapping if no valid pairs. +} +function detectType(state, object, explicit) { + var _result, typeList, index, length, type, style; -__nccwpck_require__(6880); + typeList = explicit ? state.explicitTypes : state.implicitTypes; -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -// Unencoded internationalized domains - this doesn't check for invalid UTF-8 sequences -var validateUrlUnicodeDomainTld = /(?:(?:[a-z]|[^\u0000-\u007f])(?:(?:[a-z0-9\-]|[^\u0000-\u007f])*(?:[a-z0-9]|[^\u0000-\u007f]))?)/i; -var _default = validateUrlUnicodeDomainTld; -exports["default"] = _default; -module.exports = exports.default; + for (index = 0, length = typeList.length; index < length; index += 1) { + type = typeList[index]; -/***/ }), + if ((type.instanceOf || type.predicate) && + (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) && + (!type.predicate || type.predicate(object))) { -/***/ 3946: -/***/ ((module, exports, __nccwpck_require__) => { + if (explicit) { + if (type.multi && type.representName) { + state.tag = type.representName(object); + } else { + state.tag = type.tag; + } + } else { + state.tag = '?'; + } -"use strict"; + if (type.represent) { + style = state.styleMap[type.tag] || type.defaultStyle; + if (_toString.call(type.represent) === '[object Function]') { + _result = type.represent(object, style); + } else if (_hasOwnProperty.call(type.represent, style)) { + _result = type.represent[style](object, style); + } else { + throw new YAMLException('!<' + type.tag + '> tag resolver accepts not "' + style + '" style'); + } -var _interopRequireDefault = __nccwpck_require__(3286); + state.dump = _result; + } -__nccwpck_require__(6880); + return true; + } + } -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + return false; +} -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); +// Serializes `object` and writes it to global `result`. +// Returns true on success, or false on invalid object. +// +function writeNode(state, level, object, block, compact, iskey, isblockseq) { + state.tag = null; + state.dump = object; -var _validateUrlIp = _interopRequireDefault(__nccwpck_require__(371)); + if (!detectType(state, object, false)) { + detectType(state, object, true); + } -var _validateUrlUnicodeDomain = _interopRequireDefault(__nccwpck_require__(6559)); + var type = _toString.call(state.dump); + var inblock = block; + var tagStr; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlUnicodeHost = (0, _regexSupplant["default"])('(?:' + '#{validateUrlIp}|' + '#{validateUrlUnicodeDomain}' + ')', { - validateUrlIp: _validateUrlIp["default"], - validateUrlUnicodeDomain: _validateUrlUnicodeDomain["default"] -}, 'i'); -var _default = validateUrlUnicodeHost; -exports["default"] = _default; -module.exports = exports.default; + if (block) { + block = (state.flowLevel < 0 || state.flowLevel > level); + } -/***/ }), + var objectOrArray = type === '[object Object]' || type === '[object Array]', + duplicateIndex, + duplicate; -/***/ 4550: -/***/ ((module, exports, __nccwpck_require__) => { + if (objectOrArray) { + duplicateIndex = state.duplicates.indexOf(object); + duplicate = duplicateIndex !== -1; + } -"use strict"; + if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) { + compact = false; + } + if (duplicate && state.usedDuplicates[duplicateIndex]) { + state.dump = '*ref_' + duplicateIndex; + } else { + if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) { + state.usedDuplicates[duplicateIndex] = true; + } + if (type === '[object Object]') { + if (block && (Object.keys(state.dump).length !== 0)) { + writeBlockMapping(state, level, state.dump, compact); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + state.dump; + } + } else { + writeFlowMapping(state, level, state.dump); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; + } + } + } else if (type === '[object Array]') { + if (block && (state.dump.length !== 0)) { + if (state.noArrayIndent && !isblockseq && level > 0) { + writeBlockSequence(state, level - 1, state.dump, compact); + } else { + writeBlockSequence(state, level, state.dump, compact); + } + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + state.dump; + } + } else { + writeFlowSequence(state, level, state.dump); + if (duplicate) { + state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; + } + } + } else if (type === '[object String]') { + if (state.tag !== '?') { + writeScalar(state, state.dump, level, iskey, inblock); + } + } else if (type === '[object Undefined]') { + return false; + } else { + if (state.skipInvalid) return false; + throw new YAMLException('unacceptable kind of an object to dump ' + type); + } -__nccwpck_require__(6880); + if (state.tag !== null && state.tag !== '?') { + // Need to encode all characters except those allowed by the spec: + // + // [35] ns-dec-digit ::= [#x30-#x39] /* 0-9 */ + // [36] ns-hex-digit ::= ns-dec-digit + // | [#x41-#x46] /* A-F */ | [#x61-#x66] /* a-f */ + // [37] ns-ascii-letter ::= [#x41-#x5A] /* A-Z */ | [#x61-#x7A] /* a-z */ + // [38] ns-word-char ::= ns-dec-digit | ns-ascii-letter | “-” + // [39] ns-uri-char ::= “%” ns-hex-digit ns-hex-digit | ns-word-char | “#” + // | “;” | “/” | “?” | “:” | “@” | “&” | “=” | “+” | “$” | “,” + // | “_” | “.” | “!” | “~” | “*” | “'” | “(” | “)” | “[” | “]” + // + // Also need to encode '!' because it has special meaning (end of tag prefix). + // + tagStr = encodeURI( + state.tag[0] === '!' ? state.tag.slice(1) : state.tag + ).replace(/!/g, '%21'); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlUnicodeSubDomainSegment = /(?:(?:[a-z0-9]|[^\u0000-\u007f])(?:(?:[a-z0-9_\-]|[^\u0000-\u007f])*(?:[a-z0-9]|[^\u0000-\u007f]))?)/i; -var _default = validateUrlUnicodeSubDomainSegment; -exports["default"] = _default; -module.exports = exports.default; + if (state.tag[0] === '!') { + tagStr = '!' + tagStr; + } else if (tagStr.slice(0, 18) === 'tag:yaml.org,2002:') { + tagStr = '!!' + tagStr.slice(18); + } else { + tagStr = '!<' + tagStr + '>'; + } -/***/ }), + state.dump = tagStr + ' ' + state.dump; + } + } -/***/ 5318: -/***/ ((module, exports, __nccwpck_require__) => { + return true; +} -"use strict"; +function getDuplicateReferences(object, state) { + var objects = [], + duplicatesIndexes = [], + index, + length; + inspectNode(object, objects, duplicatesIndexes); -__nccwpck_require__(6880); + for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) { + state.duplicates.push(objects[duplicatesIndexes[index]]); + } + state.usedDuplicates = new Array(length); +} -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlUnreserved = /[a-z\u0400-\u04FF0-9\-._~]/i; -var _default = validateUrlUnreserved; -exports["default"] = _default; -module.exports = exports.default; +function inspectNode(object, objects, duplicatesIndexes) { + var objectKeyList, + index, + length; -/***/ }), + if (object !== null && typeof object === 'object') { + index = objects.indexOf(object); + if (index !== -1) { + if (duplicatesIndexes.indexOf(index) === -1) { + duplicatesIndexes.push(index); + } + } else { + objects.push(object); -/***/ 3026: -/***/ ((module, exports, __nccwpck_require__) => { + if (Array.isArray(object)) { + for (index = 0, length = object.length; index < length; index += 1) { + inspectNode(object[index], objects, duplicatesIndexes); + } + } else { + objectKeyList = Object.keys(object); -"use strict"; + for (index = 0, length = objectKeyList.length; index < length; index += 1) { + inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes); + } + } + } + } +} +function dump(input, options) { + options = options || {}; -var _interopRequireDefault = __nccwpck_require__(3286); + var state = new State(options); -__nccwpck_require__(6880); + if (!state.noRefs) getDuplicateReferences(input, state); -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = void 0; + var value = input; -var _regexSupplant = _interopRequireDefault(__nccwpck_require__(8662)); + if (state.replacer) { + value = state.replacer.call({ '': value }, '', value); + } -var _validateUrlUnreserved = _interopRequireDefault(__nccwpck_require__(5318)); + if (writeNode(state, 0, value, true, true)) return state.dump + '\n'; -var _validateUrlPctEncoded = _interopRequireDefault(__nccwpck_require__(3878)); + return ''; +} -var _validateUrlSubDelims = _interopRequireDefault(__nccwpck_require__(2783)); +module.exports.dump = dump; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var validateUrlUserinfo = (0, _regexSupplant["default"])('(?:' + '#{validateUrlUnreserved}|' + '#{validateUrlPctEncoded}|' + '#{validateUrlSubDelims}|' + ':' + ')*', { - validateUrlUnreserved: _validateUrlUnreserved["default"], - validateUrlPctEncoded: _validateUrlPctEncoded["default"], - validateUrlSubDelims: _validateUrlSubDelims["default"] -}, 'i'); -var _default = validateUrlUserinfo; -exports["default"] = _default; -module.exports = exports.default; /***/ }), +/* 845 */, +/* 846 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { -/***/ 9479: -/***/ ((module, exports, __nccwpck_require__) => { - -"use strict"; - - -__nccwpck_require__(6880); - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; +var Ajv = __webpack_require__(514) +var HARError = __webpack_require__(814) +var schemas = __webpack_require__(623) -__nccwpck_require__(7920); +var ajv -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -function _default(entities) { - entities.sort(function (a, b) { - return a.indices[0] - b.indices[0]; - }); - var prev = entities[0]; +function createAjvInstance () { + var ajv = new Ajv({ + allErrors: true + }) + ajv.addMetaSchema(__webpack_require__(337)) + ajv.addSchema(schemas) - for (var i = 1; i < entities.length; i++) { - if (prev.indices[1] > entities[i].indices[0]) { - entities.splice(i, 1); - i--; - } else { - prev = entities[i]; - } - } + return ajv } -module.exports = exports.default; - -/***/ }), - -/***/ 7422: -/***/ ((module, exports, __nccwpck_require__) => { - -"use strict"; +function validate (name, data) { + data = data || {} + // validator config + ajv = ajv || createAjvInstance() -__nccwpck_require__(6880); - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; + var validate = ajv.getSchema(name + '.json') -__nccwpck_require__(1351); + return new Promise(function (resolve, reject) { + var valid = validate(data) -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -// this essentially does text.split(/<|>/) -// except that won't work in IE, where empty strings are ommitted -// so "<>".split(/<|>/) => [] in IE, but is ["", "", ""] in all others -// but "<<".split("<") => ["", "", ""] -function _default(text) { - var firstSplits = text.split('<'), - secondSplits, - allSplits = [], - split; + !valid ? reject(new HARError(validate.errors)) : resolve(data) + }) +} - for (var i = 0; i < firstSplits.length; i += 1) { - split = firstSplits[i]; +exports.afterRequest = function (data) { + return validate('afterRequest', data) +} - if (!split) { - allSplits.push(''); - } else { - secondSplits = split.split('>'); +exports.beforeRequest = function (data) { + return validate('beforeRequest', data) +} - for (var j = 0; j < secondSplits.length; j += 1) { - allSplits.push(secondSplits[j]); - } - } - } +exports.browser = function (data) { + return validate('browser', data) +} - return allSplits; +exports.cache = function (data) { + return validate('cache', data) } -module.exports = exports.default; +exports.content = function (data) { + return validate('content', data) +} -/***/ }), +exports.cookie = function (data) { + return validate('cookie', data) +} -/***/ 1232: -/***/ ((module, exports, __nccwpck_require__) => { +exports.creator = function (data) { + return validate('creator', data) +} -"use strict"; +exports.entry = function (data) { + return validate('entry', data) +} +exports.har = function (data) { + return validate('har', data) +} -var _interopRequireDefault = __nccwpck_require__(3286); +exports.header = function (data) { + return validate('header', data) +} -__nccwpck_require__(6880); +exports.log = function (data) { + return validate('log', data) +} -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = standardizeIndices; +exports.page = function (data) { + return validate('page', data) +} -__nccwpck_require__(5696); +exports.pageTimings = function (data) { + return validate('pageTimings', data) +} -__nccwpck_require__(9358); +exports.postData = function (data) { + return validate('postData', data) +} -var _getUnicodeTextLength = _interopRequireDefault(__nccwpck_require__(2091)); +exports.query = function (data) { + return validate('query', data) +} -function standardizeIndices(text, startIndex, endIndex) { - var totalUnicodeTextLength = (0, _getUnicodeTextLength["default"])(text); - var encodingDiff = text.length - totalUnicodeTextLength; +exports.request = function (data) { + return validate('request', data) +} - if (encodingDiff > 0) { - // split the string into codepoints which will map to the API's indices - var byCodePair = Array.from(text); - var beforeText = startIndex === 0 ? '' : byCodePair.slice(0, startIndex).join(''); - var actualText = byCodePair.slice(startIndex, endIndex).join(''); - return [beforeText.length, beforeText.length + actualText.length]; - } +exports.response = function (data) { + return validate('response', data) +} - return [startIndex, endIndex]; +exports.timings = function (data) { + return validate('timings', data) } -module.exports = exports.default; /***/ }), - -/***/ 3995: -/***/ ((module, exports, __nccwpck_require__) => { +/* 847 */, +/* 848 */ +/***/ (function(module, __unusedexports, __webpack_require__) { "use strict"; -var _interopRequireDefault = __nccwpck_require__(3286); - -__nccwpck_require__(6880); - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = _default; +/*eslint-disable no-bitwise*/ -__nccwpck_require__(8395); -__nccwpck_require__(1703); +var Type = __webpack_require__(755); -__nccwpck_require__(571); -var _htmlEscape = _interopRequireDefault(__nccwpck_require__(8113)); +// [ 64, 65, 66 ] -> [ padding, CR, LF ] +var BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r'; -// Copyright 2018 Twitter, Inc. -// Licensed under the Apache License, Version 2.0 -// http://www.apache.org/licenses/LICENSE-2.0 -var BOOLEAN_ATTRIBUTES = { - disabled: true, - readonly: true, - multiple: true, - checked: true -}; -function _default(attributes) { - var htmlAttrs = ''; +function resolveYamlBinary(data) { + if (data === null) return false; - for (var k in attributes) { - var v = attributes[k]; + var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP; - if (BOOLEAN_ATTRIBUTES[k]) { - v = v ? k : null; - } + // Convert one by one. + for (idx = 0; idx < max; idx++) { + code = map.indexOf(data.charAt(idx)); - if (v == null) { - continue; - } + // Skip CR/LF + if (code > 64) continue; - htmlAttrs += " ".concat((0, _htmlEscape["default"])(k), "=\"").concat((0, _htmlEscape["default"])(v.toString()), "\""); + // Fail on illegal characters + if (code < 0) return false; + + bitlen += 6; } - return htmlAttrs; + // If there are any bits left, source was corrupted + return (bitlen % 8) === 0; } -module.exports = exports.default; - -/***/ }), +function constructYamlBinary(data) { + var idx, tailbits, + input = data.replace(/[\r\n=]/g, ''), // remove CR/LF & padding to simplify scan + max = input.length, + map = BASE64_MAP, + bits = 0, + result = []; -/***/ 5030: -/***/ ((__unused_webpack_module, exports) => { + // Collect by 6*4 bits (3 bytes) -"use strict"; + for (idx = 0; idx < max; idx++) { + if ((idx % 4 === 0) && idx) { + result.push((bits >> 16) & 0xFF); + result.push((bits >> 8) & 0xFF); + result.push(bits & 0xFF); + } + bits = (bits << 6) | map.indexOf(input.charAt(idx)); + } -Object.defineProperty(exports, "__esModule", ({ value: true })); + // Dump tail -function getUserAgent() { - if (typeof navigator === "object" && "userAgent" in navigator) { - return navigator.userAgent; - } + tailbits = (max % 4) * 6; - if (typeof process === "object" && "version" in process) { - return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; + if (tailbits === 0) { + result.push((bits >> 16) & 0xFF); + result.push((bits >> 8) & 0xFF); + result.push(bits & 0xFF); + } else if (tailbits === 18) { + result.push((bits >> 10) & 0xFF); + result.push((bits >> 2) & 0xFF); + } else if (tailbits === 12) { + result.push((bits >> 4) & 0xFF); } - return ""; + return new Uint8Array(result); } -exports.getUserAgent = getUserAgent; -//# sourceMappingURL=index.js.map +function representYamlBinary(object /*, style*/) { + var result = '', bits = 0, idx, tail, + max = object.length, + map = BASE64_MAP; + // Convert every three bytes to 4 ASCII characters. -/***/ }), + for (idx = 0; idx < max; idx++) { + if ((idx % 3 === 0) && idx) { + result += map[(bits >> 18) & 0x3F]; + result += map[(bits >> 12) & 0x3F]; + result += map[(bits >> 6) & 0x3F]; + result += map[bits & 0x3F]; + } -/***/ 4886: -/***/ ((module) => { + bits = (bits << 8) + object[idx]; + } -"use strict"; + // Dump tail + tail = max % 3; -var conversions = {}; -module.exports = conversions; + if (tail === 0) { + result += map[(bits >> 18) & 0x3F]; + result += map[(bits >> 12) & 0x3F]; + result += map[(bits >> 6) & 0x3F]; + result += map[bits & 0x3F]; + } else if (tail === 2) { + result += map[(bits >> 10) & 0x3F]; + result += map[(bits >> 4) & 0x3F]; + result += map[(bits << 2) & 0x3F]; + result += map[64]; + } else if (tail === 1) { + result += map[(bits >> 2) & 0x3F]; + result += map[(bits << 4) & 0x3F]; + result += map[64]; + result += map[64]; + } -function sign(x) { - return x < 0 ? -1 : 1; + return result; } -function evenRound(x) { - // Round x to the nearest integer, choosing the even integer if it lies halfway between two. - if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor) - return Math.floor(x); - } else { - return Math.round(x); - } +function isBinary(obj) { + return Object.prototype.toString.call(obj) === '[object Uint8Array]'; } -function createNumberConversion(bitLength, typeOpts) { - if (!typeOpts.unsigned) { - --bitLength; - } - const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength); - const upperBound = Math.pow(2, bitLength) - 1; - - const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength); - const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1); - - return function(V, opts) { - if (!opts) opts = {}; - - let x = +V; - - if (opts.enforceRange) { - if (!Number.isFinite(x)) { - throw new TypeError("Argument is not a finite number"); - } +module.exports = new Type('tag:yaml.org,2002:binary', { + kind: 'scalar', + resolve: resolveYamlBinary, + construct: constructYamlBinary, + predicate: isBinary, + represent: representYamlBinary +}); - x = sign(x) * Math.floor(Math.abs(x)); - if (x < lowerBound || x > upperBound) { - throw new TypeError("Argument is not in byte range"); - } - return x; - } +/***/ }), +/* 849 */, +/* 850 */, +/* 851 */, +/* 852 */ +/***/ (function(module, __unusedexports, __webpack_require__) { - if (!isNaN(x) && opts.clamp) { - x = evenRound(x); +// Copyright 2012 Joyent, Inc. All rights reserved. - if (x < lowerBound) x = lowerBound; - if (x > upperBound) x = upperBound; - return x; - } +var assert = __webpack_require__(489); +var util = __webpack_require__(669); +var utils = __webpack_require__(909); - if (!Number.isFinite(x) || x === 0) { - return 0; - } - x = sign(x) * Math.floor(Math.abs(x)); - x = x % moduloVal; - if (!typeOpts.unsigned && x >= moduloBound) { - return x - moduloVal; - } else if (typeOpts.unsigned) { - if (x < 0) { - x += moduloVal; - } else if (x === -0) { // don't return negative zero - return 0; - } - } +///--- Globals - return x; - } -} +var HASH_ALGOS = utils.HASH_ALGOS; +var PK_ALGOS = utils.PK_ALGOS; +var HttpSignatureError = utils.HttpSignatureError; +var InvalidAlgorithmError = utils.InvalidAlgorithmError; +var validateAlgorithm = utils.validateAlgorithm; -conversions["void"] = function () { - return undefined; +var State = { + New: 0, + Params: 1 }; -conversions["boolean"] = function (val) { - return !!val; +var ParamsState = { + Name: 0, + Quote: 1, + Value: 2, + Comma: 3 }; -conversions["byte"] = createNumberConversion(8, { unsigned: false }); -conversions["octet"] = createNumberConversion(8, { unsigned: true }); - -conversions["short"] = createNumberConversion(16, { unsigned: false }); -conversions["unsigned short"] = createNumberConversion(16, { unsigned: true }); -conversions["long"] = createNumberConversion(32, { unsigned: false }); -conversions["unsigned long"] = createNumberConversion(32, { unsigned: true }); +///--- Specific Errors -conversions["long long"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 }); -conversions["unsigned long long"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 }); -conversions["double"] = function (V) { - const x = +V; +function ExpiredRequestError(message) { + HttpSignatureError.call(this, message, ExpiredRequestError); +} +util.inherits(ExpiredRequestError, HttpSignatureError); - if (!Number.isFinite(x)) { - throw new TypeError("Argument is not a finite floating-point value"); - } - return x; -}; +function InvalidHeaderError(message) { + HttpSignatureError.call(this, message, InvalidHeaderError); +} +util.inherits(InvalidHeaderError, HttpSignatureError); -conversions["unrestricted double"] = function (V) { - const x = +V; - if (isNaN(x)) { - throw new TypeError("Argument is NaN"); - } +function InvalidParamsError(message) { + HttpSignatureError.call(this, message, InvalidParamsError); +} +util.inherits(InvalidParamsError, HttpSignatureError); - return x; -}; -// not quite valid, but good enough for JS -conversions["float"] = conversions["double"]; -conversions["unrestricted float"] = conversions["unrestricted double"]; +function MissingHeaderError(message) { + HttpSignatureError.call(this, message, MissingHeaderError); +} +util.inherits(MissingHeaderError, HttpSignatureError); -conversions["DOMString"] = function (V, opts) { - if (!opts) opts = {}; +function StrictParsingError(message) { + HttpSignatureError.call(this, message, StrictParsingError); +} +util.inherits(StrictParsingError, HttpSignatureError); - if (opts.treatNullAsEmptyString && V === null) { - return ""; - } +///--- Exported API - return String(V); -}; +module.exports = { -conversions["ByteString"] = function (V, opts) { - const x = String(V); - let c = undefined; - for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) { - if (c > 255) { - throw new TypeError("Argument is not a valid bytestring"); - } + /** + * Parses the 'Authorization' header out of an http.ServerRequest object. + * + * Note that this API will fully validate the Authorization header, and throw + * on any error. It will not however check the signature, or the keyId format + * as those are specific to your environment. You can use the options object + * to pass in extra constraints. + * + * As a response object you can expect this: + * + * { + * "scheme": "Signature", + * "params": { + * "keyId": "foo", + * "algorithm": "rsa-sha256", + * "headers": [ + * "date" or "x-date", + * "digest" + * ], + * "signature": "base64" + * }, + * "signingString": "ready to be passed to crypto.verify()" + * } + * + * @param {Object} request an http.ServerRequest. + * @param {Object} options an optional options object with: + * - clockSkew: allowed clock skew in seconds (default 300). + * - headers: required header names (def: date or x-date) + * - algorithms: algorithms to support (default: all). + * - strict: should enforce latest spec parsing + * (default: false). + * @return {Object} parsed out object (see above). + * @throws {TypeError} on invalid input. + * @throws {InvalidHeaderError} on an invalid Authorization header error. + * @throws {InvalidParamsError} if the params in the scheme are invalid. + * @throws {MissingHeaderError} if the params indicate a header not present, + * either in the request headers from the params, + * or not in the params from a required header + * in options. + * @throws {StrictParsingError} if old attributes are used in strict parsing + * mode. + * @throws {ExpiredRequestError} if the value of date or x-date exceeds skew. + */ + parseRequest: function parseRequest(request, options) { + assert.object(request, 'request'); + assert.object(request.headers, 'request.headers'); + if (options === undefined) { + options = {}; + } + if (options.headers === undefined) { + options.headers = [request.headers['x-date'] ? 'x-date' : 'date']; } + assert.object(options, 'options'); + assert.arrayOfString(options.headers, 'options.headers'); + assert.optionalFinite(options.clockSkew, 'options.clockSkew'); - return x; -}; + var authzHeaderName = options.authorizationHeaderName || 'authorization'; -conversions["USVString"] = function (V) { - const S = String(V); - const n = S.length; - const U = []; - for (let i = 0; i < n; ++i) { - const c = S.charCodeAt(i); - if (c < 0xD800 || c > 0xDFFF) { - U.push(String.fromCodePoint(c)); - } else if (0xDC00 <= c && c <= 0xDFFF) { - U.push(String.fromCodePoint(0xFFFD)); - } else { - if (i === n - 1) { - U.push(String.fromCodePoint(0xFFFD)); - } else { - const d = S.charCodeAt(i + 1); - if (0xDC00 <= d && d <= 0xDFFF) { - const a = c & 0x3FF; - const b = d & 0x3FF; - U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b)); - ++i; - } else { - U.push(String.fromCodePoint(0xFFFD)); - } - } - } + if (!request.headers[authzHeaderName]) { + throw new MissingHeaderError('no ' + authzHeaderName + ' header ' + + 'present in the request'); } - return U.join(''); -}; + options.clockSkew = options.clockSkew || 300; -conversions["Date"] = function (V, opts) { - if (!(V instanceof Date)) { - throw new TypeError("Argument is not a Date object"); - } - if (isNaN(V)) { - return undefined; - } - return V; -}; + var i = 0; + var state = State.New; + var substate = ParamsState.Name; + var tmpName = ''; + var tmpValue = ''; + + var parsed = { + scheme: '', + params: {}, + signingString: '' + }; -conversions["RegExp"] = function (V, opts) { - if (!(V instanceof RegExp)) { - V = new RegExp(V); - } + var authz = request.headers[authzHeaderName]; + for (i = 0; i < authz.length; i++) { + var c = authz.charAt(i); - return V; -}; + switch (Number(state)) { + case State.New: + if (c !== ' ') parsed.scheme += c; + else state = State.Params; + break; -/***/ }), + case State.Params: + switch (Number(substate)) { + + case ParamsState.Name: + var code = c.charCodeAt(0); + // restricted name of A-Z / a-z + if ((code >= 0x41 && code <= 0x5a) || // A-Z + (code >= 0x61 && code <= 0x7a)) { // a-z + tmpName += c; + } else if (c === '=') { + if (tmpName.length === 0) + throw new InvalidHeaderError('bad param format'); + substate = ParamsState.Quote; + } else { + throw new InvalidHeaderError('bad param format'); + } + break; -/***/ 7537: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + case ParamsState.Quote: + if (c === '"') { + tmpValue = ''; + substate = ParamsState.Value; + } else { + throw new InvalidHeaderError('bad param format'); + } + break; -"use strict"; + case ParamsState.Value: + if (c === '"') { + parsed.params[tmpName] = tmpValue; + substate = ParamsState.Comma; + } else { + tmpValue += c; + } + break; -const usm = __nccwpck_require__(2158); + case ParamsState.Comma: + if (c === ',') { + tmpName = ''; + substate = ParamsState.Name; + } else { + throw new InvalidHeaderError('bad param format'); + } + break; -exports.implementation = class URLImpl { - constructor(constructorArgs) { - const url = constructorArgs[0]; - const base = constructorArgs[1]; + default: + throw new Error('Invalid substate'); + } + break; - let parsedBase = null; - if (base !== undefined) { - parsedBase = usm.basicURLParse(base); - if (parsedBase === "failure") { - throw new TypeError("Invalid base URL"); + default: + throw new Error('Invalid substate'); } + } - const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase }); - if (parsedURL === "failure") { - throw new TypeError("Invalid URL"); + if (!parsed.params.headers || parsed.params.headers === '') { + if (request.headers['x-date']) { + parsed.params.headers = ['x-date']; + } else { + parsed.params.headers = ['date']; + } + } else { + parsed.params.headers = parsed.params.headers.split(' '); } - this._url = parsedURL; + // Minimally validate the parsed object + if (!parsed.scheme || parsed.scheme !== 'Signature') + throw new InvalidHeaderError('scheme was not "Signature"'); - // TODO: query stuff - } + if (!parsed.params.keyId) + throw new InvalidHeaderError('keyId was not specified'); - get href() { - return usm.serializeURL(this._url); - } + if (!parsed.params.algorithm) + throw new InvalidHeaderError('algorithm was not specified'); - set href(v) { - const parsedURL = usm.basicURLParse(v); - if (parsedURL === "failure") { - throw new TypeError("Invalid URL"); - } + if (!parsed.params.signature) + throw new InvalidHeaderError('signature was not specified'); - this._url = parsedURL; - } + // Check the algorithm against the official list + parsed.params.algorithm = parsed.params.algorithm.toLowerCase(); + try { + validateAlgorithm(parsed.params.algorithm); + } catch (e) { + if (e instanceof InvalidAlgorithmError) + throw (new InvalidParamsError(parsed.params.algorithm + ' is not ' + + 'supported')); + else + throw (e); + } + + // Build the signingString + for (i = 0; i < parsed.params.headers.length; i++) { + var h = parsed.params.headers[i].toLowerCase(); + parsed.params.headers[i] = h; + + if (h === 'request-line') { + if (!options.strict) { + /* + * We allow headers from the older spec drafts if strict parsing isn't + * specified in options. + */ + parsed.signingString += + request.method + ' ' + request.url + ' HTTP/' + request.httpVersion; + } else { + /* Strict parsing doesn't allow older draft headers. */ + throw (new StrictParsingError('request-line is not a valid header ' + + 'with strict parsing enabled.')); + } + } else if (h === '(request-target)') { + parsed.signingString += + '(request-target): ' + request.method.toLowerCase() + ' ' + + request.url; + } else { + var value = request.headers[h]; + if (value === undefined) + throw new MissingHeaderError(h + ' was not in the request'); + parsed.signingString += h + ': ' + value; + } - get origin() { - return usm.serializeURLOrigin(this._url); - } + if ((i + 1) < parsed.params.headers.length) + parsed.signingString += '\n'; + } - get protocol() { - return this._url.scheme + ":"; - } + // Check against the constraints + var date; + if (request.headers.date || request.headers['x-date']) { + if (request.headers['x-date']) { + date = new Date(request.headers['x-date']); + } else { + date = new Date(request.headers.date); + } + var now = new Date(); + var skew = Math.abs(now.getTime() - date.getTime()); - set protocol(v) { - usm.basicURLParse(v + ":", { url: this._url, stateOverride: "scheme start" }); - } + if (skew > options.clockSkew * 1000) { + throw new ExpiredRequestError('clock skew of ' + + (skew / 1000) + + 's was greater than ' + + options.clockSkew + 's'); + } + } - get username() { - return this._url.username; - } + options.headers.forEach(function (hdr) { + // Remember that we already checked any headers in the params + // were in the request, so if this passes we're good. + if (parsed.params.headers.indexOf(hdr.toLowerCase()) < 0) + throw new MissingHeaderError(hdr + ' was not a signed header'); + }); - set username(v) { - if (usm.cannotHaveAUsernamePasswordPort(this._url)) { - return; + if (options.algorithms) { + if (options.algorithms.indexOf(parsed.params.algorithm) === -1) + throw new InvalidParamsError(parsed.params.algorithm + + ' is not a supported algorithm'); } - usm.setTheUsername(this._url, v); - } - - get password() { - return this._url.password; + parsed.algorithm = parsed.params.algorithm.toUpperCase(); + parsed.keyId = parsed.params.keyId; + return parsed; } - set password(v) { - if (usm.cannotHaveAUsernamePasswordPort(this._url)) { - return; - } +}; - usm.setThePassword(this._url, v); - } - get host() { - const url = this._url; +/***/ }), +/* 853 */ +/***/ (function(module, __unusedexports, __webpack_require__) { - if (url.host === null) { - return ""; - } +// 7.1.15 ToLength +var toInteger = __webpack_require__(43); +var min = Math.min; +module.exports = function (it) { + return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 +}; - if (url.port === null) { - return usm.serializeHost(url.host); - } - return usm.serializeHost(url.host) + ":" + usm.serializeInteger(url.port); - } +/***/ }), +/* 854 */ +/***/ (function(module, __unusedexports, __webpack_require__) { - set host(v) { - if (this._url.cannotBeABaseURL) { - return; - } +// Copyright 2015 Joyent, Inc. - usm.basicURLParse(v, { url: this._url, stateOverride: "host" }); - } +module.exports = { + read: read, + write: write +}; - get hostname() { - if (this._url.host === null) { - return ""; - } +var assert = __webpack_require__(489); +var Buffer = __webpack_require__(726).Buffer; +var rfc4253 = __webpack_require__(538); +var utils = __webpack_require__(270); +var Key = __webpack_require__(500); +var PrivateKey = __webpack_require__(502); - return usm.serializeHost(this._url.host); - } +var sshpriv = __webpack_require__(862); - set hostname(v) { - if (this._url.cannotBeABaseURL) { - return; - } +/*JSSTYLED*/ +var SSHKEY_RE = /^([a-z0-9-]+)[ \t]+([a-zA-Z0-9+\/]+[=]*)([ \t]+([^ \t][^\n]*[\n]*)?)?$/; +/*JSSTYLED*/ +var SSHKEY_RE2 = /^([a-z0-9-]+)[ \t\n]+([a-zA-Z0-9+\/][a-zA-Z0-9+\/ \t\n=]*)([^a-zA-Z0-9+\/ \t\n=].*)?$/; - usm.basicURLParse(v, { url: this._url, stateOverride: "hostname" }); - } +function read(buf, options) { + if (typeof (buf) !== 'string') { + assert.buffer(buf, 'buf'); + buf = buf.toString('ascii'); + } - get port() { - if (this._url.port === null) { - return ""; - } + var trimmed = buf.trim().replace(/[\\\r]/g, ''); + var m = trimmed.match(SSHKEY_RE); + if (!m) + m = trimmed.match(SSHKEY_RE2); + assert.ok(m, 'key must match regex'); - return usm.serializeInteger(this._url.port); - } + var type = rfc4253.algToKeyType(m[1]); + var kbuf = Buffer.from(m[2], 'base64'); - set port(v) { - if (usm.cannotHaveAUsernamePasswordPort(this._url)) { - return; - } + /* + * This is a bit tricky. If we managed to parse the key and locate the + * key comment with the regex, then do a non-partial read and assert + * that we have consumed all bytes. If we couldn't locate the key + * comment, though, there may be whitespace shenanigans going on that + * have conjoined the comment to the rest of the key. We do a partial + * read in this case to try to make the best out of a sorry situation. + */ + var key; + var ret = {}; + if (m[4]) { + try { + key = rfc4253.read(kbuf); + + } catch (e) { + m = trimmed.match(SSHKEY_RE2); + assert.ok(m, 'key must match regex'); + kbuf = Buffer.from(m[2], 'base64'); + key = rfc4253.readInternal(ret, 'public', kbuf); + } + } else { + key = rfc4253.readInternal(ret, 'public', kbuf); + } - if (v === "") { - this._url.port = null; - } else { - usm.basicURLParse(v, { url: this._url, stateOverride: "port" }); - } - } + assert.strictEqual(type, key.type); + + if (m[4] && m[4].length > 0) { + key.comment = m[4]; + + } else if (ret.consumed) { + /* + * Now the magic: trying to recover the key comment when it's + * gotten conjoined to the key or otherwise shenanigan'd. + * + * Work out how much base64 we used, then drop all non-base64 + * chars from the beginning up to this point in the the string. + * Then offset in this and try to make up for missing = chars. + */ + var data = m[2] + (m[3] ? m[3] : ''); + var realOffset = Math.ceil(ret.consumed / 3) * 4; + data = data.slice(0, realOffset - 2). /*JSSTYLED*/ + replace(/[^a-zA-Z0-9+\/=]/g, '') + + data.slice(realOffset - 2); + + var padding = ret.consumed % 3; + if (padding > 0 && + data.slice(realOffset - 1, realOffset) !== '=') + realOffset--; + while (data.slice(realOffset, realOffset + 1) === '=') + realOffset++; + + /* Finally, grab what we think is the comment & clean it up. */ + var trailer = data.slice(realOffset); + trailer = trailer.replace(/[\r\n]/g, ' '). + replace(/^\s+/, ''); + if (trailer.match(/^[a-zA-Z0-9]/)) + key.comment = trailer; + } - get pathname() { - if (this._url.cannotBeABaseURL) { - return this._url.path[0]; - } + return (key); +} - if (this._url.path.length === 0) { - return ""; - } +function write(key, options) { + assert.object(key); + if (!Key.isKey(key)) + throw (new Error('Must be a public key')); - return "/" + this._url.path.join("/"); - } + var parts = []; + var alg = rfc4253.keyTypeToAlg(key); + parts.push(alg); - set pathname(v) { - if (this._url.cannotBeABaseURL) { - return; - } + var buf = rfc4253.write(key); + parts.push(buf.toString('base64')); - this._url.path = []; - usm.basicURLParse(v, { url: this._url, stateOverride: "path start" }); - } + if (key.comment) + parts.push(key.comment); - get search() { - if (this._url.query === null || this._url.query === "") { - return ""; - } + return (Buffer.from(parts.join(' '))); +} - return "?" + this._url.query; - } - set search(v) { - // TODO: query stuff +/***/ }), +/* 855 */ +/***/ (function(module, __unusedexports, __webpack_require__) { - const url = this._url; +"use strict"; - if (v === "") { - url.query = null; - return; - } - const input = v[0] === "?" ? v.substring(1) : v; - url.query = ""; - usm.basicURLParse(input, { url, stateOverride: "query" }); - } - get hash() { - if (this._url.fragment === null || this._url.fragment === "") { - return ""; - } +module.exports = { + copy: copy, + checkDataType: checkDataType, + checkDataTypes: checkDataTypes, + coerceToTypes: coerceToTypes, + toHash: toHash, + getProperty: getProperty, + escapeQuotes: escapeQuotes, + equal: __webpack_require__(264), + ucs2length: __webpack_require__(691), + varOccurences: varOccurences, + varReplace: varReplace, + schemaHasRules: schemaHasRules, + schemaHasRulesExcept: schemaHasRulesExcept, + schemaUnknownRules: schemaUnknownRules, + toQuotedString: toQuotedString, + getPathExpr: getPathExpr, + getPath: getPath, + getData: getData, + unescapeFragment: unescapeFragment, + unescapeJsonPointer: unescapeJsonPointer, + escapeFragment: escapeFragment, + escapeJsonPointer: escapeJsonPointer +}; - return "#" + this._url.fragment; - } - set hash(v) { - if (v === "") { - this._url.fragment = null; - return; - } +function copy(o, to) { + to = to || {}; + for (var key in o) to[key] = o[key]; + return to; +} - const input = v[0] === "#" ? v.substring(1) : v; - this._url.fragment = ""; - usm.basicURLParse(input, { url: this._url, stateOverride: "fragment" }); - } - toJSON() { - return this.href; +function checkDataType(dataType, data, strictNumbers, negate) { + var EQUAL = negate ? ' !== ' : ' === ' + , AND = negate ? ' || ' : ' && ' + , OK = negate ? '!' : '' + , NOT = negate ? '' : '!'; + switch (dataType) { + case 'null': return data + EQUAL + 'null'; + case 'array': return OK + 'Array.isArray(' + data + ')'; + case 'object': return '(' + OK + data + AND + + 'typeof ' + data + EQUAL + '"object"' + AND + + NOT + 'Array.isArray(' + data + '))'; + case 'integer': return '(typeof ' + data + EQUAL + '"number"' + AND + + NOT + '(' + data + ' % 1)' + + AND + data + EQUAL + data + + (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')'; + case 'number': return '(typeof ' + data + EQUAL + '"' + dataType + '"' + + (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')'; + default: return 'typeof ' + data + EQUAL + '"' + dataType + '"'; } -}; +} -/***/ }), +function checkDataTypes(dataTypes, data, strictNumbers) { + switch (dataTypes.length) { + case 1: return checkDataType(dataTypes[0], data, strictNumbers, true); + default: + var code = ''; + var types = toHash(dataTypes); + if (types.array && types.object) { + code = types.null ? '(': '(!' + data + ' || '; + code += 'typeof ' + data + ' !== "object")'; + delete types.null; + delete types.array; + delete types.object; + } + if (types.number) delete types.integer; + for (var t in types) + code += (code ? ' && ' : '' ) + checkDataType(t, data, strictNumbers, true); -/***/ 3394: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + return code; + } +} -"use strict"; +var COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]); +function coerceToTypes(optionCoerceTypes, dataTypes) { + if (Array.isArray(dataTypes)) { + var types = []; + for (var i=0; i= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl); + return paths[lvl - up]; + } + + if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl); + data = 'data' + ((lvl - up) || ''); + if (!jsonPointer) return data; } -}; + + var expr = data; + var segments = jsonPointer.split('/'); + for (var i=0; i { +function unescapeFragment(str) { + return unescapeJsonPointer(decodeURIComponent(str)); +} -"use strict"; +function escapeFragment(str) { + return encodeURIComponent(escapeJsonPointer(str)); +} -exports.URL = __nccwpck_require__(3394)["interface"]; -exports.serializeURL = __nccwpck_require__(2158).serializeURL; -exports.serializeURLOrigin = __nccwpck_require__(2158).serializeURLOrigin; -exports.basicURLParse = __nccwpck_require__(2158).basicURLParse; -exports.setTheUsername = __nccwpck_require__(2158).setTheUsername; -exports.setThePassword = __nccwpck_require__(2158).setThePassword; -exports.serializeHost = __nccwpck_require__(2158).serializeHost; -exports.serializeInteger = __nccwpck_require__(2158).serializeInteger; -exports.parseURL = __nccwpck_require__(2158).parseURL; +function escapeJsonPointer(str) { + return str.replace(/~/g, '~0').replace(/\//g, '~1'); +} -/***/ }), -/***/ 2158: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +function unescapeJsonPointer(str) { + return str.replace(/~1/g, '/').replace(/~0/g, '~'); +} + + +/***/ }), +/* 856 */ +/***/ (function(module, __unusedexports, __webpack_require__) { "use strict"; -const punycode = __nccwpck_require__(5477); -const tr46 = __nccwpck_require__(4256); +const punycode = __webpack_require__(213); +const tr46 = __webpack_require__(530); const specialSchemes = { ftp: 21, @@ -31722,386 +49581,8428 @@ module.exports.parseURL = function (input, options) { /***/ }), - -/***/ 3185: -/***/ ((module) => { +/* 857 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +var stream = __webpack_require__(413) + + +function isStream (obj) { + return obj instanceof stream.Stream +} + + +function isReadable (obj) { + return isStream(obj) && typeof obj._read == 'function' && typeof obj._readableState == 'object' +} + + +function isWritable (obj) { + return isStream(obj) && typeof obj._write == 'function' && typeof obj._writableState == 'object' +} + + +function isDuplex (obj) { + return isReadable(obj) && isWritable(obj) +} + + +module.exports = isStream +module.exports.isReadable = isReadable +module.exports.isWritable = isWritable +module.exports.isDuplex = isDuplex + + +/***/ }), +/* 858 */ +/***/ (function(module) { + +"use strict"; + +module.exports = function generate_required(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + var $vSchema = 'schema' + $lvl; + if (!$isData) { + if ($schema.length < it.opts.loopRequired && it.schema.properties && Object.keys(it.schema.properties).length) { + var $required = []; + var arr1 = $schema; + if (arr1) { + var $property, i1 = -1, + l1 = arr1.length - 1; + while (i1 < l1) { + $property = arr1[i1 += 1]; + var $propertySch = it.schema.properties[$property]; + if (!($propertySch && (it.opts.strictKeywords ? (typeof $propertySch == 'object' && Object.keys($propertySch).length > 0) || $propertySch === false : it.util.schemaHasRules($propertySch, it.RULES.all)))) { + $required[$required.length] = $property; + } + } + } + } else { + var $required = $schema; + } + } + if ($isData || $required.length) { + var $currentErrorPath = it.errorPath, + $loopRequired = $isData || $required.length >= it.opts.loopRequired, + $ownProperties = it.opts.ownProperties; + if ($breakOnError) { + out += ' var missing' + ($lvl) + '; '; + if ($loopRequired) { + if (!$isData) { + out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; '; + } + var $i = 'i' + $lvl, + $propertyPath = 'schema' + $lvl + '[' + $i + ']', + $missingProperty = '\' + ' + $propertyPath + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); + } + out += ' var ' + ($valid) + ' = true; '; + if ($isData) { + out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {'; + } + out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] !== undefined '; + if ($ownProperties) { + out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) '; + } + out += '; if (!' + ($valid) + ') break; } '; + if ($isData) { + out += ' } '; + } + out += ' if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else { '; + } else { + out += ' if ( '; + var arr2 = $required; + if (arr2) { + var $propertyKey, $i = -1, + l2 = arr2.length - 1; + while ($i < l2) { + $propertyKey = arr2[$i += 1]; + if ($i) { + out += ' || '; + } + var $prop = it.util.getProperty($propertyKey), + $useData = $data + $prop; + out += ' ( ( ' + ($useData) + ' === undefined '; + if ($ownProperties) { + out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; + } + out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) '; + } + } + out += ') { '; + var $propertyPath = 'missing' + $lvl, + $missingProperty = '\' + ' + $propertyPath + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath; + } + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else { '; + } + } else { + if ($loopRequired) { + if (!$isData) { + out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; '; + } + var $i = 'i' + $lvl, + $propertyPath = 'schema' + $lvl + '[' + $i + ']', + $missingProperty = '\' + ' + $propertyPath + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); + } + if ($isData) { + out += ' if (' + ($vSchema) + ' && !Array.isArray(' + ($vSchema) + ')) { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (' + ($vSchema) + ' !== undefined) { '; + } + out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { if (' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] === undefined '; + if ($ownProperties) { + out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) '; + } + out += ') { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } '; + if ($isData) { + out += ' } '; + } + } else { + var arr3 = $required; + if (arr3) { + var $propertyKey, i3 = -1, + l3 = arr3.length - 1; + while (i3 < l3) { + $propertyKey = arr3[i3 += 1]; + var $prop = it.util.getProperty($propertyKey), + $missingProperty = it.util.escapeQuotes($propertyKey), + $useData = $data + $prop; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); + } + out += ' if ( ' + ($useData) + ' === undefined '; + if ($ownProperties) { + out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; + } + out += ') { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } '; + } + } + } + } + it.errorPath = $currentErrorPath; + } else if ($breakOnError) { + out += ' if (true) {'; + } + return out; +} + + +/***/ }), +/* 859 */, +/* 860 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; + +var _invalidChars = _interopRequireDefault(__webpack_require__(516)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text) { + return _invalidChars["default"].test(text); +} + +module.exports = exports.default; + +/***/ }), +/* 861 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlScheme = /(?:[a-z][a-z0-9+\-.]*)/i; +var _default = validateUrlScheme; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 862 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +// Copyright 2015 Joyent, Inc. + +module.exports = { + read: read, + readSSHPrivate: readSSHPrivate, + write: write +}; + +var assert = __webpack_require__(489); +var asn1 = __webpack_require__(325); +var Buffer = __webpack_require__(726).Buffer; +var algs = __webpack_require__(603); +var utils = __webpack_require__(270); +var crypto = __webpack_require__(417); + +var Key = __webpack_require__(500); +var PrivateKey = __webpack_require__(502); +var pem = __webpack_require__(268); +var rfc4253 = __webpack_require__(538); +var SSHBuffer = __webpack_require__(940); +var errors = __webpack_require__(570); + +var bcrypt; + +function read(buf, options) { + return (pem.read(buf, options)); +} + +var MAGIC = 'openssh-key-v1'; + +function readSSHPrivate(type, buf, options) { + buf = new SSHBuffer({buffer: buf}); + + var magic = buf.readCString(); + assert.strictEqual(magic, MAGIC, 'bad magic string'); + + var cipher = buf.readString(); + var kdf = buf.readString(); + var kdfOpts = buf.readBuffer(); + + var nkeys = buf.readInt(); + if (nkeys !== 1) { + throw (new Error('OpenSSH-format key file contains ' + + 'multiple keys: this is unsupported.')); + } + + var pubKey = buf.readBuffer(); + + if (type === 'public') { + assert.ok(buf.atEnd(), 'excess bytes left after key'); + return (rfc4253.read(pubKey)); + } + + var privKeyBlob = buf.readBuffer(); + assert.ok(buf.atEnd(), 'excess bytes left after key'); + + var kdfOptsBuf = new SSHBuffer({ buffer: kdfOpts }); + switch (kdf) { + case 'none': + if (cipher !== 'none') { + throw (new Error('OpenSSH-format key uses KDF "none" ' + + 'but specifies a cipher other than "none"')); + } + break; + case 'bcrypt': + var salt = kdfOptsBuf.readBuffer(); + var rounds = kdfOptsBuf.readInt(); + var cinf = utils.opensshCipherInfo(cipher); + if (bcrypt === undefined) { + bcrypt = __webpack_require__(641); + } + + if (typeof (options.passphrase) === 'string') { + options.passphrase = Buffer.from(options.passphrase, + 'utf-8'); + } + if (!Buffer.isBuffer(options.passphrase)) { + throw (new errors.KeyEncryptedError( + options.filename, 'OpenSSH')); + } + + var pass = new Uint8Array(options.passphrase); + var salti = new Uint8Array(salt); + /* Use the pbkdf to derive both the key and the IV. */ + var out = new Uint8Array(cinf.keySize + cinf.blockSize); + var res = bcrypt.pbkdf(pass, pass.length, salti, salti.length, + out, out.length, rounds); + if (res !== 0) { + throw (new Error('bcrypt_pbkdf function returned ' + + 'failure, parameters invalid')); + } + out = Buffer.from(out); + var ckey = out.slice(0, cinf.keySize); + var iv = out.slice(cinf.keySize, cinf.keySize + cinf.blockSize); + var cipherStream = crypto.createDecipheriv(cinf.opensslName, + ckey, iv); + cipherStream.setAutoPadding(false); + var chunk, chunks = []; + cipherStream.once('error', function (e) { + if (e.toString().indexOf('bad decrypt') !== -1) { + throw (new Error('Incorrect passphrase ' + + 'supplied, could not decrypt key')); + } + throw (e); + }); + cipherStream.write(privKeyBlob); + cipherStream.end(); + while ((chunk = cipherStream.read()) !== null) + chunks.push(chunk); + privKeyBlob = Buffer.concat(chunks); + break; + default: + throw (new Error( + 'OpenSSH-format key uses unknown KDF "' + kdf + '"')); + } + + buf = new SSHBuffer({buffer: privKeyBlob}); + + var checkInt1 = buf.readInt(); + var checkInt2 = buf.readInt(); + if (checkInt1 !== checkInt2) { + throw (new Error('Incorrect passphrase supplied, could not ' + + 'decrypt key')); + } + + var ret = {}; + var key = rfc4253.readInternal(ret, 'private', buf.remainder()); + + buf.skip(ret.consumed); + + var comment = buf.readString(); + key.comment = comment; + + return (key); +} + +function write(key, options) { + var pubKey; + if (PrivateKey.isPrivateKey(key)) + pubKey = key.toPublic(); + else + pubKey = key; + + var cipher = 'none'; + var kdf = 'none'; + var kdfopts = Buffer.alloc(0); + var cinf = { blockSize: 8 }; + var passphrase; + if (options !== undefined) { + passphrase = options.passphrase; + if (typeof (passphrase) === 'string') + passphrase = Buffer.from(passphrase, 'utf-8'); + if (passphrase !== undefined) { + assert.buffer(passphrase, 'options.passphrase'); + assert.optionalString(options.cipher, 'options.cipher'); + cipher = options.cipher; + if (cipher === undefined) + cipher = 'aes128-ctr'; + cinf = utils.opensshCipherInfo(cipher); + kdf = 'bcrypt'; + } + } + + var privBuf; + if (PrivateKey.isPrivateKey(key)) { + privBuf = new SSHBuffer({}); + var checkInt = crypto.randomBytes(4).readUInt32BE(0); + privBuf.writeInt(checkInt); + privBuf.writeInt(checkInt); + privBuf.write(key.toBuffer('rfc4253')); + privBuf.writeString(key.comment || ''); + + var n = 1; + while (privBuf._offset % cinf.blockSize !== 0) + privBuf.writeChar(n++); + privBuf = privBuf.toBuffer(); + } + + switch (kdf) { + case 'none': + break; + case 'bcrypt': + var salt = crypto.randomBytes(16); + var rounds = 16; + var kdfssh = new SSHBuffer({}); + kdfssh.writeBuffer(salt); + kdfssh.writeInt(rounds); + kdfopts = kdfssh.toBuffer(); + + if (bcrypt === undefined) { + bcrypt = __webpack_require__(641); + } + var pass = new Uint8Array(passphrase); + var salti = new Uint8Array(salt); + /* Use the pbkdf to derive both the key and the IV. */ + var out = new Uint8Array(cinf.keySize + cinf.blockSize); + var res = bcrypt.pbkdf(pass, pass.length, salti, salti.length, + out, out.length, rounds); + if (res !== 0) { + throw (new Error('bcrypt_pbkdf function returned ' + + 'failure, parameters invalid')); + } + out = Buffer.from(out); + var ckey = out.slice(0, cinf.keySize); + var iv = out.slice(cinf.keySize, cinf.keySize + cinf.blockSize); + + var cipherStream = crypto.createCipheriv(cinf.opensslName, + ckey, iv); + cipherStream.setAutoPadding(false); + var chunk, chunks = []; + cipherStream.once('error', function (e) { + throw (e); + }); + cipherStream.write(privBuf); + cipherStream.end(); + while ((chunk = cipherStream.read()) !== null) + chunks.push(chunk); + privBuf = Buffer.concat(chunks); + break; + default: + throw (new Error('Unsupported kdf ' + kdf)); + } + + var buf = new SSHBuffer({}); + + buf.writeCString(MAGIC); + buf.writeString(cipher); /* cipher */ + buf.writeString(kdf); /* kdf */ + buf.writeBuffer(kdfopts); /* kdfoptions */ + + buf.writeInt(1); /* nkeys */ + buf.writeBuffer(pubKey.toBuffer('rfc4253')); + + if (privBuf) + buf.writeBuffer(privBuf); + + buf = buf.toBuffer(); + + var header; + if (PrivateKey.isPrivateKey(key)) + header = 'OPENSSH PRIVATE KEY'; + else + header = 'OPENSSH PUBLIC KEY'; + + var tmp = buf.toString('base64'); + var len = tmp.length + (tmp.length / 70) + + 18 + 16 + header.length*2 + 10; + buf = Buffer.alloc(len); + var o = 0; + o += buf.write('-----BEGIN ' + header + '-----\n', o); + for (var i = 0; i < tmp.length; ) { + var limit = i + 70; + if (limit > tmp.length) + limit = tmp.length; + o += buf.write(tmp.slice(i, limit), o); + buf[o++] = 10; + i = limit; + } + o += buf.write('-----END ' + header + '-----\n', o); + + return (buf.slice(0, o)); +} + + +/***/ }), +/* 863 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +/*eslint-disable max-len*/ + +var YAMLException = __webpack_require__(652); +var Type = __webpack_require__(755); + + +function compileList(schema, name) { + var result = []; + + schema[name].forEach(function (currentType) { + var newIndex = result.length; + + result.forEach(function (previousType, previousIndex) { + if (previousType.tag === currentType.tag && + previousType.kind === currentType.kind && + previousType.multi === currentType.multi) { + + newIndex = previousIndex; + } + }); + + result[newIndex] = currentType; + }); + + return result; +} + + +function compileMap(/* lists... */) { + var result = { + scalar: {}, + sequence: {}, + mapping: {}, + fallback: {}, + multi: { + scalar: [], + sequence: [], + mapping: [], + fallback: [] + } + }, index, length; + + function collectType(type) { + if (type.multi) { + result.multi[type.kind].push(type); + result.multi['fallback'].push(type); + } else { + result[type.kind][type.tag] = result['fallback'][type.tag] = type; + } + } + + for (index = 0, length = arguments.length; index < length; index += 1) { + arguments[index].forEach(collectType); + } + return result; +} + + +function Schema(definition) { + return this.extend(definition); +} + + +Schema.prototype.extend = function extend(definition) { + var implicit = []; + var explicit = []; + + if (definition instanceof Type) { + // Schema.extend(type) + explicit.push(definition); + + } else if (Array.isArray(definition)) { + // Schema.extend([ type1, type2, ... ]) + explicit = explicit.concat(definition); + + } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) { + // Schema.extend({ explicit: [ type1, type2, ... ], implicit: [ type1, type2, ... ] }) + if (definition.implicit) implicit = implicit.concat(definition.implicit); + if (definition.explicit) explicit = explicit.concat(definition.explicit); + + } else { + throw new YAMLException('Schema.extend argument should be a Type, [ Type ], ' + + 'or a schema definition ({ implicit: [...], explicit: [...] })'); + } + + implicit.forEach(function (type) { + if (!(type instanceof Type)) { + throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.'); + } + + if (type.loadKind && type.loadKind !== 'scalar') { + throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.'); + } + + if (type.multi) { + throw new YAMLException('There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.'); + } + }); + + explicit.forEach(function (type) { + if (!(type instanceof Type)) { + throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.'); + } + }); + + var result = Object.create(Schema.prototype); + + result.implicit = (this.implicit || []).concat(implicit); + result.explicit = (this.explicit || []).concat(explicit); + + result.compiledImplicit = compileList(result, 'implicit'); + result.compiledExplicit = compileList(result, 'explicit'); + result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit); + + return result; +}; + + +module.exports = Schema; + + +/***/ }), +/* 864 */, +/* 865 */, +/* 866 */ +/***/ (function(module) { + +module.exports = removeHook; + +function removeHook(state, name, method) { + if (!state.registry[name]) { + return; + } + + var index = state.registry[name] + .map(function (registered) { + return registered.orig; + }) + .indexOf(method); + + if (index === -1) { + return; + } + + state.registry[name].splice(index, 1); +} + + +/***/ }), +/* 867 */ +/***/ (function(module) { + +module.exports = require("tty"); + +/***/ }), +/* 868 */, +/* 869 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; + +var _extractMentionsOrListsWithIndices = _interopRequireDefault(__webpack_require__(680)); + +var _autoLinkEntities = _interopRequireDefault(__webpack_require__(93)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text, options) { + var entities = (0, _extractMentionsOrListsWithIndices["default"])(text); + return (0, _autoLinkEntities["default"])(text, entities, options); +} + +module.exports = exports.default; + +/***/ }), +/* 870 */, +/* 871 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +// Punting on real IPv6 validation for now +var validateUrlIpv6 = /(?:\[[a-f0-9:\.]+\])/i; +var _default = validateUrlIpv6; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 872 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlDomainTld = /(?:[a-z](?:[a-z0-9\-]*[a-z0-9])?)/i; +var _default = validateUrlDomainTld; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 873 */, +/* 874 */, +/* 875 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + + +var net = __webpack_require__(631) + , tls = __webpack_require__(16) + , http = __webpack_require__(605) + , https = __webpack_require__(211) + , events = __webpack_require__(614) + , assert = __webpack_require__(357) + , util = __webpack_require__(669) + , Buffer = __webpack_require__(149).Buffer + ; + +exports.httpOverHttp = httpOverHttp +exports.httpsOverHttp = httpsOverHttp +exports.httpOverHttps = httpOverHttps +exports.httpsOverHttps = httpsOverHttps + + +function httpOverHttp(options) { + var agent = new TunnelingAgent(options) + agent.request = http.request + return agent +} + +function httpsOverHttp(options) { + var agent = new TunnelingAgent(options) + agent.request = http.request + agent.createSocket = createSecureSocket + agent.defaultPort = 443 + return agent +} + +function httpOverHttps(options) { + var agent = new TunnelingAgent(options) + agent.request = https.request + return agent +} + +function httpsOverHttps(options) { + var agent = new TunnelingAgent(options) + agent.request = https.request + agent.createSocket = createSecureSocket + agent.defaultPort = 443 + return agent +} + + +function TunnelingAgent(options) { + var self = this + self.options = options || {} + self.proxyOptions = self.options.proxy || {} + self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets + self.requests = [] + self.sockets = [] + + self.on('free', function onFree(socket, host, port) { + for (var i = 0, len = self.requests.length; i < len; ++i) { + var pending = self.requests[i] + if (pending.host === host && pending.port === port) { + // Detect the request to connect same origin server, + // reuse the connection. + self.requests.splice(i, 1) + pending.request.onSocket(socket) + return + } + } + socket.destroy() + self.removeSocket(socket) + }) +} +util.inherits(TunnelingAgent, events.EventEmitter) + +TunnelingAgent.prototype.addRequest = function addRequest(req, options) { + var self = this + + // Legacy API: addRequest(req, host, port, path) + if (typeof options === 'string') { + options = { + host: options, + port: arguments[2], + path: arguments[3] + }; + } + + if (self.sockets.length >= this.maxSockets) { + // We are over limit so we'll add it to the queue. + self.requests.push({host: options.host, port: options.port, request: req}) + return + } + + // If we are under maxSockets create a new one. + self.createConnection({host: options.host, port: options.port, request: req}) +} + +TunnelingAgent.prototype.createConnection = function createConnection(pending) { + var self = this + + self.createSocket(pending, function(socket) { + socket.on('free', onFree) + socket.on('close', onCloseOrRemove) + socket.on('agentRemove', onCloseOrRemove) + pending.request.onSocket(socket) + + function onFree() { + self.emit('free', socket, pending.host, pending.port) + } + + function onCloseOrRemove(err) { + self.removeSocket(socket) + socket.removeListener('free', onFree) + socket.removeListener('close', onCloseOrRemove) + socket.removeListener('agentRemove', onCloseOrRemove) + } + }) +} + +TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { + var self = this + var placeholder = {} + self.sockets.push(placeholder) + + var connectOptions = mergeOptions({}, self.proxyOptions, + { method: 'CONNECT' + , path: options.host + ':' + options.port + , agent: false + } + ) + if (connectOptions.proxyAuth) { + connectOptions.headers = connectOptions.headers || {} + connectOptions.headers['Proxy-Authorization'] = 'Basic ' + + Buffer.from(connectOptions.proxyAuth).toString('base64') + } + + debug('making CONNECT request') + var connectReq = self.request(connectOptions) + connectReq.useChunkedEncodingByDefault = false // for v0.6 + connectReq.once('response', onResponse) // for v0.6 + connectReq.once('upgrade', onUpgrade) // for v0.6 + connectReq.once('connect', onConnect) // for v0.7 or later + connectReq.once('error', onError) + connectReq.end() + + function onResponse(res) { + // Very hacky. This is necessary to avoid http-parser leaks. + res.upgrade = true + } + + function onUpgrade(res, socket, head) { + // Hacky. + process.nextTick(function() { + onConnect(res, socket, head) + }) + } + + function onConnect(res, socket, head) { + connectReq.removeAllListeners() + socket.removeAllListeners() + + if (res.statusCode === 200) { + assert.equal(head.length, 0) + debug('tunneling connection has established') + self.sockets[self.sockets.indexOf(placeholder)] = socket + cb(socket) + } else { + debug('tunneling socket could not be established, statusCode=%d', res.statusCode) + var error = new Error('tunneling socket could not be established, ' + 'statusCode=' + res.statusCode) + error.code = 'ECONNRESET' + options.request.emit('error', error) + self.removeSocket(placeholder) + } + } + + function onError(cause) { + connectReq.removeAllListeners() + + debug('tunneling socket could not be established, cause=%s\n', cause.message, cause.stack) + var error = new Error('tunneling socket could not be established, ' + 'cause=' + cause.message) + error.code = 'ECONNRESET' + options.request.emit('error', error) + self.removeSocket(placeholder) + } +} + +TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { + var pos = this.sockets.indexOf(socket) + if (pos === -1) return + + this.sockets.splice(pos, 1) + + var pending = this.requests.shift() + if (pending) { + // If we have pending requests and a socket gets closed a new one + // needs to be created to take over in the pool for the one that closed. + this.createConnection(pending) + } +} + +function createSecureSocket(options, cb) { + var self = this + TunnelingAgent.prototype.createSocket.call(self, options, function(socket) { + // 0 is dummy port for v0.6 + var secureSocket = tls.connect(0, mergeOptions({}, self.options, + { servername: options.host + , socket: socket + } + )) + self.sockets[self.sockets.indexOf(socket)] = secureSocket + cb(secureSocket) + }) +} + + +function mergeOptions(target) { + for (var i = 1, len = arguments.length; i < len; ++i) { + var overrides = arguments[i] + if (typeof overrides === 'object') { + var keys = Object.keys(overrides) + for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { + var k = keys[j] + if (overrides[k] !== undefined) { + target[k] = overrides[k] + } + } + } + } + return target +} + + +var debug +if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { + debug = function() { + var args = Array.prototype.slice.call(arguments) + if (typeof args[0] === 'string') { + args[0] = 'TUNNEL: ' + args[0] + } else { + args.unshift('TUNNEL:') + } + console.error.apply(console, args) + } +} else { + debug = function() {} +} +exports.debug = debug // for test + + +/***/ }), +/* 876 */, +/* 877 */, +/* 878 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; +// Copyright 2010-2012 Mikeal Rogers +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + + +var extend = __webpack_require__(374) +var cookies = __webpack_require__(602) +var helpers = __webpack_require__(151) + +var paramsHaveRequestBody = helpers.paramsHaveRequestBody + +// organize params for patch, post, put, head, del +function initParams (uri, options, callback) { + if (typeof options === 'function') { + callback = options + } + + var params = {} + if (typeof options === 'object') { + extend(params, options, {uri: uri}) + } else if (typeof uri === 'string') { + extend(params, {uri: uri}) + } else { + extend(params, uri) + } + + params.callback = callback || params.callback + return params +} + +function request (uri, options, callback) { + if (typeof uri === 'undefined') { + throw new Error('undefined is not a valid uri or options object.') + } + + var params = initParams(uri, options, callback) + + if (params.method === 'HEAD' && paramsHaveRequestBody(params)) { + throw new Error('HTTP HEAD requests MUST NOT include a request body.') + } + + return new request.Request(params) +} + +function verbFunc (verb) { + var method = verb.toUpperCase() + return function (uri, options, callback) { + var params = initParams(uri, options, callback) + params.method = method + return request(params, params.callback) + } +} + +// define like this to please codeintel/intellisense IDEs +request.get = verbFunc('get') +request.head = verbFunc('head') +request.options = verbFunc('options') +request.post = verbFunc('post') +request.put = verbFunc('put') +request.patch = verbFunc('patch') +request.del = verbFunc('delete') +request['delete'] = verbFunc('delete') + +request.jar = function (store) { + return cookies.jar(store) +} + +request.cookie = function (str) { + return cookies.parse(str) +} + +function wrapRequestMethod (method, options, requester, verb) { + return function (uri, opts, callback) { + var params = initParams(uri, opts, callback) + + var target = {} + extend(true, target, options, params) + + target.pool = params.pool || options.pool + + if (verb) { + target.method = verb.toUpperCase() + } + + if (typeof requester === 'function') { + method = requester + } + + return method(target, target.callback) + } +} + +request.defaults = function (options, requester) { + var self = this + + options = options || {} + + if (typeof options === 'function') { + requester = options + options = {} + } + + var defaults = wrapRequestMethod(self, options, requester) + + var verbs = ['get', 'head', 'post', 'put', 'patch', 'del', 'delete'] + verbs.forEach(function (verb) { + defaults[verb] = wrapRequestMethod(self[verb], options, requester, verb) + }) + + defaults.cookie = wrapRequestMethod(self.cookie, options, requester) + defaults.jar = self.jar + defaults.defaults = self.defaults + return defaults +} + +request.forever = function (agentOptions, optionsArg) { + var options = {} + if (optionsArg) { + extend(options, optionsArg) + } + if (agentOptions) { + options.agentOptions = agentOptions + } + + options.forever = true + return request.defaults(options) +} + +// Exports + +module.exports = request +request.Request = __webpack_require__(455) +request.initParams = initParams + +// Backwards compatibility for request.debug +Object.defineProperty(request, 'debug', { + enumerable: true, + get: function () { + return request.Request.debug + }, + set: function (debug) { + request.Request.debug = debug + } +}) + + +/***/ }), +/* 879 */, +/* 880 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +const conversions = __webpack_require__(751); +const utils = __webpack_require__(120); +const Impl = __webpack_require__(197); + +const impl = utils.implSymbol; + +function URL(url) { + if (!this || this[impl] || !(this instanceof URL)) { + throw new TypeError("Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function."); + } + if (arguments.length < 1) { + throw new TypeError("Failed to construct 'URL': 1 argument required, but only " + arguments.length + " present."); + } + const args = []; + for (let i = 0; i < arguments.length && i < 2; ++i) { + args[i] = arguments[i]; + } + args[0] = conversions["USVString"](args[0]); + if (args[1] !== undefined) { + args[1] = conversions["USVString"](args[1]); + } + + module.exports.setup(this, args); +} + +URL.prototype.toJSON = function toJSON() { + if (!this || !module.exports.is(this)) { + throw new TypeError("Illegal invocation"); + } + const args = []; + for (let i = 0; i < arguments.length && i < 0; ++i) { + args[i] = arguments[i]; + } + return this[impl].toJSON.apply(this[impl], args); +}; +Object.defineProperty(URL.prototype, "href", { + get() { + return this[impl].href; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].href = V; + }, + enumerable: true, + configurable: true +}); + +URL.prototype.toString = function () { + if (!this || !module.exports.is(this)) { + throw new TypeError("Illegal invocation"); + } + return this.href; +}; + +Object.defineProperty(URL.prototype, "origin", { + get() { + return this[impl].origin; + }, + enumerable: true, + configurable: true +}); + +Object.defineProperty(URL.prototype, "protocol", { + get() { + return this[impl].protocol; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].protocol = V; + }, + enumerable: true, + configurable: true +}); + +Object.defineProperty(URL.prototype, "username", { + get() { + return this[impl].username; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].username = V; + }, + enumerable: true, + configurable: true +}); + +Object.defineProperty(URL.prototype, "password", { + get() { + return this[impl].password; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].password = V; + }, + enumerable: true, + configurable: true +}); + +Object.defineProperty(URL.prototype, "host", { + get() { + return this[impl].host; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].host = V; + }, + enumerable: true, + configurable: true +}); + +Object.defineProperty(URL.prototype, "hostname", { + get() { + return this[impl].hostname; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].hostname = V; + }, + enumerable: true, + configurable: true +}); + +Object.defineProperty(URL.prototype, "port", { + get() { + return this[impl].port; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].port = V; + }, + enumerable: true, + configurable: true +}); + +Object.defineProperty(URL.prototype, "pathname", { + get() { + return this[impl].pathname; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].pathname = V; + }, + enumerable: true, + configurable: true +}); + +Object.defineProperty(URL.prototype, "search", { + get() { + return this[impl].search; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].search = V; + }, + enumerable: true, + configurable: true +}); + +Object.defineProperty(URL.prototype, "hash", { + get() { + return this[impl].hash; + }, + set(V) { + V = conversions["USVString"](V); + this[impl].hash = V; + }, + enumerable: true, + configurable: true +}); + + +module.exports = { + is(obj) { + return !!obj && obj[impl] instanceof Impl.implementation; + }, + create(constructorArgs, privateData) { + let obj = Object.create(URL.prototype); + this.setup(obj, constructorArgs, privateData); + return obj; + }, + setup(obj, constructorArgs, privateData) { + if (!privateData) privateData = {}; + privateData.wrapper = obj; + + obj[impl] = new Impl.implementation(constructorArgs, privateData); + obj[impl][utils.wrapperSymbol] = obj; + }, + interface: URL, + expose: { + Window: { URL: URL }, + Worker: { URL: URL } + } +}; + + + +/***/ }), +/* 881 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +var core = __webpack_require__(245); +var global = __webpack_require__(300); +var SHARED = '__core-js_shared__'; +var store = global[SHARED] || (global[SHARED] = {}); + +(module.exports = function (key, value) { + return store[key] || (store[key] = value !== undefined ? value : {}); +})('versions', []).push({ + version: core.version, + mode: __webpack_require__(9) ? 'pure' : 'global', + copyright: '© 2020 Denis Pushkarev (zloirock.ru)' +}); + + +/***/ }), +/* 882 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var Type = __webpack_require__(755); + +function resolveYamlBoolean(data) { + if (data === null) return false; + + var max = data.length; + + return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) || + (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE')); +} + +function constructYamlBoolean(data) { + return data === 'true' || + data === 'True' || + data === 'TRUE'; +} + +function isBoolean(object) { + return Object.prototype.toString.call(object) === '[object Boolean]'; +} + +module.exports = new Type('tag:yaml.org,2002:bool', { + kind: 'scalar', + resolve: resolveYamlBoolean, + construct: constructYamlBoolean, + predicate: isBoolean, + represent: { + lowercase: function (object) { return object ? 'true' : 'false'; }, + uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; }, + camelcase: function (object) { return object ? 'True' : 'False'; } + }, + defaultStyle: 'lowercase' +}); + + +/***/ }), +/* 883 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +var global = __webpack_require__(300); +var core = __webpack_require__(245); +var LIBRARY = __webpack_require__(9); +var wksExt = __webpack_require__(209); +var defineProperty = __webpack_require__(973).f; +module.exports = function (name) { + var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {}); + if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) }); +}; + + +/***/ }), +/* 884 */, +/* 885 */, +/* 886 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +// Generated from unicode_regex/unicode_regex_groups.scala, same as objective c's \p{L}\p{M} +var bmpLetterAndMarks = /A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0300-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u0483-\u052f\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05d0-\u05ea\u05f0-\u05f2\u0610-\u061a\u0620-\u065f\u066e-\u06d3\u06d5-\u06dc\u06df-\u06e8\u06ea-\u06ef\u06fa-\u06fc\u06ff\u0710-\u074a\u074d-\u07b1\u07ca-\u07f5\u07fa\u0800-\u082d\u0840-\u085b\u08a0-\u08b2\u08e4-\u0963\u0971-\u0983\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7\u09c8\u09cb-\u09ce\u09d7\u09dc\u09dd\u09df-\u09e3\u09f0\u09f1\u0a01-\u0a03\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a70-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0b01-\u0b03\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b5c\u0b5d\u0b5f-\u0b63\u0b71\u0b82\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0c00-\u0c03\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c58\u0c59\u0c60-\u0c63\u0c81-\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0cde\u0ce0-\u0ce3\u0cf1\u0cf2\u0d01-\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d-\u0d44\u0d46-\u0d48\u0d4a-\u0d4e\u0d57\u0d60-\u0d63\u0d7a-\u0d7f\u0d82\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e01-\u0e3a\u0e40-\u0e4e\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb9\u0ebb-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0edc-\u0edf\u0f00\u0f18\u0f19\u0f35\u0f37\u0f39\u0f3e-\u0f47\u0f49-\u0f6c\u0f71-\u0f84\u0f86-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u103f\u1050-\u108f\u109a-\u109d\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u135d-\u135f\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16f1-\u16f8\u1700-\u170c\u170e-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772\u1773\u1780-\u17d3\u17d7\u17dc\u17dd\u180b-\u180d\u1820-\u1877\u1880-\u18aa\u18b0-\u18f5\u1900-\u191e\u1920-\u192b\u1930-\u193b\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a1b\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f\u1aa7\u1ab0-\u1abe\u1b00-\u1b4b\u1b6b-\u1b73\u1b80-\u1baf\u1bba-\u1bf3\u1c00-\u1c37\u1c4d-\u1c4f\u1c5a-\u1c7d\u1cd0-\u1cd2\u1cd4-\u1cf6\u1cf8\u1cf9\u1d00-\u1df5\u1dfc-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u20d0-\u20f0\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2183\u2184\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d7f-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2de0-\u2dff\u2e2f\u3005\u3006\u302a-\u302f\u3031-\u3035\u303b\u303c\u3041-\u3096\u3099\u309a\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua672\ua674-\ua67d\ua67f-\ua69d\ua69f-\ua6e5\ua6f0\ua6f1\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua7ad\ua7b0\ua7b1\ua7f7-\ua827\ua840-\ua873\ua880-\ua8c4\ua8e0-\ua8f7\ua8fb\ua90a-\ua92d\ua930-\ua953\ua960-\ua97c\ua980-\ua9c0\ua9cf\ua9e0-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa36\uaa40-\uaa4d\uaa60-\uaa76\uaa7a-\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf6\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab5f\uab64\uab65\uabc0-\uabea\uabec\uabed\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf870-\uf87f\uf882\uf884-\uf89f\uf8b8\uf8c1-\uf8d6\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe00-\ufe0f\ufe20-\ufe2d\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc/; +var _default = bmpLetterAndMarks; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 887 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +// 22.1.3.31 Array.prototype[@@unscopables] +var UNSCOPABLES = __webpack_require__(621)('unscopables'); +var ArrayProto = Array.prototype; +if (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(609)(ArrayProto, UNSCOPABLES, {}); +module.exports = function (key) { + ArrayProto[UNSCOPABLES][key] = true; +}; + + +/***/ }), +/* 888 */, +/* 889 */, +/* 890 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var MissingRefError = __webpack_require__(580).MissingRef; + +module.exports = compileAsync; + + +/** + * Creates validating function for passed schema with asynchronous loading of missing schemas. + * `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema. + * @this Ajv + * @param {Object} schema schema object + * @param {Boolean} meta optional true to compile meta-schema; this parameter can be skipped + * @param {Function} callback an optional node-style callback, it is called with 2 parameters: error (or null) and validating function. + * @return {Promise} promise that resolves with a validating function. + */ +function compileAsync(schema, meta, callback) { + /* eslint no-shadow: 0 */ + /* global Promise */ + /* jshint validthis: true */ + var self = this; + if (typeof this._opts.loadSchema != 'function') + throw new Error('options.loadSchema should be a function'); + + if (typeof meta == 'function') { + callback = meta; + meta = undefined; + } + + var p = loadMetaSchemaOf(schema).then(function () { + var schemaObj = self._addSchema(schema, undefined, meta); + return schemaObj.validate || _compileAsync(schemaObj); + }); + + if (callback) { + p.then( + function(v) { callback(null, v); }, + callback + ); + } + + return p; + + + function loadMetaSchemaOf(sch) { + var $schema = sch.$schema; + return $schema && !self.getSchema($schema) + ? compileAsync.call(self, { $ref: $schema }, true) + : Promise.resolve(); + } + + + function _compileAsync(schemaObj) { + try { return self._compile(schemaObj); } + catch(e) { + if (e instanceof MissingRefError) return loadMissingSchema(e); + throw e; + } + + + function loadMissingSchema(e) { + var ref = e.missingSchema; + if (added(ref)) throw new Error('Schema ' + ref + ' is loaded but ' + e.missingRef + ' cannot be resolved'); + + var schemaPromise = self._loadingSchemas[ref]; + if (!schemaPromise) { + schemaPromise = self._loadingSchemas[ref] = self._opts.loadSchema(ref); + schemaPromise.then(removePromise, removePromise); + } + + return schemaPromise.then(function (sch) { + if (!added(ref)) { + return loadMetaSchemaOf(sch).then(function () { + if (!added(ref)) self.addSchema(sch, ref, undefined, meta); + }); + } + }).then(function() { + return _compileAsync(schemaObj); + }); + + function removePromise() { + delete self._loadingSchemas[ref]; + } + + function added(ref) { + return self._refs[ref] || self._schemas[ref]; + } + } + } +} + + +/***/ }), +/* 891 */, +/* 892 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; +/*! + * Copyright (c) 2015, Salesforce.com, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. Neither the name of Salesforce.com nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +var net = __webpack_require__(631); +var urlParse = __webpack_require__(835).parse; +var util = __webpack_require__(669); +var pubsuffix = __webpack_require__(519); +var Store = __webpack_require__(627).Store; +var MemoryCookieStore = __webpack_require__(349).MemoryCookieStore; +var pathMatch = __webpack_require__(54).pathMatch; +var VERSION = __webpack_require__(158).version; + +var punycode; +try { + punycode = __webpack_require__(213); +} catch(e) { + console.warn("tough-cookie: can't load punycode; won't use punycode for domain normalization"); +} + +// From RFC6265 S4.1.1 +// note that it excludes \x3B ";" +var COOKIE_OCTETS = /^[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]+$/; + +var CONTROL_CHARS = /[\x00-\x1F]/; + +// From Chromium // '\r', '\n' and '\0' should be treated as a terminator in +// the "relaxed" mode, see: +// https://github.com/ChromiumWebApps/chromium/blob/b3d3b4da8bb94c1b2e061600df106d590fda3620/net/cookies/parsed_cookie.cc#L60 +var TERMINATORS = ['\n', '\r', '\0']; + +// RFC6265 S4.1.1 defines path value as 'any CHAR except CTLs or ";"' +// Note ';' is \x3B +var PATH_VALUE = /[\x20-\x3A\x3C-\x7E]+/; + +// date-time parsing constants (RFC6265 S5.1.1) + +var DATE_DELIM = /[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/; + +var MONTH_TO_NUM = { + jan:0, feb:1, mar:2, apr:3, may:4, jun:5, + jul:6, aug:7, sep:8, oct:9, nov:10, dec:11 +}; +var NUM_TO_MONTH = [ + 'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec' +]; +var NUM_TO_DAY = [ + 'Sun','Mon','Tue','Wed','Thu','Fri','Sat' +]; + +var MAX_TIME = 2147483647000; // 31-bit max +var MIN_TIME = 0; // 31-bit min + +/* + * Parses a Natural number (i.e., non-negative integer) with either the + * *DIGIT ( non-digit *OCTET ) + * or + * *DIGIT + * grammar (RFC6265 S5.1.1). + * + * The "trailingOK" boolean controls if the grammar accepts a + * "( non-digit *OCTET )" trailer. + */ +function parseDigits(token, minDigits, maxDigits, trailingOK) { + var count = 0; + while (count < token.length) { + var c = token.charCodeAt(count); + // "non-digit = %x00-2F / %x3A-FF" + if (c <= 0x2F || c >= 0x3A) { + break; + } + count++; + } + + // constrain to a minimum and maximum number of digits. + if (count < minDigits || count > maxDigits) { + return null; + } + + if (!trailingOK && count != token.length) { + return null; + } + + return parseInt(token.substr(0,count), 10); +} + +function parseTime(token) { + var parts = token.split(':'); + var result = [0,0,0]; + + /* RF6256 S5.1.1: + * time = hms-time ( non-digit *OCTET ) + * hms-time = time-field ":" time-field ":" time-field + * time-field = 1*2DIGIT + */ + + if (parts.length !== 3) { + return null; + } + + for (var i = 0; i < 3; i++) { + // "time-field" must be strictly "1*2DIGIT", HOWEVER, "hms-time" can be + // followed by "( non-digit *OCTET )" so therefore the last time-field can + // have a trailer + var trailingOK = (i == 2); + var num = parseDigits(parts[i], 1, 2, trailingOK); + if (num === null) { + return null; + } + result[i] = num; + } + + return result; +} + +function parseMonth(token) { + token = String(token).substr(0,3).toLowerCase(); + var num = MONTH_TO_NUM[token]; + return num >= 0 ? num : null; +} + +/* + * RFC6265 S5.1.1 date parser (see RFC for full grammar) + */ +function parseDate(str) { + if (!str) { + return; + } + + /* RFC6265 S5.1.1: + * 2. Process each date-token sequentially in the order the date-tokens + * appear in the cookie-date + */ + var tokens = str.split(DATE_DELIM); + if (!tokens) { + return; + } + + var hour = null; + var minute = null; + var second = null; + var dayOfMonth = null; + var month = null; + var year = null; + + for (var i=0; i= 70 && year <= 99) { + year += 1900; + } else if (year >= 0 && year <= 69) { + year += 2000; + } + } + } + } + + /* RFC 6265 S5.1.1 + * "5. Abort these steps and fail to parse the cookie-date if: + * * at least one of the found-day-of-month, found-month, found- + * year, or found-time flags is not set, + * * the day-of-month-value is less than 1 or greater than 31, + * * the year-value is less than 1601, + * * the hour-value is greater than 23, + * * the minute-value is greater than 59, or + * * the second-value is greater than 59. + * (Note that leap seconds cannot be represented in this syntax.)" + * + * So, in order as above: + */ + if ( + dayOfMonth === null || month === null || year === null || second === null || + dayOfMonth < 1 || dayOfMonth > 31 || + year < 1601 || + hour > 23 || + minute > 59 || + second > 59 + ) { + return; + } + + return new Date(Date.UTC(year, month, dayOfMonth, hour, minute, second)); +} + +function formatDate(date) { + var d = date.getUTCDate(); d = d >= 10 ? d : '0'+d; + var h = date.getUTCHours(); h = h >= 10 ? h : '0'+h; + var m = date.getUTCMinutes(); m = m >= 10 ? m : '0'+m; + var s = date.getUTCSeconds(); s = s >= 10 ? s : '0'+s; + return NUM_TO_DAY[date.getUTCDay()] + ', ' + + d+' '+ NUM_TO_MONTH[date.getUTCMonth()] +' '+ date.getUTCFullYear() +' '+ + h+':'+m+':'+s+' GMT'; +} + +// S5.1.2 Canonicalized Host Names +function canonicalDomain(str) { + if (str == null) { + return null; + } + str = str.trim().replace(/^\./,''); // S4.1.2.3 & S5.2.3: ignore leading . + + // convert to IDN if any non-ASCII characters + if (punycode && /[^\u0001-\u007f]/.test(str)) { + str = punycode.toASCII(str); + } + + return str.toLowerCase(); +} + +// S5.1.3 Domain Matching +function domainMatch(str, domStr, canonicalize) { + if (str == null || domStr == null) { + return null; + } + if (canonicalize !== false) { + str = canonicalDomain(str); + domStr = canonicalDomain(domStr); + } + + /* + * "The domain string and the string are identical. (Note that both the + * domain string and the string will have been canonicalized to lower case at + * this point)" + */ + if (str == domStr) { + return true; + } + + /* "All of the following [three] conditions hold:" (order adjusted from the RFC) */ + + /* "* The string is a host name (i.e., not an IP address)." */ + if (net.isIP(str)) { + return false; + } + + /* "* The domain string is a suffix of the string" */ + var idx = str.indexOf(domStr); + if (idx <= 0) { + return false; // it's a non-match (-1) or prefix (0) + } + + // e.g "a.b.c".indexOf("b.c") === 2 + // 5 === 3+2 + if (str.length !== domStr.length + idx) { // it's not a suffix + return false; + } + + /* "* The last character of the string that is not included in the domain + * string is a %x2E (".") character." */ + if (str.substr(idx-1,1) !== '.') { + return false; + } + + return true; +} + + +// RFC6265 S5.1.4 Paths and Path-Match + +/* + * "The user agent MUST use an algorithm equivalent to the following algorithm + * to compute the default-path of a cookie:" + * + * Assumption: the path (and not query part or absolute uri) is passed in. + */ +function defaultPath(path) { + // "2. If the uri-path is empty or if the first character of the uri-path is not + // a %x2F ("/") character, output %x2F ("/") and skip the remaining steps. + if (!path || path.substr(0,1) !== "/") { + return "/"; + } + + // "3. If the uri-path contains no more than one %x2F ("/") character, output + // %x2F ("/") and skip the remaining step." + if (path === "/") { + return path; + } + + var rightSlash = path.lastIndexOf("/"); + if (rightSlash === 0) { + return "/"; + } + + // "4. Output the characters of the uri-path from the first character up to, + // but not including, the right-most %x2F ("/")." + return path.slice(0, rightSlash); +} + +function trimTerminator(str) { + for (var t = 0; t < TERMINATORS.length; t++) { + var terminatorIdx = str.indexOf(TERMINATORS[t]); + if (terminatorIdx !== -1) { + str = str.substr(0,terminatorIdx); + } + } + + return str; +} + +function parseCookiePair(cookiePair, looseMode) { + cookiePair = trimTerminator(cookiePair); + + var firstEq = cookiePair.indexOf('='); + if (looseMode) { + if (firstEq === 0) { // '=' is immediately at start + cookiePair = cookiePair.substr(1); + firstEq = cookiePair.indexOf('='); // might still need to split on '=' + } + } else { // non-loose mode + if (firstEq <= 0) { // no '=' or is at start + return; // needs to have non-empty "cookie-name" + } + } + + var cookieName, cookieValue; + if (firstEq <= 0) { + cookieName = ""; + cookieValue = cookiePair.trim(); + } else { + cookieName = cookiePair.substr(0, firstEq).trim(); + cookieValue = cookiePair.substr(firstEq+1).trim(); + } + + if (CONTROL_CHARS.test(cookieName) || CONTROL_CHARS.test(cookieValue)) { + return; + } + + var c = new Cookie(); + c.key = cookieName; + c.value = cookieValue; + return c; +} + +function parse(str, options) { + if (!options || typeof options !== 'object') { + options = {}; + } + str = str.trim(); + + // We use a regex to parse the "name-value-pair" part of S5.2 + var firstSemi = str.indexOf(';'); // S5.2 step 1 + var cookiePair = (firstSemi === -1) ? str : str.substr(0, firstSemi); + var c = parseCookiePair(cookiePair, !!options.loose); + if (!c) { + return; + } + + if (firstSemi === -1) { + return c; + } + + // S5.2.3 "unparsed-attributes consist of the remainder of the set-cookie-string + // (including the %x3B (";") in question)." plus later on in the same section + // "discard the first ";" and trim". + var unparsed = str.slice(firstSemi + 1).trim(); + + // "If the unparsed-attributes string is empty, skip the rest of these + // steps." + if (unparsed.length === 0) { + return c; + } + + /* + * S5.2 says that when looping over the items "[p]rocess the attribute-name + * and attribute-value according to the requirements in the following + * subsections" for every item. Plus, for many of the individual attributes + * in S5.3 it says to use the "attribute-value of the last attribute in the + * cookie-attribute-list". Therefore, in this implementation, we overwrite + * the previous value. + */ + var cookie_avs = unparsed.split(';'); + while (cookie_avs.length) { + var av = cookie_avs.shift().trim(); + if (av.length === 0) { // happens if ";;" appears + continue; + } + var av_sep = av.indexOf('='); + var av_key, av_value; + + if (av_sep === -1) { + av_key = av; + av_value = null; + } else { + av_key = av.substr(0,av_sep); + av_value = av.substr(av_sep+1); + } + + av_key = av_key.trim().toLowerCase(); + + if (av_value) { + av_value = av_value.trim(); + } + + switch(av_key) { + case 'expires': // S5.2.1 + if (av_value) { + var exp = parseDate(av_value); + // "If the attribute-value failed to parse as a cookie date, ignore the + // cookie-av." + if (exp) { + // over and underflow not realistically a concern: V8's getTime() seems to + // store something larger than a 32-bit time_t (even with 32-bit node) + c.expires = exp; + } + } + break; + + case 'max-age': // S5.2.2 + if (av_value) { + // "If the first character of the attribute-value is not a DIGIT or a "-" + // character ...[or]... If the remainder of attribute-value contains a + // non-DIGIT character, ignore the cookie-av." + if (/^-?[0-9]+$/.test(av_value)) { + var delta = parseInt(av_value, 10); + // "If delta-seconds is less than or equal to zero (0), let expiry-time + // be the earliest representable date and time." + c.setMaxAge(delta); + } + } + break; + + case 'domain': // S5.2.3 + // "If the attribute-value is empty, the behavior is undefined. However, + // the user agent SHOULD ignore the cookie-av entirely." + if (av_value) { + // S5.2.3 "Let cookie-domain be the attribute-value without the leading %x2E + // (".") character." + var domain = av_value.trim().replace(/^\./, ''); + if (domain) { + // "Convert the cookie-domain to lower case." + c.domain = domain.toLowerCase(); + } + } + break; + + case 'path': // S5.2.4 + /* + * "If the attribute-value is empty or if the first character of the + * attribute-value is not %x2F ("/"): + * Let cookie-path be the default-path. + * Otherwise: + * Let cookie-path be the attribute-value." + * + * We'll represent the default-path as null since it depends on the + * context of the parsing. + */ + c.path = av_value && av_value[0] === "/" ? av_value : null; + break; + + case 'secure': // S5.2.5 + /* + * "If the attribute-name case-insensitively matches the string "Secure", + * the user agent MUST append an attribute to the cookie-attribute-list + * with an attribute-name of Secure and an empty attribute-value." + */ + c.secure = true; + break; + + case 'httponly': // S5.2.6 -- effectively the same as 'secure' + c.httpOnly = true; + break; + + default: + c.extensions = c.extensions || []; + c.extensions.push(av); + break; + } + } + + return c; +} + +// avoid the V8 deoptimization monster! +function jsonParse(str) { + var obj; + try { + obj = JSON.parse(str); + } catch (e) { + return e; + } + return obj; +} + +function fromJSON(str) { + if (!str) { + return null; + } + + var obj; + if (typeof str === 'string') { + obj = jsonParse(str); + if (obj instanceof Error) { + return null; + } + } else { + // assume it's an Object + obj = str; + } + + var c = new Cookie(); + for (var i=0; i 1) { + var lindex = path.lastIndexOf('/'); + if (lindex === 0) { + break; + } + path = path.substr(0,lindex); + permutations.push(path); + } + permutations.push('/'); + return permutations; +} + +function getCookieContext(url) { + if (url instanceof Object) { + return url; + } + // NOTE: decodeURI will throw on malformed URIs (see GH-32). + // Therefore, we will just skip decoding for such URIs. + try { + url = decodeURI(url); + } + catch(err) { + // Silently swallow error + } + + return urlParse(url); +} + +function Cookie(options) { + options = options || {}; + + Object.keys(options).forEach(function(prop) { + if (Cookie.prototype.hasOwnProperty(prop) && + Cookie.prototype[prop] !== options[prop] && + prop.substr(0,1) !== '_') + { + this[prop] = options[prop]; + } + }, this); + + this.creation = this.creation || new Date(); + + // used to break creation ties in cookieCompare(): + Object.defineProperty(this, 'creationIndex', { + configurable: false, + enumerable: false, // important for assert.deepEqual checks + writable: true, + value: ++Cookie.cookiesCreated + }); +} + +Cookie.cookiesCreated = 0; // incremented each time a cookie is created + +Cookie.parse = parse; +Cookie.fromJSON = fromJSON; + +Cookie.prototype.key = ""; +Cookie.prototype.value = ""; + +// the order in which the RFC has them: +Cookie.prototype.expires = "Infinity"; // coerces to literal Infinity +Cookie.prototype.maxAge = null; // takes precedence over expires for TTL +Cookie.prototype.domain = null; +Cookie.prototype.path = null; +Cookie.prototype.secure = false; +Cookie.prototype.httpOnly = false; +Cookie.prototype.extensions = null; + +// set by the CookieJar: +Cookie.prototype.hostOnly = null; // boolean when set +Cookie.prototype.pathIsDefault = null; // boolean when set +Cookie.prototype.creation = null; // Date when set; defaulted by Cookie.parse +Cookie.prototype.lastAccessed = null; // Date when set +Object.defineProperty(Cookie.prototype, 'creationIndex', { + configurable: true, + enumerable: false, + writable: true, + value: 0 +}); + +Cookie.serializableProperties = Object.keys(Cookie.prototype) + .filter(function(prop) { + return !( + Cookie.prototype[prop] instanceof Function || + prop === 'creationIndex' || + prop.substr(0,1) === '_' + ); + }); + +Cookie.prototype.inspect = function inspect() { + var now = Date.now(); + return 'Cookie="'+this.toString() + + '; hostOnly='+(this.hostOnly != null ? this.hostOnly : '?') + + '; aAge='+(this.lastAccessed ? (now-this.lastAccessed.getTime())+'ms' : '?') + + '; cAge='+(this.creation ? (now-this.creation.getTime())+'ms' : '?') + + '"'; +}; + +// Use the new custom inspection symbol to add the custom inspect function if +// available. +if (util.inspect.custom) { + Cookie.prototype[util.inspect.custom] = Cookie.prototype.inspect; +} + +Cookie.prototype.toJSON = function() { + var obj = {}; + + var props = Cookie.serializableProperties; + for (var i=0; i MAX_DOMAIN_LABEL_LENGTH) { + // DNS label has invalid length + return; + } + } + + return labels.join('.'); + } +}; +var _default = idna; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 898 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, '__esModule', { value: true }); + +var request = __webpack_require__(638); +var universalUserAgent = __webpack_require__(796); + +const VERSION = "5.0.1"; + +function _buildMessageForResponseErrors(data) { + return `Request failed due to following response errors:\n` + data.errors.map(e => ` - ${e.message}`).join("\n"); +} + +class GraphqlResponseError extends Error { + constructor(request, headers, response) { + super(_buildMessageForResponseErrors(response)); + this.request = request; + this.headers = headers; + this.response = response; + this.name = "GraphqlResponseError"; // Expose the errors and response data in their shorthand properties. + + this.errors = response.errors; + this.data = response.data; // Maintains proper stack trace (only available on V8) + + /* istanbul ignore next */ + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + } + +} + +const NON_VARIABLE_OPTIONS = ["method", "baseUrl", "url", "headers", "request", "query", "mediaType"]; +const FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"]; +const GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/; +function graphql(request, query, options) { + if (options) { + if (typeof query === "string" && "query" in options) { + return Promise.reject(new Error(`[@octokit/graphql] "query" cannot be used as variable name`)); + } + + for (const key in options) { + if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) continue; + return Promise.reject(new Error(`[@octokit/graphql] "${key}" cannot be used as variable name`)); + } + } + + const parsedOptions = typeof query === "string" ? Object.assign({ + query + }, options) : query; + const requestOptions = Object.keys(parsedOptions).reduce((result, key) => { + if (NON_VARIABLE_OPTIONS.includes(key)) { + result[key] = parsedOptions[key]; + return result; + } + + if (!result.variables) { + result.variables = {}; + } + + result.variables[key] = parsedOptions[key]; + return result; + }, {}); // workaround for GitHub Enterprise baseUrl set with /api/v3 suffix + // https://github.com/octokit/auth-app.js/issues/111#issuecomment-657610451 + + const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl; + + if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) { + requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql"); + } + + return request(requestOptions).then(response => { + if (response.data.errors) { + const headers = {}; + + for (const key of Object.keys(response.headers)) { + headers[key] = response.headers[key]; + } + + throw new GraphqlResponseError(requestOptions, headers, response.data); + } + + return response.data.data; + }); +} + +function withDefaults(request$1, newDefaults) { + const newRequest = request$1.defaults(newDefaults); + + const newApi = (query, options) => { + return graphql(newRequest, query, options); + }; + + return Object.assign(newApi, { + defaults: withDefaults.bind(null, newRequest), + endpoint: request.request.endpoint + }); +} + +const graphql$1 = withDefaults(request.request, { + headers: { + "user-agent": `octokit-graphql.js/${VERSION} ${universalUserAgent.getUserAgent()}` + }, + method: "POST", + url: "/graphql" +}); +function withCustomRequest(customRequest) { + return withDefaults(customRequest, { + method: "POST", + url: "/graphql" + }); +} + +exports.GraphqlResponseError = GraphqlResponseError; +exports.graphql = graphql$1; +exports.withCustomRequest = withCustomRequest; +//# sourceMappingURL=index.js.map + + +/***/ }), +/* 899 */ +/***/ (function(module) { + +"use strict"; + +module.exports = function generate_uniqueItems(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + if (($schema || $isData) && it.opts.uniqueItems !== false) { + if ($isData) { + out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'boolean\') ' + ($valid) + ' = false; else { '; + } + out += ' var i = ' + ($data) + '.length , ' + ($valid) + ' = true , j; if (i > 1) { '; + var $itemType = it.schema.items && it.schema.items.type, + $typeIsArray = Array.isArray($itemType); + if (!$itemType || $itemType == 'object' || $itemType == 'array' || ($typeIsArray && ($itemType.indexOf('object') >= 0 || $itemType.indexOf('array') >= 0))) { + out += ' outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } '; + } else { + out += ' var itemIndices = {}, item; for (;i--;) { var item = ' + ($data) + '[i]; '; + var $method = 'checkDataType' + ($typeIsArray ? 's' : ''); + out += ' if (' + (it.util[$method]($itemType, 'item', it.opts.strictNumbers, true)) + ') continue; '; + if ($typeIsArray) { + out += ' if (typeof item == \'string\') item = \'"\' + item; '; + } + out += ' if (typeof itemIndices[item] == \'number\') { ' + ($valid) + ' = false; j = itemIndices[item]; break; } itemIndices[item] = i; } '; + } + out += ' } '; + if ($isData) { + out += ' } '; + } + out += ' if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('uniqueItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { i: i, j: j } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have duplicate items (items ## \' + j + \' and \' + i + \' are identical)\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + if ($breakOnError) { + out += ' else { '; + } + } else { + if ($breakOnError) { + out += ' if (true) { '; + } + } + return out; +} + + +/***/ }), +/* 900 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; + +__webpack_require__(549); + +var _atSigns = _interopRequireDefault(__webpack_require__(1)); + +var _htmlEscape = _interopRequireDefault(__webpack_require__(63)); + +var _linkToText = _interopRequireDefault(__webpack_require__(583)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(entity, symbol, text, attributes, options) { + var taggedSymbol = options.symbolTag ? "<".concat(options.symbolTag, ">").concat(symbol, "") : symbol; + text = (0, _htmlEscape["default"])(text); + var taggedText = options.textWithSymbolTag ? "<".concat(options.textWithSymbolTag, ">").concat(text, "") : text; + + if (options.usernameIncludeSymbol || !symbol.match(_atSigns["default"])) { + return (0, _linkToText["default"])(entity, taggedSymbol + taggedText, attributes, options); + } else { + return taggedSymbol + (0, _linkToText["default"])(entity, taggedText, attributes, options); + } +} + +module.exports = exports.default; + +/***/ }), +/* 901 */ +/***/ (function(module) { + +module.exports = {"$id":"cache.json#","$schema":"http://json-schema.org/draft-06/schema#","properties":{"beforeRequest":{"oneOf":[{"type":"null"},{"$ref":"beforeRequest.json#"}]},"afterRequest":{"oneOf":[{"type":"null"},{"$ref":"afterRequest.json#"}]},"comment":{"type":"string"}}}; + +/***/ }), +/* 902 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + + +var qs = __webpack_require__(386) +var querystring = __webpack_require__(191) + +function Querystring (request) { + this.request = request + this.lib = null + this.useQuerystring = null + this.parseOptions = null + this.stringifyOptions = null +} + +Querystring.prototype.init = function (options) { + if (this.lib) { return } + + this.useQuerystring = options.useQuerystring + this.lib = (this.useQuerystring ? querystring : qs) + + this.parseOptions = options.qsParseOptions || {} + this.stringifyOptions = options.qsStringifyOptions || {} +} + +Querystring.prototype.stringify = function (obj) { + return (this.useQuerystring) + ? this.rfc3986(this.lib.stringify(obj, + this.stringifyOptions.sep || null, + this.stringifyOptions.eq || null, + this.stringifyOptions)) + : this.lib.stringify(obj, this.stringifyOptions) +} + +Querystring.prototype.parse = function (str) { + return (this.useQuerystring) + ? this.lib.parse(str, + this.parseOptions.sep || null, + this.parseOptions.eq || null, + this.parseOptions) + : this.lib.parse(str, this.parseOptions) +} + +Querystring.prototype.rfc3986 = function (str) { + return str.replace(/[!'()*]/g, function (c) { + return '%' + c.charCodeAt(0).toString(16).toUpperCase() + }) +} + +Querystring.prototype.unescape = querystring.unescape + +exports.Querystring = Querystring + + +/***/ }), +/* 903 */, +/* 904 */, +/* 905 */, +/* 906 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var hashtagSpecialChars = /_\u200c\u200d\ua67e\u05be\u05f3\u05f4\uff5e\u301c\u309b\u309c\u30a0\u30fb\u3003\u0f0b\u0f0c\xb7/; +var _default = hashtagSpecialChars; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 907 */ +/***/ (function(module) { + +module.exports = {}; + + +/***/ }), +/* 908 */, +/* 909 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +// Copyright 2012 Joyent, Inc. All rights reserved. + +var assert = __webpack_require__(489); +var sshpk = __webpack_require__(650); +var util = __webpack_require__(669); + +var HASH_ALGOS = { + 'sha1': true, + 'sha256': true, + 'sha512': true +}; + +var PK_ALGOS = { + 'rsa': true, + 'dsa': true, + 'ecdsa': true +}; + +function HttpSignatureError(message, caller) { + if (Error.captureStackTrace) + Error.captureStackTrace(this, caller || HttpSignatureError); + + this.message = message; + this.name = caller.name; +} +util.inherits(HttpSignatureError, Error); + +function InvalidAlgorithmError(message) { + HttpSignatureError.call(this, message, InvalidAlgorithmError); +} +util.inherits(InvalidAlgorithmError, HttpSignatureError); + +function validateAlgorithm(algorithm) { + var alg = algorithm.toLowerCase().split('-'); + + if (alg.length !== 2) { + throw (new InvalidAlgorithmError(alg[0].toUpperCase() + ' is not a ' + + 'valid algorithm')); + } + + if (alg[0] !== 'hmac' && !PK_ALGOS[alg[0]]) { + throw (new InvalidAlgorithmError(alg[0].toUpperCase() + ' type keys ' + + 'are not supported')); + } + + if (!HASH_ALGOS[alg[1]]) { + throw (new InvalidAlgorithmError(alg[1].toUpperCase() + ' is not a ' + + 'supported hash algorithm')); + } + + return (alg); +} + +///--- API + +module.exports = { + + HASH_ALGOS: HASH_ALGOS, + PK_ALGOS: PK_ALGOS, + + HttpSignatureError: HttpSignatureError, + InvalidAlgorithmError: InvalidAlgorithmError, + + validateAlgorithm: validateAlgorithm, + + /** + * Converts an OpenSSH public key (rsa only) to a PKCS#8 PEM file. + * + * The intent of this module is to interoperate with OpenSSL only, + * specifically the node crypto module's `verify` method. + * + * @param {String} key an OpenSSH public key. + * @return {String} PEM encoded form of the RSA public key. + * @throws {TypeError} on bad input. + * @throws {Error} on invalid ssh key formatted data. + */ + sshKeyToPEM: function sshKeyToPEM(key) { + assert.string(key, 'ssh_key'); + + var k = sshpk.parseKey(key, 'ssh'); + return (k.toString('pem')); + }, + + + /** + * Generates an OpenSSH fingerprint from an ssh public key. + * + * @param {String} key an OpenSSH public key. + * @return {String} key fingerprint. + * @throws {TypeError} on bad input. + * @throws {Error} if what you passed doesn't look like an ssh public key. + */ + fingerprint: function fingerprint(key) { + assert.string(key, 'ssh_key'); + + var k = sshpk.parseKey(key, 'ssh'); + return (k.fingerprint('md5').toString('hex')); + }, + + /** + * Converts a PKGCS#8 PEM file to an OpenSSH public key (rsa) + * + * The reverse of the above function. + */ + pemToRsaSSHKey: function pemToRsaSSHKey(pem, comment) { + assert.equal('string', typeof (pem), 'typeof pem'); + + var k = sshpk.parseKey(pem, 'pem'); + k.comment = comment; + return (k.toString('ssh')); + } +}; + + +/***/ }), +/* 910 */, +/* 911 */, +/* 912 */, +/* 913 */, +/* 914 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _autoLink = _interopRequireDefault(__webpack_require__(606)); + +var _autoLinkCashtags = _interopRequireDefault(__webpack_require__(987)); + +var _autoLinkEntities = _interopRequireDefault(__webpack_require__(93)); + +var _autoLinkHashtags = _interopRequireDefault(__webpack_require__(95)); + +var _autoLinkUrlsCustom = _interopRequireDefault(__webpack_require__(974)); + +var _autoLinkUsernamesOrLists = _interopRequireDefault(__webpack_require__(869)); + +var _autoLinkWithJSON = _interopRequireDefault(__webpack_require__(544)); + +var _configs = _interopRequireDefault(__webpack_require__(125)); + +var _convertUnicodeIndices = _interopRequireDefault(__webpack_require__(722)); + +var _extractCashtags = _interopRequireDefault(__webpack_require__(112)); + +var _extractCashtagsWithIndices = _interopRequireDefault(__webpack_require__(380)); + +var _extractEntitiesWithIndices = _interopRequireDefault(__webpack_require__(458)); + +var _extractHashtags = _interopRequireDefault(__webpack_require__(566)); + +var _extractHashtagsWithIndices = _interopRequireDefault(__webpack_require__(389)); + +var _extractHtmlAttrsFromOptions = _interopRequireDefault(__webpack_require__(418)); + +var _extractMentions = _interopRequireDefault(__webpack_require__(933)); + +var _extractMentionsOrListsWithIndices = _interopRequireDefault(__webpack_require__(680)); + +var _extractMentionsWithIndices = _interopRequireDefault(__webpack_require__(58)); + +var _extractReplies = _interopRequireDefault(__webpack_require__(770)); + +var _extractUrls = _interopRequireDefault(__webpack_require__(608)); + +var _extractUrlsWithIndices = _interopRequireDefault(__webpack_require__(257)); + +var _getTweetLength = _interopRequireDefault(__webpack_require__(467)); + +var _getUnicodeTextLength = _interopRequireDefault(__webpack_require__(105)); + +var _hasInvalidCharacters = _interopRequireDefault(__webpack_require__(860)); + +var _hitHighlight = _interopRequireDefault(__webpack_require__(830)); + +var _htmlEscape = _interopRequireDefault(__webpack_require__(63)); + +var _isInvalidTweet = _interopRequireDefault(__webpack_require__(406)); + +var _isValidHashtag = _interopRequireDefault(__webpack_require__(248)); + +var _isValidList = _interopRequireDefault(__webpack_require__(234)); + +var _isValidTweetText = _interopRequireDefault(__webpack_require__(48)); + +var _isValidUrl = _interopRequireDefault(__webpack_require__(33)); + +var _isValidUsername = _interopRequireDefault(__webpack_require__(939)); + +var _linkTextWithEntity = _interopRequireDefault(__webpack_require__(655)); + +var _linkToCashtag = _interopRequireDefault(__webpack_require__(833)); + +var _linkToHashtag = _interopRequireDefault(__webpack_require__(89)); + +var _linkToMentionAndList = _interopRequireDefault(__webpack_require__(660)); + +var _linkToText = _interopRequireDefault(__webpack_require__(583)); + +var _linkToTextWithSymbol = _interopRequireDefault(__webpack_require__(900)); + +var _linkToUrl = _interopRequireDefault(__webpack_require__(893)); + +var _modifyIndicesFromUTF16ToUnicode = _interopRequireDefault(__webpack_require__(964)); + +var _modifyIndicesFromUnicodeToUTF = _interopRequireDefault(__webpack_require__(787)); + +var _index = _interopRequireDefault(__webpack_require__(229)); + +var _removeOverlappingEntities = _interopRequireDefault(__webpack_require__(915)); + +var _parseTweet = _interopRequireDefault(__webpack_require__(166)); + +var _splitTags = _interopRequireDefault(__webpack_require__(459)); + +var _standardizeIndices = _interopRequireDefault(__webpack_require__(60)); + +var _tagAttrs = _interopRequireDefault(__webpack_require__(181)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var _default = { + autoLink: _autoLink["default"], + autoLinkCashtags: _autoLinkCashtags["default"], + autoLinkEntities: _autoLinkEntities["default"], + autoLinkHashtags: _autoLinkHashtags["default"], + autoLinkUrlsCustom: _autoLinkUrlsCustom["default"], + autoLinkUsernamesOrLists: _autoLinkUsernamesOrLists["default"], + autoLinkWithJSON: _autoLinkWithJSON["default"], + configs: _configs["default"], + convertUnicodeIndices: _convertUnicodeIndices["default"], + extractCashtags: _extractCashtags["default"], + extractCashtagsWithIndices: _extractCashtagsWithIndices["default"], + extractEntitiesWithIndices: _extractEntitiesWithIndices["default"], + extractHashtags: _extractHashtags["default"], + extractHashtagsWithIndices: _extractHashtagsWithIndices["default"], + extractHtmlAttrsFromOptions: _extractHtmlAttrsFromOptions["default"], + extractMentions: _extractMentions["default"], + extractMentionsOrListsWithIndices: _extractMentionsOrListsWithIndices["default"], + extractMentionsWithIndices: _extractMentionsWithIndices["default"], + extractReplies: _extractReplies["default"], + extractUrls: _extractUrls["default"], + extractUrlsWithIndices: _extractUrlsWithIndices["default"], + getTweetLength: _getTweetLength["default"], + getUnicodeTextLength: _getUnicodeTextLength["default"], + hasInvalidCharacters: _hasInvalidCharacters["default"], + hitHighlight: _hitHighlight["default"], + htmlEscape: _htmlEscape["default"], + isInvalidTweet: _isInvalidTweet["default"], + isValidHashtag: _isValidHashtag["default"], + isValidList: _isValidList["default"], + isValidTweetText: _isValidTweetText["default"], + isValidUrl: _isValidUrl["default"], + isValidUsername: _isValidUsername["default"], + linkTextWithEntity: _linkTextWithEntity["default"], + linkToCashtag: _linkToCashtag["default"], + linkToHashtag: _linkToHashtag["default"], + linkToMentionAndList: _linkToMentionAndList["default"], + linkToText: _linkToText["default"], + linkToTextWithSymbol: _linkToTextWithSymbol["default"], + linkToUrl: _linkToUrl["default"], + modifyIndicesFromUTF16ToUnicode: _modifyIndicesFromUTF16ToUnicode["default"], + modifyIndicesFromUnicodeToUTF16: _modifyIndicesFromUnicodeToUTF["default"], + regexen: _index["default"], + removeOverlappingEntities: _removeOverlappingEntities["default"], + parseTweet: _parseTweet["default"], + splitTags: _splitTags["default"], + standardizeIndices: _standardizeIndices["default"], + tagAttrs: _tagAttrs["default"] +}; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 915 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; + +__webpack_require__(210); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(entities) { + entities.sort(function (a, b) { + return a.indices[0] - b.indices[0]; + }); + var prev = entities[0]; + + for (var i = 1; i < entities.length; i++) { + if (prev.indices[1] > entities[i].indices[0]) { + entities.splice(i, 1); + i--; + } else { + prev = entities[i]; + } + } +} + +module.exports = exports.default; + +/***/ }), +/* 916 */, +/* 917 */, +/* 918 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +/** + * Module dependencies + */ + +var url = __webpack_require__(835); +var Streamparser = __webpack_require__(71); +var request = __webpack_require__(878); +var extend = __webpack_require__(203); + +// Package version +var VERSION = __webpack_require__(540).version; + +function Twitter(options) { + if (!(this instanceof Twitter)) { return new Twitter(options) } + + this.VERSION = VERSION; + + // Merge the default options with the client submitted options + this.options = extend({ + consumer_key: null, + consumer_secret: null, + access_token_key: null, + access_token_secret: null, + bearer_token: null, + rest_base: 'https://api.twitter.com/1.1', + stream_base: 'https://stream.twitter.com/1.1', + user_stream_base: 'https://userstream.twitter.com/1.1', + site_stream_base: 'https://sitestream.twitter.com/1.1', + media_base: 'https://upload.twitter.com/1.1', + request_options: { + headers: { + Accept: '*/*', + Connection: 'close', + 'User-Agent': 'node-twitter/' + VERSION + } + } + }, options); + + // Default to user authentication + var authentication_options = { + oauth: { + consumer_key: this.options.consumer_key, + consumer_secret: this.options.consumer_secret, + token: this.options.access_token_key, + token_secret: this.options.access_token_secret + } + }; + + // Check to see if we are going to use User Authentication or Application Authetication + if (this.options.bearer_token) { + authentication_options = { + headers: { + Authorization: 'Bearer ' + this.options.bearer_token + } + }; + } + + // Configure default request options + this.request = request.defaults( + extend( + this.options.request_options, + authentication_options + ) + ); + + // Check if Promise present + this.allow_promise = (typeof Promise === 'function'); +} + +Twitter.prototype.__buildEndpoint = function(path, base) { + var bases = { + 'rest': this.options.rest_base, + 'stream': this.options.stream_base, + 'user_stream': this.options.user_stream_base, + 'site_stream': this.options.site_stream_base, + 'media': this.options.media_base + }; + var endpoint = (bases.hasOwnProperty(base)) ? bases[base] : bases.rest; + // if full url is specified we use that + var isFullUrl = (url.parse(path).protocol !== null); + if (isFullUrl) { + endpoint = path; + } + else { + // If the path begins with media or /media + if (path.match(/^(\/)?media/)) { + endpoint = bases.media; + } + endpoint += (path.charAt(0) === '/') ? path : '/' + path; + } + + // Remove trailing slash + endpoint = endpoint.replace(/\/$/, ''); + + if(!isFullUrl) { + // Add json extension if not provided in call... only if a full url is not specified + endpoint += (path.split('.').pop() !== 'json') ? '.json' : ''; + } + + return endpoint; +}; + +Twitter.prototype.__request = function(method, path, params, callback) { + var base = 'rest', promise = false; + + // Set the callback if no params are passed + if (typeof params === 'function') { + callback = params; + params = {}; + } + // Return promise if no callback is passed and promises available + else if (callback === undefined && this.allow_promise) { + promise = true; + } + + // Set API base + if (typeof params.base !== 'undefined') { + base = params.base; + delete params.base; + } + + // Build the options to pass to our custom request object + var options = { + method: method.toLowerCase(), // Request method - get || post + url: this.__buildEndpoint(path, base) // Generate url + }; + + // Pass url parameters if get + if (method === 'get') { + options.qs = params; + } + + // Pass form data if post + if (method === 'post') { + var formKey = 'form'; + + if (typeof params.media !== 'undefined') { + formKey = 'formData'; + } + options[formKey] = params; + } + + // Promisified version + if (promise) { + var _this = this; + return new Promise(function(resolve, reject) { + _this.request(options, function(error, response, data) { + // request error + if (error) { + return reject(error); + } + + // JSON parse error or empty strings + try { + // An empty string is a valid response + if (data === '') { + data = {}; + } + else { + data = JSON.parse(data); + } + } + catch(parseError) { + return reject(new Error('JSON parseError with HTTP Status: ' + response.statusCode + ' ' + response.statusMessage)); + } + + // response object errors + // This should return an error object not an array of errors + if (data.errors !== undefined) { + return reject(data.errors); + } + + // status code errors + if(response.statusCode < 200 || response.statusCode > 299) { + return reject(new Error('HTTP Error: ' + response.statusCode + ' ' + response.statusMessage)); + } + + // no errors + resolve(data); + }); + }); + } + + // Callback version + this.request(options, function(error, response, data) { + // request error + if (error) { + return callback(error, data, response); + } + + // JSON parse error or empty strings + try { + // An empty string is a valid response + if (data === '') { + data = {}; + } + else { + data = JSON.parse(data); + } + } + catch(parseError) { + return callback( + new Error('JSON parseError with HTTP Status: ' + response.statusCode + ' ' + response.statusMessage), + data, + response + ); + } + + + // response object errors + // This should return an error object not an array of errors + if (data.errors !== undefined) { + return callback(data.errors, data, response); + } + + // status code errors + if(response.statusCode < 200 || response.statusCode > 299) { + return callback( + new Error('HTTP Error: ' + response.statusCode + ' ' + response.statusMessage), + data, + response + ); + } + // no errors + callback(null, data, response); + }); + +}; + +/** + * GET + */ +Twitter.prototype.get = function(url, params, callback) { + return this.__request('get', url, params, callback); +}; + +/** + * POST + */ +Twitter.prototype.post = function(url, params, callback) { + return this.__request('post', url, params, callback); +}; + +/** + * STREAM + */ +Twitter.prototype.stream = function(method, params, callback) { + if (typeof params === 'function') { + callback = params; + params = {}; + } + + var base = 'stream'; + + if (method === 'user' || method === 'site') { + base = method + '_' + base; + } + + var url = this.__buildEndpoint(method, base); + var request = this.request({url: url, qs: params}); + var stream = new Streamparser(); + + stream.destroy = function() { + // FIXME: should we emit end/close on explicit destroy? + if ( typeof request.abort === 'function' ) { + request.abort(); // node v0.4.0 + } + else { + request.socket.destroy(); + } + }; + + request.on('response', function(response) { + if(response.statusCode !== 200) { + stream.emit('error', new Error('Status Code: ' + response.statusCode)); + } + else { + stream.emit('response', response); + } + + response.on('data', function(chunk) { + stream.receive(chunk); + }); + + response.on('error', function(error) { + stream.emit('error', error); + }); + + response.on('end', function() { + stream.emit('end', response); + }); + }); + + request.on('error', function(error) { + stream.emit('error', error); + }); + request.end(); + + if (typeof callback === 'function') { + callback(stream); + } + else { + return stream; + } +}; + + +module.exports = Twitter; + + +/***/ }), +/* 919 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var Type = __webpack_require__(755); + +var _hasOwnProperty = Object.prototype.hasOwnProperty; +var _toString = Object.prototype.toString; + +function resolveYamlOmap(data) { + if (data === null) return true; + + var objectKeys = [], index, length, pair, pairKey, pairHasKey, + object = data; + + for (index = 0, length = object.length; index < length; index += 1) { + pair = object[index]; + pairHasKey = false; + + if (_toString.call(pair) !== '[object Object]') return false; + + for (pairKey in pair) { + if (_hasOwnProperty.call(pair, pairKey)) { + if (!pairHasKey) pairHasKey = true; + else return false; + } + } + + if (!pairHasKey) return false; + + if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey); + else return false; + } + + return true; +} + +function constructYamlOmap(data) { + return data !== null ? data : []; +} + +module.exports = new Type('tag:yaml.org,2002:omap', { + kind: 'sequence', + resolve: resolveYamlOmap, + construct: constructYamlOmap +}); + + +/***/ }), +/* 920 */, +/* 921 */ +/***/ (function(module) { + +"use strict"; + + + +var Cache = module.exports = function Cache() { + this._cache = {}; +}; + + +Cache.prototype.put = function Cache_put(key, value) { + this._cache[key] = value; +}; + + +Cache.prototype.get = function Cache_get(key) { + return this._cache[key]; +}; + + +Cache.prototype.del = function Cache_del(key) { + delete this._cache[key]; +}; + + +Cache.prototype.clear = function Cache_clear() { + this._cache = {}; +}; + + +/***/ }), +/* 922 */, +/* 923 */, +/* 924 */, +/* 925 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +var document = __webpack_require__(300).document; +module.exports = document && document.documentElement; + + +/***/ }), +/* 926 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +/* + * lib/jsprim.js: utilities for primitive JavaScript types + */ + +var mod_assert = __webpack_require__(489); +var mod_util = __webpack_require__(669); + +var mod_extsprintf = __webpack_require__(697); +var mod_verror = __webpack_require__(640); +var mod_jsonschema = __webpack_require__(353); + +/* + * Public interface + */ +exports.deepCopy = deepCopy; +exports.deepEqual = deepEqual; +exports.isEmpty = isEmpty; +exports.hasKey = hasKey; +exports.forEachKey = forEachKey; +exports.pluck = pluck; +exports.flattenObject = flattenObject; +exports.flattenIter = flattenIter; +exports.validateJsonObject = validateJsonObjectJS; +exports.validateJsonObjectJS = validateJsonObjectJS; +exports.randElt = randElt; +exports.extraProperties = extraProperties; +exports.mergeObjects = mergeObjects; + +exports.startsWith = startsWith; +exports.endsWith = endsWith; + +exports.parseInteger = parseInteger; + +exports.iso8601 = iso8601; +exports.rfc1123 = rfc1123; +exports.parseDateTime = parseDateTime; + +exports.hrtimediff = hrtimeDiff; +exports.hrtimeDiff = hrtimeDiff; +exports.hrtimeAccum = hrtimeAccum; +exports.hrtimeAdd = hrtimeAdd; +exports.hrtimeNanosec = hrtimeNanosec; +exports.hrtimeMicrosec = hrtimeMicrosec; +exports.hrtimeMillisec = hrtimeMillisec; + + +/* + * Deep copy an acyclic *basic* Javascript object. This only handles basic + * scalars (strings, numbers, booleans) and arbitrarily deep arrays and objects + * containing these. This does *not* handle instances of other classes. + */ +function deepCopy(obj) +{ + var ret, key; + var marker = '__deepCopy'; + + if (obj && obj[marker]) + throw (new Error('attempted deep copy of cyclic object')); + + if (obj && obj.constructor == Object) { + ret = {}; + obj[marker] = true; + + for (key in obj) { + if (key == marker) + continue; + + ret[key] = deepCopy(obj[key]); + } + + delete (obj[marker]); + return (ret); + } + + if (obj && obj.constructor == Array) { + ret = []; + obj[marker] = true; + + for (key = 0; key < obj.length; key++) + ret.push(deepCopy(obj[key])); + + delete (obj[marker]); + return (ret); + } + + /* + * It must be a primitive type -- just return it. + */ + return (obj); +} + +function deepEqual(obj1, obj2) +{ + if (typeof (obj1) != typeof (obj2)) + return (false); + + if (obj1 === null || obj2 === null || typeof (obj1) != 'object') + return (obj1 === obj2); + + if (obj1.constructor != obj2.constructor) + return (false); + + var k; + for (k in obj1) { + if (!obj2.hasOwnProperty(k)) + return (false); + + if (!deepEqual(obj1[k], obj2[k])) + return (false); + } + + for (k in obj2) { + if (!obj1.hasOwnProperty(k)) + return (false); + } + + return (true); +} + +function isEmpty(obj) +{ + var key; + for (key in obj) + return (false); + return (true); +} + +function hasKey(obj, key) +{ + mod_assert.equal(typeof (key), 'string'); + return (Object.prototype.hasOwnProperty.call(obj, key)); +} + +function forEachKey(obj, callback) +{ + for (var key in obj) { + if (hasKey(obj, key)) { + callback(key, obj[key]); + } + } +} + +function pluck(obj, key) +{ + mod_assert.equal(typeof (key), 'string'); + return (pluckv(obj, key)); +} + +function pluckv(obj, key) +{ + if (obj === null || typeof (obj) !== 'object') + return (undefined); + + if (obj.hasOwnProperty(key)) + return (obj[key]); + + var i = key.indexOf('.'); + if (i == -1) + return (undefined); + + var key1 = key.substr(0, i); + if (!obj.hasOwnProperty(key1)) + return (undefined); + + return (pluckv(obj[key1], key.substr(i + 1))); +} + +/* + * Invoke callback(row) for each entry in the array that would be returned by + * flattenObject(data, depth). This is just like flattenObject(data, + * depth).forEach(callback), except that the intermediate array is never + * created. + */ +function flattenIter(data, depth, callback) +{ + doFlattenIter(data, depth, [], callback); +} + +function doFlattenIter(data, depth, accum, callback) +{ + var each; + var key; + + if (depth === 0) { + each = accum.slice(0); + each.push(data); + callback(each); + return; + } + + mod_assert.ok(data !== null); + mod_assert.equal(typeof (data), 'object'); + mod_assert.equal(typeof (depth), 'number'); + mod_assert.ok(depth >= 0); + + for (key in data) { + each = accum.slice(0); + each.push(key); + doFlattenIter(data[key], depth - 1, each, callback); + } +} + +function flattenObject(data, depth) +{ + if (depth === 0) + return ([ data ]); + + mod_assert.ok(data !== null); + mod_assert.equal(typeof (data), 'object'); + mod_assert.equal(typeof (depth), 'number'); + mod_assert.ok(depth >= 0); + + var rv = []; + var key; + + for (key in data) { + flattenObject(data[key], depth - 1).forEach(function (p) { + rv.push([ key ].concat(p)); + }); + } + + return (rv); +} + +function startsWith(str, prefix) +{ + return (str.substr(0, prefix.length) == prefix); +} + +function endsWith(str, suffix) +{ + return (str.substr( + str.length - suffix.length, suffix.length) == suffix); +} + +function iso8601(d) +{ + if (typeof (d) == 'number') + d = new Date(d); + mod_assert.ok(d.constructor === Date); + return (mod_extsprintf.sprintf('%4d-%02d-%02dT%02d:%02d:%02d.%03dZ', + d.getUTCFullYear(), d.getUTCMonth() + 1, d.getUTCDate(), + d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), + d.getUTCMilliseconds())); +} + +var RFC1123_MONTHS = [ + 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', + 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; +var RFC1123_DAYS = [ + 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; + +function rfc1123(date) { + return (mod_extsprintf.sprintf('%s, %02d %s %04d %02d:%02d:%02d GMT', + RFC1123_DAYS[date.getUTCDay()], date.getUTCDate(), + RFC1123_MONTHS[date.getUTCMonth()], date.getUTCFullYear(), + date.getUTCHours(), date.getUTCMinutes(), + date.getUTCSeconds())); +} + +/* + * Parses a date expressed as a string, as either a number of milliseconds since + * the epoch or any string format that Date accepts, giving preference to the + * former where these two sets overlap (e.g., small numbers). + */ +function parseDateTime(str) +{ + /* + * This is irritatingly implicit, but significantly more concise than + * alternatives. The "+str" will convert a string containing only a + * number directly to a Number, or NaN for other strings. Thus, if the + * conversion succeeds, we use it (this is the milliseconds-since-epoch + * case). Otherwise, we pass the string directly to the Date + * constructor to parse. + */ + var numeric = +str; + if (!isNaN(numeric)) { + return (new Date(numeric)); + } else { + return (new Date(str)); + } +} + + +/* + * Number.*_SAFE_INTEGER isn't present before node v0.12, so we hardcode + * the ES6 definitions here, while allowing for them to someday be higher. + */ +var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; +var MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991; + + +/* + * Default options for parseInteger(). + */ +var PI_DEFAULTS = { + base: 10, + allowSign: true, + allowPrefix: false, + allowTrailing: false, + allowImprecise: false, + trimWhitespace: false, + leadingZeroIsOctal: false +}; + +var CP_0 = 0x30; +var CP_9 = 0x39; + +var CP_A = 0x41; +var CP_B = 0x42; +var CP_O = 0x4f; +var CP_T = 0x54; +var CP_X = 0x58; +var CP_Z = 0x5a; + +var CP_a = 0x61; +var CP_b = 0x62; +var CP_o = 0x6f; +var CP_t = 0x74; +var CP_x = 0x78; +var CP_z = 0x7a; + +var PI_CONV_DEC = 0x30; +var PI_CONV_UC = 0x37; +var PI_CONV_LC = 0x57; + + +/* + * A stricter version of parseInt() that provides options for changing what + * is an acceptable string (for example, disallowing trailing characters). + */ +function parseInteger(str, uopts) +{ + mod_assert.string(str, 'str'); + mod_assert.optionalObject(uopts, 'options'); + + var baseOverride = false; + var options = PI_DEFAULTS; + + if (uopts) { + baseOverride = hasKey(uopts, 'base'); + options = mergeObjects(options, uopts); + mod_assert.number(options.base, 'options.base'); + mod_assert.ok(options.base >= 2, 'options.base >= 2'); + mod_assert.ok(options.base <= 36, 'options.base <= 36'); + mod_assert.bool(options.allowSign, 'options.allowSign'); + mod_assert.bool(options.allowPrefix, 'options.allowPrefix'); + mod_assert.bool(options.allowTrailing, + 'options.allowTrailing'); + mod_assert.bool(options.allowImprecise, + 'options.allowImprecise'); + mod_assert.bool(options.trimWhitespace, + 'options.trimWhitespace'); + mod_assert.bool(options.leadingZeroIsOctal, + 'options.leadingZeroIsOctal'); + + if (options.leadingZeroIsOctal) { + mod_assert.ok(!baseOverride, + '"base" and "leadingZeroIsOctal" are ' + + 'mutually exclusive'); + } + } + + var c; + var pbase = -1; + var base = options.base; + var start; + var mult = 1; + var value = 0; + var idx = 0; + var len = str.length; + + /* Trim any whitespace on the left side. */ + if (options.trimWhitespace) { + while (idx < len && isSpace(str.charCodeAt(idx))) { + ++idx; + } + } + + /* Check the number for a leading sign. */ + if (options.allowSign) { + if (str[idx] === '-') { + idx += 1; + mult = -1; + } else if (str[idx] === '+') { + idx += 1; + } + } + + /* Parse the base-indicating prefix if there is one. */ + if (str[idx] === '0') { + if (options.allowPrefix) { + pbase = prefixToBase(str.charCodeAt(idx + 1)); + if (pbase !== -1 && (!baseOverride || pbase === base)) { + base = pbase; + idx += 2; + } + } + + if (pbase === -1 && options.leadingZeroIsOctal) { + base = 8; + } + } + + /* Parse the actual digits. */ + for (start = idx; idx < len; ++idx) { + c = translateDigit(str.charCodeAt(idx)); + if (c !== -1 && c < base) { + value *= base; + value += c; + } else { + break; + } + } + + /* If we didn't parse any digits, we have an invalid number. */ + if (start === idx) { + return (new Error('invalid number: ' + JSON.stringify(str))); + } + + /* Trim any whitespace on the right side. */ + if (options.trimWhitespace) { + while (idx < len && isSpace(str.charCodeAt(idx))) { + ++idx; + } + } + + /* Check for trailing characters. */ + if (idx < len && !options.allowTrailing) { + return (new Error('trailing characters after number: ' + + JSON.stringify(str.slice(idx)))); + } + + /* If our value is 0, we return now, to avoid returning -0. */ + if (value === 0) { + return (0); + } + + /* Calculate our final value. */ + var result = value * mult; + + /* + * If the string represents a value that cannot be precisely represented + * by JavaScript, then we want to check that: + * + * - We never increased the value past MAX_SAFE_INTEGER + * - We don't make the result negative and below MIN_SAFE_INTEGER + * + * Because we only ever increment the value during parsing, there's no + * chance of moving past MAX_SAFE_INTEGER and then dropping below it + * again, losing precision in the process. This means that we only need + * to do our checks here, at the end. + */ + if (!options.allowImprecise && + (value > MAX_SAFE_INTEGER || result < MIN_SAFE_INTEGER)) { + return (new Error('number is outside of the supported range: ' + + JSON.stringify(str.slice(start, idx)))); + } + + return (result); +} + + +/* + * Interpret a character code as a base-36 digit. + */ +function translateDigit(d) +{ + if (d >= CP_0 && d <= CP_9) { + /* '0' to '9' -> 0 to 9 */ + return (d - PI_CONV_DEC); + } else if (d >= CP_A && d <= CP_Z) { + /* 'A' - 'Z' -> 10 to 35 */ + return (d - PI_CONV_UC); + } else if (d >= CP_a && d <= CP_z) { + /* 'a' - 'z' -> 10 to 35 */ + return (d - PI_CONV_LC); + } else { + /* Invalid character code */ + return (-1); + } +} + + +/* + * Test if a value matches the ECMAScript definition of trimmable whitespace. + */ +function isSpace(c) +{ + return (c === 0x20) || + (c >= 0x0009 && c <= 0x000d) || + (c === 0x00a0) || + (c === 0x1680) || + (c === 0x180e) || + (c >= 0x2000 && c <= 0x200a) || + (c === 0x2028) || + (c === 0x2029) || + (c === 0x202f) || + (c === 0x205f) || + (c === 0x3000) || + (c === 0xfeff); +} + + +/* + * Determine which base a character indicates (e.g., 'x' indicates hex). + */ +function prefixToBase(c) +{ + if (c === CP_b || c === CP_B) { + /* 0b/0B (binary) */ + return (2); + } else if (c === CP_o || c === CP_O) { + /* 0o/0O (octal) */ + return (8); + } else if (c === CP_t || c === CP_T) { + /* 0t/0T (decimal) */ + return (10); + } else if (c === CP_x || c === CP_X) { + /* 0x/0X (hexadecimal) */ + return (16); + } else { + /* Not a meaningful character */ + return (-1); + } +} + + +function validateJsonObjectJS(schema, input) +{ + var report = mod_jsonschema.validate(input, schema); + + if (report.errors.length === 0) + return (null); + + /* Currently, we only do anything useful with the first error. */ + var error = report.errors[0]; + + /* The failed property is given by a URI with an irrelevant prefix. */ + var propname = error['property']; + var reason = error['message'].toLowerCase(); + var i, j; + + /* + * There's at least one case where the property error message is + * confusing at best. We work around this here. + */ + if ((i = reason.indexOf('the property ')) != -1 && + (j = reason.indexOf(' is not defined in the schema and the ' + + 'schema does not allow additional properties')) != -1) { + i += 'the property '.length; + if (propname === '') + propname = reason.substr(i, j - i); + else + propname = propname + '.' + reason.substr(i, j - i); + + reason = 'unsupported property'; + } + + var rv = new mod_verror.VError('property "%s": %s', propname, reason); + rv.jsv_details = error; + return (rv); +} + +function randElt(arr) +{ + mod_assert.ok(Array.isArray(arr) && arr.length > 0, + 'randElt argument must be a non-empty array'); + + return (arr[Math.floor(Math.random() * arr.length)]); +} + +function assertHrtime(a) +{ + mod_assert.ok(a[0] >= 0 && a[1] >= 0, + 'negative numbers not allowed in hrtimes'); + mod_assert.ok(a[1] < 1e9, 'nanoseconds column overflow'); +} + +/* + * Compute the time elapsed between hrtime readings A and B, where A is later + * than B. hrtime readings come from Node's process.hrtime(). There is no + * defined way to represent negative deltas, so it's illegal to diff B from A + * where the time denoted by B is later than the time denoted by A. If this + * becomes valuable, we can define a representation and extend the + * implementation to support it. + */ +function hrtimeDiff(a, b) +{ + assertHrtime(a); + assertHrtime(b); + mod_assert.ok(a[0] > b[0] || (a[0] == b[0] && a[1] >= b[1]), + 'negative differences not allowed'); + + var rv = [ a[0] - b[0], 0 ]; + + if (a[1] >= b[1]) { + rv[1] = a[1] - b[1]; + } else { + rv[0]--; + rv[1] = 1e9 - (b[1] - a[1]); + } + + return (rv); +} + +/* + * Convert a hrtime reading from the array format returned by Node's + * process.hrtime() into a scalar number of nanoseconds. + */ +function hrtimeNanosec(a) +{ + assertHrtime(a); + + return (Math.floor(a[0] * 1e9 + a[1])); +} + +/* + * Convert a hrtime reading from the array format returned by Node's + * process.hrtime() into a scalar number of microseconds. + */ +function hrtimeMicrosec(a) +{ + assertHrtime(a); + + return (Math.floor(a[0] * 1e6 + a[1] / 1e3)); +} + +/* + * Convert a hrtime reading from the array format returned by Node's + * process.hrtime() into a scalar number of milliseconds. + */ +function hrtimeMillisec(a) +{ + assertHrtime(a); + + return (Math.floor(a[0] * 1e3 + a[1] / 1e6)); +} + +/* + * Add two hrtime readings A and B, overwriting A with the result of the + * addition. This function is useful for accumulating several hrtime intervals + * into a counter. Returns A. + */ +function hrtimeAccum(a, b) +{ + assertHrtime(a); + assertHrtime(b); + + /* + * Accumulate the nanosecond component. + */ + a[1] += b[1]; + if (a[1] >= 1e9) { + /* + * The nanosecond component overflowed, so carry to the seconds + * field. + */ + a[0]++; + a[1] -= 1e9; + } + + /* + * Accumulate the seconds component. + */ + a[0] += b[0]; + + return (a); +} + +/* + * Add two hrtime readings A and B, returning the result as a new hrtime array. + * Does not modify either input argument. + */ +function hrtimeAdd(a, b) +{ + assertHrtime(a); + + var rv = [ a[0], a[1] ]; + + return (hrtimeAccum(rv, b)); +} + + +/* + * Check an object for unexpected properties. Accepts the object to check, and + * an array of allowed property names (strings). Returns an array of key names + * that were found on the object, but did not appear in the list of allowed + * properties. If no properties were found, the returned array will be of + * zero length. + */ +function extraProperties(obj, allowed) +{ + mod_assert.ok(typeof (obj) === 'object' && obj !== null, + 'obj argument must be a non-null object'); + mod_assert.ok(Array.isArray(allowed), + 'allowed argument must be an array of strings'); + for (var i = 0; i < allowed.length; i++) { + mod_assert.ok(typeof (allowed[i]) === 'string', + 'allowed argument must be an array of strings'); + } + + return (Object.keys(obj).filter(function (key) { + return (allowed.indexOf(key) === -1); + })); +} + +/* + * Given three sets of properties "provided" (may be undefined), "overrides" + * (required), and "defaults" (may be undefined), construct an object containing + * the union of these sets with "overrides" overriding "provided", and + * "provided" overriding "defaults". None of the input objects are modified. + */ +function mergeObjects(provided, overrides, defaults) +{ + var rv, k; + + rv = {}; + if (defaults) { + for (k in defaults) + rv[k] = defaults[k]; + } + + if (provided) { + for (k in provided) + rv[k] = provided[k]; + } + + if (overrides) { + for (k in overrides) + rv[k] = overrides[k]; + } + + return (rv); +} + + +/***/ }), +/* 927 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +// Copyright 2015 Joyent, Inc. + +var assert = __webpack_require__(489); +var crypto = __webpack_require__(417); +var sshpk = __webpack_require__(650); +var utils = __webpack_require__(909); + +var HASH_ALGOS = utils.HASH_ALGOS; +var PK_ALGOS = utils.PK_ALGOS; +var InvalidAlgorithmError = utils.InvalidAlgorithmError; +var HttpSignatureError = utils.HttpSignatureError; +var validateAlgorithm = utils.validateAlgorithm; + +///--- Exported API + +module.exports = { + /** + * Verify RSA/DSA signature against public key. You are expected to pass in + * an object that was returned from `parse()`. + * + * @param {Object} parsedSignature the object you got from `parse`. + * @param {String} pubkey RSA/DSA private key PEM. + * @return {Boolean} true if valid, false otherwise. + * @throws {TypeError} if you pass in bad arguments. + * @throws {InvalidAlgorithmError} + */ + verifySignature: function verifySignature(parsedSignature, pubkey) { + assert.object(parsedSignature, 'parsedSignature'); + if (typeof (pubkey) === 'string' || Buffer.isBuffer(pubkey)) + pubkey = sshpk.parseKey(pubkey); + assert.ok(sshpk.Key.isKey(pubkey, [1, 1]), 'pubkey must be a sshpk.Key'); + + var alg = validateAlgorithm(parsedSignature.algorithm); + if (alg[0] === 'hmac' || alg[0] !== pubkey.type) + return (false); + + var v = pubkey.createVerify(alg[1]); + v.update(parsedSignature.signingString); + return (v.verify(parsedSignature.params.signature, 'base64')); + }, + + /** + * Verify HMAC against shared secret. You are expected to pass in an object + * that was returned from `parse()`. + * + * @param {Object} parsedSignature the object you got from `parse`. + * @param {String} secret HMAC shared secret. + * @return {Boolean} true if valid, false otherwise. + * @throws {TypeError} if you pass in bad arguments. + * @throws {InvalidAlgorithmError} + */ + verifyHMAC: function verifyHMAC(parsedSignature, secret) { + assert.object(parsedSignature, 'parsedHMAC'); + assert.string(secret, 'secret'); + + var alg = validateAlgorithm(parsedSignature.algorithm); + if (alg[0] !== 'hmac') + return (false); + + var hashAlg = alg[1].toUpperCase(); + + var hmac = crypto.createHmac(hashAlg, secret); + hmac.update(parsedSignature.signingString); + + /* + * Now double-hash to avoid leaking timing information - there's + * no easy constant-time compare in JS, so we use this approach + * instead. See for more info: + * https://www.isecpartners.com/blog/2011/february/double-hmac- + * verification.aspx + */ + var h1 = crypto.createHmac(hashAlg, secret); + h1.update(hmac.digest()); + h1 = h1.digest(); + var h2 = crypto.createHmac(hashAlg, secret); + h2.update(new Buffer(parsedSignature.params.signature, 'base64')); + h2 = h2.digest(); + + /* Node 0.8 returns strings from .digest(). */ + if (typeof (h1) === 'string') + return (h1 === h2); + /* And node 0.10 lacks the .equals() method on Buffers. */ + if (Buffer.isBuffer(h1) && !h1.equals) + return (h1.toString('binary') === h2.toString('binary')); + + return (h1.equals(h2)); + } +}; + + +/***/ }), +/* 928 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +var CombinedStream = __webpack_require__(2); +var util = __webpack_require__(669); +var path = __webpack_require__(622); +var http = __webpack_require__(605); +var https = __webpack_require__(211); +var parseUrl = __webpack_require__(835).parse; +var fs = __webpack_require__(747); +var mime = __webpack_require__(233); +var asynckit = __webpack_require__(334); +var populate = __webpack_require__(201); + +// Public API +module.exports = FormData; + +// make it a Stream +util.inherits(FormData, CombinedStream); + +/** + * Create readable "multipart/form-data" streams. + * Can be used to submit forms + * and file uploads to other web applications. + * + * @constructor + * @param {Object} options - Properties to be added/overriden for FormData and CombinedStream + */ +function FormData(options) { + if (!(this instanceof FormData)) { + return new FormData(); + } + + this._overheadLength = 0; + this._valueLength = 0; + this._valuesToMeasure = []; + + CombinedStream.call(this); + + options = options || {}; + for (var option in options) { + this[option] = options[option]; + } +} + +FormData.LINE_BREAK = '\r\n'; +FormData.DEFAULT_CONTENT_TYPE = 'application/octet-stream'; + +FormData.prototype.append = function(field, value, options) { + + options = options || {}; + + // allow filename as single option + if (typeof options == 'string') { + options = {filename: options}; + } + + var append = CombinedStream.prototype.append.bind(this); + + // all that streamy business can't handle numbers + if (typeof value == 'number') { + value = '' + value; + } + + // https://github.com/felixge/node-form-data/issues/38 + if (util.isArray(value)) { + // Please convert your array into string + // the way web server expects it + this._error(new Error('Arrays are not supported.')); + return; + } + + var header = this._multiPartHeader(field, value, options); + var footer = this._multiPartFooter(); + + append(header); + append(value); + append(footer); + + // pass along options.knownLength + this._trackLength(header, value, options); +}; + +FormData.prototype._trackLength = function(header, value, options) { + var valueLength = 0; + + // used w/ getLengthSync(), when length is known. + // e.g. for streaming directly from a remote server, + // w/ a known file a size, and not wanting to wait for + // incoming file to finish to get its size. + if (options.knownLength != null) { + valueLength += +options.knownLength; + } else if (Buffer.isBuffer(value)) { + valueLength = value.length; + } else if (typeof value === 'string') { + valueLength = Buffer.byteLength(value); + } + + this._valueLength += valueLength; + + // @check why add CRLF? does this account for custom/multiple CRLFs? + this._overheadLength += + Buffer.byteLength(header) + + FormData.LINE_BREAK.length; + + // empty or either doesn't have path or not an http response + if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) )) { + return; + } + + // no need to bother with the length + if (!options.knownLength) { + this._valuesToMeasure.push(value); + } +}; + +FormData.prototype._lengthRetriever = function(value, callback) { + + if (value.hasOwnProperty('fd')) { + + // take read range into a account + // `end` = Infinity –> read file till the end + // + // TODO: Looks like there is bug in Node fs.createReadStream + // it doesn't respect `end` options without `start` options + // Fix it when node fixes it. + // https://github.com/joyent/node/issues/7819 + if (value.end != undefined && value.end != Infinity && value.start != undefined) { + + // when end specified + // no need to calculate range + // inclusive, starts with 0 + callback(null, value.end + 1 - (value.start ? value.start : 0)); + + // not that fast snoopy + } else { + // still need to fetch file size from fs + fs.stat(value.path, function(err, stat) { + + var fileSize; + + if (err) { + callback(err); + return; + } + + // update final size based on the range options + fileSize = stat.size - (value.start ? value.start : 0); + callback(null, fileSize); + }); + } + + // or http response + } else if (value.hasOwnProperty('httpVersion')) { + callback(null, +value.headers['content-length']); + + // or request stream http://github.com/mikeal/request + } else if (value.hasOwnProperty('httpModule')) { + // wait till response come back + value.on('response', function(response) { + value.pause(); + callback(null, +response.headers['content-length']); + }); + value.resume(); + + // something else + } else { + callback('Unknown stream'); + } +}; + +FormData.prototype._multiPartHeader = function(field, value, options) { + // custom header specified (as string)? + // it becomes responsible for boundary + // (e.g. to handle extra CRLFs on .NET servers) + if (typeof options.header == 'string') { + return options.header; + } + + var contentDisposition = this._getContentDisposition(value, options); + var contentType = this._getContentType(value, options); + + var contents = ''; + var headers = { + // add custom disposition as third element or keep it two elements if not + 'Content-Disposition': ['form-data', 'name="' + field + '"'].concat(contentDisposition || []), + // if no content type. allow it to be empty array + 'Content-Type': [].concat(contentType || []) + }; + + // allow custom headers. + if (typeof options.header == 'object') { + populate(headers, options.header); + } + + var header; + for (var prop in headers) { + if (!headers.hasOwnProperty(prop)) continue; + header = headers[prop]; + + // skip nullish headers. + if (header == null) { + continue; + } + + // convert all headers to arrays. + if (!Array.isArray(header)) { + header = [header]; + } + + // add non-empty headers. + if (header.length) { + contents += prop + ': ' + header.join('; ') + FormData.LINE_BREAK; + } + } + + return '--' + this.getBoundary() + FormData.LINE_BREAK + contents + FormData.LINE_BREAK; +}; + +FormData.prototype._getContentDisposition = function(value, options) { + + var filename + , contentDisposition + ; + + if (typeof options.filepath === 'string') { + // custom filepath for relative paths + filename = path.normalize(options.filepath).replace(/\\/g, '/'); + } else if (options.filename || value.name || value.path) { + // custom filename take precedence + // formidable and the browser add a name property + // fs- and request- streams have path property + filename = path.basename(options.filename || value.name || value.path); + } else if (value.readable && value.hasOwnProperty('httpVersion')) { + // or try http response + filename = path.basename(value.client._httpMessage.path); + } + + if (filename) { + contentDisposition = 'filename="' + filename + '"'; + } + + return contentDisposition; +}; + +FormData.prototype._getContentType = function(value, options) { + + // use custom content-type above all + var contentType = options.contentType; + + // or try `name` from formidable, browser + if (!contentType && value.name) { + contentType = mime.lookup(value.name); + } + + // or try `path` from fs-, request- streams + if (!contentType && value.path) { + contentType = mime.lookup(value.path); + } + + // or if it's http-reponse + if (!contentType && value.readable && value.hasOwnProperty('httpVersion')) { + contentType = value.headers['content-type']; + } + + // or guess it from the filepath or filename + if (!contentType && (options.filepath || options.filename)) { + contentType = mime.lookup(options.filepath || options.filename); + } + + // fallback to the default content type if `value` is not simple value + if (!contentType && typeof value == 'object') { + contentType = FormData.DEFAULT_CONTENT_TYPE; + } + + return contentType; +}; + +FormData.prototype._multiPartFooter = function() { + return function(next) { + var footer = FormData.LINE_BREAK; + + var lastPart = (this._streams.length === 0); + if (lastPart) { + footer += this._lastBoundary(); + } + + next(footer); + }.bind(this); +}; + +FormData.prototype._lastBoundary = function() { + return '--' + this.getBoundary() + '--' + FormData.LINE_BREAK; +}; + +FormData.prototype.getHeaders = function(userHeaders) { + var header; + var formHeaders = { + 'content-type': 'multipart/form-data; boundary=' + this.getBoundary() + }; + + for (header in userHeaders) { + if (userHeaders.hasOwnProperty(header)) { + formHeaders[header.toLowerCase()] = userHeaders[header]; + } + } + + return formHeaders; +}; + +FormData.prototype.getBoundary = function() { + if (!this._boundary) { + this._generateBoundary(); + } + + return this._boundary; +}; + +FormData.prototype._generateBoundary = function() { + // This generates a 50 character boundary similar to those used by Firefox. + // They are optimized for boyer-moore parsing. + var boundary = '--------------------------'; + for (var i = 0; i < 24; i++) { + boundary += Math.floor(Math.random() * 10).toString(16); + } + + this._boundary = boundary; +}; + +// Note: getLengthSync DOESN'T calculate streams length +// As workaround one can calculate file size manually +// and add it as knownLength option +FormData.prototype.getLengthSync = function() { + var knownLength = this._overheadLength + this._valueLength; + + // Don't get confused, there are 3 "internal" streams for each keyval pair + // so it basically checks if there is any value added to the form + if (this._streams.length) { + knownLength += this._lastBoundary().length; + } + + // https://github.com/form-data/form-data/issues/40 + if (!this.hasKnownLength()) { + // Some async length retrievers are present + // therefore synchronous length calculation is false. + // Please use getLength(callback) to get proper length + this._error(new Error('Cannot calculate proper length in synchronous way.')); + } + + return knownLength; +}; + +// Public API to check if length of added values is known +// https://github.com/form-data/form-data/issues/196 +// https://github.com/form-data/form-data/issues/262 +FormData.prototype.hasKnownLength = function() { + var hasKnownLength = true; + + if (this._valuesToMeasure.length) { + hasKnownLength = false; + } + + return hasKnownLength; +}; + +FormData.prototype.getLength = function(cb) { + var knownLength = this._overheadLength + this._valueLength; + + if (this._streams.length) { + knownLength += this._lastBoundary().length; + } + + if (!this._valuesToMeasure.length) { + process.nextTick(cb.bind(this, null, knownLength)); + return; + } + + asynckit.parallel(this._valuesToMeasure, this._lengthRetriever, function(err, values) { + if (err) { + cb(err); + return; + } + + values.forEach(function(length) { + knownLength += length; + }); + + cb(null, knownLength); + }); +}; + +FormData.prototype.submit = function(params, cb) { + var request + , options + , defaults = {method: 'post'} + ; + + // parse provided url if it's string + // or treat it as options object + if (typeof params == 'string') { + + params = parseUrl(params); + options = populate({ + port: params.port, + path: params.pathname, + host: params.hostname, + protocol: params.protocol + }, defaults); + + // use custom params + } else { + + options = populate(params, defaults); + // if no port provided use default one + if (!options.port) { + options.port = options.protocol == 'https:' ? 443 : 80; + } + } + + // put that good code in getHeaders to some use + options.headers = this.getHeaders(params.headers); + + // https if specified, fallback to http in any other case + if (options.protocol == 'https:') { + request = https.request(options); + } else { + request = http.request(options); + } + + // get content length and fire away + this.getLength(function(err, length) { + if (err) { + this._error(err); + return; + } + + // add content length + request.setHeader('Content-Length', length); + + this.pipe(request); + if (cb) { + request.on('error', cb); + request.on('response', cb.bind(this, null)); + } + }.bind(this)); + + return request; +}; + +FormData.prototype._error = function(err) { + if (!this.error) { + this.error = err; + this.pause(); + this.emit('error', err); + } +}; + +FormData.prototype.toString = function () { + return '[object FormData]'; +}; + + +/***/ }), +/* 929 */, +/* 930 */, +/* 931 */, +/* 932 */, +/* 933 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; + +var _extractMentionsWithIndices = _interopRequireDefault(__webpack_require__(58)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text) { + var screenNamesOnly = [], + screenNamesWithIndices = (0, _extractMentionsWithIndices["default"])(text); + + for (var i = 0; i < screenNamesWithIndices.length; i++) { + var screenName = screenNamesWithIndices[i].screenName; + screenNamesOnly.push(screenName); + } + + return screenNamesOnly; +} + +module.exports = exports.default; + +/***/ }), +/* 934 */, +/* 935 */, +/* 936 */, +/* 937 */, +/* 938 */, +/* 939 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; + +var _extractMentions = _interopRequireDefault(__webpack_require__(933)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(username) { + if (!username) { + return false; + } + + var extracted = (0, _extractMentions["default"])(username); // Should extract the username minus the @ sign, hence the .slice(1) + + return extracted.length === 1 && extracted[0] === username.slice(1); +} + +module.exports = exports.default; + +/***/ }), +/* 940 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +// Copyright 2015 Joyent, Inc. + +module.exports = SSHBuffer; + +var assert = __webpack_require__(489); +var Buffer = __webpack_require__(726).Buffer; + +function SSHBuffer(opts) { + assert.object(opts, 'options'); + if (opts.buffer !== undefined) + assert.buffer(opts.buffer, 'options.buffer'); + + this._size = opts.buffer ? opts.buffer.length : 1024; + this._buffer = opts.buffer || Buffer.alloc(this._size); + this._offset = 0; +} + +SSHBuffer.prototype.toBuffer = function () { + return (this._buffer.slice(0, this._offset)); +}; + +SSHBuffer.prototype.atEnd = function () { + return (this._offset >= this._buffer.length); +}; + +SSHBuffer.prototype.remainder = function () { + return (this._buffer.slice(this._offset)); +}; + +SSHBuffer.prototype.skip = function (n) { + this._offset += n; +}; + +SSHBuffer.prototype.expand = function () { + this._size *= 2; + var buf = Buffer.alloc(this._size); + this._buffer.copy(buf, 0); + this._buffer = buf; +}; + +SSHBuffer.prototype.readPart = function () { + return ({data: this.readBuffer()}); +}; + +SSHBuffer.prototype.readBuffer = function () { + var len = this._buffer.readUInt32BE(this._offset); + this._offset += 4; + assert.ok(this._offset + len <= this._buffer.length, + 'length out of bounds at +0x' + this._offset.toString(16) + + ' (data truncated?)'); + var buf = this._buffer.slice(this._offset, this._offset + len); + this._offset += len; + return (buf); +}; + +SSHBuffer.prototype.readString = function () { + return (this.readBuffer().toString()); +}; + +SSHBuffer.prototype.readCString = function () { + var offset = this._offset; + while (offset < this._buffer.length && + this._buffer[offset] !== 0x00) + offset++; + assert.ok(offset < this._buffer.length, 'c string does not terminate'); + var str = this._buffer.slice(this._offset, offset).toString(); + this._offset = offset + 1; + return (str); +}; + +SSHBuffer.prototype.readInt = function () { + var v = this._buffer.readUInt32BE(this._offset); + this._offset += 4; + return (v); +}; + +SSHBuffer.prototype.readInt64 = function () { + assert.ok(this._offset + 8 < this._buffer.length, + 'buffer not long enough to read Int64'); + var v = this._buffer.slice(this._offset, this._offset + 8); + this._offset += 8; + return (v); +}; + +SSHBuffer.prototype.readChar = function () { + var v = this._buffer[this._offset++]; + return (v); +}; + +SSHBuffer.prototype.writeBuffer = function (buf) { + while (this._offset + 4 + buf.length > this._size) + this.expand(); + this._buffer.writeUInt32BE(buf.length, this._offset); + this._offset += 4; + buf.copy(this._buffer, this._offset); + this._offset += buf.length; +}; + +SSHBuffer.prototype.writeString = function (str) { + this.writeBuffer(Buffer.from(str, 'utf8')); +}; + +SSHBuffer.prototype.writeCString = function (str) { + while (this._offset + 1 + str.length > this._size) + this.expand(); + this._buffer.write(str, this._offset); + this._offset += str.length; + this._buffer[this._offset++] = 0; +}; + +SSHBuffer.prototype.writeInt = function (v) { + while (this._offset + 4 > this._size) + this.expand(); + this._buffer.writeUInt32BE(v, this._offset); + this._offset += 4; +}; + +SSHBuffer.prototype.writeInt64 = function (v) { + assert.buffer(v, 'value'); + if (v.length > 8) { + var lead = v.slice(0, v.length - 8); + for (var i = 0; i < lead.length; ++i) { + assert.strictEqual(lead[i], 0, + 'must fit in 64 bits of precision'); + } + v = v.slice(v.length - 8, v.length); + } + while (this._offset + 8 > this._size) + this.expand(); + v.copy(this._buffer, this._offset); + this._offset += 8; +}; + +SSHBuffer.prototype.writeChar = function (v) { + while (this._offset + 1 > this._size) + this.expand(); + this._buffer[this._offset++] = v; +}; + +SSHBuffer.prototype.writePart = function (p) { + this.writeBuffer(p.data); +}; + +SSHBuffer.prototype.write = function (buf) { + while (this._offset + buf.length > this._size) + this.expand(); + buf.copy(this._buffer, this._offset); + this._offset += buf.length; +}; + + +/***/ }), +/* 941 */, +/* 942 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + + +/*! + * Copyright 2010 LearnBoost + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Module dependencies. + */ + +var crypto = __webpack_require__(417) + , parse = __webpack_require__(835).parse + ; + +/** + * Valid keys. + */ + +var keys = + [ 'acl' + , 'location' + , 'logging' + , 'notification' + , 'partNumber' + , 'policy' + , 'requestPayment' + , 'torrent' + , 'uploadId' + , 'uploads' + , 'versionId' + , 'versioning' + , 'versions' + , 'website' + ] + +/** + * Return an "Authorization" header value with the given `options` + * in the form of "AWS :" + * + * @param {Object} options + * @return {String} + * @api private + */ + +function authorization (options) { + return 'AWS ' + options.key + ':' + sign(options) +} + +module.exports = authorization +module.exports.authorization = authorization + +/** + * Simple HMAC-SHA1 Wrapper + * + * @param {Object} options + * @return {String} + * @api private + */ + +function hmacSha1 (options) { + return crypto.createHmac('sha1', options.secret).update(options.message).digest('base64') +} + +module.exports.hmacSha1 = hmacSha1 + +/** + * Create a base64 sha1 HMAC for `options`. + * + * @param {Object} options + * @return {String} + * @api private + */ + +function sign (options) { + options.message = stringToSign(options) + return hmacSha1(options) +} +module.exports.sign = sign + +/** + * Create a base64 sha1 HMAC for `options`. + * + * Specifically to be used with S3 presigned URLs + * + * @param {Object} options + * @return {String} + * @api private + */ + +function signQuery (options) { + options.message = queryStringToSign(options) + return hmacSha1(options) +} +module.exports.signQuery= signQuery + +/** + * Return a string for sign() with the given `options`. + * + * Spec: + * + * \n + * \n + * \n + * \n + * [headers\n] + * + * + * @param {Object} options + * @return {String} + * @api private + */ + +function stringToSign (options) { + var headers = options.amazonHeaders || '' + if (headers) headers += '\n' + var r = + [ options.verb + , options.md5 + , options.contentType + , options.date ? options.date.toUTCString() : '' + , headers + options.resource + ] + return r.join('\n') +} +module.exports.stringToSign = stringToSign + +/** + * Return a string for sign() with the given `options`, but is meant exclusively + * for S3 presigned URLs + * + * Spec: + * + * \n + * + * + * @param {Object} options + * @return {String} + * @api private + */ + +function queryStringToSign (options){ + return 'GET\n\n\n' + options.date + '\n' + options.resource +} +module.exports.queryStringToSign = queryStringToSign + +/** + * Perform the following: + * + * - ignore non-amazon headers + * - lowercase fields + * - sort lexicographically + * - trim whitespace between ":" + * - join with newline + * + * @param {Object} headers + * @return {String} + * @api private + */ + +function canonicalizeHeaders (headers) { + var buf = [] + , fields = Object.keys(headers) + ; + for (var i = 0, len = fields.length; i < len; ++i) { + var field = fields[i] + , val = headers[field] + , field = field.toLowerCase() + ; + if (0 !== field.indexOf('x-amz')) continue + buf.push(field + ':' + val) + } + return buf.sort().join('\n') +} +module.exports.canonicalizeHeaders = canonicalizeHeaders + +/** + * Perform the following: + * + * - ignore non sub-resources + * - sort lexicographically + * + * @param {String} resource + * @return {String} + * @api private + */ + +function canonicalizeResource (resource) { + var url = parse(resource, true) + , path = url.pathname + , buf = [] + ; + + Object.keys(url.query).forEach(function(key){ + if (!~keys.indexOf(key)) return + var val = '' == url.query[key] ? '' : '=' + encodeURIComponent(url.query[key]) + buf.push(key + val) + }) + + return path + (buf.length ? '?' + buf.sort().join('&') : '') +} +module.exports.canonicalizeResource = canonicalizeResource + + +/***/ }), +/* 943 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); + +var _validateUrlUnicodeSubDomainSegment = _interopRequireDefault(__webpack_require__(382)); + +var _validateUrlUnicodeDomainSegment = _interopRequireDefault(__webpack_require__(284)); + +var _validateUrlUnicodeDomainTld = _interopRequireDefault(__webpack_require__(24)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +// Unencoded internationalized domains - this doesn't check for invalid UTF-8 sequences +var validateUrlUnicodeDomain = (0, _regexSupplant["default"])(/(?:(?:#{validateUrlUnicodeSubDomainSegment}\.)*(?:#{validateUrlUnicodeDomainSegment}\.)#{validateUrlUnicodeDomainTld})/i, { + validateUrlUnicodeSubDomainSegment: _validateUrlUnicodeSubDomainSegment["default"], + validateUrlUnicodeDomainSegment: _validateUrlUnicodeDomainSegment["default"], + validateUrlUnicodeDomainTld: _validateUrlUnicodeDomainTld["default"] +}); +var _default = validateUrlUnicodeDomain; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 944 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _atSigns = _interopRequireDefault(__webpack_require__(1)); + +var _latinAccentChars = _interopRequireDefault(__webpack_require__(401)); + +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var endMentionMatch = (0, _regexSupplant["default"])(/^(?:#{atSigns}|[#{latinAccentChars}]|:\/\/)/, { + atSigns: _atSigns["default"], + latinAccentChars: _latinAccentChars["default"] +}); +var _default = endMentionMatch; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 945 */, +/* 946 */, +/* 947 */, +/* 948 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +// 0 -> Array#forEach +// 1 -> Array#map +// 2 -> Array#filter +// 3 -> Array#some +// 4 -> Array#every +// 5 -> Array#find +// 6 -> Array#findIndex +var ctx = __webpack_require__(743); +var IObject = __webpack_require__(420); +var toObject = __webpack_require__(230); +var toLength = __webpack_require__(853); +var asc = __webpack_require__(789); +module.exports = function (TYPE, $create) { + var IS_MAP = TYPE == 1; + var IS_FILTER = TYPE == 2; + var IS_SOME = TYPE == 3; + var IS_EVERY = TYPE == 4; + var IS_FIND_INDEX = TYPE == 6; + var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; + var create = $create || asc; + return function ($this, callbackfn, that) { + var O = toObject($this); + var self = IObject(O); + var f = ctx(callbackfn, that, 3); + var length = toLength(self.length); + var index = 0; + var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; + var val, res; + for (;length > index; index++) if (NO_HOLES || index in self) { + val = self[index]; + res = f(val, index, O); + if (TYPE) { + if (IS_MAP) result[index] = res; // map + else if (res) switch (TYPE) { + case 3: return true; // some + case 5: return val; // find + case 6: return index; // findIndex + case 2: result.push(val); // filter + } else if (IS_EVERY) return false; // every + } + } + return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result; + }; +}; + + +/***/ }), +/* 949 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _cyrillicLettersAndMarks = _interopRequireDefault(__webpack_require__(339)); + +var _latinAccentChars = _interopRequireDefault(__webpack_require__(401)); + +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validGeneralUrlPathChars = (0, _regexSupplant["default"])(/[a-z#{cyrillicLettersAndMarks}0-9!\*';:=\+,\.\$\/%#\[\]\-\u2013_~@\|&#{latinAccentChars}]/i, { + cyrillicLettersAndMarks: _cyrillicLettersAndMarks["default"], + latinAccentChars: _latinAccentChars["default"] +}); +var _default = validGeneralUrlPathChars; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 950 */, +/* 951 */ +/***/ (function(module) { + +module.exports = function(size) { + return new LruCache(size) +} + +function LruCache(size) { + this.capacity = size | 0 + this.map = Object.create(null) + this.list = new DoublyLinkedList() +} + +LruCache.prototype.get = function(key) { + var node = this.map[key] + if (node == null) return undefined + this.used(node) + return node.val +} + +LruCache.prototype.set = function(key, val) { + var node = this.map[key] + if (node != null) { + node.val = val + } else { + if (!this.capacity) this.prune() + if (!this.capacity) return false + node = new DoublyLinkedNode(key, val) + this.map[key] = node + this.capacity-- + } + this.used(node) + return true +} + +LruCache.prototype.used = function(node) { + this.list.moveToFront(node) +} + +LruCache.prototype.prune = function() { + var node = this.list.pop() + if (node != null) { + delete this.map[node.key] + this.capacity++ + } +} + + +function DoublyLinkedList() { + this.firstNode = null + this.lastNode = null +} + +DoublyLinkedList.prototype.moveToFront = function(node) { + if (this.firstNode == node) return + + this.remove(node) + + if (this.firstNode == null) { + this.firstNode = node + this.lastNode = node + node.prev = null + node.next = null + } else { + node.prev = null + node.next = this.firstNode + node.next.prev = node + this.firstNode = node + } +} + +DoublyLinkedList.prototype.pop = function() { + var lastNode = this.lastNode + if (lastNode != null) { + this.remove(lastNode) + } + return lastNode +} + +DoublyLinkedList.prototype.remove = function(node) { + if (this.firstNode == node) { + this.firstNode = node.next + } else if (node.prev != null) { + node.prev.next = node.next + } + if (this.lastNode == node) { + this.lastNode = node.prev + } else if (node.next != null) { + node.next.prev = node.prev + } +} + + +function DoublyLinkedNode(key, val) { + this.key = key + this.val = val + this.prev = null + this.next = null +} + + +/***/ }), +/* 952 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var metaSchema = __webpack_require__(522); + +module.exports = { + $id: 'https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js', + definitions: { + simpleTypes: metaSchema.definitions.simpleTypes + }, + type: 'object', + dependencies: { + schema: ['validate'], + $data: ['validate'], + statements: ['inline'], + valid: {not: {required: ['macro']}} + }, + properties: { + type: metaSchema.properties.type, + schema: {type: 'boolean'}, + statements: {type: 'boolean'}, + dependencies: { + type: 'array', + items: {type: 'string'} + }, + metaSchema: {type: 'object'}, + modifying: {type: 'boolean'}, + valid: {type: 'boolean'}, + $data: {type: 'boolean'}, + async: {type: 'boolean'}, + errors: { + anyOf: [ + {type: 'boolean'}, + {const: 'full'} + ] + } + } +}; + + +/***/ }), +/* 953 */, +/* 954 */ +/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { + +// 19.1.2.14 Object.keys(O) +var toObject = __webpack_require__(230); +var $keys = __webpack_require__(333); + +__webpack_require__(675)('keys', function () { + return function keys(it) { + return $keys(toObject(it)); + }; +}); + + +/***/ }), +/* 955 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + + +var util = __webpack_require__(855); + +module.exports = SchemaObject; + +function SchemaObject(obj) { + util.copy(obj, this); +} + + +/***/ }), +/* 956 */ +/***/ (function(module) { + +module.exports = function (it) { + return typeof it === 'object' ? it !== null : typeof it === 'function'; +}; + + +/***/ }), +/* 957 */, +/* 958 */, +/* 959 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +// Named EC curves + +// Requires ec.js, jsbn.js, and jsbn2.js +var BigInteger = __webpack_require__(242).BigInteger +var ECCurveFp = __webpack_require__(161).ECCurveFp + + +// ---------------- +// X9ECParameters + +// constructor +function X9ECParameters(curve,g,n,h) { + this.curve = curve; + this.g = g; + this.n = n; + this.h = h; +} + +function x9getCurve() { + return this.curve; +} + +function x9getG() { + return this.g; +} + +function x9getN() { + return this.n; +} + +function x9getH() { + return this.h; +} + +X9ECParameters.prototype.getCurve = x9getCurve; +X9ECParameters.prototype.getG = x9getG; +X9ECParameters.prototype.getN = x9getN; +X9ECParameters.prototype.getH = x9getH; + +// ---------------- +// SECNamedCurves + +function fromHex(s) { return new BigInteger(s, 16); } + +function secp128r1() { + // p = 2^128 - 2^97 - 1 + var p = fromHex("FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF"); + var a = fromHex("FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFC"); + var b = fromHex("E87579C11079F43DD824993C2CEE5ED3"); + //byte[] S = Hex.decode("000E0D4D696E6768756151750CC03A4473D03679"); + var n = fromHex("FFFFFFFE0000000075A30D1B9038A115"); + var h = BigInteger.ONE; + var curve = new ECCurveFp(p, a, b); + var G = curve.decodePointHex("04" + + "161FF7528B899B2D0C28607CA52C5B86" + + "CF5AC8395BAFEB13C02DA292DDED7A83"); + return new X9ECParameters(curve, G, n, h); +} + +function secp160k1() { + // p = 2^160 - 2^32 - 2^14 - 2^12 - 2^9 - 2^8 - 2^7 - 2^3 - 2^2 - 1 + var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFAC73"); + var a = BigInteger.ZERO; + var b = fromHex("7"); + //byte[] S = null; + var n = fromHex("0100000000000000000001B8FA16DFAB9ACA16B6B3"); + var h = BigInteger.ONE; + var curve = new ECCurveFp(p, a, b); + var G = curve.decodePointHex("04" + + "3B4C382CE37AA192A4019E763036F4F5DD4D7EBB" + + "938CF935318FDCED6BC28286531733C3F03C4FEE"); + return new X9ECParameters(curve, G, n, h); +} + +function secp160r1() { + // p = 2^160 - 2^31 - 1 + var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF"); + var a = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFC"); + var b = fromHex("1C97BEFC54BD7A8B65ACF89F81D4D4ADC565FA45"); + //byte[] S = Hex.decode("1053CDE42C14D696E67687561517533BF3F83345"); + var n = fromHex("0100000000000000000001F4C8F927AED3CA752257"); + var h = BigInteger.ONE; + var curve = new ECCurveFp(p, a, b); + var G = curve.decodePointHex("04" + + "4A96B5688EF573284664698968C38BB913CBFC82" + + "23A628553168947D59DCC912042351377AC5FB32"); + return new X9ECParameters(curve, G, n, h); +} + +function secp192k1() { + // p = 2^192 - 2^32 - 2^12 - 2^8 - 2^7 - 2^6 - 2^3 - 1 + var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFEE37"); + var a = BigInteger.ZERO; + var b = fromHex("3"); + //byte[] S = null; + var n = fromHex("FFFFFFFFFFFFFFFFFFFFFFFE26F2FC170F69466A74DEFD8D"); + var h = BigInteger.ONE; + var curve = new ECCurveFp(p, a, b); + var G = curve.decodePointHex("04" + + "DB4FF10EC057E9AE26B07D0280B7F4341DA5D1B1EAE06C7D" + + "9B2F2F6D9C5628A7844163D015BE86344082AA88D95E2F9D"); + return new X9ECParameters(curve, G, n, h); +} + +function secp192r1() { + // p = 2^192 - 2^64 - 1 + var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF"); + var a = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC"); + var b = fromHex("64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1"); + //byte[] S = Hex.decode("3045AE6FC8422F64ED579528D38120EAE12196D5"); + var n = fromHex("FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831"); + var h = BigInteger.ONE; + var curve = new ECCurveFp(p, a, b); + var G = curve.decodePointHex("04" + + "188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012" + + "07192B95FFC8DA78631011ED6B24CDD573F977A11E794811"); + return new X9ECParameters(curve, G, n, h); +} + +function secp224r1() { + // p = 2^224 - 2^96 + 1 + var p = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001"); + var a = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFE"); + var b = fromHex("B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4"); + //byte[] S = Hex.decode("BD71344799D5C7FCDC45B59FA3B9AB8F6A948BC5"); + var n = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D"); + var h = BigInteger.ONE; + var curve = new ECCurveFp(p, a, b); + var G = curve.decodePointHex("04" + + "B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21" + + "BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34"); + return new X9ECParameters(curve, G, n, h); +} + +function secp256r1() { + // p = 2^224 (2^32 - 1) + 2^192 + 2^96 - 1 + var p = fromHex("FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF"); + var a = fromHex("FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC"); + var b = fromHex("5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B"); + //byte[] S = Hex.decode("C49D360886E704936A6678E1139D26B7819F7E90"); + var n = fromHex("FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551"); + var h = BigInteger.ONE; + var curve = new ECCurveFp(p, a, b); + var G = curve.decodePointHex("04" + + "6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296" + + "4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5"); + return new X9ECParameters(curve, G, n, h); +} + +// TODO: make this into a proper hashtable +function getSECCurveByName(name) { + if(name == "secp128r1") return secp128r1(); + if(name == "secp160k1") return secp160k1(); + if(name == "secp160r1") return secp160r1(); + if(name == "secp192k1") return secp192k1(); + if(name == "secp192r1") return secp192r1(); + if(name == "secp224r1") return secp224r1(); + if(name == "secp256r1") return secp256r1(); + return null; +} + +module.exports = { + "secp128r1":secp128r1, + "secp160k1":secp160k1, + "secp160r1":secp160r1, + "secp192k1":secp192k1, + "secp192r1":secp192r1, + "secp224r1":secp224r1, + "secp256r1":secp256r1 +} + + +/***/ }), +/* 960 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _validate = _interopRequireDefault(__webpack_require__(634)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ +const byteToHex = []; + +for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 0x100).toString(16).substr(1)); +} + +function stringify(arr, offset = 0) { + // Note: Be careful editing this code! It's been tuned for performance + // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 + const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one + // of the following: + // - One or more input array values don't map to a hex octet (leading to + // "undefined" in the uuid) + // - Invalid input values for the RFC `version` or `variant` fields + + if (!(0, _validate.default)(uuid)) { + throw TypeError('Stringified UUID is invalid'); + } + + return uuid; +} + +var _default = stringify; +exports.default = _default; + +/***/ }), +/* 961 */ +/***/ (function(module) { + +"use strict"; + +module.exports = function generate__limit(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + var $isMax = $keyword == 'maximum', + $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum', + $schemaExcl = it.schema[$exclusiveKeyword], + $isDataExcl = it.opts.$data && $schemaExcl && $schemaExcl.$data, + $op = $isMax ? '<' : '>', + $notOp = $isMax ? '>' : '<', + $errorKeyword = undefined; + if (!($isData || typeof $schema == 'number' || $schema === undefined)) { + throw new Error($keyword + ' must be number'); + } + if (!($isDataExcl || $schemaExcl === undefined || typeof $schemaExcl == 'number' || typeof $schemaExcl == 'boolean')) { + throw new Error($exclusiveKeyword + ' must be number or boolean'); + } + if ($isDataExcl) { + var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr), + $exclusive = 'exclusive' + $lvl, + $exclType = 'exclType' + $lvl, + $exclIsNumber = 'exclIsNumber' + $lvl, + $opExpr = 'op' + $lvl, + $opStr = '\' + ' + $opExpr + ' + \''; + out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; '; + $schemaValueExcl = 'schemaExcl' + $lvl; + out += ' var ' + ($exclusive) + '; var ' + ($exclType) + ' = typeof ' + ($schemaValueExcl) + '; if (' + ($exclType) + ' != \'boolean\' && ' + ($exclType) + ' != \'undefined\' && ' + ($exclType) + ' != \'number\') { '; + var $errorKeyword = $exclusiveKeyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_exclusiveLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'' + ($exclusiveKeyword) + ' should be boolean\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' ' + ($exclType) + ' == \'number\' ? ( (' + ($exclusive) + ' = ' + ($schemaValue) + ' === undefined || ' + ($schemaValueExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ') ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValueExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) : ( (' + ($exclusive) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { var op' + ($lvl) + ' = ' + ($exclusive) + ' ? \'' + ($op) + '\' : \'' + ($op) + '=\'; '; + if ($schema === undefined) { + $errorKeyword = $exclusiveKeyword; + $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword; + $schemaValue = $schemaValueExcl; + $isData = $isDataExcl; + } + } else { + var $exclIsNumber = typeof $schemaExcl == 'number', + $opStr = $op; + if ($exclIsNumber && $isData) { + var $opExpr = '\'' + $opStr + '\''; + out += ' if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' ( ' + ($schemaValue) + ' === undefined || ' + ($schemaExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ' ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { '; + } else { + if ($exclIsNumber && $schema === undefined) { + $exclusive = true; + $errorKeyword = $exclusiveKeyword; + $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword; + $schemaValue = $schemaExcl; + $notOp += '='; + } else { + if ($exclIsNumber) $schemaValue = Math[$isMax ? 'min' : 'max']($schemaExcl, $schema); + if ($schemaExcl === ($exclIsNumber ? $schemaValue : true)) { + $exclusive = true; + $errorKeyword = $exclusiveKeyword; + $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword; + $notOp += '='; + } else { + $exclusive = false; + $opStr += '='; + } + } + var $opExpr = '\'' + $opStr + '\''; + out += ' if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' || ' + ($data) + ' !== ' + ($data) + ') { '; + } + } + $errorKeyword = $errorKeyword || $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_limit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be ' + ($opStr) + ' '; + if ($isData) { + out += '\' + ' + ($schemaValue); + } else { + out += '' + ($schemaValue) + '\''; + } + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + if ($breakOnError) { + out += ' else { '; + } + return out; +} + + +/***/ }), +/* 962 */, +/* 963 */, +/* 964 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; + +var _convertUnicodeIndices = _interopRequireDefault(__webpack_require__(348)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text, entities) { + (0, _convertUnicodeIndices["default"])(text, entities, true); +} + +module.exports = exports.default; + +/***/ }), +/* 965 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _astralLetterAndMarks = _interopRequireDefault(__webpack_require__(481)); + +var _astralNumerals = _interopRequireDefault(__webpack_require__(767)); + +var _bmpLetterAndMarks = _interopRequireDefault(__webpack_require__(886)); + +var _bmpNumerals = _interopRequireDefault(__webpack_require__(307)); + +var _hashtagSpecialChars = _interopRequireDefault(__webpack_require__(906)); + +var _nonBmpCodePairs = _interopRequireDefault(__webpack_require__(235)); + +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var hashtagAlphaNumeric = (0, _regexSupplant["default"])(/(?:[#{bmpLetterAndMarks}#{bmpNumerals}#{hashtagSpecialChars}]|(?=#{nonBmpCodePairs})(?:#{astralLetterAndMarks}|#{astralNumerals}))/, { + bmpLetterAndMarks: _bmpLetterAndMarks["default"], + bmpNumerals: _bmpNumerals["default"], + hashtagSpecialChars: _hashtagSpecialChars["default"], + nonBmpCodePairs: _nonBmpCodePairs["default"], + astralLetterAndMarks: _astralLetterAndMarks["default"], + astralNumerals: _astralNumerals["default"] +}); +var _default = hashtagAlphaNumeric; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 966 */ +/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { + +"use strict"; + +// ECMAScript 6 symbols shim +var global = __webpack_require__(300); +var has = __webpack_require__(975); +var DESCRIPTORS = __webpack_require__(843); +var $export = __webpack_require__(195); +var redefine = __webpack_require__(976); +var META = __webpack_require__(427).KEY; +var $fails = __webpack_require__(971); +var shared = __webpack_require__(881); +var setToStringTag = __webpack_require__(259); +var uid = __webpack_require__(750); +var wks = __webpack_require__(621); +var wksExt = __webpack_require__(209); +var wksDefine = __webpack_require__(883); +var enumKeys = __webpack_require__(811); +var isArray = __webpack_require__(676); +var anObject = __webpack_require__(990); +var isObject = __webpack_require__(956); +var toObject = __webpack_require__(230); +var toIObject = __webpack_require__(78); +var toPrimitive = __webpack_require__(710); +var createDesc = __webpack_require__(690); +var _create = __webpack_require__(991); +var gOPNExt = __webpack_require__(736); +var $GOPD = __webpack_require__(321); +var $GOPS = __webpack_require__(243); +var $DP = __webpack_require__(973); +var $keys = __webpack_require__(333); +var gOPD = $GOPD.f; +var dP = $DP.f; +var gOPN = gOPNExt.f; +var $Symbol = global.Symbol; +var $JSON = global.JSON; +var _stringify = $JSON && $JSON.stringify; +var PROTOTYPE = 'prototype'; +var HIDDEN = wks('_hidden'); +var TO_PRIMITIVE = wks('toPrimitive'); +var isEnum = {}.propertyIsEnumerable; +var SymbolRegistry = shared('symbol-registry'); +var AllSymbols = shared('symbols'); +var OPSymbols = shared('op-symbols'); +var ObjectProto = Object[PROTOTYPE]; +var USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f; +var QObject = global.QObject; +// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 +var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; + +// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 +var setSymbolDesc = DESCRIPTORS && $fails(function () { + return _create(dP({}, 'a', { + get: function () { return dP(this, 'a', { value: 7 }).a; } + })).a != 7; +}) ? function (it, key, D) { + var protoDesc = gOPD(ObjectProto, key); + if (protoDesc) delete ObjectProto[key]; + dP(it, key, D); + if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc); +} : dP; + +var wrap = function (tag) { + var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]); + sym._k = tag; + return sym; +}; + +var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) { + return typeof it == 'symbol'; +} : function (it) { + return it instanceof $Symbol; +}; + +var $defineProperty = function defineProperty(it, key, D) { + if (it === ObjectProto) $defineProperty(OPSymbols, key, D); + anObject(it); + key = toPrimitive(key, true); + anObject(D); + if (has(AllSymbols, key)) { + if (!D.enumerable) { + if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {})); + it[HIDDEN][key] = true; + } else { + if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false; + D = _create(D, { enumerable: createDesc(0, false) }); + } return setSymbolDesc(it, key, D); + } return dP(it, key, D); +}; +var $defineProperties = function defineProperties(it, P) { + anObject(it); + var keys = enumKeys(P = toIObject(P)); + var i = 0; + var l = keys.length; + var key; + while (l > i) $defineProperty(it, key = keys[i++], P[key]); + return it; +}; +var $create = function create(it, P) { + return P === undefined ? _create(it) : $defineProperties(_create(it), P); +}; +var $propertyIsEnumerable = function propertyIsEnumerable(key) { + var E = isEnum.call(this, key = toPrimitive(key, true)); + if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false; + return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true; +}; +var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) { + it = toIObject(it); + key = toPrimitive(key, true); + if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return; + var D = gOPD(it, key); + if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true; + return D; +}; +var $getOwnPropertyNames = function getOwnPropertyNames(it) { + var names = gOPN(toIObject(it)); + var result = []; + var i = 0; + var key; + while (names.length > i) { + if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key); + } return result; +}; +var $getOwnPropertySymbols = function getOwnPropertySymbols(it) { + var IS_OP = it === ObjectProto; + var names = gOPN(IS_OP ? OPSymbols : toIObject(it)); + var result = []; + var i = 0; + var key; + while (names.length > i) { + if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]); + } return result; +}; + +// 19.4.1.1 Symbol([description]) +if (!USE_NATIVE) { + $Symbol = function Symbol() { + if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!'); + var tag = uid(arguments.length > 0 ? arguments[0] : undefined); + var $set = function (value) { + if (this === ObjectProto) $set.call(OPSymbols, value); + if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false; + setSymbolDesc(this, tag, createDesc(1, value)); + }; + if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set }); + return wrap(tag); + }; + redefine($Symbol[PROTOTYPE], 'toString', function toString() { + return this._k; + }); + + $GOPD.f = $getOwnPropertyDescriptor; + $DP.f = $defineProperty; + __webpack_require__(996).f = gOPNExt.f = $getOwnPropertyNames; + __webpack_require__(632).f = $propertyIsEnumerable; + $GOPS.f = $getOwnPropertySymbols; + + if (DESCRIPTORS && !__webpack_require__(9)) { + redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true); + } + + wksExt.f = function (name) { + return wrap(wks(name)); + }; +} + +$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol }); + +for (var es6Symbols = ( + // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14 + 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables' +).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]); + +for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]); + +$export($export.S + $export.F * !USE_NATIVE, 'Symbol', { + // 19.4.2.1 Symbol.for(key) + 'for': function (key) { + return has(SymbolRegistry, key += '') + ? SymbolRegistry[key] + : SymbolRegistry[key] = $Symbol(key); + }, + // 19.4.2.5 Symbol.keyFor(sym) + keyFor: function keyFor(sym) { + if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!'); + for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key; + }, + useSetter: function () { setter = true; }, + useSimple: function () { setter = false; } +}); + +$export($export.S + $export.F * !USE_NATIVE, 'Object', { + // 19.1.2.2 Object.create(O [, Properties]) + create: $create, + // 19.1.2.4 Object.defineProperty(O, P, Attributes) + defineProperty: $defineProperty, + // 19.1.2.3 Object.defineProperties(O, Properties) + defineProperties: $defineProperties, + // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) + getOwnPropertyDescriptor: $getOwnPropertyDescriptor, + // 19.1.2.7 Object.getOwnPropertyNames(O) + getOwnPropertyNames: $getOwnPropertyNames, + // 19.1.2.8 Object.getOwnPropertySymbols(O) + getOwnPropertySymbols: $getOwnPropertySymbols +}); + +// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives +// https://bugs.chromium.org/p/v8/issues/detail?id=3443 +var FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); }); + +$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', { + getOwnPropertySymbols: function getOwnPropertySymbols(it) { + return $GOPS.f(toObject(it)); + } +}); + +// 24.3.2 JSON.stringify(value [, replacer [, space]]) +$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () { + var S = $Symbol(); + // MS Edge converts symbol values to JSON as {} + // WebKit converts symbol values to JSON as null + // V8 throws on boxed symbols + return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}'; +})), 'JSON', { + stringify: function stringify(it) { + var args = [it]; + var i = 1; + var replacer, $replacer; + while (arguments.length > i) args.push(arguments[i++]); + $replacer = replacer = args[1]; + if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined + if (!isArray(replacer)) replacer = function (key, value) { + if (typeof $replacer == 'function') value = $replacer.call(this, key, value); + if (!isSymbol(value)) return value; + }; + args[1] = replacer; + return _stringify.apply($JSON, args); + } +}); + +// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint) +$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(609)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); +// 19.4.3.5 Symbol.prototype[@@toStringTag] +setToStringTag($Symbol, 'Symbol'); +// 20.2.1.9 Math[@@toStringTag] +setToStringTag(Math, 'Math', true); +// 24.3.3 JSON[@@toStringTag] +setToStringTag(global.JSON, 'JSON', true); + + +/***/ }), +/* 967 */ +/***/ (function(module) { + +module.exports = [[[0,44],"disallowed_STD3_valid"],[[45,46],"valid"],[[47,47],"disallowed_STD3_valid"],[[48,57],"valid"],[[58,64],"disallowed_STD3_valid"],[[65,65],"mapped",[97]],[[66,66],"mapped",[98]],[[67,67],"mapped",[99]],[[68,68],"mapped",[100]],[[69,69],"mapped",[101]],[[70,70],"mapped",[102]],[[71,71],"mapped",[103]],[[72,72],"mapped",[104]],[[73,73],"mapped",[105]],[[74,74],"mapped",[106]],[[75,75],"mapped",[107]],[[76,76],"mapped",[108]],[[77,77],"mapped",[109]],[[78,78],"mapped",[110]],[[79,79],"mapped",[111]],[[80,80],"mapped",[112]],[[81,81],"mapped",[113]],[[82,82],"mapped",[114]],[[83,83],"mapped",[115]],[[84,84],"mapped",[116]],[[85,85],"mapped",[117]],[[86,86],"mapped",[118]],[[87,87],"mapped",[119]],[[88,88],"mapped",[120]],[[89,89],"mapped",[121]],[[90,90],"mapped",[122]],[[91,96],"disallowed_STD3_valid"],[[97,122],"valid"],[[123,127],"disallowed_STD3_valid"],[[128,159],"disallowed"],[[160,160],"disallowed_STD3_mapped",[32]],[[161,167],"valid",[],"NV8"],[[168,168],"disallowed_STD3_mapped",[32,776]],[[169,169],"valid",[],"NV8"],[[170,170],"mapped",[97]],[[171,172],"valid",[],"NV8"],[[173,173],"ignored"],[[174,174],"valid",[],"NV8"],[[175,175],"disallowed_STD3_mapped",[32,772]],[[176,177],"valid",[],"NV8"],[[178,178],"mapped",[50]],[[179,179],"mapped",[51]],[[180,180],"disallowed_STD3_mapped",[32,769]],[[181,181],"mapped",[956]],[[182,182],"valid",[],"NV8"],[[183,183],"valid"],[[184,184],"disallowed_STD3_mapped",[32,807]],[[185,185],"mapped",[49]],[[186,186],"mapped",[111]],[[187,187],"valid",[],"NV8"],[[188,188],"mapped",[49,8260,52]],[[189,189],"mapped",[49,8260,50]],[[190,190],"mapped",[51,8260,52]],[[191,191],"valid",[],"NV8"],[[192,192],"mapped",[224]],[[193,193],"mapped",[225]],[[194,194],"mapped",[226]],[[195,195],"mapped",[227]],[[196,196],"mapped",[228]],[[197,197],"mapped",[229]],[[198,198],"mapped",[230]],[[199,199],"mapped",[231]],[[200,200],"mapped",[232]],[[201,201],"mapped",[233]],[[202,202],"mapped",[234]],[[203,203],"mapped",[235]],[[204,204],"mapped",[236]],[[205,205],"mapped",[237]],[[206,206],"mapped",[238]],[[207,207],"mapped",[239]],[[208,208],"mapped",[240]],[[209,209],"mapped",[241]],[[210,210],"mapped",[242]],[[211,211],"mapped",[243]],[[212,212],"mapped",[244]],[[213,213],"mapped",[245]],[[214,214],"mapped",[246]],[[215,215],"valid",[],"NV8"],[[216,216],"mapped",[248]],[[217,217],"mapped",[249]],[[218,218],"mapped",[250]],[[219,219],"mapped",[251]],[[220,220],"mapped",[252]],[[221,221],"mapped",[253]],[[222,222],"mapped",[254]],[[223,223],"deviation",[115,115]],[[224,246],"valid"],[[247,247],"valid",[],"NV8"],[[248,255],"valid"],[[256,256],"mapped",[257]],[[257,257],"valid"],[[258,258],"mapped",[259]],[[259,259],"valid"],[[260,260],"mapped",[261]],[[261,261],"valid"],[[262,262],"mapped",[263]],[[263,263],"valid"],[[264,264],"mapped",[265]],[[265,265],"valid"],[[266,266],"mapped",[267]],[[267,267],"valid"],[[268,268],"mapped",[269]],[[269,269],"valid"],[[270,270],"mapped",[271]],[[271,271],"valid"],[[272,272],"mapped",[273]],[[273,273],"valid"],[[274,274],"mapped",[275]],[[275,275],"valid"],[[276,276],"mapped",[277]],[[277,277],"valid"],[[278,278],"mapped",[279]],[[279,279],"valid"],[[280,280],"mapped",[281]],[[281,281],"valid"],[[282,282],"mapped",[283]],[[283,283],"valid"],[[284,284],"mapped",[285]],[[285,285],"valid"],[[286,286],"mapped",[287]],[[287,287],"valid"],[[288,288],"mapped",[289]],[[289,289],"valid"],[[290,290],"mapped",[291]],[[291,291],"valid"],[[292,292],"mapped",[293]],[[293,293],"valid"],[[294,294],"mapped",[295]],[[295,295],"valid"],[[296,296],"mapped",[297]],[[297,297],"valid"],[[298,298],"mapped",[299]],[[299,299],"valid"],[[300,300],"mapped",[301]],[[301,301],"valid"],[[302,302],"mapped",[303]],[[303,303],"valid"],[[304,304],"mapped",[105,775]],[[305,305],"valid"],[[306,307],"mapped",[105,106]],[[308,308],"mapped",[309]],[[309,309],"valid"],[[310,310],"mapped",[311]],[[311,312],"valid"],[[313,313],"mapped",[314]],[[314,314],"valid"],[[315,315],"mapped",[316]],[[316,316],"valid"],[[317,317],"mapped",[318]],[[318,318],"valid"],[[319,320],"mapped",[108,183]],[[321,321],"mapped",[322]],[[322,322],"valid"],[[323,323],"mapped",[324]],[[324,324],"valid"],[[325,325],"mapped",[326]],[[326,326],"valid"],[[327,327],"mapped",[328]],[[328,328],"valid"],[[329,329],"mapped",[700,110]],[[330,330],"mapped",[331]],[[331,331],"valid"],[[332,332],"mapped",[333]],[[333,333],"valid"],[[334,334],"mapped",[335]],[[335,335],"valid"],[[336,336],"mapped",[337]],[[337,337],"valid"],[[338,338],"mapped",[339]],[[339,339],"valid"],[[340,340],"mapped",[341]],[[341,341],"valid"],[[342,342],"mapped",[343]],[[343,343],"valid"],[[344,344],"mapped",[345]],[[345,345],"valid"],[[346,346],"mapped",[347]],[[347,347],"valid"],[[348,348],"mapped",[349]],[[349,349],"valid"],[[350,350],"mapped",[351]],[[351,351],"valid"],[[352,352],"mapped",[353]],[[353,353],"valid"],[[354,354],"mapped",[355]],[[355,355],"valid"],[[356,356],"mapped",[357]],[[357,357],"valid"],[[358,358],"mapped",[359]],[[359,359],"valid"],[[360,360],"mapped",[361]],[[361,361],"valid"],[[362,362],"mapped",[363]],[[363,363],"valid"],[[364,364],"mapped",[365]],[[365,365],"valid"],[[366,366],"mapped",[367]],[[367,367],"valid"],[[368,368],"mapped",[369]],[[369,369],"valid"],[[370,370],"mapped",[371]],[[371,371],"valid"],[[372,372],"mapped",[373]],[[373,373],"valid"],[[374,374],"mapped",[375]],[[375,375],"valid"],[[376,376],"mapped",[255]],[[377,377],"mapped",[378]],[[378,378],"valid"],[[379,379],"mapped",[380]],[[380,380],"valid"],[[381,381],"mapped",[382]],[[382,382],"valid"],[[383,383],"mapped",[115]],[[384,384],"valid"],[[385,385],"mapped",[595]],[[386,386],"mapped",[387]],[[387,387],"valid"],[[388,388],"mapped",[389]],[[389,389],"valid"],[[390,390],"mapped",[596]],[[391,391],"mapped",[392]],[[392,392],"valid"],[[393,393],"mapped",[598]],[[394,394],"mapped",[599]],[[395,395],"mapped",[396]],[[396,397],"valid"],[[398,398],"mapped",[477]],[[399,399],"mapped",[601]],[[400,400],"mapped",[603]],[[401,401],"mapped",[402]],[[402,402],"valid"],[[403,403],"mapped",[608]],[[404,404],"mapped",[611]],[[405,405],"valid"],[[406,406],"mapped",[617]],[[407,407],"mapped",[616]],[[408,408],"mapped",[409]],[[409,411],"valid"],[[412,412],"mapped",[623]],[[413,413],"mapped",[626]],[[414,414],"valid"],[[415,415],"mapped",[629]],[[416,416],"mapped",[417]],[[417,417],"valid"],[[418,418],"mapped",[419]],[[419,419],"valid"],[[420,420],"mapped",[421]],[[421,421],"valid"],[[422,422],"mapped",[640]],[[423,423],"mapped",[424]],[[424,424],"valid"],[[425,425],"mapped",[643]],[[426,427],"valid"],[[428,428],"mapped",[429]],[[429,429],"valid"],[[430,430],"mapped",[648]],[[431,431],"mapped",[432]],[[432,432],"valid"],[[433,433],"mapped",[650]],[[434,434],"mapped",[651]],[[435,435],"mapped",[436]],[[436,436],"valid"],[[437,437],"mapped",[438]],[[438,438],"valid"],[[439,439],"mapped",[658]],[[440,440],"mapped",[441]],[[441,443],"valid"],[[444,444],"mapped",[445]],[[445,451],"valid"],[[452,454],"mapped",[100,382]],[[455,457],"mapped",[108,106]],[[458,460],"mapped",[110,106]],[[461,461],"mapped",[462]],[[462,462],"valid"],[[463,463],"mapped",[464]],[[464,464],"valid"],[[465,465],"mapped",[466]],[[466,466],"valid"],[[467,467],"mapped",[468]],[[468,468],"valid"],[[469,469],"mapped",[470]],[[470,470],"valid"],[[471,471],"mapped",[472]],[[472,472],"valid"],[[473,473],"mapped",[474]],[[474,474],"valid"],[[475,475],"mapped",[476]],[[476,477],"valid"],[[478,478],"mapped",[479]],[[479,479],"valid"],[[480,480],"mapped",[481]],[[481,481],"valid"],[[482,482],"mapped",[483]],[[483,483],"valid"],[[484,484],"mapped",[485]],[[485,485],"valid"],[[486,486],"mapped",[487]],[[487,487],"valid"],[[488,488],"mapped",[489]],[[489,489],"valid"],[[490,490],"mapped",[491]],[[491,491],"valid"],[[492,492],"mapped",[493]],[[493,493],"valid"],[[494,494],"mapped",[495]],[[495,496],"valid"],[[497,499],"mapped",[100,122]],[[500,500],"mapped",[501]],[[501,501],"valid"],[[502,502],"mapped",[405]],[[503,503],"mapped",[447]],[[504,504],"mapped",[505]],[[505,505],"valid"],[[506,506],"mapped",[507]],[[507,507],"valid"],[[508,508],"mapped",[509]],[[509,509],"valid"],[[510,510],"mapped",[511]],[[511,511],"valid"],[[512,512],"mapped",[513]],[[513,513],"valid"],[[514,514],"mapped",[515]],[[515,515],"valid"],[[516,516],"mapped",[517]],[[517,517],"valid"],[[518,518],"mapped",[519]],[[519,519],"valid"],[[520,520],"mapped",[521]],[[521,521],"valid"],[[522,522],"mapped",[523]],[[523,523],"valid"],[[524,524],"mapped",[525]],[[525,525],"valid"],[[526,526],"mapped",[527]],[[527,527],"valid"],[[528,528],"mapped",[529]],[[529,529],"valid"],[[530,530],"mapped",[531]],[[531,531],"valid"],[[532,532],"mapped",[533]],[[533,533],"valid"],[[534,534],"mapped",[535]],[[535,535],"valid"],[[536,536],"mapped",[537]],[[537,537],"valid"],[[538,538],"mapped",[539]],[[539,539],"valid"],[[540,540],"mapped",[541]],[[541,541],"valid"],[[542,542],"mapped",[543]],[[543,543],"valid"],[[544,544],"mapped",[414]],[[545,545],"valid"],[[546,546],"mapped",[547]],[[547,547],"valid"],[[548,548],"mapped",[549]],[[549,549],"valid"],[[550,550],"mapped",[551]],[[551,551],"valid"],[[552,552],"mapped",[553]],[[553,553],"valid"],[[554,554],"mapped",[555]],[[555,555],"valid"],[[556,556],"mapped",[557]],[[557,557],"valid"],[[558,558],"mapped",[559]],[[559,559],"valid"],[[560,560],"mapped",[561]],[[561,561],"valid"],[[562,562],"mapped",[563]],[[563,563],"valid"],[[564,566],"valid"],[[567,569],"valid"],[[570,570],"mapped",[11365]],[[571,571],"mapped",[572]],[[572,572],"valid"],[[573,573],"mapped",[410]],[[574,574],"mapped",[11366]],[[575,576],"valid"],[[577,577],"mapped",[578]],[[578,578],"valid"],[[579,579],"mapped",[384]],[[580,580],"mapped",[649]],[[581,581],"mapped",[652]],[[582,582],"mapped",[583]],[[583,583],"valid"],[[584,584],"mapped",[585]],[[585,585],"valid"],[[586,586],"mapped",[587]],[[587,587],"valid"],[[588,588],"mapped",[589]],[[589,589],"valid"],[[590,590],"mapped",[591]],[[591,591],"valid"],[[592,680],"valid"],[[681,685],"valid"],[[686,687],"valid"],[[688,688],"mapped",[104]],[[689,689],"mapped",[614]],[[690,690],"mapped",[106]],[[691,691],"mapped",[114]],[[692,692],"mapped",[633]],[[693,693],"mapped",[635]],[[694,694],"mapped",[641]],[[695,695],"mapped",[119]],[[696,696],"mapped",[121]],[[697,705],"valid"],[[706,709],"valid",[],"NV8"],[[710,721],"valid"],[[722,727],"valid",[],"NV8"],[[728,728],"disallowed_STD3_mapped",[32,774]],[[729,729],"disallowed_STD3_mapped",[32,775]],[[730,730],"disallowed_STD3_mapped",[32,778]],[[731,731],"disallowed_STD3_mapped",[32,808]],[[732,732],"disallowed_STD3_mapped",[32,771]],[[733,733],"disallowed_STD3_mapped",[32,779]],[[734,734],"valid",[],"NV8"],[[735,735],"valid",[],"NV8"],[[736,736],"mapped",[611]],[[737,737],"mapped",[108]],[[738,738],"mapped",[115]],[[739,739],"mapped",[120]],[[740,740],"mapped",[661]],[[741,745],"valid",[],"NV8"],[[746,747],"valid",[],"NV8"],[[748,748],"valid"],[[749,749],"valid",[],"NV8"],[[750,750],"valid"],[[751,767],"valid",[],"NV8"],[[768,831],"valid"],[[832,832],"mapped",[768]],[[833,833],"mapped",[769]],[[834,834],"valid"],[[835,835],"mapped",[787]],[[836,836],"mapped",[776,769]],[[837,837],"mapped",[953]],[[838,846],"valid"],[[847,847],"ignored"],[[848,855],"valid"],[[856,860],"valid"],[[861,863],"valid"],[[864,865],"valid"],[[866,866],"valid"],[[867,879],"valid"],[[880,880],"mapped",[881]],[[881,881],"valid"],[[882,882],"mapped",[883]],[[883,883],"valid"],[[884,884],"mapped",[697]],[[885,885],"valid"],[[886,886],"mapped",[887]],[[887,887],"valid"],[[888,889],"disallowed"],[[890,890],"disallowed_STD3_mapped",[32,953]],[[891,893],"valid"],[[894,894],"disallowed_STD3_mapped",[59]],[[895,895],"mapped",[1011]],[[896,899],"disallowed"],[[900,900],"disallowed_STD3_mapped",[32,769]],[[901,901],"disallowed_STD3_mapped",[32,776,769]],[[902,902],"mapped",[940]],[[903,903],"mapped",[183]],[[904,904],"mapped",[941]],[[905,905],"mapped",[942]],[[906,906],"mapped",[943]],[[907,907],"disallowed"],[[908,908],"mapped",[972]],[[909,909],"disallowed"],[[910,910],"mapped",[973]],[[911,911],"mapped",[974]],[[912,912],"valid"],[[913,913],"mapped",[945]],[[914,914],"mapped",[946]],[[915,915],"mapped",[947]],[[916,916],"mapped",[948]],[[917,917],"mapped",[949]],[[918,918],"mapped",[950]],[[919,919],"mapped",[951]],[[920,920],"mapped",[952]],[[921,921],"mapped",[953]],[[922,922],"mapped",[954]],[[923,923],"mapped",[955]],[[924,924],"mapped",[956]],[[925,925],"mapped",[957]],[[926,926],"mapped",[958]],[[927,927],"mapped",[959]],[[928,928],"mapped",[960]],[[929,929],"mapped",[961]],[[930,930],"disallowed"],[[931,931],"mapped",[963]],[[932,932],"mapped",[964]],[[933,933],"mapped",[965]],[[934,934],"mapped",[966]],[[935,935],"mapped",[967]],[[936,936],"mapped",[968]],[[937,937],"mapped",[969]],[[938,938],"mapped",[970]],[[939,939],"mapped",[971]],[[940,961],"valid"],[[962,962],"deviation",[963]],[[963,974],"valid"],[[975,975],"mapped",[983]],[[976,976],"mapped",[946]],[[977,977],"mapped",[952]],[[978,978],"mapped",[965]],[[979,979],"mapped",[973]],[[980,980],"mapped",[971]],[[981,981],"mapped",[966]],[[982,982],"mapped",[960]],[[983,983],"valid"],[[984,984],"mapped",[985]],[[985,985],"valid"],[[986,986],"mapped",[987]],[[987,987],"valid"],[[988,988],"mapped",[989]],[[989,989],"valid"],[[990,990],"mapped",[991]],[[991,991],"valid"],[[992,992],"mapped",[993]],[[993,993],"valid"],[[994,994],"mapped",[995]],[[995,995],"valid"],[[996,996],"mapped",[997]],[[997,997],"valid"],[[998,998],"mapped",[999]],[[999,999],"valid"],[[1000,1000],"mapped",[1001]],[[1001,1001],"valid"],[[1002,1002],"mapped",[1003]],[[1003,1003],"valid"],[[1004,1004],"mapped",[1005]],[[1005,1005],"valid"],[[1006,1006],"mapped",[1007]],[[1007,1007],"valid"],[[1008,1008],"mapped",[954]],[[1009,1009],"mapped",[961]],[[1010,1010],"mapped",[963]],[[1011,1011],"valid"],[[1012,1012],"mapped",[952]],[[1013,1013],"mapped",[949]],[[1014,1014],"valid",[],"NV8"],[[1015,1015],"mapped",[1016]],[[1016,1016],"valid"],[[1017,1017],"mapped",[963]],[[1018,1018],"mapped",[1019]],[[1019,1019],"valid"],[[1020,1020],"valid"],[[1021,1021],"mapped",[891]],[[1022,1022],"mapped",[892]],[[1023,1023],"mapped",[893]],[[1024,1024],"mapped",[1104]],[[1025,1025],"mapped",[1105]],[[1026,1026],"mapped",[1106]],[[1027,1027],"mapped",[1107]],[[1028,1028],"mapped",[1108]],[[1029,1029],"mapped",[1109]],[[1030,1030],"mapped",[1110]],[[1031,1031],"mapped",[1111]],[[1032,1032],"mapped",[1112]],[[1033,1033],"mapped",[1113]],[[1034,1034],"mapped",[1114]],[[1035,1035],"mapped",[1115]],[[1036,1036],"mapped",[1116]],[[1037,1037],"mapped",[1117]],[[1038,1038],"mapped",[1118]],[[1039,1039],"mapped",[1119]],[[1040,1040],"mapped",[1072]],[[1041,1041],"mapped",[1073]],[[1042,1042],"mapped",[1074]],[[1043,1043],"mapped",[1075]],[[1044,1044],"mapped",[1076]],[[1045,1045],"mapped",[1077]],[[1046,1046],"mapped",[1078]],[[1047,1047],"mapped",[1079]],[[1048,1048],"mapped",[1080]],[[1049,1049],"mapped",[1081]],[[1050,1050],"mapped",[1082]],[[1051,1051],"mapped",[1083]],[[1052,1052],"mapped",[1084]],[[1053,1053],"mapped",[1085]],[[1054,1054],"mapped",[1086]],[[1055,1055],"mapped",[1087]],[[1056,1056],"mapped",[1088]],[[1057,1057],"mapped",[1089]],[[1058,1058],"mapped",[1090]],[[1059,1059],"mapped",[1091]],[[1060,1060],"mapped",[1092]],[[1061,1061],"mapped",[1093]],[[1062,1062],"mapped",[1094]],[[1063,1063],"mapped",[1095]],[[1064,1064],"mapped",[1096]],[[1065,1065],"mapped",[1097]],[[1066,1066],"mapped",[1098]],[[1067,1067],"mapped",[1099]],[[1068,1068],"mapped",[1100]],[[1069,1069],"mapped",[1101]],[[1070,1070],"mapped",[1102]],[[1071,1071],"mapped",[1103]],[[1072,1103],"valid"],[[1104,1104],"valid"],[[1105,1116],"valid"],[[1117,1117],"valid"],[[1118,1119],"valid"],[[1120,1120],"mapped",[1121]],[[1121,1121],"valid"],[[1122,1122],"mapped",[1123]],[[1123,1123],"valid"],[[1124,1124],"mapped",[1125]],[[1125,1125],"valid"],[[1126,1126],"mapped",[1127]],[[1127,1127],"valid"],[[1128,1128],"mapped",[1129]],[[1129,1129],"valid"],[[1130,1130],"mapped",[1131]],[[1131,1131],"valid"],[[1132,1132],"mapped",[1133]],[[1133,1133],"valid"],[[1134,1134],"mapped",[1135]],[[1135,1135],"valid"],[[1136,1136],"mapped",[1137]],[[1137,1137],"valid"],[[1138,1138],"mapped",[1139]],[[1139,1139],"valid"],[[1140,1140],"mapped",[1141]],[[1141,1141],"valid"],[[1142,1142],"mapped",[1143]],[[1143,1143],"valid"],[[1144,1144],"mapped",[1145]],[[1145,1145],"valid"],[[1146,1146],"mapped",[1147]],[[1147,1147],"valid"],[[1148,1148],"mapped",[1149]],[[1149,1149],"valid"],[[1150,1150],"mapped",[1151]],[[1151,1151],"valid"],[[1152,1152],"mapped",[1153]],[[1153,1153],"valid"],[[1154,1154],"valid",[],"NV8"],[[1155,1158],"valid"],[[1159,1159],"valid"],[[1160,1161],"valid",[],"NV8"],[[1162,1162],"mapped",[1163]],[[1163,1163],"valid"],[[1164,1164],"mapped",[1165]],[[1165,1165],"valid"],[[1166,1166],"mapped",[1167]],[[1167,1167],"valid"],[[1168,1168],"mapped",[1169]],[[1169,1169],"valid"],[[1170,1170],"mapped",[1171]],[[1171,1171],"valid"],[[1172,1172],"mapped",[1173]],[[1173,1173],"valid"],[[1174,1174],"mapped",[1175]],[[1175,1175],"valid"],[[1176,1176],"mapped",[1177]],[[1177,1177],"valid"],[[1178,1178],"mapped",[1179]],[[1179,1179],"valid"],[[1180,1180],"mapped",[1181]],[[1181,1181],"valid"],[[1182,1182],"mapped",[1183]],[[1183,1183],"valid"],[[1184,1184],"mapped",[1185]],[[1185,1185],"valid"],[[1186,1186],"mapped",[1187]],[[1187,1187],"valid"],[[1188,1188],"mapped",[1189]],[[1189,1189],"valid"],[[1190,1190],"mapped",[1191]],[[1191,1191],"valid"],[[1192,1192],"mapped",[1193]],[[1193,1193],"valid"],[[1194,1194],"mapped",[1195]],[[1195,1195],"valid"],[[1196,1196],"mapped",[1197]],[[1197,1197],"valid"],[[1198,1198],"mapped",[1199]],[[1199,1199],"valid"],[[1200,1200],"mapped",[1201]],[[1201,1201],"valid"],[[1202,1202],"mapped",[1203]],[[1203,1203],"valid"],[[1204,1204],"mapped",[1205]],[[1205,1205],"valid"],[[1206,1206],"mapped",[1207]],[[1207,1207],"valid"],[[1208,1208],"mapped",[1209]],[[1209,1209],"valid"],[[1210,1210],"mapped",[1211]],[[1211,1211],"valid"],[[1212,1212],"mapped",[1213]],[[1213,1213],"valid"],[[1214,1214],"mapped",[1215]],[[1215,1215],"valid"],[[1216,1216],"disallowed"],[[1217,1217],"mapped",[1218]],[[1218,1218],"valid"],[[1219,1219],"mapped",[1220]],[[1220,1220],"valid"],[[1221,1221],"mapped",[1222]],[[1222,1222],"valid"],[[1223,1223],"mapped",[1224]],[[1224,1224],"valid"],[[1225,1225],"mapped",[1226]],[[1226,1226],"valid"],[[1227,1227],"mapped",[1228]],[[1228,1228],"valid"],[[1229,1229],"mapped",[1230]],[[1230,1230],"valid"],[[1231,1231],"valid"],[[1232,1232],"mapped",[1233]],[[1233,1233],"valid"],[[1234,1234],"mapped",[1235]],[[1235,1235],"valid"],[[1236,1236],"mapped",[1237]],[[1237,1237],"valid"],[[1238,1238],"mapped",[1239]],[[1239,1239],"valid"],[[1240,1240],"mapped",[1241]],[[1241,1241],"valid"],[[1242,1242],"mapped",[1243]],[[1243,1243],"valid"],[[1244,1244],"mapped",[1245]],[[1245,1245],"valid"],[[1246,1246],"mapped",[1247]],[[1247,1247],"valid"],[[1248,1248],"mapped",[1249]],[[1249,1249],"valid"],[[1250,1250],"mapped",[1251]],[[1251,1251],"valid"],[[1252,1252],"mapped",[1253]],[[1253,1253],"valid"],[[1254,1254],"mapped",[1255]],[[1255,1255],"valid"],[[1256,1256],"mapped",[1257]],[[1257,1257],"valid"],[[1258,1258],"mapped",[1259]],[[1259,1259],"valid"],[[1260,1260],"mapped",[1261]],[[1261,1261],"valid"],[[1262,1262],"mapped",[1263]],[[1263,1263],"valid"],[[1264,1264],"mapped",[1265]],[[1265,1265],"valid"],[[1266,1266],"mapped",[1267]],[[1267,1267],"valid"],[[1268,1268],"mapped",[1269]],[[1269,1269],"valid"],[[1270,1270],"mapped",[1271]],[[1271,1271],"valid"],[[1272,1272],"mapped",[1273]],[[1273,1273],"valid"],[[1274,1274],"mapped",[1275]],[[1275,1275],"valid"],[[1276,1276],"mapped",[1277]],[[1277,1277],"valid"],[[1278,1278],"mapped",[1279]],[[1279,1279],"valid"],[[1280,1280],"mapped",[1281]],[[1281,1281],"valid"],[[1282,1282],"mapped",[1283]],[[1283,1283],"valid"],[[1284,1284],"mapped",[1285]],[[1285,1285],"valid"],[[1286,1286],"mapped",[1287]],[[1287,1287],"valid"],[[1288,1288],"mapped",[1289]],[[1289,1289],"valid"],[[1290,1290],"mapped",[1291]],[[1291,1291],"valid"],[[1292,1292],"mapped",[1293]],[[1293,1293],"valid"],[[1294,1294],"mapped",[1295]],[[1295,1295],"valid"],[[1296,1296],"mapped",[1297]],[[1297,1297],"valid"],[[1298,1298],"mapped",[1299]],[[1299,1299],"valid"],[[1300,1300],"mapped",[1301]],[[1301,1301],"valid"],[[1302,1302],"mapped",[1303]],[[1303,1303],"valid"],[[1304,1304],"mapped",[1305]],[[1305,1305],"valid"],[[1306,1306],"mapped",[1307]],[[1307,1307],"valid"],[[1308,1308],"mapped",[1309]],[[1309,1309],"valid"],[[1310,1310],"mapped",[1311]],[[1311,1311],"valid"],[[1312,1312],"mapped",[1313]],[[1313,1313],"valid"],[[1314,1314],"mapped",[1315]],[[1315,1315],"valid"],[[1316,1316],"mapped",[1317]],[[1317,1317],"valid"],[[1318,1318],"mapped",[1319]],[[1319,1319],"valid"],[[1320,1320],"mapped",[1321]],[[1321,1321],"valid"],[[1322,1322],"mapped",[1323]],[[1323,1323],"valid"],[[1324,1324],"mapped",[1325]],[[1325,1325],"valid"],[[1326,1326],"mapped",[1327]],[[1327,1327],"valid"],[[1328,1328],"disallowed"],[[1329,1329],"mapped",[1377]],[[1330,1330],"mapped",[1378]],[[1331,1331],"mapped",[1379]],[[1332,1332],"mapped",[1380]],[[1333,1333],"mapped",[1381]],[[1334,1334],"mapped",[1382]],[[1335,1335],"mapped",[1383]],[[1336,1336],"mapped",[1384]],[[1337,1337],"mapped",[1385]],[[1338,1338],"mapped",[1386]],[[1339,1339],"mapped",[1387]],[[1340,1340],"mapped",[1388]],[[1341,1341],"mapped",[1389]],[[1342,1342],"mapped",[1390]],[[1343,1343],"mapped",[1391]],[[1344,1344],"mapped",[1392]],[[1345,1345],"mapped",[1393]],[[1346,1346],"mapped",[1394]],[[1347,1347],"mapped",[1395]],[[1348,1348],"mapped",[1396]],[[1349,1349],"mapped",[1397]],[[1350,1350],"mapped",[1398]],[[1351,1351],"mapped",[1399]],[[1352,1352],"mapped",[1400]],[[1353,1353],"mapped",[1401]],[[1354,1354],"mapped",[1402]],[[1355,1355],"mapped",[1403]],[[1356,1356],"mapped",[1404]],[[1357,1357],"mapped",[1405]],[[1358,1358],"mapped",[1406]],[[1359,1359],"mapped",[1407]],[[1360,1360],"mapped",[1408]],[[1361,1361],"mapped",[1409]],[[1362,1362],"mapped",[1410]],[[1363,1363],"mapped",[1411]],[[1364,1364],"mapped",[1412]],[[1365,1365],"mapped",[1413]],[[1366,1366],"mapped",[1414]],[[1367,1368],"disallowed"],[[1369,1369],"valid"],[[1370,1375],"valid",[],"NV8"],[[1376,1376],"disallowed"],[[1377,1414],"valid"],[[1415,1415],"mapped",[1381,1410]],[[1416,1416],"disallowed"],[[1417,1417],"valid",[],"NV8"],[[1418,1418],"valid",[],"NV8"],[[1419,1420],"disallowed"],[[1421,1422],"valid",[],"NV8"],[[1423,1423],"valid",[],"NV8"],[[1424,1424],"disallowed"],[[1425,1441],"valid"],[[1442,1442],"valid"],[[1443,1455],"valid"],[[1456,1465],"valid"],[[1466,1466],"valid"],[[1467,1469],"valid"],[[1470,1470],"valid",[],"NV8"],[[1471,1471],"valid"],[[1472,1472],"valid",[],"NV8"],[[1473,1474],"valid"],[[1475,1475],"valid",[],"NV8"],[[1476,1476],"valid"],[[1477,1477],"valid"],[[1478,1478],"valid",[],"NV8"],[[1479,1479],"valid"],[[1480,1487],"disallowed"],[[1488,1514],"valid"],[[1515,1519],"disallowed"],[[1520,1524],"valid"],[[1525,1535],"disallowed"],[[1536,1539],"disallowed"],[[1540,1540],"disallowed"],[[1541,1541],"disallowed"],[[1542,1546],"valid",[],"NV8"],[[1547,1547],"valid",[],"NV8"],[[1548,1548],"valid",[],"NV8"],[[1549,1551],"valid",[],"NV8"],[[1552,1557],"valid"],[[1558,1562],"valid"],[[1563,1563],"valid",[],"NV8"],[[1564,1564],"disallowed"],[[1565,1565],"disallowed"],[[1566,1566],"valid",[],"NV8"],[[1567,1567],"valid",[],"NV8"],[[1568,1568],"valid"],[[1569,1594],"valid"],[[1595,1599],"valid"],[[1600,1600],"valid",[],"NV8"],[[1601,1618],"valid"],[[1619,1621],"valid"],[[1622,1624],"valid"],[[1625,1630],"valid"],[[1631,1631],"valid"],[[1632,1641],"valid"],[[1642,1645],"valid",[],"NV8"],[[1646,1647],"valid"],[[1648,1652],"valid"],[[1653,1653],"mapped",[1575,1652]],[[1654,1654],"mapped",[1608,1652]],[[1655,1655],"mapped",[1735,1652]],[[1656,1656],"mapped",[1610,1652]],[[1657,1719],"valid"],[[1720,1721],"valid"],[[1722,1726],"valid"],[[1727,1727],"valid"],[[1728,1742],"valid"],[[1743,1743],"valid"],[[1744,1747],"valid"],[[1748,1748],"valid",[],"NV8"],[[1749,1756],"valid"],[[1757,1757],"disallowed"],[[1758,1758],"valid",[],"NV8"],[[1759,1768],"valid"],[[1769,1769],"valid",[],"NV8"],[[1770,1773],"valid"],[[1774,1775],"valid"],[[1776,1785],"valid"],[[1786,1790],"valid"],[[1791,1791],"valid"],[[1792,1805],"valid",[],"NV8"],[[1806,1806],"disallowed"],[[1807,1807],"disallowed"],[[1808,1836],"valid"],[[1837,1839],"valid"],[[1840,1866],"valid"],[[1867,1868],"disallowed"],[[1869,1871],"valid"],[[1872,1901],"valid"],[[1902,1919],"valid"],[[1920,1968],"valid"],[[1969,1969],"valid"],[[1970,1983],"disallowed"],[[1984,2037],"valid"],[[2038,2042],"valid",[],"NV8"],[[2043,2047],"disallowed"],[[2048,2093],"valid"],[[2094,2095],"disallowed"],[[2096,2110],"valid",[],"NV8"],[[2111,2111],"disallowed"],[[2112,2139],"valid"],[[2140,2141],"disallowed"],[[2142,2142],"valid",[],"NV8"],[[2143,2207],"disallowed"],[[2208,2208],"valid"],[[2209,2209],"valid"],[[2210,2220],"valid"],[[2221,2226],"valid"],[[2227,2228],"valid"],[[2229,2274],"disallowed"],[[2275,2275],"valid"],[[2276,2302],"valid"],[[2303,2303],"valid"],[[2304,2304],"valid"],[[2305,2307],"valid"],[[2308,2308],"valid"],[[2309,2361],"valid"],[[2362,2363],"valid"],[[2364,2381],"valid"],[[2382,2382],"valid"],[[2383,2383],"valid"],[[2384,2388],"valid"],[[2389,2389],"valid"],[[2390,2391],"valid"],[[2392,2392],"mapped",[2325,2364]],[[2393,2393],"mapped",[2326,2364]],[[2394,2394],"mapped",[2327,2364]],[[2395,2395],"mapped",[2332,2364]],[[2396,2396],"mapped",[2337,2364]],[[2397,2397],"mapped",[2338,2364]],[[2398,2398],"mapped",[2347,2364]],[[2399,2399],"mapped",[2351,2364]],[[2400,2403],"valid"],[[2404,2405],"valid",[],"NV8"],[[2406,2415],"valid"],[[2416,2416],"valid",[],"NV8"],[[2417,2418],"valid"],[[2419,2423],"valid"],[[2424,2424],"valid"],[[2425,2426],"valid"],[[2427,2428],"valid"],[[2429,2429],"valid"],[[2430,2431],"valid"],[[2432,2432],"valid"],[[2433,2435],"valid"],[[2436,2436],"disallowed"],[[2437,2444],"valid"],[[2445,2446],"disallowed"],[[2447,2448],"valid"],[[2449,2450],"disallowed"],[[2451,2472],"valid"],[[2473,2473],"disallowed"],[[2474,2480],"valid"],[[2481,2481],"disallowed"],[[2482,2482],"valid"],[[2483,2485],"disallowed"],[[2486,2489],"valid"],[[2490,2491],"disallowed"],[[2492,2492],"valid"],[[2493,2493],"valid"],[[2494,2500],"valid"],[[2501,2502],"disallowed"],[[2503,2504],"valid"],[[2505,2506],"disallowed"],[[2507,2509],"valid"],[[2510,2510],"valid"],[[2511,2518],"disallowed"],[[2519,2519],"valid"],[[2520,2523],"disallowed"],[[2524,2524],"mapped",[2465,2492]],[[2525,2525],"mapped",[2466,2492]],[[2526,2526],"disallowed"],[[2527,2527],"mapped",[2479,2492]],[[2528,2531],"valid"],[[2532,2533],"disallowed"],[[2534,2545],"valid"],[[2546,2554],"valid",[],"NV8"],[[2555,2555],"valid",[],"NV8"],[[2556,2560],"disallowed"],[[2561,2561],"valid"],[[2562,2562],"valid"],[[2563,2563],"valid"],[[2564,2564],"disallowed"],[[2565,2570],"valid"],[[2571,2574],"disallowed"],[[2575,2576],"valid"],[[2577,2578],"disallowed"],[[2579,2600],"valid"],[[2601,2601],"disallowed"],[[2602,2608],"valid"],[[2609,2609],"disallowed"],[[2610,2610],"valid"],[[2611,2611],"mapped",[2610,2620]],[[2612,2612],"disallowed"],[[2613,2613],"valid"],[[2614,2614],"mapped",[2616,2620]],[[2615,2615],"disallowed"],[[2616,2617],"valid"],[[2618,2619],"disallowed"],[[2620,2620],"valid"],[[2621,2621],"disallowed"],[[2622,2626],"valid"],[[2627,2630],"disallowed"],[[2631,2632],"valid"],[[2633,2634],"disallowed"],[[2635,2637],"valid"],[[2638,2640],"disallowed"],[[2641,2641],"valid"],[[2642,2648],"disallowed"],[[2649,2649],"mapped",[2582,2620]],[[2650,2650],"mapped",[2583,2620]],[[2651,2651],"mapped",[2588,2620]],[[2652,2652],"valid"],[[2653,2653],"disallowed"],[[2654,2654],"mapped",[2603,2620]],[[2655,2661],"disallowed"],[[2662,2676],"valid"],[[2677,2677],"valid"],[[2678,2688],"disallowed"],[[2689,2691],"valid"],[[2692,2692],"disallowed"],[[2693,2699],"valid"],[[2700,2700],"valid"],[[2701,2701],"valid"],[[2702,2702],"disallowed"],[[2703,2705],"valid"],[[2706,2706],"disallowed"],[[2707,2728],"valid"],[[2729,2729],"disallowed"],[[2730,2736],"valid"],[[2737,2737],"disallowed"],[[2738,2739],"valid"],[[2740,2740],"disallowed"],[[2741,2745],"valid"],[[2746,2747],"disallowed"],[[2748,2757],"valid"],[[2758,2758],"disallowed"],[[2759,2761],"valid"],[[2762,2762],"disallowed"],[[2763,2765],"valid"],[[2766,2767],"disallowed"],[[2768,2768],"valid"],[[2769,2783],"disallowed"],[[2784,2784],"valid"],[[2785,2787],"valid"],[[2788,2789],"disallowed"],[[2790,2799],"valid"],[[2800,2800],"valid",[],"NV8"],[[2801,2801],"valid",[],"NV8"],[[2802,2808],"disallowed"],[[2809,2809],"valid"],[[2810,2816],"disallowed"],[[2817,2819],"valid"],[[2820,2820],"disallowed"],[[2821,2828],"valid"],[[2829,2830],"disallowed"],[[2831,2832],"valid"],[[2833,2834],"disallowed"],[[2835,2856],"valid"],[[2857,2857],"disallowed"],[[2858,2864],"valid"],[[2865,2865],"disallowed"],[[2866,2867],"valid"],[[2868,2868],"disallowed"],[[2869,2869],"valid"],[[2870,2873],"valid"],[[2874,2875],"disallowed"],[[2876,2883],"valid"],[[2884,2884],"valid"],[[2885,2886],"disallowed"],[[2887,2888],"valid"],[[2889,2890],"disallowed"],[[2891,2893],"valid"],[[2894,2901],"disallowed"],[[2902,2903],"valid"],[[2904,2907],"disallowed"],[[2908,2908],"mapped",[2849,2876]],[[2909,2909],"mapped",[2850,2876]],[[2910,2910],"disallowed"],[[2911,2913],"valid"],[[2914,2915],"valid"],[[2916,2917],"disallowed"],[[2918,2927],"valid"],[[2928,2928],"valid",[],"NV8"],[[2929,2929],"valid"],[[2930,2935],"valid",[],"NV8"],[[2936,2945],"disallowed"],[[2946,2947],"valid"],[[2948,2948],"disallowed"],[[2949,2954],"valid"],[[2955,2957],"disallowed"],[[2958,2960],"valid"],[[2961,2961],"disallowed"],[[2962,2965],"valid"],[[2966,2968],"disallowed"],[[2969,2970],"valid"],[[2971,2971],"disallowed"],[[2972,2972],"valid"],[[2973,2973],"disallowed"],[[2974,2975],"valid"],[[2976,2978],"disallowed"],[[2979,2980],"valid"],[[2981,2983],"disallowed"],[[2984,2986],"valid"],[[2987,2989],"disallowed"],[[2990,2997],"valid"],[[2998,2998],"valid"],[[2999,3001],"valid"],[[3002,3005],"disallowed"],[[3006,3010],"valid"],[[3011,3013],"disallowed"],[[3014,3016],"valid"],[[3017,3017],"disallowed"],[[3018,3021],"valid"],[[3022,3023],"disallowed"],[[3024,3024],"valid"],[[3025,3030],"disallowed"],[[3031,3031],"valid"],[[3032,3045],"disallowed"],[[3046,3046],"valid"],[[3047,3055],"valid"],[[3056,3058],"valid",[],"NV8"],[[3059,3066],"valid",[],"NV8"],[[3067,3071],"disallowed"],[[3072,3072],"valid"],[[3073,3075],"valid"],[[3076,3076],"disallowed"],[[3077,3084],"valid"],[[3085,3085],"disallowed"],[[3086,3088],"valid"],[[3089,3089],"disallowed"],[[3090,3112],"valid"],[[3113,3113],"disallowed"],[[3114,3123],"valid"],[[3124,3124],"valid"],[[3125,3129],"valid"],[[3130,3132],"disallowed"],[[3133,3133],"valid"],[[3134,3140],"valid"],[[3141,3141],"disallowed"],[[3142,3144],"valid"],[[3145,3145],"disallowed"],[[3146,3149],"valid"],[[3150,3156],"disallowed"],[[3157,3158],"valid"],[[3159,3159],"disallowed"],[[3160,3161],"valid"],[[3162,3162],"valid"],[[3163,3167],"disallowed"],[[3168,3169],"valid"],[[3170,3171],"valid"],[[3172,3173],"disallowed"],[[3174,3183],"valid"],[[3184,3191],"disallowed"],[[3192,3199],"valid",[],"NV8"],[[3200,3200],"disallowed"],[[3201,3201],"valid"],[[3202,3203],"valid"],[[3204,3204],"disallowed"],[[3205,3212],"valid"],[[3213,3213],"disallowed"],[[3214,3216],"valid"],[[3217,3217],"disallowed"],[[3218,3240],"valid"],[[3241,3241],"disallowed"],[[3242,3251],"valid"],[[3252,3252],"disallowed"],[[3253,3257],"valid"],[[3258,3259],"disallowed"],[[3260,3261],"valid"],[[3262,3268],"valid"],[[3269,3269],"disallowed"],[[3270,3272],"valid"],[[3273,3273],"disallowed"],[[3274,3277],"valid"],[[3278,3284],"disallowed"],[[3285,3286],"valid"],[[3287,3293],"disallowed"],[[3294,3294],"valid"],[[3295,3295],"disallowed"],[[3296,3297],"valid"],[[3298,3299],"valid"],[[3300,3301],"disallowed"],[[3302,3311],"valid"],[[3312,3312],"disallowed"],[[3313,3314],"valid"],[[3315,3328],"disallowed"],[[3329,3329],"valid"],[[3330,3331],"valid"],[[3332,3332],"disallowed"],[[3333,3340],"valid"],[[3341,3341],"disallowed"],[[3342,3344],"valid"],[[3345,3345],"disallowed"],[[3346,3368],"valid"],[[3369,3369],"valid"],[[3370,3385],"valid"],[[3386,3386],"valid"],[[3387,3388],"disallowed"],[[3389,3389],"valid"],[[3390,3395],"valid"],[[3396,3396],"valid"],[[3397,3397],"disallowed"],[[3398,3400],"valid"],[[3401,3401],"disallowed"],[[3402,3405],"valid"],[[3406,3406],"valid"],[[3407,3414],"disallowed"],[[3415,3415],"valid"],[[3416,3422],"disallowed"],[[3423,3423],"valid"],[[3424,3425],"valid"],[[3426,3427],"valid"],[[3428,3429],"disallowed"],[[3430,3439],"valid"],[[3440,3445],"valid",[],"NV8"],[[3446,3448],"disallowed"],[[3449,3449],"valid",[],"NV8"],[[3450,3455],"valid"],[[3456,3457],"disallowed"],[[3458,3459],"valid"],[[3460,3460],"disallowed"],[[3461,3478],"valid"],[[3479,3481],"disallowed"],[[3482,3505],"valid"],[[3506,3506],"disallowed"],[[3507,3515],"valid"],[[3516,3516],"disallowed"],[[3517,3517],"valid"],[[3518,3519],"disallowed"],[[3520,3526],"valid"],[[3527,3529],"disallowed"],[[3530,3530],"valid"],[[3531,3534],"disallowed"],[[3535,3540],"valid"],[[3541,3541],"disallowed"],[[3542,3542],"valid"],[[3543,3543],"disallowed"],[[3544,3551],"valid"],[[3552,3557],"disallowed"],[[3558,3567],"valid"],[[3568,3569],"disallowed"],[[3570,3571],"valid"],[[3572,3572],"valid",[],"NV8"],[[3573,3584],"disallowed"],[[3585,3634],"valid"],[[3635,3635],"mapped",[3661,3634]],[[3636,3642],"valid"],[[3643,3646],"disallowed"],[[3647,3647],"valid",[],"NV8"],[[3648,3662],"valid"],[[3663,3663],"valid",[],"NV8"],[[3664,3673],"valid"],[[3674,3675],"valid",[],"NV8"],[[3676,3712],"disallowed"],[[3713,3714],"valid"],[[3715,3715],"disallowed"],[[3716,3716],"valid"],[[3717,3718],"disallowed"],[[3719,3720],"valid"],[[3721,3721],"disallowed"],[[3722,3722],"valid"],[[3723,3724],"disallowed"],[[3725,3725],"valid"],[[3726,3731],"disallowed"],[[3732,3735],"valid"],[[3736,3736],"disallowed"],[[3737,3743],"valid"],[[3744,3744],"disallowed"],[[3745,3747],"valid"],[[3748,3748],"disallowed"],[[3749,3749],"valid"],[[3750,3750],"disallowed"],[[3751,3751],"valid"],[[3752,3753],"disallowed"],[[3754,3755],"valid"],[[3756,3756],"disallowed"],[[3757,3762],"valid"],[[3763,3763],"mapped",[3789,3762]],[[3764,3769],"valid"],[[3770,3770],"disallowed"],[[3771,3773],"valid"],[[3774,3775],"disallowed"],[[3776,3780],"valid"],[[3781,3781],"disallowed"],[[3782,3782],"valid"],[[3783,3783],"disallowed"],[[3784,3789],"valid"],[[3790,3791],"disallowed"],[[3792,3801],"valid"],[[3802,3803],"disallowed"],[[3804,3804],"mapped",[3755,3737]],[[3805,3805],"mapped",[3755,3745]],[[3806,3807],"valid"],[[3808,3839],"disallowed"],[[3840,3840],"valid"],[[3841,3850],"valid",[],"NV8"],[[3851,3851],"valid"],[[3852,3852],"mapped",[3851]],[[3853,3863],"valid",[],"NV8"],[[3864,3865],"valid"],[[3866,3871],"valid",[],"NV8"],[[3872,3881],"valid"],[[3882,3892],"valid",[],"NV8"],[[3893,3893],"valid"],[[3894,3894],"valid",[],"NV8"],[[3895,3895],"valid"],[[3896,3896],"valid",[],"NV8"],[[3897,3897],"valid"],[[3898,3901],"valid",[],"NV8"],[[3902,3906],"valid"],[[3907,3907],"mapped",[3906,4023]],[[3908,3911],"valid"],[[3912,3912],"disallowed"],[[3913,3916],"valid"],[[3917,3917],"mapped",[3916,4023]],[[3918,3921],"valid"],[[3922,3922],"mapped",[3921,4023]],[[3923,3926],"valid"],[[3927,3927],"mapped",[3926,4023]],[[3928,3931],"valid"],[[3932,3932],"mapped",[3931,4023]],[[3933,3944],"valid"],[[3945,3945],"mapped",[3904,4021]],[[3946,3946],"valid"],[[3947,3948],"valid"],[[3949,3952],"disallowed"],[[3953,3954],"valid"],[[3955,3955],"mapped",[3953,3954]],[[3956,3956],"valid"],[[3957,3957],"mapped",[3953,3956]],[[3958,3958],"mapped",[4018,3968]],[[3959,3959],"mapped",[4018,3953,3968]],[[3960,3960],"mapped",[4019,3968]],[[3961,3961],"mapped",[4019,3953,3968]],[[3962,3968],"valid"],[[3969,3969],"mapped",[3953,3968]],[[3970,3972],"valid"],[[3973,3973],"valid",[],"NV8"],[[3974,3979],"valid"],[[3980,3983],"valid"],[[3984,3986],"valid"],[[3987,3987],"mapped",[3986,4023]],[[3988,3989],"valid"],[[3990,3990],"valid"],[[3991,3991],"valid"],[[3992,3992],"disallowed"],[[3993,3996],"valid"],[[3997,3997],"mapped",[3996,4023]],[[3998,4001],"valid"],[[4002,4002],"mapped",[4001,4023]],[[4003,4006],"valid"],[[4007,4007],"mapped",[4006,4023]],[[4008,4011],"valid"],[[4012,4012],"mapped",[4011,4023]],[[4013,4013],"valid"],[[4014,4016],"valid"],[[4017,4023],"valid"],[[4024,4024],"valid"],[[4025,4025],"mapped",[3984,4021]],[[4026,4028],"valid"],[[4029,4029],"disallowed"],[[4030,4037],"valid",[],"NV8"],[[4038,4038],"valid"],[[4039,4044],"valid",[],"NV8"],[[4045,4045],"disallowed"],[[4046,4046],"valid",[],"NV8"],[[4047,4047],"valid",[],"NV8"],[[4048,4049],"valid",[],"NV8"],[[4050,4052],"valid",[],"NV8"],[[4053,4056],"valid",[],"NV8"],[[4057,4058],"valid",[],"NV8"],[[4059,4095],"disallowed"],[[4096,4129],"valid"],[[4130,4130],"valid"],[[4131,4135],"valid"],[[4136,4136],"valid"],[[4137,4138],"valid"],[[4139,4139],"valid"],[[4140,4146],"valid"],[[4147,4149],"valid"],[[4150,4153],"valid"],[[4154,4159],"valid"],[[4160,4169],"valid"],[[4170,4175],"valid",[],"NV8"],[[4176,4185],"valid"],[[4186,4249],"valid"],[[4250,4253],"valid"],[[4254,4255],"valid",[],"NV8"],[[4256,4293],"disallowed"],[[4294,4294],"disallowed"],[[4295,4295],"mapped",[11559]],[[4296,4300],"disallowed"],[[4301,4301],"mapped",[11565]],[[4302,4303],"disallowed"],[[4304,4342],"valid"],[[4343,4344],"valid"],[[4345,4346],"valid"],[[4347,4347],"valid",[],"NV8"],[[4348,4348],"mapped",[4316]],[[4349,4351],"valid"],[[4352,4441],"valid",[],"NV8"],[[4442,4446],"valid",[],"NV8"],[[4447,4448],"disallowed"],[[4449,4514],"valid",[],"NV8"],[[4515,4519],"valid",[],"NV8"],[[4520,4601],"valid",[],"NV8"],[[4602,4607],"valid",[],"NV8"],[[4608,4614],"valid"],[[4615,4615],"valid"],[[4616,4678],"valid"],[[4679,4679],"valid"],[[4680,4680],"valid"],[[4681,4681],"disallowed"],[[4682,4685],"valid"],[[4686,4687],"disallowed"],[[4688,4694],"valid"],[[4695,4695],"disallowed"],[[4696,4696],"valid"],[[4697,4697],"disallowed"],[[4698,4701],"valid"],[[4702,4703],"disallowed"],[[4704,4742],"valid"],[[4743,4743],"valid"],[[4744,4744],"valid"],[[4745,4745],"disallowed"],[[4746,4749],"valid"],[[4750,4751],"disallowed"],[[4752,4782],"valid"],[[4783,4783],"valid"],[[4784,4784],"valid"],[[4785,4785],"disallowed"],[[4786,4789],"valid"],[[4790,4791],"disallowed"],[[4792,4798],"valid"],[[4799,4799],"disallowed"],[[4800,4800],"valid"],[[4801,4801],"disallowed"],[[4802,4805],"valid"],[[4806,4807],"disallowed"],[[4808,4814],"valid"],[[4815,4815],"valid"],[[4816,4822],"valid"],[[4823,4823],"disallowed"],[[4824,4846],"valid"],[[4847,4847],"valid"],[[4848,4878],"valid"],[[4879,4879],"valid"],[[4880,4880],"valid"],[[4881,4881],"disallowed"],[[4882,4885],"valid"],[[4886,4887],"disallowed"],[[4888,4894],"valid"],[[4895,4895],"valid"],[[4896,4934],"valid"],[[4935,4935],"valid"],[[4936,4954],"valid"],[[4955,4956],"disallowed"],[[4957,4958],"valid"],[[4959,4959],"valid"],[[4960,4960],"valid",[],"NV8"],[[4961,4988],"valid",[],"NV8"],[[4989,4991],"disallowed"],[[4992,5007],"valid"],[[5008,5017],"valid",[],"NV8"],[[5018,5023],"disallowed"],[[5024,5108],"valid"],[[5109,5109],"valid"],[[5110,5111],"disallowed"],[[5112,5112],"mapped",[5104]],[[5113,5113],"mapped",[5105]],[[5114,5114],"mapped",[5106]],[[5115,5115],"mapped",[5107]],[[5116,5116],"mapped",[5108]],[[5117,5117],"mapped",[5109]],[[5118,5119],"disallowed"],[[5120,5120],"valid",[],"NV8"],[[5121,5740],"valid"],[[5741,5742],"valid",[],"NV8"],[[5743,5750],"valid"],[[5751,5759],"valid"],[[5760,5760],"disallowed"],[[5761,5786],"valid"],[[5787,5788],"valid",[],"NV8"],[[5789,5791],"disallowed"],[[5792,5866],"valid"],[[5867,5872],"valid",[],"NV8"],[[5873,5880],"valid"],[[5881,5887],"disallowed"],[[5888,5900],"valid"],[[5901,5901],"disallowed"],[[5902,5908],"valid"],[[5909,5919],"disallowed"],[[5920,5940],"valid"],[[5941,5942],"valid",[],"NV8"],[[5943,5951],"disallowed"],[[5952,5971],"valid"],[[5972,5983],"disallowed"],[[5984,5996],"valid"],[[5997,5997],"disallowed"],[[5998,6000],"valid"],[[6001,6001],"disallowed"],[[6002,6003],"valid"],[[6004,6015],"disallowed"],[[6016,6067],"valid"],[[6068,6069],"disallowed"],[[6070,6099],"valid"],[[6100,6102],"valid",[],"NV8"],[[6103,6103],"valid"],[[6104,6107],"valid",[],"NV8"],[[6108,6108],"valid"],[[6109,6109],"valid"],[[6110,6111],"disallowed"],[[6112,6121],"valid"],[[6122,6127],"disallowed"],[[6128,6137],"valid",[],"NV8"],[[6138,6143],"disallowed"],[[6144,6149],"valid",[],"NV8"],[[6150,6150],"disallowed"],[[6151,6154],"valid",[],"NV8"],[[6155,6157],"ignored"],[[6158,6158],"disallowed"],[[6159,6159],"disallowed"],[[6160,6169],"valid"],[[6170,6175],"disallowed"],[[6176,6263],"valid"],[[6264,6271],"disallowed"],[[6272,6313],"valid"],[[6314,6314],"valid"],[[6315,6319],"disallowed"],[[6320,6389],"valid"],[[6390,6399],"disallowed"],[[6400,6428],"valid"],[[6429,6430],"valid"],[[6431,6431],"disallowed"],[[6432,6443],"valid"],[[6444,6447],"disallowed"],[[6448,6459],"valid"],[[6460,6463],"disallowed"],[[6464,6464],"valid",[],"NV8"],[[6465,6467],"disallowed"],[[6468,6469],"valid",[],"NV8"],[[6470,6509],"valid"],[[6510,6511],"disallowed"],[[6512,6516],"valid"],[[6517,6527],"disallowed"],[[6528,6569],"valid"],[[6570,6571],"valid"],[[6572,6575],"disallowed"],[[6576,6601],"valid"],[[6602,6607],"disallowed"],[[6608,6617],"valid"],[[6618,6618],"valid",[],"XV8"],[[6619,6621],"disallowed"],[[6622,6623],"valid",[],"NV8"],[[6624,6655],"valid",[],"NV8"],[[6656,6683],"valid"],[[6684,6685],"disallowed"],[[6686,6687],"valid",[],"NV8"],[[6688,6750],"valid"],[[6751,6751],"disallowed"],[[6752,6780],"valid"],[[6781,6782],"disallowed"],[[6783,6793],"valid"],[[6794,6799],"disallowed"],[[6800,6809],"valid"],[[6810,6815],"disallowed"],[[6816,6822],"valid",[],"NV8"],[[6823,6823],"valid"],[[6824,6829],"valid",[],"NV8"],[[6830,6831],"disallowed"],[[6832,6845],"valid"],[[6846,6846],"valid",[],"NV8"],[[6847,6911],"disallowed"],[[6912,6987],"valid"],[[6988,6991],"disallowed"],[[6992,7001],"valid"],[[7002,7018],"valid",[],"NV8"],[[7019,7027],"valid"],[[7028,7036],"valid",[],"NV8"],[[7037,7039],"disallowed"],[[7040,7082],"valid"],[[7083,7085],"valid"],[[7086,7097],"valid"],[[7098,7103],"valid"],[[7104,7155],"valid"],[[7156,7163],"disallowed"],[[7164,7167],"valid",[],"NV8"],[[7168,7223],"valid"],[[7224,7226],"disallowed"],[[7227,7231],"valid",[],"NV8"],[[7232,7241],"valid"],[[7242,7244],"disallowed"],[[7245,7293],"valid"],[[7294,7295],"valid",[],"NV8"],[[7296,7359],"disallowed"],[[7360,7367],"valid",[],"NV8"],[[7368,7375],"disallowed"],[[7376,7378],"valid"],[[7379,7379],"valid",[],"NV8"],[[7380,7410],"valid"],[[7411,7414],"valid"],[[7415,7415],"disallowed"],[[7416,7417],"valid"],[[7418,7423],"disallowed"],[[7424,7467],"valid"],[[7468,7468],"mapped",[97]],[[7469,7469],"mapped",[230]],[[7470,7470],"mapped",[98]],[[7471,7471],"valid"],[[7472,7472],"mapped",[100]],[[7473,7473],"mapped",[101]],[[7474,7474],"mapped",[477]],[[7475,7475],"mapped",[103]],[[7476,7476],"mapped",[104]],[[7477,7477],"mapped",[105]],[[7478,7478],"mapped",[106]],[[7479,7479],"mapped",[107]],[[7480,7480],"mapped",[108]],[[7481,7481],"mapped",[109]],[[7482,7482],"mapped",[110]],[[7483,7483],"valid"],[[7484,7484],"mapped",[111]],[[7485,7485],"mapped",[547]],[[7486,7486],"mapped",[112]],[[7487,7487],"mapped",[114]],[[7488,7488],"mapped",[116]],[[7489,7489],"mapped",[117]],[[7490,7490],"mapped",[119]],[[7491,7491],"mapped",[97]],[[7492,7492],"mapped",[592]],[[7493,7493],"mapped",[593]],[[7494,7494],"mapped",[7426]],[[7495,7495],"mapped",[98]],[[7496,7496],"mapped",[100]],[[7497,7497],"mapped",[101]],[[7498,7498],"mapped",[601]],[[7499,7499],"mapped",[603]],[[7500,7500],"mapped",[604]],[[7501,7501],"mapped",[103]],[[7502,7502],"valid"],[[7503,7503],"mapped",[107]],[[7504,7504],"mapped",[109]],[[7505,7505],"mapped",[331]],[[7506,7506],"mapped",[111]],[[7507,7507],"mapped",[596]],[[7508,7508],"mapped",[7446]],[[7509,7509],"mapped",[7447]],[[7510,7510],"mapped",[112]],[[7511,7511],"mapped",[116]],[[7512,7512],"mapped",[117]],[[7513,7513],"mapped",[7453]],[[7514,7514],"mapped",[623]],[[7515,7515],"mapped",[118]],[[7516,7516],"mapped",[7461]],[[7517,7517],"mapped",[946]],[[7518,7518],"mapped",[947]],[[7519,7519],"mapped",[948]],[[7520,7520],"mapped",[966]],[[7521,7521],"mapped",[967]],[[7522,7522],"mapped",[105]],[[7523,7523],"mapped",[114]],[[7524,7524],"mapped",[117]],[[7525,7525],"mapped",[118]],[[7526,7526],"mapped",[946]],[[7527,7527],"mapped",[947]],[[7528,7528],"mapped",[961]],[[7529,7529],"mapped",[966]],[[7530,7530],"mapped",[967]],[[7531,7531],"valid"],[[7532,7543],"valid"],[[7544,7544],"mapped",[1085]],[[7545,7578],"valid"],[[7579,7579],"mapped",[594]],[[7580,7580],"mapped",[99]],[[7581,7581],"mapped",[597]],[[7582,7582],"mapped",[240]],[[7583,7583],"mapped",[604]],[[7584,7584],"mapped",[102]],[[7585,7585],"mapped",[607]],[[7586,7586],"mapped",[609]],[[7587,7587],"mapped",[613]],[[7588,7588],"mapped",[616]],[[7589,7589],"mapped",[617]],[[7590,7590],"mapped",[618]],[[7591,7591],"mapped",[7547]],[[7592,7592],"mapped",[669]],[[7593,7593],"mapped",[621]],[[7594,7594],"mapped",[7557]],[[7595,7595],"mapped",[671]],[[7596,7596],"mapped",[625]],[[7597,7597],"mapped",[624]],[[7598,7598],"mapped",[626]],[[7599,7599],"mapped",[627]],[[7600,7600],"mapped",[628]],[[7601,7601],"mapped",[629]],[[7602,7602],"mapped",[632]],[[7603,7603],"mapped",[642]],[[7604,7604],"mapped",[643]],[[7605,7605],"mapped",[427]],[[7606,7606],"mapped",[649]],[[7607,7607],"mapped",[650]],[[7608,7608],"mapped",[7452]],[[7609,7609],"mapped",[651]],[[7610,7610],"mapped",[652]],[[7611,7611],"mapped",[122]],[[7612,7612],"mapped",[656]],[[7613,7613],"mapped",[657]],[[7614,7614],"mapped",[658]],[[7615,7615],"mapped",[952]],[[7616,7619],"valid"],[[7620,7626],"valid"],[[7627,7654],"valid"],[[7655,7669],"valid"],[[7670,7675],"disallowed"],[[7676,7676],"valid"],[[7677,7677],"valid"],[[7678,7679],"valid"],[[7680,7680],"mapped",[7681]],[[7681,7681],"valid"],[[7682,7682],"mapped",[7683]],[[7683,7683],"valid"],[[7684,7684],"mapped",[7685]],[[7685,7685],"valid"],[[7686,7686],"mapped",[7687]],[[7687,7687],"valid"],[[7688,7688],"mapped",[7689]],[[7689,7689],"valid"],[[7690,7690],"mapped",[7691]],[[7691,7691],"valid"],[[7692,7692],"mapped",[7693]],[[7693,7693],"valid"],[[7694,7694],"mapped",[7695]],[[7695,7695],"valid"],[[7696,7696],"mapped",[7697]],[[7697,7697],"valid"],[[7698,7698],"mapped",[7699]],[[7699,7699],"valid"],[[7700,7700],"mapped",[7701]],[[7701,7701],"valid"],[[7702,7702],"mapped",[7703]],[[7703,7703],"valid"],[[7704,7704],"mapped",[7705]],[[7705,7705],"valid"],[[7706,7706],"mapped",[7707]],[[7707,7707],"valid"],[[7708,7708],"mapped",[7709]],[[7709,7709],"valid"],[[7710,7710],"mapped",[7711]],[[7711,7711],"valid"],[[7712,7712],"mapped",[7713]],[[7713,7713],"valid"],[[7714,7714],"mapped",[7715]],[[7715,7715],"valid"],[[7716,7716],"mapped",[7717]],[[7717,7717],"valid"],[[7718,7718],"mapped",[7719]],[[7719,7719],"valid"],[[7720,7720],"mapped",[7721]],[[7721,7721],"valid"],[[7722,7722],"mapped",[7723]],[[7723,7723],"valid"],[[7724,7724],"mapped",[7725]],[[7725,7725],"valid"],[[7726,7726],"mapped",[7727]],[[7727,7727],"valid"],[[7728,7728],"mapped",[7729]],[[7729,7729],"valid"],[[7730,7730],"mapped",[7731]],[[7731,7731],"valid"],[[7732,7732],"mapped",[7733]],[[7733,7733],"valid"],[[7734,7734],"mapped",[7735]],[[7735,7735],"valid"],[[7736,7736],"mapped",[7737]],[[7737,7737],"valid"],[[7738,7738],"mapped",[7739]],[[7739,7739],"valid"],[[7740,7740],"mapped",[7741]],[[7741,7741],"valid"],[[7742,7742],"mapped",[7743]],[[7743,7743],"valid"],[[7744,7744],"mapped",[7745]],[[7745,7745],"valid"],[[7746,7746],"mapped",[7747]],[[7747,7747],"valid"],[[7748,7748],"mapped",[7749]],[[7749,7749],"valid"],[[7750,7750],"mapped",[7751]],[[7751,7751],"valid"],[[7752,7752],"mapped",[7753]],[[7753,7753],"valid"],[[7754,7754],"mapped",[7755]],[[7755,7755],"valid"],[[7756,7756],"mapped",[7757]],[[7757,7757],"valid"],[[7758,7758],"mapped",[7759]],[[7759,7759],"valid"],[[7760,7760],"mapped",[7761]],[[7761,7761],"valid"],[[7762,7762],"mapped",[7763]],[[7763,7763],"valid"],[[7764,7764],"mapped",[7765]],[[7765,7765],"valid"],[[7766,7766],"mapped",[7767]],[[7767,7767],"valid"],[[7768,7768],"mapped",[7769]],[[7769,7769],"valid"],[[7770,7770],"mapped",[7771]],[[7771,7771],"valid"],[[7772,7772],"mapped",[7773]],[[7773,7773],"valid"],[[7774,7774],"mapped",[7775]],[[7775,7775],"valid"],[[7776,7776],"mapped",[7777]],[[7777,7777],"valid"],[[7778,7778],"mapped",[7779]],[[7779,7779],"valid"],[[7780,7780],"mapped",[7781]],[[7781,7781],"valid"],[[7782,7782],"mapped",[7783]],[[7783,7783],"valid"],[[7784,7784],"mapped",[7785]],[[7785,7785],"valid"],[[7786,7786],"mapped",[7787]],[[7787,7787],"valid"],[[7788,7788],"mapped",[7789]],[[7789,7789],"valid"],[[7790,7790],"mapped",[7791]],[[7791,7791],"valid"],[[7792,7792],"mapped",[7793]],[[7793,7793],"valid"],[[7794,7794],"mapped",[7795]],[[7795,7795],"valid"],[[7796,7796],"mapped",[7797]],[[7797,7797],"valid"],[[7798,7798],"mapped",[7799]],[[7799,7799],"valid"],[[7800,7800],"mapped",[7801]],[[7801,7801],"valid"],[[7802,7802],"mapped",[7803]],[[7803,7803],"valid"],[[7804,7804],"mapped",[7805]],[[7805,7805],"valid"],[[7806,7806],"mapped",[7807]],[[7807,7807],"valid"],[[7808,7808],"mapped",[7809]],[[7809,7809],"valid"],[[7810,7810],"mapped",[7811]],[[7811,7811],"valid"],[[7812,7812],"mapped",[7813]],[[7813,7813],"valid"],[[7814,7814],"mapped",[7815]],[[7815,7815],"valid"],[[7816,7816],"mapped",[7817]],[[7817,7817],"valid"],[[7818,7818],"mapped",[7819]],[[7819,7819],"valid"],[[7820,7820],"mapped",[7821]],[[7821,7821],"valid"],[[7822,7822],"mapped",[7823]],[[7823,7823],"valid"],[[7824,7824],"mapped",[7825]],[[7825,7825],"valid"],[[7826,7826],"mapped",[7827]],[[7827,7827],"valid"],[[7828,7828],"mapped",[7829]],[[7829,7833],"valid"],[[7834,7834],"mapped",[97,702]],[[7835,7835],"mapped",[7777]],[[7836,7837],"valid"],[[7838,7838],"mapped",[115,115]],[[7839,7839],"valid"],[[7840,7840],"mapped",[7841]],[[7841,7841],"valid"],[[7842,7842],"mapped",[7843]],[[7843,7843],"valid"],[[7844,7844],"mapped",[7845]],[[7845,7845],"valid"],[[7846,7846],"mapped",[7847]],[[7847,7847],"valid"],[[7848,7848],"mapped",[7849]],[[7849,7849],"valid"],[[7850,7850],"mapped",[7851]],[[7851,7851],"valid"],[[7852,7852],"mapped",[7853]],[[7853,7853],"valid"],[[7854,7854],"mapped",[7855]],[[7855,7855],"valid"],[[7856,7856],"mapped",[7857]],[[7857,7857],"valid"],[[7858,7858],"mapped",[7859]],[[7859,7859],"valid"],[[7860,7860],"mapped",[7861]],[[7861,7861],"valid"],[[7862,7862],"mapped",[7863]],[[7863,7863],"valid"],[[7864,7864],"mapped",[7865]],[[7865,7865],"valid"],[[7866,7866],"mapped",[7867]],[[7867,7867],"valid"],[[7868,7868],"mapped",[7869]],[[7869,7869],"valid"],[[7870,7870],"mapped",[7871]],[[7871,7871],"valid"],[[7872,7872],"mapped",[7873]],[[7873,7873],"valid"],[[7874,7874],"mapped",[7875]],[[7875,7875],"valid"],[[7876,7876],"mapped",[7877]],[[7877,7877],"valid"],[[7878,7878],"mapped",[7879]],[[7879,7879],"valid"],[[7880,7880],"mapped",[7881]],[[7881,7881],"valid"],[[7882,7882],"mapped",[7883]],[[7883,7883],"valid"],[[7884,7884],"mapped",[7885]],[[7885,7885],"valid"],[[7886,7886],"mapped",[7887]],[[7887,7887],"valid"],[[7888,7888],"mapped",[7889]],[[7889,7889],"valid"],[[7890,7890],"mapped",[7891]],[[7891,7891],"valid"],[[7892,7892],"mapped",[7893]],[[7893,7893],"valid"],[[7894,7894],"mapped",[7895]],[[7895,7895],"valid"],[[7896,7896],"mapped",[7897]],[[7897,7897],"valid"],[[7898,7898],"mapped",[7899]],[[7899,7899],"valid"],[[7900,7900],"mapped",[7901]],[[7901,7901],"valid"],[[7902,7902],"mapped",[7903]],[[7903,7903],"valid"],[[7904,7904],"mapped",[7905]],[[7905,7905],"valid"],[[7906,7906],"mapped",[7907]],[[7907,7907],"valid"],[[7908,7908],"mapped",[7909]],[[7909,7909],"valid"],[[7910,7910],"mapped",[7911]],[[7911,7911],"valid"],[[7912,7912],"mapped",[7913]],[[7913,7913],"valid"],[[7914,7914],"mapped",[7915]],[[7915,7915],"valid"],[[7916,7916],"mapped",[7917]],[[7917,7917],"valid"],[[7918,7918],"mapped",[7919]],[[7919,7919],"valid"],[[7920,7920],"mapped",[7921]],[[7921,7921],"valid"],[[7922,7922],"mapped",[7923]],[[7923,7923],"valid"],[[7924,7924],"mapped",[7925]],[[7925,7925],"valid"],[[7926,7926],"mapped",[7927]],[[7927,7927],"valid"],[[7928,7928],"mapped",[7929]],[[7929,7929],"valid"],[[7930,7930],"mapped",[7931]],[[7931,7931],"valid"],[[7932,7932],"mapped",[7933]],[[7933,7933],"valid"],[[7934,7934],"mapped",[7935]],[[7935,7935],"valid"],[[7936,7943],"valid"],[[7944,7944],"mapped",[7936]],[[7945,7945],"mapped",[7937]],[[7946,7946],"mapped",[7938]],[[7947,7947],"mapped",[7939]],[[7948,7948],"mapped",[7940]],[[7949,7949],"mapped",[7941]],[[7950,7950],"mapped",[7942]],[[7951,7951],"mapped",[7943]],[[7952,7957],"valid"],[[7958,7959],"disallowed"],[[7960,7960],"mapped",[7952]],[[7961,7961],"mapped",[7953]],[[7962,7962],"mapped",[7954]],[[7963,7963],"mapped",[7955]],[[7964,7964],"mapped",[7956]],[[7965,7965],"mapped",[7957]],[[7966,7967],"disallowed"],[[7968,7975],"valid"],[[7976,7976],"mapped",[7968]],[[7977,7977],"mapped",[7969]],[[7978,7978],"mapped",[7970]],[[7979,7979],"mapped",[7971]],[[7980,7980],"mapped",[7972]],[[7981,7981],"mapped",[7973]],[[7982,7982],"mapped",[7974]],[[7983,7983],"mapped",[7975]],[[7984,7991],"valid"],[[7992,7992],"mapped",[7984]],[[7993,7993],"mapped",[7985]],[[7994,7994],"mapped",[7986]],[[7995,7995],"mapped",[7987]],[[7996,7996],"mapped",[7988]],[[7997,7997],"mapped",[7989]],[[7998,7998],"mapped",[7990]],[[7999,7999],"mapped",[7991]],[[8000,8005],"valid"],[[8006,8007],"disallowed"],[[8008,8008],"mapped",[8000]],[[8009,8009],"mapped",[8001]],[[8010,8010],"mapped",[8002]],[[8011,8011],"mapped",[8003]],[[8012,8012],"mapped",[8004]],[[8013,8013],"mapped",[8005]],[[8014,8015],"disallowed"],[[8016,8023],"valid"],[[8024,8024],"disallowed"],[[8025,8025],"mapped",[8017]],[[8026,8026],"disallowed"],[[8027,8027],"mapped",[8019]],[[8028,8028],"disallowed"],[[8029,8029],"mapped",[8021]],[[8030,8030],"disallowed"],[[8031,8031],"mapped",[8023]],[[8032,8039],"valid"],[[8040,8040],"mapped",[8032]],[[8041,8041],"mapped",[8033]],[[8042,8042],"mapped",[8034]],[[8043,8043],"mapped",[8035]],[[8044,8044],"mapped",[8036]],[[8045,8045],"mapped",[8037]],[[8046,8046],"mapped",[8038]],[[8047,8047],"mapped",[8039]],[[8048,8048],"valid"],[[8049,8049],"mapped",[940]],[[8050,8050],"valid"],[[8051,8051],"mapped",[941]],[[8052,8052],"valid"],[[8053,8053],"mapped",[942]],[[8054,8054],"valid"],[[8055,8055],"mapped",[943]],[[8056,8056],"valid"],[[8057,8057],"mapped",[972]],[[8058,8058],"valid"],[[8059,8059],"mapped",[973]],[[8060,8060],"valid"],[[8061,8061],"mapped",[974]],[[8062,8063],"disallowed"],[[8064,8064],"mapped",[7936,953]],[[8065,8065],"mapped",[7937,953]],[[8066,8066],"mapped",[7938,953]],[[8067,8067],"mapped",[7939,953]],[[8068,8068],"mapped",[7940,953]],[[8069,8069],"mapped",[7941,953]],[[8070,8070],"mapped",[7942,953]],[[8071,8071],"mapped",[7943,953]],[[8072,8072],"mapped",[7936,953]],[[8073,8073],"mapped",[7937,953]],[[8074,8074],"mapped",[7938,953]],[[8075,8075],"mapped",[7939,953]],[[8076,8076],"mapped",[7940,953]],[[8077,8077],"mapped",[7941,953]],[[8078,8078],"mapped",[7942,953]],[[8079,8079],"mapped",[7943,953]],[[8080,8080],"mapped",[7968,953]],[[8081,8081],"mapped",[7969,953]],[[8082,8082],"mapped",[7970,953]],[[8083,8083],"mapped",[7971,953]],[[8084,8084],"mapped",[7972,953]],[[8085,8085],"mapped",[7973,953]],[[8086,8086],"mapped",[7974,953]],[[8087,8087],"mapped",[7975,953]],[[8088,8088],"mapped",[7968,953]],[[8089,8089],"mapped",[7969,953]],[[8090,8090],"mapped",[7970,953]],[[8091,8091],"mapped",[7971,953]],[[8092,8092],"mapped",[7972,953]],[[8093,8093],"mapped",[7973,953]],[[8094,8094],"mapped",[7974,953]],[[8095,8095],"mapped",[7975,953]],[[8096,8096],"mapped",[8032,953]],[[8097,8097],"mapped",[8033,953]],[[8098,8098],"mapped",[8034,953]],[[8099,8099],"mapped",[8035,953]],[[8100,8100],"mapped",[8036,953]],[[8101,8101],"mapped",[8037,953]],[[8102,8102],"mapped",[8038,953]],[[8103,8103],"mapped",[8039,953]],[[8104,8104],"mapped",[8032,953]],[[8105,8105],"mapped",[8033,953]],[[8106,8106],"mapped",[8034,953]],[[8107,8107],"mapped",[8035,953]],[[8108,8108],"mapped",[8036,953]],[[8109,8109],"mapped",[8037,953]],[[8110,8110],"mapped",[8038,953]],[[8111,8111],"mapped",[8039,953]],[[8112,8113],"valid"],[[8114,8114],"mapped",[8048,953]],[[8115,8115],"mapped",[945,953]],[[8116,8116],"mapped",[940,953]],[[8117,8117],"disallowed"],[[8118,8118],"valid"],[[8119,8119],"mapped",[8118,953]],[[8120,8120],"mapped",[8112]],[[8121,8121],"mapped",[8113]],[[8122,8122],"mapped",[8048]],[[8123,8123],"mapped",[940]],[[8124,8124],"mapped",[945,953]],[[8125,8125],"disallowed_STD3_mapped",[32,787]],[[8126,8126],"mapped",[953]],[[8127,8127],"disallowed_STD3_mapped",[32,787]],[[8128,8128],"disallowed_STD3_mapped",[32,834]],[[8129,8129],"disallowed_STD3_mapped",[32,776,834]],[[8130,8130],"mapped",[8052,953]],[[8131,8131],"mapped",[951,953]],[[8132,8132],"mapped",[942,953]],[[8133,8133],"disallowed"],[[8134,8134],"valid"],[[8135,8135],"mapped",[8134,953]],[[8136,8136],"mapped",[8050]],[[8137,8137],"mapped",[941]],[[8138,8138],"mapped",[8052]],[[8139,8139],"mapped",[942]],[[8140,8140],"mapped",[951,953]],[[8141,8141],"disallowed_STD3_mapped",[32,787,768]],[[8142,8142],"disallowed_STD3_mapped",[32,787,769]],[[8143,8143],"disallowed_STD3_mapped",[32,787,834]],[[8144,8146],"valid"],[[8147,8147],"mapped",[912]],[[8148,8149],"disallowed"],[[8150,8151],"valid"],[[8152,8152],"mapped",[8144]],[[8153,8153],"mapped",[8145]],[[8154,8154],"mapped",[8054]],[[8155,8155],"mapped",[943]],[[8156,8156],"disallowed"],[[8157,8157],"disallowed_STD3_mapped",[32,788,768]],[[8158,8158],"disallowed_STD3_mapped",[32,788,769]],[[8159,8159],"disallowed_STD3_mapped",[32,788,834]],[[8160,8162],"valid"],[[8163,8163],"mapped",[944]],[[8164,8167],"valid"],[[8168,8168],"mapped",[8160]],[[8169,8169],"mapped",[8161]],[[8170,8170],"mapped",[8058]],[[8171,8171],"mapped",[973]],[[8172,8172],"mapped",[8165]],[[8173,8173],"disallowed_STD3_mapped",[32,776,768]],[[8174,8174],"disallowed_STD3_mapped",[32,776,769]],[[8175,8175],"disallowed_STD3_mapped",[96]],[[8176,8177],"disallowed"],[[8178,8178],"mapped",[8060,953]],[[8179,8179],"mapped",[969,953]],[[8180,8180],"mapped",[974,953]],[[8181,8181],"disallowed"],[[8182,8182],"valid"],[[8183,8183],"mapped",[8182,953]],[[8184,8184],"mapped",[8056]],[[8185,8185],"mapped",[972]],[[8186,8186],"mapped",[8060]],[[8187,8187],"mapped",[974]],[[8188,8188],"mapped",[969,953]],[[8189,8189],"disallowed_STD3_mapped",[32,769]],[[8190,8190],"disallowed_STD3_mapped",[32,788]],[[8191,8191],"disallowed"],[[8192,8202],"disallowed_STD3_mapped",[32]],[[8203,8203],"ignored"],[[8204,8205],"deviation",[]],[[8206,8207],"disallowed"],[[8208,8208],"valid",[],"NV8"],[[8209,8209],"mapped",[8208]],[[8210,8214],"valid",[],"NV8"],[[8215,8215],"disallowed_STD3_mapped",[32,819]],[[8216,8227],"valid",[],"NV8"],[[8228,8230],"disallowed"],[[8231,8231],"valid",[],"NV8"],[[8232,8238],"disallowed"],[[8239,8239],"disallowed_STD3_mapped",[32]],[[8240,8242],"valid",[],"NV8"],[[8243,8243],"mapped",[8242,8242]],[[8244,8244],"mapped",[8242,8242,8242]],[[8245,8245],"valid",[],"NV8"],[[8246,8246],"mapped",[8245,8245]],[[8247,8247],"mapped",[8245,8245,8245]],[[8248,8251],"valid",[],"NV8"],[[8252,8252],"disallowed_STD3_mapped",[33,33]],[[8253,8253],"valid",[],"NV8"],[[8254,8254],"disallowed_STD3_mapped",[32,773]],[[8255,8262],"valid",[],"NV8"],[[8263,8263],"disallowed_STD3_mapped",[63,63]],[[8264,8264],"disallowed_STD3_mapped",[63,33]],[[8265,8265],"disallowed_STD3_mapped",[33,63]],[[8266,8269],"valid",[],"NV8"],[[8270,8274],"valid",[],"NV8"],[[8275,8276],"valid",[],"NV8"],[[8277,8278],"valid",[],"NV8"],[[8279,8279],"mapped",[8242,8242,8242,8242]],[[8280,8286],"valid",[],"NV8"],[[8287,8287],"disallowed_STD3_mapped",[32]],[[8288,8288],"ignored"],[[8289,8291],"disallowed"],[[8292,8292],"ignored"],[[8293,8293],"disallowed"],[[8294,8297],"disallowed"],[[8298,8303],"disallowed"],[[8304,8304],"mapped",[48]],[[8305,8305],"mapped",[105]],[[8306,8307],"disallowed"],[[8308,8308],"mapped",[52]],[[8309,8309],"mapped",[53]],[[8310,8310],"mapped",[54]],[[8311,8311],"mapped",[55]],[[8312,8312],"mapped",[56]],[[8313,8313],"mapped",[57]],[[8314,8314],"disallowed_STD3_mapped",[43]],[[8315,8315],"mapped",[8722]],[[8316,8316],"disallowed_STD3_mapped",[61]],[[8317,8317],"disallowed_STD3_mapped",[40]],[[8318,8318],"disallowed_STD3_mapped",[41]],[[8319,8319],"mapped",[110]],[[8320,8320],"mapped",[48]],[[8321,8321],"mapped",[49]],[[8322,8322],"mapped",[50]],[[8323,8323],"mapped",[51]],[[8324,8324],"mapped",[52]],[[8325,8325],"mapped",[53]],[[8326,8326],"mapped",[54]],[[8327,8327],"mapped",[55]],[[8328,8328],"mapped",[56]],[[8329,8329],"mapped",[57]],[[8330,8330],"disallowed_STD3_mapped",[43]],[[8331,8331],"mapped",[8722]],[[8332,8332],"disallowed_STD3_mapped",[61]],[[8333,8333],"disallowed_STD3_mapped",[40]],[[8334,8334],"disallowed_STD3_mapped",[41]],[[8335,8335],"disallowed"],[[8336,8336],"mapped",[97]],[[8337,8337],"mapped",[101]],[[8338,8338],"mapped",[111]],[[8339,8339],"mapped",[120]],[[8340,8340],"mapped",[601]],[[8341,8341],"mapped",[104]],[[8342,8342],"mapped",[107]],[[8343,8343],"mapped",[108]],[[8344,8344],"mapped",[109]],[[8345,8345],"mapped",[110]],[[8346,8346],"mapped",[112]],[[8347,8347],"mapped",[115]],[[8348,8348],"mapped",[116]],[[8349,8351],"disallowed"],[[8352,8359],"valid",[],"NV8"],[[8360,8360],"mapped",[114,115]],[[8361,8362],"valid",[],"NV8"],[[8363,8363],"valid",[],"NV8"],[[8364,8364],"valid",[],"NV8"],[[8365,8367],"valid",[],"NV8"],[[8368,8369],"valid",[],"NV8"],[[8370,8373],"valid",[],"NV8"],[[8374,8376],"valid",[],"NV8"],[[8377,8377],"valid",[],"NV8"],[[8378,8378],"valid",[],"NV8"],[[8379,8381],"valid",[],"NV8"],[[8382,8382],"valid",[],"NV8"],[[8383,8399],"disallowed"],[[8400,8417],"valid",[],"NV8"],[[8418,8419],"valid",[],"NV8"],[[8420,8426],"valid",[],"NV8"],[[8427,8427],"valid",[],"NV8"],[[8428,8431],"valid",[],"NV8"],[[8432,8432],"valid",[],"NV8"],[[8433,8447],"disallowed"],[[8448,8448],"disallowed_STD3_mapped",[97,47,99]],[[8449,8449],"disallowed_STD3_mapped",[97,47,115]],[[8450,8450],"mapped",[99]],[[8451,8451],"mapped",[176,99]],[[8452,8452],"valid",[],"NV8"],[[8453,8453],"disallowed_STD3_mapped",[99,47,111]],[[8454,8454],"disallowed_STD3_mapped",[99,47,117]],[[8455,8455],"mapped",[603]],[[8456,8456],"valid",[],"NV8"],[[8457,8457],"mapped",[176,102]],[[8458,8458],"mapped",[103]],[[8459,8462],"mapped",[104]],[[8463,8463],"mapped",[295]],[[8464,8465],"mapped",[105]],[[8466,8467],"mapped",[108]],[[8468,8468],"valid",[],"NV8"],[[8469,8469],"mapped",[110]],[[8470,8470],"mapped",[110,111]],[[8471,8472],"valid",[],"NV8"],[[8473,8473],"mapped",[112]],[[8474,8474],"mapped",[113]],[[8475,8477],"mapped",[114]],[[8478,8479],"valid",[],"NV8"],[[8480,8480],"mapped",[115,109]],[[8481,8481],"mapped",[116,101,108]],[[8482,8482],"mapped",[116,109]],[[8483,8483],"valid",[],"NV8"],[[8484,8484],"mapped",[122]],[[8485,8485],"valid",[],"NV8"],[[8486,8486],"mapped",[969]],[[8487,8487],"valid",[],"NV8"],[[8488,8488],"mapped",[122]],[[8489,8489],"valid",[],"NV8"],[[8490,8490],"mapped",[107]],[[8491,8491],"mapped",[229]],[[8492,8492],"mapped",[98]],[[8493,8493],"mapped",[99]],[[8494,8494],"valid",[],"NV8"],[[8495,8496],"mapped",[101]],[[8497,8497],"mapped",[102]],[[8498,8498],"disallowed"],[[8499,8499],"mapped",[109]],[[8500,8500],"mapped",[111]],[[8501,8501],"mapped",[1488]],[[8502,8502],"mapped",[1489]],[[8503,8503],"mapped",[1490]],[[8504,8504],"mapped",[1491]],[[8505,8505],"mapped",[105]],[[8506,8506],"valid",[],"NV8"],[[8507,8507],"mapped",[102,97,120]],[[8508,8508],"mapped",[960]],[[8509,8510],"mapped",[947]],[[8511,8511],"mapped",[960]],[[8512,8512],"mapped",[8721]],[[8513,8516],"valid",[],"NV8"],[[8517,8518],"mapped",[100]],[[8519,8519],"mapped",[101]],[[8520,8520],"mapped",[105]],[[8521,8521],"mapped",[106]],[[8522,8523],"valid",[],"NV8"],[[8524,8524],"valid",[],"NV8"],[[8525,8525],"valid",[],"NV8"],[[8526,8526],"valid"],[[8527,8527],"valid",[],"NV8"],[[8528,8528],"mapped",[49,8260,55]],[[8529,8529],"mapped",[49,8260,57]],[[8530,8530],"mapped",[49,8260,49,48]],[[8531,8531],"mapped",[49,8260,51]],[[8532,8532],"mapped",[50,8260,51]],[[8533,8533],"mapped",[49,8260,53]],[[8534,8534],"mapped",[50,8260,53]],[[8535,8535],"mapped",[51,8260,53]],[[8536,8536],"mapped",[52,8260,53]],[[8537,8537],"mapped",[49,8260,54]],[[8538,8538],"mapped",[53,8260,54]],[[8539,8539],"mapped",[49,8260,56]],[[8540,8540],"mapped",[51,8260,56]],[[8541,8541],"mapped",[53,8260,56]],[[8542,8542],"mapped",[55,8260,56]],[[8543,8543],"mapped",[49,8260]],[[8544,8544],"mapped",[105]],[[8545,8545],"mapped",[105,105]],[[8546,8546],"mapped",[105,105,105]],[[8547,8547],"mapped",[105,118]],[[8548,8548],"mapped",[118]],[[8549,8549],"mapped",[118,105]],[[8550,8550],"mapped",[118,105,105]],[[8551,8551],"mapped",[118,105,105,105]],[[8552,8552],"mapped",[105,120]],[[8553,8553],"mapped",[120]],[[8554,8554],"mapped",[120,105]],[[8555,8555],"mapped",[120,105,105]],[[8556,8556],"mapped",[108]],[[8557,8557],"mapped",[99]],[[8558,8558],"mapped",[100]],[[8559,8559],"mapped",[109]],[[8560,8560],"mapped",[105]],[[8561,8561],"mapped",[105,105]],[[8562,8562],"mapped",[105,105,105]],[[8563,8563],"mapped",[105,118]],[[8564,8564],"mapped",[118]],[[8565,8565],"mapped",[118,105]],[[8566,8566],"mapped",[118,105,105]],[[8567,8567],"mapped",[118,105,105,105]],[[8568,8568],"mapped",[105,120]],[[8569,8569],"mapped",[120]],[[8570,8570],"mapped",[120,105]],[[8571,8571],"mapped",[120,105,105]],[[8572,8572],"mapped",[108]],[[8573,8573],"mapped",[99]],[[8574,8574],"mapped",[100]],[[8575,8575],"mapped",[109]],[[8576,8578],"valid",[],"NV8"],[[8579,8579],"disallowed"],[[8580,8580],"valid"],[[8581,8584],"valid",[],"NV8"],[[8585,8585],"mapped",[48,8260,51]],[[8586,8587],"valid",[],"NV8"],[[8588,8591],"disallowed"],[[8592,8682],"valid",[],"NV8"],[[8683,8691],"valid",[],"NV8"],[[8692,8703],"valid",[],"NV8"],[[8704,8747],"valid",[],"NV8"],[[8748,8748],"mapped",[8747,8747]],[[8749,8749],"mapped",[8747,8747,8747]],[[8750,8750],"valid",[],"NV8"],[[8751,8751],"mapped",[8750,8750]],[[8752,8752],"mapped",[8750,8750,8750]],[[8753,8799],"valid",[],"NV8"],[[8800,8800],"disallowed_STD3_valid"],[[8801,8813],"valid",[],"NV8"],[[8814,8815],"disallowed_STD3_valid"],[[8816,8945],"valid",[],"NV8"],[[8946,8959],"valid",[],"NV8"],[[8960,8960],"valid",[],"NV8"],[[8961,8961],"valid",[],"NV8"],[[8962,9000],"valid",[],"NV8"],[[9001,9001],"mapped",[12296]],[[9002,9002],"mapped",[12297]],[[9003,9082],"valid",[],"NV8"],[[9083,9083],"valid",[],"NV8"],[[9084,9084],"valid",[],"NV8"],[[9085,9114],"valid",[],"NV8"],[[9115,9166],"valid",[],"NV8"],[[9167,9168],"valid",[],"NV8"],[[9169,9179],"valid",[],"NV8"],[[9180,9191],"valid",[],"NV8"],[[9192,9192],"valid",[],"NV8"],[[9193,9203],"valid",[],"NV8"],[[9204,9210],"valid",[],"NV8"],[[9211,9215],"disallowed"],[[9216,9252],"valid",[],"NV8"],[[9253,9254],"valid",[],"NV8"],[[9255,9279],"disallowed"],[[9280,9290],"valid",[],"NV8"],[[9291,9311],"disallowed"],[[9312,9312],"mapped",[49]],[[9313,9313],"mapped",[50]],[[9314,9314],"mapped",[51]],[[9315,9315],"mapped",[52]],[[9316,9316],"mapped",[53]],[[9317,9317],"mapped",[54]],[[9318,9318],"mapped",[55]],[[9319,9319],"mapped",[56]],[[9320,9320],"mapped",[57]],[[9321,9321],"mapped",[49,48]],[[9322,9322],"mapped",[49,49]],[[9323,9323],"mapped",[49,50]],[[9324,9324],"mapped",[49,51]],[[9325,9325],"mapped",[49,52]],[[9326,9326],"mapped",[49,53]],[[9327,9327],"mapped",[49,54]],[[9328,9328],"mapped",[49,55]],[[9329,9329],"mapped",[49,56]],[[9330,9330],"mapped",[49,57]],[[9331,9331],"mapped",[50,48]],[[9332,9332],"disallowed_STD3_mapped",[40,49,41]],[[9333,9333],"disallowed_STD3_mapped",[40,50,41]],[[9334,9334],"disallowed_STD3_mapped",[40,51,41]],[[9335,9335],"disallowed_STD3_mapped",[40,52,41]],[[9336,9336],"disallowed_STD3_mapped",[40,53,41]],[[9337,9337],"disallowed_STD3_mapped",[40,54,41]],[[9338,9338],"disallowed_STD3_mapped",[40,55,41]],[[9339,9339],"disallowed_STD3_mapped",[40,56,41]],[[9340,9340],"disallowed_STD3_mapped",[40,57,41]],[[9341,9341],"disallowed_STD3_mapped",[40,49,48,41]],[[9342,9342],"disallowed_STD3_mapped",[40,49,49,41]],[[9343,9343],"disallowed_STD3_mapped",[40,49,50,41]],[[9344,9344],"disallowed_STD3_mapped",[40,49,51,41]],[[9345,9345],"disallowed_STD3_mapped",[40,49,52,41]],[[9346,9346],"disallowed_STD3_mapped",[40,49,53,41]],[[9347,9347],"disallowed_STD3_mapped",[40,49,54,41]],[[9348,9348],"disallowed_STD3_mapped",[40,49,55,41]],[[9349,9349],"disallowed_STD3_mapped",[40,49,56,41]],[[9350,9350],"disallowed_STD3_mapped",[40,49,57,41]],[[9351,9351],"disallowed_STD3_mapped",[40,50,48,41]],[[9352,9371],"disallowed"],[[9372,9372],"disallowed_STD3_mapped",[40,97,41]],[[9373,9373],"disallowed_STD3_mapped",[40,98,41]],[[9374,9374],"disallowed_STD3_mapped",[40,99,41]],[[9375,9375],"disallowed_STD3_mapped",[40,100,41]],[[9376,9376],"disallowed_STD3_mapped",[40,101,41]],[[9377,9377],"disallowed_STD3_mapped",[40,102,41]],[[9378,9378],"disallowed_STD3_mapped",[40,103,41]],[[9379,9379],"disallowed_STD3_mapped",[40,104,41]],[[9380,9380],"disallowed_STD3_mapped",[40,105,41]],[[9381,9381],"disallowed_STD3_mapped",[40,106,41]],[[9382,9382],"disallowed_STD3_mapped",[40,107,41]],[[9383,9383],"disallowed_STD3_mapped",[40,108,41]],[[9384,9384],"disallowed_STD3_mapped",[40,109,41]],[[9385,9385],"disallowed_STD3_mapped",[40,110,41]],[[9386,9386],"disallowed_STD3_mapped",[40,111,41]],[[9387,9387],"disallowed_STD3_mapped",[40,112,41]],[[9388,9388],"disallowed_STD3_mapped",[40,113,41]],[[9389,9389],"disallowed_STD3_mapped",[40,114,41]],[[9390,9390],"disallowed_STD3_mapped",[40,115,41]],[[9391,9391],"disallowed_STD3_mapped",[40,116,41]],[[9392,9392],"disallowed_STD3_mapped",[40,117,41]],[[9393,9393],"disallowed_STD3_mapped",[40,118,41]],[[9394,9394],"disallowed_STD3_mapped",[40,119,41]],[[9395,9395],"disallowed_STD3_mapped",[40,120,41]],[[9396,9396],"disallowed_STD3_mapped",[40,121,41]],[[9397,9397],"disallowed_STD3_mapped",[40,122,41]],[[9398,9398],"mapped",[97]],[[9399,9399],"mapped",[98]],[[9400,9400],"mapped",[99]],[[9401,9401],"mapped",[100]],[[9402,9402],"mapped",[101]],[[9403,9403],"mapped",[102]],[[9404,9404],"mapped",[103]],[[9405,9405],"mapped",[104]],[[9406,9406],"mapped",[105]],[[9407,9407],"mapped",[106]],[[9408,9408],"mapped",[107]],[[9409,9409],"mapped",[108]],[[9410,9410],"mapped",[109]],[[9411,9411],"mapped",[110]],[[9412,9412],"mapped",[111]],[[9413,9413],"mapped",[112]],[[9414,9414],"mapped",[113]],[[9415,9415],"mapped",[114]],[[9416,9416],"mapped",[115]],[[9417,9417],"mapped",[116]],[[9418,9418],"mapped",[117]],[[9419,9419],"mapped",[118]],[[9420,9420],"mapped",[119]],[[9421,9421],"mapped",[120]],[[9422,9422],"mapped",[121]],[[9423,9423],"mapped",[122]],[[9424,9424],"mapped",[97]],[[9425,9425],"mapped",[98]],[[9426,9426],"mapped",[99]],[[9427,9427],"mapped",[100]],[[9428,9428],"mapped",[101]],[[9429,9429],"mapped",[102]],[[9430,9430],"mapped",[103]],[[9431,9431],"mapped",[104]],[[9432,9432],"mapped",[105]],[[9433,9433],"mapped",[106]],[[9434,9434],"mapped",[107]],[[9435,9435],"mapped",[108]],[[9436,9436],"mapped",[109]],[[9437,9437],"mapped",[110]],[[9438,9438],"mapped",[111]],[[9439,9439],"mapped",[112]],[[9440,9440],"mapped",[113]],[[9441,9441],"mapped",[114]],[[9442,9442],"mapped",[115]],[[9443,9443],"mapped",[116]],[[9444,9444],"mapped",[117]],[[9445,9445],"mapped",[118]],[[9446,9446],"mapped",[119]],[[9447,9447],"mapped",[120]],[[9448,9448],"mapped",[121]],[[9449,9449],"mapped",[122]],[[9450,9450],"mapped",[48]],[[9451,9470],"valid",[],"NV8"],[[9471,9471],"valid",[],"NV8"],[[9472,9621],"valid",[],"NV8"],[[9622,9631],"valid",[],"NV8"],[[9632,9711],"valid",[],"NV8"],[[9712,9719],"valid",[],"NV8"],[[9720,9727],"valid",[],"NV8"],[[9728,9747],"valid",[],"NV8"],[[9748,9749],"valid",[],"NV8"],[[9750,9751],"valid",[],"NV8"],[[9752,9752],"valid",[],"NV8"],[[9753,9753],"valid",[],"NV8"],[[9754,9839],"valid",[],"NV8"],[[9840,9841],"valid",[],"NV8"],[[9842,9853],"valid",[],"NV8"],[[9854,9855],"valid",[],"NV8"],[[9856,9865],"valid",[],"NV8"],[[9866,9873],"valid",[],"NV8"],[[9874,9884],"valid",[],"NV8"],[[9885,9885],"valid",[],"NV8"],[[9886,9887],"valid",[],"NV8"],[[9888,9889],"valid",[],"NV8"],[[9890,9905],"valid",[],"NV8"],[[9906,9906],"valid",[],"NV8"],[[9907,9916],"valid",[],"NV8"],[[9917,9919],"valid",[],"NV8"],[[9920,9923],"valid",[],"NV8"],[[9924,9933],"valid",[],"NV8"],[[9934,9934],"valid",[],"NV8"],[[9935,9953],"valid",[],"NV8"],[[9954,9954],"valid",[],"NV8"],[[9955,9955],"valid",[],"NV8"],[[9956,9959],"valid",[],"NV8"],[[9960,9983],"valid",[],"NV8"],[[9984,9984],"valid",[],"NV8"],[[9985,9988],"valid",[],"NV8"],[[9989,9989],"valid",[],"NV8"],[[9990,9993],"valid",[],"NV8"],[[9994,9995],"valid",[],"NV8"],[[9996,10023],"valid",[],"NV8"],[[10024,10024],"valid",[],"NV8"],[[10025,10059],"valid",[],"NV8"],[[10060,10060],"valid",[],"NV8"],[[10061,10061],"valid",[],"NV8"],[[10062,10062],"valid",[],"NV8"],[[10063,10066],"valid",[],"NV8"],[[10067,10069],"valid",[],"NV8"],[[10070,10070],"valid",[],"NV8"],[[10071,10071],"valid",[],"NV8"],[[10072,10078],"valid",[],"NV8"],[[10079,10080],"valid",[],"NV8"],[[10081,10087],"valid",[],"NV8"],[[10088,10101],"valid",[],"NV8"],[[10102,10132],"valid",[],"NV8"],[[10133,10135],"valid",[],"NV8"],[[10136,10159],"valid",[],"NV8"],[[10160,10160],"valid",[],"NV8"],[[10161,10174],"valid",[],"NV8"],[[10175,10175],"valid",[],"NV8"],[[10176,10182],"valid",[],"NV8"],[[10183,10186],"valid",[],"NV8"],[[10187,10187],"valid",[],"NV8"],[[10188,10188],"valid",[],"NV8"],[[10189,10189],"valid",[],"NV8"],[[10190,10191],"valid",[],"NV8"],[[10192,10219],"valid",[],"NV8"],[[10220,10223],"valid",[],"NV8"],[[10224,10239],"valid",[],"NV8"],[[10240,10495],"valid",[],"NV8"],[[10496,10763],"valid",[],"NV8"],[[10764,10764],"mapped",[8747,8747,8747,8747]],[[10765,10867],"valid",[],"NV8"],[[10868,10868],"disallowed_STD3_mapped",[58,58,61]],[[10869,10869],"disallowed_STD3_mapped",[61,61]],[[10870,10870],"disallowed_STD3_mapped",[61,61,61]],[[10871,10971],"valid",[],"NV8"],[[10972,10972],"mapped",[10973,824]],[[10973,11007],"valid",[],"NV8"],[[11008,11021],"valid",[],"NV8"],[[11022,11027],"valid",[],"NV8"],[[11028,11034],"valid",[],"NV8"],[[11035,11039],"valid",[],"NV8"],[[11040,11043],"valid",[],"NV8"],[[11044,11084],"valid",[],"NV8"],[[11085,11087],"valid",[],"NV8"],[[11088,11092],"valid",[],"NV8"],[[11093,11097],"valid",[],"NV8"],[[11098,11123],"valid",[],"NV8"],[[11124,11125],"disallowed"],[[11126,11157],"valid",[],"NV8"],[[11158,11159],"disallowed"],[[11160,11193],"valid",[],"NV8"],[[11194,11196],"disallowed"],[[11197,11208],"valid",[],"NV8"],[[11209,11209],"disallowed"],[[11210,11217],"valid",[],"NV8"],[[11218,11243],"disallowed"],[[11244,11247],"valid",[],"NV8"],[[11248,11263],"disallowed"],[[11264,11264],"mapped",[11312]],[[11265,11265],"mapped",[11313]],[[11266,11266],"mapped",[11314]],[[11267,11267],"mapped",[11315]],[[11268,11268],"mapped",[11316]],[[11269,11269],"mapped",[11317]],[[11270,11270],"mapped",[11318]],[[11271,11271],"mapped",[11319]],[[11272,11272],"mapped",[11320]],[[11273,11273],"mapped",[11321]],[[11274,11274],"mapped",[11322]],[[11275,11275],"mapped",[11323]],[[11276,11276],"mapped",[11324]],[[11277,11277],"mapped",[11325]],[[11278,11278],"mapped",[11326]],[[11279,11279],"mapped",[11327]],[[11280,11280],"mapped",[11328]],[[11281,11281],"mapped",[11329]],[[11282,11282],"mapped",[11330]],[[11283,11283],"mapped",[11331]],[[11284,11284],"mapped",[11332]],[[11285,11285],"mapped",[11333]],[[11286,11286],"mapped",[11334]],[[11287,11287],"mapped",[11335]],[[11288,11288],"mapped",[11336]],[[11289,11289],"mapped",[11337]],[[11290,11290],"mapped",[11338]],[[11291,11291],"mapped",[11339]],[[11292,11292],"mapped",[11340]],[[11293,11293],"mapped",[11341]],[[11294,11294],"mapped",[11342]],[[11295,11295],"mapped",[11343]],[[11296,11296],"mapped",[11344]],[[11297,11297],"mapped",[11345]],[[11298,11298],"mapped",[11346]],[[11299,11299],"mapped",[11347]],[[11300,11300],"mapped",[11348]],[[11301,11301],"mapped",[11349]],[[11302,11302],"mapped",[11350]],[[11303,11303],"mapped",[11351]],[[11304,11304],"mapped",[11352]],[[11305,11305],"mapped",[11353]],[[11306,11306],"mapped",[11354]],[[11307,11307],"mapped",[11355]],[[11308,11308],"mapped",[11356]],[[11309,11309],"mapped",[11357]],[[11310,11310],"mapped",[11358]],[[11311,11311],"disallowed"],[[11312,11358],"valid"],[[11359,11359],"disallowed"],[[11360,11360],"mapped",[11361]],[[11361,11361],"valid"],[[11362,11362],"mapped",[619]],[[11363,11363],"mapped",[7549]],[[11364,11364],"mapped",[637]],[[11365,11366],"valid"],[[11367,11367],"mapped",[11368]],[[11368,11368],"valid"],[[11369,11369],"mapped",[11370]],[[11370,11370],"valid"],[[11371,11371],"mapped",[11372]],[[11372,11372],"valid"],[[11373,11373],"mapped",[593]],[[11374,11374],"mapped",[625]],[[11375,11375],"mapped",[592]],[[11376,11376],"mapped",[594]],[[11377,11377],"valid"],[[11378,11378],"mapped",[11379]],[[11379,11379],"valid"],[[11380,11380],"valid"],[[11381,11381],"mapped",[11382]],[[11382,11383],"valid"],[[11384,11387],"valid"],[[11388,11388],"mapped",[106]],[[11389,11389],"mapped",[118]],[[11390,11390],"mapped",[575]],[[11391,11391],"mapped",[576]],[[11392,11392],"mapped",[11393]],[[11393,11393],"valid"],[[11394,11394],"mapped",[11395]],[[11395,11395],"valid"],[[11396,11396],"mapped",[11397]],[[11397,11397],"valid"],[[11398,11398],"mapped",[11399]],[[11399,11399],"valid"],[[11400,11400],"mapped",[11401]],[[11401,11401],"valid"],[[11402,11402],"mapped",[11403]],[[11403,11403],"valid"],[[11404,11404],"mapped",[11405]],[[11405,11405],"valid"],[[11406,11406],"mapped",[11407]],[[11407,11407],"valid"],[[11408,11408],"mapped",[11409]],[[11409,11409],"valid"],[[11410,11410],"mapped",[11411]],[[11411,11411],"valid"],[[11412,11412],"mapped",[11413]],[[11413,11413],"valid"],[[11414,11414],"mapped",[11415]],[[11415,11415],"valid"],[[11416,11416],"mapped",[11417]],[[11417,11417],"valid"],[[11418,11418],"mapped",[11419]],[[11419,11419],"valid"],[[11420,11420],"mapped",[11421]],[[11421,11421],"valid"],[[11422,11422],"mapped",[11423]],[[11423,11423],"valid"],[[11424,11424],"mapped",[11425]],[[11425,11425],"valid"],[[11426,11426],"mapped",[11427]],[[11427,11427],"valid"],[[11428,11428],"mapped",[11429]],[[11429,11429],"valid"],[[11430,11430],"mapped",[11431]],[[11431,11431],"valid"],[[11432,11432],"mapped",[11433]],[[11433,11433],"valid"],[[11434,11434],"mapped",[11435]],[[11435,11435],"valid"],[[11436,11436],"mapped",[11437]],[[11437,11437],"valid"],[[11438,11438],"mapped",[11439]],[[11439,11439],"valid"],[[11440,11440],"mapped",[11441]],[[11441,11441],"valid"],[[11442,11442],"mapped",[11443]],[[11443,11443],"valid"],[[11444,11444],"mapped",[11445]],[[11445,11445],"valid"],[[11446,11446],"mapped",[11447]],[[11447,11447],"valid"],[[11448,11448],"mapped",[11449]],[[11449,11449],"valid"],[[11450,11450],"mapped",[11451]],[[11451,11451],"valid"],[[11452,11452],"mapped",[11453]],[[11453,11453],"valid"],[[11454,11454],"mapped",[11455]],[[11455,11455],"valid"],[[11456,11456],"mapped",[11457]],[[11457,11457],"valid"],[[11458,11458],"mapped",[11459]],[[11459,11459],"valid"],[[11460,11460],"mapped",[11461]],[[11461,11461],"valid"],[[11462,11462],"mapped",[11463]],[[11463,11463],"valid"],[[11464,11464],"mapped",[11465]],[[11465,11465],"valid"],[[11466,11466],"mapped",[11467]],[[11467,11467],"valid"],[[11468,11468],"mapped",[11469]],[[11469,11469],"valid"],[[11470,11470],"mapped",[11471]],[[11471,11471],"valid"],[[11472,11472],"mapped",[11473]],[[11473,11473],"valid"],[[11474,11474],"mapped",[11475]],[[11475,11475],"valid"],[[11476,11476],"mapped",[11477]],[[11477,11477],"valid"],[[11478,11478],"mapped",[11479]],[[11479,11479],"valid"],[[11480,11480],"mapped",[11481]],[[11481,11481],"valid"],[[11482,11482],"mapped",[11483]],[[11483,11483],"valid"],[[11484,11484],"mapped",[11485]],[[11485,11485],"valid"],[[11486,11486],"mapped",[11487]],[[11487,11487],"valid"],[[11488,11488],"mapped",[11489]],[[11489,11489],"valid"],[[11490,11490],"mapped",[11491]],[[11491,11492],"valid"],[[11493,11498],"valid",[],"NV8"],[[11499,11499],"mapped",[11500]],[[11500,11500],"valid"],[[11501,11501],"mapped",[11502]],[[11502,11505],"valid"],[[11506,11506],"mapped",[11507]],[[11507,11507],"valid"],[[11508,11512],"disallowed"],[[11513,11519],"valid",[],"NV8"],[[11520,11557],"valid"],[[11558,11558],"disallowed"],[[11559,11559],"valid"],[[11560,11564],"disallowed"],[[11565,11565],"valid"],[[11566,11567],"disallowed"],[[11568,11621],"valid"],[[11622,11623],"valid"],[[11624,11630],"disallowed"],[[11631,11631],"mapped",[11617]],[[11632,11632],"valid",[],"NV8"],[[11633,11646],"disallowed"],[[11647,11647],"valid"],[[11648,11670],"valid"],[[11671,11679],"disallowed"],[[11680,11686],"valid"],[[11687,11687],"disallowed"],[[11688,11694],"valid"],[[11695,11695],"disallowed"],[[11696,11702],"valid"],[[11703,11703],"disallowed"],[[11704,11710],"valid"],[[11711,11711],"disallowed"],[[11712,11718],"valid"],[[11719,11719],"disallowed"],[[11720,11726],"valid"],[[11727,11727],"disallowed"],[[11728,11734],"valid"],[[11735,11735],"disallowed"],[[11736,11742],"valid"],[[11743,11743],"disallowed"],[[11744,11775],"valid"],[[11776,11799],"valid",[],"NV8"],[[11800,11803],"valid",[],"NV8"],[[11804,11805],"valid",[],"NV8"],[[11806,11822],"valid",[],"NV8"],[[11823,11823],"valid"],[[11824,11824],"valid",[],"NV8"],[[11825,11825],"valid",[],"NV8"],[[11826,11835],"valid",[],"NV8"],[[11836,11842],"valid",[],"NV8"],[[11843,11903],"disallowed"],[[11904,11929],"valid",[],"NV8"],[[11930,11930],"disallowed"],[[11931,11934],"valid",[],"NV8"],[[11935,11935],"mapped",[27597]],[[11936,12018],"valid",[],"NV8"],[[12019,12019],"mapped",[40863]],[[12020,12031],"disallowed"],[[12032,12032],"mapped",[19968]],[[12033,12033],"mapped",[20008]],[[12034,12034],"mapped",[20022]],[[12035,12035],"mapped",[20031]],[[12036,12036],"mapped",[20057]],[[12037,12037],"mapped",[20101]],[[12038,12038],"mapped",[20108]],[[12039,12039],"mapped",[20128]],[[12040,12040],"mapped",[20154]],[[12041,12041],"mapped",[20799]],[[12042,12042],"mapped",[20837]],[[12043,12043],"mapped",[20843]],[[12044,12044],"mapped",[20866]],[[12045,12045],"mapped",[20886]],[[12046,12046],"mapped",[20907]],[[12047,12047],"mapped",[20960]],[[12048,12048],"mapped",[20981]],[[12049,12049],"mapped",[20992]],[[12050,12050],"mapped",[21147]],[[12051,12051],"mapped",[21241]],[[12052,12052],"mapped",[21269]],[[12053,12053],"mapped",[21274]],[[12054,12054],"mapped",[21304]],[[12055,12055],"mapped",[21313]],[[12056,12056],"mapped",[21340]],[[12057,12057],"mapped",[21353]],[[12058,12058],"mapped",[21378]],[[12059,12059],"mapped",[21430]],[[12060,12060],"mapped",[21448]],[[12061,12061],"mapped",[21475]],[[12062,12062],"mapped",[22231]],[[12063,12063],"mapped",[22303]],[[12064,12064],"mapped",[22763]],[[12065,12065],"mapped",[22786]],[[12066,12066],"mapped",[22794]],[[12067,12067],"mapped",[22805]],[[12068,12068],"mapped",[22823]],[[12069,12069],"mapped",[22899]],[[12070,12070],"mapped",[23376]],[[12071,12071],"mapped",[23424]],[[12072,12072],"mapped",[23544]],[[12073,12073],"mapped",[23567]],[[12074,12074],"mapped",[23586]],[[12075,12075],"mapped",[23608]],[[12076,12076],"mapped",[23662]],[[12077,12077],"mapped",[23665]],[[12078,12078],"mapped",[24027]],[[12079,12079],"mapped",[24037]],[[12080,12080],"mapped",[24049]],[[12081,12081],"mapped",[24062]],[[12082,12082],"mapped",[24178]],[[12083,12083],"mapped",[24186]],[[12084,12084],"mapped",[24191]],[[12085,12085],"mapped",[24308]],[[12086,12086],"mapped",[24318]],[[12087,12087],"mapped",[24331]],[[12088,12088],"mapped",[24339]],[[12089,12089],"mapped",[24400]],[[12090,12090],"mapped",[24417]],[[12091,12091],"mapped",[24435]],[[12092,12092],"mapped",[24515]],[[12093,12093],"mapped",[25096]],[[12094,12094],"mapped",[25142]],[[12095,12095],"mapped",[25163]],[[12096,12096],"mapped",[25903]],[[12097,12097],"mapped",[25908]],[[12098,12098],"mapped",[25991]],[[12099,12099],"mapped",[26007]],[[12100,12100],"mapped",[26020]],[[12101,12101],"mapped",[26041]],[[12102,12102],"mapped",[26080]],[[12103,12103],"mapped",[26085]],[[12104,12104],"mapped",[26352]],[[12105,12105],"mapped",[26376]],[[12106,12106],"mapped",[26408]],[[12107,12107],"mapped",[27424]],[[12108,12108],"mapped",[27490]],[[12109,12109],"mapped",[27513]],[[12110,12110],"mapped",[27571]],[[12111,12111],"mapped",[27595]],[[12112,12112],"mapped",[27604]],[[12113,12113],"mapped",[27611]],[[12114,12114],"mapped",[27663]],[[12115,12115],"mapped",[27668]],[[12116,12116],"mapped",[27700]],[[12117,12117],"mapped",[28779]],[[12118,12118],"mapped",[29226]],[[12119,12119],"mapped",[29238]],[[12120,12120],"mapped",[29243]],[[12121,12121],"mapped",[29247]],[[12122,12122],"mapped",[29255]],[[12123,12123],"mapped",[29273]],[[12124,12124],"mapped",[29275]],[[12125,12125],"mapped",[29356]],[[12126,12126],"mapped",[29572]],[[12127,12127],"mapped",[29577]],[[12128,12128],"mapped",[29916]],[[12129,12129],"mapped",[29926]],[[12130,12130],"mapped",[29976]],[[12131,12131],"mapped",[29983]],[[12132,12132],"mapped",[29992]],[[12133,12133],"mapped",[30000]],[[12134,12134],"mapped",[30091]],[[12135,12135],"mapped",[30098]],[[12136,12136],"mapped",[30326]],[[12137,12137],"mapped",[30333]],[[12138,12138],"mapped",[30382]],[[12139,12139],"mapped",[30399]],[[12140,12140],"mapped",[30446]],[[12141,12141],"mapped",[30683]],[[12142,12142],"mapped",[30690]],[[12143,12143],"mapped",[30707]],[[12144,12144],"mapped",[31034]],[[12145,12145],"mapped",[31160]],[[12146,12146],"mapped",[31166]],[[12147,12147],"mapped",[31348]],[[12148,12148],"mapped",[31435]],[[12149,12149],"mapped",[31481]],[[12150,12150],"mapped",[31859]],[[12151,12151],"mapped",[31992]],[[12152,12152],"mapped",[32566]],[[12153,12153],"mapped",[32593]],[[12154,12154],"mapped",[32650]],[[12155,12155],"mapped",[32701]],[[12156,12156],"mapped",[32769]],[[12157,12157],"mapped",[32780]],[[12158,12158],"mapped",[32786]],[[12159,12159],"mapped",[32819]],[[12160,12160],"mapped",[32895]],[[12161,12161],"mapped",[32905]],[[12162,12162],"mapped",[33251]],[[12163,12163],"mapped",[33258]],[[12164,12164],"mapped",[33267]],[[12165,12165],"mapped",[33276]],[[12166,12166],"mapped",[33292]],[[12167,12167],"mapped",[33307]],[[12168,12168],"mapped",[33311]],[[12169,12169],"mapped",[33390]],[[12170,12170],"mapped",[33394]],[[12171,12171],"mapped",[33400]],[[12172,12172],"mapped",[34381]],[[12173,12173],"mapped",[34411]],[[12174,12174],"mapped",[34880]],[[12175,12175],"mapped",[34892]],[[12176,12176],"mapped",[34915]],[[12177,12177],"mapped",[35198]],[[12178,12178],"mapped",[35211]],[[12179,12179],"mapped",[35282]],[[12180,12180],"mapped",[35328]],[[12181,12181],"mapped",[35895]],[[12182,12182],"mapped",[35910]],[[12183,12183],"mapped",[35925]],[[12184,12184],"mapped",[35960]],[[12185,12185],"mapped",[35997]],[[12186,12186],"mapped",[36196]],[[12187,12187],"mapped",[36208]],[[12188,12188],"mapped",[36275]],[[12189,12189],"mapped",[36523]],[[12190,12190],"mapped",[36554]],[[12191,12191],"mapped",[36763]],[[12192,12192],"mapped",[36784]],[[12193,12193],"mapped",[36789]],[[12194,12194],"mapped",[37009]],[[12195,12195],"mapped",[37193]],[[12196,12196],"mapped",[37318]],[[12197,12197],"mapped",[37324]],[[12198,12198],"mapped",[37329]],[[12199,12199],"mapped",[38263]],[[12200,12200],"mapped",[38272]],[[12201,12201],"mapped",[38428]],[[12202,12202],"mapped",[38582]],[[12203,12203],"mapped",[38585]],[[12204,12204],"mapped",[38632]],[[12205,12205],"mapped",[38737]],[[12206,12206],"mapped",[38750]],[[12207,12207],"mapped",[38754]],[[12208,12208],"mapped",[38761]],[[12209,12209],"mapped",[38859]],[[12210,12210],"mapped",[38893]],[[12211,12211],"mapped",[38899]],[[12212,12212],"mapped",[38913]],[[12213,12213],"mapped",[39080]],[[12214,12214],"mapped",[39131]],[[12215,12215],"mapped",[39135]],[[12216,12216],"mapped",[39318]],[[12217,12217],"mapped",[39321]],[[12218,12218],"mapped",[39340]],[[12219,12219],"mapped",[39592]],[[12220,12220],"mapped",[39640]],[[12221,12221],"mapped",[39647]],[[12222,12222],"mapped",[39717]],[[12223,12223],"mapped",[39727]],[[12224,12224],"mapped",[39730]],[[12225,12225],"mapped",[39740]],[[12226,12226],"mapped",[39770]],[[12227,12227],"mapped",[40165]],[[12228,12228],"mapped",[40565]],[[12229,12229],"mapped",[40575]],[[12230,12230],"mapped",[40613]],[[12231,12231],"mapped",[40635]],[[12232,12232],"mapped",[40643]],[[12233,12233],"mapped",[40653]],[[12234,12234],"mapped",[40657]],[[12235,12235],"mapped",[40697]],[[12236,12236],"mapped",[40701]],[[12237,12237],"mapped",[40718]],[[12238,12238],"mapped",[40723]],[[12239,12239],"mapped",[40736]],[[12240,12240],"mapped",[40763]],[[12241,12241],"mapped",[40778]],[[12242,12242],"mapped",[40786]],[[12243,12243],"mapped",[40845]],[[12244,12244],"mapped",[40860]],[[12245,12245],"mapped",[40864]],[[12246,12271],"disallowed"],[[12272,12283],"disallowed"],[[12284,12287],"disallowed"],[[12288,12288],"disallowed_STD3_mapped",[32]],[[12289,12289],"valid",[],"NV8"],[[12290,12290],"mapped",[46]],[[12291,12292],"valid",[],"NV8"],[[12293,12295],"valid"],[[12296,12329],"valid",[],"NV8"],[[12330,12333],"valid"],[[12334,12341],"valid",[],"NV8"],[[12342,12342],"mapped",[12306]],[[12343,12343],"valid",[],"NV8"],[[12344,12344],"mapped",[21313]],[[12345,12345],"mapped",[21316]],[[12346,12346],"mapped",[21317]],[[12347,12347],"valid",[],"NV8"],[[12348,12348],"valid"],[[12349,12349],"valid",[],"NV8"],[[12350,12350],"valid",[],"NV8"],[[12351,12351],"valid",[],"NV8"],[[12352,12352],"disallowed"],[[12353,12436],"valid"],[[12437,12438],"valid"],[[12439,12440],"disallowed"],[[12441,12442],"valid"],[[12443,12443],"disallowed_STD3_mapped",[32,12441]],[[12444,12444],"disallowed_STD3_mapped",[32,12442]],[[12445,12446],"valid"],[[12447,12447],"mapped",[12424,12426]],[[12448,12448],"valid",[],"NV8"],[[12449,12542],"valid"],[[12543,12543],"mapped",[12467,12488]],[[12544,12548],"disallowed"],[[12549,12588],"valid"],[[12589,12589],"valid"],[[12590,12592],"disallowed"],[[12593,12593],"mapped",[4352]],[[12594,12594],"mapped",[4353]],[[12595,12595],"mapped",[4522]],[[12596,12596],"mapped",[4354]],[[12597,12597],"mapped",[4524]],[[12598,12598],"mapped",[4525]],[[12599,12599],"mapped",[4355]],[[12600,12600],"mapped",[4356]],[[12601,12601],"mapped",[4357]],[[12602,12602],"mapped",[4528]],[[12603,12603],"mapped",[4529]],[[12604,12604],"mapped",[4530]],[[12605,12605],"mapped",[4531]],[[12606,12606],"mapped",[4532]],[[12607,12607],"mapped",[4533]],[[12608,12608],"mapped",[4378]],[[12609,12609],"mapped",[4358]],[[12610,12610],"mapped",[4359]],[[12611,12611],"mapped",[4360]],[[12612,12612],"mapped",[4385]],[[12613,12613],"mapped",[4361]],[[12614,12614],"mapped",[4362]],[[12615,12615],"mapped",[4363]],[[12616,12616],"mapped",[4364]],[[12617,12617],"mapped",[4365]],[[12618,12618],"mapped",[4366]],[[12619,12619],"mapped",[4367]],[[12620,12620],"mapped",[4368]],[[12621,12621],"mapped",[4369]],[[12622,12622],"mapped",[4370]],[[12623,12623],"mapped",[4449]],[[12624,12624],"mapped",[4450]],[[12625,12625],"mapped",[4451]],[[12626,12626],"mapped",[4452]],[[12627,12627],"mapped",[4453]],[[12628,12628],"mapped",[4454]],[[12629,12629],"mapped",[4455]],[[12630,12630],"mapped",[4456]],[[12631,12631],"mapped",[4457]],[[12632,12632],"mapped",[4458]],[[12633,12633],"mapped",[4459]],[[12634,12634],"mapped",[4460]],[[12635,12635],"mapped",[4461]],[[12636,12636],"mapped",[4462]],[[12637,12637],"mapped",[4463]],[[12638,12638],"mapped",[4464]],[[12639,12639],"mapped",[4465]],[[12640,12640],"mapped",[4466]],[[12641,12641],"mapped",[4467]],[[12642,12642],"mapped",[4468]],[[12643,12643],"mapped",[4469]],[[12644,12644],"disallowed"],[[12645,12645],"mapped",[4372]],[[12646,12646],"mapped",[4373]],[[12647,12647],"mapped",[4551]],[[12648,12648],"mapped",[4552]],[[12649,12649],"mapped",[4556]],[[12650,12650],"mapped",[4558]],[[12651,12651],"mapped",[4563]],[[12652,12652],"mapped",[4567]],[[12653,12653],"mapped",[4569]],[[12654,12654],"mapped",[4380]],[[12655,12655],"mapped",[4573]],[[12656,12656],"mapped",[4575]],[[12657,12657],"mapped",[4381]],[[12658,12658],"mapped",[4382]],[[12659,12659],"mapped",[4384]],[[12660,12660],"mapped",[4386]],[[12661,12661],"mapped",[4387]],[[12662,12662],"mapped",[4391]],[[12663,12663],"mapped",[4393]],[[12664,12664],"mapped",[4395]],[[12665,12665],"mapped",[4396]],[[12666,12666],"mapped",[4397]],[[12667,12667],"mapped",[4398]],[[12668,12668],"mapped",[4399]],[[12669,12669],"mapped",[4402]],[[12670,12670],"mapped",[4406]],[[12671,12671],"mapped",[4416]],[[12672,12672],"mapped",[4423]],[[12673,12673],"mapped",[4428]],[[12674,12674],"mapped",[4593]],[[12675,12675],"mapped",[4594]],[[12676,12676],"mapped",[4439]],[[12677,12677],"mapped",[4440]],[[12678,12678],"mapped",[4441]],[[12679,12679],"mapped",[4484]],[[12680,12680],"mapped",[4485]],[[12681,12681],"mapped",[4488]],[[12682,12682],"mapped",[4497]],[[12683,12683],"mapped",[4498]],[[12684,12684],"mapped",[4500]],[[12685,12685],"mapped",[4510]],[[12686,12686],"mapped",[4513]],[[12687,12687],"disallowed"],[[12688,12689],"valid",[],"NV8"],[[12690,12690],"mapped",[19968]],[[12691,12691],"mapped",[20108]],[[12692,12692],"mapped",[19977]],[[12693,12693],"mapped",[22235]],[[12694,12694],"mapped",[19978]],[[12695,12695],"mapped",[20013]],[[12696,12696],"mapped",[19979]],[[12697,12697],"mapped",[30002]],[[12698,12698],"mapped",[20057]],[[12699,12699],"mapped",[19993]],[[12700,12700],"mapped",[19969]],[[12701,12701],"mapped",[22825]],[[12702,12702],"mapped",[22320]],[[12703,12703],"mapped",[20154]],[[12704,12727],"valid"],[[12728,12730],"valid"],[[12731,12735],"disallowed"],[[12736,12751],"valid",[],"NV8"],[[12752,12771],"valid",[],"NV8"],[[12772,12783],"disallowed"],[[12784,12799],"valid"],[[12800,12800],"disallowed_STD3_mapped",[40,4352,41]],[[12801,12801],"disallowed_STD3_mapped",[40,4354,41]],[[12802,12802],"disallowed_STD3_mapped",[40,4355,41]],[[12803,12803],"disallowed_STD3_mapped",[40,4357,41]],[[12804,12804],"disallowed_STD3_mapped",[40,4358,41]],[[12805,12805],"disallowed_STD3_mapped",[40,4359,41]],[[12806,12806],"disallowed_STD3_mapped",[40,4361,41]],[[12807,12807],"disallowed_STD3_mapped",[40,4363,41]],[[12808,12808],"disallowed_STD3_mapped",[40,4364,41]],[[12809,12809],"disallowed_STD3_mapped",[40,4366,41]],[[12810,12810],"disallowed_STD3_mapped",[40,4367,41]],[[12811,12811],"disallowed_STD3_mapped",[40,4368,41]],[[12812,12812],"disallowed_STD3_mapped",[40,4369,41]],[[12813,12813],"disallowed_STD3_mapped",[40,4370,41]],[[12814,12814],"disallowed_STD3_mapped",[40,44032,41]],[[12815,12815],"disallowed_STD3_mapped",[40,45208,41]],[[12816,12816],"disallowed_STD3_mapped",[40,45796,41]],[[12817,12817],"disallowed_STD3_mapped",[40,46972,41]],[[12818,12818],"disallowed_STD3_mapped",[40,47560,41]],[[12819,12819],"disallowed_STD3_mapped",[40,48148,41]],[[12820,12820],"disallowed_STD3_mapped",[40,49324,41]],[[12821,12821],"disallowed_STD3_mapped",[40,50500,41]],[[12822,12822],"disallowed_STD3_mapped",[40,51088,41]],[[12823,12823],"disallowed_STD3_mapped",[40,52264,41]],[[12824,12824],"disallowed_STD3_mapped",[40,52852,41]],[[12825,12825],"disallowed_STD3_mapped",[40,53440,41]],[[12826,12826],"disallowed_STD3_mapped",[40,54028,41]],[[12827,12827],"disallowed_STD3_mapped",[40,54616,41]],[[12828,12828],"disallowed_STD3_mapped",[40,51452,41]],[[12829,12829],"disallowed_STD3_mapped",[40,50724,51204,41]],[[12830,12830],"disallowed_STD3_mapped",[40,50724,54980,41]],[[12831,12831],"disallowed"],[[12832,12832],"disallowed_STD3_mapped",[40,19968,41]],[[12833,12833],"disallowed_STD3_mapped",[40,20108,41]],[[12834,12834],"disallowed_STD3_mapped",[40,19977,41]],[[12835,12835],"disallowed_STD3_mapped",[40,22235,41]],[[12836,12836],"disallowed_STD3_mapped",[40,20116,41]],[[12837,12837],"disallowed_STD3_mapped",[40,20845,41]],[[12838,12838],"disallowed_STD3_mapped",[40,19971,41]],[[12839,12839],"disallowed_STD3_mapped",[40,20843,41]],[[12840,12840],"disallowed_STD3_mapped",[40,20061,41]],[[12841,12841],"disallowed_STD3_mapped",[40,21313,41]],[[12842,12842],"disallowed_STD3_mapped",[40,26376,41]],[[12843,12843],"disallowed_STD3_mapped",[40,28779,41]],[[12844,12844],"disallowed_STD3_mapped",[40,27700,41]],[[12845,12845],"disallowed_STD3_mapped",[40,26408,41]],[[12846,12846],"disallowed_STD3_mapped",[40,37329,41]],[[12847,12847],"disallowed_STD3_mapped",[40,22303,41]],[[12848,12848],"disallowed_STD3_mapped",[40,26085,41]],[[12849,12849],"disallowed_STD3_mapped",[40,26666,41]],[[12850,12850],"disallowed_STD3_mapped",[40,26377,41]],[[12851,12851],"disallowed_STD3_mapped",[40,31038,41]],[[12852,12852],"disallowed_STD3_mapped",[40,21517,41]],[[12853,12853],"disallowed_STD3_mapped",[40,29305,41]],[[12854,12854],"disallowed_STD3_mapped",[40,36001,41]],[[12855,12855],"disallowed_STD3_mapped",[40,31069,41]],[[12856,12856],"disallowed_STD3_mapped",[40,21172,41]],[[12857,12857],"disallowed_STD3_mapped",[40,20195,41]],[[12858,12858],"disallowed_STD3_mapped",[40,21628,41]],[[12859,12859],"disallowed_STD3_mapped",[40,23398,41]],[[12860,12860],"disallowed_STD3_mapped",[40,30435,41]],[[12861,12861],"disallowed_STD3_mapped",[40,20225,41]],[[12862,12862],"disallowed_STD3_mapped",[40,36039,41]],[[12863,12863],"disallowed_STD3_mapped",[40,21332,41]],[[12864,12864],"disallowed_STD3_mapped",[40,31085,41]],[[12865,12865],"disallowed_STD3_mapped",[40,20241,41]],[[12866,12866],"disallowed_STD3_mapped",[40,33258,41]],[[12867,12867],"disallowed_STD3_mapped",[40,33267,41]],[[12868,12868],"mapped",[21839]],[[12869,12869],"mapped",[24188]],[[12870,12870],"mapped",[25991]],[[12871,12871],"mapped",[31631]],[[12872,12879],"valid",[],"NV8"],[[12880,12880],"mapped",[112,116,101]],[[12881,12881],"mapped",[50,49]],[[12882,12882],"mapped",[50,50]],[[12883,12883],"mapped",[50,51]],[[12884,12884],"mapped",[50,52]],[[12885,12885],"mapped",[50,53]],[[12886,12886],"mapped",[50,54]],[[12887,12887],"mapped",[50,55]],[[12888,12888],"mapped",[50,56]],[[12889,12889],"mapped",[50,57]],[[12890,12890],"mapped",[51,48]],[[12891,12891],"mapped",[51,49]],[[12892,12892],"mapped",[51,50]],[[12893,12893],"mapped",[51,51]],[[12894,12894],"mapped",[51,52]],[[12895,12895],"mapped",[51,53]],[[12896,12896],"mapped",[4352]],[[12897,12897],"mapped",[4354]],[[12898,12898],"mapped",[4355]],[[12899,12899],"mapped",[4357]],[[12900,12900],"mapped",[4358]],[[12901,12901],"mapped",[4359]],[[12902,12902],"mapped",[4361]],[[12903,12903],"mapped",[4363]],[[12904,12904],"mapped",[4364]],[[12905,12905],"mapped",[4366]],[[12906,12906],"mapped",[4367]],[[12907,12907],"mapped",[4368]],[[12908,12908],"mapped",[4369]],[[12909,12909],"mapped",[4370]],[[12910,12910],"mapped",[44032]],[[12911,12911],"mapped",[45208]],[[12912,12912],"mapped",[45796]],[[12913,12913],"mapped",[46972]],[[12914,12914],"mapped",[47560]],[[12915,12915],"mapped",[48148]],[[12916,12916],"mapped",[49324]],[[12917,12917],"mapped",[50500]],[[12918,12918],"mapped",[51088]],[[12919,12919],"mapped",[52264]],[[12920,12920],"mapped",[52852]],[[12921,12921],"mapped",[53440]],[[12922,12922],"mapped",[54028]],[[12923,12923],"mapped",[54616]],[[12924,12924],"mapped",[52280,44256]],[[12925,12925],"mapped",[51452,51032]],[[12926,12926],"mapped",[50864]],[[12927,12927],"valid",[],"NV8"],[[12928,12928],"mapped",[19968]],[[12929,12929],"mapped",[20108]],[[12930,12930],"mapped",[19977]],[[12931,12931],"mapped",[22235]],[[12932,12932],"mapped",[20116]],[[12933,12933],"mapped",[20845]],[[12934,12934],"mapped",[19971]],[[12935,12935],"mapped",[20843]],[[12936,12936],"mapped",[20061]],[[12937,12937],"mapped",[21313]],[[12938,12938],"mapped",[26376]],[[12939,12939],"mapped",[28779]],[[12940,12940],"mapped",[27700]],[[12941,12941],"mapped",[26408]],[[12942,12942],"mapped",[37329]],[[12943,12943],"mapped",[22303]],[[12944,12944],"mapped",[26085]],[[12945,12945],"mapped",[26666]],[[12946,12946],"mapped",[26377]],[[12947,12947],"mapped",[31038]],[[12948,12948],"mapped",[21517]],[[12949,12949],"mapped",[29305]],[[12950,12950],"mapped",[36001]],[[12951,12951],"mapped",[31069]],[[12952,12952],"mapped",[21172]],[[12953,12953],"mapped",[31192]],[[12954,12954],"mapped",[30007]],[[12955,12955],"mapped",[22899]],[[12956,12956],"mapped",[36969]],[[12957,12957],"mapped",[20778]],[[12958,12958],"mapped",[21360]],[[12959,12959],"mapped",[27880]],[[12960,12960],"mapped",[38917]],[[12961,12961],"mapped",[20241]],[[12962,12962],"mapped",[20889]],[[12963,12963],"mapped",[27491]],[[12964,12964],"mapped",[19978]],[[12965,12965],"mapped",[20013]],[[12966,12966],"mapped",[19979]],[[12967,12967],"mapped",[24038]],[[12968,12968],"mapped",[21491]],[[12969,12969],"mapped",[21307]],[[12970,12970],"mapped",[23447]],[[12971,12971],"mapped",[23398]],[[12972,12972],"mapped",[30435]],[[12973,12973],"mapped",[20225]],[[12974,12974],"mapped",[36039]],[[12975,12975],"mapped",[21332]],[[12976,12976],"mapped",[22812]],[[12977,12977],"mapped",[51,54]],[[12978,12978],"mapped",[51,55]],[[12979,12979],"mapped",[51,56]],[[12980,12980],"mapped",[51,57]],[[12981,12981],"mapped",[52,48]],[[12982,12982],"mapped",[52,49]],[[12983,12983],"mapped",[52,50]],[[12984,12984],"mapped",[52,51]],[[12985,12985],"mapped",[52,52]],[[12986,12986],"mapped",[52,53]],[[12987,12987],"mapped",[52,54]],[[12988,12988],"mapped",[52,55]],[[12989,12989],"mapped",[52,56]],[[12990,12990],"mapped",[52,57]],[[12991,12991],"mapped",[53,48]],[[12992,12992],"mapped",[49,26376]],[[12993,12993],"mapped",[50,26376]],[[12994,12994],"mapped",[51,26376]],[[12995,12995],"mapped",[52,26376]],[[12996,12996],"mapped",[53,26376]],[[12997,12997],"mapped",[54,26376]],[[12998,12998],"mapped",[55,26376]],[[12999,12999],"mapped",[56,26376]],[[13000,13000],"mapped",[57,26376]],[[13001,13001],"mapped",[49,48,26376]],[[13002,13002],"mapped",[49,49,26376]],[[13003,13003],"mapped",[49,50,26376]],[[13004,13004],"mapped",[104,103]],[[13005,13005],"mapped",[101,114,103]],[[13006,13006],"mapped",[101,118]],[[13007,13007],"mapped",[108,116,100]],[[13008,13008],"mapped",[12450]],[[13009,13009],"mapped",[12452]],[[13010,13010],"mapped",[12454]],[[13011,13011],"mapped",[12456]],[[13012,13012],"mapped",[12458]],[[13013,13013],"mapped",[12459]],[[13014,13014],"mapped",[12461]],[[13015,13015],"mapped",[12463]],[[13016,13016],"mapped",[12465]],[[13017,13017],"mapped",[12467]],[[13018,13018],"mapped",[12469]],[[13019,13019],"mapped",[12471]],[[13020,13020],"mapped",[12473]],[[13021,13021],"mapped",[12475]],[[13022,13022],"mapped",[12477]],[[13023,13023],"mapped",[12479]],[[13024,13024],"mapped",[12481]],[[13025,13025],"mapped",[12484]],[[13026,13026],"mapped",[12486]],[[13027,13027],"mapped",[12488]],[[13028,13028],"mapped",[12490]],[[13029,13029],"mapped",[12491]],[[13030,13030],"mapped",[12492]],[[13031,13031],"mapped",[12493]],[[13032,13032],"mapped",[12494]],[[13033,13033],"mapped",[12495]],[[13034,13034],"mapped",[12498]],[[13035,13035],"mapped",[12501]],[[13036,13036],"mapped",[12504]],[[13037,13037],"mapped",[12507]],[[13038,13038],"mapped",[12510]],[[13039,13039],"mapped",[12511]],[[13040,13040],"mapped",[12512]],[[13041,13041],"mapped",[12513]],[[13042,13042],"mapped",[12514]],[[13043,13043],"mapped",[12516]],[[13044,13044],"mapped",[12518]],[[13045,13045],"mapped",[12520]],[[13046,13046],"mapped",[12521]],[[13047,13047],"mapped",[12522]],[[13048,13048],"mapped",[12523]],[[13049,13049],"mapped",[12524]],[[13050,13050],"mapped",[12525]],[[13051,13051],"mapped",[12527]],[[13052,13052],"mapped",[12528]],[[13053,13053],"mapped",[12529]],[[13054,13054],"mapped",[12530]],[[13055,13055],"disallowed"],[[13056,13056],"mapped",[12450,12497,12540,12488]],[[13057,13057],"mapped",[12450,12523,12501,12449]],[[13058,13058],"mapped",[12450,12531,12506,12450]],[[13059,13059],"mapped",[12450,12540,12523]],[[13060,13060],"mapped",[12452,12491,12531,12464]],[[13061,13061],"mapped",[12452,12531,12481]],[[13062,13062],"mapped",[12454,12457,12531]],[[13063,13063],"mapped",[12456,12473,12463,12540,12489]],[[13064,13064],"mapped",[12456,12540,12459,12540]],[[13065,13065],"mapped",[12458,12531,12473]],[[13066,13066],"mapped",[12458,12540,12512]],[[13067,13067],"mapped",[12459,12452,12522]],[[13068,13068],"mapped",[12459,12521,12483,12488]],[[13069,13069],"mapped",[12459,12525,12522,12540]],[[13070,13070],"mapped",[12460,12525,12531]],[[13071,13071],"mapped",[12460,12531,12510]],[[13072,13072],"mapped",[12462,12460]],[[13073,13073],"mapped",[12462,12491,12540]],[[13074,13074],"mapped",[12461,12517,12522,12540]],[[13075,13075],"mapped",[12462,12523,12480,12540]],[[13076,13076],"mapped",[12461,12525]],[[13077,13077],"mapped",[12461,12525,12464,12521,12512]],[[13078,13078],"mapped",[12461,12525,12513,12540,12488,12523]],[[13079,13079],"mapped",[12461,12525,12527,12483,12488]],[[13080,13080],"mapped",[12464,12521,12512]],[[13081,13081],"mapped",[12464,12521,12512,12488,12531]],[[13082,13082],"mapped",[12463,12523,12476,12452,12525]],[[13083,13083],"mapped",[12463,12525,12540,12493]],[[13084,13084],"mapped",[12465,12540,12473]],[[13085,13085],"mapped",[12467,12523,12490]],[[13086,13086],"mapped",[12467,12540,12509]],[[13087,13087],"mapped",[12469,12452,12463,12523]],[[13088,13088],"mapped",[12469,12531,12481,12540,12512]],[[13089,13089],"mapped",[12471,12522,12531,12464]],[[13090,13090],"mapped",[12475,12531,12481]],[[13091,13091],"mapped",[12475,12531,12488]],[[13092,13092],"mapped",[12480,12540,12473]],[[13093,13093],"mapped",[12487,12471]],[[13094,13094],"mapped",[12489,12523]],[[13095,13095],"mapped",[12488,12531]],[[13096,13096],"mapped",[12490,12494]],[[13097,13097],"mapped",[12494,12483,12488]],[[13098,13098],"mapped",[12495,12452,12484]],[[13099,13099],"mapped",[12497,12540,12475,12531,12488]],[[13100,13100],"mapped",[12497,12540,12484]],[[13101,13101],"mapped",[12496,12540,12524,12523]],[[13102,13102],"mapped",[12500,12450,12473,12488,12523]],[[13103,13103],"mapped",[12500,12463,12523]],[[13104,13104],"mapped",[12500,12467]],[[13105,13105],"mapped",[12499,12523]],[[13106,13106],"mapped",[12501,12449,12521,12483,12489]],[[13107,13107],"mapped",[12501,12451,12540,12488]],[[13108,13108],"mapped",[12502,12483,12471,12455,12523]],[[13109,13109],"mapped",[12501,12521,12531]],[[13110,13110],"mapped",[12504,12463,12479,12540,12523]],[[13111,13111],"mapped",[12506,12477]],[[13112,13112],"mapped",[12506,12491,12498]],[[13113,13113],"mapped",[12504,12523,12484]],[[13114,13114],"mapped",[12506,12531,12473]],[[13115,13115],"mapped",[12506,12540,12472]],[[13116,13116],"mapped",[12505,12540,12479]],[[13117,13117],"mapped",[12509,12452,12531,12488]],[[13118,13118],"mapped",[12508,12523,12488]],[[13119,13119],"mapped",[12507,12531]],[[13120,13120],"mapped",[12509,12531,12489]],[[13121,13121],"mapped",[12507,12540,12523]],[[13122,13122],"mapped",[12507,12540,12531]],[[13123,13123],"mapped",[12510,12452,12463,12525]],[[13124,13124],"mapped",[12510,12452,12523]],[[13125,13125],"mapped",[12510,12483,12495]],[[13126,13126],"mapped",[12510,12523,12463]],[[13127,13127],"mapped",[12510,12531,12471,12519,12531]],[[13128,13128],"mapped",[12511,12463,12525,12531]],[[13129,13129],"mapped",[12511,12522]],[[13130,13130],"mapped",[12511,12522,12496,12540,12523]],[[13131,13131],"mapped",[12513,12460]],[[13132,13132],"mapped",[12513,12460,12488,12531]],[[13133,13133],"mapped",[12513,12540,12488,12523]],[[13134,13134],"mapped",[12516,12540,12489]],[[13135,13135],"mapped",[12516,12540,12523]],[[13136,13136],"mapped",[12518,12450,12531]],[[13137,13137],"mapped",[12522,12483,12488,12523]],[[13138,13138],"mapped",[12522,12521]],[[13139,13139],"mapped",[12523,12500,12540]],[[13140,13140],"mapped",[12523,12540,12502,12523]],[[13141,13141],"mapped",[12524,12512]],[[13142,13142],"mapped",[12524,12531,12488,12466,12531]],[[13143,13143],"mapped",[12527,12483,12488]],[[13144,13144],"mapped",[48,28857]],[[13145,13145],"mapped",[49,28857]],[[13146,13146],"mapped",[50,28857]],[[13147,13147],"mapped",[51,28857]],[[13148,13148],"mapped",[52,28857]],[[13149,13149],"mapped",[53,28857]],[[13150,13150],"mapped",[54,28857]],[[13151,13151],"mapped",[55,28857]],[[13152,13152],"mapped",[56,28857]],[[13153,13153],"mapped",[57,28857]],[[13154,13154],"mapped",[49,48,28857]],[[13155,13155],"mapped",[49,49,28857]],[[13156,13156],"mapped",[49,50,28857]],[[13157,13157],"mapped",[49,51,28857]],[[13158,13158],"mapped",[49,52,28857]],[[13159,13159],"mapped",[49,53,28857]],[[13160,13160],"mapped",[49,54,28857]],[[13161,13161],"mapped",[49,55,28857]],[[13162,13162],"mapped",[49,56,28857]],[[13163,13163],"mapped",[49,57,28857]],[[13164,13164],"mapped",[50,48,28857]],[[13165,13165],"mapped",[50,49,28857]],[[13166,13166],"mapped",[50,50,28857]],[[13167,13167],"mapped",[50,51,28857]],[[13168,13168],"mapped",[50,52,28857]],[[13169,13169],"mapped",[104,112,97]],[[13170,13170],"mapped",[100,97]],[[13171,13171],"mapped",[97,117]],[[13172,13172],"mapped",[98,97,114]],[[13173,13173],"mapped",[111,118]],[[13174,13174],"mapped",[112,99]],[[13175,13175],"mapped",[100,109]],[[13176,13176],"mapped",[100,109,50]],[[13177,13177],"mapped",[100,109,51]],[[13178,13178],"mapped",[105,117]],[[13179,13179],"mapped",[24179,25104]],[[13180,13180],"mapped",[26157,21644]],[[13181,13181],"mapped",[22823,27491]],[[13182,13182],"mapped",[26126,27835]],[[13183,13183],"mapped",[26666,24335,20250,31038]],[[13184,13184],"mapped",[112,97]],[[13185,13185],"mapped",[110,97]],[[13186,13186],"mapped",[956,97]],[[13187,13187],"mapped",[109,97]],[[13188,13188],"mapped",[107,97]],[[13189,13189],"mapped",[107,98]],[[13190,13190],"mapped",[109,98]],[[13191,13191],"mapped",[103,98]],[[13192,13192],"mapped",[99,97,108]],[[13193,13193],"mapped",[107,99,97,108]],[[13194,13194],"mapped",[112,102]],[[13195,13195],"mapped",[110,102]],[[13196,13196],"mapped",[956,102]],[[13197,13197],"mapped",[956,103]],[[13198,13198],"mapped",[109,103]],[[13199,13199],"mapped",[107,103]],[[13200,13200],"mapped",[104,122]],[[13201,13201],"mapped",[107,104,122]],[[13202,13202],"mapped",[109,104,122]],[[13203,13203],"mapped",[103,104,122]],[[13204,13204],"mapped",[116,104,122]],[[13205,13205],"mapped",[956,108]],[[13206,13206],"mapped",[109,108]],[[13207,13207],"mapped",[100,108]],[[13208,13208],"mapped",[107,108]],[[13209,13209],"mapped",[102,109]],[[13210,13210],"mapped",[110,109]],[[13211,13211],"mapped",[956,109]],[[13212,13212],"mapped",[109,109]],[[13213,13213],"mapped",[99,109]],[[13214,13214],"mapped",[107,109]],[[13215,13215],"mapped",[109,109,50]],[[13216,13216],"mapped",[99,109,50]],[[13217,13217],"mapped",[109,50]],[[13218,13218],"mapped",[107,109,50]],[[13219,13219],"mapped",[109,109,51]],[[13220,13220],"mapped",[99,109,51]],[[13221,13221],"mapped",[109,51]],[[13222,13222],"mapped",[107,109,51]],[[13223,13223],"mapped",[109,8725,115]],[[13224,13224],"mapped",[109,8725,115,50]],[[13225,13225],"mapped",[112,97]],[[13226,13226],"mapped",[107,112,97]],[[13227,13227],"mapped",[109,112,97]],[[13228,13228],"mapped",[103,112,97]],[[13229,13229],"mapped",[114,97,100]],[[13230,13230],"mapped",[114,97,100,8725,115]],[[13231,13231],"mapped",[114,97,100,8725,115,50]],[[13232,13232],"mapped",[112,115]],[[13233,13233],"mapped",[110,115]],[[13234,13234],"mapped",[956,115]],[[13235,13235],"mapped",[109,115]],[[13236,13236],"mapped",[112,118]],[[13237,13237],"mapped",[110,118]],[[13238,13238],"mapped",[956,118]],[[13239,13239],"mapped",[109,118]],[[13240,13240],"mapped",[107,118]],[[13241,13241],"mapped",[109,118]],[[13242,13242],"mapped",[112,119]],[[13243,13243],"mapped",[110,119]],[[13244,13244],"mapped",[956,119]],[[13245,13245],"mapped",[109,119]],[[13246,13246],"mapped",[107,119]],[[13247,13247],"mapped",[109,119]],[[13248,13248],"mapped",[107,969]],[[13249,13249],"mapped",[109,969]],[[13250,13250],"disallowed"],[[13251,13251],"mapped",[98,113]],[[13252,13252],"mapped",[99,99]],[[13253,13253],"mapped",[99,100]],[[13254,13254],"mapped",[99,8725,107,103]],[[13255,13255],"disallowed"],[[13256,13256],"mapped",[100,98]],[[13257,13257],"mapped",[103,121]],[[13258,13258],"mapped",[104,97]],[[13259,13259],"mapped",[104,112]],[[13260,13260],"mapped",[105,110]],[[13261,13261],"mapped",[107,107]],[[13262,13262],"mapped",[107,109]],[[13263,13263],"mapped",[107,116]],[[13264,13264],"mapped",[108,109]],[[13265,13265],"mapped",[108,110]],[[13266,13266],"mapped",[108,111,103]],[[13267,13267],"mapped",[108,120]],[[13268,13268],"mapped",[109,98]],[[13269,13269],"mapped",[109,105,108]],[[13270,13270],"mapped",[109,111,108]],[[13271,13271],"mapped",[112,104]],[[13272,13272],"disallowed"],[[13273,13273],"mapped",[112,112,109]],[[13274,13274],"mapped",[112,114]],[[13275,13275],"mapped",[115,114]],[[13276,13276],"mapped",[115,118]],[[13277,13277],"mapped",[119,98]],[[13278,13278],"mapped",[118,8725,109]],[[13279,13279],"mapped",[97,8725,109]],[[13280,13280],"mapped",[49,26085]],[[13281,13281],"mapped",[50,26085]],[[13282,13282],"mapped",[51,26085]],[[13283,13283],"mapped",[52,26085]],[[13284,13284],"mapped",[53,26085]],[[13285,13285],"mapped",[54,26085]],[[13286,13286],"mapped",[55,26085]],[[13287,13287],"mapped",[56,26085]],[[13288,13288],"mapped",[57,26085]],[[13289,13289],"mapped",[49,48,26085]],[[13290,13290],"mapped",[49,49,26085]],[[13291,13291],"mapped",[49,50,26085]],[[13292,13292],"mapped",[49,51,26085]],[[13293,13293],"mapped",[49,52,26085]],[[13294,13294],"mapped",[49,53,26085]],[[13295,13295],"mapped",[49,54,26085]],[[13296,13296],"mapped",[49,55,26085]],[[13297,13297],"mapped",[49,56,26085]],[[13298,13298],"mapped",[49,57,26085]],[[13299,13299],"mapped",[50,48,26085]],[[13300,13300],"mapped",[50,49,26085]],[[13301,13301],"mapped",[50,50,26085]],[[13302,13302],"mapped",[50,51,26085]],[[13303,13303],"mapped",[50,52,26085]],[[13304,13304],"mapped",[50,53,26085]],[[13305,13305],"mapped",[50,54,26085]],[[13306,13306],"mapped",[50,55,26085]],[[13307,13307],"mapped",[50,56,26085]],[[13308,13308],"mapped",[50,57,26085]],[[13309,13309],"mapped",[51,48,26085]],[[13310,13310],"mapped",[51,49,26085]],[[13311,13311],"mapped",[103,97,108]],[[13312,19893],"valid"],[[19894,19903],"disallowed"],[[19904,19967],"valid",[],"NV8"],[[19968,40869],"valid"],[[40870,40891],"valid"],[[40892,40899],"valid"],[[40900,40907],"valid"],[[40908,40908],"valid"],[[40909,40917],"valid"],[[40918,40959],"disallowed"],[[40960,42124],"valid"],[[42125,42127],"disallowed"],[[42128,42145],"valid",[],"NV8"],[[42146,42147],"valid",[],"NV8"],[[42148,42163],"valid",[],"NV8"],[[42164,42164],"valid",[],"NV8"],[[42165,42176],"valid",[],"NV8"],[[42177,42177],"valid",[],"NV8"],[[42178,42180],"valid",[],"NV8"],[[42181,42181],"valid",[],"NV8"],[[42182,42182],"valid",[],"NV8"],[[42183,42191],"disallowed"],[[42192,42237],"valid"],[[42238,42239],"valid",[],"NV8"],[[42240,42508],"valid"],[[42509,42511],"valid",[],"NV8"],[[42512,42539],"valid"],[[42540,42559],"disallowed"],[[42560,42560],"mapped",[42561]],[[42561,42561],"valid"],[[42562,42562],"mapped",[42563]],[[42563,42563],"valid"],[[42564,42564],"mapped",[42565]],[[42565,42565],"valid"],[[42566,42566],"mapped",[42567]],[[42567,42567],"valid"],[[42568,42568],"mapped",[42569]],[[42569,42569],"valid"],[[42570,42570],"mapped",[42571]],[[42571,42571],"valid"],[[42572,42572],"mapped",[42573]],[[42573,42573],"valid"],[[42574,42574],"mapped",[42575]],[[42575,42575],"valid"],[[42576,42576],"mapped",[42577]],[[42577,42577],"valid"],[[42578,42578],"mapped",[42579]],[[42579,42579],"valid"],[[42580,42580],"mapped",[42581]],[[42581,42581],"valid"],[[42582,42582],"mapped",[42583]],[[42583,42583],"valid"],[[42584,42584],"mapped",[42585]],[[42585,42585],"valid"],[[42586,42586],"mapped",[42587]],[[42587,42587],"valid"],[[42588,42588],"mapped",[42589]],[[42589,42589],"valid"],[[42590,42590],"mapped",[42591]],[[42591,42591],"valid"],[[42592,42592],"mapped",[42593]],[[42593,42593],"valid"],[[42594,42594],"mapped",[42595]],[[42595,42595],"valid"],[[42596,42596],"mapped",[42597]],[[42597,42597],"valid"],[[42598,42598],"mapped",[42599]],[[42599,42599],"valid"],[[42600,42600],"mapped",[42601]],[[42601,42601],"valid"],[[42602,42602],"mapped",[42603]],[[42603,42603],"valid"],[[42604,42604],"mapped",[42605]],[[42605,42607],"valid"],[[42608,42611],"valid",[],"NV8"],[[42612,42619],"valid"],[[42620,42621],"valid"],[[42622,42622],"valid",[],"NV8"],[[42623,42623],"valid"],[[42624,42624],"mapped",[42625]],[[42625,42625],"valid"],[[42626,42626],"mapped",[42627]],[[42627,42627],"valid"],[[42628,42628],"mapped",[42629]],[[42629,42629],"valid"],[[42630,42630],"mapped",[42631]],[[42631,42631],"valid"],[[42632,42632],"mapped",[42633]],[[42633,42633],"valid"],[[42634,42634],"mapped",[42635]],[[42635,42635],"valid"],[[42636,42636],"mapped",[42637]],[[42637,42637],"valid"],[[42638,42638],"mapped",[42639]],[[42639,42639],"valid"],[[42640,42640],"mapped",[42641]],[[42641,42641],"valid"],[[42642,42642],"mapped",[42643]],[[42643,42643],"valid"],[[42644,42644],"mapped",[42645]],[[42645,42645],"valid"],[[42646,42646],"mapped",[42647]],[[42647,42647],"valid"],[[42648,42648],"mapped",[42649]],[[42649,42649],"valid"],[[42650,42650],"mapped",[42651]],[[42651,42651],"valid"],[[42652,42652],"mapped",[1098]],[[42653,42653],"mapped",[1100]],[[42654,42654],"valid"],[[42655,42655],"valid"],[[42656,42725],"valid"],[[42726,42735],"valid",[],"NV8"],[[42736,42737],"valid"],[[42738,42743],"valid",[],"NV8"],[[42744,42751],"disallowed"],[[42752,42774],"valid",[],"NV8"],[[42775,42778],"valid"],[[42779,42783],"valid"],[[42784,42785],"valid",[],"NV8"],[[42786,42786],"mapped",[42787]],[[42787,42787],"valid"],[[42788,42788],"mapped",[42789]],[[42789,42789],"valid"],[[42790,42790],"mapped",[42791]],[[42791,42791],"valid"],[[42792,42792],"mapped",[42793]],[[42793,42793],"valid"],[[42794,42794],"mapped",[42795]],[[42795,42795],"valid"],[[42796,42796],"mapped",[42797]],[[42797,42797],"valid"],[[42798,42798],"mapped",[42799]],[[42799,42801],"valid"],[[42802,42802],"mapped",[42803]],[[42803,42803],"valid"],[[42804,42804],"mapped",[42805]],[[42805,42805],"valid"],[[42806,42806],"mapped",[42807]],[[42807,42807],"valid"],[[42808,42808],"mapped",[42809]],[[42809,42809],"valid"],[[42810,42810],"mapped",[42811]],[[42811,42811],"valid"],[[42812,42812],"mapped",[42813]],[[42813,42813],"valid"],[[42814,42814],"mapped",[42815]],[[42815,42815],"valid"],[[42816,42816],"mapped",[42817]],[[42817,42817],"valid"],[[42818,42818],"mapped",[42819]],[[42819,42819],"valid"],[[42820,42820],"mapped",[42821]],[[42821,42821],"valid"],[[42822,42822],"mapped",[42823]],[[42823,42823],"valid"],[[42824,42824],"mapped",[42825]],[[42825,42825],"valid"],[[42826,42826],"mapped",[42827]],[[42827,42827],"valid"],[[42828,42828],"mapped",[42829]],[[42829,42829],"valid"],[[42830,42830],"mapped",[42831]],[[42831,42831],"valid"],[[42832,42832],"mapped",[42833]],[[42833,42833],"valid"],[[42834,42834],"mapped",[42835]],[[42835,42835],"valid"],[[42836,42836],"mapped",[42837]],[[42837,42837],"valid"],[[42838,42838],"mapped",[42839]],[[42839,42839],"valid"],[[42840,42840],"mapped",[42841]],[[42841,42841],"valid"],[[42842,42842],"mapped",[42843]],[[42843,42843],"valid"],[[42844,42844],"mapped",[42845]],[[42845,42845],"valid"],[[42846,42846],"mapped",[42847]],[[42847,42847],"valid"],[[42848,42848],"mapped",[42849]],[[42849,42849],"valid"],[[42850,42850],"mapped",[42851]],[[42851,42851],"valid"],[[42852,42852],"mapped",[42853]],[[42853,42853],"valid"],[[42854,42854],"mapped",[42855]],[[42855,42855],"valid"],[[42856,42856],"mapped",[42857]],[[42857,42857],"valid"],[[42858,42858],"mapped",[42859]],[[42859,42859],"valid"],[[42860,42860],"mapped",[42861]],[[42861,42861],"valid"],[[42862,42862],"mapped",[42863]],[[42863,42863],"valid"],[[42864,42864],"mapped",[42863]],[[42865,42872],"valid"],[[42873,42873],"mapped",[42874]],[[42874,42874],"valid"],[[42875,42875],"mapped",[42876]],[[42876,42876],"valid"],[[42877,42877],"mapped",[7545]],[[42878,42878],"mapped",[42879]],[[42879,42879],"valid"],[[42880,42880],"mapped",[42881]],[[42881,42881],"valid"],[[42882,42882],"mapped",[42883]],[[42883,42883],"valid"],[[42884,42884],"mapped",[42885]],[[42885,42885],"valid"],[[42886,42886],"mapped",[42887]],[[42887,42888],"valid"],[[42889,42890],"valid",[],"NV8"],[[42891,42891],"mapped",[42892]],[[42892,42892],"valid"],[[42893,42893],"mapped",[613]],[[42894,42894],"valid"],[[42895,42895],"valid"],[[42896,42896],"mapped",[42897]],[[42897,42897],"valid"],[[42898,42898],"mapped",[42899]],[[42899,42899],"valid"],[[42900,42901],"valid"],[[42902,42902],"mapped",[42903]],[[42903,42903],"valid"],[[42904,42904],"mapped",[42905]],[[42905,42905],"valid"],[[42906,42906],"mapped",[42907]],[[42907,42907],"valid"],[[42908,42908],"mapped",[42909]],[[42909,42909],"valid"],[[42910,42910],"mapped",[42911]],[[42911,42911],"valid"],[[42912,42912],"mapped",[42913]],[[42913,42913],"valid"],[[42914,42914],"mapped",[42915]],[[42915,42915],"valid"],[[42916,42916],"mapped",[42917]],[[42917,42917],"valid"],[[42918,42918],"mapped",[42919]],[[42919,42919],"valid"],[[42920,42920],"mapped",[42921]],[[42921,42921],"valid"],[[42922,42922],"mapped",[614]],[[42923,42923],"mapped",[604]],[[42924,42924],"mapped",[609]],[[42925,42925],"mapped",[620]],[[42926,42927],"disallowed"],[[42928,42928],"mapped",[670]],[[42929,42929],"mapped",[647]],[[42930,42930],"mapped",[669]],[[42931,42931],"mapped",[43859]],[[42932,42932],"mapped",[42933]],[[42933,42933],"valid"],[[42934,42934],"mapped",[42935]],[[42935,42935],"valid"],[[42936,42998],"disallowed"],[[42999,42999],"valid"],[[43000,43000],"mapped",[295]],[[43001,43001],"mapped",[339]],[[43002,43002],"valid"],[[43003,43007],"valid"],[[43008,43047],"valid"],[[43048,43051],"valid",[],"NV8"],[[43052,43055],"disallowed"],[[43056,43065],"valid",[],"NV8"],[[43066,43071],"disallowed"],[[43072,43123],"valid"],[[43124,43127],"valid",[],"NV8"],[[43128,43135],"disallowed"],[[43136,43204],"valid"],[[43205,43213],"disallowed"],[[43214,43215],"valid",[],"NV8"],[[43216,43225],"valid"],[[43226,43231],"disallowed"],[[43232,43255],"valid"],[[43256,43258],"valid",[],"NV8"],[[43259,43259],"valid"],[[43260,43260],"valid",[],"NV8"],[[43261,43261],"valid"],[[43262,43263],"disallowed"],[[43264,43309],"valid"],[[43310,43311],"valid",[],"NV8"],[[43312,43347],"valid"],[[43348,43358],"disallowed"],[[43359,43359],"valid",[],"NV8"],[[43360,43388],"valid",[],"NV8"],[[43389,43391],"disallowed"],[[43392,43456],"valid"],[[43457,43469],"valid",[],"NV8"],[[43470,43470],"disallowed"],[[43471,43481],"valid"],[[43482,43485],"disallowed"],[[43486,43487],"valid",[],"NV8"],[[43488,43518],"valid"],[[43519,43519],"disallowed"],[[43520,43574],"valid"],[[43575,43583],"disallowed"],[[43584,43597],"valid"],[[43598,43599],"disallowed"],[[43600,43609],"valid"],[[43610,43611],"disallowed"],[[43612,43615],"valid",[],"NV8"],[[43616,43638],"valid"],[[43639,43641],"valid",[],"NV8"],[[43642,43643],"valid"],[[43644,43647],"valid"],[[43648,43714],"valid"],[[43715,43738],"disallowed"],[[43739,43741],"valid"],[[43742,43743],"valid",[],"NV8"],[[43744,43759],"valid"],[[43760,43761],"valid",[],"NV8"],[[43762,43766],"valid"],[[43767,43776],"disallowed"],[[43777,43782],"valid"],[[43783,43784],"disallowed"],[[43785,43790],"valid"],[[43791,43792],"disallowed"],[[43793,43798],"valid"],[[43799,43807],"disallowed"],[[43808,43814],"valid"],[[43815,43815],"disallowed"],[[43816,43822],"valid"],[[43823,43823],"disallowed"],[[43824,43866],"valid"],[[43867,43867],"valid",[],"NV8"],[[43868,43868],"mapped",[42791]],[[43869,43869],"mapped",[43831]],[[43870,43870],"mapped",[619]],[[43871,43871],"mapped",[43858]],[[43872,43875],"valid"],[[43876,43877],"valid"],[[43878,43887],"disallowed"],[[43888,43888],"mapped",[5024]],[[43889,43889],"mapped",[5025]],[[43890,43890],"mapped",[5026]],[[43891,43891],"mapped",[5027]],[[43892,43892],"mapped",[5028]],[[43893,43893],"mapped",[5029]],[[43894,43894],"mapped",[5030]],[[43895,43895],"mapped",[5031]],[[43896,43896],"mapped",[5032]],[[43897,43897],"mapped",[5033]],[[43898,43898],"mapped",[5034]],[[43899,43899],"mapped",[5035]],[[43900,43900],"mapped",[5036]],[[43901,43901],"mapped",[5037]],[[43902,43902],"mapped",[5038]],[[43903,43903],"mapped",[5039]],[[43904,43904],"mapped",[5040]],[[43905,43905],"mapped",[5041]],[[43906,43906],"mapped",[5042]],[[43907,43907],"mapped",[5043]],[[43908,43908],"mapped",[5044]],[[43909,43909],"mapped",[5045]],[[43910,43910],"mapped",[5046]],[[43911,43911],"mapped",[5047]],[[43912,43912],"mapped",[5048]],[[43913,43913],"mapped",[5049]],[[43914,43914],"mapped",[5050]],[[43915,43915],"mapped",[5051]],[[43916,43916],"mapped",[5052]],[[43917,43917],"mapped",[5053]],[[43918,43918],"mapped",[5054]],[[43919,43919],"mapped",[5055]],[[43920,43920],"mapped",[5056]],[[43921,43921],"mapped",[5057]],[[43922,43922],"mapped",[5058]],[[43923,43923],"mapped",[5059]],[[43924,43924],"mapped",[5060]],[[43925,43925],"mapped",[5061]],[[43926,43926],"mapped",[5062]],[[43927,43927],"mapped",[5063]],[[43928,43928],"mapped",[5064]],[[43929,43929],"mapped",[5065]],[[43930,43930],"mapped",[5066]],[[43931,43931],"mapped",[5067]],[[43932,43932],"mapped",[5068]],[[43933,43933],"mapped",[5069]],[[43934,43934],"mapped",[5070]],[[43935,43935],"mapped",[5071]],[[43936,43936],"mapped",[5072]],[[43937,43937],"mapped",[5073]],[[43938,43938],"mapped",[5074]],[[43939,43939],"mapped",[5075]],[[43940,43940],"mapped",[5076]],[[43941,43941],"mapped",[5077]],[[43942,43942],"mapped",[5078]],[[43943,43943],"mapped",[5079]],[[43944,43944],"mapped",[5080]],[[43945,43945],"mapped",[5081]],[[43946,43946],"mapped",[5082]],[[43947,43947],"mapped",[5083]],[[43948,43948],"mapped",[5084]],[[43949,43949],"mapped",[5085]],[[43950,43950],"mapped",[5086]],[[43951,43951],"mapped",[5087]],[[43952,43952],"mapped",[5088]],[[43953,43953],"mapped",[5089]],[[43954,43954],"mapped",[5090]],[[43955,43955],"mapped",[5091]],[[43956,43956],"mapped",[5092]],[[43957,43957],"mapped",[5093]],[[43958,43958],"mapped",[5094]],[[43959,43959],"mapped",[5095]],[[43960,43960],"mapped",[5096]],[[43961,43961],"mapped",[5097]],[[43962,43962],"mapped",[5098]],[[43963,43963],"mapped",[5099]],[[43964,43964],"mapped",[5100]],[[43965,43965],"mapped",[5101]],[[43966,43966],"mapped",[5102]],[[43967,43967],"mapped",[5103]],[[43968,44010],"valid"],[[44011,44011],"valid",[],"NV8"],[[44012,44013],"valid"],[[44014,44015],"disallowed"],[[44016,44025],"valid"],[[44026,44031],"disallowed"],[[44032,55203],"valid"],[[55204,55215],"disallowed"],[[55216,55238],"valid",[],"NV8"],[[55239,55242],"disallowed"],[[55243,55291],"valid",[],"NV8"],[[55292,55295],"disallowed"],[[55296,57343],"disallowed"],[[57344,63743],"disallowed"],[[63744,63744],"mapped",[35912]],[[63745,63745],"mapped",[26356]],[[63746,63746],"mapped",[36554]],[[63747,63747],"mapped",[36040]],[[63748,63748],"mapped",[28369]],[[63749,63749],"mapped",[20018]],[[63750,63750],"mapped",[21477]],[[63751,63752],"mapped",[40860]],[[63753,63753],"mapped",[22865]],[[63754,63754],"mapped",[37329]],[[63755,63755],"mapped",[21895]],[[63756,63756],"mapped",[22856]],[[63757,63757],"mapped",[25078]],[[63758,63758],"mapped",[30313]],[[63759,63759],"mapped",[32645]],[[63760,63760],"mapped",[34367]],[[63761,63761],"mapped",[34746]],[[63762,63762],"mapped",[35064]],[[63763,63763],"mapped",[37007]],[[63764,63764],"mapped",[27138]],[[63765,63765],"mapped",[27931]],[[63766,63766],"mapped",[28889]],[[63767,63767],"mapped",[29662]],[[63768,63768],"mapped",[33853]],[[63769,63769],"mapped",[37226]],[[63770,63770],"mapped",[39409]],[[63771,63771],"mapped",[20098]],[[63772,63772],"mapped",[21365]],[[63773,63773],"mapped",[27396]],[[63774,63774],"mapped",[29211]],[[63775,63775],"mapped",[34349]],[[63776,63776],"mapped",[40478]],[[63777,63777],"mapped",[23888]],[[63778,63778],"mapped",[28651]],[[63779,63779],"mapped",[34253]],[[63780,63780],"mapped",[35172]],[[63781,63781],"mapped",[25289]],[[63782,63782],"mapped",[33240]],[[63783,63783],"mapped",[34847]],[[63784,63784],"mapped",[24266]],[[63785,63785],"mapped",[26391]],[[63786,63786],"mapped",[28010]],[[63787,63787],"mapped",[29436]],[[63788,63788],"mapped",[37070]],[[63789,63789],"mapped",[20358]],[[63790,63790],"mapped",[20919]],[[63791,63791],"mapped",[21214]],[[63792,63792],"mapped",[25796]],[[63793,63793],"mapped",[27347]],[[63794,63794],"mapped",[29200]],[[63795,63795],"mapped",[30439]],[[63796,63796],"mapped",[32769]],[[63797,63797],"mapped",[34310]],[[63798,63798],"mapped",[34396]],[[63799,63799],"mapped",[36335]],[[63800,63800],"mapped",[38706]],[[63801,63801],"mapped",[39791]],[[63802,63802],"mapped",[40442]],[[63803,63803],"mapped",[30860]],[[63804,63804],"mapped",[31103]],[[63805,63805],"mapped",[32160]],[[63806,63806],"mapped",[33737]],[[63807,63807],"mapped",[37636]],[[63808,63808],"mapped",[40575]],[[63809,63809],"mapped",[35542]],[[63810,63810],"mapped",[22751]],[[63811,63811],"mapped",[24324]],[[63812,63812],"mapped",[31840]],[[63813,63813],"mapped",[32894]],[[63814,63814],"mapped",[29282]],[[63815,63815],"mapped",[30922]],[[63816,63816],"mapped",[36034]],[[63817,63817],"mapped",[38647]],[[63818,63818],"mapped",[22744]],[[63819,63819],"mapped",[23650]],[[63820,63820],"mapped",[27155]],[[63821,63821],"mapped",[28122]],[[63822,63822],"mapped",[28431]],[[63823,63823],"mapped",[32047]],[[63824,63824],"mapped",[32311]],[[63825,63825],"mapped",[38475]],[[63826,63826],"mapped",[21202]],[[63827,63827],"mapped",[32907]],[[63828,63828],"mapped",[20956]],[[63829,63829],"mapped",[20940]],[[63830,63830],"mapped",[31260]],[[63831,63831],"mapped",[32190]],[[63832,63832],"mapped",[33777]],[[63833,63833],"mapped",[38517]],[[63834,63834],"mapped",[35712]],[[63835,63835],"mapped",[25295]],[[63836,63836],"mapped",[27138]],[[63837,63837],"mapped",[35582]],[[63838,63838],"mapped",[20025]],[[63839,63839],"mapped",[23527]],[[63840,63840],"mapped",[24594]],[[63841,63841],"mapped",[29575]],[[63842,63842],"mapped",[30064]],[[63843,63843],"mapped",[21271]],[[63844,63844],"mapped",[30971]],[[63845,63845],"mapped",[20415]],[[63846,63846],"mapped",[24489]],[[63847,63847],"mapped",[19981]],[[63848,63848],"mapped",[27852]],[[63849,63849],"mapped",[25976]],[[63850,63850],"mapped",[32034]],[[63851,63851],"mapped",[21443]],[[63852,63852],"mapped",[22622]],[[63853,63853],"mapped",[30465]],[[63854,63854],"mapped",[33865]],[[63855,63855],"mapped",[35498]],[[63856,63856],"mapped",[27578]],[[63857,63857],"mapped",[36784]],[[63858,63858],"mapped",[27784]],[[63859,63859],"mapped",[25342]],[[63860,63860],"mapped",[33509]],[[63861,63861],"mapped",[25504]],[[63862,63862],"mapped",[30053]],[[63863,63863],"mapped",[20142]],[[63864,63864],"mapped",[20841]],[[63865,63865],"mapped",[20937]],[[63866,63866],"mapped",[26753]],[[63867,63867],"mapped",[31975]],[[63868,63868],"mapped",[33391]],[[63869,63869],"mapped",[35538]],[[63870,63870],"mapped",[37327]],[[63871,63871],"mapped",[21237]],[[63872,63872],"mapped",[21570]],[[63873,63873],"mapped",[22899]],[[63874,63874],"mapped",[24300]],[[63875,63875],"mapped",[26053]],[[63876,63876],"mapped",[28670]],[[63877,63877],"mapped",[31018]],[[63878,63878],"mapped",[38317]],[[63879,63879],"mapped",[39530]],[[63880,63880],"mapped",[40599]],[[63881,63881],"mapped",[40654]],[[63882,63882],"mapped",[21147]],[[63883,63883],"mapped",[26310]],[[63884,63884],"mapped",[27511]],[[63885,63885],"mapped",[36706]],[[63886,63886],"mapped",[24180]],[[63887,63887],"mapped",[24976]],[[63888,63888],"mapped",[25088]],[[63889,63889],"mapped",[25754]],[[63890,63890],"mapped",[28451]],[[63891,63891],"mapped",[29001]],[[63892,63892],"mapped",[29833]],[[63893,63893],"mapped",[31178]],[[63894,63894],"mapped",[32244]],[[63895,63895],"mapped",[32879]],[[63896,63896],"mapped",[36646]],[[63897,63897],"mapped",[34030]],[[63898,63898],"mapped",[36899]],[[63899,63899],"mapped",[37706]],[[63900,63900],"mapped",[21015]],[[63901,63901],"mapped",[21155]],[[63902,63902],"mapped",[21693]],[[63903,63903],"mapped",[28872]],[[63904,63904],"mapped",[35010]],[[63905,63905],"mapped",[35498]],[[63906,63906],"mapped",[24265]],[[63907,63907],"mapped",[24565]],[[63908,63908],"mapped",[25467]],[[63909,63909],"mapped",[27566]],[[63910,63910],"mapped",[31806]],[[63911,63911],"mapped",[29557]],[[63912,63912],"mapped",[20196]],[[63913,63913],"mapped",[22265]],[[63914,63914],"mapped",[23527]],[[63915,63915],"mapped",[23994]],[[63916,63916],"mapped",[24604]],[[63917,63917],"mapped",[29618]],[[63918,63918],"mapped",[29801]],[[63919,63919],"mapped",[32666]],[[63920,63920],"mapped",[32838]],[[63921,63921],"mapped",[37428]],[[63922,63922],"mapped",[38646]],[[63923,63923],"mapped",[38728]],[[63924,63924],"mapped",[38936]],[[63925,63925],"mapped",[20363]],[[63926,63926],"mapped",[31150]],[[63927,63927],"mapped",[37300]],[[63928,63928],"mapped",[38584]],[[63929,63929],"mapped",[24801]],[[63930,63930],"mapped",[20102]],[[63931,63931],"mapped",[20698]],[[63932,63932],"mapped",[23534]],[[63933,63933],"mapped",[23615]],[[63934,63934],"mapped",[26009]],[[63935,63935],"mapped",[27138]],[[63936,63936],"mapped",[29134]],[[63937,63937],"mapped",[30274]],[[63938,63938],"mapped",[34044]],[[63939,63939],"mapped",[36988]],[[63940,63940],"mapped",[40845]],[[63941,63941],"mapped",[26248]],[[63942,63942],"mapped",[38446]],[[63943,63943],"mapped",[21129]],[[63944,63944],"mapped",[26491]],[[63945,63945],"mapped",[26611]],[[63946,63946],"mapped",[27969]],[[63947,63947],"mapped",[28316]],[[63948,63948],"mapped",[29705]],[[63949,63949],"mapped",[30041]],[[63950,63950],"mapped",[30827]],[[63951,63951],"mapped",[32016]],[[63952,63952],"mapped",[39006]],[[63953,63953],"mapped",[20845]],[[63954,63954],"mapped",[25134]],[[63955,63955],"mapped",[38520]],[[63956,63956],"mapped",[20523]],[[63957,63957],"mapped",[23833]],[[63958,63958],"mapped",[28138]],[[63959,63959],"mapped",[36650]],[[63960,63960],"mapped",[24459]],[[63961,63961],"mapped",[24900]],[[63962,63962],"mapped",[26647]],[[63963,63963],"mapped",[29575]],[[63964,63964],"mapped",[38534]],[[63965,63965],"mapped",[21033]],[[63966,63966],"mapped",[21519]],[[63967,63967],"mapped",[23653]],[[63968,63968],"mapped",[26131]],[[63969,63969],"mapped",[26446]],[[63970,63970],"mapped",[26792]],[[63971,63971],"mapped",[27877]],[[63972,63972],"mapped",[29702]],[[63973,63973],"mapped",[30178]],[[63974,63974],"mapped",[32633]],[[63975,63975],"mapped",[35023]],[[63976,63976],"mapped",[35041]],[[63977,63977],"mapped",[37324]],[[63978,63978],"mapped",[38626]],[[63979,63979],"mapped",[21311]],[[63980,63980],"mapped",[28346]],[[63981,63981],"mapped",[21533]],[[63982,63982],"mapped",[29136]],[[63983,63983],"mapped",[29848]],[[63984,63984],"mapped",[34298]],[[63985,63985],"mapped",[38563]],[[63986,63986],"mapped",[40023]],[[63987,63987],"mapped",[40607]],[[63988,63988],"mapped",[26519]],[[63989,63989],"mapped",[28107]],[[63990,63990],"mapped",[33256]],[[63991,63991],"mapped",[31435]],[[63992,63992],"mapped",[31520]],[[63993,63993],"mapped",[31890]],[[63994,63994],"mapped",[29376]],[[63995,63995],"mapped",[28825]],[[63996,63996],"mapped",[35672]],[[63997,63997],"mapped",[20160]],[[63998,63998],"mapped",[33590]],[[63999,63999],"mapped",[21050]],[[64000,64000],"mapped",[20999]],[[64001,64001],"mapped",[24230]],[[64002,64002],"mapped",[25299]],[[64003,64003],"mapped",[31958]],[[64004,64004],"mapped",[23429]],[[64005,64005],"mapped",[27934]],[[64006,64006],"mapped",[26292]],[[64007,64007],"mapped",[36667]],[[64008,64008],"mapped",[34892]],[[64009,64009],"mapped",[38477]],[[64010,64010],"mapped",[35211]],[[64011,64011],"mapped",[24275]],[[64012,64012],"mapped",[20800]],[[64013,64013],"mapped",[21952]],[[64014,64015],"valid"],[[64016,64016],"mapped",[22618]],[[64017,64017],"valid"],[[64018,64018],"mapped",[26228]],[[64019,64020],"valid"],[[64021,64021],"mapped",[20958]],[[64022,64022],"mapped",[29482]],[[64023,64023],"mapped",[30410]],[[64024,64024],"mapped",[31036]],[[64025,64025],"mapped",[31070]],[[64026,64026],"mapped",[31077]],[[64027,64027],"mapped",[31119]],[[64028,64028],"mapped",[38742]],[[64029,64029],"mapped",[31934]],[[64030,64030],"mapped",[32701]],[[64031,64031],"valid"],[[64032,64032],"mapped",[34322]],[[64033,64033],"valid"],[[64034,64034],"mapped",[35576]],[[64035,64036],"valid"],[[64037,64037],"mapped",[36920]],[[64038,64038],"mapped",[37117]],[[64039,64041],"valid"],[[64042,64042],"mapped",[39151]],[[64043,64043],"mapped",[39164]],[[64044,64044],"mapped",[39208]],[[64045,64045],"mapped",[40372]],[[64046,64046],"mapped",[37086]],[[64047,64047],"mapped",[38583]],[[64048,64048],"mapped",[20398]],[[64049,64049],"mapped",[20711]],[[64050,64050],"mapped",[20813]],[[64051,64051],"mapped",[21193]],[[64052,64052],"mapped",[21220]],[[64053,64053],"mapped",[21329]],[[64054,64054],"mapped",[21917]],[[64055,64055],"mapped",[22022]],[[64056,64056],"mapped",[22120]],[[64057,64057],"mapped",[22592]],[[64058,64058],"mapped",[22696]],[[64059,64059],"mapped",[23652]],[[64060,64060],"mapped",[23662]],[[64061,64061],"mapped",[24724]],[[64062,64062],"mapped",[24936]],[[64063,64063],"mapped",[24974]],[[64064,64064],"mapped",[25074]],[[64065,64065],"mapped",[25935]],[[64066,64066],"mapped",[26082]],[[64067,64067],"mapped",[26257]],[[64068,64068],"mapped",[26757]],[[64069,64069],"mapped",[28023]],[[64070,64070],"mapped",[28186]],[[64071,64071],"mapped",[28450]],[[64072,64072],"mapped",[29038]],[[64073,64073],"mapped",[29227]],[[64074,64074],"mapped",[29730]],[[64075,64075],"mapped",[30865]],[[64076,64076],"mapped",[31038]],[[64077,64077],"mapped",[31049]],[[64078,64078],"mapped",[31048]],[[64079,64079],"mapped",[31056]],[[64080,64080],"mapped",[31062]],[[64081,64081],"mapped",[31069]],[[64082,64082],"mapped",[31117]],[[64083,64083],"mapped",[31118]],[[64084,64084],"mapped",[31296]],[[64085,64085],"mapped",[31361]],[[64086,64086],"mapped",[31680]],[[64087,64087],"mapped",[32244]],[[64088,64088],"mapped",[32265]],[[64089,64089],"mapped",[32321]],[[64090,64090],"mapped",[32626]],[[64091,64091],"mapped",[32773]],[[64092,64092],"mapped",[33261]],[[64093,64094],"mapped",[33401]],[[64095,64095],"mapped",[33879]],[[64096,64096],"mapped",[35088]],[[64097,64097],"mapped",[35222]],[[64098,64098],"mapped",[35585]],[[64099,64099],"mapped",[35641]],[[64100,64100],"mapped",[36051]],[[64101,64101],"mapped",[36104]],[[64102,64102],"mapped",[36790]],[[64103,64103],"mapped",[36920]],[[64104,64104],"mapped",[38627]],[[64105,64105],"mapped",[38911]],[[64106,64106],"mapped",[38971]],[[64107,64107],"mapped",[24693]],[[64108,64108],"mapped",[148206]],[[64109,64109],"mapped",[33304]],[[64110,64111],"disallowed"],[[64112,64112],"mapped",[20006]],[[64113,64113],"mapped",[20917]],[[64114,64114],"mapped",[20840]],[[64115,64115],"mapped",[20352]],[[64116,64116],"mapped",[20805]],[[64117,64117],"mapped",[20864]],[[64118,64118],"mapped",[21191]],[[64119,64119],"mapped",[21242]],[[64120,64120],"mapped",[21917]],[[64121,64121],"mapped",[21845]],[[64122,64122],"mapped",[21913]],[[64123,64123],"mapped",[21986]],[[64124,64124],"mapped",[22618]],[[64125,64125],"mapped",[22707]],[[64126,64126],"mapped",[22852]],[[64127,64127],"mapped",[22868]],[[64128,64128],"mapped",[23138]],[[64129,64129],"mapped",[23336]],[[64130,64130],"mapped",[24274]],[[64131,64131],"mapped",[24281]],[[64132,64132],"mapped",[24425]],[[64133,64133],"mapped",[24493]],[[64134,64134],"mapped",[24792]],[[64135,64135],"mapped",[24910]],[[64136,64136],"mapped",[24840]],[[64137,64137],"mapped",[24974]],[[64138,64138],"mapped",[24928]],[[64139,64139],"mapped",[25074]],[[64140,64140],"mapped",[25140]],[[64141,64141],"mapped",[25540]],[[64142,64142],"mapped",[25628]],[[64143,64143],"mapped",[25682]],[[64144,64144],"mapped",[25942]],[[64145,64145],"mapped",[26228]],[[64146,64146],"mapped",[26391]],[[64147,64147],"mapped",[26395]],[[64148,64148],"mapped",[26454]],[[64149,64149],"mapped",[27513]],[[64150,64150],"mapped",[27578]],[[64151,64151],"mapped",[27969]],[[64152,64152],"mapped",[28379]],[[64153,64153],"mapped",[28363]],[[64154,64154],"mapped",[28450]],[[64155,64155],"mapped",[28702]],[[64156,64156],"mapped",[29038]],[[64157,64157],"mapped",[30631]],[[64158,64158],"mapped",[29237]],[[64159,64159],"mapped",[29359]],[[64160,64160],"mapped",[29482]],[[64161,64161],"mapped",[29809]],[[64162,64162],"mapped",[29958]],[[64163,64163],"mapped",[30011]],[[64164,64164],"mapped",[30237]],[[64165,64165],"mapped",[30239]],[[64166,64166],"mapped",[30410]],[[64167,64167],"mapped",[30427]],[[64168,64168],"mapped",[30452]],[[64169,64169],"mapped",[30538]],[[64170,64170],"mapped",[30528]],[[64171,64171],"mapped",[30924]],[[64172,64172],"mapped",[31409]],[[64173,64173],"mapped",[31680]],[[64174,64174],"mapped",[31867]],[[64175,64175],"mapped",[32091]],[[64176,64176],"mapped",[32244]],[[64177,64177],"mapped",[32574]],[[64178,64178],"mapped",[32773]],[[64179,64179],"mapped",[33618]],[[64180,64180],"mapped",[33775]],[[64181,64181],"mapped",[34681]],[[64182,64182],"mapped",[35137]],[[64183,64183],"mapped",[35206]],[[64184,64184],"mapped",[35222]],[[64185,64185],"mapped",[35519]],[[64186,64186],"mapped",[35576]],[[64187,64187],"mapped",[35531]],[[64188,64188],"mapped",[35585]],[[64189,64189],"mapped",[35582]],[[64190,64190],"mapped",[35565]],[[64191,64191],"mapped",[35641]],[[64192,64192],"mapped",[35722]],[[64193,64193],"mapped",[36104]],[[64194,64194],"mapped",[36664]],[[64195,64195],"mapped",[36978]],[[64196,64196],"mapped",[37273]],[[64197,64197],"mapped",[37494]],[[64198,64198],"mapped",[38524]],[[64199,64199],"mapped",[38627]],[[64200,64200],"mapped",[38742]],[[64201,64201],"mapped",[38875]],[[64202,64202],"mapped",[38911]],[[64203,64203],"mapped",[38923]],[[64204,64204],"mapped",[38971]],[[64205,64205],"mapped",[39698]],[[64206,64206],"mapped",[40860]],[[64207,64207],"mapped",[141386]],[[64208,64208],"mapped",[141380]],[[64209,64209],"mapped",[144341]],[[64210,64210],"mapped",[15261]],[[64211,64211],"mapped",[16408]],[[64212,64212],"mapped",[16441]],[[64213,64213],"mapped",[152137]],[[64214,64214],"mapped",[154832]],[[64215,64215],"mapped",[163539]],[[64216,64216],"mapped",[40771]],[[64217,64217],"mapped",[40846]],[[64218,64255],"disallowed"],[[64256,64256],"mapped",[102,102]],[[64257,64257],"mapped",[102,105]],[[64258,64258],"mapped",[102,108]],[[64259,64259],"mapped",[102,102,105]],[[64260,64260],"mapped",[102,102,108]],[[64261,64262],"mapped",[115,116]],[[64263,64274],"disallowed"],[[64275,64275],"mapped",[1396,1398]],[[64276,64276],"mapped",[1396,1381]],[[64277,64277],"mapped",[1396,1387]],[[64278,64278],"mapped",[1406,1398]],[[64279,64279],"mapped",[1396,1389]],[[64280,64284],"disallowed"],[[64285,64285],"mapped",[1497,1460]],[[64286,64286],"valid"],[[64287,64287],"mapped",[1522,1463]],[[64288,64288],"mapped",[1506]],[[64289,64289],"mapped",[1488]],[[64290,64290],"mapped",[1491]],[[64291,64291],"mapped",[1492]],[[64292,64292],"mapped",[1499]],[[64293,64293],"mapped",[1500]],[[64294,64294],"mapped",[1501]],[[64295,64295],"mapped",[1512]],[[64296,64296],"mapped",[1514]],[[64297,64297],"disallowed_STD3_mapped",[43]],[[64298,64298],"mapped",[1513,1473]],[[64299,64299],"mapped",[1513,1474]],[[64300,64300],"mapped",[1513,1468,1473]],[[64301,64301],"mapped",[1513,1468,1474]],[[64302,64302],"mapped",[1488,1463]],[[64303,64303],"mapped",[1488,1464]],[[64304,64304],"mapped",[1488,1468]],[[64305,64305],"mapped",[1489,1468]],[[64306,64306],"mapped",[1490,1468]],[[64307,64307],"mapped",[1491,1468]],[[64308,64308],"mapped",[1492,1468]],[[64309,64309],"mapped",[1493,1468]],[[64310,64310],"mapped",[1494,1468]],[[64311,64311],"disallowed"],[[64312,64312],"mapped",[1496,1468]],[[64313,64313],"mapped",[1497,1468]],[[64314,64314],"mapped",[1498,1468]],[[64315,64315],"mapped",[1499,1468]],[[64316,64316],"mapped",[1500,1468]],[[64317,64317],"disallowed"],[[64318,64318],"mapped",[1502,1468]],[[64319,64319],"disallowed"],[[64320,64320],"mapped",[1504,1468]],[[64321,64321],"mapped",[1505,1468]],[[64322,64322],"disallowed"],[[64323,64323],"mapped",[1507,1468]],[[64324,64324],"mapped",[1508,1468]],[[64325,64325],"disallowed"],[[64326,64326],"mapped",[1510,1468]],[[64327,64327],"mapped",[1511,1468]],[[64328,64328],"mapped",[1512,1468]],[[64329,64329],"mapped",[1513,1468]],[[64330,64330],"mapped",[1514,1468]],[[64331,64331],"mapped",[1493,1465]],[[64332,64332],"mapped",[1489,1471]],[[64333,64333],"mapped",[1499,1471]],[[64334,64334],"mapped",[1508,1471]],[[64335,64335],"mapped",[1488,1500]],[[64336,64337],"mapped",[1649]],[[64338,64341],"mapped",[1659]],[[64342,64345],"mapped",[1662]],[[64346,64349],"mapped",[1664]],[[64350,64353],"mapped",[1658]],[[64354,64357],"mapped",[1663]],[[64358,64361],"mapped",[1657]],[[64362,64365],"mapped",[1700]],[[64366,64369],"mapped",[1702]],[[64370,64373],"mapped",[1668]],[[64374,64377],"mapped",[1667]],[[64378,64381],"mapped",[1670]],[[64382,64385],"mapped",[1671]],[[64386,64387],"mapped",[1677]],[[64388,64389],"mapped",[1676]],[[64390,64391],"mapped",[1678]],[[64392,64393],"mapped",[1672]],[[64394,64395],"mapped",[1688]],[[64396,64397],"mapped",[1681]],[[64398,64401],"mapped",[1705]],[[64402,64405],"mapped",[1711]],[[64406,64409],"mapped",[1715]],[[64410,64413],"mapped",[1713]],[[64414,64415],"mapped",[1722]],[[64416,64419],"mapped",[1723]],[[64420,64421],"mapped",[1728]],[[64422,64425],"mapped",[1729]],[[64426,64429],"mapped",[1726]],[[64430,64431],"mapped",[1746]],[[64432,64433],"mapped",[1747]],[[64434,64449],"valid",[],"NV8"],[[64450,64466],"disallowed"],[[64467,64470],"mapped",[1709]],[[64471,64472],"mapped",[1735]],[[64473,64474],"mapped",[1734]],[[64475,64476],"mapped",[1736]],[[64477,64477],"mapped",[1735,1652]],[[64478,64479],"mapped",[1739]],[[64480,64481],"mapped",[1733]],[[64482,64483],"mapped",[1737]],[[64484,64487],"mapped",[1744]],[[64488,64489],"mapped",[1609]],[[64490,64491],"mapped",[1574,1575]],[[64492,64493],"mapped",[1574,1749]],[[64494,64495],"mapped",[1574,1608]],[[64496,64497],"mapped",[1574,1735]],[[64498,64499],"mapped",[1574,1734]],[[64500,64501],"mapped",[1574,1736]],[[64502,64504],"mapped",[1574,1744]],[[64505,64507],"mapped",[1574,1609]],[[64508,64511],"mapped",[1740]],[[64512,64512],"mapped",[1574,1580]],[[64513,64513],"mapped",[1574,1581]],[[64514,64514],"mapped",[1574,1605]],[[64515,64515],"mapped",[1574,1609]],[[64516,64516],"mapped",[1574,1610]],[[64517,64517],"mapped",[1576,1580]],[[64518,64518],"mapped",[1576,1581]],[[64519,64519],"mapped",[1576,1582]],[[64520,64520],"mapped",[1576,1605]],[[64521,64521],"mapped",[1576,1609]],[[64522,64522],"mapped",[1576,1610]],[[64523,64523],"mapped",[1578,1580]],[[64524,64524],"mapped",[1578,1581]],[[64525,64525],"mapped",[1578,1582]],[[64526,64526],"mapped",[1578,1605]],[[64527,64527],"mapped",[1578,1609]],[[64528,64528],"mapped",[1578,1610]],[[64529,64529],"mapped",[1579,1580]],[[64530,64530],"mapped",[1579,1605]],[[64531,64531],"mapped",[1579,1609]],[[64532,64532],"mapped",[1579,1610]],[[64533,64533],"mapped",[1580,1581]],[[64534,64534],"mapped",[1580,1605]],[[64535,64535],"mapped",[1581,1580]],[[64536,64536],"mapped",[1581,1605]],[[64537,64537],"mapped",[1582,1580]],[[64538,64538],"mapped",[1582,1581]],[[64539,64539],"mapped",[1582,1605]],[[64540,64540],"mapped",[1587,1580]],[[64541,64541],"mapped",[1587,1581]],[[64542,64542],"mapped",[1587,1582]],[[64543,64543],"mapped",[1587,1605]],[[64544,64544],"mapped",[1589,1581]],[[64545,64545],"mapped",[1589,1605]],[[64546,64546],"mapped",[1590,1580]],[[64547,64547],"mapped",[1590,1581]],[[64548,64548],"mapped",[1590,1582]],[[64549,64549],"mapped",[1590,1605]],[[64550,64550],"mapped",[1591,1581]],[[64551,64551],"mapped",[1591,1605]],[[64552,64552],"mapped",[1592,1605]],[[64553,64553],"mapped",[1593,1580]],[[64554,64554],"mapped",[1593,1605]],[[64555,64555],"mapped",[1594,1580]],[[64556,64556],"mapped",[1594,1605]],[[64557,64557],"mapped",[1601,1580]],[[64558,64558],"mapped",[1601,1581]],[[64559,64559],"mapped",[1601,1582]],[[64560,64560],"mapped",[1601,1605]],[[64561,64561],"mapped",[1601,1609]],[[64562,64562],"mapped",[1601,1610]],[[64563,64563],"mapped",[1602,1581]],[[64564,64564],"mapped",[1602,1605]],[[64565,64565],"mapped",[1602,1609]],[[64566,64566],"mapped",[1602,1610]],[[64567,64567],"mapped",[1603,1575]],[[64568,64568],"mapped",[1603,1580]],[[64569,64569],"mapped",[1603,1581]],[[64570,64570],"mapped",[1603,1582]],[[64571,64571],"mapped",[1603,1604]],[[64572,64572],"mapped",[1603,1605]],[[64573,64573],"mapped",[1603,1609]],[[64574,64574],"mapped",[1603,1610]],[[64575,64575],"mapped",[1604,1580]],[[64576,64576],"mapped",[1604,1581]],[[64577,64577],"mapped",[1604,1582]],[[64578,64578],"mapped",[1604,1605]],[[64579,64579],"mapped",[1604,1609]],[[64580,64580],"mapped",[1604,1610]],[[64581,64581],"mapped",[1605,1580]],[[64582,64582],"mapped",[1605,1581]],[[64583,64583],"mapped",[1605,1582]],[[64584,64584],"mapped",[1605,1605]],[[64585,64585],"mapped",[1605,1609]],[[64586,64586],"mapped",[1605,1610]],[[64587,64587],"mapped",[1606,1580]],[[64588,64588],"mapped",[1606,1581]],[[64589,64589],"mapped",[1606,1582]],[[64590,64590],"mapped",[1606,1605]],[[64591,64591],"mapped",[1606,1609]],[[64592,64592],"mapped",[1606,1610]],[[64593,64593],"mapped",[1607,1580]],[[64594,64594],"mapped",[1607,1605]],[[64595,64595],"mapped",[1607,1609]],[[64596,64596],"mapped",[1607,1610]],[[64597,64597],"mapped",[1610,1580]],[[64598,64598],"mapped",[1610,1581]],[[64599,64599],"mapped",[1610,1582]],[[64600,64600],"mapped",[1610,1605]],[[64601,64601],"mapped",[1610,1609]],[[64602,64602],"mapped",[1610,1610]],[[64603,64603],"mapped",[1584,1648]],[[64604,64604],"mapped",[1585,1648]],[[64605,64605],"mapped",[1609,1648]],[[64606,64606],"disallowed_STD3_mapped",[32,1612,1617]],[[64607,64607],"disallowed_STD3_mapped",[32,1613,1617]],[[64608,64608],"disallowed_STD3_mapped",[32,1614,1617]],[[64609,64609],"disallowed_STD3_mapped",[32,1615,1617]],[[64610,64610],"disallowed_STD3_mapped",[32,1616,1617]],[[64611,64611],"disallowed_STD3_mapped",[32,1617,1648]],[[64612,64612],"mapped",[1574,1585]],[[64613,64613],"mapped",[1574,1586]],[[64614,64614],"mapped",[1574,1605]],[[64615,64615],"mapped",[1574,1606]],[[64616,64616],"mapped",[1574,1609]],[[64617,64617],"mapped",[1574,1610]],[[64618,64618],"mapped",[1576,1585]],[[64619,64619],"mapped",[1576,1586]],[[64620,64620],"mapped",[1576,1605]],[[64621,64621],"mapped",[1576,1606]],[[64622,64622],"mapped",[1576,1609]],[[64623,64623],"mapped",[1576,1610]],[[64624,64624],"mapped",[1578,1585]],[[64625,64625],"mapped",[1578,1586]],[[64626,64626],"mapped",[1578,1605]],[[64627,64627],"mapped",[1578,1606]],[[64628,64628],"mapped",[1578,1609]],[[64629,64629],"mapped",[1578,1610]],[[64630,64630],"mapped",[1579,1585]],[[64631,64631],"mapped",[1579,1586]],[[64632,64632],"mapped",[1579,1605]],[[64633,64633],"mapped",[1579,1606]],[[64634,64634],"mapped",[1579,1609]],[[64635,64635],"mapped",[1579,1610]],[[64636,64636],"mapped",[1601,1609]],[[64637,64637],"mapped",[1601,1610]],[[64638,64638],"mapped",[1602,1609]],[[64639,64639],"mapped",[1602,1610]],[[64640,64640],"mapped",[1603,1575]],[[64641,64641],"mapped",[1603,1604]],[[64642,64642],"mapped",[1603,1605]],[[64643,64643],"mapped",[1603,1609]],[[64644,64644],"mapped",[1603,1610]],[[64645,64645],"mapped",[1604,1605]],[[64646,64646],"mapped",[1604,1609]],[[64647,64647],"mapped",[1604,1610]],[[64648,64648],"mapped",[1605,1575]],[[64649,64649],"mapped",[1605,1605]],[[64650,64650],"mapped",[1606,1585]],[[64651,64651],"mapped",[1606,1586]],[[64652,64652],"mapped",[1606,1605]],[[64653,64653],"mapped",[1606,1606]],[[64654,64654],"mapped",[1606,1609]],[[64655,64655],"mapped",[1606,1610]],[[64656,64656],"mapped",[1609,1648]],[[64657,64657],"mapped",[1610,1585]],[[64658,64658],"mapped",[1610,1586]],[[64659,64659],"mapped",[1610,1605]],[[64660,64660],"mapped",[1610,1606]],[[64661,64661],"mapped",[1610,1609]],[[64662,64662],"mapped",[1610,1610]],[[64663,64663],"mapped",[1574,1580]],[[64664,64664],"mapped",[1574,1581]],[[64665,64665],"mapped",[1574,1582]],[[64666,64666],"mapped",[1574,1605]],[[64667,64667],"mapped",[1574,1607]],[[64668,64668],"mapped",[1576,1580]],[[64669,64669],"mapped",[1576,1581]],[[64670,64670],"mapped",[1576,1582]],[[64671,64671],"mapped",[1576,1605]],[[64672,64672],"mapped",[1576,1607]],[[64673,64673],"mapped",[1578,1580]],[[64674,64674],"mapped",[1578,1581]],[[64675,64675],"mapped",[1578,1582]],[[64676,64676],"mapped",[1578,1605]],[[64677,64677],"mapped",[1578,1607]],[[64678,64678],"mapped",[1579,1605]],[[64679,64679],"mapped",[1580,1581]],[[64680,64680],"mapped",[1580,1605]],[[64681,64681],"mapped",[1581,1580]],[[64682,64682],"mapped",[1581,1605]],[[64683,64683],"mapped",[1582,1580]],[[64684,64684],"mapped",[1582,1605]],[[64685,64685],"mapped",[1587,1580]],[[64686,64686],"mapped",[1587,1581]],[[64687,64687],"mapped",[1587,1582]],[[64688,64688],"mapped",[1587,1605]],[[64689,64689],"mapped",[1589,1581]],[[64690,64690],"mapped",[1589,1582]],[[64691,64691],"mapped",[1589,1605]],[[64692,64692],"mapped",[1590,1580]],[[64693,64693],"mapped",[1590,1581]],[[64694,64694],"mapped",[1590,1582]],[[64695,64695],"mapped",[1590,1605]],[[64696,64696],"mapped",[1591,1581]],[[64697,64697],"mapped",[1592,1605]],[[64698,64698],"mapped",[1593,1580]],[[64699,64699],"mapped",[1593,1605]],[[64700,64700],"mapped",[1594,1580]],[[64701,64701],"mapped",[1594,1605]],[[64702,64702],"mapped",[1601,1580]],[[64703,64703],"mapped",[1601,1581]],[[64704,64704],"mapped",[1601,1582]],[[64705,64705],"mapped",[1601,1605]],[[64706,64706],"mapped",[1602,1581]],[[64707,64707],"mapped",[1602,1605]],[[64708,64708],"mapped",[1603,1580]],[[64709,64709],"mapped",[1603,1581]],[[64710,64710],"mapped",[1603,1582]],[[64711,64711],"mapped",[1603,1604]],[[64712,64712],"mapped",[1603,1605]],[[64713,64713],"mapped",[1604,1580]],[[64714,64714],"mapped",[1604,1581]],[[64715,64715],"mapped",[1604,1582]],[[64716,64716],"mapped",[1604,1605]],[[64717,64717],"mapped",[1604,1607]],[[64718,64718],"mapped",[1605,1580]],[[64719,64719],"mapped",[1605,1581]],[[64720,64720],"mapped",[1605,1582]],[[64721,64721],"mapped",[1605,1605]],[[64722,64722],"mapped",[1606,1580]],[[64723,64723],"mapped",[1606,1581]],[[64724,64724],"mapped",[1606,1582]],[[64725,64725],"mapped",[1606,1605]],[[64726,64726],"mapped",[1606,1607]],[[64727,64727],"mapped",[1607,1580]],[[64728,64728],"mapped",[1607,1605]],[[64729,64729],"mapped",[1607,1648]],[[64730,64730],"mapped",[1610,1580]],[[64731,64731],"mapped",[1610,1581]],[[64732,64732],"mapped",[1610,1582]],[[64733,64733],"mapped",[1610,1605]],[[64734,64734],"mapped",[1610,1607]],[[64735,64735],"mapped",[1574,1605]],[[64736,64736],"mapped",[1574,1607]],[[64737,64737],"mapped",[1576,1605]],[[64738,64738],"mapped",[1576,1607]],[[64739,64739],"mapped",[1578,1605]],[[64740,64740],"mapped",[1578,1607]],[[64741,64741],"mapped",[1579,1605]],[[64742,64742],"mapped",[1579,1607]],[[64743,64743],"mapped",[1587,1605]],[[64744,64744],"mapped",[1587,1607]],[[64745,64745],"mapped",[1588,1605]],[[64746,64746],"mapped",[1588,1607]],[[64747,64747],"mapped",[1603,1604]],[[64748,64748],"mapped",[1603,1605]],[[64749,64749],"mapped",[1604,1605]],[[64750,64750],"mapped",[1606,1605]],[[64751,64751],"mapped",[1606,1607]],[[64752,64752],"mapped",[1610,1605]],[[64753,64753],"mapped",[1610,1607]],[[64754,64754],"mapped",[1600,1614,1617]],[[64755,64755],"mapped",[1600,1615,1617]],[[64756,64756],"mapped",[1600,1616,1617]],[[64757,64757],"mapped",[1591,1609]],[[64758,64758],"mapped",[1591,1610]],[[64759,64759],"mapped",[1593,1609]],[[64760,64760],"mapped",[1593,1610]],[[64761,64761],"mapped",[1594,1609]],[[64762,64762],"mapped",[1594,1610]],[[64763,64763],"mapped",[1587,1609]],[[64764,64764],"mapped",[1587,1610]],[[64765,64765],"mapped",[1588,1609]],[[64766,64766],"mapped",[1588,1610]],[[64767,64767],"mapped",[1581,1609]],[[64768,64768],"mapped",[1581,1610]],[[64769,64769],"mapped",[1580,1609]],[[64770,64770],"mapped",[1580,1610]],[[64771,64771],"mapped",[1582,1609]],[[64772,64772],"mapped",[1582,1610]],[[64773,64773],"mapped",[1589,1609]],[[64774,64774],"mapped",[1589,1610]],[[64775,64775],"mapped",[1590,1609]],[[64776,64776],"mapped",[1590,1610]],[[64777,64777],"mapped",[1588,1580]],[[64778,64778],"mapped",[1588,1581]],[[64779,64779],"mapped",[1588,1582]],[[64780,64780],"mapped",[1588,1605]],[[64781,64781],"mapped",[1588,1585]],[[64782,64782],"mapped",[1587,1585]],[[64783,64783],"mapped",[1589,1585]],[[64784,64784],"mapped",[1590,1585]],[[64785,64785],"mapped",[1591,1609]],[[64786,64786],"mapped",[1591,1610]],[[64787,64787],"mapped",[1593,1609]],[[64788,64788],"mapped",[1593,1610]],[[64789,64789],"mapped",[1594,1609]],[[64790,64790],"mapped",[1594,1610]],[[64791,64791],"mapped",[1587,1609]],[[64792,64792],"mapped",[1587,1610]],[[64793,64793],"mapped",[1588,1609]],[[64794,64794],"mapped",[1588,1610]],[[64795,64795],"mapped",[1581,1609]],[[64796,64796],"mapped",[1581,1610]],[[64797,64797],"mapped",[1580,1609]],[[64798,64798],"mapped",[1580,1610]],[[64799,64799],"mapped",[1582,1609]],[[64800,64800],"mapped",[1582,1610]],[[64801,64801],"mapped",[1589,1609]],[[64802,64802],"mapped",[1589,1610]],[[64803,64803],"mapped",[1590,1609]],[[64804,64804],"mapped",[1590,1610]],[[64805,64805],"mapped",[1588,1580]],[[64806,64806],"mapped",[1588,1581]],[[64807,64807],"mapped",[1588,1582]],[[64808,64808],"mapped",[1588,1605]],[[64809,64809],"mapped",[1588,1585]],[[64810,64810],"mapped",[1587,1585]],[[64811,64811],"mapped",[1589,1585]],[[64812,64812],"mapped",[1590,1585]],[[64813,64813],"mapped",[1588,1580]],[[64814,64814],"mapped",[1588,1581]],[[64815,64815],"mapped",[1588,1582]],[[64816,64816],"mapped",[1588,1605]],[[64817,64817],"mapped",[1587,1607]],[[64818,64818],"mapped",[1588,1607]],[[64819,64819],"mapped",[1591,1605]],[[64820,64820],"mapped",[1587,1580]],[[64821,64821],"mapped",[1587,1581]],[[64822,64822],"mapped",[1587,1582]],[[64823,64823],"mapped",[1588,1580]],[[64824,64824],"mapped",[1588,1581]],[[64825,64825],"mapped",[1588,1582]],[[64826,64826],"mapped",[1591,1605]],[[64827,64827],"mapped",[1592,1605]],[[64828,64829],"mapped",[1575,1611]],[[64830,64831],"valid",[],"NV8"],[[64832,64847],"disallowed"],[[64848,64848],"mapped",[1578,1580,1605]],[[64849,64850],"mapped",[1578,1581,1580]],[[64851,64851],"mapped",[1578,1581,1605]],[[64852,64852],"mapped",[1578,1582,1605]],[[64853,64853],"mapped",[1578,1605,1580]],[[64854,64854],"mapped",[1578,1605,1581]],[[64855,64855],"mapped",[1578,1605,1582]],[[64856,64857],"mapped",[1580,1605,1581]],[[64858,64858],"mapped",[1581,1605,1610]],[[64859,64859],"mapped",[1581,1605,1609]],[[64860,64860],"mapped",[1587,1581,1580]],[[64861,64861],"mapped",[1587,1580,1581]],[[64862,64862],"mapped",[1587,1580,1609]],[[64863,64864],"mapped",[1587,1605,1581]],[[64865,64865],"mapped",[1587,1605,1580]],[[64866,64867],"mapped",[1587,1605,1605]],[[64868,64869],"mapped",[1589,1581,1581]],[[64870,64870],"mapped",[1589,1605,1605]],[[64871,64872],"mapped",[1588,1581,1605]],[[64873,64873],"mapped",[1588,1580,1610]],[[64874,64875],"mapped",[1588,1605,1582]],[[64876,64877],"mapped",[1588,1605,1605]],[[64878,64878],"mapped",[1590,1581,1609]],[[64879,64880],"mapped",[1590,1582,1605]],[[64881,64882],"mapped",[1591,1605,1581]],[[64883,64883],"mapped",[1591,1605,1605]],[[64884,64884],"mapped",[1591,1605,1610]],[[64885,64885],"mapped",[1593,1580,1605]],[[64886,64887],"mapped",[1593,1605,1605]],[[64888,64888],"mapped",[1593,1605,1609]],[[64889,64889],"mapped",[1594,1605,1605]],[[64890,64890],"mapped",[1594,1605,1610]],[[64891,64891],"mapped",[1594,1605,1609]],[[64892,64893],"mapped",[1601,1582,1605]],[[64894,64894],"mapped",[1602,1605,1581]],[[64895,64895],"mapped",[1602,1605,1605]],[[64896,64896],"mapped",[1604,1581,1605]],[[64897,64897],"mapped",[1604,1581,1610]],[[64898,64898],"mapped",[1604,1581,1609]],[[64899,64900],"mapped",[1604,1580,1580]],[[64901,64902],"mapped",[1604,1582,1605]],[[64903,64904],"mapped",[1604,1605,1581]],[[64905,64905],"mapped",[1605,1581,1580]],[[64906,64906],"mapped",[1605,1581,1605]],[[64907,64907],"mapped",[1605,1581,1610]],[[64908,64908],"mapped",[1605,1580,1581]],[[64909,64909],"mapped",[1605,1580,1605]],[[64910,64910],"mapped",[1605,1582,1580]],[[64911,64911],"mapped",[1605,1582,1605]],[[64912,64913],"disallowed"],[[64914,64914],"mapped",[1605,1580,1582]],[[64915,64915],"mapped",[1607,1605,1580]],[[64916,64916],"mapped",[1607,1605,1605]],[[64917,64917],"mapped",[1606,1581,1605]],[[64918,64918],"mapped",[1606,1581,1609]],[[64919,64920],"mapped",[1606,1580,1605]],[[64921,64921],"mapped",[1606,1580,1609]],[[64922,64922],"mapped",[1606,1605,1610]],[[64923,64923],"mapped",[1606,1605,1609]],[[64924,64925],"mapped",[1610,1605,1605]],[[64926,64926],"mapped",[1576,1582,1610]],[[64927,64927],"mapped",[1578,1580,1610]],[[64928,64928],"mapped",[1578,1580,1609]],[[64929,64929],"mapped",[1578,1582,1610]],[[64930,64930],"mapped",[1578,1582,1609]],[[64931,64931],"mapped",[1578,1605,1610]],[[64932,64932],"mapped",[1578,1605,1609]],[[64933,64933],"mapped",[1580,1605,1610]],[[64934,64934],"mapped",[1580,1581,1609]],[[64935,64935],"mapped",[1580,1605,1609]],[[64936,64936],"mapped",[1587,1582,1609]],[[64937,64937],"mapped",[1589,1581,1610]],[[64938,64938],"mapped",[1588,1581,1610]],[[64939,64939],"mapped",[1590,1581,1610]],[[64940,64940],"mapped",[1604,1580,1610]],[[64941,64941],"mapped",[1604,1605,1610]],[[64942,64942],"mapped",[1610,1581,1610]],[[64943,64943],"mapped",[1610,1580,1610]],[[64944,64944],"mapped",[1610,1605,1610]],[[64945,64945],"mapped",[1605,1605,1610]],[[64946,64946],"mapped",[1602,1605,1610]],[[64947,64947],"mapped",[1606,1581,1610]],[[64948,64948],"mapped",[1602,1605,1581]],[[64949,64949],"mapped",[1604,1581,1605]],[[64950,64950],"mapped",[1593,1605,1610]],[[64951,64951],"mapped",[1603,1605,1610]],[[64952,64952],"mapped",[1606,1580,1581]],[[64953,64953],"mapped",[1605,1582,1610]],[[64954,64954],"mapped",[1604,1580,1605]],[[64955,64955],"mapped",[1603,1605,1605]],[[64956,64956],"mapped",[1604,1580,1605]],[[64957,64957],"mapped",[1606,1580,1581]],[[64958,64958],"mapped",[1580,1581,1610]],[[64959,64959],"mapped",[1581,1580,1610]],[[64960,64960],"mapped",[1605,1580,1610]],[[64961,64961],"mapped",[1601,1605,1610]],[[64962,64962],"mapped",[1576,1581,1610]],[[64963,64963],"mapped",[1603,1605,1605]],[[64964,64964],"mapped",[1593,1580,1605]],[[64965,64965],"mapped",[1589,1605,1605]],[[64966,64966],"mapped",[1587,1582,1610]],[[64967,64967],"mapped",[1606,1580,1610]],[[64968,64975],"disallowed"],[[64976,65007],"disallowed"],[[65008,65008],"mapped",[1589,1604,1746]],[[65009,65009],"mapped",[1602,1604,1746]],[[65010,65010],"mapped",[1575,1604,1604,1607]],[[65011,65011],"mapped",[1575,1603,1576,1585]],[[65012,65012],"mapped",[1605,1581,1605,1583]],[[65013,65013],"mapped",[1589,1604,1593,1605]],[[65014,65014],"mapped",[1585,1587,1608,1604]],[[65015,65015],"mapped",[1593,1604,1610,1607]],[[65016,65016],"mapped",[1608,1587,1604,1605]],[[65017,65017],"mapped",[1589,1604,1609]],[[65018,65018],"disallowed_STD3_mapped",[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605]],[[65019,65019],"disallowed_STD3_mapped",[1580,1604,32,1580,1604,1575,1604,1607]],[[65020,65020],"mapped",[1585,1740,1575,1604]],[[65021,65021],"valid",[],"NV8"],[[65022,65023],"disallowed"],[[65024,65039],"ignored"],[[65040,65040],"disallowed_STD3_mapped",[44]],[[65041,65041],"mapped",[12289]],[[65042,65042],"disallowed"],[[65043,65043],"disallowed_STD3_mapped",[58]],[[65044,65044],"disallowed_STD3_mapped",[59]],[[65045,65045],"disallowed_STD3_mapped",[33]],[[65046,65046],"disallowed_STD3_mapped",[63]],[[65047,65047],"mapped",[12310]],[[65048,65048],"mapped",[12311]],[[65049,65049],"disallowed"],[[65050,65055],"disallowed"],[[65056,65059],"valid"],[[65060,65062],"valid"],[[65063,65069],"valid"],[[65070,65071],"valid"],[[65072,65072],"disallowed"],[[65073,65073],"mapped",[8212]],[[65074,65074],"mapped",[8211]],[[65075,65076],"disallowed_STD3_mapped",[95]],[[65077,65077],"disallowed_STD3_mapped",[40]],[[65078,65078],"disallowed_STD3_mapped",[41]],[[65079,65079],"disallowed_STD3_mapped",[123]],[[65080,65080],"disallowed_STD3_mapped",[125]],[[65081,65081],"mapped",[12308]],[[65082,65082],"mapped",[12309]],[[65083,65083],"mapped",[12304]],[[65084,65084],"mapped",[12305]],[[65085,65085],"mapped",[12298]],[[65086,65086],"mapped",[12299]],[[65087,65087],"mapped",[12296]],[[65088,65088],"mapped",[12297]],[[65089,65089],"mapped",[12300]],[[65090,65090],"mapped",[12301]],[[65091,65091],"mapped",[12302]],[[65092,65092],"mapped",[12303]],[[65093,65094],"valid",[],"NV8"],[[65095,65095],"disallowed_STD3_mapped",[91]],[[65096,65096],"disallowed_STD3_mapped",[93]],[[65097,65100],"disallowed_STD3_mapped",[32,773]],[[65101,65103],"disallowed_STD3_mapped",[95]],[[65104,65104],"disallowed_STD3_mapped",[44]],[[65105,65105],"mapped",[12289]],[[65106,65106],"disallowed"],[[65107,65107],"disallowed"],[[65108,65108],"disallowed_STD3_mapped",[59]],[[65109,65109],"disallowed_STD3_mapped",[58]],[[65110,65110],"disallowed_STD3_mapped",[63]],[[65111,65111],"disallowed_STD3_mapped",[33]],[[65112,65112],"mapped",[8212]],[[65113,65113],"disallowed_STD3_mapped",[40]],[[65114,65114],"disallowed_STD3_mapped",[41]],[[65115,65115],"disallowed_STD3_mapped",[123]],[[65116,65116],"disallowed_STD3_mapped",[125]],[[65117,65117],"mapped",[12308]],[[65118,65118],"mapped",[12309]],[[65119,65119],"disallowed_STD3_mapped",[35]],[[65120,65120],"disallowed_STD3_mapped",[38]],[[65121,65121],"disallowed_STD3_mapped",[42]],[[65122,65122],"disallowed_STD3_mapped",[43]],[[65123,65123],"mapped",[45]],[[65124,65124],"disallowed_STD3_mapped",[60]],[[65125,65125],"disallowed_STD3_mapped",[62]],[[65126,65126],"disallowed_STD3_mapped",[61]],[[65127,65127],"disallowed"],[[65128,65128],"disallowed_STD3_mapped",[92]],[[65129,65129],"disallowed_STD3_mapped",[36]],[[65130,65130],"disallowed_STD3_mapped",[37]],[[65131,65131],"disallowed_STD3_mapped",[64]],[[65132,65135],"disallowed"],[[65136,65136],"disallowed_STD3_mapped",[32,1611]],[[65137,65137],"mapped",[1600,1611]],[[65138,65138],"disallowed_STD3_mapped",[32,1612]],[[65139,65139],"valid"],[[65140,65140],"disallowed_STD3_mapped",[32,1613]],[[65141,65141],"disallowed"],[[65142,65142],"disallowed_STD3_mapped",[32,1614]],[[65143,65143],"mapped",[1600,1614]],[[65144,65144],"disallowed_STD3_mapped",[32,1615]],[[65145,65145],"mapped",[1600,1615]],[[65146,65146],"disallowed_STD3_mapped",[32,1616]],[[65147,65147],"mapped",[1600,1616]],[[65148,65148],"disallowed_STD3_mapped",[32,1617]],[[65149,65149],"mapped",[1600,1617]],[[65150,65150],"disallowed_STD3_mapped",[32,1618]],[[65151,65151],"mapped",[1600,1618]],[[65152,65152],"mapped",[1569]],[[65153,65154],"mapped",[1570]],[[65155,65156],"mapped",[1571]],[[65157,65158],"mapped",[1572]],[[65159,65160],"mapped",[1573]],[[65161,65164],"mapped",[1574]],[[65165,65166],"mapped",[1575]],[[65167,65170],"mapped",[1576]],[[65171,65172],"mapped",[1577]],[[65173,65176],"mapped",[1578]],[[65177,65180],"mapped",[1579]],[[65181,65184],"mapped",[1580]],[[65185,65188],"mapped",[1581]],[[65189,65192],"mapped",[1582]],[[65193,65194],"mapped",[1583]],[[65195,65196],"mapped",[1584]],[[65197,65198],"mapped",[1585]],[[65199,65200],"mapped",[1586]],[[65201,65204],"mapped",[1587]],[[65205,65208],"mapped",[1588]],[[65209,65212],"mapped",[1589]],[[65213,65216],"mapped",[1590]],[[65217,65220],"mapped",[1591]],[[65221,65224],"mapped",[1592]],[[65225,65228],"mapped",[1593]],[[65229,65232],"mapped",[1594]],[[65233,65236],"mapped",[1601]],[[65237,65240],"mapped",[1602]],[[65241,65244],"mapped",[1603]],[[65245,65248],"mapped",[1604]],[[65249,65252],"mapped",[1605]],[[65253,65256],"mapped",[1606]],[[65257,65260],"mapped",[1607]],[[65261,65262],"mapped",[1608]],[[65263,65264],"mapped",[1609]],[[65265,65268],"mapped",[1610]],[[65269,65270],"mapped",[1604,1570]],[[65271,65272],"mapped",[1604,1571]],[[65273,65274],"mapped",[1604,1573]],[[65275,65276],"mapped",[1604,1575]],[[65277,65278],"disallowed"],[[65279,65279],"ignored"],[[65280,65280],"disallowed"],[[65281,65281],"disallowed_STD3_mapped",[33]],[[65282,65282],"disallowed_STD3_mapped",[34]],[[65283,65283],"disallowed_STD3_mapped",[35]],[[65284,65284],"disallowed_STD3_mapped",[36]],[[65285,65285],"disallowed_STD3_mapped",[37]],[[65286,65286],"disallowed_STD3_mapped",[38]],[[65287,65287],"disallowed_STD3_mapped",[39]],[[65288,65288],"disallowed_STD3_mapped",[40]],[[65289,65289],"disallowed_STD3_mapped",[41]],[[65290,65290],"disallowed_STD3_mapped",[42]],[[65291,65291],"disallowed_STD3_mapped",[43]],[[65292,65292],"disallowed_STD3_mapped",[44]],[[65293,65293],"mapped",[45]],[[65294,65294],"mapped",[46]],[[65295,65295],"disallowed_STD3_mapped",[47]],[[65296,65296],"mapped",[48]],[[65297,65297],"mapped",[49]],[[65298,65298],"mapped",[50]],[[65299,65299],"mapped",[51]],[[65300,65300],"mapped",[52]],[[65301,65301],"mapped",[53]],[[65302,65302],"mapped",[54]],[[65303,65303],"mapped",[55]],[[65304,65304],"mapped",[56]],[[65305,65305],"mapped",[57]],[[65306,65306],"disallowed_STD3_mapped",[58]],[[65307,65307],"disallowed_STD3_mapped",[59]],[[65308,65308],"disallowed_STD3_mapped",[60]],[[65309,65309],"disallowed_STD3_mapped",[61]],[[65310,65310],"disallowed_STD3_mapped",[62]],[[65311,65311],"disallowed_STD3_mapped",[63]],[[65312,65312],"disallowed_STD3_mapped",[64]],[[65313,65313],"mapped",[97]],[[65314,65314],"mapped",[98]],[[65315,65315],"mapped",[99]],[[65316,65316],"mapped",[100]],[[65317,65317],"mapped",[101]],[[65318,65318],"mapped",[102]],[[65319,65319],"mapped",[103]],[[65320,65320],"mapped",[104]],[[65321,65321],"mapped",[105]],[[65322,65322],"mapped",[106]],[[65323,65323],"mapped",[107]],[[65324,65324],"mapped",[108]],[[65325,65325],"mapped",[109]],[[65326,65326],"mapped",[110]],[[65327,65327],"mapped",[111]],[[65328,65328],"mapped",[112]],[[65329,65329],"mapped",[113]],[[65330,65330],"mapped",[114]],[[65331,65331],"mapped",[115]],[[65332,65332],"mapped",[116]],[[65333,65333],"mapped",[117]],[[65334,65334],"mapped",[118]],[[65335,65335],"mapped",[119]],[[65336,65336],"mapped",[120]],[[65337,65337],"mapped",[121]],[[65338,65338],"mapped",[122]],[[65339,65339],"disallowed_STD3_mapped",[91]],[[65340,65340],"disallowed_STD3_mapped",[92]],[[65341,65341],"disallowed_STD3_mapped",[93]],[[65342,65342],"disallowed_STD3_mapped",[94]],[[65343,65343],"disallowed_STD3_mapped",[95]],[[65344,65344],"disallowed_STD3_mapped",[96]],[[65345,65345],"mapped",[97]],[[65346,65346],"mapped",[98]],[[65347,65347],"mapped",[99]],[[65348,65348],"mapped",[100]],[[65349,65349],"mapped",[101]],[[65350,65350],"mapped",[102]],[[65351,65351],"mapped",[103]],[[65352,65352],"mapped",[104]],[[65353,65353],"mapped",[105]],[[65354,65354],"mapped",[106]],[[65355,65355],"mapped",[107]],[[65356,65356],"mapped",[108]],[[65357,65357],"mapped",[109]],[[65358,65358],"mapped",[110]],[[65359,65359],"mapped",[111]],[[65360,65360],"mapped",[112]],[[65361,65361],"mapped",[113]],[[65362,65362],"mapped",[114]],[[65363,65363],"mapped",[115]],[[65364,65364],"mapped",[116]],[[65365,65365],"mapped",[117]],[[65366,65366],"mapped",[118]],[[65367,65367],"mapped",[119]],[[65368,65368],"mapped",[120]],[[65369,65369],"mapped",[121]],[[65370,65370],"mapped",[122]],[[65371,65371],"disallowed_STD3_mapped",[123]],[[65372,65372],"disallowed_STD3_mapped",[124]],[[65373,65373],"disallowed_STD3_mapped",[125]],[[65374,65374],"disallowed_STD3_mapped",[126]],[[65375,65375],"mapped",[10629]],[[65376,65376],"mapped",[10630]],[[65377,65377],"mapped",[46]],[[65378,65378],"mapped",[12300]],[[65379,65379],"mapped",[12301]],[[65380,65380],"mapped",[12289]],[[65381,65381],"mapped",[12539]],[[65382,65382],"mapped",[12530]],[[65383,65383],"mapped",[12449]],[[65384,65384],"mapped",[12451]],[[65385,65385],"mapped",[12453]],[[65386,65386],"mapped",[12455]],[[65387,65387],"mapped",[12457]],[[65388,65388],"mapped",[12515]],[[65389,65389],"mapped",[12517]],[[65390,65390],"mapped",[12519]],[[65391,65391],"mapped",[12483]],[[65392,65392],"mapped",[12540]],[[65393,65393],"mapped",[12450]],[[65394,65394],"mapped",[12452]],[[65395,65395],"mapped",[12454]],[[65396,65396],"mapped",[12456]],[[65397,65397],"mapped",[12458]],[[65398,65398],"mapped",[12459]],[[65399,65399],"mapped",[12461]],[[65400,65400],"mapped",[12463]],[[65401,65401],"mapped",[12465]],[[65402,65402],"mapped",[12467]],[[65403,65403],"mapped",[12469]],[[65404,65404],"mapped",[12471]],[[65405,65405],"mapped",[12473]],[[65406,65406],"mapped",[12475]],[[65407,65407],"mapped",[12477]],[[65408,65408],"mapped",[12479]],[[65409,65409],"mapped",[12481]],[[65410,65410],"mapped",[12484]],[[65411,65411],"mapped",[12486]],[[65412,65412],"mapped",[12488]],[[65413,65413],"mapped",[12490]],[[65414,65414],"mapped",[12491]],[[65415,65415],"mapped",[12492]],[[65416,65416],"mapped",[12493]],[[65417,65417],"mapped",[12494]],[[65418,65418],"mapped",[12495]],[[65419,65419],"mapped",[12498]],[[65420,65420],"mapped",[12501]],[[65421,65421],"mapped",[12504]],[[65422,65422],"mapped",[12507]],[[65423,65423],"mapped",[12510]],[[65424,65424],"mapped",[12511]],[[65425,65425],"mapped",[12512]],[[65426,65426],"mapped",[12513]],[[65427,65427],"mapped",[12514]],[[65428,65428],"mapped",[12516]],[[65429,65429],"mapped",[12518]],[[65430,65430],"mapped",[12520]],[[65431,65431],"mapped",[12521]],[[65432,65432],"mapped",[12522]],[[65433,65433],"mapped",[12523]],[[65434,65434],"mapped",[12524]],[[65435,65435],"mapped",[12525]],[[65436,65436],"mapped",[12527]],[[65437,65437],"mapped",[12531]],[[65438,65438],"mapped",[12441]],[[65439,65439],"mapped",[12442]],[[65440,65440],"disallowed"],[[65441,65441],"mapped",[4352]],[[65442,65442],"mapped",[4353]],[[65443,65443],"mapped",[4522]],[[65444,65444],"mapped",[4354]],[[65445,65445],"mapped",[4524]],[[65446,65446],"mapped",[4525]],[[65447,65447],"mapped",[4355]],[[65448,65448],"mapped",[4356]],[[65449,65449],"mapped",[4357]],[[65450,65450],"mapped",[4528]],[[65451,65451],"mapped",[4529]],[[65452,65452],"mapped",[4530]],[[65453,65453],"mapped",[4531]],[[65454,65454],"mapped",[4532]],[[65455,65455],"mapped",[4533]],[[65456,65456],"mapped",[4378]],[[65457,65457],"mapped",[4358]],[[65458,65458],"mapped",[4359]],[[65459,65459],"mapped",[4360]],[[65460,65460],"mapped",[4385]],[[65461,65461],"mapped",[4361]],[[65462,65462],"mapped",[4362]],[[65463,65463],"mapped",[4363]],[[65464,65464],"mapped",[4364]],[[65465,65465],"mapped",[4365]],[[65466,65466],"mapped",[4366]],[[65467,65467],"mapped",[4367]],[[65468,65468],"mapped",[4368]],[[65469,65469],"mapped",[4369]],[[65470,65470],"mapped",[4370]],[[65471,65473],"disallowed"],[[65474,65474],"mapped",[4449]],[[65475,65475],"mapped",[4450]],[[65476,65476],"mapped",[4451]],[[65477,65477],"mapped",[4452]],[[65478,65478],"mapped",[4453]],[[65479,65479],"mapped",[4454]],[[65480,65481],"disallowed"],[[65482,65482],"mapped",[4455]],[[65483,65483],"mapped",[4456]],[[65484,65484],"mapped",[4457]],[[65485,65485],"mapped",[4458]],[[65486,65486],"mapped",[4459]],[[65487,65487],"mapped",[4460]],[[65488,65489],"disallowed"],[[65490,65490],"mapped",[4461]],[[65491,65491],"mapped",[4462]],[[65492,65492],"mapped",[4463]],[[65493,65493],"mapped",[4464]],[[65494,65494],"mapped",[4465]],[[65495,65495],"mapped",[4466]],[[65496,65497],"disallowed"],[[65498,65498],"mapped",[4467]],[[65499,65499],"mapped",[4468]],[[65500,65500],"mapped",[4469]],[[65501,65503],"disallowed"],[[65504,65504],"mapped",[162]],[[65505,65505],"mapped",[163]],[[65506,65506],"mapped",[172]],[[65507,65507],"disallowed_STD3_mapped",[32,772]],[[65508,65508],"mapped",[166]],[[65509,65509],"mapped",[165]],[[65510,65510],"mapped",[8361]],[[65511,65511],"disallowed"],[[65512,65512],"mapped",[9474]],[[65513,65513],"mapped",[8592]],[[65514,65514],"mapped",[8593]],[[65515,65515],"mapped",[8594]],[[65516,65516],"mapped",[8595]],[[65517,65517],"mapped",[9632]],[[65518,65518],"mapped",[9675]],[[65519,65528],"disallowed"],[[65529,65531],"disallowed"],[[65532,65532],"disallowed"],[[65533,65533],"disallowed"],[[65534,65535],"disallowed"],[[65536,65547],"valid"],[[65548,65548],"disallowed"],[[65549,65574],"valid"],[[65575,65575],"disallowed"],[[65576,65594],"valid"],[[65595,65595],"disallowed"],[[65596,65597],"valid"],[[65598,65598],"disallowed"],[[65599,65613],"valid"],[[65614,65615],"disallowed"],[[65616,65629],"valid"],[[65630,65663],"disallowed"],[[65664,65786],"valid"],[[65787,65791],"disallowed"],[[65792,65794],"valid",[],"NV8"],[[65795,65798],"disallowed"],[[65799,65843],"valid",[],"NV8"],[[65844,65846],"disallowed"],[[65847,65855],"valid",[],"NV8"],[[65856,65930],"valid",[],"NV8"],[[65931,65932],"valid",[],"NV8"],[[65933,65935],"disallowed"],[[65936,65947],"valid",[],"NV8"],[[65948,65951],"disallowed"],[[65952,65952],"valid",[],"NV8"],[[65953,65999],"disallowed"],[[66000,66044],"valid",[],"NV8"],[[66045,66045],"valid"],[[66046,66175],"disallowed"],[[66176,66204],"valid"],[[66205,66207],"disallowed"],[[66208,66256],"valid"],[[66257,66271],"disallowed"],[[66272,66272],"valid"],[[66273,66299],"valid",[],"NV8"],[[66300,66303],"disallowed"],[[66304,66334],"valid"],[[66335,66335],"valid"],[[66336,66339],"valid",[],"NV8"],[[66340,66351],"disallowed"],[[66352,66368],"valid"],[[66369,66369],"valid",[],"NV8"],[[66370,66377],"valid"],[[66378,66378],"valid",[],"NV8"],[[66379,66383],"disallowed"],[[66384,66426],"valid"],[[66427,66431],"disallowed"],[[66432,66461],"valid"],[[66462,66462],"disallowed"],[[66463,66463],"valid",[],"NV8"],[[66464,66499],"valid"],[[66500,66503],"disallowed"],[[66504,66511],"valid"],[[66512,66517],"valid",[],"NV8"],[[66518,66559],"disallowed"],[[66560,66560],"mapped",[66600]],[[66561,66561],"mapped",[66601]],[[66562,66562],"mapped",[66602]],[[66563,66563],"mapped",[66603]],[[66564,66564],"mapped",[66604]],[[66565,66565],"mapped",[66605]],[[66566,66566],"mapped",[66606]],[[66567,66567],"mapped",[66607]],[[66568,66568],"mapped",[66608]],[[66569,66569],"mapped",[66609]],[[66570,66570],"mapped",[66610]],[[66571,66571],"mapped",[66611]],[[66572,66572],"mapped",[66612]],[[66573,66573],"mapped",[66613]],[[66574,66574],"mapped",[66614]],[[66575,66575],"mapped",[66615]],[[66576,66576],"mapped",[66616]],[[66577,66577],"mapped",[66617]],[[66578,66578],"mapped",[66618]],[[66579,66579],"mapped",[66619]],[[66580,66580],"mapped",[66620]],[[66581,66581],"mapped",[66621]],[[66582,66582],"mapped",[66622]],[[66583,66583],"mapped",[66623]],[[66584,66584],"mapped",[66624]],[[66585,66585],"mapped",[66625]],[[66586,66586],"mapped",[66626]],[[66587,66587],"mapped",[66627]],[[66588,66588],"mapped",[66628]],[[66589,66589],"mapped",[66629]],[[66590,66590],"mapped",[66630]],[[66591,66591],"mapped",[66631]],[[66592,66592],"mapped",[66632]],[[66593,66593],"mapped",[66633]],[[66594,66594],"mapped",[66634]],[[66595,66595],"mapped",[66635]],[[66596,66596],"mapped",[66636]],[[66597,66597],"mapped",[66637]],[[66598,66598],"mapped",[66638]],[[66599,66599],"mapped",[66639]],[[66600,66637],"valid"],[[66638,66717],"valid"],[[66718,66719],"disallowed"],[[66720,66729],"valid"],[[66730,66815],"disallowed"],[[66816,66855],"valid"],[[66856,66863],"disallowed"],[[66864,66915],"valid"],[[66916,66926],"disallowed"],[[66927,66927],"valid",[],"NV8"],[[66928,67071],"disallowed"],[[67072,67382],"valid"],[[67383,67391],"disallowed"],[[67392,67413],"valid"],[[67414,67423],"disallowed"],[[67424,67431],"valid"],[[67432,67583],"disallowed"],[[67584,67589],"valid"],[[67590,67591],"disallowed"],[[67592,67592],"valid"],[[67593,67593],"disallowed"],[[67594,67637],"valid"],[[67638,67638],"disallowed"],[[67639,67640],"valid"],[[67641,67643],"disallowed"],[[67644,67644],"valid"],[[67645,67646],"disallowed"],[[67647,67647],"valid"],[[67648,67669],"valid"],[[67670,67670],"disallowed"],[[67671,67679],"valid",[],"NV8"],[[67680,67702],"valid"],[[67703,67711],"valid",[],"NV8"],[[67712,67742],"valid"],[[67743,67750],"disallowed"],[[67751,67759],"valid",[],"NV8"],[[67760,67807],"disallowed"],[[67808,67826],"valid"],[[67827,67827],"disallowed"],[[67828,67829],"valid"],[[67830,67834],"disallowed"],[[67835,67839],"valid",[],"NV8"],[[67840,67861],"valid"],[[67862,67865],"valid",[],"NV8"],[[67866,67867],"valid",[],"NV8"],[[67868,67870],"disallowed"],[[67871,67871],"valid",[],"NV8"],[[67872,67897],"valid"],[[67898,67902],"disallowed"],[[67903,67903],"valid",[],"NV8"],[[67904,67967],"disallowed"],[[67968,68023],"valid"],[[68024,68027],"disallowed"],[[68028,68029],"valid",[],"NV8"],[[68030,68031],"valid"],[[68032,68047],"valid",[],"NV8"],[[68048,68049],"disallowed"],[[68050,68095],"valid",[],"NV8"],[[68096,68099],"valid"],[[68100,68100],"disallowed"],[[68101,68102],"valid"],[[68103,68107],"disallowed"],[[68108,68115],"valid"],[[68116,68116],"disallowed"],[[68117,68119],"valid"],[[68120,68120],"disallowed"],[[68121,68147],"valid"],[[68148,68151],"disallowed"],[[68152,68154],"valid"],[[68155,68158],"disallowed"],[[68159,68159],"valid"],[[68160,68167],"valid",[],"NV8"],[[68168,68175],"disallowed"],[[68176,68184],"valid",[],"NV8"],[[68185,68191],"disallowed"],[[68192,68220],"valid"],[[68221,68223],"valid",[],"NV8"],[[68224,68252],"valid"],[[68253,68255],"valid",[],"NV8"],[[68256,68287],"disallowed"],[[68288,68295],"valid"],[[68296,68296],"valid",[],"NV8"],[[68297,68326],"valid"],[[68327,68330],"disallowed"],[[68331,68342],"valid",[],"NV8"],[[68343,68351],"disallowed"],[[68352,68405],"valid"],[[68406,68408],"disallowed"],[[68409,68415],"valid",[],"NV8"],[[68416,68437],"valid"],[[68438,68439],"disallowed"],[[68440,68447],"valid",[],"NV8"],[[68448,68466],"valid"],[[68467,68471],"disallowed"],[[68472,68479],"valid",[],"NV8"],[[68480,68497],"valid"],[[68498,68504],"disallowed"],[[68505,68508],"valid",[],"NV8"],[[68509,68520],"disallowed"],[[68521,68527],"valid",[],"NV8"],[[68528,68607],"disallowed"],[[68608,68680],"valid"],[[68681,68735],"disallowed"],[[68736,68736],"mapped",[68800]],[[68737,68737],"mapped",[68801]],[[68738,68738],"mapped",[68802]],[[68739,68739],"mapped",[68803]],[[68740,68740],"mapped",[68804]],[[68741,68741],"mapped",[68805]],[[68742,68742],"mapped",[68806]],[[68743,68743],"mapped",[68807]],[[68744,68744],"mapped",[68808]],[[68745,68745],"mapped",[68809]],[[68746,68746],"mapped",[68810]],[[68747,68747],"mapped",[68811]],[[68748,68748],"mapped",[68812]],[[68749,68749],"mapped",[68813]],[[68750,68750],"mapped",[68814]],[[68751,68751],"mapped",[68815]],[[68752,68752],"mapped",[68816]],[[68753,68753],"mapped",[68817]],[[68754,68754],"mapped",[68818]],[[68755,68755],"mapped",[68819]],[[68756,68756],"mapped",[68820]],[[68757,68757],"mapped",[68821]],[[68758,68758],"mapped",[68822]],[[68759,68759],"mapped",[68823]],[[68760,68760],"mapped",[68824]],[[68761,68761],"mapped",[68825]],[[68762,68762],"mapped",[68826]],[[68763,68763],"mapped",[68827]],[[68764,68764],"mapped",[68828]],[[68765,68765],"mapped",[68829]],[[68766,68766],"mapped",[68830]],[[68767,68767],"mapped",[68831]],[[68768,68768],"mapped",[68832]],[[68769,68769],"mapped",[68833]],[[68770,68770],"mapped",[68834]],[[68771,68771],"mapped",[68835]],[[68772,68772],"mapped",[68836]],[[68773,68773],"mapped",[68837]],[[68774,68774],"mapped",[68838]],[[68775,68775],"mapped",[68839]],[[68776,68776],"mapped",[68840]],[[68777,68777],"mapped",[68841]],[[68778,68778],"mapped",[68842]],[[68779,68779],"mapped",[68843]],[[68780,68780],"mapped",[68844]],[[68781,68781],"mapped",[68845]],[[68782,68782],"mapped",[68846]],[[68783,68783],"mapped",[68847]],[[68784,68784],"mapped",[68848]],[[68785,68785],"mapped",[68849]],[[68786,68786],"mapped",[68850]],[[68787,68799],"disallowed"],[[68800,68850],"valid"],[[68851,68857],"disallowed"],[[68858,68863],"valid",[],"NV8"],[[68864,69215],"disallowed"],[[69216,69246],"valid",[],"NV8"],[[69247,69631],"disallowed"],[[69632,69702],"valid"],[[69703,69709],"valid",[],"NV8"],[[69710,69713],"disallowed"],[[69714,69733],"valid",[],"NV8"],[[69734,69743],"valid"],[[69744,69758],"disallowed"],[[69759,69759],"valid"],[[69760,69818],"valid"],[[69819,69820],"valid",[],"NV8"],[[69821,69821],"disallowed"],[[69822,69825],"valid",[],"NV8"],[[69826,69839],"disallowed"],[[69840,69864],"valid"],[[69865,69871],"disallowed"],[[69872,69881],"valid"],[[69882,69887],"disallowed"],[[69888,69940],"valid"],[[69941,69941],"disallowed"],[[69942,69951],"valid"],[[69952,69955],"valid",[],"NV8"],[[69956,69967],"disallowed"],[[69968,70003],"valid"],[[70004,70005],"valid",[],"NV8"],[[70006,70006],"valid"],[[70007,70015],"disallowed"],[[70016,70084],"valid"],[[70085,70088],"valid",[],"NV8"],[[70089,70089],"valid",[],"NV8"],[[70090,70092],"valid"],[[70093,70093],"valid",[],"NV8"],[[70094,70095],"disallowed"],[[70096,70105],"valid"],[[70106,70106],"valid"],[[70107,70107],"valid",[],"NV8"],[[70108,70108],"valid"],[[70109,70111],"valid",[],"NV8"],[[70112,70112],"disallowed"],[[70113,70132],"valid",[],"NV8"],[[70133,70143],"disallowed"],[[70144,70161],"valid"],[[70162,70162],"disallowed"],[[70163,70199],"valid"],[[70200,70205],"valid",[],"NV8"],[[70206,70271],"disallowed"],[[70272,70278],"valid"],[[70279,70279],"disallowed"],[[70280,70280],"valid"],[[70281,70281],"disallowed"],[[70282,70285],"valid"],[[70286,70286],"disallowed"],[[70287,70301],"valid"],[[70302,70302],"disallowed"],[[70303,70312],"valid"],[[70313,70313],"valid",[],"NV8"],[[70314,70319],"disallowed"],[[70320,70378],"valid"],[[70379,70383],"disallowed"],[[70384,70393],"valid"],[[70394,70399],"disallowed"],[[70400,70400],"valid"],[[70401,70403],"valid"],[[70404,70404],"disallowed"],[[70405,70412],"valid"],[[70413,70414],"disallowed"],[[70415,70416],"valid"],[[70417,70418],"disallowed"],[[70419,70440],"valid"],[[70441,70441],"disallowed"],[[70442,70448],"valid"],[[70449,70449],"disallowed"],[[70450,70451],"valid"],[[70452,70452],"disallowed"],[[70453,70457],"valid"],[[70458,70459],"disallowed"],[[70460,70468],"valid"],[[70469,70470],"disallowed"],[[70471,70472],"valid"],[[70473,70474],"disallowed"],[[70475,70477],"valid"],[[70478,70479],"disallowed"],[[70480,70480],"valid"],[[70481,70486],"disallowed"],[[70487,70487],"valid"],[[70488,70492],"disallowed"],[[70493,70499],"valid"],[[70500,70501],"disallowed"],[[70502,70508],"valid"],[[70509,70511],"disallowed"],[[70512,70516],"valid"],[[70517,70783],"disallowed"],[[70784,70853],"valid"],[[70854,70854],"valid",[],"NV8"],[[70855,70855],"valid"],[[70856,70863],"disallowed"],[[70864,70873],"valid"],[[70874,71039],"disallowed"],[[71040,71093],"valid"],[[71094,71095],"disallowed"],[[71096,71104],"valid"],[[71105,71113],"valid",[],"NV8"],[[71114,71127],"valid",[],"NV8"],[[71128,71133],"valid"],[[71134,71167],"disallowed"],[[71168,71232],"valid"],[[71233,71235],"valid",[],"NV8"],[[71236,71236],"valid"],[[71237,71247],"disallowed"],[[71248,71257],"valid"],[[71258,71295],"disallowed"],[[71296,71351],"valid"],[[71352,71359],"disallowed"],[[71360,71369],"valid"],[[71370,71423],"disallowed"],[[71424,71449],"valid"],[[71450,71452],"disallowed"],[[71453,71467],"valid"],[[71468,71471],"disallowed"],[[71472,71481],"valid"],[[71482,71487],"valid",[],"NV8"],[[71488,71839],"disallowed"],[[71840,71840],"mapped",[71872]],[[71841,71841],"mapped",[71873]],[[71842,71842],"mapped",[71874]],[[71843,71843],"mapped",[71875]],[[71844,71844],"mapped",[71876]],[[71845,71845],"mapped",[71877]],[[71846,71846],"mapped",[71878]],[[71847,71847],"mapped",[71879]],[[71848,71848],"mapped",[71880]],[[71849,71849],"mapped",[71881]],[[71850,71850],"mapped",[71882]],[[71851,71851],"mapped",[71883]],[[71852,71852],"mapped",[71884]],[[71853,71853],"mapped",[71885]],[[71854,71854],"mapped",[71886]],[[71855,71855],"mapped",[71887]],[[71856,71856],"mapped",[71888]],[[71857,71857],"mapped",[71889]],[[71858,71858],"mapped",[71890]],[[71859,71859],"mapped",[71891]],[[71860,71860],"mapped",[71892]],[[71861,71861],"mapped",[71893]],[[71862,71862],"mapped",[71894]],[[71863,71863],"mapped",[71895]],[[71864,71864],"mapped",[71896]],[[71865,71865],"mapped",[71897]],[[71866,71866],"mapped",[71898]],[[71867,71867],"mapped",[71899]],[[71868,71868],"mapped",[71900]],[[71869,71869],"mapped",[71901]],[[71870,71870],"mapped",[71902]],[[71871,71871],"mapped",[71903]],[[71872,71913],"valid"],[[71914,71922],"valid",[],"NV8"],[[71923,71934],"disallowed"],[[71935,71935],"valid"],[[71936,72383],"disallowed"],[[72384,72440],"valid"],[[72441,73727],"disallowed"],[[73728,74606],"valid"],[[74607,74648],"valid"],[[74649,74649],"valid"],[[74650,74751],"disallowed"],[[74752,74850],"valid",[],"NV8"],[[74851,74862],"valid",[],"NV8"],[[74863,74863],"disallowed"],[[74864,74867],"valid",[],"NV8"],[[74868,74868],"valid",[],"NV8"],[[74869,74879],"disallowed"],[[74880,75075],"valid"],[[75076,77823],"disallowed"],[[77824,78894],"valid"],[[78895,82943],"disallowed"],[[82944,83526],"valid"],[[83527,92159],"disallowed"],[[92160,92728],"valid"],[[92729,92735],"disallowed"],[[92736,92766],"valid"],[[92767,92767],"disallowed"],[[92768,92777],"valid"],[[92778,92781],"disallowed"],[[92782,92783],"valid",[],"NV8"],[[92784,92879],"disallowed"],[[92880,92909],"valid"],[[92910,92911],"disallowed"],[[92912,92916],"valid"],[[92917,92917],"valid",[],"NV8"],[[92918,92927],"disallowed"],[[92928,92982],"valid"],[[92983,92991],"valid",[],"NV8"],[[92992,92995],"valid"],[[92996,92997],"valid",[],"NV8"],[[92998,93007],"disallowed"],[[93008,93017],"valid"],[[93018,93018],"disallowed"],[[93019,93025],"valid",[],"NV8"],[[93026,93026],"disallowed"],[[93027,93047],"valid"],[[93048,93052],"disallowed"],[[93053,93071],"valid"],[[93072,93951],"disallowed"],[[93952,94020],"valid"],[[94021,94031],"disallowed"],[[94032,94078],"valid"],[[94079,94094],"disallowed"],[[94095,94111],"valid"],[[94112,110591],"disallowed"],[[110592,110593],"valid"],[[110594,113663],"disallowed"],[[113664,113770],"valid"],[[113771,113775],"disallowed"],[[113776,113788],"valid"],[[113789,113791],"disallowed"],[[113792,113800],"valid"],[[113801,113807],"disallowed"],[[113808,113817],"valid"],[[113818,113819],"disallowed"],[[113820,113820],"valid",[],"NV8"],[[113821,113822],"valid"],[[113823,113823],"valid",[],"NV8"],[[113824,113827],"ignored"],[[113828,118783],"disallowed"],[[118784,119029],"valid",[],"NV8"],[[119030,119039],"disallowed"],[[119040,119078],"valid",[],"NV8"],[[119079,119080],"disallowed"],[[119081,119081],"valid",[],"NV8"],[[119082,119133],"valid",[],"NV8"],[[119134,119134],"mapped",[119127,119141]],[[119135,119135],"mapped",[119128,119141]],[[119136,119136],"mapped",[119128,119141,119150]],[[119137,119137],"mapped",[119128,119141,119151]],[[119138,119138],"mapped",[119128,119141,119152]],[[119139,119139],"mapped",[119128,119141,119153]],[[119140,119140],"mapped",[119128,119141,119154]],[[119141,119154],"valid",[],"NV8"],[[119155,119162],"disallowed"],[[119163,119226],"valid",[],"NV8"],[[119227,119227],"mapped",[119225,119141]],[[119228,119228],"mapped",[119226,119141]],[[119229,119229],"mapped",[119225,119141,119150]],[[119230,119230],"mapped",[119226,119141,119150]],[[119231,119231],"mapped",[119225,119141,119151]],[[119232,119232],"mapped",[119226,119141,119151]],[[119233,119261],"valid",[],"NV8"],[[119262,119272],"valid",[],"NV8"],[[119273,119295],"disallowed"],[[119296,119365],"valid",[],"NV8"],[[119366,119551],"disallowed"],[[119552,119638],"valid",[],"NV8"],[[119639,119647],"disallowed"],[[119648,119665],"valid",[],"NV8"],[[119666,119807],"disallowed"],[[119808,119808],"mapped",[97]],[[119809,119809],"mapped",[98]],[[119810,119810],"mapped",[99]],[[119811,119811],"mapped",[100]],[[119812,119812],"mapped",[101]],[[119813,119813],"mapped",[102]],[[119814,119814],"mapped",[103]],[[119815,119815],"mapped",[104]],[[119816,119816],"mapped",[105]],[[119817,119817],"mapped",[106]],[[119818,119818],"mapped",[107]],[[119819,119819],"mapped",[108]],[[119820,119820],"mapped",[109]],[[119821,119821],"mapped",[110]],[[119822,119822],"mapped",[111]],[[119823,119823],"mapped",[112]],[[119824,119824],"mapped",[113]],[[119825,119825],"mapped",[114]],[[119826,119826],"mapped",[115]],[[119827,119827],"mapped",[116]],[[119828,119828],"mapped",[117]],[[119829,119829],"mapped",[118]],[[119830,119830],"mapped",[119]],[[119831,119831],"mapped",[120]],[[119832,119832],"mapped",[121]],[[119833,119833],"mapped",[122]],[[119834,119834],"mapped",[97]],[[119835,119835],"mapped",[98]],[[119836,119836],"mapped",[99]],[[119837,119837],"mapped",[100]],[[119838,119838],"mapped",[101]],[[119839,119839],"mapped",[102]],[[119840,119840],"mapped",[103]],[[119841,119841],"mapped",[104]],[[119842,119842],"mapped",[105]],[[119843,119843],"mapped",[106]],[[119844,119844],"mapped",[107]],[[119845,119845],"mapped",[108]],[[119846,119846],"mapped",[109]],[[119847,119847],"mapped",[110]],[[119848,119848],"mapped",[111]],[[119849,119849],"mapped",[112]],[[119850,119850],"mapped",[113]],[[119851,119851],"mapped",[114]],[[119852,119852],"mapped",[115]],[[119853,119853],"mapped",[116]],[[119854,119854],"mapped",[117]],[[119855,119855],"mapped",[118]],[[119856,119856],"mapped",[119]],[[119857,119857],"mapped",[120]],[[119858,119858],"mapped",[121]],[[119859,119859],"mapped",[122]],[[119860,119860],"mapped",[97]],[[119861,119861],"mapped",[98]],[[119862,119862],"mapped",[99]],[[119863,119863],"mapped",[100]],[[119864,119864],"mapped",[101]],[[119865,119865],"mapped",[102]],[[119866,119866],"mapped",[103]],[[119867,119867],"mapped",[104]],[[119868,119868],"mapped",[105]],[[119869,119869],"mapped",[106]],[[119870,119870],"mapped",[107]],[[119871,119871],"mapped",[108]],[[119872,119872],"mapped",[109]],[[119873,119873],"mapped",[110]],[[119874,119874],"mapped",[111]],[[119875,119875],"mapped",[112]],[[119876,119876],"mapped",[113]],[[119877,119877],"mapped",[114]],[[119878,119878],"mapped",[115]],[[119879,119879],"mapped",[116]],[[119880,119880],"mapped",[117]],[[119881,119881],"mapped",[118]],[[119882,119882],"mapped",[119]],[[119883,119883],"mapped",[120]],[[119884,119884],"mapped",[121]],[[119885,119885],"mapped",[122]],[[119886,119886],"mapped",[97]],[[119887,119887],"mapped",[98]],[[119888,119888],"mapped",[99]],[[119889,119889],"mapped",[100]],[[119890,119890],"mapped",[101]],[[119891,119891],"mapped",[102]],[[119892,119892],"mapped",[103]],[[119893,119893],"disallowed"],[[119894,119894],"mapped",[105]],[[119895,119895],"mapped",[106]],[[119896,119896],"mapped",[107]],[[119897,119897],"mapped",[108]],[[119898,119898],"mapped",[109]],[[119899,119899],"mapped",[110]],[[119900,119900],"mapped",[111]],[[119901,119901],"mapped",[112]],[[119902,119902],"mapped",[113]],[[119903,119903],"mapped",[114]],[[119904,119904],"mapped",[115]],[[119905,119905],"mapped",[116]],[[119906,119906],"mapped",[117]],[[119907,119907],"mapped",[118]],[[119908,119908],"mapped",[119]],[[119909,119909],"mapped",[120]],[[119910,119910],"mapped",[121]],[[119911,119911],"mapped",[122]],[[119912,119912],"mapped",[97]],[[119913,119913],"mapped",[98]],[[119914,119914],"mapped",[99]],[[119915,119915],"mapped",[100]],[[119916,119916],"mapped",[101]],[[119917,119917],"mapped",[102]],[[119918,119918],"mapped",[103]],[[119919,119919],"mapped",[104]],[[119920,119920],"mapped",[105]],[[119921,119921],"mapped",[106]],[[119922,119922],"mapped",[107]],[[119923,119923],"mapped",[108]],[[119924,119924],"mapped",[109]],[[119925,119925],"mapped",[110]],[[119926,119926],"mapped",[111]],[[119927,119927],"mapped",[112]],[[119928,119928],"mapped",[113]],[[119929,119929],"mapped",[114]],[[119930,119930],"mapped",[115]],[[119931,119931],"mapped",[116]],[[119932,119932],"mapped",[117]],[[119933,119933],"mapped",[118]],[[119934,119934],"mapped",[119]],[[119935,119935],"mapped",[120]],[[119936,119936],"mapped",[121]],[[119937,119937],"mapped",[122]],[[119938,119938],"mapped",[97]],[[119939,119939],"mapped",[98]],[[119940,119940],"mapped",[99]],[[119941,119941],"mapped",[100]],[[119942,119942],"mapped",[101]],[[119943,119943],"mapped",[102]],[[119944,119944],"mapped",[103]],[[119945,119945],"mapped",[104]],[[119946,119946],"mapped",[105]],[[119947,119947],"mapped",[106]],[[119948,119948],"mapped",[107]],[[119949,119949],"mapped",[108]],[[119950,119950],"mapped",[109]],[[119951,119951],"mapped",[110]],[[119952,119952],"mapped",[111]],[[119953,119953],"mapped",[112]],[[119954,119954],"mapped",[113]],[[119955,119955],"mapped",[114]],[[119956,119956],"mapped",[115]],[[119957,119957],"mapped",[116]],[[119958,119958],"mapped",[117]],[[119959,119959],"mapped",[118]],[[119960,119960],"mapped",[119]],[[119961,119961],"mapped",[120]],[[119962,119962],"mapped",[121]],[[119963,119963],"mapped",[122]],[[119964,119964],"mapped",[97]],[[119965,119965],"disallowed"],[[119966,119966],"mapped",[99]],[[119967,119967],"mapped",[100]],[[119968,119969],"disallowed"],[[119970,119970],"mapped",[103]],[[119971,119972],"disallowed"],[[119973,119973],"mapped",[106]],[[119974,119974],"mapped",[107]],[[119975,119976],"disallowed"],[[119977,119977],"mapped",[110]],[[119978,119978],"mapped",[111]],[[119979,119979],"mapped",[112]],[[119980,119980],"mapped",[113]],[[119981,119981],"disallowed"],[[119982,119982],"mapped",[115]],[[119983,119983],"mapped",[116]],[[119984,119984],"mapped",[117]],[[119985,119985],"mapped",[118]],[[119986,119986],"mapped",[119]],[[119987,119987],"mapped",[120]],[[119988,119988],"mapped",[121]],[[119989,119989],"mapped",[122]],[[119990,119990],"mapped",[97]],[[119991,119991],"mapped",[98]],[[119992,119992],"mapped",[99]],[[119993,119993],"mapped",[100]],[[119994,119994],"disallowed"],[[119995,119995],"mapped",[102]],[[119996,119996],"disallowed"],[[119997,119997],"mapped",[104]],[[119998,119998],"mapped",[105]],[[119999,119999],"mapped",[106]],[[120000,120000],"mapped",[107]],[[120001,120001],"mapped",[108]],[[120002,120002],"mapped",[109]],[[120003,120003],"mapped",[110]],[[120004,120004],"disallowed"],[[120005,120005],"mapped",[112]],[[120006,120006],"mapped",[113]],[[120007,120007],"mapped",[114]],[[120008,120008],"mapped",[115]],[[120009,120009],"mapped",[116]],[[120010,120010],"mapped",[117]],[[120011,120011],"mapped",[118]],[[120012,120012],"mapped",[119]],[[120013,120013],"mapped",[120]],[[120014,120014],"mapped",[121]],[[120015,120015],"mapped",[122]],[[120016,120016],"mapped",[97]],[[120017,120017],"mapped",[98]],[[120018,120018],"mapped",[99]],[[120019,120019],"mapped",[100]],[[120020,120020],"mapped",[101]],[[120021,120021],"mapped",[102]],[[120022,120022],"mapped",[103]],[[120023,120023],"mapped",[104]],[[120024,120024],"mapped",[105]],[[120025,120025],"mapped",[106]],[[120026,120026],"mapped",[107]],[[120027,120027],"mapped",[108]],[[120028,120028],"mapped",[109]],[[120029,120029],"mapped",[110]],[[120030,120030],"mapped",[111]],[[120031,120031],"mapped",[112]],[[120032,120032],"mapped",[113]],[[120033,120033],"mapped",[114]],[[120034,120034],"mapped",[115]],[[120035,120035],"mapped",[116]],[[120036,120036],"mapped",[117]],[[120037,120037],"mapped",[118]],[[120038,120038],"mapped",[119]],[[120039,120039],"mapped",[120]],[[120040,120040],"mapped",[121]],[[120041,120041],"mapped",[122]],[[120042,120042],"mapped",[97]],[[120043,120043],"mapped",[98]],[[120044,120044],"mapped",[99]],[[120045,120045],"mapped",[100]],[[120046,120046],"mapped",[101]],[[120047,120047],"mapped",[102]],[[120048,120048],"mapped",[103]],[[120049,120049],"mapped",[104]],[[120050,120050],"mapped",[105]],[[120051,120051],"mapped",[106]],[[120052,120052],"mapped",[107]],[[120053,120053],"mapped",[108]],[[120054,120054],"mapped",[109]],[[120055,120055],"mapped",[110]],[[120056,120056],"mapped",[111]],[[120057,120057],"mapped",[112]],[[120058,120058],"mapped",[113]],[[120059,120059],"mapped",[114]],[[120060,120060],"mapped",[115]],[[120061,120061],"mapped",[116]],[[120062,120062],"mapped",[117]],[[120063,120063],"mapped",[118]],[[120064,120064],"mapped",[119]],[[120065,120065],"mapped",[120]],[[120066,120066],"mapped",[121]],[[120067,120067],"mapped",[122]],[[120068,120068],"mapped",[97]],[[120069,120069],"mapped",[98]],[[120070,120070],"disallowed"],[[120071,120071],"mapped",[100]],[[120072,120072],"mapped",[101]],[[120073,120073],"mapped",[102]],[[120074,120074],"mapped",[103]],[[120075,120076],"disallowed"],[[120077,120077],"mapped",[106]],[[120078,120078],"mapped",[107]],[[120079,120079],"mapped",[108]],[[120080,120080],"mapped",[109]],[[120081,120081],"mapped",[110]],[[120082,120082],"mapped",[111]],[[120083,120083],"mapped",[112]],[[120084,120084],"mapped",[113]],[[120085,120085],"disallowed"],[[120086,120086],"mapped",[115]],[[120087,120087],"mapped",[116]],[[120088,120088],"mapped",[117]],[[120089,120089],"mapped",[118]],[[120090,120090],"mapped",[119]],[[120091,120091],"mapped",[120]],[[120092,120092],"mapped",[121]],[[120093,120093],"disallowed"],[[120094,120094],"mapped",[97]],[[120095,120095],"mapped",[98]],[[120096,120096],"mapped",[99]],[[120097,120097],"mapped",[100]],[[120098,120098],"mapped",[101]],[[120099,120099],"mapped",[102]],[[120100,120100],"mapped",[103]],[[120101,120101],"mapped",[104]],[[120102,120102],"mapped",[105]],[[120103,120103],"mapped",[106]],[[120104,120104],"mapped",[107]],[[120105,120105],"mapped",[108]],[[120106,120106],"mapped",[109]],[[120107,120107],"mapped",[110]],[[120108,120108],"mapped",[111]],[[120109,120109],"mapped",[112]],[[120110,120110],"mapped",[113]],[[120111,120111],"mapped",[114]],[[120112,120112],"mapped",[115]],[[120113,120113],"mapped",[116]],[[120114,120114],"mapped",[117]],[[120115,120115],"mapped",[118]],[[120116,120116],"mapped",[119]],[[120117,120117],"mapped",[120]],[[120118,120118],"mapped",[121]],[[120119,120119],"mapped",[122]],[[120120,120120],"mapped",[97]],[[120121,120121],"mapped",[98]],[[120122,120122],"disallowed"],[[120123,120123],"mapped",[100]],[[120124,120124],"mapped",[101]],[[120125,120125],"mapped",[102]],[[120126,120126],"mapped",[103]],[[120127,120127],"disallowed"],[[120128,120128],"mapped",[105]],[[120129,120129],"mapped",[106]],[[120130,120130],"mapped",[107]],[[120131,120131],"mapped",[108]],[[120132,120132],"mapped",[109]],[[120133,120133],"disallowed"],[[120134,120134],"mapped",[111]],[[120135,120137],"disallowed"],[[120138,120138],"mapped",[115]],[[120139,120139],"mapped",[116]],[[120140,120140],"mapped",[117]],[[120141,120141],"mapped",[118]],[[120142,120142],"mapped",[119]],[[120143,120143],"mapped",[120]],[[120144,120144],"mapped",[121]],[[120145,120145],"disallowed"],[[120146,120146],"mapped",[97]],[[120147,120147],"mapped",[98]],[[120148,120148],"mapped",[99]],[[120149,120149],"mapped",[100]],[[120150,120150],"mapped",[101]],[[120151,120151],"mapped",[102]],[[120152,120152],"mapped",[103]],[[120153,120153],"mapped",[104]],[[120154,120154],"mapped",[105]],[[120155,120155],"mapped",[106]],[[120156,120156],"mapped",[107]],[[120157,120157],"mapped",[108]],[[120158,120158],"mapped",[109]],[[120159,120159],"mapped",[110]],[[120160,120160],"mapped",[111]],[[120161,120161],"mapped",[112]],[[120162,120162],"mapped",[113]],[[120163,120163],"mapped",[114]],[[120164,120164],"mapped",[115]],[[120165,120165],"mapped",[116]],[[120166,120166],"mapped",[117]],[[120167,120167],"mapped",[118]],[[120168,120168],"mapped",[119]],[[120169,120169],"mapped",[120]],[[120170,120170],"mapped",[121]],[[120171,120171],"mapped",[122]],[[120172,120172],"mapped",[97]],[[120173,120173],"mapped",[98]],[[120174,120174],"mapped",[99]],[[120175,120175],"mapped",[100]],[[120176,120176],"mapped",[101]],[[120177,120177],"mapped",[102]],[[120178,120178],"mapped",[103]],[[120179,120179],"mapped",[104]],[[120180,120180],"mapped",[105]],[[120181,120181],"mapped",[106]],[[120182,120182],"mapped",[107]],[[120183,120183],"mapped",[108]],[[120184,120184],"mapped",[109]],[[120185,120185],"mapped",[110]],[[120186,120186],"mapped",[111]],[[120187,120187],"mapped",[112]],[[120188,120188],"mapped",[113]],[[120189,120189],"mapped",[114]],[[120190,120190],"mapped",[115]],[[120191,120191],"mapped",[116]],[[120192,120192],"mapped",[117]],[[120193,120193],"mapped",[118]],[[120194,120194],"mapped",[119]],[[120195,120195],"mapped",[120]],[[120196,120196],"mapped",[121]],[[120197,120197],"mapped",[122]],[[120198,120198],"mapped",[97]],[[120199,120199],"mapped",[98]],[[120200,120200],"mapped",[99]],[[120201,120201],"mapped",[100]],[[120202,120202],"mapped",[101]],[[120203,120203],"mapped",[102]],[[120204,120204],"mapped",[103]],[[120205,120205],"mapped",[104]],[[120206,120206],"mapped",[105]],[[120207,120207],"mapped",[106]],[[120208,120208],"mapped",[107]],[[120209,120209],"mapped",[108]],[[120210,120210],"mapped",[109]],[[120211,120211],"mapped",[110]],[[120212,120212],"mapped",[111]],[[120213,120213],"mapped",[112]],[[120214,120214],"mapped",[113]],[[120215,120215],"mapped",[114]],[[120216,120216],"mapped",[115]],[[120217,120217],"mapped",[116]],[[120218,120218],"mapped",[117]],[[120219,120219],"mapped",[118]],[[120220,120220],"mapped",[119]],[[120221,120221],"mapped",[120]],[[120222,120222],"mapped",[121]],[[120223,120223],"mapped",[122]],[[120224,120224],"mapped",[97]],[[120225,120225],"mapped",[98]],[[120226,120226],"mapped",[99]],[[120227,120227],"mapped",[100]],[[120228,120228],"mapped",[101]],[[120229,120229],"mapped",[102]],[[120230,120230],"mapped",[103]],[[120231,120231],"mapped",[104]],[[120232,120232],"mapped",[105]],[[120233,120233],"mapped",[106]],[[120234,120234],"mapped",[107]],[[120235,120235],"mapped",[108]],[[120236,120236],"mapped",[109]],[[120237,120237],"mapped",[110]],[[120238,120238],"mapped",[111]],[[120239,120239],"mapped",[112]],[[120240,120240],"mapped",[113]],[[120241,120241],"mapped",[114]],[[120242,120242],"mapped",[115]],[[120243,120243],"mapped",[116]],[[120244,120244],"mapped",[117]],[[120245,120245],"mapped",[118]],[[120246,120246],"mapped",[119]],[[120247,120247],"mapped",[120]],[[120248,120248],"mapped",[121]],[[120249,120249],"mapped",[122]],[[120250,120250],"mapped",[97]],[[120251,120251],"mapped",[98]],[[120252,120252],"mapped",[99]],[[120253,120253],"mapped",[100]],[[120254,120254],"mapped",[101]],[[120255,120255],"mapped",[102]],[[120256,120256],"mapped",[103]],[[120257,120257],"mapped",[104]],[[120258,120258],"mapped",[105]],[[120259,120259],"mapped",[106]],[[120260,120260],"mapped",[107]],[[120261,120261],"mapped",[108]],[[120262,120262],"mapped",[109]],[[120263,120263],"mapped",[110]],[[120264,120264],"mapped",[111]],[[120265,120265],"mapped",[112]],[[120266,120266],"mapped",[113]],[[120267,120267],"mapped",[114]],[[120268,120268],"mapped",[115]],[[120269,120269],"mapped",[116]],[[120270,120270],"mapped",[117]],[[120271,120271],"mapped",[118]],[[120272,120272],"mapped",[119]],[[120273,120273],"mapped",[120]],[[120274,120274],"mapped",[121]],[[120275,120275],"mapped",[122]],[[120276,120276],"mapped",[97]],[[120277,120277],"mapped",[98]],[[120278,120278],"mapped",[99]],[[120279,120279],"mapped",[100]],[[120280,120280],"mapped",[101]],[[120281,120281],"mapped",[102]],[[120282,120282],"mapped",[103]],[[120283,120283],"mapped",[104]],[[120284,120284],"mapped",[105]],[[120285,120285],"mapped",[106]],[[120286,120286],"mapped",[107]],[[120287,120287],"mapped",[108]],[[120288,120288],"mapped",[109]],[[120289,120289],"mapped",[110]],[[120290,120290],"mapped",[111]],[[120291,120291],"mapped",[112]],[[120292,120292],"mapped",[113]],[[120293,120293],"mapped",[114]],[[120294,120294],"mapped",[115]],[[120295,120295],"mapped",[116]],[[120296,120296],"mapped",[117]],[[120297,120297],"mapped",[118]],[[120298,120298],"mapped",[119]],[[120299,120299],"mapped",[120]],[[120300,120300],"mapped",[121]],[[120301,120301],"mapped",[122]],[[120302,120302],"mapped",[97]],[[120303,120303],"mapped",[98]],[[120304,120304],"mapped",[99]],[[120305,120305],"mapped",[100]],[[120306,120306],"mapped",[101]],[[120307,120307],"mapped",[102]],[[120308,120308],"mapped",[103]],[[120309,120309],"mapped",[104]],[[120310,120310],"mapped",[105]],[[120311,120311],"mapped",[106]],[[120312,120312],"mapped",[107]],[[120313,120313],"mapped",[108]],[[120314,120314],"mapped",[109]],[[120315,120315],"mapped",[110]],[[120316,120316],"mapped",[111]],[[120317,120317],"mapped",[112]],[[120318,120318],"mapped",[113]],[[120319,120319],"mapped",[114]],[[120320,120320],"mapped",[115]],[[120321,120321],"mapped",[116]],[[120322,120322],"mapped",[117]],[[120323,120323],"mapped",[118]],[[120324,120324],"mapped",[119]],[[120325,120325],"mapped",[120]],[[120326,120326],"mapped",[121]],[[120327,120327],"mapped",[122]],[[120328,120328],"mapped",[97]],[[120329,120329],"mapped",[98]],[[120330,120330],"mapped",[99]],[[120331,120331],"mapped",[100]],[[120332,120332],"mapped",[101]],[[120333,120333],"mapped",[102]],[[120334,120334],"mapped",[103]],[[120335,120335],"mapped",[104]],[[120336,120336],"mapped",[105]],[[120337,120337],"mapped",[106]],[[120338,120338],"mapped",[107]],[[120339,120339],"mapped",[108]],[[120340,120340],"mapped",[109]],[[120341,120341],"mapped",[110]],[[120342,120342],"mapped",[111]],[[120343,120343],"mapped",[112]],[[120344,120344],"mapped",[113]],[[120345,120345],"mapped",[114]],[[120346,120346],"mapped",[115]],[[120347,120347],"mapped",[116]],[[120348,120348],"mapped",[117]],[[120349,120349],"mapped",[118]],[[120350,120350],"mapped",[119]],[[120351,120351],"mapped",[120]],[[120352,120352],"mapped",[121]],[[120353,120353],"mapped",[122]],[[120354,120354],"mapped",[97]],[[120355,120355],"mapped",[98]],[[120356,120356],"mapped",[99]],[[120357,120357],"mapped",[100]],[[120358,120358],"mapped",[101]],[[120359,120359],"mapped",[102]],[[120360,120360],"mapped",[103]],[[120361,120361],"mapped",[104]],[[120362,120362],"mapped",[105]],[[120363,120363],"mapped",[106]],[[120364,120364],"mapped",[107]],[[120365,120365],"mapped",[108]],[[120366,120366],"mapped",[109]],[[120367,120367],"mapped",[110]],[[120368,120368],"mapped",[111]],[[120369,120369],"mapped",[112]],[[120370,120370],"mapped",[113]],[[120371,120371],"mapped",[114]],[[120372,120372],"mapped",[115]],[[120373,120373],"mapped",[116]],[[120374,120374],"mapped",[117]],[[120375,120375],"mapped",[118]],[[120376,120376],"mapped",[119]],[[120377,120377],"mapped",[120]],[[120378,120378],"mapped",[121]],[[120379,120379],"mapped",[122]],[[120380,120380],"mapped",[97]],[[120381,120381],"mapped",[98]],[[120382,120382],"mapped",[99]],[[120383,120383],"mapped",[100]],[[120384,120384],"mapped",[101]],[[120385,120385],"mapped",[102]],[[120386,120386],"mapped",[103]],[[120387,120387],"mapped",[104]],[[120388,120388],"mapped",[105]],[[120389,120389],"mapped",[106]],[[120390,120390],"mapped",[107]],[[120391,120391],"mapped",[108]],[[120392,120392],"mapped",[109]],[[120393,120393],"mapped",[110]],[[120394,120394],"mapped",[111]],[[120395,120395],"mapped",[112]],[[120396,120396],"mapped",[113]],[[120397,120397],"mapped",[114]],[[120398,120398],"mapped",[115]],[[120399,120399],"mapped",[116]],[[120400,120400],"mapped",[117]],[[120401,120401],"mapped",[118]],[[120402,120402],"mapped",[119]],[[120403,120403],"mapped",[120]],[[120404,120404],"mapped",[121]],[[120405,120405],"mapped",[122]],[[120406,120406],"mapped",[97]],[[120407,120407],"mapped",[98]],[[120408,120408],"mapped",[99]],[[120409,120409],"mapped",[100]],[[120410,120410],"mapped",[101]],[[120411,120411],"mapped",[102]],[[120412,120412],"mapped",[103]],[[120413,120413],"mapped",[104]],[[120414,120414],"mapped",[105]],[[120415,120415],"mapped",[106]],[[120416,120416],"mapped",[107]],[[120417,120417],"mapped",[108]],[[120418,120418],"mapped",[109]],[[120419,120419],"mapped",[110]],[[120420,120420],"mapped",[111]],[[120421,120421],"mapped",[112]],[[120422,120422],"mapped",[113]],[[120423,120423],"mapped",[114]],[[120424,120424],"mapped",[115]],[[120425,120425],"mapped",[116]],[[120426,120426],"mapped",[117]],[[120427,120427],"mapped",[118]],[[120428,120428],"mapped",[119]],[[120429,120429],"mapped",[120]],[[120430,120430],"mapped",[121]],[[120431,120431],"mapped",[122]],[[120432,120432],"mapped",[97]],[[120433,120433],"mapped",[98]],[[120434,120434],"mapped",[99]],[[120435,120435],"mapped",[100]],[[120436,120436],"mapped",[101]],[[120437,120437],"mapped",[102]],[[120438,120438],"mapped",[103]],[[120439,120439],"mapped",[104]],[[120440,120440],"mapped",[105]],[[120441,120441],"mapped",[106]],[[120442,120442],"mapped",[107]],[[120443,120443],"mapped",[108]],[[120444,120444],"mapped",[109]],[[120445,120445],"mapped",[110]],[[120446,120446],"mapped",[111]],[[120447,120447],"mapped",[112]],[[120448,120448],"mapped",[113]],[[120449,120449],"mapped",[114]],[[120450,120450],"mapped",[115]],[[120451,120451],"mapped",[116]],[[120452,120452],"mapped",[117]],[[120453,120453],"mapped",[118]],[[120454,120454],"mapped",[119]],[[120455,120455],"mapped",[120]],[[120456,120456],"mapped",[121]],[[120457,120457],"mapped",[122]],[[120458,120458],"mapped",[97]],[[120459,120459],"mapped",[98]],[[120460,120460],"mapped",[99]],[[120461,120461],"mapped",[100]],[[120462,120462],"mapped",[101]],[[120463,120463],"mapped",[102]],[[120464,120464],"mapped",[103]],[[120465,120465],"mapped",[104]],[[120466,120466],"mapped",[105]],[[120467,120467],"mapped",[106]],[[120468,120468],"mapped",[107]],[[120469,120469],"mapped",[108]],[[120470,120470],"mapped",[109]],[[120471,120471],"mapped",[110]],[[120472,120472],"mapped",[111]],[[120473,120473],"mapped",[112]],[[120474,120474],"mapped",[113]],[[120475,120475],"mapped",[114]],[[120476,120476],"mapped",[115]],[[120477,120477],"mapped",[116]],[[120478,120478],"mapped",[117]],[[120479,120479],"mapped",[118]],[[120480,120480],"mapped",[119]],[[120481,120481],"mapped",[120]],[[120482,120482],"mapped",[121]],[[120483,120483],"mapped",[122]],[[120484,120484],"mapped",[305]],[[120485,120485],"mapped",[567]],[[120486,120487],"disallowed"],[[120488,120488],"mapped",[945]],[[120489,120489],"mapped",[946]],[[120490,120490],"mapped",[947]],[[120491,120491],"mapped",[948]],[[120492,120492],"mapped",[949]],[[120493,120493],"mapped",[950]],[[120494,120494],"mapped",[951]],[[120495,120495],"mapped",[952]],[[120496,120496],"mapped",[953]],[[120497,120497],"mapped",[954]],[[120498,120498],"mapped",[955]],[[120499,120499],"mapped",[956]],[[120500,120500],"mapped",[957]],[[120501,120501],"mapped",[958]],[[120502,120502],"mapped",[959]],[[120503,120503],"mapped",[960]],[[120504,120504],"mapped",[961]],[[120505,120505],"mapped",[952]],[[120506,120506],"mapped",[963]],[[120507,120507],"mapped",[964]],[[120508,120508],"mapped",[965]],[[120509,120509],"mapped",[966]],[[120510,120510],"mapped",[967]],[[120511,120511],"mapped",[968]],[[120512,120512],"mapped",[969]],[[120513,120513],"mapped",[8711]],[[120514,120514],"mapped",[945]],[[120515,120515],"mapped",[946]],[[120516,120516],"mapped",[947]],[[120517,120517],"mapped",[948]],[[120518,120518],"mapped",[949]],[[120519,120519],"mapped",[950]],[[120520,120520],"mapped",[951]],[[120521,120521],"mapped",[952]],[[120522,120522],"mapped",[953]],[[120523,120523],"mapped",[954]],[[120524,120524],"mapped",[955]],[[120525,120525],"mapped",[956]],[[120526,120526],"mapped",[957]],[[120527,120527],"mapped",[958]],[[120528,120528],"mapped",[959]],[[120529,120529],"mapped",[960]],[[120530,120530],"mapped",[961]],[[120531,120532],"mapped",[963]],[[120533,120533],"mapped",[964]],[[120534,120534],"mapped",[965]],[[120535,120535],"mapped",[966]],[[120536,120536],"mapped",[967]],[[120537,120537],"mapped",[968]],[[120538,120538],"mapped",[969]],[[120539,120539],"mapped",[8706]],[[120540,120540],"mapped",[949]],[[120541,120541],"mapped",[952]],[[120542,120542],"mapped",[954]],[[120543,120543],"mapped",[966]],[[120544,120544],"mapped",[961]],[[120545,120545],"mapped",[960]],[[120546,120546],"mapped",[945]],[[120547,120547],"mapped",[946]],[[120548,120548],"mapped",[947]],[[120549,120549],"mapped",[948]],[[120550,120550],"mapped",[949]],[[120551,120551],"mapped",[950]],[[120552,120552],"mapped",[951]],[[120553,120553],"mapped",[952]],[[120554,120554],"mapped",[953]],[[120555,120555],"mapped",[954]],[[120556,120556],"mapped",[955]],[[120557,120557],"mapped",[956]],[[120558,120558],"mapped",[957]],[[120559,120559],"mapped",[958]],[[120560,120560],"mapped",[959]],[[120561,120561],"mapped",[960]],[[120562,120562],"mapped",[961]],[[120563,120563],"mapped",[952]],[[120564,120564],"mapped",[963]],[[120565,120565],"mapped",[964]],[[120566,120566],"mapped",[965]],[[120567,120567],"mapped",[966]],[[120568,120568],"mapped",[967]],[[120569,120569],"mapped",[968]],[[120570,120570],"mapped",[969]],[[120571,120571],"mapped",[8711]],[[120572,120572],"mapped",[945]],[[120573,120573],"mapped",[946]],[[120574,120574],"mapped",[947]],[[120575,120575],"mapped",[948]],[[120576,120576],"mapped",[949]],[[120577,120577],"mapped",[950]],[[120578,120578],"mapped",[951]],[[120579,120579],"mapped",[952]],[[120580,120580],"mapped",[953]],[[120581,120581],"mapped",[954]],[[120582,120582],"mapped",[955]],[[120583,120583],"mapped",[956]],[[120584,120584],"mapped",[957]],[[120585,120585],"mapped",[958]],[[120586,120586],"mapped",[959]],[[120587,120587],"mapped",[960]],[[120588,120588],"mapped",[961]],[[120589,120590],"mapped",[963]],[[120591,120591],"mapped",[964]],[[120592,120592],"mapped",[965]],[[120593,120593],"mapped",[966]],[[120594,120594],"mapped",[967]],[[120595,120595],"mapped",[968]],[[120596,120596],"mapped",[969]],[[120597,120597],"mapped",[8706]],[[120598,120598],"mapped",[949]],[[120599,120599],"mapped",[952]],[[120600,120600],"mapped",[954]],[[120601,120601],"mapped",[966]],[[120602,120602],"mapped",[961]],[[120603,120603],"mapped",[960]],[[120604,120604],"mapped",[945]],[[120605,120605],"mapped",[946]],[[120606,120606],"mapped",[947]],[[120607,120607],"mapped",[948]],[[120608,120608],"mapped",[949]],[[120609,120609],"mapped",[950]],[[120610,120610],"mapped",[951]],[[120611,120611],"mapped",[952]],[[120612,120612],"mapped",[953]],[[120613,120613],"mapped",[954]],[[120614,120614],"mapped",[955]],[[120615,120615],"mapped",[956]],[[120616,120616],"mapped",[957]],[[120617,120617],"mapped",[958]],[[120618,120618],"mapped",[959]],[[120619,120619],"mapped",[960]],[[120620,120620],"mapped",[961]],[[120621,120621],"mapped",[952]],[[120622,120622],"mapped",[963]],[[120623,120623],"mapped",[964]],[[120624,120624],"mapped",[965]],[[120625,120625],"mapped",[966]],[[120626,120626],"mapped",[967]],[[120627,120627],"mapped",[968]],[[120628,120628],"mapped",[969]],[[120629,120629],"mapped",[8711]],[[120630,120630],"mapped",[945]],[[120631,120631],"mapped",[946]],[[120632,120632],"mapped",[947]],[[120633,120633],"mapped",[948]],[[120634,120634],"mapped",[949]],[[120635,120635],"mapped",[950]],[[120636,120636],"mapped",[951]],[[120637,120637],"mapped",[952]],[[120638,120638],"mapped",[953]],[[120639,120639],"mapped",[954]],[[120640,120640],"mapped",[955]],[[120641,120641],"mapped",[956]],[[120642,120642],"mapped",[957]],[[120643,120643],"mapped",[958]],[[120644,120644],"mapped",[959]],[[120645,120645],"mapped",[960]],[[120646,120646],"mapped",[961]],[[120647,120648],"mapped",[963]],[[120649,120649],"mapped",[964]],[[120650,120650],"mapped",[965]],[[120651,120651],"mapped",[966]],[[120652,120652],"mapped",[967]],[[120653,120653],"mapped",[968]],[[120654,120654],"mapped",[969]],[[120655,120655],"mapped",[8706]],[[120656,120656],"mapped",[949]],[[120657,120657],"mapped",[952]],[[120658,120658],"mapped",[954]],[[120659,120659],"mapped",[966]],[[120660,120660],"mapped",[961]],[[120661,120661],"mapped",[960]],[[120662,120662],"mapped",[945]],[[120663,120663],"mapped",[946]],[[120664,120664],"mapped",[947]],[[120665,120665],"mapped",[948]],[[120666,120666],"mapped",[949]],[[120667,120667],"mapped",[950]],[[120668,120668],"mapped",[951]],[[120669,120669],"mapped",[952]],[[120670,120670],"mapped",[953]],[[120671,120671],"mapped",[954]],[[120672,120672],"mapped",[955]],[[120673,120673],"mapped",[956]],[[120674,120674],"mapped",[957]],[[120675,120675],"mapped",[958]],[[120676,120676],"mapped",[959]],[[120677,120677],"mapped",[960]],[[120678,120678],"mapped",[961]],[[120679,120679],"mapped",[952]],[[120680,120680],"mapped",[963]],[[120681,120681],"mapped",[964]],[[120682,120682],"mapped",[965]],[[120683,120683],"mapped",[966]],[[120684,120684],"mapped",[967]],[[120685,120685],"mapped",[968]],[[120686,120686],"mapped",[969]],[[120687,120687],"mapped",[8711]],[[120688,120688],"mapped",[945]],[[120689,120689],"mapped",[946]],[[120690,120690],"mapped",[947]],[[120691,120691],"mapped",[948]],[[120692,120692],"mapped",[949]],[[120693,120693],"mapped",[950]],[[120694,120694],"mapped",[951]],[[120695,120695],"mapped",[952]],[[120696,120696],"mapped",[953]],[[120697,120697],"mapped",[954]],[[120698,120698],"mapped",[955]],[[120699,120699],"mapped",[956]],[[120700,120700],"mapped",[957]],[[120701,120701],"mapped",[958]],[[120702,120702],"mapped",[959]],[[120703,120703],"mapped",[960]],[[120704,120704],"mapped",[961]],[[120705,120706],"mapped",[963]],[[120707,120707],"mapped",[964]],[[120708,120708],"mapped",[965]],[[120709,120709],"mapped",[966]],[[120710,120710],"mapped",[967]],[[120711,120711],"mapped",[968]],[[120712,120712],"mapped",[969]],[[120713,120713],"mapped",[8706]],[[120714,120714],"mapped",[949]],[[120715,120715],"mapped",[952]],[[120716,120716],"mapped",[954]],[[120717,120717],"mapped",[966]],[[120718,120718],"mapped",[961]],[[120719,120719],"mapped",[960]],[[120720,120720],"mapped",[945]],[[120721,120721],"mapped",[946]],[[120722,120722],"mapped",[947]],[[120723,120723],"mapped",[948]],[[120724,120724],"mapped",[949]],[[120725,120725],"mapped",[950]],[[120726,120726],"mapped",[951]],[[120727,120727],"mapped",[952]],[[120728,120728],"mapped",[953]],[[120729,120729],"mapped",[954]],[[120730,120730],"mapped",[955]],[[120731,120731],"mapped",[956]],[[120732,120732],"mapped",[957]],[[120733,120733],"mapped",[958]],[[120734,120734],"mapped",[959]],[[120735,120735],"mapped",[960]],[[120736,120736],"mapped",[961]],[[120737,120737],"mapped",[952]],[[120738,120738],"mapped",[963]],[[120739,120739],"mapped",[964]],[[120740,120740],"mapped",[965]],[[120741,120741],"mapped",[966]],[[120742,120742],"mapped",[967]],[[120743,120743],"mapped",[968]],[[120744,120744],"mapped",[969]],[[120745,120745],"mapped",[8711]],[[120746,120746],"mapped",[945]],[[120747,120747],"mapped",[946]],[[120748,120748],"mapped",[947]],[[120749,120749],"mapped",[948]],[[120750,120750],"mapped",[949]],[[120751,120751],"mapped",[950]],[[120752,120752],"mapped",[951]],[[120753,120753],"mapped",[952]],[[120754,120754],"mapped",[953]],[[120755,120755],"mapped",[954]],[[120756,120756],"mapped",[955]],[[120757,120757],"mapped",[956]],[[120758,120758],"mapped",[957]],[[120759,120759],"mapped",[958]],[[120760,120760],"mapped",[959]],[[120761,120761],"mapped",[960]],[[120762,120762],"mapped",[961]],[[120763,120764],"mapped",[963]],[[120765,120765],"mapped",[964]],[[120766,120766],"mapped",[965]],[[120767,120767],"mapped",[966]],[[120768,120768],"mapped",[967]],[[120769,120769],"mapped",[968]],[[120770,120770],"mapped",[969]],[[120771,120771],"mapped",[8706]],[[120772,120772],"mapped",[949]],[[120773,120773],"mapped",[952]],[[120774,120774],"mapped",[954]],[[120775,120775],"mapped",[966]],[[120776,120776],"mapped",[961]],[[120777,120777],"mapped",[960]],[[120778,120779],"mapped",[989]],[[120780,120781],"disallowed"],[[120782,120782],"mapped",[48]],[[120783,120783],"mapped",[49]],[[120784,120784],"mapped",[50]],[[120785,120785],"mapped",[51]],[[120786,120786],"mapped",[52]],[[120787,120787],"mapped",[53]],[[120788,120788],"mapped",[54]],[[120789,120789],"mapped",[55]],[[120790,120790],"mapped",[56]],[[120791,120791],"mapped",[57]],[[120792,120792],"mapped",[48]],[[120793,120793],"mapped",[49]],[[120794,120794],"mapped",[50]],[[120795,120795],"mapped",[51]],[[120796,120796],"mapped",[52]],[[120797,120797],"mapped",[53]],[[120798,120798],"mapped",[54]],[[120799,120799],"mapped",[55]],[[120800,120800],"mapped",[56]],[[120801,120801],"mapped",[57]],[[120802,120802],"mapped",[48]],[[120803,120803],"mapped",[49]],[[120804,120804],"mapped",[50]],[[120805,120805],"mapped",[51]],[[120806,120806],"mapped",[52]],[[120807,120807],"mapped",[53]],[[120808,120808],"mapped",[54]],[[120809,120809],"mapped",[55]],[[120810,120810],"mapped",[56]],[[120811,120811],"mapped",[57]],[[120812,120812],"mapped",[48]],[[120813,120813],"mapped",[49]],[[120814,120814],"mapped",[50]],[[120815,120815],"mapped",[51]],[[120816,120816],"mapped",[52]],[[120817,120817],"mapped",[53]],[[120818,120818],"mapped",[54]],[[120819,120819],"mapped",[55]],[[120820,120820],"mapped",[56]],[[120821,120821],"mapped",[57]],[[120822,120822],"mapped",[48]],[[120823,120823],"mapped",[49]],[[120824,120824],"mapped",[50]],[[120825,120825],"mapped",[51]],[[120826,120826],"mapped",[52]],[[120827,120827],"mapped",[53]],[[120828,120828],"mapped",[54]],[[120829,120829],"mapped",[55]],[[120830,120830],"mapped",[56]],[[120831,120831],"mapped",[57]],[[120832,121343],"valid",[],"NV8"],[[121344,121398],"valid"],[[121399,121402],"valid",[],"NV8"],[[121403,121452],"valid"],[[121453,121460],"valid",[],"NV8"],[[121461,121461],"valid"],[[121462,121475],"valid",[],"NV8"],[[121476,121476],"valid"],[[121477,121483],"valid",[],"NV8"],[[121484,121498],"disallowed"],[[121499,121503],"valid"],[[121504,121504],"disallowed"],[[121505,121519],"valid"],[[121520,124927],"disallowed"],[[124928,125124],"valid"],[[125125,125126],"disallowed"],[[125127,125135],"valid",[],"NV8"],[[125136,125142],"valid"],[[125143,126463],"disallowed"],[[126464,126464],"mapped",[1575]],[[126465,126465],"mapped",[1576]],[[126466,126466],"mapped",[1580]],[[126467,126467],"mapped",[1583]],[[126468,126468],"disallowed"],[[126469,126469],"mapped",[1608]],[[126470,126470],"mapped",[1586]],[[126471,126471],"mapped",[1581]],[[126472,126472],"mapped",[1591]],[[126473,126473],"mapped",[1610]],[[126474,126474],"mapped",[1603]],[[126475,126475],"mapped",[1604]],[[126476,126476],"mapped",[1605]],[[126477,126477],"mapped",[1606]],[[126478,126478],"mapped",[1587]],[[126479,126479],"mapped",[1593]],[[126480,126480],"mapped",[1601]],[[126481,126481],"mapped",[1589]],[[126482,126482],"mapped",[1602]],[[126483,126483],"mapped",[1585]],[[126484,126484],"mapped",[1588]],[[126485,126485],"mapped",[1578]],[[126486,126486],"mapped",[1579]],[[126487,126487],"mapped",[1582]],[[126488,126488],"mapped",[1584]],[[126489,126489],"mapped",[1590]],[[126490,126490],"mapped",[1592]],[[126491,126491],"mapped",[1594]],[[126492,126492],"mapped",[1646]],[[126493,126493],"mapped",[1722]],[[126494,126494],"mapped",[1697]],[[126495,126495],"mapped",[1647]],[[126496,126496],"disallowed"],[[126497,126497],"mapped",[1576]],[[126498,126498],"mapped",[1580]],[[126499,126499],"disallowed"],[[126500,126500],"mapped",[1607]],[[126501,126502],"disallowed"],[[126503,126503],"mapped",[1581]],[[126504,126504],"disallowed"],[[126505,126505],"mapped",[1610]],[[126506,126506],"mapped",[1603]],[[126507,126507],"mapped",[1604]],[[126508,126508],"mapped",[1605]],[[126509,126509],"mapped",[1606]],[[126510,126510],"mapped",[1587]],[[126511,126511],"mapped",[1593]],[[126512,126512],"mapped",[1601]],[[126513,126513],"mapped",[1589]],[[126514,126514],"mapped",[1602]],[[126515,126515],"disallowed"],[[126516,126516],"mapped",[1588]],[[126517,126517],"mapped",[1578]],[[126518,126518],"mapped",[1579]],[[126519,126519],"mapped",[1582]],[[126520,126520],"disallowed"],[[126521,126521],"mapped",[1590]],[[126522,126522],"disallowed"],[[126523,126523],"mapped",[1594]],[[126524,126529],"disallowed"],[[126530,126530],"mapped",[1580]],[[126531,126534],"disallowed"],[[126535,126535],"mapped",[1581]],[[126536,126536],"disallowed"],[[126537,126537],"mapped",[1610]],[[126538,126538],"disallowed"],[[126539,126539],"mapped",[1604]],[[126540,126540],"disallowed"],[[126541,126541],"mapped",[1606]],[[126542,126542],"mapped",[1587]],[[126543,126543],"mapped",[1593]],[[126544,126544],"disallowed"],[[126545,126545],"mapped",[1589]],[[126546,126546],"mapped",[1602]],[[126547,126547],"disallowed"],[[126548,126548],"mapped",[1588]],[[126549,126550],"disallowed"],[[126551,126551],"mapped",[1582]],[[126552,126552],"disallowed"],[[126553,126553],"mapped",[1590]],[[126554,126554],"disallowed"],[[126555,126555],"mapped",[1594]],[[126556,126556],"disallowed"],[[126557,126557],"mapped",[1722]],[[126558,126558],"disallowed"],[[126559,126559],"mapped",[1647]],[[126560,126560],"disallowed"],[[126561,126561],"mapped",[1576]],[[126562,126562],"mapped",[1580]],[[126563,126563],"disallowed"],[[126564,126564],"mapped",[1607]],[[126565,126566],"disallowed"],[[126567,126567],"mapped",[1581]],[[126568,126568],"mapped",[1591]],[[126569,126569],"mapped",[1610]],[[126570,126570],"mapped",[1603]],[[126571,126571],"disallowed"],[[126572,126572],"mapped",[1605]],[[126573,126573],"mapped",[1606]],[[126574,126574],"mapped",[1587]],[[126575,126575],"mapped",[1593]],[[126576,126576],"mapped",[1601]],[[126577,126577],"mapped",[1589]],[[126578,126578],"mapped",[1602]],[[126579,126579],"disallowed"],[[126580,126580],"mapped",[1588]],[[126581,126581],"mapped",[1578]],[[126582,126582],"mapped",[1579]],[[126583,126583],"mapped",[1582]],[[126584,126584],"disallowed"],[[126585,126585],"mapped",[1590]],[[126586,126586],"mapped",[1592]],[[126587,126587],"mapped",[1594]],[[126588,126588],"mapped",[1646]],[[126589,126589],"disallowed"],[[126590,126590],"mapped",[1697]],[[126591,126591],"disallowed"],[[126592,126592],"mapped",[1575]],[[126593,126593],"mapped",[1576]],[[126594,126594],"mapped",[1580]],[[126595,126595],"mapped",[1583]],[[126596,126596],"mapped",[1607]],[[126597,126597],"mapped",[1608]],[[126598,126598],"mapped",[1586]],[[126599,126599],"mapped",[1581]],[[126600,126600],"mapped",[1591]],[[126601,126601],"mapped",[1610]],[[126602,126602],"disallowed"],[[126603,126603],"mapped",[1604]],[[126604,126604],"mapped",[1605]],[[126605,126605],"mapped",[1606]],[[126606,126606],"mapped",[1587]],[[126607,126607],"mapped",[1593]],[[126608,126608],"mapped",[1601]],[[126609,126609],"mapped",[1589]],[[126610,126610],"mapped",[1602]],[[126611,126611],"mapped",[1585]],[[126612,126612],"mapped",[1588]],[[126613,126613],"mapped",[1578]],[[126614,126614],"mapped",[1579]],[[126615,126615],"mapped",[1582]],[[126616,126616],"mapped",[1584]],[[126617,126617],"mapped",[1590]],[[126618,126618],"mapped",[1592]],[[126619,126619],"mapped",[1594]],[[126620,126624],"disallowed"],[[126625,126625],"mapped",[1576]],[[126626,126626],"mapped",[1580]],[[126627,126627],"mapped",[1583]],[[126628,126628],"disallowed"],[[126629,126629],"mapped",[1608]],[[126630,126630],"mapped",[1586]],[[126631,126631],"mapped",[1581]],[[126632,126632],"mapped",[1591]],[[126633,126633],"mapped",[1610]],[[126634,126634],"disallowed"],[[126635,126635],"mapped",[1604]],[[126636,126636],"mapped",[1605]],[[126637,126637],"mapped",[1606]],[[126638,126638],"mapped",[1587]],[[126639,126639],"mapped",[1593]],[[126640,126640],"mapped",[1601]],[[126641,126641],"mapped",[1589]],[[126642,126642],"mapped",[1602]],[[126643,126643],"mapped",[1585]],[[126644,126644],"mapped",[1588]],[[126645,126645],"mapped",[1578]],[[126646,126646],"mapped",[1579]],[[126647,126647],"mapped",[1582]],[[126648,126648],"mapped",[1584]],[[126649,126649],"mapped",[1590]],[[126650,126650],"mapped",[1592]],[[126651,126651],"mapped",[1594]],[[126652,126703],"disallowed"],[[126704,126705],"valid",[],"NV8"],[[126706,126975],"disallowed"],[[126976,127019],"valid",[],"NV8"],[[127020,127023],"disallowed"],[[127024,127123],"valid",[],"NV8"],[[127124,127135],"disallowed"],[[127136,127150],"valid",[],"NV8"],[[127151,127152],"disallowed"],[[127153,127166],"valid",[],"NV8"],[[127167,127167],"valid",[],"NV8"],[[127168,127168],"disallowed"],[[127169,127183],"valid",[],"NV8"],[[127184,127184],"disallowed"],[[127185,127199],"valid",[],"NV8"],[[127200,127221],"valid",[],"NV8"],[[127222,127231],"disallowed"],[[127232,127232],"disallowed"],[[127233,127233],"disallowed_STD3_mapped",[48,44]],[[127234,127234],"disallowed_STD3_mapped",[49,44]],[[127235,127235],"disallowed_STD3_mapped",[50,44]],[[127236,127236],"disallowed_STD3_mapped",[51,44]],[[127237,127237],"disallowed_STD3_mapped",[52,44]],[[127238,127238],"disallowed_STD3_mapped",[53,44]],[[127239,127239],"disallowed_STD3_mapped",[54,44]],[[127240,127240],"disallowed_STD3_mapped",[55,44]],[[127241,127241],"disallowed_STD3_mapped",[56,44]],[[127242,127242],"disallowed_STD3_mapped",[57,44]],[[127243,127244],"valid",[],"NV8"],[[127245,127247],"disallowed"],[[127248,127248],"disallowed_STD3_mapped",[40,97,41]],[[127249,127249],"disallowed_STD3_mapped",[40,98,41]],[[127250,127250],"disallowed_STD3_mapped",[40,99,41]],[[127251,127251],"disallowed_STD3_mapped",[40,100,41]],[[127252,127252],"disallowed_STD3_mapped",[40,101,41]],[[127253,127253],"disallowed_STD3_mapped",[40,102,41]],[[127254,127254],"disallowed_STD3_mapped",[40,103,41]],[[127255,127255],"disallowed_STD3_mapped",[40,104,41]],[[127256,127256],"disallowed_STD3_mapped",[40,105,41]],[[127257,127257],"disallowed_STD3_mapped",[40,106,41]],[[127258,127258],"disallowed_STD3_mapped",[40,107,41]],[[127259,127259],"disallowed_STD3_mapped",[40,108,41]],[[127260,127260],"disallowed_STD3_mapped",[40,109,41]],[[127261,127261],"disallowed_STD3_mapped",[40,110,41]],[[127262,127262],"disallowed_STD3_mapped",[40,111,41]],[[127263,127263],"disallowed_STD3_mapped",[40,112,41]],[[127264,127264],"disallowed_STD3_mapped",[40,113,41]],[[127265,127265],"disallowed_STD3_mapped",[40,114,41]],[[127266,127266],"disallowed_STD3_mapped",[40,115,41]],[[127267,127267],"disallowed_STD3_mapped",[40,116,41]],[[127268,127268],"disallowed_STD3_mapped",[40,117,41]],[[127269,127269],"disallowed_STD3_mapped",[40,118,41]],[[127270,127270],"disallowed_STD3_mapped",[40,119,41]],[[127271,127271],"disallowed_STD3_mapped",[40,120,41]],[[127272,127272],"disallowed_STD3_mapped",[40,121,41]],[[127273,127273],"disallowed_STD3_mapped",[40,122,41]],[[127274,127274],"mapped",[12308,115,12309]],[[127275,127275],"mapped",[99]],[[127276,127276],"mapped",[114]],[[127277,127277],"mapped",[99,100]],[[127278,127278],"mapped",[119,122]],[[127279,127279],"disallowed"],[[127280,127280],"mapped",[97]],[[127281,127281],"mapped",[98]],[[127282,127282],"mapped",[99]],[[127283,127283],"mapped",[100]],[[127284,127284],"mapped",[101]],[[127285,127285],"mapped",[102]],[[127286,127286],"mapped",[103]],[[127287,127287],"mapped",[104]],[[127288,127288],"mapped",[105]],[[127289,127289],"mapped",[106]],[[127290,127290],"mapped",[107]],[[127291,127291],"mapped",[108]],[[127292,127292],"mapped",[109]],[[127293,127293],"mapped",[110]],[[127294,127294],"mapped",[111]],[[127295,127295],"mapped",[112]],[[127296,127296],"mapped",[113]],[[127297,127297],"mapped",[114]],[[127298,127298],"mapped",[115]],[[127299,127299],"mapped",[116]],[[127300,127300],"mapped",[117]],[[127301,127301],"mapped",[118]],[[127302,127302],"mapped",[119]],[[127303,127303],"mapped",[120]],[[127304,127304],"mapped",[121]],[[127305,127305],"mapped",[122]],[[127306,127306],"mapped",[104,118]],[[127307,127307],"mapped",[109,118]],[[127308,127308],"mapped",[115,100]],[[127309,127309],"mapped",[115,115]],[[127310,127310],"mapped",[112,112,118]],[[127311,127311],"mapped",[119,99]],[[127312,127318],"valid",[],"NV8"],[[127319,127319],"valid",[],"NV8"],[[127320,127326],"valid",[],"NV8"],[[127327,127327],"valid",[],"NV8"],[[127328,127337],"valid",[],"NV8"],[[127338,127338],"mapped",[109,99]],[[127339,127339],"mapped",[109,100]],[[127340,127343],"disallowed"],[[127344,127352],"valid",[],"NV8"],[[127353,127353],"valid",[],"NV8"],[[127354,127354],"valid",[],"NV8"],[[127355,127356],"valid",[],"NV8"],[[127357,127358],"valid",[],"NV8"],[[127359,127359],"valid",[],"NV8"],[[127360,127369],"valid",[],"NV8"],[[127370,127373],"valid",[],"NV8"],[[127374,127375],"valid",[],"NV8"],[[127376,127376],"mapped",[100,106]],[[127377,127386],"valid",[],"NV8"],[[127387,127461],"disallowed"],[[127462,127487],"valid",[],"NV8"],[[127488,127488],"mapped",[12411,12363]],[[127489,127489],"mapped",[12467,12467]],[[127490,127490],"mapped",[12469]],[[127491,127503],"disallowed"],[[127504,127504],"mapped",[25163]],[[127505,127505],"mapped",[23383]],[[127506,127506],"mapped",[21452]],[[127507,127507],"mapped",[12487]],[[127508,127508],"mapped",[20108]],[[127509,127509],"mapped",[22810]],[[127510,127510],"mapped",[35299]],[[127511,127511],"mapped",[22825]],[[127512,127512],"mapped",[20132]],[[127513,127513],"mapped",[26144]],[[127514,127514],"mapped",[28961]],[[127515,127515],"mapped",[26009]],[[127516,127516],"mapped",[21069]],[[127517,127517],"mapped",[24460]],[[127518,127518],"mapped",[20877]],[[127519,127519],"mapped",[26032]],[[127520,127520],"mapped",[21021]],[[127521,127521],"mapped",[32066]],[[127522,127522],"mapped",[29983]],[[127523,127523],"mapped",[36009]],[[127524,127524],"mapped",[22768]],[[127525,127525],"mapped",[21561]],[[127526,127526],"mapped",[28436]],[[127527,127527],"mapped",[25237]],[[127528,127528],"mapped",[25429]],[[127529,127529],"mapped",[19968]],[[127530,127530],"mapped",[19977]],[[127531,127531],"mapped",[36938]],[[127532,127532],"mapped",[24038]],[[127533,127533],"mapped",[20013]],[[127534,127534],"mapped",[21491]],[[127535,127535],"mapped",[25351]],[[127536,127536],"mapped",[36208]],[[127537,127537],"mapped",[25171]],[[127538,127538],"mapped",[31105]],[[127539,127539],"mapped",[31354]],[[127540,127540],"mapped",[21512]],[[127541,127541],"mapped",[28288]],[[127542,127542],"mapped",[26377]],[[127543,127543],"mapped",[26376]],[[127544,127544],"mapped",[30003]],[[127545,127545],"mapped",[21106]],[[127546,127546],"mapped",[21942]],[[127547,127551],"disallowed"],[[127552,127552],"mapped",[12308,26412,12309]],[[127553,127553],"mapped",[12308,19977,12309]],[[127554,127554],"mapped",[12308,20108,12309]],[[127555,127555],"mapped",[12308,23433,12309]],[[127556,127556],"mapped",[12308,28857,12309]],[[127557,127557],"mapped",[12308,25171,12309]],[[127558,127558],"mapped",[12308,30423,12309]],[[127559,127559],"mapped",[12308,21213,12309]],[[127560,127560],"mapped",[12308,25943,12309]],[[127561,127567],"disallowed"],[[127568,127568],"mapped",[24471]],[[127569,127569],"mapped",[21487]],[[127570,127743],"disallowed"],[[127744,127776],"valid",[],"NV8"],[[127777,127788],"valid",[],"NV8"],[[127789,127791],"valid",[],"NV8"],[[127792,127797],"valid",[],"NV8"],[[127798,127798],"valid",[],"NV8"],[[127799,127868],"valid",[],"NV8"],[[127869,127869],"valid",[],"NV8"],[[127870,127871],"valid",[],"NV8"],[[127872,127891],"valid",[],"NV8"],[[127892,127903],"valid",[],"NV8"],[[127904,127940],"valid",[],"NV8"],[[127941,127941],"valid",[],"NV8"],[[127942,127946],"valid",[],"NV8"],[[127947,127950],"valid",[],"NV8"],[[127951,127955],"valid",[],"NV8"],[[127956,127967],"valid",[],"NV8"],[[127968,127984],"valid",[],"NV8"],[[127985,127991],"valid",[],"NV8"],[[127992,127999],"valid",[],"NV8"],[[128000,128062],"valid",[],"NV8"],[[128063,128063],"valid",[],"NV8"],[[128064,128064],"valid",[],"NV8"],[[128065,128065],"valid",[],"NV8"],[[128066,128247],"valid",[],"NV8"],[[128248,128248],"valid",[],"NV8"],[[128249,128252],"valid",[],"NV8"],[[128253,128254],"valid",[],"NV8"],[[128255,128255],"valid",[],"NV8"],[[128256,128317],"valid",[],"NV8"],[[128318,128319],"valid",[],"NV8"],[[128320,128323],"valid",[],"NV8"],[[128324,128330],"valid",[],"NV8"],[[128331,128335],"valid",[],"NV8"],[[128336,128359],"valid",[],"NV8"],[[128360,128377],"valid",[],"NV8"],[[128378,128378],"disallowed"],[[128379,128419],"valid",[],"NV8"],[[128420,128420],"disallowed"],[[128421,128506],"valid",[],"NV8"],[[128507,128511],"valid",[],"NV8"],[[128512,128512],"valid",[],"NV8"],[[128513,128528],"valid",[],"NV8"],[[128529,128529],"valid",[],"NV8"],[[128530,128532],"valid",[],"NV8"],[[128533,128533],"valid",[],"NV8"],[[128534,128534],"valid",[],"NV8"],[[128535,128535],"valid",[],"NV8"],[[128536,128536],"valid",[],"NV8"],[[128537,128537],"valid",[],"NV8"],[[128538,128538],"valid",[],"NV8"],[[128539,128539],"valid",[],"NV8"],[[128540,128542],"valid",[],"NV8"],[[128543,128543],"valid",[],"NV8"],[[128544,128549],"valid",[],"NV8"],[[128550,128551],"valid",[],"NV8"],[[128552,128555],"valid",[],"NV8"],[[128556,128556],"valid",[],"NV8"],[[128557,128557],"valid",[],"NV8"],[[128558,128559],"valid",[],"NV8"],[[128560,128563],"valid",[],"NV8"],[[128564,128564],"valid",[],"NV8"],[[128565,128576],"valid",[],"NV8"],[[128577,128578],"valid",[],"NV8"],[[128579,128580],"valid",[],"NV8"],[[128581,128591],"valid",[],"NV8"],[[128592,128639],"valid",[],"NV8"],[[128640,128709],"valid",[],"NV8"],[[128710,128719],"valid",[],"NV8"],[[128720,128720],"valid",[],"NV8"],[[128721,128735],"disallowed"],[[128736,128748],"valid",[],"NV8"],[[128749,128751],"disallowed"],[[128752,128755],"valid",[],"NV8"],[[128756,128767],"disallowed"],[[128768,128883],"valid",[],"NV8"],[[128884,128895],"disallowed"],[[128896,128980],"valid",[],"NV8"],[[128981,129023],"disallowed"],[[129024,129035],"valid",[],"NV8"],[[129036,129039],"disallowed"],[[129040,129095],"valid",[],"NV8"],[[129096,129103],"disallowed"],[[129104,129113],"valid",[],"NV8"],[[129114,129119],"disallowed"],[[129120,129159],"valid",[],"NV8"],[[129160,129167],"disallowed"],[[129168,129197],"valid",[],"NV8"],[[129198,129295],"disallowed"],[[129296,129304],"valid",[],"NV8"],[[129305,129407],"disallowed"],[[129408,129412],"valid",[],"NV8"],[[129413,129471],"disallowed"],[[129472,129472],"valid",[],"NV8"],[[129473,131069],"disallowed"],[[131070,131071],"disallowed"],[[131072,173782],"valid"],[[173783,173823],"disallowed"],[[173824,177972],"valid"],[[177973,177983],"disallowed"],[[177984,178205],"valid"],[[178206,178207],"disallowed"],[[178208,183969],"valid"],[[183970,194559],"disallowed"],[[194560,194560],"mapped",[20029]],[[194561,194561],"mapped",[20024]],[[194562,194562],"mapped",[20033]],[[194563,194563],"mapped",[131362]],[[194564,194564],"mapped",[20320]],[[194565,194565],"mapped",[20398]],[[194566,194566],"mapped",[20411]],[[194567,194567],"mapped",[20482]],[[194568,194568],"mapped",[20602]],[[194569,194569],"mapped",[20633]],[[194570,194570],"mapped",[20711]],[[194571,194571],"mapped",[20687]],[[194572,194572],"mapped",[13470]],[[194573,194573],"mapped",[132666]],[[194574,194574],"mapped",[20813]],[[194575,194575],"mapped",[20820]],[[194576,194576],"mapped",[20836]],[[194577,194577],"mapped",[20855]],[[194578,194578],"mapped",[132380]],[[194579,194579],"mapped",[13497]],[[194580,194580],"mapped",[20839]],[[194581,194581],"mapped",[20877]],[[194582,194582],"mapped",[132427]],[[194583,194583],"mapped",[20887]],[[194584,194584],"mapped",[20900]],[[194585,194585],"mapped",[20172]],[[194586,194586],"mapped",[20908]],[[194587,194587],"mapped",[20917]],[[194588,194588],"mapped",[168415]],[[194589,194589],"mapped",[20981]],[[194590,194590],"mapped",[20995]],[[194591,194591],"mapped",[13535]],[[194592,194592],"mapped",[21051]],[[194593,194593],"mapped",[21062]],[[194594,194594],"mapped",[21106]],[[194595,194595],"mapped",[21111]],[[194596,194596],"mapped",[13589]],[[194597,194597],"mapped",[21191]],[[194598,194598],"mapped",[21193]],[[194599,194599],"mapped",[21220]],[[194600,194600],"mapped",[21242]],[[194601,194601],"mapped",[21253]],[[194602,194602],"mapped",[21254]],[[194603,194603],"mapped",[21271]],[[194604,194604],"mapped",[21321]],[[194605,194605],"mapped",[21329]],[[194606,194606],"mapped",[21338]],[[194607,194607],"mapped",[21363]],[[194608,194608],"mapped",[21373]],[[194609,194611],"mapped",[21375]],[[194612,194612],"mapped",[133676]],[[194613,194613],"mapped",[28784]],[[194614,194614],"mapped",[21450]],[[194615,194615],"mapped",[21471]],[[194616,194616],"mapped",[133987]],[[194617,194617],"mapped",[21483]],[[194618,194618],"mapped",[21489]],[[194619,194619],"mapped",[21510]],[[194620,194620],"mapped",[21662]],[[194621,194621],"mapped",[21560]],[[194622,194622],"mapped",[21576]],[[194623,194623],"mapped",[21608]],[[194624,194624],"mapped",[21666]],[[194625,194625],"mapped",[21750]],[[194626,194626],"mapped",[21776]],[[194627,194627],"mapped",[21843]],[[194628,194628],"mapped",[21859]],[[194629,194630],"mapped",[21892]],[[194631,194631],"mapped",[21913]],[[194632,194632],"mapped",[21931]],[[194633,194633],"mapped",[21939]],[[194634,194634],"mapped",[21954]],[[194635,194635],"mapped",[22294]],[[194636,194636],"mapped",[22022]],[[194637,194637],"mapped",[22295]],[[194638,194638],"mapped",[22097]],[[194639,194639],"mapped",[22132]],[[194640,194640],"mapped",[20999]],[[194641,194641],"mapped",[22766]],[[194642,194642],"mapped",[22478]],[[194643,194643],"mapped",[22516]],[[194644,194644],"mapped",[22541]],[[194645,194645],"mapped",[22411]],[[194646,194646],"mapped",[22578]],[[194647,194647],"mapped",[22577]],[[194648,194648],"mapped",[22700]],[[194649,194649],"mapped",[136420]],[[194650,194650],"mapped",[22770]],[[194651,194651],"mapped",[22775]],[[194652,194652],"mapped",[22790]],[[194653,194653],"mapped",[22810]],[[194654,194654],"mapped",[22818]],[[194655,194655],"mapped",[22882]],[[194656,194656],"mapped",[136872]],[[194657,194657],"mapped",[136938]],[[194658,194658],"mapped",[23020]],[[194659,194659],"mapped",[23067]],[[194660,194660],"mapped",[23079]],[[194661,194661],"mapped",[23000]],[[194662,194662],"mapped",[23142]],[[194663,194663],"mapped",[14062]],[[194664,194664],"disallowed"],[[194665,194665],"mapped",[23304]],[[194666,194667],"mapped",[23358]],[[194668,194668],"mapped",[137672]],[[194669,194669],"mapped",[23491]],[[194670,194670],"mapped",[23512]],[[194671,194671],"mapped",[23527]],[[194672,194672],"mapped",[23539]],[[194673,194673],"mapped",[138008]],[[194674,194674],"mapped",[23551]],[[194675,194675],"mapped",[23558]],[[194676,194676],"disallowed"],[[194677,194677],"mapped",[23586]],[[194678,194678],"mapped",[14209]],[[194679,194679],"mapped",[23648]],[[194680,194680],"mapped",[23662]],[[194681,194681],"mapped",[23744]],[[194682,194682],"mapped",[23693]],[[194683,194683],"mapped",[138724]],[[194684,194684],"mapped",[23875]],[[194685,194685],"mapped",[138726]],[[194686,194686],"mapped",[23918]],[[194687,194687],"mapped",[23915]],[[194688,194688],"mapped",[23932]],[[194689,194689],"mapped",[24033]],[[194690,194690],"mapped",[24034]],[[194691,194691],"mapped",[14383]],[[194692,194692],"mapped",[24061]],[[194693,194693],"mapped",[24104]],[[194694,194694],"mapped",[24125]],[[194695,194695],"mapped",[24169]],[[194696,194696],"mapped",[14434]],[[194697,194697],"mapped",[139651]],[[194698,194698],"mapped",[14460]],[[194699,194699],"mapped",[24240]],[[194700,194700],"mapped",[24243]],[[194701,194701],"mapped",[24246]],[[194702,194702],"mapped",[24266]],[[194703,194703],"mapped",[172946]],[[194704,194704],"mapped",[24318]],[[194705,194706],"mapped",[140081]],[[194707,194707],"mapped",[33281]],[[194708,194709],"mapped",[24354]],[[194710,194710],"mapped",[14535]],[[194711,194711],"mapped",[144056]],[[194712,194712],"mapped",[156122]],[[194713,194713],"mapped",[24418]],[[194714,194714],"mapped",[24427]],[[194715,194715],"mapped",[14563]],[[194716,194716],"mapped",[24474]],[[194717,194717],"mapped",[24525]],[[194718,194718],"mapped",[24535]],[[194719,194719],"mapped",[24569]],[[194720,194720],"mapped",[24705]],[[194721,194721],"mapped",[14650]],[[194722,194722],"mapped",[14620]],[[194723,194723],"mapped",[24724]],[[194724,194724],"mapped",[141012]],[[194725,194725],"mapped",[24775]],[[194726,194726],"mapped",[24904]],[[194727,194727],"mapped",[24908]],[[194728,194728],"mapped",[24910]],[[194729,194729],"mapped",[24908]],[[194730,194730],"mapped",[24954]],[[194731,194731],"mapped",[24974]],[[194732,194732],"mapped",[25010]],[[194733,194733],"mapped",[24996]],[[194734,194734],"mapped",[25007]],[[194735,194735],"mapped",[25054]],[[194736,194736],"mapped",[25074]],[[194737,194737],"mapped",[25078]],[[194738,194738],"mapped",[25104]],[[194739,194739],"mapped",[25115]],[[194740,194740],"mapped",[25181]],[[194741,194741],"mapped",[25265]],[[194742,194742],"mapped",[25300]],[[194743,194743],"mapped",[25424]],[[194744,194744],"mapped",[142092]],[[194745,194745],"mapped",[25405]],[[194746,194746],"mapped",[25340]],[[194747,194747],"mapped",[25448]],[[194748,194748],"mapped",[25475]],[[194749,194749],"mapped",[25572]],[[194750,194750],"mapped",[142321]],[[194751,194751],"mapped",[25634]],[[194752,194752],"mapped",[25541]],[[194753,194753],"mapped",[25513]],[[194754,194754],"mapped",[14894]],[[194755,194755],"mapped",[25705]],[[194756,194756],"mapped",[25726]],[[194757,194757],"mapped",[25757]],[[194758,194758],"mapped",[25719]],[[194759,194759],"mapped",[14956]],[[194760,194760],"mapped",[25935]],[[194761,194761],"mapped",[25964]],[[194762,194762],"mapped",[143370]],[[194763,194763],"mapped",[26083]],[[194764,194764],"mapped",[26360]],[[194765,194765],"mapped",[26185]],[[194766,194766],"mapped",[15129]],[[194767,194767],"mapped",[26257]],[[194768,194768],"mapped",[15112]],[[194769,194769],"mapped",[15076]],[[194770,194770],"mapped",[20882]],[[194771,194771],"mapped",[20885]],[[194772,194772],"mapped",[26368]],[[194773,194773],"mapped",[26268]],[[194774,194774],"mapped",[32941]],[[194775,194775],"mapped",[17369]],[[194776,194776],"mapped",[26391]],[[194777,194777],"mapped",[26395]],[[194778,194778],"mapped",[26401]],[[194779,194779],"mapped",[26462]],[[194780,194780],"mapped",[26451]],[[194781,194781],"mapped",[144323]],[[194782,194782],"mapped",[15177]],[[194783,194783],"mapped",[26618]],[[194784,194784],"mapped",[26501]],[[194785,194785],"mapped",[26706]],[[194786,194786],"mapped",[26757]],[[194787,194787],"mapped",[144493]],[[194788,194788],"mapped",[26766]],[[194789,194789],"mapped",[26655]],[[194790,194790],"mapped",[26900]],[[194791,194791],"mapped",[15261]],[[194792,194792],"mapped",[26946]],[[194793,194793],"mapped",[27043]],[[194794,194794],"mapped",[27114]],[[194795,194795],"mapped",[27304]],[[194796,194796],"mapped",[145059]],[[194797,194797],"mapped",[27355]],[[194798,194798],"mapped",[15384]],[[194799,194799],"mapped",[27425]],[[194800,194800],"mapped",[145575]],[[194801,194801],"mapped",[27476]],[[194802,194802],"mapped",[15438]],[[194803,194803],"mapped",[27506]],[[194804,194804],"mapped",[27551]],[[194805,194805],"mapped",[27578]],[[194806,194806],"mapped",[27579]],[[194807,194807],"mapped",[146061]],[[194808,194808],"mapped",[138507]],[[194809,194809],"mapped",[146170]],[[194810,194810],"mapped",[27726]],[[194811,194811],"mapped",[146620]],[[194812,194812],"mapped",[27839]],[[194813,194813],"mapped",[27853]],[[194814,194814],"mapped",[27751]],[[194815,194815],"mapped",[27926]],[[194816,194816],"mapped",[27966]],[[194817,194817],"mapped",[28023]],[[194818,194818],"mapped",[27969]],[[194819,194819],"mapped",[28009]],[[194820,194820],"mapped",[28024]],[[194821,194821],"mapped",[28037]],[[194822,194822],"mapped",[146718]],[[194823,194823],"mapped",[27956]],[[194824,194824],"mapped",[28207]],[[194825,194825],"mapped",[28270]],[[194826,194826],"mapped",[15667]],[[194827,194827],"mapped",[28363]],[[194828,194828],"mapped",[28359]],[[194829,194829],"mapped",[147153]],[[194830,194830],"mapped",[28153]],[[194831,194831],"mapped",[28526]],[[194832,194832],"mapped",[147294]],[[194833,194833],"mapped",[147342]],[[194834,194834],"mapped",[28614]],[[194835,194835],"mapped",[28729]],[[194836,194836],"mapped",[28702]],[[194837,194837],"mapped",[28699]],[[194838,194838],"mapped",[15766]],[[194839,194839],"mapped",[28746]],[[194840,194840],"mapped",[28797]],[[194841,194841],"mapped",[28791]],[[194842,194842],"mapped",[28845]],[[194843,194843],"mapped",[132389]],[[194844,194844],"mapped",[28997]],[[194845,194845],"mapped",[148067]],[[194846,194846],"mapped",[29084]],[[194847,194847],"disallowed"],[[194848,194848],"mapped",[29224]],[[194849,194849],"mapped",[29237]],[[194850,194850],"mapped",[29264]],[[194851,194851],"mapped",[149000]],[[194852,194852],"mapped",[29312]],[[194853,194853],"mapped",[29333]],[[194854,194854],"mapped",[149301]],[[194855,194855],"mapped",[149524]],[[194856,194856],"mapped",[29562]],[[194857,194857],"mapped",[29579]],[[194858,194858],"mapped",[16044]],[[194859,194859],"mapped",[29605]],[[194860,194861],"mapped",[16056]],[[194862,194862],"mapped",[29767]],[[194863,194863],"mapped",[29788]],[[194864,194864],"mapped",[29809]],[[194865,194865],"mapped",[29829]],[[194866,194866],"mapped",[29898]],[[194867,194867],"mapped",[16155]],[[194868,194868],"mapped",[29988]],[[194869,194869],"mapped",[150582]],[[194870,194870],"mapped",[30014]],[[194871,194871],"mapped",[150674]],[[194872,194872],"mapped",[30064]],[[194873,194873],"mapped",[139679]],[[194874,194874],"mapped",[30224]],[[194875,194875],"mapped",[151457]],[[194876,194876],"mapped",[151480]],[[194877,194877],"mapped",[151620]],[[194878,194878],"mapped",[16380]],[[194879,194879],"mapped",[16392]],[[194880,194880],"mapped",[30452]],[[194881,194881],"mapped",[151795]],[[194882,194882],"mapped",[151794]],[[194883,194883],"mapped",[151833]],[[194884,194884],"mapped",[151859]],[[194885,194885],"mapped",[30494]],[[194886,194887],"mapped",[30495]],[[194888,194888],"mapped",[30538]],[[194889,194889],"mapped",[16441]],[[194890,194890],"mapped",[30603]],[[194891,194891],"mapped",[16454]],[[194892,194892],"mapped",[16534]],[[194893,194893],"mapped",[152605]],[[194894,194894],"mapped",[30798]],[[194895,194895],"mapped",[30860]],[[194896,194896],"mapped",[30924]],[[194897,194897],"mapped",[16611]],[[194898,194898],"mapped",[153126]],[[194899,194899],"mapped",[31062]],[[194900,194900],"mapped",[153242]],[[194901,194901],"mapped",[153285]],[[194902,194902],"mapped",[31119]],[[194903,194903],"mapped",[31211]],[[194904,194904],"mapped",[16687]],[[194905,194905],"mapped",[31296]],[[194906,194906],"mapped",[31306]],[[194907,194907],"mapped",[31311]],[[194908,194908],"mapped",[153980]],[[194909,194910],"mapped",[154279]],[[194911,194911],"disallowed"],[[194912,194912],"mapped",[16898]],[[194913,194913],"mapped",[154539]],[[194914,194914],"mapped",[31686]],[[194915,194915],"mapped",[31689]],[[194916,194916],"mapped",[16935]],[[194917,194917],"mapped",[154752]],[[194918,194918],"mapped",[31954]],[[194919,194919],"mapped",[17056]],[[194920,194920],"mapped",[31976]],[[194921,194921],"mapped",[31971]],[[194922,194922],"mapped",[32000]],[[194923,194923],"mapped",[155526]],[[194924,194924],"mapped",[32099]],[[194925,194925],"mapped",[17153]],[[194926,194926],"mapped",[32199]],[[194927,194927],"mapped",[32258]],[[194928,194928],"mapped",[32325]],[[194929,194929],"mapped",[17204]],[[194930,194930],"mapped",[156200]],[[194931,194931],"mapped",[156231]],[[194932,194932],"mapped",[17241]],[[194933,194933],"mapped",[156377]],[[194934,194934],"mapped",[32634]],[[194935,194935],"mapped",[156478]],[[194936,194936],"mapped",[32661]],[[194937,194937],"mapped",[32762]],[[194938,194938],"mapped",[32773]],[[194939,194939],"mapped",[156890]],[[194940,194940],"mapped",[156963]],[[194941,194941],"mapped",[32864]],[[194942,194942],"mapped",[157096]],[[194943,194943],"mapped",[32880]],[[194944,194944],"mapped",[144223]],[[194945,194945],"mapped",[17365]],[[194946,194946],"mapped",[32946]],[[194947,194947],"mapped",[33027]],[[194948,194948],"mapped",[17419]],[[194949,194949],"mapped",[33086]],[[194950,194950],"mapped",[23221]],[[194951,194951],"mapped",[157607]],[[194952,194952],"mapped",[157621]],[[194953,194953],"mapped",[144275]],[[194954,194954],"mapped",[144284]],[[194955,194955],"mapped",[33281]],[[194956,194956],"mapped",[33284]],[[194957,194957],"mapped",[36766]],[[194958,194958],"mapped",[17515]],[[194959,194959],"mapped",[33425]],[[194960,194960],"mapped",[33419]],[[194961,194961],"mapped",[33437]],[[194962,194962],"mapped",[21171]],[[194963,194963],"mapped",[33457]],[[194964,194964],"mapped",[33459]],[[194965,194965],"mapped",[33469]],[[194966,194966],"mapped",[33510]],[[194967,194967],"mapped",[158524]],[[194968,194968],"mapped",[33509]],[[194969,194969],"mapped",[33565]],[[194970,194970],"mapped",[33635]],[[194971,194971],"mapped",[33709]],[[194972,194972],"mapped",[33571]],[[194973,194973],"mapped",[33725]],[[194974,194974],"mapped",[33767]],[[194975,194975],"mapped",[33879]],[[194976,194976],"mapped",[33619]],[[194977,194977],"mapped",[33738]],[[194978,194978],"mapped",[33740]],[[194979,194979],"mapped",[33756]],[[194980,194980],"mapped",[158774]],[[194981,194981],"mapped",[159083]],[[194982,194982],"mapped",[158933]],[[194983,194983],"mapped",[17707]],[[194984,194984],"mapped",[34033]],[[194985,194985],"mapped",[34035]],[[194986,194986],"mapped",[34070]],[[194987,194987],"mapped",[160714]],[[194988,194988],"mapped",[34148]],[[194989,194989],"mapped",[159532]],[[194990,194990],"mapped",[17757]],[[194991,194991],"mapped",[17761]],[[194992,194992],"mapped",[159665]],[[194993,194993],"mapped",[159954]],[[194994,194994],"mapped",[17771]],[[194995,194995],"mapped",[34384]],[[194996,194996],"mapped",[34396]],[[194997,194997],"mapped",[34407]],[[194998,194998],"mapped",[34409]],[[194999,194999],"mapped",[34473]],[[195000,195000],"mapped",[34440]],[[195001,195001],"mapped",[34574]],[[195002,195002],"mapped",[34530]],[[195003,195003],"mapped",[34681]],[[195004,195004],"mapped",[34600]],[[195005,195005],"mapped",[34667]],[[195006,195006],"mapped",[34694]],[[195007,195007],"disallowed"],[[195008,195008],"mapped",[34785]],[[195009,195009],"mapped",[34817]],[[195010,195010],"mapped",[17913]],[[195011,195011],"mapped",[34912]],[[195012,195012],"mapped",[34915]],[[195013,195013],"mapped",[161383]],[[195014,195014],"mapped",[35031]],[[195015,195015],"mapped",[35038]],[[195016,195016],"mapped",[17973]],[[195017,195017],"mapped",[35066]],[[195018,195018],"mapped",[13499]],[[195019,195019],"mapped",[161966]],[[195020,195020],"mapped",[162150]],[[195021,195021],"mapped",[18110]],[[195022,195022],"mapped",[18119]],[[195023,195023],"mapped",[35488]],[[195024,195024],"mapped",[35565]],[[195025,195025],"mapped",[35722]],[[195026,195026],"mapped",[35925]],[[195027,195027],"mapped",[162984]],[[195028,195028],"mapped",[36011]],[[195029,195029],"mapped",[36033]],[[195030,195030],"mapped",[36123]],[[195031,195031],"mapped",[36215]],[[195032,195032],"mapped",[163631]],[[195033,195033],"mapped",[133124]],[[195034,195034],"mapped",[36299]],[[195035,195035],"mapped",[36284]],[[195036,195036],"mapped",[36336]],[[195037,195037],"mapped",[133342]],[[195038,195038],"mapped",[36564]],[[195039,195039],"mapped",[36664]],[[195040,195040],"mapped",[165330]],[[195041,195041],"mapped",[165357]],[[195042,195042],"mapped",[37012]],[[195043,195043],"mapped",[37105]],[[195044,195044],"mapped",[37137]],[[195045,195045],"mapped",[165678]],[[195046,195046],"mapped",[37147]],[[195047,195047],"mapped",[37432]],[[195048,195048],"mapped",[37591]],[[195049,195049],"mapped",[37592]],[[195050,195050],"mapped",[37500]],[[195051,195051],"mapped",[37881]],[[195052,195052],"mapped",[37909]],[[195053,195053],"mapped",[166906]],[[195054,195054],"mapped",[38283]],[[195055,195055],"mapped",[18837]],[[195056,195056],"mapped",[38327]],[[195057,195057],"mapped",[167287]],[[195058,195058],"mapped",[18918]],[[195059,195059],"mapped",[38595]],[[195060,195060],"mapped",[23986]],[[195061,195061],"mapped",[38691]],[[195062,195062],"mapped",[168261]],[[195063,195063],"mapped",[168474]],[[195064,195064],"mapped",[19054]],[[195065,195065],"mapped",[19062]],[[195066,195066],"mapped",[38880]],[[195067,195067],"mapped",[168970]],[[195068,195068],"mapped",[19122]],[[195069,195069],"mapped",[169110]],[[195070,195071],"mapped",[38923]],[[195072,195072],"mapped",[38953]],[[195073,195073],"mapped",[169398]],[[195074,195074],"mapped",[39138]],[[195075,195075],"mapped",[19251]],[[195076,195076],"mapped",[39209]],[[195077,195077],"mapped",[39335]],[[195078,195078],"mapped",[39362]],[[195079,195079],"mapped",[39422]],[[195080,195080],"mapped",[19406]],[[195081,195081],"mapped",[170800]],[[195082,195082],"mapped",[39698]],[[195083,195083],"mapped",[40000]],[[195084,195084],"mapped",[40189]],[[195085,195085],"mapped",[19662]],[[195086,195086],"mapped",[19693]],[[195087,195087],"mapped",[40295]],[[195088,195088],"mapped",[172238]],[[195089,195089],"mapped",[19704]],[[195090,195090],"mapped",[172293]],[[195091,195091],"mapped",[172558]],[[195092,195092],"mapped",[172689]],[[195093,195093],"mapped",[40635]],[[195094,195094],"mapped",[19798]],[[195095,195095],"mapped",[40697]],[[195096,195096],"mapped",[40702]],[[195097,195097],"mapped",[40709]],[[195098,195098],"mapped",[40719]],[[195099,195099],"mapped",[40726]],[[195100,195100],"mapped",[40763]],[[195101,195101],"mapped",[173568]],[[195102,196605],"disallowed"],[[196606,196607],"disallowed"],[[196608,262141],"disallowed"],[[262142,262143],"disallowed"],[[262144,327677],"disallowed"],[[327678,327679],"disallowed"],[[327680,393213],"disallowed"],[[393214,393215],"disallowed"],[[393216,458749],"disallowed"],[[458750,458751],"disallowed"],[[458752,524285],"disallowed"],[[524286,524287],"disallowed"],[[524288,589821],"disallowed"],[[589822,589823],"disallowed"],[[589824,655357],"disallowed"],[[655358,655359],"disallowed"],[[655360,720893],"disallowed"],[[720894,720895],"disallowed"],[[720896,786429],"disallowed"],[[786430,786431],"disallowed"],[[786432,851965],"disallowed"],[[851966,851967],"disallowed"],[[851968,917501],"disallowed"],[[917502,917503],"disallowed"],[[917504,917504],"disallowed"],[[917505,917505],"disallowed"],[[917506,917535],"disallowed"],[[917536,917631],"disallowed"],[[917632,917759],"disallowed"],[[917760,917999],"ignored"],[[918000,983037],"disallowed"],[[983038,983039],"disallowed"],[[983040,1048573],"disallowed"],[[1048574,1048575],"disallowed"],[[1048576,1114109],"disallowed"],[[1114110,1114111],"disallowed"]]; + +/***/ }), +/* 968 */ +/***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { + +"use strict"; + +var $export = __webpack_require__(195); +var $indexOf = __webpack_require__(786)(false); +var $native = [].indexOf; +var NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0; + +$export($export.P + $export.F * (NEGATIVE_ZERO || !__webpack_require__(482)($native)), 'Array', { + // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex]) + indexOf: function indexOf(searchElement /* , fromIndex = 0 */) { + return NEGATIVE_ZERO + // convert -0 to +0 + ? $native.apply(this, arguments) || 0 + : $indexOf(this, searchElement, arguments[1]); + } +}); + + +/***/ }), +/* 969 */, +/* 970 */, +/* 971 */ +/***/ (function(module) { + +module.exports = function (exec) { + try { + return !!exec(); + } catch (e) { + return true; + } +}; + + +/***/ }), +/* 972 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +/*! + * mime-db + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015-2022 Douglas Christopher Wilson + * MIT Licensed + */ + +/** + * Module exports. + */ + +module.exports = __webpack_require__(512) + + +/***/ }), +/* 973 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +var anObject = __webpack_require__(990); +var IE8_DOM_DEFINE = __webpack_require__(704); +var toPrimitive = __webpack_require__(710); +var dP = Object.defineProperty; + +exports.f = __webpack_require__(843) ? Object.defineProperty : function defineProperty(O, P, Attributes) { + anObject(O); + P = toPrimitive(P, true); + anObject(Attributes); + if (IE8_DOM_DEFINE) try { + return dP(O, P, Attributes); + } catch (e) { /* empty */ } + if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); + if ('value' in Attributes) O[P] = Attributes.value; + return O; +}; + + +/***/ }), +/* 974 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; + +var _autoLinkEntities = _interopRequireDefault(__webpack_require__(93)); + +var _extractUrlsWithIndices = _interopRequireDefault(__webpack_require__(257)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text, options) { + var entities = (0, _extractUrlsWithIndices["default"])(text, { + extractUrlsWithoutProtocol: false + }); + return (0, _autoLinkEntities["default"])(text, entities, options); +} + +module.exports = exports.default; + +/***/ }), +/* 975 */ +/***/ (function(module) { + +var hasOwnProperty = {}.hasOwnProperty; +module.exports = function (it, key) { + return hasOwnProperty.call(it, key); +}; + + +/***/ }), +/* 976 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +var global = __webpack_require__(300); +var hide = __webpack_require__(609); +var has = __webpack_require__(975); +var SRC = __webpack_require__(750)('src'); +var $toString = __webpack_require__(403); +var TO_STRING = 'toString'; +var TPL = ('' + $toString).split(TO_STRING); + +__webpack_require__(245).inspectSource = function (it) { + return $toString.call(it); +}; + +(module.exports = function (O, key, val, safe) { + var isFunction = typeof val == 'function'; + if (isFunction) has(val, 'name') || hide(val, 'name', key); + if (O[key] === val) return; + if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); + if (O === global) { + O[key] = val; + } else if (!safe) { + delete O[key]; + hide(O, key, val); + } else if (O[key]) { + O[key] = val; + } else { + hide(O, key, val); + } +// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative +})(Function.prototype, TO_STRING, function toString() { + return typeof this == 'function' && this[SRC] || $toString.call(this); +}); + + +/***/ }), +/* 977 */, +/* 978 */ +/***/ (function(module) { + +module.exports = isTypedArray +isTypedArray.strict = isStrictTypedArray +isTypedArray.loose = isLooseTypedArray + +var toString = Object.prototype.toString +var names = { + '[object Int8Array]': true + , '[object Int16Array]': true + , '[object Int32Array]': true + , '[object Uint8Array]': true + , '[object Uint8ClampedArray]': true + , '[object Uint16Array]': true + , '[object Uint32Array]': true + , '[object Float32Array]': true + , '[object Float64Array]': true +} + +function isTypedArray(arr) { + return ( + isStrictTypedArray(arr) + || isLooseTypedArray(arr) + ) +} + +function isStrictTypedArray(arr) { + return ( + arr instanceof Int8Array + || arr instanceof Int16Array + || arr instanceof Int32Array + || arr instanceof Uint8Array + || arr instanceof Uint8ClampedArray + || arr instanceof Uint16Array + || arr instanceof Uint32Array + || arr instanceof Float32Array + || arr instanceof Float64Array + ) +} + +function isLooseTypedArray(arr) { + return names[toString.call(arr)] +} + + +/***/ }), +/* 979 */, +/* 980 */, +/* 981 */, +/* 982 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +// Copyright 2017 Joyent, Inc. + +module.exports = { + read: read, + write: write +}; + +var assert = __webpack_require__(489); +var Buffer = __webpack_require__(726).Buffer; +var Key = __webpack_require__(500); +var PrivateKey = __webpack_require__(502); +var utils = __webpack_require__(270); +var SSHBuffer = __webpack_require__(940); +var Dhe = __webpack_require__(290); + +var supportedAlgos = { + 'rsa-sha1' : 5, + 'rsa-sha256' : 8, + 'rsa-sha512' : 10, + 'ecdsa-p256-sha256' : 13, + 'ecdsa-p384-sha384' : 14 + /* + * ed25519 is hypothetically supported with id 15 + * but the common tools available don't appear to be + * capable of generating/using ed25519 keys + */ +}; + +var supportedAlgosById = {}; +Object.keys(supportedAlgos).forEach(function (k) { + supportedAlgosById[supportedAlgos[k]] = k.toUpperCase(); +}); + +function read(buf, options) { + if (typeof (buf) !== 'string') { + assert.buffer(buf, 'buf'); + buf = buf.toString('ascii'); + } + var lines = buf.split('\n'); + if (lines[0].match(/^Private-key-format\: v1/)) { + var algElems = lines[1].split(' '); + var algoNum = parseInt(algElems[1], 10); + var algoName = algElems[2]; + if (!supportedAlgosById[algoNum]) + throw (new Error('Unsupported algorithm: ' + algoName)); + return (readDNSSECPrivateKey(algoNum, lines.slice(2))); + } + + // skip any comment-lines + var line = 0; + /* JSSTYLED */ + while (lines[line].match(/^\;/)) + line++; + // we should now have *one single* line left with our KEY on it. + if ((lines[line].match(/\. IN KEY /) || + lines[line].match(/\. IN DNSKEY /)) && lines[line+1].length === 0) { + return (readRFC3110(lines[line])); + } + throw (new Error('Cannot parse dnssec key')); +} + +function readRFC3110(keyString) { + var elems = keyString.split(' '); + //unused var flags = parseInt(elems[3], 10); + //unused var protocol = parseInt(elems[4], 10); + var algorithm = parseInt(elems[5], 10); + if (!supportedAlgosById[algorithm]) + throw (new Error('Unsupported algorithm: ' + algorithm)); + var base64key = elems.slice(6, elems.length).join(); + var keyBuffer = Buffer.from(base64key, 'base64'); + if (supportedAlgosById[algorithm].match(/^RSA-/)) { + // join the rest of the body into a single base64-blob + var publicExponentLen = keyBuffer.readUInt8(0); + if (publicExponentLen != 3 && publicExponentLen != 1) + throw (new Error('Cannot parse dnssec key: ' + + 'unsupported exponent length')); + + var publicExponent = keyBuffer.slice(1, publicExponentLen+1); + publicExponent = utils.mpNormalize(publicExponent); + var modulus = keyBuffer.slice(1+publicExponentLen); + modulus = utils.mpNormalize(modulus); + // now, make the key + var rsaKey = { + type: 'rsa', + parts: [] + }; + rsaKey.parts.push({ name: 'e', data: publicExponent}); + rsaKey.parts.push({ name: 'n', data: modulus}); + return (new Key(rsaKey)); + } + if (supportedAlgosById[algorithm] === 'ECDSA-P384-SHA384' || + supportedAlgosById[algorithm] === 'ECDSA-P256-SHA256') { + var curve = 'nistp384'; + var size = 384; + if (supportedAlgosById[algorithm].match(/^ECDSA-P256-SHA256/)) { + curve = 'nistp256'; + size = 256; + } + + var ecdsaKey = { + type: 'ecdsa', + curve: curve, + size: size, + parts: [ + {name: 'curve', data: Buffer.from(curve) }, + {name: 'Q', data: utils.ecNormalize(keyBuffer) } + ] + }; + return (new Key(ecdsaKey)); + } + throw (new Error('Unsupported algorithm: ' + + supportedAlgosById[algorithm])); +} + +function elementToBuf(e) { + return (Buffer.from(e.split(' ')[1], 'base64')); +} + +function readDNSSECRSAPrivateKey(elements) { + var rsaParams = {}; + elements.forEach(function (element) { + if (element.split(' ')[0] === 'Modulus:') + rsaParams['n'] = elementToBuf(element); + else if (element.split(' ')[0] === 'PublicExponent:') + rsaParams['e'] = elementToBuf(element); + else if (element.split(' ')[0] === 'PrivateExponent:') + rsaParams['d'] = elementToBuf(element); + else if (element.split(' ')[0] === 'Prime1:') + rsaParams['p'] = elementToBuf(element); + else if (element.split(' ')[0] === 'Prime2:') + rsaParams['q'] = elementToBuf(element); + else if (element.split(' ')[0] === 'Exponent1:') + rsaParams['dmodp'] = elementToBuf(element); + else if (element.split(' ')[0] === 'Exponent2:') + rsaParams['dmodq'] = elementToBuf(element); + else if (element.split(' ')[0] === 'Coefficient:') + rsaParams['iqmp'] = elementToBuf(element); + }); + // now, make the key + var key = { + type: 'rsa', + parts: [ + { name: 'e', data: utils.mpNormalize(rsaParams['e'])}, + { name: 'n', data: utils.mpNormalize(rsaParams['n'])}, + { name: 'd', data: utils.mpNormalize(rsaParams['d'])}, + { name: 'p', data: utils.mpNormalize(rsaParams['p'])}, + { name: 'q', data: utils.mpNormalize(rsaParams['q'])}, + { name: 'dmodp', + data: utils.mpNormalize(rsaParams['dmodp'])}, + { name: 'dmodq', + data: utils.mpNormalize(rsaParams['dmodq'])}, + { name: 'iqmp', + data: utils.mpNormalize(rsaParams['iqmp'])} + ] + }; + return (new PrivateKey(key)); +} + +function readDNSSECPrivateKey(alg, elements) { + if (supportedAlgosById[alg].match(/^RSA-/)) { + return (readDNSSECRSAPrivateKey(elements)); + } + if (supportedAlgosById[alg] === 'ECDSA-P384-SHA384' || + supportedAlgosById[alg] === 'ECDSA-P256-SHA256') { + var d = Buffer.from(elements[0].split(' ')[1], 'base64'); + var curve = 'nistp384'; + var size = 384; + if (supportedAlgosById[alg] === 'ECDSA-P256-SHA256') { + curve = 'nistp256'; + size = 256; + } + // DNSSEC generates the public-key on the fly (go calculate it) + var publicKey = utils.publicFromPrivateECDSA(curve, d); + var Q = publicKey.part['Q'].data; + var ecdsaKey = { + type: 'ecdsa', + curve: curve, + size: size, + parts: [ + {name: 'curve', data: Buffer.from(curve) }, + {name: 'd', data: d }, + {name: 'Q', data: Q } + ] + }; + return (new PrivateKey(ecdsaKey)); + } + throw (new Error('Unsupported algorithm: ' + supportedAlgosById[alg])); +} + +function dnssecTimestamp(date) { + var year = date.getFullYear() + ''; //stringify + var month = (date.getMonth() + 1); + var timestampStr = year + month + date.getUTCDate(); + timestampStr += '' + date.getUTCHours() + date.getUTCMinutes(); + timestampStr += date.getUTCSeconds(); + return (timestampStr); +} + +function rsaAlgFromOptions(opts) { + if (!opts || !opts.hashAlgo || opts.hashAlgo === 'sha1') + return ('5 (RSASHA1)'); + else if (opts.hashAlgo === 'sha256') + return ('8 (RSASHA256)'); + else if (opts.hashAlgo === 'sha512') + return ('10 (RSASHA512)'); + else + throw (new Error('Unknown or unsupported hash: ' + + opts.hashAlgo)); +} + +function writeRSA(key, options) { + // if we're missing parts, add them. + if (!key.part.dmodp || !key.part.dmodq) { + utils.addRSAMissing(key); + } + + var out = ''; + out += 'Private-key-format: v1.3\n'; + out += 'Algorithm: ' + rsaAlgFromOptions(options) + '\n'; + var n = utils.mpDenormalize(key.part['n'].data); + out += 'Modulus: ' + n.toString('base64') + '\n'; + var e = utils.mpDenormalize(key.part['e'].data); + out += 'PublicExponent: ' + e.toString('base64') + '\n'; + var d = utils.mpDenormalize(key.part['d'].data); + out += 'PrivateExponent: ' + d.toString('base64') + '\n'; + var p = utils.mpDenormalize(key.part['p'].data); + out += 'Prime1: ' + p.toString('base64') + '\n'; + var q = utils.mpDenormalize(key.part['q'].data); + out += 'Prime2: ' + q.toString('base64') + '\n'; + var dmodp = utils.mpDenormalize(key.part['dmodp'].data); + out += 'Exponent1: ' + dmodp.toString('base64') + '\n'; + var dmodq = utils.mpDenormalize(key.part['dmodq'].data); + out += 'Exponent2: ' + dmodq.toString('base64') + '\n'; + var iqmp = utils.mpDenormalize(key.part['iqmp'].data); + out += 'Coefficient: ' + iqmp.toString('base64') + '\n'; + // Assume that we're valid as-of now + var timestamp = new Date(); + out += 'Created: ' + dnssecTimestamp(timestamp) + '\n'; + out += 'Publish: ' + dnssecTimestamp(timestamp) + '\n'; + out += 'Activate: ' + dnssecTimestamp(timestamp) + '\n'; + return (Buffer.from(out, 'ascii')); +} + +function writeECDSA(key, options) { + var out = ''; + out += 'Private-key-format: v1.3\n'; + + if (key.curve === 'nistp256') { + out += 'Algorithm: 13 (ECDSAP256SHA256)\n'; + } else if (key.curve === 'nistp384') { + out += 'Algorithm: 14 (ECDSAP384SHA384)\n'; + } else { + throw (new Error('Unsupported curve')); + } + var base64Key = key.part['d'].data.toString('base64'); + out += 'PrivateKey: ' + base64Key + '\n'; + + // Assume that we're valid as-of now + var timestamp = new Date(); + out += 'Created: ' + dnssecTimestamp(timestamp) + '\n'; + out += 'Publish: ' + dnssecTimestamp(timestamp) + '\n'; + out += 'Activate: ' + dnssecTimestamp(timestamp) + '\n'; + + return (Buffer.from(out, 'ascii')); +} + +function write(key, options) { + if (PrivateKey.isPrivateKey(key)) { + if (key.type === 'rsa') { + return (writeRSA(key, options)); + } else if (key.type === 'ecdsa') { + return (writeECDSA(key, options)); + } else { + throw (new Error('Unsupported algorithm: ' + key.type)); + } + } else if (Key.isKey(key)) { + /* + * RFC3110 requires a keyname, and a keytype, which we + * don't really have a mechanism for specifying such + * additional metadata. + */ + throw (new Error('Format "dnssec" only supports ' + + 'writing private keys')); + } else { + throw (new Error('key is not a Key or PrivateKey')); + } +} + + +/***/ }), +/* 983 */ +/***/ (function(module) { + +module.exports = ["ac","com.ac","edu.ac","gov.ac","net.ac","mil.ac","org.ac","ad","nom.ad","ae","co.ae","net.ae","org.ae","sch.ae","ac.ae","gov.ae","mil.ae","aero","accident-investigation.aero","accident-prevention.aero","aerobatic.aero","aeroclub.aero","aerodrome.aero","agents.aero","aircraft.aero","airline.aero","airport.aero","air-surveillance.aero","airtraffic.aero","air-traffic-control.aero","ambulance.aero","amusement.aero","association.aero","author.aero","ballooning.aero","broker.aero","caa.aero","cargo.aero","catering.aero","certification.aero","championship.aero","charter.aero","civilaviation.aero","club.aero","conference.aero","consultant.aero","consulting.aero","control.aero","council.aero","crew.aero","design.aero","dgca.aero","educator.aero","emergency.aero","engine.aero","engineer.aero","entertainment.aero","equipment.aero","exchange.aero","express.aero","federation.aero","flight.aero","freight.aero","fuel.aero","gliding.aero","government.aero","groundhandling.aero","group.aero","hanggliding.aero","homebuilt.aero","insurance.aero","journal.aero","journalist.aero","leasing.aero","logistics.aero","magazine.aero","maintenance.aero","media.aero","microlight.aero","modelling.aero","navigation.aero","parachuting.aero","paragliding.aero","passenger-association.aero","pilot.aero","press.aero","production.aero","recreation.aero","repbody.aero","res.aero","research.aero","rotorcraft.aero","safety.aero","scientist.aero","services.aero","show.aero","skydiving.aero","software.aero","student.aero","trader.aero","trading.aero","trainer.aero","union.aero","workinggroup.aero","works.aero","af","gov.af","com.af","org.af","net.af","edu.af","ag","com.ag","org.ag","net.ag","co.ag","nom.ag","ai","off.ai","com.ai","net.ai","org.ai","al","com.al","edu.al","gov.al","mil.al","net.al","org.al","am","co.am","com.am","commune.am","net.am","org.am","ao","ed.ao","gv.ao","og.ao","co.ao","pb.ao","it.ao","aq","ar","com.ar","edu.ar","gob.ar","gov.ar","int.ar","mil.ar","musica.ar","net.ar","org.ar","tur.ar","arpa","e164.arpa","in-addr.arpa","ip6.arpa","iris.arpa","uri.arpa","urn.arpa","as","gov.as","asia","at","ac.at","co.at","gv.at","or.at","au","com.au","net.au","org.au","edu.au","gov.au","asn.au","id.au","info.au","conf.au","oz.au","act.au","nsw.au","nt.au","qld.au","sa.au","tas.au","vic.au","wa.au","act.edu.au","catholic.edu.au","eq.edu.au","nsw.edu.au","nt.edu.au","qld.edu.au","sa.edu.au","tas.edu.au","vic.edu.au","wa.edu.au","qld.gov.au","sa.gov.au","tas.gov.au","vic.gov.au","wa.gov.au","education.tas.edu.au","schools.nsw.edu.au","aw","com.aw","ax","az","com.az","net.az","int.az","gov.az","org.az","edu.az","info.az","pp.az","mil.az","name.az","pro.az","biz.az","ba","com.ba","edu.ba","gov.ba","mil.ba","net.ba","org.ba","bb","biz.bb","co.bb","com.bb","edu.bb","gov.bb","info.bb","net.bb","org.bb","store.bb","tv.bb","*.bd","be","ac.be","bf","gov.bf","bg","a.bg","b.bg","c.bg","d.bg","e.bg","f.bg","g.bg","h.bg","i.bg","j.bg","k.bg","l.bg","m.bg","n.bg","o.bg","p.bg","q.bg","r.bg","s.bg","t.bg","u.bg","v.bg","w.bg","x.bg","y.bg","z.bg","0.bg","1.bg","2.bg","3.bg","4.bg","5.bg","6.bg","7.bg","8.bg","9.bg","bh","com.bh","edu.bh","net.bh","org.bh","gov.bh","bi","co.bi","com.bi","edu.bi","or.bi","org.bi","biz","bj","asso.bj","barreau.bj","gouv.bj","bm","com.bm","edu.bm","gov.bm","net.bm","org.bm","bn","com.bn","edu.bn","gov.bn","net.bn","org.bn","bo","com.bo","edu.bo","gob.bo","int.bo","org.bo","net.bo","mil.bo","tv.bo","web.bo","academia.bo","agro.bo","arte.bo","blog.bo","bolivia.bo","ciencia.bo","cooperativa.bo","democracia.bo","deporte.bo","ecologia.bo","economia.bo","empresa.bo","indigena.bo","industria.bo","info.bo","medicina.bo","movimiento.bo","musica.bo","natural.bo","nombre.bo","noticias.bo","patria.bo","politica.bo","profesional.bo","plurinacional.bo","pueblo.bo","revista.bo","salud.bo","tecnologia.bo","tksat.bo","transporte.bo","wiki.bo","br","9guacu.br","abc.br","adm.br","adv.br","agr.br","aju.br","am.br","anani.br","aparecida.br","arq.br","art.br","ato.br","b.br","barueri.br","belem.br","bhz.br","bio.br","blog.br","bmd.br","boavista.br","bsb.br","campinagrande.br","campinas.br","caxias.br","cim.br","cng.br","cnt.br","com.br","contagem.br","coop.br","cri.br","cuiaba.br","curitiba.br","def.br","ecn.br","eco.br","edu.br","emp.br","eng.br","esp.br","etc.br","eti.br","far.br","feira.br","flog.br","floripa.br","fm.br","fnd.br","fortal.br","fot.br","foz.br","fst.br","g12.br","ggf.br","goiania.br","gov.br","ac.gov.br","al.gov.br","am.gov.br","ap.gov.br","ba.gov.br","ce.gov.br","df.gov.br","es.gov.br","go.gov.br","ma.gov.br","mg.gov.br","ms.gov.br","mt.gov.br","pa.gov.br","pb.gov.br","pe.gov.br","pi.gov.br","pr.gov.br","rj.gov.br","rn.gov.br","ro.gov.br","rr.gov.br","rs.gov.br","sc.gov.br","se.gov.br","sp.gov.br","to.gov.br","gru.br","imb.br","ind.br","inf.br","jab.br","jampa.br","jdf.br","joinville.br","jor.br","jus.br","leg.br","lel.br","londrina.br","macapa.br","maceio.br","manaus.br","maringa.br","mat.br","med.br","mil.br","morena.br","mp.br","mus.br","natal.br","net.br","niteroi.br","*.nom.br","not.br","ntr.br","odo.br","ong.br","org.br","osasco.br","palmas.br","poa.br","ppg.br","pro.br","psc.br","psi.br","pvh.br","qsl.br","radio.br","rec.br","recife.br","ribeirao.br","rio.br","riobranco.br","riopreto.br","salvador.br","sampa.br","santamaria.br","santoandre.br","saobernardo.br","saogonca.br","sjc.br","slg.br","slz.br","sorocaba.br","srv.br","taxi.br","tc.br","teo.br","the.br","tmp.br","trd.br","tur.br","tv.br","udi.br","vet.br","vix.br","vlog.br","wiki.br","zlg.br","bs","com.bs","net.bs","org.bs","edu.bs","gov.bs","bt","com.bt","edu.bt","gov.bt","net.bt","org.bt","bv","bw","co.bw","org.bw","by","gov.by","mil.by","com.by","of.by","bz","com.bz","net.bz","org.bz","edu.bz","gov.bz","ca","ab.ca","bc.ca","mb.ca","nb.ca","nf.ca","nl.ca","ns.ca","nt.ca","nu.ca","on.ca","pe.ca","qc.ca","sk.ca","yk.ca","gc.ca","cat","cc","cd","gov.cd","cf","cg","ch","ci","org.ci","or.ci","com.ci","co.ci","edu.ci","ed.ci","ac.ci","net.ci","go.ci","asso.ci","aéroport.ci","int.ci","presse.ci","md.ci","gouv.ci","*.ck","!www.ck","cl","gov.cl","gob.cl","co.cl","mil.cl","cm","co.cm","com.cm","gov.cm","net.cm","cn","ac.cn","com.cn","edu.cn","gov.cn","net.cn","org.cn","mil.cn","公司.cn","网络.cn","網絡.cn","ah.cn","bj.cn","cq.cn","fj.cn","gd.cn","gs.cn","gz.cn","gx.cn","ha.cn","hb.cn","he.cn","hi.cn","hl.cn","hn.cn","jl.cn","js.cn","jx.cn","ln.cn","nm.cn","nx.cn","qh.cn","sc.cn","sd.cn","sh.cn","sn.cn","sx.cn","tj.cn","xj.cn","xz.cn","yn.cn","zj.cn","hk.cn","mo.cn","tw.cn","co","arts.co","com.co","edu.co","firm.co","gov.co","info.co","int.co","mil.co","net.co","nom.co","org.co","rec.co","web.co","com","coop","cr","ac.cr","co.cr","ed.cr","fi.cr","go.cr","or.cr","sa.cr","cu","com.cu","edu.cu","org.cu","net.cu","gov.cu","inf.cu","cv","cw","com.cw","edu.cw","net.cw","org.cw","cx","gov.cx","cy","ac.cy","biz.cy","com.cy","ekloges.cy","gov.cy","ltd.cy","name.cy","net.cy","org.cy","parliament.cy","press.cy","pro.cy","tm.cy","cz","de","dj","dk","dm","com.dm","net.dm","org.dm","edu.dm","gov.dm","do","art.do","com.do","edu.do","gob.do","gov.do","mil.do","net.do","org.do","sld.do","web.do","dz","com.dz","org.dz","net.dz","gov.dz","edu.dz","asso.dz","pol.dz","art.dz","ec","com.ec","info.ec","net.ec","fin.ec","k12.ec","med.ec","pro.ec","org.ec","edu.ec","gov.ec","gob.ec","mil.ec","edu","ee","edu.ee","gov.ee","riik.ee","lib.ee","med.ee","com.ee","pri.ee","aip.ee","org.ee","fie.ee","eg","com.eg","edu.eg","eun.eg","gov.eg","mil.eg","name.eg","net.eg","org.eg","sci.eg","*.er","es","com.es","nom.es","org.es","gob.es","edu.es","et","com.et","gov.et","org.et","edu.et","biz.et","name.et","info.et","net.et","eu","fi","aland.fi","*.fj","*.fk","fm","fo","fr","asso.fr","com.fr","gouv.fr","nom.fr","prd.fr","tm.fr","aeroport.fr","avocat.fr","avoues.fr","cci.fr","chambagri.fr","chirurgiens-dentistes.fr","experts-comptables.fr","geometre-expert.fr","greta.fr","huissier-justice.fr","medecin.fr","notaires.fr","pharmacien.fr","port.fr","veterinaire.fr","ga","gb","gd","ge","com.ge","edu.ge","gov.ge","org.ge","mil.ge","net.ge","pvt.ge","gf","gg","co.gg","net.gg","org.gg","gh","com.gh","edu.gh","gov.gh","org.gh","mil.gh","gi","com.gi","ltd.gi","gov.gi","mod.gi","edu.gi","org.gi","gl","co.gl","com.gl","edu.gl","net.gl","org.gl","gm","gn","ac.gn","com.gn","edu.gn","gov.gn","org.gn","net.gn","gov","gp","com.gp","net.gp","mobi.gp","edu.gp","org.gp","asso.gp","gq","gr","com.gr","edu.gr","net.gr","org.gr","gov.gr","gs","gt","com.gt","edu.gt","gob.gt","ind.gt","mil.gt","net.gt","org.gt","gu","com.gu","edu.gu","gov.gu","guam.gu","info.gu","net.gu","org.gu","web.gu","gw","gy","co.gy","com.gy","edu.gy","gov.gy","net.gy","org.gy","hk","com.hk","edu.hk","gov.hk","idv.hk","net.hk","org.hk","公司.hk","教育.hk","敎育.hk","政府.hk","個人.hk","个人.hk","箇人.hk","網络.hk","网络.hk","组織.hk","網絡.hk","网絡.hk","组织.hk","組織.hk","組织.hk","hm","hn","com.hn","edu.hn","org.hn","net.hn","mil.hn","gob.hn","hr","iz.hr","from.hr","name.hr","com.hr","ht","com.ht","shop.ht","firm.ht","info.ht","adult.ht","net.ht","pro.ht","org.ht","med.ht","art.ht","coop.ht","pol.ht","asso.ht","edu.ht","rel.ht","gouv.ht","perso.ht","hu","co.hu","info.hu","org.hu","priv.hu","sport.hu","tm.hu","2000.hu","agrar.hu","bolt.hu","casino.hu","city.hu","erotica.hu","erotika.hu","film.hu","forum.hu","games.hu","hotel.hu","ingatlan.hu","jogasz.hu","konyvelo.hu","lakas.hu","media.hu","news.hu","reklam.hu","sex.hu","shop.hu","suli.hu","szex.hu","tozsde.hu","utazas.hu","video.hu","id","ac.id","biz.id","co.id","desa.id","go.id","mil.id","my.id","net.id","or.id","ponpes.id","sch.id","web.id","ie","gov.ie","il","ac.il","co.il","gov.il","idf.il","k12.il","muni.il","net.il","org.il","im","ac.im","co.im","com.im","ltd.co.im","net.im","org.im","plc.co.im","tt.im","tv.im","in","co.in","firm.in","net.in","org.in","gen.in","ind.in","nic.in","ac.in","edu.in","res.in","gov.in","mil.in","info","int","eu.int","io","com.io","iq","gov.iq","edu.iq","mil.iq","com.iq","org.iq","net.iq","ir","ac.ir","co.ir","gov.ir","id.ir","net.ir","org.ir","sch.ir","ایران.ir","ايران.ir","is","net.is","com.is","edu.is","gov.is","org.is","int.is","it","gov.it","edu.it","abr.it","abruzzo.it","aosta-valley.it","aostavalley.it","bas.it","basilicata.it","cal.it","calabria.it","cam.it","campania.it","emilia-romagna.it","emiliaromagna.it","emr.it","friuli-v-giulia.it","friuli-ve-giulia.it","friuli-vegiulia.it","friuli-venezia-giulia.it","friuli-veneziagiulia.it","friuli-vgiulia.it","friuliv-giulia.it","friulive-giulia.it","friulivegiulia.it","friulivenezia-giulia.it","friuliveneziagiulia.it","friulivgiulia.it","fvg.it","laz.it","lazio.it","lig.it","liguria.it","lom.it","lombardia.it","lombardy.it","lucania.it","mar.it","marche.it","mol.it","molise.it","piedmont.it","piemonte.it","pmn.it","pug.it","puglia.it","sar.it","sardegna.it","sardinia.it","sic.it","sicilia.it","sicily.it","taa.it","tos.it","toscana.it","trentin-sud-tirol.it","trentin-süd-tirol.it","trentin-sudtirol.it","trentin-südtirol.it","trentin-sued-tirol.it","trentin-suedtirol.it","trentino-a-adige.it","trentino-aadige.it","trentino-alto-adige.it","trentino-altoadige.it","trentino-s-tirol.it","trentino-stirol.it","trentino-sud-tirol.it","trentino-süd-tirol.it","trentino-sudtirol.it","trentino-südtirol.it","trentino-sued-tirol.it","trentino-suedtirol.it","trentino.it","trentinoa-adige.it","trentinoaadige.it","trentinoalto-adige.it","trentinoaltoadige.it","trentinos-tirol.it","trentinostirol.it","trentinosud-tirol.it","trentinosüd-tirol.it","trentinosudtirol.it","trentinosüdtirol.it","trentinosued-tirol.it","trentinosuedtirol.it","trentinsud-tirol.it","trentinsüd-tirol.it","trentinsudtirol.it","trentinsüdtirol.it","trentinsued-tirol.it","trentinsuedtirol.it","tuscany.it","umb.it","umbria.it","val-d-aosta.it","val-daosta.it","vald-aosta.it","valdaosta.it","valle-aosta.it","valle-d-aosta.it","valle-daosta.it","valleaosta.it","valled-aosta.it","valledaosta.it","vallee-aoste.it","vallée-aoste.it","vallee-d-aoste.it","vallée-d-aoste.it","valleeaoste.it","valléeaoste.it","valleedaoste.it","valléedaoste.it","vao.it","vda.it","ven.it","veneto.it","ag.it","agrigento.it","al.it","alessandria.it","alto-adige.it","altoadige.it","an.it","ancona.it","andria-barletta-trani.it","andria-trani-barletta.it","andriabarlettatrani.it","andriatranibarletta.it","ao.it","aosta.it","aoste.it","ap.it","aq.it","aquila.it","ar.it","arezzo.it","ascoli-piceno.it","ascolipiceno.it","asti.it","at.it","av.it","avellino.it","ba.it","balsan-sudtirol.it","balsan-südtirol.it","balsan-suedtirol.it","balsan.it","bari.it","barletta-trani-andria.it","barlettatraniandria.it","belluno.it","benevento.it","bergamo.it","bg.it","bi.it","biella.it","bl.it","bn.it","bo.it","bologna.it","bolzano-altoadige.it","bolzano.it","bozen-sudtirol.it","bozen-südtirol.it","bozen-suedtirol.it","bozen.it","br.it","brescia.it","brindisi.it","bs.it","bt.it","bulsan-sudtirol.it","bulsan-südtirol.it","bulsan-suedtirol.it","bulsan.it","bz.it","ca.it","cagliari.it","caltanissetta.it","campidano-medio.it","campidanomedio.it","campobasso.it","carbonia-iglesias.it","carboniaiglesias.it","carrara-massa.it","carraramassa.it","caserta.it","catania.it","catanzaro.it","cb.it","ce.it","cesena-forli.it","cesena-forlì.it","cesenaforli.it","cesenaforlì.it","ch.it","chieti.it","ci.it","cl.it","cn.it","co.it","como.it","cosenza.it","cr.it","cremona.it","crotone.it","cs.it","ct.it","cuneo.it","cz.it","dell-ogliastra.it","dellogliastra.it","en.it","enna.it","fc.it","fe.it","fermo.it","ferrara.it","fg.it","fi.it","firenze.it","florence.it","fm.it","foggia.it","forli-cesena.it","forlì-cesena.it","forlicesena.it","forlìcesena.it","fr.it","frosinone.it","ge.it","genoa.it","genova.it","go.it","gorizia.it","gr.it","grosseto.it","iglesias-carbonia.it","iglesiascarbonia.it","im.it","imperia.it","is.it","isernia.it","kr.it","la-spezia.it","laquila.it","laspezia.it","latina.it","lc.it","le.it","lecce.it","lecco.it","li.it","livorno.it","lo.it","lodi.it","lt.it","lu.it","lucca.it","macerata.it","mantova.it","massa-carrara.it","massacarrara.it","matera.it","mb.it","mc.it","me.it","medio-campidano.it","mediocampidano.it","messina.it","mi.it","milan.it","milano.it","mn.it","mo.it","modena.it","monza-brianza.it","monza-e-della-brianza.it","monza.it","monzabrianza.it","monzaebrianza.it","monzaedellabrianza.it","ms.it","mt.it","na.it","naples.it","napoli.it","no.it","novara.it","nu.it","nuoro.it","og.it","ogliastra.it","olbia-tempio.it","olbiatempio.it","or.it","oristano.it","ot.it","pa.it","padova.it","padua.it","palermo.it","parma.it","pavia.it","pc.it","pd.it","pe.it","perugia.it","pesaro-urbino.it","pesarourbino.it","pescara.it","pg.it","pi.it","piacenza.it","pisa.it","pistoia.it","pn.it","po.it","pordenone.it","potenza.it","pr.it","prato.it","pt.it","pu.it","pv.it","pz.it","ra.it","ragusa.it","ravenna.it","rc.it","re.it","reggio-calabria.it","reggio-emilia.it","reggiocalabria.it","reggioemilia.it","rg.it","ri.it","rieti.it","rimini.it","rm.it","rn.it","ro.it","roma.it","rome.it","rovigo.it","sa.it","salerno.it","sassari.it","savona.it","si.it","siena.it","siracusa.it","so.it","sondrio.it","sp.it","sr.it","ss.it","suedtirol.it","südtirol.it","sv.it","ta.it","taranto.it","te.it","tempio-olbia.it","tempioolbia.it","teramo.it","terni.it","tn.it","to.it","torino.it","tp.it","tr.it","trani-andria-barletta.it","trani-barletta-andria.it","traniandriabarletta.it","tranibarlettaandria.it","trapani.it","trento.it","treviso.it","trieste.it","ts.it","turin.it","tv.it","ud.it","udine.it","urbino-pesaro.it","urbinopesaro.it","va.it","varese.it","vb.it","vc.it","ve.it","venezia.it","venice.it","verbania.it","vercelli.it","verona.it","vi.it","vibo-valentia.it","vibovalentia.it","vicenza.it","viterbo.it","vr.it","vs.it","vt.it","vv.it","je","co.je","net.je","org.je","*.jm","jo","com.jo","org.jo","net.jo","edu.jo","sch.jo","gov.jo","mil.jo","name.jo","jobs","jp","ac.jp","ad.jp","co.jp","ed.jp","go.jp","gr.jp","lg.jp","ne.jp","or.jp","aichi.jp","akita.jp","aomori.jp","chiba.jp","ehime.jp","fukui.jp","fukuoka.jp","fukushima.jp","gifu.jp","gunma.jp","hiroshima.jp","hokkaido.jp","hyogo.jp","ibaraki.jp","ishikawa.jp","iwate.jp","kagawa.jp","kagoshima.jp","kanagawa.jp","kochi.jp","kumamoto.jp","kyoto.jp","mie.jp","miyagi.jp","miyazaki.jp","nagano.jp","nagasaki.jp","nara.jp","niigata.jp","oita.jp","okayama.jp","okinawa.jp","osaka.jp","saga.jp","saitama.jp","shiga.jp","shimane.jp","shizuoka.jp","tochigi.jp","tokushima.jp","tokyo.jp","tottori.jp","toyama.jp","wakayama.jp","yamagata.jp","yamaguchi.jp","yamanashi.jp","栃木.jp","愛知.jp","愛媛.jp","兵庫.jp","熊本.jp","茨城.jp","北海道.jp","千葉.jp","和歌山.jp","長崎.jp","長野.jp","新潟.jp","青森.jp","静岡.jp","東京.jp","石川.jp","埼玉.jp","三重.jp","京都.jp","佐賀.jp","大分.jp","大阪.jp","奈良.jp","宮城.jp","宮崎.jp","富山.jp","山口.jp","山形.jp","山梨.jp","岩手.jp","岐阜.jp","岡山.jp","島根.jp","広島.jp","徳島.jp","沖縄.jp","滋賀.jp","神奈川.jp","福井.jp","福岡.jp","福島.jp","秋田.jp","群馬.jp","香川.jp","高知.jp","鳥取.jp","鹿児島.jp","*.kawasaki.jp","*.kitakyushu.jp","*.kobe.jp","*.nagoya.jp","*.sapporo.jp","*.sendai.jp","*.yokohama.jp","!city.kawasaki.jp","!city.kitakyushu.jp","!city.kobe.jp","!city.nagoya.jp","!city.sapporo.jp","!city.sendai.jp","!city.yokohama.jp","aisai.aichi.jp","ama.aichi.jp","anjo.aichi.jp","asuke.aichi.jp","chiryu.aichi.jp","chita.aichi.jp","fuso.aichi.jp","gamagori.aichi.jp","handa.aichi.jp","hazu.aichi.jp","hekinan.aichi.jp","higashiura.aichi.jp","ichinomiya.aichi.jp","inazawa.aichi.jp","inuyama.aichi.jp","isshiki.aichi.jp","iwakura.aichi.jp","kanie.aichi.jp","kariya.aichi.jp","kasugai.aichi.jp","kira.aichi.jp","kiyosu.aichi.jp","komaki.aichi.jp","konan.aichi.jp","kota.aichi.jp","mihama.aichi.jp","miyoshi.aichi.jp","nishio.aichi.jp","nisshin.aichi.jp","obu.aichi.jp","oguchi.aichi.jp","oharu.aichi.jp","okazaki.aichi.jp","owariasahi.aichi.jp","seto.aichi.jp","shikatsu.aichi.jp","shinshiro.aichi.jp","shitara.aichi.jp","tahara.aichi.jp","takahama.aichi.jp","tobishima.aichi.jp","toei.aichi.jp","togo.aichi.jp","tokai.aichi.jp","tokoname.aichi.jp","toyoake.aichi.jp","toyohashi.aichi.jp","toyokawa.aichi.jp","toyone.aichi.jp","toyota.aichi.jp","tsushima.aichi.jp","yatomi.aichi.jp","akita.akita.jp","daisen.akita.jp","fujisato.akita.jp","gojome.akita.jp","hachirogata.akita.jp","happou.akita.jp","higashinaruse.akita.jp","honjo.akita.jp","honjyo.akita.jp","ikawa.akita.jp","kamikoani.akita.jp","kamioka.akita.jp","katagami.akita.jp","kazuno.akita.jp","kitaakita.akita.jp","kosaka.akita.jp","kyowa.akita.jp","misato.akita.jp","mitane.akita.jp","moriyoshi.akita.jp","nikaho.akita.jp","noshiro.akita.jp","odate.akita.jp","oga.akita.jp","ogata.akita.jp","semboku.akita.jp","yokote.akita.jp","yurihonjo.akita.jp","aomori.aomori.jp","gonohe.aomori.jp","hachinohe.aomori.jp","hashikami.aomori.jp","hiranai.aomori.jp","hirosaki.aomori.jp","itayanagi.aomori.jp","kuroishi.aomori.jp","misawa.aomori.jp","mutsu.aomori.jp","nakadomari.aomori.jp","noheji.aomori.jp","oirase.aomori.jp","owani.aomori.jp","rokunohe.aomori.jp","sannohe.aomori.jp","shichinohe.aomori.jp","shingo.aomori.jp","takko.aomori.jp","towada.aomori.jp","tsugaru.aomori.jp","tsuruta.aomori.jp","abiko.chiba.jp","asahi.chiba.jp","chonan.chiba.jp","chosei.chiba.jp","choshi.chiba.jp","chuo.chiba.jp","funabashi.chiba.jp","futtsu.chiba.jp","hanamigawa.chiba.jp","ichihara.chiba.jp","ichikawa.chiba.jp","ichinomiya.chiba.jp","inzai.chiba.jp","isumi.chiba.jp","kamagaya.chiba.jp","kamogawa.chiba.jp","kashiwa.chiba.jp","katori.chiba.jp","katsuura.chiba.jp","kimitsu.chiba.jp","kisarazu.chiba.jp","kozaki.chiba.jp","kujukuri.chiba.jp","kyonan.chiba.jp","matsudo.chiba.jp","midori.chiba.jp","mihama.chiba.jp","minamiboso.chiba.jp","mobara.chiba.jp","mutsuzawa.chiba.jp","nagara.chiba.jp","nagareyama.chiba.jp","narashino.chiba.jp","narita.chiba.jp","noda.chiba.jp","oamishirasato.chiba.jp","omigawa.chiba.jp","onjuku.chiba.jp","otaki.chiba.jp","sakae.chiba.jp","sakura.chiba.jp","shimofusa.chiba.jp","shirako.chiba.jp","shiroi.chiba.jp","shisui.chiba.jp","sodegaura.chiba.jp","sosa.chiba.jp","tako.chiba.jp","tateyama.chiba.jp","togane.chiba.jp","tohnosho.chiba.jp","tomisato.chiba.jp","urayasu.chiba.jp","yachimata.chiba.jp","yachiyo.chiba.jp","yokaichiba.chiba.jp","yokoshibahikari.chiba.jp","yotsukaido.chiba.jp","ainan.ehime.jp","honai.ehime.jp","ikata.ehime.jp","imabari.ehime.jp","iyo.ehime.jp","kamijima.ehime.jp","kihoku.ehime.jp","kumakogen.ehime.jp","masaki.ehime.jp","matsuno.ehime.jp","matsuyama.ehime.jp","namikata.ehime.jp","niihama.ehime.jp","ozu.ehime.jp","saijo.ehime.jp","seiyo.ehime.jp","shikokuchuo.ehime.jp","tobe.ehime.jp","toon.ehime.jp","uchiko.ehime.jp","uwajima.ehime.jp","yawatahama.ehime.jp","echizen.fukui.jp","eiheiji.fukui.jp","fukui.fukui.jp","ikeda.fukui.jp","katsuyama.fukui.jp","mihama.fukui.jp","minamiechizen.fukui.jp","obama.fukui.jp","ohi.fukui.jp","ono.fukui.jp","sabae.fukui.jp","sakai.fukui.jp","takahama.fukui.jp","tsuruga.fukui.jp","wakasa.fukui.jp","ashiya.fukuoka.jp","buzen.fukuoka.jp","chikugo.fukuoka.jp","chikuho.fukuoka.jp","chikujo.fukuoka.jp","chikushino.fukuoka.jp","chikuzen.fukuoka.jp","chuo.fukuoka.jp","dazaifu.fukuoka.jp","fukuchi.fukuoka.jp","hakata.fukuoka.jp","higashi.fukuoka.jp","hirokawa.fukuoka.jp","hisayama.fukuoka.jp","iizuka.fukuoka.jp","inatsuki.fukuoka.jp","kaho.fukuoka.jp","kasuga.fukuoka.jp","kasuya.fukuoka.jp","kawara.fukuoka.jp","keisen.fukuoka.jp","koga.fukuoka.jp","kurate.fukuoka.jp","kurogi.fukuoka.jp","kurume.fukuoka.jp","minami.fukuoka.jp","miyako.fukuoka.jp","miyama.fukuoka.jp","miyawaka.fukuoka.jp","mizumaki.fukuoka.jp","munakata.fukuoka.jp","nakagawa.fukuoka.jp","nakama.fukuoka.jp","nishi.fukuoka.jp","nogata.fukuoka.jp","ogori.fukuoka.jp","okagaki.fukuoka.jp","okawa.fukuoka.jp","oki.fukuoka.jp","omuta.fukuoka.jp","onga.fukuoka.jp","onojo.fukuoka.jp","oto.fukuoka.jp","saigawa.fukuoka.jp","sasaguri.fukuoka.jp","shingu.fukuoka.jp","shinyoshitomi.fukuoka.jp","shonai.fukuoka.jp","soeda.fukuoka.jp","sue.fukuoka.jp","tachiarai.fukuoka.jp","tagawa.fukuoka.jp","takata.fukuoka.jp","toho.fukuoka.jp","toyotsu.fukuoka.jp","tsuiki.fukuoka.jp","ukiha.fukuoka.jp","umi.fukuoka.jp","usui.fukuoka.jp","yamada.fukuoka.jp","yame.fukuoka.jp","yanagawa.fukuoka.jp","yukuhashi.fukuoka.jp","aizubange.fukushima.jp","aizumisato.fukushima.jp","aizuwakamatsu.fukushima.jp","asakawa.fukushima.jp","bandai.fukushima.jp","date.fukushima.jp","fukushima.fukushima.jp","furudono.fukushima.jp","futaba.fukushima.jp","hanawa.fukushima.jp","higashi.fukushima.jp","hirata.fukushima.jp","hirono.fukushima.jp","iitate.fukushima.jp","inawashiro.fukushima.jp","ishikawa.fukushima.jp","iwaki.fukushima.jp","izumizaki.fukushima.jp","kagamiishi.fukushima.jp","kaneyama.fukushima.jp","kawamata.fukushima.jp","kitakata.fukushima.jp","kitashiobara.fukushima.jp","koori.fukushima.jp","koriyama.fukushima.jp","kunimi.fukushima.jp","miharu.fukushima.jp","mishima.fukushima.jp","namie.fukushima.jp","nango.fukushima.jp","nishiaizu.fukushima.jp","nishigo.fukushima.jp","okuma.fukushima.jp","omotego.fukushima.jp","ono.fukushima.jp","otama.fukushima.jp","samegawa.fukushima.jp","shimogo.fukushima.jp","shirakawa.fukushima.jp","showa.fukushima.jp","soma.fukushima.jp","sukagawa.fukushima.jp","taishin.fukushima.jp","tamakawa.fukushima.jp","tanagura.fukushima.jp","tenei.fukushima.jp","yabuki.fukushima.jp","yamato.fukushima.jp","yamatsuri.fukushima.jp","yanaizu.fukushima.jp","yugawa.fukushima.jp","anpachi.gifu.jp","ena.gifu.jp","gifu.gifu.jp","ginan.gifu.jp","godo.gifu.jp","gujo.gifu.jp","hashima.gifu.jp","hichiso.gifu.jp","hida.gifu.jp","higashishirakawa.gifu.jp","ibigawa.gifu.jp","ikeda.gifu.jp","kakamigahara.gifu.jp","kani.gifu.jp","kasahara.gifu.jp","kasamatsu.gifu.jp","kawaue.gifu.jp","kitagata.gifu.jp","mino.gifu.jp","minokamo.gifu.jp","mitake.gifu.jp","mizunami.gifu.jp","motosu.gifu.jp","nakatsugawa.gifu.jp","ogaki.gifu.jp","sakahogi.gifu.jp","seki.gifu.jp","sekigahara.gifu.jp","shirakawa.gifu.jp","tajimi.gifu.jp","takayama.gifu.jp","tarui.gifu.jp","toki.gifu.jp","tomika.gifu.jp","wanouchi.gifu.jp","yamagata.gifu.jp","yaotsu.gifu.jp","yoro.gifu.jp","annaka.gunma.jp","chiyoda.gunma.jp","fujioka.gunma.jp","higashiagatsuma.gunma.jp","isesaki.gunma.jp","itakura.gunma.jp","kanna.gunma.jp","kanra.gunma.jp","katashina.gunma.jp","kawaba.gunma.jp","kiryu.gunma.jp","kusatsu.gunma.jp","maebashi.gunma.jp","meiwa.gunma.jp","midori.gunma.jp","minakami.gunma.jp","naganohara.gunma.jp","nakanojo.gunma.jp","nanmoku.gunma.jp","numata.gunma.jp","oizumi.gunma.jp","ora.gunma.jp","ota.gunma.jp","shibukawa.gunma.jp","shimonita.gunma.jp","shinto.gunma.jp","showa.gunma.jp","takasaki.gunma.jp","takayama.gunma.jp","tamamura.gunma.jp","tatebayashi.gunma.jp","tomioka.gunma.jp","tsukiyono.gunma.jp","tsumagoi.gunma.jp","ueno.gunma.jp","yoshioka.gunma.jp","asaminami.hiroshima.jp","daiwa.hiroshima.jp","etajima.hiroshima.jp","fuchu.hiroshima.jp","fukuyama.hiroshima.jp","hatsukaichi.hiroshima.jp","higashihiroshima.hiroshima.jp","hongo.hiroshima.jp","jinsekikogen.hiroshima.jp","kaita.hiroshima.jp","kui.hiroshima.jp","kumano.hiroshima.jp","kure.hiroshima.jp","mihara.hiroshima.jp","miyoshi.hiroshima.jp","naka.hiroshima.jp","onomichi.hiroshima.jp","osakikamijima.hiroshima.jp","otake.hiroshima.jp","saka.hiroshima.jp","sera.hiroshima.jp","seranishi.hiroshima.jp","shinichi.hiroshima.jp","shobara.hiroshima.jp","takehara.hiroshima.jp","abashiri.hokkaido.jp","abira.hokkaido.jp","aibetsu.hokkaido.jp","akabira.hokkaido.jp","akkeshi.hokkaido.jp","asahikawa.hokkaido.jp","ashibetsu.hokkaido.jp","ashoro.hokkaido.jp","assabu.hokkaido.jp","atsuma.hokkaido.jp","bibai.hokkaido.jp","biei.hokkaido.jp","bifuka.hokkaido.jp","bihoro.hokkaido.jp","biratori.hokkaido.jp","chippubetsu.hokkaido.jp","chitose.hokkaido.jp","date.hokkaido.jp","ebetsu.hokkaido.jp","embetsu.hokkaido.jp","eniwa.hokkaido.jp","erimo.hokkaido.jp","esan.hokkaido.jp","esashi.hokkaido.jp","fukagawa.hokkaido.jp","fukushima.hokkaido.jp","furano.hokkaido.jp","furubira.hokkaido.jp","haboro.hokkaido.jp","hakodate.hokkaido.jp","hamatonbetsu.hokkaido.jp","hidaka.hokkaido.jp","higashikagura.hokkaido.jp","higashikawa.hokkaido.jp","hiroo.hokkaido.jp","hokuryu.hokkaido.jp","hokuto.hokkaido.jp","honbetsu.hokkaido.jp","horokanai.hokkaido.jp","horonobe.hokkaido.jp","ikeda.hokkaido.jp","imakane.hokkaido.jp","ishikari.hokkaido.jp","iwamizawa.hokkaido.jp","iwanai.hokkaido.jp","kamifurano.hokkaido.jp","kamikawa.hokkaido.jp","kamishihoro.hokkaido.jp","kamisunagawa.hokkaido.jp","kamoenai.hokkaido.jp","kayabe.hokkaido.jp","kembuchi.hokkaido.jp","kikonai.hokkaido.jp","kimobetsu.hokkaido.jp","kitahiroshima.hokkaido.jp","kitami.hokkaido.jp","kiyosato.hokkaido.jp","koshimizu.hokkaido.jp","kunneppu.hokkaido.jp","kuriyama.hokkaido.jp","kuromatsunai.hokkaido.jp","kushiro.hokkaido.jp","kutchan.hokkaido.jp","kyowa.hokkaido.jp","mashike.hokkaido.jp","matsumae.hokkaido.jp","mikasa.hokkaido.jp","minamifurano.hokkaido.jp","mombetsu.hokkaido.jp","moseushi.hokkaido.jp","mukawa.hokkaido.jp","muroran.hokkaido.jp","naie.hokkaido.jp","nakagawa.hokkaido.jp","nakasatsunai.hokkaido.jp","nakatombetsu.hokkaido.jp","nanae.hokkaido.jp","nanporo.hokkaido.jp","nayoro.hokkaido.jp","nemuro.hokkaido.jp","niikappu.hokkaido.jp","niki.hokkaido.jp","nishiokoppe.hokkaido.jp","noboribetsu.hokkaido.jp","numata.hokkaido.jp","obihiro.hokkaido.jp","obira.hokkaido.jp","oketo.hokkaido.jp","okoppe.hokkaido.jp","otaru.hokkaido.jp","otobe.hokkaido.jp","otofuke.hokkaido.jp","otoineppu.hokkaido.jp","oumu.hokkaido.jp","ozora.hokkaido.jp","pippu.hokkaido.jp","rankoshi.hokkaido.jp","rebun.hokkaido.jp","rikubetsu.hokkaido.jp","rishiri.hokkaido.jp","rishirifuji.hokkaido.jp","saroma.hokkaido.jp","sarufutsu.hokkaido.jp","shakotan.hokkaido.jp","shari.hokkaido.jp","shibecha.hokkaido.jp","shibetsu.hokkaido.jp","shikabe.hokkaido.jp","shikaoi.hokkaido.jp","shimamaki.hokkaido.jp","shimizu.hokkaido.jp","shimokawa.hokkaido.jp","shinshinotsu.hokkaido.jp","shintoku.hokkaido.jp","shiranuka.hokkaido.jp","shiraoi.hokkaido.jp","shiriuchi.hokkaido.jp","sobetsu.hokkaido.jp","sunagawa.hokkaido.jp","taiki.hokkaido.jp","takasu.hokkaido.jp","takikawa.hokkaido.jp","takinoue.hokkaido.jp","teshikaga.hokkaido.jp","tobetsu.hokkaido.jp","tohma.hokkaido.jp","tomakomai.hokkaido.jp","tomari.hokkaido.jp","toya.hokkaido.jp","toyako.hokkaido.jp","toyotomi.hokkaido.jp","toyoura.hokkaido.jp","tsubetsu.hokkaido.jp","tsukigata.hokkaido.jp","urakawa.hokkaido.jp","urausu.hokkaido.jp","uryu.hokkaido.jp","utashinai.hokkaido.jp","wakkanai.hokkaido.jp","wassamu.hokkaido.jp","yakumo.hokkaido.jp","yoichi.hokkaido.jp","aioi.hyogo.jp","akashi.hyogo.jp","ako.hyogo.jp","amagasaki.hyogo.jp","aogaki.hyogo.jp","asago.hyogo.jp","ashiya.hyogo.jp","awaji.hyogo.jp","fukusaki.hyogo.jp","goshiki.hyogo.jp","harima.hyogo.jp","himeji.hyogo.jp","ichikawa.hyogo.jp","inagawa.hyogo.jp","itami.hyogo.jp","kakogawa.hyogo.jp","kamigori.hyogo.jp","kamikawa.hyogo.jp","kasai.hyogo.jp","kasuga.hyogo.jp","kawanishi.hyogo.jp","miki.hyogo.jp","minamiawaji.hyogo.jp","nishinomiya.hyogo.jp","nishiwaki.hyogo.jp","ono.hyogo.jp","sanda.hyogo.jp","sannan.hyogo.jp","sasayama.hyogo.jp","sayo.hyogo.jp","shingu.hyogo.jp","shinonsen.hyogo.jp","shiso.hyogo.jp","sumoto.hyogo.jp","taishi.hyogo.jp","taka.hyogo.jp","takarazuka.hyogo.jp","takasago.hyogo.jp","takino.hyogo.jp","tamba.hyogo.jp","tatsuno.hyogo.jp","toyooka.hyogo.jp","yabu.hyogo.jp","yashiro.hyogo.jp","yoka.hyogo.jp","yokawa.hyogo.jp","ami.ibaraki.jp","asahi.ibaraki.jp","bando.ibaraki.jp","chikusei.ibaraki.jp","daigo.ibaraki.jp","fujishiro.ibaraki.jp","hitachi.ibaraki.jp","hitachinaka.ibaraki.jp","hitachiomiya.ibaraki.jp","hitachiota.ibaraki.jp","ibaraki.ibaraki.jp","ina.ibaraki.jp","inashiki.ibaraki.jp","itako.ibaraki.jp","iwama.ibaraki.jp","joso.ibaraki.jp","kamisu.ibaraki.jp","kasama.ibaraki.jp","kashima.ibaraki.jp","kasumigaura.ibaraki.jp","koga.ibaraki.jp","miho.ibaraki.jp","mito.ibaraki.jp","moriya.ibaraki.jp","naka.ibaraki.jp","namegata.ibaraki.jp","oarai.ibaraki.jp","ogawa.ibaraki.jp","omitama.ibaraki.jp","ryugasaki.ibaraki.jp","sakai.ibaraki.jp","sakuragawa.ibaraki.jp","shimodate.ibaraki.jp","shimotsuma.ibaraki.jp","shirosato.ibaraki.jp","sowa.ibaraki.jp","suifu.ibaraki.jp","takahagi.ibaraki.jp","tamatsukuri.ibaraki.jp","tokai.ibaraki.jp","tomobe.ibaraki.jp","tone.ibaraki.jp","toride.ibaraki.jp","tsuchiura.ibaraki.jp","tsukuba.ibaraki.jp","uchihara.ibaraki.jp","ushiku.ibaraki.jp","yachiyo.ibaraki.jp","yamagata.ibaraki.jp","yawara.ibaraki.jp","yuki.ibaraki.jp","anamizu.ishikawa.jp","hakui.ishikawa.jp","hakusan.ishikawa.jp","kaga.ishikawa.jp","kahoku.ishikawa.jp","kanazawa.ishikawa.jp","kawakita.ishikawa.jp","komatsu.ishikawa.jp","nakanoto.ishikawa.jp","nanao.ishikawa.jp","nomi.ishikawa.jp","nonoichi.ishikawa.jp","noto.ishikawa.jp","shika.ishikawa.jp","suzu.ishikawa.jp","tsubata.ishikawa.jp","tsurugi.ishikawa.jp","uchinada.ishikawa.jp","wajima.ishikawa.jp","fudai.iwate.jp","fujisawa.iwate.jp","hanamaki.iwate.jp","hiraizumi.iwate.jp","hirono.iwate.jp","ichinohe.iwate.jp","ichinoseki.iwate.jp","iwaizumi.iwate.jp","iwate.iwate.jp","joboji.iwate.jp","kamaishi.iwate.jp","kanegasaki.iwate.jp","karumai.iwate.jp","kawai.iwate.jp","kitakami.iwate.jp","kuji.iwate.jp","kunohe.iwate.jp","kuzumaki.iwate.jp","miyako.iwate.jp","mizusawa.iwate.jp","morioka.iwate.jp","ninohe.iwate.jp","noda.iwate.jp","ofunato.iwate.jp","oshu.iwate.jp","otsuchi.iwate.jp","rikuzentakata.iwate.jp","shiwa.iwate.jp","shizukuishi.iwate.jp","sumita.iwate.jp","tanohata.iwate.jp","tono.iwate.jp","yahaba.iwate.jp","yamada.iwate.jp","ayagawa.kagawa.jp","higashikagawa.kagawa.jp","kanonji.kagawa.jp","kotohira.kagawa.jp","manno.kagawa.jp","marugame.kagawa.jp","mitoyo.kagawa.jp","naoshima.kagawa.jp","sanuki.kagawa.jp","tadotsu.kagawa.jp","takamatsu.kagawa.jp","tonosho.kagawa.jp","uchinomi.kagawa.jp","utazu.kagawa.jp","zentsuji.kagawa.jp","akune.kagoshima.jp","amami.kagoshima.jp","hioki.kagoshima.jp","isa.kagoshima.jp","isen.kagoshima.jp","izumi.kagoshima.jp","kagoshima.kagoshima.jp","kanoya.kagoshima.jp","kawanabe.kagoshima.jp","kinko.kagoshima.jp","kouyama.kagoshima.jp","makurazaki.kagoshima.jp","matsumoto.kagoshima.jp","minamitane.kagoshima.jp","nakatane.kagoshima.jp","nishinoomote.kagoshima.jp","satsumasendai.kagoshima.jp","soo.kagoshima.jp","tarumizu.kagoshima.jp","yusui.kagoshima.jp","aikawa.kanagawa.jp","atsugi.kanagawa.jp","ayase.kanagawa.jp","chigasaki.kanagawa.jp","ebina.kanagawa.jp","fujisawa.kanagawa.jp","hadano.kanagawa.jp","hakone.kanagawa.jp","hiratsuka.kanagawa.jp","isehara.kanagawa.jp","kaisei.kanagawa.jp","kamakura.kanagawa.jp","kiyokawa.kanagawa.jp","matsuda.kanagawa.jp","minamiashigara.kanagawa.jp","miura.kanagawa.jp","nakai.kanagawa.jp","ninomiya.kanagawa.jp","odawara.kanagawa.jp","oi.kanagawa.jp","oiso.kanagawa.jp","sagamihara.kanagawa.jp","samukawa.kanagawa.jp","tsukui.kanagawa.jp","yamakita.kanagawa.jp","yamato.kanagawa.jp","yokosuka.kanagawa.jp","yugawara.kanagawa.jp","zama.kanagawa.jp","zushi.kanagawa.jp","aki.kochi.jp","geisei.kochi.jp","hidaka.kochi.jp","higashitsuno.kochi.jp","ino.kochi.jp","kagami.kochi.jp","kami.kochi.jp","kitagawa.kochi.jp","kochi.kochi.jp","mihara.kochi.jp","motoyama.kochi.jp","muroto.kochi.jp","nahari.kochi.jp","nakamura.kochi.jp","nankoku.kochi.jp","nishitosa.kochi.jp","niyodogawa.kochi.jp","ochi.kochi.jp","okawa.kochi.jp","otoyo.kochi.jp","otsuki.kochi.jp","sakawa.kochi.jp","sukumo.kochi.jp","susaki.kochi.jp","tosa.kochi.jp","tosashimizu.kochi.jp","toyo.kochi.jp","tsuno.kochi.jp","umaji.kochi.jp","yasuda.kochi.jp","yusuhara.kochi.jp","amakusa.kumamoto.jp","arao.kumamoto.jp","aso.kumamoto.jp","choyo.kumamoto.jp","gyokuto.kumamoto.jp","kamiamakusa.kumamoto.jp","kikuchi.kumamoto.jp","kumamoto.kumamoto.jp","mashiki.kumamoto.jp","mifune.kumamoto.jp","minamata.kumamoto.jp","minamioguni.kumamoto.jp","nagasu.kumamoto.jp","nishihara.kumamoto.jp","oguni.kumamoto.jp","ozu.kumamoto.jp","sumoto.kumamoto.jp","takamori.kumamoto.jp","uki.kumamoto.jp","uto.kumamoto.jp","yamaga.kumamoto.jp","yamato.kumamoto.jp","yatsushiro.kumamoto.jp","ayabe.kyoto.jp","fukuchiyama.kyoto.jp","higashiyama.kyoto.jp","ide.kyoto.jp","ine.kyoto.jp","joyo.kyoto.jp","kameoka.kyoto.jp","kamo.kyoto.jp","kita.kyoto.jp","kizu.kyoto.jp","kumiyama.kyoto.jp","kyotamba.kyoto.jp","kyotanabe.kyoto.jp","kyotango.kyoto.jp","maizuru.kyoto.jp","minami.kyoto.jp","minamiyamashiro.kyoto.jp","miyazu.kyoto.jp","muko.kyoto.jp","nagaokakyo.kyoto.jp","nakagyo.kyoto.jp","nantan.kyoto.jp","oyamazaki.kyoto.jp","sakyo.kyoto.jp","seika.kyoto.jp","tanabe.kyoto.jp","uji.kyoto.jp","ujitawara.kyoto.jp","wazuka.kyoto.jp","yamashina.kyoto.jp","yawata.kyoto.jp","asahi.mie.jp","inabe.mie.jp","ise.mie.jp","kameyama.mie.jp","kawagoe.mie.jp","kiho.mie.jp","kisosaki.mie.jp","kiwa.mie.jp","komono.mie.jp","kumano.mie.jp","kuwana.mie.jp","matsusaka.mie.jp","meiwa.mie.jp","mihama.mie.jp","minamiise.mie.jp","misugi.mie.jp","miyama.mie.jp","nabari.mie.jp","shima.mie.jp","suzuka.mie.jp","tado.mie.jp","taiki.mie.jp","taki.mie.jp","tamaki.mie.jp","toba.mie.jp","tsu.mie.jp","udono.mie.jp","ureshino.mie.jp","watarai.mie.jp","yokkaichi.mie.jp","furukawa.miyagi.jp","higashimatsushima.miyagi.jp","ishinomaki.miyagi.jp","iwanuma.miyagi.jp","kakuda.miyagi.jp","kami.miyagi.jp","kawasaki.miyagi.jp","marumori.miyagi.jp","matsushima.miyagi.jp","minamisanriku.miyagi.jp","misato.miyagi.jp","murata.miyagi.jp","natori.miyagi.jp","ogawara.miyagi.jp","ohira.miyagi.jp","onagawa.miyagi.jp","osaki.miyagi.jp","rifu.miyagi.jp","semine.miyagi.jp","shibata.miyagi.jp","shichikashuku.miyagi.jp","shikama.miyagi.jp","shiogama.miyagi.jp","shiroishi.miyagi.jp","tagajo.miyagi.jp","taiwa.miyagi.jp","tome.miyagi.jp","tomiya.miyagi.jp","wakuya.miyagi.jp","watari.miyagi.jp","yamamoto.miyagi.jp","zao.miyagi.jp","aya.miyazaki.jp","ebino.miyazaki.jp","gokase.miyazaki.jp","hyuga.miyazaki.jp","kadogawa.miyazaki.jp","kawaminami.miyazaki.jp","kijo.miyazaki.jp","kitagawa.miyazaki.jp","kitakata.miyazaki.jp","kitaura.miyazaki.jp","kobayashi.miyazaki.jp","kunitomi.miyazaki.jp","kushima.miyazaki.jp","mimata.miyazaki.jp","miyakonojo.miyazaki.jp","miyazaki.miyazaki.jp","morotsuka.miyazaki.jp","nichinan.miyazaki.jp","nishimera.miyazaki.jp","nobeoka.miyazaki.jp","saito.miyazaki.jp","shiiba.miyazaki.jp","shintomi.miyazaki.jp","takaharu.miyazaki.jp","takanabe.miyazaki.jp","takazaki.miyazaki.jp","tsuno.miyazaki.jp","achi.nagano.jp","agematsu.nagano.jp","anan.nagano.jp","aoki.nagano.jp","asahi.nagano.jp","azumino.nagano.jp","chikuhoku.nagano.jp","chikuma.nagano.jp","chino.nagano.jp","fujimi.nagano.jp","hakuba.nagano.jp","hara.nagano.jp","hiraya.nagano.jp","iida.nagano.jp","iijima.nagano.jp","iiyama.nagano.jp","iizuna.nagano.jp","ikeda.nagano.jp","ikusaka.nagano.jp","ina.nagano.jp","karuizawa.nagano.jp","kawakami.nagano.jp","kiso.nagano.jp","kisofukushima.nagano.jp","kitaaiki.nagano.jp","komagane.nagano.jp","komoro.nagano.jp","matsukawa.nagano.jp","matsumoto.nagano.jp","miasa.nagano.jp","minamiaiki.nagano.jp","minamimaki.nagano.jp","minamiminowa.nagano.jp","minowa.nagano.jp","miyada.nagano.jp","miyota.nagano.jp","mochizuki.nagano.jp","nagano.nagano.jp","nagawa.nagano.jp","nagiso.nagano.jp","nakagawa.nagano.jp","nakano.nagano.jp","nozawaonsen.nagano.jp","obuse.nagano.jp","ogawa.nagano.jp","okaya.nagano.jp","omachi.nagano.jp","omi.nagano.jp","ookuwa.nagano.jp","ooshika.nagano.jp","otaki.nagano.jp","otari.nagano.jp","sakae.nagano.jp","sakaki.nagano.jp","saku.nagano.jp","sakuho.nagano.jp","shimosuwa.nagano.jp","shinanomachi.nagano.jp","shiojiri.nagano.jp","suwa.nagano.jp","suzaka.nagano.jp","takagi.nagano.jp","takamori.nagano.jp","takayama.nagano.jp","tateshina.nagano.jp","tatsuno.nagano.jp","togakushi.nagano.jp","togura.nagano.jp","tomi.nagano.jp","ueda.nagano.jp","wada.nagano.jp","yamagata.nagano.jp","yamanouchi.nagano.jp","yasaka.nagano.jp","yasuoka.nagano.jp","chijiwa.nagasaki.jp","futsu.nagasaki.jp","goto.nagasaki.jp","hasami.nagasaki.jp","hirado.nagasaki.jp","iki.nagasaki.jp","isahaya.nagasaki.jp","kawatana.nagasaki.jp","kuchinotsu.nagasaki.jp","matsuura.nagasaki.jp","nagasaki.nagasaki.jp","obama.nagasaki.jp","omura.nagasaki.jp","oseto.nagasaki.jp","saikai.nagasaki.jp","sasebo.nagasaki.jp","seihi.nagasaki.jp","shimabara.nagasaki.jp","shinkamigoto.nagasaki.jp","togitsu.nagasaki.jp","tsushima.nagasaki.jp","unzen.nagasaki.jp","ando.nara.jp","gose.nara.jp","heguri.nara.jp","higashiyoshino.nara.jp","ikaruga.nara.jp","ikoma.nara.jp","kamikitayama.nara.jp","kanmaki.nara.jp","kashiba.nara.jp","kashihara.nara.jp","katsuragi.nara.jp","kawai.nara.jp","kawakami.nara.jp","kawanishi.nara.jp","koryo.nara.jp","kurotaki.nara.jp","mitsue.nara.jp","miyake.nara.jp","nara.nara.jp","nosegawa.nara.jp","oji.nara.jp","ouda.nara.jp","oyodo.nara.jp","sakurai.nara.jp","sango.nara.jp","shimoichi.nara.jp","shimokitayama.nara.jp","shinjo.nara.jp","soni.nara.jp","takatori.nara.jp","tawaramoto.nara.jp","tenkawa.nara.jp","tenri.nara.jp","uda.nara.jp","yamatokoriyama.nara.jp","yamatotakada.nara.jp","yamazoe.nara.jp","yoshino.nara.jp","aga.niigata.jp","agano.niigata.jp","gosen.niigata.jp","itoigawa.niigata.jp","izumozaki.niigata.jp","joetsu.niigata.jp","kamo.niigata.jp","kariwa.niigata.jp","kashiwazaki.niigata.jp","minamiuonuma.niigata.jp","mitsuke.niigata.jp","muika.niigata.jp","murakami.niigata.jp","myoko.niigata.jp","nagaoka.niigata.jp","niigata.niigata.jp","ojiya.niigata.jp","omi.niigata.jp","sado.niigata.jp","sanjo.niigata.jp","seiro.niigata.jp","seirou.niigata.jp","sekikawa.niigata.jp","shibata.niigata.jp","tagami.niigata.jp","tainai.niigata.jp","tochio.niigata.jp","tokamachi.niigata.jp","tsubame.niigata.jp","tsunan.niigata.jp","uonuma.niigata.jp","yahiko.niigata.jp","yoita.niigata.jp","yuzawa.niigata.jp","beppu.oita.jp","bungoono.oita.jp","bungotakada.oita.jp","hasama.oita.jp","hiji.oita.jp","himeshima.oita.jp","hita.oita.jp","kamitsue.oita.jp","kokonoe.oita.jp","kuju.oita.jp","kunisaki.oita.jp","kusu.oita.jp","oita.oita.jp","saiki.oita.jp","taketa.oita.jp","tsukumi.oita.jp","usa.oita.jp","usuki.oita.jp","yufu.oita.jp","akaiwa.okayama.jp","asakuchi.okayama.jp","bizen.okayama.jp","hayashima.okayama.jp","ibara.okayama.jp","kagamino.okayama.jp","kasaoka.okayama.jp","kibichuo.okayama.jp","kumenan.okayama.jp","kurashiki.okayama.jp","maniwa.okayama.jp","misaki.okayama.jp","nagi.okayama.jp","niimi.okayama.jp","nishiawakura.okayama.jp","okayama.okayama.jp","satosho.okayama.jp","setouchi.okayama.jp","shinjo.okayama.jp","shoo.okayama.jp","soja.okayama.jp","takahashi.okayama.jp","tamano.okayama.jp","tsuyama.okayama.jp","wake.okayama.jp","yakage.okayama.jp","aguni.okinawa.jp","ginowan.okinawa.jp","ginoza.okinawa.jp","gushikami.okinawa.jp","haebaru.okinawa.jp","higashi.okinawa.jp","hirara.okinawa.jp","iheya.okinawa.jp","ishigaki.okinawa.jp","ishikawa.okinawa.jp","itoman.okinawa.jp","izena.okinawa.jp","kadena.okinawa.jp","kin.okinawa.jp","kitadaito.okinawa.jp","kitanakagusuku.okinawa.jp","kumejima.okinawa.jp","kunigami.okinawa.jp","minamidaito.okinawa.jp","motobu.okinawa.jp","nago.okinawa.jp","naha.okinawa.jp","nakagusuku.okinawa.jp","nakijin.okinawa.jp","nanjo.okinawa.jp","nishihara.okinawa.jp","ogimi.okinawa.jp","okinawa.okinawa.jp","onna.okinawa.jp","shimoji.okinawa.jp","taketomi.okinawa.jp","tarama.okinawa.jp","tokashiki.okinawa.jp","tomigusuku.okinawa.jp","tonaki.okinawa.jp","urasoe.okinawa.jp","uruma.okinawa.jp","yaese.okinawa.jp","yomitan.okinawa.jp","yonabaru.okinawa.jp","yonaguni.okinawa.jp","zamami.okinawa.jp","abeno.osaka.jp","chihayaakasaka.osaka.jp","chuo.osaka.jp","daito.osaka.jp","fujiidera.osaka.jp","habikino.osaka.jp","hannan.osaka.jp","higashiosaka.osaka.jp","higashisumiyoshi.osaka.jp","higashiyodogawa.osaka.jp","hirakata.osaka.jp","ibaraki.osaka.jp","ikeda.osaka.jp","izumi.osaka.jp","izumiotsu.osaka.jp","izumisano.osaka.jp","kadoma.osaka.jp","kaizuka.osaka.jp","kanan.osaka.jp","kashiwara.osaka.jp","katano.osaka.jp","kawachinagano.osaka.jp","kishiwada.osaka.jp","kita.osaka.jp","kumatori.osaka.jp","matsubara.osaka.jp","minato.osaka.jp","minoh.osaka.jp","misaki.osaka.jp","moriguchi.osaka.jp","neyagawa.osaka.jp","nishi.osaka.jp","nose.osaka.jp","osakasayama.osaka.jp","sakai.osaka.jp","sayama.osaka.jp","sennan.osaka.jp","settsu.osaka.jp","shijonawate.osaka.jp","shimamoto.osaka.jp","suita.osaka.jp","tadaoka.osaka.jp","taishi.osaka.jp","tajiri.osaka.jp","takaishi.osaka.jp","takatsuki.osaka.jp","tondabayashi.osaka.jp","toyonaka.osaka.jp","toyono.osaka.jp","yao.osaka.jp","ariake.saga.jp","arita.saga.jp","fukudomi.saga.jp","genkai.saga.jp","hamatama.saga.jp","hizen.saga.jp","imari.saga.jp","kamimine.saga.jp","kanzaki.saga.jp","karatsu.saga.jp","kashima.saga.jp","kitagata.saga.jp","kitahata.saga.jp","kiyama.saga.jp","kouhoku.saga.jp","kyuragi.saga.jp","nishiarita.saga.jp","ogi.saga.jp","omachi.saga.jp","ouchi.saga.jp","saga.saga.jp","shiroishi.saga.jp","taku.saga.jp","tara.saga.jp","tosu.saga.jp","yoshinogari.saga.jp","arakawa.saitama.jp","asaka.saitama.jp","chichibu.saitama.jp","fujimi.saitama.jp","fujimino.saitama.jp","fukaya.saitama.jp","hanno.saitama.jp","hanyu.saitama.jp","hasuda.saitama.jp","hatogaya.saitama.jp","hatoyama.saitama.jp","hidaka.saitama.jp","higashichichibu.saitama.jp","higashimatsuyama.saitama.jp","honjo.saitama.jp","ina.saitama.jp","iruma.saitama.jp","iwatsuki.saitama.jp","kamiizumi.saitama.jp","kamikawa.saitama.jp","kamisato.saitama.jp","kasukabe.saitama.jp","kawagoe.saitama.jp","kawaguchi.saitama.jp","kawajima.saitama.jp","kazo.saitama.jp","kitamoto.saitama.jp","koshigaya.saitama.jp","kounosu.saitama.jp","kuki.saitama.jp","kumagaya.saitama.jp","matsubushi.saitama.jp","minano.saitama.jp","misato.saitama.jp","miyashiro.saitama.jp","miyoshi.saitama.jp","moroyama.saitama.jp","nagatoro.saitama.jp","namegawa.saitama.jp","niiza.saitama.jp","ogano.saitama.jp","ogawa.saitama.jp","ogose.saitama.jp","okegawa.saitama.jp","omiya.saitama.jp","otaki.saitama.jp","ranzan.saitama.jp","ryokami.saitama.jp","saitama.saitama.jp","sakado.saitama.jp","satte.saitama.jp","sayama.saitama.jp","shiki.saitama.jp","shiraoka.saitama.jp","soka.saitama.jp","sugito.saitama.jp","toda.saitama.jp","tokigawa.saitama.jp","tokorozawa.saitama.jp","tsurugashima.saitama.jp","urawa.saitama.jp","warabi.saitama.jp","yashio.saitama.jp","yokoze.saitama.jp","yono.saitama.jp","yorii.saitama.jp","yoshida.saitama.jp","yoshikawa.saitama.jp","yoshimi.saitama.jp","aisho.shiga.jp","gamo.shiga.jp","higashiomi.shiga.jp","hikone.shiga.jp","koka.shiga.jp","konan.shiga.jp","kosei.shiga.jp","koto.shiga.jp","kusatsu.shiga.jp","maibara.shiga.jp","moriyama.shiga.jp","nagahama.shiga.jp","nishiazai.shiga.jp","notogawa.shiga.jp","omihachiman.shiga.jp","otsu.shiga.jp","ritto.shiga.jp","ryuoh.shiga.jp","takashima.shiga.jp","takatsuki.shiga.jp","torahime.shiga.jp","toyosato.shiga.jp","yasu.shiga.jp","akagi.shimane.jp","ama.shimane.jp","gotsu.shimane.jp","hamada.shimane.jp","higashiizumo.shimane.jp","hikawa.shimane.jp","hikimi.shimane.jp","izumo.shimane.jp","kakinoki.shimane.jp","masuda.shimane.jp","matsue.shimane.jp","misato.shimane.jp","nishinoshima.shimane.jp","ohda.shimane.jp","okinoshima.shimane.jp","okuizumo.shimane.jp","shimane.shimane.jp","tamayu.shimane.jp","tsuwano.shimane.jp","unnan.shimane.jp","yakumo.shimane.jp","yasugi.shimane.jp","yatsuka.shimane.jp","arai.shizuoka.jp","atami.shizuoka.jp","fuji.shizuoka.jp","fujieda.shizuoka.jp","fujikawa.shizuoka.jp","fujinomiya.shizuoka.jp","fukuroi.shizuoka.jp","gotemba.shizuoka.jp","haibara.shizuoka.jp","hamamatsu.shizuoka.jp","higashiizu.shizuoka.jp","ito.shizuoka.jp","iwata.shizuoka.jp","izu.shizuoka.jp","izunokuni.shizuoka.jp","kakegawa.shizuoka.jp","kannami.shizuoka.jp","kawanehon.shizuoka.jp","kawazu.shizuoka.jp","kikugawa.shizuoka.jp","kosai.shizuoka.jp","makinohara.shizuoka.jp","matsuzaki.shizuoka.jp","minamiizu.shizuoka.jp","mishima.shizuoka.jp","morimachi.shizuoka.jp","nishiizu.shizuoka.jp","numazu.shizuoka.jp","omaezaki.shizuoka.jp","shimada.shizuoka.jp","shimizu.shizuoka.jp","shimoda.shizuoka.jp","shizuoka.shizuoka.jp","susono.shizuoka.jp","yaizu.shizuoka.jp","yoshida.shizuoka.jp","ashikaga.tochigi.jp","bato.tochigi.jp","haga.tochigi.jp","ichikai.tochigi.jp","iwafune.tochigi.jp","kaminokawa.tochigi.jp","kanuma.tochigi.jp","karasuyama.tochigi.jp","kuroiso.tochigi.jp","mashiko.tochigi.jp","mibu.tochigi.jp","moka.tochigi.jp","motegi.tochigi.jp","nasu.tochigi.jp","nasushiobara.tochigi.jp","nikko.tochigi.jp","nishikata.tochigi.jp","nogi.tochigi.jp","ohira.tochigi.jp","ohtawara.tochigi.jp","oyama.tochigi.jp","sakura.tochigi.jp","sano.tochigi.jp","shimotsuke.tochigi.jp","shioya.tochigi.jp","takanezawa.tochigi.jp","tochigi.tochigi.jp","tsuga.tochigi.jp","ujiie.tochigi.jp","utsunomiya.tochigi.jp","yaita.tochigi.jp","aizumi.tokushima.jp","anan.tokushima.jp","ichiba.tokushima.jp","itano.tokushima.jp","kainan.tokushima.jp","komatsushima.tokushima.jp","matsushige.tokushima.jp","mima.tokushima.jp","minami.tokushima.jp","miyoshi.tokushima.jp","mugi.tokushima.jp","nakagawa.tokushima.jp","naruto.tokushima.jp","sanagochi.tokushima.jp","shishikui.tokushima.jp","tokushima.tokushima.jp","wajiki.tokushima.jp","adachi.tokyo.jp","akiruno.tokyo.jp","akishima.tokyo.jp","aogashima.tokyo.jp","arakawa.tokyo.jp","bunkyo.tokyo.jp","chiyoda.tokyo.jp","chofu.tokyo.jp","chuo.tokyo.jp","edogawa.tokyo.jp","fuchu.tokyo.jp","fussa.tokyo.jp","hachijo.tokyo.jp","hachioji.tokyo.jp","hamura.tokyo.jp","higashikurume.tokyo.jp","higashimurayama.tokyo.jp","higashiyamato.tokyo.jp","hino.tokyo.jp","hinode.tokyo.jp","hinohara.tokyo.jp","inagi.tokyo.jp","itabashi.tokyo.jp","katsushika.tokyo.jp","kita.tokyo.jp","kiyose.tokyo.jp","kodaira.tokyo.jp","koganei.tokyo.jp","kokubunji.tokyo.jp","komae.tokyo.jp","koto.tokyo.jp","kouzushima.tokyo.jp","kunitachi.tokyo.jp","machida.tokyo.jp","meguro.tokyo.jp","minato.tokyo.jp","mitaka.tokyo.jp","mizuho.tokyo.jp","musashimurayama.tokyo.jp","musashino.tokyo.jp","nakano.tokyo.jp","nerima.tokyo.jp","ogasawara.tokyo.jp","okutama.tokyo.jp","ome.tokyo.jp","oshima.tokyo.jp","ota.tokyo.jp","setagaya.tokyo.jp","shibuya.tokyo.jp","shinagawa.tokyo.jp","shinjuku.tokyo.jp","suginami.tokyo.jp","sumida.tokyo.jp","tachikawa.tokyo.jp","taito.tokyo.jp","tama.tokyo.jp","toshima.tokyo.jp","chizu.tottori.jp","hino.tottori.jp","kawahara.tottori.jp","koge.tottori.jp","kotoura.tottori.jp","misasa.tottori.jp","nanbu.tottori.jp","nichinan.tottori.jp","sakaiminato.tottori.jp","tottori.tottori.jp","wakasa.tottori.jp","yazu.tottori.jp","yonago.tottori.jp","asahi.toyama.jp","fuchu.toyama.jp","fukumitsu.toyama.jp","funahashi.toyama.jp","himi.toyama.jp","imizu.toyama.jp","inami.toyama.jp","johana.toyama.jp","kamiichi.toyama.jp","kurobe.toyama.jp","nakaniikawa.toyama.jp","namerikawa.toyama.jp","nanto.toyama.jp","nyuzen.toyama.jp","oyabe.toyama.jp","taira.toyama.jp","takaoka.toyama.jp","tateyama.toyama.jp","toga.toyama.jp","tonami.toyama.jp","toyama.toyama.jp","unazuki.toyama.jp","uozu.toyama.jp","yamada.toyama.jp","arida.wakayama.jp","aridagawa.wakayama.jp","gobo.wakayama.jp","hashimoto.wakayama.jp","hidaka.wakayama.jp","hirogawa.wakayama.jp","inami.wakayama.jp","iwade.wakayama.jp","kainan.wakayama.jp","kamitonda.wakayama.jp","katsuragi.wakayama.jp","kimino.wakayama.jp","kinokawa.wakayama.jp","kitayama.wakayama.jp","koya.wakayama.jp","koza.wakayama.jp","kozagawa.wakayama.jp","kudoyama.wakayama.jp","kushimoto.wakayama.jp","mihama.wakayama.jp","misato.wakayama.jp","nachikatsuura.wakayama.jp","shingu.wakayama.jp","shirahama.wakayama.jp","taiji.wakayama.jp","tanabe.wakayama.jp","wakayama.wakayama.jp","yuasa.wakayama.jp","yura.wakayama.jp","asahi.yamagata.jp","funagata.yamagata.jp","higashine.yamagata.jp","iide.yamagata.jp","kahoku.yamagata.jp","kaminoyama.yamagata.jp","kaneyama.yamagata.jp","kawanishi.yamagata.jp","mamurogawa.yamagata.jp","mikawa.yamagata.jp","murayama.yamagata.jp","nagai.yamagata.jp","nakayama.yamagata.jp","nanyo.yamagata.jp","nishikawa.yamagata.jp","obanazawa.yamagata.jp","oe.yamagata.jp","oguni.yamagata.jp","ohkura.yamagata.jp","oishida.yamagata.jp","sagae.yamagata.jp","sakata.yamagata.jp","sakegawa.yamagata.jp","shinjo.yamagata.jp","shirataka.yamagata.jp","shonai.yamagata.jp","takahata.yamagata.jp","tendo.yamagata.jp","tozawa.yamagata.jp","tsuruoka.yamagata.jp","yamagata.yamagata.jp","yamanobe.yamagata.jp","yonezawa.yamagata.jp","yuza.yamagata.jp","abu.yamaguchi.jp","hagi.yamaguchi.jp","hikari.yamaguchi.jp","hofu.yamaguchi.jp","iwakuni.yamaguchi.jp","kudamatsu.yamaguchi.jp","mitou.yamaguchi.jp","nagato.yamaguchi.jp","oshima.yamaguchi.jp","shimonoseki.yamaguchi.jp","shunan.yamaguchi.jp","tabuse.yamaguchi.jp","tokuyama.yamaguchi.jp","toyota.yamaguchi.jp","ube.yamaguchi.jp","yuu.yamaguchi.jp","chuo.yamanashi.jp","doshi.yamanashi.jp","fuefuki.yamanashi.jp","fujikawa.yamanashi.jp","fujikawaguchiko.yamanashi.jp","fujiyoshida.yamanashi.jp","hayakawa.yamanashi.jp","hokuto.yamanashi.jp","ichikawamisato.yamanashi.jp","kai.yamanashi.jp","kofu.yamanashi.jp","koshu.yamanashi.jp","kosuge.yamanashi.jp","minami-alps.yamanashi.jp","minobu.yamanashi.jp","nakamichi.yamanashi.jp","nanbu.yamanashi.jp","narusawa.yamanashi.jp","nirasaki.yamanashi.jp","nishikatsura.yamanashi.jp","oshino.yamanashi.jp","otsuki.yamanashi.jp","showa.yamanashi.jp","tabayama.yamanashi.jp","tsuru.yamanashi.jp","uenohara.yamanashi.jp","yamanakako.yamanashi.jp","yamanashi.yamanashi.jp","ke","ac.ke","co.ke","go.ke","info.ke","me.ke","mobi.ke","ne.ke","or.ke","sc.ke","kg","org.kg","net.kg","com.kg","edu.kg","gov.kg","mil.kg","*.kh","ki","edu.ki","biz.ki","net.ki","org.ki","gov.ki","info.ki","com.ki","km","org.km","nom.km","gov.km","prd.km","tm.km","edu.km","mil.km","ass.km","com.km","coop.km","asso.km","presse.km","medecin.km","notaires.km","pharmaciens.km","veterinaire.km","gouv.km","kn","net.kn","org.kn","edu.kn","gov.kn","kp","com.kp","edu.kp","gov.kp","org.kp","rep.kp","tra.kp","kr","ac.kr","co.kr","es.kr","go.kr","hs.kr","kg.kr","mil.kr","ms.kr","ne.kr","or.kr","pe.kr","re.kr","sc.kr","busan.kr","chungbuk.kr","chungnam.kr","daegu.kr","daejeon.kr","gangwon.kr","gwangju.kr","gyeongbuk.kr","gyeonggi.kr","gyeongnam.kr","incheon.kr","jeju.kr","jeonbuk.kr","jeonnam.kr","seoul.kr","ulsan.kr","kw","com.kw","edu.kw","emb.kw","gov.kw","ind.kw","net.kw","org.kw","ky","edu.ky","gov.ky","com.ky","org.ky","net.ky","kz","org.kz","edu.kz","net.kz","gov.kz","mil.kz","com.kz","la","int.la","net.la","info.la","edu.la","gov.la","per.la","com.la","org.la","lb","com.lb","edu.lb","gov.lb","net.lb","org.lb","lc","com.lc","net.lc","co.lc","org.lc","edu.lc","gov.lc","li","lk","gov.lk","sch.lk","net.lk","int.lk","com.lk","org.lk","edu.lk","ngo.lk","soc.lk","web.lk","ltd.lk","assn.lk","grp.lk","hotel.lk","ac.lk","lr","com.lr","edu.lr","gov.lr","org.lr","net.lr","ls","ac.ls","biz.ls","co.ls","edu.ls","gov.ls","info.ls","net.ls","org.ls","sc.ls","lt","gov.lt","lu","lv","com.lv","edu.lv","gov.lv","org.lv","mil.lv","id.lv","net.lv","asn.lv","conf.lv","ly","com.ly","net.ly","gov.ly","plc.ly","edu.ly","sch.ly","med.ly","org.ly","id.ly","ma","co.ma","net.ma","gov.ma","org.ma","ac.ma","press.ma","mc","tm.mc","asso.mc","md","me","co.me","net.me","org.me","edu.me","ac.me","gov.me","its.me","priv.me","mg","org.mg","nom.mg","gov.mg","prd.mg","tm.mg","edu.mg","mil.mg","com.mg","co.mg","mh","mil","mk","com.mk","org.mk","net.mk","edu.mk","gov.mk","inf.mk","name.mk","ml","com.ml","edu.ml","gouv.ml","gov.ml","net.ml","org.ml","presse.ml","*.mm","mn","gov.mn","edu.mn","org.mn","mo","com.mo","net.mo","org.mo","edu.mo","gov.mo","mobi","mp","mq","mr","gov.mr","ms","com.ms","edu.ms","gov.ms","net.ms","org.ms","mt","com.mt","edu.mt","net.mt","org.mt","mu","com.mu","net.mu","org.mu","gov.mu","ac.mu","co.mu","or.mu","museum","academy.museum","agriculture.museum","air.museum","airguard.museum","alabama.museum","alaska.museum","amber.museum","ambulance.museum","american.museum","americana.museum","americanantiques.museum","americanart.museum","amsterdam.museum","and.museum","annefrank.museum","anthro.museum","anthropology.museum","antiques.museum","aquarium.museum","arboretum.museum","archaeological.museum","archaeology.museum","architecture.museum","art.museum","artanddesign.museum","artcenter.museum","artdeco.museum","arteducation.museum","artgallery.museum","arts.museum","artsandcrafts.museum","asmatart.museum","assassination.museum","assisi.museum","association.museum","astronomy.museum","atlanta.museum","austin.museum","australia.museum","automotive.museum","aviation.museum","axis.museum","badajoz.museum","baghdad.museum","bahn.museum","bale.museum","baltimore.museum","barcelona.museum","baseball.museum","basel.museum","baths.museum","bauern.museum","beauxarts.museum","beeldengeluid.museum","bellevue.museum","bergbau.museum","berkeley.museum","berlin.museum","bern.museum","bible.museum","bilbao.museum","bill.museum","birdart.museum","birthplace.museum","bonn.museum","boston.museum","botanical.museum","botanicalgarden.museum","botanicgarden.museum","botany.museum","brandywinevalley.museum","brasil.museum","bristol.museum","british.museum","britishcolumbia.museum","broadcast.museum","brunel.museum","brussel.museum","brussels.museum","bruxelles.museum","building.museum","burghof.museum","bus.museum","bushey.museum","cadaques.museum","california.museum","cambridge.museum","can.museum","canada.museum","capebreton.museum","carrier.museum","cartoonart.museum","casadelamoneda.museum","castle.museum","castres.museum","celtic.museum","center.museum","chattanooga.museum","cheltenham.museum","chesapeakebay.museum","chicago.museum","children.museum","childrens.museum","childrensgarden.museum","chiropractic.museum","chocolate.museum","christiansburg.museum","cincinnati.museum","cinema.museum","circus.museum","civilisation.museum","civilization.museum","civilwar.museum","clinton.museum","clock.museum","coal.museum","coastaldefence.museum","cody.museum","coldwar.museum","collection.museum","colonialwilliamsburg.museum","coloradoplateau.museum","columbia.museum","columbus.museum","communication.museum","communications.museum","community.museum","computer.museum","computerhistory.museum","comunicações.museum","contemporary.museum","contemporaryart.museum","convent.museum","copenhagen.museum","corporation.museum","correios-e-telecomunicações.museum","corvette.museum","costume.museum","countryestate.museum","county.museum","crafts.museum","cranbrook.museum","creation.museum","cultural.museum","culturalcenter.museum","culture.museum","cyber.museum","cymru.museum","dali.museum","dallas.museum","database.museum","ddr.museum","decorativearts.museum","delaware.museum","delmenhorst.museum","denmark.museum","depot.museum","design.museum","detroit.museum","dinosaur.museum","discovery.museum","dolls.museum","donostia.museum","durham.museum","eastafrica.museum","eastcoast.museum","education.museum","educational.museum","egyptian.museum","eisenbahn.museum","elburg.museum","elvendrell.museum","embroidery.museum","encyclopedic.museum","england.museum","entomology.museum","environment.museum","environmentalconservation.museum","epilepsy.museum","essex.museum","estate.museum","ethnology.museum","exeter.museum","exhibition.museum","family.museum","farm.museum","farmequipment.museum","farmers.museum","farmstead.museum","field.museum","figueres.museum","filatelia.museum","film.museum","fineart.museum","finearts.museum","finland.museum","flanders.museum","florida.museum","force.museum","fortmissoula.museum","fortworth.museum","foundation.museum","francaise.museum","frankfurt.museum","franziskaner.museum","freemasonry.museum","freiburg.museum","fribourg.museum","frog.museum","fundacio.museum","furniture.museum","gallery.museum","garden.museum","gateway.museum","geelvinck.museum","gemological.museum","geology.museum","georgia.museum","giessen.museum","glas.museum","glass.museum","gorge.museum","grandrapids.museum","graz.museum","guernsey.museum","halloffame.museum","hamburg.museum","handson.museum","harvestcelebration.museum","hawaii.museum","health.museum","heimatunduhren.museum","hellas.museum","helsinki.museum","hembygdsforbund.museum","heritage.museum","histoire.museum","historical.museum","historicalsociety.museum","historichouses.museum","historisch.museum","historisches.museum","history.museum","historyofscience.museum","horology.museum","house.museum","humanities.museum","illustration.museum","imageandsound.museum","indian.museum","indiana.museum","indianapolis.museum","indianmarket.museum","intelligence.museum","interactive.museum","iraq.museum","iron.museum","isleofman.museum","jamison.museum","jefferson.museum","jerusalem.museum","jewelry.museum","jewish.museum","jewishart.museum","jfk.museum","journalism.museum","judaica.museum","judygarland.museum","juedisches.museum","juif.museum","karate.museum","karikatur.museum","kids.museum","koebenhavn.museum","koeln.museum","kunst.museum","kunstsammlung.museum","kunstunddesign.museum","labor.museum","labour.museum","lajolla.museum","lancashire.museum","landes.museum","lans.museum","läns.museum","larsson.museum","lewismiller.museum","lincoln.museum","linz.museum","living.museum","livinghistory.museum","localhistory.museum","london.museum","losangeles.museum","louvre.museum","loyalist.museum","lucerne.museum","luxembourg.museum","luzern.museum","mad.museum","madrid.museum","mallorca.museum","manchester.museum","mansion.museum","mansions.museum","manx.museum","marburg.museum","maritime.museum","maritimo.museum","maryland.museum","marylhurst.museum","media.museum","medical.museum","medizinhistorisches.museum","meeres.museum","memorial.museum","mesaverde.museum","michigan.museum","midatlantic.museum","military.museum","mill.museum","miners.museum","mining.museum","minnesota.museum","missile.museum","missoula.museum","modern.museum","moma.museum","money.museum","monmouth.museum","monticello.museum","montreal.museum","moscow.museum","motorcycle.museum","muenchen.museum","muenster.museum","mulhouse.museum","muncie.museum","museet.museum","museumcenter.museum","museumvereniging.museum","music.museum","national.museum","nationalfirearms.museum","nationalheritage.museum","nativeamerican.museum","naturalhistory.museum","naturalhistorymuseum.museum","naturalsciences.museum","nature.museum","naturhistorisches.museum","natuurwetenschappen.museum","naumburg.museum","naval.museum","nebraska.museum","neues.museum","newhampshire.museum","newjersey.museum","newmexico.museum","newport.museum","newspaper.museum","newyork.museum","niepce.museum","norfolk.museum","north.museum","nrw.museum","nyc.museum","nyny.museum","oceanographic.museum","oceanographique.museum","omaha.museum","online.museum","ontario.museum","openair.museum","oregon.museum","oregontrail.museum","otago.museum","oxford.museum","pacific.museum","paderborn.museum","palace.museum","paleo.museum","palmsprings.museum","panama.museum","paris.museum","pasadena.museum","pharmacy.museum","philadelphia.museum","philadelphiaarea.museum","philately.museum","phoenix.museum","photography.museum","pilots.museum","pittsburgh.museum","planetarium.museum","plantation.museum","plants.museum","plaza.museum","portal.museum","portland.museum","portlligat.museum","posts-and-telecommunications.museum","preservation.museum","presidio.museum","press.museum","project.museum","public.museum","pubol.museum","quebec.museum","railroad.museum","railway.museum","research.museum","resistance.museum","riodejaneiro.museum","rochester.museum","rockart.museum","roma.museum","russia.museum","saintlouis.museum","salem.museum","salvadordali.museum","salzburg.museum","sandiego.museum","sanfrancisco.museum","santabarbara.museum","santacruz.museum","santafe.museum","saskatchewan.museum","satx.museum","savannahga.museum","schlesisches.museum","schoenbrunn.museum","schokoladen.museum","school.museum","schweiz.museum","science.museum","scienceandhistory.museum","scienceandindustry.museum","sciencecenter.museum","sciencecenters.museum","science-fiction.museum","sciencehistory.museum","sciences.museum","sciencesnaturelles.museum","scotland.museum","seaport.museum","settlement.museum","settlers.museum","shell.museum","sherbrooke.museum","sibenik.museum","silk.museum","ski.museum","skole.museum","society.museum","sologne.museum","soundandvision.museum","southcarolina.museum","southwest.museum","space.museum","spy.museum","square.museum","stadt.museum","stalbans.museum","starnberg.museum","state.museum","stateofdelaware.museum","station.museum","steam.museum","steiermark.museum","stjohn.museum","stockholm.museum","stpetersburg.museum","stuttgart.museum","suisse.museum","surgeonshall.museum","surrey.museum","svizzera.museum","sweden.museum","sydney.museum","tank.museum","tcm.museum","technology.museum","telekommunikation.museum","television.museum","texas.museum","textile.museum","theater.museum","time.museum","timekeeping.museum","topology.museum","torino.museum","touch.museum","town.museum","transport.museum","tree.museum","trolley.museum","trust.museum","trustee.museum","uhren.museum","ulm.museum","undersea.museum","university.museum","usa.museum","usantiques.museum","usarts.museum","uscountryestate.museum","usculture.museum","usdecorativearts.museum","usgarden.museum","ushistory.museum","ushuaia.museum","uslivinghistory.museum","utah.museum","uvic.museum","valley.museum","vantaa.museum","versailles.museum","viking.museum","village.museum","virginia.museum","virtual.museum","virtuel.museum","vlaanderen.museum","volkenkunde.museum","wales.museum","wallonie.museum","war.museum","washingtondc.museum","watchandclock.museum","watch-and-clock.museum","western.museum","westfalen.museum","whaling.museum","wildlife.museum","williamsburg.museum","windmill.museum","workshop.museum","york.museum","yorkshire.museum","yosemite.museum","youth.museum","zoological.museum","zoology.museum","ירושלים.museum","иком.museum","mv","aero.mv","biz.mv","com.mv","coop.mv","edu.mv","gov.mv","info.mv","int.mv","mil.mv","museum.mv","name.mv","net.mv","org.mv","pro.mv","mw","ac.mw","biz.mw","co.mw","com.mw","coop.mw","edu.mw","gov.mw","int.mw","museum.mw","net.mw","org.mw","mx","com.mx","org.mx","gob.mx","edu.mx","net.mx","my","com.my","net.my","org.my","gov.my","edu.my","mil.my","name.my","mz","ac.mz","adv.mz","co.mz","edu.mz","gov.mz","mil.mz","net.mz","org.mz","na","info.na","pro.na","name.na","school.na","or.na","dr.na","us.na","mx.na","ca.na","in.na","cc.na","tv.na","ws.na","mobi.na","co.na","com.na","org.na","name","nc","asso.nc","nom.nc","ne","net","nf","com.nf","net.nf","per.nf","rec.nf","web.nf","arts.nf","firm.nf","info.nf","other.nf","store.nf","ng","com.ng","edu.ng","gov.ng","i.ng","mil.ng","mobi.ng","name.ng","net.ng","org.ng","sch.ng","ni","ac.ni","biz.ni","co.ni","com.ni","edu.ni","gob.ni","in.ni","info.ni","int.ni","mil.ni","net.ni","nom.ni","org.ni","web.ni","nl","no","fhs.no","vgs.no","fylkesbibl.no","folkebibl.no","museum.no","idrett.no","priv.no","mil.no","stat.no","dep.no","kommune.no","herad.no","aa.no","ah.no","bu.no","fm.no","hl.no","hm.no","jan-mayen.no","mr.no","nl.no","nt.no","of.no","ol.no","oslo.no","rl.no","sf.no","st.no","svalbard.no","tm.no","tr.no","va.no","vf.no","gs.aa.no","gs.ah.no","gs.bu.no","gs.fm.no","gs.hl.no","gs.hm.no","gs.jan-mayen.no","gs.mr.no","gs.nl.no","gs.nt.no","gs.of.no","gs.ol.no","gs.oslo.no","gs.rl.no","gs.sf.no","gs.st.no","gs.svalbard.no","gs.tm.no","gs.tr.no","gs.va.no","gs.vf.no","akrehamn.no","åkrehamn.no","algard.no","ålgård.no","arna.no","brumunddal.no","bryne.no","bronnoysund.no","brønnøysund.no","drobak.no","drøbak.no","egersund.no","fetsund.no","floro.no","florø.no","fredrikstad.no","hokksund.no","honefoss.no","hønefoss.no","jessheim.no","jorpeland.no","jørpeland.no","kirkenes.no","kopervik.no","krokstadelva.no","langevag.no","langevåg.no","leirvik.no","mjondalen.no","mjøndalen.no","mo-i-rana.no","mosjoen.no","mosjøen.no","nesoddtangen.no","orkanger.no","osoyro.no","osøyro.no","raholt.no","råholt.no","sandnessjoen.no","sandnessjøen.no","skedsmokorset.no","slattum.no","spjelkavik.no","stathelle.no","stavern.no","stjordalshalsen.no","stjørdalshalsen.no","tananger.no","tranby.no","vossevangen.no","afjord.no","åfjord.no","agdenes.no","al.no","ål.no","alesund.no","ålesund.no","alstahaug.no","alta.no","áltá.no","alaheadju.no","álaheadju.no","alvdal.no","amli.no","åmli.no","amot.no","åmot.no","andebu.no","andoy.no","andøy.no","andasuolo.no","ardal.no","årdal.no","aremark.no","arendal.no","ås.no","aseral.no","åseral.no","asker.no","askim.no","askvoll.no","askoy.no","askøy.no","asnes.no","åsnes.no","audnedaln.no","aukra.no","aure.no","aurland.no","aurskog-holand.no","aurskog-høland.no","austevoll.no","austrheim.no","averoy.no","averøy.no","balestrand.no","ballangen.no","balat.no","bálát.no","balsfjord.no","bahccavuotna.no","báhccavuotna.no","bamble.no","bardu.no","beardu.no","beiarn.no","bajddar.no","bájddar.no","baidar.no","báidár.no","berg.no","bergen.no","berlevag.no","berlevåg.no","bearalvahki.no","bearalváhki.no","bindal.no","birkenes.no","bjarkoy.no","bjarkøy.no","bjerkreim.no","bjugn.no","bodo.no","bodø.no","badaddja.no","bådåddjå.no","budejju.no","bokn.no","bremanger.no","bronnoy.no","brønnøy.no","bygland.no","bykle.no","barum.no","bærum.no","bo.telemark.no","bø.telemark.no","bo.nordland.no","bø.nordland.no","bievat.no","bievát.no","bomlo.no","bømlo.no","batsfjord.no","båtsfjord.no","bahcavuotna.no","báhcavuotna.no","dovre.no","drammen.no","drangedal.no","dyroy.no","dyrøy.no","donna.no","dønna.no","eid.no","eidfjord.no","eidsberg.no","eidskog.no","eidsvoll.no","eigersund.no","elverum.no","enebakk.no","engerdal.no","etne.no","etnedal.no","evenes.no","evenassi.no","evenášši.no","evje-og-hornnes.no","farsund.no","fauske.no","fuossko.no","fuoisku.no","fedje.no","fet.no","finnoy.no","finnøy.no","fitjar.no","fjaler.no","fjell.no","flakstad.no","flatanger.no","flekkefjord.no","flesberg.no","flora.no","fla.no","flå.no","folldal.no","forsand.no","fosnes.no","frei.no","frogn.no","froland.no","frosta.no","frana.no","fræna.no","froya.no","frøya.no","fusa.no","fyresdal.no","forde.no","førde.no","gamvik.no","gangaviika.no","gáŋgaviika.no","gaular.no","gausdal.no","gildeskal.no","gildeskål.no","giske.no","gjemnes.no","gjerdrum.no","gjerstad.no","gjesdal.no","gjovik.no","gjøvik.no","gloppen.no","gol.no","gran.no","grane.no","granvin.no","gratangen.no","grimstad.no","grong.no","kraanghke.no","kråanghke.no","grue.no","gulen.no","hadsel.no","halden.no","halsa.no","hamar.no","hamaroy.no","habmer.no","hábmer.no","hapmir.no","hápmir.no","hammerfest.no","hammarfeasta.no","hámmárfeasta.no","haram.no","hareid.no","harstad.no","hasvik.no","aknoluokta.no","ákŋoluokta.no","hattfjelldal.no","aarborte.no","haugesund.no","hemne.no","hemnes.no","hemsedal.no","heroy.more-og-romsdal.no","herøy.møre-og-romsdal.no","heroy.nordland.no","herøy.nordland.no","hitra.no","hjartdal.no","hjelmeland.no","hobol.no","hobøl.no","hof.no","hol.no","hole.no","holmestrand.no","holtalen.no","holtålen.no","hornindal.no","horten.no","hurdal.no","hurum.no","hvaler.no","hyllestad.no","hagebostad.no","hægebostad.no","hoyanger.no","høyanger.no","hoylandet.no","høylandet.no","ha.no","hå.no","ibestad.no","inderoy.no","inderøy.no","iveland.no","jevnaker.no","jondal.no","jolster.no","jølster.no","karasjok.no","karasjohka.no","kárášjohka.no","karlsoy.no","galsa.no","gálsá.no","karmoy.no","karmøy.no","kautokeino.no","guovdageaidnu.no","klepp.no","klabu.no","klæbu.no","kongsberg.no","kongsvinger.no","kragero.no","kragerø.no","kristiansand.no","kristiansund.no","krodsherad.no","krødsherad.no","kvalsund.no","rahkkeravju.no","ráhkkerávju.no","kvam.no","kvinesdal.no","kvinnherad.no","kviteseid.no","kvitsoy.no","kvitsøy.no","kvafjord.no","kvæfjord.no","giehtavuoatna.no","kvanangen.no","kvænangen.no","navuotna.no","návuotna.no","kafjord.no","kåfjord.no","gaivuotna.no","gáivuotna.no","larvik.no","lavangen.no","lavagis.no","loabat.no","loabát.no","lebesby.no","davvesiida.no","leikanger.no","leirfjord.no","leka.no","leksvik.no","lenvik.no","leangaviika.no","leaŋgaviika.no","lesja.no","levanger.no","lier.no","lierne.no","lillehammer.no","lillesand.no","lindesnes.no","lindas.no","lindås.no","lom.no","loppa.no","lahppi.no","láhppi.no","lund.no","lunner.no","luroy.no","lurøy.no","luster.no","lyngdal.no","lyngen.no","ivgu.no","lardal.no","lerdal.no","lærdal.no","lodingen.no","lødingen.no","lorenskog.no","lørenskog.no","loten.no","løten.no","malvik.no","masoy.no","måsøy.no","muosat.no","muosát.no","mandal.no","marker.no","marnardal.no","masfjorden.no","meland.no","meldal.no","melhus.no","meloy.no","meløy.no","meraker.no","meråker.no","moareke.no","moåreke.no","midsund.no","midtre-gauldal.no","modalen.no","modum.no","molde.no","moskenes.no","moss.no","mosvik.no","malselv.no","målselv.no","malatvuopmi.no","málatvuopmi.no","namdalseid.no","aejrie.no","namsos.no","namsskogan.no","naamesjevuemie.no","nååmesjevuemie.no","laakesvuemie.no","nannestad.no","narvik.no","narviika.no","naustdal.no","nedre-eiker.no","nes.akershus.no","nes.buskerud.no","nesna.no","nesodden.no","nesseby.no","unjarga.no","unjárga.no","nesset.no","nissedal.no","nittedal.no","nord-aurdal.no","nord-fron.no","nord-odal.no","norddal.no","nordkapp.no","davvenjarga.no","davvenjárga.no","nordre-land.no","nordreisa.no","raisa.no","ráisa.no","nore-og-uvdal.no","notodden.no","naroy.no","nærøy.no","notteroy.no","nøtterøy.no","odda.no","oksnes.no","øksnes.no","oppdal.no","oppegard.no","oppegård.no","orkdal.no","orland.no","ørland.no","orskog.no","ørskog.no","orsta.no","ørsta.no","os.hedmark.no","os.hordaland.no","osen.no","osteroy.no","osterøy.no","ostre-toten.no","østre-toten.no","overhalla.no","ovre-eiker.no","øvre-eiker.no","oyer.no","øyer.no","oygarden.no","øygarden.no","oystre-slidre.no","øystre-slidre.no","porsanger.no","porsangu.no","porsáŋgu.no","porsgrunn.no","radoy.no","radøy.no","rakkestad.no","rana.no","ruovat.no","randaberg.no","rauma.no","rendalen.no","rennebu.no","rennesoy.no","rennesøy.no","rindal.no","ringebu.no","ringerike.no","ringsaker.no","rissa.no","risor.no","risør.no","roan.no","rollag.no","rygge.no","ralingen.no","rælingen.no","rodoy.no","rødøy.no","romskog.no","rømskog.no","roros.no","røros.no","rost.no","røst.no","royken.no","røyken.no","royrvik.no","røyrvik.no","rade.no","råde.no","salangen.no","siellak.no","saltdal.no","salat.no","sálát.no","sálat.no","samnanger.no","sande.more-og-romsdal.no","sande.møre-og-romsdal.no","sande.vestfold.no","sandefjord.no","sandnes.no","sandoy.no","sandøy.no","sarpsborg.no","sauda.no","sauherad.no","sel.no","selbu.no","selje.no","seljord.no","sigdal.no","siljan.no","sirdal.no","skaun.no","skedsmo.no","ski.no","skien.no","skiptvet.no","skjervoy.no","skjervøy.no","skierva.no","skiervá.no","skjak.no","skjåk.no","skodje.no","skanland.no","skånland.no","skanit.no","skánit.no","smola.no","smøla.no","snillfjord.no","snasa.no","snåsa.no","snoasa.no","snaase.no","snåase.no","sogndal.no","sokndal.no","sola.no","solund.no","songdalen.no","sortland.no","spydeberg.no","stange.no","stavanger.no","steigen.no","steinkjer.no","stjordal.no","stjørdal.no","stokke.no","stor-elvdal.no","stord.no","stordal.no","storfjord.no","omasvuotna.no","strand.no","stranda.no","stryn.no","sula.no","suldal.no","sund.no","sunndal.no","surnadal.no","sveio.no","svelvik.no","sykkylven.no","sogne.no","søgne.no","somna.no","sømna.no","sondre-land.no","søndre-land.no","sor-aurdal.no","sør-aurdal.no","sor-fron.no","sør-fron.no","sor-odal.no","sør-odal.no","sor-varanger.no","sør-varanger.no","matta-varjjat.no","mátta-várjjat.no","sorfold.no","sørfold.no","sorreisa.no","sørreisa.no","sorum.no","sørum.no","tana.no","deatnu.no","time.no","tingvoll.no","tinn.no","tjeldsund.no","dielddanuorri.no","tjome.no","tjøme.no","tokke.no","tolga.no","torsken.no","tranoy.no","tranøy.no","tromso.no","tromsø.no","tromsa.no","romsa.no","trondheim.no","troandin.no","trysil.no","trana.no","træna.no","trogstad.no","trøgstad.no","tvedestrand.no","tydal.no","tynset.no","tysfjord.no","divtasvuodna.no","divttasvuotna.no","tysnes.no","tysvar.no","tysvær.no","tonsberg.no","tønsberg.no","ullensaker.no","ullensvang.no","ulvik.no","utsira.no","vadso.no","vadsø.no","cahcesuolo.no","čáhcesuolo.no","vaksdal.no","valle.no","vang.no","vanylven.no","vardo.no","vardø.no","varggat.no","várggát.no","vefsn.no","vaapste.no","vega.no","vegarshei.no","vegårshei.no","vennesla.no","verdal.no","verran.no","vestby.no","vestnes.no","vestre-slidre.no","vestre-toten.no","vestvagoy.no","vestvågøy.no","vevelstad.no","vik.no","vikna.no","vindafjord.no","volda.no","voss.no","varoy.no","værøy.no","vagan.no","vågan.no","voagat.no","vagsoy.no","vågsøy.no","vaga.no","vågå.no","valer.ostfold.no","våler.østfold.no","valer.hedmark.no","våler.hedmark.no","*.np","nr","biz.nr","info.nr","gov.nr","edu.nr","org.nr","net.nr","com.nr","nu","nz","ac.nz","co.nz","cri.nz","geek.nz","gen.nz","govt.nz","health.nz","iwi.nz","kiwi.nz","maori.nz","mil.nz","māori.nz","net.nz","org.nz","parliament.nz","school.nz","om","co.om","com.om","edu.om","gov.om","med.om","museum.om","net.om","org.om","pro.om","onion","org","pa","ac.pa","gob.pa","com.pa","org.pa","sld.pa","edu.pa","net.pa","ing.pa","abo.pa","med.pa","nom.pa","pe","edu.pe","gob.pe","nom.pe","mil.pe","org.pe","com.pe","net.pe","pf","com.pf","org.pf","edu.pf","*.pg","ph","com.ph","net.ph","org.ph","gov.ph","edu.ph","ngo.ph","mil.ph","i.ph","pk","com.pk","net.pk","edu.pk","org.pk","fam.pk","biz.pk","web.pk","gov.pk","gob.pk","gok.pk","gon.pk","gop.pk","gos.pk","info.pk","pl","com.pl","net.pl","org.pl","aid.pl","agro.pl","atm.pl","auto.pl","biz.pl","edu.pl","gmina.pl","gsm.pl","info.pl","mail.pl","miasta.pl","media.pl","mil.pl","nieruchomosci.pl","nom.pl","pc.pl","powiat.pl","priv.pl","realestate.pl","rel.pl","sex.pl","shop.pl","sklep.pl","sos.pl","szkola.pl","targi.pl","tm.pl","tourism.pl","travel.pl","turystyka.pl","gov.pl","ap.gov.pl","ic.gov.pl","is.gov.pl","us.gov.pl","kmpsp.gov.pl","kppsp.gov.pl","kwpsp.gov.pl","psp.gov.pl","wskr.gov.pl","kwp.gov.pl","mw.gov.pl","ug.gov.pl","um.gov.pl","umig.gov.pl","ugim.gov.pl","upow.gov.pl","uw.gov.pl","starostwo.gov.pl","pa.gov.pl","po.gov.pl","psse.gov.pl","pup.gov.pl","rzgw.gov.pl","sa.gov.pl","so.gov.pl","sr.gov.pl","wsa.gov.pl","sko.gov.pl","uzs.gov.pl","wiih.gov.pl","winb.gov.pl","pinb.gov.pl","wios.gov.pl","witd.gov.pl","wzmiuw.gov.pl","piw.gov.pl","wiw.gov.pl","griw.gov.pl","wif.gov.pl","oum.gov.pl","sdn.gov.pl","zp.gov.pl","uppo.gov.pl","mup.gov.pl","wuoz.gov.pl","konsulat.gov.pl","oirm.gov.pl","augustow.pl","babia-gora.pl","bedzin.pl","beskidy.pl","bialowieza.pl","bialystok.pl","bielawa.pl","bieszczady.pl","boleslawiec.pl","bydgoszcz.pl","bytom.pl","cieszyn.pl","czeladz.pl","czest.pl","dlugoleka.pl","elblag.pl","elk.pl","glogow.pl","gniezno.pl","gorlice.pl","grajewo.pl","ilawa.pl","jaworzno.pl","jelenia-gora.pl","jgora.pl","kalisz.pl","kazimierz-dolny.pl","karpacz.pl","kartuzy.pl","kaszuby.pl","katowice.pl","kepno.pl","ketrzyn.pl","klodzko.pl","kobierzyce.pl","kolobrzeg.pl","konin.pl","konskowola.pl","kutno.pl","lapy.pl","lebork.pl","legnica.pl","lezajsk.pl","limanowa.pl","lomza.pl","lowicz.pl","lubin.pl","lukow.pl","malbork.pl","malopolska.pl","mazowsze.pl","mazury.pl","mielec.pl","mielno.pl","mragowo.pl","naklo.pl","nowaruda.pl","nysa.pl","olawa.pl","olecko.pl","olkusz.pl","olsztyn.pl","opoczno.pl","opole.pl","ostroda.pl","ostroleka.pl","ostrowiec.pl","ostrowwlkp.pl","pila.pl","pisz.pl","podhale.pl","podlasie.pl","polkowice.pl","pomorze.pl","pomorskie.pl","prochowice.pl","pruszkow.pl","przeworsk.pl","pulawy.pl","radom.pl","rawa-maz.pl","rybnik.pl","rzeszow.pl","sanok.pl","sejny.pl","slask.pl","slupsk.pl","sosnowiec.pl","stalowa-wola.pl","skoczow.pl","starachowice.pl","stargard.pl","suwalki.pl","swidnica.pl","swiebodzin.pl","swinoujscie.pl","szczecin.pl","szczytno.pl","tarnobrzeg.pl","tgory.pl","turek.pl","tychy.pl","ustka.pl","walbrzych.pl","warmia.pl","warszawa.pl","waw.pl","wegrow.pl","wielun.pl","wlocl.pl","wloclawek.pl","wodzislaw.pl","wolomin.pl","wroclaw.pl","zachpomor.pl","zagan.pl","zarow.pl","zgora.pl","zgorzelec.pl","pm","pn","gov.pn","co.pn","org.pn","edu.pn","net.pn","post","pr","com.pr","net.pr","org.pr","gov.pr","edu.pr","isla.pr","pro.pr","biz.pr","info.pr","name.pr","est.pr","prof.pr","ac.pr","pro","aaa.pro","aca.pro","acct.pro","avocat.pro","bar.pro","cpa.pro","eng.pro","jur.pro","law.pro","med.pro","recht.pro","ps","edu.ps","gov.ps","sec.ps","plo.ps","com.ps","org.ps","net.ps","pt","net.pt","gov.pt","org.pt","edu.pt","int.pt","publ.pt","com.pt","nome.pt","pw","co.pw","ne.pw","or.pw","ed.pw","go.pw","belau.pw","py","com.py","coop.py","edu.py","gov.py","mil.py","net.py","org.py","qa","com.qa","edu.qa","gov.qa","mil.qa","name.qa","net.qa","org.qa","sch.qa","re","asso.re","com.re","nom.re","ro","arts.ro","com.ro","firm.ro","info.ro","nom.ro","nt.ro","org.ro","rec.ro","store.ro","tm.ro","www.ro","rs","ac.rs","co.rs","edu.rs","gov.rs","in.rs","org.rs","ru","ac.ru","edu.ru","gov.ru","int.ru","mil.ru","test.ru","rw","ac.rw","co.rw","coop.rw","gov.rw","mil.rw","net.rw","org.rw","sa","com.sa","net.sa","org.sa","gov.sa","med.sa","pub.sa","edu.sa","sch.sa","sb","com.sb","edu.sb","gov.sb","net.sb","org.sb","sc","com.sc","gov.sc","net.sc","org.sc","edu.sc","sd","com.sd","net.sd","org.sd","edu.sd","med.sd","tv.sd","gov.sd","info.sd","se","a.se","ac.se","b.se","bd.se","brand.se","c.se","d.se","e.se","f.se","fh.se","fhsk.se","fhv.se","g.se","h.se","i.se","k.se","komforb.se","kommunalforbund.se","komvux.se","l.se","lanbib.se","m.se","n.se","naturbruksgymn.se","o.se","org.se","p.se","parti.se","pp.se","press.se","r.se","s.se","t.se","tm.se","u.se","w.se","x.se","y.se","z.se","sg","com.sg","net.sg","org.sg","gov.sg","edu.sg","per.sg","sh","com.sh","net.sh","gov.sh","org.sh","mil.sh","si","sj","sk","sl","com.sl","net.sl","edu.sl","gov.sl","org.sl","sm","sn","art.sn","com.sn","edu.sn","gouv.sn","org.sn","perso.sn","univ.sn","so","com.so","net.so","org.so","sr","st","co.st","com.st","consulado.st","edu.st","embaixada.st","gov.st","mil.st","net.st","org.st","principe.st","saotome.st","store.st","su","sv","com.sv","edu.sv","gob.sv","org.sv","red.sv","sx","gov.sx","sy","edu.sy","gov.sy","net.sy","mil.sy","com.sy","org.sy","sz","co.sz","ac.sz","org.sz","tc","td","tel","tf","tg","th","ac.th","co.th","go.th","in.th","mi.th","net.th","or.th","tj","ac.tj","biz.tj","co.tj","com.tj","edu.tj","go.tj","gov.tj","int.tj","mil.tj","name.tj","net.tj","nic.tj","org.tj","test.tj","web.tj","tk","tl","gov.tl","tm","com.tm","co.tm","org.tm","net.tm","nom.tm","gov.tm","mil.tm","edu.tm","tn","com.tn","ens.tn","fin.tn","gov.tn","ind.tn","intl.tn","nat.tn","net.tn","org.tn","info.tn","perso.tn","tourism.tn","edunet.tn","rnrt.tn","rns.tn","rnu.tn","mincom.tn","agrinet.tn","defense.tn","turen.tn","to","com.to","gov.to","net.to","org.to","edu.to","mil.to","tr","av.tr","bbs.tr","bel.tr","biz.tr","com.tr","dr.tr","edu.tr","gen.tr","gov.tr","info.tr","mil.tr","k12.tr","kep.tr","name.tr","net.tr","org.tr","pol.tr","tel.tr","tsk.tr","tv.tr","web.tr","nc.tr","gov.nc.tr","tt","co.tt","com.tt","org.tt","net.tt","biz.tt","info.tt","pro.tt","int.tt","coop.tt","jobs.tt","mobi.tt","travel.tt","museum.tt","aero.tt","name.tt","gov.tt","edu.tt","tv","tw","edu.tw","gov.tw","mil.tw","com.tw","net.tw","org.tw","idv.tw","game.tw","ebiz.tw","club.tw","網路.tw","組織.tw","商業.tw","tz","ac.tz","co.tz","go.tz","hotel.tz","info.tz","me.tz","mil.tz","mobi.tz","ne.tz","or.tz","sc.tz","tv.tz","ua","com.ua","edu.ua","gov.ua","in.ua","net.ua","org.ua","cherkassy.ua","cherkasy.ua","chernigov.ua","chernihiv.ua","chernivtsi.ua","chernovtsy.ua","ck.ua","cn.ua","cr.ua","crimea.ua","cv.ua","dn.ua","dnepropetrovsk.ua","dnipropetrovsk.ua","dominic.ua","donetsk.ua","dp.ua","if.ua","ivano-frankivsk.ua","kh.ua","kharkiv.ua","kharkov.ua","kherson.ua","khmelnitskiy.ua","khmelnytskyi.ua","kiev.ua","kirovograd.ua","km.ua","kr.ua","krym.ua","ks.ua","kv.ua","kyiv.ua","lg.ua","lt.ua","lugansk.ua","lutsk.ua","lv.ua","lviv.ua","mk.ua","mykolaiv.ua","nikolaev.ua","od.ua","odesa.ua","odessa.ua","pl.ua","poltava.ua","rivne.ua","rovno.ua","rv.ua","sb.ua","sebastopol.ua","sevastopol.ua","sm.ua","sumy.ua","te.ua","ternopil.ua","uz.ua","uzhgorod.ua","vinnica.ua","vinnytsia.ua","vn.ua","volyn.ua","yalta.ua","zaporizhzhe.ua","zaporizhzhia.ua","zhitomir.ua","zhytomyr.ua","zp.ua","zt.ua","ug","co.ug","or.ug","ac.ug","sc.ug","go.ug","ne.ug","com.ug","org.ug","uk","ac.uk","co.uk","gov.uk","ltd.uk","me.uk","net.uk","nhs.uk","org.uk","plc.uk","police.uk","*.sch.uk","us","dni.us","fed.us","isa.us","kids.us","nsn.us","ak.us","al.us","ar.us","as.us","az.us","ca.us","co.us","ct.us","dc.us","de.us","fl.us","ga.us","gu.us","hi.us","ia.us","id.us","il.us","in.us","ks.us","ky.us","la.us","ma.us","md.us","me.us","mi.us","mn.us","mo.us","ms.us","mt.us","nc.us","nd.us","ne.us","nh.us","nj.us","nm.us","nv.us","ny.us","oh.us","ok.us","or.us","pa.us","pr.us","ri.us","sc.us","sd.us","tn.us","tx.us","ut.us","vi.us","vt.us","va.us","wa.us","wi.us","wv.us","wy.us","k12.ak.us","k12.al.us","k12.ar.us","k12.as.us","k12.az.us","k12.ca.us","k12.co.us","k12.ct.us","k12.dc.us","k12.de.us","k12.fl.us","k12.ga.us","k12.gu.us","k12.ia.us","k12.id.us","k12.il.us","k12.in.us","k12.ks.us","k12.ky.us","k12.la.us","k12.ma.us","k12.md.us","k12.me.us","k12.mi.us","k12.mn.us","k12.mo.us","k12.ms.us","k12.mt.us","k12.nc.us","k12.ne.us","k12.nh.us","k12.nj.us","k12.nm.us","k12.nv.us","k12.ny.us","k12.oh.us","k12.ok.us","k12.or.us","k12.pa.us","k12.pr.us","k12.ri.us","k12.sc.us","k12.tn.us","k12.tx.us","k12.ut.us","k12.vi.us","k12.vt.us","k12.va.us","k12.wa.us","k12.wi.us","k12.wy.us","cc.ak.us","cc.al.us","cc.ar.us","cc.as.us","cc.az.us","cc.ca.us","cc.co.us","cc.ct.us","cc.dc.us","cc.de.us","cc.fl.us","cc.ga.us","cc.gu.us","cc.hi.us","cc.ia.us","cc.id.us","cc.il.us","cc.in.us","cc.ks.us","cc.ky.us","cc.la.us","cc.ma.us","cc.md.us","cc.me.us","cc.mi.us","cc.mn.us","cc.mo.us","cc.ms.us","cc.mt.us","cc.nc.us","cc.nd.us","cc.ne.us","cc.nh.us","cc.nj.us","cc.nm.us","cc.nv.us","cc.ny.us","cc.oh.us","cc.ok.us","cc.or.us","cc.pa.us","cc.pr.us","cc.ri.us","cc.sc.us","cc.sd.us","cc.tn.us","cc.tx.us","cc.ut.us","cc.vi.us","cc.vt.us","cc.va.us","cc.wa.us","cc.wi.us","cc.wv.us","cc.wy.us","lib.ak.us","lib.al.us","lib.ar.us","lib.as.us","lib.az.us","lib.ca.us","lib.co.us","lib.ct.us","lib.dc.us","lib.fl.us","lib.ga.us","lib.gu.us","lib.hi.us","lib.ia.us","lib.id.us","lib.il.us","lib.in.us","lib.ks.us","lib.ky.us","lib.la.us","lib.ma.us","lib.md.us","lib.me.us","lib.mi.us","lib.mn.us","lib.mo.us","lib.ms.us","lib.mt.us","lib.nc.us","lib.nd.us","lib.ne.us","lib.nh.us","lib.nj.us","lib.nm.us","lib.nv.us","lib.ny.us","lib.oh.us","lib.ok.us","lib.or.us","lib.pa.us","lib.pr.us","lib.ri.us","lib.sc.us","lib.sd.us","lib.tn.us","lib.tx.us","lib.ut.us","lib.vi.us","lib.vt.us","lib.va.us","lib.wa.us","lib.wi.us","lib.wy.us","pvt.k12.ma.us","chtr.k12.ma.us","paroch.k12.ma.us","ann-arbor.mi.us","cog.mi.us","dst.mi.us","eaton.mi.us","gen.mi.us","mus.mi.us","tec.mi.us","washtenaw.mi.us","uy","com.uy","edu.uy","gub.uy","mil.uy","net.uy","org.uy","uz","co.uz","com.uz","net.uz","org.uz","va","vc","com.vc","net.vc","org.vc","gov.vc","mil.vc","edu.vc","ve","arts.ve","co.ve","com.ve","e12.ve","edu.ve","firm.ve","gob.ve","gov.ve","info.ve","int.ve","mil.ve","net.ve","org.ve","rec.ve","store.ve","tec.ve","web.ve","vg","vi","co.vi","com.vi","k12.vi","net.vi","org.vi","vn","com.vn","net.vn","org.vn","edu.vn","gov.vn","int.vn","ac.vn","biz.vn","info.vn","name.vn","pro.vn","health.vn","vu","com.vu","edu.vu","net.vu","org.vu","wf","ws","com.ws","net.ws","org.ws","gov.ws","edu.ws","yt","امارات","հայ","বাংলা","бг","бел","中国","中國","الجزائر","مصر","ею","გე","ελ","香港","公司.香港","教育.香港","政府.香港","個人.香港","網絡.香港","組織.香港","ಭಾರತ","ଭାରତ","ভাৰত","भारतम्","भारोत","ڀارت","ഭാരതം","भारत","بارت","بھارت","భారత్","ભારત","ਭਾਰਤ","ভারত","இந்தியா","ایران","ايران","عراق","الاردن","한국","қаз","ලංකා","இலங்கை","المغرب","мкд","мон","澳門","澳门","مليسيا","عمان","پاکستان","پاكستان","فلسطين","срб","пр.срб","орг.срб","обр.срб","од.срб","упр.срб","ак.срб","рф","قطر","السعودية","السعودیة","السعودیۃ","السعوديه","سودان","新加坡","சிங்கப்பூர்","سورية","سوريا","ไทย","ศึกษา.ไทย","ธุรกิจ.ไทย","รัฐบาล.ไทย","ทหาร.ไทย","เน็ต.ไทย","องค์กร.ไทย","تونس","台灣","台湾","臺灣","укр","اليمن","xxx","*.ye","ac.za","agric.za","alt.za","co.za","edu.za","gov.za","grondar.za","law.za","mil.za","net.za","ngo.za","nic.za","nis.za","nom.za","org.za","school.za","tm.za","web.za","zm","ac.zm","biz.zm","co.zm","com.zm","edu.zm","gov.zm","info.zm","mil.zm","net.zm","org.zm","sch.zm","zw","ac.zw","co.zw","gov.zw","mil.zw","org.zw","aaa","aarp","abarth","abb","abbott","abbvie","abc","able","abogado","abudhabi","academy","accenture","accountant","accountants","aco","actor","adac","ads","adult","aeg","aetna","afamilycompany","afl","africa","agakhan","agency","aig","aigo","airbus","airforce","airtel","akdn","alfaromeo","alibaba","alipay","allfinanz","allstate","ally","alsace","alstom","americanexpress","americanfamily","amex","amfam","amica","amsterdam","analytics","android","anquan","anz","aol","apartments","app","apple","aquarelle","arab","aramco","archi","army","art","arte","asda","associates","athleta","attorney","auction","audi","audible","audio","auspost","author","auto","autos","avianca","aws","axa","azure","baby","baidu","banamex","bananarepublic","band","bank","bar","barcelona","barclaycard","barclays","barefoot","bargains","baseball","basketball","bauhaus","bayern","bbc","bbt","bbva","bcg","bcn","beats","beauty","beer","bentley","berlin","best","bestbuy","bet","bharti","bible","bid","bike","bing","bingo","bio","black","blackfriday","blockbuster","blog","bloomberg","blue","bms","bmw","bnpparibas","boats","boehringer","bofa","bom","bond","boo","book","booking","bosch","bostik","boston","bot","boutique","box","bradesco","bridgestone","broadway","broker","brother","brussels","budapest","bugatti","build","builders","business","buy","buzz","bzh","cab","cafe","cal","call","calvinklein","cam","camera","camp","cancerresearch","canon","capetown","capital","capitalone","car","caravan","cards","care","career","careers","cars","cartier","casa","case","caseih","cash","casino","catering","catholic","cba","cbn","cbre","cbs","ceb","center","ceo","cern","cfa","cfd","chanel","channel","charity","chase","chat","cheap","chintai","christmas","chrome","chrysler","church","cipriani","circle","cisco","citadel","citi","citic","city","cityeats","claims","cleaning","click","clinic","clinique","clothing","cloud","club","clubmed","coach","codes","coffee","college","cologne","comcast","commbank","community","company","compare","computer","comsec","condos","construction","consulting","contact","contractors","cooking","cookingchannel","cool","corsica","country","coupon","coupons","courses","cpa","credit","creditcard","creditunion","cricket","crown","crs","cruise","cruises","csc","cuisinella","cymru","cyou","dabur","dad","dance","data","date","dating","datsun","day","dclk","dds","deal","dealer","deals","degree","delivery","dell","deloitte","delta","democrat","dental","dentist","desi","design","dev","dhl","diamonds","diet","digital","direct","directory","discount","discover","dish","diy","dnp","docs","doctor","dodge","dog","domains","dot","download","drive","dtv","dubai","duck","dunlop","dupont","durban","dvag","dvr","earth","eat","eco","edeka","education","email","emerck","energy","engineer","engineering","enterprises","epson","equipment","ericsson","erni","esq","estate","esurance","etisalat","eurovision","eus","events","everbank","exchange","expert","exposed","express","extraspace","fage","fail","fairwinds","faith","family","fan","fans","farm","farmers","fashion","fast","fedex","feedback","ferrari","ferrero","fiat","fidelity","fido","film","final","finance","financial","fire","firestone","firmdale","fish","fishing","fit","fitness","flickr","flights","flir","florist","flowers","fly","foo","food","foodnetwork","football","ford","forex","forsale","forum","foundation","fox","free","fresenius","frl","frogans","frontdoor","frontier","ftr","fujitsu","fujixerox","fun","fund","furniture","futbol","fyi","gal","gallery","gallo","gallup","game","games","gap","garden","gay","gbiz","gdn","gea","gent","genting","george","ggee","gift","gifts","gives","giving","glade","glass","gle","global","globo","gmail","gmbh","gmo","gmx","godaddy","gold","goldpoint","golf","goo","goodyear","goog","google","gop","got","grainger","graphics","gratis","green","gripe","grocery","group","guardian","gucci","guge","guide","guitars","guru","hair","hamburg","hangout","haus","hbo","hdfc","hdfcbank","health","healthcare","help","helsinki","here","hermes","hgtv","hiphop","hisamitsu","hitachi","hiv","hkt","hockey","holdings","holiday","homedepot","homegoods","homes","homesense","honda","horse","hospital","host","hosting","hot","hoteles","hotels","hotmail","house","how","hsbc","hughes","hyatt","hyundai","ibm","icbc","ice","icu","ieee","ifm","ikano","imamat","imdb","immo","immobilien","inc","industries","infiniti","ing","ink","institute","insurance","insure","intel","international","intuit","investments","ipiranga","irish","ismaili","ist","istanbul","itau","itv","iveco","jaguar","java","jcb","jcp","jeep","jetzt","jewelry","jio","jll","jmp","jnj","joburg","jot","joy","jpmorgan","jprs","juegos","juniper","kaufen","kddi","kerryhotels","kerrylogistics","kerryproperties","kfh","kia","kim","kinder","kindle","kitchen","kiwi","koeln","komatsu","kosher","kpmg","kpn","krd","kred","kuokgroup","kyoto","lacaixa","ladbrokes","lamborghini","lamer","lancaster","lancia","lancome","land","landrover","lanxess","lasalle","lat","latino","latrobe","law","lawyer","lds","lease","leclerc","lefrak","legal","lego","lexus","lgbt","liaison","lidl","life","lifeinsurance","lifestyle","lighting","like","lilly","limited","limo","lincoln","linde","link","lipsy","live","living","lixil","llc","llp","loan","loans","locker","locus","loft","lol","london","lotte","lotto","love","lpl","lplfinancial","ltd","ltda","lundbeck","lupin","luxe","luxury","macys","madrid","maif","maison","makeup","man","management","mango","map","market","marketing","markets","marriott","marshalls","maserati","mattel","mba","mckinsey","med","media","meet","melbourne","meme","memorial","men","menu","merckmsd","metlife","miami","microsoft","mini","mint","mit","mitsubishi","mlb","mls","mma","mobile","mobily","moda","moe","moi","mom","monash","money","monster","mopar","mormon","mortgage","moscow","moto","motorcycles","mov","movie","movistar","msd","mtn","mtr","mutual","nab","nadex","nagoya","nationwide","natura","navy","nba","nec","netbank","netflix","network","neustar","new","newholland","news","next","nextdirect","nexus","nfl","ngo","nhk","nico","nike","nikon","ninja","nissan","nissay","nokia","northwesternmutual","norton","now","nowruz","nowtv","nra","nrw","ntt","nyc","obi","observer","off","office","okinawa","olayan","olayangroup","oldnavy","ollo","omega","one","ong","onl","online","onyourside","ooo","open","oracle","orange","organic","origins","osaka","otsuka","ott","ovh","page","panasonic","paris","pars","partners","parts","party","passagens","pay","pccw","pet","pfizer","pharmacy","phd","philips","phone","photo","photography","photos","physio","piaget","pics","pictet","pictures","pid","pin","ping","pink","pioneer","pizza","place","play","playstation","plumbing","plus","pnc","pohl","poker","politie","porn","pramerica","praxi","press","prime","prod","productions","prof","progressive","promo","properties","property","protection","pru","prudential","pub","pwc","qpon","quebec","quest","qvc","racing","radio","raid","read","realestate","realtor","realty","recipes","red","redstone","redumbrella","rehab","reise","reisen","reit","reliance","ren","rent","rentals","repair","report","republican","rest","restaurant","review","reviews","rexroth","rich","richardli","ricoh","rightathome","ril","rio","rip","rmit","rocher","rocks","rodeo","rogers","room","rsvp","rugby","ruhr","run","rwe","ryukyu","saarland","safe","safety","sakura","sale","salon","samsclub","samsung","sandvik","sandvikcoromant","sanofi","sap","sarl","sas","save","saxo","sbi","sbs","sca","scb","schaeffler","schmidt","scholarships","school","schule","schwarz","science","scjohnson","scor","scot","search","seat","secure","security","seek","select","sener","services","ses","seven","sew","sex","sexy","sfr","shangrila","sharp","shaw","shell","shia","shiksha","shoes","shop","shopping","shouji","show","showtime","shriram","silk","sina","singles","site","ski","skin","sky","skype","sling","smart","smile","sncf","soccer","social","softbank","software","sohu","solar","solutions","song","sony","soy","space","sport","spot","spreadbetting","srl","srt","stada","staples","star","statebank","statefarm","stc","stcgroup","stockholm","storage","store","stream","studio","study","style","sucks","supplies","supply","support","surf","surgery","suzuki","swatch","swiftcover","swiss","sydney","symantec","systems","tab","taipei","talk","taobao","target","tatamotors","tatar","tattoo","tax","taxi","tci","tdk","team","tech","technology","telefonica","temasek","tennis","teva","thd","theater","theatre","tiaa","tickets","tienda","tiffany","tips","tires","tirol","tjmaxx","tjx","tkmaxx","tmall","today","tokyo","tools","top","toray","toshiba","total","tours","town","toyota","toys","trade","trading","training","travel","travelchannel","travelers","travelersinsurance","trust","trv","tube","tui","tunes","tushu","tvs","ubank","ubs","uconnect","unicom","university","uno","uol","ups","vacations","vana","vanguard","vegas","ventures","verisign","versicherung","vet","viajes","video","vig","viking","villas","vin","vip","virgin","visa","vision","vistaprint","viva","vivo","vlaanderen","vodka","volkswagen","volvo","vote","voting","voto","voyage","vuelos","wales","walmart","walter","wang","wanggou","warman","watch","watches","weather","weatherchannel","webcam","weber","website","wed","wedding","weibo","weir","whoswho","wien","wiki","williamhill","win","windows","wine","winners","wme","wolterskluwer","woodside","work","works","world","wow","wtc","wtf","xbox","xerox","xfinity","xihuan","xin","कॉम","セール","佛山","慈善","集团","在线","大众汽车","点看","คอม","八卦","موقع","公益","公司","香格里拉","网站","移动","我爱你","москва","католик","онлайн","сайт","联通","קום","时尚","微博","淡马锡","ファッション","орг","नेट","ストア","삼성","商标","商店","商城","дети","ポイント","新闻","工行","家電","كوم","中文网","中信","娱乐","谷歌","電訊盈科","购物","クラウド","通販","网店","संगठन","餐厅","网络","ком","诺基亚","食品","飞利浦","手表","手机","ارامكو","العليان","اتصالات","بازار","موبايلي","ابوظبي","كاثوليك","همراه","닷컴","政府","شبكة","بيتك","عرب","机构","组织机构","健康","招聘","рус","珠宝","大拿","みんな","グーグル","世界","書籍","网址","닷넷","コム","天主教","游戏","vermögensberater","vermögensberatung","企业","信息","嘉里大酒店","嘉里","广东","政务","xyz","yachts","yahoo","yamaxun","yandex","yodobashi","yoga","yokohama","you","youtube","yun","zappos","zara","zero","zip","zone","zuerich","cc.ua","inf.ua","ltd.ua","beep.pl","barsy.ca","*.compute.estate","*.alces.network","alwaysdata.net","cloudfront.net","*.compute.amazonaws.com","*.compute-1.amazonaws.com","*.compute.amazonaws.com.cn","us-east-1.amazonaws.com","cn-north-1.eb.amazonaws.com.cn","cn-northwest-1.eb.amazonaws.com.cn","elasticbeanstalk.com","ap-northeast-1.elasticbeanstalk.com","ap-northeast-2.elasticbeanstalk.com","ap-northeast-3.elasticbeanstalk.com","ap-south-1.elasticbeanstalk.com","ap-southeast-1.elasticbeanstalk.com","ap-southeast-2.elasticbeanstalk.com","ca-central-1.elasticbeanstalk.com","eu-central-1.elasticbeanstalk.com","eu-west-1.elasticbeanstalk.com","eu-west-2.elasticbeanstalk.com","eu-west-3.elasticbeanstalk.com","sa-east-1.elasticbeanstalk.com","us-east-1.elasticbeanstalk.com","us-east-2.elasticbeanstalk.com","us-gov-west-1.elasticbeanstalk.com","us-west-1.elasticbeanstalk.com","us-west-2.elasticbeanstalk.com","*.elb.amazonaws.com","*.elb.amazonaws.com.cn","s3.amazonaws.com","s3-ap-northeast-1.amazonaws.com","s3-ap-northeast-2.amazonaws.com","s3-ap-south-1.amazonaws.com","s3-ap-southeast-1.amazonaws.com","s3-ap-southeast-2.amazonaws.com","s3-ca-central-1.amazonaws.com","s3-eu-central-1.amazonaws.com","s3-eu-west-1.amazonaws.com","s3-eu-west-2.amazonaws.com","s3-eu-west-3.amazonaws.com","s3-external-1.amazonaws.com","s3-fips-us-gov-west-1.amazonaws.com","s3-sa-east-1.amazonaws.com","s3-us-gov-west-1.amazonaws.com","s3-us-east-2.amazonaws.com","s3-us-west-1.amazonaws.com","s3-us-west-2.amazonaws.com","s3.ap-northeast-2.amazonaws.com","s3.ap-south-1.amazonaws.com","s3.cn-north-1.amazonaws.com.cn","s3.ca-central-1.amazonaws.com","s3.eu-central-1.amazonaws.com","s3.eu-west-2.amazonaws.com","s3.eu-west-3.amazonaws.com","s3.us-east-2.amazonaws.com","s3.dualstack.ap-northeast-1.amazonaws.com","s3.dualstack.ap-northeast-2.amazonaws.com","s3.dualstack.ap-south-1.amazonaws.com","s3.dualstack.ap-southeast-1.amazonaws.com","s3.dualstack.ap-southeast-2.amazonaws.com","s3.dualstack.ca-central-1.amazonaws.com","s3.dualstack.eu-central-1.amazonaws.com","s3.dualstack.eu-west-1.amazonaws.com","s3.dualstack.eu-west-2.amazonaws.com","s3.dualstack.eu-west-3.amazonaws.com","s3.dualstack.sa-east-1.amazonaws.com","s3.dualstack.us-east-1.amazonaws.com","s3.dualstack.us-east-2.amazonaws.com","s3-website-us-east-1.amazonaws.com","s3-website-us-west-1.amazonaws.com","s3-website-us-west-2.amazonaws.com","s3-website-ap-northeast-1.amazonaws.com","s3-website-ap-southeast-1.amazonaws.com","s3-website-ap-southeast-2.amazonaws.com","s3-website-eu-west-1.amazonaws.com","s3-website-sa-east-1.amazonaws.com","s3-website.ap-northeast-2.amazonaws.com","s3-website.ap-south-1.amazonaws.com","s3-website.ca-central-1.amazonaws.com","s3-website.eu-central-1.amazonaws.com","s3-website.eu-west-2.amazonaws.com","s3-website.eu-west-3.amazonaws.com","s3-website.us-east-2.amazonaws.com","t3l3p0rt.net","tele.amune.org","apigee.io","on-aptible.com","user.aseinet.ne.jp","gv.vc","d.gv.vc","user.party.eus","pimienta.org","poivron.org","potager.org","sweetpepper.org","myasustor.com","go-vip.co","go-vip.net","wpcomstaging.com","myfritz.net","*.awdev.ca","*.advisor.ws","b-data.io","backplaneapp.io","balena-devices.com","app.banzaicloud.io","betainabox.com","bnr.la","blackbaudcdn.net","boomla.net","boxfuse.io","square7.ch","bplaced.com","bplaced.de","square7.de","bplaced.net","square7.net","browsersafetymark.io","uk0.bigv.io","dh.bytemark.co.uk","vm.bytemark.co.uk","mycd.eu","carrd.co","crd.co","uwu.ai","ae.org","ar.com","br.com","cn.com","com.de","com.se","de.com","eu.com","gb.com","gb.net","hu.com","hu.net","jp.net","jpn.com","kr.com","mex.com","no.com","qc.com","ru.com","sa.com","se.net","uk.com","uk.net","us.com","uy.com","za.bz","za.com","africa.com","gr.com","in.net","us.org","co.com","c.la","certmgr.org","xenapponazure.com","discourse.group","virtueeldomein.nl","cleverapps.io","*.lcl.dev","*.stg.dev","c66.me","cloud66.ws","cloud66.zone","jdevcloud.com","wpdevcloud.com","cloudaccess.host","freesite.host","cloudaccess.net","cloudcontrolled.com","cloudcontrolapp.com","cloudera.site","trycloudflare.com","workers.dev","wnext.app","co.ca","*.otap.co","co.cz","c.cdn77.org","cdn77-ssl.net","r.cdn77.net","rsc.cdn77.org","ssl.origin.cdn77-secure.org","cloudns.asia","cloudns.biz","cloudns.club","cloudns.cc","cloudns.eu","cloudns.in","cloudns.info","cloudns.org","cloudns.pro","cloudns.pw","cloudns.us","cloudeity.net","cnpy.gdn","co.nl","co.no","webhosting.be","hosting-cluster.nl","dyn.cosidns.de","dynamisches-dns.de","dnsupdater.de","internet-dns.de","l-o-g-i-n.de","dynamic-dns.info","feste-ip.net","knx-server.net","static-access.net","realm.cz","*.cryptonomic.net","cupcake.is","cyon.link","cyon.site","daplie.me","localhost.daplie.me","dattolocal.com","dattorelay.com","dattoweb.com","mydatto.com","dattolocal.net","mydatto.net","biz.dk","co.dk","firm.dk","reg.dk","store.dk","*.dapps.earth","*.bzz.dapps.earth","debian.net","dedyn.io","dnshome.de","online.th","shop.th","drayddns.com","dreamhosters.com","mydrobo.com","drud.io","drud.us","duckdns.org","dy.fi","tunk.org","dyndns-at-home.com","dyndns-at-work.com","dyndns-blog.com","dyndns-free.com","dyndns-home.com","dyndns-ip.com","dyndns-mail.com","dyndns-office.com","dyndns-pics.com","dyndns-remote.com","dyndns-server.com","dyndns-web.com","dyndns-wiki.com","dyndns-work.com","dyndns.biz","dyndns.info","dyndns.org","dyndns.tv","at-band-camp.net","ath.cx","barrel-of-knowledge.info","barrell-of-knowledge.info","better-than.tv","blogdns.com","blogdns.net","blogdns.org","blogsite.org","boldlygoingnowhere.org","broke-it.net","buyshouses.net","cechire.com","dnsalias.com","dnsalias.net","dnsalias.org","dnsdojo.com","dnsdojo.net","dnsdojo.org","does-it.net","doesntexist.com","doesntexist.org","dontexist.com","dontexist.net","dontexist.org","doomdns.com","doomdns.org","dvrdns.org","dyn-o-saur.com","dynalias.com","dynalias.net","dynalias.org","dynathome.net","dyndns.ws","endofinternet.net","endofinternet.org","endoftheinternet.org","est-a-la-maison.com","est-a-la-masion.com","est-le-patron.com","est-mon-blogueur.com","for-better.biz","for-more.biz","for-our.info","for-some.biz","for-the.biz","forgot.her.name","forgot.his.name","from-ak.com","from-al.com","from-ar.com","from-az.net","from-ca.com","from-co.net","from-ct.com","from-dc.com","from-de.com","from-fl.com","from-ga.com","from-hi.com","from-ia.com","from-id.com","from-il.com","from-in.com","from-ks.com","from-ky.com","from-la.net","from-ma.com","from-md.com","from-me.org","from-mi.com","from-mn.com","from-mo.com","from-ms.com","from-mt.com","from-nc.com","from-nd.com","from-ne.com","from-nh.com","from-nj.com","from-nm.com","from-nv.com","from-ny.net","from-oh.com","from-ok.com","from-or.com","from-pa.com","from-pr.com","from-ri.com","from-sc.com","from-sd.com","from-tn.com","from-tx.com","from-ut.com","from-va.com","from-vt.com","from-wa.com","from-wi.com","from-wv.com","from-wy.com","ftpaccess.cc","fuettertdasnetz.de","game-host.org","game-server.cc","getmyip.com","gets-it.net","go.dyndns.org","gotdns.com","gotdns.org","groks-the.info","groks-this.info","ham-radio-op.net","here-for-more.info","hobby-site.com","hobby-site.org","home.dyndns.org","homedns.org","homeftp.net","homeftp.org","homeip.net","homelinux.com","homelinux.net","homelinux.org","homeunix.com","homeunix.net","homeunix.org","iamallama.com","in-the-band.net","is-a-anarchist.com","is-a-blogger.com","is-a-bookkeeper.com","is-a-bruinsfan.org","is-a-bulls-fan.com","is-a-candidate.org","is-a-caterer.com","is-a-celticsfan.org","is-a-chef.com","is-a-chef.net","is-a-chef.org","is-a-conservative.com","is-a-cpa.com","is-a-cubicle-slave.com","is-a-democrat.com","is-a-designer.com","is-a-doctor.com","is-a-financialadvisor.com","is-a-geek.com","is-a-geek.net","is-a-geek.org","is-a-green.com","is-a-guru.com","is-a-hard-worker.com","is-a-hunter.com","is-a-knight.org","is-a-landscaper.com","is-a-lawyer.com","is-a-liberal.com","is-a-libertarian.com","is-a-linux-user.org","is-a-llama.com","is-a-musician.com","is-a-nascarfan.com","is-a-nurse.com","is-a-painter.com","is-a-patsfan.org","is-a-personaltrainer.com","is-a-photographer.com","is-a-player.com","is-a-republican.com","is-a-rockstar.com","is-a-socialist.com","is-a-soxfan.org","is-a-student.com","is-a-teacher.com","is-a-techie.com","is-a-therapist.com","is-an-accountant.com","is-an-actor.com","is-an-actress.com","is-an-anarchist.com","is-an-artist.com","is-an-engineer.com","is-an-entertainer.com","is-by.us","is-certified.com","is-found.org","is-gone.com","is-into-anime.com","is-into-cars.com","is-into-cartoons.com","is-into-games.com","is-leet.com","is-lost.org","is-not-certified.com","is-saved.org","is-slick.com","is-uberleet.com","is-very-bad.org","is-very-evil.org","is-very-good.org","is-very-nice.org","is-very-sweet.org","is-with-theband.com","isa-geek.com","isa-geek.net","isa-geek.org","isa-hockeynut.com","issmarterthanyou.com","isteingeek.de","istmein.de","kicks-ass.net","kicks-ass.org","knowsitall.info","land-4-sale.us","lebtimnetz.de","leitungsen.de","likes-pie.com","likescandy.com","merseine.nu","mine.nu","misconfused.org","mypets.ws","myphotos.cc","neat-url.com","office-on-the.net","on-the-web.tv","podzone.net","podzone.org","readmyblog.org","saves-the-whales.com","scrapper-site.net","scrapping.cc","selfip.biz","selfip.com","selfip.info","selfip.net","selfip.org","sells-for-less.com","sells-for-u.com","sells-it.net","sellsyourhome.org","servebbs.com","servebbs.net","servebbs.org","serveftp.net","serveftp.org","servegame.org","shacknet.nu","simple-url.com","space-to-rent.com","stuff-4-sale.org","stuff-4-sale.us","teaches-yoga.com","thruhere.net","traeumtgerade.de","webhop.biz","webhop.info","webhop.net","webhop.org","worse-than.tv","writesthisblog.com","ddnss.de","dyn.ddnss.de","dyndns.ddnss.de","dyndns1.de","dyn-ip24.de","home-webserver.de","dyn.home-webserver.de","myhome-server.de","ddnss.org","definima.net","definima.io","bci.dnstrace.pro","ddnsfree.com","ddnsgeek.com","giize.com","gleeze.com","kozow.com","loseyourip.com","ooguy.com","theworkpc.com","casacam.net","dynu.net","accesscam.org","camdvr.org","freeddns.org","mywire.org","webredirect.org","myddns.rocks","blogsite.xyz","dynv6.net","e4.cz","mytuleap.com","onred.one","staging.onred.one","enonic.io","customer.enonic.io","eu.org","al.eu.org","asso.eu.org","at.eu.org","au.eu.org","be.eu.org","bg.eu.org","ca.eu.org","cd.eu.org","ch.eu.org","cn.eu.org","cy.eu.org","cz.eu.org","de.eu.org","dk.eu.org","edu.eu.org","ee.eu.org","es.eu.org","fi.eu.org","fr.eu.org","gr.eu.org","hr.eu.org","hu.eu.org","ie.eu.org","il.eu.org","in.eu.org","int.eu.org","is.eu.org","it.eu.org","jp.eu.org","kr.eu.org","lt.eu.org","lu.eu.org","lv.eu.org","mc.eu.org","me.eu.org","mk.eu.org","mt.eu.org","my.eu.org","net.eu.org","ng.eu.org","nl.eu.org","no.eu.org","nz.eu.org","paris.eu.org","pl.eu.org","pt.eu.org","q-a.eu.org","ro.eu.org","ru.eu.org","se.eu.org","si.eu.org","sk.eu.org","tr.eu.org","uk.eu.org","us.eu.org","eu-1.evennode.com","eu-2.evennode.com","eu-3.evennode.com","eu-4.evennode.com","us-1.evennode.com","us-2.evennode.com","us-3.evennode.com","us-4.evennode.com","twmail.cc","twmail.net","twmail.org","mymailer.com.tw","url.tw","apps.fbsbx.com","ru.net","adygeya.ru","bashkiria.ru","bir.ru","cbg.ru","com.ru","dagestan.ru","grozny.ru","kalmykia.ru","kustanai.ru","marine.ru","mordovia.ru","msk.ru","mytis.ru","nalchik.ru","nov.ru","pyatigorsk.ru","spb.ru","vladikavkaz.ru","vladimir.ru","abkhazia.su","adygeya.su","aktyubinsk.su","arkhangelsk.su","armenia.su","ashgabad.su","azerbaijan.su","balashov.su","bashkiria.su","bryansk.su","bukhara.su","chimkent.su","dagestan.su","east-kazakhstan.su","exnet.su","georgia.su","grozny.su","ivanovo.su","jambyl.su","kalmykia.su","kaluga.su","karacol.su","karaganda.su","karelia.su","khakassia.su","krasnodar.su","kurgan.su","kustanai.su","lenug.su","mangyshlak.su","mordovia.su","msk.su","murmansk.su","nalchik.su","navoi.su","north-kazakhstan.su","nov.su","obninsk.su","penza.su","pokrovsk.su","sochi.su","spb.su","tashkent.su","termez.su","togliatti.su","troitsk.su","tselinograd.su","tula.su","tuva.su","vladikavkaz.su","vladimir.su","vologda.su","channelsdvr.net","fastly-terrarium.com","fastlylb.net","map.fastlylb.net","freetls.fastly.net","map.fastly.net","a.prod.fastly.net","global.prod.fastly.net","a.ssl.fastly.net","b.ssl.fastly.net","global.ssl.fastly.net","fastpanel.direct","fastvps-server.com","fhapp.xyz","fedorainfracloud.org","fedorapeople.org","cloud.fedoraproject.org","app.os.fedoraproject.org","app.os.stg.fedoraproject.org","mydobiss.com","filegear.me","filegear-au.me","filegear-de.me","filegear-gb.me","filegear-ie.me","filegear-jp.me","filegear-sg.me","firebaseapp.com","flynnhub.com","flynnhosting.net","freebox-os.com","freeboxos.com","fbx-os.fr","fbxos.fr","freebox-os.fr","freeboxos.fr","freedesktop.org","*.futurecms.at","*.ex.futurecms.at","*.in.futurecms.at","futurehosting.at","futuremailing.at","*.ex.ortsinfo.at","*.kunden.ortsinfo.at","*.statics.cloud","service.gov.uk","gehirn.ne.jp","usercontent.jp","lab.ms","github.io","githubusercontent.com","gitlab.io","glitch.me","cloudapps.digital","london.cloudapps.digital","homeoffice.gov.uk","ro.im","shop.ro","goip.de","run.app","a.run.app","web.app","*.0emm.com","appspot.com","blogspot.ae","blogspot.al","blogspot.am","blogspot.ba","blogspot.be","blogspot.bg","blogspot.bj","blogspot.ca","blogspot.cf","blogspot.ch","blogspot.cl","blogspot.co.at","blogspot.co.id","blogspot.co.il","blogspot.co.ke","blogspot.co.nz","blogspot.co.uk","blogspot.co.za","blogspot.com","blogspot.com.ar","blogspot.com.au","blogspot.com.br","blogspot.com.by","blogspot.com.co","blogspot.com.cy","blogspot.com.ee","blogspot.com.eg","blogspot.com.es","blogspot.com.mt","blogspot.com.ng","blogspot.com.tr","blogspot.com.uy","blogspot.cv","blogspot.cz","blogspot.de","blogspot.dk","blogspot.fi","blogspot.fr","blogspot.gr","blogspot.hk","blogspot.hr","blogspot.hu","blogspot.ie","blogspot.in","blogspot.is","blogspot.it","blogspot.jp","blogspot.kr","blogspot.li","blogspot.lt","blogspot.lu","blogspot.md","blogspot.mk","blogspot.mr","blogspot.mx","blogspot.my","blogspot.nl","blogspot.no","blogspot.pe","blogspot.pt","blogspot.qa","blogspot.re","blogspot.ro","blogspot.rs","blogspot.ru","blogspot.se","blogspot.sg","blogspot.si","blogspot.sk","blogspot.sn","blogspot.td","blogspot.tw","blogspot.ug","blogspot.vn","cloudfunctions.net","cloud.goog","codespot.com","googleapis.com","googlecode.com","pagespeedmobilizer.com","publishproxy.com","withgoogle.com","withyoutube.com","fin.ci","free.hr","caa.li","ua.rs","conf.se","hs.zone","hs.run","hashbang.sh","hasura.app","hasura-app.io","hepforge.org","herokuapp.com","herokussl.com","myravendb.com","ravendb.community","ravendb.me","development.run","ravendb.run","bpl.biz","orx.biz","ng.city","biz.gl","ng.ink","col.ng","firm.ng","gen.ng","ltd.ng","ng.school","sch.so","häkkinen.fi","*.moonscale.io","moonscale.net","iki.fi","dyn-berlin.de","in-berlin.de","in-brb.de","in-butter.de","in-dsl.de","in-dsl.net","in-dsl.org","in-vpn.de","in-vpn.net","in-vpn.org","biz.at","info.at","info.cx","ac.leg.br","al.leg.br","am.leg.br","ap.leg.br","ba.leg.br","ce.leg.br","df.leg.br","es.leg.br","go.leg.br","ma.leg.br","mg.leg.br","ms.leg.br","mt.leg.br","pa.leg.br","pb.leg.br","pe.leg.br","pi.leg.br","pr.leg.br","rj.leg.br","rn.leg.br","ro.leg.br","rr.leg.br","rs.leg.br","sc.leg.br","se.leg.br","sp.leg.br","to.leg.br","pixolino.com","ipifony.net","mein-iserv.de","test-iserv.de","iserv.dev","iobb.net","myjino.ru","*.hosting.myjino.ru","*.landing.myjino.ru","*.spectrum.myjino.ru","*.vps.myjino.ru","*.triton.zone","*.cns.joyent.com","js.org","kaas.gg","khplay.nl","keymachine.de","kinghost.net","uni5.net","knightpoint.systems","co.krd","edu.krd","git-repos.de","lcube-server.de","svn-repos.de","leadpages.co","lpages.co","lpusercontent.com","lelux.site","co.business","co.education","co.events","co.financial","co.network","co.place","co.technology","app.lmpm.com","linkitools.space","linkyard.cloud","linkyard-cloud.ch","members.linode.com","nodebalancer.linode.com","we.bs","loginline.app","loginline.dev","loginline.io","loginline.services","loginline.site","krasnik.pl","leczna.pl","lubartow.pl","lublin.pl","poniatowa.pl","swidnik.pl","uklugs.org","glug.org.uk","lug.org.uk","lugs.org.uk","barsy.bg","barsy.co.uk","barsyonline.co.uk","barsycenter.com","barsyonline.com","barsy.club","barsy.de","barsy.eu","barsy.in","barsy.info","barsy.io","barsy.me","barsy.menu","barsy.mobi","barsy.net","barsy.online","barsy.org","barsy.pro","barsy.pub","barsy.shop","barsy.site","barsy.support","barsy.uk","*.magentosite.cloud","mayfirst.info","mayfirst.org","hb.cldmail.ru","miniserver.com","memset.net","cloud.metacentrum.cz","custom.metacentrum.cz","flt.cloud.muni.cz","usr.cloud.muni.cz","meteorapp.com","eu.meteorapp.com","co.pl","azurecontainer.io","azurewebsites.net","azure-mobile.net","cloudapp.net","mozilla-iot.org","bmoattachments.org","net.ru","org.ru","pp.ru","ui.nabu.casa","pony.club","of.fashion","on.fashion","of.football","in.london","of.london","for.men","and.mom","for.mom","for.one","for.sale","of.work","to.work","nctu.me","bitballoon.com","netlify.com","4u.com","ngrok.io","nh-serv.co.uk","nfshost.com","dnsking.ch","mypi.co","n4t.co","001www.com","ddnslive.com","myiphost.com","forumz.info","16-b.it","32-b.it","64-b.it","soundcast.me","tcp4.me","dnsup.net","hicam.net","now-dns.net","ownip.net","vpndns.net","dynserv.org","now-dns.org","x443.pw","now-dns.top","ntdll.top","freeddns.us","crafting.xyz","zapto.xyz","nsupdate.info","nerdpol.ovh","blogsyte.com","brasilia.me","cable-modem.org","ciscofreak.com","collegefan.org","couchpotatofries.org","damnserver.com","ddns.me","ditchyourip.com","dnsfor.me","dnsiskinky.com","dvrcam.info","dynns.com","eating-organic.net","fantasyleague.cc","geekgalaxy.com","golffan.us","health-carereform.com","homesecuritymac.com","homesecuritypc.com","hopto.me","ilovecollege.info","loginto.me","mlbfan.org","mmafan.biz","myactivedirectory.com","mydissent.net","myeffect.net","mymediapc.net","mypsx.net","mysecuritycamera.com","mysecuritycamera.net","mysecuritycamera.org","net-freaks.com","nflfan.org","nhlfan.net","no-ip.ca","no-ip.co.uk","no-ip.net","noip.us","onthewifi.com","pgafan.net","point2this.com","pointto.us","privatizehealthinsurance.net","quicksytes.com","read-books.org","securitytactics.com","serveexchange.com","servehumour.com","servep2p.com","servesarcasm.com","stufftoread.com","ufcfan.org","unusualperson.com","workisboring.com","3utilities.com","bounceme.net","ddns.net","ddnsking.com","gotdns.ch","hopto.org","myftp.biz","myftp.org","myvnc.com","no-ip.biz","no-ip.info","no-ip.org","noip.me","redirectme.net","servebeer.com","serveblog.net","servecounterstrike.com","serveftp.com","servegame.com","servehalflife.com","servehttp.com","serveirc.com","serveminecraft.net","servemp3.com","servepics.com","servequake.com","sytes.net","webhop.me","zapto.org","stage.nodeart.io","nodum.co","nodum.io","pcloud.host","nyc.mn","nom.ae","nom.af","nom.ai","nom.al","nym.by","nym.bz","nom.cl","nym.ec","nom.gd","nom.ge","nom.gl","nym.gr","nom.gt","nym.gy","nym.hk","nom.hn","nym.ie","nom.im","nom.ke","nym.kz","nym.la","nym.lc","nom.li","nym.li","nym.lt","nym.lu","nym.me","nom.mk","nym.mn","nym.mx","nom.nu","nym.nz","nym.pe","nym.pt","nom.pw","nom.qa","nym.ro","nom.rs","nom.si","nym.sk","nom.st","nym.su","nym.sx","nom.tj","nym.tw","nom.ug","nom.uy","nom.vc","nom.vg","cya.gg","cloudycluster.net","nid.io","opencraft.hosting","operaunite.com","outsystemscloud.com","ownprovider.com","own.pm","ox.rs","oy.lc","pgfog.com","pagefrontapp.com","art.pl","gliwice.pl","krakow.pl","poznan.pl","wroc.pl","zakopane.pl","pantheonsite.io","gotpantheon.com","mypep.link","on-web.fr","*.platform.sh","*.platformsh.site","dyn53.io","co.bn","xen.prgmr.com","priv.at","prvcy.page","*.dweb.link","protonet.io","chirurgiens-dentistes-en-france.fr","byen.site","pubtls.org","qualifioapp.com","instantcloud.cn","ras.ru","qa2.com","dev-myqnapcloud.com","alpha-myqnapcloud.com","myqnapcloud.com","*.quipelements.com","vapor.cloud","vaporcloud.io","rackmaze.com","rackmaze.net","*.on-rancher.cloud","*.on-rio.io","readthedocs.io","rhcloud.com","app.render.com","onrender.com","repl.co","repl.run","resindevice.io","devices.resinstaging.io","hzc.io","wellbeingzone.eu","ptplus.fit","wellbeingzone.co.uk","git-pages.rit.edu","sandcats.io","logoip.de","logoip.com","schokokeks.net","scrysec.com","firewall-gateway.com","firewall-gateway.de","my-gateway.de","my-router.de","spdns.de","spdns.eu","firewall-gateway.net","my-firewall.org","myfirewall.org","spdns.org","biz.ua","co.ua","pp.ua","shiftedit.io","myshopblocks.com","shopitsite.com","mo-siemens.io","1kapp.com","appchizi.com","applinzi.com","sinaapp.com","vipsinaapp.com","siteleaf.net","bounty-full.com","alpha.bounty-full.com","beta.bounty-full.com","stackhero-network.com","static.land","dev.static.land","sites.static.land","apps.lair.io","*.stolos.io","spacekit.io","customer.speedpartner.de","api.stdlib.com","storj.farm","utwente.io","soc.srcf.net","user.srcf.net","temp-dns.com","applicationcloud.io","scapp.io","*.s5y.io","*.sensiosite.cloud","syncloud.it","diskstation.me","dscloud.biz","dscloud.me","dscloud.mobi","dsmynas.com","dsmynas.net","dsmynas.org","familyds.com","familyds.net","familyds.org","i234.me","myds.me","synology.me","vpnplus.to","direct.quickconnect.to","taifun-dns.de","gda.pl","gdansk.pl","gdynia.pl","med.pl","sopot.pl","edugit.org","telebit.app","telebit.io","*.telebit.xyz","gwiddle.co.uk","thingdustdata.com","cust.dev.thingdust.io","cust.disrec.thingdust.io","cust.prod.thingdust.io","cust.testing.thingdust.io","arvo.network","azimuth.network","bloxcms.com","townnews-staging.com","12hp.at","2ix.at","4lima.at","lima-city.at","12hp.ch","2ix.ch","4lima.ch","lima-city.ch","trafficplex.cloud","de.cool","12hp.de","2ix.de","4lima.de","lima-city.de","1337.pictures","clan.rip","lima-city.rocks","webspace.rocks","lima.zone","*.transurl.be","*.transurl.eu","*.transurl.nl","tuxfamily.org","dd-dns.de","diskstation.eu","diskstation.org","dray-dns.de","draydns.de","dyn-vpn.de","dynvpn.de","mein-vigor.de","my-vigor.de","my-wan.de","syno-ds.de","synology-diskstation.de","synology-ds.de","uber.space","*.uberspace.de","hk.com","hk.org","ltd.hk","inc.hk","virtualuser.de","virtual-user.de","lib.de.us","2038.io","router.management","v-info.info","voorloper.cloud","wafflecell.com","*.webhare.dev","wedeploy.io","wedeploy.me","wedeploy.sh","remotewd.com","wmflabs.org","half.host","xnbay.com","u2.xnbay.com","u2-local.xnbay.com","cistron.nl","demon.nl","xs4all.space","yandexcloud.net","storage.yandexcloud.net","website.yandexcloud.net","official.academy","yolasite.com","ybo.faith","yombo.me","homelink.one","ybo.party","ybo.review","ybo.science","ybo.trade","nohost.me","noho.st","za.net","za.org","now.sh","bss.design","basicserver.io","virtualserver.io","site.builder.nu","enterprisecloud.nu","zone.id"]; + +/***/ }), +/* 984 */, +/* 985 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; + +var _regexSupplant = _interopRequireDefault(__webpack_require__(313)); + +var _validateUrlDomainSegment = _interopRequireDefault(__webpack_require__(729)); + +var _validateUrlDomainTld = _interopRequireDefault(__webpack_require__(872)); + +var _validateUrlSubDomainSegment = _interopRequireDefault(__webpack_require__(370)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var validateUrlDomain = (0, _regexSupplant["default"])(/(?:(?:#{validateUrlSubDomainSegment}\.)*(?:#{validateUrlDomainSegment}\.)#{validateUrlDomainTld})/i, { + validateUrlSubDomainSegment: _validateUrlSubDomainSegment["default"], + validateUrlDomainSegment: _validateUrlDomainSegment["default"], + validateUrlDomainTld: _validateUrlDomainTld["default"] +}); +var _default = validateUrlDomain; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 986 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = void 0; +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +var rtlChars = /[\u0600-\u06FF]|[\u0750-\u077F]|[\u0590-\u05FF]|[\uFE70-\uFEFF]/gm; +var _default = rtlChars; +exports["default"] = _default; +module.exports = exports.default; + +/***/ }), +/* 987 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__(764); + +__webpack_require__(493); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports["default"] = _default; + +var _autoLinkEntities = _interopRequireDefault(__webpack_require__(93)); + +var _extractCashtagsWithIndices = _interopRequireDefault(__webpack_require__(380)); + +// Copyright 2018 Twitter, Inc. +// Licensed under the Apache License, Version 2.0 +// http://www.apache.org/licenses/LICENSE-2.0 +function _default(text, options) { + var entities = (0, _extractCashtagsWithIndices["default"])(text); + return (0, _autoLinkEntities["default"])(text, entities, options); +} + +module.exports = exports.default; + +/***/ }), +/* 988 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +module.exports = __webpack_require__(141); + + +/***/ }), +/* 989 */, +/* 990 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +var isObject = __webpack_require__(956); +module.exports = function (it) { + if (!isObject(it)) throw TypeError(it + ' is not an object!'); + return it; +}; + + +/***/ }), +/* 991 */ +/***/ (function(module, __unusedexports, __webpack_require__) { + +// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) +var anObject = __webpack_require__(990); +var dPs = __webpack_require__(20); +var enumBugKeys = __webpack_require__(5); +var IE_PROTO = __webpack_require__(331)('IE_PROTO'); +var Empty = function () { /* empty */ }; +var PROTOTYPE = 'prototype'; + +// Create object with fake `null` prototype: use iframe Object with cleared prototype +var createDict = function () { + // Thrash, waste and sodomy: IE GC bug + var iframe = __webpack_require__(598)('iframe'); + var i = enumBugKeys.length; + var lt = '<'; + var gt = '>'; + var iframeDocument; + iframe.style.display = 'none'; + __webpack_require__(925).appendChild(iframe); + iframe.src = 'javascript:'; // eslint-disable-line no-script-url + // createDict = iframe.contentWindow.Object; + // html.removeChild(iframe); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); + iframeDocument.close(); + createDict = iframeDocument.F; + while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]]; + return createDict(); +}; + +module.exports = Object.create || function create(O, Properties) { + var result; + if (O !== null) { + Empty[PROTOTYPE] = anObject(O); + result = new Empty(); + Empty[PROTOTYPE] = null; + // add "__proto__" for Object.getPrototypeOf polyfill + result[IE_PROTO] = O; + } else result = createDict(); + return Properties === undefined ? result : dPs(result, Properties); +}; + + +/***/ }), +/* 992 */ +/***/ (function(module) { "use strict"; -module.exports.mixin = function mixin(target, source) { - const keys = Object.getOwnPropertyNames(source); - for (let i = 0; i < keys.length; ++i) { - Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i])); +var traverse = module.exports = function (schema, opts, cb) { + // Legacy support for v0.3.1 and earlier. + if (typeof opts == 'function') { + cb = opts; + opts = {}; } -}; - -module.exports.wrapperSymbol = Symbol("wrapper"); -module.exports.implSymbol = Symbol("impl"); -module.exports.wrapperForImpl = function (impl) { - return impl[module.exports.wrapperSymbol]; -}; + cb = opts.cb || cb; + var pre = (typeof cb == 'function') ? cb : cb.pre || function() {}; + var post = cb.post || function() {}; -module.exports.implForWrapper = function (wrapper) { - return wrapper[module.exports.implSymbol]; + _traverse(opts, pre, post, schema, '', schema); }; +traverse.keywords = { + additionalItems: true, + items: true, + contains: true, + additionalProperties: true, + propertyNames: true, + not: true +}; -/***/ }), - -/***/ 2940: -/***/ ((module) => { - -// Returns a wrapper function that returns a wrapped callback -// The wrapper function should do some stuff, and return a -// presumably different callback function. -// This makes sure that own properties are retained, so that -// decorations and such are not lost along the way. -module.exports = wrappy -function wrappy (fn, cb) { - if (fn && cb) return wrappy(fn)(cb) +traverse.arrayKeywords = { + items: true, + allOf: true, + anyOf: true, + oneOf: true +}; - if (typeof fn !== 'function') - throw new TypeError('need wrapper function') +traverse.propsKeywords = { + definitions: true, + properties: true, + patternProperties: true, + dependencies: true +}; - Object.keys(fn).forEach(function (k) { - wrapper[k] = fn[k] - }) +traverse.skipKeywords = { + default: true, + enum: true, + const: true, + required: true, + maximum: true, + minimum: true, + exclusiveMaximum: true, + exclusiveMinimum: true, + multipleOf: true, + maxLength: true, + minLength: true, + pattern: true, + format: true, + maxItems: true, + minItems: true, + uniqueItems: true, + maxProperties: true, + minProperties: true +}; - return wrapper - function wrapper() { - var args = new Array(arguments.length) - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i] - } - var ret = fn.apply(this, args) - var cb = args[args.length-1] - if (typeof ret === 'function' && ret !== cb) { - Object.keys(cb).forEach(function (k) { - ret[k] = cb[k] - }) +function _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) { + if (schema && typeof schema == 'object' && !Array.isArray(schema)) { + pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex); + for (var key in schema) { + var sch = schema[key]; + if (Array.isArray(sch)) { + if (key in traverse.arrayKeywords) { + for (var i=0; i { +// check on default Array iterator +var Iterators = __webpack_require__(907); +var ITERATOR = __webpack_require__(621)('iterator'); +var ArrayProto = Array.prototype; -module.exports = eval("require")("encoding"); +module.exports = function (it) { + return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it); +}; /***/ }), +/* 994 */, +/* 995 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 9491: -/***/ ((module) => { +// Copyright 2016 Joyent, Inc. -"use strict"; -module.exports = require("assert"); +var x509 = __webpack_require__(323); -/***/ }), +module.exports = { + read: read, + verify: x509.verify, + sign: x509.sign, + write: write +}; -/***/ 6113: -/***/ ((module) => { +var assert = __webpack_require__(489); +var asn1 = __webpack_require__(325); +var Buffer = __webpack_require__(726).Buffer; +var algs = __webpack_require__(603); +var utils = __webpack_require__(270); +var Key = __webpack_require__(500); +var PrivateKey = __webpack_require__(502); +var pem = __webpack_require__(268); +var Identity = __webpack_require__(378); +var Signature = __webpack_require__(575); +var Certificate = __webpack_require__(202); + +function read(buf, options) { + if (typeof (buf) !== 'string') { + assert.buffer(buf, 'buf'); + buf = buf.toString('ascii'); + } -"use strict"; -module.exports = require("crypto"); + var lines = buf.trim().split(/[\r\n]+/g); -/***/ }), + var m; + var si = -1; + while (!m && si < lines.length) { + m = lines[++si].match(/*JSSTYLED*/ + /[-]+[ ]*BEGIN CERTIFICATE[ ]*[-]+/); + } + assert.ok(m, 'invalid PEM header'); -/***/ 2361: -/***/ ((module) => { + var m2; + var ei = lines.length; + while (!m2 && ei > 0) { + m2 = lines[--ei].match(/*JSSTYLED*/ + /[-]+[ ]*END CERTIFICATE[ ]*[-]+/); + } + assert.ok(m2, 'invalid PEM footer'); + + lines = lines.slice(si, ei + 1); + + var headers = {}; + while (true) { + lines = lines.slice(1); + m = lines[0].match(/*JSSTYLED*/ + /^([A-Za-z0-9-]+): (.+)$/); + if (!m) + break; + headers[m[1].toLowerCase()] = m[2]; + } + + /* Chop off the first and last lines */ + lines = lines.slice(0, -1).join(''); + buf = Buffer.from(lines, 'base64'); + + return (x509.read(buf, options)); +} + +function write(cert, options) { + var dbuf = x509.write(cert, options); + + var header = 'CERTIFICATE'; + var tmp = dbuf.toString('base64'); + var len = tmp.length + (tmp.length / 64) + + 18 + 16 + header.length*2 + 10; + var buf = Buffer.alloc(len); + var o = 0; + o += buf.write('-----BEGIN ' + header + '-----\n', o); + for (var i = 0; i < tmp.length; ) { + var limit = i + 64; + if (limit > tmp.length) + limit = tmp.length; + o += buf.write(tmp.slice(i, limit), o); + buf[o++] = 10; + i = limit; + } + o += buf.write('-----END ' + header + '-----\n', o); + + return (buf.slice(0, o)); +} -"use strict"; -module.exports = require("events"); /***/ }), +/* 996 */ +/***/ (function(__unusedmodule, exports, __webpack_require__) { -/***/ 7147: -/***/ ((module) => { +// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) +var $keys = __webpack_require__(206); +var hiddenKeys = __webpack_require__(5).concat('length', 'prototype'); + +exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { + return $keys(O, hiddenKeys); +}; -"use strict"; -module.exports = require("fs"); /***/ }), +/* 997 */, +/* 998 */ +/***/ (function(module, __unusedexports, __webpack_require__) { -/***/ 3685: -/***/ ((module) => { +// Copyright 2011 Mark Cavage All rights reserved. -"use strict"; -module.exports = require("http"); +var assert = __webpack_require__(357); +var Buffer = __webpack_require__(726).Buffer; +var ASN1 = __webpack_require__(362); +var errors = __webpack_require__(584); -/***/ }), -/***/ 5687: -/***/ ((module) => { +// --- Globals -"use strict"; -module.exports = require("https"); +var newInvalidAsn1Error = errors.newInvalidAsn1Error; -/***/ }), +var DEFAULT_OPTS = { + size: 1024, + growthFactor: 8 +}; -/***/ 1808: -/***/ ((module) => { -"use strict"; -module.exports = require("net"); +// --- Helpers -/***/ }), +function merge(from, to) { + assert.ok(from); + assert.equal(typeof (from), 'object'); + assert.ok(to); + assert.equal(typeof (to), 'object'); -/***/ 2037: -/***/ ((module) => { + var keys = Object.getOwnPropertyNames(from); + keys.forEach(function (key) { + if (to[key]) + return; -"use strict"; -module.exports = require("os"); + var value = Object.getOwnPropertyDescriptor(from, key); + Object.defineProperty(to, key, value); + }); -/***/ }), + return to; +} -/***/ 1017: -/***/ ((module) => { -"use strict"; -module.exports = require("path"); -/***/ }), +// --- API -/***/ 5477: -/***/ ((module) => { +function Writer(options) { + options = merge(DEFAULT_OPTS, options || {}); -"use strict"; -module.exports = require("punycode"); + this._buf = Buffer.alloc(options.size || 1024); + this._size = this._buf.length; + this._offset = 0; + this._options = options; -/***/ }), + // A list of offsets in the buffer where we need to insert + // sequence tag/len pairs. + this._seq = []; +} -/***/ 2781: -/***/ ((module) => { +Object.defineProperty(Writer.prototype, 'buffer', { + get: function () { + if (this._seq.length) + throw newInvalidAsn1Error(this._seq.length + ' unended sequence(s)'); -"use strict"; -module.exports = require("stream"); + return (this._buf.slice(0, this._offset)); + } +}); -/***/ }), +Writer.prototype.writeByte = function (b) { + if (typeof (b) !== 'number') + throw new TypeError('argument must be a Number'); -/***/ 4404: -/***/ ((module) => { + this._ensure(1); + this._buf[this._offset++] = b; +}; -"use strict"; -module.exports = require("tls"); -/***/ }), +Writer.prototype.writeInt = function (i, tag) { + if (typeof (i) !== 'number') + throw new TypeError('argument must be a Number'); + if (typeof (tag) !== 'number') + tag = ASN1.Integer; -/***/ 6224: -/***/ ((module) => { + var sz = 4; -"use strict"; -module.exports = require("tty"); + while ((((i & 0xff800000) === 0) || ((i & 0xff800000) === 0xff800000 >> 0)) && + (sz > 1)) { + sz--; + i <<= 8; + } -/***/ }), + if (sz > 4) + throw newInvalidAsn1Error('BER ints cannot be > 0xffffffff'); -/***/ 7310: -/***/ ((module) => { + this._ensure(2 + sz); + this._buf[this._offset++] = tag; + this._buf[this._offset++] = sz; -"use strict"; -module.exports = require("url"); + while (sz-- > 0) { + this._buf[this._offset++] = ((i & 0xff000000) >>> 24); + i <<= 8; + } -/***/ }), +}; -/***/ 3837: -/***/ ((module) => { -"use strict"; -module.exports = require("util"); +Writer.prototype.writeNull = function () { + this.writeByte(ASN1.Null); + this.writeByte(0x00); +}; -/***/ }), -/***/ 9796: -/***/ ((module) => { +Writer.prototype.writeEnumeration = function (i, tag) { + if (typeof (i) !== 'number') + throw new TypeError('argument must be a Number'); + if (typeof (tag) !== 'number') + tag = ASN1.Enumeration; -"use strict"; -module.exports = require("zlib"); + return this.writeInt(i, tag); +}; -/***/ }), -/***/ 1814: -/***/ ((module) => { +Writer.prototype.writeBoolean = function (b, tag) { + if (typeof (b) !== 'boolean') + throw new TypeError('argument must be a Boolean'); + if (typeof (tag) !== 'number') + tag = ASN1.Boolean; -function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } + this._ensure(3); + this._buf[this._offset++] = tag; + this._buf[this._offset++] = 0x01; + this._buf[this._offset++] = b ? 0xff : 0x00; +}; - return obj; -} -module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports; +Writer.prototype.writeString = function (s, tag) { + if (typeof (s) !== 'string') + throw new TypeError('argument must be a string (was: ' + typeof (s) + ')'); + if (typeof (tag) !== 'number') + tag = ASN1.OctetString; -/***/ }), + var len = Buffer.byteLength(s); + this.writeByte(tag); + this.writeLength(len); + if (len) { + this._ensure(len); + this._buf.write(s, this._offset); + this._offset += len; + } +}; -/***/ 3286: -/***/ ((module) => { -function _interopRequireDefault(obj) { - return obj && obj.__esModule ? obj : { - "default": obj - }; -} +Writer.prototype.writeBuffer = function (buf, tag) { + if (typeof (tag) !== 'number') + throw new TypeError('tag must be a number'); + if (!Buffer.isBuffer(buf)) + throw new TypeError('argument must be a buffer'); -module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports; + this.writeByte(tag); + this.writeLength(buf.length); + this._ensure(buf.length); + buf.copy(this._buf, this._offset, 0, buf.length); + this._offset += buf.length; +}; -/***/ }), -/***/ 3765: -/***/ ((module) => { +Writer.prototype.writeStringArray = function (strings) { + if ((!strings instanceof Array)) + throw new TypeError('argument must be an Array[String]'); -"use strict"; -module.exports = JSON.parse('{"application/1d-interleaved-parityfec":{"source":"iana"},"application/3gpdash-qoe-report+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/3gpp-ims+xml":{"source":"iana","compressible":true},"application/3gpphal+json":{"source":"iana","compressible":true},"application/3gpphalforms+json":{"source":"iana","compressible":true},"application/a2l":{"source":"iana"},"application/ace+cbor":{"source":"iana"},"application/activemessage":{"source":"iana"},"application/activity+json":{"source":"iana","compressible":true},"application/alto-costmap+json":{"source":"iana","compressible":true},"application/alto-costmapfilter+json":{"source":"iana","compressible":true},"application/alto-directory+json":{"source":"iana","compressible":true},"application/alto-endpointcost+json":{"source":"iana","compressible":true},"application/alto-endpointcostparams+json":{"source":"iana","compressible":true},"application/alto-endpointprop+json":{"source":"iana","compressible":true},"application/alto-endpointpropparams+json":{"source":"iana","compressible":true},"application/alto-error+json":{"source":"iana","compressible":true},"application/alto-networkmap+json":{"source":"iana","compressible":true},"application/alto-networkmapfilter+json":{"source":"iana","compressible":true},"application/alto-updatestreamcontrol+json":{"source":"iana","compressible":true},"application/alto-updatestreamparams+json":{"source":"iana","compressible":true},"application/aml":{"source":"iana"},"application/andrew-inset":{"source":"iana","extensions":["ez"]},"application/applefile":{"source":"iana"},"application/applixware":{"source":"apache","extensions":["aw"]},"application/at+jwt":{"source":"iana"},"application/atf":{"source":"iana"},"application/atfx":{"source":"iana"},"application/atom+xml":{"source":"iana","compressible":true,"extensions":["atom"]},"application/atomcat+xml":{"source":"iana","compressible":true,"extensions":["atomcat"]},"application/atomdeleted+xml":{"source":"iana","compressible":true,"extensions":["atomdeleted"]},"application/atomicmail":{"source":"iana"},"application/atomsvc+xml":{"source":"iana","compressible":true,"extensions":["atomsvc"]},"application/atsc-dwd+xml":{"source":"iana","compressible":true,"extensions":["dwd"]},"application/atsc-dynamic-event-message":{"source":"iana"},"application/atsc-held+xml":{"source":"iana","compressible":true,"extensions":["held"]},"application/atsc-rdt+json":{"source":"iana","compressible":true},"application/atsc-rsat+xml":{"source":"iana","compressible":true,"extensions":["rsat"]},"application/atxml":{"source":"iana"},"application/auth-policy+xml":{"source":"iana","compressible":true},"application/bacnet-xdd+zip":{"source":"iana","compressible":false},"application/batch-smtp":{"source":"iana"},"application/bdoc":{"compressible":false,"extensions":["bdoc"]},"application/beep+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/calendar+json":{"source":"iana","compressible":true},"application/calendar+xml":{"source":"iana","compressible":true,"extensions":["xcs"]},"application/call-completion":{"source":"iana"},"application/cals-1840":{"source":"iana"},"application/captive+json":{"source":"iana","compressible":true},"application/cbor":{"source":"iana"},"application/cbor-seq":{"source":"iana"},"application/cccex":{"source":"iana"},"application/ccmp+xml":{"source":"iana","compressible":true},"application/ccxml+xml":{"source":"iana","compressible":true,"extensions":["ccxml"]},"application/cdfx+xml":{"source":"iana","compressible":true,"extensions":["cdfx"]},"application/cdmi-capability":{"source":"iana","extensions":["cdmia"]},"application/cdmi-container":{"source":"iana","extensions":["cdmic"]},"application/cdmi-domain":{"source":"iana","extensions":["cdmid"]},"application/cdmi-object":{"source":"iana","extensions":["cdmio"]},"application/cdmi-queue":{"source":"iana","extensions":["cdmiq"]},"application/cdni":{"source":"iana"},"application/cea":{"source":"iana"},"application/cea-2018+xml":{"source":"iana","compressible":true},"application/cellml+xml":{"source":"iana","compressible":true},"application/cfw":{"source":"iana"},"application/city+json":{"source":"iana","compressible":true},"application/clr":{"source":"iana"},"application/clue+xml":{"source":"iana","compressible":true},"application/clue_info+xml":{"source":"iana","compressible":true},"application/cms":{"source":"iana"},"application/cnrp+xml":{"source":"iana","compressible":true},"application/coap-group+json":{"source":"iana","compressible":true},"application/coap-payload":{"source":"iana"},"application/commonground":{"source":"iana"},"application/conference-info+xml":{"source":"iana","compressible":true},"application/cose":{"source":"iana"},"application/cose-key":{"source":"iana"},"application/cose-key-set":{"source":"iana"},"application/cpl+xml":{"source":"iana","compressible":true,"extensions":["cpl"]},"application/csrattrs":{"source":"iana"},"application/csta+xml":{"source":"iana","compressible":true},"application/cstadata+xml":{"source":"iana","compressible":true},"application/csvm+json":{"source":"iana","compressible":true},"application/cu-seeme":{"source":"apache","extensions":["cu"]},"application/cwt":{"source":"iana"},"application/cybercash":{"source":"iana"},"application/dart":{"compressible":true},"application/dash+xml":{"source":"iana","compressible":true,"extensions":["mpd"]},"application/dash-patch+xml":{"source":"iana","compressible":true,"extensions":["mpp"]},"application/dashdelta":{"source":"iana"},"application/davmount+xml":{"source":"iana","compressible":true,"extensions":["davmount"]},"application/dca-rft":{"source":"iana"},"application/dcd":{"source":"iana"},"application/dec-dx":{"source":"iana"},"application/dialog-info+xml":{"source":"iana","compressible":true},"application/dicom":{"source":"iana"},"application/dicom+json":{"source":"iana","compressible":true},"application/dicom+xml":{"source":"iana","compressible":true},"application/dii":{"source":"iana"},"application/dit":{"source":"iana"},"application/dns":{"source":"iana"},"application/dns+json":{"source":"iana","compressible":true},"application/dns-message":{"source":"iana"},"application/docbook+xml":{"source":"apache","compressible":true,"extensions":["dbk"]},"application/dots+cbor":{"source":"iana"},"application/dskpp+xml":{"source":"iana","compressible":true},"application/dssc+der":{"source":"iana","extensions":["dssc"]},"application/dssc+xml":{"source":"iana","compressible":true,"extensions":["xdssc"]},"application/dvcs":{"source":"iana"},"application/ecmascript":{"source":"iana","compressible":true,"extensions":["es","ecma"]},"application/edi-consent":{"source":"iana"},"application/edi-x12":{"source":"iana","compressible":false},"application/edifact":{"source":"iana","compressible":false},"application/efi":{"source":"iana"},"application/elm+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/elm+xml":{"source":"iana","compressible":true},"application/emergencycalldata.cap+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/emergencycalldata.comment+xml":{"source":"iana","compressible":true},"application/emergencycalldata.control+xml":{"source":"iana","compressible":true},"application/emergencycalldata.deviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.ecall.msd":{"source":"iana"},"application/emergencycalldata.providerinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.serviceinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.subscriberinfo+xml":{"source":"iana","compressible":true},"application/emergencycalldata.veds+xml":{"source":"iana","compressible":true},"application/emma+xml":{"source":"iana","compressible":true,"extensions":["emma"]},"application/emotionml+xml":{"source":"iana","compressible":true,"extensions":["emotionml"]},"application/encaprtp":{"source":"iana"},"application/epp+xml":{"source":"iana","compressible":true},"application/epub+zip":{"source":"iana","compressible":false,"extensions":["epub"]},"application/eshop":{"source":"iana"},"application/exi":{"source":"iana","extensions":["exi"]},"application/expect-ct-report+json":{"source":"iana","compressible":true},"application/express":{"source":"iana","extensions":["exp"]},"application/fastinfoset":{"source":"iana"},"application/fastsoap":{"source":"iana"},"application/fdt+xml":{"source":"iana","compressible":true,"extensions":["fdt"]},"application/fhir+json":{"source":"iana","charset":"UTF-8","compressible":true},"application/fhir+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/fido.trusted-apps+json":{"compressible":true},"application/fits":{"source":"iana"},"application/flexfec":{"source":"iana"},"application/font-sfnt":{"source":"iana"},"application/font-tdpfr":{"source":"iana","extensions":["pfr"]},"application/font-woff":{"source":"iana","compressible":false},"application/framework-attributes+xml":{"source":"iana","compressible":true},"application/geo+json":{"source":"iana","compressible":true,"extensions":["geojson"]},"application/geo+json-seq":{"source":"iana"},"application/geopackage+sqlite3":{"source":"iana"},"application/geoxacml+xml":{"source":"iana","compressible":true},"application/gltf-buffer":{"source":"iana"},"application/gml+xml":{"source":"iana","compressible":true,"extensions":["gml"]},"application/gpx+xml":{"source":"apache","compressible":true,"extensions":["gpx"]},"application/gxf":{"source":"apache","extensions":["gxf"]},"application/gzip":{"source":"iana","compressible":false,"extensions":["gz"]},"application/h224":{"source":"iana"},"application/held+xml":{"source":"iana","compressible":true},"application/hjson":{"extensions":["hjson"]},"application/http":{"source":"iana"},"application/hyperstudio":{"source":"iana","extensions":["stk"]},"application/ibe-key-request+xml":{"source":"iana","compressible":true},"application/ibe-pkg-reply+xml":{"source":"iana","compressible":true},"application/ibe-pp-data":{"source":"iana"},"application/iges":{"source":"iana"},"application/im-iscomposing+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/index":{"source":"iana"},"application/index.cmd":{"source":"iana"},"application/index.obj":{"source":"iana"},"application/index.response":{"source":"iana"},"application/index.vnd":{"source":"iana"},"application/inkml+xml":{"source":"iana","compressible":true,"extensions":["ink","inkml"]},"application/iotp":{"source":"iana"},"application/ipfix":{"source":"iana","extensions":["ipfix"]},"application/ipp":{"source":"iana"},"application/isup":{"source":"iana"},"application/its+xml":{"source":"iana","compressible":true,"extensions":["its"]},"application/java-archive":{"source":"apache","compressible":false,"extensions":["jar","war","ear"]},"application/java-serialized-object":{"source":"apache","compressible":false,"extensions":["ser"]},"application/java-vm":{"source":"apache","compressible":false,"extensions":["class"]},"application/javascript":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["js","mjs"]},"application/jf2feed+json":{"source":"iana","compressible":true},"application/jose":{"source":"iana"},"application/jose+json":{"source":"iana","compressible":true},"application/jrd+json":{"source":"iana","compressible":true},"application/jscalendar+json":{"source":"iana","compressible":true},"application/json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["json","map"]},"application/json-patch+json":{"source":"iana","compressible":true},"application/json-seq":{"source":"iana"},"application/json5":{"extensions":["json5"]},"application/jsonml+json":{"source":"apache","compressible":true,"extensions":["jsonml"]},"application/jwk+json":{"source":"iana","compressible":true},"application/jwk-set+json":{"source":"iana","compressible":true},"application/jwt":{"source":"iana"},"application/kpml-request+xml":{"source":"iana","compressible":true},"application/kpml-response+xml":{"source":"iana","compressible":true},"application/ld+json":{"source":"iana","compressible":true,"extensions":["jsonld"]},"application/lgr+xml":{"source":"iana","compressible":true,"extensions":["lgr"]},"application/link-format":{"source":"iana"},"application/load-control+xml":{"source":"iana","compressible":true},"application/lost+xml":{"source":"iana","compressible":true,"extensions":["lostxml"]},"application/lostsync+xml":{"source":"iana","compressible":true},"application/lpf+zip":{"source":"iana","compressible":false},"application/lxf":{"source":"iana"},"application/mac-binhex40":{"source":"iana","extensions":["hqx"]},"application/mac-compactpro":{"source":"apache","extensions":["cpt"]},"application/macwriteii":{"source":"iana"},"application/mads+xml":{"source":"iana","compressible":true,"extensions":["mads"]},"application/manifest+json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["webmanifest"]},"application/marc":{"source":"iana","extensions":["mrc"]},"application/marcxml+xml":{"source":"iana","compressible":true,"extensions":["mrcx"]},"application/mathematica":{"source":"iana","extensions":["ma","nb","mb"]},"application/mathml+xml":{"source":"iana","compressible":true,"extensions":["mathml"]},"application/mathml-content+xml":{"source":"iana","compressible":true},"application/mathml-presentation+xml":{"source":"iana","compressible":true},"application/mbms-associated-procedure-description+xml":{"source":"iana","compressible":true},"application/mbms-deregister+xml":{"source":"iana","compressible":true},"application/mbms-envelope+xml":{"source":"iana","compressible":true},"application/mbms-msk+xml":{"source":"iana","compressible":true},"application/mbms-msk-response+xml":{"source":"iana","compressible":true},"application/mbms-protection-description+xml":{"source":"iana","compressible":true},"application/mbms-reception-report+xml":{"source":"iana","compressible":true},"application/mbms-register+xml":{"source":"iana","compressible":true},"application/mbms-register-response+xml":{"source":"iana","compressible":true},"application/mbms-schedule+xml":{"source":"iana","compressible":true},"application/mbms-user-service-description+xml":{"source":"iana","compressible":true},"application/mbox":{"source":"iana","extensions":["mbox"]},"application/media-policy-dataset+xml":{"source":"iana","compressible":true,"extensions":["mpf"]},"application/media_control+xml":{"source":"iana","compressible":true},"application/mediaservercontrol+xml":{"source":"iana","compressible":true,"extensions":["mscml"]},"application/merge-patch+json":{"source":"iana","compressible":true},"application/metalink+xml":{"source":"apache","compressible":true,"extensions":["metalink"]},"application/metalink4+xml":{"source":"iana","compressible":true,"extensions":["meta4"]},"application/mets+xml":{"source":"iana","compressible":true,"extensions":["mets"]},"application/mf4":{"source":"iana"},"application/mikey":{"source":"iana"},"application/mipc":{"source":"iana"},"application/missing-blocks+cbor-seq":{"source":"iana"},"application/mmt-aei+xml":{"source":"iana","compressible":true,"extensions":["maei"]},"application/mmt-usd+xml":{"source":"iana","compressible":true,"extensions":["musd"]},"application/mods+xml":{"source":"iana","compressible":true,"extensions":["mods"]},"application/moss-keys":{"source":"iana"},"application/moss-signature":{"source":"iana"},"application/mosskey-data":{"source":"iana"},"application/mosskey-request":{"source":"iana"},"application/mp21":{"source":"iana","extensions":["m21","mp21"]},"application/mp4":{"source":"iana","extensions":["mp4s","m4p"]},"application/mpeg4-generic":{"source":"iana"},"application/mpeg4-iod":{"source":"iana"},"application/mpeg4-iod-xmt":{"source":"iana"},"application/mrb-consumer+xml":{"source":"iana","compressible":true},"application/mrb-publish+xml":{"source":"iana","compressible":true},"application/msc-ivr+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msc-mixer+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/msword":{"source":"iana","compressible":false,"extensions":["doc","dot"]},"application/mud+json":{"source":"iana","compressible":true},"application/multipart-core":{"source":"iana"},"application/mxf":{"source":"iana","extensions":["mxf"]},"application/n-quads":{"source":"iana","extensions":["nq"]},"application/n-triples":{"source":"iana","extensions":["nt"]},"application/nasdata":{"source":"iana"},"application/news-checkgroups":{"source":"iana","charset":"US-ASCII"},"application/news-groupinfo":{"source":"iana","charset":"US-ASCII"},"application/news-transmission":{"source":"iana"},"application/nlsml+xml":{"source":"iana","compressible":true},"application/node":{"source":"iana","extensions":["cjs"]},"application/nss":{"source":"iana"},"application/oauth-authz-req+jwt":{"source":"iana"},"application/oblivious-dns-message":{"source":"iana"},"application/ocsp-request":{"source":"iana"},"application/ocsp-response":{"source":"iana"},"application/octet-stream":{"source":"iana","compressible":false,"extensions":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{"source":"iana","extensions":["oda"]},"application/odm+xml":{"source":"iana","compressible":true},"application/odx":{"source":"iana"},"application/oebps-package+xml":{"source":"iana","compressible":true,"extensions":["opf"]},"application/ogg":{"source":"iana","compressible":false,"extensions":["ogx"]},"application/omdoc+xml":{"source":"apache","compressible":true,"extensions":["omdoc"]},"application/onenote":{"source":"apache","extensions":["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{"source":"iana","compressible":true},"application/oscore":{"source":"iana"},"application/oxps":{"source":"iana","extensions":["oxps"]},"application/p21":{"source":"iana"},"application/p21+zip":{"source":"iana","compressible":false},"application/p2p-overlay+xml":{"source":"iana","compressible":true,"extensions":["relo"]},"application/parityfec":{"source":"iana"},"application/passport":{"source":"iana"},"application/patch-ops-error+xml":{"source":"iana","compressible":true,"extensions":["xer"]},"application/pdf":{"source":"iana","compressible":false,"extensions":["pdf"]},"application/pdx":{"source":"iana"},"application/pem-certificate-chain":{"source":"iana"},"application/pgp-encrypted":{"source":"iana","compressible":false,"extensions":["pgp"]},"application/pgp-keys":{"source":"iana","extensions":["asc"]},"application/pgp-signature":{"source":"iana","extensions":["asc","sig"]},"application/pics-rules":{"source":"apache","extensions":["prf"]},"application/pidf+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pidf-diff+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/pkcs10":{"source":"iana","extensions":["p10"]},"application/pkcs12":{"source":"iana"},"application/pkcs7-mime":{"source":"iana","extensions":["p7m","p7c"]},"application/pkcs7-signature":{"source":"iana","extensions":["p7s"]},"application/pkcs8":{"source":"iana","extensions":["p8"]},"application/pkcs8-encrypted":{"source":"iana"},"application/pkix-attr-cert":{"source":"iana","extensions":["ac"]},"application/pkix-cert":{"source":"iana","extensions":["cer"]},"application/pkix-crl":{"source":"iana","extensions":["crl"]},"application/pkix-pkipath":{"source":"iana","extensions":["pkipath"]},"application/pkixcmp":{"source":"iana","extensions":["pki"]},"application/pls+xml":{"source":"iana","compressible":true,"extensions":["pls"]},"application/poc-settings+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/postscript":{"source":"iana","compressible":true,"extensions":["ai","eps","ps"]},"application/ppsp-tracker+json":{"source":"iana","compressible":true},"application/problem+json":{"source":"iana","compressible":true},"application/problem+xml":{"source":"iana","compressible":true},"application/provenance+xml":{"source":"iana","compressible":true,"extensions":["provx"]},"application/prs.alvestrand.titrax-sheet":{"source":"iana"},"application/prs.cww":{"source":"iana","extensions":["cww"]},"application/prs.cyn":{"source":"iana","charset":"7-BIT"},"application/prs.hpub+zip":{"source":"iana","compressible":false},"application/prs.nprend":{"source":"iana"},"application/prs.plucker":{"source":"iana"},"application/prs.rdf-xml-crypt":{"source":"iana"},"application/prs.xsf+xml":{"source":"iana","compressible":true},"application/pskc+xml":{"source":"iana","compressible":true,"extensions":["pskcxml"]},"application/pvd+json":{"source":"iana","compressible":true},"application/qsig":{"source":"iana"},"application/raml+yaml":{"compressible":true,"extensions":["raml"]},"application/raptorfec":{"source":"iana"},"application/rdap+json":{"source":"iana","compressible":true},"application/rdf+xml":{"source":"iana","compressible":true,"extensions":["rdf","owl"]},"application/reginfo+xml":{"source":"iana","compressible":true,"extensions":["rif"]},"application/relax-ng-compact-syntax":{"source":"iana","extensions":["rnc"]},"application/remote-printing":{"source":"iana"},"application/reputon+json":{"source":"iana","compressible":true},"application/resource-lists+xml":{"source":"iana","compressible":true,"extensions":["rl"]},"application/resource-lists-diff+xml":{"source":"iana","compressible":true,"extensions":["rld"]},"application/rfc+xml":{"source":"iana","compressible":true},"application/riscos":{"source":"iana"},"application/rlmi+xml":{"source":"iana","compressible":true},"application/rls-services+xml":{"source":"iana","compressible":true,"extensions":["rs"]},"application/route-apd+xml":{"source":"iana","compressible":true,"extensions":["rapd"]},"application/route-s-tsid+xml":{"source":"iana","compressible":true,"extensions":["sls"]},"application/route-usd+xml":{"source":"iana","compressible":true,"extensions":["rusd"]},"application/rpki-ghostbusters":{"source":"iana","extensions":["gbr"]},"application/rpki-manifest":{"source":"iana","extensions":["mft"]},"application/rpki-publication":{"source":"iana"},"application/rpki-roa":{"source":"iana","extensions":["roa"]},"application/rpki-updown":{"source":"iana"},"application/rsd+xml":{"source":"apache","compressible":true,"extensions":["rsd"]},"application/rss+xml":{"source":"apache","compressible":true,"extensions":["rss"]},"application/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"application/rtploopback":{"source":"iana"},"application/rtx":{"source":"iana"},"application/samlassertion+xml":{"source":"iana","compressible":true},"application/samlmetadata+xml":{"source":"iana","compressible":true},"application/sarif+json":{"source":"iana","compressible":true},"application/sarif-external-properties+json":{"source":"iana","compressible":true},"application/sbe":{"source":"iana"},"application/sbml+xml":{"source":"iana","compressible":true,"extensions":["sbml"]},"application/scaip+xml":{"source":"iana","compressible":true},"application/scim+json":{"source":"iana","compressible":true},"application/scvp-cv-request":{"source":"iana","extensions":["scq"]},"application/scvp-cv-response":{"source":"iana","extensions":["scs"]},"application/scvp-vp-request":{"source":"iana","extensions":["spq"]},"application/scvp-vp-response":{"source":"iana","extensions":["spp"]},"application/sdp":{"source":"iana","extensions":["sdp"]},"application/secevent+jwt":{"source":"iana"},"application/senml+cbor":{"source":"iana"},"application/senml+json":{"source":"iana","compressible":true},"application/senml+xml":{"source":"iana","compressible":true,"extensions":["senmlx"]},"application/senml-etch+cbor":{"source":"iana"},"application/senml-etch+json":{"source":"iana","compressible":true},"application/senml-exi":{"source":"iana"},"application/sensml+cbor":{"source":"iana"},"application/sensml+json":{"source":"iana","compressible":true},"application/sensml+xml":{"source":"iana","compressible":true,"extensions":["sensmlx"]},"application/sensml-exi":{"source":"iana"},"application/sep+xml":{"source":"iana","compressible":true},"application/sep-exi":{"source":"iana"},"application/session-info":{"source":"iana"},"application/set-payment":{"source":"iana"},"application/set-payment-initiation":{"source":"iana","extensions":["setpay"]},"application/set-registration":{"source":"iana"},"application/set-registration-initiation":{"source":"iana","extensions":["setreg"]},"application/sgml":{"source":"iana"},"application/sgml-open-catalog":{"source":"iana"},"application/shf+xml":{"source":"iana","compressible":true,"extensions":["shf"]},"application/sieve":{"source":"iana","extensions":["siv","sieve"]},"application/simple-filter+xml":{"source":"iana","compressible":true},"application/simple-message-summary":{"source":"iana"},"application/simplesymbolcontainer":{"source":"iana"},"application/sipc":{"source":"iana"},"application/slate":{"source":"iana"},"application/smil":{"source":"iana"},"application/smil+xml":{"source":"iana","compressible":true,"extensions":["smi","smil"]},"application/smpte336m":{"source":"iana"},"application/soap+fastinfoset":{"source":"iana"},"application/soap+xml":{"source":"iana","compressible":true},"application/sparql-query":{"source":"iana","extensions":["rq"]},"application/sparql-results+xml":{"source":"iana","compressible":true,"extensions":["srx"]},"application/spdx+json":{"source":"iana","compressible":true},"application/spirits-event+xml":{"source":"iana","compressible":true},"application/sql":{"source":"iana"},"application/srgs":{"source":"iana","extensions":["gram"]},"application/srgs+xml":{"source":"iana","compressible":true,"extensions":["grxml"]},"application/sru+xml":{"source":"iana","compressible":true,"extensions":["sru"]},"application/ssdl+xml":{"source":"apache","compressible":true,"extensions":["ssdl"]},"application/ssml+xml":{"source":"iana","compressible":true,"extensions":["ssml"]},"application/stix+json":{"source":"iana","compressible":true},"application/swid+xml":{"source":"iana","compressible":true,"extensions":["swidtag"]},"application/tamp-apex-update":{"source":"iana"},"application/tamp-apex-update-confirm":{"source":"iana"},"application/tamp-community-update":{"source":"iana"},"application/tamp-community-update-confirm":{"source":"iana"},"application/tamp-error":{"source":"iana"},"application/tamp-sequence-adjust":{"source":"iana"},"application/tamp-sequence-adjust-confirm":{"source":"iana"},"application/tamp-status-query":{"source":"iana"},"application/tamp-status-response":{"source":"iana"},"application/tamp-update":{"source":"iana"},"application/tamp-update-confirm":{"source":"iana"},"application/tar":{"compressible":true},"application/taxii+json":{"source":"iana","compressible":true},"application/td+json":{"source":"iana","compressible":true},"application/tei+xml":{"source":"iana","compressible":true,"extensions":["tei","teicorpus"]},"application/tetra_isi":{"source":"iana"},"application/thraud+xml":{"source":"iana","compressible":true,"extensions":["tfi"]},"application/timestamp-query":{"source":"iana"},"application/timestamp-reply":{"source":"iana"},"application/timestamped-data":{"source":"iana","extensions":["tsd"]},"application/tlsrpt+gzip":{"source":"iana"},"application/tlsrpt+json":{"source":"iana","compressible":true},"application/tnauthlist":{"source":"iana"},"application/token-introspection+jwt":{"source":"iana"},"application/toml":{"compressible":true,"extensions":["toml"]},"application/trickle-ice-sdpfrag":{"source":"iana"},"application/trig":{"source":"iana","extensions":["trig"]},"application/ttml+xml":{"source":"iana","compressible":true,"extensions":["ttml"]},"application/tve-trigger":{"source":"iana"},"application/tzif":{"source":"iana"},"application/tzif-leap":{"source":"iana"},"application/ubjson":{"compressible":false,"extensions":["ubj"]},"application/ulpfec":{"source":"iana"},"application/urc-grpsheet+xml":{"source":"iana","compressible":true},"application/urc-ressheet+xml":{"source":"iana","compressible":true,"extensions":["rsheet"]},"application/urc-targetdesc+xml":{"source":"iana","compressible":true,"extensions":["td"]},"application/urc-uisocketdesc+xml":{"source":"iana","compressible":true},"application/vcard+json":{"source":"iana","compressible":true},"application/vcard+xml":{"source":"iana","compressible":true},"application/vemmi":{"source":"iana"},"application/vividence.scriptfile":{"source":"apache"},"application/vnd.1000minds.decision-model+xml":{"source":"iana","compressible":true,"extensions":["1km"]},"application/vnd.3gpp-prose+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-prose-pc3ch+xml":{"source":"iana","compressible":true},"application/vnd.3gpp-v2x-local-service-information":{"source":"iana"},"application/vnd.3gpp.5gnas":{"source":"iana"},"application/vnd.3gpp.access-transfer-events+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.bsf+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gmop+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.gtpc":{"source":"iana"},"application/vnd.3gpp.interworking-data":{"source":"iana"},"application/vnd.3gpp.lpp":{"source":"iana"},"application/vnd.3gpp.mc-signalling-ear":{"source":"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-payload":{"source":"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-signalling":{"source":"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcdata-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-floor-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-signed+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-ue-init-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcptt-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-location-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-service-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-transmission-request+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-ue-config+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mcvideo-user-profile+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.mid-call+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ngap":{"source":"iana"},"application/vnd.3gpp.pfcp":{"source":"iana"},"application/vnd.3gpp.pic-bw-large":{"source":"iana","extensions":["plb"]},"application/vnd.3gpp.pic-bw-small":{"source":"iana","extensions":["psb"]},"application/vnd.3gpp.pic-bw-var":{"source":"iana","extensions":["pvb"]},"application/vnd.3gpp.s1ap":{"source":"iana"},"application/vnd.3gpp.sms":{"source":"iana"},"application/vnd.3gpp.sms+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-ext+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.srvcc-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.state-and-event-info+xml":{"source":"iana","compressible":true},"application/vnd.3gpp.ussd+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.bcmcsinfo+xml":{"source":"iana","compressible":true},"application/vnd.3gpp2.sms":{"source":"iana"},"application/vnd.3gpp2.tcap":{"source":"iana","extensions":["tcap"]},"application/vnd.3lightssoftware.imagescal":{"source":"iana"},"application/vnd.3m.post-it-notes":{"source":"iana","extensions":["pwn"]},"application/vnd.accpac.simply.aso":{"source":"iana","extensions":["aso"]},"application/vnd.accpac.simply.imp":{"source":"iana","extensions":["imp"]},"application/vnd.acucobol":{"source":"iana","extensions":["acu"]},"application/vnd.acucorp":{"source":"iana","extensions":["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{"source":"apache","compressible":false,"extensions":["air"]},"application/vnd.adobe.flash.movie":{"source":"iana"},"application/vnd.adobe.formscentral.fcdt":{"source":"iana","extensions":["fcdt"]},"application/vnd.adobe.fxp":{"source":"iana","extensions":["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{"source":"iana"},"application/vnd.adobe.xdp+xml":{"source":"iana","compressible":true,"extensions":["xdp"]},"application/vnd.adobe.xfdf":{"source":"iana","extensions":["xfdf"]},"application/vnd.aether.imp":{"source":"iana"},"application/vnd.afpc.afplinedata":{"source":"iana"},"application/vnd.afpc.afplinedata-pagedef":{"source":"iana"},"application/vnd.afpc.cmoca-cmresource":{"source":"iana"},"application/vnd.afpc.foca-charset":{"source":"iana"},"application/vnd.afpc.foca-codedfont":{"source":"iana"},"application/vnd.afpc.foca-codepage":{"source":"iana"},"application/vnd.afpc.modca":{"source":"iana"},"application/vnd.afpc.modca-cmtable":{"source":"iana"},"application/vnd.afpc.modca-formdef":{"source":"iana"},"application/vnd.afpc.modca-mediummap":{"source":"iana"},"application/vnd.afpc.modca-objectcontainer":{"source":"iana"},"application/vnd.afpc.modca-overlay":{"source":"iana"},"application/vnd.afpc.modca-pagesegment":{"source":"iana"},"application/vnd.age":{"source":"iana","extensions":["age"]},"application/vnd.ah-barcode":{"source":"iana"},"application/vnd.ahead.space":{"source":"iana","extensions":["ahead"]},"application/vnd.airzip.filesecure.azf":{"source":"iana","extensions":["azf"]},"application/vnd.airzip.filesecure.azs":{"source":"iana","extensions":["azs"]},"application/vnd.amadeus+json":{"source":"iana","compressible":true},"application/vnd.amazon.ebook":{"source":"apache","extensions":["azw"]},"application/vnd.amazon.mobi8-ebook":{"source":"iana"},"application/vnd.americandynamics.acc":{"source":"iana","extensions":["acc"]},"application/vnd.amiga.ami":{"source":"iana","extensions":["ami"]},"application/vnd.amundsen.maze+xml":{"source":"iana","compressible":true},"application/vnd.android.ota":{"source":"iana"},"application/vnd.android.package-archive":{"source":"apache","compressible":false,"extensions":["apk"]},"application/vnd.anki":{"source":"iana"},"application/vnd.anser-web-certificate-issue-initiation":{"source":"iana","extensions":["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{"source":"apache","extensions":["fti"]},"application/vnd.antix.game-component":{"source":"iana","extensions":["atx"]},"application/vnd.apache.arrow.file":{"source":"iana"},"application/vnd.apache.arrow.stream":{"source":"iana"},"application/vnd.apache.thrift.binary":{"source":"iana"},"application/vnd.apache.thrift.compact":{"source":"iana"},"application/vnd.apache.thrift.json":{"source":"iana"},"application/vnd.api+json":{"source":"iana","compressible":true},"application/vnd.aplextor.warrp+json":{"source":"iana","compressible":true},"application/vnd.apothekende.reservation+json":{"source":"iana","compressible":true},"application/vnd.apple.installer+xml":{"source":"iana","compressible":true,"extensions":["mpkg"]},"application/vnd.apple.keynote":{"source":"iana","extensions":["key"]},"application/vnd.apple.mpegurl":{"source":"iana","extensions":["m3u8"]},"application/vnd.apple.numbers":{"source":"iana","extensions":["numbers"]},"application/vnd.apple.pages":{"source":"iana","extensions":["pages"]},"application/vnd.apple.pkpass":{"compressible":false,"extensions":["pkpass"]},"application/vnd.arastra.swi":{"source":"iana"},"application/vnd.aristanetworks.swi":{"source":"iana","extensions":["swi"]},"application/vnd.artisan+json":{"source":"iana","compressible":true},"application/vnd.artsquare":{"source":"iana"},"application/vnd.astraea-software.iota":{"source":"iana","extensions":["iota"]},"application/vnd.audiograph":{"source":"iana","extensions":["aep"]},"application/vnd.autopackage":{"source":"iana"},"application/vnd.avalon+json":{"source":"iana","compressible":true},"application/vnd.avistar+xml":{"source":"iana","compressible":true},"application/vnd.balsamiq.bmml+xml":{"source":"iana","compressible":true,"extensions":["bmml"]},"application/vnd.balsamiq.bmpr":{"source":"iana"},"application/vnd.banana-accounting":{"source":"iana"},"application/vnd.bbf.usp.error":{"source":"iana"},"application/vnd.bbf.usp.msg":{"source":"iana"},"application/vnd.bbf.usp.msg+json":{"source":"iana","compressible":true},"application/vnd.bekitzur-stech+json":{"source":"iana","compressible":true},"application/vnd.bint.med-content":{"source":"iana"},"application/vnd.biopax.rdf+xml":{"source":"iana","compressible":true},"application/vnd.blink-idb-value-wrapper":{"source":"iana"},"application/vnd.blueice.multipass":{"source":"iana","extensions":["mpm"]},"application/vnd.bluetooth.ep.oob":{"source":"iana"},"application/vnd.bluetooth.le.oob":{"source":"iana"},"application/vnd.bmi":{"source":"iana","extensions":["bmi"]},"application/vnd.bpf":{"source":"iana"},"application/vnd.bpf3":{"source":"iana"},"application/vnd.businessobjects":{"source":"iana","extensions":["rep"]},"application/vnd.byu.uapi+json":{"source":"iana","compressible":true},"application/vnd.cab-jscript":{"source":"iana"},"application/vnd.canon-cpdl":{"source":"iana"},"application/vnd.canon-lips":{"source":"iana"},"application/vnd.capasystems-pg+json":{"source":"iana","compressible":true},"application/vnd.cendio.thinlinc.clientconf":{"source":"iana"},"application/vnd.century-systems.tcp_stream":{"source":"iana"},"application/vnd.chemdraw+xml":{"source":"iana","compressible":true,"extensions":["cdxml"]},"application/vnd.chess-pgn":{"source":"iana"},"application/vnd.chipnuts.karaoke-mmd":{"source":"iana","extensions":["mmd"]},"application/vnd.ciedi":{"source":"iana"},"application/vnd.cinderella":{"source":"iana","extensions":["cdy"]},"application/vnd.cirpack.isdn-ext":{"source":"iana"},"application/vnd.citationstyles.style+xml":{"source":"iana","compressible":true,"extensions":["csl"]},"application/vnd.claymore":{"source":"iana","extensions":["cla"]},"application/vnd.cloanto.rp9":{"source":"iana","extensions":["rp9"]},"application/vnd.clonk.c4group":{"source":"iana","extensions":["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{"source":"iana","extensions":["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{"source":"iana","extensions":["c11amz"]},"application/vnd.coffeescript":{"source":"iana"},"application/vnd.collabio.xodocuments.document":{"source":"iana"},"application/vnd.collabio.xodocuments.document-template":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation-template":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{"source":"iana"},"application/vnd.collection+json":{"source":"iana","compressible":true},"application/vnd.collection.doc+json":{"source":"iana","compressible":true},"application/vnd.collection.next+json":{"source":"iana","compressible":true},"application/vnd.comicbook+zip":{"source":"iana","compressible":false},"application/vnd.comicbook-rar":{"source":"iana"},"application/vnd.commerce-battelle":{"source":"iana"},"application/vnd.commonspace":{"source":"iana","extensions":["csp"]},"application/vnd.contact.cmsg":{"source":"iana","extensions":["cdbcmsg"]},"application/vnd.coreos.ignition+json":{"source":"iana","compressible":true},"application/vnd.cosmocaller":{"source":"iana","extensions":["cmc"]},"application/vnd.crick.clicker":{"source":"iana","extensions":["clkx"]},"application/vnd.crick.clicker.keyboard":{"source":"iana","extensions":["clkk"]},"application/vnd.crick.clicker.palette":{"source":"iana","extensions":["clkp"]},"application/vnd.crick.clicker.template":{"source":"iana","extensions":["clkt"]},"application/vnd.crick.clicker.wordbank":{"source":"iana","extensions":["clkw"]},"application/vnd.criticaltools.wbs+xml":{"source":"iana","compressible":true,"extensions":["wbs"]},"application/vnd.cryptii.pipe+json":{"source":"iana","compressible":true},"application/vnd.crypto-shade-file":{"source":"iana"},"application/vnd.cryptomator.encrypted":{"source":"iana"},"application/vnd.cryptomator.vault":{"source":"iana"},"application/vnd.ctc-posml":{"source":"iana","extensions":["pml"]},"application/vnd.ctct.ws+xml":{"source":"iana","compressible":true},"application/vnd.cups-pdf":{"source":"iana"},"application/vnd.cups-postscript":{"source":"iana"},"application/vnd.cups-ppd":{"source":"iana","extensions":["ppd"]},"application/vnd.cups-raster":{"source":"iana"},"application/vnd.cups-raw":{"source":"iana"},"application/vnd.curl":{"source":"iana"},"application/vnd.curl.car":{"source":"apache","extensions":["car"]},"application/vnd.curl.pcurl":{"source":"apache","extensions":["pcurl"]},"application/vnd.cyan.dean.root+xml":{"source":"iana","compressible":true},"application/vnd.cybank":{"source":"iana"},"application/vnd.cyclonedx+json":{"source":"iana","compressible":true},"application/vnd.cyclonedx+xml":{"source":"iana","compressible":true},"application/vnd.d2l.coursepackage1p0+zip":{"source":"iana","compressible":false},"application/vnd.d3m-dataset":{"source":"iana"},"application/vnd.d3m-problem":{"source":"iana"},"application/vnd.dart":{"source":"iana","compressible":true,"extensions":["dart"]},"application/vnd.data-vision.rdz":{"source":"iana","extensions":["rdz"]},"application/vnd.datapackage+json":{"source":"iana","compressible":true},"application/vnd.dataresource+json":{"source":"iana","compressible":true},"application/vnd.dbf":{"source":"iana","extensions":["dbf"]},"application/vnd.debian.binary-package":{"source":"iana"},"application/vnd.dece.data":{"source":"iana","extensions":["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{"source":"iana","compressible":true,"extensions":["uvt","uvvt"]},"application/vnd.dece.unspecified":{"source":"iana","extensions":["uvx","uvvx"]},"application/vnd.dece.zip":{"source":"iana","extensions":["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{"source":"iana","extensions":["fe_launch"]},"application/vnd.desmume.movie":{"source":"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{"source":"iana"},"application/vnd.dm.delegation+xml":{"source":"iana","compressible":true},"application/vnd.dna":{"source":"iana","extensions":["dna"]},"application/vnd.document+json":{"source":"iana","compressible":true},"application/vnd.dolby.mlp":{"source":"apache","extensions":["mlp"]},"application/vnd.dolby.mobile.1":{"source":"iana"},"application/vnd.dolby.mobile.2":{"source":"iana"},"application/vnd.doremir.scorecloud-binary-document":{"source":"iana"},"application/vnd.dpgraph":{"source":"iana","extensions":["dpg"]},"application/vnd.dreamfactory":{"source":"iana","extensions":["dfac"]},"application/vnd.drive+json":{"source":"iana","compressible":true},"application/vnd.ds-keypoint":{"source":"apache","extensions":["kpxx"]},"application/vnd.dtg.local":{"source":"iana"},"application/vnd.dtg.local.flash":{"source":"iana"},"application/vnd.dtg.local.html":{"source":"iana"},"application/vnd.dvb.ait":{"source":"iana","extensions":["ait"]},"application/vnd.dvb.dvbisl+xml":{"source":"iana","compressible":true},"application/vnd.dvb.dvbj":{"source":"iana"},"application/vnd.dvb.esgcontainer":{"source":"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess2":{"source":"iana"},"application/vnd.dvb.ipdcesgpdd":{"source":"iana"},"application/vnd.dvb.ipdcroaming":{"source":"iana"},"application/vnd.dvb.iptv.alfec-base":{"source":"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{"source":"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-container+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-generic+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-msglist+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-request+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-ia-registration-response+xml":{"source":"iana","compressible":true},"application/vnd.dvb.notif-init+xml":{"source":"iana","compressible":true},"application/vnd.dvb.pfr":{"source":"iana"},"application/vnd.dvb.service":{"source":"iana","extensions":["svc"]},"application/vnd.dxr":{"source":"iana"},"application/vnd.dynageo":{"source":"iana","extensions":["geo"]},"application/vnd.dzr":{"source":"iana"},"application/vnd.easykaraoke.cdgdownload":{"source":"iana"},"application/vnd.ecdis-update":{"source":"iana"},"application/vnd.ecip.rlp":{"source":"iana"},"application/vnd.eclipse.ditto+json":{"source":"iana","compressible":true},"application/vnd.ecowin.chart":{"source":"iana","extensions":["mag"]},"application/vnd.ecowin.filerequest":{"source":"iana"},"application/vnd.ecowin.fileupdate":{"source":"iana"},"application/vnd.ecowin.series":{"source":"iana"},"application/vnd.ecowin.seriesrequest":{"source":"iana"},"application/vnd.ecowin.seriesupdate":{"source":"iana"},"application/vnd.efi.img":{"source":"iana"},"application/vnd.efi.iso":{"source":"iana"},"application/vnd.emclient.accessrequest+xml":{"source":"iana","compressible":true},"application/vnd.enliven":{"source":"iana","extensions":["nml"]},"application/vnd.enphase.envoy":{"source":"iana"},"application/vnd.eprints.data+xml":{"source":"iana","compressible":true},"application/vnd.epson.esf":{"source":"iana","extensions":["esf"]},"application/vnd.epson.msf":{"source":"iana","extensions":["msf"]},"application/vnd.epson.quickanime":{"source":"iana","extensions":["qam"]},"application/vnd.epson.salt":{"source":"iana","extensions":["slt"]},"application/vnd.epson.ssf":{"source":"iana","extensions":["ssf"]},"application/vnd.ericsson.quickcall":{"source":"iana"},"application/vnd.espass-espass+zip":{"source":"iana","compressible":false},"application/vnd.eszigno3+xml":{"source":"iana","compressible":true,"extensions":["es3","et3"]},"application/vnd.etsi.aoc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.asic-e+zip":{"source":"iana","compressible":false},"application/vnd.etsi.asic-s+zip":{"source":"iana","compressible":false},"application/vnd.etsi.cug+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvcommand+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-bc+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-cod+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsad-npvr+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvservice+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvsync+xml":{"source":"iana","compressible":true},"application/vnd.etsi.iptvueprofile+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mcid+xml":{"source":"iana","compressible":true},"application/vnd.etsi.mheg5":{"source":"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{"source":"iana","compressible":true},"application/vnd.etsi.pstn+xml":{"source":"iana","compressible":true},"application/vnd.etsi.sci+xml":{"source":"iana","compressible":true},"application/vnd.etsi.simservs+xml":{"source":"iana","compressible":true},"application/vnd.etsi.timestamp-token":{"source":"iana"},"application/vnd.etsi.tsl+xml":{"source":"iana","compressible":true},"application/vnd.etsi.tsl.der":{"source":"iana"},"application/vnd.eu.kasparian.car+json":{"source":"iana","compressible":true},"application/vnd.eudora.data":{"source":"iana"},"application/vnd.evolv.ecig.profile":{"source":"iana"},"application/vnd.evolv.ecig.settings":{"source":"iana"},"application/vnd.evolv.ecig.theme":{"source":"iana"},"application/vnd.exstream-empower+zip":{"source":"iana","compressible":false},"application/vnd.exstream-package":{"source":"iana"},"application/vnd.ezpix-album":{"source":"iana","extensions":["ez2"]},"application/vnd.ezpix-package":{"source":"iana","extensions":["ez3"]},"application/vnd.f-secure.mobile":{"source":"iana"},"application/vnd.familysearch.gedcom+zip":{"source":"iana","compressible":false},"application/vnd.fastcopy-disk-image":{"source":"iana"},"application/vnd.fdf":{"source":"iana","extensions":["fdf"]},"application/vnd.fdsn.mseed":{"source":"iana","extensions":["mseed"]},"application/vnd.fdsn.seed":{"source":"iana","extensions":["seed","dataless"]},"application/vnd.ffsns":{"source":"iana"},"application/vnd.ficlab.flb+zip":{"source":"iana","compressible":false},"application/vnd.filmit.zfc":{"source":"iana"},"application/vnd.fints":{"source":"iana"},"application/vnd.firemonkeys.cloudcell":{"source":"iana"},"application/vnd.flographit":{"source":"iana","extensions":["gph"]},"application/vnd.fluxtime.clip":{"source":"iana","extensions":["ftc"]},"application/vnd.font-fontforge-sfd":{"source":"iana"},"application/vnd.framemaker":{"source":"iana","extensions":["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{"source":"iana","extensions":["fnc"]},"application/vnd.frogans.ltf":{"source":"iana","extensions":["ltf"]},"application/vnd.fsc.weblaunch":{"source":"iana","extensions":["fsc"]},"application/vnd.fujifilm.fb.docuworks":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{"source":"iana"},"application/vnd.fujifilm.fb.docuworks.container":{"source":"iana"},"application/vnd.fujifilm.fb.jfi+xml":{"source":"iana","compressible":true},"application/vnd.fujitsu.oasys":{"source":"iana","extensions":["oas"]},"application/vnd.fujitsu.oasys2":{"source":"iana","extensions":["oa2"]},"application/vnd.fujitsu.oasys3":{"source":"iana","extensions":["oa3"]},"application/vnd.fujitsu.oasysgp":{"source":"iana","extensions":["fg5"]},"application/vnd.fujitsu.oasysprs":{"source":"iana","extensions":["bh2"]},"application/vnd.fujixerox.art-ex":{"source":"iana"},"application/vnd.fujixerox.art4":{"source":"iana"},"application/vnd.fujixerox.ddd":{"source":"iana","extensions":["ddd"]},"application/vnd.fujixerox.docuworks":{"source":"iana","extensions":["xdw"]},"application/vnd.fujixerox.docuworks.binder":{"source":"iana","extensions":["xbd"]},"application/vnd.fujixerox.docuworks.container":{"source":"iana"},"application/vnd.fujixerox.hbpl":{"source":"iana"},"application/vnd.fut-misnet":{"source":"iana"},"application/vnd.futoin+cbor":{"source":"iana"},"application/vnd.futoin+json":{"source":"iana","compressible":true},"application/vnd.fuzzysheet":{"source":"iana","extensions":["fzs"]},"application/vnd.genomatix.tuxedo":{"source":"iana","extensions":["txd"]},"application/vnd.gentics.grd+json":{"source":"iana","compressible":true},"application/vnd.geo+json":{"source":"iana","compressible":true},"application/vnd.geocube+xml":{"source":"iana","compressible":true},"application/vnd.geogebra.file":{"source":"iana","extensions":["ggb"]},"application/vnd.geogebra.slides":{"source":"iana"},"application/vnd.geogebra.tool":{"source":"iana","extensions":["ggt"]},"application/vnd.geometry-explorer":{"source":"iana","extensions":["gex","gre"]},"application/vnd.geonext":{"source":"iana","extensions":["gxt"]},"application/vnd.geoplan":{"source":"iana","extensions":["g2w"]},"application/vnd.geospace":{"source":"iana","extensions":["g3w"]},"application/vnd.gerber":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt-response":{"source":"iana"},"application/vnd.gmx":{"source":"iana","extensions":["gmx"]},"application/vnd.google-apps.document":{"compressible":false,"extensions":["gdoc"]},"application/vnd.google-apps.presentation":{"compressible":false,"extensions":["gslides"]},"application/vnd.google-apps.spreadsheet":{"compressible":false,"extensions":["gsheet"]},"application/vnd.google-earth.kml+xml":{"source":"iana","compressible":true,"extensions":["kml"]},"application/vnd.google-earth.kmz":{"source":"iana","compressible":false,"extensions":["kmz"]},"application/vnd.gov.sk.e-form+xml":{"source":"iana","compressible":true},"application/vnd.gov.sk.e-form+zip":{"source":"iana","compressible":false},"application/vnd.gov.sk.xmldatacontainer+xml":{"source":"iana","compressible":true},"application/vnd.grafeq":{"source":"iana","extensions":["gqf","gqs"]},"application/vnd.gridmp":{"source":"iana"},"application/vnd.groove-account":{"source":"iana","extensions":["gac"]},"application/vnd.groove-help":{"source":"iana","extensions":["ghf"]},"application/vnd.groove-identity-message":{"source":"iana","extensions":["gim"]},"application/vnd.groove-injector":{"source":"iana","extensions":["grv"]},"application/vnd.groove-tool-message":{"source":"iana","extensions":["gtm"]},"application/vnd.groove-tool-template":{"source":"iana","extensions":["tpl"]},"application/vnd.groove-vcard":{"source":"iana","extensions":["vcg"]},"application/vnd.hal+json":{"source":"iana","compressible":true},"application/vnd.hal+xml":{"source":"iana","compressible":true,"extensions":["hal"]},"application/vnd.handheld-entertainment+xml":{"source":"iana","compressible":true,"extensions":["zmm"]},"application/vnd.hbci":{"source":"iana","extensions":["hbci"]},"application/vnd.hc+json":{"source":"iana","compressible":true},"application/vnd.hcl-bireports":{"source":"iana"},"application/vnd.hdt":{"source":"iana"},"application/vnd.heroku+json":{"source":"iana","compressible":true},"application/vnd.hhe.lesson-player":{"source":"iana","extensions":["les"]},"application/vnd.hl7cda+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.hl7v2+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.hp-hpgl":{"source":"iana","extensions":["hpgl"]},"application/vnd.hp-hpid":{"source":"iana","extensions":["hpid"]},"application/vnd.hp-hps":{"source":"iana","extensions":["hps"]},"application/vnd.hp-jlyt":{"source":"iana","extensions":["jlt"]},"application/vnd.hp-pcl":{"source":"iana","extensions":["pcl"]},"application/vnd.hp-pclxl":{"source":"iana","extensions":["pclxl"]},"application/vnd.httphone":{"source":"iana"},"application/vnd.hydrostatix.sof-data":{"source":"iana","extensions":["sfd-hdstx"]},"application/vnd.hyper+json":{"source":"iana","compressible":true},"application/vnd.hyper-item+json":{"source":"iana","compressible":true},"application/vnd.hyperdrive+json":{"source":"iana","compressible":true},"application/vnd.hzn-3d-crossword":{"source":"iana"},"application/vnd.ibm.afplinedata":{"source":"iana"},"application/vnd.ibm.electronic-media":{"source":"iana"},"application/vnd.ibm.minipay":{"source":"iana","extensions":["mpy"]},"application/vnd.ibm.modcap":{"source":"iana","extensions":["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{"source":"iana","extensions":["irm"]},"application/vnd.ibm.secure-container":{"source":"iana","extensions":["sc"]},"application/vnd.iccprofile":{"source":"iana","extensions":["icc","icm"]},"application/vnd.ieee.1905":{"source":"iana"},"application/vnd.igloader":{"source":"iana","extensions":["igl"]},"application/vnd.imagemeter.folder+zip":{"source":"iana","compressible":false},"application/vnd.imagemeter.image+zip":{"source":"iana","compressible":false},"application/vnd.immervision-ivp":{"source":"iana","extensions":["ivp"]},"application/vnd.immervision-ivu":{"source":"iana","extensions":["ivu"]},"application/vnd.ims.imsccv1p1":{"source":"iana"},"application/vnd.ims.imsccv1p2":{"source":"iana"},"application/vnd.ims.imsccv1p3":{"source":"iana"},"application/vnd.ims.lis.v2.result+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy.id+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings.simple+json":{"source":"iana","compressible":true},"application/vnd.informedcontrol.rms+xml":{"source":"iana","compressible":true},"application/vnd.informix-visionary":{"source":"iana"},"application/vnd.infotech.project":{"source":"iana"},"application/vnd.infotech.project+xml":{"source":"iana","compressible":true},"application/vnd.innopath.wamp.notification":{"source":"iana"},"application/vnd.insors.igm":{"source":"iana","extensions":["igm"]},"application/vnd.intercon.formnet":{"source":"iana","extensions":["xpw","xpx"]},"application/vnd.intergeo":{"source":"iana","extensions":["i2g"]},"application/vnd.intertrust.digibox":{"source":"iana"},"application/vnd.intertrust.nncp":{"source":"iana"},"application/vnd.intu.qbo":{"source":"iana","extensions":["qbo"]},"application/vnd.intu.qfx":{"source":"iana","extensions":["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.conceptitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.knowledgeitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.newsmessage+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.packageitem+xml":{"source":"iana","compressible":true},"application/vnd.iptc.g2.planningitem+xml":{"source":"iana","compressible":true},"application/vnd.ipunplugged.rcprofile":{"source":"iana","extensions":["rcprofile"]},"application/vnd.irepository.package+xml":{"source":"iana","compressible":true,"extensions":["irp"]},"application/vnd.is-xpr":{"source":"iana","extensions":["xpr"]},"application/vnd.isac.fcs":{"source":"iana","extensions":["fcs"]},"application/vnd.iso11783-10+zip":{"source":"iana","compressible":false},"application/vnd.jam":{"source":"iana","extensions":["jam"]},"application/vnd.japannet-directory-service":{"source":"iana"},"application/vnd.japannet-jpnstore-wakeup":{"source":"iana"},"application/vnd.japannet-payment-wakeup":{"source":"iana"},"application/vnd.japannet-registration":{"source":"iana"},"application/vnd.japannet-registration-wakeup":{"source":"iana"},"application/vnd.japannet-setstore-wakeup":{"source":"iana"},"application/vnd.japannet-verification":{"source":"iana"},"application/vnd.japannet-verification-wakeup":{"source":"iana"},"application/vnd.jcp.javame.midlet-rms":{"source":"iana","extensions":["rms"]},"application/vnd.jisp":{"source":"iana","extensions":["jisp"]},"application/vnd.joost.joda-archive":{"source":"iana","extensions":["joda"]},"application/vnd.jsk.isdn-ngn":{"source":"iana"},"application/vnd.kahootz":{"source":"iana","extensions":["ktz","ktr"]},"application/vnd.kde.karbon":{"source":"iana","extensions":["karbon"]},"application/vnd.kde.kchart":{"source":"iana","extensions":["chrt"]},"application/vnd.kde.kformula":{"source":"iana","extensions":["kfo"]},"application/vnd.kde.kivio":{"source":"iana","extensions":["flw"]},"application/vnd.kde.kontour":{"source":"iana","extensions":["kon"]},"application/vnd.kde.kpresenter":{"source":"iana","extensions":["kpr","kpt"]},"application/vnd.kde.kspread":{"source":"iana","extensions":["ksp"]},"application/vnd.kde.kword":{"source":"iana","extensions":["kwd","kwt"]},"application/vnd.kenameaapp":{"source":"iana","extensions":["htke"]},"application/vnd.kidspiration":{"source":"iana","extensions":["kia"]},"application/vnd.kinar":{"source":"iana","extensions":["kne","knp"]},"application/vnd.koan":{"source":"iana","extensions":["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{"source":"iana","extensions":["sse"]},"application/vnd.las":{"source":"iana"},"application/vnd.las.las+json":{"source":"iana","compressible":true},"application/vnd.las.las+xml":{"source":"iana","compressible":true,"extensions":["lasxml"]},"application/vnd.laszip":{"source":"iana"},"application/vnd.leap+json":{"source":"iana","compressible":true},"application/vnd.liberty-request+xml":{"source":"iana","compressible":true},"application/vnd.llamagraphics.life-balance.desktop":{"source":"iana","extensions":["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{"source":"iana","compressible":true,"extensions":["lbe"]},"application/vnd.logipipe.circuit+zip":{"source":"iana","compressible":false},"application/vnd.loom":{"source":"iana"},"application/vnd.lotus-1-2-3":{"source":"iana","extensions":["123"]},"application/vnd.lotus-approach":{"source":"iana","extensions":["apr"]},"application/vnd.lotus-freelance":{"source":"iana","extensions":["pre"]},"application/vnd.lotus-notes":{"source":"iana","extensions":["nsf"]},"application/vnd.lotus-organizer":{"source":"iana","extensions":["org"]},"application/vnd.lotus-screencam":{"source":"iana","extensions":["scm"]},"application/vnd.lotus-wordpro":{"source":"iana","extensions":["lwp"]},"application/vnd.macports.portpkg":{"source":"iana","extensions":["portpkg"]},"application/vnd.mapbox-vector-tile":{"source":"iana","extensions":["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.conftoken+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.license+xml":{"source":"iana","compressible":true},"application/vnd.marlin.drm.mdcf":{"source":"iana"},"application/vnd.mason+json":{"source":"iana","compressible":true},"application/vnd.maxar.archive.3tz+zip":{"source":"iana","compressible":false},"application/vnd.maxmind.maxmind-db":{"source":"iana"},"application/vnd.mcd":{"source":"iana","extensions":["mcd"]},"application/vnd.medcalcdata":{"source":"iana","extensions":["mc1"]},"application/vnd.mediastation.cdkey":{"source":"iana","extensions":["cdkey"]},"application/vnd.meridian-slingshot":{"source":"iana"},"application/vnd.mfer":{"source":"iana","extensions":["mwf"]},"application/vnd.mfmp":{"source":"iana","extensions":["mfm"]},"application/vnd.micro+json":{"source":"iana","compressible":true},"application/vnd.micrografx.flo":{"source":"iana","extensions":["flo"]},"application/vnd.micrografx.igx":{"source":"iana","extensions":["igx"]},"application/vnd.microsoft.portable-executable":{"source":"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{"source":"iana"},"application/vnd.miele+json":{"source":"iana","compressible":true},"application/vnd.mif":{"source":"iana","extensions":["mif"]},"application/vnd.minisoft-hp3000-save":{"source":"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{"source":"iana"},"application/vnd.mobius.daf":{"source":"iana","extensions":["daf"]},"application/vnd.mobius.dis":{"source":"iana","extensions":["dis"]},"application/vnd.mobius.mbk":{"source":"iana","extensions":["mbk"]},"application/vnd.mobius.mqy":{"source":"iana","extensions":["mqy"]},"application/vnd.mobius.msl":{"source":"iana","extensions":["msl"]},"application/vnd.mobius.plc":{"source":"iana","extensions":["plc"]},"application/vnd.mobius.txf":{"source":"iana","extensions":["txf"]},"application/vnd.mophun.application":{"source":"iana","extensions":["mpn"]},"application/vnd.mophun.certificate":{"source":"iana","extensions":["mpc"]},"application/vnd.motorola.flexsuite":{"source":"iana"},"application/vnd.motorola.flexsuite.adsi":{"source":"iana"},"application/vnd.motorola.flexsuite.fis":{"source":"iana"},"application/vnd.motorola.flexsuite.gotap":{"source":"iana"},"application/vnd.motorola.flexsuite.kmr":{"source":"iana"},"application/vnd.motorola.flexsuite.ttc":{"source":"iana"},"application/vnd.motorola.flexsuite.wem":{"source":"iana"},"application/vnd.motorola.iprm":{"source":"iana"},"application/vnd.mozilla.xul+xml":{"source":"iana","compressible":true,"extensions":["xul"]},"application/vnd.ms-3mfdocument":{"source":"iana"},"application/vnd.ms-artgalry":{"source":"iana","extensions":["cil"]},"application/vnd.ms-asf":{"source":"iana"},"application/vnd.ms-cab-compressed":{"source":"iana","extensions":["cab"]},"application/vnd.ms-color.iccprofile":{"source":"apache"},"application/vnd.ms-excel":{"source":"iana","compressible":false,"extensions":["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{"source":"iana","extensions":["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{"source":"iana","extensions":["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{"source":"iana","extensions":["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{"source":"iana","extensions":["xltm"]},"application/vnd.ms-fontobject":{"source":"iana","compressible":true,"extensions":["eot"]},"application/vnd.ms-htmlhelp":{"source":"iana","extensions":["chm"]},"application/vnd.ms-ims":{"source":"iana","extensions":["ims"]},"application/vnd.ms-lrm":{"source":"iana","extensions":["lrm"]},"application/vnd.ms-office.activex+xml":{"source":"iana","compressible":true},"application/vnd.ms-officetheme":{"source":"iana","extensions":["thmx"]},"application/vnd.ms-opentype":{"source":"apache","compressible":true},"application/vnd.ms-outlook":{"compressible":false,"extensions":["msg"]},"application/vnd.ms-package.obfuscated-opentype":{"source":"apache"},"application/vnd.ms-pki.seccat":{"source":"apache","extensions":["cat"]},"application/vnd.ms-pki.stl":{"source":"apache","extensions":["stl"]},"application/vnd.ms-playready.initiator+xml":{"source":"iana","compressible":true},"application/vnd.ms-powerpoint":{"source":"iana","compressible":false,"extensions":["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{"source":"iana","extensions":["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{"source":"iana","extensions":["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{"source":"iana","extensions":["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{"source":"iana","extensions":["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{"source":"iana","extensions":["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{"source":"iana","compressible":true},"application/vnd.ms-printing.printticket+xml":{"source":"apache","compressible":true},"application/vnd.ms-printschematicket+xml":{"source":"iana","compressible":true},"application/vnd.ms-project":{"source":"iana","extensions":["mpp","mpt"]},"application/vnd.ms-tnef":{"source":"iana"},"application/vnd.ms-windows.devicepairing":{"source":"iana"},"application/vnd.ms-windows.nwprinting.oob":{"source":"iana"},"application/vnd.ms-windows.printerpairing":{"source":"iana"},"application/vnd.ms-windows.wsd.oob":{"source":"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.lic-resp":{"source":"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.meter-resp":{"source":"iana"},"application/vnd.ms-word.document.macroenabled.12":{"source":"iana","extensions":["docm"]},"application/vnd.ms-word.template.macroenabled.12":{"source":"iana","extensions":["dotm"]},"application/vnd.ms-works":{"source":"iana","extensions":["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{"source":"iana","extensions":["wpl"]},"application/vnd.ms-xpsdocument":{"source":"iana","compressible":false,"extensions":["xps"]},"application/vnd.msa-disk-image":{"source":"iana"},"application/vnd.mseq":{"source":"iana","extensions":["mseq"]},"application/vnd.msign":{"source":"iana"},"application/vnd.multiad.creator":{"source":"iana"},"application/vnd.multiad.creator.cif":{"source":"iana"},"application/vnd.music-niff":{"source":"iana"},"application/vnd.musician":{"source":"iana","extensions":["mus"]},"application/vnd.muvee.style":{"source":"iana","extensions":["msty"]},"application/vnd.mynfc":{"source":"iana","extensions":["taglet"]},"application/vnd.nacamar.ybrid+json":{"source":"iana","compressible":true},"application/vnd.ncd.control":{"source":"iana"},"application/vnd.ncd.reference":{"source":"iana"},"application/vnd.nearst.inv+json":{"source":"iana","compressible":true},"application/vnd.nebumind.line":{"source":"iana"},"application/vnd.nervana":{"source":"iana"},"application/vnd.netfpx":{"source":"iana"},"application/vnd.neurolanguage.nlu":{"source":"iana","extensions":["nlu"]},"application/vnd.nimn":{"source":"iana"},"application/vnd.nintendo.nitro.rom":{"source":"iana"},"application/vnd.nintendo.snes.rom":{"source":"iana"},"application/vnd.nitf":{"source":"iana","extensions":["ntf","nitf"]},"application/vnd.noblenet-directory":{"source":"iana","extensions":["nnd"]},"application/vnd.noblenet-sealer":{"source":"iana","extensions":["nns"]},"application/vnd.noblenet-web":{"source":"iana","extensions":["nnw"]},"application/vnd.nokia.catalogs":{"source":"iana"},"application/vnd.nokia.conml+wbxml":{"source":"iana"},"application/vnd.nokia.conml+xml":{"source":"iana","compressible":true},"application/vnd.nokia.iptv.config+xml":{"source":"iana","compressible":true},"application/vnd.nokia.isds-radio-presets":{"source":"iana"},"application/vnd.nokia.landmark+wbxml":{"source":"iana"},"application/vnd.nokia.landmark+xml":{"source":"iana","compressible":true},"application/vnd.nokia.landmarkcollection+xml":{"source":"iana","compressible":true},"application/vnd.nokia.n-gage.ac+xml":{"source":"iana","compressible":true,"extensions":["ac"]},"application/vnd.nokia.n-gage.data":{"source":"iana","extensions":["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{"source":"iana","extensions":["n-gage"]},"application/vnd.nokia.ncd":{"source":"iana"},"application/vnd.nokia.pcd+wbxml":{"source":"iana"},"application/vnd.nokia.pcd+xml":{"source":"iana","compressible":true},"application/vnd.nokia.radio-preset":{"source":"iana","extensions":["rpst"]},"application/vnd.nokia.radio-presets":{"source":"iana","extensions":["rpss"]},"application/vnd.novadigm.edm":{"source":"iana","extensions":["edm"]},"application/vnd.novadigm.edx":{"source":"iana","extensions":["edx"]},"application/vnd.novadigm.ext":{"source":"iana","extensions":["ext"]},"application/vnd.ntt-local.content-share":{"source":"iana"},"application/vnd.ntt-local.file-transfer":{"source":"iana"},"application/vnd.ntt-local.ogw_remote-access":{"source":"iana"},"application/vnd.ntt-local.sip-ta_remote":{"source":"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{"source":"iana"},"application/vnd.oasis.opendocument.chart":{"source":"iana","extensions":["odc"]},"application/vnd.oasis.opendocument.chart-template":{"source":"iana","extensions":["otc"]},"application/vnd.oasis.opendocument.database":{"source":"iana","extensions":["odb"]},"application/vnd.oasis.opendocument.formula":{"source":"iana","extensions":["odf"]},"application/vnd.oasis.opendocument.formula-template":{"source":"iana","extensions":["odft"]},"application/vnd.oasis.opendocument.graphics":{"source":"iana","compressible":false,"extensions":["odg"]},"application/vnd.oasis.opendocument.graphics-template":{"source":"iana","extensions":["otg"]},"application/vnd.oasis.opendocument.image":{"source":"iana","extensions":["odi"]},"application/vnd.oasis.opendocument.image-template":{"source":"iana","extensions":["oti"]},"application/vnd.oasis.opendocument.presentation":{"source":"iana","compressible":false,"extensions":["odp"]},"application/vnd.oasis.opendocument.presentation-template":{"source":"iana","extensions":["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{"source":"iana","compressible":false,"extensions":["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{"source":"iana","extensions":["ots"]},"application/vnd.oasis.opendocument.text":{"source":"iana","compressible":false,"extensions":["odt"]},"application/vnd.oasis.opendocument.text-master":{"source":"iana","extensions":["odm"]},"application/vnd.oasis.opendocument.text-template":{"source":"iana","extensions":["ott"]},"application/vnd.oasis.opendocument.text-web":{"source":"iana","extensions":["oth"]},"application/vnd.obn":{"source":"iana"},"application/vnd.ocf+cbor":{"source":"iana"},"application/vnd.oci.image.manifest.v1+json":{"source":"iana","compressible":true},"application/vnd.oftn.l10n+json":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessdownload+xml":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessstreaming+xml":{"source":"iana","compressible":true},"application/vnd.oipf.cspg-hexbinary":{"source":"iana"},"application/vnd.oipf.dae.svg+xml":{"source":"iana","compressible":true},"application/vnd.oipf.dae.xhtml+xml":{"source":"iana","compressible":true},"application/vnd.oipf.mippvcontrolmessage+xml":{"source":"iana","compressible":true},"application/vnd.oipf.pae.gem":{"source":"iana"},"application/vnd.oipf.spdiscovery+xml":{"source":"iana","compressible":true},"application/vnd.oipf.spdlist+xml":{"source":"iana","compressible":true},"application/vnd.oipf.ueprofile+xml":{"source":"iana","compressible":true},"application/vnd.oipf.userprofile+xml":{"source":"iana","compressible":true},"application/vnd.olpc-sugar":{"source":"iana","extensions":["xo"]},"application/vnd.oma-scws-config":{"source":"iana"},"application/vnd.oma-scws-http-request":{"source":"iana"},"application/vnd.oma-scws-http-response":{"source":"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.drm-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.imd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.ltkm":{"source":"iana"},"application/vnd.oma.bcast.notification+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.provisioningtrigger":{"source":"iana"},"application/vnd.oma.bcast.sgboot":{"source":"iana"},"application/vnd.oma.bcast.sgdd+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sgdu":{"source":"iana"},"application/vnd.oma.bcast.simple-symbol-container":{"source":"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.sprov+xml":{"source":"iana","compressible":true},"application/vnd.oma.bcast.stkm":{"source":"iana"},"application/vnd.oma.cab-address-book+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-feature-handler+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-pcc+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-subs-invite+xml":{"source":"iana","compressible":true},"application/vnd.oma.cab-user-prefs+xml":{"source":"iana","compressible":true},"application/vnd.oma.dcd":{"source":"iana"},"application/vnd.oma.dcdc":{"source":"iana"},"application/vnd.oma.dd2+xml":{"source":"iana","compressible":true,"extensions":["dd2"]},"application/vnd.oma.drm.risd+xml":{"source":"iana","compressible":true},"application/vnd.oma.group-usage-list+xml":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+cbor":{"source":"iana"},"application/vnd.oma.lwm2m+json":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+tlv":{"source":"iana"},"application/vnd.oma.pal+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.detailed-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.final-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.groups+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.invocation-descriptor+xml":{"source":"iana","compressible":true},"application/vnd.oma.poc.optimized-progress-report+xml":{"source":"iana","compressible":true},"application/vnd.oma.push":{"source":"iana"},"application/vnd.oma.scidm.messages+xml":{"source":"iana","compressible":true},"application/vnd.oma.xcap-directory+xml":{"source":"iana","compressible":true},"application/vnd.omads-email+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-file+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omads-folder+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.omaloc-supl-init":{"source":"iana"},"application/vnd.onepager":{"source":"iana"},"application/vnd.onepagertamp":{"source":"iana"},"application/vnd.onepagertamx":{"source":"iana"},"application/vnd.onepagertat":{"source":"iana"},"application/vnd.onepagertatp":{"source":"iana"},"application/vnd.onepagertatx":{"source":"iana"},"application/vnd.openblox.game+xml":{"source":"iana","compressible":true,"extensions":["obgx"]},"application/vnd.openblox.game-binary":{"source":"iana"},"application/vnd.openeye.oeb":{"source":"iana"},"application/vnd.openofficeorg.extension":{"source":"apache","extensions":["oxt"]},"application/vnd.openstreetmap.data+xml":{"source":"iana","compressible":true,"extensions":["osm"]},"application/vnd.opentimestamps.ots":{"source":"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawing+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{"source":"iana","compressible":false,"extensions":["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slide":{"source":"iana","extensions":["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{"source":"iana","extensions":["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.template":{"source":"iana","extensions":["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"source":"iana","compressible":false,"extensions":["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{"source":"iana","extensions":["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.theme+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.vmldrawing":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{"source":"iana","compressible":false,"extensions":["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{"source":"iana","extensions":["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.core-properties+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{"source":"iana","compressible":true},"application/vnd.openxmlformats-package.relationships+xml":{"source":"iana","compressible":true},"application/vnd.oracle.resource+json":{"source":"iana","compressible":true},"application/vnd.orange.indata":{"source":"iana"},"application/vnd.osa.netdeploy":{"source":"iana"},"application/vnd.osgeo.mapguide.package":{"source":"iana","extensions":["mgp"]},"application/vnd.osgi.bundle":{"source":"iana"},"application/vnd.osgi.dp":{"source":"iana","extensions":["dp"]},"application/vnd.osgi.subsystem":{"source":"iana","extensions":["esa"]},"application/vnd.otps.ct-kip+xml":{"source":"iana","compressible":true},"application/vnd.oxli.countgraph":{"source":"iana"},"application/vnd.pagerduty+json":{"source":"iana","compressible":true},"application/vnd.palm":{"source":"iana","extensions":["pdb","pqa","oprc"]},"application/vnd.panoply":{"source":"iana"},"application/vnd.paos.xml":{"source":"iana"},"application/vnd.patentdive":{"source":"iana"},"application/vnd.patientecommsdoc":{"source":"iana"},"application/vnd.pawaafile":{"source":"iana","extensions":["paw"]},"application/vnd.pcos":{"source":"iana"},"application/vnd.pg.format":{"source":"iana","extensions":["str"]},"application/vnd.pg.osasli":{"source":"iana","extensions":["ei6"]},"application/vnd.piaccess.application-licence":{"source":"iana"},"application/vnd.picsel":{"source":"iana","extensions":["efif"]},"application/vnd.pmi.widget":{"source":"iana","extensions":["wg"]},"application/vnd.poc.group-advertisement+xml":{"source":"iana","compressible":true},"application/vnd.pocketlearn":{"source":"iana","extensions":["plf"]},"application/vnd.powerbuilder6":{"source":"iana","extensions":["pbd"]},"application/vnd.powerbuilder6-s":{"source":"iana"},"application/vnd.powerbuilder7":{"source":"iana"},"application/vnd.powerbuilder7-s":{"source":"iana"},"application/vnd.powerbuilder75":{"source":"iana"},"application/vnd.powerbuilder75-s":{"source":"iana"},"application/vnd.preminet":{"source":"iana"},"application/vnd.previewsystems.box":{"source":"iana","extensions":["box"]},"application/vnd.proteus.magazine":{"source":"iana","extensions":["mgz"]},"application/vnd.psfs":{"source":"iana"},"application/vnd.publishare-delta-tree":{"source":"iana","extensions":["qps"]},"application/vnd.pvi.ptid1":{"source":"iana","extensions":["ptid"]},"application/vnd.pwg-multiplexed":{"source":"iana"},"application/vnd.pwg-xhtml-print+xml":{"source":"iana","compressible":true},"application/vnd.qualcomm.brew-app-res":{"source":"iana"},"application/vnd.quarantainenet":{"source":"iana"},"application/vnd.quark.quarkxpress":{"source":"iana","extensions":["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{"source":"iana"},"application/vnd.radisys.moml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-conn+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-audit-stream+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-conf+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-base+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-detect+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-group+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-speech+xml":{"source":"iana","compressible":true},"application/vnd.radisys.msml-dialog-transform+xml":{"source":"iana","compressible":true},"application/vnd.rainstor.data":{"source":"iana"},"application/vnd.rapid":{"source":"iana"},"application/vnd.rar":{"source":"iana","extensions":["rar"]},"application/vnd.realvnc.bed":{"source":"iana","extensions":["bed"]},"application/vnd.recordare.musicxml":{"source":"iana","extensions":["mxl"]},"application/vnd.recordare.musicxml+xml":{"source":"iana","compressible":true,"extensions":["musicxml"]},"application/vnd.renlearn.rlprint":{"source":"iana"},"application/vnd.resilient.logic":{"source":"iana"},"application/vnd.restful+json":{"source":"iana","compressible":true},"application/vnd.rig.cryptonote":{"source":"iana","extensions":["cryptonote"]},"application/vnd.rim.cod":{"source":"apache","extensions":["cod"]},"application/vnd.rn-realmedia":{"source":"apache","extensions":["rm"]},"application/vnd.rn-realmedia-vbr":{"source":"apache","extensions":["rmvb"]},"application/vnd.route66.link66+xml":{"source":"iana","compressible":true,"extensions":["link66"]},"application/vnd.rs-274x":{"source":"iana"},"application/vnd.ruckus.download":{"source":"iana"},"application/vnd.s3sms":{"source":"iana"},"application/vnd.sailingtracker.track":{"source":"iana","extensions":["st"]},"application/vnd.sar":{"source":"iana"},"application/vnd.sbm.cid":{"source":"iana"},"application/vnd.sbm.mid2":{"source":"iana"},"application/vnd.scribus":{"source":"iana"},"application/vnd.sealed.3df":{"source":"iana"},"application/vnd.sealed.csf":{"source":"iana"},"application/vnd.sealed.doc":{"source":"iana"},"application/vnd.sealed.eml":{"source":"iana"},"application/vnd.sealed.mht":{"source":"iana"},"application/vnd.sealed.net":{"source":"iana"},"application/vnd.sealed.ppt":{"source":"iana"},"application/vnd.sealed.tiff":{"source":"iana"},"application/vnd.sealed.xls":{"source":"iana"},"application/vnd.sealedmedia.softseal.html":{"source":"iana"},"application/vnd.sealedmedia.softseal.pdf":{"source":"iana"},"application/vnd.seemail":{"source":"iana","extensions":["see"]},"application/vnd.seis+json":{"source":"iana","compressible":true},"application/vnd.sema":{"source":"iana","extensions":["sema"]},"application/vnd.semd":{"source":"iana","extensions":["semd"]},"application/vnd.semf":{"source":"iana","extensions":["semf"]},"application/vnd.shade-save-file":{"source":"iana"},"application/vnd.shana.informed.formdata":{"source":"iana","extensions":["ifm"]},"application/vnd.shana.informed.formtemplate":{"source":"iana","extensions":["itp"]},"application/vnd.shana.informed.interchange":{"source":"iana","extensions":["iif"]},"application/vnd.shana.informed.package":{"source":"iana","extensions":["ipk"]},"application/vnd.shootproof+json":{"source":"iana","compressible":true},"application/vnd.shopkick+json":{"source":"iana","compressible":true},"application/vnd.shp":{"source":"iana"},"application/vnd.shx":{"source":"iana"},"application/vnd.sigrok.session":{"source":"iana"},"application/vnd.simtech-mindmapper":{"source":"iana","extensions":["twd","twds"]},"application/vnd.siren+json":{"source":"iana","compressible":true},"application/vnd.smaf":{"source":"iana","extensions":["mmf"]},"application/vnd.smart.notebook":{"source":"iana"},"application/vnd.smart.teacher":{"source":"iana","extensions":["teacher"]},"application/vnd.snesdev-page-table":{"source":"iana"},"application/vnd.software602.filler.form+xml":{"source":"iana","compressible":true,"extensions":["fo"]},"application/vnd.software602.filler.form-xml-zip":{"source":"iana"},"application/vnd.solent.sdkm+xml":{"source":"iana","compressible":true,"extensions":["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{"source":"iana","extensions":["dxp"]},"application/vnd.spotfire.sfs":{"source":"iana","extensions":["sfs"]},"application/vnd.sqlite3":{"source":"iana"},"application/vnd.sss-cod":{"source":"iana"},"application/vnd.sss-dtf":{"source":"iana"},"application/vnd.sss-ntf":{"source":"iana"},"application/vnd.stardivision.calc":{"source":"apache","extensions":["sdc"]},"application/vnd.stardivision.draw":{"source":"apache","extensions":["sda"]},"application/vnd.stardivision.impress":{"source":"apache","extensions":["sdd"]},"application/vnd.stardivision.math":{"source":"apache","extensions":["smf"]},"application/vnd.stardivision.writer":{"source":"apache","extensions":["sdw","vor"]},"application/vnd.stardivision.writer-global":{"source":"apache","extensions":["sgl"]},"application/vnd.stepmania.package":{"source":"iana","extensions":["smzip"]},"application/vnd.stepmania.stepchart":{"source":"iana","extensions":["sm"]},"application/vnd.street-stream":{"source":"iana"},"application/vnd.sun.wadl+xml":{"source":"iana","compressible":true,"extensions":["wadl"]},"application/vnd.sun.xml.calc":{"source":"apache","extensions":["sxc"]},"application/vnd.sun.xml.calc.template":{"source":"apache","extensions":["stc"]},"application/vnd.sun.xml.draw":{"source":"apache","extensions":["sxd"]},"application/vnd.sun.xml.draw.template":{"source":"apache","extensions":["std"]},"application/vnd.sun.xml.impress":{"source":"apache","extensions":["sxi"]},"application/vnd.sun.xml.impress.template":{"source":"apache","extensions":["sti"]},"application/vnd.sun.xml.math":{"source":"apache","extensions":["sxm"]},"application/vnd.sun.xml.writer":{"source":"apache","extensions":["sxw"]},"application/vnd.sun.xml.writer.global":{"source":"apache","extensions":["sxg"]},"application/vnd.sun.xml.writer.template":{"source":"apache","extensions":["stw"]},"application/vnd.sus-calendar":{"source":"iana","extensions":["sus","susp"]},"application/vnd.svd":{"source":"iana","extensions":["svd"]},"application/vnd.swiftview-ics":{"source":"iana"},"application/vnd.sycle+xml":{"source":"iana","compressible":true},"application/vnd.syft+json":{"source":"iana","compressible":true},"application/vnd.symbian.install":{"source":"apache","extensions":["sis","sisx"]},"application/vnd.syncml+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xsm"]},"application/vnd.syncml.dm+wbxml":{"source":"iana","charset":"UTF-8","extensions":["bdm"]},"application/vnd.syncml.dm+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["xdm"]},"application/vnd.syncml.dm.notification":{"source":"iana"},"application/vnd.syncml.dmddf+wbxml":{"source":"iana"},"application/vnd.syncml.dmddf+xml":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{"source":"iana"},"application/vnd.syncml.dmtnds+xml":{"source":"iana","charset":"UTF-8","compressible":true},"application/vnd.syncml.ds.notification":{"source":"iana"},"application/vnd.tableschema+json":{"source":"iana","compressible":true},"application/vnd.tao.intent-module-archive":{"source":"iana","extensions":["tao"]},"application/vnd.tcpdump.pcap":{"source":"iana","extensions":["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{"source":"iana","compressible":true},"application/vnd.tmd.mediaflex.api+xml":{"source":"iana","compressible":true},"application/vnd.tml":{"source":"iana"},"application/vnd.tmobile-livetv":{"source":"iana","extensions":["tmo"]},"application/vnd.tri.onesource":{"source":"iana"},"application/vnd.trid.tpt":{"source":"iana","extensions":["tpt"]},"application/vnd.triscape.mxs":{"source":"iana","extensions":["mxs"]},"application/vnd.trueapp":{"source":"iana","extensions":["tra"]},"application/vnd.truedoc":{"source":"iana"},"application/vnd.ubisoft.webplayer":{"source":"iana"},"application/vnd.ufdl":{"source":"iana","extensions":["ufd","ufdl"]},"application/vnd.uiq.theme":{"source":"iana","extensions":["utz"]},"application/vnd.umajin":{"source":"iana","extensions":["umj"]},"application/vnd.unity":{"source":"iana","extensions":["unityweb"]},"application/vnd.uoml+xml":{"source":"iana","compressible":true,"extensions":["uoml"]},"application/vnd.uplanet.alert":{"source":"iana"},"application/vnd.uplanet.alert-wbxml":{"source":"iana"},"application/vnd.uplanet.bearer-choice":{"source":"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{"source":"iana"},"application/vnd.uplanet.cacheop":{"source":"iana"},"application/vnd.uplanet.cacheop-wbxml":{"source":"iana"},"application/vnd.uplanet.channel":{"source":"iana"},"application/vnd.uplanet.channel-wbxml":{"source":"iana"},"application/vnd.uplanet.list":{"source":"iana"},"application/vnd.uplanet.list-wbxml":{"source":"iana"},"application/vnd.uplanet.listcmd":{"source":"iana"},"application/vnd.uplanet.listcmd-wbxml":{"source":"iana"},"application/vnd.uplanet.signal":{"source":"iana"},"application/vnd.uri-map":{"source":"iana"},"application/vnd.valve.source.material":{"source":"iana"},"application/vnd.vcx":{"source":"iana","extensions":["vcx"]},"application/vnd.vd-study":{"source":"iana"},"application/vnd.vectorworks":{"source":"iana"},"application/vnd.vel+json":{"source":"iana","compressible":true},"application/vnd.verimatrix.vcas":{"source":"iana"},"application/vnd.veritone.aion+json":{"source":"iana","compressible":true},"application/vnd.veryant.thin":{"source":"iana"},"application/vnd.ves.encrypted":{"source":"iana"},"application/vnd.vidsoft.vidconference":{"source":"iana"},"application/vnd.visio":{"source":"iana","extensions":["vsd","vst","vss","vsw"]},"application/vnd.visionary":{"source":"iana","extensions":["vis"]},"application/vnd.vividence.scriptfile":{"source":"iana"},"application/vnd.vsf":{"source":"iana","extensions":["vsf"]},"application/vnd.wap.sic":{"source":"iana"},"application/vnd.wap.slc":{"source":"iana"},"application/vnd.wap.wbxml":{"source":"iana","charset":"UTF-8","extensions":["wbxml"]},"application/vnd.wap.wmlc":{"source":"iana","extensions":["wmlc"]},"application/vnd.wap.wmlscriptc":{"source":"iana","extensions":["wmlsc"]},"application/vnd.webturbo":{"source":"iana","extensions":["wtb"]},"application/vnd.wfa.dpp":{"source":"iana"},"application/vnd.wfa.p2p":{"source":"iana"},"application/vnd.wfa.wsc":{"source":"iana"},"application/vnd.windows.devicepairing":{"source":"iana"},"application/vnd.wmc":{"source":"iana"},"application/vnd.wmf.bootstrap":{"source":"iana"},"application/vnd.wolfram.mathematica":{"source":"iana"},"application/vnd.wolfram.mathematica.package":{"source":"iana"},"application/vnd.wolfram.player":{"source":"iana","extensions":["nbp"]},"application/vnd.wordperfect":{"source":"iana","extensions":["wpd"]},"application/vnd.wqd":{"source":"iana","extensions":["wqd"]},"application/vnd.wrq-hp3000-labelled":{"source":"iana"},"application/vnd.wt.stf":{"source":"iana","extensions":["stf"]},"application/vnd.wv.csp+wbxml":{"source":"iana"},"application/vnd.wv.csp+xml":{"source":"iana","compressible":true},"application/vnd.wv.ssp+xml":{"source":"iana","compressible":true},"application/vnd.xacml+json":{"source":"iana","compressible":true},"application/vnd.xara":{"source":"iana","extensions":["xar"]},"application/vnd.xfdl":{"source":"iana","extensions":["xfdl"]},"application/vnd.xfdl.webform":{"source":"iana"},"application/vnd.xmi+xml":{"source":"iana","compressible":true},"application/vnd.xmpie.cpkg":{"source":"iana"},"application/vnd.xmpie.dpkg":{"source":"iana"},"application/vnd.xmpie.plan":{"source":"iana"},"application/vnd.xmpie.ppkg":{"source":"iana"},"application/vnd.xmpie.xlim":{"source":"iana"},"application/vnd.yamaha.hv-dic":{"source":"iana","extensions":["hvd"]},"application/vnd.yamaha.hv-script":{"source":"iana","extensions":["hvs"]},"application/vnd.yamaha.hv-voice":{"source":"iana","extensions":["hvp"]},"application/vnd.yamaha.openscoreformat":{"source":"iana","extensions":["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{"source":"iana","compressible":true,"extensions":["osfpvg"]},"application/vnd.yamaha.remote-setup":{"source":"iana"},"application/vnd.yamaha.smaf-audio":{"source":"iana","extensions":["saf"]},"application/vnd.yamaha.smaf-phrase":{"source":"iana","extensions":["spf"]},"application/vnd.yamaha.through-ngn":{"source":"iana"},"application/vnd.yamaha.tunnel-udpencap":{"source":"iana"},"application/vnd.yaoweme":{"source":"iana"},"application/vnd.yellowriver-custom-menu":{"source":"iana","extensions":["cmp"]},"application/vnd.youtube.yt":{"source":"iana"},"application/vnd.zul":{"source":"iana","extensions":["zir","zirz"]},"application/vnd.zzazz.deck+xml":{"source":"iana","compressible":true,"extensions":["zaz"]},"application/voicexml+xml":{"source":"iana","compressible":true,"extensions":["vxml"]},"application/voucher-cms+json":{"source":"iana","compressible":true},"application/vq-rtcpxr":{"source":"iana"},"application/wasm":{"source":"iana","compressible":true,"extensions":["wasm"]},"application/watcherinfo+xml":{"source":"iana","compressible":true,"extensions":["wif"]},"application/webpush-options+json":{"source":"iana","compressible":true},"application/whoispp-query":{"source":"iana"},"application/whoispp-response":{"source":"iana"},"application/widget":{"source":"iana","extensions":["wgt"]},"application/winhlp":{"source":"apache","extensions":["hlp"]},"application/wita":{"source":"iana"},"application/wordperfect5.1":{"source":"iana"},"application/wsdl+xml":{"source":"iana","compressible":true,"extensions":["wsdl"]},"application/wspolicy+xml":{"source":"iana","compressible":true,"extensions":["wspolicy"]},"application/x-7z-compressed":{"source":"apache","compressible":false,"extensions":["7z"]},"application/x-abiword":{"source":"apache","extensions":["abw"]},"application/x-ace-compressed":{"source":"apache","extensions":["ace"]},"application/x-amf":{"source":"apache"},"application/x-apple-diskimage":{"source":"apache","extensions":["dmg"]},"application/x-arj":{"compressible":false,"extensions":["arj"]},"application/x-authorware-bin":{"source":"apache","extensions":["aab","x32","u32","vox"]},"application/x-authorware-map":{"source":"apache","extensions":["aam"]},"application/x-authorware-seg":{"source":"apache","extensions":["aas"]},"application/x-bcpio":{"source":"apache","extensions":["bcpio"]},"application/x-bdoc":{"compressible":false,"extensions":["bdoc"]},"application/x-bittorrent":{"source":"apache","extensions":["torrent"]},"application/x-blorb":{"source":"apache","extensions":["blb","blorb"]},"application/x-bzip":{"source":"apache","compressible":false,"extensions":["bz"]},"application/x-bzip2":{"source":"apache","compressible":false,"extensions":["bz2","boz"]},"application/x-cbr":{"source":"apache","extensions":["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{"source":"apache","extensions":["vcd"]},"application/x-cfs-compressed":{"source":"apache","extensions":["cfs"]},"application/x-chat":{"source":"apache","extensions":["chat"]},"application/x-chess-pgn":{"source":"apache","extensions":["pgn"]},"application/x-chrome-extension":{"extensions":["crx"]},"application/x-cocoa":{"source":"nginx","extensions":["cco"]},"application/x-compress":{"source":"apache"},"application/x-conference":{"source":"apache","extensions":["nsc"]},"application/x-cpio":{"source":"apache","extensions":["cpio"]},"application/x-csh":{"source":"apache","extensions":["csh"]},"application/x-deb":{"compressible":false},"application/x-debian-package":{"source":"apache","extensions":["deb","udeb"]},"application/x-dgc-compressed":{"source":"apache","extensions":["dgc"]},"application/x-director":{"source":"apache","extensions":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{"source":"apache","extensions":["wad"]},"application/x-dtbncx+xml":{"source":"apache","compressible":true,"extensions":["ncx"]},"application/x-dtbook+xml":{"source":"apache","compressible":true,"extensions":["dtb"]},"application/x-dtbresource+xml":{"source":"apache","compressible":true,"extensions":["res"]},"application/x-dvi":{"source":"apache","compressible":false,"extensions":["dvi"]},"application/x-envoy":{"source":"apache","extensions":["evy"]},"application/x-eva":{"source":"apache","extensions":["eva"]},"application/x-font-bdf":{"source":"apache","extensions":["bdf"]},"application/x-font-dos":{"source":"apache"},"application/x-font-framemaker":{"source":"apache"},"application/x-font-ghostscript":{"source":"apache","extensions":["gsf"]},"application/x-font-libgrx":{"source":"apache"},"application/x-font-linux-psf":{"source":"apache","extensions":["psf"]},"application/x-font-pcf":{"source":"apache","extensions":["pcf"]},"application/x-font-snf":{"source":"apache","extensions":["snf"]},"application/x-font-speedo":{"source":"apache"},"application/x-font-sunos-news":{"source":"apache"},"application/x-font-type1":{"source":"apache","extensions":["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{"source":"apache"},"application/x-freearc":{"source":"apache","extensions":["arc"]},"application/x-futuresplash":{"source":"apache","extensions":["spl"]},"application/x-gca-compressed":{"source":"apache","extensions":["gca"]},"application/x-glulx":{"source":"apache","extensions":["ulx"]},"application/x-gnumeric":{"source":"apache","extensions":["gnumeric"]},"application/x-gramps-xml":{"source":"apache","extensions":["gramps"]},"application/x-gtar":{"source":"apache","extensions":["gtar"]},"application/x-gzip":{"source":"apache"},"application/x-hdf":{"source":"apache","extensions":["hdf"]},"application/x-httpd-php":{"compressible":true,"extensions":["php"]},"application/x-install-instructions":{"source":"apache","extensions":["install"]},"application/x-iso9660-image":{"source":"apache","extensions":["iso"]},"application/x-iwork-keynote-sffkey":{"extensions":["key"]},"application/x-iwork-numbers-sffnumbers":{"extensions":["numbers"]},"application/x-iwork-pages-sffpages":{"extensions":["pages"]},"application/x-java-archive-diff":{"source":"nginx","extensions":["jardiff"]},"application/x-java-jnlp-file":{"source":"apache","compressible":false,"extensions":["jnlp"]},"application/x-javascript":{"compressible":true},"application/x-keepass2":{"extensions":["kdbx"]},"application/x-latex":{"source":"apache","compressible":false,"extensions":["latex"]},"application/x-lua-bytecode":{"extensions":["luac"]},"application/x-lzh-compressed":{"source":"apache","extensions":["lzh","lha"]},"application/x-makeself":{"source":"nginx","extensions":["run"]},"application/x-mie":{"source":"apache","extensions":["mie"]},"application/x-mobipocket-ebook":{"source":"apache","extensions":["prc","mobi"]},"application/x-mpegurl":{"compressible":false},"application/x-ms-application":{"source":"apache","extensions":["application"]},"application/x-ms-shortcut":{"source":"apache","extensions":["lnk"]},"application/x-ms-wmd":{"source":"apache","extensions":["wmd"]},"application/x-ms-wmz":{"source":"apache","extensions":["wmz"]},"application/x-ms-xbap":{"source":"apache","extensions":["xbap"]},"application/x-msaccess":{"source":"apache","extensions":["mdb"]},"application/x-msbinder":{"source":"apache","extensions":["obd"]},"application/x-mscardfile":{"source":"apache","extensions":["crd"]},"application/x-msclip":{"source":"apache","extensions":["clp"]},"application/x-msdos-program":{"extensions":["exe"]},"application/x-msdownload":{"source":"apache","extensions":["exe","dll","com","bat","msi"]},"application/x-msmediaview":{"source":"apache","extensions":["mvb","m13","m14"]},"application/x-msmetafile":{"source":"apache","extensions":["wmf","wmz","emf","emz"]},"application/x-msmoney":{"source":"apache","extensions":["mny"]},"application/x-mspublisher":{"source":"apache","extensions":["pub"]},"application/x-msschedule":{"source":"apache","extensions":["scd"]},"application/x-msterminal":{"source":"apache","extensions":["trm"]},"application/x-mswrite":{"source":"apache","extensions":["wri"]},"application/x-netcdf":{"source":"apache","extensions":["nc","cdf"]},"application/x-ns-proxy-autoconfig":{"compressible":true,"extensions":["pac"]},"application/x-nzb":{"source":"apache","extensions":["nzb"]},"application/x-perl":{"source":"nginx","extensions":["pl","pm"]},"application/x-pilot":{"source":"nginx","extensions":["prc","pdb"]},"application/x-pkcs12":{"source":"apache","compressible":false,"extensions":["p12","pfx"]},"application/x-pkcs7-certificates":{"source":"apache","extensions":["p7b","spc"]},"application/x-pkcs7-certreqresp":{"source":"apache","extensions":["p7r"]},"application/x-pki-message":{"source":"iana"},"application/x-rar-compressed":{"source":"apache","compressible":false,"extensions":["rar"]},"application/x-redhat-package-manager":{"source":"nginx","extensions":["rpm"]},"application/x-research-info-systems":{"source":"apache","extensions":["ris"]},"application/x-sea":{"source":"nginx","extensions":["sea"]},"application/x-sh":{"source":"apache","compressible":true,"extensions":["sh"]},"application/x-shar":{"source":"apache","extensions":["shar"]},"application/x-shockwave-flash":{"source":"apache","compressible":false,"extensions":["swf"]},"application/x-silverlight-app":{"source":"apache","extensions":["xap"]},"application/x-sql":{"source":"apache","extensions":["sql"]},"application/x-stuffit":{"source":"apache","compressible":false,"extensions":["sit"]},"application/x-stuffitx":{"source":"apache","extensions":["sitx"]},"application/x-subrip":{"source":"apache","extensions":["srt"]},"application/x-sv4cpio":{"source":"apache","extensions":["sv4cpio"]},"application/x-sv4crc":{"source":"apache","extensions":["sv4crc"]},"application/x-t3vm-image":{"source":"apache","extensions":["t3"]},"application/x-tads":{"source":"apache","extensions":["gam"]},"application/x-tar":{"source":"apache","compressible":true,"extensions":["tar"]},"application/x-tcl":{"source":"apache","extensions":["tcl","tk"]},"application/x-tex":{"source":"apache","extensions":["tex"]},"application/x-tex-tfm":{"source":"apache","extensions":["tfm"]},"application/x-texinfo":{"source":"apache","extensions":["texinfo","texi"]},"application/x-tgif":{"source":"apache","extensions":["obj"]},"application/x-ustar":{"source":"apache","extensions":["ustar"]},"application/x-virtualbox-hdd":{"compressible":true,"extensions":["hdd"]},"application/x-virtualbox-ova":{"compressible":true,"extensions":["ova"]},"application/x-virtualbox-ovf":{"compressible":true,"extensions":["ovf"]},"application/x-virtualbox-vbox":{"compressible":true,"extensions":["vbox"]},"application/x-virtualbox-vbox-extpack":{"compressible":false,"extensions":["vbox-extpack"]},"application/x-virtualbox-vdi":{"compressible":true,"extensions":["vdi"]},"application/x-virtualbox-vhd":{"compressible":true,"extensions":["vhd"]},"application/x-virtualbox-vmdk":{"compressible":true,"extensions":["vmdk"]},"application/x-wais-source":{"source":"apache","extensions":["src"]},"application/x-web-app-manifest+json":{"compressible":true,"extensions":["webapp"]},"application/x-www-form-urlencoded":{"source":"iana","compressible":true},"application/x-x509-ca-cert":{"source":"iana","extensions":["der","crt","pem"]},"application/x-x509-ca-ra-cert":{"source":"iana"},"application/x-x509-next-ca-cert":{"source":"iana"},"application/x-xfig":{"source":"apache","extensions":["fig"]},"application/x-xliff+xml":{"source":"apache","compressible":true,"extensions":["xlf"]},"application/x-xpinstall":{"source":"apache","compressible":false,"extensions":["xpi"]},"application/x-xz":{"source":"apache","extensions":["xz"]},"application/x-zmachine":{"source":"apache","extensions":["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{"source":"iana"},"application/xacml+xml":{"source":"iana","compressible":true},"application/xaml+xml":{"source":"apache","compressible":true,"extensions":["xaml"]},"application/xcap-att+xml":{"source":"iana","compressible":true,"extensions":["xav"]},"application/xcap-caps+xml":{"source":"iana","compressible":true,"extensions":["xca"]},"application/xcap-diff+xml":{"source":"iana","compressible":true,"extensions":["xdf"]},"application/xcap-el+xml":{"source":"iana","compressible":true,"extensions":["xel"]},"application/xcap-error+xml":{"source":"iana","compressible":true},"application/xcap-ns+xml":{"source":"iana","compressible":true,"extensions":["xns"]},"application/xcon-conference-info+xml":{"source":"iana","compressible":true},"application/xcon-conference-info-diff+xml":{"source":"iana","compressible":true},"application/xenc+xml":{"source":"iana","compressible":true,"extensions":["xenc"]},"application/xhtml+xml":{"source":"iana","compressible":true,"extensions":["xhtml","xht"]},"application/xhtml-voice+xml":{"source":"apache","compressible":true},"application/xliff+xml":{"source":"iana","compressible":true,"extensions":["xlf"]},"application/xml":{"source":"iana","compressible":true,"extensions":["xml","xsl","xsd","rng"]},"application/xml-dtd":{"source":"iana","compressible":true,"extensions":["dtd"]},"application/xml-external-parsed-entity":{"source":"iana"},"application/xml-patch+xml":{"source":"iana","compressible":true},"application/xmpp+xml":{"source":"iana","compressible":true},"application/xop+xml":{"source":"iana","compressible":true,"extensions":["xop"]},"application/xproc+xml":{"source":"apache","compressible":true,"extensions":["xpl"]},"application/xslt+xml":{"source":"iana","compressible":true,"extensions":["xsl","xslt"]},"application/xspf+xml":{"source":"apache","compressible":true,"extensions":["xspf"]},"application/xv+xml":{"source":"iana","compressible":true,"extensions":["mxml","xhvml","xvml","xvm"]},"application/yang":{"source":"iana","extensions":["yang"]},"application/yang-data+json":{"source":"iana","compressible":true},"application/yang-data+xml":{"source":"iana","compressible":true},"application/yang-patch+json":{"source":"iana","compressible":true},"application/yang-patch+xml":{"source":"iana","compressible":true},"application/yin+xml":{"source":"iana","compressible":true,"extensions":["yin"]},"application/zip":{"source":"iana","compressible":false,"extensions":["zip"]},"application/zlib":{"source":"iana"},"application/zstd":{"source":"iana"},"audio/1d-interleaved-parityfec":{"source":"iana"},"audio/32kadpcm":{"source":"iana"},"audio/3gpp":{"source":"iana","compressible":false,"extensions":["3gpp"]},"audio/3gpp2":{"source":"iana"},"audio/aac":{"source":"iana"},"audio/ac3":{"source":"iana"},"audio/adpcm":{"source":"apache","extensions":["adp"]},"audio/amr":{"source":"iana","extensions":["amr"]},"audio/amr-wb":{"source":"iana"},"audio/amr-wb+":{"source":"iana"},"audio/aptx":{"source":"iana"},"audio/asc":{"source":"iana"},"audio/atrac-advanced-lossless":{"source":"iana"},"audio/atrac-x":{"source":"iana"},"audio/atrac3":{"source":"iana"},"audio/basic":{"source":"iana","compressible":false,"extensions":["au","snd"]},"audio/bv16":{"source":"iana"},"audio/bv32":{"source":"iana"},"audio/clearmode":{"source":"iana"},"audio/cn":{"source":"iana"},"audio/dat12":{"source":"iana"},"audio/dls":{"source":"iana"},"audio/dsr-es201108":{"source":"iana"},"audio/dsr-es202050":{"source":"iana"},"audio/dsr-es202211":{"source":"iana"},"audio/dsr-es202212":{"source":"iana"},"audio/dv":{"source":"iana"},"audio/dvi4":{"source":"iana"},"audio/eac3":{"source":"iana"},"audio/encaprtp":{"source":"iana"},"audio/evrc":{"source":"iana"},"audio/evrc-qcp":{"source":"iana"},"audio/evrc0":{"source":"iana"},"audio/evrc1":{"source":"iana"},"audio/evrcb":{"source":"iana"},"audio/evrcb0":{"source":"iana"},"audio/evrcb1":{"source":"iana"},"audio/evrcnw":{"source":"iana"},"audio/evrcnw0":{"source":"iana"},"audio/evrcnw1":{"source":"iana"},"audio/evrcwb":{"source":"iana"},"audio/evrcwb0":{"source":"iana"},"audio/evrcwb1":{"source":"iana"},"audio/evs":{"source":"iana"},"audio/flexfec":{"source":"iana"},"audio/fwdred":{"source":"iana"},"audio/g711-0":{"source":"iana"},"audio/g719":{"source":"iana"},"audio/g722":{"source":"iana"},"audio/g7221":{"source":"iana"},"audio/g723":{"source":"iana"},"audio/g726-16":{"source":"iana"},"audio/g726-24":{"source":"iana"},"audio/g726-32":{"source":"iana"},"audio/g726-40":{"source":"iana"},"audio/g728":{"source":"iana"},"audio/g729":{"source":"iana"},"audio/g7291":{"source":"iana"},"audio/g729d":{"source":"iana"},"audio/g729e":{"source":"iana"},"audio/gsm":{"source":"iana"},"audio/gsm-efr":{"source":"iana"},"audio/gsm-hr-08":{"source":"iana"},"audio/ilbc":{"source":"iana"},"audio/ip-mr_v2.5":{"source":"iana"},"audio/isac":{"source":"apache"},"audio/l16":{"source":"iana"},"audio/l20":{"source":"iana"},"audio/l24":{"source":"iana","compressible":false},"audio/l8":{"source":"iana"},"audio/lpc":{"source":"iana"},"audio/melp":{"source":"iana"},"audio/melp1200":{"source":"iana"},"audio/melp2400":{"source":"iana"},"audio/melp600":{"source":"iana"},"audio/mhas":{"source":"iana"},"audio/midi":{"source":"apache","extensions":["mid","midi","kar","rmi"]},"audio/mobile-xmf":{"source":"iana","extensions":["mxmf"]},"audio/mp3":{"compressible":false,"extensions":["mp3"]},"audio/mp4":{"source":"iana","compressible":false,"extensions":["m4a","mp4a"]},"audio/mp4a-latm":{"source":"iana"},"audio/mpa":{"source":"iana"},"audio/mpa-robust":{"source":"iana"},"audio/mpeg":{"source":"iana","compressible":false,"extensions":["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{"source":"iana"},"audio/musepack":{"source":"apache"},"audio/ogg":{"source":"iana","compressible":false,"extensions":["oga","ogg","spx","opus"]},"audio/opus":{"source":"iana"},"audio/parityfec":{"source":"iana"},"audio/pcma":{"source":"iana"},"audio/pcma-wb":{"source":"iana"},"audio/pcmu":{"source":"iana"},"audio/pcmu-wb":{"source":"iana"},"audio/prs.sid":{"source":"iana"},"audio/qcelp":{"source":"iana"},"audio/raptorfec":{"source":"iana"},"audio/red":{"source":"iana"},"audio/rtp-enc-aescm128":{"source":"iana"},"audio/rtp-midi":{"source":"iana"},"audio/rtploopback":{"source":"iana"},"audio/rtx":{"source":"iana"},"audio/s3m":{"source":"apache","extensions":["s3m"]},"audio/scip":{"source":"iana"},"audio/silk":{"source":"apache","extensions":["sil"]},"audio/smv":{"source":"iana"},"audio/smv-qcp":{"source":"iana"},"audio/smv0":{"source":"iana"},"audio/sofa":{"source":"iana"},"audio/sp-midi":{"source":"iana"},"audio/speex":{"source":"iana"},"audio/t140c":{"source":"iana"},"audio/t38":{"source":"iana"},"audio/telephone-event":{"source":"iana"},"audio/tetra_acelp":{"source":"iana"},"audio/tetra_acelp_bb":{"source":"iana"},"audio/tone":{"source":"iana"},"audio/tsvcis":{"source":"iana"},"audio/uemclip":{"source":"iana"},"audio/ulpfec":{"source":"iana"},"audio/usac":{"source":"iana"},"audio/vdvi":{"source":"iana"},"audio/vmr-wb":{"source":"iana"},"audio/vnd.3gpp.iufp":{"source":"iana"},"audio/vnd.4sb":{"source":"iana"},"audio/vnd.audiokoz":{"source":"iana"},"audio/vnd.celp":{"source":"iana"},"audio/vnd.cisco.nse":{"source":"iana"},"audio/vnd.cmles.radio-events":{"source":"iana"},"audio/vnd.cns.anp1":{"source":"iana"},"audio/vnd.cns.inf1":{"source":"iana"},"audio/vnd.dece.audio":{"source":"iana","extensions":["uva","uvva"]},"audio/vnd.digital-winds":{"source":"iana","extensions":["eol"]},"audio/vnd.dlna.adts":{"source":"iana"},"audio/vnd.dolby.heaac.1":{"source":"iana"},"audio/vnd.dolby.heaac.2":{"source":"iana"},"audio/vnd.dolby.mlp":{"source":"iana"},"audio/vnd.dolby.mps":{"source":"iana"},"audio/vnd.dolby.pl2":{"source":"iana"},"audio/vnd.dolby.pl2x":{"source":"iana"},"audio/vnd.dolby.pl2z":{"source":"iana"},"audio/vnd.dolby.pulse.1":{"source":"iana"},"audio/vnd.dra":{"source":"iana","extensions":["dra"]},"audio/vnd.dts":{"source":"iana","extensions":["dts"]},"audio/vnd.dts.hd":{"source":"iana","extensions":["dtshd"]},"audio/vnd.dts.uhd":{"source":"iana"},"audio/vnd.dvb.file":{"source":"iana"},"audio/vnd.everad.plj":{"source":"iana"},"audio/vnd.hns.audio":{"source":"iana"},"audio/vnd.lucent.voice":{"source":"iana","extensions":["lvp"]},"audio/vnd.ms-playready.media.pya":{"source":"iana","extensions":["pya"]},"audio/vnd.nokia.mobile-xmf":{"source":"iana"},"audio/vnd.nortel.vbk":{"source":"iana"},"audio/vnd.nuera.ecelp4800":{"source":"iana","extensions":["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{"source":"iana","extensions":["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{"source":"iana","extensions":["ecelp9600"]},"audio/vnd.octel.sbc":{"source":"iana"},"audio/vnd.presonus.multitrack":{"source":"iana"},"audio/vnd.qcelp":{"source":"iana"},"audio/vnd.rhetorex.32kadpcm":{"source":"iana"},"audio/vnd.rip":{"source":"iana","extensions":["rip"]},"audio/vnd.rn-realaudio":{"compressible":false},"audio/vnd.sealedmedia.softseal.mpeg":{"source":"iana"},"audio/vnd.vmx.cvsd":{"source":"iana"},"audio/vnd.wave":{"compressible":false},"audio/vorbis":{"source":"iana","compressible":false},"audio/vorbis-config":{"source":"iana"},"audio/wav":{"compressible":false,"extensions":["wav"]},"audio/wave":{"compressible":false,"extensions":["wav"]},"audio/webm":{"source":"apache","compressible":false,"extensions":["weba"]},"audio/x-aac":{"source":"apache","compressible":false,"extensions":["aac"]},"audio/x-aiff":{"source":"apache","extensions":["aif","aiff","aifc"]},"audio/x-caf":{"source":"apache","compressible":false,"extensions":["caf"]},"audio/x-flac":{"source":"apache","extensions":["flac"]},"audio/x-m4a":{"source":"nginx","extensions":["m4a"]},"audio/x-matroska":{"source":"apache","extensions":["mka"]},"audio/x-mpegurl":{"source":"apache","extensions":["m3u"]},"audio/x-ms-wax":{"source":"apache","extensions":["wax"]},"audio/x-ms-wma":{"source":"apache","extensions":["wma"]},"audio/x-pn-realaudio":{"source":"apache","extensions":["ram","ra"]},"audio/x-pn-realaudio-plugin":{"source":"apache","extensions":["rmp"]},"audio/x-realaudio":{"source":"nginx","extensions":["ra"]},"audio/x-tta":{"source":"apache"},"audio/x-wav":{"source":"apache","extensions":["wav"]},"audio/xm":{"source":"apache","extensions":["xm"]},"chemical/x-cdx":{"source":"apache","extensions":["cdx"]},"chemical/x-cif":{"source":"apache","extensions":["cif"]},"chemical/x-cmdf":{"source":"apache","extensions":["cmdf"]},"chemical/x-cml":{"source":"apache","extensions":["cml"]},"chemical/x-csml":{"source":"apache","extensions":["csml"]},"chemical/x-pdb":{"source":"apache"},"chemical/x-xyz":{"source":"apache","extensions":["xyz"]},"font/collection":{"source":"iana","extensions":["ttc"]},"font/otf":{"source":"iana","compressible":true,"extensions":["otf"]},"font/sfnt":{"source":"iana"},"font/ttf":{"source":"iana","compressible":true,"extensions":["ttf"]},"font/woff":{"source":"iana","extensions":["woff"]},"font/woff2":{"source":"iana","extensions":["woff2"]},"image/aces":{"source":"iana","extensions":["exr"]},"image/apng":{"compressible":false,"extensions":["apng"]},"image/avci":{"source":"iana","extensions":["avci"]},"image/avcs":{"source":"iana","extensions":["avcs"]},"image/avif":{"source":"iana","compressible":false,"extensions":["avif"]},"image/bmp":{"source":"iana","compressible":true,"extensions":["bmp"]},"image/cgm":{"source":"iana","extensions":["cgm"]},"image/dicom-rle":{"source":"iana","extensions":["drle"]},"image/emf":{"source":"iana","extensions":["emf"]},"image/fits":{"source":"iana","extensions":["fits"]},"image/g3fax":{"source":"iana","extensions":["g3"]},"image/gif":{"source":"iana","compressible":false,"extensions":["gif"]},"image/heic":{"source":"iana","extensions":["heic"]},"image/heic-sequence":{"source":"iana","extensions":["heics"]},"image/heif":{"source":"iana","extensions":["heif"]},"image/heif-sequence":{"source":"iana","extensions":["heifs"]},"image/hej2k":{"source":"iana","extensions":["hej2"]},"image/hsj2":{"source":"iana","extensions":["hsj2"]},"image/ief":{"source":"iana","extensions":["ief"]},"image/jls":{"source":"iana","extensions":["jls"]},"image/jp2":{"source":"iana","compressible":false,"extensions":["jp2","jpg2"]},"image/jpeg":{"source":"iana","compressible":false,"extensions":["jpeg","jpg","jpe"]},"image/jph":{"source":"iana","extensions":["jph"]},"image/jphc":{"source":"iana","extensions":["jhc"]},"image/jpm":{"source":"iana","compressible":false,"extensions":["jpm"]},"image/jpx":{"source":"iana","compressible":false,"extensions":["jpx","jpf"]},"image/jxr":{"source":"iana","extensions":["jxr"]},"image/jxra":{"source":"iana","extensions":["jxra"]},"image/jxrs":{"source":"iana","extensions":["jxrs"]},"image/jxs":{"source":"iana","extensions":["jxs"]},"image/jxsc":{"source":"iana","extensions":["jxsc"]},"image/jxsi":{"source":"iana","extensions":["jxsi"]},"image/jxss":{"source":"iana","extensions":["jxss"]},"image/ktx":{"source":"iana","extensions":["ktx"]},"image/ktx2":{"source":"iana","extensions":["ktx2"]},"image/naplps":{"source":"iana"},"image/pjpeg":{"compressible":false},"image/png":{"source":"iana","compressible":false,"extensions":["png"]},"image/prs.btif":{"source":"iana","extensions":["btif"]},"image/prs.pti":{"source":"iana","extensions":["pti"]},"image/pwg-raster":{"source":"iana"},"image/sgi":{"source":"apache","extensions":["sgi"]},"image/svg+xml":{"source":"iana","compressible":true,"extensions":["svg","svgz"]},"image/t38":{"source":"iana","extensions":["t38"]},"image/tiff":{"source":"iana","compressible":false,"extensions":["tif","tiff"]},"image/tiff-fx":{"source":"iana","extensions":["tfx"]},"image/vnd.adobe.photoshop":{"source":"iana","compressible":true,"extensions":["psd"]},"image/vnd.airzip.accelerator.azv":{"source":"iana","extensions":["azv"]},"image/vnd.cns.inf2":{"source":"iana"},"image/vnd.dece.graphic":{"source":"iana","extensions":["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{"source":"iana","extensions":["djvu","djv"]},"image/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"image/vnd.dwg":{"source":"iana","extensions":["dwg"]},"image/vnd.dxf":{"source":"iana","extensions":["dxf"]},"image/vnd.fastbidsheet":{"source":"iana","extensions":["fbs"]},"image/vnd.fpx":{"source":"iana","extensions":["fpx"]},"image/vnd.fst":{"source":"iana","extensions":["fst"]},"image/vnd.fujixerox.edmics-mmr":{"source":"iana","extensions":["mmr"]},"image/vnd.fujixerox.edmics-rlc":{"source":"iana","extensions":["rlc"]},"image/vnd.globalgraphics.pgb":{"source":"iana"},"image/vnd.microsoft.icon":{"source":"iana","compressible":true,"extensions":["ico"]},"image/vnd.mix":{"source":"iana"},"image/vnd.mozilla.apng":{"source":"iana"},"image/vnd.ms-dds":{"compressible":true,"extensions":["dds"]},"image/vnd.ms-modi":{"source":"iana","extensions":["mdi"]},"image/vnd.ms-photo":{"source":"apache","extensions":["wdp"]},"image/vnd.net-fpx":{"source":"iana","extensions":["npx"]},"image/vnd.pco.b16":{"source":"iana","extensions":["b16"]},"image/vnd.radiance":{"source":"iana"},"image/vnd.sealed.png":{"source":"iana"},"image/vnd.sealedmedia.softseal.gif":{"source":"iana"},"image/vnd.sealedmedia.softseal.jpg":{"source":"iana"},"image/vnd.svf":{"source":"iana"},"image/vnd.tencent.tap":{"source":"iana","extensions":["tap"]},"image/vnd.valve.source.texture":{"source":"iana","extensions":["vtf"]},"image/vnd.wap.wbmp":{"source":"iana","extensions":["wbmp"]},"image/vnd.xiff":{"source":"iana","extensions":["xif"]},"image/vnd.zbrush.pcx":{"source":"iana","extensions":["pcx"]},"image/webp":{"source":"apache","extensions":["webp"]},"image/wmf":{"source":"iana","extensions":["wmf"]},"image/x-3ds":{"source":"apache","extensions":["3ds"]},"image/x-cmu-raster":{"source":"apache","extensions":["ras"]},"image/x-cmx":{"source":"apache","extensions":["cmx"]},"image/x-freehand":{"source":"apache","extensions":["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{"source":"apache","compressible":true,"extensions":["ico"]},"image/x-jng":{"source":"nginx","extensions":["jng"]},"image/x-mrsid-image":{"source":"apache","extensions":["sid"]},"image/x-ms-bmp":{"source":"nginx","compressible":true,"extensions":["bmp"]},"image/x-pcx":{"source":"apache","extensions":["pcx"]},"image/x-pict":{"source":"apache","extensions":["pic","pct"]},"image/x-portable-anymap":{"source":"apache","extensions":["pnm"]},"image/x-portable-bitmap":{"source":"apache","extensions":["pbm"]},"image/x-portable-graymap":{"source":"apache","extensions":["pgm"]},"image/x-portable-pixmap":{"source":"apache","extensions":["ppm"]},"image/x-rgb":{"source":"apache","extensions":["rgb"]},"image/x-tga":{"source":"apache","extensions":["tga"]},"image/x-xbitmap":{"source":"apache","extensions":["xbm"]},"image/x-xcf":{"compressible":false},"image/x-xpixmap":{"source":"apache","extensions":["xpm"]},"image/x-xwindowdump":{"source":"apache","extensions":["xwd"]},"message/cpim":{"source":"iana"},"message/delivery-status":{"source":"iana"},"message/disposition-notification":{"source":"iana","extensions":["disposition-notification"]},"message/external-body":{"source":"iana"},"message/feedback-report":{"source":"iana"},"message/global":{"source":"iana","extensions":["u8msg"]},"message/global-delivery-status":{"source":"iana","extensions":["u8dsn"]},"message/global-disposition-notification":{"source":"iana","extensions":["u8mdn"]},"message/global-headers":{"source":"iana","extensions":["u8hdr"]},"message/http":{"source":"iana","compressible":false},"message/imdn+xml":{"source":"iana","compressible":true},"message/news":{"source":"iana"},"message/partial":{"source":"iana","compressible":false},"message/rfc822":{"source":"iana","compressible":true,"extensions":["eml","mime"]},"message/s-http":{"source":"iana"},"message/sip":{"source":"iana"},"message/sipfrag":{"source":"iana"},"message/tracking-status":{"source":"iana"},"message/vnd.si.simp":{"source":"iana"},"message/vnd.wfa.wsc":{"source":"iana","extensions":["wsc"]},"model/3mf":{"source":"iana","extensions":["3mf"]},"model/e57":{"source":"iana"},"model/gltf+json":{"source":"iana","compressible":true,"extensions":["gltf"]},"model/gltf-binary":{"source":"iana","compressible":true,"extensions":["glb"]},"model/iges":{"source":"iana","compressible":false,"extensions":["igs","iges"]},"model/mesh":{"source":"iana","compressible":false,"extensions":["msh","mesh","silo"]},"model/mtl":{"source":"iana","extensions":["mtl"]},"model/obj":{"source":"iana","extensions":["obj"]},"model/step":{"source":"iana"},"model/step+xml":{"source":"iana","compressible":true,"extensions":["stpx"]},"model/step+zip":{"source":"iana","compressible":false,"extensions":["stpz"]},"model/step-xml+zip":{"source":"iana","compressible":false,"extensions":["stpxz"]},"model/stl":{"source":"iana","extensions":["stl"]},"model/vnd.collada+xml":{"source":"iana","compressible":true,"extensions":["dae"]},"model/vnd.dwf":{"source":"iana","extensions":["dwf"]},"model/vnd.flatland.3dml":{"source":"iana"},"model/vnd.gdl":{"source":"iana","extensions":["gdl"]},"model/vnd.gs-gdl":{"source":"apache"},"model/vnd.gs.gdl":{"source":"iana"},"model/vnd.gtw":{"source":"iana","extensions":["gtw"]},"model/vnd.moml+xml":{"source":"iana","compressible":true},"model/vnd.mts":{"source":"iana","extensions":["mts"]},"model/vnd.opengex":{"source":"iana","extensions":["ogex"]},"model/vnd.parasolid.transmit.binary":{"source":"iana","extensions":["x_b"]},"model/vnd.parasolid.transmit.text":{"source":"iana","extensions":["x_t"]},"model/vnd.pytha.pyox":{"source":"iana"},"model/vnd.rosette.annotated-data-model":{"source":"iana"},"model/vnd.sap.vds":{"source":"iana","extensions":["vds"]},"model/vnd.usdz+zip":{"source":"iana","compressible":false,"extensions":["usdz"]},"model/vnd.valve.source.compiled-map":{"source":"iana","extensions":["bsp"]},"model/vnd.vtu":{"source":"iana","extensions":["vtu"]},"model/vrml":{"source":"iana","compressible":false,"extensions":["wrl","vrml"]},"model/x3d+binary":{"source":"apache","compressible":false,"extensions":["x3db","x3dbz"]},"model/x3d+fastinfoset":{"source":"iana","extensions":["x3db"]},"model/x3d+vrml":{"source":"apache","compressible":false,"extensions":["x3dv","x3dvz"]},"model/x3d+xml":{"source":"iana","compressible":true,"extensions":["x3d","x3dz"]},"model/x3d-vrml":{"source":"iana","extensions":["x3dv"]},"multipart/alternative":{"source":"iana","compressible":false},"multipart/appledouble":{"source":"iana"},"multipart/byteranges":{"source":"iana"},"multipart/digest":{"source":"iana"},"multipart/encrypted":{"source":"iana","compressible":false},"multipart/form-data":{"source":"iana","compressible":false},"multipart/header-set":{"source":"iana"},"multipart/mixed":{"source":"iana"},"multipart/multilingual":{"source":"iana"},"multipart/parallel":{"source":"iana"},"multipart/related":{"source":"iana","compressible":false},"multipart/report":{"source":"iana"},"multipart/signed":{"source":"iana","compressible":false},"multipart/vnd.bint.med-plus":{"source":"iana"},"multipart/voice-message":{"source":"iana"},"multipart/x-mixed-replace":{"source":"iana"},"text/1d-interleaved-parityfec":{"source":"iana"},"text/cache-manifest":{"source":"iana","compressible":true,"extensions":["appcache","manifest"]},"text/calendar":{"source":"iana","extensions":["ics","ifb"]},"text/calender":{"compressible":true},"text/cmd":{"compressible":true},"text/coffeescript":{"extensions":["coffee","litcoffee"]},"text/cql":{"source":"iana"},"text/cql-expression":{"source":"iana"},"text/cql-identifier":{"source":"iana"},"text/css":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["css"]},"text/csv":{"source":"iana","compressible":true,"extensions":["csv"]},"text/csv-schema":{"source":"iana"},"text/directory":{"source":"iana"},"text/dns":{"source":"iana"},"text/ecmascript":{"source":"iana"},"text/encaprtp":{"source":"iana"},"text/enriched":{"source":"iana"},"text/fhirpath":{"source":"iana"},"text/flexfec":{"source":"iana"},"text/fwdred":{"source":"iana"},"text/gff3":{"source":"iana"},"text/grammar-ref-list":{"source":"iana"},"text/html":{"source":"iana","compressible":true,"extensions":["html","htm","shtml"]},"text/jade":{"extensions":["jade"]},"text/javascript":{"source":"iana","compressible":true},"text/jcr-cnd":{"source":"iana"},"text/jsx":{"compressible":true,"extensions":["jsx"]},"text/less":{"compressible":true,"extensions":["less"]},"text/markdown":{"source":"iana","compressible":true,"extensions":["markdown","md"]},"text/mathml":{"source":"nginx","extensions":["mml"]},"text/mdx":{"compressible":true,"extensions":["mdx"]},"text/mizar":{"source":"iana"},"text/n3":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["n3"]},"text/parameters":{"source":"iana","charset":"UTF-8"},"text/parityfec":{"source":"iana"},"text/plain":{"source":"iana","compressible":true,"extensions":["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{"source":"iana","charset":"UTF-8"},"text/prs.fallenstein.rst":{"source":"iana"},"text/prs.lines.tag":{"source":"iana","extensions":["dsc"]},"text/prs.prop.logic":{"source":"iana"},"text/raptorfec":{"source":"iana"},"text/red":{"source":"iana"},"text/rfc822-headers":{"source":"iana"},"text/richtext":{"source":"iana","compressible":true,"extensions":["rtx"]},"text/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"text/rtp-enc-aescm128":{"source":"iana"},"text/rtploopback":{"source":"iana"},"text/rtx":{"source":"iana"},"text/sgml":{"source":"iana","extensions":["sgml","sgm"]},"text/shaclc":{"source":"iana"},"text/shex":{"source":"iana","extensions":["shex"]},"text/slim":{"extensions":["slim","slm"]},"text/spdx":{"source":"iana","extensions":["spdx"]},"text/strings":{"source":"iana"},"text/stylus":{"extensions":["stylus","styl"]},"text/t140":{"source":"iana"},"text/tab-separated-values":{"source":"iana","compressible":true,"extensions":["tsv"]},"text/troff":{"source":"iana","extensions":["t","tr","roff","man","me","ms"]},"text/turtle":{"source":"iana","charset":"UTF-8","extensions":["ttl"]},"text/ulpfec":{"source":"iana"},"text/uri-list":{"source":"iana","compressible":true,"extensions":["uri","uris","urls"]},"text/vcard":{"source":"iana","compressible":true,"extensions":["vcard"]},"text/vnd.a":{"source":"iana"},"text/vnd.abc":{"source":"iana"},"text/vnd.ascii-art":{"source":"iana"},"text/vnd.curl":{"source":"iana","extensions":["curl"]},"text/vnd.curl.dcurl":{"source":"apache","extensions":["dcurl"]},"text/vnd.curl.mcurl":{"source":"apache","extensions":["mcurl"]},"text/vnd.curl.scurl":{"source":"apache","extensions":["scurl"]},"text/vnd.debian.copyright":{"source":"iana","charset":"UTF-8"},"text/vnd.dmclientscript":{"source":"iana"},"text/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"text/vnd.esmertec.theme-descriptor":{"source":"iana","charset":"UTF-8"},"text/vnd.familysearch.gedcom":{"source":"iana","extensions":["ged"]},"text/vnd.ficlab.flt":{"source":"iana"},"text/vnd.fly":{"source":"iana","extensions":["fly"]},"text/vnd.fmi.flexstor":{"source":"iana","extensions":["flx"]},"text/vnd.gml":{"source":"iana"},"text/vnd.graphviz":{"source":"iana","extensions":["gv"]},"text/vnd.hans":{"source":"iana"},"text/vnd.hgl":{"source":"iana"},"text/vnd.in3d.3dml":{"source":"iana","extensions":["3dml"]},"text/vnd.in3d.spot":{"source":"iana","extensions":["spot"]},"text/vnd.iptc.newsml":{"source":"iana"},"text/vnd.iptc.nitf":{"source":"iana"},"text/vnd.latex-z":{"source":"iana"},"text/vnd.motorola.reflex":{"source":"iana"},"text/vnd.ms-mediapackage":{"source":"iana"},"text/vnd.net2phone.commcenter.command":{"source":"iana"},"text/vnd.radisys.msml-basic-layout":{"source":"iana"},"text/vnd.senx.warpscript":{"source":"iana"},"text/vnd.si.uricatalogue":{"source":"iana"},"text/vnd.sosi":{"source":"iana"},"text/vnd.sun.j2me.app-descriptor":{"source":"iana","charset":"UTF-8","extensions":["jad"]},"text/vnd.trolltech.linguist":{"source":"iana","charset":"UTF-8"},"text/vnd.wap.si":{"source":"iana"},"text/vnd.wap.sl":{"source":"iana"},"text/vnd.wap.wml":{"source":"iana","extensions":["wml"]},"text/vnd.wap.wmlscript":{"source":"iana","extensions":["wmls"]},"text/vtt":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["vtt"]},"text/x-asm":{"source":"apache","extensions":["s","asm"]},"text/x-c":{"source":"apache","extensions":["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{"source":"nginx","extensions":["htc"]},"text/x-fortran":{"source":"apache","extensions":["f","for","f77","f90"]},"text/x-gwt-rpc":{"compressible":true},"text/x-handlebars-template":{"extensions":["hbs"]},"text/x-java-source":{"source":"apache","extensions":["java"]},"text/x-jquery-tmpl":{"compressible":true},"text/x-lua":{"extensions":["lua"]},"text/x-markdown":{"compressible":true,"extensions":["mkd"]},"text/x-nfo":{"source":"apache","extensions":["nfo"]},"text/x-opml":{"source":"apache","extensions":["opml"]},"text/x-org":{"compressible":true,"extensions":["org"]},"text/x-pascal":{"source":"apache","extensions":["p","pas"]},"text/x-processing":{"compressible":true,"extensions":["pde"]},"text/x-sass":{"extensions":["sass"]},"text/x-scss":{"extensions":["scss"]},"text/x-setext":{"source":"apache","extensions":["etx"]},"text/x-sfv":{"source":"apache","extensions":["sfv"]},"text/x-suse-ymp":{"compressible":true,"extensions":["ymp"]},"text/x-uuencode":{"source":"apache","extensions":["uu"]},"text/x-vcalendar":{"source":"apache","extensions":["vcs"]},"text/x-vcard":{"source":"apache","extensions":["vcf"]},"text/xml":{"source":"iana","compressible":true,"extensions":["xml"]},"text/xml-external-parsed-entity":{"source":"iana"},"text/yaml":{"compressible":true,"extensions":["yaml","yml"]},"video/1d-interleaved-parityfec":{"source":"iana"},"video/3gpp":{"source":"iana","extensions":["3gp","3gpp"]},"video/3gpp-tt":{"source":"iana"},"video/3gpp2":{"source":"iana","extensions":["3g2"]},"video/av1":{"source":"iana"},"video/bmpeg":{"source":"iana"},"video/bt656":{"source":"iana"},"video/celb":{"source":"iana"},"video/dv":{"source":"iana"},"video/encaprtp":{"source":"iana"},"video/ffv1":{"source":"iana"},"video/flexfec":{"source":"iana"},"video/h261":{"source":"iana","extensions":["h261"]},"video/h263":{"source":"iana","extensions":["h263"]},"video/h263-1998":{"source":"iana"},"video/h263-2000":{"source":"iana"},"video/h264":{"source":"iana","extensions":["h264"]},"video/h264-rcdo":{"source":"iana"},"video/h264-svc":{"source":"iana"},"video/h265":{"source":"iana"},"video/iso.segment":{"source":"iana","extensions":["m4s"]},"video/jpeg":{"source":"iana","extensions":["jpgv"]},"video/jpeg2000":{"source":"iana"},"video/jpm":{"source":"apache","extensions":["jpm","jpgm"]},"video/jxsv":{"source":"iana"},"video/mj2":{"source":"iana","extensions":["mj2","mjp2"]},"video/mp1s":{"source":"iana"},"video/mp2p":{"source":"iana"},"video/mp2t":{"source":"iana","extensions":["ts"]},"video/mp4":{"source":"iana","compressible":false,"extensions":["mp4","mp4v","mpg4"]},"video/mp4v-es":{"source":"iana"},"video/mpeg":{"source":"iana","compressible":false,"extensions":["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{"source":"iana"},"video/mpv":{"source":"iana"},"video/nv":{"source":"iana"},"video/ogg":{"source":"iana","compressible":false,"extensions":["ogv"]},"video/parityfec":{"source":"iana"},"video/pointer":{"source":"iana"},"video/quicktime":{"source":"iana","compressible":false,"extensions":["qt","mov"]},"video/raptorfec":{"source":"iana"},"video/raw":{"source":"iana"},"video/rtp-enc-aescm128":{"source":"iana"},"video/rtploopback":{"source":"iana"},"video/rtx":{"source":"iana"},"video/scip":{"source":"iana"},"video/smpte291":{"source":"iana"},"video/smpte292m":{"source":"iana"},"video/ulpfec":{"source":"iana"},"video/vc1":{"source":"iana"},"video/vc2":{"source":"iana"},"video/vnd.cctv":{"source":"iana"},"video/vnd.dece.hd":{"source":"iana","extensions":["uvh","uvvh"]},"video/vnd.dece.mobile":{"source":"iana","extensions":["uvm","uvvm"]},"video/vnd.dece.mp4":{"source":"iana"},"video/vnd.dece.pd":{"source":"iana","extensions":["uvp","uvvp"]},"video/vnd.dece.sd":{"source":"iana","extensions":["uvs","uvvs"]},"video/vnd.dece.video":{"source":"iana","extensions":["uvv","uvvv"]},"video/vnd.directv.mpeg":{"source":"iana"},"video/vnd.directv.mpeg-tts":{"source":"iana"},"video/vnd.dlna.mpeg-tts":{"source":"iana"},"video/vnd.dvb.file":{"source":"iana","extensions":["dvb"]},"video/vnd.fvt":{"source":"iana","extensions":["fvt"]},"video/vnd.hns.video":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.ttsavc":{"source":"iana"},"video/vnd.iptvforum.ttsmpeg2":{"source":"iana"},"video/vnd.motorola.video":{"source":"iana"},"video/vnd.motorola.videop":{"source":"iana"},"video/vnd.mpegurl":{"source":"iana","extensions":["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{"source":"iana","extensions":["pyv"]},"video/vnd.nokia.interleaved-multimedia":{"source":"iana"},"video/vnd.nokia.mp4vr":{"source":"iana"},"video/vnd.nokia.videovoip":{"source":"iana"},"video/vnd.objectvideo":{"source":"iana"},"video/vnd.radgamettools.bink":{"source":"iana"},"video/vnd.radgamettools.smacker":{"source":"iana"},"video/vnd.sealed.mpeg1":{"source":"iana"},"video/vnd.sealed.mpeg4":{"source":"iana"},"video/vnd.sealed.swf":{"source":"iana"},"video/vnd.sealedmedia.softseal.mov":{"source":"iana"},"video/vnd.uvvu.mp4":{"source":"iana","extensions":["uvu","uvvu"]},"video/vnd.vivo":{"source":"iana","extensions":["viv"]},"video/vnd.youtube.yt":{"source":"iana"},"video/vp8":{"source":"iana"},"video/vp9":{"source":"iana"},"video/webm":{"source":"apache","compressible":false,"extensions":["webm"]},"video/x-f4v":{"source":"apache","extensions":["f4v"]},"video/x-fli":{"source":"apache","extensions":["fli"]},"video/x-flv":{"source":"apache","compressible":false,"extensions":["flv"]},"video/x-m4v":{"source":"apache","extensions":["m4v"]},"video/x-matroska":{"source":"apache","compressible":false,"extensions":["mkv","mk3d","mks"]},"video/x-mng":{"source":"apache","extensions":["mng"]},"video/x-ms-asf":{"source":"apache","extensions":["asf","asx"]},"video/x-ms-vob":{"source":"apache","extensions":["vob"]},"video/x-ms-wm":{"source":"apache","extensions":["wm"]},"video/x-ms-wmv":{"source":"apache","compressible":false,"extensions":["wmv"]},"video/x-ms-wmx":{"source":"apache","extensions":["wmx"]},"video/x-ms-wvx":{"source":"apache","extensions":["wvx"]},"video/x-msvideo":{"source":"apache","extensions":["avi"]},"video/x-sgi-movie":{"source":"apache","extensions":["movie"]},"video/x-smv":{"source":"apache","extensions":["smv"]},"x-conference/x-cooltalk":{"source":"apache","extensions":["ice"]},"x-shader/x-fragment":{"compressible":true},"x-shader/x-vertex":{"compressible":true}}'); + var self = this; + strings.forEach(function (s) { + self.writeString(s); + }); +}; -/***/ }), +// This is really to solve DER cases, but whatever for now +Writer.prototype.writeOID = function (s, tag) { + if (typeof (s) !== 'string') + throw new TypeError('argument must be a string'); + if (typeof (tag) !== 'number') + tag = ASN1.OID; + + if (!/^([0-9]+\.){3,}[0-9]+$/.test(s)) + throw new Error('argument is not a valid OID string'); + + function encodeOctet(bytes, octet) { + if (octet < 128) { + bytes.push(octet); + } else if (octet < 16384) { + bytes.push((octet >>> 7) | 0x80); + bytes.push(octet & 0x7F); + } else if (octet < 2097152) { + bytes.push((octet >>> 14) | 0x80); + bytes.push(((octet >>> 7) | 0x80) & 0xFF); + bytes.push(octet & 0x7F); + } else if (octet < 268435456) { + bytes.push((octet >>> 21) | 0x80); + bytes.push(((octet >>> 14) | 0x80) & 0xFF); + bytes.push(((octet >>> 7) | 0x80) & 0xFF); + bytes.push(octet & 0x7F); + } else { + bytes.push(((octet >>> 28) | 0x80) & 0xFF); + bytes.push(((octet >>> 21) | 0x80) & 0xFF); + bytes.push(((octet >>> 14) | 0x80) & 0xFF); + bytes.push(((octet >>> 7) | 0x80) & 0xFF); + bytes.push(octet & 0x7F); + } + } -/***/ 2020: -/***/ ((module) => { + var tmp = s.split('.'); + var bytes = []; + bytes.push(parseInt(tmp[0], 10) * 40 + parseInt(tmp[1], 10)); + tmp.slice(2).forEach(function (b) { + encodeOctet(bytes, parseInt(b, 10)); + }); -"use strict"; -module.exports = JSON.parse('[[[0,44],"disallowed_STD3_valid"],[[45,46],"valid"],[[47,47],"disallowed_STD3_valid"],[[48,57],"valid"],[[58,64],"disallowed_STD3_valid"],[[65,65],"mapped",[97]],[[66,66],"mapped",[98]],[[67,67],"mapped",[99]],[[68,68],"mapped",[100]],[[69,69],"mapped",[101]],[[70,70],"mapped",[102]],[[71,71],"mapped",[103]],[[72,72],"mapped",[104]],[[73,73],"mapped",[105]],[[74,74],"mapped",[106]],[[75,75],"mapped",[107]],[[76,76],"mapped",[108]],[[77,77],"mapped",[109]],[[78,78],"mapped",[110]],[[79,79],"mapped",[111]],[[80,80],"mapped",[112]],[[81,81],"mapped",[113]],[[82,82],"mapped",[114]],[[83,83],"mapped",[115]],[[84,84],"mapped",[116]],[[85,85],"mapped",[117]],[[86,86],"mapped",[118]],[[87,87],"mapped",[119]],[[88,88],"mapped",[120]],[[89,89],"mapped",[121]],[[90,90],"mapped",[122]],[[91,96],"disallowed_STD3_valid"],[[97,122],"valid"],[[123,127],"disallowed_STD3_valid"],[[128,159],"disallowed"],[[160,160],"disallowed_STD3_mapped",[32]],[[161,167],"valid",[],"NV8"],[[168,168],"disallowed_STD3_mapped",[32,776]],[[169,169],"valid",[],"NV8"],[[170,170],"mapped",[97]],[[171,172],"valid",[],"NV8"],[[173,173],"ignored"],[[174,174],"valid",[],"NV8"],[[175,175],"disallowed_STD3_mapped",[32,772]],[[176,177],"valid",[],"NV8"],[[178,178],"mapped",[50]],[[179,179],"mapped",[51]],[[180,180],"disallowed_STD3_mapped",[32,769]],[[181,181],"mapped",[956]],[[182,182],"valid",[],"NV8"],[[183,183],"valid"],[[184,184],"disallowed_STD3_mapped",[32,807]],[[185,185],"mapped",[49]],[[186,186],"mapped",[111]],[[187,187],"valid",[],"NV8"],[[188,188],"mapped",[49,8260,52]],[[189,189],"mapped",[49,8260,50]],[[190,190],"mapped",[51,8260,52]],[[191,191],"valid",[],"NV8"],[[192,192],"mapped",[224]],[[193,193],"mapped",[225]],[[194,194],"mapped",[226]],[[195,195],"mapped",[227]],[[196,196],"mapped",[228]],[[197,197],"mapped",[229]],[[198,198],"mapped",[230]],[[199,199],"mapped",[231]],[[200,200],"mapped",[232]],[[201,201],"mapped",[233]],[[202,202],"mapped",[234]],[[203,203],"mapped",[235]],[[204,204],"mapped",[236]],[[205,205],"mapped",[237]],[[206,206],"mapped",[238]],[[207,207],"mapped",[239]],[[208,208],"mapped",[240]],[[209,209],"mapped",[241]],[[210,210],"mapped",[242]],[[211,211],"mapped",[243]],[[212,212],"mapped",[244]],[[213,213],"mapped",[245]],[[214,214],"mapped",[246]],[[215,215],"valid",[],"NV8"],[[216,216],"mapped",[248]],[[217,217],"mapped",[249]],[[218,218],"mapped",[250]],[[219,219],"mapped",[251]],[[220,220],"mapped",[252]],[[221,221],"mapped",[253]],[[222,222],"mapped",[254]],[[223,223],"deviation",[115,115]],[[224,246],"valid"],[[247,247],"valid",[],"NV8"],[[248,255],"valid"],[[256,256],"mapped",[257]],[[257,257],"valid"],[[258,258],"mapped",[259]],[[259,259],"valid"],[[260,260],"mapped",[261]],[[261,261],"valid"],[[262,262],"mapped",[263]],[[263,263],"valid"],[[264,264],"mapped",[265]],[[265,265],"valid"],[[266,266],"mapped",[267]],[[267,267],"valid"],[[268,268],"mapped",[269]],[[269,269],"valid"],[[270,270],"mapped",[271]],[[271,271],"valid"],[[272,272],"mapped",[273]],[[273,273],"valid"],[[274,274],"mapped",[275]],[[275,275],"valid"],[[276,276],"mapped",[277]],[[277,277],"valid"],[[278,278],"mapped",[279]],[[279,279],"valid"],[[280,280],"mapped",[281]],[[281,281],"valid"],[[282,282],"mapped",[283]],[[283,283],"valid"],[[284,284],"mapped",[285]],[[285,285],"valid"],[[286,286],"mapped",[287]],[[287,287],"valid"],[[288,288],"mapped",[289]],[[289,289],"valid"],[[290,290],"mapped",[291]],[[291,291],"valid"],[[292,292],"mapped",[293]],[[293,293],"valid"],[[294,294],"mapped",[295]],[[295,295],"valid"],[[296,296],"mapped",[297]],[[297,297],"valid"],[[298,298],"mapped",[299]],[[299,299],"valid"],[[300,300],"mapped",[301]],[[301,301],"valid"],[[302,302],"mapped",[303]],[[303,303],"valid"],[[304,304],"mapped",[105,775]],[[305,305],"valid"],[[306,307],"mapped",[105,106]],[[308,308],"mapped",[309]],[[309,309],"valid"],[[310,310],"mapped",[311]],[[311,312],"valid"],[[313,313],"mapped",[314]],[[314,314],"valid"],[[315,315],"mapped",[316]],[[316,316],"valid"],[[317,317],"mapped",[318]],[[318,318],"valid"],[[319,320],"mapped",[108,183]],[[321,321],"mapped",[322]],[[322,322],"valid"],[[323,323],"mapped",[324]],[[324,324],"valid"],[[325,325],"mapped",[326]],[[326,326],"valid"],[[327,327],"mapped",[328]],[[328,328],"valid"],[[329,329],"mapped",[700,110]],[[330,330],"mapped",[331]],[[331,331],"valid"],[[332,332],"mapped",[333]],[[333,333],"valid"],[[334,334],"mapped",[335]],[[335,335],"valid"],[[336,336],"mapped",[337]],[[337,337],"valid"],[[338,338],"mapped",[339]],[[339,339],"valid"],[[340,340],"mapped",[341]],[[341,341],"valid"],[[342,342],"mapped",[343]],[[343,343],"valid"],[[344,344],"mapped",[345]],[[345,345],"valid"],[[346,346],"mapped",[347]],[[347,347],"valid"],[[348,348],"mapped",[349]],[[349,349],"valid"],[[350,350],"mapped",[351]],[[351,351],"valid"],[[352,352],"mapped",[353]],[[353,353],"valid"],[[354,354],"mapped",[355]],[[355,355],"valid"],[[356,356],"mapped",[357]],[[357,357],"valid"],[[358,358],"mapped",[359]],[[359,359],"valid"],[[360,360],"mapped",[361]],[[361,361],"valid"],[[362,362],"mapped",[363]],[[363,363],"valid"],[[364,364],"mapped",[365]],[[365,365],"valid"],[[366,366],"mapped",[367]],[[367,367],"valid"],[[368,368],"mapped",[369]],[[369,369],"valid"],[[370,370],"mapped",[371]],[[371,371],"valid"],[[372,372],"mapped",[373]],[[373,373],"valid"],[[374,374],"mapped",[375]],[[375,375],"valid"],[[376,376],"mapped",[255]],[[377,377],"mapped",[378]],[[378,378],"valid"],[[379,379],"mapped",[380]],[[380,380],"valid"],[[381,381],"mapped",[382]],[[382,382],"valid"],[[383,383],"mapped",[115]],[[384,384],"valid"],[[385,385],"mapped",[595]],[[386,386],"mapped",[387]],[[387,387],"valid"],[[388,388],"mapped",[389]],[[389,389],"valid"],[[390,390],"mapped",[596]],[[391,391],"mapped",[392]],[[392,392],"valid"],[[393,393],"mapped",[598]],[[394,394],"mapped",[599]],[[395,395],"mapped",[396]],[[396,397],"valid"],[[398,398],"mapped",[477]],[[399,399],"mapped",[601]],[[400,400],"mapped",[603]],[[401,401],"mapped",[402]],[[402,402],"valid"],[[403,403],"mapped",[608]],[[404,404],"mapped",[611]],[[405,405],"valid"],[[406,406],"mapped",[617]],[[407,407],"mapped",[616]],[[408,408],"mapped",[409]],[[409,411],"valid"],[[412,412],"mapped",[623]],[[413,413],"mapped",[626]],[[414,414],"valid"],[[415,415],"mapped",[629]],[[416,416],"mapped",[417]],[[417,417],"valid"],[[418,418],"mapped",[419]],[[419,419],"valid"],[[420,420],"mapped",[421]],[[421,421],"valid"],[[422,422],"mapped",[640]],[[423,423],"mapped",[424]],[[424,424],"valid"],[[425,425],"mapped",[643]],[[426,427],"valid"],[[428,428],"mapped",[429]],[[429,429],"valid"],[[430,430],"mapped",[648]],[[431,431],"mapped",[432]],[[432,432],"valid"],[[433,433],"mapped",[650]],[[434,434],"mapped",[651]],[[435,435],"mapped",[436]],[[436,436],"valid"],[[437,437],"mapped",[438]],[[438,438],"valid"],[[439,439],"mapped",[658]],[[440,440],"mapped",[441]],[[441,443],"valid"],[[444,444],"mapped",[445]],[[445,451],"valid"],[[452,454],"mapped",[100,382]],[[455,457],"mapped",[108,106]],[[458,460],"mapped",[110,106]],[[461,461],"mapped",[462]],[[462,462],"valid"],[[463,463],"mapped",[464]],[[464,464],"valid"],[[465,465],"mapped",[466]],[[466,466],"valid"],[[467,467],"mapped",[468]],[[468,468],"valid"],[[469,469],"mapped",[470]],[[470,470],"valid"],[[471,471],"mapped",[472]],[[472,472],"valid"],[[473,473],"mapped",[474]],[[474,474],"valid"],[[475,475],"mapped",[476]],[[476,477],"valid"],[[478,478],"mapped",[479]],[[479,479],"valid"],[[480,480],"mapped",[481]],[[481,481],"valid"],[[482,482],"mapped",[483]],[[483,483],"valid"],[[484,484],"mapped",[485]],[[485,485],"valid"],[[486,486],"mapped",[487]],[[487,487],"valid"],[[488,488],"mapped",[489]],[[489,489],"valid"],[[490,490],"mapped",[491]],[[491,491],"valid"],[[492,492],"mapped",[493]],[[493,493],"valid"],[[494,494],"mapped",[495]],[[495,496],"valid"],[[497,499],"mapped",[100,122]],[[500,500],"mapped",[501]],[[501,501],"valid"],[[502,502],"mapped",[405]],[[503,503],"mapped",[447]],[[504,504],"mapped",[505]],[[505,505],"valid"],[[506,506],"mapped",[507]],[[507,507],"valid"],[[508,508],"mapped",[509]],[[509,509],"valid"],[[510,510],"mapped",[511]],[[511,511],"valid"],[[512,512],"mapped",[513]],[[513,513],"valid"],[[514,514],"mapped",[515]],[[515,515],"valid"],[[516,516],"mapped",[517]],[[517,517],"valid"],[[518,518],"mapped",[519]],[[519,519],"valid"],[[520,520],"mapped",[521]],[[521,521],"valid"],[[522,522],"mapped",[523]],[[523,523],"valid"],[[524,524],"mapped",[525]],[[525,525],"valid"],[[526,526],"mapped",[527]],[[527,527],"valid"],[[528,528],"mapped",[529]],[[529,529],"valid"],[[530,530],"mapped",[531]],[[531,531],"valid"],[[532,532],"mapped",[533]],[[533,533],"valid"],[[534,534],"mapped",[535]],[[535,535],"valid"],[[536,536],"mapped",[537]],[[537,537],"valid"],[[538,538],"mapped",[539]],[[539,539],"valid"],[[540,540],"mapped",[541]],[[541,541],"valid"],[[542,542],"mapped",[543]],[[543,543],"valid"],[[544,544],"mapped",[414]],[[545,545],"valid"],[[546,546],"mapped",[547]],[[547,547],"valid"],[[548,548],"mapped",[549]],[[549,549],"valid"],[[550,550],"mapped",[551]],[[551,551],"valid"],[[552,552],"mapped",[553]],[[553,553],"valid"],[[554,554],"mapped",[555]],[[555,555],"valid"],[[556,556],"mapped",[557]],[[557,557],"valid"],[[558,558],"mapped",[559]],[[559,559],"valid"],[[560,560],"mapped",[561]],[[561,561],"valid"],[[562,562],"mapped",[563]],[[563,563],"valid"],[[564,566],"valid"],[[567,569],"valid"],[[570,570],"mapped",[11365]],[[571,571],"mapped",[572]],[[572,572],"valid"],[[573,573],"mapped",[410]],[[574,574],"mapped",[11366]],[[575,576],"valid"],[[577,577],"mapped",[578]],[[578,578],"valid"],[[579,579],"mapped",[384]],[[580,580],"mapped",[649]],[[581,581],"mapped",[652]],[[582,582],"mapped",[583]],[[583,583],"valid"],[[584,584],"mapped",[585]],[[585,585],"valid"],[[586,586],"mapped",[587]],[[587,587],"valid"],[[588,588],"mapped",[589]],[[589,589],"valid"],[[590,590],"mapped",[591]],[[591,591],"valid"],[[592,680],"valid"],[[681,685],"valid"],[[686,687],"valid"],[[688,688],"mapped",[104]],[[689,689],"mapped",[614]],[[690,690],"mapped",[106]],[[691,691],"mapped",[114]],[[692,692],"mapped",[633]],[[693,693],"mapped",[635]],[[694,694],"mapped",[641]],[[695,695],"mapped",[119]],[[696,696],"mapped",[121]],[[697,705],"valid"],[[706,709],"valid",[],"NV8"],[[710,721],"valid"],[[722,727],"valid",[],"NV8"],[[728,728],"disallowed_STD3_mapped",[32,774]],[[729,729],"disallowed_STD3_mapped",[32,775]],[[730,730],"disallowed_STD3_mapped",[32,778]],[[731,731],"disallowed_STD3_mapped",[32,808]],[[732,732],"disallowed_STD3_mapped",[32,771]],[[733,733],"disallowed_STD3_mapped",[32,779]],[[734,734],"valid",[],"NV8"],[[735,735],"valid",[],"NV8"],[[736,736],"mapped",[611]],[[737,737],"mapped",[108]],[[738,738],"mapped",[115]],[[739,739],"mapped",[120]],[[740,740],"mapped",[661]],[[741,745],"valid",[],"NV8"],[[746,747],"valid",[],"NV8"],[[748,748],"valid"],[[749,749],"valid",[],"NV8"],[[750,750],"valid"],[[751,767],"valid",[],"NV8"],[[768,831],"valid"],[[832,832],"mapped",[768]],[[833,833],"mapped",[769]],[[834,834],"valid"],[[835,835],"mapped",[787]],[[836,836],"mapped",[776,769]],[[837,837],"mapped",[953]],[[838,846],"valid"],[[847,847],"ignored"],[[848,855],"valid"],[[856,860],"valid"],[[861,863],"valid"],[[864,865],"valid"],[[866,866],"valid"],[[867,879],"valid"],[[880,880],"mapped",[881]],[[881,881],"valid"],[[882,882],"mapped",[883]],[[883,883],"valid"],[[884,884],"mapped",[697]],[[885,885],"valid"],[[886,886],"mapped",[887]],[[887,887],"valid"],[[888,889],"disallowed"],[[890,890],"disallowed_STD3_mapped",[32,953]],[[891,893],"valid"],[[894,894],"disallowed_STD3_mapped",[59]],[[895,895],"mapped",[1011]],[[896,899],"disallowed"],[[900,900],"disallowed_STD3_mapped",[32,769]],[[901,901],"disallowed_STD3_mapped",[32,776,769]],[[902,902],"mapped",[940]],[[903,903],"mapped",[183]],[[904,904],"mapped",[941]],[[905,905],"mapped",[942]],[[906,906],"mapped",[943]],[[907,907],"disallowed"],[[908,908],"mapped",[972]],[[909,909],"disallowed"],[[910,910],"mapped",[973]],[[911,911],"mapped",[974]],[[912,912],"valid"],[[913,913],"mapped",[945]],[[914,914],"mapped",[946]],[[915,915],"mapped",[947]],[[916,916],"mapped",[948]],[[917,917],"mapped",[949]],[[918,918],"mapped",[950]],[[919,919],"mapped",[951]],[[920,920],"mapped",[952]],[[921,921],"mapped",[953]],[[922,922],"mapped",[954]],[[923,923],"mapped",[955]],[[924,924],"mapped",[956]],[[925,925],"mapped",[957]],[[926,926],"mapped",[958]],[[927,927],"mapped",[959]],[[928,928],"mapped",[960]],[[929,929],"mapped",[961]],[[930,930],"disallowed"],[[931,931],"mapped",[963]],[[932,932],"mapped",[964]],[[933,933],"mapped",[965]],[[934,934],"mapped",[966]],[[935,935],"mapped",[967]],[[936,936],"mapped",[968]],[[937,937],"mapped",[969]],[[938,938],"mapped",[970]],[[939,939],"mapped",[971]],[[940,961],"valid"],[[962,962],"deviation",[963]],[[963,974],"valid"],[[975,975],"mapped",[983]],[[976,976],"mapped",[946]],[[977,977],"mapped",[952]],[[978,978],"mapped",[965]],[[979,979],"mapped",[973]],[[980,980],"mapped",[971]],[[981,981],"mapped",[966]],[[982,982],"mapped",[960]],[[983,983],"valid"],[[984,984],"mapped",[985]],[[985,985],"valid"],[[986,986],"mapped",[987]],[[987,987],"valid"],[[988,988],"mapped",[989]],[[989,989],"valid"],[[990,990],"mapped",[991]],[[991,991],"valid"],[[992,992],"mapped",[993]],[[993,993],"valid"],[[994,994],"mapped",[995]],[[995,995],"valid"],[[996,996],"mapped",[997]],[[997,997],"valid"],[[998,998],"mapped",[999]],[[999,999],"valid"],[[1000,1000],"mapped",[1001]],[[1001,1001],"valid"],[[1002,1002],"mapped",[1003]],[[1003,1003],"valid"],[[1004,1004],"mapped",[1005]],[[1005,1005],"valid"],[[1006,1006],"mapped",[1007]],[[1007,1007],"valid"],[[1008,1008],"mapped",[954]],[[1009,1009],"mapped",[961]],[[1010,1010],"mapped",[963]],[[1011,1011],"valid"],[[1012,1012],"mapped",[952]],[[1013,1013],"mapped",[949]],[[1014,1014],"valid",[],"NV8"],[[1015,1015],"mapped",[1016]],[[1016,1016],"valid"],[[1017,1017],"mapped",[963]],[[1018,1018],"mapped",[1019]],[[1019,1019],"valid"],[[1020,1020],"valid"],[[1021,1021],"mapped",[891]],[[1022,1022],"mapped",[892]],[[1023,1023],"mapped",[893]],[[1024,1024],"mapped",[1104]],[[1025,1025],"mapped",[1105]],[[1026,1026],"mapped",[1106]],[[1027,1027],"mapped",[1107]],[[1028,1028],"mapped",[1108]],[[1029,1029],"mapped",[1109]],[[1030,1030],"mapped",[1110]],[[1031,1031],"mapped",[1111]],[[1032,1032],"mapped",[1112]],[[1033,1033],"mapped",[1113]],[[1034,1034],"mapped",[1114]],[[1035,1035],"mapped",[1115]],[[1036,1036],"mapped",[1116]],[[1037,1037],"mapped",[1117]],[[1038,1038],"mapped",[1118]],[[1039,1039],"mapped",[1119]],[[1040,1040],"mapped",[1072]],[[1041,1041],"mapped",[1073]],[[1042,1042],"mapped",[1074]],[[1043,1043],"mapped",[1075]],[[1044,1044],"mapped",[1076]],[[1045,1045],"mapped",[1077]],[[1046,1046],"mapped",[1078]],[[1047,1047],"mapped",[1079]],[[1048,1048],"mapped",[1080]],[[1049,1049],"mapped",[1081]],[[1050,1050],"mapped",[1082]],[[1051,1051],"mapped",[1083]],[[1052,1052],"mapped",[1084]],[[1053,1053],"mapped",[1085]],[[1054,1054],"mapped",[1086]],[[1055,1055],"mapped",[1087]],[[1056,1056],"mapped",[1088]],[[1057,1057],"mapped",[1089]],[[1058,1058],"mapped",[1090]],[[1059,1059],"mapped",[1091]],[[1060,1060],"mapped",[1092]],[[1061,1061],"mapped",[1093]],[[1062,1062],"mapped",[1094]],[[1063,1063],"mapped",[1095]],[[1064,1064],"mapped",[1096]],[[1065,1065],"mapped",[1097]],[[1066,1066],"mapped",[1098]],[[1067,1067],"mapped",[1099]],[[1068,1068],"mapped",[1100]],[[1069,1069],"mapped",[1101]],[[1070,1070],"mapped",[1102]],[[1071,1071],"mapped",[1103]],[[1072,1103],"valid"],[[1104,1104],"valid"],[[1105,1116],"valid"],[[1117,1117],"valid"],[[1118,1119],"valid"],[[1120,1120],"mapped",[1121]],[[1121,1121],"valid"],[[1122,1122],"mapped",[1123]],[[1123,1123],"valid"],[[1124,1124],"mapped",[1125]],[[1125,1125],"valid"],[[1126,1126],"mapped",[1127]],[[1127,1127],"valid"],[[1128,1128],"mapped",[1129]],[[1129,1129],"valid"],[[1130,1130],"mapped",[1131]],[[1131,1131],"valid"],[[1132,1132],"mapped",[1133]],[[1133,1133],"valid"],[[1134,1134],"mapped",[1135]],[[1135,1135],"valid"],[[1136,1136],"mapped",[1137]],[[1137,1137],"valid"],[[1138,1138],"mapped",[1139]],[[1139,1139],"valid"],[[1140,1140],"mapped",[1141]],[[1141,1141],"valid"],[[1142,1142],"mapped",[1143]],[[1143,1143],"valid"],[[1144,1144],"mapped",[1145]],[[1145,1145],"valid"],[[1146,1146],"mapped",[1147]],[[1147,1147],"valid"],[[1148,1148],"mapped",[1149]],[[1149,1149],"valid"],[[1150,1150],"mapped",[1151]],[[1151,1151],"valid"],[[1152,1152],"mapped",[1153]],[[1153,1153],"valid"],[[1154,1154],"valid",[],"NV8"],[[1155,1158],"valid"],[[1159,1159],"valid"],[[1160,1161],"valid",[],"NV8"],[[1162,1162],"mapped",[1163]],[[1163,1163],"valid"],[[1164,1164],"mapped",[1165]],[[1165,1165],"valid"],[[1166,1166],"mapped",[1167]],[[1167,1167],"valid"],[[1168,1168],"mapped",[1169]],[[1169,1169],"valid"],[[1170,1170],"mapped",[1171]],[[1171,1171],"valid"],[[1172,1172],"mapped",[1173]],[[1173,1173],"valid"],[[1174,1174],"mapped",[1175]],[[1175,1175],"valid"],[[1176,1176],"mapped",[1177]],[[1177,1177],"valid"],[[1178,1178],"mapped",[1179]],[[1179,1179],"valid"],[[1180,1180],"mapped",[1181]],[[1181,1181],"valid"],[[1182,1182],"mapped",[1183]],[[1183,1183],"valid"],[[1184,1184],"mapped",[1185]],[[1185,1185],"valid"],[[1186,1186],"mapped",[1187]],[[1187,1187],"valid"],[[1188,1188],"mapped",[1189]],[[1189,1189],"valid"],[[1190,1190],"mapped",[1191]],[[1191,1191],"valid"],[[1192,1192],"mapped",[1193]],[[1193,1193],"valid"],[[1194,1194],"mapped",[1195]],[[1195,1195],"valid"],[[1196,1196],"mapped",[1197]],[[1197,1197],"valid"],[[1198,1198],"mapped",[1199]],[[1199,1199],"valid"],[[1200,1200],"mapped",[1201]],[[1201,1201],"valid"],[[1202,1202],"mapped",[1203]],[[1203,1203],"valid"],[[1204,1204],"mapped",[1205]],[[1205,1205],"valid"],[[1206,1206],"mapped",[1207]],[[1207,1207],"valid"],[[1208,1208],"mapped",[1209]],[[1209,1209],"valid"],[[1210,1210],"mapped",[1211]],[[1211,1211],"valid"],[[1212,1212],"mapped",[1213]],[[1213,1213],"valid"],[[1214,1214],"mapped",[1215]],[[1215,1215],"valid"],[[1216,1216],"disallowed"],[[1217,1217],"mapped",[1218]],[[1218,1218],"valid"],[[1219,1219],"mapped",[1220]],[[1220,1220],"valid"],[[1221,1221],"mapped",[1222]],[[1222,1222],"valid"],[[1223,1223],"mapped",[1224]],[[1224,1224],"valid"],[[1225,1225],"mapped",[1226]],[[1226,1226],"valid"],[[1227,1227],"mapped",[1228]],[[1228,1228],"valid"],[[1229,1229],"mapped",[1230]],[[1230,1230],"valid"],[[1231,1231],"valid"],[[1232,1232],"mapped",[1233]],[[1233,1233],"valid"],[[1234,1234],"mapped",[1235]],[[1235,1235],"valid"],[[1236,1236],"mapped",[1237]],[[1237,1237],"valid"],[[1238,1238],"mapped",[1239]],[[1239,1239],"valid"],[[1240,1240],"mapped",[1241]],[[1241,1241],"valid"],[[1242,1242],"mapped",[1243]],[[1243,1243],"valid"],[[1244,1244],"mapped",[1245]],[[1245,1245],"valid"],[[1246,1246],"mapped",[1247]],[[1247,1247],"valid"],[[1248,1248],"mapped",[1249]],[[1249,1249],"valid"],[[1250,1250],"mapped",[1251]],[[1251,1251],"valid"],[[1252,1252],"mapped",[1253]],[[1253,1253],"valid"],[[1254,1254],"mapped",[1255]],[[1255,1255],"valid"],[[1256,1256],"mapped",[1257]],[[1257,1257],"valid"],[[1258,1258],"mapped",[1259]],[[1259,1259],"valid"],[[1260,1260],"mapped",[1261]],[[1261,1261],"valid"],[[1262,1262],"mapped",[1263]],[[1263,1263],"valid"],[[1264,1264],"mapped",[1265]],[[1265,1265],"valid"],[[1266,1266],"mapped",[1267]],[[1267,1267],"valid"],[[1268,1268],"mapped",[1269]],[[1269,1269],"valid"],[[1270,1270],"mapped",[1271]],[[1271,1271],"valid"],[[1272,1272],"mapped",[1273]],[[1273,1273],"valid"],[[1274,1274],"mapped",[1275]],[[1275,1275],"valid"],[[1276,1276],"mapped",[1277]],[[1277,1277],"valid"],[[1278,1278],"mapped",[1279]],[[1279,1279],"valid"],[[1280,1280],"mapped",[1281]],[[1281,1281],"valid"],[[1282,1282],"mapped",[1283]],[[1283,1283],"valid"],[[1284,1284],"mapped",[1285]],[[1285,1285],"valid"],[[1286,1286],"mapped",[1287]],[[1287,1287],"valid"],[[1288,1288],"mapped",[1289]],[[1289,1289],"valid"],[[1290,1290],"mapped",[1291]],[[1291,1291],"valid"],[[1292,1292],"mapped",[1293]],[[1293,1293],"valid"],[[1294,1294],"mapped",[1295]],[[1295,1295],"valid"],[[1296,1296],"mapped",[1297]],[[1297,1297],"valid"],[[1298,1298],"mapped",[1299]],[[1299,1299],"valid"],[[1300,1300],"mapped",[1301]],[[1301,1301],"valid"],[[1302,1302],"mapped",[1303]],[[1303,1303],"valid"],[[1304,1304],"mapped",[1305]],[[1305,1305],"valid"],[[1306,1306],"mapped",[1307]],[[1307,1307],"valid"],[[1308,1308],"mapped",[1309]],[[1309,1309],"valid"],[[1310,1310],"mapped",[1311]],[[1311,1311],"valid"],[[1312,1312],"mapped",[1313]],[[1313,1313],"valid"],[[1314,1314],"mapped",[1315]],[[1315,1315],"valid"],[[1316,1316],"mapped",[1317]],[[1317,1317],"valid"],[[1318,1318],"mapped",[1319]],[[1319,1319],"valid"],[[1320,1320],"mapped",[1321]],[[1321,1321],"valid"],[[1322,1322],"mapped",[1323]],[[1323,1323],"valid"],[[1324,1324],"mapped",[1325]],[[1325,1325],"valid"],[[1326,1326],"mapped",[1327]],[[1327,1327],"valid"],[[1328,1328],"disallowed"],[[1329,1329],"mapped",[1377]],[[1330,1330],"mapped",[1378]],[[1331,1331],"mapped",[1379]],[[1332,1332],"mapped",[1380]],[[1333,1333],"mapped",[1381]],[[1334,1334],"mapped",[1382]],[[1335,1335],"mapped",[1383]],[[1336,1336],"mapped",[1384]],[[1337,1337],"mapped",[1385]],[[1338,1338],"mapped",[1386]],[[1339,1339],"mapped",[1387]],[[1340,1340],"mapped",[1388]],[[1341,1341],"mapped",[1389]],[[1342,1342],"mapped",[1390]],[[1343,1343],"mapped",[1391]],[[1344,1344],"mapped",[1392]],[[1345,1345],"mapped",[1393]],[[1346,1346],"mapped",[1394]],[[1347,1347],"mapped",[1395]],[[1348,1348],"mapped",[1396]],[[1349,1349],"mapped",[1397]],[[1350,1350],"mapped",[1398]],[[1351,1351],"mapped",[1399]],[[1352,1352],"mapped",[1400]],[[1353,1353],"mapped",[1401]],[[1354,1354],"mapped",[1402]],[[1355,1355],"mapped",[1403]],[[1356,1356],"mapped",[1404]],[[1357,1357],"mapped",[1405]],[[1358,1358],"mapped",[1406]],[[1359,1359],"mapped",[1407]],[[1360,1360],"mapped",[1408]],[[1361,1361],"mapped",[1409]],[[1362,1362],"mapped",[1410]],[[1363,1363],"mapped",[1411]],[[1364,1364],"mapped",[1412]],[[1365,1365],"mapped",[1413]],[[1366,1366],"mapped",[1414]],[[1367,1368],"disallowed"],[[1369,1369],"valid"],[[1370,1375],"valid",[],"NV8"],[[1376,1376],"disallowed"],[[1377,1414],"valid"],[[1415,1415],"mapped",[1381,1410]],[[1416,1416],"disallowed"],[[1417,1417],"valid",[],"NV8"],[[1418,1418],"valid",[],"NV8"],[[1419,1420],"disallowed"],[[1421,1422],"valid",[],"NV8"],[[1423,1423],"valid",[],"NV8"],[[1424,1424],"disallowed"],[[1425,1441],"valid"],[[1442,1442],"valid"],[[1443,1455],"valid"],[[1456,1465],"valid"],[[1466,1466],"valid"],[[1467,1469],"valid"],[[1470,1470],"valid",[],"NV8"],[[1471,1471],"valid"],[[1472,1472],"valid",[],"NV8"],[[1473,1474],"valid"],[[1475,1475],"valid",[],"NV8"],[[1476,1476],"valid"],[[1477,1477],"valid"],[[1478,1478],"valid",[],"NV8"],[[1479,1479],"valid"],[[1480,1487],"disallowed"],[[1488,1514],"valid"],[[1515,1519],"disallowed"],[[1520,1524],"valid"],[[1525,1535],"disallowed"],[[1536,1539],"disallowed"],[[1540,1540],"disallowed"],[[1541,1541],"disallowed"],[[1542,1546],"valid",[],"NV8"],[[1547,1547],"valid",[],"NV8"],[[1548,1548],"valid",[],"NV8"],[[1549,1551],"valid",[],"NV8"],[[1552,1557],"valid"],[[1558,1562],"valid"],[[1563,1563],"valid",[],"NV8"],[[1564,1564],"disallowed"],[[1565,1565],"disallowed"],[[1566,1566],"valid",[],"NV8"],[[1567,1567],"valid",[],"NV8"],[[1568,1568],"valid"],[[1569,1594],"valid"],[[1595,1599],"valid"],[[1600,1600],"valid",[],"NV8"],[[1601,1618],"valid"],[[1619,1621],"valid"],[[1622,1624],"valid"],[[1625,1630],"valid"],[[1631,1631],"valid"],[[1632,1641],"valid"],[[1642,1645],"valid",[],"NV8"],[[1646,1647],"valid"],[[1648,1652],"valid"],[[1653,1653],"mapped",[1575,1652]],[[1654,1654],"mapped",[1608,1652]],[[1655,1655],"mapped",[1735,1652]],[[1656,1656],"mapped",[1610,1652]],[[1657,1719],"valid"],[[1720,1721],"valid"],[[1722,1726],"valid"],[[1727,1727],"valid"],[[1728,1742],"valid"],[[1743,1743],"valid"],[[1744,1747],"valid"],[[1748,1748],"valid",[],"NV8"],[[1749,1756],"valid"],[[1757,1757],"disallowed"],[[1758,1758],"valid",[],"NV8"],[[1759,1768],"valid"],[[1769,1769],"valid",[],"NV8"],[[1770,1773],"valid"],[[1774,1775],"valid"],[[1776,1785],"valid"],[[1786,1790],"valid"],[[1791,1791],"valid"],[[1792,1805],"valid",[],"NV8"],[[1806,1806],"disallowed"],[[1807,1807],"disallowed"],[[1808,1836],"valid"],[[1837,1839],"valid"],[[1840,1866],"valid"],[[1867,1868],"disallowed"],[[1869,1871],"valid"],[[1872,1901],"valid"],[[1902,1919],"valid"],[[1920,1968],"valid"],[[1969,1969],"valid"],[[1970,1983],"disallowed"],[[1984,2037],"valid"],[[2038,2042],"valid",[],"NV8"],[[2043,2047],"disallowed"],[[2048,2093],"valid"],[[2094,2095],"disallowed"],[[2096,2110],"valid",[],"NV8"],[[2111,2111],"disallowed"],[[2112,2139],"valid"],[[2140,2141],"disallowed"],[[2142,2142],"valid",[],"NV8"],[[2143,2207],"disallowed"],[[2208,2208],"valid"],[[2209,2209],"valid"],[[2210,2220],"valid"],[[2221,2226],"valid"],[[2227,2228],"valid"],[[2229,2274],"disallowed"],[[2275,2275],"valid"],[[2276,2302],"valid"],[[2303,2303],"valid"],[[2304,2304],"valid"],[[2305,2307],"valid"],[[2308,2308],"valid"],[[2309,2361],"valid"],[[2362,2363],"valid"],[[2364,2381],"valid"],[[2382,2382],"valid"],[[2383,2383],"valid"],[[2384,2388],"valid"],[[2389,2389],"valid"],[[2390,2391],"valid"],[[2392,2392],"mapped",[2325,2364]],[[2393,2393],"mapped",[2326,2364]],[[2394,2394],"mapped",[2327,2364]],[[2395,2395],"mapped",[2332,2364]],[[2396,2396],"mapped",[2337,2364]],[[2397,2397],"mapped",[2338,2364]],[[2398,2398],"mapped",[2347,2364]],[[2399,2399],"mapped",[2351,2364]],[[2400,2403],"valid"],[[2404,2405],"valid",[],"NV8"],[[2406,2415],"valid"],[[2416,2416],"valid",[],"NV8"],[[2417,2418],"valid"],[[2419,2423],"valid"],[[2424,2424],"valid"],[[2425,2426],"valid"],[[2427,2428],"valid"],[[2429,2429],"valid"],[[2430,2431],"valid"],[[2432,2432],"valid"],[[2433,2435],"valid"],[[2436,2436],"disallowed"],[[2437,2444],"valid"],[[2445,2446],"disallowed"],[[2447,2448],"valid"],[[2449,2450],"disallowed"],[[2451,2472],"valid"],[[2473,2473],"disallowed"],[[2474,2480],"valid"],[[2481,2481],"disallowed"],[[2482,2482],"valid"],[[2483,2485],"disallowed"],[[2486,2489],"valid"],[[2490,2491],"disallowed"],[[2492,2492],"valid"],[[2493,2493],"valid"],[[2494,2500],"valid"],[[2501,2502],"disallowed"],[[2503,2504],"valid"],[[2505,2506],"disallowed"],[[2507,2509],"valid"],[[2510,2510],"valid"],[[2511,2518],"disallowed"],[[2519,2519],"valid"],[[2520,2523],"disallowed"],[[2524,2524],"mapped",[2465,2492]],[[2525,2525],"mapped",[2466,2492]],[[2526,2526],"disallowed"],[[2527,2527],"mapped",[2479,2492]],[[2528,2531],"valid"],[[2532,2533],"disallowed"],[[2534,2545],"valid"],[[2546,2554],"valid",[],"NV8"],[[2555,2555],"valid",[],"NV8"],[[2556,2560],"disallowed"],[[2561,2561],"valid"],[[2562,2562],"valid"],[[2563,2563],"valid"],[[2564,2564],"disallowed"],[[2565,2570],"valid"],[[2571,2574],"disallowed"],[[2575,2576],"valid"],[[2577,2578],"disallowed"],[[2579,2600],"valid"],[[2601,2601],"disallowed"],[[2602,2608],"valid"],[[2609,2609],"disallowed"],[[2610,2610],"valid"],[[2611,2611],"mapped",[2610,2620]],[[2612,2612],"disallowed"],[[2613,2613],"valid"],[[2614,2614],"mapped",[2616,2620]],[[2615,2615],"disallowed"],[[2616,2617],"valid"],[[2618,2619],"disallowed"],[[2620,2620],"valid"],[[2621,2621],"disallowed"],[[2622,2626],"valid"],[[2627,2630],"disallowed"],[[2631,2632],"valid"],[[2633,2634],"disallowed"],[[2635,2637],"valid"],[[2638,2640],"disallowed"],[[2641,2641],"valid"],[[2642,2648],"disallowed"],[[2649,2649],"mapped",[2582,2620]],[[2650,2650],"mapped",[2583,2620]],[[2651,2651],"mapped",[2588,2620]],[[2652,2652],"valid"],[[2653,2653],"disallowed"],[[2654,2654],"mapped",[2603,2620]],[[2655,2661],"disallowed"],[[2662,2676],"valid"],[[2677,2677],"valid"],[[2678,2688],"disallowed"],[[2689,2691],"valid"],[[2692,2692],"disallowed"],[[2693,2699],"valid"],[[2700,2700],"valid"],[[2701,2701],"valid"],[[2702,2702],"disallowed"],[[2703,2705],"valid"],[[2706,2706],"disallowed"],[[2707,2728],"valid"],[[2729,2729],"disallowed"],[[2730,2736],"valid"],[[2737,2737],"disallowed"],[[2738,2739],"valid"],[[2740,2740],"disallowed"],[[2741,2745],"valid"],[[2746,2747],"disallowed"],[[2748,2757],"valid"],[[2758,2758],"disallowed"],[[2759,2761],"valid"],[[2762,2762],"disallowed"],[[2763,2765],"valid"],[[2766,2767],"disallowed"],[[2768,2768],"valid"],[[2769,2783],"disallowed"],[[2784,2784],"valid"],[[2785,2787],"valid"],[[2788,2789],"disallowed"],[[2790,2799],"valid"],[[2800,2800],"valid",[],"NV8"],[[2801,2801],"valid",[],"NV8"],[[2802,2808],"disallowed"],[[2809,2809],"valid"],[[2810,2816],"disallowed"],[[2817,2819],"valid"],[[2820,2820],"disallowed"],[[2821,2828],"valid"],[[2829,2830],"disallowed"],[[2831,2832],"valid"],[[2833,2834],"disallowed"],[[2835,2856],"valid"],[[2857,2857],"disallowed"],[[2858,2864],"valid"],[[2865,2865],"disallowed"],[[2866,2867],"valid"],[[2868,2868],"disallowed"],[[2869,2869],"valid"],[[2870,2873],"valid"],[[2874,2875],"disallowed"],[[2876,2883],"valid"],[[2884,2884],"valid"],[[2885,2886],"disallowed"],[[2887,2888],"valid"],[[2889,2890],"disallowed"],[[2891,2893],"valid"],[[2894,2901],"disallowed"],[[2902,2903],"valid"],[[2904,2907],"disallowed"],[[2908,2908],"mapped",[2849,2876]],[[2909,2909],"mapped",[2850,2876]],[[2910,2910],"disallowed"],[[2911,2913],"valid"],[[2914,2915],"valid"],[[2916,2917],"disallowed"],[[2918,2927],"valid"],[[2928,2928],"valid",[],"NV8"],[[2929,2929],"valid"],[[2930,2935],"valid",[],"NV8"],[[2936,2945],"disallowed"],[[2946,2947],"valid"],[[2948,2948],"disallowed"],[[2949,2954],"valid"],[[2955,2957],"disallowed"],[[2958,2960],"valid"],[[2961,2961],"disallowed"],[[2962,2965],"valid"],[[2966,2968],"disallowed"],[[2969,2970],"valid"],[[2971,2971],"disallowed"],[[2972,2972],"valid"],[[2973,2973],"disallowed"],[[2974,2975],"valid"],[[2976,2978],"disallowed"],[[2979,2980],"valid"],[[2981,2983],"disallowed"],[[2984,2986],"valid"],[[2987,2989],"disallowed"],[[2990,2997],"valid"],[[2998,2998],"valid"],[[2999,3001],"valid"],[[3002,3005],"disallowed"],[[3006,3010],"valid"],[[3011,3013],"disallowed"],[[3014,3016],"valid"],[[3017,3017],"disallowed"],[[3018,3021],"valid"],[[3022,3023],"disallowed"],[[3024,3024],"valid"],[[3025,3030],"disallowed"],[[3031,3031],"valid"],[[3032,3045],"disallowed"],[[3046,3046],"valid"],[[3047,3055],"valid"],[[3056,3058],"valid",[],"NV8"],[[3059,3066],"valid",[],"NV8"],[[3067,3071],"disallowed"],[[3072,3072],"valid"],[[3073,3075],"valid"],[[3076,3076],"disallowed"],[[3077,3084],"valid"],[[3085,3085],"disallowed"],[[3086,3088],"valid"],[[3089,3089],"disallowed"],[[3090,3112],"valid"],[[3113,3113],"disallowed"],[[3114,3123],"valid"],[[3124,3124],"valid"],[[3125,3129],"valid"],[[3130,3132],"disallowed"],[[3133,3133],"valid"],[[3134,3140],"valid"],[[3141,3141],"disallowed"],[[3142,3144],"valid"],[[3145,3145],"disallowed"],[[3146,3149],"valid"],[[3150,3156],"disallowed"],[[3157,3158],"valid"],[[3159,3159],"disallowed"],[[3160,3161],"valid"],[[3162,3162],"valid"],[[3163,3167],"disallowed"],[[3168,3169],"valid"],[[3170,3171],"valid"],[[3172,3173],"disallowed"],[[3174,3183],"valid"],[[3184,3191],"disallowed"],[[3192,3199],"valid",[],"NV8"],[[3200,3200],"disallowed"],[[3201,3201],"valid"],[[3202,3203],"valid"],[[3204,3204],"disallowed"],[[3205,3212],"valid"],[[3213,3213],"disallowed"],[[3214,3216],"valid"],[[3217,3217],"disallowed"],[[3218,3240],"valid"],[[3241,3241],"disallowed"],[[3242,3251],"valid"],[[3252,3252],"disallowed"],[[3253,3257],"valid"],[[3258,3259],"disallowed"],[[3260,3261],"valid"],[[3262,3268],"valid"],[[3269,3269],"disallowed"],[[3270,3272],"valid"],[[3273,3273],"disallowed"],[[3274,3277],"valid"],[[3278,3284],"disallowed"],[[3285,3286],"valid"],[[3287,3293],"disallowed"],[[3294,3294],"valid"],[[3295,3295],"disallowed"],[[3296,3297],"valid"],[[3298,3299],"valid"],[[3300,3301],"disallowed"],[[3302,3311],"valid"],[[3312,3312],"disallowed"],[[3313,3314],"valid"],[[3315,3328],"disallowed"],[[3329,3329],"valid"],[[3330,3331],"valid"],[[3332,3332],"disallowed"],[[3333,3340],"valid"],[[3341,3341],"disallowed"],[[3342,3344],"valid"],[[3345,3345],"disallowed"],[[3346,3368],"valid"],[[3369,3369],"valid"],[[3370,3385],"valid"],[[3386,3386],"valid"],[[3387,3388],"disallowed"],[[3389,3389],"valid"],[[3390,3395],"valid"],[[3396,3396],"valid"],[[3397,3397],"disallowed"],[[3398,3400],"valid"],[[3401,3401],"disallowed"],[[3402,3405],"valid"],[[3406,3406],"valid"],[[3407,3414],"disallowed"],[[3415,3415],"valid"],[[3416,3422],"disallowed"],[[3423,3423],"valid"],[[3424,3425],"valid"],[[3426,3427],"valid"],[[3428,3429],"disallowed"],[[3430,3439],"valid"],[[3440,3445],"valid",[],"NV8"],[[3446,3448],"disallowed"],[[3449,3449],"valid",[],"NV8"],[[3450,3455],"valid"],[[3456,3457],"disallowed"],[[3458,3459],"valid"],[[3460,3460],"disallowed"],[[3461,3478],"valid"],[[3479,3481],"disallowed"],[[3482,3505],"valid"],[[3506,3506],"disallowed"],[[3507,3515],"valid"],[[3516,3516],"disallowed"],[[3517,3517],"valid"],[[3518,3519],"disallowed"],[[3520,3526],"valid"],[[3527,3529],"disallowed"],[[3530,3530],"valid"],[[3531,3534],"disallowed"],[[3535,3540],"valid"],[[3541,3541],"disallowed"],[[3542,3542],"valid"],[[3543,3543],"disallowed"],[[3544,3551],"valid"],[[3552,3557],"disallowed"],[[3558,3567],"valid"],[[3568,3569],"disallowed"],[[3570,3571],"valid"],[[3572,3572],"valid",[],"NV8"],[[3573,3584],"disallowed"],[[3585,3634],"valid"],[[3635,3635],"mapped",[3661,3634]],[[3636,3642],"valid"],[[3643,3646],"disallowed"],[[3647,3647],"valid",[],"NV8"],[[3648,3662],"valid"],[[3663,3663],"valid",[],"NV8"],[[3664,3673],"valid"],[[3674,3675],"valid",[],"NV8"],[[3676,3712],"disallowed"],[[3713,3714],"valid"],[[3715,3715],"disallowed"],[[3716,3716],"valid"],[[3717,3718],"disallowed"],[[3719,3720],"valid"],[[3721,3721],"disallowed"],[[3722,3722],"valid"],[[3723,3724],"disallowed"],[[3725,3725],"valid"],[[3726,3731],"disallowed"],[[3732,3735],"valid"],[[3736,3736],"disallowed"],[[3737,3743],"valid"],[[3744,3744],"disallowed"],[[3745,3747],"valid"],[[3748,3748],"disallowed"],[[3749,3749],"valid"],[[3750,3750],"disallowed"],[[3751,3751],"valid"],[[3752,3753],"disallowed"],[[3754,3755],"valid"],[[3756,3756],"disallowed"],[[3757,3762],"valid"],[[3763,3763],"mapped",[3789,3762]],[[3764,3769],"valid"],[[3770,3770],"disallowed"],[[3771,3773],"valid"],[[3774,3775],"disallowed"],[[3776,3780],"valid"],[[3781,3781],"disallowed"],[[3782,3782],"valid"],[[3783,3783],"disallowed"],[[3784,3789],"valid"],[[3790,3791],"disallowed"],[[3792,3801],"valid"],[[3802,3803],"disallowed"],[[3804,3804],"mapped",[3755,3737]],[[3805,3805],"mapped",[3755,3745]],[[3806,3807],"valid"],[[3808,3839],"disallowed"],[[3840,3840],"valid"],[[3841,3850],"valid",[],"NV8"],[[3851,3851],"valid"],[[3852,3852],"mapped",[3851]],[[3853,3863],"valid",[],"NV8"],[[3864,3865],"valid"],[[3866,3871],"valid",[],"NV8"],[[3872,3881],"valid"],[[3882,3892],"valid",[],"NV8"],[[3893,3893],"valid"],[[3894,3894],"valid",[],"NV8"],[[3895,3895],"valid"],[[3896,3896],"valid",[],"NV8"],[[3897,3897],"valid"],[[3898,3901],"valid",[],"NV8"],[[3902,3906],"valid"],[[3907,3907],"mapped",[3906,4023]],[[3908,3911],"valid"],[[3912,3912],"disallowed"],[[3913,3916],"valid"],[[3917,3917],"mapped",[3916,4023]],[[3918,3921],"valid"],[[3922,3922],"mapped",[3921,4023]],[[3923,3926],"valid"],[[3927,3927],"mapped",[3926,4023]],[[3928,3931],"valid"],[[3932,3932],"mapped",[3931,4023]],[[3933,3944],"valid"],[[3945,3945],"mapped",[3904,4021]],[[3946,3946],"valid"],[[3947,3948],"valid"],[[3949,3952],"disallowed"],[[3953,3954],"valid"],[[3955,3955],"mapped",[3953,3954]],[[3956,3956],"valid"],[[3957,3957],"mapped",[3953,3956]],[[3958,3958],"mapped",[4018,3968]],[[3959,3959],"mapped",[4018,3953,3968]],[[3960,3960],"mapped",[4019,3968]],[[3961,3961],"mapped",[4019,3953,3968]],[[3962,3968],"valid"],[[3969,3969],"mapped",[3953,3968]],[[3970,3972],"valid"],[[3973,3973],"valid",[],"NV8"],[[3974,3979],"valid"],[[3980,3983],"valid"],[[3984,3986],"valid"],[[3987,3987],"mapped",[3986,4023]],[[3988,3989],"valid"],[[3990,3990],"valid"],[[3991,3991],"valid"],[[3992,3992],"disallowed"],[[3993,3996],"valid"],[[3997,3997],"mapped",[3996,4023]],[[3998,4001],"valid"],[[4002,4002],"mapped",[4001,4023]],[[4003,4006],"valid"],[[4007,4007],"mapped",[4006,4023]],[[4008,4011],"valid"],[[4012,4012],"mapped",[4011,4023]],[[4013,4013],"valid"],[[4014,4016],"valid"],[[4017,4023],"valid"],[[4024,4024],"valid"],[[4025,4025],"mapped",[3984,4021]],[[4026,4028],"valid"],[[4029,4029],"disallowed"],[[4030,4037],"valid",[],"NV8"],[[4038,4038],"valid"],[[4039,4044],"valid",[],"NV8"],[[4045,4045],"disallowed"],[[4046,4046],"valid",[],"NV8"],[[4047,4047],"valid",[],"NV8"],[[4048,4049],"valid",[],"NV8"],[[4050,4052],"valid",[],"NV8"],[[4053,4056],"valid",[],"NV8"],[[4057,4058],"valid",[],"NV8"],[[4059,4095],"disallowed"],[[4096,4129],"valid"],[[4130,4130],"valid"],[[4131,4135],"valid"],[[4136,4136],"valid"],[[4137,4138],"valid"],[[4139,4139],"valid"],[[4140,4146],"valid"],[[4147,4149],"valid"],[[4150,4153],"valid"],[[4154,4159],"valid"],[[4160,4169],"valid"],[[4170,4175],"valid",[],"NV8"],[[4176,4185],"valid"],[[4186,4249],"valid"],[[4250,4253],"valid"],[[4254,4255],"valid",[],"NV8"],[[4256,4293],"disallowed"],[[4294,4294],"disallowed"],[[4295,4295],"mapped",[11559]],[[4296,4300],"disallowed"],[[4301,4301],"mapped",[11565]],[[4302,4303],"disallowed"],[[4304,4342],"valid"],[[4343,4344],"valid"],[[4345,4346],"valid"],[[4347,4347],"valid",[],"NV8"],[[4348,4348],"mapped",[4316]],[[4349,4351],"valid"],[[4352,4441],"valid",[],"NV8"],[[4442,4446],"valid",[],"NV8"],[[4447,4448],"disallowed"],[[4449,4514],"valid",[],"NV8"],[[4515,4519],"valid",[],"NV8"],[[4520,4601],"valid",[],"NV8"],[[4602,4607],"valid",[],"NV8"],[[4608,4614],"valid"],[[4615,4615],"valid"],[[4616,4678],"valid"],[[4679,4679],"valid"],[[4680,4680],"valid"],[[4681,4681],"disallowed"],[[4682,4685],"valid"],[[4686,4687],"disallowed"],[[4688,4694],"valid"],[[4695,4695],"disallowed"],[[4696,4696],"valid"],[[4697,4697],"disallowed"],[[4698,4701],"valid"],[[4702,4703],"disallowed"],[[4704,4742],"valid"],[[4743,4743],"valid"],[[4744,4744],"valid"],[[4745,4745],"disallowed"],[[4746,4749],"valid"],[[4750,4751],"disallowed"],[[4752,4782],"valid"],[[4783,4783],"valid"],[[4784,4784],"valid"],[[4785,4785],"disallowed"],[[4786,4789],"valid"],[[4790,4791],"disallowed"],[[4792,4798],"valid"],[[4799,4799],"disallowed"],[[4800,4800],"valid"],[[4801,4801],"disallowed"],[[4802,4805],"valid"],[[4806,4807],"disallowed"],[[4808,4814],"valid"],[[4815,4815],"valid"],[[4816,4822],"valid"],[[4823,4823],"disallowed"],[[4824,4846],"valid"],[[4847,4847],"valid"],[[4848,4878],"valid"],[[4879,4879],"valid"],[[4880,4880],"valid"],[[4881,4881],"disallowed"],[[4882,4885],"valid"],[[4886,4887],"disallowed"],[[4888,4894],"valid"],[[4895,4895],"valid"],[[4896,4934],"valid"],[[4935,4935],"valid"],[[4936,4954],"valid"],[[4955,4956],"disallowed"],[[4957,4958],"valid"],[[4959,4959],"valid"],[[4960,4960],"valid",[],"NV8"],[[4961,4988],"valid",[],"NV8"],[[4989,4991],"disallowed"],[[4992,5007],"valid"],[[5008,5017],"valid",[],"NV8"],[[5018,5023],"disallowed"],[[5024,5108],"valid"],[[5109,5109],"valid"],[[5110,5111],"disallowed"],[[5112,5112],"mapped",[5104]],[[5113,5113],"mapped",[5105]],[[5114,5114],"mapped",[5106]],[[5115,5115],"mapped",[5107]],[[5116,5116],"mapped",[5108]],[[5117,5117],"mapped",[5109]],[[5118,5119],"disallowed"],[[5120,5120],"valid",[],"NV8"],[[5121,5740],"valid"],[[5741,5742],"valid",[],"NV8"],[[5743,5750],"valid"],[[5751,5759],"valid"],[[5760,5760],"disallowed"],[[5761,5786],"valid"],[[5787,5788],"valid",[],"NV8"],[[5789,5791],"disallowed"],[[5792,5866],"valid"],[[5867,5872],"valid",[],"NV8"],[[5873,5880],"valid"],[[5881,5887],"disallowed"],[[5888,5900],"valid"],[[5901,5901],"disallowed"],[[5902,5908],"valid"],[[5909,5919],"disallowed"],[[5920,5940],"valid"],[[5941,5942],"valid",[],"NV8"],[[5943,5951],"disallowed"],[[5952,5971],"valid"],[[5972,5983],"disallowed"],[[5984,5996],"valid"],[[5997,5997],"disallowed"],[[5998,6000],"valid"],[[6001,6001],"disallowed"],[[6002,6003],"valid"],[[6004,6015],"disallowed"],[[6016,6067],"valid"],[[6068,6069],"disallowed"],[[6070,6099],"valid"],[[6100,6102],"valid",[],"NV8"],[[6103,6103],"valid"],[[6104,6107],"valid",[],"NV8"],[[6108,6108],"valid"],[[6109,6109],"valid"],[[6110,6111],"disallowed"],[[6112,6121],"valid"],[[6122,6127],"disallowed"],[[6128,6137],"valid",[],"NV8"],[[6138,6143],"disallowed"],[[6144,6149],"valid",[],"NV8"],[[6150,6150],"disallowed"],[[6151,6154],"valid",[],"NV8"],[[6155,6157],"ignored"],[[6158,6158],"disallowed"],[[6159,6159],"disallowed"],[[6160,6169],"valid"],[[6170,6175],"disallowed"],[[6176,6263],"valid"],[[6264,6271],"disallowed"],[[6272,6313],"valid"],[[6314,6314],"valid"],[[6315,6319],"disallowed"],[[6320,6389],"valid"],[[6390,6399],"disallowed"],[[6400,6428],"valid"],[[6429,6430],"valid"],[[6431,6431],"disallowed"],[[6432,6443],"valid"],[[6444,6447],"disallowed"],[[6448,6459],"valid"],[[6460,6463],"disallowed"],[[6464,6464],"valid",[],"NV8"],[[6465,6467],"disallowed"],[[6468,6469],"valid",[],"NV8"],[[6470,6509],"valid"],[[6510,6511],"disallowed"],[[6512,6516],"valid"],[[6517,6527],"disallowed"],[[6528,6569],"valid"],[[6570,6571],"valid"],[[6572,6575],"disallowed"],[[6576,6601],"valid"],[[6602,6607],"disallowed"],[[6608,6617],"valid"],[[6618,6618],"valid",[],"XV8"],[[6619,6621],"disallowed"],[[6622,6623],"valid",[],"NV8"],[[6624,6655],"valid",[],"NV8"],[[6656,6683],"valid"],[[6684,6685],"disallowed"],[[6686,6687],"valid",[],"NV8"],[[6688,6750],"valid"],[[6751,6751],"disallowed"],[[6752,6780],"valid"],[[6781,6782],"disallowed"],[[6783,6793],"valid"],[[6794,6799],"disallowed"],[[6800,6809],"valid"],[[6810,6815],"disallowed"],[[6816,6822],"valid",[],"NV8"],[[6823,6823],"valid"],[[6824,6829],"valid",[],"NV8"],[[6830,6831],"disallowed"],[[6832,6845],"valid"],[[6846,6846],"valid",[],"NV8"],[[6847,6911],"disallowed"],[[6912,6987],"valid"],[[6988,6991],"disallowed"],[[6992,7001],"valid"],[[7002,7018],"valid",[],"NV8"],[[7019,7027],"valid"],[[7028,7036],"valid",[],"NV8"],[[7037,7039],"disallowed"],[[7040,7082],"valid"],[[7083,7085],"valid"],[[7086,7097],"valid"],[[7098,7103],"valid"],[[7104,7155],"valid"],[[7156,7163],"disallowed"],[[7164,7167],"valid",[],"NV8"],[[7168,7223],"valid"],[[7224,7226],"disallowed"],[[7227,7231],"valid",[],"NV8"],[[7232,7241],"valid"],[[7242,7244],"disallowed"],[[7245,7293],"valid"],[[7294,7295],"valid",[],"NV8"],[[7296,7359],"disallowed"],[[7360,7367],"valid",[],"NV8"],[[7368,7375],"disallowed"],[[7376,7378],"valid"],[[7379,7379],"valid",[],"NV8"],[[7380,7410],"valid"],[[7411,7414],"valid"],[[7415,7415],"disallowed"],[[7416,7417],"valid"],[[7418,7423],"disallowed"],[[7424,7467],"valid"],[[7468,7468],"mapped",[97]],[[7469,7469],"mapped",[230]],[[7470,7470],"mapped",[98]],[[7471,7471],"valid"],[[7472,7472],"mapped",[100]],[[7473,7473],"mapped",[101]],[[7474,7474],"mapped",[477]],[[7475,7475],"mapped",[103]],[[7476,7476],"mapped",[104]],[[7477,7477],"mapped",[105]],[[7478,7478],"mapped",[106]],[[7479,7479],"mapped",[107]],[[7480,7480],"mapped",[108]],[[7481,7481],"mapped",[109]],[[7482,7482],"mapped",[110]],[[7483,7483],"valid"],[[7484,7484],"mapped",[111]],[[7485,7485],"mapped",[547]],[[7486,7486],"mapped",[112]],[[7487,7487],"mapped",[114]],[[7488,7488],"mapped",[116]],[[7489,7489],"mapped",[117]],[[7490,7490],"mapped",[119]],[[7491,7491],"mapped",[97]],[[7492,7492],"mapped",[592]],[[7493,7493],"mapped",[593]],[[7494,7494],"mapped",[7426]],[[7495,7495],"mapped",[98]],[[7496,7496],"mapped",[100]],[[7497,7497],"mapped",[101]],[[7498,7498],"mapped",[601]],[[7499,7499],"mapped",[603]],[[7500,7500],"mapped",[604]],[[7501,7501],"mapped",[103]],[[7502,7502],"valid"],[[7503,7503],"mapped",[107]],[[7504,7504],"mapped",[109]],[[7505,7505],"mapped",[331]],[[7506,7506],"mapped",[111]],[[7507,7507],"mapped",[596]],[[7508,7508],"mapped",[7446]],[[7509,7509],"mapped",[7447]],[[7510,7510],"mapped",[112]],[[7511,7511],"mapped",[116]],[[7512,7512],"mapped",[117]],[[7513,7513],"mapped",[7453]],[[7514,7514],"mapped",[623]],[[7515,7515],"mapped",[118]],[[7516,7516],"mapped",[7461]],[[7517,7517],"mapped",[946]],[[7518,7518],"mapped",[947]],[[7519,7519],"mapped",[948]],[[7520,7520],"mapped",[966]],[[7521,7521],"mapped",[967]],[[7522,7522],"mapped",[105]],[[7523,7523],"mapped",[114]],[[7524,7524],"mapped",[117]],[[7525,7525],"mapped",[118]],[[7526,7526],"mapped",[946]],[[7527,7527],"mapped",[947]],[[7528,7528],"mapped",[961]],[[7529,7529],"mapped",[966]],[[7530,7530],"mapped",[967]],[[7531,7531],"valid"],[[7532,7543],"valid"],[[7544,7544],"mapped",[1085]],[[7545,7578],"valid"],[[7579,7579],"mapped",[594]],[[7580,7580],"mapped",[99]],[[7581,7581],"mapped",[597]],[[7582,7582],"mapped",[240]],[[7583,7583],"mapped",[604]],[[7584,7584],"mapped",[102]],[[7585,7585],"mapped",[607]],[[7586,7586],"mapped",[609]],[[7587,7587],"mapped",[613]],[[7588,7588],"mapped",[616]],[[7589,7589],"mapped",[617]],[[7590,7590],"mapped",[618]],[[7591,7591],"mapped",[7547]],[[7592,7592],"mapped",[669]],[[7593,7593],"mapped",[621]],[[7594,7594],"mapped",[7557]],[[7595,7595],"mapped",[671]],[[7596,7596],"mapped",[625]],[[7597,7597],"mapped",[624]],[[7598,7598],"mapped",[626]],[[7599,7599],"mapped",[627]],[[7600,7600],"mapped",[628]],[[7601,7601],"mapped",[629]],[[7602,7602],"mapped",[632]],[[7603,7603],"mapped",[642]],[[7604,7604],"mapped",[643]],[[7605,7605],"mapped",[427]],[[7606,7606],"mapped",[649]],[[7607,7607],"mapped",[650]],[[7608,7608],"mapped",[7452]],[[7609,7609],"mapped",[651]],[[7610,7610],"mapped",[652]],[[7611,7611],"mapped",[122]],[[7612,7612],"mapped",[656]],[[7613,7613],"mapped",[657]],[[7614,7614],"mapped",[658]],[[7615,7615],"mapped",[952]],[[7616,7619],"valid"],[[7620,7626],"valid"],[[7627,7654],"valid"],[[7655,7669],"valid"],[[7670,7675],"disallowed"],[[7676,7676],"valid"],[[7677,7677],"valid"],[[7678,7679],"valid"],[[7680,7680],"mapped",[7681]],[[7681,7681],"valid"],[[7682,7682],"mapped",[7683]],[[7683,7683],"valid"],[[7684,7684],"mapped",[7685]],[[7685,7685],"valid"],[[7686,7686],"mapped",[7687]],[[7687,7687],"valid"],[[7688,7688],"mapped",[7689]],[[7689,7689],"valid"],[[7690,7690],"mapped",[7691]],[[7691,7691],"valid"],[[7692,7692],"mapped",[7693]],[[7693,7693],"valid"],[[7694,7694],"mapped",[7695]],[[7695,7695],"valid"],[[7696,7696],"mapped",[7697]],[[7697,7697],"valid"],[[7698,7698],"mapped",[7699]],[[7699,7699],"valid"],[[7700,7700],"mapped",[7701]],[[7701,7701],"valid"],[[7702,7702],"mapped",[7703]],[[7703,7703],"valid"],[[7704,7704],"mapped",[7705]],[[7705,7705],"valid"],[[7706,7706],"mapped",[7707]],[[7707,7707],"valid"],[[7708,7708],"mapped",[7709]],[[7709,7709],"valid"],[[7710,7710],"mapped",[7711]],[[7711,7711],"valid"],[[7712,7712],"mapped",[7713]],[[7713,7713],"valid"],[[7714,7714],"mapped",[7715]],[[7715,7715],"valid"],[[7716,7716],"mapped",[7717]],[[7717,7717],"valid"],[[7718,7718],"mapped",[7719]],[[7719,7719],"valid"],[[7720,7720],"mapped",[7721]],[[7721,7721],"valid"],[[7722,7722],"mapped",[7723]],[[7723,7723],"valid"],[[7724,7724],"mapped",[7725]],[[7725,7725],"valid"],[[7726,7726],"mapped",[7727]],[[7727,7727],"valid"],[[7728,7728],"mapped",[7729]],[[7729,7729],"valid"],[[7730,7730],"mapped",[7731]],[[7731,7731],"valid"],[[7732,7732],"mapped",[7733]],[[7733,7733],"valid"],[[7734,7734],"mapped",[7735]],[[7735,7735],"valid"],[[7736,7736],"mapped",[7737]],[[7737,7737],"valid"],[[7738,7738],"mapped",[7739]],[[7739,7739],"valid"],[[7740,7740],"mapped",[7741]],[[7741,7741],"valid"],[[7742,7742],"mapped",[7743]],[[7743,7743],"valid"],[[7744,7744],"mapped",[7745]],[[7745,7745],"valid"],[[7746,7746],"mapped",[7747]],[[7747,7747],"valid"],[[7748,7748],"mapped",[7749]],[[7749,7749],"valid"],[[7750,7750],"mapped",[7751]],[[7751,7751],"valid"],[[7752,7752],"mapped",[7753]],[[7753,7753],"valid"],[[7754,7754],"mapped",[7755]],[[7755,7755],"valid"],[[7756,7756],"mapped",[7757]],[[7757,7757],"valid"],[[7758,7758],"mapped",[7759]],[[7759,7759],"valid"],[[7760,7760],"mapped",[7761]],[[7761,7761],"valid"],[[7762,7762],"mapped",[7763]],[[7763,7763],"valid"],[[7764,7764],"mapped",[7765]],[[7765,7765],"valid"],[[7766,7766],"mapped",[7767]],[[7767,7767],"valid"],[[7768,7768],"mapped",[7769]],[[7769,7769],"valid"],[[7770,7770],"mapped",[7771]],[[7771,7771],"valid"],[[7772,7772],"mapped",[7773]],[[7773,7773],"valid"],[[7774,7774],"mapped",[7775]],[[7775,7775],"valid"],[[7776,7776],"mapped",[7777]],[[7777,7777],"valid"],[[7778,7778],"mapped",[7779]],[[7779,7779],"valid"],[[7780,7780],"mapped",[7781]],[[7781,7781],"valid"],[[7782,7782],"mapped",[7783]],[[7783,7783],"valid"],[[7784,7784],"mapped",[7785]],[[7785,7785],"valid"],[[7786,7786],"mapped",[7787]],[[7787,7787],"valid"],[[7788,7788],"mapped",[7789]],[[7789,7789],"valid"],[[7790,7790],"mapped",[7791]],[[7791,7791],"valid"],[[7792,7792],"mapped",[7793]],[[7793,7793],"valid"],[[7794,7794],"mapped",[7795]],[[7795,7795],"valid"],[[7796,7796],"mapped",[7797]],[[7797,7797],"valid"],[[7798,7798],"mapped",[7799]],[[7799,7799],"valid"],[[7800,7800],"mapped",[7801]],[[7801,7801],"valid"],[[7802,7802],"mapped",[7803]],[[7803,7803],"valid"],[[7804,7804],"mapped",[7805]],[[7805,7805],"valid"],[[7806,7806],"mapped",[7807]],[[7807,7807],"valid"],[[7808,7808],"mapped",[7809]],[[7809,7809],"valid"],[[7810,7810],"mapped",[7811]],[[7811,7811],"valid"],[[7812,7812],"mapped",[7813]],[[7813,7813],"valid"],[[7814,7814],"mapped",[7815]],[[7815,7815],"valid"],[[7816,7816],"mapped",[7817]],[[7817,7817],"valid"],[[7818,7818],"mapped",[7819]],[[7819,7819],"valid"],[[7820,7820],"mapped",[7821]],[[7821,7821],"valid"],[[7822,7822],"mapped",[7823]],[[7823,7823],"valid"],[[7824,7824],"mapped",[7825]],[[7825,7825],"valid"],[[7826,7826],"mapped",[7827]],[[7827,7827],"valid"],[[7828,7828],"mapped",[7829]],[[7829,7833],"valid"],[[7834,7834],"mapped",[97,702]],[[7835,7835],"mapped",[7777]],[[7836,7837],"valid"],[[7838,7838],"mapped",[115,115]],[[7839,7839],"valid"],[[7840,7840],"mapped",[7841]],[[7841,7841],"valid"],[[7842,7842],"mapped",[7843]],[[7843,7843],"valid"],[[7844,7844],"mapped",[7845]],[[7845,7845],"valid"],[[7846,7846],"mapped",[7847]],[[7847,7847],"valid"],[[7848,7848],"mapped",[7849]],[[7849,7849],"valid"],[[7850,7850],"mapped",[7851]],[[7851,7851],"valid"],[[7852,7852],"mapped",[7853]],[[7853,7853],"valid"],[[7854,7854],"mapped",[7855]],[[7855,7855],"valid"],[[7856,7856],"mapped",[7857]],[[7857,7857],"valid"],[[7858,7858],"mapped",[7859]],[[7859,7859],"valid"],[[7860,7860],"mapped",[7861]],[[7861,7861],"valid"],[[7862,7862],"mapped",[7863]],[[7863,7863],"valid"],[[7864,7864],"mapped",[7865]],[[7865,7865],"valid"],[[7866,7866],"mapped",[7867]],[[7867,7867],"valid"],[[7868,7868],"mapped",[7869]],[[7869,7869],"valid"],[[7870,7870],"mapped",[7871]],[[7871,7871],"valid"],[[7872,7872],"mapped",[7873]],[[7873,7873],"valid"],[[7874,7874],"mapped",[7875]],[[7875,7875],"valid"],[[7876,7876],"mapped",[7877]],[[7877,7877],"valid"],[[7878,7878],"mapped",[7879]],[[7879,7879],"valid"],[[7880,7880],"mapped",[7881]],[[7881,7881],"valid"],[[7882,7882],"mapped",[7883]],[[7883,7883],"valid"],[[7884,7884],"mapped",[7885]],[[7885,7885],"valid"],[[7886,7886],"mapped",[7887]],[[7887,7887],"valid"],[[7888,7888],"mapped",[7889]],[[7889,7889],"valid"],[[7890,7890],"mapped",[7891]],[[7891,7891],"valid"],[[7892,7892],"mapped",[7893]],[[7893,7893],"valid"],[[7894,7894],"mapped",[7895]],[[7895,7895],"valid"],[[7896,7896],"mapped",[7897]],[[7897,7897],"valid"],[[7898,7898],"mapped",[7899]],[[7899,7899],"valid"],[[7900,7900],"mapped",[7901]],[[7901,7901],"valid"],[[7902,7902],"mapped",[7903]],[[7903,7903],"valid"],[[7904,7904],"mapped",[7905]],[[7905,7905],"valid"],[[7906,7906],"mapped",[7907]],[[7907,7907],"valid"],[[7908,7908],"mapped",[7909]],[[7909,7909],"valid"],[[7910,7910],"mapped",[7911]],[[7911,7911],"valid"],[[7912,7912],"mapped",[7913]],[[7913,7913],"valid"],[[7914,7914],"mapped",[7915]],[[7915,7915],"valid"],[[7916,7916],"mapped",[7917]],[[7917,7917],"valid"],[[7918,7918],"mapped",[7919]],[[7919,7919],"valid"],[[7920,7920],"mapped",[7921]],[[7921,7921],"valid"],[[7922,7922],"mapped",[7923]],[[7923,7923],"valid"],[[7924,7924],"mapped",[7925]],[[7925,7925],"valid"],[[7926,7926],"mapped",[7927]],[[7927,7927],"valid"],[[7928,7928],"mapped",[7929]],[[7929,7929],"valid"],[[7930,7930],"mapped",[7931]],[[7931,7931],"valid"],[[7932,7932],"mapped",[7933]],[[7933,7933],"valid"],[[7934,7934],"mapped",[7935]],[[7935,7935],"valid"],[[7936,7943],"valid"],[[7944,7944],"mapped",[7936]],[[7945,7945],"mapped",[7937]],[[7946,7946],"mapped",[7938]],[[7947,7947],"mapped",[7939]],[[7948,7948],"mapped",[7940]],[[7949,7949],"mapped",[7941]],[[7950,7950],"mapped",[7942]],[[7951,7951],"mapped",[7943]],[[7952,7957],"valid"],[[7958,7959],"disallowed"],[[7960,7960],"mapped",[7952]],[[7961,7961],"mapped",[7953]],[[7962,7962],"mapped",[7954]],[[7963,7963],"mapped",[7955]],[[7964,7964],"mapped",[7956]],[[7965,7965],"mapped",[7957]],[[7966,7967],"disallowed"],[[7968,7975],"valid"],[[7976,7976],"mapped",[7968]],[[7977,7977],"mapped",[7969]],[[7978,7978],"mapped",[7970]],[[7979,7979],"mapped",[7971]],[[7980,7980],"mapped",[7972]],[[7981,7981],"mapped",[7973]],[[7982,7982],"mapped",[7974]],[[7983,7983],"mapped",[7975]],[[7984,7991],"valid"],[[7992,7992],"mapped",[7984]],[[7993,7993],"mapped",[7985]],[[7994,7994],"mapped",[7986]],[[7995,7995],"mapped",[7987]],[[7996,7996],"mapped",[7988]],[[7997,7997],"mapped",[7989]],[[7998,7998],"mapped",[7990]],[[7999,7999],"mapped",[7991]],[[8000,8005],"valid"],[[8006,8007],"disallowed"],[[8008,8008],"mapped",[8000]],[[8009,8009],"mapped",[8001]],[[8010,8010],"mapped",[8002]],[[8011,8011],"mapped",[8003]],[[8012,8012],"mapped",[8004]],[[8013,8013],"mapped",[8005]],[[8014,8015],"disallowed"],[[8016,8023],"valid"],[[8024,8024],"disallowed"],[[8025,8025],"mapped",[8017]],[[8026,8026],"disallowed"],[[8027,8027],"mapped",[8019]],[[8028,8028],"disallowed"],[[8029,8029],"mapped",[8021]],[[8030,8030],"disallowed"],[[8031,8031],"mapped",[8023]],[[8032,8039],"valid"],[[8040,8040],"mapped",[8032]],[[8041,8041],"mapped",[8033]],[[8042,8042],"mapped",[8034]],[[8043,8043],"mapped",[8035]],[[8044,8044],"mapped",[8036]],[[8045,8045],"mapped",[8037]],[[8046,8046],"mapped",[8038]],[[8047,8047],"mapped",[8039]],[[8048,8048],"valid"],[[8049,8049],"mapped",[940]],[[8050,8050],"valid"],[[8051,8051],"mapped",[941]],[[8052,8052],"valid"],[[8053,8053],"mapped",[942]],[[8054,8054],"valid"],[[8055,8055],"mapped",[943]],[[8056,8056],"valid"],[[8057,8057],"mapped",[972]],[[8058,8058],"valid"],[[8059,8059],"mapped",[973]],[[8060,8060],"valid"],[[8061,8061],"mapped",[974]],[[8062,8063],"disallowed"],[[8064,8064],"mapped",[7936,953]],[[8065,8065],"mapped",[7937,953]],[[8066,8066],"mapped",[7938,953]],[[8067,8067],"mapped",[7939,953]],[[8068,8068],"mapped",[7940,953]],[[8069,8069],"mapped",[7941,953]],[[8070,8070],"mapped",[7942,953]],[[8071,8071],"mapped",[7943,953]],[[8072,8072],"mapped",[7936,953]],[[8073,8073],"mapped",[7937,953]],[[8074,8074],"mapped",[7938,953]],[[8075,8075],"mapped",[7939,953]],[[8076,8076],"mapped",[7940,953]],[[8077,8077],"mapped",[7941,953]],[[8078,8078],"mapped",[7942,953]],[[8079,8079],"mapped",[7943,953]],[[8080,8080],"mapped",[7968,953]],[[8081,8081],"mapped",[7969,953]],[[8082,8082],"mapped",[7970,953]],[[8083,8083],"mapped",[7971,953]],[[8084,8084],"mapped",[7972,953]],[[8085,8085],"mapped",[7973,953]],[[8086,8086],"mapped",[7974,953]],[[8087,8087],"mapped",[7975,953]],[[8088,8088],"mapped",[7968,953]],[[8089,8089],"mapped",[7969,953]],[[8090,8090],"mapped",[7970,953]],[[8091,8091],"mapped",[7971,953]],[[8092,8092],"mapped",[7972,953]],[[8093,8093],"mapped",[7973,953]],[[8094,8094],"mapped",[7974,953]],[[8095,8095],"mapped",[7975,953]],[[8096,8096],"mapped",[8032,953]],[[8097,8097],"mapped",[8033,953]],[[8098,8098],"mapped",[8034,953]],[[8099,8099],"mapped",[8035,953]],[[8100,8100],"mapped",[8036,953]],[[8101,8101],"mapped",[8037,953]],[[8102,8102],"mapped",[8038,953]],[[8103,8103],"mapped",[8039,953]],[[8104,8104],"mapped",[8032,953]],[[8105,8105],"mapped",[8033,953]],[[8106,8106],"mapped",[8034,953]],[[8107,8107],"mapped",[8035,953]],[[8108,8108],"mapped",[8036,953]],[[8109,8109],"mapped",[8037,953]],[[8110,8110],"mapped",[8038,953]],[[8111,8111],"mapped",[8039,953]],[[8112,8113],"valid"],[[8114,8114],"mapped",[8048,953]],[[8115,8115],"mapped",[945,953]],[[8116,8116],"mapped",[940,953]],[[8117,8117],"disallowed"],[[8118,8118],"valid"],[[8119,8119],"mapped",[8118,953]],[[8120,8120],"mapped",[8112]],[[8121,8121],"mapped",[8113]],[[8122,8122],"mapped",[8048]],[[8123,8123],"mapped",[940]],[[8124,8124],"mapped",[945,953]],[[8125,8125],"disallowed_STD3_mapped",[32,787]],[[8126,8126],"mapped",[953]],[[8127,8127],"disallowed_STD3_mapped",[32,787]],[[8128,8128],"disallowed_STD3_mapped",[32,834]],[[8129,8129],"disallowed_STD3_mapped",[32,776,834]],[[8130,8130],"mapped",[8052,953]],[[8131,8131],"mapped",[951,953]],[[8132,8132],"mapped",[942,953]],[[8133,8133],"disallowed"],[[8134,8134],"valid"],[[8135,8135],"mapped",[8134,953]],[[8136,8136],"mapped",[8050]],[[8137,8137],"mapped",[941]],[[8138,8138],"mapped",[8052]],[[8139,8139],"mapped",[942]],[[8140,8140],"mapped",[951,953]],[[8141,8141],"disallowed_STD3_mapped",[32,787,768]],[[8142,8142],"disallowed_STD3_mapped",[32,787,769]],[[8143,8143],"disallowed_STD3_mapped",[32,787,834]],[[8144,8146],"valid"],[[8147,8147],"mapped",[912]],[[8148,8149],"disallowed"],[[8150,8151],"valid"],[[8152,8152],"mapped",[8144]],[[8153,8153],"mapped",[8145]],[[8154,8154],"mapped",[8054]],[[8155,8155],"mapped",[943]],[[8156,8156],"disallowed"],[[8157,8157],"disallowed_STD3_mapped",[32,788,768]],[[8158,8158],"disallowed_STD3_mapped",[32,788,769]],[[8159,8159],"disallowed_STD3_mapped",[32,788,834]],[[8160,8162],"valid"],[[8163,8163],"mapped",[944]],[[8164,8167],"valid"],[[8168,8168],"mapped",[8160]],[[8169,8169],"mapped",[8161]],[[8170,8170],"mapped",[8058]],[[8171,8171],"mapped",[973]],[[8172,8172],"mapped",[8165]],[[8173,8173],"disallowed_STD3_mapped",[32,776,768]],[[8174,8174],"disallowed_STD3_mapped",[32,776,769]],[[8175,8175],"disallowed_STD3_mapped",[96]],[[8176,8177],"disallowed"],[[8178,8178],"mapped",[8060,953]],[[8179,8179],"mapped",[969,953]],[[8180,8180],"mapped",[974,953]],[[8181,8181],"disallowed"],[[8182,8182],"valid"],[[8183,8183],"mapped",[8182,953]],[[8184,8184],"mapped",[8056]],[[8185,8185],"mapped",[972]],[[8186,8186],"mapped",[8060]],[[8187,8187],"mapped",[974]],[[8188,8188],"mapped",[969,953]],[[8189,8189],"disallowed_STD3_mapped",[32,769]],[[8190,8190],"disallowed_STD3_mapped",[32,788]],[[8191,8191],"disallowed"],[[8192,8202],"disallowed_STD3_mapped",[32]],[[8203,8203],"ignored"],[[8204,8205],"deviation",[]],[[8206,8207],"disallowed"],[[8208,8208],"valid",[],"NV8"],[[8209,8209],"mapped",[8208]],[[8210,8214],"valid",[],"NV8"],[[8215,8215],"disallowed_STD3_mapped",[32,819]],[[8216,8227],"valid",[],"NV8"],[[8228,8230],"disallowed"],[[8231,8231],"valid",[],"NV8"],[[8232,8238],"disallowed"],[[8239,8239],"disallowed_STD3_mapped",[32]],[[8240,8242],"valid",[],"NV8"],[[8243,8243],"mapped",[8242,8242]],[[8244,8244],"mapped",[8242,8242,8242]],[[8245,8245],"valid",[],"NV8"],[[8246,8246],"mapped",[8245,8245]],[[8247,8247],"mapped",[8245,8245,8245]],[[8248,8251],"valid",[],"NV8"],[[8252,8252],"disallowed_STD3_mapped",[33,33]],[[8253,8253],"valid",[],"NV8"],[[8254,8254],"disallowed_STD3_mapped",[32,773]],[[8255,8262],"valid",[],"NV8"],[[8263,8263],"disallowed_STD3_mapped",[63,63]],[[8264,8264],"disallowed_STD3_mapped",[63,33]],[[8265,8265],"disallowed_STD3_mapped",[33,63]],[[8266,8269],"valid",[],"NV8"],[[8270,8274],"valid",[],"NV8"],[[8275,8276],"valid",[],"NV8"],[[8277,8278],"valid",[],"NV8"],[[8279,8279],"mapped",[8242,8242,8242,8242]],[[8280,8286],"valid",[],"NV8"],[[8287,8287],"disallowed_STD3_mapped",[32]],[[8288,8288],"ignored"],[[8289,8291],"disallowed"],[[8292,8292],"ignored"],[[8293,8293],"disallowed"],[[8294,8297],"disallowed"],[[8298,8303],"disallowed"],[[8304,8304],"mapped",[48]],[[8305,8305],"mapped",[105]],[[8306,8307],"disallowed"],[[8308,8308],"mapped",[52]],[[8309,8309],"mapped",[53]],[[8310,8310],"mapped",[54]],[[8311,8311],"mapped",[55]],[[8312,8312],"mapped",[56]],[[8313,8313],"mapped",[57]],[[8314,8314],"disallowed_STD3_mapped",[43]],[[8315,8315],"mapped",[8722]],[[8316,8316],"disallowed_STD3_mapped",[61]],[[8317,8317],"disallowed_STD3_mapped",[40]],[[8318,8318],"disallowed_STD3_mapped",[41]],[[8319,8319],"mapped",[110]],[[8320,8320],"mapped",[48]],[[8321,8321],"mapped",[49]],[[8322,8322],"mapped",[50]],[[8323,8323],"mapped",[51]],[[8324,8324],"mapped",[52]],[[8325,8325],"mapped",[53]],[[8326,8326],"mapped",[54]],[[8327,8327],"mapped",[55]],[[8328,8328],"mapped",[56]],[[8329,8329],"mapped",[57]],[[8330,8330],"disallowed_STD3_mapped",[43]],[[8331,8331],"mapped",[8722]],[[8332,8332],"disallowed_STD3_mapped",[61]],[[8333,8333],"disallowed_STD3_mapped",[40]],[[8334,8334],"disallowed_STD3_mapped",[41]],[[8335,8335],"disallowed"],[[8336,8336],"mapped",[97]],[[8337,8337],"mapped",[101]],[[8338,8338],"mapped",[111]],[[8339,8339],"mapped",[120]],[[8340,8340],"mapped",[601]],[[8341,8341],"mapped",[104]],[[8342,8342],"mapped",[107]],[[8343,8343],"mapped",[108]],[[8344,8344],"mapped",[109]],[[8345,8345],"mapped",[110]],[[8346,8346],"mapped",[112]],[[8347,8347],"mapped",[115]],[[8348,8348],"mapped",[116]],[[8349,8351],"disallowed"],[[8352,8359],"valid",[],"NV8"],[[8360,8360],"mapped",[114,115]],[[8361,8362],"valid",[],"NV8"],[[8363,8363],"valid",[],"NV8"],[[8364,8364],"valid",[],"NV8"],[[8365,8367],"valid",[],"NV8"],[[8368,8369],"valid",[],"NV8"],[[8370,8373],"valid",[],"NV8"],[[8374,8376],"valid",[],"NV8"],[[8377,8377],"valid",[],"NV8"],[[8378,8378],"valid",[],"NV8"],[[8379,8381],"valid",[],"NV8"],[[8382,8382],"valid",[],"NV8"],[[8383,8399],"disallowed"],[[8400,8417],"valid",[],"NV8"],[[8418,8419],"valid",[],"NV8"],[[8420,8426],"valid",[],"NV8"],[[8427,8427],"valid",[],"NV8"],[[8428,8431],"valid",[],"NV8"],[[8432,8432],"valid",[],"NV8"],[[8433,8447],"disallowed"],[[8448,8448],"disallowed_STD3_mapped",[97,47,99]],[[8449,8449],"disallowed_STD3_mapped",[97,47,115]],[[8450,8450],"mapped",[99]],[[8451,8451],"mapped",[176,99]],[[8452,8452],"valid",[],"NV8"],[[8453,8453],"disallowed_STD3_mapped",[99,47,111]],[[8454,8454],"disallowed_STD3_mapped",[99,47,117]],[[8455,8455],"mapped",[603]],[[8456,8456],"valid",[],"NV8"],[[8457,8457],"mapped",[176,102]],[[8458,8458],"mapped",[103]],[[8459,8462],"mapped",[104]],[[8463,8463],"mapped",[295]],[[8464,8465],"mapped",[105]],[[8466,8467],"mapped",[108]],[[8468,8468],"valid",[],"NV8"],[[8469,8469],"mapped",[110]],[[8470,8470],"mapped",[110,111]],[[8471,8472],"valid",[],"NV8"],[[8473,8473],"mapped",[112]],[[8474,8474],"mapped",[113]],[[8475,8477],"mapped",[114]],[[8478,8479],"valid",[],"NV8"],[[8480,8480],"mapped",[115,109]],[[8481,8481],"mapped",[116,101,108]],[[8482,8482],"mapped",[116,109]],[[8483,8483],"valid",[],"NV8"],[[8484,8484],"mapped",[122]],[[8485,8485],"valid",[],"NV8"],[[8486,8486],"mapped",[969]],[[8487,8487],"valid",[],"NV8"],[[8488,8488],"mapped",[122]],[[8489,8489],"valid",[],"NV8"],[[8490,8490],"mapped",[107]],[[8491,8491],"mapped",[229]],[[8492,8492],"mapped",[98]],[[8493,8493],"mapped",[99]],[[8494,8494],"valid",[],"NV8"],[[8495,8496],"mapped",[101]],[[8497,8497],"mapped",[102]],[[8498,8498],"disallowed"],[[8499,8499],"mapped",[109]],[[8500,8500],"mapped",[111]],[[8501,8501],"mapped",[1488]],[[8502,8502],"mapped",[1489]],[[8503,8503],"mapped",[1490]],[[8504,8504],"mapped",[1491]],[[8505,8505],"mapped",[105]],[[8506,8506],"valid",[],"NV8"],[[8507,8507],"mapped",[102,97,120]],[[8508,8508],"mapped",[960]],[[8509,8510],"mapped",[947]],[[8511,8511],"mapped",[960]],[[8512,8512],"mapped",[8721]],[[8513,8516],"valid",[],"NV8"],[[8517,8518],"mapped",[100]],[[8519,8519],"mapped",[101]],[[8520,8520],"mapped",[105]],[[8521,8521],"mapped",[106]],[[8522,8523],"valid",[],"NV8"],[[8524,8524],"valid",[],"NV8"],[[8525,8525],"valid",[],"NV8"],[[8526,8526],"valid"],[[8527,8527],"valid",[],"NV8"],[[8528,8528],"mapped",[49,8260,55]],[[8529,8529],"mapped",[49,8260,57]],[[8530,8530],"mapped",[49,8260,49,48]],[[8531,8531],"mapped",[49,8260,51]],[[8532,8532],"mapped",[50,8260,51]],[[8533,8533],"mapped",[49,8260,53]],[[8534,8534],"mapped",[50,8260,53]],[[8535,8535],"mapped",[51,8260,53]],[[8536,8536],"mapped",[52,8260,53]],[[8537,8537],"mapped",[49,8260,54]],[[8538,8538],"mapped",[53,8260,54]],[[8539,8539],"mapped",[49,8260,56]],[[8540,8540],"mapped",[51,8260,56]],[[8541,8541],"mapped",[53,8260,56]],[[8542,8542],"mapped",[55,8260,56]],[[8543,8543],"mapped",[49,8260]],[[8544,8544],"mapped",[105]],[[8545,8545],"mapped",[105,105]],[[8546,8546],"mapped",[105,105,105]],[[8547,8547],"mapped",[105,118]],[[8548,8548],"mapped",[118]],[[8549,8549],"mapped",[118,105]],[[8550,8550],"mapped",[118,105,105]],[[8551,8551],"mapped",[118,105,105,105]],[[8552,8552],"mapped",[105,120]],[[8553,8553],"mapped",[120]],[[8554,8554],"mapped",[120,105]],[[8555,8555],"mapped",[120,105,105]],[[8556,8556],"mapped",[108]],[[8557,8557],"mapped",[99]],[[8558,8558],"mapped",[100]],[[8559,8559],"mapped",[109]],[[8560,8560],"mapped",[105]],[[8561,8561],"mapped",[105,105]],[[8562,8562],"mapped",[105,105,105]],[[8563,8563],"mapped",[105,118]],[[8564,8564],"mapped",[118]],[[8565,8565],"mapped",[118,105]],[[8566,8566],"mapped",[118,105,105]],[[8567,8567],"mapped",[118,105,105,105]],[[8568,8568],"mapped",[105,120]],[[8569,8569],"mapped",[120]],[[8570,8570],"mapped",[120,105]],[[8571,8571],"mapped",[120,105,105]],[[8572,8572],"mapped",[108]],[[8573,8573],"mapped",[99]],[[8574,8574],"mapped",[100]],[[8575,8575],"mapped",[109]],[[8576,8578],"valid",[],"NV8"],[[8579,8579],"disallowed"],[[8580,8580],"valid"],[[8581,8584],"valid",[],"NV8"],[[8585,8585],"mapped",[48,8260,51]],[[8586,8587],"valid",[],"NV8"],[[8588,8591],"disallowed"],[[8592,8682],"valid",[],"NV8"],[[8683,8691],"valid",[],"NV8"],[[8692,8703],"valid",[],"NV8"],[[8704,8747],"valid",[],"NV8"],[[8748,8748],"mapped",[8747,8747]],[[8749,8749],"mapped",[8747,8747,8747]],[[8750,8750],"valid",[],"NV8"],[[8751,8751],"mapped",[8750,8750]],[[8752,8752],"mapped",[8750,8750,8750]],[[8753,8799],"valid",[],"NV8"],[[8800,8800],"disallowed_STD3_valid"],[[8801,8813],"valid",[],"NV8"],[[8814,8815],"disallowed_STD3_valid"],[[8816,8945],"valid",[],"NV8"],[[8946,8959],"valid",[],"NV8"],[[8960,8960],"valid",[],"NV8"],[[8961,8961],"valid",[],"NV8"],[[8962,9000],"valid",[],"NV8"],[[9001,9001],"mapped",[12296]],[[9002,9002],"mapped",[12297]],[[9003,9082],"valid",[],"NV8"],[[9083,9083],"valid",[],"NV8"],[[9084,9084],"valid",[],"NV8"],[[9085,9114],"valid",[],"NV8"],[[9115,9166],"valid",[],"NV8"],[[9167,9168],"valid",[],"NV8"],[[9169,9179],"valid",[],"NV8"],[[9180,9191],"valid",[],"NV8"],[[9192,9192],"valid",[],"NV8"],[[9193,9203],"valid",[],"NV8"],[[9204,9210],"valid",[],"NV8"],[[9211,9215],"disallowed"],[[9216,9252],"valid",[],"NV8"],[[9253,9254],"valid",[],"NV8"],[[9255,9279],"disallowed"],[[9280,9290],"valid",[],"NV8"],[[9291,9311],"disallowed"],[[9312,9312],"mapped",[49]],[[9313,9313],"mapped",[50]],[[9314,9314],"mapped",[51]],[[9315,9315],"mapped",[52]],[[9316,9316],"mapped",[53]],[[9317,9317],"mapped",[54]],[[9318,9318],"mapped",[55]],[[9319,9319],"mapped",[56]],[[9320,9320],"mapped",[57]],[[9321,9321],"mapped",[49,48]],[[9322,9322],"mapped",[49,49]],[[9323,9323],"mapped",[49,50]],[[9324,9324],"mapped",[49,51]],[[9325,9325],"mapped",[49,52]],[[9326,9326],"mapped",[49,53]],[[9327,9327],"mapped",[49,54]],[[9328,9328],"mapped",[49,55]],[[9329,9329],"mapped",[49,56]],[[9330,9330],"mapped",[49,57]],[[9331,9331],"mapped",[50,48]],[[9332,9332],"disallowed_STD3_mapped",[40,49,41]],[[9333,9333],"disallowed_STD3_mapped",[40,50,41]],[[9334,9334],"disallowed_STD3_mapped",[40,51,41]],[[9335,9335],"disallowed_STD3_mapped",[40,52,41]],[[9336,9336],"disallowed_STD3_mapped",[40,53,41]],[[9337,9337],"disallowed_STD3_mapped",[40,54,41]],[[9338,9338],"disallowed_STD3_mapped",[40,55,41]],[[9339,9339],"disallowed_STD3_mapped",[40,56,41]],[[9340,9340],"disallowed_STD3_mapped",[40,57,41]],[[9341,9341],"disallowed_STD3_mapped",[40,49,48,41]],[[9342,9342],"disallowed_STD3_mapped",[40,49,49,41]],[[9343,9343],"disallowed_STD3_mapped",[40,49,50,41]],[[9344,9344],"disallowed_STD3_mapped",[40,49,51,41]],[[9345,9345],"disallowed_STD3_mapped",[40,49,52,41]],[[9346,9346],"disallowed_STD3_mapped",[40,49,53,41]],[[9347,9347],"disallowed_STD3_mapped",[40,49,54,41]],[[9348,9348],"disallowed_STD3_mapped",[40,49,55,41]],[[9349,9349],"disallowed_STD3_mapped",[40,49,56,41]],[[9350,9350],"disallowed_STD3_mapped",[40,49,57,41]],[[9351,9351],"disallowed_STD3_mapped",[40,50,48,41]],[[9352,9371],"disallowed"],[[9372,9372],"disallowed_STD3_mapped",[40,97,41]],[[9373,9373],"disallowed_STD3_mapped",[40,98,41]],[[9374,9374],"disallowed_STD3_mapped",[40,99,41]],[[9375,9375],"disallowed_STD3_mapped",[40,100,41]],[[9376,9376],"disallowed_STD3_mapped",[40,101,41]],[[9377,9377],"disallowed_STD3_mapped",[40,102,41]],[[9378,9378],"disallowed_STD3_mapped",[40,103,41]],[[9379,9379],"disallowed_STD3_mapped",[40,104,41]],[[9380,9380],"disallowed_STD3_mapped",[40,105,41]],[[9381,9381],"disallowed_STD3_mapped",[40,106,41]],[[9382,9382],"disallowed_STD3_mapped",[40,107,41]],[[9383,9383],"disallowed_STD3_mapped",[40,108,41]],[[9384,9384],"disallowed_STD3_mapped",[40,109,41]],[[9385,9385],"disallowed_STD3_mapped",[40,110,41]],[[9386,9386],"disallowed_STD3_mapped",[40,111,41]],[[9387,9387],"disallowed_STD3_mapped",[40,112,41]],[[9388,9388],"disallowed_STD3_mapped",[40,113,41]],[[9389,9389],"disallowed_STD3_mapped",[40,114,41]],[[9390,9390],"disallowed_STD3_mapped",[40,115,41]],[[9391,9391],"disallowed_STD3_mapped",[40,116,41]],[[9392,9392],"disallowed_STD3_mapped",[40,117,41]],[[9393,9393],"disallowed_STD3_mapped",[40,118,41]],[[9394,9394],"disallowed_STD3_mapped",[40,119,41]],[[9395,9395],"disallowed_STD3_mapped",[40,120,41]],[[9396,9396],"disallowed_STD3_mapped",[40,121,41]],[[9397,9397],"disallowed_STD3_mapped",[40,122,41]],[[9398,9398],"mapped",[97]],[[9399,9399],"mapped",[98]],[[9400,9400],"mapped",[99]],[[9401,9401],"mapped",[100]],[[9402,9402],"mapped",[101]],[[9403,9403],"mapped",[102]],[[9404,9404],"mapped",[103]],[[9405,9405],"mapped",[104]],[[9406,9406],"mapped",[105]],[[9407,9407],"mapped",[106]],[[9408,9408],"mapped",[107]],[[9409,9409],"mapped",[108]],[[9410,9410],"mapped",[109]],[[9411,9411],"mapped",[110]],[[9412,9412],"mapped",[111]],[[9413,9413],"mapped",[112]],[[9414,9414],"mapped",[113]],[[9415,9415],"mapped",[114]],[[9416,9416],"mapped",[115]],[[9417,9417],"mapped",[116]],[[9418,9418],"mapped",[117]],[[9419,9419],"mapped",[118]],[[9420,9420],"mapped",[119]],[[9421,9421],"mapped",[120]],[[9422,9422],"mapped",[121]],[[9423,9423],"mapped",[122]],[[9424,9424],"mapped",[97]],[[9425,9425],"mapped",[98]],[[9426,9426],"mapped",[99]],[[9427,9427],"mapped",[100]],[[9428,9428],"mapped",[101]],[[9429,9429],"mapped",[102]],[[9430,9430],"mapped",[103]],[[9431,9431],"mapped",[104]],[[9432,9432],"mapped",[105]],[[9433,9433],"mapped",[106]],[[9434,9434],"mapped",[107]],[[9435,9435],"mapped",[108]],[[9436,9436],"mapped",[109]],[[9437,9437],"mapped",[110]],[[9438,9438],"mapped",[111]],[[9439,9439],"mapped",[112]],[[9440,9440],"mapped",[113]],[[9441,9441],"mapped",[114]],[[9442,9442],"mapped",[115]],[[9443,9443],"mapped",[116]],[[9444,9444],"mapped",[117]],[[9445,9445],"mapped",[118]],[[9446,9446],"mapped",[119]],[[9447,9447],"mapped",[120]],[[9448,9448],"mapped",[121]],[[9449,9449],"mapped",[122]],[[9450,9450],"mapped",[48]],[[9451,9470],"valid",[],"NV8"],[[9471,9471],"valid",[],"NV8"],[[9472,9621],"valid",[],"NV8"],[[9622,9631],"valid",[],"NV8"],[[9632,9711],"valid",[],"NV8"],[[9712,9719],"valid",[],"NV8"],[[9720,9727],"valid",[],"NV8"],[[9728,9747],"valid",[],"NV8"],[[9748,9749],"valid",[],"NV8"],[[9750,9751],"valid",[],"NV8"],[[9752,9752],"valid",[],"NV8"],[[9753,9753],"valid",[],"NV8"],[[9754,9839],"valid",[],"NV8"],[[9840,9841],"valid",[],"NV8"],[[9842,9853],"valid",[],"NV8"],[[9854,9855],"valid",[],"NV8"],[[9856,9865],"valid",[],"NV8"],[[9866,9873],"valid",[],"NV8"],[[9874,9884],"valid",[],"NV8"],[[9885,9885],"valid",[],"NV8"],[[9886,9887],"valid",[],"NV8"],[[9888,9889],"valid",[],"NV8"],[[9890,9905],"valid",[],"NV8"],[[9906,9906],"valid",[],"NV8"],[[9907,9916],"valid",[],"NV8"],[[9917,9919],"valid",[],"NV8"],[[9920,9923],"valid",[],"NV8"],[[9924,9933],"valid",[],"NV8"],[[9934,9934],"valid",[],"NV8"],[[9935,9953],"valid",[],"NV8"],[[9954,9954],"valid",[],"NV8"],[[9955,9955],"valid",[],"NV8"],[[9956,9959],"valid",[],"NV8"],[[9960,9983],"valid",[],"NV8"],[[9984,9984],"valid",[],"NV8"],[[9985,9988],"valid",[],"NV8"],[[9989,9989],"valid",[],"NV8"],[[9990,9993],"valid",[],"NV8"],[[9994,9995],"valid",[],"NV8"],[[9996,10023],"valid",[],"NV8"],[[10024,10024],"valid",[],"NV8"],[[10025,10059],"valid",[],"NV8"],[[10060,10060],"valid",[],"NV8"],[[10061,10061],"valid",[],"NV8"],[[10062,10062],"valid",[],"NV8"],[[10063,10066],"valid",[],"NV8"],[[10067,10069],"valid",[],"NV8"],[[10070,10070],"valid",[],"NV8"],[[10071,10071],"valid",[],"NV8"],[[10072,10078],"valid",[],"NV8"],[[10079,10080],"valid",[],"NV8"],[[10081,10087],"valid",[],"NV8"],[[10088,10101],"valid",[],"NV8"],[[10102,10132],"valid",[],"NV8"],[[10133,10135],"valid",[],"NV8"],[[10136,10159],"valid",[],"NV8"],[[10160,10160],"valid",[],"NV8"],[[10161,10174],"valid",[],"NV8"],[[10175,10175],"valid",[],"NV8"],[[10176,10182],"valid",[],"NV8"],[[10183,10186],"valid",[],"NV8"],[[10187,10187],"valid",[],"NV8"],[[10188,10188],"valid",[],"NV8"],[[10189,10189],"valid",[],"NV8"],[[10190,10191],"valid",[],"NV8"],[[10192,10219],"valid",[],"NV8"],[[10220,10223],"valid",[],"NV8"],[[10224,10239],"valid",[],"NV8"],[[10240,10495],"valid",[],"NV8"],[[10496,10763],"valid",[],"NV8"],[[10764,10764],"mapped",[8747,8747,8747,8747]],[[10765,10867],"valid",[],"NV8"],[[10868,10868],"disallowed_STD3_mapped",[58,58,61]],[[10869,10869],"disallowed_STD3_mapped",[61,61]],[[10870,10870],"disallowed_STD3_mapped",[61,61,61]],[[10871,10971],"valid",[],"NV8"],[[10972,10972],"mapped",[10973,824]],[[10973,11007],"valid",[],"NV8"],[[11008,11021],"valid",[],"NV8"],[[11022,11027],"valid",[],"NV8"],[[11028,11034],"valid",[],"NV8"],[[11035,11039],"valid",[],"NV8"],[[11040,11043],"valid",[],"NV8"],[[11044,11084],"valid",[],"NV8"],[[11085,11087],"valid",[],"NV8"],[[11088,11092],"valid",[],"NV8"],[[11093,11097],"valid",[],"NV8"],[[11098,11123],"valid",[],"NV8"],[[11124,11125],"disallowed"],[[11126,11157],"valid",[],"NV8"],[[11158,11159],"disallowed"],[[11160,11193],"valid",[],"NV8"],[[11194,11196],"disallowed"],[[11197,11208],"valid",[],"NV8"],[[11209,11209],"disallowed"],[[11210,11217],"valid",[],"NV8"],[[11218,11243],"disallowed"],[[11244,11247],"valid",[],"NV8"],[[11248,11263],"disallowed"],[[11264,11264],"mapped",[11312]],[[11265,11265],"mapped",[11313]],[[11266,11266],"mapped",[11314]],[[11267,11267],"mapped",[11315]],[[11268,11268],"mapped",[11316]],[[11269,11269],"mapped",[11317]],[[11270,11270],"mapped",[11318]],[[11271,11271],"mapped",[11319]],[[11272,11272],"mapped",[11320]],[[11273,11273],"mapped",[11321]],[[11274,11274],"mapped",[11322]],[[11275,11275],"mapped",[11323]],[[11276,11276],"mapped",[11324]],[[11277,11277],"mapped",[11325]],[[11278,11278],"mapped",[11326]],[[11279,11279],"mapped",[11327]],[[11280,11280],"mapped",[11328]],[[11281,11281],"mapped",[11329]],[[11282,11282],"mapped",[11330]],[[11283,11283],"mapped",[11331]],[[11284,11284],"mapped",[11332]],[[11285,11285],"mapped",[11333]],[[11286,11286],"mapped",[11334]],[[11287,11287],"mapped",[11335]],[[11288,11288],"mapped",[11336]],[[11289,11289],"mapped",[11337]],[[11290,11290],"mapped",[11338]],[[11291,11291],"mapped",[11339]],[[11292,11292],"mapped",[11340]],[[11293,11293],"mapped",[11341]],[[11294,11294],"mapped",[11342]],[[11295,11295],"mapped",[11343]],[[11296,11296],"mapped",[11344]],[[11297,11297],"mapped",[11345]],[[11298,11298],"mapped",[11346]],[[11299,11299],"mapped",[11347]],[[11300,11300],"mapped",[11348]],[[11301,11301],"mapped",[11349]],[[11302,11302],"mapped",[11350]],[[11303,11303],"mapped",[11351]],[[11304,11304],"mapped",[11352]],[[11305,11305],"mapped",[11353]],[[11306,11306],"mapped",[11354]],[[11307,11307],"mapped",[11355]],[[11308,11308],"mapped",[11356]],[[11309,11309],"mapped",[11357]],[[11310,11310],"mapped",[11358]],[[11311,11311],"disallowed"],[[11312,11358],"valid"],[[11359,11359],"disallowed"],[[11360,11360],"mapped",[11361]],[[11361,11361],"valid"],[[11362,11362],"mapped",[619]],[[11363,11363],"mapped",[7549]],[[11364,11364],"mapped",[637]],[[11365,11366],"valid"],[[11367,11367],"mapped",[11368]],[[11368,11368],"valid"],[[11369,11369],"mapped",[11370]],[[11370,11370],"valid"],[[11371,11371],"mapped",[11372]],[[11372,11372],"valid"],[[11373,11373],"mapped",[593]],[[11374,11374],"mapped",[625]],[[11375,11375],"mapped",[592]],[[11376,11376],"mapped",[594]],[[11377,11377],"valid"],[[11378,11378],"mapped",[11379]],[[11379,11379],"valid"],[[11380,11380],"valid"],[[11381,11381],"mapped",[11382]],[[11382,11383],"valid"],[[11384,11387],"valid"],[[11388,11388],"mapped",[106]],[[11389,11389],"mapped",[118]],[[11390,11390],"mapped",[575]],[[11391,11391],"mapped",[576]],[[11392,11392],"mapped",[11393]],[[11393,11393],"valid"],[[11394,11394],"mapped",[11395]],[[11395,11395],"valid"],[[11396,11396],"mapped",[11397]],[[11397,11397],"valid"],[[11398,11398],"mapped",[11399]],[[11399,11399],"valid"],[[11400,11400],"mapped",[11401]],[[11401,11401],"valid"],[[11402,11402],"mapped",[11403]],[[11403,11403],"valid"],[[11404,11404],"mapped",[11405]],[[11405,11405],"valid"],[[11406,11406],"mapped",[11407]],[[11407,11407],"valid"],[[11408,11408],"mapped",[11409]],[[11409,11409],"valid"],[[11410,11410],"mapped",[11411]],[[11411,11411],"valid"],[[11412,11412],"mapped",[11413]],[[11413,11413],"valid"],[[11414,11414],"mapped",[11415]],[[11415,11415],"valid"],[[11416,11416],"mapped",[11417]],[[11417,11417],"valid"],[[11418,11418],"mapped",[11419]],[[11419,11419],"valid"],[[11420,11420],"mapped",[11421]],[[11421,11421],"valid"],[[11422,11422],"mapped",[11423]],[[11423,11423],"valid"],[[11424,11424],"mapped",[11425]],[[11425,11425],"valid"],[[11426,11426],"mapped",[11427]],[[11427,11427],"valid"],[[11428,11428],"mapped",[11429]],[[11429,11429],"valid"],[[11430,11430],"mapped",[11431]],[[11431,11431],"valid"],[[11432,11432],"mapped",[11433]],[[11433,11433],"valid"],[[11434,11434],"mapped",[11435]],[[11435,11435],"valid"],[[11436,11436],"mapped",[11437]],[[11437,11437],"valid"],[[11438,11438],"mapped",[11439]],[[11439,11439],"valid"],[[11440,11440],"mapped",[11441]],[[11441,11441],"valid"],[[11442,11442],"mapped",[11443]],[[11443,11443],"valid"],[[11444,11444],"mapped",[11445]],[[11445,11445],"valid"],[[11446,11446],"mapped",[11447]],[[11447,11447],"valid"],[[11448,11448],"mapped",[11449]],[[11449,11449],"valid"],[[11450,11450],"mapped",[11451]],[[11451,11451],"valid"],[[11452,11452],"mapped",[11453]],[[11453,11453],"valid"],[[11454,11454],"mapped",[11455]],[[11455,11455],"valid"],[[11456,11456],"mapped",[11457]],[[11457,11457],"valid"],[[11458,11458],"mapped",[11459]],[[11459,11459],"valid"],[[11460,11460],"mapped",[11461]],[[11461,11461],"valid"],[[11462,11462],"mapped",[11463]],[[11463,11463],"valid"],[[11464,11464],"mapped",[11465]],[[11465,11465],"valid"],[[11466,11466],"mapped",[11467]],[[11467,11467],"valid"],[[11468,11468],"mapped",[11469]],[[11469,11469],"valid"],[[11470,11470],"mapped",[11471]],[[11471,11471],"valid"],[[11472,11472],"mapped",[11473]],[[11473,11473],"valid"],[[11474,11474],"mapped",[11475]],[[11475,11475],"valid"],[[11476,11476],"mapped",[11477]],[[11477,11477],"valid"],[[11478,11478],"mapped",[11479]],[[11479,11479],"valid"],[[11480,11480],"mapped",[11481]],[[11481,11481],"valid"],[[11482,11482],"mapped",[11483]],[[11483,11483],"valid"],[[11484,11484],"mapped",[11485]],[[11485,11485],"valid"],[[11486,11486],"mapped",[11487]],[[11487,11487],"valid"],[[11488,11488],"mapped",[11489]],[[11489,11489],"valid"],[[11490,11490],"mapped",[11491]],[[11491,11492],"valid"],[[11493,11498],"valid",[],"NV8"],[[11499,11499],"mapped",[11500]],[[11500,11500],"valid"],[[11501,11501],"mapped",[11502]],[[11502,11505],"valid"],[[11506,11506],"mapped",[11507]],[[11507,11507],"valid"],[[11508,11512],"disallowed"],[[11513,11519],"valid",[],"NV8"],[[11520,11557],"valid"],[[11558,11558],"disallowed"],[[11559,11559],"valid"],[[11560,11564],"disallowed"],[[11565,11565],"valid"],[[11566,11567],"disallowed"],[[11568,11621],"valid"],[[11622,11623],"valid"],[[11624,11630],"disallowed"],[[11631,11631],"mapped",[11617]],[[11632,11632],"valid",[],"NV8"],[[11633,11646],"disallowed"],[[11647,11647],"valid"],[[11648,11670],"valid"],[[11671,11679],"disallowed"],[[11680,11686],"valid"],[[11687,11687],"disallowed"],[[11688,11694],"valid"],[[11695,11695],"disallowed"],[[11696,11702],"valid"],[[11703,11703],"disallowed"],[[11704,11710],"valid"],[[11711,11711],"disallowed"],[[11712,11718],"valid"],[[11719,11719],"disallowed"],[[11720,11726],"valid"],[[11727,11727],"disallowed"],[[11728,11734],"valid"],[[11735,11735],"disallowed"],[[11736,11742],"valid"],[[11743,11743],"disallowed"],[[11744,11775],"valid"],[[11776,11799],"valid",[],"NV8"],[[11800,11803],"valid",[],"NV8"],[[11804,11805],"valid",[],"NV8"],[[11806,11822],"valid",[],"NV8"],[[11823,11823],"valid"],[[11824,11824],"valid",[],"NV8"],[[11825,11825],"valid",[],"NV8"],[[11826,11835],"valid",[],"NV8"],[[11836,11842],"valid",[],"NV8"],[[11843,11903],"disallowed"],[[11904,11929],"valid",[],"NV8"],[[11930,11930],"disallowed"],[[11931,11934],"valid",[],"NV8"],[[11935,11935],"mapped",[27597]],[[11936,12018],"valid",[],"NV8"],[[12019,12019],"mapped",[40863]],[[12020,12031],"disallowed"],[[12032,12032],"mapped",[19968]],[[12033,12033],"mapped",[20008]],[[12034,12034],"mapped",[20022]],[[12035,12035],"mapped",[20031]],[[12036,12036],"mapped",[20057]],[[12037,12037],"mapped",[20101]],[[12038,12038],"mapped",[20108]],[[12039,12039],"mapped",[20128]],[[12040,12040],"mapped",[20154]],[[12041,12041],"mapped",[20799]],[[12042,12042],"mapped",[20837]],[[12043,12043],"mapped",[20843]],[[12044,12044],"mapped",[20866]],[[12045,12045],"mapped",[20886]],[[12046,12046],"mapped",[20907]],[[12047,12047],"mapped",[20960]],[[12048,12048],"mapped",[20981]],[[12049,12049],"mapped",[20992]],[[12050,12050],"mapped",[21147]],[[12051,12051],"mapped",[21241]],[[12052,12052],"mapped",[21269]],[[12053,12053],"mapped",[21274]],[[12054,12054],"mapped",[21304]],[[12055,12055],"mapped",[21313]],[[12056,12056],"mapped",[21340]],[[12057,12057],"mapped",[21353]],[[12058,12058],"mapped",[21378]],[[12059,12059],"mapped",[21430]],[[12060,12060],"mapped",[21448]],[[12061,12061],"mapped",[21475]],[[12062,12062],"mapped",[22231]],[[12063,12063],"mapped",[22303]],[[12064,12064],"mapped",[22763]],[[12065,12065],"mapped",[22786]],[[12066,12066],"mapped",[22794]],[[12067,12067],"mapped",[22805]],[[12068,12068],"mapped",[22823]],[[12069,12069],"mapped",[22899]],[[12070,12070],"mapped",[23376]],[[12071,12071],"mapped",[23424]],[[12072,12072],"mapped",[23544]],[[12073,12073],"mapped",[23567]],[[12074,12074],"mapped",[23586]],[[12075,12075],"mapped",[23608]],[[12076,12076],"mapped",[23662]],[[12077,12077],"mapped",[23665]],[[12078,12078],"mapped",[24027]],[[12079,12079],"mapped",[24037]],[[12080,12080],"mapped",[24049]],[[12081,12081],"mapped",[24062]],[[12082,12082],"mapped",[24178]],[[12083,12083],"mapped",[24186]],[[12084,12084],"mapped",[24191]],[[12085,12085],"mapped",[24308]],[[12086,12086],"mapped",[24318]],[[12087,12087],"mapped",[24331]],[[12088,12088],"mapped",[24339]],[[12089,12089],"mapped",[24400]],[[12090,12090],"mapped",[24417]],[[12091,12091],"mapped",[24435]],[[12092,12092],"mapped",[24515]],[[12093,12093],"mapped",[25096]],[[12094,12094],"mapped",[25142]],[[12095,12095],"mapped",[25163]],[[12096,12096],"mapped",[25903]],[[12097,12097],"mapped",[25908]],[[12098,12098],"mapped",[25991]],[[12099,12099],"mapped",[26007]],[[12100,12100],"mapped",[26020]],[[12101,12101],"mapped",[26041]],[[12102,12102],"mapped",[26080]],[[12103,12103],"mapped",[26085]],[[12104,12104],"mapped",[26352]],[[12105,12105],"mapped",[26376]],[[12106,12106],"mapped",[26408]],[[12107,12107],"mapped",[27424]],[[12108,12108],"mapped",[27490]],[[12109,12109],"mapped",[27513]],[[12110,12110],"mapped",[27571]],[[12111,12111],"mapped",[27595]],[[12112,12112],"mapped",[27604]],[[12113,12113],"mapped",[27611]],[[12114,12114],"mapped",[27663]],[[12115,12115],"mapped",[27668]],[[12116,12116],"mapped",[27700]],[[12117,12117],"mapped",[28779]],[[12118,12118],"mapped",[29226]],[[12119,12119],"mapped",[29238]],[[12120,12120],"mapped",[29243]],[[12121,12121],"mapped",[29247]],[[12122,12122],"mapped",[29255]],[[12123,12123],"mapped",[29273]],[[12124,12124],"mapped",[29275]],[[12125,12125],"mapped",[29356]],[[12126,12126],"mapped",[29572]],[[12127,12127],"mapped",[29577]],[[12128,12128],"mapped",[29916]],[[12129,12129],"mapped",[29926]],[[12130,12130],"mapped",[29976]],[[12131,12131],"mapped",[29983]],[[12132,12132],"mapped",[29992]],[[12133,12133],"mapped",[30000]],[[12134,12134],"mapped",[30091]],[[12135,12135],"mapped",[30098]],[[12136,12136],"mapped",[30326]],[[12137,12137],"mapped",[30333]],[[12138,12138],"mapped",[30382]],[[12139,12139],"mapped",[30399]],[[12140,12140],"mapped",[30446]],[[12141,12141],"mapped",[30683]],[[12142,12142],"mapped",[30690]],[[12143,12143],"mapped",[30707]],[[12144,12144],"mapped",[31034]],[[12145,12145],"mapped",[31160]],[[12146,12146],"mapped",[31166]],[[12147,12147],"mapped",[31348]],[[12148,12148],"mapped",[31435]],[[12149,12149],"mapped",[31481]],[[12150,12150],"mapped",[31859]],[[12151,12151],"mapped",[31992]],[[12152,12152],"mapped",[32566]],[[12153,12153],"mapped",[32593]],[[12154,12154],"mapped",[32650]],[[12155,12155],"mapped",[32701]],[[12156,12156],"mapped",[32769]],[[12157,12157],"mapped",[32780]],[[12158,12158],"mapped",[32786]],[[12159,12159],"mapped",[32819]],[[12160,12160],"mapped",[32895]],[[12161,12161],"mapped",[32905]],[[12162,12162],"mapped",[33251]],[[12163,12163],"mapped",[33258]],[[12164,12164],"mapped",[33267]],[[12165,12165],"mapped",[33276]],[[12166,12166],"mapped",[33292]],[[12167,12167],"mapped",[33307]],[[12168,12168],"mapped",[33311]],[[12169,12169],"mapped",[33390]],[[12170,12170],"mapped",[33394]],[[12171,12171],"mapped",[33400]],[[12172,12172],"mapped",[34381]],[[12173,12173],"mapped",[34411]],[[12174,12174],"mapped",[34880]],[[12175,12175],"mapped",[34892]],[[12176,12176],"mapped",[34915]],[[12177,12177],"mapped",[35198]],[[12178,12178],"mapped",[35211]],[[12179,12179],"mapped",[35282]],[[12180,12180],"mapped",[35328]],[[12181,12181],"mapped",[35895]],[[12182,12182],"mapped",[35910]],[[12183,12183],"mapped",[35925]],[[12184,12184],"mapped",[35960]],[[12185,12185],"mapped",[35997]],[[12186,12186],"mapped",[36196]],[[12187,12187],"mapped",[36208]],[[12188,12188],"mapped",[36275]],[[12189,12189],"mapped",[36523]],[[12190,12190],"mapped",[36554]],[[12191,12191],"mapped",[36763]],[[12192,12192],"mapped",[36784]],[[12193,12193],"mapped",[36789]],[[12194,12194],"mapped",[37009]],[[12195,12195],"mapped",[37193]],[[12196,12196],"mapped",[37318]],[[12197,12197],"mapped",[37324]],[[12198,12198],"mapped",[37329]],[[12199,12199],"mapped",[38263]],[[12200,12200],"mapped",[38272]],[[12201,12201],"mapped",[38428]],[[12202,12202],"mapped",[38582]],[[12203,12203],"mapped",[38585]],[[12204,12204],"mapped",[38632]],[[12205,12205],"mapped",[38737]],[[12206,12206],"mapped",[38750]],[[12207,12207],"mapped",[38754]],[[12208,12208],"mapped",[38761]],[[12209,12209],"mapped",[38859]],[[12210,12210],"mapped",[38893]],[[12211,12211],"mapped",[38899]],[[12212,12212],"mapped",[38913]],[[12213,12213],"mapped",[39080]],[[12214,12214],"mapped",[39131]],[[12215,12215],"mapped",[39135]],[[12216,12216],"mapped",[39318]],[[12217,12217],"mapped",[39321]],[[12218,12218],"mapped",[39340]],[[12219,12219],"mapped",[39592]],[[12220,12220],"mapped",[39640]],[[12221,12221],"mapped",[39647]],[[12222,12222],"mapped",[39717]],[[12223,12223],"mapped",[39727]],[[12224,12224],"mapped",[39730]],[[12225,12225],"mapped",[39740]],[[12226,12226],"mapped",[39770]],[[12227,12227],"mapped",[40165]],[[12228,12228],"mapped",[40565]],[[12229,12229],"mapped",[40575]],[[12230,12230],"mapped",[40613]],[[12231,12231],"mapped",[40635]],[[12232,12232],"mapped",[40643]],[[12233,12233],"mapped",[40653]],[[12234,12234],"mapped",[40657]],[[12235,12235],"mapped",[40697]],[[12236,12236],"mapped",[40701]],[[12237,12237],"mapped",[40718]],[[12238,12238],"mapped",[40723]],[[12239,12239],"mapped",[40736]],[[12240,12240],"mapped",[40763]],[[12241,12241],"mapped",[40778]],[[12242,12242],"mapped",[40786]],[[12243,12243],"mapped",[40845]],[[12244,12244],"mapped",[40860]],[[12245,12245],"mapped",[40864]],[[12246,12271],"disallowed"],[[12272,12283],"disallowed"],[[12284,12287],"disallowed"],[[12288,12288],"disallowed_STD3_mapped",[32]],[[12289,12289],"valid",[],"NV8"],[[12290,12290],"mapped",[46]],[[12291,12292],"valid",[],"NV8"],[[12293,12295],"valid"],[[12296,12329],"valid",[],"NV8"],[[12330,12333],"valid"],[[12334,12341],"valid",[],"NV8"],[[12342,12342],"mapped",[12306]],[[12343,12343],"valid",[],"NV8"],[[12344,12344],"mapped",[21313]],[[12345,12345],"mapped",[21316]],[[12346,12346],"mapped",[21317]],[[12347,12347],"valid",[],"NV8"],[[12348,12348],"valid"],[[12349,12349],"valid",[],"NV8"],[[12350,12350],"valid",[],"NV8"],[[12351,12351],"valid",[],"NV8"],[[12352,12352],"disallowed"],[[12353,12436],"valid"],[[12437,12438],"valid"],[[12439,12440],"disallowed"],[[12441,12442],"valid"],[[12443,12443],"disallowed_STD3_mapped",[32,12441]],[[12444,12444],"disallowed_STD3_mapped",[32,12442]],[[12445,12446],"valid"],[[12447,12447],"mapped",[12424,12426]],[[12448,12448],"valid",[],"NV8"],[[12449,12542],"valid"],[[12543,12543],"mapped",[12467,12488]],[[12544,12548],"disallowed"],[[12549,12588],"valid"],[[12589,12589],"valid"],[[12590,12592],"disallowed"],[[12593,12593],"mapped",[4352]],[[12594,12594],"mapped",[4353]],[[12595,12595],"mapped",[4522]],[[12596,12596],"mapped",[4354]],[[12597,12597],"mapped",[4524]],[[12598,12598],"mapped",[4525]],[[12599,12599],"mapped",[4355]],[[12600,12600],"mapped",[4356]],[[12601,12601],"mapped",[4357]],[[12602,12602],"mapped",[4528]],[[12603,12603],"mapped",[4529]],[[12604,12604],"mapped",[4530]],[[12605,12605],"mapped",[4531]],[[12606,12606],"mapped",[4532]],[[12607,12607],"mapped",[4533]],[[12608,12608],"mapped",[4378]],[[12609,12609],"mapped",[4358]],[[12610,12610],"mapped",[4359]],[[12611,12611],"mapped",[4360]],[[12612,12612],"mapped",[4385]],[[12613,12613],"mapped",[4361]],[[12614,12614],"mapped",[4362]],[[12615,12615],"mapped",[4363]],[[12616,12616],"mapped",[4364]],[[12617,12617],"mapped",[4365]],[[12618,12618],"mapped",[4366]],[[12619,12619],"mapped",[4367]],[[12620,12620],"mapped",[4368]],[[12621,12621],"mapped",[4369]],[[12622,12622],"mapped",[4370]],[[12623,12623],"mapped",[4449]],[[12624,12624],"mapped",[4450]],[[12625,12625],"mapped",[4451]],[[12626,12626],"mapped",[4452]],[[12627,12627],"mapped",[4453]],[[12628,12628],"mapped",[4454]],[[12629,12629],"mapped",[4455]],[[12630,12630],"mapped",[4456]],[[12631,12631],"mapped",[4457]],[[12632,12632],"mapped",[4458]],[[12633,12633],"mapped",[4459]],[[12634,12634],"mapped",[4460]],[[12635,12635],"mapped",[4461]],[[12636,12636],"mapped",[4462]],[[12637,12637],"mapped",[4463]],[[12638,12638],"mapped",[4464]],[[12639,12639],"mapped",[4465]],[[12640,12640],"mapped",[4466]],[[12641,12641],"mapped",[4467]],[[12642,12642],"mapped",[4468]],[[12643,12643],"mapped",[4469]],[[12644,12644],"disallowed"],[[12645,12645],"mapped",[4372]],[[12646,12646],"mapped",[4373]],[[12647,12647],"mapped",[4551]],[[12648,12648],"mapped",[4552]],[[12649,12649],"mapped",[4556]],[[12650,12650],"mapped",[4558]],[[12651,12651],"mapped",[4563]],[[12652,12652],"mapped",[4567]],[[12653,12653],"mapped",[4569]],[[12654,12654],"mapped",[4380]],[[12655,12655],"mapped",[4573]],[[12656,12656],"mapped",[4575]],[[12657,12657],"mapped",[4381]],[[12658,12658],"mapped",[4382]],[[12659,12659],"mapped",[4384]],[[12660,12660],"mapped",[4386]],[[12661,12661],"mapped",[4387]],[[12662,12662],"mapped",[4391]],[[12663,12663],"mapped",[4393]],[[12664,12664],"mapped",[4395]],[[12665,12665],"mapped",[4396]],[[12666,12666],"mapped",[4397]],[[12667,12667],"mapped",[4398]],[[12668,12668],"mapped",[4399]],[[12669,12669],"mapped",[4402]],[[12670,12670],"mapped",[4406]],[[12671,12671],"mapped",[4416]],[[12672,12672],"mapped",[4423]],[[12673,12673],"mapped",[4428]],[[12674,12674],"mapped",[4593]],[[12675,12675],"mapped",[4594]],[[12676,12676],"mapped",[4439]],[[12677,12677],"mapped",[4440]],[[12678,12678],"mapped",[4441]],[[12679,12679],"mapped",[4484]],[[12680,12680],"mapped",[4485]],[[12681,12681],"mapped",[4488]],[[12682,12682],"mapped",[4497]],[[12683,12683],"mapped",[4498]],[[12684,12684],"mapped",[4500]],[[12685,12685],"mapped",[4510]],[[12686,12686],"mapped",[4513]],[[12687,12687],"disallowed"],[[12688,12689],"valid",[],"NV8"],[[12690,12690],"mapped",[19968]],[[12691,12691],"mapped",[20108]],[[12692,12692],"mapped",[19977]],[[12693,12693],"mapped",[22235]],[[12694,12694],"mapped",[19978]],[[12695,12695],"mapped",[20013]],[[12696,12696],"mapped",[19979]],[[12697,12697],"mapped",[30002]],[[12698,12698],"mapped",[20057]],[[12699,12699],"mapped",[19993]],[[12700,12700],"mapped",[19969]],[[12701,12701],"mapped",[22825]],[[12702,12702],"mapped",[22320]],[[12703,12703],"mapped",[20154]],[[12704,12727],"valid"],[[12728,12730],"valid"],[[12731,12735],"disallowed"],[[12736,12751],"valid",[],"NV8"],[[12752,12771],"valid",[],"NV8"],[[12772,12783],"disallowed"],[[12784,12799],"valid"],[[12800,12800],"disallowed_STD3_mapped",[40,4352,41]],[[12801,12801],"disallowed_STD3_mapped",[40,4354,41]],[[12802,12802],"disallowed_STD3_mapped",[40,4355,41]],[[12803,12803],"disallowed_STD3_mapped",[40,4357,41]],[[12804,12804],"disallowed_STD3_mapped",[40,4358,41]],[[12805,12805],"disallowed_STD3_mapped",[40,4359,41]],[[12806,12806],"disallowed_STD3_mapped",[40,4361,41]],[[12807,12807],"disallowed_STD3_mapped",[40,4363,41]],[[12808,12808],"disallowed_STD3_mapped",[40,4364,41]],[[12809,12809],"disallowed_STD3_mapped",[40,4366,41]],[[12810,12810],"disallowed_STD3_mapped",[40,4367,41]],[[12811,12811],"disallowed_STD3_mapped",[40,4368,41]],[[12812,12812],"disallowed_STD3_mapped",[40,4369,41]],[[12813,12813],"disallowed_STD3_mapped",[40,4370,41]],[[12814,12814],"disallowed_STD3_mapped",[40,44032,41]],[[12815,12815],"disallowed_STD3_mapped",[40,45208,41]],[[12816,12816],"disallowed_STD3_mapped",[40,45796,41]],[[12817,12817],"disallowed_STD3_mapped",[40,46972,41]],[[12818,12818],"disallowed_STD3_mapped",[40,47560,41]],[[12819,12819],"disallowed_STD3_mapped",[40,48148,41]],[[12820,12820],"disallowed_STD3_mapped",[40,49324,41]],[[12821,12821],"disallowed_STD3_mapped",[40,50500,41]],[[12822,12822],"disallowed_STD3_mapped",[40,51088,41]],[[12823,12823],"disallowed_STD3_mapped",[40,52264,41]],[[12824,12824],"disallowed_STD3_mapped",[40,52852,41]],[[12825,12825],"disallowed_STD3_mapped",[40,53440,41]],[[12826,12826],"disallowed_STD3_mapped",[40,54028,41]],[[12827,12827],"disallowed_STD3_mapped",[40,54616,41]],[[12828,12828],"disallowed_STD3_mapped",[40,51452,41]],[[12829,12829],"disallowed_STD3_mapped",[40,50724,51204,41]],[[12830,12830],"disallowed_STD3_mapped",[40,50724,54980,41]],[[12831,12831],"disallowed"],[[12832,12832],"disallowed_STD3_mapped",[40,19968,41]],[[12833,12833],"disallowed_STD3_mapped",[40,20108,41]],[[12834,12834],"disallowed_STD3_mapped",[40,19977,41]],[[12835,12835],"disallowed_STD3_mapped",[40,22235,41]],[[12836,12836],"disallowed_STD3_mapped",[40,20116,41]],[[12837,12837],"disallowed_STD3_mapped",[40,20845,41]],[[12838,12838],"disallowed_STD3_mapped",[40,19971,41]],[[12839,12839],"disallowed_STD3_mapped",[40,20843,41]],[[12840,12840],"disallowed_STD3_mapped",[40,20061,41]],[[12841,12841],"disallowed_STD3_mapped",[40,21313,41]],[[12842,12842],"disallowed_STD3_mapped",[40,26376,41]],[[12843,12843],"disallowed_STD3_mapped",[40,28779,41]],[[12844,12844],"disallowed_STD3_mapped",[40,27700,41]],[[12845,12845],"disallowed_STD3_mapped",[40,26408,41]],[[12846,12846],"disallowed_STD3_mapped",[40,37329,41]],[[12847,12847],"disallowed_STD3_mapped",[40,22303,41]],[[12848,12848],"disallowed_STD3_mapped",[40,26085,41]],[[12849,12849],"disallowed_STD3_mapped",[40,26666,41]],[[12850,12850],"disallowed_STD3_mapped",[40,26377,41]],[[12851,12851],"disallowed_STD3_mapped",[40,31038,41]],[[12852,12852],"disallowed_STD3_mapped",[40,21517,41]],[[12853,12853],"disallowed_STD3_mapped",[40,29305,41]],[[12854,12854],"disallowed_STD3_mapped",[40,36001,41]],[[12855,12855],"disallowed_STD3_mapped",[40,31069,41]],[[12856,12856],"disallowed_STD3_mapped",[40,21172,41]],[[12857,12857],"disallowed_STD3_mapped",[40,20195,41]],[[12858,12858],"disallowed_STD3_mapped",[40,21628,41]],[[12859,12859],"disallowed_STD3_mapped",[40,23398,41]],[[12860,12860],"disallowed_STD3_mapped",[40,30435,41]],[[12861,12861],"disallowed_STD3_mapped",[40,20225,41]],[[12862,12862],"disallowed_STD3_mapped",[40,36039,41]],[[12863,12863],"disallowed_STD3_mapped",[40,21332,41]],[[12864,12864],"disallowed_STD3_mapped",[40,31085,41]],[[12865,12865],"disallowed_STD3_mapped",[40,20241,41]],[[12866,12866],"disallowed_STD3_mapped",[40,33258,41]],[[12867,12867],"disallowed_STD3_mapped",[40,33267,41]],[[12868,12868],"mapped",[21839]],[[12869,12869],"mapped",[24188]],[[12870,12870],"mapped",[25991]],[[12871,12871],"mapped",[31631]],[[12872,12879],"valid",[],"NV8"],[[12880,12880],"mapped",[112,116,101]],[[12881,12881],"mapped",[50,49]],[[12882,12882],"mapped",[50,50]],[[12883,12883],"mapped",[50,51]],[[12884,12884],"mapped",[50,52]],[[12885,12885],"mapped",[50,53]],[[12886,12886],"mapped",[50,54]],[[12887,12887],"mapped",[50,55]],[[12888,12888],"mapped",[50,56]],[[12889,12889],"mapped",[50,57]],[[12890,12890],"mapped",[51,48]],[[12891,12891],"mapped",[51,49]],[[12892,12892],"mapped",[51,50]],[[12893,12893],"mapped",[51,51]],[[12894,12894],"mapped",[51,52]],[[12895,12895],"mapped",[51,53]],[[12896,12896],"mapped",[4352]],[[12897,12897],"mapped",[4354]],[[12898,12898],"mapped",[4355]],[[12899,12899],"mapped",[4357]],[[12900,12900],"mapped",[4358]],[[12901,12901],"mapped",[4359]],[[12902,12902],"mapped",[4361]],[[12903,12903],"mapped",[4363]],[[12904,12904],"mapped",[4364]],[[12905,12905],"mapped",[4366]],[[12906,12906],"mapped",[4367]],[[12907,12907],"mapped",[4368]],[[12908,12908],"mapped",[4369]],[[12909,12909],"mapped",[4370]],[[12910,12910],"mapped",[44032]],[[12911,12911],"mapped",[45208]],[[12912,12912],"mapped",[45796]],[[12913,12913],"mapped",[46972]],[[12914,12914],"mapped",[47560]],[[12915,12915],"mapped",[48148]],[[12916,12916],"mapped",[49324]],[[12917,12917],"mapped",[50500]],[[12918,12918],"mapped",[51088]],[[12919,12919],"mapped",[52264]],[[12920,12920],"mapped",[52852]],[[12921,12921],"mapped",[53440]],[[12922,12922],"mapped",[54028]],[[12923,12923],"mapped",[54616]],[[12924,12924],"mapped",[52280,44256]],[[12925,12925],"mapped",[51452,51032]],[[12926,12926],"mapped",[50864]],[[12927,12927],"valid",[],"NV8"],[[12928,12928],"mapped",[19968]],[[12929,12929],"mapped",[20108]],[[12930,12930],"mapped",[19977]],[[12931,12931],"mapped",[22235]],[[12932,12932],"mapped",[20116]],[[12933,12933],"mapped",[20845]],[[12934,12934],"mapped",[19971]],[[12935,12935],"mapped",[20843]],[[12936,12936],"mapped",[20061]],[[12937,12937],"mapped",[21313]],[[12938,12938],"mapped",[26376]],[[12939,12939],"mapped",[28779]],[[12940,12940],"mapped",[27700]],[[12941,12941],"mapped",[26408]],[[12942,12942],"mapped",[37329]],[[12943,12943],"mapped",[22303]],[[12944,12944],"mapped",[26085]],[[12945,12945],"mapped",[26666]],[[12946,12946],"mapped",[26377]],[[12947,12947],"mapped",[31038]],[[12948,12948],"mapped",[21517]],[[12949,12949],"mapped",[29305]],[[12950,12950],"mapped",[36001]],[[12951,12951],"mapped",[31069]],[[12952,12952],"mapped",[21172]],[[12953,12953],"mapped",[31192]],[[12954,12954],"mapped",[30007]],[[12955,12955],"mapped",[22899]],[[12956,12956],"mapped",[36969]],[[12957,12957],"mapped",[20778]],[[12958,12958],"mapped",[21360]],[[12959,12959],"mapped",[27880]],[[12960,12960],"mapped",[38917]],[[12961,12961],"mapped",[20241]],[[12962,12962],"mapped",[20889]],[[12963,12963],"mapped",[27491]],[[12964,12964],"mapped",[19978]],[[12965,12965],"mapped",[20013]],[[12966,12966],"mapped",[19979]],[[12967,12967],"mapped",[24038]],[[12968,12968],"mapped",[21491]],[[12969,12969],"mapped",[21307]],[[12970,12970],"mapped",[23447]],[[12971,12971],"mapped",[23398]],[[12972,12972],"mapped",[30435]],[[12973,12973],"mapped",[20225]],[[12974,12974],"mapped",[36039]],[[12975,12975],"mapped",[21332]],[[12976,12976],"mapped",[22812]],[[12977,12977],"mapped",[51,54]],[[12978,12978],"mapped",[51,55]],[[12979,12979],"mapped",[51,56]],[[12980,12980],"mapped",[51,57]],[[12981,12981],"mapped",[52,48]],[[12982,12982],"mapped",[52,49]],[[12983,12983],"mapped",[52,50]],[[12984,12984],"mapped",[52,51]],[[12985,12985],"mapped",[52,52]],[[12986,12986],"mapped",[52,53]],[[12987,12987],"mapped",[52,54]],[[12988,12988],"mapped",[52,55]],[[12989,12989],"mapped",[52,56]],[[12990,12990],"mapped",[52,57]],[[12991,12991],"mapped",[53,48]],[[12992,12992],"mapped",[49,26376]],[[12993,12993],"mapped",[50,26376]],[[12994,12994],"mapped",[51,26376]],[[12995,12995],"mapped",[52,26376]],[[12996,12996],"mapped",[53,26376]],[[12997,12997],"mapped",[54,26376]],[[12998,12998],"mapped",[55,26376]],[[12999,12999],"mapped",[56,26376]],[[13000,13000],"mapped",[57,26376]],[[13001,13001],"mapped",[49,48,26376]],[[13002,13002],"mapped",[49,49,26376]],[[13003,13003],"mapped",[49,50,26376]],[[13004,13004],"mapped",[104,103]],[[13005,13005],"mapped",[101,114,103]],[[13006,13006],"mapped",[101,118]],[[13007,13007],"mapped",[108,116,100]],[[13008,13008],"mapped",[12450]],[[13009,13009],"mapped",[12452]],[[13010,13010],"mapped",[12454]],[[13011,13011],"mapped",[12456]],[[13012,13012],"mapped",[12458]],[[13013,13013],"mapped",[12459]],[[13014,13014],"mapped",[12461]],[[13015,13015],"mapped",[12463]],[[13016,13016],"mapped",[12465]],[[13017,13017],"mapped",[12467]],[[13018,13018],"mapped",[12469]],[[13019,13019],"mapped",[12471]],[[13020,13020],"mapped",[12473]],[[13021,13021],"mapped",[12475]],[[13022,13022],"mapped",[12477]],[[13023,13023],"mapped",[12479]],[[13024,13024],"mapped",[12481]],[[13025,13025],"mapped",[12484]],[[13026,13026],"mapped",[12486]],[[13027,13027],"mapped",[12488]],[[13028,13028],"mapped",[12490]],[[13029,13029],"mapped",[12491]],[[13030,13030],"mapped",[12492]],[[13031,13031],"mapped",[12493]],[[13032,13032],"mapped",[12494]],[[13033,13033],"mapped",[12495]],[[13034,13034],"mapped",[12498]],[[13035,13035],"mapped",[12501]],[[13036,13036],"mapped",[12504]],[[13037,13037],"mapped",[12507]],[[13038,13038],"mapped",[12510]],[[13039,13039],"mapped",[12511]],[[13040,13040],"mapped",[12512]],[[13041,13041],"mapped",[12513]],[[13042,13042],"mapped",[12514]],[[13043,13043],"mapped",[12516]],[[13044,13044],"mapped",[12518]],[[13045,13045],"mapped",[12520]],[[13046,13046],"mapped",[12521]],[[13047,13047],"mapped",[12522]],[[13048,13048],"mapped",[12523]],[[13049,13049],"mapped",[12524]],[[13050,13050],"mapped",[12525]],[[13051,13051],"mapped",[12527]],[[13052,13052],"mapped",[12528]],[[13053,13053],"mapped",[12529]],[[13054,13054],"mapped",[12530]],[[13055,13055],"disallowed"],[[13056,13056],"mapped",[12450,12497,12540,12488]],[[13057,13057],"mapped",[12450,12523,12501,12449]],[[13058,13058],"mapped",[12450,12531,12506,12450]],[[13059,13059],"mapped",[12450,12540,12523]],[[13060,13060],"mapped",[12452,12491,12531,12464]],[[13061,13061],"mapped",[12452,12531,12481]],[[13062,13062],"mapped",[12454,12457,12531]],[[13063,13063],"mapped",[12456,12473,12463,12540,12489]],[[13064,13064],"mapped",[12456,12540,12459,12540]],[[13065,13065],"mapped",[12458,12531,12473]],[[13066,13066],"mapped",[12458,12540,12512]],[[13067,13067],"mapped",[12459,12452,12522]],[[13068,13068],"mapped",[12459,12521,12483,12488]],[[13069,13069],"mapped",[12459,12525,12522,12540]],[[13070,13070],"mapped",[12460,12525,12531]],[[13071,13071],"mapped",[12460,12531,12510]],[[13072,13072],"mapped",[12462,12460]],[[13073,13073],"mapped",[12462,12491,12540]],[[13074,13074],"mapped",[12461,12517,12522,12540]],[[13075,13075],"mapped",[12462,12523,12480,12540]],[[13076,13076],"mapped",[12461,12525]],[[13077,13077],"mapped",[12461,12525,12464,12521,12512]],[[13078,13078],"mapped",[12461,12525,12513,12540,12488,12523]],[[13079,13079],"mapped",[12461,12525,12527,12483,12488]],[[13080,13080],"mapped",[12464,12521,12512]],[[13081,13081],"mapped",[12464,12521,12512,12488,12531]],[[13082,13082],"mapped",[12463,12523,12476,12452,12525]],[[13083,13083],"mapped",[12463,12525,12540,12493]],[[13084,13084],"mapped",[12465,12540,12473]],[[13085,13085],"mapped",[12467,12523,12490]],[[13086,13086],"mapped",[12467,12540,12509]],[[13087,13087],"mapped",[12469,12452,12463,12523]],[[13088,13088],"mapped",[12469,12531,12481,12540,12512]],[[13089,13089],"mapped",[12471,12522,12531,12464]],[[13090,13090],"mapped",[12475,12531,12481]],[[13091,13091],"mapped",[12475,12531,12488]],[[13092,13092],"mapped",[12480,12540,12473]],[[13093,13093],"mapped",[12487,12471]],[[13094,13094],"mapped",[12489,12523]],[[13095,13095],"mapped",[12488,12531]],[[13096,13096],"mapped",[12490,12494]],[[13097,13097],"mapped",[12494,12483,12488]],[[13098,13098],"mapped",[12495,12452,12484]],[[13099,13099],"mapped",[12497,12540,12475,12531,12488]],[[13100,13100],"mapped",[12497,12540,12484]],[[13101,13101],"mapped",[12496,12540,12524,12523]],[[13102,13102],"mapped",[12500,12450,12473,12488,12523]],[[13103,13103],"mapped",[12500,12463,12523]],[[13104,13104],"mapped",[12500,12467]],[[13105,13105],"mapped",[12499,12523]],[[13106,13106],"mapped",[12501,12449,12521,12483,12489]],[[13107,13107],"mapped",[12501,12451,12540,12488]],[[13108,13108],"mapped",[12502,12483,12471,12455,12523]],[[13109,13109],"mapped",[12501,12521,12531]],[[13110,13110],"mapped",[12504,12463,12479,12540,12523]],[[13111,13111],"mapped",[12506,12477]],[[13112,13112],"mapped",[12506,12491,12498]],[[13113,13113],"mapped",[12504,12523,12484]],[[13114,13114],"mapped",[12506,12531,12473]],[[13115,13115],"mapped",[12506,12540,12472]],[[13116,13116],"mapped",[12505,12540,12479]],[[13117,13117],"mapped",[12509,12452,12531,12488]],[[13118,13118],"mapped",[12508,12523,12488]],[[13119,13119],"mapped",[12507,12531]],[[13120,13120],"mapped",[12509,12531,12489]],[[13121,13121],"mapped",[12507,12540,12523]],[[13122,13122],"mapped",[12507,12540,12531]],[[13123,13123],"mapped",[12510,12452,12463,12525]],[[13124,13124],"mapped",[12510,12452,12523]],[[13125,13125],"mapped",[12510,12483,12495]],[[13126,13126],"mapped",[12510,12523,12463]],[[13127,13127],"mapped",[12510,12531,12471,12519,12531]],[[13128,13128],"mapped",[12511,12463,12525,12531]],[[13129,13129],"mapped",[12511,12522]],[[13130,13130],"mapped",[12511,12522,12496,12540,12523]],[[13131,13131],"mapped",[12513,12460]],[[13132,13132],"mapped",[12513,12460,12488,12531]],[[13133,13133],"mapped",[12513,12540,12488,12523]],[[13134,13134],"mapped",[12516,12540,12489]],[[13135,13135],"mapped",[12516,12540,12523]],[[13136,13136],"mapped",[12518,12450,12531]],[[13137,13137],"mapped",[12522,12483,12488,12523]],[[13138,13138],"mapped",[12522,12521]],[[13139,13139],"mapped",[12523,12500,12540]],[[13140,13140],"mapped",[12523,12540,12502,12523]],[[13141,13141],"mapped",[12524,12512]],[[13142,13142],"mapped",[12524,12531,12488,12466,12531]],[[13143,13143],"mapped",[12527,12483,12488]],[[13144,13144],"mapped",[48,28857]],[[13145,13145],"mapped",[49,28857]],[[13146,13146],"mapped",[50,28857]],[[13147,13147],"mapped",[51,28857]],[[13148,13148],"mapped",[52,28857]],[[13149,13149],"mapped",[53,28857]],[[13150,13150],"mapped",[54,28857]],[[13151,13151],"mapped",[55,28857]],[[13152,13152],"mapped",[56,28857]],[[13153,13153],"mapped",[57,28857]],[[13154,13154],"mapped",[49,48,28857]],[[13155,13155],"mapped",[49,49,28857]],[[13156,13156],"mapped",[49,50,28857]],[[13157,13157],"mapped",[49,51,28857]],[[13158,13158],"mapped",[49,52,28857]],[[13159,13159],"mapped",[49,53,28857]],[[13160,13160],"mapped",[49,54,28857]],[[13161,13161],"mapped",[49,55,28857]],[[13162,13162],"mapped",[49,56,28857]],[[13163,13163],"mapped",[49,57,28857]],[[13164,13164],"mapped",[50,48,28857]],[[13165,13165],"mapped",[50,49,28857]],[[13166,13166],"mapped",[50,50,28857]],[[13167,13167],"mapped",[50,51,28857]],[[13168,13168],"mapped",[50,52,28857]],[[13169,13169],"mapped",[104,112,97]],[[13170,13170],"mapped",[100,97]],[[13171,13171],"mapped",[97,117]],[[13172,13172],"mapped",[98,97,114]],[[13173,13173],"mapped",[111,118]],[[13174,13174],"mapped",[112,99]],[[13175,13175],"mapped",[100,109]],[[13176,13176],"mapped",[100,109,50]],[[13177,13177],"mapped",[100,109,51]],[[13178,13178],"mapped",[105,117]],[[13179,13179],"mapped",[24179,25104]],[[13180,13180],"mapped",[26157,21644]],[[13181,13181],"mapped",[22823,27491]],[[13182,13182],"mapped",[26126,27835]],[[13183,13183],"mapped",[26666,24335,20250,31038]],[[13184,13184],"mapped",[112,97]],[[13185,13185],"mapped",[110,97]],[[13186,13186],"mapped",[956,97]],[[13187,13187],"mapped",[109,97]],[[13188,13188],"mapped",[107,97]],[[13189,13189],"mapped",[107,98]],[[13190,13190],"mapped",[109,98]],[[13191,13191],"mapped",[103,98]],[[13192,13192],"mapped",[99,97,108]],[[13193,13193],"mapped",[107,99,97,108]],[[13194,13194],"mapped",[112,102]],[[13195,13195],"mapped",[110,102]],[[13196,13196],"mapped",[956,102]],[[13197,13197],"mapped",[956,103]],[[13198,13198],"mapped",[109,103]],[[13199,13199],"mapped",[107,103]],[[13200,13200],"mapped",[104,122]],[[13201,13201],"mapped",[107,104,122]],[[13202,13202],"mapped",[109,104,122]],[[13203,13203],"mapped",[103,104,122]],[[13204,13204],"mapped",[116,104,122]],[[13205,13205],"mapped",[956,108]],[[13206,13206],"mapped",[109,108]],[[13207,13207],"mapped",[100,108]],[[13208,13208],"mapped",[107,108]],[[13209,13209],"mapped",[102,109]],[[13210,13210],"mapped",[110,109]],[[13211,13211],"mapped",[956,109]],[[13212,13212],"mapped",[109,109]],[[13213,13213],"mapped",[99,109]],[[13214,13214],"mapped",[107,109]],[[13215,13215],"mapped",[109,109,50]],[[13216,13216],"mapped",[99,109,50]],[[13217,13217],"mapped",[109,50]],[[13218,13218],"mapped",[107,109,50]],[[13219,13219],"mapped",[109,109,51]],[[13220,13220],"mapped",[99,109,51]],[[13221,13221],"mapped",[109,51]],[[13222,13222],"mapped",[107,109,51]],[[13223,13223],"mapped",[109,8725,115]],[[13224,13224],"mapped",[109,8725,115,50]],[[13225,13225],"mapped",[112,97]],[[13226,13226],"mapped",[107,112,97]],[[13227,13227],"mapped",[109,112,97]],[[13228,13228],"mapped",[103,112,97]],[[13229,13229],"mapped",[114,97,100]],[[13230,13230],"mapped",[114,97,100,8725,115]],[[13231,13231],"mapped",[114,97,100,8725,115,50]],[[13232,13232],"mapped",[112,115]],[[13233,13233],"mapped",[110,115]],[[13234,13234],"mapped",[956,115]],[[13235,13235],"mapped",[109,115]],[[13236,13236],"mapped",[112,118]],[[13237,13237],"mapped",[110,118]],[[13238,13238],"mapped",[956,118]],[[13239,13239],"mapped",[109,118]],[[13240,13240],"mapped",[107,118]],[[13241,13241],"mapped",[109,118]],[[13242,13242],"mapped",[112,119]],[[13243,13243],"mapped",[110,119]],[[13244,13244],"mapped",[956,119]],[[13245,13245],"mapped",[109,119]],[[13246,13246],"mapped",[107,119]],[[13247,13247],"mapped",[109,119]],[[13248,13248],"mapped",[107,969]],[[13249,13249],"mapped",[109,969]],[[13250,13250],"disallowed"],[[13251,13251],"mapped",[98,113]],[[13252,13252],"mapped",[99,99]],[[13253,13253],"mapped",[99,100]],[[13254,13254],"mapped",[99,8725,107,103]],[[13255,13255],"disallowed"],[[13256,13256],"mapped",[100,98]],[[13257,13257],"mapped",[103,121]],[[13258,13258],"mapped",[104,97]],[[13259,13259],"mapped",[104,112]],[[13260,13260],"mapped",[105,110]],[[13261,13261],"mapped",[107,107]],[[13262,13262],"mapped",[107,109]],[[13263,13263],"mapped",[107,116]],[[13264,13264],"mapped",[108,109]],[[13265,13265],"mapped",[108,110]],[[13266,13266],"mapped",[108,111,103]],[[13267,13267],"mapped",[108,120]],[[13268,13268],"mapped",[109,98]],[[13269,13269],"mapped",[109,105,108]],[[13270,13270],"mapped",[109,111,108]],[[13271,13271],"mapped",[112,104]],[[13272,13272],"disallowed"],[[13273,13273],"mapped",[112,112,109]],[[13274,13274],"mapped",[112,114]],[[13275,13275],"mapped",[115,114]],[[13276,13276],"mapped",[115,118]],[[13277,13277],"mapped",[119,98]],[[13278,13278],"mapped",[118,8725,109]],[[13279,13279],"mapped",[97,8725,109]],[[13280,13280],"mapped",[49,26085]],[[13281,13281],"mapped",[50,26085]],[[13282,13282],"mapped",[51,26085]],[[13283,13283],"mapped",[52,26085]],[[13284,13284],"mapped",[53,26085]],[[13285,13285],"mapped",[54,26085]],[[13286,13286],"mapped",[55,26085]],[[13287,13287],"mapped",[56,26085]],[[13288,13288],"mapped",[57,26085]],[[13289,13289],"mapped",[49,48,26085]],[[13290,13290],"mapped",[49,49,26085]],[[13291,13291],"mapped",[49,50,26085]],[[13292,13292],"mapped",[49,51,26085]],[[13293,13293],"mapped",[49,52,26085]],[[13294,13294],"mapped",[49,53,26085]],[[13295,13295],"mapped",[49,54,26085]],[[13296,13296],"mapped",[49,55,26085]],[[13297,13297],"mapped",[49,56,26085]],[[13298,13298],"mapped",[49,57,26085]],[[13299,13299],"mapped",[50,48,26085]],[[13300,13300],"mapped",[50,49,26085]],[[13301,13301],"mapped",[50,50,26085]],[[13302,13302],"mapped",[50,51,26085]],[[13303,13303],"mapped",[50,52,26085]],[[13304,13304],"mapped",[50,53,26085]],[[13305,13305],"mapped",[50,54,26085]],[[13306,13306],"mapped",[50,55,26085]],[[13307,13307],"mapped",[50,56,26085]],[[13308,13308],"mapped",[50,57,26085]],[[13309,13309],"mapped",[51,48,26085]],[[13310,13310],"mapped",[51,49,26085]],[[13311,13311],"mapped",[103,97,108]],[[13312,19893],"valid"],[[19894,19903],"disallowed"],[[19904,19967],"valid",[],"NV8"],[[19968,40869],"valid"],[[40870,40891],"valid"],[[40892,40899],"valid"],[[40900,40907],"valid"],[[40908,40908],"valid"],[[40909,40917],"valid"],[[40918,40959],"disallowed"],[[40960,42124],"valid"],[[42125,42127],"disallowed"],[[42128,42145],"valid",[],"NV8"],[[42146,42147],"valid",[],"NV8"],[[42148,42163],"valid",[],"NV8"],[[42164,42164],"valid",[],"NV8"],[[42165,42176],"valid",[],"NV8"],[[42177,42177],"valid",[],"NV8"],[[42178,42180],"valid",[],"NV8"],[[42181,42181],"valid",[],"NV8"],[[42182,42182],"valid",[],"NV8"],[[42183,42191],"disallowed"],[[42192,42237],"valid"],[[42238,42239],"valid",[],"NV8"],[[42240,42508],"valid"],[[42509,42511],"valid",[],"NV8"],[[42512,42539],"valid"],[[42540,42559],"disallowed"],[[42560,42560],"mapped",[42561]],[[42561,42561],"valid"],[[42562,42562],"mapped",[42563]],[[42563,42563],"valid"],[[42564,42564],"mapped",[42565]],[[42565,42565],"valid"],[[42566,42566],"mapped",[42567]],[[42567,42567],"valid"],[[42568,42568],"mapped",[42569]],[[42569,42569],"valid"],[[42570,42570],"mapped",[42571]],[[42571,42571],"valid"],[[42572,42572],"mapped",[42573]],[[42573,42573],"valid"],[[42574,42574],"mapped",[42575]],[[42575,42575],"valid"],[[42576,42576],"mapped",[42577]],[[42577,42577],"valid"],[[42578,42578],"mapped",[42579]],[[42579,42579],"valid"],[[42580,42580],"mapped",[42581]],[[42581,42581],"valid"],[[42582,42582],"mapped",[42583]],[[42583,42583],"valid"],[[42584,42584],"mapped",[42585]],[[42585,42585],"valid"],[[42586,42586],"mapped",[42587]],[[42587,42587],"valid"],[[42588,42588],"mapped",[42589]],[[42589,42589],"valid"],[[42590,42590],"mapped",[42591]],[[42591,42591],"valid"],[[42592,42592],"mapped",[42593]],[[42593,42593],"valid"],[[42594,42594],"mapped",[42595]],[[42595,42595],"valid"],[[42596,42596],"mapped",[42597]],[[42597,42597],"valid"],[[42598,42598],"mapped",[42599]],[[42599,42599],"valid"],[[42600,42600],"mapped",[42601]],[[42601,42601],"valid"],[[42602,42602],"mapped",[42603]],[[42603,42603],"valid"],[[42604,42604],"mapped",[42605]],[[42605,42607],"valid"],[[42608,42611],"valid",[],"NV8"],[[42612,42619],"valid"],[[42620,42621],"valid"],[[42622,42622],"valid",[],"NV8"],[[42623,42623],"valid"],[[42624,42624],"mapped",[42625]],[[42625,42625],"valid"],[[42626,42626],"mapped",[42627]],[[42627,42627],"valid"],[[42628,42628],"mapped",[42629]],[[42629,42629],"valid"],[[42630,42630],"mapped",[42631]],[[42631,42631],"valid"],[[42632,42632],"mapped",[42633]],[[42633,42633],"valid"],[[42634,42634],"mapped",[42635]],[[42635,42635],"valid"],[[42636,42636],"mapped",[42637]],[[42637,42637],"valid"],[[42638,42638],"mapped",[42639]],[[42639,42639],"valid"],[[42640,42640],"mapped",[42641]],[[42641,42641],"valid"],[[42642,42642],"mapped",[42643]],[[42643,42643],"valid"],[[42644,42644],"mapped",[42645]],[[42645,42645],"valid"],[[42646,42646],"mapped",[42647]],[[42647,42647],"valid"],[[42648,42648],"mapped",[42649]],[[42649,42649],"valid"],[[42650,42650],"mapped",[42651]],[[42651,42651],"valid"],[[42652,42652],"mapped",[1098]],[[42653,42653],"mapped",[1100]],[[42654,42654],"valid"],[[42655,42655],"valid"],[[42656,42725],"valid"],[[42726,42735],"valid",[],"NV8"],[[42736,42737],"valid"],[[42738,42743],"valid",[],"NV8"],[[42744,42751],"disallowed"],[[42752,42774],"valid",[],"NV8"],[[42775,42778],"valid"],[[42779,42783],"valid"],[[42784,42785],"valid",[],"NV8"],[[42786,42786],"mapped",[42787]],[[42787,42787],"valid"],[[42788,42788],"mapped",[42789]],[[42789,42789],"valid"],[[42790,42790],"mapped",[42791]],[[42791,42791],"valid"],[[42792,42792],"mapped",[42793]],[[42793,42793],"valid"],[[42794,42794],"mapped",[42795]],[[42795,42795],"valid"],[[42796,42796],"mapped",[42797]],[[42797,42797],"valid"],[[42798,42798],"mapped",[42799]],[[42799,42801],"valid"],[[42802,42802],"mapped",[42803]],[[42803,42803],"valid"],[[42804,42804],"mapped",[42805]],[[42805,42805],"valid"],[[42806,42806],"mapped",[42807]],[[42807,42807],"valid"],[[42808,42808],"mapped",[42809]],[[42809,42809],"valid"],[[42810,42810],"mapped",[42811]],[[42811,42811],"valid"],[[42812,42812],"mapped",[42813]],[[42813,42813],"valid"],[[42814,42814],"mapped",[42815]],[[42815,42815],"valid"],[[42816,42816],"mapped",[42817]],[[42817,42817],"valid"],[[42818,42818],"mapped",[42819]],[[42819,42819],"valid"],[[42820,42820],"mapped",[42821]],[[42821,42821],"valid"],[[42822,42822],"mapped",[42823]],[[42823,42823],"valid"],[[42824,42824],"mapped",[42825]],[[42825,42825],"valid"],[[42826,42826],"mapped",[42827]],[[42827,42827],"valid"],[[42828,42828],"mapped",[42829]],[[42829,42829],"valid"],[[42830,42830],"mapped",[42831]],[[42831,42831],"valid"],[[42832,42832],"mapped",[42833]],[[42833,42833],"valid"],[[42834,42834],"mapped",[42835]],[[42835,42835],"valid"],[[42836,42836],"mapped",[42837]],[[42837,42837],"valid"],[[42838,42838],"mapped",[42839]],[[42839,42839],"valid"],[[42840,42840],"mapped",[42841]],[[42841,42841],"valid"],[[42842,42842],"mapped",[42843]],[[42843,42843],"valid"],[[42844,42844],"mapped",[42845]],[[42845,42845],"valid"],[[42846,42846],"mapped",[42847]],[[42847,42847],"valid"],[[42848,42848],"mapped",[42849]],[[42849,42849],"valid"],[[42850,42850],"mapped",[42851]],[[42851,42851],"valid"],[[42852,42852],"mapped",[42853]],[[42853,42853],"valid"],[[42854,42854],"mapped",[42855]],[[42855,42855],"valid"],[[42856,42856],"mapped",[42857]],[[42857,42857],"valid"],[[42858,42858],"mapped",[42859]],[[42859,42859],"valid"],[[42860,42860],"mapped",[42861]],[[42861,42861],"valid"],[[42862,42862],"mapped",[42863]],[[42863,42863],"valid"],[[42864,42864],"mapped",[42863]],[[42865,42872],"valid"],[[42873,42873],"mapped",[42874]],[[42874,42874],"valid"],[[42875,42875],"mapped",[42876]],[[42876,42876],"valid"],[[42877,42877],"mapped",[7545]],[[42878,42878],"mapped",[42879]],[[42879,42879],"valid"],[[42880,42880],"mapped",[42881]],[[42881,42881],"valid"],[[42882,42882],"mapped",[42883]],[[42883,42883],"valid"],[[42884,42884],"mapped",[42885]],[[42885,42885],"valid"],[[42886,42886],"mapped",[42887]],[[42887,42888],"valid"],[[42889,42890],"valid",[],"NV8"],[[42891,42891],"mapped",[42892]],[[42892,42892],"valid"],[[42893,42893],"mapped",[613]],[[42894,42894],"valid"],[[42895,42895],"valid"],[[42896,42896],"mapped",[42897]],[[42897,42897],"valid"],[[42898,42898],"mapped",[42899]],[[42899,42899],"valid"],[[42900,42901],"valid"],[[42902,42902],"mapped",[42903]],[[42903,42903],"valid"],[[42904,42904],"mapped",[42905]],[[42905,42905],"valid"],[[42906,42906],"mapped",[42907]],[[42907,42907],"valid"],[[42908,42908],"mapped",[42909]],[[42909,42909],"valid"],[[42910,42910],"mapped",[42911]],[[42911,42911],"valid"],[[42912,42912],"mapped",[42913]],[[42913,42913],"valid"],[[42914,42914],"mapped",[42915]],[[42915,42915],"valid"],[[42916,42916],"mapped",[42917]],[[42917,42917],"valid"],[[42918,42918],"mapped",[42919]],[[42919,42919],"valid"],[[42920,42920],"mapped",[42921]],[[42921,42921],"valid"],[[42922,42922],"mapped",[614]],[[42923,42923],"mapped",[604]],[[42924,42924],"mapped",[609]],[[42925,42925],"mapped",[620]],[[42926,42927],"disallowed"],[[42928,42928],"mapped",[670]],[[42929,42929],"mapped",[647]],[[42930,42930],"mapped",[669]],[[42931,42931],"mapped",[43859]],[[42932,42932],"mapped",[42933]],[[42933,42933],"valid"],[[42934,42934],"mapped",[42935]],[[42935,42935],"valid"],[[42936,42998],"disallowed"],[[42999,42999],"valid"],[[43000,43000],"mapped",[295]],[[43001,43001],"mapped",[339]],[[43002,43002],"valid"],[[43003,43007],"valid"],[[43008,43047],"valid"],[[43048,43051],"valid",[],"NV8"],[[43052,43055],"disallowed"],[[43056,43065],"valid",[],"NV8"],[[43066,43071],"disallowed"],[[43072,43123],"valid"],[[43124,43127],"valid",[],"NV8"],[[43128,43135],"disallowed"],[[43136,43204],"valid"],[[43205,43213],"disallowed"],[[43214,43215],"valid",[],"NV8"],[[43216,43225],"valid"],[[43226,43231],"disallowed"],[[43232,43255],"valid"],[[43256,43258],"valid",[],"NV8"],[[43259,43259],"valid"],[[43260,43260],"valid",[],"NV8"],[[43261,43261],"valid"],[[43262,43263],"disallowed"],[[43264,43309],"valid"],[[43310,43311],"valid",[],"NV8"],[[43312,43347],"valid"],[[43348,43358],"disallowed"],[[43359,43359],"valid",[],"NV8"],[[43360,43388],"valid",[],"NV8"],[[43389,43391],"disallowed"],[[43392,43456],"valid"],[[43457,43469],"valid",[],"NV8"],[[43470,43470],"disallowed"],[[43471,43481],"valid"],[[43482,43485],"disallowed"],[[43486,43487],"valid",[],"NV8"],[[43488,43518],"valid"],[[43519,43519],"disallowed"],[[43520,43574],"valid"],[[43575,43583],"disallowed"],[[43584,43597],"valid"],[[43598,43599],"disallowed"],[[43600,43609],"valid"],[[43610,43611],"disallowed"],[[43612,43615],"valid",[],"NV8"],[[43616,43638],"valid"],[[43639,43641],"valid",[],"NV8"],[[43642,43643],"valid"],[[43644,43647],"valid"],[[43648,43714],"valid"],[[43715,43738],"disallowed"],[[43739,43741],"valid"],[[43742,43743],"valid",[],"NV8"],[[43744,43759],"valid"],[[43760,43761],"valid",[],"NV8"],[[43762,43766],"valid"],[[43767,43776],"disallowed"],[[43777,43782],"valid"],[[43783,43784],"disallowed"],[[43785,43790],"valid"],[[43791,43792],"disallowed"],[[43793,43798],"valid"],[[43799,43807],"disallowed"],[[43808,43814],"valid"],[[43815,43815],"disallowed"],[[43816,43822],"valid"],[[43823,43823],"disallowed"],[[43824,43866],"valid"],[[43867,43867],"valid",[],"NV8"],[[43868,43868],"mapped",[42791]],[[43869,43869],"mapped",[43831]],[[43870,43870],"mapped",[619]],[[43871,43871],"mapped",[43858]],[[43872,43875],"valid"],[[43876,43877],"valid"],[[43878,43887],"disallowed"],[[43888,43888],"mapped",[5024]],[[43889,43889],"mapped",[5025]],[[43890,43890],"mapped",[5026]],[[43891,43891],"mapped",[5027]],[[43892,43892],"mapped",[5028]],[[43893,43893],"mapped",[5029]],[[43894,43894],"mapped",[5030]],[[43895,43895],"mapped",[5031]],[[43896,43896],"mapped",[5032]],[[43897,43897],"mapped",[5033]],[[43898,43898],"mapped",[5034]],[[43899,43899],"mapped",[5035]],[[43900,43900],"mapped",[5036]],[[43901,43901],"mapped",[5037]],[[43902,43902],"mapped",[5038]],[[43903,43903],"mapped",[5039]],[[43904,43904],"mapped",[5040]],[[43905,43905],"mapped",[5041]],[[43906,43906],"mapped",[5042]],[[43907,43907],"mapped",[5043]],[[43908,43908],"mapped",[5044]],[[43909,43909],"mapped",[5045]],[[43910,43910],"mapped",[5046]],[[43911,43911],"mapped",[5047]],[[43912,43912],"mapped",[5048]],[[43913,43913],"mapped",[5049]],[[43914,43914],"mapped",[5050]],[[43915,43915],"mapped",[5051]],[[43916,43916],"mapped",[5052]],[[43917,43917],"mapped",[5053]],[[43918,43918],"mapped",[5054]],[[43919,43919],"mapped",[5055]],[[43920,43920],"mapped",[5056]],[[43921,43921],"mapped",[5057]],[[43922,43922],"mapped",[5058]],[[43923,43923],"mapped",[5059]],[[43924,43924],"mapped",[5060]],[[43925,43925],"mapped",[5061]],[[43926,43926],"mapped",[5062]],[[43927,43927],"mapped",[5063]],[[43928,43928],"mapped",[5064]],[[43929,43929],"mapped",[5065]],[[43930,43930],"mapped",[5066]],[[43931,43931],"mapped",[5067]],[[43932,43932],"mapped",[5068]],[[43933,43933],"mapped",[5069]],[[43934,43934],"mapped",[5070]],[[43935,43935],"mapped",[5071]],[[43936,43936],"mapped",[5072]],[[43937,43937],"mapped",[5073]],[[43938,43938],"mapped",[5074]],[[43939,43939],"mapped",[5075]],[[43940,43940],"mapped",[5076]],[[43941,43941],"mapped",[5077]],[[43942,43942],"mapped",[5078]],[[43943,43943],"mapped",[5079]],[[43944,43944],"mapped",[5080]],[[43945,43945],"mapped",[5081]],[[43946,43946],"mapped",[5082]],[[43947,43947],"mapped",[5083]],[[43948,43948],"mapped",[5084]],[[43949,43949],"mapped",[5085]],[[43950,43950],"mapped",[5086]],[[43951,43951],"mapped",[5087]],[[43952,43952],"mapped",[5088]],[[43953,43953],"mapped",[5089]],[[43954,43954],"mapped",[5090]],[[43955,43955],"mapped",[5091]],[[43956,43956],"mapped",[5092]],[[43957,43957],"mapped",[5093]],[[43958,43958],"mapped",[5094]],[[43959,43959],"mapped",[5095]],[[43960,43960],"mapped",[5096]],[[43961,43961],"mapped",[5097]],[[43962,43962],"mapped",[5098]],[[43963,43963],"mapped",[5099]],[[43964,43964],"mapped",[5100]],[[43965,43965],"mapped",[5101]],[[43966,43966],"mapped",[5102]],[[43967,43967],"mapped",[5103]],[[43968,44010],"valid"],[[44011,44011],"valid",[],"NV8"],[[44012,44013],"valid"],[[44014,44015],"disallowed"],[[44016,44025],"valid"],[[44026,44031],"disallowed"],[[44032,55203],"valid"],[[55204,55215],"disallowed"],[[55216,55238],"valid",[],"NV8"],[[55239,55242],"disallowed"],[[55243,55291],"valid",[],"NV8"],[[55292,55295],"disallowed"],[[55296,57343],"disallowed"],[[57344,63743],"disallowed"],[[63744,63744],"mapped",[35912]],[[63745,63745],"mapped",[26356]],[[63746,63746],"mapped",[36554]],[[63747,63747],"mapped",[36040]],[[63748,63748],"mapped",[28369]],[[63749,63749],"mapped",[20018]],[[63750,63750],"mapped",[21477]],[[63751,63752],"mapped",[40860]],[[63753,63753],"mapped",[22865]],[[63754,63754],"mapped",[37329]],[[63755,63755],"mapped",[21895]],[[63756,63756],"mapped",[22856]],[[63757,63757],"mapped",[25078]],[[63758,63758],"mapped",[30313]],[[63759,63759],"mapped",[32645]],[[63760,63760],"mapped",[34367]],[[63761,63761],"mapped",[34746]],[[63762,63762],"mapped",[35064]],[[63763,63763],"mapped",[37007]],[[63764,63764],"mapped",[27138]],[[63765,63765],"mapped",[27931]],[[63766,63766],"mapped",[28889]],[[63767,63767],"mapped",[29662]],[[63768,63768],"mapped",[33853]],[[63769,63769],"mapped",[37226]],[[63770,63770],"mapped",[39409]],[[63771,63771],"mapped",[20098]],[[63772,63772],"mapped",[21365]],[[63773,63773],"mapped",[27396]],[[63774,63774],"mapped",[29211]],[[63775,63775],"mapped",[34349]],[[63776,63776],"mapped",[40478]],[[63777,63777],"mapped",[23888]],[[63778,63778],"mapped",[28651]],[[63779,63779],"mapped",[34253]],[[63780,63780],"mapped",[35172]],[[63781,63781],"mapped",[25289]],[[63782,63782],"mapped",[33240]],[[63783,63783],"mapped",[34847]],[[63784,63784],"mapped",[24266]],[[63785,63785],"mapped",[26391]],[[63786,63786],"mapped",[28010]],[[63787,63787],"mapped",[29436]],[[63788,63788],"mapped",[37070]],[[63789,63789],"mapped",[20358]],[[63790,63790],"mapped",[20919]],[[63791,63791],"mapped",[21214]],[[63792,63792],"mapped",[25796]],[[63793,63793],"mapped",[27347]],[[63794,63794],"mapped",[29200]],[[63795,63795],"mapped",[30439]],[[63796,63796],"mapped",[32769]],[[63797,63797],"mapped",[34310]],[[63798,63798],"mapped",[34396]],[[63799,63799],"mapped",[36335]],[[63800,63800],"mapped",[38706]],[[63801,63801],"mapped",[39791]],[[63802,63802],"mapped",[40442]],[[63803,63803],"mapped",[30860]],[[63804,63804],"mapped",[31103]],[[63805,63805],"mapped",[32160]],[[63806,63806],"mapped",[33737]],[[63807,63807],"mapped",[37636]],[[63808,63808],"mapped",[40575]],[[63809,63809],"mapped",[35542]],[[63810,63810],"mapped",[22751]],[[63811,63811],"mapped",[24324]],[[63812,63812],"mapped",[31840]],[[63813,63813],"mapped",[32894]],[[63814,63814],"mapped",[29282]],[[63815,63815],"mapped",[30922]],[[63816,63816],"mapped",[36034]],[[63817,63817],"mapped",[38647]],[[63818,63818],"mapped",[22744]],[[63819,63819],"mapped",[23650]],[[63820,63820],"mapped",[27155]],[[63821,63821],"mapped",[28122]],[[63822,63822],"mapped",[28431]],[[63823,63823],"mapped",[32047]],[[63824,63824],"mapped",[32311]],[[63825,63825],"mapped",[38475]],[[63826,63826],"mapped",[21202]],[[63827,63827],"mapped",[32907]],[[63828,63828],"mapped",[20956]],[[63829,63829],"mapped",[20940]],[[63830,63830],"mapped",[31260]],[[63831,63831],"mapped",[32190]],[[63832,63832],"mapped",[33777]],[[63833,63833],"mapped",[38517]],[[63834,63834],"mapped",[35712]],[[63835,63835],"mapped",[25295]],[[63836,63836],"mapped",[27138]],[[63837,63837],"mapped",[35582]],[[63838,63838],"mapped",[20025]],[[63839,63839],"mapped",[23527]],[[63840,63840],"mapped",[24594]],[[63841,63841],"mapped",[29575]],[[63842,63842],"mapped",[30064]],[[63843,63843],"mapped",[21271]],[[63844,63844],"mapped",[30971]],[[63845,63845],"mapped",[20415]],[[63846,63846],"mapped",[24489]],[[63847,63847],"mapped",[19981]],[[63848,63848],"mapped",[27852]],[[63849,63849],"mapped",[25976]],[[63850,63850],"mapped",[32034]],[[63851,63851],"mapped",[21443]],[[63852,63852],"mapped",[22622]],[[63853,63853],"mapped",[30465]],[[63854,63854],"mapped",[33865]],[[63855,63855],"mapped",[35498]],[[63856,63856],"mapped",[27578]],[[63857,63857],"mapped",[36784]],[[63858,63858],"mapped",[27784]],[[63859,63859],"mapped",[25342]],[[63860,63860],"mapped",[33509]],[[63861,63861],"mapped",[25504]],[[63862,63862],"mapped",[30053]],[[63863,63863],"mapped",[20142]],[[63864,63864],"mapped",[20841]],[[63865,63865],"mapped",[20937]],[[63866,63866],"mapped",[26753]],[[63867,63867],"mapped",[31975]],[[63868,63868],"mapped",[33391]],[[63869,63869],"mapped",[35538]],[[63870,63870],"mapped",[37327]],[[63871,63871],"mapped",[21237]],[[63872,63872],"mapped",[21570]],[[63873,63873],"mapped",[22899]],[[63874,63874],"mapped",[24300]],[[63875,63875],"mapped",[26053]],[[63876,63876],"mapped",[28670]],[[63877,63877],"mapped",[31018]],[[63878,63878],"mapped",[38317]],[[63879,63879],"mapped",[39530]],[[63880,63880],"mapped",[40599]],[[63881,63881],"mapped",[40654]],[[63882,63882],"mapped",[21147]],[[63883,63883],"mapped",[26310]],[[63884,63884],"mapped",[27511]],[[63885,63885],"mapped",[36706]],[[63886,63886],"mapped",[24180]],[[63887,63887],"mapped",[24976]],[[63888,63888],"mapped",[25088]],[[63889,63889],"mapped",[25754]],[[63890,63890],"mapped",[28451]],[[63891,63891],"mapped",[29001]],[[63892,63892],"mapped",[29833]],[[63893,63893],"mapped",[31178]],[[63894,63894],"mapped",[32244]],[[63895,63895],"mapped",[32879]],[[63896,63896],"mapped",[36646]],[[63897,63897],"mapped",[34030]],[[63898,63898],"mapped",[36899]],[[63899,63899],"mapped",[37706]],[[63900,63900],"mapped",[21015]],[[63901,63901],"mapped",[21155]],[[63902,63902],"mapped",[21693]],[[63903,63903],"mapped",[28872]],[[63904,63904],"mapped",[35010]],[[63905,63905],"mapped",[35498]],[[63906,63906],"mapped",[24265]],[[63907,63907],"mapped",[24565]],[[63908,63908],"mapped",[25467]],[[63909,63909],"mapped",[27566]],[[63910,63910],"mapped",[31806]],[[63911,63911],"mapped",[29557]],[[63912,63912],"mapped",[20196]],[[63913,63913],"mapped",[22265]],[[63914,63914],"mapped",[23527]],[[63915,63915],"mapped",[23994]],[[63916,63916],"mapped",[24604]],[[63917,63917],"mapped",[29618]],[[63918,63918],"mapped",[29801]],[[63919,63919],"mapped",[32666]],[[63920,63920],"mapped",[32838]],[[63921,63921],"mapped",[37428]],[[63922,63922],"mapped",[38646]],[[63923,63923],"mapped",[38728]],[[63924,63924],"mapped",[38936]],[[63925,63925],"mapped",[20363]],[[63926,63926],"mapped",[31150]],[[63927,63927],"mapped",[37300]],[[63928,63928],"mapped",[38584]],[[63929,63929],"mapped",[24801]],[[63930,63930],"mapped",[20102]],[[63931,63931],"mapped",[20698]],[[63932,63932],"mapped",[23534]],[[63933,63933],"mapped",[23615]],[[63934,63934],"mapped",[26009]],[[63935,63935],"mapped",[27138]],[[63936,63936],"mapped",[29134]],[[63937,63937],"mapped",[30274]],[[63938,63938],"mapped",[34044]],[[63939,63939],"mapped",[36988]],[[63940,63940],"mapped",[40845]],[[63941,63941],"mapped",[26248]],[[63942,63942],"mapped",[38446]],[[63943,63943],"mapped",[21129]],[[63944,63944],"mapped",[26491]],[[63945,63945],"mapped",[26611]],[[63946,63946],"mapped",[27969]],[[63947,63947],"mapped",[28316]],[[63948,63948],"mapped",[29705]],[[63949,63949],"mapped",[30041]],[[63950,63950],"mapped",[30827]],[[63951,63951],"mapped",[32016]],[[63952,63952],"mapped",[39006]],[[63953,63953],"mapped",[20845]],[[63954,63954],"mapped",[25134]],[[63955,63955],"mapped",[38520]],[[63956,63956],"mapped",[20523]],[[63957,63957],"mapped",[23833]],[[63958,63958],"mapped",[28138]],[[63959,63959],"mapped",[36650]],[[63960,63960],"mapped",[24459]],[[63961,63961],"mapped",[24900]],[[63962,63962],"mapped",[26647]],[[63963,63963],"mapped",[29575]],[[63964,63964],"mapped",[38534]],[[63965,63965],"mapped",[21033]],[[63966,63966],"mapped",[21519]],[[63967,63967],"mapped",[23653]],[[63968,63968],"mapped",[26131]],[[63969,63969],"mapped",[26446]],[[63970,63970],"mapped",[26792]],[[63971,63971],"mapped",[27877]],[[63972,63972],"mapped",[29702]],[[63973,63973],"mapped",[30178]],[[63974,63974],"mapped",[32633]],[[63975,63975],"mapped",[35023]],[[63976,63976],"mapped",[35041]],[[63977,63977],"mapped",[37324]],[[63978,63978],"mapped",[38626]],[[63979,63979],"mapped",[21311]],[[63980,63980],"mapped",[28346]],[[63981,63981],"mapped",[21533]],[[63982,63982],"mapped",[29136]],[[63983,63983],"mapped",[29848]],[[63984,63984],"mapped",[34298]],[[63985,63985],"mapped",[38563]],[[63986,63986],"mapped",[40023]],[[63987,63987],"mapped",[40607]],[[63988,63988],"mapped",[26519]],[[63989,63989],"mapped",[28107]],[[63990,63990],"mapped",[33256]],[[63991,63991],"mapped",[31435]],[[63992,63992],"mapped",[31520]],[[63993,63993],"mapped",[31890]],[[63994,63994],"mapped",[29376]],[[63995,63995],"mapped",[28825]],[[63996,63996],"mapped",[35672]],[[63997,63997],"mapped",[20160]],[[63998,63998],"mapped",[33590]],[[63999,63999],"mapped",[21050]],[[64000,64000],"mapped",[20999]],[[64001,64001],"mapped",[24230]],[[64002,64002],"mapped",[25299]],[[64003,64003],"mapped",[31958]],[[64004,64004],"mapped",[23429]],[[64005,64005],"mapped",[27934]],[[64006,64006],"mapped",[26292]],[[64007,64007],"mapped",[36667]],[[64008,64008],"mapped",[34892]],[[64009,64009],"mapped",[38477]],[[64010,64010],"mapped",[35211]],[[64011,64011],"mapped",[24275]],[[64012,64012],"mapped",[20800]],[[64013,64013],"mapped",[21952]],[[64014,64015],"valid"],[[64016,64016],"mapped",[22618]],[[64017,64017],"valid"],[[64018,64018],"mapped",[26228]],[[64019,64020],"valid"],[[64021,64021],"mapped",[20958]],[[64022,64022],"mapped",[29482]],[[64023,64023],"mapped",[30410]],[[64024,64024],"mapped",[31036]],[[64025,64025],"mapped",[31070]],[[64026,64026],"mapped",[31077]],[[64027,64027],"mapped",[31119]],[[64028,64028],"mapped",[38742]],[[64029,64029],"mapped",[31934]],[[64030,64030],"mapped",[32701]],[[64031,64031],"valid"],[[64032,64032],"mapped",[34322]],[[64033,64033],"valid"],[[64034,64034],"mapped",[35576]],[[64035,64036],"valid"],[[64037,64037],"mapped",[36920]],[[64038,64038],"mapped",[37117]],[[64039,64041],"valid"],[[64042,64042],"mapped",[39151]],[[64043,64043],"mapped",[39164]],[[64044,64044],"mapped",[39208]],[[64045,64045],"mapped",[40372]],[[64046,64046],"mapped",[37086]],[[64047,64047],"mapped",[38583]],[[64048,64048],"mapped",[20398]],[[64049,64049],"mapped",[20711]],[[64050,64050],"mapped",[20813]],[[64051,64051],"mapped",[21193]],[[64052,64052],"mapped",[21220]],[[64053,64053],"mapped",[21329]],[[64054,64054],"mapped",[21917]],[[64055,64055],"mapped",[22022]],[[64056,64056],"mapped",[22120]],[[64057,64057],"mapped",[22592]],[[64058,64058],"mapped",[22696]],[[64059,64059],"mapped",[23652]],[[64060,64060],"mapped",[23662]],[[64061,64061],"mapped",[24724]],[[64062,64062],"mapped",[24936]],[[64063,64063],"mapped",[24974]],[[64064,64064],"mapped",[25074]],[[64065,64065],"mapped",[25935]],[[64066,64066],"mapped",[26082]],[[64067,64067],"mapped",[26257]],[[64068,64068],"mapped",[26757]],[[64069,64069],"mapped",[28023]],[[64070,64070],"mapped",[28186]],[[64071,64071],"mapped",[28450]],[[64072,64072],"mapped",[29038]],[[64073,64073],"mapped",[29227]],[[64074,64074],"mapped",[29730]],[[64075,64075],"mapped",[30865]],[[64076,64076],"mapped",[31038]],[[64077,64077],"mapped",[31049]],[[64078,64078],"mapped",[31048]],[[64079,64079],"mapped",[31056]],[[64080,64080],"mapped",[31062]],[[64081,64081],"mapped",[31069]],[[64082,64082],"mapped",[31117]],[[64083,64083],"mapped",[31118]],[[64084,64084],"mapped",[31296]],[[64085,64085],"mapped",[31361]],[[64086,64086],"mapped",[31680]],[[64087,64087],"mapped",[32244]],[[64088,64088],"mapped",[32265]],[[64089,64089],"mapped",[32321]],[[64090,64090],"mapped",[32626]],[[64091,64091],"mapped",[32773]],[[64092,64092],"mapped",[33261]],[[64093,64094],"mapped",[33401]],[[64095,64095],"mapped",[33879]],[[64096,64096],"mapped",[35088]],[[64097,64097],"mapped",[35222]],[[64098,64098],"mapped",[35585]],[[64099,64099],"mapped",[35641]],[[64100,64100],"mapped",[36051]],[[64101,64101],"mapped",[36104]],[[64102,64102],"mapped",[36790]],[[64103,64103],"mapped",[36920]],[[64104,64104],"mapped",[38627]],[[64105,64105],"mapped",[38911]],[[64106,64106],"mapped",[38971]],[[64107,64107],"mapped",[24693]],[[64108,64108],"mapped",[148206]],[[64109,64109],"mapped",[33304]],[[64110,64111],"disallowed"],[[64112,64112],"mapped",[20006]],[[64113,64113],"mapped",[20917]],[[64114,64114],"mapped",[20840]],[[64115,64115],"mapped",[20352]],[[64116,64116],"mapped",[20805]],[[64117,64117],"mapped",[20864]],[[64118,64118],"mapped",[21191]],[[64119,64119],"mapped",[21242]],[[64120,64120],"mapped",[21917]],[[64121,64121],"mapped",[21845]],[[64122,64122],"mapped",[21913]],[[64123,64123],"mapped",[21986]],[[64124,64124],"mapped",[22618]],[[64125,64125],"mapped",[22707]],[[64126,64126],"mapped",[22852]],[[64127,64127],"mapped",[22868]],[[64128,64128],"mapped",[23138]],[[64129,64129],"mapped",[23336]],[[64130,64130],"mapped",[24274]],[[64131,64131],"mapped",[24281]],[[64132,64132],"mapped",[24425]],[[64133,64133],"mapped",[24493]],[[64134,64134],"mapped",[24792]],[[64135,64135],"mapped",[24910]],[[64136,64136],"mapped",[24840]],[[64137,64137],"mapped",[24974]],[[64138,64138],"mapped",[24928]],[[64139,64139],"mapped",[25074]],[[64140,64140],"mapped",[25140]],[[64141,64141],"mapped",[25540]],[[64142,64142],"mapped",[25628]],[[64143,64143],"mapped",[25682]],[[64144,64144],"mapped",[25942]],[[64145,64145],"mapped",[26228]],[[64146,64146],"mapped",[26391]],[[64147,64147],"mapped",[26395]],[[64148,64148],"mapped",[26454]],[[64149,64149],"mapped",[27513]],[[64150,64150],"mapped",[27578]],[[64151,64151],"mapped",[27969]],[[64152,64152],"mapped",[28379]],[[64153,64153],"mapped",[28363]],[[64154,64154],"mapped",[28450]],[[64155,64155],"mapped",[28702]],[[64156,64156],"mapped",[29038]],[[64157,64157],"mapped",[30631]],[[64158,64158],"mapped",[29237]],[[64159,64159],"mapped",[29359]],[[64160,64160],"mapped",[29482]],[[64161,64161],"mapped",[29809]],[[64162,64162],"mapped",[29958]],[[64163,64163],"mapped",[30011]],[[64164,64164],"mapped",[30237]],[[64165,64165],"mapped",[30239]],[[64166,64166],"mapped",[30410]],[[64167,64167],"mapped",[30427]],[[64168,64168],"mapped",[30452]],[[64169,64169],"mapped",[30538]],[[64170,64170],"mapped",[30528]],[[64171,64171],"mapped",[30924]],[[64172,64172],"mapped",[31409]],[[64173,64173],"mapped",[31680]],[[64174,64174],"mapped",[31867]],[[64175,64175],"mapped",[32091]],[[64176,64176],"mapped",[32244]],[[64177,64177],"mapped",[32574]],[[64178,64178],"mapped",[32773]],[[64179,64179],"mapped",[33618]],[[64180,64180],"mapped",[33775]],[[64181,64181],"mapped",[34681]],[[64182,64182],"mapped",[35137]],[[64183,64183],"mapped",[35206]],[[64184,64184],"mapped",[35222]],[[64185,64185],"mapped",[35519]],[[64186,64186],"mapped",[35576]],[[64187,64187],"mapped",[35531]],[[64188,64188],"mapped",[35585]],[[64189,64189],"mapped",[35582]],[[64190,64190],"mapped",[35565]],[[64191,64191],"mapped",[35641]],[[64192,64192],"mapped",[35722]],[[64193,64193],"mapped",[36104]],[[64194,64194],"mapped",[36664]],[[64195,64195],"mapped",[36978]],[[64196,64196],"mapped",[37273]],[[64197,64197],"mapped",[37494]],[[64198,64198],"mapped",[38524]],[[64199,64199],"mapped",[38627]],[[64200,64200],"mapped",[38742]],[[64201,64201],"mapped",[38875]],[[64202,64202],"mapped",[38911]],[[64203,64203],"mapped",[38923]],[[64204,64204],"mapped",[38971]],[[64205,64205],"mapped",[39698]],[[64206,64206],"mapped",[40860]],[[64207,64207],"mapped",[141386]],[[64208,64208],"mapped",[141380]],[[64209,64209],"mapped",[144341]],[[64210,64210],"mapped",[15261]],[[64211,64211],"mapped",[16408]],[[64212,64212],"mapped",[16441]],[[64213,64213],"mapped",[152137]],[[64214,64214],"mapped",[154832]],[[64215,64215],"mapped",[163539]],[[64216,64216],"mapped",[40771]],[[64217,64217],"mapped",[40846]],[[64218,64255],"disallowed"],[[64256,64256],"mapped",[102,102]],[[64257,64257],"mapped",[102,105]],[[64258,64258],"mapped",[102,108]],[[64259,64259],"mapped",[102,102,105]],[[64260,64260],"mapped",[102,102,108]],[[64261,64262],"mapped",[115,116]],[[64263,64274],"disallowed"],[[64275,64275],"mapped",[1396,1398]],[[64276,64276],"mapped",[1396,1381]],[[64277,64277],"mapped",[1396,1387]],[[64278,64278],"mapped",[1406,1398]],[[64279,64279],"mapped",[1396,1389]],[[64280,64284],"disallowed"],[[64285,64285],"mapped",[1497,1460]],[[64286,64286],"valid"],[[64287,64287],"mapped",[1522,1463]],[[64288,64288],"mapped",[1506]],[[64289,64289],"mapped",[1488]],[[64290,64290],"mapped",[1491]],[[64291,64291],"mapped",[1492]],[[64292,64292],"mapped",[1499]],[[64293,64293],"mapped",[1500]],[[64294,64294],"mapped",[1501]],[[64295,64295],"mapped",[1512]],[[64296,64296],"mapped",[1514]],[[64297,64297],"disallowed_STD3_mapped",[43]],[[64298,64298],"mapped",[1513,1473]],[[64299,64299],"mapped",[1513,1474]],[[64300,64300],"mapped",[1513,1468,1473]],[[64301,64301],"mapped",[1513,1468,1474]],[[64302,64302],"mapped",[1488,1463]],[[64303,64303],"mapped",[1488,1464]],[[64304,64304],"mapped",[1488,1468]],[[64305,64305],"mapped",[1489,1468]],[[64306,64306],"mapped",[1490,1468]],[[64307,64307],"mapped",[1491,1468]],[[64308,64308],"mapped",[1492,1468]],[[64309,64309],"mapped",[1493,1468]],[[64310,64310],"mapped",[1494,1468]],[[64311,64311],"disallowed"],[[64312,64312],"mapped",[1496,1468]],[[64313,64313],"mapped",[1497,1468]],[[64314,64314],"mapped",[1498,1468]],[[64315,64315],"mapped",[1499,1468]],[[64316,64316],"mapped",[1500,1468]],[[64317,64317],"disallowed"],[[64318,64318],"mapped",[1502,1468]],[[64319,64319],"disallowed"],[[64320,64320],"mapped",[1504,1468]],[[64321,64321],"mapped",[1505,1468]],[[64322,64322],"disallowed"],[[64323,64323],"mapped",[1507,1468]],[[64324,64324],"mapped",[1508,1468]],[[64325,64325],"disallowed"],[[64326,64326],"mapped",[1510,1468]],[[64327,64327],"mapped",[1511,1468]],[[64328,64328],"mapped",[1512,1468]],[[64329,64329],"mapped",[1513,1468]],[[64330,64330],"mapped",[1514,1468]],[[64331,64331],"mapped",[1493,1465]],[[64332,64332],"mapped",[1489,1471]],[[64333,64333],"mapped",[1499,1471]],[[64334,64334],"mapped",[1508,1471]],[[64335,64335],"mapped",[1488,1500]],[[64336,64337],"mapped",[1649]],[[64338,64341],"mapped",[1659]],[[64342,64345],"mapped",[1662]],[[64346,64349],"mapped",[1664]],[[64350,64353],"mapped",[1658]],[[64354,64357],"mapped",[1663]],[[64358,64361],"mapped",[1657]],[[64362,64365],"mapped",[1700]],[[64366,64369],"mapped",[1702]],[[64370,64373],"mapped",[1668]],[[64374,64377],"mapped",[1667]],[[64378,64381],"mapped",[1670]],[[64382,64385],"mapped",[1671]],[[64386,64387],"mapped",[1677]],[[64388,64389],"mapped",[1676]],[[64390,64391],"mapped",[1678]],[[64392,64393],"mapped",[1672]],[[64394,64395],"mapped",[1688]],[[64396,64397],"mapped",[1681]],[[64398,64401],"mapped",[1705]],[[64402,64405],"mapped",[1711]],[[64406,64409],"mapped",[1715]],[[64410,64413],"mapped",[1713]],[[64414,64415],"mapped",[1722]],[[64416,64419],"mapped",[1723]],[[64420,64421],"mapped",[1728]],[[64422,64425],"mapped",[1729]],[[64426,64429],"mapped",[1726]],[[64430,64431],"mapped",[1746]],[[64432,64433],"mapped",[1747]],[[64434,64449],"valid",[],"NV8"],[[64450,64466],"disallowed"],[[64467,64470],"mapped",[1709]],[[64471,64472],"mapped",[1735]],[[64473,64474],"mapped",[1734]],[[64475,64476],"mapped",[1736]],[[64477,64477],"mapped",[1735,1652]],[[64478,64479],"mapped",[1739]],[[64480,64481],"mapped",[1733]],[[64482,64483],"mapped",[1737]],[[64484,64487],"mapped",[1744]],[[64488,64489],"mapped",[1609]],[[64490,64491],"mapped",[1574,1575]],[[64492,64493],"mapped",[1574,1749]],[[64494,64495],"mapped",[1574,1608]],[[64496,64497],"mapped",[1574,1735]],[[64498,64499],"mapped",[1574,1734]],[[64500,64501],"mapped",[1574,1736]],[[64502,64504],"mapped",[1574,1744]],[[64505,64507],"mapped",[1574,1609]],[[64508,64511],"mapped",[1740]],[[64512,64512],"mapped",[1574,1580]],[[64513,64513],"mapped",[1574,1581]],[[64514,64514],"mapped",[1574,1605]],[[64515,64515],"mapped",[1574,1609]],[[64516,64516],"mapped",[1574,1610]],[[64517,64517],"mapped",[1576,1580]],[[64518,64518],"mapped",[1576,1581]],[[64519,64519],"mapped",[1576,1582]],[[64520,64520],"mapped",[1576,1605]],[[64521,64521],"mapped",[1576,1609]],[[64522,64522],"mapped",[1576,1610]],[[64523,64523],"mapped",[1578,1580]],[[64524,64524],"mapped",[1578,1581]],[[64525,64525],"mapped",[1578,1582]],[[64526,64526],"mapped",[1578,1605]],[[64527,64527],"mapped",[1578,1609]],[[64528,64528],"mapped",[1578,1610]],[[64529,64529],"mapped",[1579,1580]],[[64530,64530],"mapped",[1579,1605]],[[64531,64531],"mapped",[1579,1609]],[[64532,64532],"mapped",[1579,1610]],[[64533,64533],"mapped",[1580,1581]],[[64534,64534],"mapped",[1580,1605]],[[64535,64535],"mapped",[1581,1580]],[[64536,64536],"mapped",[1581,1605]],[[64537,64537],"mapped",[1582,1580]],[[64538,64538],"mapped",[1582,1581]],[[64539,64539],"mapped",[1582,1605]],[[64540,64540],"mapped",[1587,1580]],[[64541,64541],"mapped",[1587,1581]],[[64542,64542],"mapped",[1587,1582]],[[64543,64543],"mapped",[1587,1605]],[[64544,64544],"mapped",[1589,1581]],[[64545,64545],"mapped",[1589,1605]],[[64546,64546],"mapped",[1590,1580]],[[64547,64547],"mapped",[1590,1581]],[[64548,64548],"mapped",[1590,1582]],[[64549,64549],"mapped",[1590,1605]],[[64550,64550],"mapped",[1591,1581]],[[64551,64551],"mapped",[1591,1605]],[[64552,64552],"mapped",[1592,1605]],[[64553,64553],"mapped",[1593,1580]],[[64554,64554],"mapped",[1593,1605]],[[64555,64555],"mapped",[1594,1580]],[[64556,64556],"mapped",[1594,1605]],[[64557,64557],"mapped",[1601,1580]],[[64558,64558],"mapped",[1601,1581]],[[64559,64559],"mapped",[1601,1582]],[[64560,64560],"mapped",[1601,1605]],[[64561,64561],"mapped",[1601,1609]],[[64562,64562],"mapped",[1601,1610]],[[64563,64563],"mapped",[1602,1581]],[[64564,64564],"mapped",[1602,1605]],[[64565,64565],"mapped",[1602,1609]],[[64566,64566],"mapped",[1602,1610]],[[64567,64567],"mapped",[1603,1575]],[[64568,64568],"mapped",[1603,1580]],[[64569,64569],"mapped",[1603,1581]],[[64570,64570],"mapped",[1603,1582]],[[64571,64571],"mapped",[1603,1604]],[[64572,64572],"mapped",[1603,1605]],[[64573,64573],"mapped",[1603,1609]],[[64574,64574],"mapped",[1603,1610]],[[64575,64575],"mapped",[1604,1580]],[[64576,64576],"mapped",[1604,1581]],[[64577,64577],"mapped",[1604,1582]],[[64578,64578],"mapped",[1604,1605]],[[64579,64579],"mapped",[1604,1609]],[[64580,64580],"mapped",[1604,1610]],[[64581,64581],"mapped",[1605,1580]],[[64582,64582],"mapped",[1605,1581]],[[64583,64583],"mapped",[1605,1582]],[[64584,64584],"mapped",[1605,1605]],[[64585,64585],"mapped",[1605,1609]],[[64586,64586],"mapped",[1605,1610]],[[64587,64587],"mapped",[1606,1580]],[[64588,64588],"mapped",[1606,1581]],[[64589,64589],"mapped",[1606,1582]],[[64590,64590],"mapped",[1606,1605]],[[64591,64591],"mapped",[1606,1609]],[[64592,64592],"mapped",[1606,1610]],[[64593,64593],"mapped",[1607,1580]],[[64594,64594],"mapped",[1607,1605]],[[64595,64595],"mapped",[1607,1609]],[[64596,64596],"mapped",[1607,1610]],[[64597,64597],"mapped",[1610,1580]],[[64598,64598],"mapped",[1610,1581]],[[64599,64599],"mapped",[1610,1582]],[[64600,64600],"mapped",[1610,1605]],[[64601,64601],"mapped",[1610,1609]],[[64602,64602],"mapped",[1610,1610]],[[64603,64603],"mapped",[1584,1648]],[[64604,64604],"mapped",[1585,1648]],[[64605,64605],"mapped",[1609,1648]],[[64606,64606],"disallowed_STD3_mapped",[32,1612,1617]],[[64607,64607],"disallowed_STD3_mapped",[32,1613,1617]],[[64608,64608],"disallowed_STD3_mapped",[32,1614,1617]],[[64609,64609],"disallowed_STD3_mapped",[32,1615,1617]],[[64610,64610],"disallowed_STD3_mapped",[32,1616,1617]],[[64611,64611],"disallowed_STD3_mapped",[32,1617,1648]],[[64612,64612],"mapped",[1574,1585]],[[64613,64613],"mapped",[1574,1586]],[[64614,64614],"mapped",[1574,1605]],[[64615,64615],"mapped",[1574,1606]],[[64616,64616],"mapped",[1574,1609]],[[64617,64617],"mapped",[1574,1610]],[[64618,64618],"mapped",[1576,1585]],[[64619,64619],"mapped",[1576,1586]],[[64620,64620],"mapped",[1576,1605]],[[64621,64621],"mapped",[1576,1606]],[[64622,64622],"mapped",[1576,1609]],[[64623,64623],"mapped",[1576,1610]],[[64624,64624],"mapped",[1578,1585]],[[64625,64625],"mapped",[1578,1586]],[[64626,64626],"mapped",[1578,1605]],[[64627,64627],"mapped",[1578,1606]],[[64628,64628],"mapped",[1578,1609]],[[64629,64629],"mapped",[1578,1610]],[[64630,64630],"mapped",[1579,1585]],[[64631,64631],"mapped",[1579,1586]],[[64632,64632],"mapped",[1579,1605]],[[64633,64633],"mapped",[1579,1606]],[[64634,64634],"mapped",[1579,1609]],[[64635,64635],"mapped",[1579,1610]],[[64636,64636],"mapped",[1601,1609]],[[64637,64637],"mapped",[1601,1610]],[[64638,64638],"mapped",[1602,1609]],[[64639,64639],"mapped",[1602,1610]],[[64640,64640],"mapped",[1603,1575]],[[64641,64641],"mapped",[1603,1604]],[[64642,64642],"mapped",[1603,1605]],[[64643,64643],"mapped",[1603,1609]],[[64644,64644],"mapped",[1603,1610]],[[64645,64645],"mapped",[1604,1605]],[[64646,64646],"mapped",[1604,1609]],[[64647,64647],"mapped",[1604,1610]],[[64648,64648],"mapped",[1605,1575]],[[64649,64649],"mapped",[1605,1605]],[[64650,64650],"mapped",[1606,1585]],[[64651,64651],"mapped",[1606,1586]],[[64652,64652],"mapped",[1606,1605]],[[64653,64653],"mapped",[1606,1606]],[[64654,64654],"mapped",[1606,1609]],[[64655,64655],"mapped",[1606,1610]],[[64656,64656],"mapped",[1609,1648]],[[64657,64657],"mapped",[1610,1585]],[[64658,64658],"mapped",[1610,1586]],[[64659,64659],"mapped",[1610,1605]],[[64660,64660],"mapped",[1610,1606]],[[64661,64661],"mapped",[1610,1609]],[[64662,64662],"mapped",[1610,1610]],[[64663,64663],"mapped",[1574,1580]],[[64664,64664],"mapped",[1574,1581]],[[64665,64665],"mapped",[1574,1582]],[[64666,64666],"mapped",[1574,1605]],[[64667,64667],"mapped",[1574,1607]],[[64668,64668],"mapped",[1576,1580]],[[64669,64669],"mapped",[1576,1581]],[[64670,64670],"mapped",[1576,1582]],[[64671,64671],"mapped",[1576,1605]],[[64672,64672],"mapped",[1576,1607]],[[64673,64673],"mapped",[1578,1580]],[[64674,64674],"mapped",[1578,1581]],[[64675,64675],"mapped",[1578,1582]],[[64676,64676],"mapped",[1578,1605]],[[64677,64677],"mapped",[1578,1607]],[[64678,64678],"mapped",[1579,1605]],[[64679,64679],"mapped",[1580,1581]],[[64680,64680],"mapped",[1580,1605]],[[64681,64681],"mapped",[1581,1580]],[[64682,64682],"mapped",[1581,1605]],[[64683,64683],"mapped",[1582,1580]],[[64684,64684],"mapped",[1582,1605]],[[64685,64685],"mapped",[1587,1580]],[[64686,64686],"mapped",[1587,1581]],[[64687,64687],"mapped",[1587,1582]],[[64688,64688],"mapped",[1587,1605]],[[64689,64689],"mapped",[1589,1581]],[[64690,64690],"mapped",[1589,1582]],[[64691,64691],"mapped",[1589,1605]],[[64692,64692],"mapped",[1590,1580]],[[64693,64693],"mapped",[1590,1581]],[[64694,64694],"mapped",[1590,1582]],[[64695,64695],"mapped",[1590,1605]],[[64696,64696],"mapped",[1591,1581]],[[64697,64697],"mapped",[1592,1605]],[[64698,64698],"mapped",[1593,1580]],[[64699,64699],"mapped",[1593,1605]],[[64700,64700],"mapped",[1594,1580]],[[64701,64701],"mapped",[1594,1605]],[[64702,64702],"mapped",[1601,1580]],[[64703,64703],"mapped",[1601,1581]],[[64704,64704],"mapped",[1601,1582]],[[64705,64705],"mapped",[1601,1605]],[[64706,64706],"mapped",[1602,1581]],[[64707,64707],"mapped",[1602,1605]],[[64708,64708],"mapped",[1603,1580]],[[64709,64709],"mapped",[1603,1581]],[[64710,64710],"mapped",[1603,1582]],[[64711,64711],"mapped",[1603,1604]],[[64712,64712],"mapped",[1603,1605]],[[64713,64713],"mapped",[1604,1580]],[[64714,64714],"mapped",[1604,1581]],[[64715,64715],"mapped",[1604,1582]],[[64716,64716],"mapped",[1604,1605]],[[64717,64717],"mapped",[1604,1607]],[[64718,64718],"mapped",[1605,1580]],[[64719,64719],"mapped",[1605,1581]],[[64720,64720],"mapped",[1605,1582]],[[64721,64721],"mapped",[1605,1605]],[[64722,64722],"mapped",[1606,1580]],[[64723,64723],"mapped",[1606,1581]],[[64724,64724],"mapped",[1606,1582]],[[64725,64725],"mapped",[1606,1605]],[[64726,64726],"mapped",[1606,1607]],[[64727,64727],"mapped",[1607,1580]],[[64728,64728],"mapped",[1607,1605]],[[64729,64729],"mapped",[1607,1648]],[[64730,64730],"mapped",[1610,1580]],[[64731,64731],"mapped",[1610,1581]],[[64732,64732],"mapped",[1610,1582]],[[64733,64733],"mapped",[1610,1605]],[[64734,64734],"mapped",[1610,1607]],[[64735,64735],"mapped",[1574,1605]],[[64736,64736],"mapped",[1574,1607]],[[64737,64737],"mapped",[1576,1605]],[[64738,64738],"mapped",[1576,1607]],[[64739,64739],"mapped",[1578,1605]],[[64740,64740],"mapped",[1578,1607]],[[64741,64741],"mapped",[1579,1605]],[[64742,64742],"mapped",[1579,1607]],[[64743,64743],"mapped",[1587,1605]],[[64744,64744],"mapped",[1587,1607]],[[64745,64745],"mapped",[1588,1605]],[[64746,64746],"mapped",[1588,1607]],[[64747,64747],"mapped",[1603,1604]],[[64748,64748],"mapped",[1603,1605]],[[64749,64749],"mapped",[1604,1605]],[[64750,64750],"mapped",[1606,1605]],[[64751,64751],"mapped",[1606,1607]],[[64752,64752],"mapped",[1610,1605]],[[64753,64753],"mapped",[1610,1607]],[[64754,64754],"mapped",[1600,1614,1617]],[[64755,64755],"mapped",[1600,1615,1617]],[[64756,64756],"mapped",[1600,1616,1617]],[[64757,64757],"mapped",[1591,1609]],[[64758,64758],"mapped",[1591,1610]],[[64759,64759],"mapped",[1593,1609]],[[64760,64760],"mapped",[1593,1610]],[[64761,64761],"mapped",[1594,1609]],[[64762,64762],"mapped",[1594,1610]],[[64763,64763],"mapped",[1587,1609]],[[64764,64764],"mapped",[1587,1610]],[[64765,64765],"mapped",[1588,1609]],[[64766,64766],"mapped",[1588,1610]],[[64767,64767],"mapped",[1581,1609]],[[64768,64768],"mapped",[1581,1610]],[[64769,64769],"mapped",[1580,1609]],[[64770,64770],"mapped",[1580,1610]],[[64771,64771],"mapped",[1582,1609]],[[64772,64772],"mapped",[1582,1610]],[[64773,64773],"mapped",[1589,1609]],[[64774,64774],"mapped",[1589,1610]],[[64775,64775],"mapped",[1590,1609]],[[64776,64776],"mapped",[1590,1610]],[[64777,64777],"mapped",[1588,1580]],[[64778,64778],"mapped",[1588,1581]],[[64779,64779],"mapped",[1588,1582]],[[64780,64780],"mapped",[1588,1605]],[[64781,64781],"mapped",[1588,1585]],[[64782,64782],"mapped",[1587,1585]],[[64783,64783],"mapped",[1589,1585]],[[64784,64784],"mapped",[1590,1585]],[[64785,64785],"mapped",[1591,1609]],[[64786,64786],"mapped",[1591,1610]],[[64787,64787],"mapped",[1593,1609]],[[64788,64788],"mapped",[1593,1610]],[[64789,64789],"mapped",[1594,1609]],[[64790,64790],"mapped",[1594,1610]],[[64791,64791],"mapped",[1587,1609]],[[64792,64792],"mapped",[1587,1610]],[[64793,64793],"mapped",[1588,1609]],[[64794,64794],"mapped",[1588,1610]],[[64795,64795],"mapped",[1581,1609]],[[64796,64796],"mapped",[1581,1610]],[[64797,64797],"mapped",[1580,1609]],[[64798,64798],"mapped",[1580,1610]],[[64799,64799],"mapped",[1582,1609]],[[64800,64800],"mapped",[1582,1610]],[[64801,64801],"mapped",[1589,1609]],[[64802,64802],"mapped",[1589,1610]],[[64803,64803],"mapped",[1590,1609]],[[64804,64804],"mapped",[1590,1610]],[[64805,64805],"mapped",[1588,1580]],[[64806,64806],"mapped",[1588,1581]],[[64807,64807],"mapped",[1588,1582]],[[64808,64808],"mapped",[1588,1605]],[[64809,64809],"mapped",[1588,1585]],[[64810,64810],"mapped",[1587,1585]],[[64811,64811],"mapped",[1589,1585]],[[64812,64812],"mapped",[1590,1585]],[[64813,64813],"mapped",[1588,1580]],[[64814,64814],"mapped",[1588,1581]],[[64815,64815],"mapped",[1588,1582]],[[64816,64816],"mapped",[1588,1605]],[[64817,64817],"mapped",[1587,1607]],[[64818,64818],"mapped",[1588,1607]],[[64819,64819],"mapped",[1591,1605]],[[64820,64820],"mapped",[1587,1580]],[[64821,64821],"mapped",[1587,1581]],[[64822,64822],"mapped",[1587,1582]],[[64823,64823],"mapped",[1588,1580]],[[64824,64824],"mapped",[1588,1581]],[[64825,64825],"mapped",[1588,1582]],[[64826,64826],"mapped",[1591,1605]],[[64827,64827],"mapped",[1592,1605]],[[64828,64829],"mapped",[1575,1611]],[[64830,64831],"valid",[],"NV8"],[[64832,64847],"disallowed"],[[64848,64848],"mapped",[1578,1580,1605]],[[64849,64850],"mapped",[1578,1581,1580]],[[64851,64851],"mapped",[1578,1581,1605]],[[64852,64852],"mapped",[1578,1582,1605]],[[64853,64853],"mapped",[1578,1605,1580]],[[64854,64854],"mapped",[1578,1605,1581]],[[64855,64855],"mapped",[1578,1605,1582]],[[64856,64857],"mapped",[1580,1605,1581]],[[64858,64858],"mapped",[1581,1605,1610]],[[64859,64859],"mapped",[1581,1605,1609]],[[64860,64860],"mapped",[1587,1581,1580]],[[64861,64861],"mapped",[1587,1580,1581]],[[64862,64862],"mapped",[1587,1580,1609]],[[64863,64864],"mapped",[1587,1605,1581]],[[64865,64865],"mapped",[1587,1605,1580]],[[64866,64867],"mapped",[1587,1605,1605]],[[64868,64869],"mapped",[1589,1581,1581]],[[64870,64870],"mapped",[1589,1605,1605]],[[64871,64872],"mapped",[1588,1581,1605]],[[64873,64873],"mapped",[1588,1580,1610]],[[64874,64875],"mapped",[1588,1605,1582]],[[64876,64877],"mapped",[1588,1605,1605]],[[64878,64878],"mapped",[1590,1581,1609]],[[64879,64880],"mapped",[1590,1582,1605]],[[64881,64882],"mapped",[1591,1605,1581]],[[64883,64883],"mapped",[1591,1605,1605]],[[64884,64884],"mapped",[1591,1605,1610]],[[64885,64885],"mapped",[1593,1580,1605]],[[64886,64887],"mapped",[1593,1605,1605]],[[64888,64888],"mapped",[1593,1605,1609]],[[64889,64889],"mapped",[1594,1605,1605]],[[64890,64890],"mapped",[1594,1605,1610]],[[64891,64891],"mapped",[1594,1605,1609]],[[64892,64893],"mapped",[1601,1582,1605]],[[64894,64894],"mapped",[1602,1605,1581]],[[64895,64895],"mapped",[1602,1605,1605]],[[64896,64896],"mapped",[1604,1581,1605]],[[64897,64897],"mapped",[1604,1581,1610]],[[64898,64898],"mapped",[1604,1581,1609]],[[64899,64900],"mapped",[1604,1580,1580]],[[64901,64902],"mapped",[1604,1582,1605]],[[64903,64904],"mapped",[1604,1605,1581]],[[64905,64905],"mapped",[1605,1581,1580]],[[64906,64906],"mapped",[1605,1581,1605]],[[64907,64907],"mapped",[1605,1581,1610]],[[64908,64908],"mapped",[1605,1580,1581]],[[64909,64909],"mapped",[1605,1580,1605]],[[64910,64910],"mapped",[1605,1582,1580]],[[64911,64911],"mapped",[1605,1582,1605]],[[64912,64913],"disallowed"],[[64914,64914],"mapped",[1605,1580,1582]],[[64915,64915],"mapped",[1607,1605,1580]],[[64916,64916],"mapped",[1607,1605,1605]],[[64917,64917],"mapped",[1606,1581,1605]],[[64918,64918],"mapped",[1606,1581,1609]],[[64919,64920],"mapped",[1606,1580,1605]],[[64921,64921],"mapped",[1606,1580,1609]],[[64922,64922],"mapped",[1606,1605,1610]],[[64923,64923],"mapped",[1606,1605,1609]],[[64924,64925],"mapped",[1610,1605,1605]],[[64926,64926],"mapped",[1576,1582,1610]],[[64927,64927],"mapped",[1578,1580,1610]],[[64928,64928],"mapped",[1578,1580,1609]],[[64929,64929],"mapped",[1578,1582,1610]],[[64930,64930],"mapped",[1578,1582,1609]],[[64931,64931],"mapped",[1578,1605,1610]],[[64932,64932],"mapped",[1578,1605,1609]],[[64933,64933],"mapped",[1580,1605,1610]],[[64934,64934],"mapped",[1580,1581,1609]],[[64935,64935],"mapped",[1580,1605,1609]],[[64936,64936],"mapped",[1587,1582,1609]],[[64937,64937],"mapped",[1589,1581,1610]],[[64938,64938],"mapped",[1588,1581,1610]],[[64939,64939],"mapped",[1590,1581,1610]],[[64940,64940],"mapped",[1604,1580,1610]],[[64941,64941],"mapped",[1604,1605,1610]],[[64942,64942],"mapped",[1610,1581,1610]],[[64943,64943],"mapped",[1610,1580,1610]],[[64944,64944],"mapped",[1610,1605,1610]],[[64945,64945],"mapped",[1605,1605,1610]],[[64946,64946],"mapped",[1602,1605,1610]],[[64947,64947],"mapped",[1606,1581,1610]],[[64948,64948],"mapped",[1602,1605,1581]],[[64949,64949],"mapped",[1604,1581,1605]],[[64950,64950],"mapped",[1593,1605,1610]],[[64951,64951],"mapped",[1603,1605,1610]],[[64952,64952],"mapped",[1606,1580,1581]],[[64953,64953],"mapped",[1605,1582,1610]],[[64954,64954],"mapped",[1604,1580,1605]],[[64955,64955],"mapped",[1603,1605,1605]],[[64956,64956],"mapped",[1604,1580,1605]],[[64957,64957],"mapped",[1606,1580,1581]],[[64958,64958],"mapped",[1580,1581,1610]],[[64959,64959],"mapped",[1581,1580,1610]],[[64960,64960],"mapped",[1605,1580,1610]],[[64961,64961],"mapped",[1601,1605,1610]],[[64962,64962],"mapped",[1576,1581,1610]],[[64963,64963],"mapped",[1603,1605,1605]],[[64964,64964],"mapped",[1593,1580,1605]],[[64965,64965],"mapped",[1589,1605,1605]],[[64966,64966],"mapped",[1587,1582,1610]],[[64967,64967],"mapped",[1606,1580,1610]],[[64968,64975],"disallowed"],[[64976,65007],"disallowed"],[[65008,65008],"mapped",[1589,1604,1746]],[[65009,65009],"mapped",[1602,1604,1746]],[[65010,65010],"mapped",[1575,1604,1604,1607]],[[65011,65011],"mapped",[1575,1603,1576,1585]],[[65012,65012],"mapped",[1605,1581,1605,1583]],[[65013,65013],"mapped",[1589,1604,1593,1605]],[[65014,65014],"mapped",[1585,1587,1608,1604]],[[65015,65015],"mapped",[1593,1604,1610,1607]],[[65016,65016],"mapped",[1608,1587,1604,1605]],[[65017,65017],"mapped",[1589,1604,1609]],[[65018,65018],"disallowed_STD3_mapped",[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605]],[[65019,65019],"disallowed_STD3_mapped",[1580,1604,32,1580,1604,1575,1604,1607]],[[65020,65020],"mapped",[1585,1740,1575,1604]],[[65021,65021],"valid",[],"NV8"],[[65022,65023],"disallowed"],[[65024,65039],"ignored"],[[65040,65040],"disallowed_STD3_mapped",[44]],[[65041,65041],"mapped",[12289]],[[65042,65042],"disallowed"],[[65043,65043],"disallowed_STD3_mapped",[58]],[[65044,65044],"disallowed_STD3_mapped",[59]],[[65045,65045],"disallowed_STD3_mapped",[33]],[[65046,65046],"disallowed_STD3_mapped",[63]],[[65047,65047],"mapped",[12310]],[[65048,65048],"mapped",[12311]],[[65049,65049],"disallowed"],[[65050,65055],"disallowed"],[[65056,65059],"valid"],[[65060,65062],"valid"],[[65063,65069],"valid"],[[65070,65071],"valid"],[[65072,65072],"disallowed"],[[65073,65073],"mapped",[8212]],[[65074,65074],"mapped",[8211]],[[65075,65076],"disallowed_STD3_mapped",[95]],[[65077,65077],"disallowed_STD3_mapped",[40]],[[65078,65078],"disallowed_STD3_mapped",[41]],[[65079,65079],"disallowed_STD3_mapped",[123]],[[65080,65080],"disallowed_STD3_mapped",[125]],[[65081,65081],"mapped",[12308]],[[65082,65082],"mapped",[12309]],[[65083,65083],"mapped",[12304]],[[65084,65084],"mapped",[12305]],[[65085,65085],"mapped",[12298]],[[65086,65086],"mapped",[12299]],[[65087,65087],"mapped",[12296]],[[65088,65088],"mapped",[12297]],[[65089,65089],"mapped",[12300]],[[65090,65090],"mapped",[12301]],[[65091,65091],"mapped",[12302]],[[65092,65092],"mapped",[12303]],[[65093,65094],"valid",[],"NV8"],[[65095,65095],"disallowed_STD3_mapped",[91]],[[65096,65096],"disallowed_STD3_mapped",[93]],[[65097,65100],"disallowed_STD3_mapped",[32,773]],[[65101,65103],"disallowed_STD3_mapped",[95]],[[65104,65104],"disallowed_STD3_mapped",[44]],[[65105,65105],"mapped",[12289]],[[65106,65106],"disallowed"],[[65107,65107],"disallowed"],[[65108,65108],"disallowed_STD3_mapped",[59]],[[65109,65109],"disallowed_STD3_mapped",[58]],[[65110,65110],"disallowed_STD3_mapped",[63]],[[65111,65111],"disallowed_STD3_mapped",[33]],[[65112,65112],"mapped",[8212]],[[65113,65113],"disallowed_STD3_mapped",[40]],[[65114,65114],"disallowed_STD3_mapped",[41]],[[65115,65115],"disallowed_STD3_mapped",[123]],[[65116,65116],"disallowed_STD3_mapped",[125]],[[65117,65117],"mapped",[12308]],[[65118,65118],"mapped",[12309]],[[65119,65119],"disallowed_STD3_mapped",[35]],[[65120,65120],"disallowed_STD3_mapped",[38]],[[65121,65121],"disallowed_STD3_mapped",[42]],[[65122,65122],"disallowed_STD3_mapped",[43]],[[65123,65123],"mapped",[45]],[[65124,65124],"disallowed_STD3_mapped",[60]],[[65125,65125],"disallowed_STD3_mapped",[62]],[[65126,65126],"disallowed_STD3_mapped",[61]],[[65127,65127],"disallowed"],[[65128,65128],"disallowed_STD3_mapped",[92]],[[65129,65129],"disallowed_STD3_mapped",[36]],[[65130,65130],"disallowed_STD3_mapped",[37]],[[65131,65131],"disallowed_STD3_mapped",[64]],[[65132,65135],"disallowed"],[[65136,65136],"disallowed_STD3_mapped",[32,1611]],[[65137,65137],"mapped",[1600,1611]],[[65138,65138],"disallowed_STD3_mapped",[32,1612]],[[65139,65139],"valid"],[[65140,65140],"disallowed_STD3_mapped",[32,1613]],[[65141,65141],"disallowed"],[[65142,65142],"disallowed_STD3_mapped",[32,1614]],[[65143,65143],"mapped",[1600,1614]],[[65144,65144],"disallowed_STD3_mapped",[32,1615]],[[65145,65145],"mapped",[1600,1615]],[[65146,65146],"disallowed_STD3_mapped",[32,1616]],[[65147,65147],"mapped",[1600,1616]],[[65148,65148],"disallowed_STD3_mapped",[32,1617]],[[65149,65149],"mapped",[1600,1617]],[[65150,65150],"disallowed_STD3_mapped",[32,1618]],[[65151,65151],"mapped",[1600,1618]],[[65152,65152],"mapped",[1569]],[[65153,65154],"mapped",[1570]],[[65155,65156],"mapped",[1571]],[[65157,65158],"mapped",[1572]],[[65159,65160],"mapped",[1573]],[[65161,65164],"mapped",[1574]],[[65165,65166],"mapped",[1575]],[[65167,65170],"mapped",[1576]],[[65171,65172],"mapped",[1577]],[[65173,65176],"mapped",[1578]],[[65177,65180],"mapped",[1579]],[[65181,65184],"mapped",[1580]],[[65185,65188],"mapped",[1581]],[[65189,65192],"mapped",[1582]],[[65193,65194],"mapped",[1583]],[[65195,65196],"mapped",[1584]],[[65197,65198],"mapped",[1585]],[[65199,65200],"mapped",[1586]],[[65201,65204],"mapped",[1587]],[[65205,65208],"mapped",[1588]],[[65209,65212],"mapped",[1589]],[[65213,65216],"mapped",[1590]],[[65217,65220],"mapped",[1591]],[[65221,65224],"mapped",[1592]],[[65225,65228],"mapped",[1593]],[[65229,65232],"mapped",[1594]],[[65233,65236],"mapped",[1601]],[[65237,65240],"mapped",[1602]],[[65241,65244],"mapped",[1603]],[[65245,65248],"mapped",[1604]],[[65249,65252],"mapped",[1605]],[[65253,65256],"mapped",[1606]],[[65257,65260],"mapped",[1607]],[[65261,65262],"mapped",[1608]],[[65263,65264],"mapped",[1609]],[[65265,65268],"mapped",[1610]],[[65269,65270],"mapped",[1604,1570]],[[65271,65272],"mapped",[1604,1571]],[[65273,65274],"mapped",[1604,1573]],[[65275,65276],"mapped",[1604,1575]],[[65277,65278],"disallowed"],[[65279,65279],"ignored"],[[65280,65280],"disallowed"],[[65281,65281],"disallowed_STD3_mapped",[33]],[[65282,65282],"disallowed_STD3_mapped",[34]],[[65283,65283],"disallowed_STD3_mapped",[35]],[[65284,65284],"disallowed_STD3_mapped",[36]],[[65285,65285],"disallowed_STD3_mapped",[37]],[[65286,65286],"disallowed_STD3_mapped",[38]],[[65287,65287],"disallowed_STD3_mapped",[39]],[[65288,65288],"disallowed_STD3_mapped",[40]],[[65289,65289],"disallowed_STD3_mapped",[41]],[[65290,65290],"disallowed_STD3_mapped",[42]],[[65291,65291],"disallowed_STD3_mapped",[43]],[[65292,65292],"disallowed_STD3_mapped",[44]],[[65293,65293],"mapped",[45]],[[65294,65294],"mapped",[46]],[[65295,65295],"disallowed_STD3_mapped",[47]],[[65296,65296],"mapped",[48]],[[65297,65297],"mapped",[49]],[[65298,65298],"mapped",[50]],[[65299,65299],"mapped",[51]],[[65300,65300],"mapped",[52]],[[65301,65301],"mapped",[53]],[[65302,65302],"mapped",[54]],[[65303,65303],"mapped",[55]],[[65304,65304],"mapped",[56]],[[65305,65305],"mapped",[57]],[[65306,65306],"disallowed_STD3_mapped",[58]],[[65307,65307],"disallowed_STD3_mapped",[59]],[[65308,65308],"disallowed_STD3_mapped",[60]],[[65309,65309],"disallowed_STD3_mapped",[61]],[[65310,65310],"disallowed_STD3_mapped",[62]],[[65311,65311],"disallowed_STD3_mapped",[63]],[[65312,65312],"disallowed_STD3_mapped",[64]],[[65313,65313],"mapped",[97]],[[65314,65314],"mapped",[98]],[[65315,65315],"mapped",[99]],[[65316,65316],"mapped",[100]],[[65317,65317],"mapped",[101]],[[65318,65318],"mapped",[102]],[[65319,65319],"mapped",[103]],[[65320,65320],"mapped",[104]],[[65321,65321],"mapped",[105]],[[65322,65322],"mapped",[106]],[[65323,65323],"mapped",[107]],[[65324,65324],"mapped",[108]],[[65325,65325],"mapped",[109]],[[65326,65326],"mapped",[110]],[[65327,65327],"mapped",[111]],[[65328,65328],"mapped",[112]],[[65329,65329],"mapped",[113]],[[65330,65330],"mapped",[114]],[[65331,65331],"mapped",[115]],[[65332,65332],"mapped",[116]],[[65333,65333],"mapped",[117]],[[65334,65334],"mapped",[118]],[[65335,65335],"mapped",[119]],[[65336,65336],"mapped",[120]],[[65337,65337],"mapped",[121]],[[65338,65338],"mapped",[122]],[[65339,65339],"disallowed_STD3_mapped",[91]],[[65340,65340],"disallowed_STD3_mapped",[92]],[[65341,65341],"disallowed_STD3_mapped",[93]],[[65342,65342],"disallowed_STD3_mapped",[94]],[[65343,65343],"disallowed_STD3_mapped",[95]],[[65344,65344],"disallowed_STD3_mapped",[96]],[[65345,65345],"mapped",[97]],[[65346,65346],"mapped",[98]],[[65347,65347],"mapped",[99]],[[65348,65348],"mapped",[100]],[[65349,65349],"mapped",[101]],[[65350,65350],"mapped",[102]],[[65351,65351],"mapped",[103]],[[65352,65352],"mapped",[104]],[[65353,65353],"mapped",[105]],[[65354,65354],"mapped",[106]],[[65355,65355],"mapped",[107]],[[65356,65356],"mapped",[108]],[[65357,65357],"mapped",[109]],[[65358,65358],"mapped",[110]],[[65359,65359],"mapped",[111]],[[65360,65360],"mapped",[112]],[[65361,65361],"mapped",[113]],[[65362,65362],"mapped",[114]],[[65363,65363],"mapped",[115]],[[65364,65364],"mapped",[116]],[[65365,65365],"mapped",[117]],[[65366,65366],"mapped",[118]],[[65367,65367],"mapped",[119]],[[65368,65368],"mapped",[120]],[[65369,65369],"mapped",[121]],[[65370,65370],"mapped",[122]],[[65371,65371],"disallowed_STD3_mapped",[123]],[[65372,65372],"disallowed_STD3_mapped",[124]],[[65373,65373],"disallowed_STD3_mapped",[125]],[[65374,65374],"disallowed_STD3_mapped",[126]],[[65375,65375],"mapped",[10629]],[[65376,65376],"mapped",[10630]],[[65377,65377],"mapped",[46]],[[65378,65378],"mapped",[12300]],[[65379,65379],"mapped",[12301]],[[65380,65380],"mapped",[12289]],[[65381,65381],"mapped",[12539]],[[65382,65382],"mapped",[12530]],[[65383,65383],"mapped",[12449]],[[65384,65384],"mapped",[12451]],[[65385,65385],"mapped",[12453]],[[65386,65386],"mapped",[12455]],[[65387,65387],"mapped",[12457]],[[65388,65388],"mapped",[12515]],[[65389,65389],"mapped",[12517]],[[65390,65390],"mapped",[12519]],[[65391,65391],"mapped",[12483]],[[65392,65392],"mapped",[12540]],[[65393,65393],"mapped",[12450]],[[65394,65394],"mapped",[12452]],[[65395,65395],"mapped",[12454]],[[65396,65396],"mapped",[12456]],[[65397,65397],"mapped",[12458]],[[65398,65398],"mapped",[12459]],[[65399,65399],"mapped",[12461]],[[65400,65400],"mapped",[12463]],[[65401,65401],"mapped",[12465]],[[65402,65402],"mapped",[12467]],[[65403,65403],"mapped",[12469]],[[65404,65404],"mapped",[12471]],[[65405,65405],"mapped",[12473]],[[65406,65406],"mapped",[12475]],[[65407,65407],"mapped",[12477]],[[65408,65408],"mapped",[12479]],[[65409,65409],"mapped",[12481]],[[65410,65410],"mapped",[12484]],[[65411,65411],"mapped",[12486]],[[65412,65412],"mapped",[12488]],[[65413,65413],"mapped",[12490]],[[65414,65414],"mapped",[12491]],[[65415,65415],"mapped",[12492]],[[65416,65416],"mapped",[12493]],[[65417,65417],"mapped",[12494]],[[65418,65418],"mapped",[12495]],[[65419,65419],"mapped",[12498]],[[65420,65420],"mapped",[12501]],[[65421,65421],"mapped",[12504]],[[65422,65422],"mapped",[12507]],[[65423,65423],"mapped",[12510]],[[65424,65424],"mapped",[12511]],[[65425,65425],"mapped",[12512]],[[65426,65426],"mapped",[12513]],[[65427,65427],"mapped",[12514]],[[65428,65428],"mapped",[12516]],[[65429,65429],"mapped",[12518]],[[65430,65430],"mapped",[12520]],[[65431,65431],"mapped",[12521]],[[65432,65432],"mapped",[12522]],[[65433,65433],"mapped",[12523]],[[65434,65434],"mapped",[12524]],[[65435,65435],"mapped",[12525]],[[65436,65436],"mapped",[12527]],[[65437,65437],"mapped",[12531]],[[65438,65438],"mapped",[12441]],[[65439,65439],"mapped",[12442]],[[65440,65440],"disallowed"],[[65441,65441],"mapped",[4352]],[[65442,65442],"mapped",[4353]],[[65443,65443],"mapped",[4522]],[[65444,65444],"mapped",[4354]],[[65445,65445],"mapped",[4524]],[[65446,65446],"mapped",[4525]],[[65447,65447],"mapped",[4355]],[[65448,65448],"mapped",[4356]],[[65449,65449],"mapped",[4357]],[[65450,65450],"mapped",[4528]],[[65451,65451],"mapped",[4529]],[[65452,65452],"mapped",[4530]],[[65453,65453],"mapped",[4531]],[[65454,65454],"mapped",[4532]],[[65455,65455],"mapped",[4533]],[[65456,65456],"mapped",[4378]],[[65457,65457],"mapped",[4358]],[[65458,65458],"mapped",[4359]],[[65459,65459],"mapped",[4360]],[[65460,65460],"mapped",[4385]],[[65461,65461],"mapped",[4361]],[[65462,65462],"mapped",[4362]],[[65463,65463],"mapped",[4363]],[[65464,65464],"mapped",[4364]],[[65465,65465],"mapped",[4365]],[[65466,65466],"mapped",[4366]],[[65467,65467],"mapped",[4367]],[[65468,65468],"mapped",[4368]],[[65469,65469],"mapped",[4369]],[[65470,65470],"mapped",[4370]],[[65471,65473],"disallowed"],[[65474,65474],"mapped",[4449]],[[65475,65475],"mapped",[4450]],[[65476,65476],"mapped",[4451]],[[65477,65477],"mapped",[4452]],[[65478,65478],"mapped",[4453]],[[65479,65479],"mapped",[4454]],[[65480,65481],"disallowed"],[[65482,65482],"mapped",[4455]],[[65483,65483],"mapped",[4456]],[[65484,65484],"mapped",[4457]],[[65485,65485],"mapped",[4458]],[[65486,65486],"mapped",[4459]],[[65487,65487],"mapped",[4460]],[[65488,65489],"disallowed"],[[65490,65490],"mapped",[4461]],[[65491,65491],"mapped",[4462]],[[65492,65492],"mapped",[4463]],[[65493,65493],"mapped",[4464]],[[65494,65494],"mapped",[4465]],[[65495,65495],"mapped",[4466]],[[65496,65497],"disallowed"],[[65498,65498],"mapped",[4467]],[[65499,65499],"mapped",[4468]],[[65500,65500],"mapped",[4469]],[[65501,65503],"disallowed"],[[65504,65504],"mapped",[162]],[[65505,65505],"mapped",[163]],[[65506,65506],"mapped",[172]],[[65507,65507],"disallowed_STD3_mapped",[32,772]],[[65508,65508],"mapped",[166]],[[65509,65509],"mapped",[165]],[[65510,65510],"mapped",[8361]],[[65511,65511],"disallowed"],[[65512,65512],"mapped",[9474]],[[65513,65513],"mapped",[8592]],[[65514,65514],"mapped",[8593]],[[65515,65515],"mapped",[8594]],[[65516,65516],"mapped",[8595]],[[65517,65517],"mapped",[9632]],[[65518,65518],"mapped",[9675]],[[65519,65528],"disallowed"],[[65529,65531],"disallowed"],[[65532,65532],"disallowed"],[[65533,65533],"disallowed"],[[65534,65535],"disallowed"],[[65536,65547],"valid"],[[65548,65548],"disallowed"],[[65549,65574],"valid"],[[65575,65575],"disallowed"],[[65576,65594],"valid"],[[65595,65595],"disallowed"],[[65596,65597],"valid"],[[65598,65598],"disallowed"],[[65599,65613],"valid"],[[65614,65615],"disallowed"],[[65616,65629],"valid"],[[65630,65663],"disallowed"],[[65664,65786],"valid"],[[65787,65791],"disallowed"],[[65792,65794],"valid",[],"NV8"],[[65795,65798],"disallowed"],[[65799,65843],"valid",[],"NV8"],[[65844,65846],"disallowed"],[[65847,65855],"valid",[],"NV8"],[[65856,65930],"valid",[],"NV8"],[[65931,65932],"valid",[],"NV8"],[[65933,65935],"disallowed"],[[65936,65947],"valid",[],"NV8"],[[65948,65951],"disallowed"],[[65952,65952],"valid",[],"NV8"],[[65953,65999],"disallowed"],[[66000,66044],"valid",[],"NV8"],[[66045,66045],"valid"],[[66046,66175],"disallowed"],[[66176,66204],"valid"],[[66205,66207],"disallowed"],[[66208,66256],"valid"],[[66257,66271],"disallowed"],[[66272,66272],"valid"],[[66273,66299],"valid",[],"NV8"],[[66300,66303],"disallowed"],[[66304,66334],"valid"],[[66335,66335],"valid"],[[66336,66339],"valid",[],"NV8"],[[66340,66351],"disallowed"],[[66352,66368],"valid"],[[66369,66369],"valid",[],"NV8"],[[66370,66377],"valid"],[[66378,66378],"valid",[],"NV8"],[[66379,66383],"disallowed"],[[66384,66426],"valid"],[[66427,66431],"disallowed"],[[66432,66461],"valid"],[[66462,66462],"disallowed"],[[66463,66463],"valid",[],"NV8"],[[66464,66499],"valid"],[[66500,66503],"disallowed"],[[66504,66511],"valid"],[[66512,66517],"valid",[],"NV8"],[[66518,66559],"disallowed"],[[66560,66560],"mapped",[66600]],[[66561,66561],"mapped",[66601]],[[66562,66562],"mapped",[66602]],[[66563,66563],"mapped",[66603]],[[66564,66564],"mapped",[66604]],[[66565,66565],"mapped",[66605]],[[66566,66566],"mapped",[66606]],[[66567,66567],"mapped",[66607]],[[66568,66568],"mapped",[66608]],[[66569,66569],"mapped",[66609]],[[66570,66570],"mapped",[66610]],[[66571,66571],"mapped",[66611]],[[66572,66572],"mapped",[66612]],[[66573,66573],"mapped",[66613]],[[66574,66574],"mapped",[66614]],[[66575,66575],"mapped",[66615]],[[66576,66576],"mapped",[66616]],[[66577,66577],"mapped",[66617]],[[66578,66578],"mapped",[66618]],[[66579,66579],"mapped",[66619]],[[66580,66580],"mapped",[66620]],[[66581,66581],"mapped",[66621]],[[66582,66582],"mapped",[66622]],[[66583,66583],"mapped",[66623]],[[66584,66584],"mapped",[66624]],[[66585,66585],"mapped",[66625]],[[66586,66586],"mapped",[66626]],[[66587,66587],"mapped",[66627]],[[66588,66588],"mapped",[66628]],[[66589,66589],"mapped",[66629]],[[66590,66590],"mapped",[66630]],[[66591,66591],"mapped",[66631]],[[66592,66592],"mapped",[66632]],[[66593,66593],"mapped",[66633]],[[66594,66594],"mapped",[66634]],[[66595,66595],"mapped",[66635]],[[66596,66596],"mapped",[66636]],[[66597,66597],"mapped",[66637]],[[66598,66598],"mapped",[66638]],[[66599,66599],"mapped",[66639]],[[66600,66637],"valid"],[[66638,66717],"valid"],[[66718,66719],"disallowed"],[[66720,66729],"valid"],[[66730,66815],"disallowed"],[[66816,66855],"valid"],[[66856,66863],"disallowed"],[[66864,66915],"valid"],[[66916,66926],"disallowed"],[[66927,66927],"valid",[],"NV8"],[[66928,67071],"disallowed"],[[67072,67382],"valid"],[[67383,67391],"disallowed"],[[67392,67413],"valid"],[[67414,67423],"disallowed"],[[67424,67431],"valid"],[[67432,67583],"disallowed"],[[67584,67589],"valid"],[[67590,67591],"disallowed"],[[67592,67592],"valid"],[[67593,67593],"disallowed"],[[67594,67637],"valid"],[[67638,67638],"disallowed"],[[67639,67640],"valid"],[[67641,67643],"disallowed"],[[67644,67644],"valid"],[[67645,67646],"disallowed"],[[67647,67647],"valid"],[[67648,67669],"valid"],[[67670,67670],"disallowed"],[[67671,67679],"valid",[],"NV8"],[[67680,67702],"valid"],[[67703,67711],"valid",[],"NV8"],[[67712,67742],"valid"],[[67743,67750],"disallowed"],[[67751,67759],"valid",[],"NV8"],[[67760,67807],"disallowed"],[[67808,67826],"valid"],[[67827,67827],"disallowed"],[[67828,67829],"valid"],[[67830,67834],"disallowed"],[[67835,67839],"valid",[],"NV8"],[[67840,67861],"valid"],[[67862,67865],"valid",[],"NV8"],[[67866,67867],"valid",[],"NV8"],[[67868,67870],"disallowed"],[[67871,67871],"valid",[],"NV8"],[[67872,67897],"valid"],[[67898,67902],"disallowed"],[[67903,67903],"valid",[],"NV8"],[[67904,67967],"disallowed"],[[67968,68023],"valid"],[[68024,68027],"disallowed"],[[68028,68029],"valid",[],"NV8"],[[68030,68031],"valid"],[[68032,68047],"valid",[],"NV8"],[[68048,68049],"disallowed"],[[68050,68095],"valid",[],"NV8"],[[68096,68099],"valid"],[[68100,68100],"disallowed"],[[68101,68102],"valid"],[[68103,68107],"disallowed"],[[68108,68115],"valid"],[[68116,68116],"disallowed"],[[68117,68119],"valid"],[[68120,68120],"disallowed"],[[68121,68147],"valid"],[[68148,68151],"disallowed"],[[68152,68154],"valid"],[[68155,68158],"disallowed"],[[68159,68159],"valid"],[[68160,68167],"valid",[],"NV8"],[[68168,68175],"disallowed"],[[68176,68184],"valid",[],"NV8"],[[68185,68191],"disallowed"],[[68192,68220],"valid"],[[68221,68223],"valid",[],"NV8"],[[68224,68252],"valid"],[[68253,68255],"valid",[],"NV8"],[[68256,68287],"disallowed"],[[68288,68295],"valid"],[[68296,68296],"valid",[],"NV8"],[[68297,68326],"valid"],[[68327,68330],"disallowed"],[[68331,68342],"valid",[],"NV8"],[[68343,68351],"disallowed"],[[68352,68405],"valid"],[[68406,68408],"disallowed"],[[68409,68415],"valid",[],"NV8"],[[68416,68437],"valid"],[[68438,68439],"disallowed"],[[68440,68447],"valid",[],"NV8"],[[68448,68466],"valid"],[[68467,68471],"disallowed"],[[68472,68479],"valid",[],"NV8"],[[68480,68497],"valid"],[[68498,68504],"disallowed"],[[68505,68508],"valid",[],"NV8"],[[68509,68520],"disallowed"],[[68521,68527],"valid",[],"NV8"],[[68528,68607],"disallowed"],[[68608,68680],"valid"],[[68681,68735],"disallowed"],[[68736,68736],"mapped",[68800]],[[68737,68737],"mapped",[68801]],[[68738,68738],"mapped",[68802]],[[68739,68739],"mapped",[68803]],[[68740,68740],"mapped",[68804]],[[68741,68741],"mapped",[68805]],[[68742,68742],"mapped",[68806]],[[68743,68743],"mapped",[68807]],[[68744,68744],"mapped",[68808]],[[68745,68745],"mapped",[68809]],[[68746,68746],"mapped",[68810]],[[68747,68747],"mapped",[68811]],[[68748,68748],"mapped",[68812]],[[68749,68749],"mapped",[68813]],[[68750,68750],"mapped",[68814]],[[68751,68751],"mapped",[68815]],[[68752,68752],"mapped",[68816]],[[68753,68753],"mapped",[68817]],[[68754,68754],"mapped",[68818]],[[68755,68755],"mapped",[68819]],[[68756,68756],"mapped",[68820]],[[68757,68757],"mapped",[68821]],[[68758,68758],"mapped",[68822]],[[68759,68759],"mapped",[68823]],[[68760,68760],"mapped",[68824]],[[68761,68761],"mapped",[68825]],[[68762,68762],"mapped",[68826]],[[68763,68763],"mapped",[68827]],[[68764,68764],"mapped",[68828]],[[68765,68765],"mapped",[68829]],[[68766,68766],"mapped",[68830]],[[68767,68767],"mapped",[68831]],[[68768,68768],"mapped",[68832]],[[68769,68769],"mapped",[68833]],[[68770,68770],"mapped",[68834]],[[68771,68771],"mapped",[68835]],[[68772,68772],"mapped",[68836]],[[68773,68773],"mapped",[68837]],[[68774,68774],"mapped",[68838]],[[68775,68775],"mapped",[68839]],[[68776,68776],"mapped",[68840]],[[68777,68777],"mapped",[68841]],[[68778,68778],"mapped",[68842]],[[68779,68779],"mapped",[68843]],[[68780,68780],"mapped",[68844]],[[68781,68781],"mapped",[68845]],[[68782,68782],"mapped",[68846]],[[68783,68783],"mapped",[68847]],[[68784,68784],"mapped",[68848]],[[68785,68785],"mapped",[68849]],[[68786,68786],"mapped",[68850]],[[68787,68799],"disallowed"],[[68800,68850],"valid"],[[68851,68857],"disallowed"],[[68858,68863],"valid",[],"NV8"],[[68864,69215],"disallowed"],[[69216,69246],"valid",[],"NV8"],[[69247,69631],"disallowed"],[[69632,69702],"valid"],[[69703,69709],"valid",[],"NV8"],[[69710,69713],"disallowed"],[[69714,69733],"valid",[],"NV8"],[[69734,69743],"valid"],[[69744,69758],"disallowed"],[[69759,69759],"valid"],[[69760,69818],"valid"],[[69819,69820],"valid",[],"NV8"],[[69821,69821],"disallowed"],[[69822,69825],"valid",[],"NV8"],[[69826,69839],"disallowed"],[[69840,69864],"valid"],[[69865,69871],"disallowed"],[[69872,69881],"valid"],[[69882,69887],"disallowed"],[[69888,69940],"valid"],[[69941,69941],"disallowed"],[[69942,69951],"valid"],[[69952,69955],"valid",[],"NV8"],[[69956,69967],"disallowed"],[[69968,70003],"valid"],[[70004,70005],"valid",[],"NV8"],[[70006,70006],"valid"],[[70007,70015],"disallowed"],[[70016,70084],"valid"],[[70085,70088],"valid",[],"NV8"],[[70089,70089],"valid",[],"NV8"],[[70090,70092],"valid"],[[70093,70093],"valid",[],"NV8"],[[70094,70095],"disallowed"],[[70096,70105],"valid"],[[70106,70106],"valid"],[[70107,70107],"valid",[],"NV8"],[[70108,70108],"valid"],[[70109,70111],"valid",[],"NV8"],[[70112,70112],"disallowed"],[[70113,70132],"valid",[],"NV8"],[[70133,70143],"disallowed"],[[70144,70161],"valid"],[[70162,70162],"disallowed"],[[70163,70199],"valid"],[[70200,70205],"valid",[],"NV8"],[[70206,70271],"disallowed"],[[70272,70278],"valid"],[[70279,70279],"disallowed"],[[70280,70280],"valid"],[[70281,70281],"disallowed"],[[70282,70285],"valid"],[[70286,70286],"disallowed"],[[70287,70301],"valid"],[[70302,70302],"disallowed"],[[70303,70312],"valid"],[[70313,70313],"valid",[],"NV8"],[[70314,70319],"disallowed"],[[70320,70378],"valid"],[[70379,70383],"disallowed"],[[70384,70393],"valid"],[[70394,70399],"disallowed"],[[70400,70400],"valid"],[[70401,70403],"valid"],[[70404,70404],"disallowed"],[[70405,70412],"valid"],[[70413,70414],"disallowed"],[[70415,70416],"valid"],[[70417,70418],"disallowed"],[[70419,70440],"valid"],[[70441,70441],"disallowed"],[[70442,70448],"valid"],[[70449,70449],"disallowed"],[[70450,70451],"valid"],[[70452,70452],"disallowed"],[[70453,70457],"valid"],[[70458,70459],"disallowed"],[[70460,70468],"valid"],[[70469,70470],"disallowed"],[[70471,70472],"valid"],[[70473,70474],"disallowed"],[[70475,70477],"valid"],[[70478,70479],"disallowed"],[[70480,70480],"valid"],[[70481,70486],"disallowed"],[[70487,70487],"valid"],[[70488,70492],"disallowed"],[[70493,70499],"valid"],[[70500,70501],"disallowed"],[[70502,70508],"valid"],[[70509,70511],"disallowed"],[[70512,70516],"valid"],[[70517,70783],"disallowed"],[[70784,70853],"valid"],[[70854,70854],"valid",[],"NV8"],[[70855,70855],"valid"],[[70856,70863],"disallowed"],[[70864,70873],"valid"],[[70874,71039],"disallowed"],[[71040,71093],"valid"],[[71094,71095],"disallowed"],[[71096,71104],"valid"],[[71105,71113],"valid",[],"NV8"],[[71114,71127],"valid",[],"NV8"],[[71128,71133],"valid"],[[71134,71167],"disallowed"],[[71168,71232],"valid"],[[71233,71235],"valid",[],"NV8"],[[71236,71236],"valid"],[[71237,71247],"disallowed"],[[71248,71257],"valid"],[[71258,71295],"disallowed"],[[71296,71351],"valid"],[[71352,71359],"disallowed"],[[71360,71369],"valid"],[[71370,71423],"disallowed"],[[71424,71449],"valid"],[[71450,71452],"disallowed"],[[71453,71467],"valid"],[[71468,71471],"disallowed"],[[71472,71481],"valid"],[[71482,71487],"valid",[],"NV8"],[[71488,71839],"disallowed"],[[71840,71840],"mapped",[71872]],[[71841,71841],"mapped",[71873]],[[71842,71842],"mapped",[71874]],[[71843,71843],"mapped",[71875]],[[71844,71844],"mapped",[71876]],[[71845,71845],"mapped",[71877]],[[71846,71846],"mapped",[71878]],[[71847,71847],"mapped",[71879]],[[71848,71848],"mapped",[71880]],[[71849,71849],"mapped",[71881]],[[71850,71850],"mapped",[71882]],[[71851,71851],"mapped",[71883]],[[71852,71852],"mapped",[71884]],[[71853,71853],"mapped",[71885]],[[71854,71854],"mapped",[71886]],[[71855,71855],"mapped",[71887]],[[71856,71856],"mapped",[71888]],[[71857,71857],"mapped",[71889]],[[71858,71858],"mapped",[71890]],[[71859,71859],"mapped",[71891]],[[71860,71860],"mapped",[71892]],[[71861,71861],"mapped",[71893]],[[71862,71862],"mapped",[71894]],[[71863,71863],"mapped",[71895]],[[71864,71864],"mapped",[71896]],[[71865,71865],"mapped",[71897]],[[71866,71866],"mapped",[71898]],[[71867,71867],"mapped",[71899]],[[71868,71868],"mapped",[71900]],[[71869,71869],"mapped",[71901]],[[71870,71870],"mapped",[71902]],[[71871,71871],"mapped",[71903]],[[71872,71913],"valid"],[[71914,71922],"valid",[],"NV8"],[[71923,71934],"disallowed"],[[71935,71935],"valid"],[[71936,72383],"disallowed"],[[72384,72440],"valid"],[[72441,73727],"disallowed"],[[73728,74606],"valid"],[[74607,74648],"valid"],[[74649,74649],"valid"],[[74650,74751],"disallowed"],[[74752,74850],"valid",[],"NV8"],[[74851,74862],"valid",[],"NV8"],[[74863,74863],"disallowed"],[[74864,74867],"valid",[],"NV8"],[[74868,74868],"valid",[],"NV8"],[[74869,74879],"disallowed"],[[74880,75075],"valid"],[[75076,77823],"disallowed"],[[77824,78894],"valid"],[[78895,82943],"disallowed"],[[82944,83526],"valid"],[[83527,92159],"disallowed"],[[92160,92728],"valid"],[[92729,92735],"disallowed"],[[92736,92766],"valid"],[[92767,92767],"disallowed"],[[92768,92777],"valid"],[[92778,92781],"disallowed"],[[92782,92783],"valid",[],"NV8"],[[92784,92879],"disallowed"],[[92880,92909],"valid"],[[92910,92911],"disallowed"],[[92912,92916],"valid"],[[92917,92917],"valid",[],"NV8"],[[92918,92927],"disallowed"],[[92928,92982],"valid"],[[92983,92991],"valid",[],"NV8"],[[92992,92995],"valid"],[[92996,92997],"valid",[],"NV8"],[[92998,93007],"disallowed"],[[93008,93017],"valid"],[[93018,93018],"disallowed"],[[93019,93025],"valid",[],"NV8"],[[93026,93026],"disallowed"],[[93027,93047],"valid"],[[93048,93052],"disallowed"],[[93053,93071],"valid"],[[93072,93951],"disallowed"],[[93952,94020],"valid"],[[94021,94031],"disallowed"],[[94032,94078],"valid"],[[94079,94094],"disallowed"],[[94095,94111],"valid"],[[94112,110591],"disallowed"],[[110592,110593],"valid"],[[110594,113663],"disallowed"],[[113664,113770],"valid"],[[113771,113775],"disallowed"],[[113776,113788],"valid"],[[113789,113791],"disallowed"],[[113792,113800],"valid"],[[113801,113807],"disallowed"],[[113808,113817],"valid"],[[113818,113819],"disallowed"],[[113820,113820],"valid",[],"NV8"],[[113821,113822],"valid"],[[113823,113823],"valid",[],"NV8"],[[113824,113827],"ignored"],[[113828,118783],"disallowed"],[[118784,119029],"valid",[],"NV8"],[[119030,119039],"disallowed"],[[119040,119078],"valid",[],"NV8"],[[119079,119080],"disallowed"],[[119081,119081],"valid",[],"NV8"],[[119082,119133],"valid",[],"NV8"],[[119134,119134],"mapped",[119127,119141]],[[119135,119135],"mapped",[119128,119141]],[[119136,119136],"mapped",[119128,119141,119150]],[[119137,119137],"mapped",[119128,119141,119151]],[[119138,119138],"mapped",[119128,119141,119152]],[[119139,119139],"mapped",[119128,119141,119153]],[[119140,119140],"mapped",[119128,119141,119154]],[[119141,119154],"valid",[],"NV8"],[[119155,119162],"disallowed"],[[119163,119226],"valid",[],"NV8"],[[119227,119227],"mapped",[119225,119141]],[[119228,119228],"mapped",[119226,119141]],[[119229,119229],"mapped",[119225,119141,119150]],[[119230,119230],"mapped",[119226,119141,119150]],[[119231,119231],"mapped",[119225,119141,119151]],[[119232,119232],"mapped",[119226,119141,119151]],[[119233,119261],"valid",[],"NV8"],[[119262,119272],"valid",[],"NV8"],[[119273,119295],"disallowed"],[[119296,119365],"valid",[],"NV8"],[[119366,119551],"disallowed"],[[119552,119638],"valid",[],"NV8"],[[119639,119647],"disallowed"],[[119648,119665],"valid",[],"NV8"],[[119666,119807],"disallowed"],[[119808,119808],"mapped",[97]],[[119809,119809],"mapped",[98]],[[119810,119810],"mapped",[99]],[[119811,119811],"mapped",[100]],[[119812,119812],"mapped",[101]],[[119813,119813],"mapped",[102]],[[119814,119814],"mapped",[103]],[[119815,119815],"mapped",[104]],[[119816,119816],"mapped",[105]],[[119817,119817],"mapped",[106]],[[119818,119818],"mapped",[107]],[[119819,119819],"mapped",[108]],[[119820,119820],"mapped",[109]],[[119821,119821],"mapped",[110]],[[119822,119822],"mapped",[111]],[[119823,119823],"mapped",[112]],[[119824,119824],"mapped",[113]],[[119825,119825],"mapped",[114]],[[119826,119826],"mapped",[115]],[[119827,119827],"mapped",[116]],[[119828,119828],"mapped",[117]],[[119829,119829],"mapped",[118]],[[119830,119830],"mapped",[119]],[[119831,119831],"mapped",[120]],[[119832,119832],"mapped",[121]],[[119833,119833],"mapped",[122]],[[119834,119834],"mapped",[97]],[[119835,119835],"mapped",[98]],[[119836,119836],"mapped",[99]],[[119837,119837],"mapped",[100]],[[119838,119838],"mapped",[101]],[[119839,119839],"mapped",[102]],[[119840,119840],"mapped",[103]],[[119841,119841],"mapped",[104]],[[119842,119842],"mapped",[105]],[[119843,119843],"mapped",[106]],[[119844,119844],"mapped",[107]],[[119845,119845],"mapped",[108]],[[119846,119846],"mapped",[109]],[[119847,119847],"mapped",[110]],[[119848,119848],"mapped",[111]],[[119849,119849],"mapped",[112]],[[119850,119850],"mapped",[113]],[[119851,119851],"mapped",[114]],[[119852,119852],"mapped",[115]],[[119853,119853],"mapped",[116]],[[119854,119854],"mapped",[117]],[[119855,119855],"mapped",[118]],[[119856,119856],"mapped",[119]],[[119857,119857],"mapped",[120]],[[119858,119858],"mapped",[121]],[[119859,119859],"mapped",[122]],[[119860,119860],"mapped",[97]],[[119861,119861],"mapped",[98]],[[119862,119862],"mapped",[99]],[[119863,119863],"mapped",[100]],[[119864,119864],"mapped",[101]],[[119865,119865],"mapped",[102]],[[119866,119866],"mapped",[103]],[[119867,119867],"mapped",[104]],[[119868,119868],"mapped",[105]],[[119869,119869],"mapped",[106]],[[119870,119870],"mapped",[107]],[[119871,119871],"mapped",[108]],[[119872,119872],"mapped",[109]],[[119873,119873],"mapped",[110]],[[119874,119874],"mapped",[111]],[[119875,119875],"mapped",[112]],[[119876,119876],"mapped",[113]],[[119877,119877],"mapped",[114]],[[119878,119878],"mapped",[115]],[[119879,119879],"mapped",[116]],[[119880,119880],"mapped",[117]],[[119881,119881],"mapped",[118]],[[119882,119882],"mapped",[119]],[[119883,119883],"mapped",[120]],[[119884,119884],"mapped",[121]],[[119885,119885],"mapped",[122]],[[119886,119886],"mapped",[97]],[[119887,119887],"mapped",[98]],[[119888,119888],"mapped",[99]],[[119889,119889],"mapped",[100]],[[119890,119890],"mapped",[101]],[[119891,119891],"mapped",[102]],[[119892,119892],"mapped",[103]],[[119893,119893],"disallowed"],[[119894,119894],"mapped",[105]],[[119895,119895],"mapped",[106]],[[119896,119896],"mapped",[107]],[[119897,119897],"mapped",[108]],[[119898,119898],"mapped",[109]],[[119899,119899],"mapped",[110]],[[119900,119900],"mapped",[111]],[[119901,119901],"mapped",[112]],[[119902,119902],"mapped",[113]],[[119903,119903],"mapped",[114]],[[119904,119904],"mapped",[115]],[[119905,119905],"mapped",[116]],[[119906,119906],"mapped",[117]],[[119907,119907],"mapped",[118]],[[119908,119908],"mapped",[119]],[[119909,119909],"mapped",[120]],[[119910,119910],"mapped",[121]],[[119911,119911],"mapped",[122]],[[119912,119912],"mapped",[97]],[[119913,119913],"mapped",[98]],[[119914,119914],"mapped",[99]],[[119915,119915],"mapped",[100]],[[119916,119916],"mapped",[101]],[[119917,119917],"mapped",[102]],[[119918,119918],"mapped",[103]],[[119919,119919],"mapped",[104]],[[119920,119920],"mapped",[105]],[[119921,119921],"mapped",[106]],[[119922,119922],"mapped",[107]],[[119923,119923],"mapped",[108]],[[119924,119924],"mapped",[109]],[[119925,119925],"mapped",[110]],[[119926,119926],"mapped",[111]],[[119927,119927],"mapped",[112]],[[119928,119928],"mapped",[113]],[[119929,119929],"mapped",[114]],[[119930,119930],"mapped",[115]],[[119931,119931],"mapped",[116]],[[119932,119932],"mapped",[117]],[[119933,119933],"mapped",[118]],[[119934,119934],"mapped",[119]],[[119935,119935],"mapped",[120]],[[119936,119936],"mapped",[121]],[[119937,119937],"mapped",[122]],[[119938,119938],"mapped",[97]],[[119939,119939],"mapped",[98]],[[119940,119940],"mapped",[99]],[[119941,119941],"mapped",[100]],[[119942,119942],"mapped",[101]],[[119943,119943],"mapped",[102]],[[119944,119944],"mapped",[103]],[[119945,119945],"mapped",[104]],[[119946,119946],"mapped",[105]],[[119947,119947],"mapped",[106]],[[119948,119948],"mapped",[107]],[[119949,119949],"mapped",[108]],[[119950,119950],"mapped",[109]],[[119951,119951],"mapped",[110]],[[119952,119952],"mapped",[111]],[[119953,119953],"mapped",[112]],[[119954,119954],"mapped",[113]],[[119955,119955],"mapped",[114]],[[119956,119956],"mapped",[115]],[[119957,119957],"mapped",[116]],[[119958,119958],"mapped",[117]],[[119959,119959],"mapped",[118]],[[119960,119960],"mapped",[119]],[[119961,119961],"mapped",[120]],[[119962,119962],"mapped",[121]],[[119963,119963],"mapped",[122]],[[119964,119964],"mapped",[97]],[[119965,119965],"disallowed"],[[119966,119966],"mapped",[99]],[[119967,119967],"mapped",[100]],[[119968,119969],"disallowed"],[[119970,119970],"mapped",[103]],[[119971,119972],"disallowed"],[[119973,119973],"mapped",[106]],[[119974,119974],"mapped",[107]],[[119975,119976],"disallowed"],[[119977,119977],"mapped",[110]],[[119978,119978],"mapped",[111]],[[119979,119979],"mapped",[112]],[[119980,119980],"mapped",[113]],[[119981,119981],"disallowed"],[[119982,119982],"mapped",[115]],[[119983,119983],"mapped",[116]],[[119984,119984],"mapped",[117]],[[119985,119985],"mapped",[118]],[[119986,119986],"mapped",[119]],[[119987,119987],"mapped",[120]],[[119988,119988],"mapped",[121]],[[119989,119989],"mapped",[122]],[[119990,119990],"mapped",[97]],[[119991,119991],"mapped",[98]],[[119992,119992],"mapped",[99]],[[119993,119993],"mapped",[100]],[[119994,119994],"disallowed"],[[119995,119995],"mapped",[102]],[[119996,119996],"disallowed"],[[119997,119997],"mapped",[104]],[[119998,119998],"mapped",[105]],[[119999,119999],"mapped",[106]],[[120000,120000],"mapped",[107]],[[120001,120001],"mapped",[108]],[[120002,120002],"mapped",[109]],[[120003,120003],"mapped",[110]],[[120004,120004],"disallowed"],[[120005,120005],"mapped",[112]],[[120006,120006],"mapped",[113]],[[120007,120007],"mapped",[114]],[[120008,120008],"mapped",[115]],[[120009,120009],"mapped",[116]],[[120010,120010],"mapped",[117]],[[120011,120011],"mapped",[118]],[[120012,120012],"mapped",[119]],[[120013,120013],"mapped",[120]],[[120014,120014],"mapped",[121]],[[120015,120015],"mapped",[122]],[[120016,120016],"mapped",[97]],[[120017,120017],"mapped",[98]],[[120018,120018],"mapped",[99]],[[120019,120019],"mapped",[100]],[[120020,120020],"mapped",[101]],[[120021,120021],"mapped",[102]],[[120022,120022],"mapped",[103]],[[120023,120023],"mapped",[104]],[[120024,120024],"mapped",[105]],[[120025,120025],"mapped",[106]],[[120026,120026],"mapped",[107]],[[120027,120027],"mapped",[108]],[[120028,120028],"mapped",[109]],[[120029,120029],"mapped",[110]],[[120030,120030],"mapped",[111]],[[120031,120031],"mapped",[112]],[[120032,120032],"mapped",[113]],[[120033,120033],"mapped",[114]],[[120034,120034],"mapped",[115]],[[120035,120035],"mapped",[116]],[[120036,120036],"mapped",[117]],[[120037,120037],"mapped",[118]],[[120038,120038],"mapped",[119]],[[120039,120039],"mapped",[120]],[[120040,120040],"mapped",[121]],[[120041,120041],"mapped",[122]],[[120042,120042],"mapped",[97]],[[120043,120043],"mapped",[98]],[[120044,120044],"mapped",[99]],[[120045,120045],"mapped",[100]],[[120046,120046],"mapped",[101]],[[120047,120047],"mapped",[102]],[[120048,120048],"mapped",[103]],[[120049,120049],"mapped",[104]],[[120050,120050],"mapped",[105]],[[120051,120051],"mapped",[106]],[[120052,120052],"mapped",[107]],[[120053,120053],"mapped",[108]],[[120054,120054],"mapped",[109]],[[120055,120055],"mapped",[110]],[[120056,120056],"mapped",[111]],[[120057,120057],"mapped",[112]],[[120058,120058],"mapped",[113]],[[120059,120059],"mapped",[114]],[[120060,120060],"mapped",[115]],[[120061,120061],"mapped",[116]],[[120062,120062],"mapped",[117]],[[120063,120063],"mapped",[118]],[[120064,120064],"mapped",[119]],[[120065,120065],"mapped",[120]],[[120066,120066],"mapped",[121]],[[120067,120067],"mapped",[122]],[[120068,120068],"mapped",[97]],[[120069,120069],"mapped",[98]],[[120070,120070],"disallowed"],[[120071,120071],"mapped",[100]],[[120072,120072],"mapped",[101]],[[120073,120073],"mapped",[102]],[[120074,120074],"mapped",[103]],[[120075,120076],"disallowed"],[[120077,120077],"mapped",[106]],[[120078,120078],"mapped",[107]],[[120079,120079],"mapped",[108]],[[120080,120080],"mapped",[109]],[[120081,120081],"mapped",[110]],[[120082,120082],"mapped",[111]],[[120083,120083],"mapped",[112]],[[120084,120084],"mapped",[113]],[[120085,120085],"disallowed"],[[120086,120086],"mapped",[115]],[[120087,120087],"mapped",[116]],[[120088,120088],"mapped",[117]],[[120089,120089],"mapped",[118]],[[120090,120090],"mapped",[119]],[[120091,120091],"mapped",[120]],[[120092,120092],"mapped",[121]],[[120093,120093],"disallowed"],[[120094,120094],"mapped",[97]],[[120095,120095],"mapped",[98]],[[120096,120096],"mapped",[99]],[[120097,120097],"mapped",[100]],[[120098,120098],"mapped",[101]],[[120099,120099],"mapped",[102]],[[120100,120100],"mapped",[103]],[[120101,120101],"mapped",[104]],[[120102,120102],"mapped",[105]],[[120103,120103],"mapped",[106]],[[120104,120104],"mapped",[107]],[[120105,120105],"mapped",[108]],[[120106,120106],"mapped",[109]],[[120107,120107],"mapped",[110]],[[120108,120108],"mapped",[111]],[[120109,120109],"mapped",[112]],[[120110,120110],"mapped",[113]],[[120111,120111],"mapped",[114]],[[120112,120112],"mapped",[115]],[[120113,120113],"mapped",[116]],[[120114,120114],"mapped",[117]],[[120115,120115],"mapped",[118]],[[120116,120116],"mapped",[119]],[[120117,120117],"mapped",[120]],[[120118,120118],"mapped",[121]],[[120119,120119],"mapped",[122]],[[120120,120120],"mapped",[97]],[[120121,120121],"mapped",[98]],[[120122,120122],"disallowed"],[[120123,120123],"mapped",[100]],[[120124,120124],"mapped",[101]],[[120125,120125],"mapped",[102]],[[120126,120126],"mapped",[103]],[[120127,120127],"disallowed"],[[120128,120128],"mapped",[105]],[[120129,120129],"mapped",[106]],[[120130,120130],"mapped",[107]],[[120131,120131],"mapped",[108]],[[120132,120132],"mapped",[109]],[[120133,120133],"disallowed"],[[120134,120134],"mapped",[111]],[[120135,120137],"disallowed"],[[120138,120138],"mapped",[115]],[[120139,120139],"mapped",[116]],[[120140,120140],"mapped",[117]],[[120141,120141],"mapped",[118]],[[120142,120142],"mapped",[119]],[[120143,120143],"mapped",[120]],[[120144,120144],"mapped",[121]],[[120145,120145],"disallowed"],[[120146,120146],"mapped",[97]],[[120147,120147],"mapped",[98]],[[120148,120148],"mapped",[99]],[[120149,120149],"mapped",[100]],[[120150,120150],"mapped",[101]],[[120151,120151],"mapped",[102]],[[120152,120152],"mapped",[103]],[[120153,120153],"mapped",[104]],[[120154,120154],"mapped",[105]],[[120155,120155],"mapped",[106]],[[120156,120156],"mapped",[107]],[[120157,120157],"mapped",[108]],[[120158,120158],"mapped",[109]],[[120159,120159],"mapped",[110]],[[120160,120160],"mapped",[111]],[[120161,120161],"mapped",[112]],[[120162,120162],"mapped",[113]],[[120163,120163],"mapped",[114]],[[120164,120164],"mapped",[115]],[[120165,120165],"mapped",[116]],[[120166,120166],"mapped",[117]],[[120167,120167],"mapped",[118]],[[120168,120168],"mapped",[119]],[[120169,120169],"mapped",[120]],[[120170,120170],"mapped",[121]],[[120171,120171],"mapped",[122]],[[120172,120172],"mapped",[97]],[[120173,120173],"mapped",[98]],[[120174,120174],"mapped",[99]],[[120175,120175],"mapped",[100]],[[120176,120176],"mapped",[101]],[[120177,120177],"mapped",[102]],[[120178,120178],"mapped",[103]],[[120179,120179],"mapped",[104]],[[120180,120180],"mapped",[105]],[[120181,120181],"mapped",[106]],[[120182,120182],"mapped",[107]],[[120183,120183],"mapped",[108]],[[120184,120184],"mapped",[109]],[[120185,120185],"mapped",[110]],[[120186,120186],"mapped",[111]],[[120187,120187],"mapped",[112]],[[120188,120188],"mapped",[113]],[[120189,120189],"mapped",[114]],[[120190,120190],"mapped",[115]],[[120191,120191],"mapped",[116]],[[120192,120192],"mapped",[117]],[[120193,120193],"mapped",[118]],[[120194,120194],"mapped",[119]],[[120195,120195],"mapped",[120]],[[120196,120196],"mapped",[121]],[[120197,120197],"mapped",[122]],[[120198,120198],"mapped",[97]],[[120199,120199],"mapped",[98]],[[120200,120200],"mapped",[99]],[[120201,120201],"mapped",[100]],[[120202,120202],"mapped",[101]],[[120203,120203],"mapped",[102]],[[120204,120204],"mapped",[103]],[[120205,120205],"mapped",[104]],[[120206,120206],"mapped",[105]],[[120207,120207],"mapped",[106]],[[120208,120208],"mapped",[107]],[[120209,120209],"mapped",[108]],[[120210,120210],"mapped",[109]],[[120211,120211],"mapped",[110]],[[120212,120212],"mapped",[111]],[[120213,120213],"mapped",[112]],[[120214,120214],"mapped",[113]],[[120215,120215],"mapped",[114]],[[120216,120216],"mapped",[115]],[[120217,120217],"mapped",[116]],[[120218,120218],"mapped",[117]],[[120219,120219],"mapped",[118]],[[120220,120220],"mapped",[119]],[[120221,120221],"mapped",[120]],[[120222,120222],"mapped",[121]],[[120223,120223],"mapped",[122]],[[120224,120224],"mapped",[97]],[[120225,120225],"mapped",[98]],[[120226,120226],"mapped",[99]],[[120227,120227],"mapped",[100]],[[120228,120228],"mapped",[101]],[[120229,120229],"mapped",[102]],[[120230,120230],"mapped",[103]],[[120231,120231],"mapped",[104]],[[120232,120232],"mapped",[105]],[[120233,120233],"mapped",[106]],[[120234,120234],"mapped",[107]],[[120235,120235],"mapped",[108]],[[120236,120236],"mapped",[109]],[[120237,120237],"mapped",[110]],[[120238,120238],"mapped",[111]],[[120239,120239],"mapped",[112]],[[120240,120240],"mapped",[113]],[[120241,120241],"mapped",[114]],[[120242,120242],"mapped",[115]],[[120243,120243],"mapped",[116]],[[120244,120244],"mapped",[117]],[[120245,120245],"mapped",[118]],[[120246,120246],"mapped",[119]],[[120247,120247],"mapped",[120]],[[120248,120248],"mapped",[121]],[[120249,120249],"mapped",[122]],[[120250,120250],"mapped",[97]],[[120251,120251],"mapped",[98]],[[120252,120252],"mapped",[99]],[[120253,120253],"mapped",[100]],[[120254,120254],"mapped",[101]],[[120255,120255],"mapped",[102]],[[120256,120256],"mapped",[103]],[[120257,120257],"mapped",[104]],[[120258,120258],"mapped",[105]],[[120259,120259],"mapped",[106]],[[120260,120260],"mapped",[107]],[[120261,120261],"mapped",[108]],[[120262,120262],"mapped",[109]],[[120263,120263],"mapped",[110]],[[120264,120264],"mapped",[111]],[[120265,120265],"mapped",[112]],[[120266,120266],"mapped",[113]],[[120267,120267],"mapped",[114]],[[120268,120268],"mapped",[115]],[[120269,120269],"mapped",[116]],[[120270,120270],"mapped",[117]],[[120271,120271],"mapped",[118]],[[120272,120272],"mapped",[119]],[[120273,120273],"mapped",[120]],[[120274,120274],"mapped",[121]],[[120275,120275],"mapped",[122]],[[120276,120276],"mapped",[97]],[[120277,120277],"mapped",[98]],[[120278,120278],"mapped",[99]],[[120279,120279],"mapped",[100]],[[120280,120280],"mapped",[101]],[[120281,120281],"mapped",[102]],[[120282,120282],"mapped",[103]],[[120283,120283],"mapped",[104]],[[120284,120284],"mapped",[105]],[[120285,120285],"mapped",[106]],[[120286,120286],"mapped",[107]],[[120287,120287],"mapped",[108]],[[120288,120288],"mapped",[109]],[[120289,120289],"mapped",[110]],[[120290,120290],"mapped",[111]],[[120291,120291],"mapped",[112]],[[120292,120292],"mapped",[113]],[[120293,120293],"mapped",[114]],[[120294,120294],"mapped",[115]],[[120295,120295],"mapped",[116]],[[120296,120296],"mapped",[117]],[[120297,120297],"mapped",[118]],[[120298,120298],"mapped",[119]],[[120299,120299],"mapped",[120]],[[120300,120300],"mapped",[121]],[[120301,120301],"mapped",[122]],[[120302,120302],"mapped",[97]],[[120303,120303],"mapped",[98]],[[120304,120304],"mapped",[99]],[[120305,120305],"mapped",[100]],[[120306,120306],"mapped",[101]],[[120307,120307],"mapped",[102]],[[120308,120308],"mapped",[103]],[[120309,120309],"mapped",[104]],[[120310,120310],"mapped",[105]],[[120311,120311],"mapped",[106]],[[120312,120312],"mapped",[107]],[[120313,120313],"mapped",[108]],[[120314,120314],"mapped",[109]],[[120315,120315],"mapped",[110]],[[120316,120316],"mapped",[111]],[[120317,120317],"mapped",[112]],[[120318,120318],"mapped",[113]],[[120319,120319],"mapped",[114]],[[120320,120320],"mapped",[115]],[[120321,120321],"mapped",[116]],[[120322,120322],"mapped",[117]],[[120323,120323],"mapped",[118]],[[120324,120324],"mapped",[119]],[[120325,120325],"mapped",[120]],[[120326,120326],"mapped",[121]],[[120327,120327],"mapped",[122]],[[120328,120328],"mapped",[97]],[[120329,120329],"mapped",[98]],[[120330,120330],"mapped",[99]],[[120331,120331],"mapped",[100]],[[120332,120332],"mapped",[101]],[[120333,120333],"mapped",[102]],[[120334,120334],"mapped",[103]],[[120335,120335],"mapped",[104]],[[120336,120336],"mapped",[105]],[[120337,120337],"mapped",[106]],[[120338,120338],"mapped",[107]],[[120339,120339],"mapped",[108]],[[120340,120340],"mapped",[109]],[[120341,120341],"mapped",[110]],[[120342,120342],"mapped",[111]],[[120343,120343],"mapped",[112]],[[120344,120344],"mapped",[113]],[[120345,120345],"mapped",[114]],[[120346,120346],"mapped",[115]],[[120347,120347],"mapped",[116]],[[120348,120348],"mapped",[117]],[[120349,120349],"mapped",[118]],[[120350,120350],"mapped",[119]],[[120351,120351],"mapped",[120]],[[120352,120352],"mapped",[121]],[[120353,120353],"mapped",[122]],[[120354,120354],"mapped",[97]],[[120355,120355],"mapped",[98]],[[120356,120356],"mapped",[99]],[[120357,120357],"mapped",[100]],[[120358,120358],"mapped",[101]],[[120359,120359],"mapped",[102]],[[120360,120360],"mapped",[103]],[[120361,120361],"mapped",[104]],[[120362,120362],"mapped",[105]],[[120363,120363],"mapped",[106]],[[120364,120364],"mapped",[107]],[[120365,120365],"mapped",[108]],[[120366,120366],"mapped",[109]],[[120367,120367],"mapped",[110]],[[120368,120368],"mapped",[111]],[[120369,120369],"mapped",[112]],[[120370,120370],"mapped",[113]],[[120371,120371],"mapped",[114]],[[120372,120372],"mapped",[115]],[[120373,120373],"mapped",[116]],[[120374,120374],"mapped",[117]],[[120375,120375],"mapped",[118]],[[120376,120376],"mapped",[119]],[[120377,120377],"mapped",[120]],[[120378,120378],"mapped",[121]],[[120379,120379],"mapped",[122]],[[120380,120380],"mapped",[97]],[[120381,120381],"mapped",[98]],[[120382,120382],"mapped",[99]],[[120383,120383],"mapped",[100]],[[120384,120384],"mapped",[101]],[[120385,120385],"mapped",[102]],[[120386,120386],"mapped",[103]],[[120387,120387],"mapped",[104]],[[120388,120388],"mapped",[105]],[[120389,120389],"mapped",[106]],[[120390,120390],"mapped",[107]],[[120391,120391],"mapped",[108]],[[120392,120392],"mapped",[109]],[[120393,120393],"mapped",[110]],[[120394,120394],"mapped",[111]],[[120395,120395],"mapped",[112]],[[120396,120396],"mapped",[113]],[[120397,120397],"mapped",[114]],[[120398,120398],"mapped",[115]],[[120399,120399],"mapped",[116]],[[120400,120400],"mapped",[117]],[[120401,120401],"mapped",[118]],[[120402,120402],"mapped",[119]],[[120403,120403],"mapped",[120]],[[120404,120404],"mapped",[121]],[[120405,120405],"mapped",[122]],[[120406,120406],"mapped",[97]],[[120407,120407],"mapped",[98]],[[120408,120408],"mapped",[99]],[[120409,120409],"mapped",[100]],[[120410,120410],"mapped",[101]],[[120411,120411],"mapped",[102]],[[120412,120412],"mapped",[103]],[[120413,120413],"mapped",[104]],[[120414,120414],"mapped",[105]],[[120415,120415],"mapped",[106]],[[120416,120416],"mapped",[107]],[[120417,120417],"mapped",[108]],[[120418,120418],"mapped",[109]],[[120419,120419],"mapped",[110]],[[120420,120420],"mapped",[111]],[[120421,120421],"mapped",[112]],[[120422,120422],"mapped",[113]],[[120423,120423],"mapped",[114]],[[120424,120424],"mapped",[115]],[[120425,120425],"mapped",[116]],[[120426,120426],"mapped",[117]],[[120427,120427],"mapped",[118]],[[120428,120428],"mapped",[119]],[[120429,120429],"mapped",[120]],[[120430,120430],"mapped",[121]],[[120431,120431],"mapped",[122]],[[120432,120432],"mapped",[97]],[[120433,120433],"mapped",[98]],[[120434,120434],"mapped",[99]],[[120435,120435],"mapped",[100]],[[120436,120436],"mapped",[101]],[[120437,120437],"mapped",[102]],[[120438,120438],"mapped",[103]],[[120439,120439],"mapped",[104]],[[120440,120440],"mapped",[105]],[[120441,120441],"mapped",[106]],[[120442,120442],"mapped",[107]],[[120443,120443],"mapped",[108]],[[120444,120444],"mapped",[109]],[[120445,120445],"mapped",[110]],[[120446,120446],"mapped",[111]],[[120447,120447],"mapped",[112]],[[120448,120448],"mapped",[113]],[[120449,120449],"mapped",[114]],[[120450,120450],"mapped",[115]],[[120451,120451],"mapped",[116]],[[120452,120452],"mapped",[117]],[[120453,120453],"mapped",[118]],[[120454,120454],"mapped",[119]],[[120455,120455],"mapped",[120]],[[120456,120456],"mapped",[121]],[[120457,120457],"mapped",[122]],[[120458,120458],"mapped",[97]],[[120459,120459],"mapped",[98]],[[120460,120460],"mapped",[99]],[[120461,120461],"mapped",[100]],[[120462,120462],"mapped",[101]],[[120463,120463],"mapped",[102]],[[120464,120464],"mapped",[103]],[[120465,120465],"mapped",[104]],[[120466,120466],"mapped",[105]],[[120467,120467],"mapped",[106]],[[120468,120468],"mapped",[107]],[[120469,120469],"mapped",[108]],[[120470,120470],"mapped",[109]],[[120471,120471],"mapped",[110]],[[120472,120472],"mapped",[111]],[[120473,120473],"mapped",[112]],[[120474,120474],"mapped",[113]],[[120475,120475],"mapped",[114]],[[120476,120476],"mapped",[115]],[[120477,120477],"mapped",[116]],[[120478,120478],"mapped",[117]],[[120479,120479],"mapped",[118]],[[120480,120480],"mapped",[119]],[[120481,120481],"mapped",[120]],[[120482,120482],"mapped",[121]],[[120483,120483],"mapped",[122]],[[120484,120484],"mapped",[305]],[[120485,120485],"mapped",[567]],[[120486,120487],"disallowed"],[[120488,120488],"mapped",[945]],[[120489,120489],"mapped",[946]],[[120490,120490],"mapped",[947]],[[120491,120491],"mapped",[948]],[[120492,120492],"mapped",[949]],[[120493,120493],"mapped",[950]],[[120494,120494],"mapped",[951]],[[120495,120495],"mapped",[952]],[[120496,120496],"mapped",[953]],[[120497,120497],"mapped",[954]],[[120498,120498],"mapped",[955]],[[120499,120499],"mapped",[956]],[[120500,120500],"mapped",[957]],[[120501,120501],"mapped",[958]],[[120502,120502],"mapped",[959]],[[120503,120503],"mapped",[960]],[[120504,120504],"mapped",[961]],[[120505,120505],"mapped",[952]],[[120506,120506],"mapped",[963]],[[120507,120507],"mapped",[964]],[[120508,120508],"mapped",[965]],[[120509,120509],"mapped",[966]],[[120510,120510],"mapped",[967]],[[120511,120511],"mapped",[968]],[[120512,120512],"mapped",[969]],[[120513,120513],"mapped",[8711]],[[120514,120514],"mapped",[945]],[[120515,120515],"mapped",[946]],[[120516,120516],"mapped",[947]],[[120517,120517],"mapped",[948]],[[120518,120518],"mapped",[949]],[[120519,120519],"mapped",[950]],[[120520,120520],"mapped",[951]],[[120521,120521],"mapped",[952]],[[120522,120522],"mapped",[953]],[[120523,120523],"mapped",[954]],[[120524,120524],"mapped",[955]],[[120525,120525],"mapped",[956]],[[120526,120526],"mapped",[957]],[[120527,120527],"mapped",[958]],[[120528,120528],"mapped",[959]],[[120529,120529],"mapped",[960]],[[120530,120530],"mapped",[961]],[[120531,120532],"mapped",[963]],[[120533,120533],"mapped",[964]],[[120534,120534],"mapped",[965]],[[120535,120535],"mapped",[966]],[[120536,120536],"mapped",[967]],[[120537,120537],"mapped",[968]],[[120538,120538],"mapped",[969]],[[120539,120539],"mapped",[8706]],[[120540,120540],"mapped",[949]],[[120541,120541],"mapped",[952]],[[120542,120542],"mapped",[954]],[[120543,120543],"mapped",[966]],[[120544,120544],"mapped",[961]],[[120545,120545],"mapped",[960]],[[120546,120546],"mapped",[945]],[[120547,120547],"mapped",[946]],[[120548,120548],"mapped",[947]],[[120549,120549],"mapped",[948]],[[120550,120550],"mapped",[949]],[[120551,120551],"mapped",[950]],[[120552,120552],"mapped",[951]],[[120553,120553],"mapped",[952]],[[120554,120554],"mapped",[953]],[[120555,120555],"mapped",[954]],[[120556,120556],"mapped",[955]],[[120557,120557],"mapped",[956]],[[120558,120558],"mapped",[957]],[[120559,120559],"mapped",[958]],[[120560,120560],"mapped",[959]],[[120561,120561],"mapped",[960]],[[120562,120562],"mapped",[961]],[[120563,120563],"mapped",[952]],[[120564,120564],"mapped",[963]],[[120565,120565],"mapped",[964]],[[120566,120566],"mapped",[965]],[[120567,120567],"mapped",[966]],[[120568,120568],"mapped",[967]],[[120569,120569],"mapped",[968]],[[120570,120570],"mapped",[969]],[[120571,120571],"mapped",[8711]],[[120572,120572],"mapped",[945]],[[120573,120573],"mapped",[946]],[[120574,120574],"mapped",[947]],[[120575,120575],"mapped",[948]],[[120576,120576],"mapped",[949]],[[120577,120577],"mapped",[950]],[[120578,120578],"mapped",[951]],[[120579,120579],"mapped",[952]],[[120580,120580],"mapped",[953]],[[120581,120581],"mapped",[954]],[[120582,120582],"mapped",[955]],[[120583,120583],"mapped",[956]],[[120584,120584],"mapped",[957]],[[120585,120585],"mapped",[958]],[[120586,120586],"mapped",[959]],[[120587,120587],"mapped",[960]],[[120588,120588],"mapped",[961]],[[120589,120590],"mapped",[963]],[[120591,120591],"mapped",[964]],[[120592,120592],"mapped",[965]],[[120593,120593],"mapped",[966]],[[120594,120594],"mapped",[967]],[[120595,120595],"mapped",[968]],[[120596,120596],"mapped",[969]],[[120597,120597],"mapped",[8706]],[[120598,120598],"mapped",[949]],[[120599,120599],"mapped",[952]],[[120600,120600],"mapped",[954]],[[120601,120601],"mapped",[966]],[[120602,120602],"mapped",[961]],[[120603,120603],"mapped",[960]],[[120604,120604],"mapped",[945]],[[120605,120605],"mapped",[946]],[[120606,120606],"mapped",[947]],[[120607,120607],"mapped",[948]],[[120608,120608],"mapped",[949]],[[120609,120609],"mapped",[950]],[[120610,120610],"mapped",[951]],[[120611,120611],"mapped",[952]],[[120612,120612],"mapped",[953]],[[120613,120613],"mapped",[954]],[[120614,120614],"mapped",[955]],[[120615,120615],"mapped",[956]],[[120616,120616],"mapped",[957]],[[120617,120617],"mapped",[958]],[[120618,120618],"mapped",[959]],[[120619,120619],"mapped",[960]],[[120620,120620],"mapped",[961]],[[120621,120621],"mapped",[952]],[[120622,120622],"mapped",[963]],[[120623,120623],"mapped",[964]],[[120624,120624],"mapped",[965]],[[120625,120625],"mapped",[966]],[[120626,120626],"mapped",[967]],[[120627,120627],"mapped",[968]],[[120628,120628],"mapped",[969]],[[120629,120629],"mapped",[8711]],[[120630,120630],"mapped",[945]],[[120631,120631],"mapped",[946]],[[120632,120632],"mapped",[947]],[[120633,120633],"mapped",[948]],[[120634,120634],"mapped",[949]],[[120635,120635],"mapped",[950]],[[120636,120636],"mapped",[951]],[[120637,120637],"mapped",[952]],[[120638,120638],"mapped",[953]],[[120639,120639],"mapped",[954]],[[120640,120640],"mapped",[955]],[[120641,120641],"mapped",[956]],[[120642,120642],"mapped",[957]],[[120643,120643],"mapped",[958]],[[120644,120644],"mapped",[959]],[[120645,120645],"mapped",[960]],[[120646,120646],"mapped",[961]],[[120647,120648],"mapped",[963]],[[120649,120649],"mapped",[964]],[[120650,120650],"mapped",[965]],[[120651,120651],"mapped",[966]],[[120652,120652],"mapped",[967]],[[120653,120653],"mapped",[968]],[[120654,120654],"mapped",[969]],[[120655,120655],"mapped",[8706]],[[120656,120656],"mapped",[949]],[[120657,120657],"mapped",[952]],[[120658,120658],"mapped",[954]],[[120659,120659],"mapped",[966]],[[120660,120660],"mapped",[961]],[[120661,120661],"mapped",[960]],[[120662,120662],"mapped",[945]],[[120663,120663],"mapped",[946]],[[120664,120664],"mapped",[947]],[[120665,120665],"mapped",[948]],[[120666,120666],"mapped",[949]],[[120667,120667],"mapped",[950]],[[120668,120668],"mapped",[951]],[[120669,120669],"mapped",[952]],[[120670,120670],"mapped",[953]],[[120671,120671],"mapped",[954]],[[120672,120672],"mapped",[955]],[[120673,120673],"mapped",[956]],[[120674,120674],"mapped",[957]],[[120675,120675],"mapped",[958]],[[120676,120676],"mapped",[959]],[[120677,120677],"mapped",[960]],[[120678,120678],"mapped",[961]],[[120679,120679],"mapped",[952]],[[120680,120680],"mapped",[963]],[[120681,120681],"mapped",[964]],[[120682,120682],"mapped",[965]],[[120683,120683],"mapped",[966]],[[120684,120684],"mapped",[967]],[[120685,120685],"mapped",[968]],[[120686,120686],"mapped",[969]],[[120687,120687],"mapped",[8711]],[[120688,120688],"mapped",[945]],[[120689,120689],"mapped",[946]],[[120690,120690],"mapped",[947]],[[120691,120691],"mapped",[948]],[[120692,120692],"mapped",[949]],[[120693,120693],"mapped",[950]],[[120694,120694],"mapped",[951]],[[120695,120695],"mapped",[952]],[[120696,120696],"mapped",[953]],[[120697,120697],"mapped",[954]],[[120698,120698],"mapped",[955]],[[120699,120699],"mapped",[956]],[[120700,120700],"mapped",[957]],[[120701,120701],"mapped",[958]],[[120702,120702],"mapped",[959]],[[120703,120703],"mapped",[960]],[[120704,120704],"mapped",[961]],[[120705,120706],"mapped",[963]],[[120707,120707],"mapped",[964]],[[120708,120708],"mapped",[965]],[[120709,120709],"mapped",[966]],[[120710,120710],"mapped",[967]],[[120711,120711],"mapped",[968]],[[120712,120712],"mapped",[969]],[[120713,120713],"mapped",[8706]],[[120714,120714],"mapped",[949]],[[120715,120715],"mapped",[952]],[[120716,120716],"mapped",[954]],[[120717,120717],"mapped",[966]],[[120718,120718],"mapped",[961]],[[120719,120719],"mapped",[960]],[[120720,120720],"mapped",[945]],[[120721,120721],"mapped",[946]],[[120722,120722],"mapped",[947]],[[120723,120723],"mapped",[948]],[[120724,120724],"mapped",[949]],[[120725,120725],"mapped",[950]],[[120726,120726],"mapped",[951]],[[120727,120727],"mapped",[952]],[[120728,120728],"mapped",[953]],[[120729,120729],"mapped",[954]],[[120730,120730],"mapped",[955]],[[120731,120731],"mapped",[956]],[[120732,120732],"mapped",[957]],[[120733,120733],"mapped",[958]],[[120734,120734],"mapped",[959]],[[120735,120735],"mapped",[960]],[[120736,120736],"mapped",[961]],[[120737,120737],"mapped",[952]],[[120738,120738],"mapped",[963]],[[120739,120739],"mapped",[964]],[[120740,120740],"mapped",[965]],[[120741,120741],"mapped",[966]],[[120742,120742],"mapped",[967]],[[120743,120743],"mapped",[968]],[[120744,120744],"mapped",[969]],[[120745,120745],"mapped",[8711]],[[120746,120746],"mapped",[945]],[[120747,120747],"mapped",[946]],[[120748,120748],"mapped",[947]],[[120749,120749],"mapped",[948]],[[120750,120750],"mapped",[949]],[[120751,120751],"mapped",[950]],[[120752,120752],"mapped",[951]],[[120753,120753],"mapped",[952]],[[120754,120754],"mapped",[953]],[[120755,120755],"mapped",[954]],[[120756,120756],"mapped",[955]],[[120757,120757],"mapped",[956]],[[120758,120758],"mapped",[957]],[[120759,120759],"mapped",[958]],[[120760,120760],"mapped",[959]],[[120761,120761],"mapped",[960]],[[120762,120762],"mapped",[961]],[[120763,120764],"mapped",[963]],[[120765,120765],"mapped",[964]],[[120766,120766],"mapped",[965]],[[120767,120767],"mapped",[966]],[[120768,120768],"mapped",[967]],[[120769,120769],"mapped",[968]],[[120770,120770],"mapped",[969]],[[120771,120771],"mapped",[8706]],[[120772,120772],"mapped",[949]],[[120773,120773],"mapped",[952]],[[120774,120774],"mapped",[954]],[[120775,120775],"mapped",[966]],[[120776,120776],"mapped",[961]],[[120777,120777],"mapped",[960]],[[120778,120779],"mapped",[989]],[[120780,120781],"disallowed"],[[120782,120782],"mapped",[48]],[[120783,120783],"mapped",[49]],[[120784,120784],"mapped",[50]],[[120785,120785],"mapped",[51]],[[120786,120786],"mapped",[52]],[[120787,120787],"mapped",[53]],[[120788,120788],"mapped",[54]],[[120789,120789],"mapped",[55]],[[120790,120790],"mapped",[56]],[[120791,120791],"mapped",[57]],[[120792,120792],"mapped",[48]],[[120793,120793],"mapped",[49]],[[120794,120794],"mapped",[50]],[[120795,120795],"mapped",[51]],[[120796,120796],"mapped",[52]],[[120797,120797],"mapped",[53]],[[120798,120798],"mapped",[54]],[[120799,120799],"mapped",[55]],[[120800,120800],"mapped",[56]],[[120801,120801],"mapped",[57]],[[120802,120802],"mapped",[48]],[[120803,120803],"mapped",[49]],[[120804,120804],"mapped",[50]],[[120805,120805],"mapped",[51]],[[120806,120806],"mapped",[52]],[[120807,120807],"mapped",[53]],[[120808,120808],"mapped",[54]],[[120809,120809],"mapped",[55]],[[120810,120810],"mapped",[56]],[[120811,120811],"mapped",[57]],[[120812,120812],"mapped",[48]],[[120813,120813],"mapped",[49]],[[120814,120814],"mapped",[50]],[[120815,120815],"mapped",[51]],[[120816,120816],"mapped",[52]],[[120817,120817],"mapped",[53]],[[120818,120818],"mapped",[54]],[[120819,120819],"mapped",[55]],[[120820,120820],"mapped",[56]],[[120821,120821],"mapped",[57]],[[120822,120822],"mapped",[48]],[[120823,120823],"mapped",[49]],[[120824,120824],"mapped",[50]],[[120825,120825],"mapped",[51]],[[120826,120826],"mapped",[52]],[[120827,120827],"mapped",[53]],[[120828,120828],"mapped",[54]],[[120829,120829],"mapped",[55]],[[120830,120830],"mapped",[56]],[[120831,120831],"mapped",[57]],[[120832,121343],"valid",[],"NV8"],[[121344,121398],"valid"],[[121399,121402],"valid",[],"NV8"],[[121403,121452],"valid"],[[121453,121460],"valid",[],"NV8"],[[121461,121461],"valid"],[[121462,121475],"valid",[],"NV8"],[[121476,121476],"valid"],[[121477,121483],"valid",[],"NV8"],[[121484,121498],"disallowed"],[[121499,121503],"valid"],[[121504,121504],"disallowed"],[[121505,121519],"valid"],[[121520,124927],"disallowed"],[[124928,125124],"valid"],[[125125,125126],"disallowed"],[[125127,125135],"valid",[],"NV8"],[[125136,125142],"valid"],[[125143,126463],"disallowed"],[[126464,126464],"mapped",[1575]],[[126465,126465],"mapped",[1576]],[[126466,126466],"mapped",[1580]],[[126467,126467],"mapped",[1583]],[[126468,126468],"disallowed"],[[126469,126469],"mapped",[1608]],[[126470,126470],"mapped",[1586]],[[126471,126471],"mapped",[1581]],[[126472,126472],"mapped",[1591]],[[126473,126473],"mapped",[1610]],[[126474,126474],"mapped",[1603]],[[126475,126475],"mapped",[1604]],[[126476,126476],"mapped",[1605]],[[126477,126477],"mapped",[1606]],[[126478,126478],"mapped",[1587]],[[126479,126479],"mapped",[1593]],[[126480,126480],"mapped",[1601]],[[126481,126481],"mapped",[1589]],[[126482,126482],"mapped",[1602]],[[126483,126483],"mapped",[1585]],[[126484,126484],"mapped",[1588]],[[126485,126485],"mapped",[1578]],[[126486,126486],"mapped",[1579]],[[126487,126487],"mapped",[1582]],[[126488,126488],"mapped",[1584]],[[126489,126489],"mapped",[1590]],[[126490,126490],"mapped",[1592]],[[126491,126491],"mapped",[1594]],[[126492,126492],"mapped",[1646]],[[126493,126493],"mapped",[1722]],[[126494,126494],"mapped",[1697]],[[126495,126495],"mapped",[1647]],[[126496,126496],"disallowed"],[[126497,126497],"mapped",[1576]],[[126498,126498],"mapped",[1580]],[[126499,126499],"disallowed"],[[126500,126500],"mapped",[1607]],[[126501,126502],"disallowed"],[[126503,126503],"mapped",[1581]],[[126504,126504],"disallowed"],[[126505,126505],"mapped",[1610]],[[126506,126506],"mapped",[1603]],[[126507,126507],"mapped",[1604]],[[126508,126508],"mapped",[1605]],[[126509,126509],"mapped",[1606]],[[126510,126510],"mapped",[1587]],[[126511,126511],"mapped",[1593]],[[126512,126512],"mapped",[1601]],[[126513,126513],"mapped",[1589]],[[126514,126514],"mapped",[1602]],[[126515,126515],"disallowed"],[[126516,126516],"mapped",[1588]],[[126517,126517],"mapped",[1578]],[[126518,126518],"mapped",[1579]],[[126519,126519],"mapped",[1582]],[[126520,126520],"disallowed"],[[126521,126521],"mapped",[1590]],[[126522,126522],"disallowed"],[[126523,126523],"mapped",[1594]],[[126524,126529],"disallowed"],[[126530,126530],"mapped",[1580]],[[126531,126534],"disallowed"],[[126535,126535],"mapped",[1581]],[[126536,126536],"disallowed"],[[126537,126537],"mapped",[1610]],[[126538,126538],"disallowed"],[[126539,126539],"mapped",[1604]],[[126540,126540],"disallowed"],[[126541,126541],"mapped",[1606]],[[126542,126542],"mapped",[1587]],[[126543,126543],"mapped",[1593]],[[126544,126544],"disallowed"],[[126545,126545],"mapped",[1589]],[[126546,126546],"mapped",[1602]],[[126547,126547],"disallowed"],[[126548,126548],"mapped",[1588]],[[126549,126550],"disallowed"],[[126551,126551],"mapped",[1582]],[[126552,126552],"disallowed"],[[126553,126553],"mapped",[1590]],[[126554,126554],"disallowed"],[[126555,126555],"mapped",[1594]],[[126556,126556],"disallowed"],[[126557,126557],"mapped",[1722]],[[126558,126558],"disallowed"],[[126559,126559],"mapped",[1647]],[[126560,126560],"disallowed"],[[126561,126561],"mapped",[1576]],[[126562,126562],"mapped",[1580]],[[126563,126563],"disallowed"],[[126564,126564],"mapped",[1607]],[[126565,126566],"disallowed"],[[126567,126567],"mapped",[1581]],[[126568,126568],"mapped",[1591]],[[126569,126569],"mapped",[1610]],[[126570,126570],"mapped",[1603]],[[126571,126571],"disallowed"],[[126572,126572],"mapped",[1605]],[[126573,126573],"mapped",[1606]],[[126574,126574],"mapped",[1587]],[[126575,126575],"mapped",[1593]],[[126576,126576],"mapped",[1601]],[[126577,126577],"mapped",[1589]],[[126578,126578],"mapped",[1602]],[[126579,126579],"disallowed"],[[126580,126580],"mapped",[1588]],[[126581,126581],"mapped",[1578]],[[126582,126582],"mapped",[1579]],[[126583,126583],"mapped",[1582]],[[126584,126584],"disallowed"],[[126585,126585],"mapped",[1590]],[[126586,126586],"mapped",[1592]],[[126587,126587],"mapped",[1594]],[[126588,126588],"mapped",[1646]],[[126589,126589],"disallowed"],[[126590,126590],"mapped",[1697]],[[126591,126591],"disallowed"],[[126592,126592],"mapped",[1575]],[[126593,126593],"mapped",[1576]],[[126594,126594],"mapped",[1580]],[[126595,126595],"mapped",[1583]],[[126596,126596],"mapped",[1607]],[[126597,126597],"mapped",[1608]],[[126598,126598],"mapped",[1586]],[[126599,126599],"mapped",[1581]],[[126600,126600],"mapped",[1591]],[[126601,126601],"mapped",[1610]],[[126602,126602],"disallowed"],[[126603,126603],"mapped",[1604]],[[126604,126604],"mapped",[1605]],[[126605,126605],"mapped",[1606]],[[126606,126606],"mapped",[1587]],[[126607,126607],"mapped",[1593]],[[126608,126608],"mapped",[1601]],[[126609,126609],"mapped",[1589]],[[126610,126610],"mapped",[1602]],[[126611,126611],"mapped",[1585]],[[126612,126612],"mapped",[1588]],[[126613,126613],"mapped",[1578]],[[126614,126614],"mapped",[1579]],[[126615,126615],"mapped",[1582]],[[126616,126616],"mapped",[1584]],[[126617,126617],"mapped",[1590]],[[126618,126618],"mapped",[1592]],[[126619,126619],"mapped",[1594]],[[126620,126624],"disallowed"],[[126625,126625],"mapped",[1576]],[[126626,126626],"mapped",[1580]],[[126627,126627],"mapped",[1583]],[[126628,126628],"disallowed"],[[126629,126629],"mapped",[1608]],[[126630,126630],"mapped",[1586]],[[126631,126631],"mapped",[1581]],[[126632,126632],"mapped",[1591]],[[126633,126633],"mapped",[1610]],[[126634,126634],"disallowed"],[[126635,126635],"mapped",[1604]],[[126636,126636],"mapped",[1605]],[[126637,126637],"mapped",[1606]],[[126638,126638],"mapped",[1587]],[[126639,126639],"mapped",[1593]],[[126640,126640],"mapped",[1601]],[[126641,126641],"mapped",[1589]],[[126642,126642],"mapped",[1602]],[[126643,126643],"mapped",[1585]],[[126644,126644],"mapped",[1588]],[[126645,126645],"mapped",[1578]],[[126646,126646],"mapped",[1579]],[[126647,126647],"mapped",[1582]],[[126648,126648],"mapped",[1584]],[[126649,126649],"mapped",[1590]],[[126650,126650],"mapped",[1592]],[[126651,126651],"mapped",[1594]],[[126652,126703],"disallowed"],[[126704,126705],"valid",[],"NV8"],[[126706,126975],"disallowed"],[[126976,127019],"valid",[],"NV8"],[[127020,127023],"disallowed"],[[127024,127123],"valid",[],"NV8"],[[127124,127135],"disallowed"],[[127136,127150],"valid",[],"NV8"],[[127151,127152],"disallowed"],[[127153,127166],"valid",[],"NV8"],[[127167,127167],"valid",[],"NV8"],[[127168,127168],"disallowed"],[[127169,127183],"valid",[],"NV8"],[[127184,127184],"disallowed"],[[127185,127199],"valid",[],"NV8"],[[127200,127221],"valid",[],"NV8"],[[127222,127231],"disallowed"],[[127232,127232],"disallowed"],[[127233,127233],"disallowed_STD3_mapped",[48,44]],[[127234,127234],"disallowed_STD3_mapped",[49,44]],[[127235,127235],"disallowed_STD3_mapped",[50,44]],[[127236,127236],"disallowed_STD3_mapped",[51,44]],[[127237,127237],"disallowed_STD3_mapped",[52,44]],[[127238,127238],"disallowed_STD3_mapped",[53,44]],[[127239,127239],"disallowed_STD3_mapped",[54,44]],[[127240,127240],"disallowed_STD3_mapped",[55,44]],[[127241,127241],"disallowed_STD3_mapped",[56,44]],[[127242,127242],"disallowed_STD3_mapped",[57,44]],[[127243,127244],"valid",[],"NV8"],[[127245,127247],"disallowed"],[[127248,127248],"disallowed_STD3_mapped",[40,97,41]],[[127249,127249],"disallowed_STD3_mapped",[40,98,41]],[[127250,127250],"disallowed_STD3_mapped",[40,99,41]],[[127251,127251],"disallowed_STD3_mapped",[40,100,41]],[[127252,127252],"disallowed_STD3_mapped",[40,101,41]],[[127253,127253],"disallowed_STD3_mapped",[40,102,41]],[[127254,127254],"disallowed_STD3_mapped",[40,103,41]],[[127255,127255],"disallowed_STD3_mapped",[40,104,41]],[[127256,127256],"disallowed_STD3_mapped",[40,105,41]],[[127257,127257],"disallowed_STD3_mapped",[40,106,41]],[[127258,127258],"disallowed_STD3_mapped",[40,107,41]],[[127259,127259],"disallowed_STD3_mapped",[40,108,41]],[[127260,127260],"disallowed_STD3_mapped",[40,109,41]],[[127261,127261],"disallowed_STD3_mapped",[40,110,41]],[[127262,127262],"disallowed_STD3_mapped",[40,111,41]],[[127263,127263],"disallowed_STD3_mapped",[40,112,41]],[[127264,127264],"disallowed_STD3_mapped",[40,113,41]],[[127265,127265],"disallowed_STD3_mapped",[40,114,41]],[[127266,127266],"disallowed_STD3_mapped",[40,115,41]],[[127267,127267],"disallowed_STD3_mapped",[40,116,41]],[[127268,127268],"disallowed_STD3_mapped",[40,117,41]],[[127269,127269],"disallowed_STD3_mapped",[40,118,41]],[[127270,127270],"disallowed_STD3_mapped",[40,119,41]],[[127271,127271],"disallowed_STD3_mapped",[40,120,41]],[[127272,127272],"disallowed_STD3_mapped",[40,121,41]],[[127273,127273],"disallowed_STD3_mapped",[40,122,41]],[[127274,127274],"mapped",[12308,115,12309]],[[127275,127275],"mapped",[99]],[[127276,127276],"mapped",[114]],[[127277,127277],"mapped",[99,100]],[[127278,127278],"mapped",[119,122]],[[127279,127279],"disallowed"],[[127280,127280],"mapped",[97]],[[127281,127281],"mapped",[98]],[[127282,127282],"mapped",[99]],[[127283,127283],"mapped",[100]],[[127284,127284],"mapped",[101]],[[127285,127285],"mapped",[102]],[[127286,127286],"mapped",[103]],[[127287,127287],"mapped",[104]],[[127288,127288],"mapped",[105]],[[127289,127289],"mapped",[106]],[[127290,127290],"mapped",[107]],[[127291,127291],"mapped",[108]],[[127292,127292],"mapped",[109]],[[127293,127293],"mapped",[110]],[[127294,127294],"mapped",[111]],[[127295,127295],"mapped",[112]],[[127296,127296],"mapped",[113]],[[127297,127297],"mapped",[114]],[[127298,127298],"mapped",[115]],[[127299,127299],"mapped",[116]],[[127300,127300],"mapped",[117]],[[127301,127301],"mapped",[118]],[[127302,127302],"mapped",[119]],[[127303,127303],"mapped",[120]],[[127304,127304],"mapped",[121]],[[127305,127305],"mapped",[122]],[[127306,127306],"mapped",[104,118]],[[127307,127307],"mapped",[109,118]],[[127308,127308],"mapped",[115,100]],[[127309,127309],"mapped",[115,115]],[[127310,127310],"mapped",[112,112,118]],[[127311,127311],"mapped",[119,99]],[[127312,127318],"valid",[],"NV8"],[[127319,127319],"valid",[],"NV8"],[[127320,127326],"valid",[],"NV8"],[[127327,127327],"valid",[],"NV8"],[[127328,127337],"valid",[],"NV8"],[[127338,127338],"mapped",[109,99]],[[127339,127339],"mapped",[109,100]],[[127340,127343],"disallowed"],[[127344,127352],"valid",[],"NV8"],[[127353,127353],"valid",[],"NV8"],[[127354,127354],"valid",[],"NV8"],[[127355,127356],"valid",[],"NV8"],[[127357,127358],"valid",[],"NV8"],[[127359,127359],"valid",[],"NV8"],[[127360,127369],"valid",[],"NV8"],[[127370,127373],"valid",[],"NV8"],[[127374,127375],"valid",[],"NV8"],[[127376,127376],"mapped",[100,106]],[[127377,127386],"valid",[],"NV8"],[[127387,127461],"disallowed"],[[127462,127487],"valid",[],"NV8"],[[127488,127488],"mapped",[12411,12363]],[[127489,127489],"mapped",[12467,12467]],[[127490,127490],"mapped",[12469]],[[127491,127503],"disallowed"],[[127504,127504],"mapped",[25163]],[[127505,127505],"mapped",[23383]],[[127506,127506],"mapped",[21452]],[[127507,127507],"mapped",[12487]],[[127508,127508],"mapped",[20108]],[[127509,127509],"mapped",[22810]],[[127510,127510],"mapped",[35299]],[[127511,127511],"mapped",[22825]],[[127512,127512],"mapped",[20132]],[[127513,127513],"mapped",[26144]],[[127514,127514],"mapped",[28961]],[[127515,127515],"mapped",[26009]],[[127516,127516],"mapped",[21069]],[[127517,127517],"mapped",[24460]],[[127518,127518],"mapped",[20877]],[[127519,127519],"mapped",[26032]],[[127520,127520],"mapped",[21021]],[[127521,127521],"mapped",[32066]],[[127522,127522],"mapped",[29983]],[[127523,127523],"mapped",[36009]],[[127524,127524],"mapped",[22768]],[[127525,127525],"mapped",[21561]],[[127526,127526],"mapped",[28436]],[[127527,127527],"mapped",[25237]],[[127528,127528],"mapped",[25429]],[[127529,127529],"mapped",[19968]],[[127530,127530],"mapped",[19977]],[[127531,127531],"mapped",[36938]],[[127532,127532],"mapped",[24038]],[[127533,127533],"mapped",[20013]],[[127534,127534],"mapped",[21491]],[[127535,127535],"mapped",[25351]],[[127536,127536],"mapped",[36208]],[[127537,127537],"mapped",[25171]],[[127538,127538],"mapped",[31105]],[[127539,127539],"mapped",[31354]],[[127540,127540],"mapped",[21512]],[[127541,127541],"mapped",[28288]],[[127542,127542],"mapped",[26377]],[[127543,127543],"mapped",[26376]],[[127544,127544],"mapped",[30003]],[[127545,127545],"mapped",[21106]],[[127546,127546],"mapped",[21942]],[[127547,127551],"disallowed"],[[127552,127552],"mapped",[12308,26412,12309]],[[127553,127553],"mapped",[12308,19977,12309]],[[127554,127554],"mapped",[12308,20108,12309]],[[127555,127555],"mapped",[12308,23433,12309]],[[127556,127556],"mapped",[12308,28857,12309]],[[127557,127557],"mapped",[12308,25171,12309]],[[127558,127558],"mapped",[12308,30423,12309]],[[127559,127559],"mapped",[12308,21213,12309]],[[127560,127560],"mapped",[12308,25943,12309]],[[127561,127567],"disallowed"],[[127568,127568],"mapped",[24471]],[[127569,127569],"mapped",[21487]],[[127570,127743],"disallowed"],[[127744,127776],"valid",[],"NV8"],[[127777,127788],"valid",[],"NV8"],[[127789,127791],"valid",[],"NV8"],[[127792,127797],"valid",[],"NV8"],[[127798,127798],"valid",[],"NV8"],[[127799,127868],"valid",[],"NV8"],[[127869,127869],"valid",[],"NV8"],[[127870,127871],"valid",[],"NV8"],[[127872,127891],"valid",[],"NV8"],[[127892,127903],"valid",[],"NV8"],[[127904,127940],"valid",[],"NV8"],[[127941,127941],"valid",[],"NV8"],[[127942,127946],"valid",[],"NV8"],[[127947,127950],"valid",[],"NV8"],[[127951,127955],"valid",[],"NV8"],[[127956,127967],"valid",[],"NV8"],[[127968,127984],"valid",[],"NV8"],[[127985,127991],"valid",[],"NV8"],[[127992,127999],"valid",[],"NV8"],[[128000,128062],"valid",[],"NV8"],[[128063,128063],"valid",[],"NV8"],[[128064,128064],"valid",[],"NV8"],[[128065,128065],"valid",[],"NV8"],[[128066,128247],"valid",[],"NV8"],[[128248,128248],"valid",[],"NV8"],[[128249,128252],"valid",[],"NV8"],[[128253,128254],"valid",[],"NV8"],[[128255,128255],"valid",[],"NV8"],[[128256,128317],"valid",[],"NV8"],[[128318,128319],"valid",[],"NV8"],[[128320,128323],"valid",[],"NV8"],[[128324,128330],"valid",[],"NV8"],[[128331,128335],"valid",[],"NV8"],[[128336,128359],"valid",[],"NV8"],[[128360,128377],"valid",[],"NV8"],[[128378,128378],"disallowed"],[[128379,128419],"valid",[],"NV8"],[[128420,128420],"disallowed"],[[128421,128506],"valid",[],"NV8"],[[128507,128511],"valid",[],"NV8"],[[128512,128512],"valid",[],"NV8"],[[128513,128528],"valid",[],"NV8"],[[128529,128529],"valid",[],"NV8"],[[128530,128532],"valid",[],"NV8"],[[128533,128533],"valid",[],"NV8"],[[128534,128534],"valid",[],"NV8"],[[128535,128535],"valid",[],"NV8"],[[128536,128536],"valid",[],"NV8"],[[128537,128537],"valid",[],"NV8"],[[128538,128538],"valid",[],"NV8"],[[128539,128539],"valid",[],"NV8"],[[128540,128542],"valid",[],"NV8"],[[128543,128543],"valid",[],"NV8"],[[128544,128549],"valid",[],"NV8"],[[128550,128551],"valid",[],"NV8"],[[128552,128555],"valid",[],"NV8"],[[128556,128556],"valid",[],"NV8"],[[128557,128557],"valid",[],"NV8"],[[128558,128559],"valid",[],"NV8"],[[128560,128563],"valid",[],"NV8"],[[128564,128564],"valid",[],"NV8"],[[128565,128576],"valid",[],"NV8"],[[128577,128578],"valid",[],"NV8"],[[128579,128580],"valid",[],"NV8"],[[128581,128591],"valid",[],"NV8"],[[128592,128639],"valid",[],"NV8"],[[128640,128709],"valid",[],"NV8"],[[128710,128719],"valid",[],"NV8"],[[128720,128720],"valid",[],"NV8"],[[128721,128735],"disallowed"],[[128736,128748],"valid",[],"NV8"],[[128749,128751],"disallowed"],[[128752,128755],"valid",[],"NV8"],[[128756,128767],"disallowed"],[[128768,128883],"valid",[],"NV8"],[[128884,128895],"disallowed"],[[128896,128980],"valid",[],"NV8"],[[128981,129023],"disallowed"],[[129024,129035],"valid",[],"NV8"],[[129036,129039],"disallowed"],[[129040,129095],"valid",[],"NV8"],[[129096,129103],"disallowed"],[[129104,129113],"valid",[],"NV8"],[[129114,129119],"disallowed"],[[129120,129159],"valid",[],"NV8"],[[129160,129167],"disallowed"],[[129168,129197],"valid",[],"NV8"],[[129198,129295],"disallowed"],[[129296,129304],"valid",[],"NV8"],[[129305,129407],"disallowed"],[[129408,129412],"valid",[],"NV8"],[[129413,129471],"disallowed"],[[129472,129472],"valid",[],"NV8"],[[129473,131069],"disallowed"],[[131070,131071],"disallowed"],[[131072,173782],"valid"],[[173783,173823],"disallowed"],[[173824,177972],"valid"],[[177973,177983],"disallowed"],[[177984,178205],"valid"],[[178206,178207],"disallowed"],[[178208,183969],"valid"],[[183970,194559],"disallowed"],[[194560,194560],"mapped",[20029]],[[194561,194561],"mapped",[20024]],[[194562,194562],"mapped",[20033]],[[194563,194563],"mapped",[131362]],[[194564,194564],"mapped",[20320]],[[194565,194565],"mapped",[20398]],[[194566,194566],"mapped",[20411]],[[194567,194567],"mapped",[20482]],[[194568,194568],"mapped",[20602]],[[194569,194569],"mapped",[20633]],[[194570,194570],"mapped",[20711]],[[194571,194571],"mapped",[20687]],[[194572,194572],"mapped",[13470]],[[194573,194573],"mapped",[132666]],[[194574,194574],"mapped",[20813]],[[194575,194575],"mapped",[20820]],[[194576,194576],"mapped",[20836]],[[194577,194577],"mapped",[20855]],[[194578,194578],"mapped",[132380]],[[194579,194579],"mapped",[13497]],[[194580,194580],"mapped",[20839]],[[194581,194581],"mapped",[20877]],[[194582,194582],"mapped",[132427]],[[194583,194583],"mapped",[20887]],[[194584,194584],"mapped",[20900]],[[194585,194585],"mapped",[20172]],[[194586,194586],"mapped",[20908]],[[194587,194587],"mapped",[20917]],[[194588,194588],"mapped",[168415]],[[194589,194589],"mapped",[20981]],[[194590,194590],"mapped",[20995]],[[194591,194591],"mapped",[13535]],[[194592,194592],"mapped",[21051]],[[194593,194593],"mapped",[21062]],[[194594,194594],"mapped",[21106]],[[194595,194595],"mapped",[21111]],[[194596,194596],"mapped",[13589]],[[194597,194597],"mapped",[21191]],[[194598,194598],"mapped",[21193]],[[194599,194599],"mapped",[21220]],[[194600,194600],"mapped",[21242]],[[194601,194601],"mapped",[21253]],[[194602,194602],"mapped",[21254]],[[194603,194603],"mapped",[21271]],[[194604,194604],"mapped",[21321]],[[194605,194605],"mapped",[21329]],[[194606,194606],"mapped",[21338]],[[194607,194607],"mapped",[21363]],[[194608,194608],"mapped",[21373]],[[194609,194611],"mapped",[21375]],[[194612,194612],"mapped",[133676]],[[194613,194613],"mapped",[28784]],[[194614,194614],"mapped",[21450]],[[194615,194615],"mapped",[21471]],[[194616,194616],"mapped",[133987]],[[194617,194617],"mapped",[21483]],[[194618,194618],"mapped",[21489]],[[194619,194619],"mapped",[21510]],[[194620,194620],"mapped",[21662]],[[194621,194621],"mapped",[21560]],[[194622,194622],"mapped",[21576]],[[194623,194623],"mapped",[21608]],[[194624,194624],"mapped",[21666]],[[194625,194625],"mapped",[21750]],[[194626,194626],"mapped",[21776]],[[194627,194627],"mapped",[21843]],[[194628,194628],"mapped",[21859]],[[194629,194630],"mapped",[21892]],[[194631,194631],"mapped",[21913]],[[194632,194632],"mapped",[21931]],[[194633,194633],"mapped",[21939]],[[194634,194634],"mapped",[21954]],[[194635,194635],"mapped",[22294]],[[194636,194636],"mapped",[22022]],[[194637,194637],"mapped",[22295]],[[194638,194638],"mapped",[22097]],[[194639,194639],"mapped",[22132]],[[194640,194640],"mapped",[20999]],[[194641,194641],"mapped",[22766]],[[194642,194642],"mapped",[22478]],[[194643,194643],"mapped",[22516]],[[194644,194644],"mapped",[22541]],[[194645,194645],"mapped",[22411]],[[194646,194646],"mapped",[22578]],[[194647,194647],"mapped",[22577]],[[194648,194648],"mapped",[22700]],[[194649,194649],"mapped",[136420]],[[194650,194650],"mapped",[22770]],[[194651,194651],"mapped",[22775]],[[194652,194652],"mapped",[22790]],[[194653,194653],"mapped",[22810]],[[194654,194654],"mapped",[22818]],[[194655,194655],"mapped",[22882]],[[194656,194656],"mapped",[136872]],[[194657,194657],"mapped",[136938]],[[194658,194658],"mapped",[23020]],[[194659,194659],"mapped",[23067]],[[194660,194660],"mapped",[23079]],[[194661,194661],"mapped",[23000]],[[194662,194662],"mapped",[23142]],[[194663,194663],"mapped",[14062]],[[194664,194664],"disallowed"],[[194665,194665],"mapped",[23304]],[[194666,194667],"mapped",[23358]],[[194668,194668],"mapped",[137672]],[[194669,194669],"mapped",[23491]],[[194670,194670],"mapped",[23512]],[[194671,194671],"mapped",[23527]],[[194672,194672],"mapped",[23539]],[[194673,194673],"mapped",[138008]],[[194674,194674],"mapped",[23551]],[[194675,194675],"mapped",[23558]],[[194676,194676],"disallowed"],[[194677,194677],"mapped",[23586]],[[194678,194678],"mapped",[14209]],[[194679,194679],"mapped",[23648]],[[194680,194680],"mapped",[23662]],[[194681,194681],"mapped",[23744]],[[194682,194682],"mapped",[23693]],[[194683,194683],"mapped",[138724]],[[194684,194684],"mapped",[23875]],[[194685,194685],"mapped",[138726]],[[194686,194686],"mapped",[23918]],[[194687,194687],"mapped",[23915]],[[194688,194688],"mapped",[23932]],[[194689,194689],"mapped",[24033]],[[194690,194690],"mapped",[24034]],[[194691,194691],"mapped",[14383]],[[194692,194692],"mapped",[24061]],[[194693,194693],"mapped",[24104]],[[194694,194694],"mapped",[24125]],[[194695,194695],"mapped",[24169]],[[194696,194696],"mapped",[14434]],[[194697,194697],"mapped",[139651]],[[194698,194698],"mapped",[14460]],[[194699,194699],"mapped",[24240]],[[194700,194700],"mapped",[24243]],[[194701,194701],"mapped",[24246]],[[194702,194702],"mapped",[24266]],[[194703,194703],"mapped",[172946]],[[194704,194704],"mapped",[24318]],[[194705,194706],"mapped",[140081]],[[194707,194707],"mapped",[33281]],[[194708,194709],"mapped",[24354]],[[194710,194710],"mapped",[14535]],[[194711,194711],"mapped",[144056]],[[194712,194712],"mapped",[156122]],[[194713,194713],"mapped",[24418]],[[194714,194714],"mapped",[24427]],[[194715,194715],"mapped",[14563]],[[194716,194716],"mapped",[24474]],[[194717,194717],"mapped",[24525]],[[194718,194718],"mapped",[24535]],[[194719,194719],"mapped",[24569]],[[194720,194720],"mapped",[24705]],[[194721,194721],"mapped",[14650]],[[194722,194722],"mapped",[14620]],[[194723,194723],"mapped",[24724]],[[194724,194724],"mapped",[141012]],[[194725,194725],"mapped",[24775]],[[194726,194726],"mapped",[24904]],[[194727,194727],"mapped",[24908]],[[194728,194728],"mapped",[24910]],[[194729,194729],"mapped",[24908]],[[194730,194730],"mapped",[24954]],[[194731,194731],"mapped",[24974]],[[194732,194732],"mapped",[25010]],[[194733,194733],"mapped",[24996]],[[194734,194734],"mapped",[25007]],[[194735,194735],"mapped",[25054]],[[194736,194736],"mapped",[25074]],[[194737,194737],"mapped",[25078]],[[194738,194738],"mapped",[25104]],[[194739,194739],"mapped",[25115]],[[194740,194740],"mapped",[25181]],[[194741,194741],"mapped",[25265]],[[194742,194742],"mapped",[25300]],[[194743,194743],"mapped",[25424]],[[194744,194744],"mapped",[142092]],[[194745,194745],"mapped",[25405]],[[194746,194746],"mapped",[25340]],[[194747,194747],"mapped",[25448]],[[194748,194748],"mapped",[25475]],[[194749,194749],"mapped",[25572]],[[194750,194750],"mapped",[142321]],[[194751,194751],"mapped",[25634]],[[194752,194752],"mapped",[25541]],[[194753,194753],"mapped",[25513]],[[194754,194754],"mapped",[14894]],[[194755,194755],"mapped",[25705]],[[194756,194756],"mapped",[25726]],[[194757,194757],"mapped",[25757]],[[194758,194758],"mapped",[25719]],[[194759,194759],"mapped",[14956]],[[194760,194760],"mapped",[25935]],[[194761,194761],"mapped",[25964]],[[194762,194762],"mapped",[143370]],[[194763,194763],"mapped",[26083]],[[194764,194764],"mapped",[26360]],[[194765,194765],"mapped",[26185]],[[194766,194766],"mapped",[15129]],[[194767,194767],"mapped",[26257]],[[194768,194768],"mapped",[15112]],[[194769,194769],"mapped",[15076]],[[194770,194770],"mapped",[20882]],[[194771,194771],"mapped",[20885]],[[194772,194772],"mapped",[26368]],[[194773,194773],"mapped",[26268]],[[194774,194774],"mapped",[32941]],[[194775,194775],"mapped",[17369]],[[194776,194776],"mapped",[26391]],[[194777,194777],"mapped",[26395]],[[194778,194778],"mapped",[26401]],[[194779,194779],"mapped",[26462]],[[194780,194780],"mapped",[26451]],[[194781,194781],"mapped",[144323]],[[194782,194782],"mapped",[15177]],[[194783,194783],"mapped",[26618]],[[194784,194784],"mapped",[26501]],[[194785,194785],"mapped",[26706]],[[194786,194786],"mapped",[26757]],[[194787,194787],"mapped",[144493]],[[194788,194788],"mapped",[26766]],[[194789,194789],"mapped",[26655]],[[194790,194790],"mapped",[26900]],[[194791,194791],"mapped",[15261]],[[194792,194792],"mapped",[26946]],[[194793,194793],"mapped",[27043]],[[194794,194794],"mapped",[27114]],[[194795,194795],"mapped",[27304]],[[194796,194796],"mapped",[145059]],[[194797,194797],"mapped",[27355]],[[194798,194798],"mapped",[15384]],[[194799,194799],"mapped",[27425]],[[194800,194800],"mapped",[145575]],[[194801,194801],"mapped",[27476]],[[194802,194802],"mapped",[15438]],[[194803,194803],"mapped",[27506]],[[194804,194804],"mapped",[27551]],[[194805,194805],"mapped",[27578]],[[194806,194806],"mapped",[27579]],[[194807,194807],"mapped",[146061]],[[194808,194808],"mapped",[138507]],[[194809,194809],"mapped",[146170]],[[194810,194810],"mapped",[27726]],[[194811,194811],"mapped",[146620]],[[194812,194812],"mapped",[27839]],[[194813,194813],"mapped",[27853]],[[194814,194814],"mapped",[27751]],[[194815,194815],"mapped",[27926]],[[194816,194816],"mapped",[27966]],[[194817,194817],"mapped",[28023]],[[194818,194818],"mapped",[27969]],[[194819,194819],"mapped",[28009]],[[194820,194820],"mapped",[28024]],[[194821,194821],"mapped",[28037]],[[194822,194822],"mapped",[146718]],[[194823,194823],"mapped",[27956]],[[194824,194824],"mapped",[28207]],[[194825,194825],"mapped",[28270]],[[194826,194826],"mapped",[15667]],[[194827,194827],"mapped",[28363]],[[194828,194828],"mapped",[28359]],[[194829,194829],"mapped",[147153]],[[194830,194830],"mapped",[28153]],[[194831,194831],"mapped",[28526]],[[194832,194832],"mapped",[147294]],[[194833,194833],"mapped",[147342]],[[194834,194834],"mapped",[28614]],[[194835,194835],"mapped",[28729]],[[194836,194836],"mapped",[28702]],[[194837,194837],"mapped",[28699]],[[194838,194838],"mapped",[15766]],[[194839,194839],"mapped",[28746]],[[194840,194840],"mapped",[28797]],[[194841,194841],"mapped",[28791]],[[194842,194842],"mapped",[28845]],[[194843,194843],"mapped",[132389]],[[194844,194844],"mapped",[28997]],[[194845,194845],"mapped",[148067]],[[194846,194846],"mapped",[29084]],[[194847,194847],"disallowed"],[[194848,194848],"mapped",[29224]],[[194849,194849],"mapped",[29237]],[[194850,194850],"mapped",[29264]],[[194851,194851],"mapped",[149000]],[[194852,194852],"mapped",[29312]],[[194853,194853],"mapped",[29333]],[[194854,194854],"mapped",[149301]],[[194855,194855],"mapped",[149524]],[[194856,194856],"mapped",[29562]],[[194857,194857],"mapped",[29579]],[[194858,194858],"mapped",[16044]],[[194859,194859],"mapped",[29605]],[[194860,194861],"mapped",[16056]],[[194862,194862],"mapped",[29767]],[[194863,194863],"mapped",[29788]],[[194864,194864],"mapped",[29809]],[[194865,194865],"mapped",[29829]],[[194866,194866],"mapped",[29898]],[[194867,194867],"mapped",[16155]],[[194868,194868],"mapped",[29988]],[[194869,194869],"mapped",[150582]],[[194870,194870],"mapped",[30014]],[[194871,194871],"mapped",[150674]],[[194872,194872],"mapped",[30064]],[[194873,194873],"mapped",[139679]],[[194874,194874],"mapped",[30224]],[[194875,194875],"mapped",[151457]],[[194876,194876],"mapped",[151480]],[[194877,194877],"mapped",[151620]],[[194878,194878],"mapped",[16380]],[[194879,194879],"mapped",[16392]],[[194880,194880],"mapped",[30452]],[[194881,194881],"mapped",[151795]],[[194882,194882],"mapped",[151794]],[[194883,194883],"mapped",[151833]],[[194884,194884],"mapped",[151859]],[[194885,194885],"mapped",[30494]],[[194886,194887],"mapped",[30495]],[[194888,194888],"mapped",[30538]],[[194889,194889],"mapped",[16441]],[[194890,194890],"mapped",[30603]],[[194891,194891],"mapped",[16454]],[[194892,194892],"mapped",[16534]],[[194893,194893],"mapped",[152605]],[[194894,194894],"mapped",[30798]],[[194895,194895],"mapped",[30860]],[[194896,194896],"mapped",[30924]],[[194897,194897],"mapped",[16611]],[[194898,194898],"mapped",[153126]],[[194899,194899],"mapped",[31062]],[[194900,194900],"mapped",[153242]],[[194901,194901],"mapped",[153285]],[[194902,194902],"mapped",[31119]],[[194903,194903],"mapped",[31211]],[[194904,194904],"mapped",[16687]],[[194905,194905],"mapped",[31296]],[[194906,194906],"mapped",[31306]],[[194907,194907],"mapped",[31311]],[[194908,194908],"mapped",[153980]],[[194909,194910],"mapped",[154279]],[[194911,194911],"disallowed"],[[194912,194912],"mapped",[16898]],[[194913,194913],"mapped",[154539]],[[194914,194914],"mapped",[31686]],[[194915,194915],"mapped",[31689]],[[194916,194916],"mapped",[16935]],[[194917,194917],"mapped",[154752]],[[194918,194918],"mapped",[31954]],[[194919,194919],"mapped",[17056]],[[194920,194920],"mapped",[31976]],[[194921,194921],"mapped",[31971]],[[194922,194922],"mapped",[32000]],[[194923,194923],"mapped",[155526]],[[194924,194924],"mapped",[32099]],[[194925,194925],"mapped",[17153]],[[194926,194926],"mapped",[32199]],[[194927,194927],"mapped",[32258]],[[194928,194928],"mapped",[32325]],[[194929,194929],"mapped",[17204]],[[194930,194930],"mapped",[156200]],[[194931,194931],"mapped",[156231]],[[194932,194932],"mapped",[17241]],[[194933,194933],"mapped",[156377]],[[194934,194934],"mapped",[32634]],[[194935,194935],"mapped",[156478]],[[194936,194936],"mapped",[32661]],[[194937,194937],"mapped",[32762]],[[194938,194938],"mapped",[32773]],[[194939,194939],"mapped",[156890]],[[194940,194940],"mapped",[156963]],[[194941,194941],"mapped",[32864]],[[194942,194942],"mapped",[157096]],[[194943,194943],"mapped",[32880]],[[194944,194944],"mapped",[144223]],[[194945,194945],"mapped",[17365]],[[194946,194946],"mapped",[32946]],[[194947,194947],"mapped",[33027]],[[194948,194948],"mapped",[17419]],[[194949,194949],"mapped",[33086]],[[194950,194950],"mapped",[23221]],[[194951,194951],"mapped",[157607]],[[194952,194952],"mapped",[157621]],[[194953,194953],"mapped",[144275]],[[194954,194954],"mapped",[144284]],[[194955,194955],"mapped",[33281]],[[194956,194956],"mapped",[33284]],[[194957,194957],"mapped",[36766]],[[194958,194958],"mapped",[17515]],[[194959,194959],"mapped",[33425]],[[194960,194960],"mapped",[33419]],[[194961,194961],"mapped",[33437]],[[194962,194962],"mapped",[21171]],[[194963,194963],"mapped",[33457]],[[194964,194964],"mapped",[33459]],[[194965,194965],"mapped",[33469]],[[194966,194966],"mapped",[33510]],[[194967,194967],"mapped",[158524]],[[194968,194968],"mapped",[33509]],[[194969,194969],"mapped",[33565]],[[194970,194970],"mapped",[33635]],[[194971,194971],"mapped",[33709]],[[194972,194972],"mapped",[33571]],[[194973,194973],"mapped",[33725]],[[194974,194974],"mapped",[33767]],[[194975,194975],"mapped",[33879]],[[194976,194976],"mapped",[33619]],[[194977,194977],"mapped",[33738]],[[194978,194978],"mapped",[33740]],[[194979,194979],"mapped",[33756]],[[194980,194980],"mapped",[158774]],[[194981,194981],"mapped",[159083]],[[194982,194982],"mapped",[158933]],[[194983,194983],"mapped",[17707]],[[194984,194984],"mapped",[34033]],[[194985,194985],"mapped",[34035]],[[194986,194986],"mapped",[34070]],[[194987,194987],"mapped",[160714]],[[194988,194988],"mapped",[34148]],[[194989,194989],"mapped",[159532]],[[194990,194990],"mapped",[17757]],[[194991,194991],"mapped",[17761]],[[194992,194992],"mapped",[159665]],[[194993,194993],"mapped",[159954]],[[194994,194994],"mapped",[17771]],[[194995,194995],"mapped",[34384]],[[194996,194996],"mapped",[34396]],[[194997,194997],"mapped",[34407]],[[194998,194998],"mapped",[34409]],[[194999,194999],"mapped",[34473]],[[195000,195000],"mapped",[34440]],[[195001,195001],"mapped",[34574]],[[195002,195002],"mapped",[34530]],[[195003,195003],"mapped",[34681]],[[195004,195004],"mapped",[34600]],[[195005,195005],"mapped",[34667]],[[195006,195006],"mapped",[34694]],[[195007,195007],"disallowed"],[[195008,195008],"mapped",[34785]],[[195009,195009],"mapped",[34817]],[[195010,195010],"mapped",[17913]],[[195011,195011],"mapped",[34912]],[[195012,195012],"mapped",[34915]],[[195013,195013],"mapped",[161383]],[[195014,195014],"mapped",[35031]],[[195015,195015],"mapped",[35038]],[[195016,195016],"mapped",[17973]],[[195017,195017],"mapped",[35066]],[[195018,195018],"mapped",[13499]],[[195019,195019],"mapped",[161966]],[[195020,195020],"mapped",[162150]],[[195021,195021],"mapped",[18110]],[[195022,195022],"mapped",[18119]],[[195023,195023],"mapped",[35488]],[[195024,195024],"mapped",[35565]],[[195025,195025],"mapped",[35722]],[[195026,195026],"mapped",[35925]],[[195027,195027],"mapped",[162984]],[[195028,195028],"mapped",[36011]],[[195029,195029],"mapped",[36033]],[[195030,195030],"mapped",[36123]],[[195031,195031],"mapped",[36215]],[[195032,195032],"mapped",[163631]],[[195033,195033],"mapped",[133124]],[[195034,195034],"mapped",[36299]],[[195035,195035],"mapped",[36284]],[[195036,195036],"mapped",[36336]],[[195037,195037],"mapped",[133342]],[[195038,195038],"mapped",[36564]],[[195039,195039],"mapped",[36664]],[[195040,195040],"mapped",[165330]],[[195041,195041],"mapped",[165357]],[[195042,195042],"mapped",[37012]],[[195043,195043],"mapped",[37105]],[[195044,195044],"mapped",[37137]],[[195045,195045],"mapped",[165678]],[[195046,195046],"mapped",[37147]],[[195047,195047],"mapped",[37432]],[[195048,195048],"mapped",[37591]],[[195049,195049],"mapped",[37592]],[[195050,195050],"mapped",[37500]],[[195051,195051],"mapped",[37881]],[[195052,195052],"mapped",[37909]],[[195053,195053],"mapped",[166906]],[[195054,195054],"mapped",[38283]],[[195055,195055],"mapped",[18837]],[[195056,195056],"mapped",[38327]],[[195057,195057],"mapped",[167287]],[[195058,195058],"mapped",[18918]],[[195059,195059],"mapped",[38595]],[[195060,195060],"mapped",[23986]],[[195061,195061],"mapped",[38691]],[[195062,195062],"mapped",[168261]],[[195063,195063],"mapped",[168474]],[[195064,195064],"mapped",[19054]],[[195065,195065],"mapped",[19062]],[[195066,195066],"mapped",[38880]],[[195067,195067],"mapped",[168970]],[[195068,195068],"mapped",[19122]],[[195069,195069],"mapped",[169110]],[[195070,195071],"mapped",[38923]],[[195072,195072],"mapped",[38953]],[[195073,195073],"mapped",[169398]],[[195074,195074],"mapped",[39138]],[[195075,195075],"mapped",[19251]],[[195076,195076],"mapped",[39209]],[[195077,195077],"mapped",[39335]],[[195078,195078],"mapped",[39362]],[[195079,195079],"mapped",[39422]],[[195080,195080],"mapped",[19406]],[[195081,195081],"mapped",[170800]],[[195082,195082],"mapped",[39698]],[[195083,195083],"mapped",[40000]],[[195084,195084],"mapped",[40189]],[[195085,195085],"mapped",[19662]],[[195086,195086],"mapped",[19693]],[[195087,195087],"mapped",[40295]],[[195088,195088],"mapped",[172238]],[[195089,195089],"mapped",[19704]],[[195090,195090],"mapped",[172293]],[[195091,195091],"mapped",[172558]],[[195092,195092],"mapped",[172689]],[[195093,195093],"mapped",[40635]],[[195094,195094],"mapped",[19798]],[[195095,195095],"mapped",[40697]],[[195096,195096],"mapped",[40702]],[[195097,195097],"mapped",[40709]],[[195098,195098],"mapped",[40719]],[[195099,195099],"mapped",[40726]],[[195100,195100],"mapped",[40763]],[[195101,195101],"mapped",[173568]],[[195102,196605],"disallowed"],[[196606,196607],"disallowed"],[[196608,262141],"disallowed"],[[262142,262143],"disallowed"],[[262144,327677],"disallowed"],[[327678,327679],"disallowed"],[[327680,393213],"disallowed"],[[393214,393215],"disallowed"],[[393216,458749],"disallowed"],[[458750,458751],"disallowed"],[[458752,524285],"disallowed"],[[524286,524287],"disallowed"],[[524288,589821],"disallowed"],[[589822,589823],"disallowed"],[[589824,655357],"disallowed"],[[655358,655359],"disallowed"],[[655360,720893],"disallowed"],[[720894,720895],"disallowed"],[[720896,786429],"disallowed"],[[786430,786431],"disallowed"],[[786432,851965],"disallowed"],[[851966,851967],"disallowed"],[[851968,917501],"disallowed"],[[917502,917503],"disallowed"],[[917504,917504],"disallowed"],[[917505,917505],"disallowed"],[[917506,917535],"disallowed"],[[917536,917631],"disallowed"],[[917632,917759],"disallowed"],[[917760,917999],"ignored"],[[918000,983037],"disallowed"],[[983038,983039],"disallowed"],[[983040,1048573],"disallowed"],[[1048574,1048575],"disallowed"],[[1048576,1114109],"disallowed"],[[1114110,1114111],"disallowed"]]'); + var self = this; + this._ensure(2 + bytes.length); + this.writeByte(tag); + this.writeLength(bytes.length); + bytes.forEach(function (b) { + self.writeByte(b); + }); +}; -/***/ }), -/***/ 4147: -/***/ ((module) => { +Writer.prototype.writeLength = function (len) { + if (typeof (len) !== 'number') + throw new TypeError('argument must be a Number'); + + this._ensure(4); + + if (len <= 0x7f) { + this._buf[this._offset++] = len; + } else if (len <= 0xff) { + this._buf[this._offset++] = 0x81; + this._buf[this._offset++] = len; + } else if (len <= 0xffff) { + this._buf[this._offset++] = 0x82; + this._buf[this._offset++] = len >> 8; + this._buf[this._offset++] = len; + } else if (len <= 0xffffff) { + this._buf[this._offset++] = 0x83; + this._buf[this._offset++] = len >> 16; + this._buf[this._offset++] = len >> 8; + this._buf[this._offset++] = len; + } else { + throw newInvalidAsn1Error('Length too long (> 4 bytes)'); + } +}; -"use strict"; -module.exports = {"i8":"2.1.2"}; +Writer.prototype.startSequence = function (tag) { + if (typeof (tag) !== 'number') + tag = ASN1.Sequence | ASN1.Constructor; -/***/ }) + this.writeByte(tag); + this._seq.push(this._offset); + this._ensure(3); + this._offset += 3; +}; -/******/ }); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __nccwpck_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ // no module.id needed -/******/ // no module.loaded needed -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ var threw = true; -/******/ try { -/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __nccwpck_require__); -/******/ threw = false; -/******/ } finally { -/******/ if(threw) delete __webpack_module_cache__[moduleId]; -/******/ } -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/************************************************************************/ -/******/ /* webpack/runtime/compat */ -/******/ -/******/ if (typeof __nccwpck_require__ !== 'undefined') __nccwpck_require__.ab = __dirname + "/"; -/******/ -/************************************************************************/ -var __webpack_exports__ = {}; -// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. -(() => { -const { readFileSync } = __nccwpck_require__(7147); -const { resolve, basename } = __nccwpck_require__(1017); -const { Octokit } = __nccwpck_require__(1231); -const toolkit = __nccwpck_require__(2186); +Writer.prototype.endSequence = function () { + var seq = this._seq.pop(); + var start = seq + 3; + var len = this._offset - start; + + if (len <= 0x7f) { + this._shift(start, len, -2); + this._buf[seq] = len; + } else if (len <= 0xff) { + this._shift(start, len, -1); + this._buf[seq] = 0x81; + this._buf[seq + 1] = len; + } else if (len <= 0xffff) { + this._buf[seq] = 0x82; + this._buf[seq + 1] = len >> 8; + this._buf[seq + 2] = len; + } else if (len <= 0xffffff) { + this._shift(start, len, 1); + this._buf[seq] = 0x83; + this._buf[seq + 1] = len >> 16; + this._buf[seq + 2] = len >> 8; + this._buf[seq + 3] = len; + } else { + throw newInvalidAsn1Error('Sequence too long'); + } +}; -const handlePullRequest = __nccwpck_require__(1370); -const handlePush = __nccwpck_require__(1659); -const parseTweetFileContent = __nccwpck_require__(5935); -const tweet = __nccwpck_require__(2179); -const VERSION = (__nccwpck_require__(4147)/* .version */ .i8); +Writer.prototype._shift = function (start, len, shift) { + assert.ok(start !== undefined); + assert.ok(len !== undefined); + assert.ok(shift); -console.log(`Running twitter-together version ${VERSION}`); + this._buf.copy(this._buf, start + shift, start, start + len); + this._offset += shift; +}; -async function main() { - const state = { - startedAt: new Date().toISOString(), - twitterCredentials: { - appKey: process.env.TWITTER_API_KEY, - appSecret: process.env.TWITTER_API_SECRET_KEY, - accessToken: process.env.TWITTER_ACCESS_TOKEN, - accessSecret: process.env.TWITTER_ACCESS_TOKEN_SECRET, - }, - }; +Writer.prototype._ensure = function (len) { + assert.ok(len); - // Allow for CLI invocation using `--file tweets/test.tweet` - if (process.argv.length > 2 && process.argv[2] === "--file") { - if (!process.argv[3]) throw new Error("No file specified for --file"); - const fileState = { - ...state, - dir: resolve(process.argv[3], "..", ".."), - }; + if (this._size - this._offset < len) { + var sz = this._size * this._options.growthFactor; + if (sz - this._offset < len) + sz += len; - const payload = readFileSync(resolve(process.argv[3]), "utf8"); - const parsed = parseTweetFileContent(payload, fileState.dir); - console.log("Parsed tweet:", parsed); - console.log(await tweet(fileState, parsed, basename(process.argv[3]))); - return; + var buf = Buffer.alloc(sz); + + this._buf.copy(buf, 0, 0, this._offset); + this._buf = buf; + this._size = sz; } +}; - // If not given file flag, assume GitHub Action - const payload = JSON.parse( - readFileSync(process.env.GITHUB_EVENT_PATH, "utf8") - ); - const ref = process.env.GITHUB_REF; - const sha = process.env.GITHUB_SHA; - const dir = process.env.GITHUB_WORKSPACE; - const githubState = { - ...state, - toolkit, - octokit: new Octokit(), - payload, - ref, - sha, - dir, - }; - switch (process.env.GITHUB_EVENT_NAME) { - case "push": - await handlePush(githubState); - break; - case "pull_request": - await handlePullRequest(githubState); - break; - } -} -main().catch((error) => { - console.error(error); - process.exit(1); -}); +// --- Exported API -})(); +module.exports = Writer; -module.exports = __webpack_exports__; -/******/ })() -; \ No newline at end of file + +/***/ }) +/******/ ]); \ No newline at end of file diff --git a/docs/01-create-twitter-app.md b/docs/01-create-twitter-app.md index 7330b496..0f0dab5f 100644 --- a/docs/01-create-twitter-app.md +++ b/docs/01-create-twitter-app.md @@ -1,103 +1,82 @@ [back to README.md](../README.md/#setup) -# Create a Twitter App +# Create a twitter app -Head to to begin the process of creating a Twitter app. +You can create a twitter app for your twitter account at https://developer.twitter.com/en/apps. -If you haven’t yet, you will be asked to apply for a Twitter developer account. -If you’ve done that before, skip the next section and continue at [Create an app](#create-an-app). +[![](twitter-01-create-an-app.png)](https://developer.twitter.com/en/apps) -## Apply for a developer account +If you haven’t yet, you will be asked to apply for a Twitter developer account. See my answers below for reference. If you’ve done that before, skip the next section and continue at [Create an app](#create-an-app). -You might be asked to add a phone number to your Twitter account before proceeding. -If the phone number is used in another account, it won’t let you use it again -But you can remove the phone number from the other account. -You can change it back once your developer account was approved. +## Apply for a developer account -Your Twitter account will also need to be associated with an email address. -If it isn't yet, set the email address in your Twitter account [email settings](https://twitter.com/settings/email). +You might be asked to add a phone number to your twitter account before proceeding. If the phone number is used in another account, it won’t let you use it again. But you can remove the phone number from the other account. You can change it back once your developer account was approved. -During the account creation, Twitter tends to ask about what you'll be doing with the developer account. -If you aren't sure what to answer, here are our recommend answers: +Your twitter account will also need to be associated with an email address. If it isn't yet, set the email address in your twitter account [email settings](https://twitter.com/settings/email). -- What's your use case? Select "Making a bot". -- Will you make Twitter content or derived information available to a government entity or a government affiliated entity? Select "No". +![](twitter-02-sign-up-for-developer-account.png) -Once you've submitted the form, you will receive an email to verify your developer account. -After that you can head back to to begin creating your app. +### What is your primary reason for using Twitter developer tools? ---- +When in doubt, select: Hobbyist -> Making a bot -## Create an App +### Describe in your own words what you are building -### Project creation +#### 1. In your words -Before we create the app itself, we need to create a project that will house the app. -If you've already got a project in your developer account that you want to use, skip this step. -Head to or click "Create Project" on your dashboard. +This app will be used to publish tweets using the [twitter-together](https://github.com/twitter-together/action/) GitHub Action. It allows to use a GitHub repository and pull request reviews as a workflow to collaboratively tweet from a shared twitter account. -#### Project name +#### 2. Are you planning to analyze Twitter data? -You can provide any name you want for your project here. -We recommend keeping the name related to Twitter, Together, to avoid future confusion. +No -#### Project use case +#### 3. Will your app use Tweet, Retweet, like, follow, or Direct Message functionality? -If unsure, select "Making a bot" for the project use case. +Yes. This app will be used to publish tweets for this account. It might be used for retweeting in future. There are no plans for liking. -#### Project description +#### 4. Do you plan to display Tweets or aggregate data about Twitter content outside of Twitter? -You can provide any description you want for your project here. -If you're creating this project for Twitter, Together only, you could use: +No twitter data will be displayed. The `twitter-together` GitHub action shows a preview of the tweet before it is published and becomes twitter data. -> Collaboratively tweet using GitHub’s pull request review process by utilizing the twitter-together GitHub Action. +### Will your product, service, or analysis make Twitter content or derived information available to a government entity? -### App creation +No -With the project created, we can now create the app itself. -If you've gone through the project creation flow immediately before, Twitter may automatically take you to the app creation flow. -If not, head back to your [dashboard](https://developer.twitter.com/en/portal/projects-and-apps) and look for a "Add App" button under your project. +--- -#### App environment +You will receive an email to verify your developer account. After that you can create an app at https://developer.twitter.com/en/portal/apps/new. -Depending on your level of access to the Twitter API, the app creation flow may or may not ask you for this step. +## Create an app -If you are asked for the app environment, select the environment the best suites how you'll be using Twitter, Together. +![](twitter-03-create-app.png) -#### App name +Only 4 questions are required. Here are my answers for reference -Twitter app names are globally unique, so you'll want to provide a name here that makes sense in the context of your Twitter account or intended usage. -We recommend going for `-twitter-together`, e.g. `probot-twitter-together`. +### App name (required) -Once you've provided the app name, Twitter will present you with credentials for your app. -Note down the "API Key" and "API Secret" as we'll need them later. +`-twitter-together`, e.g. `probot-twitter-together` -#### App settings +### Application description (required) -With your app created, head to the settings for the app as we'll need to ensure it has write access as well as the default read access. -Twitter seems to change this UI far too often, but as of writing, to enable write access you'll need to configure "User authentication settings". +Collaboratively tweet using GitHub’s pull request review process by utilizing the twitter-together GitHub Action. -Press "Set up" under the "User authentication settings" section. Select "Read and write" under "App permissions" and "Web App, Automated App or Bot" under "Type of App". +### Website URL (required) -Now we'll need to configure a fake OAuth 2.0 flow (which we won't use): +https://github.com/twitter-together/action -- App info -> Callback URI: http://localhost -- App info -> Website URL: https://github.com/twitter-together/action +### Tell us how this app will be used (required) -With those all set, press "Save" and confirm that you are happy to change the permissions for your app. -Disregard the client ID and secret presented, as we won't actually be using OAuth. +This app will be used to create tweets that have previously been reviewed and accepted on our GitHub repository. It allows everyone to submit a tweet draft that we can discuss prior publishing. -### Save credentials +## Save credentials -Head back to your app settings, and jump into the "Keys and tokens" tab. +"read and write" permissions are required. When you have created your app, open `app settings` and set app permissions to "Read & Write". If you change the permission you must re-generate tokens for the change to take effect. -If you forgot to note down the API Key/Secret earlier, no worries! -Press "Regenerate" next to "API Key and Secret" and Twitter will give you a new pair. +Open your app’s "Keys and tokens" tab. In the "Access token & access token secret" section, press the "Create" button. After that you will see all four credentials required for `twitter-together`. -We'll also want to press "Regenerate" next to the "Access Token and Secret" as we need to update the permissions it has to be both read and write. -Note down the token and token secret Twitter gives you. +![](twitter-04-keys-and-tokens.png) -Now save the credentials into your repository’s "Secrets" settings as follows: +Now save the credentials into your repository’s "Secrets" settings as follows | Twitter Credential name | GitHub Secret name | | ----------------------- | ----------------------------- | @@ -106,10 +85,8 @@ Now save the credentials into your repository’s "Secrets" settings as follows: | Access token | `TWITTER_ACCESS_TOKEN` | | Access token secret | `TWITTER_ACCESS_TOKEN_SECRET` | -![](twitter-01-repository-secrets.png) +![](twitter-05-repository-secrets.png) --- -You're all set! :tada: - -Next: [Create a `.github/workflows/twitter-together.yml` file](02-create-twitter-together-workflow.md) +next: [Create a `.github/workflows/twitter-together.yml` file](02-create-twitter-together-workflow.md) diff --git a/docs/02-create-twitter-together-workflow.md b/docs/02-create-twitter-together-workflow.md index 5bf5662e..6c71e331 100644 --- a/docs/02-create-twitter-together-workflow.md +++ b/docs/02-create-twitter-together-workflow.md @@ -51,4 +51,6 @@ To create the file, press the Start commit button. You can optionally Nearly done! Shortly after creating or updating `.github/workflows/twitter-together.yml` in your repository’s default branch, a pull request will be created with further instructions. +If you like to create tweets including polls, you will have to [apply for access to the Twitter Ads API](03-apply-for-access-to-the-twitter-ads-api.md). + [back to README.md](../README.md/#setup) diff --git a/docs/03-apply-for-access-to-the-twitter-ads-api.md b/docs/03-apply-for-access-to-the-twitter-ads-api.md new file mode 100644 index 00000000..3da32e46 --- /dev/null +++ b/docs/03-apply-for-access-to-the-twitter-ads-api.md @@ -0,0 +1,139 @@ +[back to README.md](../README.md/#setup) + +# Fill out the Ads API Application Form + +![](adds-api-application-form-01.png) + +Fill out the form at https://developer.twitter.com/en/docs/ads/general/overview/adsapi-application. + +If you do not receive a response within 7 business days, contact `adsapi-program@twitter.com` with the ID of your app. + +Here are some anwsers to the option that I usually default to + +### `#Business` + +#### Of the following, which best describes your business?\* + +- ( ) Advertiser +- ( ) Agency +- ( ) Data provider +- (x) Technology platform + +#### How will you use the Ads API?\* + +- [ ] Campaign management (Creating/editing Campaigns and/or line items, bid/budget adjustments, objective and targeting) +- [x] Creatives (uploading images, videos, and/or creating cards and tweets) +- [ ] Tailored Audiences (uploading 1st or 3rd party data) +- [ ] Analytics (Pulling metrics and other data for reporting) + +#### In 280 characters or less... + +...tell us about your business\* + +> Independent Open Source project + +...what do you plan to build on the Ads API?\* + +> Create polls + +...describe your unique differentiators in the Ad Tech ecosystem\* + +> We are utilizing https://github.com/twitter-together/action to collaborate on tweets with our community + +#### Do you have API partnerships on any other platforms? + +- [ ] Amazon +- [ ] Facebook +- [ ] Instagram +- [ ] LinkedIn +- [ ] Pinterest +- [ ] Snapchat +- [ ] Other + +### `#Clients` + +#### Where are your customers based? Please indicate your top market\* + +United States + +#### Which industries are most common among your customers?\* + +- Media & Entertainment +- Education +- Tech B2C + +#### Tell us more about your strategic customers/advertisers\* + +> The app is for self-use only. There are not strategic customers/advertisers. + +### `#Product` + +#### Of the following campaign objectives, where is your offering strongest?\* + +- not applicable + +#### How is your product distributed?\* + +- [ ] SaaS +- [ ] Managed service +- [ ] Channel partnerships +- [ ] OEM/White label +- [x] Internal business system + +#### List the languages that your product supports\* + +> Any language + +#### Does your product currently use or plan to ultilize any other Twitter APIs?\* + +- ( ) Yes +- (x) No + +#### Do you license data from Twitter's Data APIs?\* + +- ( ) Yes +- (x) No + +# After your twitter app was approved + +You need to get your account id. Open [ads.twitter.com](https://ads.twitter.com), press on "Go to Twitter Ads", then the part the 2nd segment of the URL path. For example if the new URL is + +``` +https://ads.twitter.com/onboarding/18ce551qf6o/welcome?onboarding=true +``` + +your twitter account id is `18ce551qf6o`. Now set `TWITTER_ACCOUNT_ID` in your `twitter-together.yml` file. + +```yml +on: [push, pull_request] +name: Twitter, together! +jobs: + preview: + name: Preview + runs-on: ubuntu-latest + if: github.event_name == 'pull_request' + steps: + - uses: twitter-together/action@v2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + tweet: + name: Tweet + runs-on: ubuntu-latest + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + steps: + - name: checkout main + uses: actions/checkout@v3 + - name: Tweet + uses: twitter-together/action@v2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + TWITTER_ACCESS_TOKEN: ${{ secrets.TWITTER_ACCESS_TOKEN }} + TWITTER_ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }} + TWITTER_API_KEY: ${{ secrets.TWITTER_API_KEY }} + TWITTER_API_SECRET_KEY: ${{ secrets.TWITTER_API_SECRET_KEY }} + TWITTER_ACCOUNT_ID: 18ce551qf6o +``` + +--- + +[back to README.md](../README.md/#setup) diff --git a/docs/adds-api-application-form-01.png b/docs/adds-api-application-form-01.png new file mode 100644 index 0000000000000000000000000000000000000000..3fa629b5f068af7ff5b1ed1f5236222c52788036 GIT binary patch literal 379230 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

h@>5ltBZggMPoySMCRI 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

1U`;V?1UQta8 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%0A~7ioBatBNLFJaW%nOE3^yM+ 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

9de9jIvdI-)d1y8~C*3KS8V~@nc$;!F-ueu26~i zlR}?fsuiEs>AWR3v&i2j^(FiPV|tu$yKIevGq7aynxpRsJ7#%Xh07K5O&|}Q=Ec>I zfj8}~`-_>E96EuS#UL(LXJ?e*dUu7U9In8E7$8i_1Ot zrNU@uK#&rK_J?QNMLSMpn~60rbTs~$xK3$i2{YqPV>sQhw zV?pKQ;P4mvH%UsD9aq@|0j$TzN!kNM&*AIY+tk&ZL(s@$ftUpO&)xmS85j9aM!whU zeG{C#;Cm&^>#Odqv?PmKXe5|#IX%n>i^ti3en>snGtxVo8=TWHF@fR4UEl8Exd7dO z6+bEGc=QW8ro!Pk#lMA}+-ki8Z=0-50mjQPG52^R$TnnY~x13AemY>3dD@4EIJJHDxM|yfObm*X}G56>b(|0 zFr1l)#yc?GyiI(zKZ>HI?ikbx$|7nmK@9lbyG_t2wKY(Bf0Wp-|K~Fyb+Ot*1l=xU zKKp5s`b3HVccPa|sv^7-jDw>Ohl0`ROFuiHyqh1zLWnH8CXOBuNSzj9X!8##G54wU z{jxKY7(sB1ZRYJI?LO2}TJ{>vO1C{3f~?A_)8O$rih@XI5(V6nzYkiU^xx{$yc{lv zK$y6gghJV`khxFoZ4zFckbFZ6QEFXYJljsrm(fZI7;IWO_)TVvgy4SdLiBM`DNG66 z#+t4kL_@I`?O<|P>~31rxTK8lc0Hg1RAl_Gg1uMim6wC*OGYyZQiSg1Pqt?#%@fkn z(uh4KDK@6csNoruj*G681O!T67reG>ZJTy&W>x9wZC=L7uG$sNo%*f54c#l==qMSb zrD!ScXS{cJ*D0P|XH}DnZ@Un8otxcG3~OEHRLKW_w)V$0>o430<#)Z|B+&6VrT|!a zfSzkyoRaC7fq}j*_9GDs3k;*%Grnw@xO|eK?UDvU6-`#s0Bn`5e!&F~gsECnJow;D zrqy3NM z43#(KNqkUVerr-o;3v`h^+%e=H|O(-2jJvWWq5p4{@%{Nv>589Lo`S^|G-#h7{hrw z>tfk2Y=+m#6*bc?zn=q#)Uy3Drl!!L;i3aLZrTc+?Z3&N&R%bMctSFYA#v1Os;9

}haFX?<7H3lwq2crZ5e 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 AB>(^b literal 0 HcmV?d00001 diff --git a/docs/twitter-01-create-an-app.png b/docs/twitter-01-create-an-app.png new file mode 100644 index 0000000000000000000000000000000000000000..94608933f4a4c564cb2936fdb1b7f15b472e09bc GIT binary patch literal 228085 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 OEsHlM^46))<~SEH6sT;*=GXC)y&u0eT6 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≥zh#b}3hTbFqGXvdQg$<3+<-llO#diCG=ZY?mGh z$!NI+m!YZmjk3nAtz5XKVfk8mese&>mdLJ0#8Y#qlT3o331_0SGD^bv=k#s3Nhs-b95(O=y%$Is8PuMwPJa79s-)=R`Ka`p{o`k0 zqNmbeKk-91FWeh2Kp>SE)Gc-_piI%kWoU~DF>f#h+q-=p%njHoylYJrZ#)Iq-ZQpk zo<=W>)@+$F*FA=5a|K2YZLyL6EKB!*MNKz^@Q>4 zX}78Nm-SH|`&*Zm0TxSJF=O6YLos=@3}W-NVlan0lHlK}c&&$GPa*XYb$ z_t+&#)MiGutGKLz1_;aHPs}S-&Umf`Fcdv5ef##(&8JvMZY(MndylS+qs^plW9vvF2fVZQQ_-yUu} z37Oh>7Pmb1&XM>)gwr%!L(bADn7n@J%l52uj(=TQ^Vt&sTxRaVWR$qkOHHEQemK8X zC6+6Xn7{J~^*Y8P&`3|Cbf+?IRO%}lPy?}f36Y*rdFx^DKtWB5T?-q9rB_(`E=n>a z1BIaKS5+ah^QF~ASC;D(&pL4DP2c1TCbi{wuBBa+2_3Kqg4FB;B&UytL0g)U&AMD`SD%DMpeWo+wp z5xrne;FtkPBTSgm86e^wffszRs$o^YnJaw9hyo_uLbqGb96D_bjJ~g%^q!am`NDa1 zW=4{wTp*oQ&J&Hyze~TU+BQ|`v3Rl3w(_mki_1nUeo`9saee1%Ns>i!m^D-hY1023W|IR8} zhEpg?eo{H3oFru?%XKOC9{7tP{pREWmzvYTVT5p&Z3exo16r&@ zscypU#RGhc|E}kuixH!9<36L)_ln`l!#1Mi6i~dm*=4xnS@wWs=}7=!T(o3Z-B*ll z`a1;hTVa=a@#_gyQ?ruq4^5{r{!GHP_i_C74=!lG%Q+)V?O*T_32m40kb+jgncIcoI74Xwe?e?boX5M?&nRg zU$>WbSgk!rrBioQ+S2I!6VDYt_M%6{q5sAp*T#0aAcyBlX;Jt}6 zXL8jJz(s`&b_Yy9AtF~?o*vn8bB&k2&0vt7~Ab_IszoD?<#56jItq-Z%_ zU7%H%d7}6Wf!h3ke-Dqg0?GWZ#Py>hxpgd!1F-jvcxTv_}N$(djn@=_=eYY?oSW2RWN}@ND%y zLm_sEnj6A&e`?AqZ;z*5-MDSDY>%NNpDJl8X%-KmjU_Ju9zU7VBe@4?&6kj~y2oc~ zG`8Nr#{cU~jgU>Q>HjEZeh{~#*FDC)qR|cMhNdn|uA#-n^jGTOlyAeP#DSA9OU7dn z9AMwb2Y?m+@hkjoYYvPLZj3pZ#3^}DpBIXb9yj+rr{I?nG|}{;`zI7Y0zPwD6mHX* zT9*-m0B(y&6mXjmmXl+njrO^sX`AnND29%>H{bQM4YG+gVRdkNoBnME7qyC%BP z%W-s7*6SBgFfapIN{Uza5u*-`JN4Cc(-nPm3Ls&xkBYQx{H#9X z;JG|{0VoRuvJ|8Df6}CgxPX@lQzK6OA+$zB4KALKM4=4&VFp-R`5#@WI zsY!kq88Is?(|fKXB-X&X3iH;@a$ACW*g*wb?(~2|kq?3y8=N{-8{(bHRC z9f|uM-Z(=t1mvpbTPM>m1HeTOS{=LbV8wBZKtnq1V|9uYr2CtY09*4rA~094ANEGC zO%$h}Ua69XvZ$kV4Ue?n1nnGL4#sK43m8p7$nd)zL4+fASb$=NBXSF_D|bl@^6~9U zGJMXxc>c20u|hL8RdRID4RqkFrZ2m&gd?Iok}Ln1_`NJAhpH?CNW|mZcnc4Y)^E5s z-y^cYlvtai5O1t6D;-*`DG@d+S%C zP*$wNUMr)YiJZP?+m1wYhK3uQJ=#HKb5R+>WuTR@(uhIDBW68C0yC?G!&$gzoA%Dq zBy|P^OM0gjcc-(#Q$Z*&;2hsEih_KUWZ_HmIn|dayx6D%l(??2imW~G!eCjx`>JuR zE9M$gm;{iD&~Uwu3t?OXCX6SNa@eWg((!tPfrX3Mvu0OeF!FW}owI^o{kN>LZ_C`N zxC}w*j@d`c4l+ybL32-Gri*y*Dqb&5HrE!xq#QE^oy@RbY}rbFtRy(KmlkYR1}iyK zKN4joaO|59U>r~;RS-Vw{!)h>Im_KBK@;fH&tKHPLqTi~h>|yqK#649;GSN~1>g*a zF$X79D+e{(s0KihQ`QDXAi^|qzfNM&#@$3mMA=t>?>`m;9)7yts)>qwk`MwcPRp^P zM^CD~1rH%g%ZSnlJZ?GLVXWwDW7IxC16KNMUKB8DWXQW0uhP=!rC)B|@@b)Byu_r9 zlafiGGojQ(zsXy0wAhfg)^W`Joh#x;v#;23oIR%7WosR`)lY~>x!meH-QBs(A6g){l$Nu^h`SM-OfAT_16WR<3% z;)273mG~E*zihPHFZh_oRVd?qbIU2CpWk@^wW{<{ELP}{NS>@v%l2hM)2$@+I3U`kR@7z3> z`4Sj!u=U_WQl}L&*SDQNwHzRLpVvw!1q%gvk$7K5M;qi90er2YZ+PGJgwI8NB*3Ap zoZ@UMt8F7l7}2f9!fRTh@Y%pL53=;(07jy^wU^$wjm?yNQ zMCec=q4-iBk#0rj*tzQ}jPn~DF$-g+GHRDSU4Rkjf8Jq}392k5<)+;K`qgF{WWR;4 zeF^8w;u-8sZg8iTU3LC~Vd0Z}2uzIF^CW;{Er5w<7fZ2T6qqF}63%9I0R`^wZ2;uMXX{{8bv|6OZG%8*kl?rL) zQ2)yfIfapkjJRxU`=u~RPLU$7<2$GX~3u#wJhiAF)h!$4^ z{Zu1?T$hgqeNGDeF}jVvDmcHCUjA_0K9(c5_8)ye(l`N6po0H(q8-o)^2OZc*k?E* zmAz!L(Gz&g0_OLS0|vnPsU;fu|Hs>VhBei8?YgmI1+f9rR8&+zY)B_IL`6UZMWsXp zq<85MR79G9iV9K%lp;bzdX3bGNJm0VC_?C=g^+|KYs}~U-nG86j(zMO``ADD^YBQL znS0)IjBA|Nbq_usv`GKs{-W#L;EfWQzE)atHW4{Q)C!rOwtoKa{;^jRMgI+6xLW$Z zonscqZTElg&khyq^1GtiD=!^KS3bJ*kdaghkm{sZ%1{c9mDH{Ry(Jw(``wtkY9P3@|AV9Bl8aal)*b!at(cXqj3zEd3Z(6N8%%jfxtha@S(y?|;E}pMhsd)!$YG#}rYC!f6 z{vS{pm^%N{jQol#5@)jQ#zb}FNf)7Id)sxN`mqzuLAB(xE>o}nJR^si=6~8uWqxW_ zC4j$T3r))&y~pc+XP11~YBaj7Xi)mWc7?F}fTdm0X4O7k!7!?X>%kH=07q@w!r}f;Qg1;d#o9CA1(Ih&eds0n}8{Sb(Ekyr^3vM zKI{K+g6!4%|JPuVE=fwrO75$v?~NC7jW=E?nQzbJ`|%;5|HT;UIZ9QZL%MAod~H=l~?(@aXm)IYvzV{`;6OUJrqyQznur#G8<1J|L22= z55J2^bFo^y%WeTlHN0ZUH;;~~I$c1QM@!#-f5Lb#HXG>?%kc+SUtUI`42vAU=f&!0KeVwx|RywkXp-E{~*y$s+HvE%%bo4W^B+Cu7#Q4EdT-o9L$! z-41y;WXvD6)!-77acE&Zo{>h#>YV>yJb3KJe2s4_g|Sh=0coycf&Hs)Eo;j%R4@81W_@g*xTi*qufi{(6WGf8;cZyRZ0vE-#N z+ig}$Cb&G@>#DXgCy`I>7Mf9Z+Z?y)!xiFeMQf#*WxqQiL1>^wTU2>J^!})upRe!9 zw`+Sw2`1VlDo1GC7%p*e;@wSFv^eb5V$+jZLXjCS-R+p9NCz9hO3%?9n}%n7s03KN zLVw^a3$$fRy^tl1@XgSXQn71@A?a)?_+sP^-v@}q`j?v!8#(rDX2DSXLSy{M=}^I7 zj`_3GkfjuqGWEK7Z+u&AVb=?taS2?4w1VEVEJ@M*5gPI>0ZwZC{8|`l00i@{-}3LY zmn%n%tYE;r#dn!OiBa|t+beApOeA@(lQ;6no+<=z>BpjM`CH|iYT}9B!>4XbJ=t+F zG(LBvUhx(ccfVlE8B5NK6UIt}fqFNhNjR*>KrR_}6<}JPf}Upv5=1vFkd1soq3>nx z4+5m*)M_k6b|s&7;0H{ua=n}Op^oY^!XH1J`2Km*`e%2`+>Ni$^Poe9 z)>1Zx(dRhcm2KOtKdd+`7e|R0;ScxB5sqJ1=b`OpMHcfQVGU~+;?MIYdPBi@9!6fL z##6Q$({cKs5tf{&>$7ZDg`^Jbxzg!SDN#NWeY$5I(!(Ot=AL^!cZ;p~P5ei+R_7^p zs2@I5|0l6>HiKP;4rBjZ{ZsrGRNBoq9Au+MCBD3@YxjT4iR(46-*pkowwOToJ``8J z=BKxs%}TnCv1zzUxy!^Vu!+xrMZDb=aN;T&F`#KVx1QEl`Fr|ft5TLy3U(^s4}~q z>G53x?=6NJ(i5wCEE7U{3vATwdVoyA(7Kx_MXS#gl@yaCe_%l;IS|9psOvg@_H5 zArW5dGjC@dX;w*<{f}qQPZUTkAux}>B8_$$Jm3Aq0puJ9F{S6k!xuLl+xUBh5&ex} zC%Dl8Push#jB$i;4nfP1_lan_Far=l&8Wy8mIa$dCuTR31 z@W4#%`Kc#jqBD>5hT=sD!mfEHQTXt>1X)4h|jV~F0VEeYk?O`+wb1` ze%uV@om%bR=9qC3?@Zs&n+pO%GajTm7}`6vRM1Ce9;rJI=ieO8&?`F!gMx^!Usq&B z8)or<8U9YfqY%Cih6pO6SuiCmuq8hHGbsnJCq7BU1#P5Fr2_t-OGh?fyS^)#w+`3v z@2PsQ!=Jk->pt84G_5H%#UVk-JM`6Cal`yYEIiX!6@AXFs-bz&tKVY$7E{76Sx@UJ z7Cq^Ixh?Mzn-`^EIf#-r$_Ihy+*UI}IDsoB_IgR-&exl3WK~#aIV&T4Uol*94ug*Q zdarCR$VtcE*f!-Dmp!;w;;3cO`2J}NMRSGb*ympCV03}l8h;+eTAp2pdV5T7AJ)H$ z81>*}u&R%Xt-^aLgRXhfJ$>B7Ws-l2C>j359E<9|f5$eMk%;A(#ZIrDm@ZK6rI}S# z2i}FDX)JITpxqEU`^!8W9h6ziicGv2K^t{`qWyEKSPf7&r~Iof+VvG~mx-0X1Oqu$ zWlLp`*=kU`a~;^;`tS)5x-)#=pRI1q!ylrOZ*D5{pj?s5Al`wZra_A=A0z=!Ve{NkNjIY$uC?v_3lij}jSWDe#U z(5FJMIak%uJ5}GCQyIHTEUzt*)VeGay%q%?^cC8J2&}g6oL%trSLqft;SFmqd^IZA z377uzojd0yiCID3w8>Je2^|?Vh;aIveBT?n(%#)I!it)B$=N z=1N1NDkHl6VY0K_YFgAA9#^o*(V*apecAmcrR7rux1#hL31eS;8tsdMiUvyU4Le8l zn373d@(+!Hn(V!8+gYfi!q6uy%#TPu?-OG)Vv31%!*$Uno2hiNzwop?S}1PVMsrt|lzf2kofsV&4LrPKQ#TH%#DN?$OAQwC^0r->j%46fmw}HkqG$Jg%r%C$ z&l)py$dkA0e!!u6zN{JHi?e;l6}r(;v+7WNfP z^`ysRUsU)qLW{?=588`tF-!VYa@Y&l?CP1-vm=(Q?AO%iT=B)a=u`BH)n8dPeL43F zj*k_}5BO?&_E9Tas4Un3sv8{zRX*J$kP3WckxRa;t06vB%7MWyZ_z-xMO-lBW;c-w z+e=N~(zu`RZ?h=kUmTusE{Ed_^O+&PH13?)>&mn!FK$~T6>i^|C>_;-oO|im;&2#t zc`4y{Rk$}!5f(Ss(5Zo{sg+4;67t&fV)l1 zwNFixnLcnSsHe<*=K4x`Q=B}x65js|d}MWzM&vujGnUJO{mwb`3zEhn%4S1)m!a4f zAvsLuPZWaaM=`4m?&0>j319Y0cyaLnE5~OxkI%7>l&e$mLTefx&;z`I7j+|n*UDUO zBe>^f{rS4SetFRzffR25|&h9-JR6CXMpSPA}$i8C6x85UA=d zI~!DN|5&&C%LUuJG14lfLVdXbJ=Hg06K^NS%_jnUZwi#NRo$T>b)|AkD;ot0@v zTpVwUj4ccw)~vSQ21|u#?@&H5Hg_&cQYYlDG0_)RL_Mo`M}Kp@L0 zu$-F-rPQ5j(ZXa$zU}vi=>QiBKNhsA67^rM%y=)~CK^%3eNu3_o;`pK6=zpkE{By4 zyfeTElNQz{vEJcZpv-O8ZKq@9?eCC^>A=i~Wo49b?%C3+>67nosF6Atx<Nu)IbC4gaiq+>;>8ek z=d-E@)r$w)h>T=!s(!p0k9n_0Y)B&4e75GQ8mf6it4xc4Z5$;^^fl!}!J5|7EgH6o zbdRudvetrc(IYQ4qtx;wZ!eRCh3U6J=_(cbywosSsN0KJo4<@_w`-}_y-22va(uyOe<{G8q&$D~3dI%c%vYI}{`;O~doj&X=> z>-pJeBc*ZgnZKau*U3Qg$9uxzu!oJWTp^W@v-`<5zi4LF<8}eBxsJqz(Z-=6e!emE zJrCl*(BnQGHQKhWoW|@5Cm;}p{zhp(o>q1w`7TYnt|b9*ITy9Oa4lawOkgB_@x-R| zXRk9P<4`{ezh)3DdrGD*R<&Lbm2`u070eV)6l3}WptJ*3jc4emM-ni@VwHQuKX*oFbHqsnma0N>L){|3o zv=JpkU{U#lZBaRPTc!0;(mn<+Y)W^F={P}ZZV9!j*(VV|{7vw<;M*!76WZ-T%rRbp zE8CVz-yCzs(jmE}4?fqAYw3v*&}T~Q4)w)g@;y(TC>|dUCc5;~w>>mIy8C4o_s&b7 zO620<@bgEyaNL$$Uvi~iF{N@ykTbZ6$QHx?)s1)M1S0JElFu(F(T2PFs6Q+WjP|&a zb}tv`bz{Gra_e&h`~(36Jt+fp2@{MBn<2nkoeCsR?VqAftR4%p-$C8e(qwuXk-4gso)oS=foHUbm@MZv5ihpW18P1-1sY6&LVp zC=Ujhv_!JM@8XPy0&VHc9ITO&=CV^5-;j=G1u5T__rHB&qD4HWPYvPyIitj%iigMA z0E?_IoavJ&{P4OcsfALbtKk;vZ5&$EqVC0>AIAPZg^xsU2GpP@dDpg$^Ms^4XHHTBmzs{i8xz-f{vLlXo~&j-FGYSBJqihLohW zmm&w-rE<3TlSgT^;*TwR=1F;y9g)={ny2Zj4Wzt7u8y({vRPy*`HAaEf548_GU$^I zsy@o3ty>m*#u06ez8W?+ClUFO6(P!xJiNCQk+3|o!kj1R#C|-NEx$_NV_>w`AT10C zm|>Qqq-nds$o#y9c=44-gfp@`{Sw4~(Y5P_T+gRr)9-aJQvcA;AG!e!a!B~mXp`N0 ztk@#BHiGyDHMX}I6;UC-OZxxzU3Y1E^_er-MpzN!y3{gT?jCK~toQsGE$+V*6} z!x?;+yIw~akatJbE+4P>n_MmAr$f+4@(qP5?IGZjo&fbb_gbe9{vo<{6hS|@$&rsU_6(>BksR&?1TbWg&;gc zli#*Eu1iDAc|A1j>$eM^{o&7L2N{_7h<2oLpV;>mjnp5wG(XjX22^Wj;tUs7+`}b` zSv42)cxZ#dMD4DdU|sqhC(oyYW~l%ud~E0x<8i0u3OxPS{7sWCov5!GZ%tPHVt{*r zP-(#P)WciLwVHpZ!k%_T5Cr2sAt<|0Pi6;7hZjJG7*KNi<}!L+h26inLMJPto`CRz z0+b~}xgf%T;NI{#8q6s_GSlNEgU?8a9p>FAno&oHacYC$8uVW7;d=I=4RlYUIT?qX*Nc#nzs@6RR( zcjBVkZGZjrAk~O^khY^T0M@DZT|U;EZ#~m681N$Ui2rC4Yw7qm{6L zGtA}i*tIhJx8`G)7uXt~T^-v$okA}2S-VygI0i2)KyEN8qsdD9sfjlWDWDP} zC!fRhNYNI_9MY&{Y=m7sj1SFO4^E>~sKE(IagD~kGN`|586Q_{h7XmmEJ!hkU&Cap z=lz%;K?IADcN8-LG8ecn5u{0V3vjIMq~gPsXN*A9g_{2bI+#A)CTf}Fw>Ls%)oGfP z#{&>nIQYw;1{-NEo2?3w6p6gPN9u?w4{K>6JYtPBU!V9RUwMUYVI@>=jH)X(N$ z)#37_C!`ARsiK@S3x|nx9+7CU%~lCT&9>!%2&R>$qs$In&WS(Yttjm(lf7pzx&)sS`*(I<}^fSXak8JhP%7ai(EVIfu&E%3 zw1U$hDgx|Az^1M#u<5Gp_gb98Ylss{X;Zl#R1+2UZ&%NSc@5Pv?$6EZPnwUPTpw^j z@Ws={6D5L@iJogg5qi;+$E}71S_f<8IkXO@$m^4o9ev#Gb>5p)c!x6PH80CJG4=<5 z*;I`k6l{-eh%=b!D^Ra1XMHsv)7LfeFE19?a~&+Lx>U{QiNGfaYy^_)!^Zd7D=yOt zFGc0mR!e>~`ZR*-mkPZ%a*G_%V(!yXosY3?NN^r;*=_~uBi1r$l(F)8p%U9^nRH;s zrj%QCp~YU~T2{p6tJA#|!ceSN8A_0W1&KL1BvszQIBMiJx+f76xs_?eFB`I)dXn&F zTGijV*b@2_>ip7~mOw6=+VAQ#c}y}D_8i2e7^C34v+JvI7(&{#9*!RB!{MKq3I;Om zmcZdRM8RM;lRb=_85ZMRGzD1V!f5u=88NS=Q-A;d9fb0n@B^$`-KO>`6Maxt*Z7OO zF10yRiC-)lW2Uyo3N(~A^U-|L1K5iD_3$0izZtT;YM1w=upAFS<~mzrfEy5o7iffp zb&1cFqr=>i3E>mWJKOvWJ79F)=e$G?9mZejkk99oPKb9(?${bQ>pK$eh zdI*>HY7Q`uw^>}Rzb}$mi&#qvd!>&2`E^{ZVPH-cS5rcMppc38C2^0-c&PtPAIS;s zf8|Zn+gy@aD0M)7L(vvI?gTdLY`@!U@n&4RBax?dM@cd_e1YQ-(SH`z^eS%eN4bTL z_4yl}ikCaYN{($TU8_L+{`IA18Em7!oPNDhq6zm@FyjTa&Hk}Q-UxIZZb zKbkI{AF}Uto3;~&sZIGTG}c>jVej{K7tT2K=I_#0lAEpkbZ`TGQMPh738&4zvYb*E zCQ;}GMNv(kkqhHpgj=ebu&9X#X@fw|)ARce{uwAB^6@$@R%^=o6oU7OH6zjMz6r+~ zAJI7&;Ro87dr)eG`zP6B+vK;2J(Ra?>vbS~4`)NE@_Gh$e~)&{@Oy3Jriw3eHhuE_ zo_e*+bv(QZx0-&(q48HEv=ZsaFCx`A&u#ayqI9N&Nn=nd&zFY}D=n*^DmrxO1@G3P zQ!E_5x)Ci(yXVQ!l*PwB-ZBeaagd(QoowAc6Fdk1_VXYX`2d;Ou|-P16O}zoYOxLF zoFcn{ecJXyGTV!8;MskSdBd|UaEFD(?v#0ln=mK)FO8J_{Vp}VPEj$(`dCx~?BlFa zTB`fN#y};sQi}@9s5l$!ENVJ+r-`v>)lh6kEL>_^NJOb}y`J z8D= z^RZ`K9*b}3uL!|sy5Zk@W`{l|Z>y3=L#0}xA7=x>wnIjAv=LW6CMd4zW)G#RIW?Pi z*@)vZT|9>c&DZ0r&%~%fjrEoq`sFMG<-(Hb(5z|XyKoaeTS%vpF@tUrB(=sCQxI+3 zwMOxt4R4(8w{8rN+hY^axY+l}OVekdlommo>dN-`)TajBjKuY0tLzr^(AgX&rNx|z z#>UROdJe!7>&kSQD@B{toufL<43F)Vxi2o}Y&UPzr}yp|XoReok~D9(IJMO!lE{}et7d3^er3EGJ@6!b>1AvOGL;YDvx&x$BMc*c zzJ_H9lG(N8L~@u9$d@y&E^8z7dmXHki|l$H7FqdudJ6lI_Ad4OEVM79eqdMkjZ=?- z%;6aBOUNN-WE$gjJ7UO}cE3N<{EO%o$J6jT+iLM(5A@eq>f@7W9&@Hg?0llXEJ^n2 zl%yaMa5_e6hUvh?j|xD#Vgz>GvOJyEm1S zZ!dCkj`;rg;#K*P+1BA?@N;obl^jMRA8l^Y zXQru{s$|iCx52OU1rLw>B43Lmn5aB`P$u%tXx7td$7}U(_NT5M$gY8G`5IcvVBzwi zr*V}DIm{1x*JLLylv#A&M3q=S;xuS7TvmpHhJHz%a1HO)Q*q+@W!y~mtv%!VKS2n)Y> z%Fov?j=eYyw~%Kc7izScV}DB@PrO`gR+Sv?M!3|n*YUUhp(WvQ)v+wih3Uhd~M8b5w2aXLFAG8^G$N5_)+8yll#1+Yqd zC=z$B=53*Fe0}B7vG)&Q(-Mr1-kIY(a>dH$@9QBqgee2l6wr3@X$(48&cEaDXH2x{?+xp+#CRu-1}A-JI8(4UDkIP!AxuA;{GtI!H#v8;75c@^G%FZapy&i6jn)bMKhV=x?C!xuT_`OsLe zqO?fqu4{>55uBDQr@Ec~HdAj63Ml7G;GaTWzH))PVC%pnn?)!p&HhZTcJWOjDOBoE zgGaUE&R(FFTlK+8c~JABwp|3{(Il5~J1foX9=xSC_1|TE4x$@79%J2HYlnhTu_j}2 z@4W7Ll$Ubn!p5sW@wg#tl4GQ}x>TbNerdt2W1L;ic09s=aDicaO+jTG8ueeDmxN;V z1FN@ktyr?{+Zo}O)AlnuIObB4Vy=q3EkO^O`jJ^&+x+mc+B$&R57CHLq9W>&a{&7<*qM_2K&hxm|>!qY*RTHBW@Z+7w=5xht&B)u8@%t#Qc`7`ZK6 zXFVO};-D43w%^Lt)ie1vqlu@bdZq|J*02}xclV*yhBY6(!}`EG zOQfIKgR_<;``<6J8D&=0Wib+_OQL=%#b=&ZQ*Z;1#lv!*LO%4-q0bEKzH`@u&lhOt+ER=-;SnGZ}om;rGYKV79&< zHJ(7GX+!JG5u2w%TH}C=tqmd@z_~(1z)VYGi%4xoh>k>)+;0!owcif-OHaBvw zyA5M{%t0Hwy#{}MSJZ!J9rKc_1B5E@g231^8|st?q;kfPeP@N+==FCgiE;YFqb%3c zMBYD-U=-a7p#=l@O=q=?yeI15w#m2ob9&Xwwfz%L!lwAkQr{ja{U4hp6Or3z)XxuM z5L)r%d%AtaOT!m(sAVR`k!F55N4JIi#}gK>(4QxL?+scKS3KRG(U;)c9ulKqDsn_y zFo?r$K9L`>O{L^-yVM+jU5J_G82-`c<42Eom0um5TD@89p%jy}ZYAMSn?K*>kF)6i z8sHY_X}-ozHM->ZD;d|9{{#}3X5rpjgsh=i2PB8uuTxb8C48eP3ODKDW(yJ|-n4;OdVVq<`p$lam)Ou*P5SPm*Iwsd8a3m};!{AcK zWe|f!bn*o@Hhw?p+)i9^8*^M?CHa4|Slm0^U9wBrefq~!1-yBVv1EPs-tX>jh=eX^ zTVtk#^;Qr6BuyE`LaG&CtEnf;#}4CIQh7@J{86%Y7-aEe(~NKc2VY@rEFE-SfLd z+&;cLU@y3FBkwqcO=}+^<`b#tJyN${at@omS?mjQr6_cTzPrUF9l_rXwX~x&#fe8~ zXX#3CN~f~!WLJY;j6}BlSlA==4d(UJ{Uz&QdUeIw8}$tWb9AXZV8dAlt>uH0<0pCl z3Ys9(!LLV^;F>jacRJQB9P~rKtb?mpgTtk1#UAR{{?eRF#AWJ>`aAohRR!s$P}X*3 zVObJ_UAc!84($CS~3@)O2XMz|ALx~YU1*9st{63|D&>7%5M?YF!kkVG3 z(MSDwd#uBSD(^$9HVrDc01(|A%vMiY^yYu_`n+v?cA!l3E%ko6ufO&Z)~+K>3o-IP zB{J?(t4xfPn}u4%xg2F4!yoeS4%Fdx4baq4Bga> z`e3zLsXJfiR=q{0T-8mlei9F4yo~x+@BLaRcndS)u#iLf{6=53v8{H10of9>Yu53p zJ%@Swvvcz-JtrY3|qdW^a6f9hLp zsCW$#5$e-L2W09qzUfHhV7N(BO*fx9euG2q^&6upDD)V-bAKiSXzAfig3 zJjquo{zVzoq2HvX;<3;br5bgV@1fC7CzjmQr=lC09c7!1b-$aMnbsG6>2|!-zj4V` zwmg`SxRn%93W4B@W9|lI(y~QnKO@^V<>~AMs)!KsJ=_ih)cxrh$uhucx zOAq>kyylrVg>Irg+L`o@TfLPs%<1k|7W-Y&4`Q7P=da#3dtp4XU{y!|I(>q75^=HT zyG0w!d*@a-9G3Wa`)5~$ho!LXTvH8pIZ3&Hog|@J%7vg69|(52gd}U-eHT6K1G{yM z!i4RO_$4`z=Jz)%(?wJiRx96?1@jjiVj^!L>@Ap&Mo^8(^d7`1~QV8Hyr0!d13#K=N9)6!z2%d%DRJF{{2LI)a|tBEVAIAq?F3aWG z<=%Y-NAqgp+B=yj&sQ({;5-NP{y##Ol+PP(`{H}K`PrFUy#f~Be-@gvN-JMJfA3Ja zC#W)cqH*&?TI5kC77leCn#b}j`JuKoem{L~i;|elmZ(o3^Q{)@TbqoI1wXzTWRm5M zwTUUz5DQ6`9}pyBX^W(cr~&+=@Kt6(+&TM;34;9nA)iX}q_@K0-*4qn#>Kz|1$KT% z>vwfmeTY=qb6o#?AcPnZ2k0-7zMME-u2T5Srq#Y*f6j=W5Dt)3~~xK?7?$ZQ!V9dLY%-C47LyuFpj|JFIe+L+1e38L`a6*+vzEcbMp_5=SWkL z3;w}Aw3z(%5`O%u(wX>2dR<;4tVsFAzARS*bLwrm1T$fo><=VN2}ZgyNo50{>MELG zJJ@X&aV3CB(@nm(LI3Mre%R-Jz$5I4TN66w=P4hj6*kaCgF#B*&eO9q!MI(%JnS9K z{KUf&NoUI4-tD^d0G}lG1;^*b3sXm7*QCofDtl=aw{^?W`HsZBh?5@%Ve_utPnxs2 z{plXFY+Zm!+rHe^M0h;CG_A%nA6>)iOjLd5E;)wIq7g$RbewAt7~yx!sdZ?s(k?tl zX%}mG<`PhqEOFmpP;H0U9vXYgoW}?9c+#{JUN8WIg6UNZfc4-igu!((40ya2rHD@w z6&K~FAx1+b9re+YJ}boH80DocDv2+;TE0~rt1C!_9cz3bOR|!&tc=`SiJsH`b1e4I zQlD1r*((IznK1L!@=Ba+r{zpJi}-(Tfuq!WDFc1Vv-gNxfknYLpG^iz1sP*g2ptBY z7!eq3LI^w?MYLziU?3CkQKb%Lm~?M}{ZvTW*?6R@(&(KU_Dr}D1nMb6@ngoUX4r^F zY~8%iM>yof%eyt>_anP1p<~%`tq0l?9mY!;j@NZ86z^~wmq*$>7P*i83KBZy2hTQ} zO*a`_MpE18m8R+D^4-k+sCtdus3#XKol4S8VZ=0}u-KT{R z?&xx9rNjM3Nxr3BcLe?P>~?8l?5VP!unsjr-Mf0!wV+PD30WQRD64tRtlwTz>72Uy z*3;!>kt2C%pM649)QFdTO@N%qp5t!`5u(b7yCL3X;hK7>|E1ShcuIfPof-?gctBd~ zV8l&Bg^jXwUZY>Uf)^=!wr>)R9GuxnE&Hh;MN-JV#4TWY1w<<4>1$5_v_2KyZ@{%PxkNG zb2^aJ{<$$_*&v(e3245Glh*YQJ1tXd{JD@WRSZ+LgJgQ@C%&j63nanhOKuv z$e88U=j$a7tVSGuZ=4SSnv$peo#`+LsfjitAcA}qOj)amv!sf})SHpi0cBXjr?*p* zd>j<2gEv05p(1Q-dW2|erWsHF*+cY-nFJ4V&4`Xl2o$hDOzqWte?rT8xA#FL->lft zQ{lUbYG-SOVUg2VGRz5qgp34?6mhwW+$N`KOAIez=gM=0NrfS%N@FT!C0 zvf2{`BmGa;&4IJs6sqtQ>-rX}_G11=T$%uCFn-OtP`lM~ta0|;lC@9I@3?nw7Sr&n zvY4;XlMOPbaO!ny+vRxzE-VQFFQv( zo7ZLS8loGTyRdbv1@p>hg!Ij{bK4e^d=T5z{Dp9Qfl1%ZhlSw%UynIxUbaeVI~2F=<>$(r+TJ>9>P5KUoZ;H z@C3PkE~9=lNG1fsZ6K;d>^MaB4|T!%xXqS7ntGqD8+qHWjXyl;(dtWeFU-qx)*@V< z(mKrroPhw}zQ3hSvUo_u{c*3vWhHE8w9(-5AB3Nor=hE+bjztU)Lak6EX5&u*QN(` zq3^(ZWl=0$>T>ynZE;!J6fW|YL;cB39ZVKr1bT;a2PgAsrI z4~>v#>u0i^1=j%iO-|qQi^(x`Q)oD}6^2&6eUNilUH?)zDGu9ra@#h+R@_xWOCyV! zpzJY}3OSO!^>MI9IAxIfQ@4y&ZNnaN!N>ko#S74-8%TW+b0@t@&%)vPowaTw4=ZHa zjQpsH%9Y+s3b*Uy#pDf)Ew&k#4%Sf;oA8eW<{n%#9Y+#=N;RYBR0&&U%k>Atx8LKoy4gBYB@y8oE#Y$5E0~Iy+WsnXkI|_t1o& zo$)V~&ae-moenHi%K*PJe-r0%SET#m#f6f|UsBcnWbTiEoMR_RKHLDO-525V)zAV_ zl&Dz8$~|5krGWJJ`;gaJpD{5oarT<6&6Do;W{F1JcSoEP)%-I`DSFXnPMi$^Dt&l^ zmc*gn9JsM86}IEd0U7f=E9;W~t#ik*7!HR*4yFN~FV8FbVja(r^#$2T`=;IkLC%lh z;Gl!Zc-d!GSd7DM*Ob+^Mr1KP)gsiO-uxjOxK%<+vH{EaV7b)9e(*Lb0I;Y%EZa+< z8qN2g(Fx?@>6JtLZH5gd=-um>w1Adq);Uk4a_itGL|NXj{KeAIZFa;pCkVXdchgJf zu9(#_9R^BYXoUc6M1Yh(;oK%b$DPP?JhdgoDx4{2H?In&7oe6+f%IeqGAg7QXaL;2ii`$rjq9#dU%tAX9M*DxcExvz;Ip&uFk zie1+VzCOsM5xmiq)i60xqMedN#Q12fP0t8GvSw~On0_8*xk&s=~FT!CBX>fx0)K-7yQi0WV0?-mc<{mmzJx@}; zr)Zdznn65kbyx|;B&)O~6cp|hUxo`bHZAzMhotY?oBxPw)8v+K;<*SYmj55t#z@uq zPgyU{DjvW6^{zAladM!ZM4}n%!MX9=RB-(BhsNVgEXySSh=QrEQ4`9}46cY{lAa%X zK2%dy=+Icrr4=gL(*8OSJL6_L5AMCZApmy~IGmij?pdNx0L*MQt6bTMa_Y||d<0vD zx)Rc>prPX$3W`1qh=l2iS}q8!2x${K%Jx3ZKKh$&15lJnf8HSkQ5HO;O@#t;%-aM{5S(tcY%*Vr|mMx)?vT} ziO5#0+UVDu*h?q58mv%}L|aG!-f#1y8Kj!wW#xq;{P?rQuqD?UO8v^BzgyOPSWS3j z+U&3E$M@D0IWgxl^Skf2Z3^1^@ETF)J?cLz<2GJ%$hvhcE24PRFgp3~J*Twg_ohRw z8~=5t({&8*cO_oqe;?^oBlI3O_3se;YulQY7Ppnpj~T{58Z`heYTly$2a&APv-a)l z5#0>NLG!?0F5qiLu$Yz28mRHE0x5uD0{vLaL#zh9lXK-;otmF;U2fP znBKnh24*R{aFxp&IZT!#;^_iLdo3^+V&D!TfEJIKO$ICY)HV@IDxBwNi8D#>Mv;~E zvPzz`9#uS*$eQc>N_K`${U*3-R@rp4C*zL+5`7($c5ggm5ulai#}n;{@iXnlhtQ`K z<0l=DOW3m)_yCPhH4QD6x1vTMT#_8Gk5ob(lK__Z*y)S)Bel!P?7K+*3)%|W8pNwBl=g-lJL!9yf~!ES(!B-+?n zu9EA1tN8ux??gUz(34uT4GnH2D9NnWT0v$|4d&*5y7PZN_Cg|2m#2FIpsoUwSTB+w zGsp1tbXxHf^fZ~JQNT4>jl(xzP9jy@tn~Fll1u=te59ai3ph^AvGHMOQ+OfK{Q7M4 zK>ce`l#!?GnM*Oc z+g-LHUkOky+Y~4&+eEs>k@OYl`Bj9>pk!iE%XmO|;{aKuF=y|sWY!NQpi1)Lok2b53m_@l7LJkUI20S zo5j=}>HGPDaHTawunORMA_rjq*A002sM;Npb#=k>8(p zRvlmVAUUDAkUO~W_82sSn>Gd=LR*F2>G-GX!d5x;Q!FL|!v57` z4fopST#W0=M!F$iwAYp^VZqIYFSe_@ySwL>V|3EQ=YiJ28^EKyzwe(pEh)0na_q`9 zvSqDM$o|fgndu+xKAes@HA3k>yVzH_=BJE?8}$8KXgwJ~5ka(ur=>S+JbTnk~5UK*$Dr}D1Lxpzd+wLLn45lFvp1GYNfU?j#UG9v-WP6zv(q@5HN|i; zeEXtAyMLenC)FUYua&o(;xfG5-cZgdP4K*7A1V7pzKNA^@K@Ct4fCh7R?Nx2tb!I9hNQ4ARA4V*? zkh*Bvon2JspuEDII#}7M*em{mh4*`7hdz>ZYuR z_$yr_kD74ZmeErh;^E-ddY+W?kG8|lw~b&1O&Jms2XZ*zI7r7zgOCdMJ9n=4A#CNZ z5;=>>vv#C-L!L^+r8n{7ac_}r7y_{*Jx?ToZXA;TZpd?oMlLn zj6m7WMA0I%aV`0=54@^QbYqXfTtd=i&{hO65p@Dy)`o|nJE@kEt+<)-<}eZCvAsS* zJQ7h@ps4l)mIc|4Ul1)VEr$FfRh}zTO9^gVSm$-)aM%IjPA;$&KuB={Gjz}K!Lej{ z#T2>6&1kC8DveG?>F3wkt+26QF?sEI&T2y|YQ;0}O+6<+Sn_WPoP)T*!3sJ$xH|`# zs&Fe_Z%#iFrv9Dn%PFyRs(WWJ5{b4%Uc&Ql8^Nfk4E|-r&p7iIXO(}~HAXN7eC9c3 z{2do5kmSD?D%`p(T*VsHT`*B8l z^=!q->GJjANrT;#2Sz^aY)+~N&IFMG=Ee*iYYOelnZ3e8CDO;B`Zw{XjRv#whEG=l zY(P1Al@_!Q^-+Cs44L-c!QIbZ)2)@Fun+Il7B)(|Aq0up$9P6L^;s+?JXum6)`bcxJCxgAmPQ$QRxuQS z@C%*!r=Ho?Kw9*1Zh13Z!A5F+f4;~cY`&N0wY7OGIb(*t?4~0AKDY+EsCebmDSY$3 z=ez;>Xr=$gA~F?x=*Yg=;ttwfW`f^dphLK8kV;JP_pd!tJIl23tHX;{of!ubv15v$ zsUdYOY_}Q%97sF@Bem>dU-tDSw?tmLHV^AR$Zz^W3RCRpt{r@E#^;TVo~4Y)Qtn0t zzpI9JvTU?<>7-l~?M)3fTPqXCihSYzwQZHKqo1u~Ebf%ndg3L>w^MGppB3$G%wl$! z^k@DGw%iZrI$~YSs~nS-4XOEtZ*iwhF8y?y-`Y<9oQFL^gh;qW^!WRugVw*`?2qBN zYZy}izSTe390!?4$!#)t-VFbv=~7VftpAjZ{K$v&#NdsirGCJ?|eY zyS$kotW!SquyP_S_m$bFku$DDhVSd>r!XHIgfnS|5q~$70tdT1CfbGIO75f&_!Qap zHB3_%8FRH}k;5gHi5HRCqdd7O_FP@Kyiue92FrhVp+5baPRRCgG9R^Ku`tzP+bh<` zsz8DGNF6i>1;SZmuY1VOl98!M)8`Gcrv3Huw+U(EotY9>{8kT?ig`!_;Uj8df-DCo zU-289Wn0LbRvXLpgo%kTOTRgLeplrdu1wO=6Twf}i+a~}ViekFa#YQ^Ygh3tRBzP~ z9t^4AQsDu@JdJ3wIsFU^W}$OWia%&CGm{l)Z=-7D($@_3AAQX`?x!dq2q)V4Q_ zp5z(P0yF&IC1LamNwMqir9*U+d_irl{Q3I+ZTx5nFzG8ct9M1*^d$*KYg}xDOn?+# znVkv=%uzG|p~3f*_ilttHjDrMeRaG$SrwuM4>c>W&k~9IUd44eKqP!ymVpi-`Z&ai zTq(*S45jjsE`hwXfJy3kjcbAZIoL7@yVE{W<+Kg=_Ms36)UfB2CM+5{mIz^d)wV$P zM0oIx%$vz78!`T(m275K@Km7zg7Dotcm+Mxl^L*kq_P&i^^Y)7;m5QW+V<^D)$kj> z8Zup{7(wr@C>8StEAb)_IYxOSiU`IB$#Yj!PKu1+MFNx^@!J7f+NrHFv;eGsJh!&ZW$GRNy;|{IPm2$V`A|`rE2L&ly%EfJog)(Wr^zGVe6PF3> zyFdxG!bSC6o*<03m$lBgzr40R))rrZ2{ z`{ivqcL0zqh+s8TDsg1hh@Wd&U(3>sF}pT~pn7{{XJ>H5tEYY0e>_D7K5N#l%IKwS zLoPc67H)v?`;GBD-Ni>ub2FbdL%68=(R<&`FAE2Wc5QUTGn7oQ^IinMTP$~b#HUex za@$$k-rbZWe}{)-&#Z@+4IQg8bkr_p-H}OEQ@|n&94Pw3uoztZy3n5Y4qz*R-9@M`*}NrLVD_`pPph`l!tqaMKR^B1>ZSKJ$^q}|eL;PD zU+)uEzMr|N1LN$|SrSVQV&&g7S{!gd#~;i4b6QV%e!+U3mj!*ZpK3)Bro$sEeTL`e zmh*mnh3MhW8FPpgLh4S=dE~+t>!w~*bt}TM{Sl2B@y&xi`>58_9%kK|@1@lPL-*YL zUxd8}RFh}>KaSEuTScr|Q4mlo;y_ZFGNYm(BI2sZjEV?|5D{dBBwAEd1XK`Y24$%T z5!oXNE)anP2zw+lLx2#-AY?xOJHBtNeShC`{+`pyIW70|JokNH`?@|KkQ}m8Njt?R zfq+KOjkx^Ur5;pkzw`n)%mx`2$7lk-g^x|KaCJp!Tm1cD8XR zD0ZNR*9N-#o&*oYnyknxaT*`o+(eR@2K3+jz5g1p&IdqlVs`*1Y&|49*~zu&^CzkO zuyo&LI#K2JIr%)p@!wN-HOqb3*Cxs%%New3ps zUT8XTrs7t2k*iLUt3QM6A&20B+^)3GiIPrKNLobPrp4F z-Uj+%C*1XCgEuC!;qt);;Fpb&p~!1;wD>9kC28IH7^MHZRJ>M35%AHlm* zQL+ncm%6ITO1)*x$*{)mU2Xt(0NwfgxYg`sM_~SbQHnkTfC##a+!BC%J>3^A`jH$9 za&J#THX|#u03ZW+fzgRGRaZ6vmKV`@hYoK1^BJCNBc;9A6SZRQ(q+|h zw$U<_EOrW&9rE#y``jh36teH#QT}!PalKNt=4&1IRq9j!Qa`W3G*%kEuXj4&u=Yt? z?SVTjS(h(0KI1v=`Mr$)$wv+)c-?Tb`kf=StkXODS2pfQa1-UWEhuO3bMi1F3`$|d z^+T0|ZRR_JGn+T}8{Bul{c7h)=WFh3o0GQ}^9RQRpDuK4S>dPKcHqLHT63CS(4fHq zI$krzGRQVb8x8ksDfGS_dcO37$<+?=lB6HnK2@+(!`E-Vd7!p^$CSxW^Y_w`)hZxS zvgzx%jMH-yRRG*|qBClKy!VPnC9wc^8$hbo28My@%G=cIL;-nVk1%(&Sva7aX*ggQ z*r&SxQ2u+ik-d>#^IsH(g=+mJ1@RZ7j3r@-XSzIB+`DG*$@qByKAjTTKb3t3R=&h% zP065V^2FnT?FlE-K1bFU^PK)fb&THJqa{5Pb;Ze1Kib{qy!(*@N;99+x+CGg#Hkr) z0}f1OhcMar&7a;erwRdjrn}T$!T8Xdja3<2rndO_t!`F3h^T<+CNZxr-4!%)p6M1b z?On|K3oxtj#uHasd(bNaE?iX)1YnTN_cs)kU;A+{-q*Cy`Z^_)4JtFoNp*6Jzk3?S zmrgaB(kCvmo|s=#2ZQJ_U?ejp=L9G|#OvZBw_dhR+3CE35V`QB{wrG8%KdjX!d%@& zaR$%MMBWaRrMHk@ZH^t<{J`5y>8jL}5L$Kwskv*FOOJAfEXN=}54Me;2l@JmIv`$b zg%_XRisf(WApMwed<-LpdHf@LoT|vlP3@1g8915{n%v$ZvhMh#vJvjOu0NOi*5xPn z+xMqM#BHLh+N;S?%o^ga2NBYMHT&s!KHX8f27so^zwljsFsz;eT(>g|b9a>A8CL`3 z&<7)A;2dTHOxg_#2 zwchF7Qs;;k19kJ~eE5qsgPvP5oRzmvuhB@meg8qXg^sd|^{;2&r8WY3oQhvvP_9$y z>vI939e~Hy1G7Q*!M5jI_zQ79vR!FY)7b$b(jT;)yth$Z(FpQAO*g<>UHt?Q>S&t6 zwfc2mqAvK1Z)E_XmZ!Sp6&Dknn-MZzm4;F-$hvBv9Jg}6!F6!NPl2#MKUK0>yzi$? zOECrZzigyRNzdAP_?CdV5AdO7UZIX>dy_d2x+D7H@24d*i@ayA5>{3e!;~EZ3g1mg z_tOhBN%v2j9_B_C0kJ*ghhDC-$7W8tA0bmM$&8A8d%ZNg=H+j@{5=av%}byA3@q5y zDS=yJuY6G|Q?5YLrG%l z>0Xvq8M?td&FjZ!F7nAvxs$^AD+J%5<;N*4{6XD3_=4|; z*MA=6KvjJ=RQW^3@m2#ur7HQ8mlfaS3(wM96u?AH{W{WCrm}nM8%+5IWy5=z^9)L? z+4Vy)?)jPB{<{aRn7+6cGgP$Ju6Z;q#x$TTF|?8akAm^Cy!dI{2dxkCKXt5+BxIS}DD< zcBQE?+9K}%fT&&mUSSf-JMleF)>Yd0+t0oT7X`qP{8P=Yg?44z-)fT|zFTs@)@dMU zDxLWfHtoIYt3>?suSZJ%A%Lpf7HAb&b7ozefxE}8faVR%!;Lo$54+}lNygb|hu)-nC_?SJeDmP#AdU?d~tj*Qbzc-0^nD)B8;#t7=-#6%R(Z_ztvTcu^B= zqNmg1GO5k^^S%0wt5!7z)ZC9QM*2#xP-F7{7s&EZ%_b|;jr5%-W$ClJhv~-!P*Q54 z-I{6H?+*|;Ef2-RzCIy7RE^t`c0!pMn13z8@z6X|kf<%m01sr%iF^4kZ|kN=c`f;s^Vo_MM9T zp~9ltu^k61XB(R5kN{3}VcEM>np?n5%?OQ$P6m^r&x!0k)b^kj z61qm3o0BcoI-+33aiPHUq0@ncUFKVtc{QW?p-X(KY79!pLk*m(`)O+wS*vwFbn>p* zA+&NjO>Yt(XIpv5rSKUe8ceR!{)V<~QkVSf_Ph(vClWvBu%+ zAc`aXN;}}`9Y_N`SKW2@ zgr-RuG<5Is&Qmu6Or;On06p}|qi$&1y@?@TYNnNQj#JnAc9#8^g;}VsT3COT+B%FL z#7vo9x|fAMD$k{#mx>_wfirJH{KCaH7I=0{l8HA;8oN#J!%E}#qpUz1Dau1|FFCO zI4~AP>B#pG*8CDsYNvl#dgIA-@YSn-0Qx>TI?tYBl&Ty|bL``%&!pu3y(ul(j#ccp<{@|-9%H~?+Z9x{|Ntd4B$yF1>x%L z=zp`Vt~ts1t24<|X%E59@6BQMkw^?i!R$Pu()Xx?zaoITTA2n&rowrO`*lICd*@z+ zz|$L5L%f$A%0+mszk7my#U*(qz|ni7P{F*~!88Aq48o<%4o$S;-nAKigr_RL$1+a2 zXt-t?mDBd-?$dGrycl;*(p3xkGVWNPpA>(rnjngNtrKlBoNUobU=o~cyKyCe6IkSx zw%;Va2Vl9qb^~PWHAik_U#M399j09SBy{ zSRbqdKwtYi&|6mGL&gF##NI`&May424jZu$AF3$gHysU`A-G!WSGC z`j}SkAA33LWpFjTw}{I>rc{s%63A6)k`1=09MP zg&ICs=6h{jf7sMta?+;^pwdPVuFL^0()O~0JBqTf4R?3JuVD zdwP_s-6tN>Jzc-Vc#*Y1-BPB)W z;y35S0(SM~+f!atj6-h%OSYR|c(YJT;zKvP*E{#}|+Mo^8{kbDYY2_qv0Ow=9R02*X#<;~bR zcI?$ac@BOWE#o9mc<`L?<+blV#F z49PdlA+8CCM*dOOpPt%+1l#uRn0)r?0MuU~{@xXI_GNVBVuj~wSC#C~3A53LGj8KX zDf+c7+!X=WFPuZBvNv40{j`=T{-VbzI$EanW;P%B6MFp))u+GX_WUt?B(sQ9+1LTf zfj;+_SaCALb_bmZWO=^-LyoMP<4l>|=3KEs4uAaJCbU_GAx6PvJ`^(dS)7K!`7W z#qV0{vMl-}^Msp#D@Z;;;srKTZo~k)S@g`z%pF!kT(fb3BlW{|jPTbsgk#1{&;+0( zfppXmH%G<1eSn4K4GC!(0v-&3mMdbz1H0#44KmHCXWh-cETCT7s2Z`v3u>I%M zz)x#}lc4+*=yCZ|FClhsu1~>zPnW}I@P?YL*ramY(El&f#DVUFqwA8$9y zZfF|u6WM(Pv-?c)ljWOOxrYp$k1q99JRi&I$`(;w=oPFo(mQ#IkYXv=zX&}<5^luU zS<2B$hMxll_j}E-_epHxJ}}<)tYWu_yIVeprJ&F#V8-Ef;~Tf@;%yM;FJ`PM<>>nsH=C*=gP?SNyv?J2r;eem%Jp|x;Hk3GmiWC?Y7aRz%>DopngW+!{%e6 zHgI@

>HJQN%&y>rsYnU!fVSuIz>8I7|Rf4zN6yjHy#QUi~R&MV9jh{X`MYFhv^GnF0Yn>k%#r3VF2>&7UjKej;&5!Dd=biLyui@SS5vQFwt_X^kQ7n z{bprt%uUb|3&b-ABwQ9bTuK}GKb#onK{xr8cRx2OUU7QAi;4twhd-Fy1K(X=AsmI( z3ZRFjTq9C0krNbt_ShWv;6X#p-q+VZD3z@lUS)o3)uEp}9{=^zj%3=U%f~*%x~@<@ zq~!rcs6gh;-Lqh*)!!6($QMD4}7|`hsKDac#6kR z6Op8b#W=QKw=2apm>u+Jca|07hq=>b3o^F5@c3atD61QTxeE2dcuKw>_ThWmIm*zLwM(MG$)$uEwy^ zFI#dXI#xbwWL>E7onbly(A;_)X09qhIGNCas%xyBhC>Vp#SVk>sqkI)qIy+{f^$rB=LfMkP=Xm%@3KK;{HUYdf! zbp`ta`%Wc?HiNF=0g^QL0+fmqrWWF{0=7t7)f4K0Y8X>}6bxJ{#zLdY0%gy4NRgv< z6vx<;10y;jBdO_I{P4%HBdc-G6J*a5I%A2#kD_^P=x4&nZ}5DC*gt{dDtiQzUL|lX zNYpNY{5SZYorx!4;-}i(peV0zANg)|RyIkLLLAZa;yB5ea4ICSlRY`SJ(81%dxaE< z@Lgg8T};+OO`+y*;Ur7Z&6UKlx2UbV-m}1a&;1Dd0)bEY&!5@MC$9>m0a*0U(}VB{ znPb|*1J4hU5F@V;scM-odBnj_Yo~|cV?>SnxKbZ-N~m=7{Q};MWKUs_hj>njPbY87 zjjoRKvWHb?(F*L1MV+d=I+x1bU`1s%#7M8h&6GNjgs&t(<1j zW?7*Wq&J6(lhN$((ES3q2PC6IRTyCk)&-AdP4fcT3&pV{EjI5c8ypl-KxgXWitggD+^(KEQ1GfFGUKL!7} zx1{4vsDA1qcKd&K^}1M3RC!cYv>RucCjMkgmF+UGiwo6E4-508*+LUT>6D-1_lwVQ z2yJ9(0lRiaIP@@zuG>%HH@%7x^++V1u69I08Ky8rckT?RK~Bk;_Dx2J!g&E8NE#w7J`+ zleGwumFN?=&u_gjU&Jz1EBNesc%N0`XgYN6N5 zCjy4~ybO^|;)anOK9)#)VCCK0LCW;nA3>0!$>E!RC@guDHCq19bw>P4Exd4xv4dyAr7o#8Ls?~iFqVNnuTs2CDlQD7a%IGh{ z-sxCTf%c4=G*{Qko;2kweOZVT8)JvnFvr;(efFEMS)iSZdq^@BAFK@Dr%xI(iX)CR z%bsP;-PCQ-5|qNlm!!8~vQ_q~$-UO6_mYeW)3wAx;;=u-mBfK0@JN~+`jw}2%6Zz( zQ+8GQ5WXN3?Zh&hDI8Bpz3QR@fi12}z>Mf(IhWSYB5C?AvYWb=`ygo}b_1mP(rSg}>Q<9<4y`>WU#Aoo{2WTmm*!9|>!%&v(<&W( z!XZF2tp3I{A@vP5$5@(k%o*R)|lEpPusU+4Tg z&-`iO#*nnY-l6U+(rv4395=&bSX3!npts{CpYh<6f5Qs#Q((iJXV{q5(kvZ&Q4=($ z&C7v{?nS$Ny>l;}rLQov#(1;v7N8#+60;aN@TuSVN7;+<;26-{SpF`UP|eve0X}{U zwkMqZi1!%57pQs)AW09s04xUOY+2<1<1y?>#(fVSO81l!I?e zfIc`KdSpEo4L^gMXX5f1*bZH?OaKYrLy0uLhqm4(SpZ$8i4q@x@5oyGP}#FOYwibN zehG=PVP|w6Z6Sbu`Vo%;>;f+gqB&=>2#fDnsPW(Mi@T+bIMH^(q8nnfy{H#B9DR9{ ze=GAUyVFC^&^g&4tw%Q{!C_6C?3iQZ>rZp*JA&#c$$=egH;pZHMKfftm8oMLRkCK$ zm0Kvdp*^=muII9Hl}j^l&^xD0J!7l*9O5Dj!|ZzWA=sKBz$|o?V0j5xB8``C%F^WS zqH~Hw*BO#X>1|bEtB6Ng^gxlY;z|_Cz60VTp-c=jg%&c+h?ps9@%%nk0TK&YOfm9N6?Sh=(&1`wNW`0?=>?2U>Z4vc#i@xf;WW4vLh_H}an$WfOKX zf=I@OE=$Mpi*E|qq&X+-Ln5S%IXf?Swgt`M;_$_&Ig$gGvy3=*Nyw^J-5oVhiH*Ss ze9#p#5q;4uQo?xz4J`fdB@gc`B0#mVl8nkTP*tbaJ6alpN!#uFP)!AGuey?2i#|E` zmMn0r0e{;FtsRLAk}2s6xKOuvfr{>H#vGzZRkWWa$a)i~jo5d(%sz;v%yb~l?BspW zwLVS>Z=m{6pj;=(&BDAw?4q4#v8wn^LI+%82b}@x0kV}FujdqKH6oiLRm6pro6c*? zY_M0@>P}cuv_H~B1I;OjN+WU#WdM*O4Bbt-3jp`uwSN9u@trx9ob5OB+u9f?IQ(YSX1<5jO?_1hXaX$(y=FnfK1;YkehN~Cou6}{aFOh2g>l|JwvYj@5v|#>ifl{;4yI!@gV1!)Qj{*qaOJx z_bo@IDo=RPBW*Tra3H%iz=&AlWy`{+()`UG364S`QEDBVN!M&5y~d4~(<~fK*|RIg z9K`-rC|L;u;kZPKVGD?nO_gec#auR4tP9dH2-onxzAuvW1kvPs! zny2uyGb@vB6epXYFBXbk(Ya=#yEutGLDYrsh8FCg#mn8=qG(*D^OwUN1=#+ADM(Za z0U7@thONeojl-Pj0uco+C{>kOl4Lzr&XmY*L;S*J%*@Ds+~Ut9?iX<2z%auW6LEOp zroy@|mbRNpxoXUGnJ{)C9<@+PcfxY~1bTTv`C3Yx6UWIADygsDH_g(-xY z7#;`*roO~1*V4gGEtB2!ocDs~r(h_8sjo&);Df0k@;^fENUjO8^b=}#)Ms7NS&q3i z5Y6FBr$fTQDc9-4Or7Z@u;9+W&rR#kJa>M9wN0EXc*IBt2Fg=^A zu{=UDgQLn%7`-70-3rM)QEy@ELk4adVFjne2cE#t5Tet`PnKv#cjl*SmcxJVPnld$ zdCirE2f1~y&tE}leDI{Id>BYV>>wlJR3+C{+ejiZl8O*9no&tQ0Q6E+G7W5K09&BV*`)mn%TpyD#)_7a&Mrvk z(ps6aG!F)K6!sN93i-TtkOF-enxQ2~J~2GpKFNS*rOI?eNH%}RHRJ0P$DO0gh01S@S=M#aV*MA?pN}ZF%V-a7J7$s?xA3}jt5kfQgmLhYu&8a zv7~V~JW(ds6dE|eJGGgMx3SF*p63N6wLLZhbS7~iQ_wq5*J_hF5YYG*AH=UMrb28a zk6b4uJI9RN`y&qp?hL(CA?VH%N8Zxd?xWToNsP%w_WPgIp4*1VKv3$@~f#v+~* zbV^2F_TS_B@~}MfLM4c$GlZi@h@gE`kl@gg&7UCk+B7WpfFjy?Cx5hlFKCNobd-$? zf=B9htGqi9DBM5oHp$jaTUM9Qu@hXhnyN`Y7h*0Rp#c3Oi@2w}mh?Ko}~T1-3Mcf5d8hyVGzS_jKrhU_|bNqU(b(1e5eQ8YIOP0SZ^P zr6>y>6BfQITIFvOF=p(@UH`~ahv{54&33g<34NkgQldVem+x?<(SS+}xmL*Jbhow` z=WL57p9n?!xsKT;nDrz?`fcbzQqkJ|rDhZb!E__Hi9D}UPQYqX%PkSfLoE`?>Etti zS)@?j#0VUVG*CUM^N)9331=)?T z9(nGAOFElyXMm^%y;Fk@2AHVIPDL#MaVuxLd=va@qk9fhy-P>wlk{ilyv@b}?C#?s zIn2{FG}1w6vKf&O+4h^K^#$2ADdNbXR;iEYj@mOacPLeC#}vuBY8!TsGv2xNJMswS zI=@UdXc<&a$u?S}BFenDm&ed99{mmn#j zkamn>7>(G$--UYe90_pvI9Jik6znZ6tR%?3gDoDUr0VIaY~UtW)*ZxSLDJxv8sQ8y zhLaiEcbv@PtO3C{qW;U@+b~P02*~q*O(dQn=*9OnR~K;m-nHilyWgsX-dC$>AC5q- zOJ%fxSpOJQ)gA>+>Qqp8*4-pq=AduC;RKPt#laEB=lr>#Fn`S+PSH4HYN+_7QFL*@ z`lpWBlgp|P5MLjGDyh806`oTQVpe4j;k6#Fea7LIxPea8M`h((S5}ATF!PyNIGheG z3JGKSq(om3q2Z`Y5*ZBW3`N7r zGgI1E2z#H@rQzQCSfK81=$T7xvF6q|P;x`8;6z7?fz}>bcmIzxi03g$4d1|C5K?9ps^PC5SR2Tm3zAnw#T5Jb`_j zHP0)Uu9Sq4BHri;awgO;^J;vgthJff>y^MH;1-OmM%Ozru-0>Jo(necSBS-1h_*zW z8I{>y(qB727;HL51p*+JyZs?FS@xXYVd|7A*l&K=6ZXbydjPDStE(b$ zsap)35z`E=nq`6@^Tc2*gH}A?7OGz=jnfoFlt^ViKcb;_Ib8WWJ)n?{8PKVMdvs7P zIqwy(8q^TGtRax@O&H@@+#)!gKd z5kCilew!4|g3f!w`^zV?1bAzv34`9h%Hayb>V7)!dhkJ{)~j&pa%SsF*af)ZHl1dku$V!g@tW_#?;uSg!$+%X}q?Gg`!*P7Zr0irnMlM9T(J0{G!QI|9v3Y9 zbt;{*-1plrpSsv3rN0x7-xiLZfO(SYjiVwfOs8cl1CJ=0_C}N(sH~ihRymwPg!SXJ zXsu%@8WZBHBeG`|CX1#`lvFe9lO}fH13Dw>;@*F5i$S&C;{^eH!KKcWrHwWyf;kb| zG4^g9#-Dd_xuFdQ#ZtyKVNo#~-h3k}kC8GV?ulx3bGxMKi(^{$lXkbYzZR#Bb(AT< zJ6|Rw8|I5=PspCo_H={{ai%zpL1RuUzrFp-*B;U^@Bx}*{#!}*f*^kopwk|Rbrm?# zc81!j4}A_%&{wk`hCCh8UCq(+_Y>T`e!Nzi$5k5Yny3tDMr{7JQs;%Q%ZQB`9H%#@ zP^l@c3$~sM{K2h#0pK(;O5H+i4kHw$(jyXSx%-k-E|?l_#L(MY7?MrnYN#bIn|*!`{PqT4Pr_|G zT~KQ+KSpH8P``~(Kx`_9QCS*T@%2U9KH}4GyoZ=A{8-FTLHn=wh!YMt-T1bELiw3% zP}oFNo`hUXxP!Uje?Qb~{(6L{f~{!Ps}N`uz#Z-NtYr?jzZRJ@4l8#0_kS@>9;UW2 zI2J4ut`_SS`D8bPqtPsQ!FiKW7b<$f5&Lt}e;2N4`}TW7HH2k>6@<1D%$VL^7ya!%3_f@IcVc}3;R zJl^~4O9;)0%lA)IO)J)+4V;ZzxVWw(cEr1w^mCF@Ztwi==jc{p-Wu5t-$d@K?9Xn4 zJ8fM!D%c|3k6a4N2)59U9&5CHKRX>KJ~CWoyS(>SzTpcy#~vNQ5{lr@j@U1_b(5Fd znvY<{+;bTj&1{xg^ATcTD%}-h_CWR9S9N}4m*4l18&dH+DiYh@DtblG;R(7Nj%+IhOi+Mt~DFPeEL47!Sn{|HW3O z9~l@3!`+@eS?6Ul(?DBi?MuukujFXdhQYTYC#0{1>8OnFcJKmAN?#?65jp2Y!H7;- z(tiEL5r)Q}>f5x}Xy4p}r}C&vQ$jHXOl$HRF83NIc*uxEDiD6#kiEZEI9$OKAh#W$ z7UF4yE5f=ztLLqy6+9G|u^%aI>&GA&%HkSF)fw2QTi&YM;m9$o?yP_7P@oI`LIELO z&m9QyY^j?)Df7b*FJ&ttmRWW$*ESxicTEetq*+9yWXxXPtHh$@$1}%Mn32{$1;xF+ z`jYIU`aeohbArM`OAqP2WvO=MD#zY`CS2bUaX7rh|KrAkC+WV}_koCkLGHkBh0de34;K1m$5BUzuf|{1r*we+XBhmTPw-y#hP1b2>d{}q?C|4r@*>P4_{~>nm zE)46R9jqrffBq9&^K}jD(wba7iY3q@Atf;ZGZ*bxlsgMLHH2KUV0DlBjKoAG5UJSX zUlSCX&T;to&l-DwOUr*a31~OrCN>?={`$G!AYyo?-*NuBZSuyEAi$9WW1jw)MFOuH8xtCgGCGap~<{zqD$ zzY7)jl?$+p&)OYqN(X#lS)FQ>&9rZuo1+`QL8+iU8pp;l<`nUEL>ZUZ z9-1g?o=)9qWk+Ur2%`zRKerH;htgRsd&VSNts32lC#=8i+A$6GV6KPrTB+OYYC>3x z6p>UNVH-57oj0V_YKCpYKq=z7Y8jPX)E=@v5F5V-yXOI$!tSZHhs?tygIp8^#fhy< zvV2gKuW_-Ff<|-Z>uusgv+#dMB$P&N=;Tv)0wNke9W1*sMcfLVrM%RWD_PezZ34U9bgPh*s|eB})Gm?Z$_s1K-}| zdDBZV$&evFGG!yw1x1R_rYyyt+!(TkkLd!y2P1}rt?8>C7N}Ihd^ld%iS#j5ff*^l z?SJjU+E4Iq(!@J6%4_Ss6RbRBFH1GGXB(wa&0a0kbNTF(+1>2zLj$p^RS1;}nG5M6 z8)3o__n!~S{$;=_yN3p4reQsx{+6-E9$grzu5;C3^iamk4RzERdQ0T%7>#lg^IE#n z*|O>K(4+ps%mtrwjsJ1xkkenjQvz};Y$qJwEBn1fIV4M{$HK$(9Sb5GqZiF5f`1Gp z&OT5g=8o1R!CS@z#^e9G{hjCKUdXtq9dJUxma6y~G21^?`mMBcEVyGAOUq?5O!`)o zyaiktXN3g9#;yrNMfGoc`Pk(eRCxtceNI-@8QTN9qJqm}wbsCIYEbJ{LOu1`SuD}n z=#D&g>_S0In4#R|BW6^Qo)@Xe967-k$=Vk=wHjjrGu-;`?EMjahdik?0lk*(D7M2L znQlIbEJJi8hs0fNmegeiwPT9995scg5yT!v-&~($X*|i_N`D|w(mRYwitXvo{z)AVXA2tU20G7eDR!b7~ zx;!VmO9>BC&{mc9q3LA5%YU4w`r~9nfyzTYe;p*DzJRyR{`AZQ;io! zwv`iFi1L&OnMig(`cH(>KtR3HTd}Wo`5k(g5!VcRNchq7`V`0IFO7elgy8gNfwcJR zF=}{JE*z5)kXKpFAs|s;y^(ml0=bRm-y=g|N~R-h=&rWTUb2Og8^0~EcNeHSWtt(j zlS=(z&k$eKbB4}Xp3Ne%#Cuguu4_0BNcL3p1V)A%y&{sUI~4e7CW~?2i$=U^$k-&mcSH8#Opi4L;^Wr> zWOX)Qw%fefMwp(&9-n(Im7NR?1YZA`>H;c{A&};P6q>3f$!N&UoUM)aXYKEqb7{*N z^37rPk45ME-xZjg$sw%2&3hJ}I*nYKw`6;0)bdM+V9fSg@O|GN{Z;5KK2s9!5~!dC z+m>Fxj4?=V+$byoo`2-1^~pWOzbb}4WgeM2PQBKIuIHj3^ENN)Dw%8W3=*}?)R<-r z4hls!NW{BMR3;-Rd`w*bF+JZ=m8Id4 z5c*1uN-VBs2zECAV`OFtL3LA+@(Z(*WcC1l>8UK}?)tWmT8GjCGg#4y8sUEZ^WlcTDRp6CsNku14ZC+`ZHeh^)ijt7t4Pu?JCx9r9s$2Bo6ur>w}ZfksXQQi zD*JOgJ(iv5L#p`NFY#FEv+_sfP2_1KX<2<#$Pl__yIZDq6lzO!YwSgQv8 z*--LlinLIz)n{5eW!oQwTLQl^YgTRUl6w{O0pVL>AXQPk?CQBbo6i)Dh=g)R%85mX ze}eQKms7rY0wHdYm}IIM;>AhWe*da^aedFy1mpL1j;61Z^V41J3fYDQ78(!siA!I2 zMGC!ZvQ+oGd%ezh$?f|er5F|?3`QZ~Al)FgF=oEqoa2kR9g?-mbH;V|q4rMGe){VH z0FNjMJ@}m~pr!)NHbfv^``>4$P93zB2> zz(748+_j;6$%&wU);M-6-*1bE6g-h&D5MFj!KXJa_aXI>>ADN_=gPZkRS&1Gf8skz zctPq6QQw9M3Gk~- z<@=IiZ9Poxyou4+;?YZq3gGziU}gTygmKl#Ipz)5?{;)YS-?)={Ec zWA`uUV>A2EIa9p~18#zITP@OfN2#`GubwH^;#)E|t{i=G_ASQ(6?CcPA8CF0dI%E= zLX~Px3{PCjOOS&2fZk@V&O1##O(=QmXOw9$+gbxzQ=SDX2naxezCE z;xOeQw>Cs}7J1(w7#2MgW?{HO-axlI1)ua?B-CI560VOALdoI-Y|UUu%{wsbc!t={ zuhK4V)!-8UbM zz(rZkJ;=#q_&-hw@vPoTN^c^)GWy3gt?Ef@u;}QL`=;!W1`u>Ct!a^@yK&Auv#6Z6 zmJaxwYy>&p6hXWf;UTOa+G0aa7^yA#O$#aB{lHH+#nf+!6{u!TttKB#Z*ZzPPkS09!*9LB>%5n_>q&q$5&q=8@_U?IE7+r zgoHW*szPx1=4)kF`1XZ@}Ca^&bsO(aMlYZ5IrOl zL*YEXsTl?<|3PrpR2P-qpw(?!sx>og%R)vD+pqu6C@jx%}EH1%3vDgdHjuwp>^G`^kH~ z!Gm{YAOfGj_4y2ONSE4h4T0zxX_hyGM#m}V7;h`hI=PKbcu|<2*m|We{(Tkx6SuVp)_3hr-E%kqR*DR`yR@bh&+QmU6K0w+ z9n}x??F}_l91&=?Mv=8oU`o`oYoe0B{QD#bk2z@4wEP&wwmn5wNmzEeyVzieIA5uH z2bsjuxF_f@hq4eek+inTH89}_sN`NvaRDNGs{aPC@E7zIIbj& zmU=RUXvmk1XjG)Y90kc_u^rvDw#_(dEzj4q-?zp@n9Xz@A*giwB5!XZZ1bEDrSJ9I zdrwn4y1yp_BwfBs!2UOJ&Ao7*9pcmh<87ULXI9DGeF$?Ic>c61%9?op57#|>%@ZR# zLp-i(&qX102tUd0-XJRxTE^_i2P4VV5?WSi%h+_XuxLC*@p}tg=b$meuwLKod|+0` zs@M;jMCqcSby9?VPu!?FORWOqZuS6cmI(6R+U2B|Tz5=r1O|3rJ0BZY=P8!@lWQJ_ zJ~iFzr8uFQQE;Wvpws%we7+ym2ApAz=Jdxhy#K6F`kC`B!FU~o+<>p4eGT-HE5;IB zpJUz6D}|IOKg!qe5q}v|@=PG0=-lM-J7cHRn%y^39m5$2DawFrH3{Ns z9U}kkihiy9kL+D)uP7=bX@iK~D-_8KFL4c$=wDQ2WbLLb5bh1hYD?<8KvOnF>NC4C zJryM9A|s*_C4;1i$0sIt2z;1b53$d&e|{E>h{yWytiNCw;_IH0Q3Rn0k?AMAh!=>DStVF97d~GJBjuEu0LZ5LNTxL z1H5|KU+!lX9&os}G%uDsYx`Zr<`+;o0=gh`H_4Ilv1QtN9JipZKW9BxUhma9cbuy7 zDvz1p-99C5VUm?Dw8<_{J@Le(7Biw(_N>z@n2K8XAEo%8PP~KP};?L_7uikqHgts z#!A1c8Y*j0s_r$5;V6qM7ru)Iw*pU={E*%Fan(@V+F9)sz3g-z0k322Ypz*WI(i|x zq-5Xyx06Ps_Jyq~$*M={eA`EQvi{k@L6p25=Ra#07CL<9w8*uH8mhM;Ftk&4-xu+0 zz+oy19#r%eG|_xnFu6hicdc?e>C|_*)l*OX)bD<45s`oT?)QDj3a;R;)O2cJ^KA5q zi%MJj!;w=kV~^-MUvn$T8H}4h5&g?Ie_G-BTX~jcqVbhqpFl^GduUA?@C|xkg6+e^ z4Pg??{3nh5BPA0Nfjv1v38SMKdqU3y|0^7=Cz!_PlyPM2`@+M*qWsl&M;W><&#uR( zPnE$v-1-A9TJ^J^9ZyktHZ!bbueM-_NVim%E@QchyoAwOQIXl*-|grxAVCfM4WJHv zY(679A}X;eYT?>zP{-)c%}weTy3tRX; zVaSg6v)VJb$}9o4nvy;Zm(tW7Q-&89cepW%LYV|ZNax{$8!1*KK^;hFIW#HuU8*@3 zDjDq2)mF6}^JNHK$8|EDi<{UNIk27IWh-aP^XKD3_;TOWBC`bR{_?uMAvBR}nLJ4j zsB?lA`Z|MXw$yRL=o#c#>;k;$0XJtcaOZcv?JNNVUaO>ZGcI~-bw`Q3muO8J@#l(} zP0Ef1HDb{SactrFP(x3&R8Ph#bK7BA$<3nwf9$m1zWH1ae3n7U^6_E-e3IdYg1X_kDV+2A}K)?V25keRe3`2mB1QL>v z`MYAD=PuBG&-WhRalG&G{z!kc{o@s{Yp=cbxz6)kYZvSrd@8MbujFFp)n7`H)Go4) z^wi-Viklq!XF`|5Mc4T8+VGfjP@wE`iFHcL)j`rON+OKGf`B?_`9%ycdv$ctxe#_m zdQJv2f5=TrjN}15-p+DmBdpbMdFj^4d1^Aw#7c`F% z2f+IBcmS-w5Rv)Vw!_E-1eZ&6F?$Q@ZEMkg{wk5*R-^{U9h2nvRs}6NSmO(0lxNU_ zP+BpEK|-mktEf_aUJ|%=LaC7gTmg6;d@m!5^ieLRe~kJw*8V2;oP+ym22(v~$i=qA zMO1$n33Xc#{a?r!00u^G0YC_#FJ3;Fu75irXJz=Os9TrH$6dw9&~(;!I>Dq-jSO1< zs^cLJyYl{XsvOM%es~oF&`nca@RwxE$kP)PYLR3=Zs(eT(+nW3P)jtde)1951)}0F zS*HV#k3&q7B=_|V(YAmC#-wMA2{rqW7+%)A^Zvs~>2G~BMQ^|iwH!6uQeJ1zKPWK@ zaVGy%)k^CBL7OGSkVmVk>lCJH-1}%~HV4YH3=4Sy%0uMy0u}G~I@PmbcU`)cNsksf zc(y-a*SLtz#Sj156-_K80`%;BME)*@Pg8!mJJ>9#@nBQ2831MXvoTAWHT2sO><^$f zfrKqr4t~5IgE`z>R`hJpWZ6NMAhTU3$~}ixX@*MrZ$!J~X!@7OaL5md;Fja8^S)O7 zI&lmGG zGJA?yJ6q|GWVptsuRLaTXR!719KvZAhL?B`IBd<4$jI?bgG|ZKHR?MC^qOC?bHp(ehiUQ-rou@*S3XtV2EL+w1N-B z2yWlRxepv{OIXT?+dTQs3dlAr6e4WooD5S=qd0aly}p4fGFEwV44#zP-y=ASeAQF? zINeKP4Q2(X@3vKTiK|0kb;hNzYnFXE zXMVM~mHAq3e01ZTvrSET0!t<7vd9@x^F(T&)oVAHKD!G4P3^^YR>JDL208%pw`T9U zKD=?~Y3=Oxr}~yYnFDI}GjLMSRYtSZJ~k>D%?Lt591C>t`{4)tB*k2M*!a2iG`iC2Xsg@ZPjq% z1avc&j8tTog+B8cU(?ZhS+tz7b>P+N3JvetpuSmP4f%mh@jF?}Y&eoo`u8C-MAd03 zEQ$S6=;tgKJ<*yp$b0}WC|90Nyr($qd3_}_e@!hoN|*c;MqC;FE4f*8h(Ll{!P$?b zRzBMqsZLzPF#E3WY;t0=g%j6$YTn-S1egdG$LXP@>A|25$hYXEE+Lsx|2m+x41qmc zr3f`$+~1`S>|-G|ZgljVj0r&0A2R##Hg{dnUpoJbl~Ua@L0IZDfOsE7{%4J<%moNv}U3D%S^8zLKT!Sg5 z73d}5N9_#IQ)z9Q@Dv;rI>kiYrWS5@HO()CS$zBLx` zD`V^D#*z)!*1IB}$kx;#LLy0F?(@kNrOfOz!l-Q&H$4-4C+M+<2vhbY*9MNe#9uzB zksm9`AGnrFc(u?N;%Hx9qX8wY-kmE_&a zx{_o?%@Mn}l7F;aJkzy^FG;tVJ+M*#ll7k|YhL1`4g5==ICFM~e6o%yrluH7+0#z-TaW6S63Vm--v7N@ z0rl-K$z?n0R|41tXeI{ggEhrZ_Jvu7bnECmJlM5$7&tOHJkv=lz4U@Y$;PqHcFDnh zSFr^)pk!9phTy``5WN3sm+ON8}=G9OWi3% z9UB|_q4729UJQIUL%L5QgR*&JVhEw?VApw^%!V%gytfWafO3pw%z>Fm5(mTq2(9DX zy_MOa4*-^q-_o>P!=^8;?qr-Z<35aAlO-h{ng>nc#X+^3eGp3N`AEQ&LFTqRVk_ab zQL0gOqz(s=!>ytpR&@ebA?)eV5j~bcejbtjRM-FQ{0D^9d{qTV*MObKxg=_;MK-K7 z1YI?QH}C6u!LF;rS-b{asG8xQ1}CHJSQ+1vShWmc&{6BH1nka#bH4-|4+ne6K-u+i@R%Rt2F-e)?qN%+EbITnF~_j47yAJ`Ox>9(u%GV}djlvy z+{W$1ovUuDEr|M`>~g`v%f5g&VzF6HBPOy`?ZVU<#4hGr{m@VHd~(Rf%bg|UKAYmv z*gnj4JvR~v<>ppbeC_X=>eJ~j8Y#dPq&DbxsH}1-tDMRzr?Seata2)=oXRSvvdXEf zaw@Bw$||R_%Bie!Dyy8zDyOo_sjPA;tK1hJP-T@;q#Ih9pTWtCG|M~ZN3_Z*+7{T zRhO~;AHR%sNI{|+RDAdt9g;QlVC`$#q~Jj6)3@NfUf{BY8v*iF8lYD{)twAnG4p(S zZ{TOxv$fSsx0=9j{{%Y*-T8>6=I#tIu!lJ?+wGeE_@niY0XVjqc{LF)^vnuxe7H8t zqBi!Aoyz4MBD%qDU*btQ*X27D>oc!6$QY1UPD=(M7gCrJted1WJtvT4P5vF%)gA-u z*3w1-`f_Sb#5DS@XHcHSOn=vMC;s0TmH^Mwy&9Bl*sSm!#f%0di<0r285ph}(c$;V z_Ib6&o1RYy=K+v2X87l0VB)JIT(Kjy;95oWPeMbvhk5&2*_VL(?|&r@os&-0Fi=>o zg+P)yl3Jk0Ual87s5!gU+>LLT<3=y_^G=VJ;oXlx1RE{f$@*iUT=KsDMmY~Tc7}OT z5zK*(ybo-7Z5ly!E7f3IRHn2VjQxGBEbudXHfFzeOz=MsLhf5A9OFI`hr@`Ql;VJ=!0Uu!0U3B#)wp1{ zFOg7@T}|NVX0q@Sm}Od6xNOTc349u)*Rk*!qoTmKdi&(ULxhue6M_4eq~WPcJQGhR znnolMkH@ksO3bQY3F>veBLOm!jf2;9xGh$m9x_Rh7Hk&7iW4;dzLjLjk~e9Wm{Lw7 zviPaK2vc{7L^mncaS!fv*i+L?ga3&wu7TfSeM3+mkfY}$31epR(e09gAo}*dZ*2!& zDy6}TfwG$;bKNx_;@^pb1cxl5Pgj|Lgx`}ey$&R#3;AuuF)0pi;w{<*CbQXnr10EN zsZ!J&9r@quto-lg{nI;_iwAjx09h56e0NSl!-NuQ-B+<4kC^-IbJQxVFVgn#zRi3@ zP7m38f7q3ac9uqZyPpw$jO1fdM=~A$z5rJFIH#dv9>HKFY`MZ>=kmVon9U`UWGC;8 zc;WRx1D@#{!LWJdOq;KD4$2w$EFv&^-d!!gpWgFrSgu0$Bg$h2+^D~_+&B;9%t?~^ z<(wKWJy2UP-YCyqLt)P@?axB3RXCeBpOO9c_hnGPAAj=}_^M$6sQz&*+^4ony{Us6 z?AjB(_E5!buMq^^u_~XL9Q+|z5gP8J?_eUY?8LGf_>Yg2ioB%kD8=15#u|CL7BabQ{S`p5mI-BhUcQFTu8W`B6vBfSG<`k z?M@Z#fVW-lImFn865M8gQzO`tid+50=|%hoNCgkw24%fZ!cBQ0_n?aJV}AsG;XnWE z`O07rMYB~%mdbyXHntC+5qzCzxruDDB;hkCi<3P4?Zi~e6(AGPc`aXIOH<|&4D;SI z5`qjm5T_KoUH>h<)aLjPvJ_i^z`%!88gnXHXQD4mB%FOU(N|wfddQZ0 zJRBYRM^qpMKvcMkD;`&CYYLBg)lVf-HeW`Ma;WikcWFU)eS%gKuk2s6C;#*f7nWs&86X~5Vl2sJU znQCypDHPaf^yj&G8_zlFdfq^b7<0N~KBK?DTjIwo=;Y&~?^1C6q_rGH;H z3j95FZ=(sKIcVSH*8Tg$t4mVaCQAt?hl<8zPx#+M?}-$!gs#%uZD#8O&E8)p>&DroW*_UmoP$j@p^XC zxQ@WgeESQSx4?+JM##GmvvxM=iiZ{6NX{1dGh3x59sw@WnLN}wl+N7zG_xe-cmJSd zsdw_3ip|`uhVt(-MNis~^hjSZP;DvwPHER5W@2VY|U4j#h`Yr;G;hYbrv$2|>nQimkJo?2NX1uIF)rb~!WBMPeZj-dLIjG8l*Vb% zJmnKe5*W1KG>OK8tVyk!1EKisM3@LR7S>W{AG0R5)*$LZWj@FAMu`y>@ncMy&VFmx zeh=6-R7ND3Jhy`bmoY4+7M@h=IA{gyv%x6#4025!rUaQAQ#*%zd`9P4&f}a8nsw7? z*D~6uEYiC@Ts@9p&_u52Mu{IU-b|fWCBSCFOVNZ29nwHX9$!s&Zl;f}SsSD}K z&=yJjR`smnx(+0Z5O-oh)r5-o)@$eQCEcs3S_8m#!gqivlK4@6iH@K+4TyNdG~CB^kVqu-&qQg8cWTY(_K{Wx&VSlpJ996}N+Qk-d|RBn zt@0&1FwOl}xbvm-b9~oHXG9Y7%3xo=x2#J?v@oO^0Av7u$Eh3SHsSrhhFxHfQW0I% zSd-Z{t)uiRZm8Y|e6xg9+Tu#x#kJrvIu~LKC%Q7L%<-e~jBZqbYm3dQEuRW_6HT5Yvh)zPvlV-N=Cv{tUe$8Rf)`QWx7FyXlyhI6J!i?0 z8F^k5ej5OycyKgD*!N*uYeEmXSmhVYWPd`X67@&S%!&16Y1c6scTsj)tIST<<-V4B zT#i3hWV9^MOwl7B^;}oN!bwQ*q&SWl6^@2iQ#FNhu^cV$8_ks&K(5SRizNwh7mC-0 zp@F3}7{ky@@8A^Dtw8dZIJbrSl<3Xav{rxM#6Q+AP1=;~Wk}DF9)_n24=B76@@HXk zBP2Y2==q{}+u`c=m2v}?NrQKyUI{_SHL*C2Y}4P=P6(IwW>;Gz)tF2~dK*s$*z`F2 z5}GAZFDunYeH*~UMw`cf-&h9x9f!V4_yeQ-(kJANNX1?0OnE&bZ+S8Nszc-XKYjfo z4|!+&0V^#b2)9kP_zsUw0_RBq&o;287eyu62kWshELrlv_hvSkj_vS6g1559o-|Rt zbivCz?cY^(lT=j12t%7(V2_KS8j<+Ny}YKIq#xSYP`a&xXKz6S^9K%jSAOn^o)uaw zCzL=_tBg=>zL;WYB(=bT>N|JvNVv_88iltco&46YuoeQpZw-gme8y-hgxACiR=sZb zv%rI5f%5A_*6u(JY`+}ZfdS(ARpqsBs=7S*=zSQzni+_Xddn{St4t!7>&72dP`207Ab6+0tzoe7~QB+ zS5S^3>Hu);hZ)ZQ0DIOcH+3)e{-@1~E^Us7^l9|)Ewetg0BsQ*!mo&q)hGphCSU2N zX`(Qs+D1acdF5%pV*X2gL6c!>3Qzgul`{8J;5OfhXX;Zuj`67xC`9tjFm7Gl>+bf> zfJ2xO`t0w%ZW5c4ba9$O13It(;a>dO!GA9SE*BOlPRc#kp%juXR;KX6TYPiNb<^j~ zXQLnR4U-GQL9_9tYo15cI#YKgp;DOJrhMZ|7D9nD(KyOx#z2L zlL=57CRh{ZopDpR9^XqS+ti=yaN3S%K?k?2uqncP`_KHwnhMjAMPrj=`#yi~i7sxb zHvi>CWq5Kewrad53X$fT#iE&&5bGHYG%ImMF3$IpvlS|tmdl2&Q`EjiMSwSS%>OH0 z++lBe8;3>}ov8KVIho~m3qCP$>OnbrPe9|s@b_jVJd&4uYbXN~GNj>!I)EmKcN+L( zf9UX>@E#@Ab%M^2(Iaa!m(Klk0!x1pLoE{(4(?f-i6Ck)uoc`5e_uZh{AS|N6A1@E z_uw}MNrc`w`&K0w9ua?a*`n5jhgj>oDHmjO)R69#;E*+RqGv4z^3|ughZd~m)f!Ap ze$v0hmuv|^e-{tj2n0q|Th9T95f0_fR14M3ZnB zq&grffV$^5;aR%=1=s`G4)|9cWzs>fFek2^>&N7fv&{$FTW*ZU3H_+DWKoXy<$6)j z+copQp4u?5o|qAG99dcA7GEnd@wg}VO7w>1gz8C)bsk?Ujn13f>d=MaTic+GXVdqL zZ5ID)d4TT)lH_P_%|&2QPaG+-=pa@_tIrzhTuLGCCJ+ScF{7VBXSy92XLO=&5x*kb z+)wP-rO?IH*A{vQT6mD8j#AHU2J{)~M7Oj+M_x)dS%~+abn>hX6oqAJWG>+*v$aGG zZ+qwz&srnU5;c`I+KjRy+^Dw%mimq`2Gu_V9TA>kl0}`_gr2wJ&E^3v66ttiR*db9 zll$ClI@e|5TQYG|M##Hue@5&wjXAcvwL9m>;QiUPbzzee&GMd&(0%j2(ZwxP0RHbo zS{U~n7H&OaH~7`YJ#br^wKKF|Glpeda{ry|dqjO*<9Va#+r+w&>d#2uHuI|vJ9iNC zs~Tt^T5xWbVhb}k39LU0p@%I8&wuutv<}mdGz@HKQOp4c#|DGppHZJEE!kj!6iW%0 zFb{dFRf?;vrcn^-`9|n)bzvj`nZ%Ym>P%3qIyY|ymK}dHs6Z#L`NqUm{O>hYk9ux1 zt=s&Pd-jn}_!hn`7g)M0CfXKeb|~5tMT)0^6!80m)l$ot4+g^LmqSbQZW7;8s%_A3 zoV<;vtH%U{wYt^WKJX}TU!7Tt)wR+Hm18x}j)e@oH22)%sUwcF8~ zv{@j1?n3C!+#^se{{4yP{_Orm=c!Gj!8LBLI;8Myq#=NT;m151sIGefmW z%_x~oC7)A-*VMauW_^eq6%92S4dxN&#`A;hV6LO22)1~m!59LokY4{6=mL^Hky^H5 z-wM0Bv0W+JG|2AYCsA$y%94!X5&U_&)4})DVRUejC59E(yMqpusJ15&{*2@q&tB|1^Ln zf$gL%Hi1L2wGLT|*GjG@5B~;En%5XYlsn4ps}~*+ zzt#d-cYn7x*kLsPW$Ncq* z@r6jo0sr+8rIsbzA6Gb5-S~ubkey1dMU}RJTHfc< zBQ6U30(Ye z~>IAsak1zbEz>mzu(ysOZQRm55Bv!{a>17K@u_e7txwQ3CH*c+VLX46Li2}c{DIr#Dc1ZMa7x_Rw z?YG+L7w!UZJeZ&`E_xi5OuC0`BQ%6TG<3Tc9qIW&w|)dRASwf6HfABHYr=k37w${H zKAAV^u*AzvXcR8of=D4AkeN2wwlKBhFzP)$j|P(G0$%TNnq7dpf%;>nO!=ih5PCV# zyI^z-P9rKW8q!gKJKUWdd?bl@H{7*{FZ6W;QDC*+%JU@3S1m+aLXu=97T3$l@TfGM zCq|6Y<~T@;1CG#Z`!njn!hi@29MhV~y3d!k@eZ`!aUeCAB$2$sSua9q%J04~2+Q^7 zz^tW_bOrM0!d1`AU*GmC%|ZEfQnbfX;VU}KL|txN>f`>dO8|(!Fe$H#^sW@LvE2vi z8u{s~*_^k+sJ)Ax!FaMF7QouuWuDIZg1!QvpaFP}t9qr)M&>Sq6$D)6K*@~FTznda z4`$2-Z(vW(UqH8QgJta1SO_}k}>6>-me@bLsNz*&WpNA zHhW*CiPZL@1WxDhva04Xu~WclzlcOqqDj^eln4b~6nx7pplru~x-wY(E9V#+8@6`F zl}fg*>a!6ao=Eq8i0*)005?S+2XhsllNZ%SZ<|(+$C4CiKJ5e4h0Z~ts%2bXGn}@~ z>pLqpcoeCZ`TB)hmL&Q@Dwm!}v2KAI&yd1>t`EA9x={{yq2i&1p>w6GU4gtqSR*Ag ztPaE`q~O>V`T$ZM)P9U;EnCu`TGRX98a@~-H=4nuj3_RByWpz~{qz@*Jm08T55SJ> z%YrR<6K;CQ+1tc*Gw8?Kl2|Lhnl82A0J)>oo5`GqsuL z4j!wYvRv-DJ-1Lwv930m>Pxq$|GdQD+2jfP?sm8pszS$vUK%F)EUh?McXj?R0R>o; z0s)kmYIB=swCz%r99+-u-k2rR*M)v{7Vow{Ei+L&bRZ#_WTIL7!IsWTy1Ws?dxqF6 zJR|GcJ@YT|WiUiO=MRAD?fBVBN_KOi6r^((M1kK5K4=gRB&@Ece3%9gxRqQI5T0@E zA5k$!0ipt^du~no9v;{qvZl%olyVyxV_sq1&- zx~7B!|6U$wOX{U%x^Qh^QJ;KB;;)DoRkmO8^;=E~&l(ew(eyI=T9cwahJEn0BjH&? z+Tnpe#E)TyBOk=xU&S(FW)W^eT}JoYQ|<8Cil}<%N$FP$@&4|3`PeWj+KTHb*ACC6 z@blcAzJbZdmKKktg35G7q%rbE-1}(x4_qocOh=k5bqJQ(f<1X;+f%59(cmDAfow7~{p01h@lNnrs=IHo9GE=0RBbUO0jsjJ?H_cKc}TWJN7sPubz~GV`L)>Qi;NEI%u_({{Z2 z1I+S4PuOV)SFQEoHha9Rn>6Qc62J1*9)!A2 z^=`_k?%g?HAb?{iMbtD@>ABa0lDX)Mv1Q3}mO9F72D1pgIGxGPzsZbiK!XL7RP-=E zv{4p|kME5QKp#C$1AGL|LlEN{lw9C6U*qcYf88E3lqLkiCPRSERqii8(9=m05Xt$O_0P8 z4TRa7ie9|VgbQ7nb?6Rjuf0jM4>d}qkpm_gTgQ=_3C);AjGk_iGOK(hlYw+>6w_`X zT%DIJ^MWT?gnOtv5ShPN4V&ilTAxcv=nzn>T&(k<)KtG$jz=orM?02Rj`!T@BNZ6H(u9!8*CrI48$d{-TWRWx=-#iM-TRsg$R02{ zxmE~Jql4QY^8EtvkP*U0!n3LBt!9)508w;Y0Wyc*slu6RKzR@+K5;R5p;W=N#qjQ^ zWmyc_ zImeo~@?>$m?RH%|0%*D7PE2%IPAc4i*ytRfD~dl`*GRSGR4&XtdNYuRwNQq+XnUQS~gyoHEiP1}H> zLs==B5Ql#L`UwLCYUSTLOETE(5U{%jmBf^ic(taAPm$ZhDL1^xoiw1ntVV*U8B$9) zq7vB_2WYDB&pI}Zqi?3T5=KBfpvm9g<#!49g)&BCKrV7+{b&5f0*c3D&C}- zchYd|l4>JV{2{7W6nrCgl;-I=NQ+G&3aGM*?B*&Q^6pz1Xb!DDzVI2`gz}*j0Bb*k zZf~jgl|%u;$CBdxFZXM`ZaDv4H4A=+s)YjOI>LdcrQqII zp7sk#q%UYvPYM$is*%d~yzr9A=qAmf`E*0o5)V<+vLFk2CKle;wIU0Dp= zkx3^xI3au?!re6YV5tm{bIRmiBAByO#(`8psf8NL%DKC512H6R*W2C$5V@!upp2MS=PAO+yyWBr93rG z>$D_XyMN9fo6|zA0r6e41N~HZ09oo<6z*Y2b(=k_XulC0 zE56KXCEQeO(H?n;-1g7>R#ip_nI+@RsX>Y70^=%;nbluE>w9m;t)o8n>f$?Eov%by z;mkEKnt+T0$eVt@(MUuwl+>a*_7}A@4pxJEb=~Ba!~lY5B#o^_sXFszu|8c z^u>|Jurb32yai_9hlHLF?h9%|pa5eN0CX=~g4!ZK%a~DeaM^d5noH`Y(XB$qOV^_W zBYS~NFeCE2>h9r`;IQ`SaAaM%#<)WfD%<$q;%m7yzO@wq)z31iR$iK-JA{D!r6zDl zTHE-3Y=smq?u}xdp#~g@RhYI%TwEL#--DGRA5ixk8%$1uKQBHbs0UOS5;rysuh+ua z?QBt*v`NRtMCUPMFg;FaF%}lFRGm?DNx&%02D&lkO4y&COzOdO^cQ5;eo zJzW)gQ~g8F6?(zkVMRA>;NmSXhSEzj=bWtyKeWB;;JuEBymtSHUEp{a=k+7?6zq_={GJNd2f-0T{OR_6Ur zmgbVX%o~z8%bKsn4R1_ysOwO|gtBOVd3sTqk^E8zI0-1h=70YsPQR3uJ0eROU-qpP ztzV1!gD5=~U;>l(@(BJ-EbR7hz1~S?-x~#JCUXPoHnXH1fJ{vCn>n09j`uzS3 zTuDBAbd<)rRQ-+Y`{YaNtbmmZ9T8u4W*#^PA#*7o>T%rQbt<;JdHYlRmfDtAVq^Z( zx(5E6P*zBZeB$<^kWvb~2A^YTp@7e7*YB2=!U#@X&>&e;?7!-#8Lzl1KxrJ21yDwe zIX{TBMZ86f-sTx)R*{OUsgG+K+C{_YrBSa?FpC)@bK={8IG<+!hvzjV{;g>meGdKp z6Ypn}d)%Z?7M7`X_Qf(ZMk!f*OE`JbI`RciS!d>$RyMcv;7V@xXbo;WE)mV1Gvmrz ztb|*1Vs8P2bh@bj%0jv~G4I|wrQHkVD$N$k0csR}y$n57ButXJ4_Dpuv3_Qx)75p! zb&}9@UW2QZIr>F~-fQ*4}s1<5) zKqQb4Ckc*1pdcs~w_ToEuy?^Ot+TJ_xoHg`cI zsJUwWdF@Zhl3>@t%!a}ASsQarewi+F3l=(pus!9K7-2!jjM8;G7ocvS{`gBA+NL;5 zKsn1V^?i2exY7gKhoS#`!lKj$Ai>@PWD56wLK^U0$uuZDn=Jv?iYre*A`6r1?k_t=!^Tm$0|f1yQq zt|AVdIf{u7H8StN$g~wpGOs|%*rxuw1b-~42W!LW(hjpo*j#|qeK3eBk+m>Sr=6e{ z;6LQxv4hj3BtULixa!dC7r+#0jq`*YtO=r;(B2ipr8SGj;~{y4Ks13(PTNjFQVo>V~FX9 z>`^=%E<1rM;7x)l`RF#3?PK8BU*!8pQf}%g@}bEzpoSEhB0pA#H)^r2l_g8@1>(Ny z8Z`=fn)!wWlBoa8D}S@0ZsBA#0QBO97z>cQLi8(g;@ZN{`Ra?$OD9sqZw=eG(tTIA8sk#s;t?mOabF}Wp&(8xI=v`9ixhrqA@Avx=39P}oEd$v)F zMNhQ4F2E-vy%WpZQabf#C3}Xo$RdWBVto~lWHp^w3^pV|We+sU$g2a3qe{2|v~j@f z1>xQ#E=joer~Axrb{vYdJM`gAV%=yWkL)R0Xc+?pAej&-F%5=N8=zD6`Tz&#sTqM- z_C}kUE~@()d#4?(`_tMPGY8D!>21uLB$H(q652BbO9vDAkgkS*i7(`3Xlj-Sa~3=M zvELtNXuuT)|0?j~Y%To(F$3G?#I zq5!!e((Jy*%q7n31$oyRz=^84(1g}GF3L$&bW@sPB4|UjKlz%ko>7q~N39%?Qd=WN zz&X(R&l}02fM$3NA!OQuD|yLhN(0-V%+s>9nPtxq$l3bCc6$2@^9mmZCK0J4032Kg zZt*|y`UkC=pEiz7x_(!=$<>!;&5!a!!EXNxxi9;XpsfkZm#iknYwyE+|KNO=7oCF+t88yY-HonnFwhX2%v4=5 znD_mc4E-9IQQ1tY`2M7wA;yrN8lDB7obqckfXm5KI9aq&$#O4*kIo#y1dzUCYJwM04)RCFT+=lHw?J3DFRLuG> z%HMF_xuk(8h-Hm;)$qeH=ix{#sG=9-s$qEJ4s&Lsvg6E( z%i^8nEh(e&YC8GtV4JzP%1#>6i1J^AUakXP_!7oixV*Oz4o@N1Y!K4;lV?aj;QNHJ ztR_srOz|j&EtGccYPdTGQhb`elnm&xoZ8w9g10Fv=0^BG^)$EBb0Kd z&(E%6rf9`oFVFnl+U6wfDf&|;PQSMp-_{Mrr!5L8rNFyc%I-Hq4Zv=^%pdb*4_X&X z;(wt9FEv7L=O~rNT7_xOzzArw!VsmukkJF&5I|PB4ut~gIJ4IVHL&Zlxgd;X1ej}W z=1j4xD1Vd%pQZg_!`;^(&~G~U0NELT3l+5x>0}mE(0E;ck&7QD{mr8tlxk{vqm~V2 zBY8t--(#=+7r+=~ks}pM8AJOG12(cf@Sjn3i|F3(?j2XQR!m@%pgbx-jmBax_N3?X z9nusRq#32m{Bpl@@f)$uG9hkiAC+EepU?)@>$X_r^3zqSV7}v=6J47Wp@M9v;pHA~ z7zD@e9da9Q>|B)A`59jB~jo{N!4Q8jN|A?I1b8ZaJ~g+%oM}1kI_?>z9qnU0yIcmt4x+L zWUci*pXC%Pq4{>_-AIp-+5$g=0cfyZ7PxgGV%WVqGI_4`10c)9JswLzEBHIe+i!tT zf6P7XoRS-r@W3Qqsnm^B+;Cne)W->>_<5Qs=3nySlBf6-u_Xf`rn9bxjjYdHUM3+` zfaCN`OFu};-Q&uH6*_X885H>W!tix*yXF5h45R!yO{;iK_+{f6(uu8cVV$g?S^&gb zMx$sp=KXLX`GO&hE_Pli6b`{{^AD0xmd0pCm#Vx6X3&igpx*9% zjJOz+MgZI%Ua`U-`!$hzI2mY0C~EbR65R#BX}^d>QliP2X+ZtZ-vhtS@0z;rJNYKm z=c(`~A-U@2oH2))rAAyWpRsdwy3j>j2x^W@G1v-RQ&H{1{NgOtcHJT9; zz=Oy*tkyvCL+|FRw@gnadRUa=Hj?*aP5LiyYswh`rOz>NCGXhJ7?WUw77N7meA!`1 z${R1h>()$LDTkh2S?=!Ofiw4AryO=1yxc)C7 zSxQGKn+#m{!tYWwMJ-mZ-k(pp1nEqc+3A!HPAsq7r7)DId*7)SFYfSAB9C^U8w4t> zzEq%>@@SNjUBooJcR{DBSrVTd>Ppt8+@r_`>DBfLN2DQ7p#4cq$6P;N)!g6&pjeZ1 zq$a|}l5>6i$D2%1lV@X%CF;{z&kzVAg?Xovva|0R(jZ^}Ftyf>V(2k)%1Zf5zSD@P z(13SFkiE3{e)|del+GYv_Hxz_|KW1#asD>+1qLXG(05xioKhvdDEHjH$TIe|L$#s~ z;EI<^)8>+Mo0J?J?3WVAlDT*ApK02kH+-a|F9$L~BP0DA-}8Diq62$xlSCgK@+2?i zLD`FZMSpc7Ofz@x0zmbB-}wGu*OC2l^qLm*6v)x)i3Yxh%b7UWRgoBnu^E(=?IFJX zM^yaPH#Q4%jJ7alKdQVz(I|6T0wU7z{Fp6-t}Xap;~T*v4}))_V*P@ykd8ysP(09q)QR%}$zkrj@ zIXwRN@*o*Vk{&7eRluSi8*LCT!zXw#_F9x)Vc-t)BrwQ~hdx#FBr8(Cav$JfnNHqQ zz8b_M0e0(}57z~E`K{0f>@)5reNL`#8>;%V#dhSfg%;C|K=;}V!B!{EOp%OhpNj7& zeDb>`ig)=WAfJ8%iq&yp!m2fLN2Ea|GS{G31k)=5(<3U&NvX&OK?Uam zH$>gnGz+KX0KO+*x(TIdn|1wJZO3|V{5S8cp0+S0`RJ6Xu;PCs_YFpbXV11pVd&*u zu6b9=3V4Y0*$TjCiX8UbI*{6FJ>}(n@;DhcAK3#}~EmsH| z0Lk34q{cQto>2r{J`CrQ*>-^SVX`FgK}_}1Tfq;^dtGpFoeP6FWY^(Jp!>&Xv|{67 z7!+t6qb|(sfY!wq773N&orw4bdaeNIkob1oc-1YO?!)4o;cpTe&M(6z1MML(Q+Hf_ zroLxuNbscKlbmKS<<$VxU22P~p*SjH5(&j~q($iE3E+iq;M)V*5j;AKG!tJ%m)H1$ zrfiQiugB>WC5s?%}X57YRLd zx2jgS8XIo&#+DxOJQ}c>N5p5W@t{{{S7&CTs)i?wXV00^ZOSn}EObPC*_l`5!2-TT z=T$H56TxQ&I}NdS1b3&6nIpG&(#7 zUPBYF;c7!qpydCR#pp_{XqK4t52ObV05-A!$XJ-#BD(kL@k3wiUY0X3ssx}$*&Ev9 zOUtMxT zh?Go-Fg<&?+S`sE`5^i}jeh{-r@3FN>Oh0FC`(|>Ns?F19iAXdU8I89H^&ym+v)6l zrSdHb5K+#`&vM|>jqHmCyFH$(|H)qd(lQ#lE*A0;$ef=@5k={>$TZ=^=@6jR=O!v6 zIr6|l)V*o$FL9_)nkRiR-l;0QXCPa?3NqJo%yU-qbZoa`9$f;-V&`8~&kdF&-Wynmy#xKqrr& zKNjx@G={Ck?8+V_G(^i8alRR-$=COB!S%(=aSn7P(ubfQ<|5C=J9rVsY5`3ZKYjZl zJ>qnX;pl=)E4$uCj=ep{9~4-OizqUXXH5dC4+atAR~@h zHRv{(8&;gp=GZlzhjZkft|MOF;Fck|egZ^op?@+V4zT_@DP5-6`y*$t2wT(uVCCA> zyD8b5Ui!&Lk_;oVHe#+}wM8C^$Q07a&*=6-g7GMNN+JJQmUGj-u{H(W( zv03y?!(sl}|K>|Om71vkjl!k%vfu;bCR0vdoB522*woi#zv`t7mmHE%Ms6DeS~Mnp z{RdH=^6m?e1kR-|O$OftLO#L`!4%^joatK5*7#Sbfc=$rh&M4~&<51qRS~ED(cuAn z)qV=l4Z`%*=9Jg(EVuVckM{Zfc*w9;95k%6ctUKL^K(DJ%R4iXlmy7gFuQR4^Ymc3 z7Qt?iutgqsO)>Hh$@$W$jo~20slrQDW2v5p3t2Bn;d&pf><+>^IKzKFO8HHD6#tw%VeK!r@QAzv4OMdqKff(3+U$V& z`uU6vv`;O{pa<-#`7iM$S&9VtkD+b>ff1HdoRrW^E89d##}_pF&psl1%0YAjPqq6S?%aNuzNVAMZmE@M z^Q>PlN#u21)tMg->hG27*@ESje9`;Wd?2Mi$*R;}_gD?u&UslMP&?1uJL8s+ub2#r zuy-9d32$|p{nzpU{t8Hv#80M`y3NE@jMLcDRT~spi_pt@zzdH2!ZWn zF$)pY`NkoBRzxbfp1trZLiA@#bG1`W-s% zB7Et@1BV=w0h+Vf|B;3g7w^hvJ@YzB1nE+u#-cI`fQk)F9^nE(a!52>_MbLmNVtz2 za6tSIy(Qwe@(Cx=KSARYE&=?W++rY{7XCSL2W1U!vjD1nQI)`geD`8V(;$lK(h3io zq4Ea0_-LGvEELX?%{f#5aLoL_PoAk=hO2tqb6kLao)~<#nVtbKLf|gy2&hw`h1n|0 zMkUeE`n_FHWGR%qa3Q}2_ST$8ltVfs_mJbs0G*ft_+j{nR4CA+e$9AQ_r7k#lFEFx z3!UvO*3C>3d!$6)C0lSE^oo>SLNla@aP&+jX3C&=F}nBzBcq7C#=r_cg+BBD54HFR zvimn11G8)3EY#1ahGs&_42Inv8`2X2fq+ z%r?Tcz(Iq!v&n+Dl)l)1lbOMauL$i;zUY~MVHgAcAKLyjtf{l@0)`#I2~n$1L5T`T zEh0{U0}ydSM2$+7nK&>gQv?Kr09(b1N)-WxDnhihqA~=C5aulcg%}|!k`SgKQj8zn8u5=Xq*ddwkz}9PclOAB60E4eMOzTI&?US@6M$e&FFY5yQ*ba2g!lJF_l!-)|C~{ih2+!H;MgS2 zAO!#NHHUJ^@hP0Ibf9;jtNzM6?qDtEZNOAV{=aWRi&^+uo@O*9?#kb~#@QgpK;aGv z6`HEM&Pw+{Chnimr+E(N3(InMusmEYJ*Df(;yxrYXin#w8R(5f| zhlcl(|I(PYC=Yr5|GQZwCIwdghm1V-%IjDc1fonRi^tJH_5WH`r~^cUNy?^wNU>=W zS&e=V-~|6J)BZJ1DESICdHOo&ldC2CvXPTLoyR}x6^m)G^+)hi&8^sfIjDeOrC^X` zLrp9*#}Y5Bh4O}=J*eDJO!yM0hI-@9avFpKidzP52kbM}_49QPRFqkP+}O0Qb_S!G{}B?~^gMrhv(`2$vPhKO@+aRxbGe z_@1XLAeiyjYJbZdz4fpoD$7Q`Mrp>}fA}}|Gtuf86ZrE2J@ZkA7MYRN4<*51LV>CpA(u>Hjh;DzxJ07d~8u-alOy% za;ZD#zp6*vN9uMJ=o0?D;Y}C8)na>!3^5%{qJGZE8T<4P7#HMW{Er6G%QNqP$<8s# zab#gSVb$Wwk2&AUJaLLdkIB^nnZ8f+muq5k)d^a5L*cQwh#S|06H9yiHT_uFsyHSO zDRWyG({`^Np()5ema1q7t=R>fL`(L9WUu@ac0K^BRl=zEnoWjD>>a9I5a% zudl*Sxk~p;B9Su$`r%3SJaeU0rQP1RAkrA_hViPFf2BePqEQZ%)7Gl@IEp?9@Gmw- z`!z=^j_Q>)8kr>56_c9r_9)s@Tr0FwgRbD`et1+sncE;wIb)}}ClK&|+|xRI(kzK{ zlIL|YFP2GCBq~^@sB#*%c^t@Uip5`2DDq<;SANPz%s|&e2V4!XbQ)A%huhEs7}EO< zww~$=`-|MbqJ^C6ip89^mj*{!02sgg4=}!CxULmrAg$BU)>KsbEB5xwpZrHKPSOCx zRgEz)HzXQhtvD9$e{_^vxqBw;K*M{Gw~+E#Na=R;e}M8L&fRyzRQMv?J6=76_8J*$g+TPfKWZ^&6925loP`Qa|55;cP`G1}^&uh{H~RmV zJqPXpi`b`^GB)lP|NGx+yw3tnU)n8>h`tsRgx#VKkQTyAuAtv5`c0A4e9#yA-F(sK zM4#(S=^L*5Z}Q$a70ux zT+@WpM|=c-3%vM)<1OWr^y+Vk=myHMOnijQ`4#>@)^PG8;jaG>zJ}B(V|97qXwm%H zltJMhFAPXP3Exg8D*h`0r4Y2QcwDqcB(t&Nlj@L0B|-WH>vqw+8F+&zuANy5-c|z^ zu2T#1Qt+}Bd^QsPhi{w_g$LnT{}&o5cHE~xkY6{Uop_3UIaSS2)n9ZwhZ`+OmuX%-wV7({Os`2CC6m~%`m|~s7yc8^!*Gnx$$s&6k-lM;G zIt>I|W&+5fH@5K9@PfeZAF5~d9IY_Upx67oaT^5Tmbn*8ysPg0mz|!Ei5>z$e$q_= zWu#j7AE;_;45&7Et4aqU$3W1AGZs}V`m6e|B_ftyx;Rrsaq{r39Q(uYPP+de!+W6F z5zZ^G(cA*vDs#6#TuvP=$}}kI9oDFiN*@ya&N^>T;Hg`8ul!QfIj0$WKFw8Z-`oPO z0_$@i+oXZT!cinLICp!-!p!gspIL6^)&i$6;f9_R4qYB(5ZVr0P>sI2Lw}@XZqtnd zHAu~T1lqSQxTNF>Jl0Ej4UU+ME|0mqFPa?Z7TW?B&pKcXhR<4rG>Y+R^(MvX$~t0y z1R6=jy8|}7RqUK;u{@+(r^=X&uK%-87BssW+6MX#eqo-^&o8RPkX118b^}7|IzdN# zaxzgwup)%q^BAb8v66Ok2)Qd}{Wpc_)$akuMfAb3v$6l9tav-M z|0K|evw*b1S&^YGP_ZJFlD=EWL4*gvj!(YSlAV4OmPH>TxiwT-V6Dig^_FzpU3^?R zFMYYX=r8&UMB?b7LEWP>JX$3wp&^xANd2u-s8_Us#kzzG=F%SHb@8B_J&vf=wES-K zGbN|J1(XKh0RnJzO7+pdL;&on)R4{F*cXZx>)bf5ie$BJhQx;}F;6i)&%G#eWAJo9 z4500uK1m|h7%v3^63KW;0Q#-II_`A>H$Y?3Teq6KS2p+YrbnO2_=?c@JsxRIk-WgT zQNM!NmYlM&>u9dL^966@Y6z5gt^6OYTW*hX74FodQsl@cE3?TM4l_O89_KNI?{nBTrnt7{4$cE#<2AF-dhAwKXxn-u{ABWQLR~7#o4jKr|Uxjnu>pm8? z%I=gI^nn-v_2YL2L)Aegc<#eZX>baD?62Gw2m^5!TP+WAM7Ky2ewq`6w;VZ-8WlglFTkJTM_)^_#!Y z{(D)BXj{G_<5sa}UvcVqK0=`F&!6wb!~uZmuHflF^|9b`lK7$5LeMAqtj`$)9p*pH z|Ckk6RI>tyczS2wU!L1QvS9*0YgGWZA}vz@OLiW#LX_`oo4^hL@w8kvMWOm;9?wTT z`qvDW?1u^u)|(b^k>^faK+^}4dZfxM;5cR3Bj5ot*zgeNl)GB?M;s|&xAFh6n|^%7Q;pv$RONArtYT?s9o(e2+VwH9YXx`Y;~1rx zXN$OP#EHDRb60%1RpLL~^I**bC73oNS~c9@m3_~X^$pqbNn?1rW?lEAC2cm-N8#2f z&f-S210?5>N7lmzPGVLv{xuLp^o&(zKdSyeg~?53&fMo#~H(#lbg95nA^r8B!z+VCfP< z1GRXR`Hy6C9wr9afKo4W{aw&-RP z&=mPek%N`rR`SFw<5GT-;pZdE7xW~FFqNAkzkE2Uo0Nv%A<9?>3W?UQ94ip*LN|-ds%YgiE=Qqw52k5wERbM3^ z+mSx7yG|$jkC0Rj$O1CaJ)g}lTlRQ)h~j*$H!xn&0>>$1lbm|kNHr`Vg}7ej0S*X! z7B);&=VE^KB(vFnemGNVR@n%Yt$1}S27+weJzA`9xv+Sveg}udhvkE$?%x!rqu#)2 zc=T-#L_(ve&_-CJIY1%!!yN(wwnpNL&c~;ft(^-3HjlPjd62G=`n>uojz;C*jQE`R zxVEP1g)p{N64PSECN9Eocr-RehLW&e91@Q;0uGv@795?!JMibJIt8`3&NFua2#&-#kvxR+b!-($F;%<|5P|x0(p;uE${wuv`~IDM%_L z!i(;Hk(EQd2O&w=1SV%;3Ot7Gu7_?i*==6c+lOD}DR_%m{3M%f_r7pN|9u_@q7rv~ zrj?J!l=j;+RMk~KOnmoE+czYJz);~t*)g6n9v7lYooXCaUGV7$76>@f07bRbnT14e zsJ8Yx0xg76tG93yK*}g2WubLEBm)XV^`U+e(#&={to22Ml=vgt4atTklh9h8(j5}u zO4(?bheq+j^m}eBe$~F?P>$#QlKk^5Ue*3`>_DS3?GnDPLjU>k?*x?OWg!2PKTz#1 zat2|++!6JC*#GY2ossUkktI749-N5)dcJu_B;hA@t6;z6erYo&ZfNi-(MjEU18%=s z31Crb{-f3WO(KpydX1IyZFJ{ooLHd@2pC03Xfv!JVjVFe(d`F? z2_!PX)I7y@h>t@R6ik6x#bsb!?tU`7;kwQv0cUda3znN1jGm4*v=ujo#rVd7x`P8) zFYh+!hG1ReJs5`by59Bh(; zvOa$~CdPpj=GY*F_Tw-)wmtKZ#9aLwJPG~GS7_&#e8eP&x6OS_qj20HEHYmrGrx)o z&8Aw#A@Yg-#v~m6?|(sM60CuUG(c*wjqwPKO%kw4BFdm347{Qek_k~F*27bgF*>^g z`rHN|%J)cg4w@>bt-oLi z84vC+)xW+miNf>Lq$;O3o_Z^6OOt>N^kUbTrHC0Jdv4^4m4J&O)s5np|k> zwW*Wr-$#v@PR)mn3D@dhp}OR0r;D^N;t%$5@Z|3eE3wD5YQF5Xs8{Wrl5=*f9HT2u z|Ncb&`#)H^jJ{pX1SzDT*5x@Psfv%2nUFTuzN+g}B#!{vuO#XAF~<+IoCQ_ewu>nPFJ(EiYoKMY+l5>!9?odr%_hwl7DJQXe*d|R z+{zWB8_i-LMe$9_x@k(+m*ZT-shEEZsX<#`DcguC8IcAtXOQcQp!@w~kCqm8&So7k zc}Y|RwxkkUU5VWX@%)-HVv&k;z3Sl0d=*p?f{`SYudS*$q*4XrKbl)1&@#E9E6gVu zT+^L# zfg@@YX5_PcEMtb6t8_0${RNzHcUq0G6lLve#T0j_;eB39L%5bPho%V& zW$Ncs+?*6X#w*PknntD;vf)l&t9RBHZe$xht+7>XYz$YB9fIGl5e@Sgmrqmsq{VT2 zI(-vjHyn`GFlw$1tgyp?r}6687hjk7zk)X~V@wm-xco9~2_ zeoTpZJZQ_#J>^!8?Iqxv8L9XH8OUi$-;T`uhpqOXg@v`MCG!Cs0Z0`j;c3Q^^gYee zx4ZiehNV<530wYv?yLq*Z3EJxhf-OVS*~cfzo8{}wJp9y2in)Jr&Bnr)OE*BsVJk_ z6*jY^YT^hl{G7UTIR~E`O{~OD52BoEkqQhxxIZ=1CTP9MNpITB;XRVLfu1>?t?Fxn zTAto|Rx*7gE5+oSA)_)+vHc7Gv^XV7_-!e z38rz{*);P+TI`u{yyL*2TKPy;BX<1kg=?`Z`zB~l$o{Mo++o%; zYBxS;GO4C&{3{1f9HLUPq<)>B7YY9oukM{Y`t1PT)xKljPR^dQSVk;(&)D7J?J{00PS=N;dr5R!8p)|->k?U7t zh&ct70q=35*-pyQGilG$%WU#0jd0fr*Kf)#l|;Sl34W2JA7X=ZBjTxYN6`-rReh9^ z)rn2yJhIPu_TEP>;~r~wCzXxyZH=wUc{}356q=!W)-!*R9o>MXk@yF4}G zwEZQYZl`%%%STI3s*TIfu3ATarBd++>MXR`JPo2hS7{iv?Kk7bjFb$)Vvdh8K*0LG zz8h~0j9eXFDdgwBUl@E(gyr&a23_@e963l8h5N(-{q zB0t&v{0aArd&`E)x{>LeC@@)%#GE#M&Gs7Wcy;0sTS!c@M>_5<%QwDMmcZjCIN$?;uV;aIgc)5Dw#W z;kV(}5j|da1)Ce6tsX^!;rF_NcEcNxm;RkEz4@Vo**YZMF; zxoYRst^%V*{XwcBMxb77*?ElmOY^#OMpn1ArwY|9zse8$7u{)*(tOUf?iNkeQ>cD? zjo9+#-T|H|4?ESyiUnl-_G_AWw_|U0 z_Y5Ts%&pU`p#&XViH**cJ-eh0TmJRifGKBc0D$3>&6_)BO-VFzWPJaK#_qcZuSU~maJIFy`8lN5 zx~*bBHwN*BAeIT|iB%N)xuQuTI(&m`neBD) zVot0|eO8Z0`Ccf&LKx4Qt2^9q20y1toK@3WkdOqpy>7X3@cLJG1doG%MJ!dqHXm7F z>E{t?b0`O6_rL7a!K~vEww9fa@=pAc^UwjlN z=Qh85xrY1e*+ND~bOraIzK%#aQSADP+nlX?>XzVD-_~`0cDZ5%9PGT(zK?VrT5O$OtBk!s zZ`rvn-eg{I$z0NqObwhB(-dr_M+LX)y~BrlFX# z1lrv*X49wql;Mu1#T5C_resxPG?T-RZ_2*D34jB!6~nN7=o<~iuA5aq)3`;s%X8*S zzni_>d5FSz5bWKZ)|6c*j>t3!FeN4n)o1N!hnlemSO&(n9nhWE4svL z43iG1aoc0jF<8 zcjs=aFn{J1o%Cv@Mg1{iQU8N}B}0#r{@~crfLU3J01sIUE+1ccGIuo6lI$kiX__62 z(LRi-t9hD4qr_zarRL(T<=C_3a7Xn*smd3PP5`z!>es6-b0Hr8k@6Z0WU}`-zR!vY zJ)awV+#$c=C$2I_OF-3ekx9r)&fl!cq$gDIo96D&oybf9SPxkKWkCK_Vx;hM-1&*i z)|U#`Vsn^qRr_Wpp45%ip!*EwH6gBvB8twA1RIBqjb%41$j^3Ibub5Mhsj0#QQ@B+ z{3(_J5&L-HY05~4LYezxheg!ox}*;R=_7u! z2T|*HTEd)SP2FOX9gn>!8L>-C2jos3tYf{(D>*Yhj#sxP>hi3wzv=*x zX~O#)GY01m;CvPg`#*^>7&)lp!Zu2H%76_EI?r0EVoM|m>UCn(GH+63w}y%s>;dtx ziWI2fRWz+SS09lL5wa2Lo*plMD{KyfXgEk2_&x%Yh%gV6f-nUl?^XC<(b@~iW7ncBi@hKyAqcPFfT^%Mej-bN5|6Emr+Yed_ z`>mA8bBt8uh1&v1)jn#;ReW$BFZYp+eum`;G%qx-1j*qlY31E+10Ol7n2$DsAtuL! z?bvHPu%xfRGERBqxu&XJ#YrOiwHWUZuHls)&|eS%?UZS#nqO0RUZP@x=741&Nl` zr$Z}~;SwWxGl;UFK9Yp`p?cG??;!Q3sgwC29Pa0>1)T)dFOx!7mCq=Snz6;+*2;yl zV~ZBTRmCn)E#m~u>UaUVLeqx>d8;Nk19J7ZbR;#lX)pTr;IR}nB@i>@;@~*+eIkoq zV9J3z(%;_kfT#wz*q`dWe(~+&O3-5)=>je4u>2TERC{2JOjm@M0=T&?9^M z6pq&g5!}RlKvaoys~c#}`#1w#wC}sqt`s#-3)4zvIoQ%8)Q0Q$rs>|;CM;zHyE6jm z5BLQr`1#1E<7jEb$k}+Xmxok2OM6nT4C2i$wph09Y7e}9!KKV)^m<~TL6IiADD;S< zXt1aO0PnD(6&w31^rAa@&GqB(oy{rL$K3-|39n>4O=gns0Zwi7<631n7T`gDGA?#q zCEP%TwJXO!Q27gj6=E^_twi27M#j|7`&eV}+1{ij*p;td$oMLv_+Bz-0CN@`i)WM| zKKbek?d4Y6;~Yhq4KLkDmuy^Drva7)jr%DXTc-F);IHWPJ}F5P2p_38Z$ZDCG&fcB z-|@}}K-Ut*2x*ecBD#Ax6DqMB%{N>|er6tVV4r0Nes^Z-uNXJsOtJYA?EqD|H*PF1 zwEgYyX<6e9xL(qA!V{){3XY$GEvD>xLt8*M;yVG=7wX+OF7YEUH@n05A07&b8eT+5 zs@ztFHWxsaPpan?*e~sZz`+#oB)+$j+iFq~2Z{X3KY(rox>)P0s1)O?nEO!+QKJ^1 z*lX-lo&s9URD!=PhbD|CM;DP~y*Mg_~Ej$o-9j@CY z?p=Ag1UY*{P|kJpex~5Np%y0K4z^<7R0OcsbmaB|kCf~^LF=JKev;7!)~hm`Et#Xf z)%jcI?!6C9?HX6XlT{V-$KcoaPTh`_m~-}MaXeH}_iqPO6d2+{ z3gHfI5vS|QEqJbh>Y`%QSCOh~;Tu$yZgj>#;g}NcqXIncSf!%}>$!n~hJ0d6z_}p< zS1;JKgtZQ5gbnFA+l83RgkKvc3)_=2iawvRtuOl968en-hLg6Fhqejl;C)Sk_m%F4 z+zp$nGW#pE<1qCD>)Kv%ih9jYh5DNX=>_PT-+=TW3E^ejEEh09GMu*vww;|)(h(f8^>$n{p8L(N0AMY`nW8WLk>dRP(%}+b zZhY?6QhCl2$O7XQS2ZAs`Mm8PuFkB~d+&dIAm|0(g;LU$ROy2DXI^t(w3gR_ZH*GL zkxxb{e1oKF$e01|MfdGg0 zwVvc|D0>*aGIoeWoBJdVoA%M_cY0Yty)@_hLpt9PbbhbEmi15VZOgi_mD@TiSq_e2 zhV4(y1(j4H<*G|x@eS4Ds3lR3QXc8Ngg!9WTK~mZ*laL}VPq=yQl$O9Af zY7?=*tyBqe3X9Pa74$;`F`^9n8YhQlE1^jY1NmjwmO#tpj*HF*Gw`oYsQnnkRUqTM zz^lPM1u^NXxEp3ka#PztB0-17C1F02<92amv?|AFJ-)jrj)(aRsHQS#FQ^;;qSWS0iQvteVa;RiEvjmw`JMqPerMELG` z+1PemGAp`(_2~b5- znr}&wJ=5QlfuOjw7~9Z}l}I>7*cwK_@P2dv^~nYWs(*+LHQI}TRmDob!yZ@;P>dNk z8WN`01qCg*+_=9~alUiZS>sLegJ0=Sq&FuTlwID~o7bVO?*~@h(T}UP<9p+fvoqjJ z{HBC9KdZ9RDNuxZp`vPN#DaVChg3<@)jNKK(;vTC)Nz_OVY0hw&n5avnRX>!>%2hO z*ju8ER)>yTE=H$HaxVE7n*h+F8&ir}K>q?auHn4~D3Na1##uAnQ&t|Ey)nmbK5dAa zw!}>5guO?ktwD39fui#jT8YJ+#$vV1%2DwNHP`F8w>sPh6I?|mj-$s@R*?6LSZP-# zf*SBPA9}qO-)Ec5D}L0a%nA$rP(iHo zrI?Sd^eYm341~9yAnp&%Qr5TJv9>!Bq~;zD4~jfI;=w_()ud#4=CuJATFj%}9@;k4 z2(7e%NAV-dN@)LOk#PZkMVE-8Nyz#Mu_(u&=kSNG!>em}OC?BVHA167*1*x0w6N}e zne>w(tm~gO$mjJJ?~e?^Xf2h7V5%pvuR@$J#LgQ+-!oA1kLQi-p7&VAseuC1Ps|!Y zsis@|?_A*$zrQHWSVQi65&v;()Y0FZ7qS=)4^k7sAuC!Tc2;$-S(i)F75ja7R=RCG zVy+ut!DJ;yJHUB}BwKGisv#gHvwmx7QF#+`pYW&$UCVDRLo1{vIz$ z_d4Dk26Gz{6{q9De1U)A$kIjW=4Gh#3TzbDOw?hrhRTAqx-}H6Q&FBb1on5>+A}g8BQ6!|yWoHAc;{+78)K_16U9k_wfuG%=~6Gj?!a~hu>9HBi|*`{l4F0_ zLpl+A{}h17moT=|!iIv_QqcXSq`v9o934$uk?($BSXZC_h_3 zZ?_1=o_xQJ3F&aLZ#^)dLd=YTt79JtRO_uLql@Da)5;#Y2+ty(z6~9p%cGroZ~hIC z9qeUYesitLrx-uF!TlvMg+p$7pvYMQAD>F@{4|Dd2w$qY^T2+{Jf0WT5L$FQCP;0& ziEI!PBEQ+biekLpecu@BG!QhS_%<)$jjBX?Lw?`d=ppV&gYA~^LSAyr8rwdKB`DqS zGV#Gv)udA;X z|BgJJcUe%nXxPuJl_O$VHsL$3BD8reh9js15i`LVdAebC5wQ@W7 z(mN=qd*rfj>@a`8L0gty+d4JdQj3&yC>W}@2nGk8=dSl`bW>N3FuQSpMCS51yCQ9a-RieuG*Hq!FFR5Z(s>WcJfy;v2g;qDLOk0C((6fJ#5l-LxbX#>eMSn4v;4dxu5Abe&CR|*C?3F-u5ySvCi+_&Rz8^Ga{HFEjWs>iiXE22-gq>ZExT+J9|%)~9Q<+5ny zO|IL2e2otp2U$AT1fTzPDb=R7*Q`Wxb{1}54}5-qvH2KlCjy3nyfL02FaReBJmy%Q z&CaHTL)0ShPOZ}#Q0M$n?4aJ*<*yb1n6Ww}foB?KF)t{j+W;)fNxpy+ z#=gg}U{Ll7lI()NS+otbSywAsQ{*}I*^Mo}2USYuig6B@nFOxM0D}Pv-w0dlPzd}> ziZkdo<9odHIS<`M!nJqU7hQ8NRm0VB?S~@lfFJbj11%?BAID^BOGvj{t$HOIm^FDH zDhElx(oYC`rMqvz7CZF&(DO%Ol; zy1tq>k?;kj_RxBaP|)z#9+7r+Q0MD+TOKk zup-7!MoH<~F!yJg#BWK1&u#43+(;YkM16h;5ZUys#O5(MV-uVU8^no8!be_?(_Wt9 zze~wkf8WOD2HVbl%dzT)35%H*KdZbZ&5@MjO4{b|+82z`); zR6O%?0=uUlIeheLK5D-%itFk2IAH`c48-o?GzmIn)tG`!0$b(%Xj+;Tx z((rqV{f3jYKpsY}Yg)J|FOUdXtYN8T!P20*^c0=aIM6pSaT2--Eo;kNfYK5<>(+HHsxza?gk6YyN( z*UNI}pj_eyidPldUWl%TkLyyL5q??L!Tfujr`EB0+y-VQBo2gvM$>THxridfLERQw z2zZKa*axfg61Y0IS39k(d^JtTC^*Z#4Ig7-#R?V}M9@&s=D4%ZS@TVD*A=hjZmF`& z5r>3Rgmmxx?2`T5P8?+sOjoX(4m*GE7pE0eJ@Z2Q!S}BzHu>vK2xe!(#oktByzw!- z@zm-pnGNbsDF4aLRpqq7m6@J9Jf zUsX3Vh&V`!EC7AQ4da}8q2ZCbTi?V>a$&x)*OF=%=`TWAa82@zp_7l!+++^(fM#iZ zToRAR8F@5amN0mTi#DFXa=fcub4lhkl7eQL2WEL;)(J;+n@MAPrt|R~V2YW78yGJ+ zI|X`GYkHejJP|m4p{MgS??l{q047}%_3XqAfi3FxOejb)I^Z=jchvjCIY&0! zKqdSpSGIuxkaIq66-oIu7&p+Lbhj6V-^&|;~F?_4W*_n;*=r`j}Be}L$ivgwe%hdjQ7mlaHArD%ICzru7aiExkVICUuNsB21q5O;Okg?DH7 zXR*&=cVe!~Untu@YO6xKKTnYN=}j8QYBlfv)_PC>@|nn4%E+Y|Q1MrZP$&}1MKR1> z(U|lacOxHa7Aja#@jTP~YOS(_4p);d-%I7r?&J1;vF=u`$N!L31AFS2eoZIai)7Hov=ZmbWC_w#$Qu zZ8>B@18Lk%#cz+@trH|*a@!W|n z>ZTdzF^=1`3%99LYqI*Agq!jtSxw03Rk-WZ*XivzL?3D03lD`hAgvm(^J@CH38P~q zD^X4$q3XWXYn-V7WJHaY00922_t9+RsgZ($-_ff$Z3M)5_>==6t7vKD5H$;nEuZs| zVf%w}alGxp+jnn}JN?xw~OjhYpeY*ctbmhGPK`NucG;1&1vcLw5#DH1}w zexWfMCaPIwrQYm00RQ zuXCH&9zd2ewE#(|cl4?csmH;JN%Untt}>-koR?sC@`#*V0nkkrr{E9j1BG6Rrl@f% zW7L|EXR2`TYJxYy^li{)D0VhAxOQ}K!u2RmgJ5x>I5|vIAFo+LQ;!7d7Yqtr2Mh2E zH!==x($3oQwm<7NY^2+vuE;Wu(#!79N*^UfJ~-vECv)cOd%T1~bA2g~^8QWju+ol_ z`p}IEzN46~t9oHSFgmTHSEK#K^Y;W z`&~!UvHs|+5X^~lJXJz|B2Z9Zw26qO^wK6+w**2OIi7kZ-)B3`qzMj`z?AdD4*3e~KD??wqy_hiRi7kDX#F#|=+ zl~yfa)OIJ&L-O6Cp7V8GsHnHE#H7tJe?N8QGM5)w=U z3a;Y?-+QE}%^6A?kCp;x`2fYSPkTFOE${w_GLQiqFo-mT0OZx)GP>9{m7~7=Am!Xv zKyS$wbAo7Z4mPUP`g&Z>icdUOQZfJ;bKcX75$ehDh4-&Up0d z*CCn+9h`|?cqvpgK5tc8+_|YGkfn77#5H3r@yMFF4{1n|v4X-sEE`B_D`-5W;HL~g z$pc9th8UO+e7Z0JjIggoYx_?b31e2g0XkT|H94nI!hXh^Wa~9=s=eCWQ#n3148N#~7nJrl`eS#l(8f4#DtLuGDJKpge0|hE zP96HO@yT^w!o5nEDzGj)`J4#OqV$mfpYy4Z)ploX1uK4vhdOM4mIImu#aP(DlDEL8 z)Jz@Ke~FCRK`Og{IRc^YAo2^)tfXH8Dtf<$#FPB605w1?4I4M}u!ffWJb6iRnd{XE zCLYYlv2NNvc6IP1;9zJW?hFi3(v6@%a7B|vjitZ}eiyEJfLppFz1C@oSG1RAh90B& zNPk5|)UBA?<>?uIVC`5{K9Nj?605qpnSyFhyPx~Lt!}AGURH1oqKPrGbZ?+ndTOtt zlE1yqqx6mU2W(G>8hmuw=Ugxt(L*k4fTfST#Od4Bm%h4p@V~-)dRn5J!EzJ7pn9I= zAYMOwd^C0+Kjs3|T3eed(6v9bbi^dFg|IAyIz~xRlOjDJ7H_YD_aw874+Zs0WC$x> zW-sQXAGgJRno_~gklfsEobhwXhjpcEQhzMR+0ZUb$D~gem($fKmHs1F$bIE+UHDwxcs#( zqRPOUq9k%q#5zFJGZ1da-qR=eWn(ELDxQXdSfrNqc8M!XK3_pJ0iX7e1pwW~CcLnj zsJ&!|-=iEaYtr2OT{VuOVF!yfgcG*L8C7|5Fq;=JF&fYkh~2k6pd?@X*st>5YVyX@ zw*>4?SLU>!@Y@RAxiG)B2oN60^fTumBfASFCMPGK-ZYCNIcM3tr8NKwvi~aF^XXrj zo(VF7l_)70WXl5h)A=*(?b?ziAsd8S5?#hhT(UOjFUt*j4Ov5pM&~2bhe*s7kiV6P zo;RyaOb0X$$bn6POPbv8Bn&a3mzkNc}rL_rAcQ-iG&Pv>7bb#a$%3?2@C5$$&_gI;k689UCVE)RingJTojay z#A?=KuaOv}?qgjK;DakaBx(Me`qmOHYo)G~HSr=`piM9qcL$T_`R6b28j-YWd~W?U zhBuU{Y-VI>2q>CS?v^^1V%08<))lOblv_Jy`QSLM{UE;>p6II8`*-uIoa28RPtqc(<()>7mXDk@hOg#C7ZPEv^KLsi_b z>u3PT$q3&yq;imSPJP)+d`2ix)%}Nz5J4=R>TW;%#^3}}|(|xRBmM+UC z)-U3i{Zf*SK8V>jbctv_#K_W{5a%w+Iuu`cek0_-=JiFNi)qq)4=YcLAV6{x*`}FG>=CNQ(lPus9=kpZU8Wmrl7se zt3iG3!iMl#03u;&Bgcloi@eiZm1Rg_jJQ7V!uE-%g(t{*a{gU})yTLdY78}mmJO1) zWj)|)o}7LLTX5HC#!aJh`BGWb`2Dy`>UP(Q-6$D&4Z~~)Tv1y4-rrCxfyTL?t?EaQ=t>AMMy9GnUP9&O0N7hXttODr{4TW$}Du6n>JpS4maSRMY~nA`?mm zDzG=Do$$^n%cU#FGir<+VvPttTwwOEDd-I5*fr%5vL^K_+V@DcedTwdSz#jYy~q0u zLOerl8^Q;}Xxbftan)~zIkJG!5}k2Nr8_|wqFx7s1#2%Xt?F^tdjM*GhRq#?qi8`xHTw3eG*cV` zmqMHMCcUudq06)@N%=g#SxHEkM?|;8^;PzQuwskgZp@g0>9|LxK|Y3ljww*o-HFXj z(EgO02lYicK%j*ae52?u-T+k%VrQq0vsOFy8?)AYEr&`b0-s0ng=)aoAM5f-!6j zSNs}uh*T)2EbD1C2-oeEsfijKs2N94>VFjkVuk31cR+;)C^Nu^r^x|OZU%W6_~VF~ zqIFka-a$E+4dA;902vhu+Tg;w^3mUwY9;+92cE~?^lBNfZz<~(_m;c~6WKi}jpB|6 z3L~>5cv;$%xSuwHUG1<4qNcwfJC5hg+~I)g=M%|I>9x9d=@aaCv83|D{T2DO-nEJ* z9HXN}`tTx!u-tmdB5B1MMX0`_Qv-Br_aP_kYE-HX9AwY|>-d+~(>NYrA;?9H3o84f zKRiCp>v=`&NJaC`oi9)3p7A+Hi^(;nGM-)D1OaCL?m+9SXpkYbSHTaI@$!)nGc3>w zaYf~=J9{ZVlCBZYP)jA2@6eO?Q*Lh^@x590V9x`|J5Fh<^0^&$(Yv;&WnNY)pftkC zrejC`(H-zENGq|>${0wW=I0C&taVdgN96Ura@2K=-HhC;ki zK(T!H=BsUn2{?f##^qbqG=5e+P8U%6Y5TcidZ;1E-5m;SqNJ5QfIyGVZtQr9x@jmR zVbGO(fd3kAT>cxM6x3@P59En>wzrxtVu2YSxl^`PewX^2+^irstQv}G4@k6G`Y7mO zbu3NgH({=`U#88wV;#Ogx-tx_ss)fi;I!OA@k_vT_$s^OG@iVz-ZXKSRG7wdpSIQ% zy&p4s3E96trVdb7XVkRV>zn}t53x)Dx8dEeO)}o8|EIYxjcOumw+3nDbwE_QMMa4= zBH9c=yA@?BXH*naY()b^CL;!kpdb)PskEY^Mo@@25Y)Co5rQD|P%1+}z^Etz8Nv_- z2@psKnJQJ^@%`@o@!l)`zH6}<)}m6=InQ~X{p`ID`6`B~x+fPhKv$7rKqvtk_2X$R znM$YUis+zRK*j(n;~DPKNAXY{{Pw!61b%@Mr(wViPDJi0jt)(VO)^qLdJ~)@S?h}N zBqIDE>HX^F%51YuIlpyXF0F6Vy-h#*4A|^U_hAW-jh}CC zaBObb-Ge=>L+2_zPLT0~fPrOnp{hxIawfn5tr57htoK}O`3R>rG|mrq67jPgq@X)> z73@joZbC2k4mKJ`||L@ifCM(4zTe;<$z+iS?o1%|wDmMUGFQ zgA%h$;dMY>h(}s5uwYXx@vC;I<#cM^FJWa}U}ww6=vb5!me|WqIdomZ{Yug0AwEEo z5Zv^)Ku4H>(mzccv0>zBwd#09FY>)2+CQ z^YRaEX9@qYuxTR9zk8?^Z|>x${oYq8K0PH$;|;t#&+bY=)4{qH5N;lmP0RvKSG9N{ z+>FtFK-k2&D!#-_ZyRv-I{O?sob@6J2C&E;G=;m>qd*gskDE}MBW|E(Ge5b8IlNtp ze~g{7U3th^!cGzb*cqaw%w#ad z;eb+OnoG*5^|ibtp}VETSZ=$w&AfBXj26EV_`bW`YOq>XXJB!!CWiJ>F z^fo~MC_I%@|Jz6nJl>z1S!Z6)tJV1_1qr}4;>&Oj60w)B3h^Y%~_ZwbY25^si4(WxvB-0v94o7 zDgZt)@RNY(<(xe^;YIL{-Rs);fI+ME3=$H-GooS|*CdFoQ72z-*s2#Cf z+^7M&FU-82)1{)5V(ST@m#>3aitxGEQ{Xi8Y&!=6FEb5OQnFSuu9pzU>Hvl;m`3VRW#1C<4lSl!De_8jze|q!5bnT zO5y{C;C(+i_ma$}F8ZYpsIj;@jCQ`;Jmc722IxkL9Tvf@7Sy{!#I^=*l5jo%5}E`7 zSp*Kef^zjHaMlS#V?OQuku@Ccla>B6j|oPzXRdG2Ew2nUAK0e_)`@xh!{sBznT>GzV0Dx77J~@?-<#)4<-Ql)T=8;RTJ3$nqfzJQ0)sK&p<`t`p z0Bzx^{T)2dPRf;R#99D9f68&+UF(kL>-)@Fmu*TISyj|xIMdN2;>2r`v4RyN_&FK= zc_~{wYNJl(L`4#J$N}i zrwWvk#syiEz6>tz1sd12Ot=oxld!+7I$xH;8CL*iaZlM_IJ>l6Y(jB>jg$^>hAZ&e z?f~2XWU>jQ9kBv zxC=PW>gO1nOmnpge?P1}xR_rib^@b)RBh3h@VrHHx|^30zA^?l3S}GFNY%Q{K=8FG zd6?oX*=7{%>CiD0lQgxtap|a4u*1uC-H%KZgO-BcaTzLqj+pXiPTDrZ7Xe9P1O|$R zXRbj1FE08PuK>~TscDO=k-6n!?ZZz3@ErE0Cx2 zapylF{Hpeu<;$MZq7JtVWNXJ{_qAuyG=|`gX46>(T{@EB-EDmlz@k*D^6288WEoD#JROGnh{gM$7cpr;kmn>jW znTffNsaXpqPp%8GfGyZVF8qmL)Fj>{ODLrP!a%)|CT_Tl19lgdpqZvh*Cj$|g!fH~ znYbLTyAko_4*nVBzQ)Ra;zCC_QR_&nr6K)MDs6C8mO8)S_4NY@a#buh_C^VuZ#4EZ zD_SH|FdAjiVgyf$3QrjmHEslS+CYsUK_7Hvk>-X>*W>l`|56*+H6DfE>cK`)oi2TH zndn-~39{en!n5PBN03s}1?ZFouVqLcPU7Hada#N~Nzu><$Xj~;R91XZ`FXBlQINI|zQ-)JnEIH^Goa zR-DKP!c$KuRepx<#M_QbtTXMW2G@yQ*8w5@U6M`{3G=b(J+ASe6GB&?+gX0}4d7pM z)gQiro_p6(U#F_wz#Ibn4HHE$Aa3#thC1p@IpRiYcz5QkL-0>{Qac z?flmUT8y#r>Hos5{bOq4H1wY@33@p3tOnYcdhb~|5TRG~-c+8jd8XFX&ev$==>mx~ zb-^%FpaBZVfWFdr{KjsFl8(Z(nu&V>5vq|pj?#>jRGF0uN^mSfSNWQU(5ncLggp1>PZ^Iq2 z1+ne7k7SBmE&RFycA|iF6Vpc5R~&vv&C%MRz91pKTIY_-U#q~rZtpuZs_`ldj*(JR zF(Q)dA8J7?k*W>M;~qFqT)aOFL#%R4dX>yh`Uqmd2hCaIA$&kpkO&+OU~BXT z!wA2NIZ0!WDfg4P^5u)$?;`2I0EJDm+YK%yrc`QPb@F+pJ z2FM1G{4uP=21osqd-zT?NlVZXxHwhb103!?h$^gJ7Eu3H(tKL-a21%QN9~3LQWpl9 zo=c2bHwuu|jb55!oT~Fa?RDO1gaDT8)}xx>H25W6kcF2qLj7Mez?O67=O%p-c%FtX z)DPvNz9%(ul~eBBTp3?a>DEUBy>)3pn6Kus2K2lE7?037NWn-)2;P1Rp0^RIz3pK! zT$ge&tBR4fj8fSdHDHY+8dsWOPj%(iT zT1*{!3Qs`a@uR*Bz@Re00yV4G>q9PkvTk*dRsQixvsS64oV;fOZ&B+{7FS^>xO4!} z_*cM%6b%V|EaTgOZ}e;j32*1+p{~(2g;>1b(M1P=H2P%@Rv3(bwwu6H)Wm}$_>OPm zURftioN|20@{zJWvzaGywZ|T}R6kC&?ap}={=&#r_a#q~h6U!x*V1kMcA<`)ZJOW; zG2yOhwS&kxq|q^l!MX1Rls6am-x8Jf>8sbQ*GHo@{R{McVWEn9NrdF%RFRxG=D?pc z>L4ZfpFr&Cpxi?D(G;Lm5uumRUkSZsC;b9c_bc(Y6F}ODE2}Z?CDeSx9XC;u!ZcJ5 zW|6G(Ftcbaj?RmEqE#$deB@F}Vj-v`TIn;j;Wxh;?Q%3FU%J&k#4zB^kD};|w3B-m z6$&WJOa9%xKw>-N?Y+A)e_I2Wyubnhz>TSQpF4(u;v>z7PsX{&a@3SK0cGhYp+;}A zXU}Cq5pY>N5{~V&0o4;Lj0^k^fE1=u5B{cNGXl~Gr7QUOoMkxGXaX(TZ@#s7na!0;PfUvzZpZvbP51XijuwJlo_B!O z^wPp|KEVc1Z3Gp4i&zelit@iR!rzqk+X1zI`TC6L4FmPDrdhf?=(MI^j}O9k)#Q&n zkxVgl-FdDx;btSnh&ILqm+q@chF@ZZ@z7JGt%ki_d5>}jM59r@t|n5`dPyV*D+Ll4 zHu(bQp!Skrhgf%bogU_3YUpYnl5z2A=qa5C!k9t-(MY!g>YFDz)z{#B;%}Nc+d|x2 zYrXcEV}b9^s{xZJ3w{wTPoADkmS=5utntj?@zJ%)1gl!(J;4q{?>GVbkFi+e?V=x` zCuw*Jx+(!Z76;bY57L0Mz+3=mIRXJ7!UhW?P3TI+nmgrlk(~PW*lHJR2U)f6gqimI|?@qUB`c=1X&O}#z(9OFF>ei@|F8M~x z7%0f1b4Jx*DMoW;B9_=*F{eWU*j*%$=EwilX##^JuSta0V7ikh3YO@i@)Ovj*8ycF zcww&`t$s zJD8w66Qy(BX@FB5%o_sQ129othi`yv1c|_2+TVeWB@R%PX4>O%wJ9g=4EY?l`x-D> z`Re$&!VYUwM#heJml9)3g8=jMXy)-0101xHvng2f0JtP|a8hB4K_;Q|7dsFXqVRxB0)E~oG8+3Gt{|eYtR*+jTl8;@)^DHf>sLaJiKcnOvn^Yf0!xan{62nUuKHVM|f|GFjTX5i*;4RzdTlpRcMzY&24FL!#&(n5FkmA+w z)$71!%Bv4(OO_G1+R+vlYLq2-UPicM^no8n{OZj$Erjuq- zev;pHstDmjrrsbgcCUq_aNoyBM?79-z(-0~!sAVCKfQ+*5`;iWk>%w_81x!G+tN7o z3xdo_*>QYg8A(c%NOLoNKM}kr`hnkg3vtoS=#@D#<^+^7PHTbn%L`P|1N1!NUqFF0 z>Dy(XOoh0Cor69(IZCS~2W8@OVZa_S!B-JSorKcY^0#I+C`4f1&tiUV_PeQ3wY`p}IxN$&x*i>aHNvdzDYBZaPPQQJ*ZlM-P?7f>o6>#&V z>86Nv;qB~md*OJa56DmBwQ==?+9N^AP>p7Ke4dPW1!)$ATFMo=vRjhY0UGmO~4 zmzRL}BZ4d0nRq-(0p1crU?v;RyjU;-(|vGwE9TDpxyg9-xpzVL*C`(03+MkcxaX<= zxEBM|4ylT}&@=|r5lBAn9OZa^Uy!2WowP}%xw1$upZJ&b6)42Z)M8O`f-D14ha>}` zVZ>3KmWii`CZDui4)%3B)}?f9d5z4HumC~LxE@KelOy(pxbc1H9$fYtZ2z;<>{QLy zY4F=+bY_7#C~VBxLw^e2%(9e2#}n2k3rJeyJ;y)ig+HfUVVPvZvoJ8(TH++BN_EXtsCfA}_UT82na3Di%G!q=NSGDa0N!wq2> zjzA(I)>^o-S1W8ueHMmo<-WWnAZ@5LVCeUO4K{0l58q257FQhxBZA#socGfY#*!sm z^gEuu^A$Rz61~C!+-N3Aqo7rr)lOM}M#5eC2V(`i{2bQ(bBQ-9#tvNSNSzy@uYPV{ zPM`tQ8dXhwWW!RIjU$A!z`IK?8FF;I3Chsf3{PNg^2`Sa8V%ObfhUM#X5&z9Dp(K# zUz%-b>vDNkrOaS4 z?TD*&Txyy{I;rj)1t{?&o6L?j;Ba&OEp8GasNsBWmMdh)hQne9K#dmZV9g(ptsOb2 zlln&^)&-LibHKk6?1tgIp^+BU(zq1!&dOBwkVaj8d9T{K{no|;!F@;OhKzF)IT6us zU&kf@uR7??I@MaCLv3(7hcHdAxnEct7s*w%Lq}lz{exkhbrM%QHMN@zT)Oz2lRvLG zZIR>H4&yoQ>wsqk=SR~UDS(NrmRbZ?uNuIm@S&ninLp?nUd3xYQ-r{Y)_mr0iW?R5&3BN}H-dVEt7?r=@&S1yj(r<1GZhkEY#g8`4?b zqHC?T-W|N~*@@Pvns!S7i*}9HaBL!JMx75wEC@G7TDmy^AKTJQ?vfv#;z(WUB@`6n zlXG2|_-ufOaMLYiOn0~`iB81FahkXzzjf;ct*i4>QCyd~jpuyXdE4WAp>juRL&)N~ zFV!YBTON*tp#2!uFIn6|NU_E)#L13~Zt17g z5XYmmli!|Zi{L~CI#lB_u#t!Gs=COk7 z0*KA)mnx$i|KkU?3QtgSP5Ov0g3*ErI)amyz_giPoEq>_oiC`8?E754^2WQFwDpqB zaqFXWL&R!s$k^RRJg&pImc&EQQuTnCnQhl7NV_%U0dWxg7m zckyR5l!ClV7+H-!%Pn={;eJ|Wkqr4%I50m~d;IGqcTO&w{FiduUBNSUY`ya0m$&kK$>x*2!gQ$4W8`DA zL}Zu2a`-0~VPe%ovaLoVLO9Xa6YUr)82`OLZd1t%GSP+U$oS9a`v3nzEg@d;g#TXK zByCy>Zr`IIB}46vY|b5|-4~-M0=1%L8*M+voxO&UzH&{7LkC@+7td8TRSRXqSieeo zNzi(^tl<8}IGN{C`8e}reTOu*o8QphFOd}+ZYeW*au%H{Y8dX>cH=+Z>3>}b)`QY{ z1eXTLYfLV%<>D(5%_+b#Q?hqWd(XmeNS6Gf{F^E90j%RCCCaIGRbXQ+-^gI6=lpcu zy|e;_S5Rs{@9T?_-_fKSG#57S!L8raHtV|Gr^bH=k2wz=R#U1io0< z3CzaGksUN{UYK6INqGk&d0kdoUArukG`U53kJ$2}hwwjnyt*0nwLG(32TMDp8p-# zzI`-&37Rk7C*_dp1*M`EEtP5P2e;?q!Wx~y;yx^7v#>zJFL9OBt`54RoSi^LOP!>v zkQB7!23s87BI$oO#`~)LZctHz{e#Xf;zy^Gy|K_NqRs$|u({tL&+5ZX*8BxbkL8l~ zRWg@rp3lW=0(vQh7X`M4*AyZUi+9q?vn^v3PkV@Do>4u)4l7!0^1YeshzB#;r^z1l zlO4#@-qY4z&N_SYWyrpCqx61=_w_Hr$LSwik1{OGd>KwsOHDER%tTs<_MN)g`^2Sc z6Gn%j_vOpbgC6F%bO>KG$q9agJMQ52KG^s*C2LlyfU#i7i*nz`p)MD8m>v1sfRj}R zRYz{PQ2JMx!;4FjQu%~*y5pG}5JX{cL(6vrDo+=6&aM(9`Yy8Les8w3@mAFKWjm|r zLk5q{7^HJSpykef%neE4@A*hlp2pne)En<^+6b2I7cYqThfVZ4-QS-sAhY(=U|7vf zb@Nz%-0*nJ_g^b~iA`~kUX-$2??VqHdJptc;f6W3Z+BX!8KlcyzFw~Ao%`!-n;4GK zQ~s@IDZ+?CwH3o_{;%p#)CeAXl`tA^7t~xX7_8G2Ad&ImCWHsZm?5@%+io+ulf353x3;zC$KuM|uuk=XW z+U5=3bi*qhJE1VEKhmt$O>#e`<&GqQiD$H~r$nDH)Do)R^$^y}&4pqDmO2Ey1E5 z-uZaZ$AXz@$nMxb!)>t@H~V=nbjE7OcP|r_OHIE%`)7UIEJxZ>HY6xMeQXHzjP@uS z82j#%V~dTZ18wxYv`nl!r}srD?|c-iL8A1q`2IC2v8PI= zpH^m?{xiDaKfZ?9r3*Fg#w->y-LP$?;rrFIZL$e(;eA$}bv?(v_X()Yc)x*^m3jEO zc5YCL_Diq4juP-m)g3*p)u)%x-%(MOLZ$y^FE;l$jB78ju^N=oB^zwN7nI?<0^{{? z;W2F4&V=Rvm%rN6aqU9&=S3!=Zq8sw57RT-+|T%VpYgZ#4eNV!p*0$Ex9}Whu`;P-o()de}!;DD9i&Jf`1YwJrp6%i6Z zIetcK%YXm2bknI*f&NQ(2Kic9EL~&0dV{<3T0S_&@V}4o^FQqy5^(BF04+#sYryGK Yf!+~@Mu~;sU$k~^bJ?1;`RIlJ2Q}ugmH+?% literal 0 HcmV?d00001 diff --git a/docs/twitter-02-sign-up-for-developer-account.png b/docs/twitter-02-sign-up-for-developer-account.png new file mode 100644 index 0000000000000000000000000000000000000000..3c8024e7605b6e30c12333136af00fa8546ed847 GIT binary patch literal 292264 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

fo8+}$#B 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 oHvDwhxeF2JLPPX+o(sPabTY{lwM(10r*2*8l(j literal 0 HcmV?d00001 diff --git a/docs/twitter-03-create-app.png b/docs/twitter-03-create-app.png new file mode 100644 index 0000000000000000000000000000000000000000..06e78f26471ab5cac59f4c5cb4551c7f32db61dc GIT binary patch literal 347551 zcmeFZbx>R1*FG9tiWYY$#i2-n7I$}dQi_*SC{_v~fnue&ySoN=DXzsGiU(SxSPKL~ za{0XXzH{IC&HL?V=Kg&r$(hVKnUlTNUeB}kv-V0NbhT9o@oDh^005zys-ivsfRhIR zV0qwTKb(PzZ}9;D1ai&_3cAj=wg7-?M6wBvslg~^j)lIOQxL8yURQ*Ekp^DA5=k8Q zGOikP{y-dw;_+BLevOr)tksMWDb)vWEW7G57hBTf8d(14FZItT-Hen#0C5q?a$%|kEM^^j=EzuF8!a_0+xT`g^v{6=oPl3=$BU0!Tb%&* zH^>hk0|?C(+KvnMZVwO;3aKF7NgO~#@Jj{eg9AClBY-a+kede(_ygn5V#A{%bxFe4 z7&MwBugf1hmcNg9>{#}`c#K^z2jkotFe1#TlY$lK^L)MmA8r<>a)&)o^Ek*9J&=fI zN4EPjN8roHJAxlSHY8E6qJ>BC`_?0e(gpiQckQEJdGm3zgnxm}T5e>a8W>O(7akP- zg2!8V5q9zCV;MG^@Af9X=)a~N2uO%ZGyVLB1HL_ z8AwHoRmU~3ov@zf6fMnaKtCBuT|?5SYWY=b{^l9kSpQ?;ERlM%^Sb_*217P3AUaO}O+Rt37=>!L76{@l{BP23%a{E%$n3DzW? z2*w&EW&%Qkr5JBqHnj}Dx@XREs+~jEp~5e;ZDS2W+ep>BC6_*3g>pzn1&cnBqm}%W*IbWe+(bK%59KqhX>MoJK(U2k|@|DG|4|z9sm}L?}kC_T-T-N!Nbta(~ zql^^AD$cZ@@hIHmSFX6|yrPTn7aQx8$yzqSC~Ebnr(t9a@5v-du7?Y^MW~5Btm9lW zOkOoeZL{Pjy63tlPb;;G8FVUM8AkK?D<{y*G4COq&QpoXxN{Q$&3H#M3?_flSJwN)MFjMJBjM~HQ_JapYac$}<`DHe z`MJ=gH)xV7oARsw{8GxY&@sRVTOugCpU74#FqEM`qfYer^W)g60-OpXVR}C6WF4Zt z2V)p@$P8B0+FZI^phq}=EQ4xQ;b6=xvsp2r_bFw8gJEu9mPnrMScZO&58jtpvTz2y zo)T*zqfMNUkI05+sF#3ld)@RuX2T8GThj^vYN*Un74Yk@tq4Fx{084F-#na$A5#`f z{47EUd;cr#%ddXxK~!frz03rfn03sgMW1MD$Dg$3*uN4@!=Vh;*CjFzCd|Wsi?!DK z?u>PrIOD60J30dUSs;-+#rmhpQXEOF`z;Y_MUs$^X;SRhQKrnzpP%o<+%N~JQa_F! zU@cb_PY6{d!4e`i`;x@!63=Z%ryq`pqLf2fzCFX6OTQ6K>|dSk;OLY zX#^I5$u<wW zBkn#AM`RDY+W|x<3bBhNqN~U0_k&~c>A3o%I4da zz)e(f6hqWp6eC7KP#4+~^IG2emP)WsFjyg=|2%9oOet(3OogB$je0I-)P7&cMDY4K zRB$s^h;ERPjlKzF*k7hmxIrB)iZA+@Hksz+dHb8+8)^3R4q3LHL#?AXF?jEG?1WbA znnx)U=hy=Z36<|+_hX;YbwPeJm6VkyI(PoGoI5FTEx~ZucOZ4pZ_sk!_;x#yzTdmQ zvVZg~Hsjh{fES%_fbxhh#!S+Nrhd7~(wOatymE7PUT9X|rtMq(caQ0@4err55ew3l z5{rf|Oh=kWe-^73??ov^6W{Ky%&#GAH0u7;QLMacl(M}Wn%sCc_{*Y$y<_-F`O5O{ z^_}0{8j)8xb2upc0ZTE8Don%l!{1^Uw967p6GzHde-=DHJcjZ5Y#gtPg$WFOh_cf> zNjrKbOx3KBuhBK$RX0&LW1AY~N_+P<>sxE%dzYbXn(NVpIgusr@FTt#0WA^lG}g`6 zty?A9F27fPhx$%S^+{3s3HwVjol0821drd)c-J;v+n7*z(m5|}@LGQT-L*N}Z2REnZ5XoNfC-=S>yzgknXq|zs zXjVa0Uw?l+#pw9N8|*9BBzGNL9gNj05zJJ_u(ER8b?nGe!%`m?%;NSEoCVL?%{O&Y zbTV`DPXn9kn;I>DcdtCFI=ekX;!b^TBOPYNi`R>Hc>?wP)(U#Z&;lvA9)OeSD9sc+ zE~qH@r6Qp;USPqVpUAFl{^F-klxx(}5-!RC58I`|jfjTW@z^_Wq4yr^dxxXMyWe*X z26NS3J)O{8PCOGAeEQyKr}}C5Qzdxf@kh*47kKa=8-2bVpnsoy^U=rd zYVr7mSe;mhN0^6!$2Bbea`uu)?KhiPfYmfBRwfm-2>jEt8CDe5?)s>K^`;1*?X;l7k`RZ zi|c2PHg6#v-Zb5somByC!xviPGRb&jlc^mkCP@&}Uf_GAM9V3651n~>TYW(CQUzaS zL?v4#v>MO6!M}QAb*Jh35qq_Z<&-(F8MzRaPB&>31zm2BZ`Z4%G_tiKcB4NbqJB@F0L%sFNMent3A&F(>m10e8m(v3Z)qF@k90AD?TjN#(pJ8iq{AMdhP{EqgL5>2$Vq!+;Ahrd@g`ydh@ z!vgk~R{|Ttr{LKVUK074qpKP;%NW?m3vmZp5(&??AID9iU8C< zkG!tZ#D_C@?y6><001T1KQA;j{ikOD0Fi;8p{bX?%?D<84>t$rxAx3lAKmSl|4Xo# zhE}ILCOmB;3`HGqd12B{Z@p|JZAW4KX3XG31K-X~Ul3>zF0i_B+p)^`;+kmV%!h7*)8xGLdil(wE|x9~9)Up@Ztmd-P`n!lnmzQM=?%U_1!E zI0z;_>XbH$+eAFed~|fwDt6f_<){vLr8< z^@!!?t!KWjKK@Va40knJ+i@;_jPJ2z1C5ic2TYeT5_$P%8=#+ydR0EcFsGviparQ! z#yo!n?f&qD>2{9$p!M;eq!F2fZncmF{eX0oJ;UArFb8jmP22HN@e+26;y8`Dx-Y}Y z#z&mUBa^FEj?d2-($(A;LOV8z{|;H9l{g{U%yQ4J(XDNbDPZ}JJk}(>Aql%kI)G( z{^=>}cjAx`z{D^3epE_1_h1;9yE%Pf_^Y*MYG8AiAs2)1a7u31Q!w$uVCR+Dnd{7M zR^0pe38Hkx&n~vk_TL=9N=H$2OCR2U0OlEGAZ?JR43lUf2^w>rq0U+e(&XZD=fvN^ z*<1ESyC3dHI`c+i&bNU-eJ1|6p182EoLKIZ7`$Xrhq780JYum?5qT8!dZ})@bRd91 z>aokgD|qwt2|DBm$Taj4`8zjtt)~;|A{VVJ7i{2LP+t<}hgh;Qae6oSJ5o5dKPQ0! zBK|$xqn|(MF0v3iIKF4D*DZ0PgD+t1p2qy(ayMWhHWUD=6>oou|7|YmPLAhbdAY?# z?0)e@Y%Wf2LKlt$oXvgnllZmDlY6F#W0~07V5NA&&&wLIKdyXpO`|Rr!tKo6Hny4) z&dI-+@~MnjF~m`2%i4Jo9O1IYebft$<-mY*S#L;7A7(TQ$sh!P}zctf{V|~BZ-ukSD zy7x3pM>%7mOFq**LUXN*k^w9383{-ihn9Fniu`t@JxH8y9_xEK$&{>Z{G^>IK^be_ zmsg_Z*`Yoj`wTPQyI-gy0fTSi3;SA~F*!OV5?pP(8kJ-{q3aF4Z`ZGVEN7$&S^H-t4$-np)S_?2#G6F}i;=(h4CUXC{1R-!T`iB_LyldcUYL5%(4xIoisqhqL! zHlfK*xRI3N_cl7=BN4-yeRtQ)YT(}Wmv;rJqhBM2r%1nNfmE0teK7Ui?DI>yd6!Js z=hG+HPdPJV9@%QxB8D0oe=%Kqei&Wj^Wy2oJE#q9Uv>ioKkcIP26#C*2`PLGm&&Y92Peb44^0D$W4IaV~x zi0P1MGT-?aYmZBPiDM8tQKS?a4wGbK?qfEloGdhRuiV?;Sz`s?tVMjs^l~rH+TP{* z%j(|xTw*zK?nosE^Hb2yqztzZ0e#LX=vk(vMB<=L@YQB$;;E)2OE|0ZFKe-KAIlHg ztYO`u`*a!3SPUXojGJeKp-);*>+U86B_8=a{n_wQf!XqF>_C&3%=8p>Kk;t~v}!J1 z;Ygb_Kg|=4NWNUDl~sPPdP78C{-S3Pb$*Y147hIUj7%6)c#RP(;utPt>z=#7OO?R1bD@WAl-! zQ{br3@(e`;MWlSrRVHEAFHtm|B&FiQf7&ap{K2Vp$U10(8pfNxiYHx0$v>g!Md$ld zo>7RRAUsFcNlX{lf`a_H_A{O#WRWO$rG1_pccC9n(wwE?!POz2&vLsg8`g;`7ek9D z&M3QD@-xhO!>#yNK~x2ECFqI0&y;BCSa2f(M&OfSp%VIJkWYH{uSD><=}j{<2dOF1XBwku#=lq z(Yvbki24lu?Yv+oG~?&#A}_S!HbR7A3~||JeJfgD@jYLdN&F;~LDAU|Wuk9u?$Vg8 zui|3m94W#|NJ2*z!M-!8KS!S-%U&@RZ=8!a!V!F@h(6*NopZ)(%t{y7BkBB=^AnaZ ztrtB_PRN`0?0jMg7L&9q)(E~qe|G0wX5iJ;M+bQUvc2@ioXDO2D3;piEASET=qlc# z)%tgrNnL(XXBVu5k>9?S4 z?%nJvL09?uRnb#{gxXG#bbyJGdr9LiD7lO|dWR~>_JEtlZmJ^%9gkZo0jNs;F?sA2 zVYO4JD6g)DM{jK$J=d21PfR{jT%Bs+aqc9Z0bN04d*D~4JTxK!YA*lY`eQ7EN@Xr? zv5H$kG*X<|P>jk)X}a8c>c}h#6KFlI4}0;VjY`S)z}K7^$C~Y2c*ToVfxQ*@PL+px z-cWVRMNxCM1rsmRJ4SCilHhJUFRlHFuA?!BOrsA^T@Pm)mN7oigNp_vkS58$(VSke zrCQW-nxgN0E$5a~$tr3TA(ZMTx#T8L*DEQ&X<7<5mq^$)s+Cxfa{pA}x-xpnDoWT9ZqW!bTggm_q9> zXQV6J?|4?f5O?S#5^5YS3`k+YPp7Gl|2@iCP3925MHA47MwW$6#gfYJG5q8t6ZIs% z3r{+)4sUfqT)5~?t?#iA67Z9?-7S*rajE*#yJZ8{v*&xyR?$SWYJ7@V8vp$8)}M?s zP9Dwka+9i?-HC*!pDJ{a=1Au^>*~Ft*Ics$3;o=PQ!gvB*bM|wq+w9!ikihH0pbSK z_y8w3?^F^dM=QDp7>b(oj=L)0Dp`eBf_dY|#W)1TL`j0Oku&~`Rl+Yvm~9Eqq6Xq0 zHe%lM*|N$kOn5P@QsOuUg$+rSr^Mi`>s%1}8SVi-+kF$BF;;)Bqnq_-y1y#DvGwd5 z0n5;@G?(V@Gg5m?#Tal}#3Rb8baH9-B*%9@dfyp}7HPb3#bt#}25vr`T|UO8p;~TI zW!1Q1#)mPte6#O~45E63!^|d+aT{p6eMjbxUg3(C5vZZEDSPzky2kl5pd7#MXmuy1 z2}e;}Pq(U33e#S{Y`K%}^;6}P-(C9vR=l;Y@{Z$FS=5y{i!@aDcq#o-s~@{#Qsw#2KVv($(TO`H z5QN>$?ae{<==lO1e4l%po6Fb(21b_Joop;~PhA>~v|9K5Xos}6-F^R_%NUW6MaEJl zi1fI>ku73=b$%}rQ~J9d5~|vf@uY6PIB9ljNyeY{Xcr?_658;+Cw#&ne0fl&CjrcO zB8si}=fF|Dz_s;?Zz(r-SH@G)(KXiO-1R}70@M`c41HIRvp;588l@w1J>85>)!G{p z;<6d+@X&4ag?!}+d?}}~28TMTk->7b}UJsFrZ|p_&t-B=M;CZ633qV(y#q}G% zM>ujp7o-3C0WoxObRsj~hsrC%v%S(YlzPgc;xE*~@lmYY<(xf#u;`sN(@S;(SFOgY z&75E|{O;xrr@!3~biqN_lZHZnALUcaS>aHCre*X*Ol_1xvO7&UV8DdH*+u_Rb;Mkj zLB|F>6);hb}*nZ_~BFBQrjIw3{mCtQMfA2}^;FwR>~ zed%|^{N-8yvzh5$p$#dVm)kV}Wki~zDR@-Kt`l-Gx`=6%p|F!~&>^1q#e$7-D ze=RlITSGE+LhMq@;i?a<-h}lGeI=^)@$_LZN^64(MWd>;?4PNmWO>u9sa$!dZ}7L2%jr7uX*bk@eJ$ z8|!ZU>J7Qr2<-GPQT|^plGy-#DX2)YTwyWs_2pbYGD8v`{TUMvrx}sm-aq^DZ^Pig z%guPT!#GW*awVI@g*P!q)Sy1FL2aGyuJGZbwCnq0dgRqtw!eo-E@Jd+sa8IZF^1h&;- zj05Lf*9rRDP;*-mamewIo#)&c*uTL%Q?$OTf0ivi z-8HGre*;~+1k*;XF9Lect8c@7vmZnCK0{lBysLBm_zQL)Y^}kFtLo$b8!7*rkI6D+ zC{g+5D1{SNq)rz+k46i_4(ASg05PcHHLWVo$QU+shY`F zQEncvwajmY^5DR}dAw)cU3i^tg5$8v1DLl4SiN&Y!&hON2+TYw#`rIhr?X>n2)QBJ z^?!0Fv&wDZWaZh0G-17e@devU!S0~Jgmc2#trT~fb3(}tN!M{A$m>FyBy*W7OO8zl-pE1xg4g=b@b?} zh3-&iDjAaCPRs6f2=nuyi~qdZ_=iSL`9by{rPL72+qbkQGST6v6t4i`JZIUZdG{0s z!)@oWYcYo=p+HV-kW>wvC8P4MwYB6}0wBv8PSIV>J z@-NX!_wZrMrGCh)5`v$qXAx=9hRl^r;eK7C|8BI_zfE1iB3nz$+7UV%2PNjiuF{59 z8BtwW7T;WrkuQ~81li_celE4Ionych*>fb>e3VBG)RC3Gy8N4!NaTn~6$%}!TZ|Gm z2J_vw)ZId&zW975orcj|)?c<8%PupldKs?#+`}hW+w!?TF%Q+llhNGj5dHKbvu-?@ z!9i~R;{uQAR(9NF_~a{PeD0@jyK>+T^cj5^Ei zEP*fQO(N7=zR@Ne-Q0a9gj?emNAEdh{<@q)`krZF)(e^hgbQ}?Cv9HsZ3$%1ZKK{F z+3Ni?1m#gw@<^z!D1h8vB{EqT3P3@heJfm;d*q9$ff6@4_U7Z3R~{5$S*8=rYGxq+ zycPWMtvgOjv7J?~Zfiu*Meu*;i~o>KN>N3;#G@*b60X(oEAaFm&K`MD^-e?h5ezjG zf=%dTnr&U<6ezO%R$-x&T~>0;q-G?JVY5NJM0;zkQZY)6;py4)o!h+)!2Wd}E-?0Y`8S`owdlX2gHPhW7P zI^!mYms>Jyo8#F+>!)M1%M}ljK%U?>^rsO}hU}FpOnp52IJ){$-sheA;2#18JliJb z;I<{X@(X|OEskU+LhipJy$5nBH4f3=NlUW#i(No*8G$o_JgCyuTOAfgSILxH=n(4i z%b5l|_AZ*VtA~0zr=OmvTFyDVcif2HBiCL+80f=0B{;1>z8{f_F)~P89h2#ER$TW^ zH2j*L;iKe@8q6dHkDPN|c4H&8-58-h_P0gwUZRZI4eW+rF8XE`GHc7*^J3^?=?hf- z22zVquqsBi0;y;2+R^yvjLjSxeX0m%h~~^|4t0%jK7{U$ClS;%uGFl<^F{E!+N_4f zP_SQ#j8QyEzA!L`S8ivbr7|kOVa(Mjx%I1?+V(`liZF>WsQTGG{=Y;z@FE!hKDO>3 z$PZJ)eFof{kU9d`-4*euy$h85`>L8clq!Z_Lgw@;?QakJPhD!Q&0w9?9~;&YEU`0q zpp}(?b6Sa|04^{yw!8@FB~mFA#*4@F9JHG)olI*G8lKITH0w|pF>i2-CAbNh=?I4e{jp?&g%9$#Ad+um@3Q8l zEuZ<@hy6?%`khS3_@ujD$%i|-uMDU|&<+TVALk5)YMj}dzs)?gIN%w&uHfy_-U_EU z6AZg0uH35>I_j|o#r-vKOh$-@f}n47k$LK1Q=9uE?r|tRG8HIyS2*#6(~^)(JlJ%Sh> zqR4kS;QTfiV{T&!<(~H%r!}irON3`k*IeZRwURaKN8H_3S_j&%7ydZs-e=zxb zDoACjJ~0`af}wpEg?(4VL#9Z-yV$!ZL_jUC&t4S|`ieHO>w(7$)a_zmLiU4y7(1VU zl15VxF0tm4yVoWIP9MY#RI}TWaOcgK8}zB3(OG0NlQEoP$Dbh&bJOzyQ8%#Wo|=OD zzeNvXv==%Asl884^4>5{-5i7#A-aS0j&5=A3sW?bfhN7z6;6;fgX(0|53z}Nw9{mY z>cUCKn)v4nB=vGu2ethNur1;$ZD*C(HBegyi~YIPFx}<+2Dy~x)*4+t$GL*t9J^t^ ziPFv0`6{huLM|=F<~)!&XDKGgv8OD1ftBXkjwccLjQ znY+aUZT7ZYhh34~kYLR72cIVQs$hX!2{p}tqMJsjvBM7wXX9Luu?&HSTw(>f{D2?I z04wfTwmMy5iuo00WFkxcyo6(bAPw~hjO zLvoI>8|%d*?^_KMxcDT}>e(|%Lh}*%Y4n;L+W7)e))sG{p4~q|078G#?(OaGR0_dq zLwU>-ZpJc%znll{Er=yALIQo?xMmUyn)$10O9)be_3u*uo?8AHU=uRDCXRnj2ZwWA zy~z}wIBU&u9zb5g$q$oRs6ZCGnLaqQ26eDwawOBIR|@_#tcKx7zh}mSqv?pZJ*fm` z=vl*9Z|Y<9s_R|ZqdA5GW}-uT4a z8HU14C@b~B1D5xln2xNj>^t zC%8;PZbclh3c;mv-;OAKGX|~rovR!A5Sf&uWsi|`gg>x>kk5Sr-gkojB&&q)jQvN- zUWw@jjBgQ=Y-TQR0J^A|V(^B~V2Ai^+ie5~CW|g7zcEBN6+p1i?^m;NiOCA-b5T0H z1xdC*3Iw^0<#OqxYL|=0fZBI!)@E%dr)Jomf+#&R<)#yvFd~$vzPi@VQL_Q&GRq}x zXnfn4xqU$#{o%9Af$&B3(CHn2r5m5+PLDH;%HVv0ZeRgI^+7}UEX4gJZyB<$q` zrPa^2O$k}x+(A%M9iCqjH&@EP2FIXP$wI|r&}xr6W0@p`{-0BdZ5|i4=&suV>*`%@ z2-^uz4c`CwDQ-Kwo>?Xu`5Q1&@jN+9Hl$MPw3nDnXqd5|cTgBPL$$DqhJA=j=6MyQ%nxjRg{8M^W2+nO8irsLw z8){Z2cNJ!;%N|LUyAH{5{d;H{N{lNhLvblXSk+Ep3?fxor_fpm3aCU=sJwJgJeW2P z_kv}-m@4K2W1oN9v*++WzsKwj=z7-uF+1|q;?I`Y6Yxrx^oNYLzj4CID ztGi3CbB~G#(gZS1j0YC|RfQvwqb6(!rc_k^*xp0teum=U-0o>3n0bwieAY|+<;KlM z9DvQ$yx*H{3@iZ?1KM9`0?_@}FGF1CIqrd(^E8 z9ty|4u_sj*1xDW_%4yW{hE5<4#17s2TpH4kE#l^`*zj#T;1=SHGIYq{(0QG;Wz5js&BytFPeUEyB2(SHg5xW2>3yXb% zOyn7_=H8J>oJ=Pebcq7dGg^?iB>ep^H@1kCt)O_?$4vz3;q$p{rH%_^UiE+3zLYFB=>W-uJ>EvMkz7|>`eAaK&oxW zimjt3FebG!RGvI|>umb?qEcuLXkv;YIoVI1LBeix$&3?O&{t!g885yeAP(Jz~ zgfX{EqxcIBZ*!vpBifOcg8GfJ;im0JF!oCezs-*G8c;i`iH7k;K~qQbEkVeC@W>!^QoG=hNS5t-3dTu$Xdnw@CTq)Ohe{Hu4Fih^vTviVFJPSunuG8r!+&&eIb|Q zUH~CfXC#!j`Ixtc$Oc+~OAi7fPH5*>553$8+?iw_8rJ~T0CNw>T^pJ$bRf>#^&ss- z_3YW;*4cK9sWx{{7K!B1M=GY6g(spioQX{AXBx>p8=$}Ljh;4ugac2F^uSi^GQ7RS z+`K&zzZkFtlJ00m(wi0V7;{g0*pvjRE>V&X741D#o1`-T_UiGEQ+;Hiq)PSu6rS^i zws0GEo`<0*eYTufOtAf9oJDm^iTlO_YRNGncPj+Rc|fw%@cU=o*(yNVBGJtpfj#SQ zT7dRv?LP_>CZ(>mN*O_Cv$n)9U;SdSn(NqqQ95^G&J`jD*t{kQ3nWsw;UYH2P-nS) zK_HT(KTWF&XB4tYOg)Unu`t-zZzdJ20_vgdyOUO$DPdY*~Hk_@b0_+Mq& z%drO@_>b5LO`9M1JG^V;30+sTVW(%9Atx91dM7k9L*W?v&8l{GW#~(eu`c&r=43Vo z{tWzEmD0ahjT|&-LkSB@P6eO(FL%4%0U7;%OCfEssXW5cbjYd>7mXd-WzyDpMU6M&!ME% zAxe8)C5&57wyZZL&SDj`ojK{SlzY0>FI2_GL~)k9uwox`OCA_Arz3NJR#|hqey1%B zFN#!Aem)WvBhMN_)WBodh~7Ax(@7D2+&pP1$#lJo_5_0(B_^yaPTQQJ2Dj;O)Vc@~>8RI%{|GYuz?K z&NhosoZlQ=;gGB5CZF3AeGq?;8xY8bbQDB}#L1u$I@#{srl3_aaFx35E^Wlp5Gkx# z+q`;Fzc()6Cn3Jta5x<^Z@dV{s3c47U*gn6@fFqv08V~-`AxR;+@Hi|fi5l{tW=Jp z8QlZc7z$gJnJOKc%DW}%_i8fD*cDJDjp-2Ki?_U1s`(V*k5oTkC;eO5;2+aJoS{Vv z;Kt#}^O_2vmIouLO5e4?QaJhq=)Dw0J05aP7>d#yT;SGaY=O+p-I7@)orm2*Z17NZ z`X~c2bbrD4iGv6yS%1#;8%yIXHziab={JIKJlF7f|CmYG7?qof{`dm1k6q*A16(Cs z=_<7CXOtSos*R+-aT1h4?LqbvAN^_WeKcTT z?Z3ELzx%P^++fjDbaMkBX@m{T7r<(Xgz|OQi2*iv?Imz{x@n?F{^l;Ho{%!$mdFR+&0_2k8E8Q zt5%+YBvSDh%)yRnujn;Ue9?%F(J_4UKlJ<1+^;6~H?b8D;%cXmpqpoBMcY6dqg|D4 zG`izN^+%FzauDv1*qGE3Xq2YtROS+<(oMZ5U0CG9R;3G$Oz6%24_OEAy_3$1{W`ChQ;8a#m<`!8n{xwzc?z$YM`M_B8eYK! zw)hL4J<7B_<2*&RtA^P0URTjiCMz5b!O|Z(yH+|!C!n5ccgbTXXaMHUrl_J7e-aXn68+M5pR#?1+B!qYhoe$GsC)DKkCTywZb}Yo zNZYM5CcQpX<2W(SgSv22mX(;WXdA8<2EvZ4wttvYk2B)WIdojTBjO`7^>NDN2l7u9 zD~4;B4b|`68RPun?YCbYEsmpdEjsX%B++tgP*Glb1|2-^;WS)(RIXj6eEK z&uA}*nz<4|`(P(T4@%nVw`tYr_PEL2WxPK=#M)(>nqeWw?_Y#rZ(M!Bg8d*EtKksn{}}Bh%vYnHQ!=P~!C1&X2FzjB`hdN!fLJ=(iqVRB5b86!MALwJm|IDMe^UPOl`}gT*w4tB3no3 zR4~jfVn9ymT~|XZB{upy^d4A26LarWbX<-$qkOF+!$Mw_R_!W#_LNpHkXYk&*N^4% zc3ZBz63-65VVt*#fnv&7fU~7Sjm1CsJkM&n;g3pIglShcO+s~NR+4$mkB-^Tb`Bd= zqes1L_)zV2N2XX)eL_xsIB^A#;MLOBdnz8A>+{#nEzM#2M9`f-F3Nu%Dk?tXR-=+_*oGf&+SNYLe0WTJFgP+W8IC zini5>*)Y%1>1)fjFS0pPDw4w;QLWDgTdqBfDS;H*52Z=2y2pi=UmlVXFRphtx)Ni+ za&jd;54x`21~^+Ioa7tVzIPiHCt<5Lg+|=Jc3m1>BLMs+dy4ZqC&z6&CWMs~) zuVd=?D~%H~yz=$MR8UaB{REIplcWAoar4lWq7T0ORh2ZBGOUwdUW~`5^-VWtDej6m zUrz|=iXxzJmP}5E7d486 ziiCnRs3-_Zh;)sJz^jyig0x8IfV9LAQc@}{B_bd#(m5cVLpKcF9W%hxf9HL_|6l)F zE*A@indiCBx##S&_dXY1GRR6Z`p?PC&t6ST2 z4fey}64qE;%&(F2+IMdaarf<+02GS4yrSwo{xBOvsV9P4UK$?a?)J!N6fe6q)Nbt*aqyJ= zo3cW|*S>_xL$3`)SEuF1Mskyu1G^yZpJ_rFPMMjvh|Q;IhrryZ%Wa~hP=~6mMCT;< z2rg8I*wriLH2k>ryI4_@qYCX2^6MGWmQC_-C(On|^m_!Csa!v0&1Pg45R$p@~y-B|5Q*+X1P{>5G1&HrOCY^4u@&&pDpuc&y@7U{B* zB*;MjcP8Y>(sqzU=Eis4>r9{Fdq)`5t|INFH?`)xQ&ZE6&?vdy$ZKDx;@X^V1$Nhgm(MHdOPk2WgljA)rJ! zj3EpYGc@e7)AA69pqjzw`WPN+-!vg#d^!>k`I-C*PGcJ8a5~Q-NIJFBt`ekMi)RVW z+)N)mJ!CRF?grG5o2rdJ5MufMjt*`Qc#O}DG>$gA`6S)BmyV9u*S_q-sYm*ut365( z`#jXNe6TLCKl`%gWZRt@J$c?V1EU{5i%QTg^wTvI9A>C3&^{WD1n9%VLVYrRr1*YU$?D&&}7*7@(WPW+%FIO)k zeHm`uhZEO$*QzDHu=MBc+_Vc1+6D$sk zfHP|gU}pcgHP9kIxRxziu0xr5SfJ+WnD*Q+*JFKV9-)4*CJO0dr{#*er#Tih5%ffi z4t}!+|N0-i-`{b4Gbj|2AYgO_sd1aC<@v$F6C&vU@*?}UYuEMT-JKp|X_52u_bboO zV#{Py62DiKFtV8TO+lzc&(BfsHiokQQTyTUXx<>G_lMrsw_$)%g76t)dTL5}yesNb zj`;s$yP;tcQHsS9dnEDCB??guzP@0!7v+}c=8Qky&Mzjsv^(CJmEPDD6i4Atw2n_u zx2aD2Aov!cOIJvBb~-I??d35Os5&uTE9Wuof+EIgJA@1IXED63RkQpnkn>-?gjYbc z%=vkUiQ1fw68Y}XAxjIJ&fE(4bxCg_=d0{;R+z=B-|le_p16wwBag=|sa#+F3y0o9 z-anl0LLA(fkROZ_tmqF!NQ4dN7~wssJ2nUBREsubJ|t=+7uh$lO*gr8>>huwU@i;% zj8h3-Wfx1le_K4ydKr<-xiBeC8K2_RyO}uA`V=qM$H~U>_jn`C+QA_$j+3f<41A%u zR&K+@%-q~LFH~EL3OICie`oGlZMg#xk@;9$T>RWXFltLVjft6K1*-t+B@GRY+NNaG ze`8;Z9z|ngI<9W&Ed%>PkbhN@Yb!L=G-gtJq4B9%xo+US%&RxgIhk2j8zTN}da;Bk zE1@w5dtMx$#dTIHtB0i73JBbNdSNaiw;Q910mzwKxqk%>tHdcwSBvuZFC23AoIv`{ z_)bh%f4t)ApjkW{+7X!&Hj$!5el`gCG5vre^72EpT|&y|9{RD{SJ1B#3NDye`zg8h zzoPS7pQq?7ar(^Ly3#m|x^gXrlhSW$QQ2!lR^xW8e4M9=&Al;&b)RdudL8GYeR4>b zweJ41e*LL?WrqSN*0@U6rf*LI*FTq2*8VrG zYGR8=Cq>x}jAsH@S1tcbt*q^w%pC2JURZUbF`Uq2WnE1|kV1>Z=M%#@+#F-ocW~SV zoP%IWtN4WU;FsAFe9|Ugg@J343u+xVG)&#;oP2!%&TKK)tLU|C6R-B+1gIu+SY6 z*H(2@W49&2h>Y(s`V$|-*&s$)ma8SSB`g+5y#6*b4BwwOCCtt=T`LzQg zw?f72>+c-@VbTx9}? zC(1yULY~_WzuU27VlgXZR{kRP%{ich9K>M+S`DKYw^RAayA& zP{-fua4SXQ@OEp?o@E(Y2wkG|i$P|6-6AvDzV~Bh-zWM*w3{E($NgbmRd-QQ(c6^5 zFG+^{J|ORFa0dyEGqg|PO_StpIjz^)N4z`F60w(CX#UdLWSAxXw_&Fk8|}#cm+j(8 zTHa<;v zZcpx~7H{f@%{+;{`XeE${#55`82f7dEY1ttVIC+RWj zko}!w|819_DIvf}eJ@~!X(n2X+NGn5ddFbg4w@*C5vx?Wz*=mWd|TRo0TU>=_1rOM zmp8jCrSd_1UmjHJXzg%oi;cf(&3m^ZOf_~psAh!ng$2zkKA3tG_S;PcB|8IG#~`m? zLUmtc&M-0%D$<|YdC%dH&~9eY7j{2~FiKv+nZ2y2X`A$A};`a;<3X%NM#C z_i2aI9Vjf~)-U_%X;tnZ%pRPRMrNPH7+pKQPz3dT@a@|-77v0H<$LNkZa8>uF2#!x z*lueno+cid$h=Q`;k#n3eQe-#q;eS5tdzK;ONlsQ#aKeePb&W66*}rQhxfm96 z|K_k3k;xgv=vPN($fc48HUt2kYV}_hassnX^88 zZ{w-aIjmCC@hBFnY(oXCms38>?8e0eeGkzgf3e^{X#E5_#1m8F_co{B)-1w&+NF42 zR$umd)Y!WskTD)jZIzA)8;{YCf}Yw`t63oV$_$xrpRIc6-SqM!Bgu=4`SRtK_&;>B zAN%)cX!-d9`Wx~rb-#L2x>2sI@bHt}8tJ6LTl)q_=Lj9irS)}WINYpo<{B}Jc_NFW z8bLWwV$S~rrwEgMK(VbWPzOk%BtAym91YIMSeaQ--YeU8FA14CqCehOdD$X6*^!bf zFNz?Oin(N&O6mHr=qmgbu4E5(lV(RRssk+-+@~ODim*nVOAQYT!7T)$cO|apx~7LI zOeKs3o7mvQwFK+;FE(Ok_kLt&lYxbo%u!F%Z@HZ3zQPQ!Mg{?EWiHIj<}u?e+R*>U zT=-!8J8tU?f3%(zvv|H$qU_<}p^$IU9?4vNJfz~hUD`3W=b*OboCaf+#dl@QgK^M* zBgED}@KzHiexE`HHDTtt#EJ}41h;gWa`QhdveZ&iHHVo)C-|r-D^tiFB_mo_$KFSi z`lmS7=IvSxywv=(VhfyOQ`OE~#SJL^@J~DsCPXH z{GNcDE`8tjVtc0IvHJ|@*A8e1`!v;u-4E>WjfsYnwp2JyO1H2|ROPyRiOA9|416mg zcW8fpWiL~?r0*cx%*ruF$-l57$7RQaA1*mdWsVc~8rHv^;V^-syHKTTElfQvj8EB< zfbkL#>a%IfkZ&$EcM4)ppW}HhA=$LM2@hA{V@6S8-z``iYV_qDnH+Ox5(=*QpXQUq zrcW`l%STXO*s4!&(lB;V+ezhy{01iX{;r+;3j z3=#@ksTg=KnwXr_dxbs?DPerO7s^)BSD#sCBht(F`=#;*ZQL8@9RF?Gaz+z>542Ge z0mo?x?5}oqtOG+-rK zQ-*N}3oA3`?^VJ1Z+6Aua`$Dh`z;c<<6%1q_R(S)gDS@;)lr5AI&aSoSE58S-SAOf zg*#BclF&v1Zcn_|hul9++G8<<)v*bVn}&~;?siz=9ZpYqfQ7kiBfMHa<$p2Pq&qOP z)=zwGJ1eyHQ3qSlcq6L98VW7h(B=Ohl52yG_#(6-d9`!qyC0Oa{tdorR>F^-VsSBf z65;)hVGKrE?2JL}RHLTs2B)W4y?xqyldJawuR3+}=9=#X=x=UrKGoG_jF#HGZ|J!Y z?75y9>a>OM3o(*DQgVet1&Pt>vvAdUja^OXPNhd5<0BYR9fb3=%7Wkwy}=#Yq3YlTkP+HWLR*WC0bo-Y?EIe z9vyS(J7-<+L=))d5RT0k9Qgm?*Q0!96J@b?7_iD+u5Qy2nEd#&mmg`R@sa3!U<7Tt zUwhK&Il^;l1+D0B@$pmpLbeHiurS)W+UMW|(xI*|0yfNdcw)W#Gsi{n>kT;V@cXf&yu5ju* zUG7iuLM5HPu7H&y*zzY776m)(jHb$Mw0nIVq0o*m${dqIe%To{mc2;<;2fe8}qD zclgeyN@32{SgiCI=n#D4AnHd*PXv6K3#I5eJFH=bsdQjsW4rWyaBM7E(q$DKm`&Xl zm#6*a|BWH}wXv|U{Jo(e6L5`H?CtcJL%*yDr}y?FnWNsv5=XtdW|M!GT)YdT;}QR| zoqnWeH{Rk!SIZvMqH5ImiPTp5Fm9e@==6ak zM!*ee9Q4hOXW8KCRd+T&YH`r6N|>V5pLDH2 z?d)2f^Q3)rl}hn~JeK#kSBu>i7L? zM_^`a$Wnl|_Uf<)-w5sA_v?_ z)E-p`JM4&ud!q%${&jic?=D&iGta;XxYKhuj@1vhWwNx9o1vru)mV%wXl|Cr9wx&7 z8hOmU9zOh!vPIJRk**={Hh@2>(DKw&PPg5o`jMLtA+Hj@g~NMHJ5-qt=ctuh857RO zmlQb9-6I^-%fSumn?O0oGQOuHS2CLizJ}Y2Q=B+#yiq79d`+R%08SH zC7p-l2&oJTk56`x=8}RjSa}&_8gFtPDFCa$7d%aSyfps!;#Ac`Ip!LBod-<|y$`lL z5c$?F_T3yq?=1X#o2e;~_FBblULse-k3zCcx8rZ7TfArWn*xq=audz?$ z{Kc|YsamXQv|=xhQQ6#EmB@B2cYn5KEI1x(y>71`G-F6-!THFB?tN_S`EbU78v^>s zVodc`{QK=MnOBhqAr3iw=BJ~;(pwjYddi+t%~%$n$x#? z$;YJJU%kHmzAcNttz$Pw9q#6~<8GkbeBr0l>`j8M^lr17Z&jwt7}Za$jlu)NJDac8 zbT05_56lc*gpEWLmcLeQ}t_*+D` zcc!nB02aK(N)Ds<(6C&nLs{*V#nG=^C-W7-Wj|LvE#!uV)a3%5;#O2hzFt^G5}~Uk9q#QRu2X1u**Yq3IAXx!hLMpQFF_e{sCkS=FL80=DH8-u9sTU5BS^n1B>NS1#myI7R(}&l z!wD;}Qwo{$^(-O+I5>!b1unrZ9$+x&MNa%ekF}#?dm ze3GxbtGfg1V6R#Nd9KxKEiF{HaWj6KupILMUX@D$!4JliawWRE;<0BE;LRVw@IF2S z3=%OH@dtYGgPgi|+XJU5o7`oy#C!pGHKFN0naT5DONelDxKA7zNp|(-+y3pz(OJTE zi=s7*#sP+=Z42@#u&4!tjAoxcs6*lebU29_cM#M+_?4DofV}#6&GONB~BnB>0@?e{AhC#-9Vz(|5G;$geyr1+?S}YNw^f^)< zc?=Jk+-OV_`KPHYfB)V)wnofR)O_+97S?Vx@%zlC~YkK^0)p2o||ISTP6L0P>^24XFkjhIIk ztH*_BR5o%v$zbv=!}H4v(-*otDC}{^OO?bssUC0je6)+PfhjZT6$6v6#Yt1<9jZCB z*EG7mA!t|21cp>r0%^#a(2v~C>9;4HWCQa;FYH|HA=do0P_c#Sl;Vy!vNXLTJp=IK zKeqfH#$>^-_@a1?(oRu1Th1eKEv3~K@(NQB@4V+L<7Bh9Duvb7uKqYA`*a}gF!!;< zcZX$L^b2Cg;q*ASq;;_^;yXyG7CsCIZf7fkK@f+{SE-(h;cqHz8HDA@Te4c-)Yy`# z%h^au<*4%O<4aL6m;OgpuyS4Hl@&oF0_~bBf8}qTXJe@*m~%uk`-&_$EY5 zu+jYXjSXAv=~`bAE6mA> zBnE<)AbESTIZBoRH=g>#z}2FVBQ!Sn2l)9YB1it5;G@JCxs$u|rFOX%c^`3{G3MlcFa<(?z=2ZY=`_MS?`w-@S_ zN#MCJ5I4AE?FKjKtxP|RyVftHiUTd`Ua(K*J(Yy{Yfw+p97IxjgQaZyA!Eb;_KV-n zne_nHKy`L@_Ox5KF|eSdk;TOlk(Y#=nqtWoD&E6rH1g-?!Hjaz@VedFtI4W!x~Y%M z$cdQ6^U5H1>mO`aP67sx%uY1^T7|)RzagP}yHI+=nbz(yzFf(DuT^#9%ZoA!+D{ zI;STFtOHZ;6y>&rQIydojZf{aQd`@#jG4>??<;T$L~s@@X-Vl)hY8AEnQJ$2YH}qT z9ior%8TbpO~^2dV>6Q=1~arGYkb}vxK1+UXe=3PbPG6O2eir9Z39_q7BHA=p`2k z|5sAM7Ci|IbKZMxl@8NC(2Y}xCO!|TPJaG^osHh^b%6bWoWKb*{7aKKkUy{D)5b0N6PP|p_DD{?Sj{85I2h6arsc7bN8_c7ujaLQ<)m%NcZCOjQ5 zhcgYCgG(a*Trm>D5ciHethD=fQ#8A@kVQ8=u&zQnrXZ^X_UR*w3<&a}(46==GJmvS zKQ;q<$;ilP^1gR8{Bj>BGjm%})!Zi_I`w8iIH9nP>A|rf76*m|Sz|@I0U)Y-?%0_` zBsOeY=(!67TkdrK57GynvRv~b@ZU3gYT`EfI_a^uyCT-w(xDTh;da6~Yf^lGLC(*= zeJI6DB2d5oR76zt9+IGT{vySRP?wi?nbFwO6ji6KPGld6<>q@uMFnb)u!y%7#UW=1 zW1yC-$w51J?6N7CD7AIZ!-iarfR(1)v*>v77PetvLHN%a9)@(V&vD|@Jr+0p%!!uZQ5d>=D~w)?jx{bX9H zUbnl2sY0afWv6~4{*8=^vKtdj^bb_u4snNSo}2!9S*YGsEF-)&Fu3fXb{R$<}%;l)vJF|prY^RgFP#v4>cuhEZDb4xR#Y)-v zX!0P-i2FDBH)-kb?sAt(2xnixZh)IwbK$Eow^esiSEGIUaSqT7qqnLNX1VU_Eu0>Z zkJo|_;|;hY##bL2=S@}FPX-bT!|^fY(b;fD``3FaU!nFf@tpBUXPfL-;79Nz39ar!Uj97+$LIWQ?W(A^>C|5hZdo%77= z+O=yJNNQ`PZk&P8C>ND?iv7>0Ai-b?V!;DvzPdznDQFd+H|CMS~{GUtXi@7~XL`g@sYzJzdI!gW-W zv$D2EJbDBsb9yZmCM_kk4{(yqd9h{601X7|)P`+tZYFOaL>A$<4)AEe&E0$k5j1J6 zUtKW)w+9;FFXAD>%tVlN;zd|H6?aRLmr*FyZ6(Ai74G0BHQQdCLInsK=P|%Wzs9p4 zaTZe>M$io>Y>aloPBc3x*FQ+l6^EIB7s6He@}sz?gt0R{uWM)C&OBr7k=giDmW`zj7yDZ&f%~UeQ8f^KAI*O6veVGUzwz@ zm!r%BFn|i z;)g#P*9gBj(Nh_1#Ia^^V&^GJGoI%Pcfk7EO^DV23{A!qe8tQ7HR5$vK)?k6c6HtC zX)jGQcvrdXb?WDjr3z7%dZQgL$-f*uXlQ6)FzK0V@GdA`1C*4G@3#5)o2kZcAFj60 z0*c}9`nq-7(yywjs(fL04-XzWaS@SMD6b3{-V401S%0czDXUGf9XlIaq3ui(;%sF- zoF|=xq$)XH8wP`oo`?wx2QDlucY-j3$KCh-@CpY>VW*f=*j?#|RyZ~y7p2R=8s15wel z?*9KsiJ-G6t^cvJ^DBZd$>Q40{EIivu}6rGEfd0dxVN-@;fV=FvSPdv@SnUFaC7}L zciJwl<42>z3#Jab6elZu1ZR*Pu-)MFm8A;@oo_9?T>XLQA@}`&5ZPgso`}!zYP?Pu zT&=@Gx&+5z58DKF@OKHX6X1@V^;^k-29g4Xj$zjd=*$J&we^@=71m8fzi#_K@o90E z*6YkVluMrc=;!sh{X5W2c*2K`>_jI}v0HoB zG+^h$66@cCSQgnff8*n9K-2XzR=s=oa$46j?&HIioV4c0yd2()OAdeVOhspBlpg@X=GpcjY} zKg)GP%kX{Iz3>c=^Ye2+R$)niufx2&Y68%t&e(&FCD1c@G)LicGyGV_4PCBH0Zs+5 zE7y<&Jo*3#$eBQEEAa#^+}TPZqtI^68V7cn2NE7xZB*yJfZKyXNZwBVu{fRRkP88^ zcpZf2I9LKW0R!)ltNLgf)*}dKBL#o;06pV!kWf{B&mB*^ACFl#M&g|a`fjL@_(Nfs zY0uMzQ0LWTt3_}<;w1A+oCMF_j}7?qt%DX$JT1w7o1h;ZSgi+MX`{!bwp)E;`L7F{ zI@mqtgBgvRz|zENB|WyHCT@ep!m|FrJxo8U;cPYKp!J5v+m2{<694{wb+-4Nx2u=G zst`5W)-7xz?2OS6hC4a!F~JA!?mD`>?J+;LoVO74W}d^Yif85J@uJSb zloy6b7=fWT!(JeyfQ6t*_uiGHqM^yEsbL0G6w@3YRb>V$WO&F<$Tik^FAi!5c7MW! z2%4aNN36tZqRAbalf%vCv)}A_l!A;TrI8Urov&rUIFPtqkHM*_PlAB^_5=Y``hMkw z3;}xtyrhq<`ddLH#JC`2tKJ6m!*Js;)0U8H|2~R8i49a9b6z}SMFyei=^P^B;${nf zgFSl;<^qGSGTw~49osbzHpUJ7ekkNEdUtj*g&{o@C`k+3Wr+4cWlkgK$qVzP9ULvP z=$RmXgG%6FWlCQ&1@aVNSsy!te!s2zRu4W;!}kgVGl}@^zN3GPLM?v0q22^K5PdgR z-Km>Ih_%~@*|nwu+SXEjLGeWrHm~I`)u)RQW@~ujL-F2gU^J+-4{zTOpx_7t_rVy- z@!>u)jP*NcVNAhCsw6xF{`0HXO+32pCC1g~K~PZrGo0N2q|i$yqU+ujk23mXq`gu0 zh5!woZtB86fk$0`hCOn|pRH;9z`Tneg;Q@G;Y-2BpFjdngn5@)FM7fRf0)Qn8ZC3! zIq?VxcTZe#QyakbJ|O>mj+YhX&)w2EIR9Z^>z)oODd(}t(Y5l3l3DD zy|+$=-(EZ$&Mt_3Dg&#Z?F@nTuVo2U)o#lio*epQo=8m^KhiejC42l;^w0~JwX@rY z@6ne}@gw{sV_{XVs#XCzpnL{z*BGPJQ>!|>@aYbma~ zK}n)apR{G#zdz2-PXM~!3I3v^ofMgDJ^!9L&w^gsSzHtW>CNNr?4+_CjIJ1CBA;E(ISX z16ZxoP(X3jugUH;1D=Y4WY8+0u~80;0+Om{p+E>d0Xk8RT1p5AWX1Xy5-3d2RxKPT zvWuW6;ulIv2N(cg4@eUrg(Dx7)C*e+#S)|b*Hbd=-Yq*7rBP*fEXe8MFfCS;$_kf{2N-4vE#{q=@J0~Yv05b`n zK%%Z+_Wu6h=@{1GhYX{jab$xx`VN(X%*lwh1X#VSamR_@xB14q;~!jg{45Lh|N72O z+f0oMmmlc4K6rZ%B9WZls!E2`G&IUeueoD+x17^r8VXcSYZh&AFAXR2Vu}&rD27 zSBu?%APC4A%x}k8DIe?-XU9mMw%O_j@C3$6Oo(b4f5IWm+L|&(?)*M+;fdPa6Biek z<_hA2B--zWvQ^5w*H?;jtEw0Y_&q{2xMuqDJ#g?qIN1IRL=~~#>nQca9U+UJ2N!r> zND~wiRe|=Ka=zg^dI=eq)2->UZ`_Ckqf~?cVP-@ zhX6flr$A8w?5=Q+HKDYw=aS>=vrx~NC zCBIK&`~9iu5YoHhdz~z2}(I^-?oL_Mt}XU0d2|s z^6L;ivWB8-$;f+X+N6(W?{2l;tq1ApJXbs*urumLUN4UpAy}uaT7)NmrxcASxHUI0PC`-x2TQ zpKLA9pW%m7Yk5s!Q*Pq`HmiCCT}IcsH`eI=4@r>b06&jh^#%KI#+C zDk!*0KtTx!xc5oZQa=IjMFcZrg?id=pAZ0$3ipGdCang?$3ubW|E#_AkoKOzMFYAUk_ z-=h5euIc6kZ^CJkub=I4njdaywMb>d?|bH+Mkp zYx)J_di0*(xnKPdk@r_o)Vey435)at0Jv zz~*?#yZUHNW`GjX>0=D;MWA~AVsE-ED=~|L0&*K*CoWIWVjO^*%4|vnj9nY(RGf)y z3qy$~nUu7&nQz@UvEp)mbqLOt=w%}USR$CtEGxS~T=J{!`%5tpj${O=P8a8nbHstA z@G1a=%^H4(H)H^ku0HCQcJ6)D@piR08HgfTy^D8rKN3!TkcBS?64;>M{C;~u?jT%aK2BTx0?7=R z{0Di#C4CKu-L(DEdorpSa_ri<>TSUAn13H<4}(GcP6|vEOF%}%nGl13#Q)zG9vq}G zFf=KY>S}#zreXhdo;C=*fQ2H)m_5SCyB42V*6lt~=V=ekxYr zeLdzj_G71~NW7(PBPWG~&}7lQtGnSA9w^n&jJ_c86~ys@k@|6Ra3;S0WDS2+}dHLdQeYp z7_sddPVBel_Cv(yiBE(0UeVFiuI}!O<-_U`KiVR)Wo735NuAmlbl)B>=_e#QXV`75(?$$^hyl z$qz-zO5=l1y7NOSf^9@YPV!?br42-Z1Hfc|k7PguKU*5b&JGP--*O=~z9jQuT+zf{ z^wY+0uCg0?Fvd@Wr3H>ZDLKnAwAul%pTssHZ_CaE!_r7B%^P;o|2Zh5mbF*rI!Y9A zF>pg9O~2$?YWS-`FljU{^&1EIE)*zfAO3Ahd<2OXsPQ})>fw%@FP=7%Kz4{4x_&98kK`KQQM;Tv0u9r;Wm7( zFU?cwA7ehrZno5;@&PEIn<(qmS| z;d-CXfA6-Nl0x>kCrU|)B>8d3EGSw4tW>(MRl%&Q!$% z;ahX(V^uewX`VO6TotHp^0EhfRi*vpMG`X1CDO_J)5PZTi?dC+dDqv@H(z)|SCA1m z`9Dz=*-Ad2YVZ~ZO%_M8UvYyE5>;7sp;PG%%hH5c1E?d%fgRu)_B)f}^PDX%{j{T* z0D%8wUxr5Cj;Dk}T&3449?&LopYE^k?R9|S2%Ka$M^C^u(|Y@p9dtcpn)N3y`KKDc zewc3X_ApKHH7BfVv(p8)_R*_zSsxAOEBj>dLdz{F;; zy%!xF{Y#J?AV#t;Ov1Jea5#M4=Xp+U_*=;GXNBLc8$*Fh#CqqM9x6n26*cvET-f&< zTy@`5hD4hNUkn%ot+@g69e>yrDX;?$fUArS;Ho$8IN6z)nmRkf%I1i!c!pjBOVtaL zVGP5eKSA+ZvM>S(6o|D)SwdN-Kj^z$*rm-Yfn932z?gDC92@IEFlI5uNlk z%M%t34kg-4W`>@9|B=;ZXR-3c9{RU0Mr_Tc7-4x*S0x1wtZvXR+T&=r9Pu$?1K5

}NB~G8n zTTV)W#IoMnJq>k&iV2{D6VlpKd&;CD`>KvgS~MLwgEua2zory!@N^eiw@>#iqRW2x z*@Wp2!p8dEdD3$vNt%({j~}7WuC8!|_B*mcTyFlh5+9g(H4*toF}Bh0*GGtwa;8;3 zUtf&QSl9@4O%T1vfD8qbFNgJuj*`3?{*m~sP?9EVa_jz`9?g#?`S`U8Hvel`f|+@F zHU1AOHUCj3E1nlAd7Q=k&^9?G?bp^Mp3;tm%(v+R#XR7^{sQN$sH=yE8NlGgKAz~) zVe4RXQRQmX9~aFx=uSeICZ$agsa>D5!@v{`vowc_d^L=?a70N1#qm$=tX1UoBhIsB zI}Mi|%Gcsuom~pllC5VfiOd&B1c4ji7*hi3XCN*vJM%XfYgwO3)HX}SqG1GJI(kEw z{6H92DWcQn7x852Yd;BwYXyGy`f$sqpifJ7sF-c@NsYhr6q7s6)_SC<$^5D(X-+N^f6rGOfeNgtfqos9WS+)hBOaj8^M@b2y zM%VkE@T7cxR8B&j%KwH~DgCk>!-$SQ($C1Un(MOwb`X*5L4gVGims8HDA=>?vQ;+2 z+=ecF71g`7&{2Z>1k)zmcvQx2Rdt&o=ST%muC*u0^>O+=B44ZQz4H8x1YOj|zZ0_5 zm-faCpkyS5p3P)#tb})(xyOX^6?oS_7Sb1|Pz3Xj*)lrkU)?{J?et9IGkOql0R>{P zLVRu?P2r*LBK*a0y+D2yINM!o)#IdSZP{|x{h#`VsU}Bz8s`GdRbg?9a)skQEjMH> zN8OM`7B2-jS?SKSf{$B3gH`#>lU;)q@g8_Bh1XO=@uK0oKSOZM?bp!bcu{M2_kG zzloS@Pj+v7mcEWR1a0Uy{7=Qh#XvJZ52E)|LkG~FcAZhXLq*FjN6qz zD`+-WJEFo;&TL@#4FDkb?Fl+>U&)T-4{;$;ye+^~e*kP3dDhIp;x_!bQuoC|^-^>T z4vmZ<(rzGXedu@U?I(o+2E0ndpI`{1)Okq>SSBE!3hm=A7;RMw-kY>EVwf2a_Wk(= zE`&G%M5L>0`Lgkd+29cZ5`)M4u{kweAmh&7FaZ}PpqC3aPOvzW)~*57^Q*%CJ|dM4 zA*6aiC}qg`m)O_QUn5Un@dZ~_iUGM)y5rR&Qe;x&VKrzG7lDD}E;x|vCeds?QRgA3 zQ=}gZ+_%j~GXL`WK(fEGDV?|dr@l>f)%KMGYfJ_Ii$1IOu(Nk&)pU~#DBV8LJ%XeG z?EQ@G^~g#+ERZl#AI)ek|JTiZ!G`17rjih=xHIBT0kSAxZ}MXvD>;*;-VfTkTe+Xk zOU8XWfPm31tSAe()P6)lo4MBe4A2iKnpjyq6gJo&$^8a=*|nNW8d;7@NCYhOGd_b6 z-udP&&u0xNKi8LR8mm_i{YSPr`MuoL{vl|de+ju7w+0RwS?H2YS2@clmd%RA>IPSL z?Hroe8`b?KG)+`{Pl4#qB#G)+Cla$QBsF=~`G;oRRSnf>2zfP)DjDzi4UDMD+{eX6bzlgR=)Snh ziJ9ow^jXpx^(8n>`#1tyGSEx6JX(J0?3ApVzaEHS5hf&jBXsgW&hIE|x_uTg1tdqR z_|MSL(5t;x)ApDY_*u%2_6#k)7p8W-4QA1jz!{bQ@Yc5~LvpCem+~mf3`0yckrK=}ZRPoGh2S7E|3sCL$nOxn zynr%nQW0$U2z-80pC0n-xJ!0`eao%%SU1ads`{qG7gv5IqOusF#KD{09j*E!e;6be zwv%aazm42Ss-?X&_w1uit^PMhz15e|WYgvcq{C;cWmrcPXayOF{Fh_(LP*Fr#8kOX z{D}z-JGg^Wpu95S8i0yu=+sQc044jE8ToaAzwG^Uci&BBFSDv|_>4M28Z>Y!8sc#J z3wcVjv@~QcM?J6pm|xp!nr?tZh)<>=4%=z^Nc9DD8UYRpk>;CTfmnhApaclRhAtI& zo=>MGLmlN@*;_wek*?m=dtz2Q)&Jo>-|JP&L@z}4mS6@ATfDXO`ERLgD(OVYWroE} zl<;0%ptmSESo1Z-S3%|ri#Amb2{ZOH{WyW)a66LpF+ONco2}^H6)V|ALpk3vYQ@mW z=iNVJqQu-0t2?^g*fe(11uWS>2b?VnAscZVsor|XJ;7Z*ofklfB%>Fqtz$etP2`es zYW#<6VU^U_{b{$cnj-zW$OA}Jsp$`%P}q)R0fM7m2Fq?GOf zq?A(WEEk?!v9p<#%bvu^i(&M)3`-p4=YGf3PsbFaA8w=V4Bn+tv7IIZ5O zz|{@)#S!zA{!v$o#J<|ww7au6B@W4h>~H2AuNyPBSwd8@4?g`=o{8-UeHS7T2qEPGlswGD%zitOVJ-x=4jg&f8!R&dVN z`l760vhUmcD_<_9Z?XXi%z&+OtMlp0__PB5%&3!%;OtiqsB4d=o%=)x*R3*qM?JyW z!P$(Z6(VR!FOG(ke}RKdAUMP0AwWHo!+m}-+iA8!UcbAR?%ius-Uyt8R16GU9*qOw zBt+KdcoHcAj`OD7&>jWyh+O-y)!%hjK^TiF_BqgW-Cc4AWdHZAlKMR$eUcM$2eWOQ zcNeK^s1Ma~3&qAwvo_Mv5fLu|)0Ms^yE+M8Pnp9^-OsD~06PsQHQ3jx2wrmp+D z3LI|0#oc!0jcg?##s|QIk8tTV_H;dG>RbW7c@4wBZNdU4q?Y5tztG6=`VjL#dK!_`hGIqJ9d!Ed%zrfrDm7we;4%AzsTh zarM;%gMZRq0;G7Wz=jKI^Cq^A$Ad#dZ^7r`K<5zl$oy-5C2C8(PoB|NK&?O{w%l{9 z#1LW}K;Y?evXfSc0rkanj6&|_DZPvpmhsme^eU?6hF2l-Z0MK~UE8-cxj;OLN_nnt zpYmf>xS~_&n-PMU!G|47eTPXa=~$P~|4gu{^8o!Bomj>Y13F;!DO_o%m@pg`{jy~# zjZ*)Z=BBTug5fSuiJW=j6Z|M_8y^S5`WC^|B_UlJQPfrk=w%Q{U~@_`mpHu_x1Rsn z1+E4}WT0!nkd`40d^$*ESkzl5w&k&`?TeoI8)_=&6oJr{y0Ln=H&1fZ zYtmrVi$iFO_Id@%Vdwy!BXI^0aQM}ZW5V-RtwxQR6UCWod;I{UK|9p$*G za2iomJ0JQ(6Ks#|D?_q`w;TC8cVJ`?WyW%7x^i19hZOgS4MpaA54 z4Wlgodn=I`0jM6KGssbG@#F(RZb0V@tQn5!ZdJP*#%v!#FITd378vC50)N!We}-hn z^ANBHp{=sfDS#~pViL&g+uIjyiJ1D_IBJ^-6aF(T6Hkwi7fR}P zTL7J8RNm96T4rrW9lT9rRj6Ic<%yaD8kAnoEx>7EewexY%i_EVEDmK?Jr)@}V+|hr zi|hMRR~yP_$E7gCy{lXxlr4o_ZRIpsFmh>~^!E04%)el71qqb&e^eG@Kx^`Tv*C{d zE)jj0%6>UC9*+i&QQmT z3=<&T5J44&UYC&`8}g6;*mU5SWI5%~p(5~EoM`blXB26!@lDr+>D0n0{y@&wxKTlbX0Hrol`fYI+vdyv7ev1d&L>6SfVD%J(%^QQ><6BjMAo$gP&Q) z>iy`;q_?%syk5<+>szx}iG=fJES2nb7WV@Cdu;isk6aPW>o}Bm_#KTVd@5#H1oTN{ zRL3W914ofmhCVmE+)puAEk96d}*4$xw+&&-4lv?VZE8>$EbPdc|GYdC7vvLDb-_3Q1@COa8Y)sj*mul5%J`zI3r-hCjNee=f? zKMGw!Shd5ZVa!A16zuXB>?LBhu^&=S z;x?VNaqmSs`d|Smoe&T?+#KI<5v_Z-_eTH*S%~h$DNq=gRnd*Pa^&s-?Ewd0kVTTW zm)Gm1NTEeY35S6JWN}15;jt<{2Z*;&2m}NB7__xO8zFQ#><@;SC*alaitd8_F*>^k zeQb=TfQrr*9vPOHW&rl@0q&9-!iXUZ01B~KKkmwa#BGe{{h@o%*oJaIO#7&Z?h`zL zxG>eU2`Lu*NvbbEk7jU`intJ7O*8`~a(1I#G{{%^Wfix)CGat=P^-8FL<8febGxOD zRQncq4e2dqpf)lf_#E;?%aC9XyvcKH*lW4@N2gS*Ujs6cfgl|dXbp(>&X%I(g>t%U zdxe)GI+ibiXfz7i*@2uIgob+n&GH|B(u4|%7jX3K((i=#s#(02Ko6@cKeCMkAP{!? z8U>v*_(A#hwNv=11dtb8*RusG9q1BchVJx#Fb_!e1(FFw^K5y?u*}sdC;Oh6odF(3 z2CQwBqYz~aQ8?7!OAb5Rn4ndo46w56;}9_VQPt;s<4aCe)rjtz(5weDIR8;pjR10D z58QHEJzGdr2WX+Ns41XB`NL2`#WN(fdCr1W{17s6>C*vpKfAoMq^dn-_K3xb+Q@6; z-sQHHR4bqk!LZ6^-=G|+gg}?i?8Jc>O~9uPX<_QMDt3NA7Xo92#|vIsN(?cbpt`+2 zJ)~e@kAdNj@l58C22g_Zp58zWqt*a3{1enB5NVr%I{NYsL0FOjG&qaktj$&jmTUK2 zg9g9}Gq$?_YugW4TLTB6r3w);ujx{&2tXokc`enhwVYn9BOo;-@V-av4n?g%qXIB% z18cm8hU<}z;x&G!^dcxFxK09^QuI;^1R~Z>_@>CYwOiKyVemQK-I{*zeWoa=6nJaArBvb_O5u|CB-A zju7#9dZw?NX0#i-5X+{dfKL*FW_i1(zLe#Mr&$gH|&oU2!VQJADj?%#X|T7`P~jl<`Mhy3x8tLI9i z2%mw9Xxs{;w`r|2KTa~tHjmg;IF*pL{j$&3r<=U2u^a0zzBx}$eMq{Rd=H&0kB5xk z&Ll~k4Md6Y<`$Cm6mzN!$P~wDN2FBF*PeU3Po?aiZqN%+A zvI?4kMxO*56SX9T!h-m(ePEkyh_~%{C0PN=Noc-49gYIhhL1=C_l?Oa*!O4|X(3Yt z1E&_Vpy}VnO1~dp@NSs?FW)A{LJ3C&1FE9G+nZUUW1`G+Aj?<>jMx2-a2GfoJ;M*rn4^TRfplbXu=Ca>{kroW>lWB4QDhL1%-y#yH2O;5Aaic7nb?m6ec6YO0BZcpDPVLK?+cG`Jxm6C-xbA}aV}q;m71Qx-06O= zJDdz!VS_=i;QpffloMppv&FG!pN zfykon-rnAoV}clvYY8061m`}`W&*$ryde^y>DO3BKKruMuUiR)!Bz#aLD|0~z)9#& zA`cMaLa;elj_;@y@J>6CpFTbNJJg2?7HA7BvL1cjv;2}aH7kvqJeIOr8tA&HQ!dNC zjlFSWTXP0X8yeQ0nkEhYWLO7Cjckru+3#w zW}2-O$~pQs=c_y7PrNVmBf&mM&4l0O&fjMRT(LX)eyPt-IhnH!QO31UO7P?cd`F@v zZiOvG^Sm^k_V&_P4_!&Zak3?_VQQCT%b~Y-N%jDm?>o@_sm0Fe5*hqaB3pcAAs{bbWD`)GU>UzF{H@u$+N{X>Kf zq_nUHN()7xQZqhlp#=PT!<|Vh7a(X(OH2F1dxMgIDeZ+ki_Lad$l3x>#0tzFrk~0H zn$GMSIFmrmY)CX9Imt0L3Y1U`zATAA`L~G59C_^{)x*uu?{Ub zl1Ev@vc5x9fneGDBYW=ynlRu~kD_-5O1H&H+fqox**`rU!9zeA0_F@kBxSf9lDblV zL>pK4;?SpTZTZlIN=~(+q_VHPr?lZffzEB*1jlzj^DR*ekR>gQn}(>3-DOPZqvaRh z&;x$~y5<6qsfSI%frS@%&LHxXJn3@vB1REH%#5x!wR0*e_&0^X+ZG0qyZey-`5hY> zC8u5x!1{Bb1D<%_6RHpu1ruN^3> zi~x~OHz1K+86cg(%J>p6Uy$4o3<;}03n=t6U`e6_n*j8?LaR9Jf1kyoDPebQfs_MW z(~oC&Of~$xG@(}teHqy13oSzXfY~bj>M{)~Z%Bnm$zK()z4%?>_IE9Bv=@vK9sh<- zPtN%zGP-j?s$~J~8IQI`RBelN+fBhVh|r|*=zLB_Rgudkz4HtZe!|BtUfGTC(!K2( zlXlZk4(Sz-X)8}Y651ajqjseD-*&< z*!aG{TG}A!ZSgkl12rcGkx`Aq3^#ughKlGUiZ|ij++PpE1m8z%Wm+%81y;2<3bygd z;-;`A^=1PNOtBB$9k|!Fv&jh&Z9UfK$E6Dr2bA5ZgHfZSf=p@GyL%d#Fy!QUg@ygo ze6R4L^+P@iHDE3@ARjKQd51W~8xz_+K5xrto@>PC7gYyo64wXWSf%vaMDYR!2+nas z%50UdHy^D~N$lCXqOF2O}Lazue;{knIR8_s<9~cq%|80XV~l<8`jKF3tx4$twO`t6geD zSR4@ZLbQx!4U%J-dsNrdECG+xt9)d`t7E{SJOutg@K*#=HNLo^AbStM#6$d8(}C`@ z?P4*`5CKY?lWmbDKD40MWsKB55*jD(?x$hDe-#7@wd=VW=G|J^pnf(5`}z9zwv4uR z!qA7J;8#7=baX#~@fX-Fbp;+DD;l5Qg7)E5aJqu_GP0y&NX?fj;@mmQ_yF%3Bw071 zG6i_gJ2`g|z5@T;XDf@xr>8lLO#hUDb?qbPse-f!r0+ zSn}9U3IMTKWBvxEZ*7nLOmGWM$@T5DL@?9i;(N z9H;$U#|40|CIEPZ40+$|Cd#u*A-y6X1_uTQ)tu0+Q0yMW$77nSPYOM>s4(4`ZKO?l zp0_@I46q_Hu=*1iT}+NGf-jtZLVNqKkW2cC$z@BRb}DkzJF%iGB{86mGevJch{mTaAG zuo}(^*wKyqsVXt2A4du+=Boaw63Af}QTBwj2qgTpv9xGxVxSiCjRAidZ5N4J@0;WP zP0d0c+mqCUqy0zXS3soLJkd$sL^2Kvv-K*4Pu<%;KtCt|i2pR6PX^KBdv#Xk8>4sJR->BeXNH z=5;Zih{TKv+D3ld>|`n8gz;8h3Nm?eTh!V+hIwFD(ihR-!MH2^v`0N9$X7S3dQ7K= zV%aJ!KD&HEe+3Kydo!%Ki#^qA#!%(8BgU?7UXjh`AAFWQOVnGuHsW3QO1g0?x;}=1 zpyio`d^xiGNgmx=nOI^Pmx0?YvAG5(7xVgtg6+g!;{JU3g6WW5_7tBv0ypXBw?xAU zFg+oeIXTpyY)lK}9omFfT|b&eQhA|q=bOIY&}Z}}K!p&hOx0jsT}@EBRzB%V zemfr&Lqg~KAQ0y;tMZ00gV5;El~93@S> z@cSDunul9SxqL(dN89$b=$Rpa#zxn_kL!$9TxiR)X#Gk`e4^rZN~qCe#}5zJ^Ul@3 zeFx!zuf*u?(;qm|O_#HJ*%sh54W5q?zUY~rn0VLccT(|vzn%6Ypx{6fM0tpi?)HX_ zogPq8f`cm%gd3fdCyX4m8+hV;RlXS0OE7e!E@?uYha~lbp>6^DR*IT&@L8Rci-sNC zm&_pT*I>5DmMm12m;aTRlimJy2$;zLgR13f=j_Z6I`60r@WK(4GBa9N!KDPuKTfae zzW8yi(R{kQz){<)SM4ieX=ZC{`+K+&hmkS%{Z7FYYcaqTqy=St?v07Y^JaVo)*QR> zZqp#4MO?4on&eXDl z!#dOL_^DC5>YPKqx*Mu#j6NO#weS9hGK>Z~y3p}w0dzJJ0WuE0ACKz40l3H#Bnbql zKn?=({6I^}H_ILxU|_mi9ru19mQ8)HCgWUVrpIasttlMvi?Q4%((54Sjm@R>SbTN4 ztyff2WS_NT&dvSr&sXdN^)1NXbec~1Y@m@u@Gi7~4>C~zo}1+WE8t#%fz~zM?GGx1 zv5-GzC;ifke(iWHYv1X3j2SFfT0~wOAWYKdULtGO(H^(3KiI6S>oc)l-r6DeA;mvs zOaaAupxRSz_IuBVv-jR%|Ha}lbvQ!oOrhZg!0rxBsD98sxZ3t^C3;X7 z!*xMh4IL?%1p<=ZLkj`hrSpjI_& ztd~Ctac^oOmc-G5PJi|nFUE=1v}~4&W#Q$-&n(H1+Gw4B!sE0LNRc3GA}HS;D=I3| zOO^r}N9zHHwEJ*&#TTL2@aqCinfn6XUJ@%;4(A!01B(V@Z;N`NhsyH0%cG zx@%@VHZ;5v%1>VdM$|svU1uP)+4=^#0G*-bcgB4#5|}OOvz@tgzF|N_H;?zpcF2fx zqI1L7O?2(Woa&i<(h?#*VW^3gTM>_wlTY>j^9te^i3u1s?7L|AINlZ=h2SX z%5S*mR&o^@uEHJp)tyr^_zh@TVSv&FvXwNgNASIr(NrDf}6Z}oJZn=vm^Dk6)7Q5u)Uo?5zvj=39_#+fnIJ>w{KgX}s^kIb) z4`hAD+-0`)3pGi6vT3b$U zb6EkL06isRfg$|q(vaeq4v-81iK>Fx99#4)$4fIi*oxFtOOJQOa)pJMH#+N z#yJ0hE9npPIv@z?ZQLUzVMD-IlCA0im+DhUVdE-t3cTn0zm@%NDHObSyaivPNBjU$ zNPu}^v6x_cWsEGr$<1u|@VD12WWV{sgkoB|XT+1@7*W_h>I|kR@Lb+aebY|;9e5%@ zvMYW>L{z-1o#;$ZjIvP_WF)@BRY`V$qW$SlIVW*gCEDRz! z9dI&%a=@``U+KHx!G)MSgRAS3lsjT1v4U@N%)>`ovP1Jcs2zrdUvcj~61LhINo^Yy z1JCqKTc)iTKVicnw^TfN0D|g4Sg?ZR`&eW6?J!)tE`MX;UjEhC>8j_=oQJ_F`IbZc zJ0D!tNs{FB8E!7CzW_n*gTnFN5*J!lcq-qyD;r@I;iW}#%8TAn?OjZ8FDAnvM|s(c zu#|B=oEkcUlaNJ_x2!Z#k&ta_L$oZnKXEyxN91GSw4FkCiH~fP7wuF?>vH*|RLrSW zo~Zj*ieA8_ZyJJwIEm?pIcU!H+Z?p<$$SVBu6kk`WF`(iXJ7Gwr1A8GuCEw=^IVz; zIN}ZJ9;{_gVr3;qmi0Z2P)~|bbey#6QW2<+9vC%z|7u3->-;gB_0+vMc8z)XAC@Z$ z;SHw6$rVqZP>9r+rJ zSzPp(>aE5qfp)e({{G%x|K?wOYBbquK3jC4frI>gKA$OrYNQ);ki{P8%)Bz65)wbq zRX$)YT;C{FZQpsZc%D5%^eC~>$6}Cn`74iT+3mL?=S>q^4~1^9E?4YqdBBEiDfsd6 z^;QVDoQdM3n2{HfbIKP~<5STmZ@iX@rb_wXfZ*Hm|Oc3qkqB1=zVeVYp09!@2(=UBir>_on)t#e|yDCrRGk3j}R;F zn+Ln0p8MjB6vHs~l^hsi_D$g$AQ~a^3!r=%d&k=sMqIA0Raa6lxL1VKlOb0IbeQ~K ziif&+2~pPsNmX-TD_S*t5&D)d2a<#S?%dUyAn+T0sGJxb$4jaH1T zeGURb4@ZiwQc_Y*-no@{H@YL_oYijv?tdxHP(to$A&rSaOB|LH!EyggUt#p^uk5_Wd~pPmlA%3p@S zb%dJK6H;?dU#=D;o4xTP;de*Dyqnsb1y4m-=KB#!N1^n40t} z0r-M8*K;5%d%%BF5z$BXOCg&3tw+c*`QpdU)kISt=X4NQ_$fD3ryCvnu{UJlK+1yp zGn(c{8sQ|_n1j4`S7Wv&so%&~S?tOJl{t2ec~+95mgK;3&6`_ta*pB)IOvK@PAZf-u<=n0ytnC&D# zTwhPThJ%wU?owG}*7FxvA6WYacypPj;16HHq=6Ke-gfkPua}KMV~v&i@7JIV3EZRj zkTNvt^rsX7BQ)kv>|(OY8e#o5@Ymmlg(t{PV67Smsj@vw6Gi%st6OIbrau(^S_G5M z@m0Vb{gxiH<+-B=bb#iOI#Dnt#t$}^LWlJcN5!Ksj#c!dy-y&@o^=Y9qcD#ZjIv@w z53~ubI)}ALYbT)Ddn~p8a=it64pvBe?PNP)3yR6v?|P!^eC67!b_rQ?t5r^|2-W6T zTF)Om6tKvp0!YfxhI2e4l695(Wm~OL{Bp@4^rl={nCob+t2g)o18yn6hA| zd1Ls?v1;WkAMACR}B;YmJ1W=#xB6O zYEAFyO;s%UgXkr)$hpD6_tn)}paA)k_WjDqcWiUwZ5)Soc2yMxKrH^j1aCG$U#^NB zGx&XpnjzM&y=A|%V{LCk?|cOsVZHNmu$NVI=J*BsseA-TPfK(0ht$mvuB0|FuLYx0 zKJL%OwuR1rQK53t2c_FZ1~0l4yXh8Mv)s^IW{Pz5>+P#LEw=BuOOBLkTK>066WVR9 zHA_4RRlWy!gn1abn2kr>P0yPmBCP>LW%8}F^tMw@c&JZol_5&aCx*cQ(^}4_^|f<) z?8BGlzj)qq;JGI1^L$cyj|!T+ax7w5UQde8}nE&H?XsZyY`v1 zRSZ+UipAlKqeST$Q=fs^*hfIn=Mc-3DEk354lA-_W(&B`yL%WeJmi| z+S&?&s(*qMs{O@qZd1s5E#%H6npa5~+tk>I^@wT_$TfdLgy;Mv*1$kIr!rtApOk3J z6W*D9odXMC>L8D`+HLRz1GjYQ3}J06PZb2*v7tP^UJYrqn%qmA?o!F2Z1(CTfzVBg znH!jm;vt&{7Qn~aV<-_fwm&y3|Ji|IA&lE-I`yLDp(DfOlvwr@2-k)>J4NF*f!Xtj z#Ii~K&`;+Q{>odvXS2yy;lywI2}mp|*%;F8%S&JD>1m{lYDBjVHSqy65g&&wWE610Dvx)RAUPo;QGAqPz;6y7muVhaLaTm;5$h9ZPi!MF-MF9Xye+h z;rhmI+uk|}Urth@4UM-l4?^gewW&9cIiNRQ;$rDe+yQ9S7}48nlgR5UcS2Z*XS_uM zj);#Pm5D<_LwS>LWV(Lv1-(oPVCr7?I*D056o67C2Xt*r8xrL;I|o*;G0?fOg`^(* zjvw#@NtU zUnv4V!?Q>EARz6<_QpnYM?ViA)I74n_y`m|3tt977+Fi@x?ia=KZ<`V1G5tJfw2Ys zk+zDZurl8?<4_J4qd*z3pA4KyJ{WzNR5B)(rU|N|n|o(`tP!{4(UuRmhbRngb}h$C znpsm%cODpHg)ZFeijAMmygKhcAdOq$50TY5I5$8QHb$0L_X_1{Ojm{ZS04sXA=~0C zCcUDr)kVCzXdt2gO~%4q6i2M5VLs0jsZL}yMW5NkfG_LhZhFah9fAO&Ti&tkUvc z-wo$<X8p@!Q?%=_NJ zbs-U^h&2M+Oe*5BQy&j_G(fCiAGwVDa>b!2Cy+b-m`5~lfGLRRNl><=;(iPRn@_$6 zvf{0nv7dT+o`Gj}BOgsaN`b9A_2Er^%ath+GVHQ(n8F#vw)GV zBZ1gLG}+9(Jy5q+_;PqUWIK+ou=%znf^wPp1>-VRq{-wv{MMx$n-rY8&wllAsVnY) z(Vl;-*Js;nc5i39V^F{inE~fXU*H*yYeiQg+tEi0L{wa>P3-bW+gq51H?j0YXaq=b zs+^;{NIWuM^S`#BE^`arYkQB8!pOvM^#ED!oT${fGd$^bRwvMHVpwlgeD@pDhTK7m zOYG6SPVoFDReGy=w3cd+3DwH{SS{<&wz&nhxx(80!D%L;7>=JVDT*u6JXYe(pJn}@ z6@M^n%zk|M)DMY|yx^8fd%+y1V3qOK!#HxkV(j|w=<4XOrkN+UtSc*mA6S>4{6Y?V zxJV2&%nY+7CU^}QM<8rPeAzNCfPFM&k?eDuCl+zAMhIC-}(|If?=5F`rz z^PiB&#Y1(dh3YU$2rcv-rM{uDJKKgjMd>G?qR*q6YK&etC+;>Sw2hVJ8`^y66c{fN zm}aqXWi_JI2`Kw^O*U6oBG8A%f%-x6vQ!Ab2w?=I%8cpDFs&Bi@Uv34SN5?RO`YqT zZ-g?dC`7iiUJt#xI1b1cPV$>H3dY!~f*;p3iqvRdm#Wmd-todDW$onn^R2V;G9O%h zx9xr!fh=bH>5Av}%9Yx7$3bhJwZk~b2^N}RoM$*14u%B@`ZzJs>rcSUNH~#Rsrjhg zk*gvtc@>c4qrvqx?w{fIuYva;&o1A!jKx%6Dzx=QUB*{uF~8T# zFV8KH0L|+nL)vO`q<~hHqfjKSxQ(*9WvqYcbfx_=qM*hkI6eB9uEb}4l26Z~&c-Y| zPc<=W>V+1G=-rPJAUv3o@#*Y+Q486}_21q6j!k`}?gSY!e4%5*SVp)BRIT9^pB4qg zU+1}kQak5JL)?t_iVV(cA8oDR77KECI@v0Uf4qK|A(XyYf|M6g_j46Oj{kK7|IcSa z$xY5yLYW{U_n}P}0x9VLN3QB)94$wf*hGcMUdm5}%aAhieG`}281p15EvK5RNOY4f z0I{Afx!YQ!4`Y|0whd&mm)cAWIt0Hw3*)u1utdMH_s>pER0TYw3vpG`cr!UbYHndJ z<9&ornZhbfQK$`LwjSo!DN?zvLdLpS_*?1k ziU>zfUxiqyvMVLbP%D9_QK{== zN36HZLNKKL|MMpP=j|}U;IovSrA*I9$rm>&pM;_loMfI|w0t9^N2PQ>PW_!`Hhi$T zZSM_QohCijKhH2BMXNhBrIcMN>szdsr`f+;m7QZS6jp#5knEj4FPfCtd4F-;0XsrgmYCC#cBXddL;Qu}VLEn4M zv)aRittQZL+&FO_O>sO|#AK9!&i^$p^_Aus7NVoBNCjn~_A8%u;+VdZZtWrPUV^4&!{ra(26i4N>5?~cP z^h8EV{y1p{YnEVn`}(d)>_g*6vNz5sDhDS#e=JXF*D9@JTF1$AW}jl7U9A zVA|Hn;G?kr|J;ZFcR%`%`*pd$v_&U%5%^3G^%!)Y5I3xf*o{jHu^2AnP}9l#70*^U zboYEh-lWrR1I-qS#tSXA0-5{WzpK&j@WCCrUY7u(Q$U;b_S%SR#P6}GqS?GWA6&1T z)|sk0z|f)+Dr%V!8B~vYYT}(?^BZs?#Ji2@zVeB+w+6Z=MKkVuq`Ug*&@%^#S=FT} z&u}$G*9wepPs><8B zE~gJEij`FVm$f3AA2wDp<3IQ`H<`sAIaDA3EfyIV<2PUaJivW>7nLC=-d1guRLY_W z@);zO8?n*qH$#>~WiR`F91s8pAyAor5$J8@yV9=3tuk(b6(=>&q_tA4a)KTr*)1zy zgJP{8P+#Ld)gWp+Gznbb)W!_bT6-pPW^&Cq`RCx%_{;vqiyJG-i(TzX%o(kc1(%bi zzs??!NawxM=CO21q(x2mT+f>LVF*%r(hLo=l{T>}grvDjVU>G-bvyEMXW%~m7!~k; zzmcG)ar>Ak>nb`o=vTrrdIFWgz9^-@$YqgK({}l*GM{M*UD%E$2tUi9%0b^yW&Fh5 zIM#n4{_C^e=lKu|;i)*2l;JGR--9YzqaxP|Nq2hcsx(cw;D#nyRV~eJ330_30$Dr{ z<|=3egO?i+Y+Gdl2L(TK-xU`*cLZGfDRi^%K-1xM$OHjWWmRUv*rihXUX6rLKB=X< zcVA2Ft)Wor<+~D(xm+LH{SMYb+AnB2y!u~OLBLLkE}9L-8+%GVP*(MF_!ekVMPVYo zxra9Y%r8UkJjrK}i_U)l@AjZ$N~h63kEZ@vL4$h(xT0%na6(pKlcc?F$iL>4=M~YU zElriDT?`dB3^}m$bSby>EqPU_I!l6>xwWr%jCpIxtFcb=>(WeTy}rsFFyt~$n4hv~ z(QIK4BFA^m^VYJe)Ry^NbkL=8(Jw04X%8%1*3#G^qpd&1mnyHfk*ZK+`Im5VUZ#|OZ>UgXNit%;KOSb3ihbB*tlZj z7}P$09YBG{UeiYSpmod{J4c~akeuN6ivz|+_ABL-((paiJI43+3=4V-1*2>&BsmJp zs#*s^TQlA0$%NT;LOQyL7W94k-rv@`J!QwjzywdIaFP-B*6OIYa>f6BdP}snFluPg z=Va^io!u;+`}N$}<&;wA<7PEha`HEC=sieOAsGtlq)-Vjy3||Vtd$aYCHn(b3Uo`l!+P+o@M|V~vDAoH0U3=1wP~bmB>WNFGp!*_%)i_v2Coqb1!cmaq(-p-9aCk=z{H{uC}>B=3Ut^p5?@|-8V`2 zk6J%JQ$b!{C_KnFQ3MOm%SKcQM|JL5vD>!Ymv&#GHX>^~Ty3h6!VX}6@sUro+BcuW&m+l!oi zi_q=U^CZdS(bEly#clcU;@$hI*2bNVmpXFxY;a!#{Qb*S!8yfwT#7yQs7Fj0heZ^` zHeDn&hr`}tZoBRM^Gw;13vFKSx5LdpVHZxscIFE8oBFJ=T)TI$zxK6rd4H^|;PJ}g z>A#K2|IaatqB;ZFPlL~^a$*;F{On;pD`<-k(L677Ep6xV?gDuIuQOPHMPU8e(>*Co zQZ&E%9jV`F7tf+}i>LRI8B4FE>+h!I@*|uE?a3xzh!OsJllN(G)YIpu(9R2epSk8f zCWbnr2uB(Y*5=T84td|d;*53ahm3+Tn@?qt7)(B!y}IL568Qf#P5ir!-QSPN+sT6? z*gtcEcfyRQZ`d(l9pn|H>FQXj#$#qU5ieIBfA2ouUi5x_5xtsh=#%M#RzEKd&}4kJ zl7RY>@FUbUwRSW%hXGW8Z~d5@1He=QF<<3=&wuih%vnune5O~jXLlPG%_zclj>6cF zofn)d{8Z}Xqlx9$*_6^LMNJe}CLzR+FBF@du>w zu{#%`Qp8JcqjCfsB(}W#&o46CI*G}XhbNmW`1Q3pOXVaU)t$I~cMtnMz#(*fOv~|; zYBTjuq2c(Hpsr5#Hlf<#ds6wB#v*42seB3b_AaSpGt`Gj9X8z-B@ayIB5XS$o@=g})re13qi6@J`B#>n1IzV)GKOt${Ly+W<8Arg;_66tN| zm>7t5@6p|NPEN5sBz51iU^tBR={Q~()`z)UHl8ImDDo$wMBli@6iv%P6JqO?c%MX3mm zF*lAVT+06*V+Emb*XEv>e0Ir2eJPR`6V;;`lFnMwi))}czLw;s=N8znD$E#6`*Lb* z>D~LGQRh4-^+4_(quPM)5tSuDh;TmgB@hHx>>Rh~O%XfiaxEp}I!5mLqkmdK|INPq z{dn>IE<*9#kx!}el5GY3ESmE-EOymFFSR}qjYpn$S`vr0NiU2;7tmQ$AqNp@By8W6 zf=U~7=GbFz;oui3ym=TQCr+co+=Q&QRbEr`(alP_>r;w7w>!NOKUeA>jqN9wD#k8# z>Yw-TgYoa@C%n(lgdJbXL(Zmp+YO@7tm@i;)oqU`{t2TC2YwcSlRpMjyP@BP{Pi&T z=TmGAg$@m6okTF)gN>}*XIr{Bd~D@PHnOtuQERL>Y2AoVZFbAxy4&%ssKC+G8XZC? zvoH^)qGj(eFlYC9H_#QQv-=+nG$+x{gtImVfqi{YJ3tyewPpVuzR z#Oc3o7I<&Dxw=Z6rm9EK^jm&0&w5qQP|;|>6d#wyN=r$WmMkMIZaAvtR}r6 zRzNFRK8vqx!_CXFx022FLB54=_siMGo7F}FDd&&gy&C+-ZDL&5*U>oS5#Jt8wi9gs9hFx>CO#X3o@kN zKgvb39;c~p%3FMlKUe#8!kBZZ9BhDo{g>|)tm;BpE-pI7^fpN~?IM!_&r}1~VGQo* z`Jl{bM~`Mn@$nJfc}Z0&+bVsoW6HYfIn^V^oMCsCaX_#<(pT zmGTE@e*-ij>$cR_Yv;^JSk3@rAzCE;L@{H4J{R@<^?Q%K9hiNBfgE)gY-i8e#wdj- zrl7E=eDGsUIhO`!%=LP+;rstFH1O`2(`2r^{dg&)%LweOC2)a^xDm%kL2&we z5?t>;22PO@#$_$SM{ab|h?E;uBF6+vu(p1%W@T~uQky#9hj;lN9;|o0{Zh1(bh(8; zkmnT(7oX>9`Pid2C%F2s#dBt7c=6-T7(pP*e_eLy<`O4OUti)^zQM5uN8FB1Ya?C8 zi8H_UdVWM#a#yt~hlFyD6b)K+lNKS+i6$so$%PlmOBh{ASGGodj)$AQJl+Z-o|V}z zzK&7*Fh$91yJe!>EOLNd-91IGtGbo@ro;WaM@kH51M3%Sx>Cj$0k1jj_2)1#m(}&}TE8Z6JID~AwHYGvvGLkQ>Bl1r^D2&$IZP63`aN=) z|GKStIP4TYHfoQjY_fMm+f>t&udA4HCdiBzcCDdnshYshTGFcM4MyvN9xufwg?PS) z9xbb8Wooax_FR%C^>*{kT!RRN5=>?sWNs4)m_Eyh!T)+2Q5p#*V;lv8m5R+Z??mJ+c@sA3l}O z;?DV!Gl`I?oQwJtpBsN)1M550^-6lA-5O;=v^}MvKJH*i&x4wq=B*?2g=Th#db(Xx zxY!+>-|fZD)#j?I*X|0%8gf~!X(xEjn1SUb!*;98@aarA73+V!L-Y4)s`RaOg;r+A z7Opz*vfH^7>95aS+K-a}wZ>E6HFJ5*q z29}bAi4b)*2rs^%yXQdg=6;A;DS56D_2LS{sIdesZAsGGF&_^KH;JK;;^<1#Q|BE@ zx6oWVktsA*i)8u{MebU>v_rdTMf&qr`;;L|L$MDd>xJUyFMbMUU&?D&zBtdA)DzN@ zHa^clUTP1?^=*oYeG^iclXu8leWO~0XT5PQ*1@S~&kZ2L{MT;xv(+t@G=oAS{;EDz z+?6NE;=cL1OBV}BHY;$mk7oLRF`t$Z7}p$I2sc(A_3Xb-zW3@?VV>T&a zc-I1JusI3S$LHD3)+C&b64sj=Egvh2g}th&m3%p^X~o~pnp0NN_;0by3*Y!j$Cw)> z7q^xLue?o|Ta{=$;D2u<{9EQL-dBp2S#_U@a?2Eo>g$MTOA6!<2aLq8x>)S|z9Cz- zzrV&7AnA=T=s;KG#0J=Dnd!dJ2|tb0O_eD@-|v}V^%Wx%2$GXTt6x9tBD|;o~b-l}U9KUwsy9JRe|J08L#+9$Q9ZH@%I=FQ4)z3XS z5A$eGjpZJ9>5{!*@crTs7uOjyASycTal_x}I^o!IwK%?m@jaPA;J@~=Sd*pWz3g_#Je|>ApAq$WNKdZO zFMIjDB0pa}E<4YVcA2rJzM@-c62+;T;u5iI66AVsB7L!lF;)AMzL43x*;eeasIf*_ zLDGX(xJ4+-P*=xkuFW>H-F%cBV?5mE%l)IO{?nqS=G@IB-%tWmzr?r#ae=)B!M*ZF4);$K5+Z+Lf z7$Wb z4+^Hja30$7et9LbNvXNW2`j&y;*kIA3hhiq-}9F8sq!l(+dP^+C1#5->b?PSL8H_N z{CLTnt7Ola;fNP^h1ART(FTgfUg?$+HU97cn%`&v)K>w&m=2|IP9^6oy|FcJB!Jzr@t{~Uqo2>bkU^kb{%%sA3)oZD@& zxyz#Xx$IGi*Xqudv%VnkUeriM%T@@QKAO3gUuY2Js@>PJ*~Qh`Xe<`7#_eA@tso*j zsuK^-ENZg5fbr#4?xO`-l9DK#n3I*3zrE9|9`c|?J3csf+jEG8lVxSZ&iETRj&NpX z^uZn?e%mXQ4wg+~kl!J6=OwWA4()E%AQiKwoD3O3^2t^aP}Iye$qEX*T< zd*4o<6Elp@MaUBgEy;}O{%pXYxM$H%CC9gyl{qhrAEnkmiCK9wt@>x>_1LmR^Q@_( zC-S+*Zi9WUoyqDL;=djl#F@R$CzMZSY?+w#)#2H?)m>VDjbbIzVi(Kh6x2kLO{9{l#r5c22?`2lxFDe?hpZy66tP{?(Xi6p@)#}h8c!=H}`w+ zeb4hA@bh4hnZ4(_uJy0AHkZxHt{gYz+_(V%TAP=LQ%}BAe(@i{O7{oiLu#TO9?s=? zIJyXW&H;$Wqe=Zw3+D7i2TD4>n{fgQ6}#KDcMIlX;_=)|&8lyu$sr)V>( zEOW;C{~{4%uU#*OPNR_3ct9PB!QsJkzufEx#up6xvI(qAV?w?-=#jQ5N{SSVOR!+d z3QjBr;;GhEx=oMQ#`0x34<=2#vlXK^6={|=*LQxo_U@_1-lcP7(q?C1^jLWIr6P%UPzy^1g`&^$`D3&xHTQDFmfwMp?R>LA9vB z)pN$p%zHJFg8iDF-PqVlPA?cTZAn;TN@Q{MIc2TXOdg^+WJN~)0V2ZF<<`cP`S%J$ zhL#Ts*>vudwi*YF_;5eVtYioZ`z?*4fJZ8MR_MZo9Oo~r)59=e2E*R; z?d&SvCC*dk3qcu4fr5SE0)_3GN*npzl06(0v&Ks>O&*)=h^g^dql_e|Ie|Pqsyd{A zYS#q6Nhni7XBa`Y3;NM?S6HX6-v39PHvF(X_Y7+C^T_8RRd1<5^C463;_kyKC~_g< z@|?ZPG(M0nX`+`aD}ML=-mj(C%WnE^V3#aoUTwu)tQYJxwh)hm#_`Bb;RTo-jc;sM zGa0OGw!R|4Jvkutf9}_R%ct9*HYTFGmb*{1ZD%$tG{Q5Hf!{+^yBx;u^K-ILF$1r^ zqaFp*WpKxgzed+K&rPF$SO&hU51nd4n+#sErg{p-A6Rh59Rm!od{=ZP7htbKV9^H0 zIfN~D(GbN#F+3NB<{G_g2vPYkVH43AGH=fc9$l4CGnt8lR53I`Rwu!*Cm+lW_5h|# zHsL1b(EO{`CQ0vfsrG?*cGg+fuW_6~UPKVv*ByJ$7zZZw0lc+8{l7_Mvd!aBT;XHP z_8YY#*AoTm*M>Vzwb!dmSoj?h_#umWw+6wIo8CP+ZntRT#=TwrdDiv;=g&iRnAP=^ zf7B0$F|x^R-@FIjn7HlQnJPT>_Yr}|M*>UN??XZrje7guwZPmp6qEhj;?V!W>={02 z!0bDK20Uq2(8_(k(O#<9HKPwsxB!g_r@bw;%!O`9gYZ}LfsJ|guEv#omdqNVF4o+V zPQI^*e@`xBq`_O0{bZK}+2wSX|Le3Ec;nD(d+}dMdFfE%Om<_l*FhBO&G`>qR&YUc z%jKo>kcr#Jy}E3*!p7|MUuS7Qy~d>E3o;6jaafM=f2!})Wb#*~nr_Qg3on*V$weN1y{rLYfF=VUPfr&6RQ|Ux?Slw@tNYqXn7#2C?dWwt1=8I6`_8mK zYsiDe(n)wfQIsDWAg}zKSJ9+?D=g{uO>5i-L%zZLL&*u9uDlMO5FqV0OBJ6eI3hG_ z#Qq-vg(1Aj)ASK9d_cF@`@Gh_Bz!i}roLz^{mfbL=;^)-h20OC9eG*1h6S13j@o?* zN;&2&)S=~}DVMR7LFR73geadV=J-e-MQKrUy4)CFz1Ou+EDX+xT5?4CIGxP(+80{Q zz$VZ9oz`~OcTe5pkPK=cl}M5HRadsiFBGG}myDl)y1&;YO?)153vv172+tP=t}1HQ zz*F4htqXMOh7Dmr1+$B}htg+Vs?CtO^z?a6zKILo^xk=|EGV)Ge+9 zEf_1ak-U;OjZJG`Kw@* zU*g#+&0d4_z9W?Sryx%+U$3(KYe#EjZst{$s<#RXxkU3 zBX^>%KQceHEqTv|_!O^DUOGiE`YUG4PH0ikRs@rai8r-MIKD{OCO|-$p^kzb4S+{< z0hqYspYvDwnCnGZw(2;`s-$X$k``r|1%^5uZt!qi?ImAaZf^6l3yrsy1%%!Cm(453 zAO6{ek;4+dp zsmW-aSg@ff$Oo|0m+r@VDEd7&)ezV3PU1JrY$+q(-de%(@n!(BO0J=bVB2+}?d~xd z%}t#dZ`?+@eV|3fI+$+PMkPpyoL$7;_r3Wa3rR+ztihHBP@g&~ z$}3APQSgsWx(!sjovAHKr-26%&((2T{#aH0BCrPPMJo1t>D2`m+9!$ z3+Be!ua+0G5}lYeQu3ZmuA*_xc(U09YTXVlXc%PZ5atNvR}ljE)fL1AG(j6a%V&M1h>V?kS|e8zP`-hC0iDOz3^QR z=SzOMssfY6`N2H?JG=-L#hD~-J;>jevkf+QmOLSgT8$ zj__uz-bs9|zfZ^cFSpb(0P@gs&1ll+w8BD>jp~AX>v3s7d(DggdRq`{>NrXfSsdq? z!!;H;C5}Qm_$pwhae`uEG5DKeDnvqvZc#z<6DCbfY*lTXtSx)0wO|;aCq>3PS6a62%LRy)qUOPkX{RTe^t!)!;s z3h}P%X3-0<23Hyskxj_nTi*)=ogqiC8Q#y7jUI*{0TZ_=`lgWKKb1o!>ZeV1E#2BV_BCiumLiJ1Yb9!=vgj_S$Ot9Z}JE$3;87bnS(SS-p3 zhITKU^$Dl(McRdh3Ov;~zxT2L-Zk6<#H^}U4c3+^J9mpG;eo7In`Qy;c&|ivwQ%#Z z!y)*HqqnzE|Ap{P@8@+@m=4d<55uN%zY-yEvQ94XM(ho3)sJ+q(8@~If^O4uJ^qFEdlG+Q7mytmEophJ#X9*xENsNb`e{=r%|36BM6g_l%F` z2e0t2c?^#?uxB_}!+khTc^8%Nb4m+o{Zy-~*$qfa%RY>z5u%9OYoJNHXHrkY;%gmQ z^)%A&h#O9V@!o`>yRp9hek!!qq6RDvT11!WkHjV{pGc*)^)qr1yT_6Lu~uCh1`FS8 zj-laGs{^@-70!q`BHwxVhyJ7!79uYFM+uUGMB^2?#i12>k3HTseZ0}q^^vMsB_Vsv zT)+XdZfzbK<`T^DkN1nSq@WIngD(CAGZBUMN4QwcW}Y>ud16s+_V-r`Sxbvs3#Rh^ z(s27u(~B|*(-w>k``k_-*l0W(>Cm?5Jaf&A0 zK40w4jPg}$3qzahv+`hsz&@usC`*Z48L!O@UDepj7^b22SQ$pc=LZg`&?;dA$|e{VQ-@>@a*xIG{)XDsS*l7)zl-^mHWDZ&>#sBl8F3Gv zsQ|iehLyq`V4xZ5|MQ67D~gzvL~D(mZam-*hb5n1-qALV>W8_U`!-C2FX zyUhu0={l=}xhKREkOpxp@g*A1m1WiYF{u8x0)J0zd>=Sd2&OdubLRzEisMPp0dq-P z2_DMnzi}nQi=YCI0ge^`r>xuhH`(=U!Mq7AL?@#Q{3pLtE2SrY1;fs!4*xN11^jyc zJDwC`CN>;e=e~ZBxhl3H#Oo}38U+I5qmb?2oGsLY2BY3gAH!L&c<^jbx|D#0mCmMy z42ep^5+L4rGB=ml70z<$#_)cAyoAGe9oN4CBa-Fa^JoolZmTB>@ZjjpKzmvVu=_V^ z_dv&+(66RZ7ZU-|?fyt^&87LmdKk zqOUh)hF{2Tu;07PS92-a?Q0DwhlHq#XYmeg(umzvJr!8wjA(B_k~P6Xl_}J)zQsYv zUj?Ak25xqq83%Ajbj*Y(7C^6E1A^ltJ-So)4b{4P9pcg7+VbaTXJzS+M7?XiQ8{H14vqR+#9IuN_?}wbdoq!Ss zPe27HD}5Te^-UzyOqz(LG9r4J$*g)Mua<4e|4G*aR0ihcTP+VbdDE=?K-#oUgMRV5 z8=J2;C_j_=>JhmDVua!1=L6p4D4nKj)GoorEwRC%caa*K^VWHEF{VsjuYEPC8LvdG zQ^gxFs&RG_xiK~dcr!MD{mTQ^2J2_E0w(;WJ?1*LPXrt(#9+-@RU2+Il_U>3A(x1k&r zYClEw^@3r2PBZ)o#w)YcXBXwbU?0Zu3S)L<*&$us^QlIUYYl~5Z7~vehXpq01;_6% zx(-nEF<+>DYDo&Z@$;hJW-DcCSkC7kl?0R}@H=l?86vzU*3I zH-h;>qd?XABYC%=$mgfxMRwJyn$yZ5O-}ffJBfw^;P2yN4roWBAOA8rt1-8rqpARtNVLOLzZkJpfX>Tyu){9MlUR-i3JrU5E{KY z2hM6o5O`F+vk=8Gy(aH!P(9B?krkA=w2>^?CM;=ZxbhT+#Fn}Y>Bnvtb2>&MNnb4n z@Mff(O`6!6ZN6Q6$Q_BZiP$Go6-!S)6CCodQP3&0zgODh-3AJl_aEFTYpTdcyDwhf z*kErsZiOrU=KFpoNq0b<`3t7vY7;N(y~|Wny?-PPd{Pyb71Y=#uc$nAWxzE5KETGX z00%lub6mpioxKit%;5CGrr(A>ME9f4wJT0QIY)r~ys`JWH0p>IQ!iYsnm{4c`|SSX z==`;Z^=h)UGijod1&HSMnm`1$xo0fKNQ6prC&3r2+A<^A-Q@(>VSzxUOI}E#EK3bC zrL;Qj1^F22*46`%_Lq?}5=k{C;-(k87^2FmtrvN>mx^4~C&cl5$6%S7oq3S4B+i^y#znyqki^M-Cr#5n)&4C)RE)u`41)flu7U*T^ z`u5+eP)<?`eoawepvoQw@BcbqgKPkgOVC93Br^e)bwYmWTiYjJz;yHIZNU zTlkJmz)nNLSz5R%dltII?Sus3$5!tcDm$q!2x=@sYO>=MRPj)3l%>gu35ubx&J$>~ z!C!K_5}Jdu4Bs(p3E{#uIr2^xHOpZcePEb_}xb(%{j&eimo= zg{08Z!tckR0T3=&O03DP$#1&^MKV4v6N%O-lRCuQGnEpG3G8*B^(w3emk0EJbLt7{ z^thTt3pNEMbt202 z6yshQJG;_pTOC;gLlg0=U^EezqtH;_h@=IFhXijW(|+XeA9wOWKKJ(A632S|4;ZjC zt|js?9ZLZE9WZQ{911}^STQ|SpX+fr&`H=>EvGgqh`AVwy~%ilID+NP8C}DxRWCU_ zk3Ito#xy#H^FRPViAs9B1>UlX8# ztxk?y5W$HN^JUatH@a#6H#o7kUv_HP~U&2LnrN;35q;>9T1y;|#qgp~vFr3DMsm%id!Skq7V z(cZUxJbgE30NBwx%K?gsnel$vIP)Vr$OYbbAOauZqxjR*q^2T5KA|mlCNZRb2Qd8u9@O9 zl(pUCYCsT)Dv3&L(scGLx^}aNIOJWY^>OjAmv`Np5}z93X-D0xU&e?5bVu?QGso5QlhVc*Y#_7aX*!*K{YdyO&f3S+}?zs#eMbAY|F*~;ticw zFBPc|JHrs70!v~%8)6apN~5>!yG08q0RSmY6PgbiS`_$dQ_{P^JFAR$I zYfyUhkg%kofdn8)fF=}@5oHK$5rgsVYk~vqDA$pwEAB=E&$j^d{^V;+9)jTme1^4| zP8uHC1C|!>7Wi9H1QZ8?;A9ZKI|MOayJ``l?ld7;=QwCMi7D*UcU;hL=N$ zTv(31DC1PnY3v)<2v|GJQ;tRX>)!fEAu12;k>vFHDnWGc!8=w>m9SuzV&(Pa0Lo;o4Ktu!h<$6s`6uU$dqOd$xKr8B%24%MC#fEU$zw)G4P3 zfh4K}4=jYmrXvlpM!Qev4~)xiTk)C=RyJFKeO}A`zGJC**46+&C2GeL0JmG?5YHAm z*~(2#=CU!u98Dlvz}=2$TETrjTnPxh+wAO0z98!TUf|8iXfDJ3qRr@h`7=%?&-CHr zZ*-Ni9ZiXWQz*Nw5+}VhNTBM%W?RU(^IUc$1B^j!ap+ek>U?AfwZ9;uh-4|QFj8Z) z+KF2O7LEw~VES*WMo7`(%t=y@!=s7KdR~2VJFd8KMXQzG$j;(o&ml-<(E0OS$+CL* zeiI?piZcmjy=w@UZSMwNg0A{wbyQZ}&S|v-FmYz@9)Vb*39K6U$Y{7Vu8frzyRU{s zG3|aSs+I98^t@qC9)SZp20(X=>3- zrCCwO9C^Tm_=~6b!*&tI?v&fOC00mq`Q>|C)CB)tE4sC>(qT1=nC8%a?5mxK_rc7} z?v*!pcmUWS^4L2di9G7+`(mM~nGyCc9ZOV?yBNcXi(t(hEcW9|;>ZU}Nh>laY%c$H zpRs<6wHY=g)N;0It*k;FzC6Z(gul;d1f@ouZk=dl+;yI(B5}v1;!2vm_*O5^YEc3J zWN?pwXAVY%bCH(ct$axy#Ng|{cH4x5=Yz_)KN{P?_vH>wVIa-)MvK}7m?n$g!&VU4 zA%1~t>%*~>t}EOJr9%VMh+E82+#OjyI0p3pvZ6(Tk?nvl>a%&IhQd^QdHRT3P#ip@ zNmKA{HbOKwa8BU4r94@mS82bww>b-z`Q6CG zE|r)qSsu@u>$qmrc0}^y@5DV*#%|aem2>DWCdtWL9&JAM1q;Wig>L&?^?!1GRcr+!JddhUcQ)qg*`Kj#XvZ80qulo6i>BWB>3ON(>R)BYCtvRHNxP-@;y<{aG_*yV zV?W;Dv&@VhHhXOx6wS&?l41UtjnlERH0zD9h{3Z6O!VlB-35mus{4(D;Db~>(U9Gp zGnyOD%nOFI#grEx271cS$97IAy7f-hF-&K*Mu6zY zxl%ivN=O^S`M6&6G(ETBnE1Ieb6d*F;N;5+Lf zTEQ^|4xP9JZy&w~doozGkS9fgpL^e1>=U&i#uU25$2 z1!xY$YeI#P9d(b}jxV?kUMg>CM3=+*@!Z!Oyh#Zq0$%-~Ka~T}#+LrucSgj<_5pJf zURXitN(Na7)ZJ{e20IaTq+qMTb((d?{tWt4Og|{W?Vw%U*O5Np!1ZLD&qV)cbHIe0 zY+>i7TmrmB8c12Z4Q1~&YzkRz{aMbJBf3rao8KR??){}R}$z!k!AAD(N0 zjN6`Vuf{&Pzqs19qV8E8J=(Dac{Q8qBQ_s0p3po%4{bU<<(%3}>^!bMw7}IU=@dwu zU%LYm!Uk`9^Sg`1YsN7X8v7PMMSVmh#B_T5(5s2~A+F4IV)D|%_Cy* z^h^ z4fD@!-wV*?y|BNZ*VgrSH(s?N03wh2XKlm{*JV#*xy&vc5i5}%Ck6acDdXEAU6077 zHFGsd&20S`zqDs~wdKvZRFLk?6|Ek(Da@Fz=?#3v^hYmsT%4z|nDp1#zB5d4gGl*0 zdY-CJJ3N-s;ewK6r-i?u5{LG#%hZ#e3SiqFP;)+`x4PTK+aKmApHfwi`SDelCEN z-$P%^qMjfR|HxdBKa#XH_lIkvlD3+%-5U#rDfe6iO*%H@K`s4Gj^#AQzlmqc2SYUk z2^VYSBq~w;u>@`7F%gr4H4)uz(6$Bm-|b%9j)4xxnsLd)Eai`xR$+{!!6W8Dn@la| z=qwHp@5Iefe;43sjdILuO&UBKQ>i`Ig$1)2S>`y3=pJwCxn_#UVe%gH@+vFK#7 z81J8j=}Nzz2*?ePqhL8*w>z0^lq#V znc-)5(G{1B-Toqwhl1#eMz+NC3ZThG7$?f&FV2^nQbmW77-MOoVHwj#QF3Bd=rk7T zm0K@Y6+^Y>I7?PJw#|6;B12+mZOgKhnC};HFzEzD1qMUI`ep~ndXKj@7Pjs4em;|m zlX}9%bVtqBqt{!*gdK~esG5MfnnKnQzLeM%m%nR4-V+2B{ds)-8c?1awiM*J3T?_- ze8u=cGZAW--W7{)csB3%qxC#Ak?cwLEdFZMH5~;KTkr`u#Jgj9MqxQNHLn(30u3NSj zr}rNV9F6?1`!+q`JhY z32*1mW|Ecn+aEs&52_)A+jjopmfWIL1*!@7n-yeRUn)Nzg)Xhu@yw8V^Vb^>+v{Z4 z_7%yQ8?MYcbHQ&Hp*oS>!efs#B;&!92vBDqMf;YmXpW)F&3dGr#(rXOxnmt0F{{usPfWVrk6yi!HX9NWncPJLx%SvyT-@_Jlz;R_8p#t z;OLzv{r@~3kBwc=?FWXI*S;69BH``F8va8>8tiqkEbpIk8OaduH@4&Pt>3q1r)99I z4#@IzogD;RTs8N#fzVNOXe>LU3dRg7#`|-4zj!R9Rzt8JxxbBf3Gc~CY-9K^ATiFg z7C5*l6}2p$0H z-C}H$X+@dwZrf!1Us3z$5643&3 zmoM4n^~Q{~LvW-oW<)cdxzyvoPR8P@zBA)s8YY_n_P*uz6+rt>w?I$|uKkJ!bM_C98qK+TxH@xh$aOK)0R@<60fp~G@m%*^XnymDv@@bdd4x^tX# z9d-DM{)Hmz@OAuBTYm|++Sn)t1~YUfT)k~Z+<6f0{@41SOZrkjZFYZK>cK|iY(Z-(N@8*O< z;&XDi=CY)zf{0poLy|GyKDTAv3ZQtD`#DiADi!!?(#%hVG5Way16$`)uG%JY%}p%dF^vi?iQk2M7_EY{3wBc)%%^YTV>#BdM!2TxgQ<2`}=$+Gg$+=G=Jj?(v8w52^!tI_AK!qsPE& z(VLwoRJfLhzS-!s_r(g?sqcFqvRT?$XpwuL@Aq{=x!a$+i>-t(`ukx&!V^Gs(N%f` z5NEs50LJ7GGxly);VyVn?FV+JtNK$)RSkk|h*8ZiCbzmRI+N&+bbfKqn}UpLDfgiY zp&fMz#36VmIR#_RIyObT@a&F0!S_&sq7u^7n6K&jnfls(ur=G$wW%CsZ2^GMdwn4- z&`~16<6O}lh3#5iKwl06W2TiudHHU9k6vWJdJ89b#V;nsT5hH(QS++YX87WAxRrPc z=Q;rY+kD_~=}Mk5>hQR0>A^*>XeH9L;ol#OmfO^XoaNkP8EE9Sx63>`6FNy~WxYJaRX(I_0lX(1H!tcxn{CGe~BBBwR=z zG!WqxM$}!-Or`(gw9>1jDlyGxWQ1_S#+a@Q*;rcTy%QAU+6-$R3dV9ds#V}$;rU1_ z%zHFLBCm~`yPrH*%RkUbfxl$Fi=lPx;c9SGz2I^*%r_IUPv>$(yx^jQ z?~l|piEQrob3(H%z@US~;9N60LizCk!=QWN`nAYytBv->7Ns>oxUl4&S}H99E|xNG zqJC?XHpic^lc#)SL)`;yJt6nmE>+s7w)f|9R?C?;=G)YcHWg5fZ(rB zT(eU_A&~%@T5l+fq+Oj1Zui1{V#j&3bDF1eb$ zXm8xn9D@}^Uv8XbDy&8$YBfx5b^z*2b2}E3MoCl32tOM}ibZU~n;d<>{6O@>crFI& z7*0R6g*ZTu}O8(;ty^VMRwC&b5+Dez3d*E%U&ouLkVRJ-?OVK{AJjEQq~j~~u0gW{<5Iz!JSFOVNgXw}We{vLmi%I&0^WE%!s}AflYBXd zIsQ=eto>GMU#JC;V)5^{{>Zzbci)@F---*JlcV^ZMScWO1WX_?Mq{7RHl)S0f-{7pXxA0#Ghs+C)H{0YwArNL5dCn$kB zV>8ohGsllblydXS>GlWa_E~LOilYWX(ccg$w_*6;zCnLgsOJCdZ2p0J7>>Gz{vb~2 z@(V}71;l^zQ`aB_?k_n(JLvy~0JeSheYD>wf9;we%0{XuN{YCF&#npQz^ybo%Vm#R zu3thxc2U}cA?TSXWW$x)TS5yK zHa{#{SZetAlGuPubn*|%;ne|Iyn+z>tHa+BjwxO%9Ga9bPyi{^Op&>1495t1LA`tO zISaU7fGv~M+(5zaGhPOyrleF&HVt_d_ck%`H#3T}eNK93vA;R7?9j@LV+n_Z`S2^V@!{3?%lG2WyM3Ae_P~7Wb@goN zabmxX;fu5P?Us#L?{QGB z;S`+wuZrn=G?3S~i^e}Q9wm1Do2*8-pIdw~@(0!T7*cRSGi*e4qXH;ddyh(%j3c0A z^`B6r0$cM!%D#>l*MvbMK4Gg};r^220_-dX2+o?mT0<{Ok}KL4nY-7ydP?WU3qU!HKBtVeiO7XgU1puv%>G=$kmO z&!)1OCzq#sp4`@(-xR*S6d7L~&uICvQHznx^i-O)#TLSK zvGRXKe$Bwrrr!nOz9D2*(|WqFYi4P>ea}LlrPkPcWx$^m`?rKyw4nbLwGT6*{)yAH zrZ<+kO2V)V2b(h`5cviI?g2JWYJJ$%43=P1r1C$mq>Am~krF)*12s$H4VUFJN_6c= zp|6M^dxXX41Aqf-96y@T|viEX2~_r zRvMJq)_N}kBMWMy<|+poF$sp1ETfLa!XGzGxd-&8knC+`9|7CXLi=Q=d(ZX>1sqLY!)WxSeK9dfr>Sh60IC9P`az$ z01U}oRg5IZPJfT-nx%OKkdp;thJQzGcMhbwWz!lKoJS|Wn%K3W{-kAU#b>0q7?5F+ zDceUhC}qaZczt645W(ab!?P)M(GqL@Hk83n0l*@uM1*lan(`KN?wtK4qiIjKlKTM* z!xJ|)W(*8jo&5oHNl5`_T90fR^9t?eY`SHSEET}t^&OI1$KBWZk(Hp6(MVuZcn0Mm zF4unSoO@aV!y)gvTuL+ zs?xLTY6S=HY1aX73moT|`nL*ltCak2kn^$qwmHU5Ih%p~o|ib6438hR;c&arfhxGz zE)y6H>-`c%S&OnCX05j44u#C$D_{KW@Aim-Ta0_gy4nK0{&@lr)SXTDNCowOj@QCw zE~bdZ=ej`yH}aS6mB*72^(RtrQ6b_oM1jzGlZ4{WiqAMtfgmZxWX%z6KcZ|H%*Vm~ z8C53VKQVdmoCe+&Q+uxPPk{Ebv@H<~k-736?0fM3*aza2GQNXKbVu`~@a!mm+RWN; zOlk|1Kx4Otjv0lMyJn$N|88Ek+>YMe`JVSgWx2YG3>Rt zbzDN`lIoLprf+~bR(jZwYdX_XGs_aRU<62wQD`WdscpF8oxE~u>MJhFD-3>0QuS0mCqa@sLJ4hJNlNA(dnZxW67no>BS z76QN_OtX?KW5k4oz{Q7Ih|PuCM%Qm-jGuHqVs1s+C=yS7TB<#`!K)j1RtX&+?Bv_$ z6d7f@zL|-Re|r4sK#w@`ewx(LLB~950aTp*QUltELi^A!cLvxWK%42Wt`WCeIc-aR8d#ed{Z4|I(nzZuqGjY7e8BXtm3d}DPw{YD# zMnuGx_~Jf4eLMY(fe01IW@V_@o}5ONjcfuKbpqhfkKoSVd?};?R;9H^OD^UnxZ5HwxP)D+kG>P3|I(Jpab@DVg0=MG#N8c-v{Y$uMEt>_ z)Si`gR_JQOM^GdV-pzl?OLN!hD000?q}kMl0VpR%3or^+eVz11L;Ww5{Ywv*bU+d) z-`9EDQ78?)c(X;QEQ+ymK;BSwH-un45kip;LW%v)aQw-|M6`mGo z+F@-wCtYH&g##b{y}M)Y-!}ZBUih|mUb8RLg(z>rNvzLbv_f!;2$39sbqrU3t5aH; zDcQyK0#?p#pSfFBUE32Dj*MW_1M3Q(kG4$SzyPXINx;AcvLPxN9T&>{^)C;~hUR`H z@@Fs#F@$r{c%(^>1Lm@T>t9j;w5#y4JhrEHjunir6)o+UCXg$%wuaICKXpE3Fw4vB z^D3+6xp!HCF_t#z4$bH%xE;?+_@cki)WUDJGZmdoQ25Wyzd4XlJz)HR{X=eTaz{!m zrq^j{`-0%nu+E^21^VdDMK~TxzS^e4jGCM4B7r0=q^`8V1c{-{x6Tli_1CQXmr0CJbk zv^WFedaPjVpG|eE<%#yPs0YD@WdbjDRDFT8NgCb(SHT)+|ZRL&@-lTwfD(g$LztONh z`C_Zi^&lRPL=rt!-9<%wgIWP-J0LI&Yyt23mw;bce!t^-8@1$v72RxC{2jzzQX^4!w{WVrjsH6&N7NhW}r3+592P z<-0P|=#em-C&k?)llF$vWvY9(rP7bEVrWC->s2* zQS!~L4=D?tj2orRUT!MYdpu<&UBXBo-)$P>>2-ZT{1Rs1{Wzn(G3c#i=<&V-2(9-% zZ?_zSQwGS>_;Cg72r6U$XvF?ZvWkaw<7fZyRnQj|4cQ`fjLU{zF84WK{wf-@iPBZ4 z2j<@Vb5aEXy{n4qoY~+3e;4VA`c{obQ5|r~d>vAo>AT*3@efF!B&X4K{zp5AQ{8j3 zC5&3V!$r5_FR)jIKTu5*IMbPN!Gad|dnG4-pC4@O0BitAh}@?ojr*=V6Y)ikD73FM zCLhto0D3(+0!MEh92wEFvj4G-*fJ`YY~__5ZD60Ke~wrlu$R0WK(suHW@NmoBoXZ{%WH8usCY zLtiaYPJc1r@n;cs8nOA9aX4?s&(%s=HT!yQ619-+2a2T@XI}fm&-(MB1W>OF+Py`^ zE?N)Hl22BCaURGYRru@>0#_vSiCjMTfvlXJnf<)QuXlJmJ4YyCN4M?0bI>OmZ_nz( z^Tg3%>sQdrzTT%|n+xMNho1Q{{KddZ*Q{$}a6-(*E}RU>*`-jXT)y#~rY%$OcPr~> zfwt3~JOHy}2A5y*_QY0~u45O5C}K$gZoGfZbRnZ!3l3vA?R8 zP3cNR9ZN)xFEX}iytG-G?8E~2vK#TV1Aa=;46sHrz;%$H`=5&$FaoG7;{ZPw2xdIk zabY-d9zP}kq~tgO2r0~ncWFXX-r_;>RbPa~JlUf#TnE}zW07(dx#cllz-QtoT}!28 zdO?0DH}=rT` zK#9VM3s{SbX+8FthrQ#pyM61%A5W)=Lc&uO_0eTtlkI=VaeeM$^kPDhZ`3Wz`2t3v z!}~+FGksN}07rT3M?Ut?XbiIkq&wc_7GEyVs95>CZppGb_ovq|7FZZj1Nf98;S$?y z{KG(-kfXuWS4v+Ei=w@f%#5c_osV@q8hP0xI0>61y)m>1nKeH%!UJ+=J*D<~KcVnY zIZks4KGPHXhZ{04q3&vh%m+X-jSj2T7{fy*IT1hFuj>l_4J7XV7H^Ne#?K?pQtl?F z#l8nEsm9C#L11$~4Qm%*31g?i+ca*pXl<@MwL3Bk8FM?v>d(vB|A5KEj7Bzvs1!a}kmAaNj(PZQ6vrNLlR>&(n%`#11b&%#{)R?W5VU4=WGMdEtiWFL$eFu-{9_klzVEAC1K3lIQ; zMVAd)zqIvk;k`&dYQjFby|@zGJ7#b7WanG?g|JC`$sdAZ;4y)}@Sv}KOiv3&K<`f~bD{>rA^@T8EQSpG z^xKaBF8+>COhgMLs#lCOax0Br3o-{Z(J}Z@JGA*hUZy^}@=Z`MHH?icT-al?e-6m; z?yttqt%qq7wMuixv{7E&SP(q!5aCRrpoGnZXZ9zs_5;VO^ykW2L?2m?4FK@wbL*TK zGL^6N9cUJNj3$^doYbaMbU;9@=m^n!g!~wr?_LK1AAP(Db7{9r z!y~kotvC&elg| z<&E^ty0a(oL_YS&0F+t&fTQ#2@Vm1~|2B~e5&aE=x#g*m#6%N-oo7Gy@7@FnhZP@d z2JANp7`???y&^rR^q0fbj=p)!tdf+MN{t>K;w%CgbYd;@tw)_}|MzL+5nH=$SXw9V zd}2>G6qFD)qU9|~Ep}a=Xp9V}mSNzbNCakjn11Q|MR6#%(Fl$%i@G5Kfx=kqGou$_ zgdUujKwqDguIG}-rQ6#zI4Z!{a3wQEe8wwBaGROT#yPqH+kqKCGT#)D0@_u4sVUwb z6aDu7E~}3qin6HIR3e``K>*CIn1a)>tiry(S7k+vDh8PuFwM!vuzJv6AeZ1Gxne28RAC zSH{zSfMqi@ zFFalt9$iJ#X%1g$VZ z7s1R0x`?j9$`<>!x23j(5F7_c)!U!s`pkgt>iP%W^u5BW;6nUgi%y3-R2)df_|_T4JB4P<81XPNaB~RYK(3^F2vb~V<-~dIGJ5` zTPTJ)lYJcx>IJmWGStX)e#oX;a%)!nr1jNkI0(oc!iFj7t@@$T+m{ak?iLBm6i6`g z6AeCj($r_b(>eeoGM+!`4YZR!+i4n`Pd`eYS__H;nD>Sz%a$*U)}}OHy7A|CS*`v7 zPbhe8(U*O*$yA-+*EG2OZFngK^uQ+7YCl zd&2!L4{IW?P6MvWL5o4oK3nP8x#-m`u;&4ng(6{@P9P#kcCmJ8k)R^2c->iC?}}9p zOm=?%MEPzoGe3b^$u4Qj6+?l3Ln6<n6Gi2h@w$ z9lyY&*%&-v+1ki-tk)Hz)B!5s(ozb5${RMGSl_?|e`lYQzFU~d2jGy63yiotQTqZ` z!n}U%!u5c~ZMRfy;XCH4Iw+fEUQtpE#7WBMLUTSBC9Dr;Hl+n>n+UGNgJA8X3(ASW zNihe;jBIP7UqTONv{^c<(XJLq0@{-_z!c?24^MUD-Dxh}ZGuimfVz=lKR&YMr@W^* z;bFwQ!dlpx_N>OkJr_l+FBC~fqgd+rETNBoj(a%z+!%kE+fnf(vEL;QA`0f2-$wCM zUkyD2&NqeUPi;>N+^7-k+6EFq(G0j7c*+^L61~)rjy0d*FDz*NRI6;0wjYty-Kwi#y z1GQ~YXWPq{8E#izpIuO|YdMQLz4e9k>8v%&O^*347!7xC@kh<4$Iog6jWRwbjBJ3ver6C;}g zEPJ9Ze%}Xk2JZ9hRAW;<^c{k05s{+-1vVw*7gyjPvF&Q|&;Q|&>^U7lXeW;>wj6rz z3<09~vKa$rv>^SB=7DEKf*%*e;$3EC{`2l{z5RBIGTwE1{8r}wS#2;)Nf?6OE z(k{!qX?~0DQ#)oPfRO_b4Zu~w4}q*>b2d2D%NtsLoQO+$BIHWT4IkXFtopI8%d~y{ z+mE*<8Wz2eKPJld?f$HWij`OipuTuLbZrObU);6%&X2J(CSpa-=gyw`#bA z*_pC4(joM!i}zT%`VM*oJ5Lm+;uxp`T;tekD5y zz=c$@BhZ1`<45%VK#43Vkco&)J}N#^Li2`LLXTbt2RMCj{`EM>+X@UH;S%b&;~{)0 z3=uD^_zFWJ;kZDtnf>Nkw+^;5JYZGkH`R4t6eN*grkc3QqFQMSh}(;ggyAS>s9En8 zgNXsFBP^I`HBcPg(tZySEmFZfpsVuB-`C>n>@JOA3+p3L};`!?Cn|CDC4t$G>vWR z$`Qdrl_=1jE<6aZudVMYl5sjY!t8Jj>`c#;RhB*%=SOA$#YGSfKoUv9AH`V}b+jg* znk(GDcHl}JC3LZRx)l|=_UYGrJ-!Qd-~1USws(waiQbFnw9=k02}9>G3@os_ij06R zsJWcxipaWpcbw>P*Olfa5=)2R+8u^}ZgyAJhG z0rhaFtLoT$H(pW#ieI{|yZ$=7#2nsMRPp+TL2Gp!jUWp9y86JKCNg6&<|KEMxpK~X zlb#e`v+ozWf;?kC{6D~t1eQC%Z?&@MSIfzzJfxWzd?R@~Ks?t!Zpyzj}ienkV_ zMUFSqesjVQ?e;PsakyTwRJMzmQ%B8U%hz|P;#wB|4qL-;=1JT0p}i0C)YbU&6f+|v zFQuf9ia?Zizx{q`Xka{cdAKsHk1%PoFLwUj z)})R9`0C;~ayL@H+Gp2{fRze{oeFuB^4hxU@9f~TN2ah+VgKeCi>@kF6P9nF9;MU= z=XU}H338nLOM&pPsUXkX!td5pyfmgSQ4uXfxer}4w(CKS5gyqn(fJ>i?t92|UfW+- z*se=6be!Ule@5Wgv=OlLr`*qJ`F+1yFPw~)>fgwrcqg%dzSu13-mtxTzrs&NK(q6n z?uo1dz;nR}_qoQFv1)Pf`$|z)x0BV7W!G4jXuj`N@33yS?KSPP8$3! zk7By=TWT8NuipW9Y;^)bi|%n5Z{jRu>7)F3()37P&(#>oRxCbwAwo=ec4dQ?GpkzX zpgQIE>R!>Pj2sg=dkQPTrohltu%;M^YUAyIi%UUt1Y-r7nsbm(*<8pfkxYlWb_A+i z0}OVqO@?>4y)w6A>0^0QP)cwmcFmoSM_GrXgfcHUGMQlVdqxqd!TRViI5p*!5ngq> zeTTmmyu$gR#7_*a;csq+t_?$c(R$uf()RvaKB%QRZ@6Uq+d{0stg=nqH_U^6q1G*$ z5-sXyS3IGJ}@~y9vz#vD(GD#QfFQO3&{?RG#;2%y!H*=3S zo_I9`J=ZhBr^I(SU8p_*{q#bIKi!oZ3wUiy>RiNtZo}|R3YcCzJ;P7DO#|qhV1^`V zSNvh|!!M5vPmJ=EY3;LDt@yC#-qS=$x^{innG z-Kxrp#Xq6*iy-~W;=L?yR-tmTkG=1tp{ZpKD5KX~dUdDBxn@8C*+(%cG4UiWpxtfG zzYL3h%<}!TCq369Y&xizWF6A*rt)Wh-ZlgOb%QmW8wYRcAoP%I2WPIg_4Es6}s9}ppoGm4X<<)goUw_}bY3pf?QSM5+QnXv70Ufg1*J&N2 zE+M&oLESEm`OA^i^1XK52f=;)pQT4n+@)#u`8uETjlXA_$siMp7Q#)Z!EvOy?A23-7qU+Lk9DEGbL*a9<_LE ziH}D*{}@n+V(W#*6cm|zS&w^hcux#CCx28yCsC}2gIuiPKEuG~AAW3yz)mo2%E(|9Ve$@VLQ+G(hum>GId&9K!NuLFM(QPZ|+;%s5ylo*S88n|wx_6(dugVV@B(Imuf1wUtN?%g#q z_Zd8gnne%s)RWU^fE2s*bWH5N*?q8$xvk<+-kOFpQ z>0%+$EWekck8~ISm(9EY#8qj4#alE8K&rH$;l?Y%@((S@qcQD9hh&LR~oEB6-V{g8g3kH zRv{_~_Y^J*XM7uCD-2q6Ik-8(ZebSRbEC+dCr$aqL?gt3jA2~wlyM`a-C}o1=-Zrl zQ%M+i9IY3vXWg@6MP9HWvw@H~*d+05`HEV+h?jUf%igH4@`;ZG ze{#mzkww{k{xUdufY>4(s^;{c&j|`~K<%t?u9a6cXph9+Sxi*YA z(gAm-VK=1JE~#6G*&W|is^`#=-XCSHx%GMkX=CF}MWAVsm9280=Y;?t+$lX6XP&)@ z(B2aZPzan1AI7h|z_&+qVL4y$C-UjZ9rdofroy$3Pmn8p3Nw6-XU8lWT86hC5?Q|fsE>MxSR=RS zHjWJOy~J5vrg{v1($v#*(o`Y_oMin$`uD!kzD9BmQQ6zt^n~LhT2jbcn^+h|l*~6T zlb?WV^fdU(mB|SZbKdBCTyFW67g$uO8&XMo#^Efo0F_Ke1LV#OEvUW3!hs?mDE4>m zM*a5{Ae9=xYA!9`U*(&#I=Yc4*m$Bq05{;pS&ZX&Rl?fZyo~K{HswS7Vk+>JBZdbx z5P?wo@fQt2Cc3s3uq?e?arfa}Whb3Ce-?+fhO)9yPEPd+-Q7$&`l2~_fiXoAy|U5y zZQ$b0L_HC3BT&D{BmH2-@aoz)z3R9N+=^UhLbqb>aS@bPBf<~A!OZ{K3yfQZaz(yO zFN$dN=q90tC_~_$sMPXY?m%&H$UY;=(X28&2nLa_V}BouUiz@vT{H;JlXG!~=}N8& z9XZ>i!)){&ZJ_dub=q<}16OF)y+X#RylA4#8xJkTu)aS{H;;7m9NNf#ZO(2XFN~k~ek0eRO~UZ)MHG45_H!L1ebgUYAr zqS-%Iw14>H`}u2%ebK$diHE(7*k+|AnYfD&>>8- zZvFN#Mu8{Ie{1y`w(z_lR!CgzJ;zV#lGk(v)qAS?vq$8rRP_`eZF1Ht$O<)BedvuO ziswkqN)M3ipftd8KT_mLyVC~v|AWhn(GT-`9N8|o6XO6?eACkO%25(Z5Y2_4vAKK1 z1#E%2GAEA2!PM?tjgsjsjmxHD#@|_O7!=Vb5z*$z|~E8!-MhS+ep;23s>rE|1=u~ zR!FI+Mb^fn<5yYr1K+`$KGl@=m$pW2W34kB13-K`GXuPY=g zXYTJ}7_#|)<|pi;4O~BLeO@5`-caKBnk47kF_sYCBFb^*&Rj=27Nu_8P$U7ZfVwKi zb)h(4#7}2pSH8(AIcxbUn91wW(w_T2{7Le%Z|`;%&c*)xwR$#SQKxw0x7YiU>gcDs z=Cl?J>$JU}8b_c!ebmwj>8j_C6XLd`vguzYOdW~mH1DGEPt&;kUads|6Xs(B?4>EP zUkjbABML*ASsRWHf-K5R8>AkiPq``tt==}f&Snwk0)HBAWp~KG*8o~Z#ol#B%IQ*O zYs&hnh|_-^%c+<&K#HcI%PGaTUq;%7A)YVS6vKp$^aEBTvETf4*X<{t45SrYiSG^1 zMw!WrpATT3h+^Sli=vMY^Kmg+c> z(cK}RN1^>BylGvj<9n^jN9c#rMjXr$s7zGUcb@dP!)Zx@p8!B9 z;eDrUai2^z!%pL+{4HuV-4ye2TRs=TX{z);V|~JY0G%W;MtL*&@2 zQ#@t$5@`k+9cMeMXZ?8d6jl_qxDERcMG%o8e6-e--(bgGwn{-I!mpOSG8aSw2||S9 zn^Q|rio*eaWcVZ!x`}vVH>6nwXl0f;O4B?p4bS2!nLF)t9QZQ$@DP>|8R*6{C)NHE zQ~$(quKoElmbgF-JeKTB4Eo*)#a`mqvXAxzs~?bE*xpM|DFWxf3KXKl!@aW4l-aqr59!8zDyuA)Mw|lyjk4qo7XTEjvP|R5qWwPVR>$e#H z>8F}BsF;(PM!PA^DsC=hp}caR!Y4mgnvlhccap_&GmK>=7LWEbi)FFAu@ufcuB8!{ zZmXV$;4h`p;L=Bq=$c67IQz8WOXU5vqjOH1+_#ckDT zE|-CLc4K~S>sn0BOXiN&OILCmIr;rL&uxd4itaa6X#P-C*#T`JR%rh^dFGw1oJm&7 zy7?);J0rhD7xJZD@5wBjA6VSZbjjA+&PE=~cKseb{`f`o3HxC+Tx9?6mHSl;&AmY& zIR?`OqS6<}m*1U=YI7*Yh=`LJ>?DA!8lwbMcR`AIvjZ~1!I^0>tkSxt>W?s9MDu2F zvoL5zzRbx=OQ`}@*CE8$;`lQ5WhD_&nAb6rbv}?9L75wG+})X$roCbs$FA5g-|`X6 zx@dX!)BU?mb53c|VJDRE!xQ2v%Y3#McKENA#%H32_*CmZlx3w-Aoe=;nzhw#!{cS^ zAQ{_X0oTjW?A{M3&^3MEj*|n>GqbeY%qCvGN6@lBKzPuDv0zR)6;iojEY1_Wl0h zi;?GrsmM3|exkz0(ZlGP_}N}7>*ydzKI5K3C&@sNUgG}~ZDueu_4`4BXS+%;OQ3Wo zcg`@G+b?sA>$u~eUYY1HXU2pJrzLNp!u|euBL(@V_rcUpa5i{Ehd6#(BPgdPA>AYr zi&=rW`&B13vBvOVZ?K{`Ur?on*xVfg_FJdPsL_I!keiLv#`}Vr1XJ2Gx_IQ&!>qNV z1vM!Ew%0#b?0`=P!e5ab`}iU$*3EDHa6~)YJOpCW027*45ONkTTb9FETs$80s(lev zp$*efTY5AO_wu?9;g=GBs&e?pj_$rc0(9avXk&gbmQHt#43MpfGww0S$xq(S%}o0k z;m7xo=fzYApH*$YknKHqth z&C^A2t(0A|hzG-mJ~AfK`IT6#YTm4B-kfTa{YFOYVb-3P*yPE;PYoDeib{{&nydv} z>0yRqAt}<8px1DZxC3q&)sBPZb1^EMn}3>YEO*7w;AAS;Usb~`#YIHRaTi5awzsGR z_ay(ScnxzMQ(1tNvyb9E8)gkXSok)TH-U?a97?!R3+SV~iV&Ua)0ObY@nRiw@2-l* zf4+Bt(Jrz^?$?aa2X4T6|J6KT+-4n(+>9M?d0r=zu~1-0NJks!9HU-BvJy+5uUu7m zb1)81hi=kupwmBB!`@~SqxU^rEIlPQw3ug(*-xTXrviId$uQ_7=-ZSZ!>>9T)heBvxA7f^Sx<|R+C+6=srZt?TL%p z&=vp*q!M~;C27%|qWVBQXIv0?XcJvqtz8enx)#{ps`Am6!JOhOv-Mdyq09npIY>;g z5#scBl(ZLC^JIXrBBPdv-S<`yo|Cl0zT+eAVMV2Z%~;>Yh32SI|G5aiMRvhMek+g` zy)x0y^l>8G)p?n(eXD)a!r;Jmy=|z#*TY^;uY;D|m%hO<7p;Mci> zIHHemVh3R=z{{dV4LjW0tlyxr=zzW}Gc9~bOG-QqnBVHjk0fB37hM*{P^s5l780hW zkbZxX9+Abtl;rQo;bhg^>$9ZjQ(?BeI>h{_0qD-1NK+ro5ztaKb9}I3mc>zocsklb z3i9w*a6sH4)4|xC!$q+_Zj9*tj(rl|g`I&)pg4;+p5b*-hddK}^r~YRYA)ynbIUxd zdv*Vd_gws`gtD}tkR8#NpNQ4&MW5ZgM+OM0f>;C~m2);l1|5+PNn<%K^~?5j7S0>E z-e}BO&*&{I^WN8)Mi)0}iY~eZx$fi~AV2-GTZr<+J$v_1{T8mb6}Ipf?Jr#wjZaAV z-kX!!mmfj`FXUEnrcfg+e3w}V4;IBDze8mLn^O`!e^7w;RFf-QkCWsbL_)tjTy8=; zZhZ>zUSOw0;EA)KaQL+RL{(f+ndvIxIl`Gfr}-wTRp8Ly(e*(4K!siigW%6tA>|uF zUvPF(z|c8jd>oj!vvoG++{!O0k@_yXm|yo58{$1RT+>7)Ek8v{NGKJDQcn$X{>b(D zR&@Diu2&{gBrovQ3tSOk4T#^FVTkhJ*8GsQJ(XqAfj<4!2mhv5b(5t~qOagO-D$7n zhDXKbyEXY73IOc&U}&9cQ@4$vK?g7D-LQATBCfH9$ni)KK|PWJq}$TJ{EwqDFSzFT zACXFT%8=r&)m8l#^gOw|B*@_+%NwBV<>SusB@O`+U|kkn$5e zeB79gxR4(0gO@UAi$%B%7np6_#Q3X!{_w1z#v6Ry6=UHDj6fVW4I)0*R9%ZpvVPtS z!>=Cae_dNm86ZFP#IX!4fLgmaf*|K+f$nf*TB!AajI0g4#Lb~+*IOB4WBl~ALMJkB zu^7}*?3(w@kMVyiE({L)KJ4R+tA=zxc&AW9`>gkEO!-`=W{g9%$7@xV?+Puw~_2;g)i z!?MGF-ij0^`vLt|)*}FBxSKG`L%Cj>g5~aXOY!!rOlM83^VwTF-q_I_8?u?z!piPMIiwwIDyAY?sBMjdV|6+H7i}Udd1^hX}J$jueQq~9s)mj+pM>Fvj0IYp~YgoIz-&rruw0x&m^==E}ON@`uZtyy-c+ zgn;@q6NdqGn zV125tYj}-6zGC`Z#t-<^cp=CI5b!84^0_MEG=sf{U2EOH9K~W+y!ranS|!MMLGU3d z@mwsOo)}uK`L>dSn*FFpcqcl>s-U{swgMNWyD||}u?dx05nerN07;_OjdH8oiWhkE zx2*1WmpOUo5jp#@tV>wgKpH9;h$~z-0q}OC*4)5?ifoh7J^tN?X`0nXCJa;;ciMPA z@2{?lpxjOx_}_`KU3ln?{qJF%wukP3oFXR(KD_nLL5|j{wjD-TbP$5IO&|nc8pnCY z$&Qv{QvCt-;ywLjJ?aYQ7K6b4Hw@!daVZqa@(}8wzgIk0ux;U> z!`A_Ef{$Sa6juSb#C`FrHCTbttt!i(iFr~bzW9M(1 zURXqA&<##uQDM^qA*uEf?vz1jY;{`JK}>wJ0T+Ot7~#BE=~T@g^smmUhY~JrqVq0D zw}rcl=|%06@7YPqN%l=Ia?uOQTIVS(C z7=f!d#}7;NHq9!cwPR#7h1BpPwm(m@o%^ioCw;iU1{bn6oPrPWg!Z%B`dD984j){uY|J>M2A&rGoqZPm=_pzIw@HPZ)MJMj74sPqRX@U z(8#VBB!*sVQ*`}oTSnVvH=^Db$sN#HPR&kWfMcR#rQFxJq=8IgMJa##qbiolCGa2c zXyS&Wlgt29SiJ0@OXcak^lD2|QjTPH;jX_XS)6z6;x*wgMxn79nDKhM7qVoM?d|@m zFdSxkk?z;bHVvqWbaw-QJ7(GsBGeyk7vt}?j_1VDdQlTc^eV2UySvJ;tB7qn7(`BZ zik~UzlArYe;9;=lP3RO|W*AV4s#(#2bU|>m{^)yuKF$K69p+pR4w9uIsrU?YMVjBK zC*0+`Q66{aPQ|F1kj-i@^Y`XH^9_?((=j!}Z>T?at^ST>%5Dnidb9{Hd@dieL9Be# z1W?s?uyb9Ji;-<>ER(DiO!{Lep+1rBQ+E^kq)5x zTU1-g+IF=p-6V|bl9HJa}bOEAGZ&aeE~%Irq;+Sjzt z{Cc`LDl(Qh+A=mm1YWyI+EaZ3+s z`bT&i@K=M7ovwH|JT* zVrKP9I7dzUsu0cwi5!U6Q}+<2S2>^^eAfz9@Qt@ez&Fsc%HvCT4#&(@$G5Lz>Rq#a zzmf^>RES@ycuX7_HEn4{98^=xI4lv{(0|nvY#5rM9F{sLdwi<>e22T2X;-Fr@%=O+uyZ+ zbH^zW8zHdAMM#%Pt}JBDuvm3wa*@4aMkSP{hNMKR{tFA0$|dKXK_?MH>XM%cm#Bj< zpU>D;6{*6%)Rs&D-ytPwKp{+(CuRO#{gB(p8r$U4rF1GvX#M&hmlCOSYu4NU!hqI) z!GKr!6(2eul~-aqGi92G*;{EK&X@>HZPrCc>rz())NGZQ^z-#@Q=~=y`@0duYG7Qn z^!y~bcaVb=exTu)glkb(Swh47i&LW4JRv2MNvN}Scceg#Avr*wiH6Ql0hw5WGP(Wd zQN%dvPqm3w$!re&668@*Y@Qp4$==>#e(6kglVj8=XdfCndhmSE?2QV&>lD>HiM0!J0II`+E!utdXYR z4hzsrC^tTIiMcB;9t4~i6p-@PN8en>{@jyhx^n`=5+Gyjz+m@_!|G$3rd|5>d*N8@ z)Q<>WCS98td3(%M6%n&_ZzG@iJ4~d!krN*CzS{h`JqY>uH3zP(KTdtA+#6S@5BN3N z0O|wPIF~QQU68n4#YbEpP*zwXvwQ{nYe^rWw0ESmLLg)uou57u6^y*!+-nSi+am;djJvz$TU`2a1pjYwBgj?Z?6 z38y^)A`yfgUR+vrF!(6bN&^`x)avV>=t=jD2#pb@lwANduQq&^L6>V|S4EzTyY;Aq z*&`wn=8;@qriv0|1e$7eUJ30{*Kt$XLQH*xN7erfvyLW6b;Y;$1D~_jr{JvJr#b<0 z>M+?qyq4w}kr()Butb@_T7zXqV08A2cfa(5?N>)cN&+f%tl*gvGAR-zNxGx_ul#lL zE4a-JLiH>~4cdm|kU1gDF085(0VA+@ygN~g;(A;2w8Adf==QX#%t{jKN7nE$rx~Qn z$pio1Kld5qXeijQwwG~ud?E&1ba6ZdHp_X54zd|GZzERDRP`H zfrF81_mAs8mq(+F=Kh!0XoNTY3b}fI@$p>iR)zzen!trKNPRyuS!STlmN7MdYGcI1 zAz?pk)3xR&VLM2+E+B=JwWomLi6)?WRYiNk!U>Zl47UF}79((bF4NV1$bRV&c0d&hRQ zs83GeTH%6EdFr!a_L;Xvu3HiCJ_S*Z1I49sL|<_pI{huVbo7{;?)zy3qrd!T@o0Nsq#Xm~VE~ zvVtv1>nw=%&A!%YNrh`bgVgn)t= z>&fOp;=4Z*LcywDJ<@+m>f7~hGFiV}bbjmRuExJ_F%RyRnyg5#4K6z4JglBbbzPy& zm{*m*_;-FZD8K&mx@n_ICfuIygq1}|Y<#v#r)_3mmpIGBiotC-eWOD%x#PG{)+@4H zCe$rG(W)gS9h4!z+R%M_pSZ&xCJoOzh#N}C*drAJ&GfgCW4R%%8wXZ@VkqFO+eL2d zwN&sqGonel4>!VxA1mQ0q5JtPbI_I|eLkpXN=9GWF`X~eLf%F+)4gxzoDClH)e+Z4 zl}e@_Va-pCxLvF`El^n9<-!*t75+*(pt8l3tTauYax0{DP7g=+OPw?6w>47sc>a_% z6$?l)@4xqk(9^4pk?nv(uB7HJW#eN2$9TQU_-@%5(%v^IJ$ zUv&wi+gotBWK@JC@V8Z~!2Va|$srI4a!i=O^+Y~n<0BGNJke;88Els}9C_5=or_k% zZ<4yqD|R?bg9Yc`JFr7*e(3_|!-bacKKRLb6^-N%`c5K^$+`mAa@l9xse(A98&xE2 zA7BS<@FWiC*6%$l-*%>I_--dbYY|_3T zdtRYw#{BtEKhT2Ueg}%9?QJq6yr#yq#-<82d*k1?Ull{jJMY{x==TxuY*svKU(niw zSeo@aT;cjb5Szk)a0KU!r;&(T5q2NeP4cPc90$rh;@pO2_!oPcI-)31{p1*U2vcc!0w-Q7HD;|Pq4crDM2i-{{-tm%la9N zkn4tO4#SqjZx;rYfnwItVbn@)P~c$7+E40Hqu%YsqwlC^!#%o1G5_yccDNYSvcr#m zVMGh(77uWxyjEUiv7pV2sh+6uc@K**NyM0U+?R08#nZe}e6=k4T9-HLNr*o*bRpwI z8Vut+-wYlzl0#M=5LBmO^CUhcWd0P=)yUeC=8qkDczpu7Y6?w=lD2@n=%k1ruho9O zF!xK4&RXeY_`yHU^~@omg|uE=V=7kLkUeyG9X@cDTEL;EAGo#NSKs@rJp6#(4zyRM z(elX9ADHJK{tHfE>xmJOLy!>M&afw>h1E69{%96FfF|oi3B+{sCk37_0dg|WM z@@S?9=1tFFe%{;Z4ZjqKZ&fE_cZHAgvycr!w*%%ZYOJJYxC*~;97kSMo83{QLA zecw^KZS;6vlwSUJAAXV-N&7;En8v0J-V|JBJ1?T&Y=0})dUd}kMeOn*)R#tVec2$F zD|g2`Npbgx_d$r@=<=Ov;_J8_R0S}ZjGsBfs(&w&&1~~y@m~MXU5$EH`7$?+&nm~? zQOF8RLiTw>%b1y&KII^nb#$+S?y%lpsGWY zuy<4c_;lgCyXTGVY#j;k4z$5QH+kba)V1WLgFMwHyokZ3Cw}A8;}P+fuXSnCmM$@B zE^F^{l0&0X6rJZl7TJGaTq@50%udOD2zI9j?ub4B(Z5xF=Zjob2r?*F$4u>Z=O#Z{ z3s?Pwz?Pe$-Cr$3oJrvP>Ff293x)fcM6iB6_ws2 zw9H?0C!Wd5u+H@o+2m&9LEbQY8+RjGY&5*3>9H9mAm(XKb-A&}r7y@|^Q(2hjUIaJ zBTn+l*SKSxmyzi;ai%r1pu zG?376)c#nqYbdj9o$fxaulL?v;pQ|`%T}B((X;mp0;UMe<;!!=lkKgf*_Mo-Er=8u z)DaRa^D9re5lXk?iPU*Mj!dzZ^R}S$@;ZACM(e1_$}+QgAARWehq3Xo$u++G4|$@w z(xZ5*uPHRSiIHQTufrt?@3*UZnC1j<&glCu@=it_HgG;_RU;-^&{R7PcGfyScf1Dm zy+NwRiOLFS7Z^(-%4v2k2`*gn^eE>IMW!mh)(Vc|Qky4FNHDf~dqgp3Gv~j6x3Q{V z0=4kVZN?yYL{n7swyb2}JFU_$mKUD{hrVUy-SpUaaZLq6U3`IQLR?nX+xqDdWvLNW zS6lB6>$0W0AG^gTOWJOt3*Ssu|7Mx5ISITT+8VbE-80YhLUyYj7$J?gk?ryD`>FP- zzb2RNV}GLVv(eYr-ToC(sMy&Q#eRY5>uh-kr@<$AYkY+c{#mc2tZbxpk%(?f_Y2|@ z?vHW2arbtb=bSr#ycE`i*TYbYFEIiWi&-5nwZ#$NtM^5UQsac57i%N_z6GLt7!2Yy zQSTqtkDvIsof^dyQ*|FAK`^1sxy&liKtUE-9(-?kj+z>A$6rBgenh>2Q0>~f8f1_J zLgX5VT^Z3Y*ObzRWhbCe~@02?B?#G08~+ew>o7}~kjm&9ta z%kf=lh<6U?lgl6bo`;p?COuLjr{}OAHkB4*a}Jjq$4n8!7r{~U`$l;5uom=w)UQJ1 z1s*Z2aAIZSf`CW+W5b{X1L$J5Ee=MiuQ87ANnh|VB0-$Grl{)rw%5gD$H~s><GO?=LtwS-FP`yVn`aTmuRVS_#^|EGS4WAx(=R$7vWjjlzNwYNl#Sef z&B<3|HrmhvQNa_!#+rt*k?Af&?Mpju5f!|RJidM+u6AUqr*~Q3m$X!Sf>?i4#%9t2 zOMUi>Gj*-2JoOyOT%x$y$6UhF*LZYjAbrvn?@xBN8pZjz{S0o-%&F`OC3rdu`@Mdq zlY@_LwtM0%OgXr_v(5i9y~On(U~v2!(vI#M2{AFF&fL1UPIUmZHsjj*dWDfolHMne z!GNZWMc@5;>+|7-3$P!kCI`fu8VR@c@1_c96m9;!t>`vOuMS!eaKLh;@vFnLvp4*b zZ{TA33j3WRx9;o);k|g?pvv8IGrzC9*UeEjrbE;a;j&wBA+9iOuY{2w@rLR8gR&)1 zY8kf24ysBj2UE;h&`H1wWZpfrAvhVG5HMg zBh26jOvLA&Kf2pg3|R5P?l;%ky;j~tf5=1aHeI~$x4;k>p`BX*)?^!w^ZsBD$|iN@ zra;l>7?(C(b0KFh|5#<2=kpAcbw5By;Q7$|2To8O{oO%ktq3t;3_CFI>^#@)}2LeUgZ^2(YnrE z8?6q4l1gxd#5feSlKpf)an|tT{Oatus88~tsA@c*xl_E6lux;( z){Zm)j#^A@o6_M>WZF|gBjA!JLf$lThq75=H7)NyE9hlfZjs2H$6pM$8ds4-+Rtrn z?KmMn&L@vkz7+h(+M0yAHeK0L_Dt;4M-mL=1aIH~BSaM@{r5|fT-L(jXz;JzbW_2( zZX@ub%jBn@8!2%YpYW1i3d43upZd1Mxy{}2hv>Snl@~hEi0lGlnY@R^$BkqM`*wrX z2iampi;H|_M9ae~eVB}gO;P~d`E0WBn`Wo&XlAb?cxp|NO{W$^5p(?&XIFg68P~RG z3xs6$pcgSGkad<^qFq6{?J?8$+=!pxjF`TiAL>XCt{<*#5+ag?4Cd5!o2}XcO9U0Q z>f8$#8_SEkrS%jJ(9M*@W#q+bsZ{R1rSg_b>x+CmNTV=+_*>(}?rLWnrA}A?KC9^& z{QJ`%9B+rF>E|+aIOqg`v0Sn7!VY_((hj9oeCx}C?y*5JL=-*kk1we$qKV%Kil6DH zsv?`dhj}$YoCwjbrZ@C&5T1U^OWo??jC?arzsF0Qa#&su|Birn?Cw2yn!G{etRaN{ z9%o)_Zfva~XJEBP^D_K`y+dZ|Q&e0v$0cgY8PqN1S)!rhkW6~^i^+v8o4Fkw`bs7F zS#jaE+Mh2^P{p@uv&E{nQiF7!nRj;_IgH!I`S!$gJo(6zpsts`1h z7cbshwv50NW;Ya2{yCgVms6KE&8{=1SAhc#w0E?L%CfSu!mV-YO6si|Ibk=<_F;Fs z7yymLwNkB|>>$fpBy_TRRbRdzAb|c9b>Rd{Ge_Im`F0LnoECn4 z%0@GY;$p7!4JBxFH+a@vb;FNb6!X=1Zf4lBR(?0jFBBKf{^K^&oI9Xa2(5ZR5B1Vv z<;y)g+ruVt(7!cUfCtIs{}$&WFBVy9r1LI`@(uTcSTFp_4zs`yYx<4ZPlM!D-<(-x zQ~ciVrS(~WD|U>k)H+EL8u?sh=B)1o`cdk}ESm}cy~okG|06;Jf!;3~w?z|ynjl+? za`kEoH2cz_x3_sQRwRwVao`wPw39S`A9 zWp8hd&?CtXH!) z!?+=L($s3nhl#LA4jRE>3NID7?`*Bx4Vo@VQnTPo7ld0xuV3>b>M>Vtx$)^QIX0u| zJ7EI$>jHW|H$756d=0|~C#Kmfq8k0=@_ZXj3r@q{q6VKHsTVI})p{02#zsGIuO4-X zknqMW+l!l$8T#DAP@MT?^@H7AYN_&f{w;r6%ekZm7fn9Ihp+o48xD+NGx1+*+j#fe3Jy!t==+|gZ^r&QWpN_oS{x+2 z?g5*WclSbj1@TT{zk7Okh!~GIQ(pMtSuorF-K9}ocT=;eRdAB{@1>b?tSgb_LQ7A# z{{HlxIyWKf1_=rjTgL} zgHPYv-R_SfPP0wcqUVZisP_hTMEc{bQ*QRqRo<(+n~m3{H8{brj?6sg!Ll;c>E)J_z|7rr>sPxpE4O%0nFcng zfA(OUOqH~f)p-60`wFRG4dvXV=@>Y=AH?jWt5kkeL;Bse4;)bgsHa=Ee z48CvK$P^bv4dF|ZX)mjZVb$hoHN@8yu)D3)%4_~{@5oA_9JqM1lttMglH~dLflWLC zv?^@x+hX3EJ=gVXvMmvHi}jD62nYn8(fQt^XreWwn{e5|J)#kLSJSkl+IaA#Z{Tb< zge%SBrB>=FL|Y@yW{P%=xXkN%Oa*6#w8a*enz@GTGL0rb+Twg;=wtxRWpa$HA^O$g zMwl9N`Ka^qcIJd#=o%_C+39NUUT}I1iRFKQMJ*aOkGFeMTfQC|&;Owr)BHy-anJb7 zf$Q5#vG|~}1GJw$ba1xBN4z&G7Ujlj$Q%VyVMy>-Y_8D2@hnT|3tB6XT&1&_qCqxP z!DKFJr-L;mCeT^@f7pA^s3y0rZ4^ZTH%&mLH&GDjAiXLmvT4#wXo7%93B^ziRVku? zq7>=96Kd$8O9@pgfp&CL7?c6-?yZ6@pe&-u!oFC`M8DIV+VKDBjHP>9TT=SZ1 zp{&_2{s@gm-b6oYFJ_J$k|Z@-R*F9y%|S$$IXKx}^rj(vEMF}O-$RZkpBC!jx9kK}}7kChJohpM@uJ zY4cB7xn^eoHIaRt#q;IChnbJ;rwdQbAUy;RCWqvaR9-6}=KF}55gyvwWNt&ocl<2% zD3okrRotLr9Af{j{}zqbm$5s!{292;a&->LEH_hqPh!EBn{xM5i`^2qE_*_-#MAX* zNSH}Z!4jgrQYv>-WxwX?O1;41JXnJIN5WuEYTKBHJb!`b6FQ^XGvkY-4Uf)dzt6yM zjclnJx-@$E?+Vn=znO$dB6D9C5FfhDeIDYXC^jT%yaVf&Y2s733_1ftgpF( zq{=*QBD*i{6u>&UVzPGWy0;YXzCO`zIN>^k_4=~p2yxW|hY8+H?;n_wWr3*5mXSnJ z2*t0#H?*qlrJiF4o!Z|Ip@3_I*E*Kc;U0O>*xB{T0%KE#w=aYyP zj?mCB9opy>^W`@iey*Llkq=;$RFpPbtyvi;yTL+%eDMz(qlQKc^h2{F@g^=(AC&ZvjK#(k+l?%d1=fJX3r*>BO54)YPQsffzI5p2#n!s` z@2=sK{6gKe-Z^$9j{7)#W)^+vxbO$qM4k|FL8ywG##k2D30w#s_s~S|Kq+2PaKv*0 z^$?B5jm25-yiyn4J^tuRjjpYxy}hu#wXxgvOz8|WA-q||Ew_97UaAX~qj;3n0=?tE zyq{Ag0~vF(9pnGE?6><@Til+LX-L2?Gyxz-BYwQq(O8rjP8olG?d85 zyh34XuV#HJtfXPj{$@_~_`$po+oLn334X@}`Jy@hD2Oa+bZSd%QjM*JQB<4bR_zso z&)1(PqXNJBQ0A8ww|M!x2RuIsYR$m8v*dm}q{yZi-7n^AjW4bmWCsqMNozpJJ@e=O zhL37)5SsC_O>M)IfAzX+VYoQAle>;Xr~YZ>6&4MFOzIWDg3ghzutB@`Xug&DgBF5r zG6tzx=dT9!w%nXllq-e$)k{Yh2}aUGfMhn&nU{oE?Y$P?<-%#ZFF< zy5PAT$2#ku7af_ECeA{Jsz$)kj}$py{yYrWBqPB0@7CC3)#;}9EXijlJ`?UPRJ#ET zhN;&!q}~0tf~?SnIXEjPtGI^}=k*t*G*m}%tY1`WhiYh}S$7Z*O78<~tSiuWx@hGI zC$?zdQf)sn)x?ok3ZyLZK1}vgvdS>?^0k}%pehdcL#!bBnrM2EKGWs{lB#hgOTu2X z>rTDF9U;EXf@Lu&&z~;`+=Uo3_I?`I#6G^YGfFane92&JR}m&B>Qi{0-HWplcsv zzteH_^hm2c)+Sp^i4}S?G(vWX%%N(?ublU5lNTtixO6u0@HFQ8nAqUJ4F`K$pZ!yF z`uLLBNguoKj3sY2q2ImiQ7wLMUf;U%*f1?K+@xXeJm&~4BeEYSZqR;AmE?=MYyVt~ zu@P!<`?RcrwCUt5+ecv=;Wxe0(`k?}vYK8u-Hsl=y*(7CG6&&)mTVY*db)#-_MDqB zxz3 zRnlIWv)B3H{j}zgj1?HS{0_gY63;Fi9Oz zjTy?sQ>82Bl=m{}8qngzDfzL0ogV)o2a%S6a0!TB%BMDH&TK}ovETh@ub)6cq)wHZ z=62*$X`h~3e|HFS+}m5dy1M?rSrhUVb%=f2Laph9^rte?&Tzvz0t4~ z?L?V@Nd9Ju+7}%q4d(R9J=XJ-K4Qf9h2#rW{s~GUzS;_So2tRk>I~wwwOW|qTR9!| zUKL3I#sLfArknEt|g;&mTq*}CzsutDIc zzBAz!acOUK>m=+X@#$W&|x{R@Rq4T6uaU8r*6jn{KV!j|eg-7{S3wrjLbq18g{ z#Iu8`gh)OXDtF$*vw@41ToIVw?>0QaY zYxa}TZ~B4h6VTI@eFeFUuV2#!O1l_G7J_iVuSxknpg=Vt1WVebQWptnqPL^iQ_Ui? zcsefX)kPOpx$gD-0i5sc+vn1E!W)*qr>yeV>)MBkfwQ+}?1c!fJ=Tc)Z|ak#f_Z58 zRVRaZ=S_ug$}ey-VtI91lP45FA0~3oV^X5DCWJv>8dhI7^b-#`c$wtDA=N7YzM z_oltiw>YM2q?0I9&(YIo39PEFZf@*rCCegiQ5KI+66$v->c*=Y*M9hXAw(4lMWd3_ zO1HunN65dd6jHmLvJFW-yw{MfuHNS+?7zNxQo)Y*fUG zM%bt%WC0`Bj_JC(?lg`U=^()Kx9sz^|5DoXcl|$~#c?O8X)-v9is6hYpcg9o*de5q zJ?xsNc@0sv%EiT71slf{csfpe2|r%GI$8sN5`*)KNex(zZSG}Egq#*SQmW|-Xo;%D z^AzV5#p%67zJZxv%G)FfCO7vZgGVK8EHy4y_!swK=>FCO-~;QnoX}@{oZqQYF~KmD z;9ED(8JS5urRwTzC*54f!jjTL+)9$pI zmblt?BWU+nN6VJ-Qhd$Wh$a#pj&VWjPo65qW?I0H^-!q8yn(AFF$9^jPxEdHcwnOT z76Wn3p<~p*iO7$O!}mDpE90D3{6m9cI18OpYG}-`6Gp@wDDd7`pe#mQ6?=1E|-g;_oU>irG6F(cVOPXnw-i+2GCA)p}^fG;TPOKeAjd~?WB7V z;C{7F;hC(D8ft}U=$};ul-U{x$e6zpo;q66vnV{GQ9{O6j7B6fDYVIEL)2@{V3QOd z%}7m!CInC(arh0BYF_ zo8yw^BUdetUL?@~g53j42h=%Ti3d2-U7C?~iJ+N2pVARXY;Dp;zhfWVMH;nrc8%;` z^TNrc_nki|tPspK@z{w?=zLz%cSzSZrdnF8$5XurZegy5kh!@F2G)9O3~0L0o=B1C z5}fenyHMYBee7=rz`@8Q>~b(Eoi&bh*SNtvL9^4wDAxY&Y|9ige4EDC-o(i^Puiumr(x zIK`BeH%n4on4ayVb2?~{l|9`-a* z@T^6kdg^+ico{`iC{MP3rpoV^%#3 z0Mg|JuKrf=h+mSk?aeK&lURy+#1+H_ZSim0<7EprEtuKr)Tob85zF#oIvCe==i>7^ zGKmhgdNO!D^00I1(=;2&4TNW>&9XKrvECc(ON;U7g8Q0?#BUP+^a>kYTqOb`ZJ_7F~4+2UyoH5!eMAlI$HPhQacb?@HJ1)dO&J@Ogf&#d<@C)?wk zuC%QX)PC@Dw54tVV)xc1v9!VZ2@AeDdUwy2CmWGw50y@-ZOn%=9KXU~ztkg`br6pz3rD*^3K*g5e65EkVd4~Ycm+z+o1K^M3aC3!Mrv)dJ-8DPAh{E26%3AGs-ToFMuY@) zHp;tYK#;!1Q1#LHlAl*0yEAL4h3rTjbgypOg?pb%LclKb99KUV7zr|W-skvB6nCAu z14fW%z11HomjaZ0?d*ds>OPhApzU2bEKr z%@j?SVHTk{(qKn*EIuo&FX}ma1v${d@PboHvMzGYY(YfCIJK7145ITafe(B!|H4k^ zp4}6h95eJj^nYOjzzGQL&nN|~^+edPg5lCL2>mYPir z-*86ej*r*FU5L~v66BuFwmIi!#1Y%OFo9C4%vPu9rh$fn0Y^b>S8wrezYBx{I9(I) zc_;wbfc!1a%wv(aRL?DwuU<8i0#QY2%>`Lq6w;n@vM+!tQxq2MWnh)%VE`8zA~set zhIk1TQis;L*1!aPUtPtY@Z)215G1>B`I1+8IZyUeI`ME~FB@Ql)PM_}&eGI$gg~bSSnRQ$eYoLcXi7luwp1Dr0gj0Y*&{96F-M$> zqPNP)wn$@3k#G;6^a{!uIT&bVsebrr$()@VSbDa4Cat(&`fEEpUNXz<<@9}58RyAV zK`h9cS$)iF^vz4r(P;W7=~hg!Zgey{hjU@Ee|wBS55IsB9)g&rn2v5om; zzp*;C^ZeMM^p(3(mht1#aqt`V0p9Sjt_|waYoQn zUtU}C)?`B$u_{M~Rw&1a7ck6FvjZl~O(lv1mX_DvO(AnK15fD34DlPBqtUG4c!4tV zPk#>q`0!`Qil0*AN&w9`>ab|NY{0OYL+7Ou5;$G(evd;Q@~V$@!9OlI_d=3@4qPQKU4J}<>`PFK8+m)&;!R*ak33`c) zJs#3l8hWHIefce{*emY8Ha75{Nvn76!N#dUNA+{tB5#RIQ$OWs^^L}`ezWtN6mTwB zaTa;(PWi0KszwOYOYmeI``tp`UP?WqRE3%gRU8jTt#Zc{)Vb_SgxFycUw=2^v6^aF z%A5mYShH-9;2)_42&Y(~|GRj)=k`age)cSibl?=I_jAV!6|6Hf)AuPJ=~84eQjpG* zJM)ZLt%)b~^IS+4{XM~b*@8RK_csM1I}r?W;DzPbM{#mmz(z;LR$n!10ePt)dFyQ- zmqd51BOkhExJuWGh`5SeqQ6>W0BwH#dmQ!o60(8_h&YS4-i*fkY=tKTPrsBxhCqHm zZ=T|Y;wzB%ca%xKX77jsU5HYobb1#H({e7Ref={Fb^{(MrAZyLPGAcgI0RYef0n28t0sn1d8e*iuuTOX1lW7# z)<@Pj?{nwTe_#4B7)3&IqjImqgIgzzK_xua<3dNLjk}9`>}r=t%s2a@t<0?v;vCa| z1;7(qkcXkN&^wNHike0rnzVnTixPk^|-RWCvRKXFxy6b%0aIa46 zkG3gy9T%ffuZ~W@8~qw~sNBv7IGl7JJbP<^HW;M89q{g7!%pK3smMKd}W*NkZ~@iM08 zFWl7?oDk5~9n>kU*#{H}+c)QnVZeX+CgSF%@jyt=k9189noGD&>izrtJ`OdLyaZg= zoAJTV&8EOlqRCVJr3-m$&D~tD@;r-({Tyl1u<%1JTgcbB=)!i#snZS~Yhb4Od14+Cmu+ZxwB@ z7@#Q&*!gn)*YOdh9^j-;f>i)vUmCr&#{HpYjKh}<9-ee8pY4X0E8vHO}&C_`Y+x$JilYL?Al|?Gh@%4hyCM6pHS-9in2NyyA0I@*q`T6zfWB?LCOF{``1>k~3 zhKlq2A_l2Vv`Q!0(cl;nQg)`1^@C!1bGQ)yd49|L^yp8%g20$ z4LNl`d7jwp%Q(PJRw__}ie?j)&4hLfKG$Z+e=|4pLonDQqN~HoXTi>O?BR!}rHxn8 zNjm7KlkUI&><&fmAKv(%*5hd*EGfb^7xbSJCPgwt227&n;z;W$jjmn4CUGQ8d_%P? zc1qdR!d-ffQ2Po(^Mi+kMP$|gF;tJIbO2a-jpRIbU3TSSa3sM$^mm7lqhjY!>TM>` z-plyGhRBzuk9}#XM>OExVH#}D5ndU?HqrYF&YV4nVKGEgO9wDAP;&=}KvRP-`q1CwVn7v9He1&#q4~QzyB_&+@QK`6A*_0;K%0- zL|FLGt~)a6P`3w4uJcaPQZhlL!B-mP94b?C_9#X2OQ*t0squ{#l_ui=$ZUA@4d29% zUuv60)UWQ`AKkAU)pn=+-5^|tI}@*AX|Tt`FZaK&4E7m1rHakA%h-?3A_^)_0=OSG zIUVMe!f@ItoPZI8obt9W0(teZ!C+&uKmcXYR@gh_Q0ddx`ypl;pxmtrN^`h((&cgi zH=FMJu_Go(eFfeqbC)c79Glb0j|*nMyX;S&{7&f~o@gBM=|dS`(a)T`Q1#xy2R)$t z#BxoVY#BlooOa`JI7*hRbdh4mw}~C-_!^I9O~?PbS;GH(0Qez5J`W8nS74&g1x-&G z9tQI2c~3qPoJK&!mAE(J*BbdwU5e=9=x+(WXedNjbWii)35czK+ko>2{a0jDVqq@> zvnlj{iV_Y!QX07IvP`iLL|gv@&7DI2H=1jvlb4P4_?KwUZ7rqENm(^awFBq@%jSnz z=Y~daQ#s7iZbm{A?~AH6z1anzo|)weg!!X?%}Nb$J?%P{s7U^RcP}WPCVs(sg2kTa zrmC$%As25D&STG+Qg5g(MTL+>Y{CD*a{mvO`+u<9|DR*IT{ml~e<*c7Gh@$pSd7CZ zCcU1eoX7 zYj;Vcmk^h~MOm((0;Q-xFe)<#T5isJfNw?sR6%QPM`rYJ#A@K@m*!QF`sdhnDmjJR za<lE(bMW~5?!_ruHKsqYcvds44I)cnrw? z5Kr-8x89Mtk??=Iw*7Ak21OICDO z$J`|7;KG#rW0j?SVw3aLt@j(69EmL5w0ODCU6xl(*?%-8;?{RZgGKg5nPNI6A9}ys zcTu7W;@Muo|Blrl`fEMYsJ_9^ri8zOk+{nODXpRnnO2AZvj*!f@e_p2B~Cx^{r@@3NdTQS5`j)Qxn@42RtOE0H=pWt~|Ug6Uw z!vF;a@|I*Rv+tvDreiZaMAKYxU61KM>4?8{=-_PAmEy@p;#v77qQGHFNP-;V%I6&^ z^cb-4*P^Avy9$S&fKq&mc|Np^r}zyw!dRz0w>rPWsrnLSE*MM=&! zjDOlO7WNP=yt}x%xz_23tx2zJur2L zRFe~4rMx=N%=#h)|0^?dy-bX^39wpJd%(*(+?>D`N7$YpNpHu#ybt2hNOk z)Fwd1*X*6?|306y6x4IwnivV*JFR|bugw_kZg%t~ycdMt9beR;iOy)MWR~5ldY53M ze(NJqAg1>Zi#vbk=zrSydp!rH9rpjOqOx?gV~_je1l&)E$Z9#;EnJ!kT@aDa-^oHM z#`B(-$Z5KXzUlC+%uwH-@g(Ul)mBjnvG@0q3QuGO5^6qoXg(oo!s`}*#c4X$uwAlb zX*81q`8)f2Z04_6lMUDiqGIEwA2#v5&jG_#2=D@^F0ck&y9BswDa+;oPyYP3(CsSAdob#72M7$mh>;q-b`+gXurI{b4 zG9MU7XuY*5LK8=3D9VaRMy@dGTaHS?Y5<(B2MFBbcN^5dL563hNQe^dl}3PTR8$sD z%Ic~q)lf@;f5QYi1wdsLD61e#pHI57^mIlBOLKaBdlF(_)Md@^d}(j&iphc-4ul6v z^uA(&aZJWM$|uhlM}7 zWVrX7BfH24*t7mf7Z9-$<*XT#SiaPEyj;qlG|MJPU%%G@M@(4!cag-uX9_iZndo^T zY-yUG=7ZID`u?L^e;3qrc()rzb-RB{`HcUAWRj5qhcS|>4w_I=TpEj#`B&0sHY%Ho zu`2`@LDvWtaRkE1<)4{dq&nz9T}2a&qmmb7pNQy15#M2yy2`DD{f9UOwZ9cW{|~2W zlHkdkF{z5Z_?RHXjK*?wuAlMBJGO6?DpnkT8~2_3scmk#k|v{E^#Dl!^g_E1M}ZPT zRx0wGQnau9)%H0`xb3KwmgnY(m-Z{?hzpfRq{Fn5p)B`6>*~2b)!f$InN85l56-i| z=4W_rfJ}2&`b2_8C(y_8-d612Ls7Y%3t%XBF!sHc85rbT!`!BkY+EFZ`r3>1AL-rq zg<)a<0;3HaFoR{iL_ZSh-SjpMKwgoIT={kPpL3pNcj$^^eJiM8FaW&oAz(P zehxn6twqY8MHV6kENzF(s(@+~kzVe0#d|Y2^yo#P#+1;AkJ0h0ArHS$xYHYm0n})0 z|Ia3c5YoT5C-C9!^6d5Cr$Md5D(G$vDJ*@=2UOlMTNQF$E!gv zwn}$HFHN^sj@77FBMyFN>*(;FV_)HTP1L;(6k^Iw<qXo~tX+UB z&plGHFK2IU+WFy_Doa2E_#?&35B||a6%}A!a@2Ql=MT!jOp{5_CUu=7a?Vt}_k9~A zgv%1Dc~Zq9WI8w=Bqx(|2(ra`#3rdIMg@IR072=YX>51Keg|`Ix5AwR&pA4>3nE5i zHKW*2|8u(7E4NJdj2D$eaE;m7m?>^Gud5oPvDTI%$>_ZYl1C7%RT10x2Bi$6m01W-;ZtRLGBfVMj$ z-?BYsZoORDzv%AoF4V5(y8v-7b+>F97}P;uDM-6B{JW$`?;$@jI!vBdj zD)ygwT0Q;OW@X;TZ=frZrWyq!=61i^ffBoq9-rL;#vTlAxb%C)i**~|`jI4@U9Uu} z-wK<8&z(%PawFOw3Fw|Vg-w$Q&A;Mk{j z{fqE-`y3ytL#$^H=r_+r8r^{oxzF)KzWL5OsUOc~6WlQ_bkDG_Ed_y#916hW_5*nc zKMqula}xOeuWF_LC&2TIO!tQ$8;}mvx7S*Wz zMMXr~(E27$$v)P`h>gLdT7I7&fP#ys0~U?1%D?n@?2iKQsm1m#Qb)6O<84TY6sLM} zv02~Lb)FSY=&&P*GLUD_J`y#Ni3r&hbQr+-i~$ zjU^<*%4H8{vRC5>GEN_y+xg2_4bj)}HVeU@oS>e+gkCf>IuYlLs0D(5D!wUS(1Jf0 z+P&wLSd5H~krQ_XNN_-zDi>SIa7`7u!PO)`a|PgJm{@A@2nrPnkSL}R>T^rCLPx!R z=ChCd4>HlCupA`#J<^)XbPwJYW!P_%h%=6_KstyXQhUu~6YtxTKBm}r6F;92ly1qq1) z&D>Kfs6&&ISI;=0HCw+b4M251XNQIo+|!=o$!QII3-bEoBIG*I?KgVhV~+eH40gkg zlc&!6)b+{jGsV)*7}?BRgN1*=iVuJWmGj5~*bw;={TpNzed4qW1w|D;ZpzWVkSiUDC^;DO_zQ4F7p)g3id4KO$z%+f(@WG-jR1YQa@vCKWzwo9GFAQ$_2&hE{}#4a9hu&ku<1$?eF4ii6m zL@NhWQ2j71&&W17K2_%R=M3lEnj!;7hXe81w4HJy{V#MaLZ$#m^rHS&2EdrVKuzFB&?p=A2x)DEviP99s_c(@L2R*;6F3@pz|LBBdWhcbVT5>eq>i~i%A~NF6IZE z`>7-ktpvK>>2@^Ngqpx~TLy_4dpt}q__!mGi)5C%0F3Dv^9db`=A4LwVQs?k&Ojjj zB<)dnN(wQ%lnF3Q^3(B97z^mVUT#MvVpF@wm(;u{r>hH2#g3LPcOQanY;HahmA*=1 zsBf5gGxdDyaHa8rYK$4mVX4sI zU_RRaqwgj?>Xa4?MS@(nTO*~s|1k!aE>+%}?Bq#$y7aDFgs6#ZIokb&L!#oB<3Xb% z@oAIC)J{vDK>aEr=DbwL_RStb1=MMhnbUAW)q((%!|k-m=2B(XlBgv@71wAh*7{ zOJeS5+Vmc4VHr7W5Rw*pa!ig6HX-fTKJn`OoYqr+vURrI)v_nH(x>d_Co3dHIoW%i zZ-mWn?X!`T@IRBW9l+@(o>x15;fN8L4w9DAZ^rR(>p?jtF7RtJbfe4AE; z(Cfw5k?eN6@4ntvyS!G%`LFL7V+r*c8Eh*l9ui=ZzeD~^ zQTu6$C(Gx}X<(W9*$1$v{O5TNX>N!;#{`K>DyjtMKD%0G=vrA@le}rVsXadGy!dpw z!J6VnCUDWrhy!x(r3spL+PDw_FqUF7{2K!a66nxJaW>o?q66`S~r%)H7iqmlJuSIcIRg zvt~`~FGLEik3DFX-6b3MDd!Yb0AB-hx2s!o*u+kzP%RM7CVzp2QjP@ISSjU+(sV?l) zV70k<0p+3*{hk3YnQhGkVYW2HPj{+I|7_Nr-NA)Ik9!>Q0b(i5q5-3t6%{lFF5o@e zHp})O0X_G}{yuLZ$(6z`Gqp-7Imoz-qDpcQ z{E}kCP({sUZH2>YMCtXpOu)#Er$o4E)sAtNXKj2i#9M)+n)ICN>#;nVZSNSxT)(OD z%#|rqYx-##8PRVxVmE_;GbO&>1~)O3Vy!3Dh2}HD*jvBlAcfr)RLKJK!%NM)bYHA>=Wh>h)wC22u|r2^@=^J7>aLRtBzgT z9gp(W%sr+CEMG9kb=)6{^9s6CaI+* z?{d0}j4FkphM9_NHX=3y@#?*kIN(if^TDSsl$rh%YiUtK_zZwk$Yug`V|zbW-^tTv zvy`tWJp%jtv2Gq7De79D?b|E9hhR~QOnU3;l8C+Qqhn)Ba%ll* zFLne3FCJ74Lmx)foUi?3?$}zwG`bZW;3Y33E351XUE{Ot3{%+lf3;R9l&x^jeX;=^ zvN7$I?R+%#_PW$on;1uZg%R~(X7|PYF6|@(m!F}@F}PA z6Zy+<3O9l5m6-bJ3ChX5KD6BK5*R)e_WkQ%7GnL*_+cJ^_nxkCc%AavYmTo7D6fXg_4svgiYiokzpj+p08I-VLzgsq zEFZdCH`6Xt1JH>-C|ve}697KAs;|BD`>U$j;qyj9^vwew-O6d?sbGkD78Edea!R1J zoCvacpL9Np{qV`$jw&0J0vxc?aPfZnZkOV0Xm4*}GTv+J`}@iPd3G!c++9E0Uo-Re z{NJd*?+cBh>^D=Pgf;u^RhwwiHv6^Mc*}_CQ+K~{Q+av$gGr&%H_p?wn8-BtpA)C+ z^r!_ax|_8PjoS~f()JKLCB!SXyCuJyh7u~zSeaHYw#1cyc7mt_E@><77#E63_hRoE zD@%`)vUy+KBEa_T%#4m;Uf0d?2)Hjm*E^tqM#-dr02J{7(WDVF}O4( z@|v{T9d!7rlptEv_bH&4z=H3_(LSft=NnNTF#L0<2zv)!q*<_Y%EONe!) zaoUj}=8{c{eX(u(lg(2E0zGsH1<)U^4w^;Qz89`JI&esei11rXx?@d^9t>S}j= zKXt&a&F&cde5bCZ8;g=jNjPGelzGnEkg!V#8LFguco&wGD|qM><1iV z6(9Mn&a2MV&x>jC`>o|vZTs~8=<%M;iJvQ>Z@x^&{f=7BYeOg?VsCGc^F20-RTemL z?1W=G!PZ3T`2Y*cJ$tRGy>ml%n#{#;wwUIEG{Mzl!FPHgOvSBiMJqlBKaHAGMP5m` z)ZzCX_HX{dSqpz811>DiEu;cHmn$Gq zhfO+}4y6DjT`rZ+HuFaIqt<3LsOJg}?#F?(+mY0YEY$L@>~QDrfdOYYw!Tz(zU^1) zj(ieMGYJF&``IylT+^C@K&%&7UvJhra7mDF}g!M|;OCXGs;vB`h4oZbJM<@_i23Ukd>r@?X7VLK)K z#R-CUAL1Fd{;!_FiwpnNGsyIm8#Q$>wpK0W>bUY{1tduW=J{&>f~2P9XT+laQDT zP~1l|h}mfj|CgNEUu`P}t?(n;*w0+awG`G=^!4?vfQYts6Lm%n*y~&9+JDT$qwrJo zO8kEse=HtD6Zg-lyX7&(sj9Qd&%Vv@ENIuImNQ;sZp}vDQmuf@@FN6BCxO1^XXfbZ z5L;gu7PKJl-V%$s88${5oF=Rkii`KC^0RIx9Jd3opI1lu5z#C3zFsTSdluNehKXUu zlNI8q)T`|aG>B6%B4ECkRryU=yw`X2v^A$otE!E8X8(-KJga7py;k~=jrpXsN~4B9Bj!9 zSkH?vHSXEsBe}Cik8fWOM)fShnrHmGS|C&OClIE$t!!9dNO4~3PZ|CMMMYMCPJ6McX_jB4?H_0z7{6m9Nz|n>S5ALF#{1GDh+|@epFo z4+Ox1tIAxdEA!d`2+9D&hLE@0n(q2E%5b8|_jt!4n)TIorcyrW9rhkeS7Dw(nqq*( zs%J%H@;_?12Rk*iS-u% zP3;$I`V{HN1{EQvWIup%&iHBpK_R#jMBMra%^6|+hs)&s^{{nRayCzDEOBwe=l(sn zorL718H#+0w8}BBBO%>_@jRO658l6ze#COa@?PG>E=_)|eGk#ZKEf;TO_BT)X|03Z z#mQjQ_&78OCI+F9ym!y8q{(rAlk&o4`cU_U1DEpMJlQ=oKogc9W z6FdrUyiQPl#Cor(AA!L_15I-`U;X^ax3kR^eS<}TIFQa`4+&w4vf03_|MAM)z<{+r z#X>Ua7eS<*<_Mjmy8qqF;2XEb8F{n+qj{@)p`$bue!Lr$Me>0ASkzn+;5O?SVxw#- z2eTQxeJ%j~ye@GB_|$iepp6LV63|*q5V^FXw%@t<6c4GOHAJg=cZt7O+A`6 zQOrEs(^j8hFFtXwFg*5w6=Y+hJcq5uj@!=q&(`DDz-;Bu+qZdRd2DLPqHDltn)+Gz z#&pG|{nThd&`C0MJW1D4&|b`jP{ql9be=v80`Xo1Pg;lNRwH?|;^{5JQq#+5?dHw1 z|BJZy3~RDmw}nvaAA; z+dkn<2`Q_S3AU*mDh7szVKKT&M`Ucf>$6%PZ1-qzO@kM>Gy)SGfS%;+%hc8ExF?m4 z8n5y5T<}hkcb?qyT6xS4Nc%p%!kAfUP{0nuiQ?s5yJK+UBFmX-E|U~-^cN+bF)w_WfX8K_pcx>7xoDW*h?8}6 z`4*0GHjGJxZosD^P6lmN1S9>X2Ws{4xsSOf!bY|LCdB9$b8m&3T znAr}^LEl2H(%AMw5bor~iuF+Z{UgztLYPWV+Xu`GS^0f#@zPdGvEfW)ENMIfMj824 zg`|67Alsq0{)yLIE&dN|kZwL^DXYzzw*L@I-M_Ixiq7)={|y;b%a~UQdRX7#_Fm|@ zXL<)TZWd1!Af~(}hab(;J^je`S6g@fXR~j;`aJn?4MCo(itmK_MA(D{wv`gJrt}O0 zPX=r)-3g%PKq$9Is(y&4_}-YAzN+~WtL(GVtQ$lo)LSK$J2jNmQLP7ef0vr*^0A99R~+df$*kpy&6kB2o9>FzFnzv zbGZ~#jw6!+%jmX#kT-|mr?%xA0W(?a9&e!qkw`Iff0kO6CJk~R+L(=jTL7ZF5*O})4 z+b`u5YvtPHIgHBuEAj$X*Yr^Fuz^@WaT2Egp6GV?D=i{XvH39d!?k>}feT!dtEZh}mqBie;ZK~dIlIURlG@P?iFTR~c@s3pPemNK;HyAwvy zU>LOC#<5sIhppCblWIxnC>Oh|Hf?z-C#Y7g25$R;!+Wn;1=D5Q zt)+VObZaC>;8z)(i>YtJzWA&5qT}14Xl5oGEkxAE9D{UZ^-2|9I$%yq0Jhm{ zRN~En+9J9>>C4c*RojzRrPDN7ODDQesl4Ds=TfTWHygMnO7(QZsqq=wNul?oDp};Q z9*z_1b-T-{^~VO+eJ>pja$wwiIDD>e`v)48>hIL@U@yhu_ixpA| z^qOl-wV*(ftXQyo1d4vr?zM6WrXge`-JfI~+{V+1Kp?SgLh!we9SYzK9}a$sR^5sR zKV*$Js39>6pB$v9d;0)jlcR>26=d7zoS4SaL7eM2}{=;KHvvT;ct-0)cS4spH>k*Us>$GcJ4bhU( zPR8=erkjz&tP{2S~D6XOi+)y9{#&m`?B;;@>;ho5B*ir2-pue-HQ{? z#xw%M3UWqz=t+iQMQW^4=)^HBnBmZJ>#w)Yfw(_IXC8SvevS>R_L-GlRk%l3?d!oz zok%N#kPzR{)zXZ+?Bd!{)BJ7diFXnF>jXVV>FQoSrrHZ}A=o)v(rN>nR3pT- zj-zg8KuRN|=Jo5>6a3G)gE-0VyTpYIG3sm&yuM9+>jTQBBJo;7yPpDAOhxVBD0V((aI+ZdOuVVk}ZFk%D)&RCy zs$f?U^d-sbHBvzxN$WpDNR!TS=10lYRaevjLpTAiusv}rSUMjdoo{;TXhB@#8*>qd zxvlPlx<*gePjCfA@D}j9=~laFVhQzHmKRzSQB{kP6Vem1r%7=&W7`P z4Dh%Lif4`{Zf;J5i>J;^{L#O0JOH91K&$+oUksICzZCbEX@0G zr}q146-4Kv-y?zflQB9Duhk*x1Q9TN*#FM6wxcbOW!@$(Z~Hza2Gg-TN{hJIqamD@ zj2}~(%OZQ!Z3H^((ITm=4u1A_5!#<>g5qIvn`s!gKI< z>1T#dZ`rxf8!zX4QcUXv)9e zr|*u!d5J1LflbCnRZhk@JZQ}?1xy+P{FYdYP}w*)zA<=@xu9~Pk(~iAbR@m_y9oI4 z!y+i!4j5zYabo)UGMM;2I5?SWznsICC~Vkb?0a@*y3VOUv!|eYv@P!Do87X3ptkk$ zO9bS`$~rYwzxte_@Hya!iNO}6(r!o>95qr9W-)l4RE|YI8%*i(4|1=qC^x-m+-;RV ze;iHuDE~g0*UTl8_n6N>q}8D1VB5*q1^i)C^K*P2TwQjkdy71sXzSdjw>&GU3$EQWEuRz_AJk&{P=EFAOR0)F+^=~sL&hP z<7FMi)JVfUUmI=zU`Hpfq|~*u8t(X1@)UQ{pRLUeY3*1U37y9SikjYtGXXIemxwTZ z?2r4{o@r{+;5%e-e|i5-=z#EhFkqng*5kVK@LZl$l<^r1Z`(xn@-qvZi$grRRRfpA zzVezqZ(gmuIr4&r6`}pP(O)q8%f!651bO*jeh-@eXMz)vvcidF)36i$;>B3CQ|l*= zhNH?mZ;FO@jPD8wz^U%>s-9wlxh7$4!f;XNyp?;BDBt^zX?lJYgzoA|N`m^PPa99I}V&b+Z-`^FdHe^>`IboBWDlgK`y!({4|87@8gT&CSVS=Tcca734X#x;7C)zr&7*RKW8aCaX;Tu;rTjZVt*AX2MMT{`3I2Hv~1pv`&e#bEnoo6dZXt3D9~j? z(J$|oP7Bjc-Hvo<2Im#C(@2ftv^NnzZuJywgl^!HRaSQPWc`DBusQZM&T4R}vPji# zdQ22yR<|$m2nYEN!psO`tDno#Wr@TW;oNQjaXrvOa0BSz6tZqK3W^^Dvk(GaKLr3M zcRAUwl@C05bA?M%kZPaRR(0BrR855!U#z5AXky~YWUpTg#EILz|DC3YkT5kmURP!3 zjF8`^bPeG7YN`Six0W57Ml0E#G*JB%e0v)JtnGSBUtfO&PxJ1<7Fo^fER9ymELSco zBd5#js?~@@zRZ-+1R2|}&gEXiS4KVXt3}?+N>1a&`>MT{8$p+L*|YUfXQCoE0AErR zX5NNqL{lj0+efyRhGWPh;Vo-r1%U^mWJL$b0n zvE7+LH~QN@&=nPN_$B=nU9|jI&yyWT`fm1xdpjC_Mv#7M{< zF5YLVgO|`S)jjmplz+su^bG5B@7k@>(dcA~sky?vvHjP8or>=0BWWn7^aDu2ypxE6 zZ8fm=JigI&oVy@r@8u@auF2gUZJW#NzqpTBPgO~-RMYodGTAx`IH}OsL4*E*K}&L} zeY_e>X?(L){!>v=@ant30#0I+@Gc9M*6qU_Jw{rEPb_(MYr2ZQ^LP67HQb0yEitaP zn3qyI*45ROU0~al7@mpnJ%p&5>f7EGrkx;zWq9&8ioP?SVzRkA3#~=K_pJJ1DMc_! z)X(`Ig3TvaBh*N!u9Togl-nPG8h@ z15XHxkot0`{KRY=q#Zv5-|7>dc8;q7Pa&Dezt(;+zd1%%?c*++O-G~Od};`&Qv&Q) zkB3Pq9t0FBy9&~JS_xpgOiTbocu+H&7sr}f_xAylB*#f7>_|=Zl<)3qe|iPKF5tcJ znbG85w%&M(YWQ2F)Vt?27JHhE;=&-YtQHra!A^Xi)~a{-EHxp^_a*r#X2$OTi}Gvh zFzL&0#jEzSR@x}XD2pBGydbe&lgkCZ6Z03O)rdCrQ^gkNi&M}-+2O7UJl9=hFN)fYxAjYdU~zk?Z{`w%IdV8;XDZ$Y=PmB;=4u}ScS;}4Y!8M91Xjj0hDa!L+5CJdQ_geQvMEW6@K$5gO{5E zEP1;l#agQN#Xann&L|8mXm?WfHTLV@D9WRUWPX*WG_erOk&f$vT7d9B>?*8C`M2Zrj*x zn;wZyL!s1`-OAs1IxT6N*Hh}~j!rtN72?F|RN+*eh#AgXU5u>;b$8bomn z+_?v72K(#A2o@+W;&|o;`}-%@uoOu7Qsvgkl<3zX$TELY-tj`mhp`)Of;NiRJf66+HB`1+^8;rzwuW1%u9vZ8 zxrd0eC;Nq-BLv*u(ZZSe8?sBfsLR9uP!0kIr3+t_S86V<5kX&6w7u4}XY*x}rce<} zj~Xcuw=*|qqq4cyq%ghNN63Gmum7@cJcvI^#qyM0?PebDwDW49;mAm{{HU)CqX%w6 zEX`5vQ)pc94|3Y1@;V|%&GfP>P$apo zn2!1rI22Z1#Pt3eN%W`AnYgqJV9BgtBLLJP^Cwr;dEwpd%-~(^M1=#Z@YR4{a9^Sd zqm|}T@!ou(In~JCtqX&#DB3nb%>pMhgbz58Haes@q$VAxiYiSVkMoA)U$E;vmsF0 zf%V6FSRh)sm4ZV49^U2&fZrZ^G>oX+*eFHoAk+loAhbKw9(s@no)#+w5!&`2t#A)s8wSMU zA<2q~z)`np?dWX=|$_FZj6Tiv?$NFEm!loS+%a!rku37=Peyii(SIY`d?d%GZ zFRSgWM^7e~^xWOoySh{0v(Ep=|Ln)hZn{>g-G&Bt#@+_1E^8T($C|bct4N`JS8n;z z?5@-Y;sgBp<0!Z3YM!%*s3C*-f{bY)APQ~K_Dy^bb2UJ*0s%I^j8qS!B zEqS2ahtDtN1cx&eoV>qS|8|dlf;i#U{D~q$)J~~T>M0~kyQcz&k3&T$2^@uwVZZdC zxiRCG+Wb-pz`+5Bu@>oSF6g_oO5Yau_xHbVY@A@2QeLt|cE(#HPIL|Jb9U>=tW z%6+;uH`u+O!u)Kk+9$1~L}nY#gp4dVr^fzV#(KA#tk)svmXE_qdWVO@fe431$kD~6 zwI!}b!i!=UR~NfAG*admCUDI$FORY|^(!5;m$Hvd9v2lj3qLj?eTHIDPb$$24wP{= z1-F^|FIopKoEFvqI~k|)=3xQ9nIj6g@2A~2?uc80>YB=W_8&XK7mrgw4XWkPXcUu> z&}O;7{??jy4y_Zrlh#fTEQ1UmzK9QS_%Gc3u-Abjk1ovt*YY;C4)<8&s6LZ(HnaB) z$(nQ|2gpJn*xJzBoBHiEv#kloeJxX8c}>```x0;tlLsSAIb_M_W<5H8!Au6^pLnTg zz-lv)hcX0FB!E8L>LI9%LP=xx(XOEOgbx*;-PU+(z3=%T(8y6K;}kb@djHSL&SYts zX-}C9U9JOfzBkG3GHLhmOA2UFb(cXAlxGI5iosknf@0N~5;WVw9#Bd@9W+O^BUT*~(Mmiec? zR5%D%sr3{5yKIc*^`$j3KY8+ADHUEcwpwedky$14>o){u-7E1XKw% z=5PvRwNv?7es*^EwkZ@!_N?Nr9HMlT0&QK_+vw9yUDFM?CESGtB7!~@x0Zx8mls_r z2leWxUz_uGvv@)Mw64lKC2Mm%)(Btwt(Rn;4uozu!#8c%DqFv34KFVA^suiYmpCiS`a zGzR+2ykNphsho$@!-f1$z{!0Ga8REd3c?_lL9cn1Q+4xj(DdKKmk-((5YJ8K?XLOL zY%;pQ*5va3V`P>`K#3GL?W7p}9%nIX=@MrL-Sn#zA;%Ub%aT;rn9N~NKY$L<$>^HB3y9q%-iqxmUJ)L4n$Z>>Lgz6P>C@6h z$T=I4*qGLR55$IR>0B=3}j&w7+k$pU=uOuI8x?X8~AI{WSUUo_cZh_4RAphnRHLh?|8}t^pwW zV~!pe9JKV(ex9x<&OXf}cbqB#r3Bk}v|Y&!g)OM?85D9Z%C z&{_*h%)Kl>J)+$Fdc6z_(~*5+-Q>PK8?slvYgc5rD zGOo12&?W{DhgSlrR>JMuiHe>!nR#5hYfaIgDl7TYG^4v8yMkedip}NK-#|O4X~Mu0 zjx{GK2hzhp<+~Mc71dq2<KsEIsh6V;1 z19py%O_B2BFMR4KX2FN6iZ8%0KwWvcunx2a6P}=-{(^M{GSB)V@#JH^PLHfkuhfwc z!8%(%e%#fHzbqp0OlY9L+4b?C;{4VXmH|DBj>G61{+!v>kz;RRKd4F^)0&{+hh$2`Jg@F{HkiWg^2LA0@Vgt&BL#su;P=OdltdH*hMjb-=7yMfc= zeY&akMy*7G2?r;PTp#luruXe#?LZGv;T6*}K6yDe7IBov+Euhgx)YN~ZYU8q135+$A*cn}cv2WqymPDk&5(ZU3z z<1C;){gRe;dTo2YZu_h$tjk9lKopD{I@u|s(gi6p^U(utT$0t#NP4IbsJL}!g zGX>-!YpeW~!%_=Vw;Fhv(=oNP+D~*EZxyy+4!v1&0tpCl?EynA{lwW!J}@TExb71` zI1$HVA!%B{1nTAQ$XFJqsnY5uOpZ-sw8_%Aaz=}t2*S5KjH$@qkpI}m!IAjwx^x2232B#GmA;B z_0iSe)8XM0$3|?v;R;{2g7NUp#IB5eW9LH{!@S3W3m3~hq3Zm$wd;}g(W=D$zM(2- zldVKJjaf`5`7JbwJ4#(her&Cp+AT7*dj~=%8?LYTn8iYq!0H098j(S+DUwLYdr}Rg zI*K4e7_VQ4MDoqA+j@~F#1?IX*dj{Ao@YB+i z_j!2a$#%L!FN3{G3GD6X5Y{e)S zh6Hn27hd1u>IZyc65jidGK^SM*%?&!dYn3ak5%iNcD%xuam1q|(bEi^A!vJdb?T=E z*L4*&Hx&3TquUJulrXos&&C~lt0%@h0+>6Pd3Y`5iV77$S6;w~8C3$;ymSl=_0t72h4`7af9XT&m&9gB8)x?mqO773f7YTXwmOJq_5rvsU&~K`56Wo3!erE@kudP57Y*Z zYPzXfB@`+HYlr@^Iro$wNoYTZ`?EBnA`Y!ECF+kevi_b^UDY+s`P{Psvs-Xaw8E%D zB`QA4)uH)_DHYR?ZgZ9ll6_{MI=>rKkr6g3{7)J(u zJ?64AU>H-co9zS5A`b?6g+K1axhOasCd^Y!A5U$}{ zZa4@2hQ++Rx3I)dM)~1OugE;VLM93WABDEs(2+_mmE)z+79|B#y%lV-@L|(=#Y=GF zTNDa9^k~fB`?SW4)yNtxz$%G4PN_dQQ1@UQp8w9UM}9ur|8M_4~OR$ z&qWQ3H?My`WrY5Rf>g@&xfbzaaer9W>Rz|IiVPp^3z}e5=YW@Fbm{J$j~_o8mD)Y| zN&yOqqd@F&Y?ub5j~*_4LqpG+I90uxN10`1WsNE<_V7p=)w}Nhb0R7OmuKed-<$+w zLE$WB{q`F{z3-eu2Ew~p?U@DbTxQ+Y&$#1atj6kwG~1I8fxl$tQ0$KF-bs*NBpf`t zlhb)pRUg7OUVklZm4OhNOr3##lhnQGEfrvCGM2X#-T)>R`>2Iw=}kBd(@Tb4mdfMJm}fv2<-X}R(B4uJev zb(9ug{DicYmz7PX*3nNB%fP6{Odc;YllRJKI79XdIGaNxnf$k3B!IO z5A!p4bFl9zC06$%AT zM8OB@87?dk6(Ivi5Ano5q@cZ@#=z{+_BdD2D`yPSc61J4H;q08l_!BdNLLkU-)F-R zt}Bdbz6CMPUdJVP-;pl8`3V|JCYwrM(5%KUYa(Y+uK>VFVFgiB&L2= zTf}5=b|Mjmi?Gb5o65eua#JolsQ3_$n`5LW$Xx;A7 zL3qsP&(cgw!zFCIkPW%f-SPkrA@uz%!moQ$(|K_yRYy>mcf{3&-ov`{$vKaA@<02h zl<$?@(~H16#fULESbGjQ6*Tf+&!7}5qq)V;stZ~?uARltl6#N}w|ClEDs>fC{g7n; zAny|0U4OR4u~C0*oD-4wWzPGrT^801UUVCzAi^08oj+uxAC`TMVPx=LGjVuiM;zYUdQr-|(W`!yGy+na^e_ z^*(RjPWOw{cG(ds%QNcN;FUR$6QT@gMbB3vCtibif!PPb`@3gd)}3Fm;(ObKG<NFn8?n!v!eFVa8QO?Y+f+XuVS00B zp*4Q6pTJPd2-7#kO}DyzZdM`aDw}Q-L_<^B`M{MD#2pxnD2r`~4x;M0)1nDtr@rjY z0f}Avt8wAK(UK#*v_bWK@`r`QI;cG}uWXD>6VyR{Ut+GZrhdY zJ@P~=T*lqsaYL?3%HbPOMh6ata&&e{oqD=J^1uYtaXgYW6V!S~gFN#TD1v>irwvGv zjsQXM?OQ5Q+`0-vaPo8>7(y}WWagrYZ|pA2KYsl9otBs$guXgY<99Sb#gbQ}>ZsxJ zd;WZ?BS(6_8vus>9X`p%NSxs<-n&O4#3n14-I2HaNV4AOEi!dxW5(<&9CzwG>)GJo zSPws~bucZPDImbYJ3mOw1H}HV`aIG8u!_oGjq+biFI>C`W?Mc4`<(v&7`7-W*t7eN z3w}6innfr{-bYeLefiO-51l!iQI#Is39{*okDBd(+=K1nu~Z&-EkQEbb1R84(J=+u zh>HRy9LyLV7X67A!@btCkN?wA?^oUEp?K|7A28F3>?gF9> zar_}fi2p5w#-~>Rb{EA(D#&5PbVS)Dz<=bHoC4M<65KxOGtZeC7PGVilz#FatDbrh zW6A$2CeHC}TQkyT?dX1FJ06%<3e0cpygo!+J_M3E(T?!{SRQOM_8KHo*y!qiZ9la1HhY5-32okR$ah8+{8&&&od`z(*V z#Jg4;_&q3Uu{2av!Ju|~!F2*U)@hDEy$s{?-XO|<0Nxoo2PDu6gV!%ye#;ARb&iD& z?9*{^{@Yy-8>NeY_coiJI^RR=QKHN&qPSAl5OykFol^|{Q7;4!(zsyDBH<1PLDHE* zb9h)@$|aN9u9xqCCbjJ>1|{LHu~7Mon920?e@8=osR1K>Q={yXjp9;uN4eBD>>4Iz zn6AoQ4OKITKzO&S0EGRWi~{E~kAoaBX+9)iRG~G*rzgW1D1p zz&vYieme@0oX_y0>vSAOKCy0SlyT2?iI4>n1+>up79oA>16%qZ;W7 z+0{<=9?7qXP zYLWK+%T>7i2J1+ToX|t8mt}|I&)Gm+F)Bwg@j!=_2r(TD*5ByHuE4uF6yctMJN>KG z%7F++%&$-1vvc=Myy??zi4Rl^2! zPkGYpMB?E%0!TXug_?q_Cxw;YAp=`Zu=*zlDl=UK3~O}qb8^`Rc*R|_PkIz4zhzkT z%z902WDI&{&VMU#!~strMx`ZfhM1J$7#xA(0mI_f2q>jWAdsYk(Sz&DjG@f>vvHNqittmej&jWF9aOiRn^t*;0QXPQtnSY88``74_lvZ zvjWXX#p0X^bB}UVNPm8m;Hu1W~*bUYd0 zAbjmI(CeHhy>s1tkpq=(AXM3ycVF*Ky{_ z?4+9+3r`RNg+I{_E2oFHB-pN=m;7c789C0|rQ#~0dI}^g9wolB-97RA3E@8O^u68E z9SomZpM_w+l5{YWKTu}-uCl2;`l%+-(TIXMg8_1Qtb3A7kAmPm9;qlVb%uEY*xiE} z)O%{(>>zfUp=kwJ4VWX)4%qbr-7Z7a{cj(#^8Y&193&d6IwNT}_a0tyL-ylm7`I|)iqP`p z;t`eso$o=j)LENPn^&>d$Tf=|ko(ac{u@N;uRdNK#I%&Ro<%LU%B2fiOF||}M}YqO zul*)cN*S$3Ea5!Q{F(YxdaBFlF{jQhR?a%^VbYXL?kXP<{p-woqw*j@OPxau+|2PV z$q-@|rKh7Vvo^%gOW5mW?qvX%gZU;5Hw>)=mC6N5?|caq&jUK{1J2IQU?SvbhHlbp zAW_}0Efs17#vZ{*^H0S$kK zQen6=F$Z;M^m8|aZQei94n{lNqj^+C!z}j(NrZQBFx=nhp=)Y%c*90>*TlC7(I!(r z?rR*cq>%Cwc*)7q2)yaWDE zksF5^NZw8{rq8A^Z0z??-3~h%k$T&Te2!?s?v1anzw?XGY=)I;`6O zYf6o;`tGr8ty^<@5Cmr#_LFY7I92AI#Z`&OC#b<8DVdQIduMJoHHItNJKj=``kl@E zzst|`rvHjQ#zRwrEv#}=V;{>U-Tly+d=K3mP>Kklal*2aekG*TV z>?iw*E&%W;BVA5PQ~u1ufJfuYuU>3T2KqE`fZ#OH?#uMkk*oW0S=)z_@neggaEw?y zi>Lz3E;Q8cC9reN1YLc00l`p};DMyd=AwkJNNQAv9vSEIkaiYc9BYz$E-^0V2h`9a zY}z`u5_&sd6}&4W%{v1Mi7{;dA-k7hObR&$Do=neS+AM7k#YnlThMF=W$%03pE(te zR@@)-_>_qG>Zyt-nZwENNB)ki`+pSf(R^*;R$kZCh|Lk_5-!a{uOc>G9Qw>t!RSMX z#n$9&rL$%T$Ny|n=z0PeL&H=>87b7(+1xU+fiHai!pFKnmO2i-zk`$b3X+=V<>LNl zNzF;uWr$igR&%()(K{}|JL}zokFk6UTTj#?nyuSr|A*{OMlv14v!Yw8*I8tWD*c0L z5D@A&}9r7--Znv zFXuciwz+QkV3cj@g^GJ2nMw5!%P%0si>{QQm6F+RW|D-+JX5g|Puu#}hrXc-Bwwqg zf?o|PQaljnyi|!Z3CUW`;s-Q%#0Q4Pra^sZFUEU0c%Ew+fqp`Ze7t%nKGi z!1bbN&$F9X!YK&T*HPV)ml9<$Y0&ZU23dKQ6oyOPU1la@5RQtN~@ zNe^_<@WU$nY;#b+CK)&nJ-5DyPOB>3n<*He0Fn(v`I{cra^6hGt#YY{MCH3MUXo4t zY6$bg8&_)41hq3jWBvn2fwOTB{s`0x&GR7JbAR94u=v%QCe}25=6OQ$(qFND5Uqjt z#CK_GZ&m3Zq7$eOQeBbcjT6@6=jysY)Fn!~NwFm;EJt5BS zDC4FmsMRFbn_z8UxaOnFB@{3@AW|39y?IB$a`HNi{;JvqC%pFV+&itQ_Vj|!ney-a zbAkCfR93&2SC26BX0u4zd&&N~iKaM{Mc3T&p-)^lZ`HJ$qBU%NxV~MucsN>-GC$tu zd0&tz)Zb-aovXkzE7{~#ZM@v-vw6RT1zhWvSy#L))Y84x?L>iwbe(4ST{1!k0pm=+ zP(UIxQ`Key)Q>#4^S+_5b4DvFD@k5Ee<93iT2vMOVFxi9cPPM`7N3I(TcbW;?R-Mi zK9Q0WWJEic6dqEQFS$-zev~G3#b6G8Ol(UtS9y7QWukPMIk3th_5wEgJ{a|$w zeUmu{9A__eUioWa2a#YstfjvE3dYnxeV_w(wh`4iR19oed#+~UsCulUSLj-&fVODo z^jl^4M`J+GQ}%beaIo;h7@-j#ez0KmnE~#tYwe8uDA-wiPf1e8sM|*fiS#mpy^5H9 zopeqQruN zG{4NxZmSz&ZJhP0ZCmy3%}3AguGgln?%uqa-nHV$^iHrw>}u?jqD2Qzle_Xx$fuQ^ z`NOwatHhf6WP~xd^8Xdx?!tS_7KnKPe`w}KKga7|9y5>Ja6`Ef?(8Mh0G|WXzG1_V z(|u4vJBzAy*^0tebC>wMWOM|1PFMaO%*5F>qkgLyo|YJEDV6Z_0!zNnqs8fdjXN z{=RW0&sh*8r95}W#H+Y?*>%kg%6WN{J{9G&63bwpsoirtn_}-z^bI}3eGArUS{XNA z8n5O82{74?L*v6QQvx0r7NoI*f7@l{G;B+!-H6u2X`dS+ivS@?9Qd670V1U1w^JjB*mm)+{pZ4g`m5;vf-11B*3&qi?H-dJHrM|c#cY zii{{JfyjWUK_ur8@@3VCgBG8<_kBDK#A;ZqqP$C&9K-N_j9)g3taNp7;06RG7_cSE zh=3W~!?b`~(S~suGl@m=JFBIe{e*t^TAj5r^t||ZMCs@77)KlOfr;5m_cToohe*=y zI!snz3+iRrw!#B0*(o8QZ{&qFh25WX*vAI*A;lOWe3{s=`rItQWRju=l29U~(@us`OEfY_ziM~U zrxvTSR_Qw}?o0gv9-Z!&-JSHFVtt0k@nMvcH(|n2&7>e86MEA*`YbrNbH-Ik_d{h` zH+`n6E6U$=F1r5OS`NM%4DorT@&cbSEB2&Yk8QJDLdhG{S=vTBqzTET3{N2NocYnC z9e@)B2!?);(lySSVV!)sQ-swAgw|WihXyEvb=f-cyrH1Rtt!c+;7&>&DxJX*a-WDd zHx&kukcXi2spq%q0iT~$A?J*JId5(pdGkub*68M)>B6Uz*ZDFVFnz^bx{@%ClrdHN z9>u80v+Q#ggZ<%t!W~vUbw`bQMxd%H>r)$mkQPKS^@&B@+qJYGehoFMb$47qffN+C zr6+{GAQ8h?pZiD4%4MOPnS!3a3yI!RHAvR#M3X&C^EE3c`X6QLD$+pN(>vH3p3U7l zwcWzLhl%mFsJ9q*}Uc&}V`^ehCDk z=r(>P*re}zIFHRO`$D^JGhUmoO|q5yUYr%aTh*TOs?Abit8gd&*ijX=jnNLKXW$jV z&fx1X?6{!)6-(C>d($Ev)~(UW7r6aStIBt7_G2*D{jd2xP8?CHUO_8#zjc+G3QLJW zr%@ghA}6zXkC%x^<!ZV??~z#0Ba8(AKap`{wW4!U{)%}i)N3zOtDNkd ziUEN=fBfd&Xf^slrK+kUp2__RiPy@?@|dGhYj^GHsUsuWz8;H?+4C2sq~Gujyscuz z_^h^o_C(;9ktC%0fD{TTcHF;JfXyoDB)On=Uk|AWETx(n57^+Y3JLcOkOta@_f>fA zMdGcbYM#p`A*};pjsfDSMpXi};b#Oex4~(LbIj4}aUCw=C#kPnE=Zj!S=2t`PLGjd zZJe)4bhrv)W{RB8#7L%^ZauckdRK)tJYZDDY=yP9|^l7V_z+%k*GMcAaj@ zWgxLafc0T+Qhok-{D6Vs6Y9c)?0~A09Jc7XZ3kQkGg&py$SVGhG(Dwb{`ayWZi=l< z=-p#}VhReE)@Y%ZIGWBDY&peu>7}8DMsn78SlWnY|3SZ=*Hb7za{BS?k>l$pPU0Py z>1rIrfNUeu&1335xx*D4(Y0%LaoADc&g)iY&bav~!GKVjr{*J4KtBHA8`2>~lmul& zZ?XiGqXl`louS7a$W1e!X-lWt76D_u|3wctMC}~1LaZ;xeRgWl zyp)s2@M;3*8Kvtn3HSsypAq?O4Do)i;cVgtf<)O$C3GGkUspREemaz=9M*+Us*p45 zHTeFCyk8Qxe5#_*=ReuF1pN|0kT*i#60L@D0ja!7k%vIxy$lCea|^onQgTR0hOUn4 zIN09AVl2oUxbULlX4FShgtr#m7PU(SVCI zk@oy?^Ub${ETp)((tM-u!E1w7|g2xFn@V^Lq>$oVp zwr!M^rh7g8yK)OM0q#LBWh7M_|p@&Y%A*5x9`4;!{z3<-7 zZ~w9XQ<0f#UF(eFJdSg%GfZ@pjQ|maJM+Uq*^SlFTyueYAxDKF@*&N@o6Cdph8kLA zW7Qqt6mps_+#1CTKK{$KVh!$pdK1Ip(yym!t{-}8Io^2>+DWAdY43tI5K2aXR_EB# zotYYNQK!SN2TFHU{SzTLH7?FZs{x$x;*M{(;ygbpVypfEC|1O1zwHH44_L?wSli-x zYefv22i7(@gvK5e9OHbQQhj3lt4%aNO?yVXVgD~lX(qrv=VD^})Aa))PP_dt=boQq zd}|OAFK*AfS}fPAgI;g=FwF`<0xHyg!O^7#j`OvZZwV^b(PGZ=Bk`Wg^rHc z%4}BMlZO_X&g-+t32++AzL06y&4vJQJhYdQSJH0S^(bnago%bbK3rS%Nsi~unYo$J zz*M)J=hNclCP)K;8pLYy@@Fqk2z7hNankKjQIWN8XYqVSN?ZHD^_HeIHQHd3MS3j+ z{7+O~WVv#4PI&ACcv0@uDF&21@xw>=iU(DVfuUoC>>U2jANg&&k zEu-xx8?}S-H#Y+@mA;L8Gh+20PbY3F(qzv&&R(TKCZO{XpyHg2Y}w$R7i3?9i+r3v z4-U#>S4y`Mi!r@=;@GZtmXx}rweH2|_5FOPZ zr9e&!w^5|I(Qcl;M|GyaA;EqOb3`|{g4a0peTx);kuz_|E>3H0j(qZ$j-OyCUNc2w z)o1-r-7`~jzA@+;oDFoZ$j)T@=tO>swDq$Hy)l;yP(ziT1m>R?u60~J#$%b8S z4E6*3?rqtF`$Nom%c|gWfW$N?ey-u4YRe76uLU8ufbCtV(RQXzAX=>rv@7omR<8^P z_EY#FUqEU$0O%UDF8EZOD;ylZl3wv3qJ0h7_QN3ye^diNj~`vPUu@Cl8-cQhKSDQI z=yK6VTeaNvXL2*^+h{HW-I}K>Qfq_pVGk)%8UH3!m*m{aWfis$*96qp?iECDePnzt z=~gV-s=yvo9!NBCvl_~%z#<{MfqZLH<$vp`7lz?>3xAB ztS@5DLIY(lQYzEDAcMnWrX~r#<<169K|x-tLm>CY-unXb6mp6FtBdAm0jd#V0+h*k z@VrK(a>l_#s_qk*rh9Xm5Y3Fs zF@Y(Zxt2x`rI^I$xSkq&bs5HTRL&}7r?IgTL+ud8I_je5&d>$D>=r0!rWt(_P6CH3 z!%QbA1!p8(t}MHkE=D8T8|hVF)zI@7+!rMC@aSRqr)!ozn%{YKFjeU3F-e0GN}9%T zM9f?jDN0T=xU1VR0h8R`Xd$e#S(r;syaO9frl&_m8VH!Xcda{b&nHcH1AuO-=cQ>d z1M0-n8CXx?`mqY@^n~~B{1Hz}c?pf3#Qy8X%^z6@29-`AhRQ*wI~?d6nxBMOzJ>AF z&NK-RP3iZaE+<@;0)YIZ@6#jeN+T z;t4Pz<)2E!4w7}Zz!aDzXxG!6nda@6Z|4OCsz?Yst1ZOC{FKHS$ItE6&V#1kFH~mM z+vO-T1qRe78eRU6@#tboq58^eX^Peb&v;#krCns*Y^O^4?3>J)z6^zBUTl|{oX(F0 zQqT@0r1E}}6zM|>wIA=9mY2LN-)oP;U`0Wzj?*RUG8gC*9KzHcXo3S>XAPPgf?+^( z$G?wN8GW=7L3cO$Z=Zj;q@Y%W7*|4DU#z2Obxk3c554^;=HDSro>ExH>n6%`1yz|7 zOIzjjoP>Zo8%Y?X(}EIRG<`Mq@mGj!n%) zPh5&53nnpaeVh{#m-|-d0uitGpeh45z2t?XA%PP&T5$kf!!HQ^adVdNP+G>UsdorH zgH^ozQQQ3MN7B|>;)EAhLVvQv{R)p^n55J3kuk*M$qAym9f9$h?LVmelmj8hgEK3$ zN$hQG-6TuSiC_&4ab0^#Vy?uJh9R(3NX0F>X$76>rJKixw*(=TIyyTSR#>}{KJZFt#M|#4}D$`m-?LBv9%an~ilkdmi zq#C0!{2rWn^9y=rnQg!Fa!CGq<26eJ^^cD{UqD*TJVk4qI;V?96M7*5PEIhQ96Y9H zha`yUt+&51yfRn+lmIH%q`Sj@ELj9`lM%7oL0-OFbhATVcp^8aajra zrGj$V+NAS_SkaW4dY946M0#oIhq$G<f`Z0?fS0-DbJ~5X&igwN zPtUWo+Qm5oQD3mJ*U9DwsFdf3-EH)?FtdZW^PZet=AQ2}{)3BqZ`I`pVgatEh3G~n zsv83KQv?y7)8!5*uv;LNFdT@*%FwrmEp(rsEz~VxYD$EoIsld~_t=vH9BFEOPW#z) z29f`F>y;(ew&V7)U+o2FT+H6bUiKdEeTKr+u}8nI%F=WZXg<9?`f?7|lcz`Kf$W~1 z^yHoOgzYduWMPr_A7uJ$UJQJ4dhZoyeZTL5;x+R0$aD43$n8hb-hD|dNuizp*lEQW zAd#QTz@;M(DRdR4dp|CGTxZnqx;{U=`l6Sh+BB)AS;Q;~+`{IYi@^5@{gTA6R=xiX zv*y#V{0d!%b}5r`7P+@mFYqC zE35@f!csEV&Xe`J{35oyY@FCR|LJqfguqK}MJ%`E^W}ZD_d=Gl@mJCcE1>Ym1oR)2 zIR#WvZaOg0XaVl^3dJ+^vACEm%W&fzl*yui>F$~e-+sci=%3-L~vFQxPnjJix>xtuA?gOb}x1+nmyFdkD0=O)o-{>LRcbkeQ zn`)?^Pe8kpH>1n!PpTT{?MRqGeBPV2ztF7#Y;t5vt%QJIB?k%hzSiLJWR~lH!14Ff zqNPT=ko~5+o&Uyy-;zmaEzZ7I{pI-lholR2;oGNS05$M1FZy3xR7g|1lLf3uG38^^ zWMpNduFMAhf9GO5)ASLl62Yy7uN(3HzgKpVp=&3O^&Msjf(!7cnTn(q%hFCHU@Nu6 zIe*;6>@-O$vYJn#=2>?A#!e55xO1uEgsY1Qr8VLDswj%{?*Y*Ym+>XY>#5IqRXrt} zGV23vVH~4JztXx33o|!w@sAQZAO9xrs_zsitgCMd)prD?k(LJJPfcYV^-3bczXNvj zj~@cScs)fK5dp4|sHO#VNj}W_NjPJwrH^$XQA8bow^LTioNpRAY#^sNf2gwHL4>cF z($Cr)!m)9+tjq`G4OsJT@m&w5H^PV9C+<|iFBHt;xp=EhCy)2G2H}zeLgQ}p()k{b zOW~(xa|)(%Or_GEZ#=Q10zGA11!x{E5Y>Nv-!~Z=p9`JiES|iMOV9-Z)bS7~q7~9S z=yO?X=#*JiI1{0I!~mb3OC60)5OwxsI*32Pd2 zj~;bYQf0^~sK5)Q?e8)=G&i!dW^~?}3k2m_CZL4gpgKcfNyGEQ{#3CX&oFcmV_xea zmv$*=ch@bzRkT`-)DFjsn&JV%;=Q_d!WNHSxhH>Yu@>kZSzd@(dRW$sbu6i%?5*$3g8Nd!vC5nZp|X?@cRjvyO>s% zODLz(%_%cWM_BKsj44g%UQO?LF{x1v>#Gwb6eXxF+AG*;-)G+8s)IA^6r2a`pUwwL{?sXcFqHNv zG=bepL!)DO?0qDViMD4)|Jf2KDJkg4!+0Ox0jA=Mh#0u$IRS6>k@+cAcLYo9esMw3 zi++c1PWszcww*6WpP0{1___KT)vG>V<^{y*oiVjQqC01Pshm(|ZIq}D6uoiIdaL_p zN=Q{U_DreX-CdPg@a&ziWe(@w)~1|_-2?R9ykh9i()mWqf|7zAub5L-Be{$_Ykt8s zear)07GaX|5(0zNuY-sG`ngt(sdyp-d9SrJQSYg`)ahpvICSuo+RY0T1^Z!7SITWV z#cUQTX#sKPygijv&wWdqXdb}~7jRa653L>rdPZtK{J0 zZ-V6>bk0BL;a^}~#7}kOVShw;mtejHy)1_p@3!l9i%@3Paj?z+-4%KIPnxyyZW_@U zk1{@Dr(;cQ%3*N*B5|jgGr&k*kh!RZ^h+4X^p;_-zMP8xL}tA0?lcnQf2e zJl*06OHB6@Gz~fxLOE<L(3_B?Uk+o;3l{8j!pH`ZFuP4SMVcC2tx+Tt!mHpwn zAJ3C#AVJOgd)6k>CCqv#?zmF6S8j2vb|j~whqkowh$+eNVATB zpH=a`xx4qus=%Tzs{CdZ1f5_x1N}a(7JL6LX`3@sauV;0V`#+y;+U+wg(5{HbgA6o z)JyX=N#MKWB+VP4Z($-5V!LOniyglOB2u953X3CBJ*x)js7mU}n3=>;OrZhFG@bAx zB~`t-7dRV?O!9{@?{J2>AI1Di2%(0lm$QG*L6EEX8j3OfEU#1!o}onV*f@&ISM6&u ziO+JYU`xbMT%nPgk5&Y_J-pX9(x3mJt35yZ;k ztI(PR=Zo3L$U_L*dXc}YirIg5p2EuZVXVK2d6J~{!y4F0hb>>?D6AXrc*os<@!Vl2 z9nzBbnPwLqXFp=?t2FNtx`d6kDQWMt-+kgoxh&1U8WdZPjZ=n~GEDc5O*|}F_h)@t zd)&C_{z#w$aEq$YzIVUwj`OK81#$PMuyfZXUT_oC;^2J6c_aH$jZ{*lJ|&o%Kk>Ry5%y>k&Q$ZPDw{5kx;3=;JR2wFozRg9v&)kTVY(JHI2E;lR9(`Wt6M4sVm)qqM%USYutIFwq<1H;QF zp*B&A4w0tp%Z*TbGl9EO) zkNNk#8SoetD03WTV3KkmUwVCmf>|sgC27LYP5H5pHx7nS!M?hIwwU=tJDW83?+|DF z#Skkg_nez(#x3yVH2kTT$$@HW-)XY)?y;^!t8VPFc8un7r8~$mTRrRLkrMPTna35V zhIJ|B#Pk)ck6m4dEO~ai4zM)R$Ox0mE%)ztX^lVGFew)^*NUmyiE`iVSQC6++E-T# zKI8fgiX6(-S~6I?E^J=ocy3iVG(1PtjhiawMh;e(SyI5{e|EOPLib9+g_R3ZM+0Ao zy_-=~Yw@z{k2`!Y+db0ku(BkxNF=u42J?MA+jbjBWvRk;$f z^v8wgc5hYa+qTMWq?zH|SQV7!%o}(DZ2D~mg))R8VDoR}i!W7G^H+_3+P^wi{rXln z)U-vDG%Y(homqYxqNokiSmh9=OvBE4H+*x(vDK9R_5vbY46QxP?Yo&2+I;hrnJD;Z z{N$(TR`*rHBj7}@ZH?#%$+zdjWV(@HoAC7EzBjY%8Me@6mIKcq$C{jlKPQgKL|pPY zPy8Qn=|#+x6x9+Fxj?;H;~siiFc6j% z@pduuT##(hByDVn&xOQnxt%zRm=lL(;;WQmw8n~+3%7h1+mN)tGQCk{h7kcUhiK1V z+FIWtIjuF9Ca28wY??wsi}$01$~+X?(8Kyk6UztV)^zkqtr=A2k~LFfwVwy& zbyq^ffWgb7eW%Ia>DPv-PU}2<{8XwlpXmWaSbVF=os-ip;-2&Lr|S)ezQF+!p#T)xk!##TASn%&VMyswQ`8>CuUrOY zybfR4?gK~?qn%#U@-W;fF^coy09p|HCz~^FKN*Dhth81}cKQ=&Y3O?^@|zX2{%`C? zCB}2-7%eXD7P}ry(u3HOVP{Vl$?V2u+i*D}l%8K~@=nl|w!jW`K0O&}9SGv6k)i9| zft{3L$HB8ck(;NYxs5;Q$ewR4msnr8F6i%JRVwPpY1`}4fW=G zHI`Qj$P`;^%+I?R`8#liAz-{cc$B2F(w>Khqx?5+9USrq@zT$5t2bb1)wW3Th-~LV zsn)r(DjO)MR7Xot&wJmN4Po zR+{1RF6YAzw{G;;azp7tPmY@|bX;^1F7 zaGGJz?w;XtY)VqOl{T3>CNT3UPWVQgqhQRcR!cq0ncID>lUY6%0$opzr0A9TWE`mD-eb6Z+|O84HdsugrN#?6>)!n`-)20(f$^O_0x!KQ7%9wdIc z*ScRhu(7@4GLFl^$<;OiD;$0=eR^z7M|fhZA6anl5!iP`)V_n}%yYC=nMYr})>fzN zVT0oe!nDc681cv>RPu&q9b}M?nv094VWZH{Ysi&`pG38X8L@w(O>vlT^QTF zHBY!^-#p;dl*`XOC1L(Uyg9)@oG!o{4!o$K@$Nb|#6iF1E-j6rw(?^{iEfI3u|)K# zeuXF37}F<5X08B7X@F;o(l3OYE=r5Sll!sw%aY>M8~I6PBUQ@3rJo`BqC90s8b(X@4cQ0%m+ z??(S|H6buNlEImnL|n$`31vhkH{HOQY=JSWRQpj@yhcVzXmXQ+LLe+m<=$Q5^t>{h z3`4`8Rm|N#d;Z=~YJXwCF0jr}Asn)1Z1UyvEefdv0UW~x1R1b&Pg`vE6gdDuhIE7n zhX*4%{JBXw4movX{sd>Pn{zcCYsTO=sG>*Ndnht~!$5V7gVK1c+DZU&5L34BDzoGO?@~>*&dQW-=W`&oYJ*Ha1H7;Eb_8{jM z;#7mmYv+a8%oDbNGer0zn>yMvQ$XiFOJ9(QqC{+IpW%n& z`U5WQ)P4dj^~jOxmSw5TJmgY(*RTK_nW(`Exnhf z_sS#sJHE_;BgnX?z2f8@>r50OFTZ8{akq64f z8OWwzm8bhAQ8ht6+9VZ|Gvsn-gX+4P?*4@&xi8J_q+dnW9`D#R#Q4E6!(wNn%TbvV z=d1YX&I|2e7irT1wHP6LuJ|19kE~roJfy%A9)(dV2fpVC3UNESU+iV!gZur{-|R{w zI(BZ(R8(`0COkbYZH{sYO$9j|>@U=0KBdsx4SqE6AVtsnb=f_Z}_!Do>NtuP$nRXAQ3M=E9 zSB9}T%a=%}3(ag=*+y)E^}ycYWGR}9*RZ19owz17ZthN~yvyu3;(!ac6{^&iXPVEd zXN&<~MSTA^Auwdh6)IJ_wD`8@Ze+TPVNVPL4^#P{*-jcgi(rN!kfHN>7D?WL|NQT7 z_GfA&n? z0L9=VrBPY8H@8XKTmMXoJc!!JF0o9!MlA7c)$Sy_xs*|Qo;D)!P62WXIqvWKb)m_9DVtxn9+u|M z`RUTMd*y{GU9AC$4kxK#EuVDVZm+`PI~UHG=tTF)TGYvB-d=E{C!*3u1|{4f6p+I@ z#K!mSh4goCsg~etEJ|F5D_Z8r|MnKi(AY$<{Uf{?1TT-o*0h;6?6I@04u9#<%wcxf zJytn_Gxn#cUT-@pmLCAf4FFNH1^8w1btCENdwzPX01CWU`xa?<52q{ndW&$(E^BZy zui{Br#xGxMlW0#EXb6U9Yd*n$?0OZzVOaievJjO9&c1uO z2aw|{a2Mw>X8d!K+wCKVgJXRE4KUok$7dd6ZS{W4al|5~q-BK6wJIxVfGGz^vs?c z{ybXrsQqi~Q^czAH_Keu6Uj_YJU3yV{OUqNMY4DfVy^b}@kfDv&6>EjL2sg?`V2_k z?V4w2*dZIavT9T}lb#-#lAnAn*%Kj;4@mmg1-c$l@&LBK)BE0k3>^Gpf)N`*%@L!i zZ21vs(}gholuaA+6bD>*D%Lv>n}d3XSQ1KDl?uL)ZrzdY?J*d{%L@JZt z*LV(@q>kjV+%u*BakJ}31JCn0?C}nkGrd`J2OTz`ApIcSwA*Q&g(cE-*Itsl-s$%$ zPVdoFg<%aRLOF-qF%69wIwEr*eb%8DkVJGlt#9u6XYr`!;JZc{!=qlc+O2FmGw1BkK!~o^cAelN4!IqOo?(gbMf;Z(Nu7}2qb7ygKP2>7Ea&k&pYk&`Lv%bz`y@TAWo5#1O-6MZAM6~Q!t9be862eF5 z1c!;LRQge74iC?Dzx;o;^}gTlyAf1}DyFg(VX_*oXI^~Iv=b4%6lzj>IJ-K1^;mXm zPLIte2dq0cFgbyqd{|Xf;E?b?M+<#kF&KAeGnr8oS`kSCc47Qp!t~GSpvWMhj@FH( z`2*J<4rmKN3zCJrByH1wF*|mY!ZZPRr2ks*qbEG1`03Z2(u@oQ(?owB=}9;AOhT8X zsPX*8L=fUOYSaINp z6|o&PVRC}YpabK;V*mS#z+;nb*5OtfBpfU_Nq@jZ)MIn|^&~SvTJfG@7^rXdcg3ol zf+JcgZZ?FombIqRV^b36UUDmL=s2sq6OC+@&9{`J!IiVuOpp)UFTDZd!biZ5W=dJeO;Gd>LIps;c-g~ ze2F?cwBF)PHPaem2jt6ppN5WO_MvO(QvZI=e!~8*r=$^K_nCt2c`Ckw7HB5=c91=Z zOm2dLQuNTXUMe`5qok&YmpOtXp}ZP8kKeqp-m}ECdQcaMG6Rp&Gx9T`sYG|{3LjoS&GKUCt@myUEj|jx#2;b%7+Qp79;!!)Q0vPPlp9y>VJUVII_iGE9R=$QA%RNmBg4yge`3L z*nF>*hkT%Fzj5XyBeTkNmuR=IMd%anir!vc2kGz9)3dDrF~~yt-l|&KO~9zp(TC2@ zj(%C4&g4rk?ZzZ0C$>>_5B7UtkI9ZFYhb>6-LSK_wBQ)YWXGeD<0BJ55<9XKI+ak^ z7De0HrbPbl8$%0N7erT=(>ID^3S9mn=2=ngNB{685UCLm6(TI)f z#gbZ`gVAHoidbs<^HKxcni0Rj_;i)f7h+ct-F`T`_V%k2_#d*gX!;|9p!dY=LY#e! zbp>6GYWL)a4!_T2DxbL<;KBL5n*sd2dr4t|$w6WQ!24~s_Pu_Wzq|hK-M{lwg~fv= z7P=Avp8)`%da>Ic6npDjHCYu!Hz;Q7g`af6K*0ylPI))b-c%We#4;AQTZm$z?TD^=TUuFb|+#{lr!##gh63GqOM7ptz$adyV5O!d~FF~hF^1DKU07Li43@^2Q?9upbdrX52SrsjmC|H{^h0?g>Qxy@bHRvA4F?P528bs}ca?DwKDZfdyg&ASj zxXLE##LoSNWf5FNLVl~}G}(z5Wi4khoM-K;Qq7vjuWYyB4e6miV+xlcwq zUJ)aZcJto=i&N$7gp2bwBr{)*naE;iyEktDFf2gpSn{t~@EcjSXc|Ne+5-0WbL-9f ziXrcLYV-Qdmz6yYg0#i{4fUS`uMyn0<|tX|hZnWa;<#!#@;I$u^p)9z@q4$s4IfH< znf*g&QEk^F1Ce{%$F#whRzFr#^+wgqZAb>fM+b7wH`oX zUyC8Yx&aM^gtO)54g)zCEJrOS4i5*2219egK}+Q~?^6HHD*8bT8>i+`)x+;s!0PPb zJc#vQ9giU<#J}dQtLHs|N(G4MHlgC(Y}2XQiJ8dZ{WsU_#a&WBS5OMZm^uj3JYmZn z5*F~WcRk4&FS)`M;g958o`aOYE~5QS{7dt&6V( z!V5JMCxFNWvZ&FQ&v!r)axlWRDtuz=FN-PX4;D{{z9(etYKZvWlMYJtzAqBttKMhzUjKto?tcH#tT4(m z@9cR$QUNA+;CL~UHKV`b)g5hJKBLrMyY?#8TU zTZW@w>G@ul5{ft6)YBydH&>oQhW%ztk^^e$p2KBYXS|ZTitKXFy|!wKt}lJlcv_i_ z%{w|K{=|LBbLTvgaP}&9{+iX#xZKI+ept`nMuD%hCW@k%?7Lr6?f?1SJTAg9!00!1F!oKjqqAq?3qG?z`0X>Ur;4)GKq} zT2qvn?1S49umcI8u31ZbR5~FeU-=X42#V$q4^CjHE`9Dr`qdJ<)qOjtKYFUqpY^`A zw@1-jD>1;Yx}cgsfz@@kc_oKOW#5be(g!(?y&=j>&!TQC#EC3E2i;d1TFflskx!;N zx>W0|)ZU5-aNnM-64Jo0$j)L!>f1O#QL_`lYlwF^tp|y3XY0HIxi4RLtSG!|7_oX6 z*e>F9VY9stCpvNUOqd2rp~5?1fFL`XCf-9rn{wI{F{{DmUaO-%j@E{d<;L3WVAD!(=iXMn+9T(5iCN?(>^2 zJ!B0IkCbTelZX^toLTtjyD@c5SA?XfB=gMf;H7w3W6o!TOCp>;#GlEi$`bdZ5T8cM z6T5{VYS?&liLa8B@cKc5{of8zCFQ_!AXFn6JurlU4u8Q;swlY)4%d$#PnJ6 z@diK4O)?hl+4vrF*JxpaEU)-k+9{_0NODcMdr%&k1>$Y(c}|K$=_z@CYALD+)bK7g zA<}zCC)dV<^ObhCnbq{M+%-Q2G`14!N~dnC5)_fA-a6Dq%ln~uqG4$L)R~)`CF781 z^7-0mB-MJ-wdb~7NHqT5#lJbQ?7j3sLe$YVYA?yAr28y2kQ-7Lz&`-ZV}JhhlIUb{ zD7bPXzV2q*vDXWpAkc5{q`0P;618|;B;0u=9Ew}BUxeVc>Fu5zPau0j`Q(S)kYz{6`gj1LlqGY@0q^5XQV@7 zW&9(GnO$Ct0)NBjtrgAZ#(ucYwy)Qe-YKtS$aEX8RT{~*ToiLWf7vQfHCB`;G(qtQY(cPhj2G-6+@j2{7qE=1{-J zVwn&RXp1niBA>FWaG|jqfQ}A9t4D?Z>e{`6zzfhm&ys=L;N=zVe=N z1F0OuTUuT5KePU^lTz7o{@@?w+P-R zqNnTP&*i$u6nsyb+b^+~?|U3gcUUW8kcCNd=J&bIYg!N!JvlL}hky_RoeseKsm?#E zCyXW-)0u5c$G`3XSMb;aK@&7Y{0=*_SzKdIDtC8-%CG2X>fa6(vqEpb%VUm^1qBQR zj@AcFYW|}Dh3@^0%3R|;l2L&Vs@g2N$OtN^CcT?uc78Dx5Mo;qDG5PapQGN*{RD^= zG(2?d(1I?K<$S7g?gRXs;E;+tz$7~}8$B?Ae-337c*Ufa&KaP#=nksxcisK#7FB4Q z@7kIRIH_*Cui8A#-7i2k@pSlG+xPY9(`VN;8(vQE>yEai==HT^AkrFSCb@DPd>HcKoI#mzvj29ROYPkm0Xpcjo1DL^kcQ<+i&X z{MAM>YVm3Ro4wZg?{C(5c6}iyz|YHPmoe3TV-t}$E%xX4K0jBqBS?IKX<|!!X^J7Y zJ^;n6Ex}@VY1l!+VLPm^Ke6xP6NaUa5M;x0q-NiWc=+J_)g+i2g)fif^ab5$HRET! zg|?3MCW3JQ{KMuK|5)^Y0kTMTr$0Lv$BPe%Ifbn2&1WYva26FMm^BHRJv-8n=hHCflNjL4Owm(4n;(b`@b{?*RPcpibU^jsDw9#>#>T zaArE}iX^t6j(}R@-zRY{6vzLhY$5q-8a;@MKm6X2Xt&HxH2roh37m1+PPMUQT16AU z``4<{#4f`JXB!WLJ@u|m&SoY5?KA60wzUm~JE#NFT-U`eRL&6OZqV%HaMmjb^2Bl- z)=4C6Wu5D%0~0W^?YRmTYYnc@rg?rIKai`sJAU5>Qe#kPUaQdstAapjB?P9@eA*|2^A)Zu-0{)e%!CQHn;2Xr=8T|M zhB5TNT6SS;DjRlIvN30;+2Ovg^*B@lbnKSA%&P`!@2Pq zLAhNZ3&*>UN z^vwB6a*Wb5nrVPb19ah29{dLRy%uz|84p`nYxE;Lc0Y@^@pql4a-z$e#}DE^@QO-? zE2N701B(J^wg356W1-zWhWqsvJTQ2m6yMAdisQmbZuvss%MVfGE-dNb z6c_FsN!HO2=-vM4@#MN^0&oj8VBF*kLpZ{XK7y)A+kCyN8feBb)?8^4o-{itk~hy& ze(e{!(X%iTQHI+$L6L}f2RmePCAWUvn&tcx6R!2b{7s&B$t_IJBde@Ob!>Dh`A#q! ze;<)EOZ$TM5K<7|X0x5QCu`Y?SK{~1gjCl?yna>Btbib5yvIF*a5#8Ha@_^A zA|m2;^;z%8DFsX496klAp#G#1-bhdz`Hl=klkc3myI4T`P5kq4u zh8F^zhXdk5ounQfYhBSGbr35&5E&f{Niuujz0N1?8CJZ&QJUZ3AN#z_h7s=Do>%x8 zVxE`u_3K8sH-3ATgDGphIq8P!c+8to!CY~T%@P7>=@~Fg0|T;TwI!#IBM0@j%{uOA zPf%cW4!VK2;&7N-@^GfX-K-?H&)D=)MK#N%7zM@Pj~m=Q$ac^MQ=d7E)Nl4#=aQE` zd}mM_20*6XW)!%xCWX`zq}Vm%wPMjjCH%FE-jT zpBYH86qtyiVKUP>tlyBZIfk|M;!<-}@U55Tmbo8fH#=2GmtmOF%Y*utP&J&CmyTxE zZD#!BcC9sA-!GzBSV}k(>bgn}QVEMtSv-ib#>s@N%{d<0YGPWxS}y18FqSuGNEtDL zCOs3gMemd(eTW3^3#h5+?raU5Er!>At8LW}I+vM{mIXJMlKaEXb&wYgy z__b+|PA%p-qz}q*U6`c2ydw!vq!k>0c%$-=U$|W@Hf9lEC_O3L_Oe~V)sq_KN6!WY4OPs3C|zP5!CLr+G-YSjS7@| zop;rqmMpOQQsRJ%UWQHG`&njE<8d7`jtk7KG`MM&zo4IhvaHq`OO6^~&apH`#=>~< z%kAttP_S>C>p5wMEq1yW=jm0oltj+Z{r} zju5uX9wbTU$M=xUt>Z9>J!ZPLj!#Exx5k}?P+4i~OJLu?`hpexn@x9~fpEq0LV&8j zu5X9L^FMjwvDww0_P-o#la)nbx-q?yxZMR$`f5x?syib~=~QNPfKU)6KK&m$O1IhG zanv!V^1^MZZ;lwHpV#W?Uj@yD^tb!I04WzaZm_-1>GmqFkw#z8~=>hL4OiHY2cY^J&LFp-}14xI-{tI) z^_5~MNx5_O=|x=3-KA@%20212=hi)|?@br;zOGk0=ig`#-o4jUy)DTdHn38A$)qdI ztIV%4TCeEAt%nZwoB$059S=HT_&U3lLxfdnX*+>)+52j%^!7K$ZGsRXGaZUHMxKD5=SHRPcyW+nLb^EEQJt}{h!8c~v!tWz)vEUO2=XYwC z>mX{6q4J^fdcvISD`gc$9n^xU(2ENj3IhC8(|aR{C{iTc^C+ts!Qhs$F$wMrX_#?g z(%TF%5C#%@#9Urn@$tr~o5-+vY(3(miIfm8b%R;${J%BYYx2q;mn|G$4-~M{mbUk z7x&a9$8C^ue4jo!irfj7+k2*V%dOjCXnL4AjzME2=|QgrXvqW7l~NJ1`6N&!IrOqA z6CoD+S%`53j7trSrqx*#A)hWeHq6ay$;-@q{x;MkY9wTbkpUb~@dITpsKy<3KZ+0P zTPb`nlCpZ(Yufc56f!zceBO1n&K%+i#)KP$!K{U6HSIxNcW z?fV5$P#S{{6$KR#q#F?hl@bvUDFJDQZWvNp22lY4X(@>jknT?D9$@GJhK3=An7u}S zaX;_-?0p>j5AVZUW#U@bwbmKm@8{&loj64%^4cJ2E~-JRhFJ+Xz` zF4OKqKW39b z1T?%Q-i;rx=#BKgvs;yuPsB3SA7ZUxlbY*#y%c65=ukQW&K1K!K_C{H6M!t$Y=}~} za%R2Ief@Lh-zoc%t;dmpHj{W9j-=VsrE@tt<2^=vF!V%0`*>VYCT&I0aZJ7%cc~CQ z;5yJ(){O4MZeE10)J_@dW6iQtBP=F zlX|kH1#_wJ3DVy#IF9S|`ea4l4cheE`(;wtoIRrWT1ow389kZnFjZdjq~~mDxYEj* zj7xt`D<=(!-M|<1N{P2xb2C?*MCUxLGc2gHhiYw>&W<+V-bTzMqFy`P1-fWVZ9Vz< zkFj*khs{IPONOb~DB;$*H96!=2-o@nd+)dBl~6?mt(Qa|CVE0)zj$o|2(M(cJOKy$ zqbK8yj~9ThSzZpBpH(>1R!+NsG6cQ>AkzkN(11jyQG$>Ww+)sLnN7O$QSu^J$>;oZ z4(2Rf*?NS_4BuvsY#cUUeZyJVKhYln#Hk>xZWZv5V0xN4K< zyYN8}a&bl`V+0c^@R~%?&G?-&SUwKayYcn&^!Y2xNe@yyiG$MO_|6dm0c;Z=IXL~& zO46Bt;mTZBEw~}7aO^9$6L!7D0s3jBq8IL+r(Hn~QYvu7ihE#gHvTJ(LYPrS+U-( zfuu@J!EcA@tS%o?(GrApq#?hyo{N= ze*L>*u-+0=Y*Zsm_^)cOeD{;0oQ}+Wp||?3N6tF1xa<=ur5%hR% zC#}4uUF_YEiMmM~^l~}3@SakXcEjc_q{xRE?keaE z60^c@=t1q^%Uwm=Lpi$-)C+1$NkI}X2PAQz^J^?WaTLRa&*D^I5GdsK{Zf@?OYz({ zy9SnCAHgw$a(5GFc6s8+i7>E4HI{JU!;X+B{rHnCg}A~_0rlPsG(sOU zfM$kM5vO+K0~;wI4~fQ>mL`6FD6^Jod#k^UCV6;V5xKqWL$G~j22>IQWH+aMlrgsN zJVqU)c?jerW_;V4nI=m0Y5HMcWVT}ch|~93YfGZ5SFhM+^u^M&l?K=9KCP_HS<$gm zkOKM%Wo3i7{?zkW4`qmjk^nE&pEK#6@+>HIr1lrSFS*6iCfi$YH@ORJH=x#B3Sno4 zeTVQJwme$N!Rge7{+^D!rb*@xqSQH zU1WiuybU)F7)q`g!i1|A~E=RmD(AT1| z2m+daoKr5A;>-dH&j*!8zjYjqP#>77Dsu{($P45tK&3{von=Pp7TBrz47FVvos-s} zspQSd5nP3yUE;m#{Gm1mYsOX8nWUf;!Uuep9V;ti9pK+BbBr$R%?{(>QbpPh=)=c~B0mk7~0bcrx z&8^aO1%I}emY{MqP2OWJ_1EaL^o=?~8@2%&gd$EgzQE&r@sO+F>8rE!R2Hk7xPJdK zTn?J3_-tMmzqj;Zd4F3-4Ifl*&0DJWk`&POjBqMYiNw}nR6L&?-J2hNG}NM+!Pag9 z%|zn;bSLRQtoOSz1(YF|%B&y*^oV>X~*Hn$@)K<C}pBuE<b&L!uB5>pw)OI(lYhtq21J zNqD}Nz$y---{$?X!>ln=C^yZ({IxJF39_$b;hm972ciOcS}505i?w571xbYT)KD1M zFY)&RJ>vU3E1#NJ;TP>hPn)t_Hq)B7Sf* z9O-{jJ*F#I;+j_MT909Opbleh6+WKL7^Y`a^Z_#*6oc^eBlyE=MuvPw9R))2{oz=n@c z5}58-@EyrQ^M>D6S`ED)ILJ~Bq|_blftUxMbjB9wHi3P$l`|74wf&N%+;3S3epk{S z>mQ5+6-^+Z3x}qbQJ;Q{dauwcIQv`+zA0o>JRBUFv-0|}I#gNXjj5R&6q2_-lB*Yv zm7>4+wH&%Be6>3-3Y1Dgw77m;t{ENMn$|uPdytE^(&GqBOZz3dZ{p*MyPhQNObD_e z>d@EptW0e{b9Oj9$Z2flwpg@!fr0C<)s>(>q&Aq6ML}JM1V}RYz`>KN2X(^^xeJy& zVgJ3e`{;F zK^z2*SG*9REi$Qf{QNl4Kw@$W0C4w3ykj`cdz~t!rLFl%Gw1zL-r_5(Sq}r$k@LoG zG26W>T{ByEtPw#LjD^-5WElN}T}f+tV$kblZR^#01hgO=9O;{j22zffwF)rj2!K6# zj=zsPs6-YNLKZFyh`8K$#sQ(-luxw0HoW#6ZzN7*;FiV z!_fwxCIUxYKNe9MpiXyx{tK;;f#%Ei;PIV}Q>R-JYR&1@s&CNKv0FaWCXb9r7ikcs zC;sWIN2JMpX0YkJMiS@E0c2bo?pn$F?;!~aG(ZJNuL#ux=%DHs=CVk%cVaNG z@)d%TFMi(wyR?+RV^EEn2gY1`WD8Hs-&>GWK*Z{KUH>DmDbvN`9F*_j&@hLol-QK( z7YIWL*4AU)JZ@S%W&LwIj%f1C_HlFkSdAKWka5nFRhB6h+cRWoM?9f` z6fN9hoKvX4@;iv9D1T>F&gT%$E8!%$LEze8BQT1wkjATM&eTEQ6g5>!h35-^8~~38 z&~U%YxN2pOI%5Htfd>}Nuic+LU@dp%9my|HNR5%dOn?`x0Q;}#Pb&eX^}_LP|FbH2jT{hMH73L6+~ig%=E|VF^w7l zM@eD!O9K0q%K|G3_dsa{|E53_wZ0ngZFCQH^J8?y)5pjcf^R^6-m{{32+Y1W-o^tJ ztjq5EHwyLE6a5uw6Boa7JaXi_Z*+V?$<4V2MB&G!kZ*BxOq`EbJ?mOa3cW|_d3o+X z(r~wEgjn6{w8J$>fei{ZZVD7uHd8g%L^dbiS8%sEO*+z5m8>LOAIT=ugPw1wAWA*FVpTkQ0Hg z*ajL4>3QYtLi<4B@)%FaE8AO8;GX6E>nn*`oo)-g^f-CYD7j4Pc z{o`9ryAYt>+qIcuirAn#P6+ag5942(E}~2r&HE6c*k|nZ5>t0w=F46U_i-9*3hgC; zbe?HLnTjW0Dm?fRtYTq*V?*XA2@}&i%Ah9F23f`eVo+zPI^aUJnJO02RMoT02cHLg z!O+gQ-Isg~6Ut^#(;e1?W3xw2UOT&kRUJ9M%K2hqDu8|=b(VMVHs|xYL`$CU0-E4% z4=nFd3}iz|*GVfX4?0B?Z9lIA%4{WJZ*Z%N2zP$4?s;-(p?ki zA0dPO?Q+P*{KA#_Vpr3+(@J8;g>tFL9=a$^i_Kuh&?%Uo8w8WC#CPN*LdL7kU!TBq zLhdK}Fmzax0tF=7^ESV#v9f^WL=u|rX~XN7%TH|3^G23!xvD?IQev>BAX}VnAQz6)CmRVNmR4X1edI?F zMoPByZs15(7z1M5vF7vSO%J{Gr>iF@6>i!wlQg{LTcP_lz8d^5%Vsw=)_c^GXW`y1 z%P8nF<6#^GX)6b1d3uS{@%GG0N-Bn+Qwmfhpo7JbaLIdCR3%T}&QMmGba!{@%Y(av zLgM1A`Ei!`N+K!W=&^}_)EN*@EI84F9o3$8+IS@i4iZYG;3l9x0iu)Icln)rUT9HD z`BqM9P`Oci!_O-qJ%!)eylP~wfYRZI56ahp)^Lh)i8 z$-gd7k#puGe1v6wq~+|+S4@mG5uFz;YnBRkP8&lam4e1JeWqz4?JrxlL@DD6wXqp7 zZu-5Gc?n&@K!xmPjdEiqp=K+Dgc*bCvpvN8G?`8|dE^847l>s5FNucBQ=F|9ZNCej zm9WIb3_7T^fH&NdtLEeWm>;5Dvo65M|7IFngWw*|y4W>J_#OnZote8?52eMzqB%;i&so+|>toE5~ifT|W z$}C>wM3>uSNumH{HZVb~bj3<5)8Jr85N`o(PTQxw5@guC`c^+uNZeq)8$M4(OmwGX zj_w33%+8~RU#rEu3r8b-^8f%A3DZHfx+vC=b}W(aprd=dL{5 zLA@?AJD+cI^qa)ukV1yx(837es4WBEXg8lxWekSewQr!0Ym)YU%LcH zh$rusnTT(E963sHk<85GZ9*tV&OiHZ+mL7^5mzf%q`t!B*hf_ldCYbCHuLizWsDmL zc^@NZ_!?=*KsshuT0w#LT;AiZUl_UyB5GqqL3Vy4(B&};KC-zE@;FA2Ulz7qaKB-V z9BcOjHx;-V;6JpN1QrFpXmg!DuqYL`J9gkdR9|O56|tz5pV?n{CvLrRa6yPCC-N%x zp#x4`nzM^0!D1OrGmzOPdV9xU*nZ`}<#0Z{1-!S3mr_Hk175RJ1?%UG+j;o7U3?SVWM8^^B4`k9-O)wk-fgpphup*<=h1a+?t-P1^T z=tW`bwv1|!u$EH85gzD~>0{lW?cLbpAs`Gudf@MxT6Jwre^1--h}3?(00juBNqzl5 z-2?1>fI{-*PPmZ#r5oe(^#wdYrG8%Nvqc$RR__nkUdB^D7MU;NKP8PJ0$7C;^1Zom z%I=>Behr_>nC!{V+|S@T6pR$yamLX+U9Wo% z?;qJS>9moGKC0es@)dr}$pfi3QP_JmVu>J_Bh$@o&|rzdz?93?wGuAv-QeiD9DXON zb|sanIk=JO*&ZbF4Bxr9u~q4PodS#vOI70hV?pb<%X?QIL_H+_ADR98mH&NDw9mB) zD!(0}`z)I`z^&Qepr7HCfg|q5+IH${BA&`=xw{RByow(m3O1LB!qNMc;qE9~ml)i` zX~gyLKM|qcEHf1jmd+!p@fB(I?TT-MDJWbQ&-K0vjBwQ3M*|pL^uYJh_udc5P4BPb zukOF!7XQ0XSGvC>>j8;C>0S;03(pmxOrhypefuTg{*=8o(HrTQ*-2O%8i2}x4NhJN zZMfPw9P7$W|4$p-2TK=8*pum_w;mq?3T&^Rsa()wi~s8*`^Q^V1no`wYQvR|Y%7!R zKozEN>ZS!@)x92`F>L!MiTvS=x5AI4KTh$xl;RZ1{Cn_rlaDewf)JdB2!9A zg!TuKNFTWa)LMn3+ibW&*u)~&cKxow`_EY__MiTGIsWw}Ki+Ny4rJf|VR*y4C++I> zQr-krcAd=eFP7e`%qKO@MGb8dn5qY&H>!uIECU$(_W~-iZ4tt~kHg<@Z`*%>!CJjD zGczySNIZBjJ0VOnYu8*dwY+S;)_fcl2_+X{Dd*YW-FH1{p^)-sJ6dkDUs!%XP#^l4 zb9*+@>qEF@Xy52)uyI@D{LUgRP>fUl^NIkY^g7N&+d%#$=Rog88Ow)?=?oL~E3-(; z`gbah+I%|jsJsu>agkH?)@RPw8DFyYfyXlSDwboiVu)zYSr7SC-GG*m%JTRqgQ~Fn zZ9IpnZ1{VkvME2S(MqF8+loa~$-~plRtQRza(}Ig;gpD|5XI`VXJ|eB>#hwV(reB5 zurF9<)nlW5Fu1R;@1x_q>)FYL(RuaW#HF-O!}|s{4OPfvX-VvuF+D45-02Ha;zIXb zj*~@+Gb(-TK&)NLKfld8i_1wz`Nux8>ta(rc`}T<6NR zP)2~!b!Eso=IycE`tpKg*8ueACyjnOHuh4|?mJf-XAjMLz=-9_ZZiV6wZb+j#4DPH zFf4X4e8B50i|Rx`vj7Ni-G8IKp*@i5Z3?)nl=mPLvi?bQy4OmVK?95HQ~;awA$#l* zIYHFZ^I59N4V$$`R9jZIhZORU|M`@*UpCGp-UIb6{$bU{I!0FP>gI<*-s5P0gg@f8 z77PDlGm{5aicUT9Uj0_;OawZ=%)+2b<(rrL(tm0!R}4iie5!2^P%RK}MLK7pw-**} z^?Z}MQZ{8ADHAo~2%DezYWfffMJ0w8ZO+eM0gYun8OKGc>7C=l39Z@?5#03VoT9-Y z^YodS?R;9NtV*H>rO&B|Pr?YJ`{As?EF1DvpOWz(&-r_9DSSBo5UX zx!rKN6Uq=+`%gPwA|2b&0b+gC!u;SU9ae0E?m%({*?aDDPDG3ZNm34i8x?KIAtDLM zZaW?29@DY+^;&28KB6nCHYx?o+Ij_*Cw-7mH=Ilj9k1KjF7?Ip<=GA&sl2ufbeA0U z@4Tn0TMj(TI;dshb>9xBCavI-^TG-ww=_4OCxQLz{QYzL#Ly~E;B>A-f%aAY5PZlH z&e9gYPCi=(+WX<}BjZ3LU|lhy1Z6jA_q8>;}&J9pdGq<6p?2M z0&s2CQ?0gGn75O&D5d!$UP?wr#=fz!kdcv*F-HX$bIT@fW3!o6CniuXn5u1ELQwDn z*ftD%H>Qe@StCT?o6p(Li8I4ymiyD)*0wqAR(4GCbgF2pTsIqcS<7V>Yh!uKW;kU| z87APmvSwzSJ3Bkz<$Wp8qw|Zro_9$}Np%s)qVAWk%wH+@!2CcTHTcOgOP^dNNcovf zUFEv|Jm+*RD&5@DGE7Rp%!S7WJe<7{Ht3o?vzWtG$ol&7#)iC!$%T=8yF_~S+QFmMDZ?l_ge#UK3%bXwrY0NdiJpU3M-E&Nj5?3IwTi!DKRa)A@x;b4! zrc-7kd+TyT;XLQom~o`>TRQ^$4w|+=};S-~7{uPyOlh(_KY(%Yioa+B9x5W&%D6TSqNykZ&1I zG(sDxa)2AM1&7*du5cr8H9j|hAFO4t$s6JNeG#~!xq^Vm-^;KRnIVhqu~ zLpuaA``SoG`>GDxD+QOt@9ES9 zfK3Q`Bauh3KCDtbqt%qB zr>FMo)f*-71_kN822lZtK^J)ih5o)iUk#PLL*=GsTii&3?y=;i-?1LCAOSf!<<7$Y zh)xvArnrgc&}?0Irkzd|hJ!A+Qd^t{VuDiJo6}6+!tvl{*=k(ebL3-7+~Bhms(c(+ z=pSWbwkJObA^&oRbZW$kbr6;jCS|9T@HknomjeY!J`Zz!Vwogr?+Sz30yZUUw$`iS z0{*0G(=SQ77HI`%=_g+X#mwMfg{@YR)6y)kM^oWeX---sZ~%rnJ*{88U;?j?^x09r zrK75+H+5KCR!2l7bCQeZFU?Ys3LZVhGJT5g1@4bEu@fv4^8G%S)_~2i0q#_03*~d9 z_3Sq|G`19ES~qbGI)>Vs1M6oeyvP*`X`=dJ7-jVl6*6pld;3>p@1~fgl~og3A4jY@ zNKa6^{o8id1nwquGb#kW{v{@6j!p)5iPd}A%!uu!21D=K*-CmG?2a+z(Exf2uUi;r5285yZ%x^=FeaKR%sGxEZ zF!y=z7_d0FllV^CFLvjuEYl3=yHe7J1jRD}@SH)x#>E%2=v7;H1=*g}gv<_s{+n|! z37g1-&+LsMUMHcP#y(nKV&@AaHbbPOPlg5yC(6~;)kUF8zj70+)am7UTrM{qco%Ch` zn?YSLxC6^uYpSZ4l8-0p1}w{RbD7vqVyUW<1jvb)M&NBh81#IpjMw2^uX!D$%EZzr z?jYf=kj!yKZ`PD+9cmekJ63jbb_So|F!ajd#3;^Hc0#S~G!A#fe6}ugHi$W?g?g&# z>kFeW{QT0P(+xD>a;Bx5U0>X1ks>m$8VLt~1dw1m@8lg|cuhYZXbVK`c6|ShQraWx z|1awAO1s?2y2dTU(Efwwx7pRp{3nQS3{Kht+9ThH|E2s65Bbsgd~Iw)e0shO zCK)k`!@?^{$7`(UU@Y#8_&-U;?J3lLSckK^4`B{*)u+8%iMCLpO&_G^R=}n=lP#{e ztU^E5)Q6wdXYP`cN)ID!anZzWA(m>k?@Htx{#OnsTcqL>=*igjcL?~f)hIn&h$3BY z>dMLZ>j>kH&?}sS8=f4FUqTuiAAz;?X6E@#w>24ReAp!8rZ_3gb~MKMQeO7BUqw}w z%KJ3Jwh?)PtaE%4tEHtipFDlM;hrB`H1`M~76=K%JxM;r_kk5!UW=&J|C$^O{vxUS zY0m@4(dD#vAel72Qoa4hvHv#}dK`CGrfTT4&U)2zxKA^)RInHo!6uaQZ!B-AFm<1J zhUJ}H$W5c4dySK!JD+kp`gXq~ES8z#YcrHX3L?*AWh3WfJ~Qme$`I85ge0i-g@35p zth~ahniwXfNz>P+`mKI!?Dg7_=Vk>{*`$NO*%_PZ0d%jh%^uwlV9&8VUE}%U<;zbm zkJWLf$>o^0L)rIvd7F-r$E?iNdWvMz4&#`^VB|4nW@eUgBs!K?i_>)>@R1t=aVC2I z&B0s?2eYW1Vjiu7yL$y1)0p-s?@h(PsQvKh(aa3>&8Un14arbYLLf1t}1h{@Cjzovk%j|0wKrGV*xC=dr76SuUlkr>8`Gd_tkg?owXK zAV@{%s+TkDX{IA0A`V+eYyC^CM!PoyIs^-I3R&sifE-7NMc}K}kY;7+;BS<21m@z_ zx99EtczfRGwxmE4M7c521&Gw_U;Ou(x;V4H^93N2jAH(Opklo%5@EQD%?gU>bwJyx zHF5pb@gng{q)C(&bZc+R!D6Vh^ou=HKZjgUMAuKpqcLhSp{%{=OHXL2Jo1;)+h7g$ z-^wRS52iiAsKLo)eoKuA^J_x+Pouq=@CR>Ow^<7ogPtR=_Vbe+ou8O^1D1e)U*N$5 zzojKbQI9oIZ%li7!PU7iv>JO^VPOO2P(AsK+-1Gy(&h=eu3_}-fT`T+i2u2w;tNg9 zu%e=uSFc^m7`E~DuFb_=TU=aTUTcmMFtZ0?6h0(qYi|#!!risZu01i~wU+|+vV%!z zEV?3fHucx>#sPD_ehDeu?Wk)m371}WCOhc}fvjsoP(IQJfug%dC2)5kR_u5r3L?z~ zh{wW0BUVv;#Zj{?Qm6Jyj(pTJ&pv#-&}>g&m04N?kzoEu=$wY<1I1ucS4bWsYG)MA z|8nZmAi-=wv`Ho|6VdyHEL}qo&(?k>v_nb}Kz#k}kPUAyQn=Ik#d;GIw^W)Q&|FUP- zEOnEN) z>n`1{LmqPcIcmX~0CLcd<=3`Vn2~Z+sVy?d7J4kPYctp@Hc{yuZnpG3U#GNLYII~e zY1pMFNdo0@GBH}sh&$TEts*MbIQFb>?Y#w){@!d}Cy4L;XW6CbqS{%4{+ZT@yvh=e za62iH-^1jt;Y!^KasD1#v{~HK|5ZoJi&jv?4XgC|)U!w>+AkF2E$08x(auo1{y|`x zT&%S2rLL1BX#DDYSo0D>@`MdS1&!m-2_hwKMmwA{k%{(xI2hZOi_JolG;cH5A^kq$ zb+p3N`72Mac-X7Gc;QP_Hpv`rO6<#-EcqcT*vmIRV%|@H7-Ht()}Z*NwD+G9VZb&p|Kd>H;eD zNA>xPmgzX!{{f_E{L3^pdwUT!{}%Mx04lL!ztEZq*vLo9a(4W0mxMap!CF{MyDw zEAD8w?t_4Ena#Mrj!gxFhDP)q9-fveivqt*yy@ux2!(kbC*9lDUl(W6TwA<$ILr>>i`k~pjNb9D z=`a{&FY5UCSTFMdLEdY%vjdlN0b3ksnNdIy`j+4E6hZ z6+uAv4HToQlW1UN1cG$tR?azFYJLhLV8<~Ao$HIgCsPIo`Xf;HOUp~GY|xK^9)keS zrr(&XWB1se7sY=zIvsdp(OUU_IO%SoEt+^F60cVLdq8$beUIe`coxl&D=F}A+NY%q zK<}L;r981m@osC>P2{OWHLlZ>%CAGRcq)s=EcI%F!k zWZnzAVm7zRgqx{Cwl)NS7#A!g%KD*>b{>r$*s1^2qJGyMRDtd(h)%XXgX1&#bPZ*v zL7%2op#MZiM`9$;LTO@JuI?}cy?uHx70l~(R@_eZJ3eh{YHIYiZ%->Ti-h+%keFuw za7YlU^E%YBM{p>bY$!+=U>i}i*4)vTrY6S8ng|$UM*F-to&j!c8?e)X83X5)t^h~^ z*ld7>m4HC23do%L?I&IBL>@JaE8g?ucyjh{n>XlD`~;is1@}S-9)th@3Pu(fxdsA2 zbKzrwH9OrebxEo6xp=@b#!_aQfDpG|)4lRa^9(rJ0VCx-I{@*jq~_WZ^h&zk$ekZ@ zC?V@js$E_M^6UrPfV$I8Z`~#fG+aS#t$0lXFu8+XZsGD4Xp|5<1pEN*iK;XwVaDV3 zI1b%f2cG@%@}C62d;+*J5&Motq^hhk0l@n77@{FYcmF?CyLJlL#ihQkv(Bp{mALF< zTVF)5Q}aFm@n`0;HgIEDlx3oE=H_kjpxZXH?z4)m&%=po;WS1?ew`^gzEQ-C<_6MYjwU#}`!$&Ci@SLzpQuW}5C(6IU6$E@GN7TJ}hD|?tz zVpT4mUQ}1Pui~-}qUs&~-sMSzjZ}#LIoEpw#~T%#rVr8hVv4pzk0K9GL0d*f##ot8 zGP=Un2UX>0bFk2%PS3`spr#hZ+va}Oc;RGOK_*m+axrj=#MWJ4=g|%8iE^3*VVmZC zh|V@vh!9(~*&0%K?SI zNKcTEiAUGupyqxeZI2i{=n^-r*E0J_e) zrH_*rzp1p=7h1f4=uW~jDDeE?x2bf1{yy2yIvm|oMp-foJ;VwOZ3wDbNI+%dnVGG`A^mC3W$9VrUDLdyCm~T@cjH1P~IwX`4&MzQP9TD z&VG0diiRiqwx=A=yPks@iZ>G*c1z)9sk)BNyoaQaP@qWdO4(MYR`odyrfb_DCBvIO z|LxniW*O*AvRNPu2wX$8Z2RJ=e48k!Iw6hUDT(GVD3>>MIYx$T(>Qs^te6E(0HB{xO%5Cx*&+ykSJ%8@tnH@{3G^- zn0tU;fPdakJl+2Ig=fb1|Ss)g9a@?L46F5{`UcNoH zm6;}lcW*AwFQ7?C`|ax!KfMWpb&bAjujG$Xb_@3Gnp`YmnX-;a-2vpt^mV%T$1oBT z$^_Q7n9$lpzuNqjL0|pmN$1hTY2v*a*EXp#&(Zs@w6xOU@ZPD`MAvs1`h#^u_=`Is zKeHj&@m?rv^64ZBHPjRHJ7GS_bFM?q4g7koW{_M+SOb1kP*}L~!*5=n#oWUkt=h1# z9S2YtZ&}|himg3AJUo0CA#FE93yQlX=|pwMOERwo(d}@tPxL{AZT4I3>5;Qh3T%qy zQxdoxUa*byvSFWm(>`tCg$5D}Y6}98hPBQnlwFaJx*m)#*ajL&;DiN;M7-R!Y-*n( zw3yGyNul=$1efNzvn+9J7r)~1l&Z<%RCo}U2$*sX?^!c=`6{F&emfTr$!HC_1~#1M znypVUslc3WrR8yu3eamJ5F~(RrG9l!x?d{bxiUB`;=3pmy^ZQPPYjs+|6aa|2XW6D z@{i3yK#)0L3S2l;pQ8P;9Xy9)_7mu<5?*ar>S^J~xDJ`2T zk|9~#^9i&jOB+y`HYy})M;wI*ZHekvHFCE^d``8Vl^sQh)Di{;20klupE*0W>*5hH z!@RCLY3X%m?9^Y{El8Bu=4Cs1_-6gAuI{)l8*Y%ah57O0UiH#2ywc{+GF0yi!CS-i z5B-}tod=tdxVpNQ+8WQI36&B}2}S}p754B@4QHW(FDK#=T&pSf4Dqn68dg$be9T?} z2Nt!jVe$vUAuiSC+3-NIVnFGx2xTFmBZ(<`B&CNjDq9sedUFt}uY;d-_(ce%PhDo@(#A+P=j+#oobOS3$w3RER7 z+xR56S-IYRkg~fonWImXd4SM{i!oj-XTyyn&d%eL(l8A!t;!_iPj9I+Y@$zSBy>Tp zee{>V-=T0FHiLH#RMBj#k+r`~#;(%QWeMq526=zO_hov0cCO>gt+79U2L%y>qY?Lk zP392#>Pwau$*&(pmt{`-1KfV+8U((z+dp~p@}2eyPkecip&BN3hCOHoEO( zfm@tDCz?r;?P-80e|<5~&d^&h&DE)u-X)pqGG{ykQ}X*t63 zPv>EQ72g|t2!&6KGWf(Tx0OW|8Q(iMp|Sc}+8=e6)ToSvabh!+?6KHPH~l4D zlF5oLib(JFiGKd9D!iKT#~Ht%RGf>>>gvDLgi`70C?_p!k*U)IUk%v2mr!i)eT5$V za|CP1N?6v!1u!$1YP7)Fu%+`_c3yUSc7A9mIOY6A(~5cYIfnm|M3!X#V`DMrYJmt|{z0;%u!Wot}}Q z39xV`Yi%V6W}MWyz?`U50Gj8mIi~GB^&kn}-csizAOOq-7q}EI(2~NZwijV*dPNCq6b&pl~`Ypb-qD#x}sI%ntl+_ckNdhXJwO$!x>f4W; z#Q#~gk54*vYZU~^=OYLv2$kv~Dd#pEN-OE^7zB)|ia>a}vEGL3&hQx>^EwJ;wnwTq zT!S`>bwihXbDa>B)d8N6=41HQSkJa7WxbvRqn(00N%P?{cDEI7yRv6A+D9xm@;oMW zx{u=pZ5=G6;bQ=tX`-_B25rm$nMEW^d4x4a;tt21n^+npIpjbRKw3MBpLaEM=$1wL zA-qIp^sEv-e#j{(P|3A%5bwTydr$XLpuf4b^^v!jfiE{gn?x?iVQreP|lF|G` z7Ku{hHrTos(WfWD&+QX?gaaM(Alz0rR8^F-M&ichSFVO8NOHVfV=Lr-&#t-3RdMSz z>s`1B+WyB=7j#2Y!=IiXL}|!=8LYx zC2d7#U{Hj$YUZ-=<>g)`847cEKA5m}5rGJw6*v0$S+D_1!llhe^Zbn3BCaNCwnW>m z!sjJnI;>gj`&763sX|c;i9|)d6*mJD6bw@Y93lkhkpWhZL z04jN!i(i5Lbn*33pap$)!5um0Ck&-|dVzpz$t>+o`B{Cid}1mX#Mi(8qg(x-Bk+a@ zA0WC*W7-WC>+V*c$XL9VFp^j#xyPmwc`|&efcX~pP$mjz&e?;rxt>0mOqjQqYEFT}Y^0_CbhjIS>-Y z*M4sLV^Hfj2OK=0(iFdiA&Z4KpWWxVAMbd4yG2dl2#of6z>ZMQdb0ZX-~oBcyVegj z6%*0FD0eCp*Do1xeZBjcPx=8v?8F;TNmns<;F7D(NawP+bpWhthb!|6Te)T`9FrW( zp=<$o0l=<>{12?vLftiu~j7FZ^F<^89%^EFbYS`A4M>nEVTZ^Sk__ z?v`t0H5v6WHwOoE4vIKx7))LO3zu|0K=x}U!||oSN24Vyk8ExMt>=zl@G)_4zgNbU zheH?j_0`2tr6N5;v9QP7%rc|ohl|uBypU+-r(N&%1ko|8TV48`PJtsVl-@A-IwKQbR-`^zvSd!=rRR_h?gr^22 zmzqc41_gVwRyU1Y!LZpOOJ*{XV;=)m>N)DKK;uIF=e*(0;=h}b4S}gY^ScRajLwm5 zXTq1v{0-dQbdhteclB24?&8!k>q==bq)m=Ps*AXscGD@`kh+P)BV-qD=v3i)3GQBv zyv|_k-73thB|Kzef;#cnFTz-s2Q5~mW5T|N=SD5FN%AN z-0KVOixum?vVs7D9<0aL>H;9S%Lj!6iJ-l#7g8P*GY76Dada~;NJ00tUZd;WM6SxN|e zlS$6;WIMZfIuszUoo@@xJdU|rN0!1d6I)gw>9B_}r!JdYH_N*lUfdW)D^?D;< zs?BMmfQr_)Ouzc$Uir`eUUXWqOp9~HwO`4>Xq3V*$`Pn|+^083=0#3+Pp#Q0^cH8I zAzxUSsr>9cgf!eQ^66D<>QCcEPgmB{#UW-vct@7y#sQNd_XspKyWv*E~_ zHz!EL))x~Av3i$0`XS>s1%Je+x5&U?qjEgcycq(BOZGTFsj)G7Bnd$_ zpp>p3ml^|bYZ7#<#GVIC6PTaS%3ueE8xj}WhT424BOy5E!9?HBbG>y?HUN0gg-6HI zrkDO;1|Mo?z-Z{z7e}@KD)uG`y5H^M2Os=LQOkCeK(Vb8l!%zvb&!x~K&*(e&K=p{ zN7%o3^GXyoG!0lF{ba0757lG|m*N?`0P+%43IH`-k^;GhrN#rXL1Qp1oODT06TB2` z{;^e$C-Vtl5(A#|V{0b7_Px7TbzGsVi00x}lGK0WFf?e5u#3Zp1_hB9Qz+`2y9YbV zHKN*z_VTej>>o{>3fBws`E{dFsEaI%m+&%dYAt!`F5%R5c4fmAz0MRpDT(5}+s?S5 z{V`2%0S+N&+^}plCpT1Ssw}$qcX&!9TAs~XJ>ivDio@K(83;k{!qi+hA&|zGE9j$f zjRfo&;RD$qVfht&bABb2t<~DY{!~<@)(l$$}rD zc`r33CcIS`v89>t69rzJ`V;flbFZr{A7$lImH#%)z;7fai`S&qGh}#Au<||Ihdg=? z<9DSP-vs%f-A5h>yv6#q4^3~qrUz7t?#LvozZ10nzU7~cd~&P%`wa0i&P3fH@>VPY zz+AD054_)0t}QF7(k9& z&at0UCoY9SqUG3V5uJ0B4t?j+AeetmRbb!aNrgM)DnbX%pmDL&?c&0Bp2SA|kowsk6(s7Xl6g}n7kO_?PvzSC<`Lqa%f}s+ zov{5%Mo~qkTT+seGpU>3b9e_syPggIpWtz`^LQNBf1YIUyN(A=#aHdJzGx!a^SU2e z;?#%-JNJe_Ch!Y35+tAst@&0M;D!^3{=fLlhZ;n05j^@@BOn`DL~Ocw@#g~_ zgEychRgBHF*im}?51|PD3ps@TKa726SW{~nEr^0j7X_rMsHg}L=^aEtML&4w)JbQ8f7oI)XoY0>y^6N64U;SF>=Z*7KELovd;vM<=-9Lw6X%bb;P;!C# z+M)9J!ZLa@aakj&yz5<3C6vb-Rwg)aCjhfYX(%v zj>6e(Z9MRaF&^9oBnyJoU*umEwrUt$`h3Kq7U%WjBdjzwb&2t#0Wz^3_vvB;SpzfG zLq%O?&-sa;i5xbex49Ne2D@Jl`R~tg;;+qZxsQ5YRi~M;*37pX_1)(O&a~KlXcXFt zXuJJnAc*5D)9BlN@lnr~Sw9SN)++kU8vD@@C3jiu2aVg9>{#FX*uIT!q%2N76&&7Q zQY3#E{`uH9CUF;%V(Y(N=W}MN6CDLuv&5?e)mf61LA8wx)kaYMXy=_2-fbY_wSWrg zT3XIr^T3*NGy|EG4<<|-#M}Zg$h~A%zq8c$-1HbHb*w+n*5%wXw@Hk7RbW??FPddx z0({DEvBW=4-01qSTRY}2G)}}}ytvOMFCoOw?Pf5A`{Z*e$to(w3T}^|)}@K5rS!s| zV+Ml?7*||tpMC3B&v3A@TOhCsKb{c($2;}4 z{R9OBdAh{Wp})mTxOOd*7Si~`Vz@k={*Ci~ri{aDgnE9X^NkxfP`y~(jd8aEj7(&s z2=kvG2pCt(v1bn*A=V^F7(S~kIkbks2LGuel@X&jcSu*N(XN74k7_k-5TKsk_E8F- zVVz3P(f07vv(;n>uxUIYEtTK(OLh5Ak8>XR%cX-|Lb%CE5Mi?E^3Cry`n$g@;W@Dy zQr3Uwa`w2QPrdyol+jYW+Upxyh%Kr&F z1$pBVY!LLW8H4+z{qmdau%8kC6jG(%A~tZ!gD%{8I#Y``NQS18%H6}`I#fg#_ucqE z_Wj9WW9AU>2yJQb(6}IvWh>Ox<5VEEYCD*{e%>f+TBj?Q$>oEg(X8yynComs?#h6? zjiK#jOxLe&#UDoxh!N07*`exA08O~hjOyr@GH>+cl9_?R)>6u$5XK?uXJPuNDY4nl z%5>*$&R?ZCyOGeYUcg0QdS;A&if2u8XPo)+KQ7Wbj(m}eG)*osSq@hF9WZi_KXT#o z)kpcqAFBzL! z(m6n;06S$Z(P5}MR-S7gQZGCKWRN?ne2k;g#7ph4j;@~?jViZ5eUVC7*lSP4DGxDP z?Higsk>o*|y`C1AYgPgyd|!`6<-UKMu%S0eoYycPE|b)ESTff>@55T#2lzq(IPznD zPu`zky=QfaL5ADPD-IXBV+pY;?^@+Pv2C=jAQQg&v7;Fn)dt)8G_r< zm95-%3jD8p>y#A|(*K$3cC!azZ^r_uEO-g^vfH8FfFF(JRs0O*6{e z+x$@K=ZkInjc~O;k1D`FPLs3i(Tf61YoyD(4=k?60AVL|Kir0s_8TrXle7>5O`yZ6 zZy8 z-SwDrFqFx0%-)S*nFv9e9BFnX)NmU8!=(Ya#eYNCygnR>x$sV;q44DB z^&!cd!8JDgZTB5!voN;`)$J&r_at53ep}g#tEPDRZ}{3DS3>sRw}rj}2=b9$Ak56^ zd(R|m;cb_qkFQe*nzD!aH0!FxW6X-dNZp^pTOxl!q5nMb?*u^F?BI`$IFJ8@_u;-j zn<1cTQfT?Sk^7vGtx_A(Lvm4Gj$;{nNdMRnj3(6RUi50|>T_-2P zMzQU-rQv}NRX&&7r)Vxm&WYDXu7(T4BTh7;P(wpWKN$zl&P7yNhZfU6BVjQ~2;34% z>}0Bg6;hZ?6`rXqv_{b_Q;^^}aO`hM3B{w|+%GOX7_3|7rWAjMQNtXma?wGHswchv z$5SE$#gBBy+If+2#lINur8oazy#KOLN=Fj6q&A+rrYn{W)>5rFqze99$`aHATE1=| zB>wD=WgfWlQSZ}8Z+jA1`;c;@{1=V+9saRyYG$)DR6JDYq70?Bs^FQ6GG>RIHIgq^ z{Fe*89ZCL3m<$NU*zzSWb;;EicA*+A$l@QR_xc2BVQrLeUlm&@ZJYr-I5}$}+ZoCZ z$0HPlmi|Y$xLrUt!QZ^dXBU(?fAb;_`j<6Ps7$zR4U{Rh2L%fRYtKpjH!*UU=YJ6+ z%ehzOFVbj{SMvTMPWZ#n-WVzW&ABV}2j^}kDT}kD7xpO0;v69)3)1m~bA!m=1iy>E zql`XLsEk46@d^@jWt2#i?snF-zStUJsEx9U5^743zQQHi&~g3*V`zQxceAf0ciuiL zFgn~#-NcN_Rid9OhEGe%9{KmI`d0@2#>nhfv0F&PqNXXq7a%Wq$XXHrm^sc@<~t8t zz@1KC&KtQ;#Tp>f`x>#%PT+2(7!!NJj8n%G&v!sIR|xt^cTLkG7n;*LQdd!wlFeLszxslUjB1Otg9$ ztGYg`?l(WR^i_RnLe>QyB4~~&i^_tmRx1vZJ)w0jre-*W2xC3-yC;U@{A@pG2xM5$C0-5ca%}P6E!)3p%wM|E z4rj5ha_9q9gw0VkvhuV}U>5eh@|qR*H75GCm|K;CMX;N6#eCa5FSDT53$Q z1uY1ls{hPHenp+i$s#*Wy(zNPbn0TfBh882`CsiX?ne|GlOuJ{g>4OMvbbDBlwK|* z96577DY~-dLppCmo*EDiyn$WyH~JqnA)w|3GT4FyKab8{EWI6KuM3oMboFj)<4=$|Xyc_%7fn?O5$WUSDi)yf6D?sXpj*Cwfg&1z2Tak`WmsN%sQfChrK7w9(9vseEB%XXTfXT_sz^) zJSjNaJQS|{9i!hQ-14%o%hSy|kQmc^4^IbEF%jLUOJEE0ahb}u0*ABXq&|WyXg~AB zQ@V55|70vhd{8vqHZ6;dBrTQJ>XI_M;+d6r*#h#_ix-7+BH1OS)@`a&KHk*gN?#pE zjl9h4jiusZwp-e#ndl5-So!#H@vrW=im1={hGgd>{1^J1zaw)CC4;N#`c2)#W6|TW zd*;kE=IIOuDt5A7f&o>BsLCO5RV%y06XL~uAsmS77b+;-hbzP9#J|66kvVr_5d%HiU>BPGy8@ur zRQ_eoGb(jXTmXswq$5s+0T6x*bD|w+(=Gaw`h3Tt8Q^^!%|-IG5Qn2rw1xT7ey0zk zyW}#VrsL`2e^d#*HIa388f`zUPAkcoLbVR^_ml6M+O*uBe~MSCAPhYMJFr(UO4+^1 z623mlPySUU=tgnraF;f@IG+nlvoqv$%;fE7)xO!sIF|;uL&>uI3cXjIlRP$=%ATWN z38LI5mw&pb6_5bjqGBbo+G(pEwf-&^@sP+@x!{2`tzj`NTWjc)+c)Zh&7|`pV^*pi zcc6@q&CD7kYFP-ZL|l7+LWkv@w$BkTIgwW^guGtmzmN5K%fChe+Si_+dF|UA9eWwC z)aEZzqJeq!%_5|#)lw)O_Tg=Q^+EB3+px0ffTe~iy6P=XJ^BFyxS6-h_Q*S{rER)Z zzB=N0-`CfV(gbHb_449?ZFC}Tn40q1k02NU*k9k-d_7l{=a!a>2*t!=c5;2re3D@a zQu^98KR8_8sCsbLi&*ZvCBej?Iog(3NTRB$~3qc%Nb_ z5q}f!DN*t3oEL{oOYW|^BY1ZX$UEKGX@*^R~GT2_s$`8=Li57;&D$kAz>-oUEMJuCQRJ4w~C&k55@OE$9m{bzla5F{2&dE)K%aCnc$G^a^a zO^vKx%qz_U6vDE9a0k`!qxnOPNT2xc?B6+%OsV{N^UuAMdJV%T9)_Gh8jAu^)rMV6BdJx^~54C;pkHxy0my5Ik#PUB)*?>diK|h z<95vMwmTwzy;POgn+pnsel94OQ)JeJ@8z#OetJIc3&FJz+VPGj3^1m6%nF$JD(|G$ z)X;Uo#;JBE0~Hz=d3~7VJO;=d@D7bA7-*te5pZOGUle|7RA+B5ZhHlhbXG5t2c(H zH7ABQSUz8ZAd}>(o%+=GA3QKgDs_9evCE=4)%ro82nkp|8o;tUneYe613MHYzby$k z7K%LkE{^)5@+Cdi6??bA0-^6_U-A_8lSqZv>=o+Zps#6g9)QNJn2tn!wVm&*fL^?K zalLkpbfzGA((!PY>^>cj*Fvln!ube5+RLm~@7U*=)Q*&{MF%rX>PE?i3h2swb!zki zC@k)Ztw@yCHUS)3NvF;88p%>&+uLs7r#TG89sVZt*bX1;o=5E7qEK{l5(Zni^WKqt zyStKr4pCp3(KOZSMmUAQ;zCbP9r+ipNweaEB!0m{6QZsig=%W5h^ww+l%@)R> z7KzDt?w2yfdek4OnexZL;2;yycACGJk*|nkRR`cR1VH2Cb;}5YkC9vrUl%xJz@6t? zXR&@d*p?9hzEF!?d8g07eEeFa&boi zHj%teHgriSo{r2^f;<;-ikC3Vzg{&2r{)D*cCryIMMc5~1ce$}(}Uhv7M}Td-{}aC zu4*FXg$oy4Oca0zk#t?ETp0O@fONh&;-~4m)VGUtN6=8Lw@>nK0A`Il2jB#y0xAfK z^=ibH;qC;@_?q+_Y2O_d#e1->L?+crVg#EfWZ+0qlrOu$5{8AR4|XsQn`R+xuNAnC z0b&wefTji%GX&0qF*FIbJ35az+9%pG(8GgLkz=G_>r7O!xb@0%zZ~t!Sm5?zVlLjH zA%^T}iP@TQ zC*%s)vjgl)lff`CODa6b1Xo*{&bCAJxkE*gFXV=**H~#EMXSAiR_)ze|NRLkXWPA` z_J3s~Aq&rh$-SYjR=SLBUTsd+QKbxW`|cXOS0t*nRvkhrg=NbaVHUo#p0$5<9a`-GhM?*^Jo?|p}Ooi#aVV5>^< z2KYS3(saHRar8cX$2+bWaHsjK6xQ-60G~}esBx|{K`Kna7nOXrr?i<3fwl0N6Ctte z93Y7Mu!%0xW+9mqWgVb)!qKF_@`mDfme{>8cVcOqPs{;*-rH5qdv6u-E$CpmLI4;C2AVqG9=VoGOm?3T zA#GKD-1y=G&|pAloNX%Cbib<2<4D?rCNhJ|sLLAAi`(Fz+NKA4#)0KTVdA9mn%k!? zitfR|AaaPDURm3v)ziUxU_Hxkbz1Vb;IfyZPQ6an9Z)es(TY+7Uk=0a!$J`R7%92U zhdS-kVR_Ok$dn*#SLf!rw;5Xo4@@FmF@uLFBDodbI@2R@PcH3k%UpTpAiA3LV*OQ? zwNLJMV~CfzejS_O@8asI@RTIO*CukWEI1gR%8ewCm17txP1^L`jHI@{uz0;J8A_z0 zPD`B&>V9iS`OW?C=XF9dlrT}hHl|Bc%TGL|a5sHi9dYAF<624pIT5)6K^W3i> zBs{)DgsG^hChROj}nNd3}%jD^fW4 zG-5V3z>!Se>xWGb!B&RMFw2_b+is!~riYl+-xBvodvrW|v&y@8UHD5fwt(W=HOUYK z?|qqTVq&v4`vRtfINLe>M-96t-0BJ*U7Zxz69YFk`@Z{tYchu}mU1`ltWWB0+? znj$5>d+m2f5UAk*L^3Ud##4{)B)O+nRdFy97m&M)UA{@1k^?@GQBmYv)Md#WWwlA# z_qxc9)w~7sbrTDpr@ksXz@n5K5+`&VpML9ig?!bFOngRxFII;T!q?ks`}>}$sq##% z`7L}L)m$a-8F=>mwP#TLtT<1Kz5*l73EG`8mjKy;m7QG#0lTx~a^Gi)Ksr!*jxJ?G zxvjp=JbVEVs`22zLyR93f{@w_fQXOdo*4<6$~}}mMdqSlP}pEEC@Tk;S>i>&k}yf8 za^W^5p-IMH-A)u)?%2z2wgq>4W}Z^mZwV~=toePSo5=t*Viv{wi>O7TnI|?jcJi&M z{7W)f4EZZN$%pI6ks}4-k-RcVSoY(zv>PoXJY$KdX&uRDPAf^p&C~NVagwwTlk{9Z zN}TUY4i|Z&s-j}_UY{82_CcQ8) zG@KXpjWskdgE^qe#AdgFR+;bmn8WlmnB$J`2K~ivw%v781GZ&|ZU)STloVaw6TSyC zstR>srq~2NzK}49~?_E|= z!ridnEff9lznL|~aX@@iK+7=h=P%*2Iar^TL*umAVg~2PnHzLZ>&z8roCGXQhRQ{u zs`nH-7e$WjOg-`O;Ucpg@yac!T>noN$g2SuKHhzHdud0*<$1EV(g*9gMk!mRdkfhPX&jy8@t% z02N~*RTT!J@>xn zT#oW^m8;q^4*0yO4}~6;wxlq1^*d3Mry#J?Cb(AJl!^*=2(%?^I{XQRME>n@OhR zV676rl|5swKVy)!81o7->-Xcv&*Bshrf;i=e)pT+y{QtfRL-#B2G}xZ@GcW&GGE;q z=Z3p-O?NQk4(!PKB&bAnnH+2~V7?6G4@e_a{@B-_xFgaV$+Yv+^HcqceO&A}V%W(A zAPAVway#H@NNxk1{kT8i@fpG_swg3FjOYNxI%9-uUvoso+PJq-7eJOkZp*yZD|NoG zy)riKwF>uMeT~wH%L9mf@ShgT*=aRg+=+>jE^}8IxaGr>iOcg&rSJLP&Zvx#nf!*P z*=pC1Tm~RK|NW`5w_@S(5M$?B9YhTexgy<|E%XuF-kRnm9oE*?E?9|!h;>=h(NI%U z-lXqqXlQtkLVIESUl!(Ya=ERIzdD7(C7}Qu6M4>MHi8n+95xY&iD+W}OO8TMT<(4S z2TsOlZ(3n$GC5V^{b^uVQeXNi^iytx_oa9+?sl|s+^8`BRKeUpO@wWCO3R1ZLZ`dh z?ZcT49WI}Es1#N`nDfBBwtTgGrLeqQsJwi&px^j&c}4X}cm6kuCvM*^mf70plZtom z?7aJq{^iV`ue{HX_5`V}w=E|&+xOvXg@R3?(7cu3Ow<`8TImGD-NE3jHD)OCumc_b zYg1kS;lF5aAgtXq+3|%VUJp2U3b=GW&2x<$@|=9JPM>8%rH7V;hX9eDrx))B5 z_UH6<=a?f?{Y~r_Y`px)d2Iqy15%XrhRp7#3^l zE9N*_Xlm+%`)+CEbK?t>0%>VQhT- z{N*>id*HPqvt{vbQ5jAwNT>5G+5=2Fc?Pu{<)dz37bwpZk$TTu_vihk{u~zV{VG>X zWl~pb>kT(I28ze4qn-=S_sZWumw$evq4)|T`I5h(=Mb%HR_EmQW3E;dA!!} zDtN_v&9TtmI?f7Jram$6cfUU;`ou2&F|q!7M^VgBo&P1i=%_D-_;+`n`A6&woiwwA zYhV0VdNp(O*6;aQ0*U7E-@h8P>%m=ekRa#Kxs*y zpS`Gj{fbi1RsrRxqR@7S)9eAkF%GC!Zr6S4GlJ8n5F@GXzkC>Mie^%4@1V8(SlPSN z@QIdt>IpV%Uoh753N$JUg3O)E#&|dF(n+EfLoyhJVYHVbvoenvi?K^T{o3d!@3DR+ zrcf`^-nd$NL_JYlZecv9FKhaXK%ry8H#<&RF)FWxiF%`jyBFopDqiTpF^Y+r ztgtZt?<}cZ7R9A%9Ip}^yUQi?W9u7;1fVuAh|tk-cY8NAHC!y ze<8DMT2h98{tcGpxLlR=I*awkWEl|Yo$&gW=HS6-d%@ge+231S;4gpvtO{vZ69nAE zDUQOs$@#-9v%4bSin~*ksGdGuW=OCF-wk_nh(Eu7VQ2Y%fl_)9J>Ry#j%feR-5+8a zqK=PYGo-dp)b};}p+r~P2cOz4Gyjz`aiuO0lQ&sDz&^J>s#_$J+H{afZ7viTrm3GD z1uJ)yD!C4~QX%^)caq;8XhvD(?iXHJ*8v12&~oW6XN^K6Yc z6IoVv&B;;ap`qj4h1j4nd7;wB_6~F&O=&10AQPz(pB)d^ZSQmIQI!HKfDXak{Mvr0 z$^jjdo?C2(Pj~la(QtP6S+@IG=tov1Vul=!-d&V@dX#=aS!udC!V#4(;d1t9PU`Yl zIb-xiO`)M$Q`nZ>O)9Vb$Q7$GX}N`i&ctdiWa>jYWL2`>W)qCW_EdhTz?d_ThW;jI zaPf1z0UP+e`gZ+q3>cpB=RFNi9w)t+I>s*k!m4S%*Rb?zw8mI}6-B64Rkg*f*D+Zg zcXz&em)lq1V&c=P3bos&HpHz*B^`wT9&}mcY{ZB&A-k^liba=MB{krVRoQyh(U7O4 zGSl_?9d?Q0e!0om^^Qz!I~L9zRTF*`^|NOuNeY9-{@PL&rYN0K_22o*S=DR3YSHx> zt>M~9pQPt+75RhKg}#hFKB|@Ut<={-F|WV8#Lev};T#*3FC6}ABCpdPU)FXYcXV4J z9c(@(vDJgkM{OZ93q{TmKRF>z2P?a=b7^+@wLWTfy}u+FX=hGxu0^Fl_#y?_pnGS? zyfJIRB1=D~(;RH@t>KYi>20V#rnw|ISx!4xC*R<#oE&$&_=iEx1O*snLCryNujX9@ z8W+3z^QV+v@r%nf3cnRc$5)~zdr>EyGF_@Pd z8X<=}+5bgb;5MIt04*9y;uE(Uf7uaVUbnWBZqXKFHB=_3A+>i?wEx^^R){_jO7j8f zZ-isk;J8G)f%w9h^_ z(FI-mB>g4nz~vk@c5O}4QlAx&AWumS6@u_h%f3(QG(5`MaDx zeL8r|&wi*tkX6Xwq@;asg|HA}`Q1lMf4(6{Cfor%o&sY_%k-`Fx~-lcxV+4D^5n^h z3>M8xeS}T)Hb^67e8;SvUXP57`{Z&pH!_|8?ViNxSf|~+YRDK-H`22 z0c|CHY|w+8WYBVJ3Pn17XS7@RhiTF5~+vL9n9rv?h=s2 z_`)i9YKLiDpVyZ)XJ%Te5muH%2|+odj${5b2@Ex;4ElVB5cLgP=mNgG03#NkX@3dI zQh#>gA^LbaSPwvrWFbE&p&8QG%<(HSzuNhlKq}9avk8pycFCQNdf8#$fvIY7p6Am59*&AH%gY65~F(=^eNs0t@58 zJUqplwA21=cLRCMe_ADiV=}?X@)dVm5Itugo>$6DQiT_GqU`w?hh(`sT0VGB%3?`$ z)T2*u7;YYHi|B|KYjo+7k9eXSTwwyadZhuew$C^YU89=kO7fxxmc6?i9d*rR@T%;= z4|9Lp#vq1c?A<8$<)a+#Ytxa+)oylFNcm*OC^@2O4Pn*$M_Zc% z&kRF@8gnh-8(-uswy$}rM5ME!X0IM%D7$k&>#_17wi{$QzF*%cM<)4tgOgUVLt1sR z+h4Ryo~+$bpyP5t!MR=L+HaxZ&>P#NPVcqp1efMiEo7v>%Nm@dbl-SN+|D4F+cFRT z`T|C5%el_amtji^9B~9;WBv(xnqdVc6Nxy$+k!^7ol?#xBn&G|Bzk*JRG1>*l6K2E z4=_JIqkzT6qWq{sZ6mu(zcS_O6f(pw$?@?~fq1;$?Aep%=|a&Nhg_@Kk?)k=q8sv7 z*gx1xSr*77ZO2AJ8=L71T;I=kB%4|@cNZB2g3cn_bfdB; zth?w+8)|7WEAvy9>OS>THRATMT1R4bLE(OKRj^eBSTe~L^-b>?BIwF(IZKiT)X{=s z?t9zUg1Q2)W(nFVwk;T+o)WZG&ZSWn`n7A~nap1OJe_SzC>OqVbdX>BupIpkFf-sK z9VUkJiQmlP-0a}b6jgz~Q*?9~tx%Qd(~%#qqc2Wx%d8#e+FAO^cWGp=@O5;+>efEt zqqOUn>Cs^=4Yv&1s2Gex&G#ohOEm|rw(Rbmo@XO;QieyR_D8oi24&W$jX@SPpWyBL zW-sqYN5}U)Hj|laEUk?Z66jEnlU~T!qdPei2Hlv|U0*QQd~`cE&Gz9SFsvjwZ^zA? z?8$jkUwT`i<&h8m@%HdjEXGL}5>cxaeFHu^E>%msB)aP6$@M+LaEZCZ_Hr0}du6p& ziu?~BUj>DBn`_l>7LS|nS-x1U_||!|FiFmcWb|V4h!S*xx~vmq%1*tP%{Rc?PIQ!y zH`7au0ruBQiO*x1u|_X$1M^zUH;{@%d(O)p>`uRY=bHH1X+9xJ(6Eea8wy`&*m?j? z5E79}rdrI>h>uK2FuH17MHeNDm$a`XXw=|3tNj%$pc{pjT}l3hY*&pQr3#xu2R?jP z&@*6Nt-;vORQ0D5!O343nU=(^N>H#F>2dVPnKe0UvM%c{kD3vx)ki?+Ed>9yV^n>&-!EphnrD^X z?(EY7m$unBI(=P-;~yOvcVa5rEEIyuJgz@7VVxONcZMW5$bPo|r$dmsN=WG7#|l}U>x-wxJe2M5QmkXJYWW)^*&&%M8uL- z7QC$vQ+YMFe_}@Nv=t(rbS6|T^kqv>OoaDo0{4bss(^!_4Gds1q{QUwB~ob(i;~- zV)XLv=x?9l>Z)CT_{J&m-MawbVax}X2Ef=raWOdBZh9Lw7IDO-F?*P>yaj1AK?Axz zvg5F?SRJ_@B_XkPW_!8qdlIzr($&p${YI}RC6sU+74Ady_s8(yZwbZrzy8^2W-aO4!n)+ft^$RQILOBgGp`QQkx@bek=QJ-ntLVpn- zh(e*BTXWNa8`F~z&)0KVoP~^|oV;woGHVs!5|oUfU&8s9f4j!8zppa+v2^>I^3v;gb|3j=|ayQyk-10e{yX< z89@kmwKYFcr{qAR9~)wqYspZ`1|{3>S%^SzN#-VbN1V+O9bVr4KsaOA24pK}(4 zz&5xPl=hx7mUeHB)|6#+$}3vpk2%;M_wFvSj_xLD3>NZUCv2t8E#($8eP=Uf*G5Hh zOHV{c$zOFj`~p>GcL;K%BT<6!)Lv!BHM$ynYuEzF@hBc|&2>}|I;$O9tt}@;Fb+-N z^s?>#oNUGv(%uz@cK)2^+9Ck&veAXHubb61i6F`0=(g9;Q6gQE+#n-#9dPK)5Vo%& zR`n(`Uest%D6FQOH}w!+ttL@EA1kAeHE|a9!Yx0r_SWeUlibe}ar&9bMiYquX_}FH zqq-!iA#9^5nj{eUQo-(dQywMY*uC-O!A8^^VIL>338rfxOHcO$id4^_Zu>eE$ zKsT~_sgaMhDQd#X=9J2#3>-h35^j=BdcYuAEG3u6D`WHE-N{DaGTd&yX5bY+$)`f+ zQlj0{?S)_Ak*iWYrL;eXDVzeef})KLcZtIgLzKd% zafWujt6ob}p4o!|#4g81`k^CZ-=1}h97PK#uXn+WBHq70nUOVEKSruzv9`936z7z% zzcM86d5?v=FJ477)pe`V+)K;j-o@C@IiO+2zp%A46Ri>Afxg3^$d0Yt#W)~>pQ8~l z1)p7FHRvo|dl#*izQQSLN*UVC#~_ zormu(vv9dSVjJ2McNnAt#fbdDW*?)~V2O2QQZ9Jc!d(|Dqy{p~D)eyCsCjqL#%N31_hH<_LS(;zim4oP-!yvJ73AC(2 zV9KH-mK4m$8w4VC>aDFg|MwrXvel8Gsn7gAOXMNmj)HtU@1N8FnPLxMw|GAMRoKyf zZ5$dYZkgmH&13w)AlsvN<}%=F1UZYTn>Z-Gm#s|4u_y{hq+L1nX)Z;l{O9GLzedRu zo1B&foK=X=$Ew8Ml=)0&btnPmOx}8HQ`K@St5 zXdbVpD1lZ6zt@YkAZgc!SFl{)&D2|qY2I25e@&hCAQ1_}AY1taY0jsYc zsd+BvbUrErA85Gy?CuiA;m~}sOK}^CF##DExu{;`)yFWyb~1*&Lp)CGYUHyqxC|{w zW}*x~b(us3^O}i$q^9S1ywh2n&BP;Xb>_O;`}{Ke*HqedP1dUnyH!TCB$N z^gorF4=_^HY>WtaOqc$EEI!w(zOszVQjebikGuf{n_zlQi8{~7_T9Uo72~Bg1EF4;WP1lO%^w81JmYGHcyR|60|MUaXYmDcEsmXfpkFyN z6}H|G25DT|nFcwg62ceCJyckUzhdNq(|)iM`|)E4lGpoil*0DW>mnjWZY$CmgX*{1 zSOvKt=Uz@tg$a>ELkQ@4>OIS(k=T@GY+)&m(QCTVybYlr5yCgV>~Re^%s z5!<7xy|A~SgQhye!&@kjx6Zgt9ojKJCI5SY9ryxp)P02EY<*a@+MF z2`c$X%_H3fs=cu$7MDm`O9CWF0?GQU8!=bjO$!Ub3Ea#(9@ygOP|H(1dJ=l0o3)t_ zzxDciOl2p%BwwB@RR59T;&*FgS@-oOv`Nuvd0|F}lX%~igzLE<;6%rpxel~Y#(?zJ zJEzi3(efctQH&WHoh>cjm&9zZ*?Hwqjuj~f`zc-X*}di?N#vsdsU+>2*jToc{t_=7 zpHfwU`&cmV{bFtPT8e9@EJ0Kjua`ra_~FAV(9lXV94Y|Cq(MsLIf@diaV{ioNq@C; zakMfTvj)#e9%DB==MQ(C*o2x|K$d2SLvcWC& zGAg2)`>p$^dXQPxX%5Nq6}xG)*H-gH+D-}c{N>6UK|gVQlos-2u3cZR+MfH0!J)^B zB%;zhIpPFU8c)Jz0`4t9{gbKPdVMZxQxpzyZtmk8u`Fs+Q(wkEHZX&>9650YUnlx} z4MiOyqcx?O(WG@g`2MQ5EVd5Tsx2}M<~t=R?aV#z;tXh@c&t#lTVIxXLzbb!qeoBa zm-_E0?bwgCzUW$m9lUODzeiD5N(xbjZrS7HZmZp{+ldcr7<|c~iW#{Gg1GsN$lv42 zH%mdA=ov`*2j1*^hO_8X^>U6{Kr=7S#^LNR?1g~X^ZL^h9Cy*#rF}T&SMXCRrh{QR zzS+7mG0m0n@MSXD+l_@-PLUu+zf|rvqbc8t_`>Vg^*$BYOtpsN>T0_y7(2^P&zSu< zG@itfqWOjC_3PIQxr7_;&EfhVMchp$Ja*Tg_!p{%6o!R@2!%X0Tx_8>VdU(5-3u3* za8BycOP%vu-?Vdel(LHNRuf`leD_QGT9bV_70+a5cCN~Onq3v)=Vw!NqFPbVl1A_<>^mB8;iNRs0%Lb$%ioD=B(6oQQ4!eVNYNQH`#~C#-&{pOY)%9Ptpe!q5v+;dQLV z)5?77I~~WF!;V^=R=z@c#a-KW#H*af%8dl3U}sSr8KJ^Ye>_$d90%<`S{go@sg62iTZV~ z+V#EA!0}`l@s_G7$lq=mC6qrzde5ECHXlFeEkVQ76T-og;N{Omms`CK!ReW-wcMaa zN@rBy8mI-KlJfrZ3=9Yh0}n*>lM0V6E-rptZ*>1CWy=Z&>0}=faSwQ~?BSzHd zMVmj-F5`{gF&u_=t0WcfT80~#P|>r{mwd5H)A~Zgz102Uci-zF;nJ~351-{@kr_X2 z8W-E{Y-x{?)pfV=ObL+&dmg=OTQ&w>BN#`#q6bMUDS9@f;}RBk)Vj|i@y1@EjZqL_ z@i7^2cop(0H*@}hZb9u;oqXaT{~0!=B(3P!c&}4L!khZYl0n;B(z7pL9;RczALmt} zk$4ijG{6G3Q;*pgjt&6@jx}p@&F`RR%6_|C&VeXo}wSA9WUX1ng1 zpN={Qcw`@d`s=aQ`;(WEE^N8JKPIO`+aR?jbg`*_~kNiyaof>jN=vYdSSejhLJdS-E-XdF2~?!?5?n@8(fQ_m*TNUjZ@as_(a_*3mR~8yoG4D5w)Ezt@gXP4+cs zT+E|0KYhGlv$k!dvkIQGsEj%+0Uh9HG73B`gx`pRpMFC0+sZ#8LD;>9XTtkZ@Wgd# zM;9P@!utEAe{^;ps}fIvAyQ6u^99k2h$Z`H^goFk5bWKk>n=R=abPIA{*Gd zp}y3i=}?QY=M>~V#QK`|no|j?%8t{-o1nf6h1XRA9W2Io(a}9wuD1Q^>fhnZ%f0d@ zFe)l)EVAxIBMjtY_Emd2Cr|CQ$_;`?9F>=sSLXzBhi-(a0+?k7Jm6D(-2a1FlGvp6 z_3;yH?zMY8;}M{QKL>$yJzx=KwLKv)=rFnBv5uX^;cwyZB3W2s_BzLG)T$Si zpU0TW-b}@+vq8^Do*X}#?oiooy68RW6R0$_b2Ak(1lVokHLoy&aX-j2%^EZnXpA}K zpX+s3GV=vZZjj_pzkok!3|i>T+&X)j+*sndmO}Y>1baFXlbtMH)>~3*0x76mx?6*7 z&GmPI)NWp(>ub8eW*U;wbd!9FcE(5)gN0}&t3I$t;nx%Q=8Yew5HZN?nG_!%2KunU zph0}*vM{q+EMetZR9mA1f)t7NCGj~LWosOl_aPZ$}*Caj%g^Yh>F^c97aZ+=8hJ7eQMF*y)MX`SF6{2jl5dE-v*Btf;iyNlq1j~ zHhyPdzoxE_KEAu>cRfJ&Q!|i#e$Zi``C_d2LfiG~FA<_IJ_Ki5%8Lu=^QNucC#Ey5 z{vzFjz9p0HwVfPO{E9X>Yo<*#;wNHS;T5fD9P7aQBd)WoOtRNl*Wu#A5dxtgrc zb$8E%Ze7@Z<3hZF_lHBM6VO||J4c~~+h>NSYU1HZs(tF{AnzuzoB+Dh*N4aac;rPF zj6mb%ZA?rMNGU9N18KO6HB+O!;!=3_qJ8i@ zD|Y!Om6MZ+>ddapT5Xj3xOXyo;kRx7>PVY~+M)dVAdfB<(Jl11p<5Mo77>)4Kg?(O z?}DM8<bP#h@bLaCzRG!qr%2^xYvU%Qpqs(>Uqw$phUS2vp_Mb)%v3E5*S; z0thET^$20}?J0YO&n3V@Z)7w8P|QKwst_(A^{2B-`!;^^IcapMdUdStzhHSy?l%}<{Nk~@4TYGz!$toaM<(^lK;9~wvW$@GX z1g$}tm4EdbUUyiW&BRe2v@CWb{sT#Wp0yw3BE{H_qj;S>afr^3a}&L9%1XE7?WQ(; z<><>=?+9Up+V+=^;(6EzX*OR#feKVFZh>V2u6c5|u$XW()>gTJy&E(QBF&=~i7U%E z=|GGem-(ew`-9dg^_&COFwX!I;AR zY+GLSIMHTzQ`oB^Q|Rd-;uc3Zm+&EQm|3IbHkmFG_WloJZygt9+V&3*Qc4IIgp`N@ zQqm=$AfZS|_ee>|P=ZJd11Pc5Dj=aqH%NC$DM)t?NHfwi#K17WbKG@z@B4Y4_w)X- z``I;yxvuNH&ht3Fbx5~=aKHZZ7E{M`Cvc?&@yxBSub zrtNy2JkLb&i-#IxmcLJ^Uu$QWx#iY^x!OMdrYiE~12lWM!EJJj%R!9qzen@muxyU^ zm>Qy28wraIwYR6Vu=A>@@N;oqvemb%<`X=NQzMpSV0!KtVp-JJH~75kv$sH!UCHo! zDke4ZnQ<{BdDwLP0BBU^n2U>R7voN>E2@7my-}2*VU6QNHokI?`|EJYQ*Ig)gSGd z10Zp%0ZtAm{{CER)iQ_iD=Vb_DhtcYE%V#=>WWH6(s_Yc%woC6)OMsUK95`7e#Yji zT;9KTr09^n{g4V+i%2&m#Nm`PB%>kef&cpXWu5!RF(pP!#T4;gMzI%Tb4rJiH@hny z78EF7=qhQ_g0d$*g!6SnwO5FH9u7LL!wLihl2%J}jT}|c1xH0enKy9y!;u||jZ>|u zWMw(9C@Q)*r2?wnAqL8c>zya*b5Ct){CU?35<6wr6T}02vrld(d>jfMG27#KDxsW4 zBltXLlRC@EF!pA_px*fRHByjzQ|7hGtz;tE!%z8rngU2fQ~ z7Mg=nbrO36vL|@t2Jd~w+uOq5C4!^TmqdEb^_0*tv$J?E=6Jzxmk&adq+aJ0O2p;+ zwmEGz&vw}vo7uPDWSC?;DxNwt8tTU!^ND8LdC=$j#U~3Z=RdoR3ytx6<``Ev{4uB@ zy&e+Z^}auCYpq87R0lyv6lKooGUZbLn2{{A_x&GgiDHr)IodZ!IhD^Y|3?H2$15Gy z*AGrcaB@Y@)%THpkMU|=?v5vkHHF_zGn|6@D>+w=X3=;m2DqfyWhwk%-ZUpBV;p2i zWE4%*l1{CSXYsruh^^d?VR6(%N!)oc#x(CTJ1g3PAnFQwG&1|IE9|#l&-yUm?bUYt zLv|5!K#P5H8ZIMH%e}POkM3qfb)jdjCpp1rwfN7n-CnVm%}P&ye0;Qdg}=wU_4^|B zX;B+H;y4iW0AxJ{hP5LuKM!ViUTlq^ib#h=e^>Z_zOY~CQqsxFc92$9g;KFOIqvvJ zOrrw`;@4mT{C;)D%--vY0R(SoL$4x|7MpUc!8CR0KD#qE(s~=JYg{>m6nar1-+IMI zk11uqfi$T+6k{>sD=10XtXQ;IWySBx#k+Q6pE+jWM`{j0 z{2+%z3lrG3^+}JWTT~*BQ;Y>h6?Xt=&<8p+$NzM^Yl;5lmoyrYk3C_h{kge{>qI&F zrVov(ZYOY{sTtrrVPLKbGY5K|YiUzYc>)x2w!7hmByPM^w$)K3pDOZ+3Y;P+?pC%j z@{$Bcc3nX}P?%<3PAw8MS-KNiaw;a6htI zD(;?7(0R4nBa>y+ljm9bqzaqMQ{DU@XZqLZ;J>YR3C><&fv3gZ4#NkW+;-V1AFcgz z-WiYhjdY#Mdp8b}QLtY1HsZJ|ulCrfC2$(>6Hq)=hCBtmTe~TT#YLh5vOJnGKDn|C z83|tr(-$%yDtS+B+;t{I^-KXpn)0ud%wVJ54{Z0LqeGbKnSrf)DVxI>yT4of--wER zkRv^@`n-O5baWFaj~`*?f`vnd$g}V_j>PGHQpYMn1#BER$M9k4PFG6scENqYVu+?` z#PAWXcrjsA^`Cuh)DEr<2xD}^4 z(v2QZifOjs8Wld#Fu)a% z@aRr>fPJ1*!gaa-5!d6Ms&s@12C)IFnNSXkMYA=#(hN?T?Q-RZ4`*&{3btDOIjNY} z@UKb5N$wxQ?f+*4M){}oV+X<^s*NlNst_vAh&Oe#06`HJLtbmJDwDVBH7R^oTIIb= z=n%5NIL(7lPh*QTOq9DgTw$e4)AKYd zi0jE%_2yh*HveDZdI$g;dZ)2O49IC{PVfDE*UzJRMis9nZVSR}Zg**7W!0bwE%X66 zjS%mc2G+m^s0mmQhH^&OBE679;+}~CFWic&WqURa6DjNu|4YtG*Y{iERi}99yUx+P zgick8?=@_H)eUs$4P{|w5!@~xuNJnpdF zI{ovS0-pg(QuGjg5(vr+K+Ttwt3~~Ps$~Cr1xj($i!@3Iyfn8~vJ&uzAQ;W(hS^CCIE$5&?z|4) zSMJkK+#D7&94UyE9M1r4{!w7V;?Co)il9DB?QJXUF%0(cdJ^eZLLqZbVTY2USYRIl zh=t3WkBMIU`0`Wy^_tSQddg(Sy!Ts3CmB+^ucRe^n<0=^-Xg@Bw9f2*l>%COK2{wB z6KYjX(o(`j-{Dt+K?95;&N#6&#Oa$N`<4W{?PP{MszU;aV4-J-)LV3bP@{=hoqPs1 z5Hup*nt4zz>jt+S#UylViN9;e!DOI}&C%9#j>ePdDxsB0b2L2v*J!oY19Fqe_PsFP zpPijc7QY3#XHvf|EAO4$w%Y7%*_-z6ukyW_Aeu|_wlVM8tEl&cAWsuQkf*z)E-5_s zsnCJ0?;TWs1JU@KMz}mc?SBtq;|C!WU=W)vAu6-Cj-?0TK3Hiwl40_~^58aC#|)p5 zzB;|L(v7Y@Pebtuz6&N7_hVNJtr1$iq*Sx>1pzJC!M*Vke@w&->O$#$hbe#*ITS5^BzL%JNc%M(9V^Nf;r0}8D z`Hi_5A&=^x%HoOE*>wy(n$NWd-#FdodN$_9WUPoTpja_ZkfpYD{R-6cUzWNPU1pnz z%It?JFl!@=skHLBtdl||QHdV3+b(7RYheW1k}9s>F9Hi#QYrM<1LJ3sf5SL;f0^_k^JdF0J%{A4ND#aL zM?I4-Vs%+V`9R({B~a?`FF2#PuW%L)TJRcf72a=Dp;k0DTI?x z6Irn59@yOhigs76AThxV4$gF4ZzevN?WkI@N(ots+2={Vhf~D+vyxwyPM&pv7v3CO!={iivUMI_00AQzbbP772q)WpZ>;481bqSZ3Dufcn8q224> zA4V4Ea`2iylbJH+OBm2TTVJ4dC(r|=r2D!w@(%EY1_TepnePmnCP%$5dGYO>556Tb z;u!$tt8f*@&L}?d6nB(cM>%Ny=32JdpUn||uA*X_z@eb-rQelFN$QC}&WY1~@S0sG z^#6d1kT$#`nR${X4hS5U_XT{hyiL?q(kQ=Du@ZgW1mhH!WLrxP37Z;*o?GtPgQFdM z9d@BdGUn*{R!N!BTJoMB)8PHT<9ya5hu!f62=%xW6#?6iDmw5!baj}lp$4=G0jEjN z%ChYHM6}}dv-s}*!qU<&ST90tuvO9~k{DuTW%YQiY}KI3R&XsdGu3x$aYtF5};uB{$C+ z{>?)}aG@7FDu|Oah2#yCD0rrTDnjH${q5%}VgD zoICt9ob&tfG(dccl$Am1kr}kc1QZ(;bG&u1r!>T6M2Qo{-z^74Kd`$B&8XpYK-CQBgvr^+v;#`#kJ17ugSP40DeFmWF5jb-{dRxE6l zNZ|N1WVabFiP~R~sI>0Vn|iTZ5b=CDN#-m;_$zzh?4!vJG#@We;iI=~XCWPj254=a zg%-gM7FG#1?@n%_T_y-{+Jrbx*H{3Tj{h_7{f+sh{|quqmw#6`l=j_dHS&I`Zf3Hc zT?Ubjl-+9M{oP^mtQ$8t-((<{hs)AsudEQy;WRwe4+jI%tKR-oaSg3aroKV<#-F zzaRXcEBz|Hilu>jf2m)G{u|j9S3~ zcMxn^E3~zM|M)yfn2H!6N(x8M*8?Vc6GWMT+0K1THW{&<@p%;IE4P8znhPnnwg938 zhw++=Hp$+y6cj+47fi$49_;s@U;W~j65dZiM~IkTvBSbqdQTeo#R>PGqgfA+wxbXI~^GQ-ua&@UqDiB)wqX6sJyqXp6 zK2`c;ed06x`Nq(hSu`;(-a;wU9dARB!j71B&Bow#Xhmo1U`AUTPqb#>u3=fQ<4? zxpRF$)89e9u*WL>*=bYOYS{`{AsMQxt0TO98nz}6fQF0J>gV&HeMFo=G%f6ilZz6S zp1ZLR);oYiW4i;7k{JDLu5kMZjR*4F{wbf|Rnnh#y7k;@HBp9H{0`Dh?h!TujC@Cl zd6(@DAV^+QLnA{Qz`{=6Sgt-yc6BIm6e;t}KEiRJ7muwG{Rc&k>(fgD@EHnF2)%r4 zm*`OAkjqD}&R=K0d@<4Xwcy%DeFn_nD!jT$wm-|ak-VpFrLX{odI?3iYWoh3A3+HBevO8)t?Q?cE zS{o^{jjM!Kk5v3u3&$-G#37@lk5{7^(m6>);}>v3GUfR(`S$#ir_UOMrvtTjC&F!4 zF5?dv1$-3|tH|z5c8UkCaRHkvP`P3!j&r5sA)a`CI5|YG#nfBFyt(%zK*ULxtA=eg zU!bZ0Gv`0}buVS?Acnh{TB4=LTBMR&>|p~P-2-UyO9plA+ix1^0%d2zqQnjab=HxW~rP;{h5)HQrGFVowdXtPp9!ZSS?j0so=r=FRP781He&XNF(*e zm(Z7k9=}V|rLikOJ~2Nb1ZxZ>DUTZ1ilKSQG2wZSS>szk*VCEP*c9xpt(O+Nk@tA8 z&mhMo_#rh1rhX31*F}*#uL@EbkM|LGm!5%lLlC^0WsV;rYI58K?RGAFPZH%>ldaqw zix?>weA%-J#!KPk|Si2fxiK7Q8`KcIA^er zPsei|^>uCN-Ghp!OqX0yo!8&zafh#VD-D2ff<>Ez(|b_rf=Ji%!2A?BtNBclNJeU+ zJ6nv7g_SQY8&i2!hfz|KMGJs^IOojj=Yw%hl3!0vWrjA;Wi$Y6Wq2brMz*y@ZMT|& zL)(zJ=_?)QR`b#3Wm$fHf|)VxAsIRuq2B6uf@56a>uD`t0n1kw^(#1Yugi8lB(5T~ko%`b~iBosw z>L+Bhpb66h2wiM$y>U~)M_jdhYiIqCc<(Fk2$%Z$aEmm?i6x^6Moig|nS{1a7xm}4 z?=FtYeUWlsF!wK-+%d7Pn>UDIpb0Y zl#4Mlz3t(NTWe399s}AV?b9be=KtKHqTXw35!YlMAubL_E;QEs%ESihDxfViS@t3+ zrJ^HGA}x$by%9lV?{_4=k5Gtt|T?DIO&sb0o;3T$}a6NS&SMFukiQc3x8 z10i5U&M6gq_l=&ep}_$L9l9>RK~?RQ{#GwjE2e`SY&2Hs+RD)!nmL0# z8|Gq+e=<%F7?om@Hh~cA}td(MU!R6 zLv3CkQMR$tCHMd!Fvg2RJUK|B%j1(Ox#0}J06B`rwAKhnxa+yX~u$Q)>ewDQY4HoEj>08bo%lc|S#PIpJX z!+LR>3BPKXOLYqD2h<|xs|MD#s*)u1DF{AaU~5dvO3r=U!xBQeVj+CHMizE;M*VP)6zV0l6_dUIytPH zOsA?FjK!?YjV528%@^+V8#PWa`Sg5!0(h5C`yOmO1tRMfm&j3O*+6%o2;G`H+9Zfy zRMgeaCOLt2fL{WC`}p>pHz22kevI9m=oQt62EKars>x;4GO{gXuBB=fbVzr}XjuI} zc3|2XHyW0s?Dk{}fq^zuwJ$v*Bjs6^`r@V0gGgDW-g#`Q&89Dr!ja0H3fociR@gt0 z)vbO2H*7ONp3i8Qv8nz;m)f?PwuG_5f7Wfvm9C!4eb@S23gjlhk7d2~3l6cC1dhE47%WX1#D-LurjVlPROQOL@2I#3Rv})3v zAR#Y>3&hJvG0lc6lYYXaRW**6$1c-kf!lL0XESinfj?6A%Zhhf4LxGN->2|RYnx|3 z&~U!rTg9|z_U`Oy1F-;bAu&4g1GIpcaQ_B1n7ac1HN->rqIKrYG(E+Go4v)Sdm!qo z#Q+yssIGc*VwK!!sdJJ{VXrIt-r5*Sg@&c1F?ZJB&!jlTen-CCIV$RW`tGD~sEBrk zQHI10Us$%lH>q&-1fJx>k=f( zk39wf9fMM=uct$&taik$piqQV)F@6!BQg?q6q@G9mv>;(0HnZHHp>_AP4j{Tm)=-K zI1u1M?r3SHK23KuH|N;dr8x!B(z35@c>f$AM+ZK>;2u26)8p%?1|f%6uU(6=GXYj_ zuA4g?0&;Sn0Bpf*s}Fv=wXGT-VmB!!<~a2VFkY#E@mLuvw)|R=3!SWB-R%Vi$2!m5 zM?f@j@Y&pab2R7c7}4XdkphEqd(pMwykPM9la2^q0ye1PpPP%oq1NG2??|4yYJ#-bVcc3x&FD)DZGEp8>;5?IGIu!7E7@6*YK6mOq0aHM zDNZqWp}?5Zrc6ItMQ?1h5F?ilmtQkhoHhP~T+^}@gkT7m%LczIRe*pvrl z=OXcHW+W}vEY8K)Lc3nDZy$2&eLx~8z9dTyHjdc0BA*s{BoVmV36Hf?5J2v?RPZqu zJL0_1>=Gmp=hbTr^Eo$?Pp_eXU#uCNRuqtfpYz*{f)-WtHL%H*@mlthl9IlHr~1d+ zlf4kX24XVv(LyS4Sdh#4?yJSOi&~(!4JsY$)28F+d(Qa4H}TWq#*Q`pF1RLt;;QAD zqpg<6^90vf(_xhaAp#&|`6K)i&{9z+Ap1>g=Yfr+3h2R|`vaHfXApRDN(R25Uj5_J zgV)xf{h#i>%pPs1vuxZvA>W?fN0OVJ*2L4T^)<+_c^=%QViyxhUjnvS7o3{7WphB_ z))CI%(_?dl8aN!Jz0fNWXFo)of=uCxq(MYuB?;!y2qyHo!1QNcN}y-D?0c}SOu!VJ zWr139f94rOVZ&Nyl$^JEk_7l)54n*-<18&}A_zblUP(JOQpcHk6{FzAGd6!W8#g2`kk1ZoK;5F-PF8OlfR`G+dT98JQa{p~R#E(h%NlnEE2|KM>l-vz< zikb%3;hR?0;3}~Dn>_80$-}QrxG37&822Qr=>z*=w558}jbz`YTN*^4fDH~fj4j8u z9)a`+udlND`6hon>#e1Iw%kqg{!L8r9(F8F0O~)N);Eb(ChlruxX|H$_`-A}&3^?6 zy)w9W2W37kgsUL6;i@uXDfhc6SL60mH`o5~I`OQJH)P_}w=Xk7NXc2B&?Yq`u}!p7 zdB0ZI=@h4?_=(9NVVYX1mbmK4j0W+520Eo=GB?pwU~V5PhpWb{1_O!T;w}3jm1A^^ z2gL7f$43Cv_vhKr+&-QqZj<}^LKSfvi0l|;57EN;hPCt{IOKV{kXf;7M$6Tt6^lE) z?&(p z;1k?-{ZcZl(jFVFc}0!>_upnc-fVzZtu7f0K5f?lc21IT7{IO|exPjl@rANS8HILR zSX@j~x3`ZUY2dZ2l0hz4W23EP$ zeU}dNpE+418@*ur12*t;w+f}7uK;!5(G4k&jWAZ}=d(xbzO6tk8Tz!SQ4ozU>8$p( z_H4fjGF_Um80J23Zcq6PQiF|`xTN&i7Pz?CM5oXr@7)3q=Q+~lG(uLuk?$c!{PzBr zP{`}FJg1sfGJ;kq(~cmYeevTPehzFE2Xh@~4xEoWs*X!kO)!?_z5kre^j`-m?$~|G z%co}T0i~jhv^6?GUZF^swG#}tNS;Q+0p2KN04C;b=whD(tAq>d#4#*I0H^;ecnIwl z$eDZ*9L{PIX`igorAcK(HdVDEAExd3yvt6gwmn#q+S;bIVBT#kAWUX<3ST;3ignqZi=zhrdDrq<8s={~Vsn-a>`@ceoC0zm7`g*25lIMh@4RsgzF9Gc6 z|LjdPXVCmx4LM>6XelSnoxyfeeLzm!;s={FD1FXH&=SP*8Ieq6e_d^Dy+?4CUZ0o3 zuKaN82NJ#0NvH{o0npTlX7_^hf=i)syhIQ}=f+;Qf41)0(()r^cVIDZamIy<&xZ;$ zei?yHZY@o2&IX|h-C2>`HO+nI+ag1nebQFi{aZFx#G4EX{D1J-UL$jW3TjVx}ZWuT@@re+>kW%Pntyu$UYllVF&)WIx~TWgB>2=C^|k|ZuKKt-#y%#RfxQR zr$udpKPIOP@*_^|@BQp&RR})Yo-KGI_48+14OxsxkK_^W)f+eTC;t6{e>y^xP!)w; zB1-~kBKBZEHS91njT8MyIkzF#DKgf-Vhjq*hDQT7SMh_K6Kf}V6m`P{HZf?hDM;)F zCw(FVfl{AE@IYHH(Els-M1=L%8qA#X>nL1jZ(#NIn@?c(RtQjjL=IFp~Z zl7E?Ib@k28LdHsMXfhvu(6iqAr|Qs6NZ7#Z#x@8g*QYvZCl!6huY~s#Kei>-+o)&B zPbqf~4XG&K+uaj0I&Q!6z^tEnMrY=%lZ6p=&d;TBp3 zd1z4%ti|qt02ibuXaT7gdS!-scS*oGeXs|Z`QLZl`0(PC>$7Luy8?|rKo*7bw>AbM z2skx^r)xckAxdZ2pBuCng?$4+dn!TB2^$y~aMp?AH~8$#0V=kIi6wx7nNUB55Mqd8 z1)y}#S-KNMTcVm@c8cs_m|v@nfKZ*9gxuGv0u5Y`kMnfKfi-15^G7v7rMNOvka$GX z7v$f?U(Z-My)6K`5oc)+QLMGUwNbH2|2IvwR5c4}CD%CWNC6i&mGoeRU> zwbrU%!8E?QJ}M&8?l)yu90t!bn}o1TI70uN?&27O=rV+REXzEQ5Sjlb}0= zKnTWW@E@RdB8xz|qlT$HHwkfbAW1;@r$G=Eo6dD&DPdt@&Dv_<nv=Ek21T7=TvNKmdUgnmRWHKva01-7H++ltdZ2hO8P_M(7 zY~8$A6o8U9X?*I<=gCIJ=Kg(;gWn)ERxlwzTqdq(?P)ACUB)Jp@BN2gX?xiKF zydN`W5-pv&2(3X%8=W#^@55W2n(j=~yhnW)>i+gVVDwS)l3(f2y@OonAk65}s%Mh* zVf^T`W(S&&cww74u%}U_du@Q&K!T7M=!zi_u#^RzW_-}7QE^(qY2c^=?&yuENbin_ z4-uBuZXrnK zdJy0f`l9!vO#E^C-*~Qy$ba+nzWpiomsE??$=;mG0NCz~)xFO`WnHNP)Gz>r?ysF> z-3V*QC*s?TX$I?1AAT}WriUHKih*^4Ta#EsbHU<=pYXMED%QABAgC6KR;vp3o^;N{ z>g}&QDW!^uBdvz5%M!vt{+p`*^->R(Dtip&88dkAueXHx5t*9cJ%_$VL;MK-S->n9 z6kA+7Nf60t_2ZB5V-xflGiUM`e3HSPR_lQZGIpxw&OI_JcQCyEVbZallp)E(Y)lN; zS$MRQ)e^+c`0x#?)ka4b*Shsw+y5pB;8gk(K>cFk2P->T1E2nZZ=W zXTFwygOXRTUgNHEXD8s0Iuj17a%*=>glKgu^x@pQ`YFe9P$rDERdFJIS=l)rDua4v zi1A-J)?Y2|6qy7u5G@}Aj5Eh#XU+2Q}8AOS;dK{;q~3 zUAgWz^Wl`39`VX3h~w3i#1fsA#8i=Ld)A-E5Q9&Zjhz#|?|jreVV^~_TU(V<+cf2D z$QdOxpyldQH=TDqcA?W(@;H`kK8b|TXMZ~66)(E-HQPjClDGPgpo6qjFYAReOS@IVwe6bFv=7EvWfx^C`B2QXs!hH z{+kTd?P(f02;|3)I_q4x$%qT-gmq1&c1|Oqci}s^bfMRWvcCB`}q44t|BPFqsdS~DDOcASBW%dGT z8Pw}F-1PTH?u<}AuMPaedzS4K)b!WDP}f&)O!BH^w^G|wLAncb$utl`haxP>c4a5{SkE&DTA4-?TF0lVkr1C{zaRJEsjy0DRv(TS=#2Q6u38`t#w}Sk#?l? z!L3+ES{^I2OK+H#dx@&cJ!2tol&(p|2937K#XCa4#OMY%GRW3oZ{sWoy`Zsw3sQWA zd!(4b54yAIOMI(1JxKB&(3SCDx(Nc{<5m2$iZ_9Re7~jMx7h4>;s*VlB`NXQu+Jly zVadk6(7^~;igie1y@fg4f^CKijhm3Xc(w>_ZSMN+E|MNwB2irzN8ovsFBceBwx_m* z&g~vL?^Q4V3JG)f;t6A!6NyU{u?r*kbisNddD!|WfoL7$CFroCNzh{WivdQppvQ#kSiP-$6K7i&8{$x42m(s0}Ot zl=EKPNmiCoj?EXbP5D85`UQ@|cwfa*ZXP|jwPfsMxlwmW2q{zwlV!tKE!h+DE(nNy zGD59YABs4?vfNC5LR?gdRz_`1*USMlwh8?5OR%1%ypBG+SX;H}2T>MQPpr)`Yoc3+ zJ_IQSs8(`N5|+ij{j!#eC%vymLyz#gP9`t5Ga!C>co#lG_|$wy7$IK==qz4sHsa|B zRlFvPAbjBdjh)1Q2Fvw-Iu^GJxhbcf5vzA%N;eg*z1W!ZG`BwRF*q$CN&1RIvin*vk`}nCsW(}VFj4I^Qy!~XWK`_RO!J4)(`I0D;121XZGdi zW&4%HJ**!&5%-v^KY+4VvSjgX?7!-dJim-K*<_Ol_3)NoA#RqO%J8i^9Q+k|7V(&X zEb|)GF+x5+o|6ZzFIsTiOIJ8j*h{+}IP*dqPC-Bt;%0)8H#$4|SM1`x&PWv*&7}~) zV_JZSy)h7&G2@L_sM|jYK4`4n{8CUkrE@%3U_LvnZ`Qh~ZxSApr$?|@5VBfKM4jqR zq{5_8-xW$W`omZuX1?2`CN3CJgNmO{gn+SNHeZp0V7np)j~QQPrN~Q6ZtEEg9~D}H zsJB4hdJ0kjLq>pPCGx^#nGIf(qsXVX01{O=AJ&GAS!Ci7AV9^98&#|taz`x3zH&ep za{HGyq!t`*b1gJ8y6#DT!}#(h#p{0i+%HY7`|`eYGi2x(ohl7nofo;H>D2iC}l=${< zSo^$MzB|V~PR_JiK$u^%)vceLro6x5e{un|n9lQ<(YZ?KbqRYV{k?xWyM?dm3;V{R z)A+oH@GeCtw*KNCyCvOSo(~A)hgym&ox5U5P8YwPMrt1R5M^}IqQ4==+L#jbz@8`R5x+`qa>D9Ba$YfnL(H)TBLViTPx zCL6AxJhDFuCie!5J{_?D)D7?(k%G*N*6cqK!!P(OP*rdbE~lF_GMpMaeVM&SWJobJ zUc^FI?8g-e)sMXX;1is~E|F#rMY+{ps`kNUD%Q zwhK8RA{P5{KC=i*67cj^i=rIchB+!_Nq{{-6T5AW=0M{hw};1p$DCH){v5bRpVU9R z<8(Cv9zhX@v0J$(;1)&2#_Cxw>BkmlWsckhCdV}UqwY#1sr|i3kieSsY)@kJIU&h+ z7N!0{N_P#*nrrhNg(1jPjx+zMf~x@n>zvuGhv31hdA=P`8OF(76 zgc@`0QG|A8vwy>D6Xk#oA*-_@5V)HE<(w^Io&k`M(=S~>$o;j#nxv30vxITZ9}zA_mIHr#`lmV$);^o>V*Kk zq!*(UZIY}pjU0Kvpluf^#Wa_ zM{kbOfHb-$pqvQ=rWE5^lRx1FfiNme(yR!meMK4@V5BwxRXD>*6UZs$TijDmO8EzhAb$3Js5aK0cw zr5ckk9`Qm60`Y^~zjs$>2>f2^Qf8MHmr5Md<+sq8%SN8;Q+DjIGi%vShV=i3RVF6CD8L*@V|nU4FDkN^nMf!k zmYG!<1!d>4ED2%tnZ|2?XV;MdU{qJ8`d5x3t>BpsKmiPD&VT;(%i+>?M=lAU%iL4Z z_xk?cqCs_>5U;7a77gX-_w)0RR1Y zxun-bKRvC%>pudfg*;=!$A(vc!sRAu<#*Auf*h3---L#YC4agW-=3&Sr*sPW164gB zb2{RSUdpl-QvU;5k?p_4XyDcpi%#IB?_r+0b@ z>Y}D%(}Rn>S1)cQPwN=#w~pbSjFMSyo<| zq|kjlsfH9l*IOv$7RYjb`mNUf>k3sw(|}4_aHKMAsM4a`bA}Pk(NdaG%725SxGZot z^axDcT`fFnOMOvh$=p0Q$HoAcegKbGH*w76rkA?}H`N~9uU!HA=KdP?pP<~|4`Y~W znwK;H#oom=V~bN}ddM@VeMIXpFk!_0ToQwEZ5Io`^{Qa6UpYz!cfxj;dFcU7S>#I1M2ZyjwzPZvkA#gRtO>-E$XZjPd1#YDq@4QP)V>&y0KWxUoXA`t~``depn?jrdP zR7uP>p7?D%O#o>yj&ZKIY$B* zSbwtHidxECP6U?Vmjt&yJ>crK*0e`B9RQ+XCZBU`URJaH{qX0$0e1@c#pVi_NN)0L zkOxUH4YdXV5s7XIAU-2kq_4N8UJkrQmU%rp*r`jZ&$rl5R$|&`cqDXS%X#s0=k4V_ z`mdB(FP%unxPWGwPZ3-|Ao&&KyK$GF>#utR=RZqu z-z+w+E+VX93(f?~<~Vnne(br}lSIe92lz*xu_*+4NhFw$&#Q? zc#TWtz@EIb%Ih+H4n_g^lbbZRjNm*J@Nw}6*sukJ*FEEDgsy*O4L%oDJM0$t?CGVokaZ>ZuQ9U>}5il{kYZ8|I z8_X#6 za3RfljajMTTF`(v9ZLW|rr;K~#JREn=4HZ!UcZHv&2<0Q@%L+q50egx_|JN^f-l3I zS5jB-(a|Wu&a2GnPQ`*#a^L@sv=0jl0Eg5xdRpsQ9HkRgGWp_Its<)P+o_%vD<&y{ z-$=XAbooyW`!(}1hb?R)<77fqPzd?K-$W7I}oP@3zFiikGOi;xJBG=m; zKX_gVs!_|=by;}_iaA7Oyt5uEODX4OctRx(WzQbE)s}f@k|c!mEv3QL4Pf~1V4BEG zNN6xT3*V&6{TulE>(x*x|8$kq1NdkyGC<8D^rdFtxC00Vx-Lw*YW`&iQ~U=a?g^L` z@-bU{5_ul$NLm%s@DmD#(m0)K4Z1f_`Jk|CWnBgPgal|Oz1`rG6_3sjIE$;PF5UpD zEL(@(uM1axzm9}QlY0@M*uV|K`8va9WvTJo*C*$DzCKy4{nkKr;mFBr-BxwQyUbhu z5aBn7co*F*mb8d)$M+AQGw`by;lYWGiTE{oLux@e;tWiNKg9?lHc_9>ir@J+N^1gV zl3ec>(~8X0V>Tv4z%~=xG&`2opi0RI8^*sMLC%x^zYyr8y#89EsLDV1)L&0;{ou70_fD{@$Y`Ze=l@{XOk zV+d)Prb&n~{pgy@y1nd@J z*a%1nrK=Tso?`d*IshX(9+^s|fmA)Z@S>h-0F{?j>PZ3b0{; zNXBLP^YSWTf>gv@qE9pAu6OIj`x-Ho_z8a~16r_g)XTxQZ|T1M%2Cr|r$hU1on+n4 zI#!lMI%8eKfETa>P(7mj3WNH-MQnFX`3c7FEeC7ayeOBDGmQM_qe3tD=6vhwzBxeO zM-Q(CUfx2tO?SA$6sN)%oJ-VGVU@T?oQl@sBvt0Vm za9rK{$1fC9WLsPIJCRH^p?&}XeEQAPh<9YAi48(&oU65mkwPmYLA7Vr`_X)As@NQ@ z#xI~0=7sItv3pU)=k^dJHsocSm%orLUJU}`rjHuUWufxi8Zr~n-(h!Hd>H5Wei z4Gn!n1jY(bP*Be89#u0AC!LYQg_(0I1&bsTHI?xC>>b823c6BNI8H82EHwwSH8a_K zU>)!w^8?Afvk3^ZVDHV^WJ<7M2)6!j-k}gMI}~Isbg*-|4`FmhatloEfqbRnY$0T| zG0aXJ9tbra)5K5Dp=er6P2_b3^l|zfgtXfy#6LoEIvm9VXicVo;AK=>d$_ zUkyiPZ{oZ$UO+GL;x-%0V9qoLYo+!0i`jAU&o`d3Pn086>9J4SA6_Z2&f;q}IoC1XN_*CSK|&{(Y? zD{0gv7p)vmfhq?wC_-dIQuG=d!~I!Tr_`9+w9?^Q$@fBgPHNM|xz+f{ZZMl|MH)D? zU)JKYzgw)nRoa2-qRSulQXk)ZP@@dxSdllkaiwmXSp1+4o7h5+zL&PlZ(VV|Xg-~+@gG8FG@UNgAmL0^bl z7QH)B)QAyl1P;@yO7D)nO@F}$`%g!C+7MxZ{yB|IpRl_8wXXfc0gTQ;VO>)zJ8F<> zMj`zgDg}Kb>=kZ(q&_kFpRP*f9jJx5OBwDBKi|nG4R+6WM-8=SH^cj@?!uF#>`(uw zGjqJm%^JkZKmTXR(I|n~gZn zr7HRt5d?T2q&*}H8*xi0LSPdiT?gRo+kM3Q^Y1Mqo|hTcxWzwU0!80dvA>h41P?oS zW97Uf%*tbj(Ii`Z}WJ(q>;FT{47h; zOuaWqOl$AH{3?nfwVrEXsd3dmp%d};B)JYM5SeFxt?RLoXEI270O3IR{%*XEoEx^y zzztu@i}f4S(Zhb^LhC{u`v(aY0X?#^^_|KbzV!TO4k3!snZ+DzB-S&Xb!$R#)eW;1 zBf%fjrh_f!^)pFEks^I*)x$wd7M${{sApSW>|QGmh^O|ECsj{T`%?W2XbPVq_I%&y zMvC2&xNem=PKj@C4hYD`?jGX4PQ<W8h7)RPwGF!>};vvn$QndbE z-$v4|idoEyQ;q4<(Z%Eyur$N@pu4yW7w9ce5mZAtAHvGK+*#q@JjW{5R|X~NnSHxx zBJHH8YC9QK%MOlxe~y)tgBeZKgKHesdRjyKY`k2p6(5*X)N;bXUo>Yd9=Dk!^YLY; zYVjM@_L0FqCaT!@dgsBqk?p`Oz9+pJ>KjB>R!>sY*R4ddp`*nDZI;Dg&m%jL9;k;EjOulU z9y|ye-**QD*U2$1E@T}@ewKlC{FCZ(kAIPd)apHgHNiP4!KkA=8KiG@xPU<*YokTI zGzRjg{~$`W3QGJ7aMBt1FThEN*5N^%F7g5t4AdEjGh$1jQ%6!};V<2X?n8%1Pq@%s zY5@7rrZNh$KQg7iFkv-(ZwQIKk{$RisK|%W>X8#oQeZuNLez-_r-}0vk;$PcsQ;~ zftbBm7S1=QCBk{Jz3l2`Vz$K(q1Y{OOE3v{H0{;vt@D-NN~1p1vV*~L>J&;etN)L) zw~mUs>-zr(QBWF@k`fD*5=A;yLQ-1k5b5q1LP|*yC6tnGq-j#v@AJoREm^t*7Q<)uIcM*E-uv|qQwcaRoa!U-#`JQJSG$1AoCSjyqaZH! zl*O4vqgFTQT4$mfK7s%gKn2bV7`?G?TV_L^eE|DTnw}@|>H4JnBNvY7@fu+&RO9)z zb$&Zy%oRxQP5!pGY!OX7Ns~eKZs4aMVX(+wrdXvnnmffus$Z<;r%Ox*>ZVkvC(R&l zY8^TCeJ-5hv-}Bd8wj?bJ9qeOXUMus9Tc)%t9N#tx<`v!Ds4`mSlmBP6r-)d%C9qd zi87O{BB-*%8E-sZU^{)rBz`J(Zy*b75B#UtSCHoZpQaP>+X!BT?}98?@;_Jl5a3r* zlOgZ;3=<9LxIT_m2>@}(1Kl+K^EG@mnSo1YokkH4LVTegWapa@m{gb4u~m{Zh3cUS zA#BL8zs1ecty%aY+jTWZhwa{d=;kQ%BaX`l|H0b$5{E%BD&sCO}IrSrx>JFP|;tm&q(4OT&0w`5|6;l`XNCKU~&!qh1zOo368uRfe)$Nnv9@Do{_{QK_8tQ z3h}L+^ntKnZRmHn#f@|jJCtCaJ^7=9i)^q4xAL% z5?xByXD@giYEe><&hnbD?RhQnD}aFzXruEBZCvJqibYprPr3(EeP)_YL^0Dk<8d)z zfky(ThZnZbRgIt5z>tkVn0ks8Cx<{v%gXSh=R$wJAV38zCqHy*ber~|1*)D60k@fo zi$8=MAWx#%CvVui@SsdQzxiPQ{|DeL<*xxmc{tK_f&vh!wQKezN>nyzsSZBzQN+Ym zd}&B4)ULlRfRr9szuV2YyzA+G6$<9vI5CS$$8!q9g?73e7*l;us=g||f8>vsJzdb@ zqYQi|7ycp&$rTXVM4#uc8K}>6xt{@kpR@h5R9bEWrpM$_o8vUu5%i%Qq{F{#hc!=m zT=-&(C;UitDoy5*`2*|YTo6AeC8nTn>wLz_V`ARN!zlulPF^FgUUh_fgq3(gOA=hh zKHV9pHo`o6=k{(xvaEyDVYNCYTAS?(acohOTce`1q!A_T%;mbma1%Wn34Bg$ro_qZ z{{7y>D8aDvVAHqpPrO+B#L-9bh3KDj^5BcbPL|AW&`>w?l7=&h-oWjN0at?Flp2%z zoLCW%(cCaR!x`8UJaT&58T|;pofPkwvuIP{A?YUX9eSboCsDY9Pbt=9u+3Zik%P8eK23 zF(ZIsU7qv_y6`I9IBechdyj&PXS0fNkzHU96(Nu)IBG>Jp&vZXrs^1(G^4ZH z@p>D!4&Ob%e?tbXI?<;4_7|-TWSI_#ocRz}#8}Obs00lDRFsd;`qV)>WcZd3_ah(x zgNt`jy{+JEK1_6c1vqJXvBI!6PaMhr7!CCt(`oH4w9jtnZgh8&ZX8C2i<(d6dDJ9# zZX_}Saej?H$ee!IPjT|IK75#~0G;(ho*iNKxEYs$bLSHh2BAQfU$}mt+!MJ6K>D@R zbrW72P4x972(%IY2KROPsc6WJvro!hlyIDg0j3!+6B9SJx4H{$S{09N_x+aJ>~b+$ z2y?CZD0NhzzfNzwU|SJ$X1_#TRo=U6j(Reu&=2V1?~0tyI3e^WT>H?`SHRB2=lXv# zp_iW!sP-mQ?Ip;2Zr$JyEzjZm_#VgcjTz(i%+uL2zfan7A67W*{+1MQ88Os#nop3m z8@%!9+Kxc2iB6)ht3v8bEV}NJ0b3g!wd5Zt+04vs4>=SkVCAw zDRrR_PjhwTyo-=)iDx|fK5lJdc9VDkgMU!7pr?ev4czw=yudVj-&(WLXCVZ{)0$9B?VatU0vPI692Zq zzy+s!Rt7+E5GbCF2brw2j9llU59uIXYvolex19hDE)Snn&Aq_Jte_*;!;k6loWLeA^O5!=n4|yD-9Y|`O&GCy70bl=U3s|&CBsz6HU=%MG*XFZgTwyQN ze?-8HAO%MO<5Z0(s3!Fvrd;V4y|@&Ko}~g1f0L0z+`x`Is<(=98OMhRVfOT6DFTt@ zWm$gV_7Q`oIMKL$rHX_nt|Ig&sVZlD!8Z=J%w=i>Ht3Cj#rtkoPr4eGKE@^H5>`(p z3sFm*NR>4PfKAF4qtKNR(uS&u+~r&U$5rUp2v(@qLe;}ET!vLf%jGmunIvY%6N)Q; z?-LxZ`cqr+S08}2#12+X*S>a4u!Z?#4xa0~4Tq5-;I&<-W8CxE=g4JO0apuy`cYc{ zT=MR{`*Wpb%93w=M~A^G94Xd;I}~Xl`r?JmSRtw4yp*Dv4+*u~OE&b?^97E8*o)9;H`B zL1Hse9T^FG__?byOT%dv_C)(_f$r`KRAP-RVdwf0T#YJixDu z0WIaqEW5ygs`U6q9VQFlM*Opv|2;6!e4M)Yyz9ecDM2|*@X_TN8k1iXjAC42-t43< zc8OuIN&5tRy(P7{6CVLZlf^YJJD%E)m+9?JIMSTP}2`Vkxf@YD&LeFwRkpeOEQ#Xy-u}Iv6ZWifGG~YywKOE%{yXku? z1JC9yjcpB@%zJm$EOM{GizP%^{DcBE}*1DY+c7KjJWy=g9o&ihn zDqazl6)zWn>iJJc)YQzpQU6V4-uPwxDhu|>%&Ml)3Wm?oHC2B+`+prSZ;1QR&K~o= zTU)eu7iCW5HNG`_w88)Z73ez*+M$Q_M_r+hhQ<}Sx^FHVpq~?l;HdG=GI%g7q@LCp zy5Uril9KqP244dGXFMVKQKq0@6EWrdxbH3Q42zA9<7}oV&E6k|Eh)plxY=mIxAVB| zAmi(f?7a87?}jr^(}J`7TE^vK>!IOchhx*YIiS-aP1I@h!9OrHOSjD%mOVW7uAa}* z*&an81^URDc_~oh?oms?%0>Mk>e^;BxH4h8}-sRatS<8l`184e2>a#CV?NZk~m((&5^KbLepjx4^M_2ImyZ>b^e%L%i8{r zU&g%z){~V~guA;t=;D~qUbnbkH`djAZ_m5`WoZo5Qw%1PUq2PuP+h6$^+h;rrMoKrzt_1F0h)`l&wlog1*X5~n4h>rAKdB<^1-1Taj9(hh>dsnq`OIlE zc2wT4p!pzr)*_F}J% ze!SXLm;~Q^6y`bknH-Ycrk73qAV2|Ksy){j1kM5~uNhclG%r zP!5Hi8wa+Mt>vn%f;_CudXrVTUmNy3MR92r<4g%>pMa6TnB8n}+$@$6yhS{|ox4N~ z13;JG0^1lGS;SfK?DHf4GAS?b29xn-DNssh-vEM4q!*Yqsy^+?-$+ESBsekc}tMkq+6qXpe48X-qs%M8hyS}ZK`KRPl=Y=)*)iPye!MF%X~MJg$?%x zk^L+VX#{xK7sFB9g9ro|#{E}4^wl36-SZ*H?55>CRFIo^km&?yQM~|ZTyR7G^4`y1 zIpepir&E1i7f#lMUEop$gjW?v;jj5B;zLMQr>NLS82kv6J(#WpNx2{Hv1}JxaR*s2 zCx5X5Nr2?0zes_8BYh>Bqg&Vd#8!C2YYgT>%<-nORKU`^Llx*Qp&f*0@R07)lH%E#Ys>eXZ0>1P%HyBJ$7QlzQh;~KiO;`G-uqnY~nd)BGXKO^kk7;PAjrLD^ae48pPlHl7 z4_5|p48Z65`ucOzI9p{LMJ`?DZ>uhkz4!Io3*EqfD+x6V)W9#&rQ3s{l9G5_wSS%{ zd>6SV3vyF{*yCh{+qav>r75S(p4tO;Dv|2$RxAejF2Zy%>J=zOE-nFBT)4L8VgCA> z{@cch2O%&8i^6psRt#QtCsWtOSCu{>`pG9b8OrCa5QOl^wlV>E4$J57;r??%ziB?G z+346y%XvK);qWxteC^R`dbiwpukZneRM9}}v+c>%pIa{URU98TBm7~6e*f*dZt>2& z8X8aLDS9WGvxvm$g&ZWvyd;eSM{04p)f@xzx~GT6t6deiw6K0I^n2(FI6 zf+}G4c*E=Hj7C+>5*1Drdwgji9FF{2OPM*p^L1p|2$w(+ zwxCO=OedPb0-Ps*xuR&i1?QFDjLjF*i&&ugB`XJ@af}4rh9L1J|+>tRdWPW8XrZf{t9d1HScaC6(GT zM;mA^Li|v*t`5`e!!Ewq^}FHpL*!tCmN9-V0;X#OJpSDB-a)Z|UM*pN{V^r3y#3Bw z5QVNgFkDLviWhU^ff&v?%yjW;0mBgby*LPD%yu$V9-b6F#`&G~unCXjZ3zv?MoA$c zek?{n!`}UI?nx6Mj89nZOUB6#$fXQa41yYnDwYQO@B^y9Y z#($xV&_ZXx@Uk74l~{nth9rH5#edG+qUt012@a1n#`i*K%hn}KF_1i=iejTJzcX*e zjDC@$wZoLvCQ2X{?E;-CkF{f7VbG+3s+C{ME}r!2&M}xSG1|WK@!#7;Mk2{Nk{ARB zS|Bo*DulF&&_EH)V$)sh_v1eNtw1G@J4g=}{|Id!Z&r1V!>oYcb$yA+rRbzP1P9Fp zLEWHh%7qIVP);>io&4!qYMaM@>^1)cH0KqP%C4%(-`4V9_}!0LQv78x)z?~UpkGW# zo8oa@pW%Xfmz-v9`P0*Fa8^j7!4iI%k)>WQ?dWk(^90M}uFKD%S3?jMSKN$iByXaX zKTLu(O_9waKH^XWU60-N6x}{PjjwYTT;kG?jI`02Kd|B=5;>IDENISi`GE^Sk%I+c z$unG9U;-!M90tj!d1x}+x#NQ=dvpmK@r4)q1zqrb&eLR7VR}#~tIi2H+3`J*8){(r z-3=dOsvF>HkW%+tPI2QJD|j1*bAj(#?hL~@e}dT@R0u0blti5`6oClg?KhVT#Vf_y z_BRW`JGo{sY8|U@@Zdt(GZ~0yJx8NYl{KDDQW>4U4?M<+Hypb>f7vO7!`}q<$=yMW z-M4K{2-Q*UMN@@6EcTc$NayIao}jVMs?|y zXPDmvd!weiNIN>r3Ko0L{N8ZOwtA%}<~7?rLHoY-om9{TpWcZI8_3HLE3Wlj-c&dh zbK!%40_$MK!+N<13To$tr^+9U=zu#tXoDNzBh>$7Bi2u!=|A_bPxr0jq4i}tT^G0O zbUB+1w%E7t)}R$wd(9B+Pou~%AL;~8vwHQlXsD>CBrx3xJ6655lyC10ulyM0B;8SI zJx0f`?_>KqqevV6T8LRKTk5qaov3*+JV2+o76SGmhnMpCXG}c5_&4hht|P3X z54Q65l;IX8!D&k9KiBnyAIIs#U7OJeUAk%l2z%&oe*5-YGe5g|&^RhQheX^tP*kiSOpzHY+$A~9@R&9(eUK|S(KxMNT z?Sq5!O{#R)pD5^ZZx{ZUtTfLja_U}K0B&IT6(4~G$EB;#<3@tFO*)MRND(!lq&Sw} zo54SP@IGqAV9EZlRySna+{0J5Gi5B+6snt~xN^)s20#QZ7Tr;ND?d6H(Juvjs`uI}E#=J4;f4&1v!q#%nNTF5@ zyEB`28=cRi`=f#_TmpJ_UNrQF)FSIo1ICkTXdhO@sBk~KmuE=bhfvtiIi|3f%PXZ zri*)YT=d4=xdNXOO>zg{v%+z4F)v6j%NVXdOX3tLQ^3!R9@vezPoGc_M<2VV_OKQ3 zb3GbuHRa#kU&2kYa#ichI@}UiuGZrCKoW#-3d;}r6!5g7YH_#ecm0~Gd{EK49f|BP zP#LN?=nRJqFRf;6jWWyX{Wl5T-&GtV0SP|HG1>B5qkE)^5o)GO8p1U+mTU;2OJhj; zm)0zsP_dD-F*&)Ho?%(0wQv+q^zGY`GqRwM@s)0?(Fg)sdg)3L`YK?f2ZdI2a&qK6 z9TCXLWbO{h4@VfTPUJf2-(dI+?(+zWKv8;OW_8x(_a@iQ0=+?TA_eY4=%DiJcfP{V zPkhON4A}fsD|1=u*F~Pyx3D*hm!p+x6MyAa4DOX;+h3#$Z{`(x%R}sM4nMI3q;jkH zzecA1mHpv1b{UaaFwcM!X}>*@z6vGg*#&b%c${kQ@cUY3937kqneBzP9f$Ige(sYB zsM+Gk>*fd>hu-|ve<`*)7!LIQUM;YPAd7 zHg3w0YxnI1((Us9LodaF0W9GGOy-W>{EF7ozs9{MpLa?{hox@rH62$TGUj4qo|J!jNXoEDIpir@&3U34mXYX*-+ZOc)Yd82ZtT|o6zfxgX)@s( zC$;)LK-o7+5nEKlyje)2xcV?;cI>`kszALC&Ei2A7HS-Aqm`<4}mx2B9sgXs!_=02Jyr0IMgIdNAv0Ce(P&LS<2MB2WV3E)<$ zW%56NwJX6!5P;uRLplz|`PhAvZ7#f>xM(Q4D@f_faiea-QN=ngNX53^c`az?~p95r2w`s_N88bN4 zIa}eTzpG>v+Qw+$er3Nav;T~Yd3<=zI!CP9Uk>S_TnfmL1E+ut98G&nia0f;<=D?q~ExWVY0 zD6gaxY((e2RI|Lj%U*n?F9nbQf#+|XDf8jeezB-yVwy`38t%6rvQs?Bwi>an3S)Q0 z#aZC{OmhNDJ^9gcRK8R2XH3l#0x`YoRu`Q~xCxTlztIp9R^ z6KeA(?3euJXHkfA0r-x~jk&4oFNWDPKH^w&z-i4NB?k30X*opJ`q;Z}O)$LmIwa^* z{PBb`NywGN65Hd{kDJYNN&F#hc3-=~lDf>HSi54cDm{ zPRuTdpIdW<_~Ec(_uj4|9(&tePKT5p4O^?j2}+D8*NN1qdJ5zFlY>>1fPU$_hd`|; zi3T%l^EhXPwGoRVXx{I4QUFJ4Y$=A{1f0m11z;;5_G%I`bVUx@d{^a}zLj`olQwiTZRg=Lg<8 z(=HqN(?SNsql=pP(j2}-DS*DEIXJLD)Kg+!>@N>uGQ`RcO3B~03Ia5tFO1BE(TfcG_20Z6;VzX0B?$pQDjz-tUq2`~c90On<~ z|NYr`wF4EH#vK530%yQG3?LwTFzksQFQHP)R&4EgTNX{h64jR^Y=T*d28{Z*2`34_ zfSS){l2KrDtb)DPd6fi=DF=non1G-hue0M8a@qKZBOu^Zg=jN?R~@f)v3e~Ih;|(~ zXY`uAr8{8uxoXCd3JAHjs@-}gE8bMwQvxg|j%bo@)Jm{2l1o+VycvFeb|QT$HUm%q zOT7kuQeiYkQwQjk(K0pyGDbfDK6_aa8I!GWjnPYlIZ<@8Al0=yuDA&xL-66i&$1bC zHgvJmfRpmJ?7hk8+UT3I_oTbKyMvXA4CNNXH`$Wyy$4Qd!FG3A?+uVLy%YVj(D-Lo ze2`nYnyLfcbdblUYrH)vjgTKz){@fF1c34x24vZ3X8p{paKQHc=Z=@IY7I63E#Yje z9mw(SHwXcmik{X|(GY*@$`mCA3b3z$OT@@Pk#w;-x*2^kv=Ix2OSI54muxey=^537 zwq^#(uFm@E90{S8t>|m(8{Ho!#0CkBce7UD?2~!z>>u`QE{iJH+&lS-K)qP`0ftKI zH?razWrq1p3cyGcPU9i_*9twFYgNVfoIO2`T$hjIe4(UNwBDeWrQ}36KwOTQ0zKU4 zpt;_%W;aoKg)LEphMt~Y5)n+!5DLsq$s%qFVsSUQ+qgOG$bJzN<`%vXJ3F!4j1xDm zC-Zso1p#@>9dhxH0Cy^*n;pX9LBd^+aU3|FBu8|hqQt_1UmV-oGvBj_s>k!$Dfn_6et!bP=P+?0wbnA>953-#6luTLVzU4AnbfJ3*7>n_NF&dXsG+mBDaFs5VMQE^dCz^uF@ zGbt6P8w}*JS1R;?AX-WEOaUSR?3qj4=S6lJN+1_*TTtMQqVl`OWp#+Yxc=z*?>K^g z20);?xSXW~m_V0a$}=(jv$mS^&ETrQ89$)t#Q3C;&{e2dZsz?j7Kr%G=lLYbg%l-M zQ#7P=cy(Cs-&K73%)Bu^F=#Fg;iy~spprx|F1O+Ast>V5Fiak5;4(yR>KWY{kR0sQ z8XWO^vX0+=Lv#Htk76C4!PC?`naIA*&h{&`dTY4Dq3u`OxDLqFBc?nAzbhqxED7gP1rH{g34r__+drzFh!hUuuF3__cqB*-p3DSc2AEpbIY?8 zQz(yWZ7m-Gtl15L)IB)|De8urJlxiLS?0a_L28BK6t>~q>X=N;bZ@cIL;$M7ycJ2DpOSP6b@EoI4 z`BS}Ld5gM0qp~sKbZI$+gg$&QUHVGo-rgQh<6YCkFZbkC)YVVoJsR|J=*l!795dm( z&dvm#M;$K+CBoSpk4Q%qkiq{vRKt-0h5Gi_Ch+BH`rt@;8spgwddbyNv!29H0NoOT zK0Mv)YfnrVE^!?ts>ihK$;!z+I;5Kcf3a<588Ex1!?U2AEujzYzYRrp*4t!i0RH%&WiQu(^~2{uCftl#OTBsNXag)8mvD zz=}TTbmMrTyBGrTJwG6(=}V!)Z~#IlHSuzPbIY;QHnv#&N}uv~k@mq&zyWFDH-P%X zS)g>{-q>fhu+HP_FFe9Gg*so!%02L*G=wKN7%8rx>kf_K$qVbRuI=Q+B({-1{b!OT zSPv$)xI0cN6l!6+*=sBHFQPC8<9vF!BNLGJGds4YH9`__LxFfw z5{z3!1KJsGF9)Y`eR?kdW4C7cN4D+ti$#F`VhE1gZaaN7N(2Mx6FB3Q`2hxRaQ*;B zSPw9gvD1c%0xxfV1*9W5&J19HnzRI_Fmd|=(VrXAg9@Zl?dvyKqJY^n5jX%HF^8>z z*Nko02v!>oH+2Mjddxx5lnO?Y+)));166h@a=z~mw~#D1=zW0-U|}JQE70OQ7{!7E zpI@BOSKX#lx^x82b|!-;;3njY<-MO$drRhn^))E^!LrL6Q*mf_`ngTtnNKeHS_J3b zd!x&y$uV%=L7oPSmsHyPDZ*L&L2%woEIp0$=<8j}hG}NBw<1T&j;pmU%=%!vATG>+P`r^+RS}##e~o=zo@pQq(8++ z6^5Au6hB6|9c-Tu2RL(^b>SB~J0%9KQ@n={D^!37+1kh}N#M%fm5JJS*Hu^8Tu^a+xs)4Fdu z;hQzzr9|Z3_UEJ;r+(c8;WBKWV95Oym<4)$Lan%EutrTrifj&pAxRW-BG9R#zBVvO z%5b|}i3##LuyYpV%s`>6!9395DL|Xr+S1BfRb??ViLU&3$yxpE1mTA{SnH*lNWWa-7M^Xmf*WP?TdIebA z^oLzR<;lAa3IdDV{G?(&B-%R~)E_kE7hS39(W8f6dDEjjjCOu+odM`r#UBoGA`7vqYf)bUCv zR%v6l3~^8cuD~lBv0oY$?>~*@&?%yrIXyicDAE&NrY%c~qm;XzC5k?AX*curZT!M5 zbaQ#N^YyMVow*R#tiFDz%_^CQhPSu(#-@Bj7Re$bMJf~XjQA~y3beLmb4gm9f}x?` zdnSK>4LN9ER^~(aM0fYfud{omJ$mUoJ0V-b<;`0aij7e3WtID@b0kR5HQ0!KX{G&uV>to@HnC8H_(S{2s*KEcq}b0vfjIQ1vKPBy|g4GAe%R# zY^tiN+vg!HsIG7M^&cOTwEp!+ZS#gDK~?R!*7t*4nTibsj<8Af9#>#>Gl0?Z;=%Co z9;n>YV{^VOD|3@qC@{IIpeO8r^8@q~Nt2>k$_slfg|^4j;upK@fWm5%f<4&OP_L9B zr;Cspq<|eS3AdN%3AufUi!0Hcq*US8-8o(xZ6iV+#&H{rO(%c<9_k(Qs-#dUY0`Eg zhb{24l7hkzhuePM389Ffa`^@xw+Xo831q+4F2tWdnip^N1W}~t^%K>j%m!I)0^$ z*v=Fsm7aFMwXd7*&n=KuRBQ)8%d3!TuO2<~nY>X>K_sv=kvrdXeNkz&5Z0gmzLx^n zJkCW_A?KxlHSFKv9NK~l=NRY&ac!G^K=SJf^E9iqr9$ct41d~8rSz3T6{~cf3CTVZ zF(@0@8L`o=WNoCB(0~RoVXr?_Mh`oB4jB|pB8UUb0gGhzjRN)xwby{t*B!Y4nli(i!!AREe zmdVx&%v{kuasO;QHJbk^9*Z!j?1#a=ZG(hjvJhchA|P@Is(zD}R&pcoA^GKQqM#Q| zzUD;;(l;ei{*Tm$usE*ymLT_$d|H)K2K}E`nc_Z^B$4Ilx5CI6MYthF&IRkTyb3?gIxX+LOa|o%y~&RngYE zt~$P`{OP#ZRgEpG+eRO%0UE3$c-5NUmX(Pc4G?DN0vPyd-#f#HAquHwtCU*-9I zgxzJs531{B*%vCk!_iPrSkX$#ZWIv#8yX>O(fIW2n{-LmGCR@qy%wrV$gV8tW{VY?dIF5 zo30~@mt!NOBfcH~L@g|AZ=GJDb3&L;RkCXp0Y9I{uW%{aMTN-gCw#z@4e5;))%Wm7 zvzcm_k9&-UvoIxx#nK+GU5q`rypmMsIzip<_o03ogfc)em)T%9vAN(Py!f{Du}sYU z`7Ph`3aIU1TFnc*lkNFCzx(>67rVaMOerOaMNqSAPKbGVc+Ho{ur*C}6XOo)TB8@d zR+E>5*u zQs)*wbh7yVCcgIf-rD+jF`}UH)2gq9?K_zhmejG0cQVQk5qxv=i%8^7j-1$nc>g_zHBLNsohS=iQA@9+{byb!+NLa&8=huGqDe!jt-&edD zrz6}ERY!|dObQMUPZMzBSnol!GXWm8sFyQ0;yeXZ@}Q(1 ztWswAv%G9Hme>f?lGzW28x0Iba`mQqedxosU@5^PBkEI?po+e>j9M6g*?+x*yB z2HB%ox?UZSbVR|yT6GpOVDWYSfR>R-ZOZo=S>bWFZn^VIyAbH)n9dXU4IFeE#h`)5 z+Il;J04HezM@B_gA#v4}(LfU(?)3bloc*9HNt7Xg-@uoem6f$R@v~n-*-}oQGKp8; zW7D7s>y9s(-C@Zc&O(>3TmeUH<{Vy&aq~iE_x5(cozV&mBQ>d_Bgg3fT1M*hW%)Ale~Sy{iTD*oHI*U}`_Z`d;M=+X&DKHt*iuJB_ew6>dFV&*jW$UrasPx#u+~_>q~A26ZsAx z(P(SyNRy6OGat#J{LX6|4!VuGx0N6gz_$$CPvzaD4Qv0Nsyz&@8PJ^Te z2kBhkvX==6s-MvUBz=h+(uYyRog$9QK)SBdW)Sqk14DwS>xxit<+*|RRsq-3%OET$ znVBOyBGLwHHQ0IWW_wn5K(n_U2E{r67$0a-=4ci^y1gy~_60t!YYrh~EFFXCaQl-U z`b2S-khwX-m(pW0>zai(=ELD6Y`a}{Oc?x7%la^Kj0f?fmUb-{6bOiTc1KF+swstI_k-2fg*6ihP|5e(0sV-L{k z79#Hecp@^4mU~jH%5vg5Xl+Y_hYGwuf_rr;Z$EuX6_J)cSZGD-ygA*8u5bXapfYYs z8Yw7Orr_yGaQD^oOgUKPRc;Uk<8^K<3h$quU^WXA-ron`36ErwQL^Rw{>N8iw|8*F} zJ4%dPn7=f+`HcScny-4!=n(Q&Z`7(^Yy4wf|WdIKJkIYj6^hB`JJ<2iLTI- z{0(>Zwc<2rp-8{+-L>oUxoxE*rg|GB61f>_K}j79*~u+m26*&ed#b8c*-Jb$4_m(H z7C**-PcXFlB^Wvp88@KBiIoO@KPjyJFf4gIZe!f+(Jf$eFhG-v#i-g?jh5c~5D;MV zA-FKok;W0X?ZmOcJ|2oa*!2Tob**b3zp|yc*XzEJTXPnY{Sv77qY4*^uH6m0yYjYE zxP>(f#VXc6-Z7oxE1L-KZ#){>_|Y*JcVTO9xcKK_}`!%8llO2+P3>Q8$5 z`qDwNoC{l9QQ*?U7+t#`irza+Y5vDuOuB>Es$D+V2#7jrV()XfUunRnW?|BcA<0F&DSAT9& zT`!ue;Gb;+r|5X^*7-a}3Z|3F_?N%r;r z+mHh^C3U8^0~;F~A&c_)jmFaxhP$t@gL%-p%Abr98U_Q}$RUw@0dP zz@YFCyB$>dRv70gu0$jkG%g73P=GYem`J0BJ7aY7*g!~b)gR)4J2acBo+Ag7 zok7B_W+c*}!VU})0OxNv`?)#EIyk?@5Zy2gtEu)|2_)54cJ)D0VR7TWK5K*E@nG=4 zezfr`1-p+9zzYbzoqV+jF*NjeEizgOK1+odKEkrJePh?sFjY<#3ZlG2e0f5s!U{Fu z-vF80^`5SAqD}U4xDEEq;t6q(Ot_y_Xz>;o8u()Mb~cW?x~UvCPd!91ztg`XCZQk#_L2hPZd;?)DD|=Pn!{Rox_ncVWG8Mp%W~V^$K;m36x`jdo01WCJx@uP9jroJ` zmFA=n_p?#0?V&bWYdCDbudZ@^71L>wqgj!c6=5sti5gn$UK#i)s>#8r&318amW)oY zKd*13?%y(V(SnbOo6|IG;V(b6lkKI@8?HS(8EvGP&O0uBpziwu)n9W)2*nK95AohErMz=I>X^9Rpn<8Ebk4rkV64uHC@)^l7bOOcTKh1E3C?#zD?!r3FAM}_3ax^sXyzBj{GcJA1Nw)IJD|4q!{&cm!y$%ZzWL19(m-z^$iVh*|XlL z3P(}opj)KsB9|tIr>E$w2UfA%X1MmHYsah?d9v4%#b{KcwljL@iowMe@#p~{iVx3| zdl3ZSi7WlEJPdiApnM-%u-!&^jhM9Esu;HLi_F*8_jGrd{3Ds zf`vZ0|23m0Sx`^y_1N_kol0~6esSzq+8bHZz}F^vVGnE>pD?EpW4?QR|%hw-r;np2<@^-x54*i4e6YN}T)XwVHe(EXE4dbzHL%*r9 ztiXNhx8TL}9`~b{MMJmtC!b-~rdU9YoR9kqg+3O;@bO}-z(sqxEzV%@Mhe~>c)R1b zkErq($0El|T^NER=yEAi9{OJFanEAs?qu(SCTqG|BOY11S?aA&Szr&Kp&}B=C>UC| z2}ArmB7v|eCAQ6&z}W+hQg7)=A($JOLi;8B-S(N>A|;=P7V+h^K7wj7 zJH@xz#%J{2#*7)2wA6jY^BZnaOi@qG`tyoFweYfjcXHj`y~X4^+zwfS ze?~~w9GN6cjosVb{pHcEIqh=TAmF}YKgjR=Q@mj8w%3;cm(EAj8)fm|&Xf$c%Mggn z8A4#5_Ph}fR#00^Wjgm`=I^39nljHp>s=qS)!HyOdU3`m$ zCNW_(-DQ0-fe_9Pd|E2E;b0XFme-z;VQKt>2JgjSo!6-g!ew^V323Jybf~<#dd8!d z#wlVA=-93NlHzQ9JZ&-*o5_HcL7#NGV-m#`HI@=)qsF*6N&}xA`lT~bTF~wEAIu?3 zqyTx01=2T6uHV0KlIrX1d|-)s1I4w2&978t^!>P}4`Azf}h$msOG zx5=qr1YIwlbhTS3iEOL>?0zh_UO2G-%c~D@7GeS&!tKsKQ6=WhA|pk5@)|O)D=g#1 zx41>lMyQD95pXymF3TwvKl7WCCJB*Td68~!yT2x7*gAPJkgFzR`lG&npvH-~QRF-oyT+XH+rb=M=!VNdt3jKh*99 zQ^d3USQBvFJhdNNtW(7WJF+Iy)>TuB1A2!R7rPH{VCNJ0@{iZy{>=oys&(F`lBlh@_&?sO$JSFCPhCX~W z`1sZ>2!OGxFmb=SuJ5_OugZjqVuPkVJO~O3&f6pgKgxY^6p<7P2k~FrdZtx;f8lWT zsje9OQ2gjB_$*oXIF-`F7_o#8d&}Qe9{_=`AKn=@SELSCc!Imrhn3KS_KVN2T2j0` z=m#5gv=rR`7&+5C|H^j%zH#m6^ZBGhvDZ?bgR9P0DL0iR{O7Q3YW)J%{k8k+qC&J? zD9`KI)AUyyu@nn&He4KEfqIr{ap+DDX$ zTnr;yGpj6DN1p6?;Gts~4_Y7H0S7OcXRXm zn2b%RElPXQqR8~S^AyBXz-BF33B4{$pJa%pMU_>wWgD{ra>7%P^7bq0=)kEbO@?5|Id zMs2LGhXsZ?D6JQP0Q^#L^t_ET_4`488mOhZovX@Et}5HPFXo6Y4vv*&yNHg zFrSA#)6#C2SnoW~$jVyyldJal2j|KFEUEV?u!$N-(8gd zSVs{BP)cA;Gq|+2-dJF6{Yq(xyme53?fQwFqz3XH%G=P^f6ofK5%k zHT~>F39~xPK)*`AGLfBQzdN>&pRs6tt6`51yb?mq{6Guw^N-w(sFly(X-;1>U8NED-r zHF2IMDbi<;+VgPj6F4lqk9OW=>$l@RRgMqfOPg=&k2|a?N2s@ak0`UwwqtBAxEs%d zLs+~al$4YZKj7rR9_4#3ST8s9R^i;42>AEuOqrc5G-vhd{Bj(%96fV7*=qc$S@=EZ z!y)2meaqJxTeUUrFCWJ})$2wAAx%r$o-R|qBP4V)>(qOcSf@Qx05M#9p^1AcU;AON z6W#J-IeE^aKE&~cQca!!VU9+<`K`v415AvvL@~moKe>VKqUi-+G$ka<`}~UZ4A0QK zXqijC=Fw9A1*=dkYb2v+C|j~8K}pH7H5QcfGSflCd2tksl)gJ@z1UhXn!v^M)O-B@ zF!mNuRd4OuH;9CSAd-?20@4D~rId(tNT+mnEkdcu&I&yi6(cXGR7TY%rKa+A_b zjXbzUd7=BYNJ`#iepm8&Z_j25o8_Ma zlyf8KN9$vyjHt1)g)FLqKo!4lFN6j1o=@%Of59f)u~+lXj;yKR)TKap85>NBZJ0=1 zPyA|YA$3d6ed(6l8n#cO`fNgYTrl%9C=L0~*FLF`dvP&6#6bPtX@Qy4cZ|Vw!Y@Ip z)@*2S7y?;;V3lsvPiW7<0Y=VY1!6vs1RV&okKHoph%+3sr9p+GXvjl0R`wDNxgz)H zYaChd+`#2zW8WQ3Vl{Or0GTmbEk|;?H@0M?Y4>g%K&ypQG2iZt4`{zYa{*3(t1Gag?&3s0m5Y0(Pl1Jl)7C|jUJGkh z$m={A5y9ptrA3{2&teWMHvM}aX zF_A!JncK{YbFU=^$_BVHHPv`wzc!++Qc=vbawSv3+Xue$UMdlos5bLW-9}5QqNz6F zh7({#FJK!V49X-zEv24u7d9SIfZNE!OIxqfH=VmShjeVLx4;&jCjjoFvip25O89QZ zlb9b>$0O87#MKB z1SQ)Y8=#k^j%5ypBvkA9J%F>X5JcKf79M%-vkSsAUp%i6DDnv!)BWLU3e1 z1jZ} z(lvhgxFZ-lY{XW(Ryuw-RUIaF{hI(6`sq`Ix=)E-5ic>TZqS_b=KM{uZvFk2!5yk& zj#3apeC2oLhrs!j7~tJM?zb*oFZJ7`fiDW&y?ai_$%z6CuzcNmr?JIP>cgoY0x=4^ z=K5nBrw6&A=4-2OX1=&`rWC_5k-aZus%HfwKLGZZRA(HQJI$?n; zEy+LvkUgoF3wW%GuYB6wrJ+}b@P3Z`0WwDdEYfgX=al)yd+=UQ6MwEx@6)F*8D z0^&-3ITi*S6pXi{ri6R(Sc*Zv;yNYJr0mvRj7N{gs#4N;#5H~uf5%N7O{|csFF0y) zB?~lslFA%f5Ett=)&fczFC5nwGZm$kCI&Y;?{E;(nb+EIn)xk?QRJq%?g?)Ej96UM zT`&jzC6J^fLc?D%@_h_b@zJkyD5s?_7fIr?&#i9;6`^KhNuR13Zh`hZtS*d+_Kx^_ zNcFqS+ISM}8VjS^wDWThA5as|mYXmR_jF}6>E{Z0Ydl+gVev3WO94mThBw(!^q^_! zOSd*H0BYr*gCfB=eI4CsZ!cKLZuv(+rEuK4g5n|&4OUTU4K*H zy#LzoN1hqEq2T-$8vJrBtht0G1Oluvxv~+?S{~_aWqhiMfe6kq@CMUn@i~Lw;3Xc# z+EGH~^XL3dznQeFEDp+aW80XM7SQfo5v7;rVjPZW^-BOC$u>D& z;nK>DP%Em+^HV`o+-$wR{f=8T*&=jV{g zGNiIGlFUf#)3D8xtl)f+(g_D0L(EKOU!`UZ9@j<6T&?)ETX6I&31esx{HgH@3XJ?d zjJsnUju$2Y{b=ShW(qD?$a#0 zy0yxm@1=ninRFpt{Tke{hD~6g@o7Y!j1OGzL-~+U?Exw(>iJQ&tSQ$pjCPmy*|Se6 z24BtUi{6zMB4}x|-VQ$pBo95ou_lF1BA^X$q4)5xRVTS!`V7GqTQqBOb8Zr~HmvM! zIQBK?+81X=~py#n!R+$0s7uTB>|WSfbZH#1cAV;jDs5w1}?o+hVvT8PT285 ziLaU-#YsJ2#jaAQQCz6WA$Mng1aHMpv64fwqvQUcwgG{z4OsW_JlNR7B|#zhQqQ+LJR*H!=42QgCl5rWjhON`@ubpM=i;tc04g_@Cqf&#mH zqr`lFBxU{sMUb3A@z-l~XAwmp5CFIM!j%~A3JqcDXtG~uLA$uPC|v9X^Q2uCr}JM^ z@OzBH>otawJhs~rOM-d-7s>!M3jKObF89E(ovq)DB`Ga!%<=QES#?`Av0E-~jpFBv ze<7W6x_J6)bWZbWQ*rN+7G#hR0&05u^xCPtU}dZ$3tAqI~E z1sHkjDydFEp@r&N{$_tarMXv6o-K4uHfJ$b#ofrDTYrlA1{2o`<^Hl>kX@7*lX;nK zv66OUQEg&SYP1r4^K2foywrKrm+d-so+O(adKWQCK5u)PmVl`gRy-+^>{cPnkHI9N z1bs0adcXE-nc{&i-Hs$(%%@6N0Az=uW(0Y%e#XS_v_At^h!<(FPF$V+LOXlbuixPF z7`$7Knzx5w(){EO=*0a7&sCqYT6&7bNrQTam^k;o_tnywYP3BU5M+2PA2C3)2?Fnfbh z;!ro!OWn8N!RA}>EuD2c9)J24G3Lng@VNo36`PnzILp**C@m1=5fRE+D`~+(Mp9sT;g8Dlt~37x6kJ)wr#dE@xw4AXXH;{%m|e zPp|u|vIRZ~b2&f4kAKCa`bt7#bt?}?PINysU2V0vHCa%e=w$}$RyGc-fe4XTH(LK( zvF?Tme3RkysLqQM$C{L07hz+Q5hGwyCG{q~HM@fMx-`0m1`!75#yPWu?=97qP6}tp z&0|If3rqoXB?<=Rv!Jpr*Q9`dcxz=<$oAg1IO)a32mgPtA*bvk(^Vb4TNZhQ#sh@f zAzS&)_B}j{=aCJIujgDph9u-(d@gV*C8$A_((iQ2mVd=4r__@9WWM%cqgpe`KD6(7 zRp(I06YDw582i_43Wx$|1JN!Y3B_FAKA-pnJb+$S<H_$+jWf*@g9Oli}?9VlVEA67%O$ewyOj&i$yF!n^%#*P7OV|z?%E$a79G2wh z=nw9|N5Nb4qrP(o?dY%-8`;ykcv0Ql_#VMvQg(LAY2!!?2(+$Mz?P*HaufH^OqlTM zi6Z|OQ1B|65GBp;_-P85bd9L7jZTOOdX^5!{4?)+FlXLxBf2c+%L+mgxkr7sd*QdM z=Rdz~j~CF51H=9FF?VXnGNssoz7L-(85cJ5$9xEj2Zw@!+wwcl}nBfnN`h z5KvI?mi?&py*6H;v^5_3`TO0b74@CjRBIm}|NdF$uo|%BoG;UnaC^Bx4ak^MV?PZI z;$_dXKo#i7S9rSw-ZJQez0gsRWMQ`DL~dC8U3%G$JXKK{n>~TNt%}>WmkTSPk>3dY z_X*ZdPNtD$<-{Y;2Gh?~j_l?l&WFhq-i|d?b*MHPuiUr2jt=Y5hHq?-4)0m-M5#5! z1)bo-WZ3Y`1q8V>K9lOv+_hktw3|0GB8NrB3AHo5#j12ra0-;_PHlNC?kp4z2iq4` zV1}td34zj;?zr{BnSU({8U>0b20CE$uRnfV2IDJk3={xi=mj{0CIr7?ox$-AmxmHJPi} zs2MSC4GRhi`V||`u-1$xT4gKbddVXlL1l85kSm{TD4E$dRcI;)M3E=#?87yF@Ra%l z5p(uJjRND7gzuk8MRCB7i{cM7m|tMQGVg6|Z52t{_J30pF8OnxU4F4Sjf~IgJ9Diq z0@ntduAuUAll8~&H&63@DL#ut4f=&@Onqy{-sug0>~)aX?{KFAPEhS=XOmO>2}+flkK> zu5VvBHaTp@M50G0Tk8&2=l4#j`R_)F2%-YD26>k!xa7Ocal$NgYqU}ZPpwexo`8S= z;Cw`S7KL!#S6+~TvZ;Np@;Q<*b~ql-QGpJC^(x{X)n2=z*j?|u<+%1+_LQ236v>e$ zy|4@@`t%7r=Z~k04e+wZuqx*qy*`0%eD=l;c=uw2|86qv2ya9g!%8bO8Rp-%?eju2pej+3*qCmwEYOcZOl_3SVfWBY57| zlJ+m!3Ll4~!=A+P?8cH?K1EnyhA;O!d2&QiuY;o3Gxj^MKWT}5!myMJTmAumj4bVsQGiD=TYKvdOt#G7X1!2c z%B(k`G@G?KF5t}JHoy7+C`~3|VbHZimY*#L#ty_k5f)x7&~x8ChQl>{c(InhiLUuR zFscF9Im}jAiXcG*zy##Z+jEj~ZkCMA)vk#3DTOWeFZ#TU!}?nu5x8bW_Nl3AoA04T~9e5eX`!d%EL+veb< zDot7a{0MxryzWU)#(|+ft{>Bh$RE-$`5AB#e)}bsNZAtWz|v zob%>M8szfXRjpM$b2>i?QV@mS=tO{vQCKdUfc^}CN|u}JEsnh9Cgdj?Tpv15B@sW? zqE-|=Ce8KXl68&vw0}1vX~uL46PzJEmoJK*zdw2cmKV#WA(#csd3adAy;$&VUq8q7 z8ky<9?xq9g`R>5^Dh9k^McVT)!OOBekqay`&Ef2pixj#5jHCOx^c9OJc|ex9Zk!U%%lKJuY}u5GDcKkm0n5 zm%vZK!oB|ry!BSoIF1FkZyC7R4O)Wgu#fxt`o#C=tCjhLai)sixi9@?Eo%OQ4o;Wm z?HK7rm&$pAo5b4;Ib$q*P>^IsilFO#hHsCNvVgEK1<|wX;c$-T0IkX`VE3&5Y7r?U z;d$dknI_;&4154AY;0#w{X6J1^TR13;XnZdVDThF6&1h7Lo`g1pcp@}TO9$gXn#8T zivv0dyRNvJ+WYd&D#mA))Bv*Vu;D@m?vsowiIIVcWv?v}l(weUtt|J_G#>)N@=eu;>c|+>?4y#Z@9)GtX>v%Ru zhV!hn)u>$a2vEiztM%q0)3*S~bc1R(>mRy_S|tK(*YoXLj#5zv^9KlMx+lv0j-j*N zxj_5BbXw%b9K+IqJ*$109M@(YpmGad?9pV!v>EG_%?GYfZl1`Q3VWixfy?Z;n`c7l z+I{sF8$oVUq8WtArU(p@y#ZHCPetoF_d`TM=w`t8V=?ugmf4c_7P~jaf%DdLKgMWy zs`z*qLex83_OeP^@BQnb{_ER520v#{kPHXZ+PR;q5PAy{ z&3WZH|JTV5KEc^qg*1R1JkLD);c36CKoF7C>y>}5Y#FNQM=M~$hYS#lgl=@r5Ld|G ztoYM%818Db--AcI%1c5=^dyh9Oj&Kje*C9j?l+eyhSl8O2Mivg@5lPSq@0S+{S=7`vLC1)biX{+(D5OP9%93(WWGx_0ekT@#OY2 zu0K-^8B&b{xQH8k6!aDLtT#O3&cflY?DKh!zalyu(<<<|>fgj{eL;TZgz;`ep8SI; zjKIvrUGNvBjEXAtPNqLJYwpVal*Ky2%P-s7fv$%G_ZdYTq?7O{+QA{=Y<7JQg-Gxk z<*zdpoUFC0|~qKYDE*{D;78ABITv-h6YZ?D>ykfc@t%dBM%(p zZ+Y(bDj|5tUQ8L7BAh&TrQ~6Xg|2Z}iW~m9VU2h9e@{+QF8b3}FJVg^Pg$xsF!zPk ze~tM5W6_gAB@P$MRgUjV!^ZWp+a7d(HvS_-(8G*N8HWsQ>mGuKy_u@NZVyNG0PG&( zU+Dp+nlGGW+%$=2AS!6nenlGoBjCJJ zP9S?dz4Bf;X4k&r3rk3L9PE{NK`ScyCHWL0zcW7td+v3=%5^zEe25J0+SMX*{Y|h| zuo906*1NV{>ZCDyhGmz;L;iiWLa1)>*&o@7u2~JEGMo-iIc(-&Df4_QZ{e~OJ|WNEi6;JeoK$TSn9HWUevK!#hWpPd_(xkL?a{Ndye|E` zC+D^oKZ`w2Ks7qqt&8XC<9J#7V_NRJ5zlj85se=t-`DdKAw$ZLp+Px)1LzFJ=5D$?St2WYix!VLtq8ptPkNk|ww>v*@~&YBBxenR{d? zGO;!=puP-&dBrykJ(Yd+7hEGM+H&;A$yW~iQ{d0{Kpup{LxAIo_wb)(@psv^E-QI0 zKfV3riVYf-b%U7?6DikkFp!J-4)0cL@)Cl(lEI5{_v8YQVAxme{k-KhHNR?e1IDTu z6RJ^Q9azd}|NJygF}n7vkA3@*04B@i!Mfo1Ma6>)O^yeMKmHS>+dOH4)%G7$c;eI{ z*&&cOj(bp^c@D)p;nIj=rOgSq_pOF*uODd!ne``6p z(Mp(-C}>c{fA{u2y8m){Ja8MwXjLSr9k?e(>;Ny@(}R6j}{-L@(IvhqhjGgx6d8Z~dD zdJn2srntbgz&&5CxL&CfZkg^wsY8c?;*TOL`BKeGiu{KL%c++Lhs4|ZzvEpXepHX* z?|twX4d7e{qIU%h=wdApv=*JuNTU`~S`BI5G7xz4{j(qcv(QZ6WUhbv5rO(< zKRWD(noxF9IzIaHp#ODBk47f0c){(5S;9_xpjb%m%}(6nDC~vLvlJ^r%(y&_%`oIKG9RzS0i$=`-5{jy?zxdWFMntY29yBQLPDZgAAsQtwK zJxFeKN&#TL+su8h^8 zuFVF}3yObN7d?fb3n`LEHU(*qkPQ|MyxM3ZlmKM_=ovY?x^e@2=S8C^1w@VWxR zVN4AkN4LFj+2#m^J&CeIJqv?9>f992_q4A)m9tHUd4b;j1sQQTy7$>ZXHqp3KyYLr zSQ)15{#lIzsS*O_dHwto0g`Y=0lbI>7*s$C#>>4F_g|-I)zZ=eBay@aqy6#w_xDKb z5`>auzy%MeDB;8$FYW9~im&`{u5AJ~kYD=iSL21523HmUqP#X;Pxrj-u&TD2jt27B zQ@QwO{VTl2`~a50L78o^6=K(KvRIe_5(*E%)n#R60o*_d2v|(8qTc$f3ViK{14TSY`$?%X<1%zqVaKnx`Tn zvHPFQ5guXD@+S__Qc`o^v;giZ2v77%Q`xR3o%_FRgMYU7{?8q!m1=(30${M~=Uw|r z1PQQ=CatwZ^_MxQw>`8s(FG`A?Q!*q4V;f3zGEZZ8XA@bCjqNC_*1xJMS`=>T=#`Zc>`mM&Fr{|eBY!cR z%pl3<)z*UQ9|;1(6oAN&GEetYE-yA%5hdlcU|Rch?#0F?Pa|%>TtPGo@1k#SDp-iEg=wX&7sO%;2r59#I9co4{?8zYZxy%- z%|W>w-2%T^KMFah2|8WeJ8ipQyP%jN{F8+5pIzwhhgWs_qfuGG1XF~WP4Kv?Hen{) zcTwe0WQNDvDaPc2yLg2N=uGJr2JABX&SKc1 zGj;`BwPqG}gm;G(V*OvUQH+R8Mg{9phbZnAmqIi^Cq!O5T8nCULfp`%vUf=*I`LsA~6s~RjdtSibC058Y zG-M4EvoBF*|HRe%E=aOhXtTQoNGhZ;jO3;_Gglmx&p7VSR>!<~H@&fV2XeSHZWA{@pDhh}?(EK?G?`lEDBTqtH z0grBfg%~lIt@15?^&Z@c(}naWAo|xUWWaTJZN$RFgau0YPvMT`v$fus(m2!_MhK)8 z1aA55T5&cr+V^95z8uvIWpy@2{6=M5a=TmhOFgiDhQ{g55PAKVks_sgH!~KcBQX zP@xz+p3Bo8n_R8yA{F7eCuy2ec;du3R#CxHzxc4&1Im-uND?DkZAoj3MaiBPPmdE| zlkQgGLzVSknKzTpaQJF2M5LT!u6#sIDd~lE*sTUTfCp=hy+N)BP(;PE@S{My41h+} zi~vxeb6e=JElTX#c%jA=%Db=vUV`devcR>w4%P->j@N1pd^^hUYfV5TpQywhNO+V7 zq@IoY&H!3PMUjhRRSoLF{TuxAL_l2xg>M%t&o^dP47rG!x=gqd%bjPafC<1~-3Y+v z-^#14AilN)rdxPyCg!Ov_nQx=NaZO|?oZDZnJWq(pJ&&Ml(t^pH@gy$i*D39-F8D) zR-@v2|7HIW_}M1Ydjd5hAY|GN%094soUDbB>JHzsFJ_)Xx`quHd-%Yh??3AfPw{FV zGL2ZlPVJw(bpAd}FqsQ}Wxp7hm~8$#_PjvtvYZWiA-Fu~d~o-4f(7^H;(6v3(bqxe zQz1eJIv#X{3!EkeCKmUUG?xtem^^`;;s8o!erPZ**Q?Zwg*1rgQAEd+ ziKZzY2BGRwl0BV|kfNThTvOMs5-F3fpZ4Q}+;%hHwhgO^>!+P(y#cq2J8unJdzFr) zalbpBv*BV9HE8m{2d-{YbJIh28vXK8+hpFtt7d>|DvBKQQzac~2Jgm$d^Ag!`J1;k zKh~W0wX0t=dj|#t5YqfKF*eby(94#7(7gq`Qr+gHkIK{hn--kWUADtId-T8q4pkms!_g4vxdF@$v zt30O8&SC9r+;5bv#8}O-8zs1^yT21fYynNrf`~tU)yNNi&7et251a7H#9KlRAdn=x z%Y?2f_$%uU9utvAu{1QO;Uz{l?Ig{7XjwV~jQ76V{@e_<>nCKpHPN;7m2+FayNpAi z%zl#sY^mUOAxpccPs-srU~^m>&+@*x@_EUBdpxmufLm>0MRT@g-;)PGVh-YX|IcscpI&?rXl(u}I(H{8vzdPM zE2RGs-MxC#%`>(zV^(wI$6XFMC&K-3VBOH{^6Z6QG7|afm2>Qt8vizxxh#r<$YvWX zc7X7NIDxtx8RMI!wgPu9*VH`E>}uV1*I+coPQ8iCF3I^x7VRS8)X!!rAzpkFf|3Y9 z6=}vNddF<*8+SnpdZ1?&bAT;TLpff@lE^35vbzx@v}B=49A^ zU4oK)Wtqd5i(~KnrYKg_*Q%$2Bkjr=@U?}4)(f(=v5|S(MuQtAKu!=yCli?^6~6hj zLa#_e{_W+q#3HC>4Z8l<(?|og#~|D`neMSklH5Scd4L&1Q&0fq zUy{+AHpSP%vvs#8YfPD@3mckLU&hK|Y1A*1TJiYOZPeUTAKTSZeHUIF00vXoD}mSq zVLH$S6Hdou*eS_@T#oWkI}i8kCr$5-e)XY0_wKz5bG767UO5P?hW--!jt;_oGQszp zAW5)sTKBPGRbhahfnhE96Gu_k7DEI%GEk3ozc2(Gwm#=$-nB7N^X|KDk!N$27KdiO#Zp+>+IR`4g;zgv2*e?S=}sp(obrcb!;6Cv z1!pzf2rovY3iPrHgr)d#&LU($f(41Y_1Myd(D3umZU}ZDsV5F(+73xQrA$D1Z5(`1 zp|OY0ZI&z4)y<}MZ^7>?i`Eh3Z5Ot*Us$hYVjiBoUIK;M%aC8snq9{3Aj9l%ffp~T z7tyzYrQAvX`_?V?ACRko{px061Xm*SKbzyXo=W*TO3l$;gsMYIa(>xqLtacG$pr_} z(D6)hKLTeNolL^So#*gVG4TR1l@YUhZ$ed-{i^Q63vMjwU4^V#<8BH!v>uF$Qii2i ze0UT#;%|P}f{ZQ&H))&b2SNX*<>9pj)KgOC-$_cRH7G%{=Kfsxb!j*O7AuCmq9P#; zN!D{SbLAYj#en1lji$^;fasbZU-Zxm3*&%I@xJ0BweQtq`&L*;)*=`*a=8E1C9A8gTBU@|R1u&xExHC#jNH`vuBi}3!RILx~S@%QU0>Wm4f<1J)e>E{dy0*|6g=&(6z zcGkIu3yenqXBH+3DJa=;Z;t2&B~xzR_nY(kuH8k(->oezkrnf6S;rK6L1yMhnyRN- zU+IxF(Lt-9uul^N8ROZTt*;!sG`p(vK3>C`stMui>>vw)5G9ftzy6~>{X zoo_ZC67_;9v2&J7_^wc9QFAbIDb;aYJbX&TrU~TQV z19!7@t62D{qLsn)EyYgylhaZ9hu`!hNa+JPe`#NYcmJL- z8=vEuuHXKj7;OB~fNPg%-*0ELl{>HnB57lT6pE60pgN;X+B0$TF>%QIpq^}w^n#86 zod9TSGb=tI5^*to@Enw675j(4SL5`Wq&x?%M;I3v)Y}aNlyHqF&HBUf89(=HmqMuh zF44cLor)r7g&;fI1@pjm6xpv7)9cTG{dv?cM{vB1Nj+baDhMG1bXK|dTQFme)A*b- z&$ZTe0Rz~xQXbHiypc8l_^Bm$mV+^>Qexyd7$B`SYIlL0djKqW&<@sH-~yrP=Qq)S zcEexT5&yAq)+b;3edZu76HiTXF*{{2!_tIfX4PMrtN+-EBiS6JbMuX>jyX;6ldT4)zk+H(uf4VRu4Hn|I3w>&nlv zfV;cF%hBbq1qRqlDk**GGy&slzn`ak{TeWoTze$-zaCzPhoSXIa_<3RvQqbvjdC(_ zo)b?5pTY`m+1H*?0$%Y{6dhsediG0=K>cmNUh>n$-0S+Ay;OVH1Zh%VNb$^YJ6ODz z%vbW)y0%g;D&$aVrUJ>X?y#KjW8kpo!{3$aQ-*^{t>EW>3G^=81qcL!oKgaIZjSAR zyr>E1Tc3W$^X zc(VhyE=x-kyw6Ry2SS?F#syjX!yX5TdB>fThiV;uf%#0x`v#HZlG^_B@tQjRVT|VX zRdY6Q9YnePEoyg-kp!lYh~4%m4Ku1Q%umX33Z}iamFr%m86OpeXK?i&^~mR5rmJQI zlA@SsQSTI;@|OD{=G76X@!5o(Peo&U$L(IfPmh`r9~Pz5di}tHl)Ap?FtZDDv4Kst z$L9|?S?c`nnE!<7Fa2>N)7L$~d;Y#=b_P6HH8i0+A%+IR_MS&9s93ey#m;)iS53-u z?zF@xqb0Jx*~;@7K2#iBO-~Z zpDjfU4@9xmDebuu@x9rJw?=xAJ^shfKMZItp8`qTe5B{eK?nL>OmrIHD8H}{5ijMK z6XF4b`0AWCn0JGw$9z!zjXWZLS10|?hh;=5Wd+|=aETvf3-!17PO~*_cm6|`&@SGW zsd#fL=Xgwi$l{{#MSKf1n5-ivJ2h*7V2m|AE>mE^I#WtAoV=MFm*E1>xt+M&fTPaS zR2SS>1q-%T-_03i4Y^^*PwPWv3mbV75&s&LdOgJPQkrCRscGMWUC7iIcal-{J0vra z*qq~<#auk}?xa9MrqPN{S*iQDui(ACxidFI>aG@a|5Y>MbbBde=M4FCWcfY19$2KoRXi2!(36#kE*JEY)=X0b-b>(@Dv*%dbo*5A}#6T!sh zl+|#>Y@fKIyt$4JX|2f;XW=25XyLwAbOZmYNM@Y8o6dl2P;RjJXABCaEr|BQ1NfAF zZ$o+0u-e&J)-dvys$Y`*MNv&iZ@&fc3Ft|5$K*=)q%( z_O3{bg1nD6+|U3M@8ihYrv_~G4a+Pm0YYAwZ;i!lZf1_9lQMU~!0Y}AKD4gdM=sw# z>*t^S|9#1?^r%0O(+G;OCbi*mL5!~)z-USyH-7agOLnv896ajNJHBJ#+8i?uB2Km90~bO6V+=)VrQu+V`aa)VXxf5*hVF&UshUP zj^DU*woxPaZlcS^y`r{a#Un)5>P1Z&h=O4qpzEh#X&8Nhkp;f_=06b`KQQ*6fB^oR z)p%SAd1l;vXBD9e4u%&q*0X$>Z4mu&enoS*C6#R(nrvHQGBp^*p$RS%y$?6NR+hW{PFq6-cYf7q zMXe-wX8`_yeKsCC{wHm^;*dD){wk~G6-VK3r)>e%_KR z{YHPQ*YmW!MR{AT(s0Ftdmd~eO^=Yo^jmZqj+LOME1v@_Jmcy&eFGz*KW$oe=FPYg z9XA)zHCas&!tq}cK7Ws~=DS|}IsCIb_B-MC9P>ZHUHsiP}BZNkT_%6A><{hNMH{%+um1Lt#6T;4y@>!>U>DZ3F-ZK@wz7!7H;&0+`SZ0p&4jj?V4spx{1+C&$048 z84TxJE&V`y{Xhx&FSOwIwHe`#3qz*DSj+FOmd9_d74wYJ)5w1%-B=PvX2LCbtO{HE z;TwM@!;^N?)u62SY5l13MDDUC;wU*nbt&}ZOb^2>J8Zb0p^bYau>dQ-Kh->di>5Y# zF|mg~57E3oJF`&Efsb%G8hoEc%7ZaX0Jqfj5{Yq~`xgZGu!wKJEey60ogAOHT#sQv zO!*0MKoMf4ey0!bvBpqq;#VU!!WjA@7u9MO5pL|C1(qoO*x(|L_q?40ntx9H5PD7RTPC0e6+n!KBa1n3Y zOfUJ0&ryYyU+M6^!*d#Z5C_v+sBYT1gsIu2$om}36|jZCpdp1HP=#0RoNzE8M(>$& z&W)cM|IjbJ8Gg@0#{AoLFy>I(vnT>O4Uppsq3*G1)0D8Wn`sUlph02Jk<@P>~K$(ah-$g9YFK`U{7R zu_0O~gV46%$q$mfaQ%f-iUJ5_xxMRzXvS$IdnBYD4~9Zd{Fk@iXBbW;`XOm5@Mv{Fagk@{d1)+P-q4>l zvsMnZD$%tUfkw z>f*)UvvHKRxNGjCNyWO15oo`yV54i<5kJ$)aQVi!xCbAg?Rtb@|DuOz~Zu+!sdHq-prJa;efWH!Z{4`x@O=&CjFb541MWOpIHu)ew2J92_D}D6$7%Csfb=1hIyi6yYv{#44 zRvv?I3%=&Zy6}6zC)x8OV6BosEZUU+y6V2G+miJAk0w8P9{3q;@v*APw6W(o&WfXI zN$y-RciPm3FlOuO#t@mNP!R|s=NwTfM%hNh0E zNR_+Z02F(l@7)1*&PyjNGVl^Ze!gd)5@3y#c!>yq*P}(9IA}&s&#=CC;X$95JNH0f zZ+Gzy3K(||_P~_k(uy6SnRM>Odg+v6#^f*d(MVi3gyHPBNc)uM){bLz zujI|fxC(!1w>gP>E4e_U!lJFa=SnMbldi4Hfr;TQ#OqcamUBSU{`kkemN_Xwnk+)j&)Ts45B#{2<88us2ZUfMHZy% z0^{S{VRp-IzQ6B-VbJE(4dgqI6OYb{eq1}y%Yqw(Uw}ie;9>Lvk9|-%9VXrAilXb_ z&x8}rCNBbG4qX+SQheP9?zlVQyhG&AYW$8T-XfP7{Fhc17r?YRP5;6CsH24KdneR>I#P>f;+Cg@^2bDs_q z_R3!xLE*TzCorg0cmLC~nfp}ZF5>%N$Vdh9<0niw4CFfoFIXIIj05(283SKNNk`+? z`JHmAiwdIfJM0k>7tiNE+Slf>^H-L*%upC2D>Nyg&oP`1Ao|$sAWM@nRiK6Dj=Nvf zkGa!-?t?(A@H@gO1Z!<0Lwgp@gxvb8c0M+`pwnTTN}g=LzN)lg8}2r!sV=oLM3KgW zhT;|{%|~jr_>#w!%-JAP;?twdmqD0jl!^Hc0W~FN#*=p|x4vl)P!djeRr9IT)E$@a zefk-E?KwBC04U6PnkmP_eKdT^$C*rizkh4JO+Cgt^`aE@J`uP&9#KgVb#G^20EN-% z;WB>hgFUSuMemh-O*)6)m!najiP*YI#TMU(>k-qp1K`Yp}$hM80(hIlidz_7rTp$c*roaO@ zvZvxdf*73|1O?|)0 zowBiUI;KZ^=K%6cL!X5*!rE~rZ(Ngw5ppKPt|u!Qsv-Y;bvZf=5`MezQJvhK@N_JB zB-1LR)z&~-gIE7%+Zv@!!bCd5d4X8r5Id*6qFSfSb%X|NUv}1hfnG))Myu&v60tSb7K7z@S0`3Vxk65N!fuv?h>J=^rrb;Pg%0%TB0V5~ z-23|adnf}Dh7O19h1bp`r5&4km=B5YL*At~wRS-@9n;zL{(8JK>rRHht<%c3RUZ1} zKC~nGv1lk~bovL3EH3k1dIaICa8Iq9u=9@DxK0LL%QO5e&HGFz90R8LjGVu8{k{)Z zIq3mWU*p;P)jByoMRU(I{T5QQ?=(k5UNZ-yuhRT+zIj&9PehP6AD@;OJcs>m z73}Scep{UJm%Z>^YPbRtz^x9UR=03LPAdngHV0p9l1zsFNJby&|YX9W12+4ZYA82Rv! z597}S{-&$*^DJssIZ~p0*GlP+tv*EWzN$FvyrF$%9n1u0%*&-Y7>^C8kk1yGGQM~PCc-0WrI8&-~qRhYY_?EqM_*y1*-KOT(=5_WWpRVhCjsHX1 zTL4wvb#KE*DWw}E6;O~CP`ag+lJ1c1?vR!aMWnmC8)*gU?vn00!~uNw(dWM3=X?L} z%=gWFGwLuS9DcF)+G}0wTGy3h5FpbA@}k4M-&rTK17O*fIS{pj1d@q_)7G85sp{W- zsmriG<7nYUA6UaiPlf-blxEd&4`~7n=Z0lgkqMHAmF|bx6Q*&iDz)mklIL9nj_S4d zVT7JW&-w5`??3apXxeGr|6%gA2VT25MGCLR2a(E;KK`Kxq8Ao%OmTZ*X=}hj zVGEMGJa%~tk#t2cIJs#}ATaVtm8VU8axO29`h97`nDI~zHvitIBkvvNJ_-`T0 z(3Lvv3L7fty=@<4TBz9m=SkYxJgVCKHlFK@$k{0~O9wPix!c!UF^pIIEXZVeHc!Z( zU9(6weDBDQt(Y?a^QGw5Elm`o2exi)nC2hmV?Y{P{}Aw3@qX-8_^3^lLPj9G+Qe;{VH`-0LfG#7&!%)qaF|50`6a>bLtM98St zAPgv>lwCKs^oFm0Q<$m=l7WKZWf2Mj=be4w+%nM#5T$!k9_xgYihr1N0*Y zH_v3dGbMB|r*BOz=-L$6+Dxpi`bWNwvOcjp`+yj`hf$5U<)>0Prq~&6u z(Qa)AP@Yd~yVY8WazM_jJvljjVKPFW@Y5I|W#J_ADEk_(0>LL8k5$0aD0}$XKV7;l|fq>%-uXsoZ7 zglr+=7WkJCxD#|3dTlU+d(>$6UbnoZqC!a3Da4bJ2M2U%%v5>FRfqXQFpmUA8t&{V8_fyYU? zy}yX>WJgL(ZuO+J%K<{Oin}vBZ?05##D8_j;|ubA$v3iMlIM>hNSUkM0aSJy)7!*> z5GJ(A_KCuDm562ghMvLXCg1eJ55z9L*ssL`o-pwvFmPJ-mLf>Rd`|KAQ7!I7i<;NW z)nkMn6gq~x zss3BDtxq$lI+7>Xf3!NB&mMQZTzxpN-aGGB>u5xNddA~M?jk}wCGq7lT)fVdiO>B|a_bx^3UW5!B^5iI zV}*vkJ4GH9)rOZcS1Y9FOIe7bES6TfZDevT-W#DMY+9RBJmR9%)0NAmv2G z(XUzAU5fx4vmRFaq1L|ID^jh^Dr&%Re{l{)UvFqIU*#!8`TosFohAw&mvO*?A*bb% z$tkA$uhhAb1}n5nSC7sz`={vpa|48#$M1i-b#-Z1N0^A~U;dD_O3ae#yk;fAcyLq{ z4wiua&!aoy@glU2-EkUc=&VRp)FS~1*m`0$^dIuc70LbGo!S#tZqZtCzA|yS-hAp` zTcdZuIE(^oiaOu?@%`J|;TBN~zE=m4ekf956NJXfWmBC~y(l_?8F=UJdZS1}@A!E#G(JNRFO|jfUJV@2cV6IEj~TR&)+D{$-5M@@bkJb+*sn|StA%AzI6{-tzfsEO8AFL-* zfI!{zY3qaU83Ye!_}xJ81GHS?8KyuC-~ch;@PEeuJO2lB{abk-IggLWHXlnNnL!}S zT{EYlpQtJ~?Z$#))}6hsTs>AmR`&W-Tp|D0u0N=Zj*k}VGOWVxA8)^2>1TcVwKFnW zm#S}|zqjIDMW~mAT+ehf)w+FT`ik2j*(?zVB4A?j2~{Av$lMls>yjnhQ{7uat1zvppk1C3RE@6sMp25i4EPU9)q9J2U zJQQY{V4gDk@iDpC@D{fFVr3!AY~2H>nd@HCVCzI5$sajf*VyY7r=vx*C=eRobDeX2V7)?H!SG12p^%c_Aw>8};B;Sw_y`{LsQLIZ;hq3i> z1=QzLy_yweDiM0)m<5=SP%{5WF5RsP)e>n42%I^yORYxlnz$zoSnzL-R5`2T>GSC1 zm$_-E>xRI(2r|}bqVD;Qb8OyUo5)t0L!$uOF-YM^a(r74Er&rWmWi>JHoEhEzkal^@-$qdB#cFJnGBR+$~&bs`?k(_FbWhNm+OUHp&p&C@p$snDEbX`W1c zR67{dct>K9({yo9he5{0>!eEq%mx~s`sV1@N2Nqoq@)jwJey4S$s92A-CSP63q*Wt)O!XE7 zS5|XL%5aiViS^^d2P|1QAk-*ZVU-XV$lSBL%RB`Ns%P3_t-&4!oJ6aqUV9KMtT`%-%VGV)q^{+>CSL3r>LxO9ocMuy`kK4@Z&>Dwa)U$uz}JSHd6w(>m(>>7(%U z8|6q0jw!w}5xK_8cjq7Gqo9L0zMZTI(4Jlbst)raZ<$WXNB!`i>#djdh?SZ2x zY+niV>(`Iw#IuBP5@+#1!gYdG+kLmH;s;-hBa1H;+pNheDYS~PcYP#nqZiKSCK~qs z$I^ROP(Y;yvWMYDh z5_z=IN=KrBP*cfiuM6)D z|HuwzbF3w6TZr*WL4Yv|sXhiX93!=&Cf&72zwi8kcqcG4lm^-@ftRkpDurNWMW2;K z{f!Cn#-vCd0>}eiyQU-(4`<;4Bn;kC*b{I?hm>Eoy-mDd-9ovvzfe16wGe?+^y(Ac z`{WQZR06sOk9Na<7F*^C=4YE2ugop|w&(7uWiK_s58y^WsyZyt8wwM)PMa~PSg)>< zKtA4TzJLnnlWL&#Pg#j+xFdt!m%&hm;k3gRF=6R!$UTrB_(Vn4+Qy1)sx|!F)J<=@ z^^O^$rR9|S+*wIuxN?}Daw1UG?N_{KiTGeMFGaA%b*OL(O;q>3kZ&8b!SzwZ(J@rm zS|@eCng0W5hs<(V1T3IL=`XF|)msV4LBuHRN)lf)*rU2<4)w*x>a;!m8U-yi{0$t; z1YLE9z87Newzix%)$6u}{Xyu|V_}f8&pCAhZU!ZYsEAu)MVza%=Z*l`e!{?u@<@FK zo&cP8?xu@nA^%yRDUsbrcl?$jPD-!yMOP}TE2dmdTyt`B<|h3|UE}ZhGFxftbzfV3 z2M0MQi%cgtNI+b940@q+hp125Cyq|=E>;c!WC*HB5NTf65#ivu;1s<&5E|GKhU2IV@h_Sb)U|DL_*FnC3zvvK=X`O? zGJvr!`5R$8F=cP-d1$#(bxoe&==_idbimJx9#b=8QcyTDN49EkPxHI?gMGk*D{Rx) zuLeE;&d{r@g&sT?nM9bnADc0kRdu8z{W%w5oO9U2mcRaIba7!}2nJ8B*hRLDnddk~ z9-)!HXVdt8tP^jI|bNK)ex81A5vZ-{J)eWmV}7nPRE7gtKg^$R~Pc5V7vcV>oJTf@ZhX zsxo+*rX%o8KPkK}-I}jefa`sEx@53!SAx471sXWnyhkUpb=1 zl2Tm~x{6W`j=pq@rg$y_(%`WQJ1)BovQ=hnVHIag!jeTmM6%Ru9R+3F_rV`b=af<} z=Tg6J>*)%&DV6@(jiLPZ>(0@LF&x=nbfo6>rovMpeL03VML<6jtXcC^4?pI84TFnz z!&=t)Rsn(9qd5bC;aKR`_nW)P-3HG;w=!*?YsOx=@>9z=6th)TTHeY(9sZr$sEhAX z@*Gr~H1H#wVey&?4?cp2Mde!TDA?otP83gBsFszNMs2>^=sMw`?2Vw_=- z^ivj{i+u4kkEz);D=0qoRH4f+8UQzDiMXH@03CBJ-a1DVmbKy5u|%JoTQar9sgU=Z zJ!V55wV>bAGz3N<<>(HYi%cz4rH;6%*Nk?@m_@t6&as6C!U=r zR!@yiGD-ydNYaZyD|tH42|+A%IPy#m;W;qJs$46{ZwrOiobZLk~K%#w9ieB1j8s^072@Rxc8>M$3NT*z0$04sbS~;S|}9XPFI7 zf}VG^0wB55btCx4jKk6Ft_{`Fd&PZrUGNGRLgMZkwxPfR~XK|7RMcbo3Kl%GK#WzLOdV3(0`;OW&ok}Z6T zo03OEkjwxXFUASSdM1$T`cO93xB2GAAk|PAG|;F4*u_X#)W<6l>zhy?<~#>ZeB4Th z(|Plx5mTY6ElG~B$Swf6KL*`hPr+MC@ILjHR@Q1MKa2SJ!<*ont9W{BUthkn=+bVy zFBL1_qCpUa3Oa{)d+vKbu2d|huVS?5H{KaYp8MT3+djXiQbge1GW%{_%ku-+9m+EM zNRlLXV5K|_m?|*4;QMt7rHRPe0bK||kXuw7ewRw(RP$}4Ohn^;x3JINkW3>5x~wV# zU$Ye-i0yxbANj|74QRDm&7TtLGb@U5lrT7{OG{toRH(SG3VgFL>Q+yyPL)U$o9YGd zi`_HmeOxrr`~3|TMab9G&9ZOdh}*4%+>DNp86mlP=@clKh+dxh>b|K*jhiVZW|0%@ zmj^}IM}Q;QZe2clzxiwR`w#ZOIn8=y-ShN9&{Jb_cQ%JFOMtRbB)O0aS?dTyriM=Z zye$zkkftAHuj1f`t&??wwoHmU!x!VFnI>oHU6L4wlUWZpVFt2V-d#1RG^YNYRQY)~ zRYD6@_1|3E1-m7Ty>J*>$^hJYSnizqj?N8wjAPUh)Nwb(q=5hTMLBJ3)T50p9&ptJEDU$x0|OIkTM{sA{5p$UP3iK;HY-) z6c-o6CrbkCByE()La1(IY{=4`MmRuS%Uc++!D$8G6X9!mF?~+h@5NQ_3edC;7yhBo+=oh=cauB zG4SrrPp`tDJIJqsgZK>ODes&xnqc>3-PZmqPi5G+&K4UBLNYkXz%#-2SW*12$&Qm? z^uqnvCkYsTfUt|Llc&<4L#gRZJ{(?K?zkVH$*s$!ljv+gyxxm}vfkO1Na z9B+cfztt)=ybC=~cwzGhaJfpS4|do50ah|2K(vX(50GGjz|#=>l~DpRX3x7~-Knd2 z`jS=$$Nf)}FR46C(jr^Zaa+-JJR5$+I8CRR^qklYC5J&&tCjJkB8ZWrSvTlTrl zqq*?BOW-9=uv!JA(}OS{g~PSIfVV?_GqLyWz6%g#vF!yb@}01c)wHqY!(O~re?6`Qb z8jpRmj1I~T-JV^9u5B&J{O$yFuIL1N48YY=t1=?W9nv(vm|oPLofCO5nA~=swDwR; z+?Wu=wDQC64?WL!wctrFN>oa1;3x+%`gH3dYwaO#IHmDm@672j@TsYH<|l{us@e_n z?tO!<;X=-K<_Dc`I+RJvP0z*Qu=IM7lvo(z9}rzQyI6%bz~<3-pQ~(J<%o(bIw;G&a^vNRYo$5Ne&&a2I#v3 zHt2EX=}{0z0I1NUK-(W=J?JdSb>OxVPCC((BO^q?ZNM8L;0U%l{k1<*@wTEPyD^l^ z944)ZI!F|>G}(u;W1SW_S*QC}4h7$!dOPe%z5L(15}YaL9p((p{YLkAvW6Y1%{s5?4%4tfTf&pai3gL6H}EW+5gzG5^!S#s zhICpewuW3A@({jNK)w_<`4%m84ZyUDM_N?c}$@jMi8r$+|24FA5ITIWxb z=PHSRla=s}FW+qbU=jTk3r`2JHhx?-@Yow<9--4Md|SWG+~pfUC|O5kroG5rDK+yN z&)s@es+_u^kt zV&DO>!F_W()E1qc$&vuKQSB#WD)*=xeYcYHk;MRbq$5BmQjQ+LMbK_;`par>f$9gC zCKdyV?XG%{f*QJdOu^R<2unQfQ;K2rKIg<=?l^)2o6OQ(5_0SKt@;!_N(5E&tnGqeLRQVR{e znp;>8BHJ&W4h(=-*QLb|ANb!wdqBbQUp7ag$O9`b%j&de+UJZ0H}2i>RTO*1*fu^l z62i?btGCh!|F|i~a;t*q@mlc}i1?j-7;`U?D(qa)?GmFZ>cxpo!@!Y3?(x-SWlbnhHN<1kI) zz!4pxi07p{sPx!GI3OcVW9!*NJHIjiZ%uSpWpmzE?m?#Z zTpeTlV-?WFP#h~Y>_0$A#KD3$)WGHSum9Oy9HlYff()iUWPuJpfTAAP?g`{y>L)H% z$y7!*oLZ_=Tp+q^Xq%O2gLLu<=(Pc8@u*i&2Gv`}-I6SmnwqcG`BTroa00 zWtM)O7{4M)4j5T*wU;$4oKSc|1lN6qij!Lz>DP0?6Zd?dzTVL5y!H=XFZN!&_1^=y z${b6sVy;`ZlgOhwR(IQ@ZagG2F3G&%fW=jThIhZLluUD&*DAIB#rZR*-z-dQ$g8tgzXtQ`mt0$GudCaE4e6;^$DaX9L2 z0y~o>VdWzF8f9Z^A7GyaThX_cl0pHN)E}dW)4cfcEvt%46ai#L;RAw0 zU|AI6GoEg{NXvUjnO$LEqz!-&)6Ev}T%MrUWp@}Afa(t1;jVRG}043<*_9OLI zq@W#Tx0E7Up|_3boTv`QtK2A;uq<(rFkZ+TLr`e zJer_KpEM*80H`gipwa~X$=z6z;PU~0Mw;dP;YDQE&RgDceV7h_jApz6R_z3O{4d1O zw=(*grt5|In@?{Lf9llZnhbU`Pz8bV<0IgC&NcrGWfu?#bO;(mkp`F@!1N!%yR?9P zJ=-A{h^X3`A__BeUq%62>ET6qSH}ctOhPiMR4o1q{rc(sP<#5mYSVd$jo<|<{MxJR zj%%?ako_t2Yb;h%=YUAac--9MLAggMrOUngMH8r5VW%QMgYqi)uzR+osoZ;xB0D#S z!TW4?yz$Wi@jQxnR=af?p$Vq>NQM*pT+~b?;zO5fbjU%2*JDr5W)Ld{k~Y-=wqQD+ zPH{l`5}(EE>}9cvQK_zpm-g(RlyjrPF00&p&6$kPd)9aka737rIKI{M2BpWAjjokz z!s59+SJ8o`nk;_q zsfT>af8qri_JQOu%sCy$m`(qtrHDOk+Jox3&oFPZzr@gs=boiRP8>odZ9h`m{;xyg zi4y8EzpI3{yQI6V!;+x)rp{CgEBbClML$@~u*48m)B3TPJ>NZ9iY-rbf4LhVu4waq zR+8Sj-=LU($b3iP4KHCw!*JX795S+j9PL@0XZV)7)#FVwrfNCuDGZXh574BTPeioM zH-ZZ+w68CaGcS29 zx3F*Sc86XaZWfGrccD;v6}vW#Ql!1PBgUif{%*bCa{~?QLvx?S5?pD)5>VpXqvWrq zgbS^j9|EJ?<)p(_RWgsAO9ddP@&H7R{g)@=8bx9LH20(mken9ocR$xdwO9jm4wO&UdzM=bp29F z_(=#_u7%eXV|bot17&b(GX=Tk93LZKsKEK@B*My|r;Mex z_{s(^7b@eg3V#(eT>rJ|F8=I>UX{Lz^5#yb5qY<6|AS6hCvBNv5$0S(bd<(-Xpn@H4ToBRH_{Er06W%r>9?}w5#DVOh*&V~P)D^W zGp}wTZBfE_;N?5j7g{H<@CL*>&?R7=^y+yx#FqMO>Ai@#1`oL62c;zW4+0OE3Bw3} z6imq%#Fj~He940iezxcxo00^2_~wYJ4p$^DF60aVk#(ELn@@rBuZomKoMkc3+*|tB z6h}(yD(ijV!~972n=Y?YWH~W~$b2pFKUP!<(0c6l>9i{?*KE$bx%fds&9CG9x+dCi z-M-R=EyT;;wwXY><&*fU+D$j~QNme@8K4eFDn+i6@s@|KMn=JhAd5q$!z5)m6?g5U zF4}rei2oCJq}>4f%(|*eX9#~#4;yEOWOWV#f?_b^-p-H5Ay9Z{%rL*G;g5Om$x@@i zG^fa|bATyjrq|#-FT-+&P3AYA+eY2BnB=o-d6c=cU7PjwT)_J=RKybsj3Ih4_d#w| z?lGhzHn=VoC)gdL-w9@UAAlMW5tws{nI2-0auy(Nfq&@*T=qw23N9I?aDfaz0iqfRJ6K0Wd-1{1DoaWXfgWJCfzv!#$ptPx z8wC<5{2~m%f(Ro=RmmI6FpgMeON#&qzFI^@sus5Jxrt)ZrR_+g*_bUl=X~Fu{sDB=8?hlWrZ*>vHwWL^W zcWgjh`H6w5x7l^MSNQ(V6g7I4-m`I!yZwEr}-@auTe-a;~RW8RLDs~$; zS&-vHvaIzxTOqF7xqov*(kEy04Y~6`zTT61;I<__VRy{VZ})A%EmK z^EA;CS32}wjY+NNf20J4q05sN(_@uo!90j{)G(Fy)-QT#1`~?+-xK1D$x7 zvOk`wj=W7jiw#8|$SFDR%>%hC;8RbQ>Y=EJo9calWI0`~P{Gf|MGUNtqfx&6q0=S> zfp*Nww~=>T&OFFq8-a5Q^tCr4;s5#fPr`}tI4TAS%m@QZUP3ANNkhT^R{;P;*i#BV zxyLb)xC_18+0mrJ3(ID`@4&{in+5JUFc=mj^ zb_hP1ZvkZt2o8MS2Ndyi*bh(lxE%=62A)-|o_2>30h(kx;PW9|Ux)%pU^X^3OBko+ zd`N!2pBCzF;L#j^ql>6~^etkoN86FDB zTBmAeNIkkRo5{Wh=sd!&O|3X0O0mG+IrxP8v-cUsE}ZNVfVq718NKZDKMw&PE%QrA zfrpr!DbsC~`_p$LDw7CC3 zoT5%Uowqn_y$0YcKeppqnm5P~Xp4yi#?-dP&o$rteA{W~@i2lDbu)`-Z;b2EJ>s;& zWa<9C?Xm_`jMG^H>eO8h6q-Wf_etBI)HCoY0YxfVa^6h0Q{zJW7cX8ETEVrGs=Wb+ z`E+xL8aOUoUS8@=N4LWTAZl+(Us-qjQJc1$uUEG#t~#2dl}%Ohr109LyJ0=&h3E1B zF*Y*)EV`(KY`RqWe75eF_tCiL*)df7_K0Wx!+$>o(iB+~{EszClvxHvh&jv>DZukJ z|4zJHm3@3Azo4E$c$<-7$7gt&c@~9iH_egstwga)y8ypLA?N52^i1`t*%7q#Lcgf_ zoV|Wv&BJ=~aHI~)G}6>UKW|hv2Fb!s9;gj|4UiJ$o%`x_J7BKcZxLTmU#!_ifkw!z zXeB2tYu7Y*c19JosUSjp0DQx#LAx9n4JY$C_0=x)_lE#^H?HD~vu*a!A;SZb0fg`W zEa89F@*DL(lGdiW&aFsSjN;+U6_;?sq{8a4%XLRmj9w;A4cQ$gkE_H$hsx+4()2gp zOfEr0pRCu$TXlev^i-->gKYFE&Jt@nv?XJ|*1GK0_oM`g3ATv2=RaKsVa0Dn>X;XT zJKb*$XS7hEySUb~(bR!$6(?~0J?EN=dUx*bU?hvz&)+{LR`Ic^iHV8f#Q{IuN@q0z zm^koYWRc@25a}$6WzcHYZ6pu6ma@b>kqbG6SQ@y}Ig3vx{nSdgE3m@^(+OoQ(ma=Mw%I|F$YC>y{!ZX`M=cXSKLRk#VkBg_BtjN#@26LYi3wc; zj6-YE7r;-Z8;!w)gTxLNvH}zh(dTL-NI9R#Vy8(T5rH9^Jt zTJm;T<<=WfM+Ebhn)ilVAKV^4J3`*JO*~Z_HGLpyxbDMdtoQ|I$93DF*oj^dD8V6Y z|4bSYc=y5W*Ge#4_-CZSfwmh8tb5jq%GzqYFtM=wfkt2EPvFZ_TzI&eBjXBNxH#@f zvYERxGBSGJ7ouN3Rje8OHYxN((8I&Sa4T9^b_lM9T%__l*i7&yAR$4G;>|zD$-j3f zodU#H>l*J=HJ~+A@*v^IfzOV~iK`43@W?s{jSY>bXpT;^1Px508Re^1ZRIi-U7tlD zr5wqHn_y;;XM+5T@7z3|V=%DwDt&4TWuz5zhm+tn3>&DPKmdV!to1ix3k<6I%i?ZH zRX5A!P{(wslnFS5QzRWdXibCqTm8Nm^Y)c3>%F~*5PhnvyC-Oieb{^<0Nl!E`Zz)( zgVNH{I&|QciNMe|>4LJfDykY6dg& zD%~p6Sg)Ctb6Uj3O3lOOjSWi5oh#sNnvkU~k?)btbNjMw7mEi&#(?D}je~axoEke# z(!4XLjb9}lcfA{W%+8JnIU4OE0$E^)RU1&rg)8UO?(=3yovIMKEFqwRQB576bED5p zU;vC)d={(13uZ-~oO%c}fh||7e*RQ&FwS9atnj9EOn)-{{qOveXm0S|{` zdwyq1%dUmLdz#Yd6J|I0;eLB!&_#T|qL_}~^;_f-fru#Ysu>e&$N`xX3iumrpsA%r zrsJ{31o3Ta6ZF2_mIw$8YE)W+0oRk2&S0|xyiQx7rUJm5^bfMTn3$-Fy1#JS4*#(% z{x?dz*%mnq`AdBqk0TSA!QG95tC{243Vlsa1mXpks~o>-lN~i>! zz5_0{?*Q3iZNPNNyyiq&Nf?OVt!i?!5`X$K4W6JMaC7Od_1U-$1AcT62#?D_zyRsg z3UKrlttnJ~X@ySt3ZEgKxo1p{U;jc27~BTs=SxmN?`~lQBF+{g6^1Cl*{2;kGuPjr z!T&$jJ~5X4AD4kNcg49X;8qfYkcc{f%_HmhJDxYZha>M{RX5p>%ILRi6}$5IKIC+^ z&*6Fnkmls+DbYtV3qsJpMgvmc{xKQ=OlG%-g^$70qI$8C*~tdnil^ILzI3v|tv*+) zt=>0#iAu@M-* z7c01XhSp%fWv;GXsZ4oCw0J=4X{vj&G;PL^tyhCe)gb0+d<-Wr(41;$L1aPN_jT+ zDh@Lny1g6%E#L=)FcmO(!vO~7%$87vSfpa<_t+gQDuLn`-`V%9a<%HIK(G))`8WQ@ z_G`dNzfSsU`Q;@)^{2-4y?j)<8jeRJNeQ9794)Nr_<;p@rFr|B>EomY6m+wBA{E7g zirTTMhIVHXrqe{!>`gCSp9VH2j70_xH>ivXHJs99=*PynGriYaKdDaM61N^Hw`u;m z2gZQD|JvM~BSl6tuF z`gp7myZ>vhc;3!H(bilyGMIVxe+(9Da_o_6mD}L&SD|oFk7c?!G{Xip0d|t%ey#^1 zO{Q{Dd_I6@TrmGhl>WU2PTYUy98Hyszct)RrkJfankHD4T%XHZ_;**xoeO>h;t8Ft z6ocn-KO(&z?4wklt5(R?9V=m)&gvBnKd)YMk`JvH$1k|zkmU}*WPgw%f~4P~ry1V< z|2F8zuz79-fyBg|!~MDJB>sIK|9s)lsYraQI@trsfznxcR_chqv#*~g&6$jxbMjlL|P`C{N49W zpyXY@_uuVbXIIkW=ZGEQAR7g&XcD&ADmU4b_nqF`qW^M5sF32%jF4~3(eq^!ZSF=E|{=B|71(o)lui&GzAMSZy-jr<0OiXqMyoO_3 z5MRzzw+EmLbqY~p-HT8#i&!}HVQO!srX6lpz)$tsvZjE*FS@Jh&>K@K7BsV-0JaK- z%Y%Q`#nVjITgHi{_xx{u+M(lbM;QZ|jzU4j7}Y;I@fJcKrr0Lv!wl1S_Cn!O@&05o z4nh_)F4=-SW4in60mw6lBdl<5?ruC>{tRKLdIn~VRUjL*p?&auhSSKk80c!I;(=TY1PN{qjDPmDFo{)s8i zRl8WH$IX-`f9IpHoZ}-uw|R2@(XSLl^trJtN$mK5Yi*E7|NaPFw;vaX;IXnZpakU% zabu?7eRCVL3h%n30Q=_;{e>qS68+U}@=jl0*wc@XHojk(WJE`HBF(ejJYzo(Z7tX% z0#(A_H9Y?qK4O``V@Lrd7f>*M-*SPkoUsN10sSl(zVE8%$@ETCe+`0 zua9QwMChF+U{^TF2SMY%d!v1_zT}{NRb%65pu71Eh@Ahs>;L`Y=K%6sD>QuW#?krj zkwC7qWCj!)sna0l(hV!#Doir&&v2qayFayO-aWK0w$ugA?16j1!`_L4i92N~y!$Ah z7RR1KJ>!o9AaC&$W#ruj$HaHj9bNJ=t5iyj{N>XkZw>?fxc1y5Ff&r<>P8Cn(}I4~ zMni|S#vCDLyufS;)Q`FiUYTA9+=3*X+M9k}(NN6~e)1-aB5e#Et7|NzsvEsU7R$fg+cpt&_GxmnGr{l~qH2+1 zv9p%cn-ARv!uyF6K%8WK)b6YLOg(*a5w9AfirP~Kz=+)c`V>eYNIjpz1`SF2dw1(> z;`Tns*RTwCdF3yPiD0Y{%qgS$>qKchX=f!t?-tONinWycL|8OIs50AcdbV}>Loybz zs{4Lew?UFkD`a4NBBlWr(SMim#%j0Ynn9iMv*RC^UH z4xZ6G6OE-AFHjd%765z`AhU$Cbr`&Ct_)~aT9!WTBziU!ppzvTtv5`nY3#ou2~RZKlzyZ-C4Qx~?P`9W!?oGv_E<_t z!~hpGJQX;r2|b&&+n#}W-WV`6z^K9ircK3s+tPZc21d0U*1e@A-}uqo156owSW|w} z1)IxcHvEa^==cK;4jfbgu;z{JKOuvYF!N4g>`1Xp{~z9DmRs`rEl00|KsBgWk>?1& z;lDT5sGyd|emf@A7kXW^=L)!!nO+a2?~#fmNi*`10Gah-`Ce_5@zsLn0ZATVKj&tr z*%vzU?uuitXMGii35R43SW7sO(X+>%0&y>LmW&h)Fu&UqM6}=e7VdIhX_)rsyv73R zNl`f#b$Yu82%v?);=VeuJ6xm95KcDUUuvos)k!%ly)fsh z!8yI*EQR-opk4MeC%G;bkqxV z*I@rpFT0HoGQM)_3a+z_>1;P1agron3SS`ulLzyE(;%jZlY3w*L~3 z&`d+VRPI@*!>H!{63QE?d&7YTC+BwgrXHOi_xL0^gYHPK)gmU)ZUAFnaOw*f{{3uF z3?}q!55EhW&NWwzK>@E0Rd6s73vzjs)2mP=UY^OKbF(Z1w%^&-G|8F-hB6uKV)S>p zU9W%=R$-`AnLrNr<|eaF1Q?;E-|$S@h+uX8rH6<*C1qDyvN~vX-sp-vc9)C-adq62 zthOnjsH3JGGS~_Cfk5OIIY~;A#F|=OwF+GEf~n-S$aXK*dKaS4B@JP!`lqD`A)yaC zi{uu|Qc?a}C*|s|PKs5Yp(oo0ADDB7GsE!bEdDfiuQT7Cic@HE$`}qH`Fh4ZbRaD0 zXzip0sO8LclUo)tV8_e%3KG`4u{gNA<@qap62c($JaiunT*3Q?9J-JHNhfnVL~1y8 z-q43tR2o0CVb2s2%Dv9=OwJeVyH2ASmmxPO@G6p*tu$Q9)(1hmm0%|yNcujFfRd(9 z3Tlt&8hME4pR10t3xdQe@fx+*jY}L%hAS~>atAN z32mQS4wnN({CF0HpvOQ8*YyeUt!}23s+>&K^Hv^TfV%` z8ad0|Uf*!B!Cf18%if~u@h1FfkM$mZyqaMz{QDD8|6c<$MJZI0OpUIBjxPV1aEb?k5=Ndou;!H@;iDERU%RuKoJT^~L^G6P#|> zSx|NCdi7E20s8j~On%QBj#kZjbd@4^#(ig$$TWedM`<^{n-ry7|eU-?Vn`p^S>dOBk2^4A!k@eOI4sb0nKnSA}|`&bg)Od zvg0Sa&&xNR_p#}z{wPymIg4Al&Dzl%JWa}?436rhUzN#ftYIy-;e4&~pm*jnY`Xkb zj!e*tViS*fZFwngxKPUf{;mul{Z-Z^J(2RAvFzCT&@x>4ag6$8x#FE#vpKcFP`5?= zLbFBNiNBYl5BKwlfT5p#J*yL>E4GrXByfr*FBm;S z1d2ci60&+fcHSn6#MhDWIuRoK-xGy7iUEZm_y_&!GP^l}QGTz{sIXsiuC`jt7gG2( z#XVcO=}RS`TBL=u7JMO*gSrB?-@UoJ8#JHZ)Xtouk7}*f3_Y0J2tv?HO@yL}pi$u* zR%=PhYEvz&S4rfW7dL@GYlfPd9j&c&-q(bZ;;>=?8R6*18PQ`YOumZ^iSjve;>kKv zz>mj(JV1YNW^p(FqTGZQY+6DeOBfyl=Yf!Kx8KF@{j+M$nCJmbD4BdfYA(i(-dVa% zzPtcB5wmvpjgdvP?G=gh0dF`aQ&Ohv0G)Ojugx4?oF_FwdyYS=+fQtc0!jqnwU+|J zGTcra0E0T_7{$Y8wC;uEg* z4JMFhimZp?KzxC;k(N|*sTP_>mu|D4F~+WeYnyexd@C6c4$;3God9%O`c+)`(xD|_ z+3(QNTr4$nK}1#q>&R=5#}=_yHbqRfRGDCK*0^r%=vWOR8)bFXgROfZ?o%;GPKT#O zBI@oUoRX*jUU*3O1D5i6PPBNcDf7UY_Z?jd2qWdPOusZrxZF?B3Cm_5BrQbdSiCAi zH01}I6RHKdG=%Ahd6p{F;2u1h#8ReWSO&3(QR5f|L{|sR$*HRoBRP96AQx6g;5*iI zJ@SwmNK`nzU;m{COGByfyj96IdT#*ucf|bpL_S;pIoJ|-6PiiWx;?vqXgX>UM@tE@ zbz-PlW?h+q%AK_Ip4+IP7%cPdxp@cxa5L|u0(EVGuSOBE+f3YDp^+{FN1csB{+fIG zk7_ea)14L>?PfD;Q#bu#;jES70(u*2tGvySAI)eMOU^`dfBbUAQA9-h^yJG1iAS5z zD891dzARK0FZc%GDAYt-3xX;S%G7%f6kWgCn+{9X%A1sQKRpK8u1?PaOO*5;GrFx< zMTq+wyc-;`sG0qA4h}VCz87X3RMdTdcS^-mh??qsr1R8er|>Or=r0)~VJmz$y?J>@ z(+NZ)KN)K9%dVZRqQC>VXN%hNDoMM}4ZU2A)v1r`wS=;8!!S0WrxRKwajHaKYz>ou z^iarl`*GKJeh^F?Q-0QK-#t{-@UiYtr9@Tu-Z^90*R?J*9_S5HcYl2b>Agmk^Fmk8 zRa3B8Az|I&B+3jcD;~iN4cXgHtNk_W1Bp=h@WQ8;u4li@CMxjqhNu~MC7eU>u(o3%Ksy$sN<#@|03;w)5Vc2b?9FA1f;JU*!6f0%A z5WxQ6ht4O@Ygta;(Lx?)dJ^k+TH=~3mxU^RxEE3i2pjyX0`~*TPS3HZIv47b=%ReM6k3D&of69fh6Fn~8-a3K;+h`gW`11)o@coCrKSlt!YQkWR zPgF<~bPx=QCWejTfq;m#{PVQnvrUy-R%5F<}RB0YvhfJIGzCK~I5C$?`#yeoJ z>X}Lo;Yzc81i{u}#^2ZEuq$W+k2qhKm*;TaGisxr?{EXG=&kX_uQCmjZ%MB|bFzb2 z*I45+Fg26yZDoYM%B%y{XQMm6I?fc#MYT8O{Yp6!i`yDtr^#x*EKJ`m&TvmTdei?w_**Mb6k_TFZ_>ncdmyE<0q9hyP}$XAmbsn z8(V|DgU~#g&>fCB#}g%-qRn+}8A)+|;6PRSjh^<_Et+Bz;jIPs z^XK%No0F3m%4L+9EoIeLxtl5ZIPso?IL&c^^=#I@n2e12qWQ|v93@29Q$7e-Tpxnj zZ}px@^xEecV4pCo`v>x#I@2KE;OC1|j^x{`f5IDv1>0l;h3gOQVjmcZ^`S0f*V}Cd z>r9!78SCq9jwpf^5IbiH4oHgegDHLN%QxY|Sp0eb#?p_2n9VUIR=*6?FAE>emwKx4 zhWgS;KkxQKH&}{rPV5w??`|xCT*2urk0J>dY z0@ARm>df25uWC89McMNYAqvIsdiJjzK`??9LCVO!WIm*6HH9-l)uv-p8S8e@6P~Y} zyEe&LY@~pZ$b}ZT7M0*iT!r+u*W5hREL!(6ZW^OS|J zGxNo9Pm|Nl4LtPB6vhh5G)xeB{R46~iF+s?YBjpyGc|qPbS*j&67)WDygmK?7y_Jg zCs1n97_9N2eeABlB^x*d2g>M*czD=J&h=00iLf7-Nv8e}z|(nq%RwqvQp7}fdc ziB+Z{5m-QwGZ5I5U)5RfRBURIZ;s~`HF!^kO?oW=pXn&`8YdJe$xv1vat9?;jsBdd z@3{9iwH0QmT9S_CrjuKQ3w3`$;((*%`e*YB*5z$)teK?rCC*rJVrGLpq@>63O*P@z z0B_p4+;^JwvElr-Hz+)n6Kmf^rb^#Y?}Q__@J#RyWLU}EOpR&_51Fe;Tji^MKg4na zBIY7&NzCas^F)cFXbyd7uR8Iw=~j=0)J|qCpOL|2AhV;gDc%ZSk+DKeUyx9y8!r9m zY`mV9MYuBhb_aCk!3dq-@b~Gek{cY)&5?1jpaquSo+GY8uP2=X`zMN5Z|F4`AbwGl zg{p&kK=PaD*$g}TTd6)?Z7&V7>T>mjV@42aeCn6;DkGj#in4bb7Ny_8~ix z!0~KkbW(bdx!d3f?Q5RoPT{qULT1CnHN32Yw_`oj<5L$W@HHtuOdgK>fEjd~{xWP5 z>3J{t9;X4ps|)u;QrGj$eglDqI2@qD%&a%0$(KDjfDTg&ER8~;0xEE{HY9J5N;c_I z!G7&HDfghl1es>ZBGH$C zp0(wIhjfeh)zi;xUmLmsU9RAUAeoct2uOE~)=vdeAUM!?UvR7(KU$-6Y zTuCjUw@kj%tb&-c>%}Z{fyM0wu#}&_Mu(~saP6+)wHZZIH8-F9>F+ zZ8VppuF+1m5JPt+TO-i2Z7;7MOb~T9`aw~yCXZ*;RDeahUO2m zBXZ7bx0|#PsOxedVo9vCc?_7Se7jjl(Ld+jlY&x znurb-6X@B49VAcM)C-dQRr%=<1`HY_&|zo5vw6sON}wN2Pq1#)#m&@oDXT zELkrmcZ%?#-YhW!tp3ZhnQongRHemSAYg=b`1G@|dY#S^X(D}HEN+nJ=MLr1o}3zo zMGR;@4= zGhm~L6H@yHE{p3uU!m7}zi?o4lo&<&!{S;vrHhqrIapn$&K@gqKUbEg;Oz#*>zCeK zGASWb{dJzyw6K)9RXQwRqqvGOT9fp@eogX)t1#bb+9;p=6n>%{=SU~e#vJ?PDaDt@ z%Q+EmiXGQ+MD{4B<4}cb*DY*2yTTl7Eo6+7N$bc<#_7g$qOh)HUqVa^Ju4AH>GyN4G6z z>Yu{W#sUB2(w4HcYIvlux@uEd?S&cDuJtkFg$KOGnW(ByW-Bd{{C-cP6q`&r3jH3y z8CaiRl`fiMCd)5t^zjtRd{E1oDm`Qp!N>C9cd_!DoluwX$V_f2-4Yix=}RkDO0&cr zcV-G=PcX!CkbnIB_f(5dDbp4#YidakBn*UHv2?AMmYbqKe_tF0X##|=Xd+l!>H6F8 zcY8LxU+d?*K#O7h9o_3Rt`8ENC%r{;weU*$Qa3FUU%s1-NpA+Sr}IavgB-vW7*I|q zzEdtIbpBC$vi(L_p<;U8vD*N}<|=S#-@!SIwYx&T+gGGeaGn<*Y6i?aO)U`X6s$O^ zmbp#5{F)xTydG^+zFWC(%id*Hp}SFaas=Hh`+0I zkh0W#SRVK0Th4}@HI-kiUUSPwJB71^Z25|0ohE^%?8P)S^Hb>%V;s_InwM~7jl@wQD0|9_z zjy}_v+m%dxh+>EH5irDwrpz!V!|=hNhEbZ`U5|@e@}$tFAoixB_C#&v6@WpuE~;T5 z?XvmrJ=LY%1PQp)4h^Wd{AzplClQz@{=B6KQUU5Ge~*Ro0vMIlYUo%UEM5jvc?(%J zSu^Gw$&~P+8N(A_b23=t0FL+7a^LAO^sjygk6S(+dP-akVaZ&+`|crE}IDXr;7%TYpl4Fn41JBx<5wUO5suKWGM^LP?gebl76jS71M1TyhtGIY8oEu} zEIL0gYKqlN_M+T26{sB2#CpJrQL-L&L3tUkrZBw1kHAO%oU5g+j*0rPhMRj&^}0t) zea6%az0Z+_UyB-*JqDC4*dM13UYmXFY_^wNR*T|o!1f>Q%SZsG$7@Kc;~1QH%>lj| zHL?CCt!n5%9h3xUQr_dB%_C^PwyylA-M6d(Xr}ZA3|k6}<#zJJ3_gWGd>~>%{0ciX z&}+x10Oq_-Zu(%k5!iTRxqzur?SKJT;l0(!z3SFrhx}Z2MttVIO=V|iZ_Bg%dV^Ne z9~4DaiqpwMNF_^HEl&f};=9sP<+Q5z%em+^*{@k3Ai+*`8laf4ZFp$neaGjPq`R{-o<#QsaS<7ZXZs z5!ueA*2XSyO<%w7HlyAnMcM=EADC<(f1lZ_j&MV~$KM3KyB_$w6zbzO8~F9h-GgNp z>w3vu`z85QFJaK%o(h@hP-OE<(H%ynXJCM5-udOtE7kC4^LluWHIc{r1I+Er1I9Ec z!Kh}L+P83&bwzzil}~(W_>*u|%dN?sa^2`>SwFvaXtr!6HJ^bWcgAj(y35_I^&O{% zYWMN%H+?MEwDZ!Ad4lg2@f#hogmX9ys*zCQ|3ccYT?=;-yWy@B4WJVM9@?D5oVNx8 zreZpp$O^!bZMV%{KBv=`cSV@Y)5568Q|<`Bch~H70=Yck+qZli+l&CvAI~qR_kHa5 z7|k$`8S3k1y%s-I*q;CsCkD7F5Mk&zK2x6{T>J$0iC|m;B(gaQM8H-1f=g&wwyBO{ zN{}?spci2>sAg5jdlnXzQ1#vDgsxzwUILq3M`g*10!yv3dm~4F*9bsp%*ceiq2^PO ziphho0am61ki6a#0IHCE+6q6!q7wxVFvVLt9Q-|eXEp9afIz?LdGO-`r}xV2D2i+tnx=2 ziX!xP8f?thCN3`(mX#a*h7*3=HLAmY&t`%!_f~Xw^oh)Vs3&MO5~ad1pNSQ;!7|X6 z@XlDNAT1XiC(I3Gst`U?Fk3q8Il&4Xb|qTkPR!e6u3>RxjD;T(flJEUE!D9I;9#us zC~6>``#Y~m2a?X!)@yuGNIgRn7A#+%$*1FJxt#JS4E5n#PzeoA1f#AW^+ulS@BLUb znMz|!%U2Wu7!!l(DG}Grj|PONPlsDJDm3zbl_+y6k)?$kOVN%m>F{Mm@=!e z6lrhW_KgG3BUirjC5V(2wN`-}{W7V3X)c~W3t=Wt9G=xWw;I6m1KcL+|8+A@niYR?!6c22Fj2Okye@Dw%-x2nN~}@i8Zpb9An5}Ac7#2fo!^W0!p3b8x;G9-&%-0;*uQ{RGv@mZoLAQ;RTY{VS-yU1|OzU5ykrs=GC!EpSV$R3ce37>{1Ae&z=_v(=_Ef&*S%5(q>J*&kbYj1phf9J zp2_h%rNx=>ZTV48DJd=5@~7pjpEsm!86sYNtLz7Qu2=>3-%>XnV7cYQ!s+U?uT2yA z5_O_ZQ5pNpN~rQ^(@E&3&H2ACL39$5F-(_D;m?6LI35tdKelBWw>n@}s)gODL*IJI zAjtW#=CPTzb)*iVY?ndR8aF*`Y96T=V#o=Z{f~Bb2wy&2g-e$q80{r^-n~+-Eb-jt zWRe!B3cXD8hzmhbn68C1FL3KG(Q5#MaVOFdbR2ios&BR1118G=Zr}$A_*^e8`sqf$ z-5yqmFU+#;w|Kp;n84TFdxUj?zO*RZhLGk402wo?(Ypoo9(!&u$IHs&H?XR4)(R!?jML;99jj z&k;d#=U~3{9F&*NFV*Pw7UPnu8mawaPh3%`XxM9%=If*3%6b%1vm1D?jO6xf96Uk1 z;xl4$N~z~ld}!#u5J~#DIyyNlA=eav3M1%vU4Z-G6?ok`8P?yu$H8H(*I_0M*qyL% zA)g;*2Z_HCycBH{@AEFjBzHd_EiFwZcPAYCK2fS=nl1Hyb~i4dIScygxb`|zxIh&8 zC2QR%WQML&7U2as*y*NyLCFvoM$wh5Ecfj^Z^S6df|X2c22d9KP|WeXIS;|ccM z`cudy$w&mAJo6F&xP69CCC018@{x1fDQ5!LJL>s(r!Ek)>6XptGO*c?Vr|?%78QW# z4DFv9FNK`0szHtKv!u-3wv^$+#>Q9-Cz;pSJ^+^!zje0m4Em=66j*N}qClVV;q?T1 zE)k7+RN5_EPKSxAOvYt8zFEoa+d+F{?dN;A+|yWBg8O~zxm{%zQ$l;NW=V4B>D+)! z#WV53wA*H+u`PvtT+k;gl(D&i!}?kB*vAOwFkF8z#wVLW2Rja}hQ)gECUX#Fdh-$a z1gKy+J)Mc10p^@u;4Fz69w0~XZw1D9BK)PoUE`YzTo!-kgL@%!kW7G10n+hLc@OFq z!t}ETUmmO&zWpL!zCBy?2nD;1;Z-mYl)Q&^j8~r9T+BK`25q*59ZwMdgzpSb?Uni8 zuo7ugN1n0D$z;@~=iH5S_v<}0%Hw@-(OPV>gsglcGk#KjDl^Lx&x#|!yLRjZ(6&2M z&qcs)*fc*&*{S!^owOxp^Alq+lcZ|k^g*uoNd79BhJ8FsmncDAKy>BcW0@gcQvbMU zalTyY(G2K@55<8NcB7=zR+bT6jr$W06F>e1gkE)k_`A*9=bsV}K?5P#T_^>8QQ7H&A76qZEhy|txN5yB z{qUUSKV68FH3&_vX4}?j=~-YB{7raFY==f(#n*_#3z~q8nELOB&-TW;JM~Ad?awZ zA6`Uwe*q&3t0N-K6`^7qgIS>LdwsZ0UZTH5oCvZoU=Khslmho1oZ?H8dvS2TXj*xT ztGl1SP{9-feqfiho<42ML7>C;^IG5_%8)c=F2ZU{9^%+bsNejX#UhW_jo5-@64Ik^ z7wIU(uE%&EjgZA=u2dkI*~Ytx$fKBP@8kC9%iTro%d3x%%|v=KjbEDcLxpb?y)4dK z8;7>Qe20wbamD!}#?)sV)XqY;^vEB$J}dmp3~7Nl5*Wd&DzGfa)j+Nec9G!Ds&oIT{z{4OSlk{D# z02@6dK$n>kUjfW%I{oo}*mh}+`!~(?9)i^KqlxMLKs|AnW2N%>mP~{V^Ncr-ca)>O zyzX`yOW33^r(59{#+mpC&x8?TDR`cJZds^Bm-+lTZN(s>svAZ{fEDGWB`eB8qmp4h zyNy14@J!Jw-exXOS9@@1FVypD!J>&R1W;62*bpE#B(%O&YQXq@sHg9}BK_yA{QgFg zF->UKn`8PsqiGaxM6bv~GmU;XQ|n!o!>rf{tp=C&2PT>~el3m&mgsHo622iHS$?=2 zd>F}Kle`B%zYYy~v)&8WX2S48$&IYkzOa4)JSoszQUMZQvQKcZz0pV;Fn`R?pWG&E z`g1I7EvT*B&eFg2o)AZrlqbFNCwNdExBDVPP^~6%-EYxu6Yrjg=p=`cT$>nDGAd>}P6Wm%UVGIh=`thog}#lo9#$Gd%)BS{U_$DY~ciq>1EY=v81;Di-;btMhwwb1G54 z787QobtR6`*QG9fhS*s`kueeeQR>^kVCUeWcEbK?ApR4VNZMwARjlf1Z1MGM8V08E zNlrmVUvRw~wh;U{-HP6ddHj!fWaJ8B^6AM^Yrsk|5C|^3Svi0~g1}%hQHe&uLfSQJ zkP{XL=jecydk$dwYHBd*Fq)*7xLI$5|G$=y?Ooa#Z_>Vm)~xf^8&@}1J_!Q`gXOP{ z(za_zpXY5kUl1`Jx4Gi_@khfC(mnmcrlJPTTrq1Rb>V~MGjPG~jiU3{$Vb|wdliGQ zoTQ5_a%My=#^y|kTBC$}|9{;-83@q-cGiDAwqWX4YIkG6hDcoLCGn&ygC2nGJ)%39 zidJd;FC>SI_}H{~?O}o@Rbt;|R=)@|>N%V%5*ZgUj6GcFm~0#|p<%=g>#z{m&k<+% z`suCIQ2WQ~5HO2sBPk9XKq=6lEDaRq%-qO;<24gi{Lo>s^8UYX%0@oh!n1#0kgiNJ+S3h!d= z_eBzujXAmKE)h*vA)>vU4aB`N3UwOmVcykQdf5EKhD|&Qiy0F28Z!&|Y$1qWlVk`+5h3or*BNkhbVB zq`q^(rV<8+@#Sfk(ke%*Fgrkt#~ir=#EZ?=0i5Z73-w04|g} zJRo>-bje^-5q?}CA8-+-tl@P0)pqT(@8kx?B0XodtbtzlcyX@JEiU4gH~%Gds9xdv zUVg~WoG$uV* zKR2*+tF*{)iEmF{+4UKx-kt-f5o!2%`odqmQu2v;{5=j;GxI^7B29R~yoSN1Nso%H>1+@Zf>Y1_koJ4_1^UAb(2UN!XLP zkKRF)2c(@&(S=p0W^2a?4F^V(JQH+Mg4>X*cT$K9bH^>lnB4aAGuvi4uuiisWU& zGWzG-+qZ%e@_?UlNBT``=b6Mlr{4)FE3^;?ibSx-`2%M{6(krV-e?+UGS;WcGs!Q2 zb2sTD|HMHH$;%i+4xyXZ({SQcWfu81c3g8x2g64zIaa+f-dN)|^S?g6jv!EQ#7zPa zm=&N%R(qVOk+(U4@Z~}r4|C9*!Ju6X7rw&gG3ma|7k;%cj%n6vfhL5lwv5J16}y9t zs6}*Jz!qL zGWm^sIsHybT7b#$ckoq#3)8t?tJxy^hmn>zqTg$5gqYZz$Vt@ zrWj!#*Wa#mvjP!UNk9Y%2 z(c?NWZp~~-<-^|pJvR)JwrL>Vs%mRAkzu`&E5>V8c!Raju+AU3-}9t_)S(%Y?anII zYe~LtY4G{gyUrv}&I|4N{r{hDBn-xGlLv0G@EPC8$-vAKab<&P&$4yC3Ei$lzPcp7 z6et0YXFpb2w(5+$k06&)Itr=t{J%FAP_r9BD$Gl}eW@)sot-@KMJHtT6cHHwj}DW3 zIJ-XiqRdDmQo?2>+;*By?-nVZ7JYr1_+qDh2J~JjeEOePSJJG*04ewfG+#s|t~Nw5 zo>f89BwrhX$?lbg7aqmNRt?P-Z@}2WUVA=%u$;Vy8+aXyyuC3Vm$EP(`f4eE|7?cLzhi zX83<0S2Xv?6_}5gE@|U91$P{&%Gu4RDhK~U==0zVj7qmTGfPdumip)7QTI~oz>|ab zD`tNI68~PxV9*nbs&iAEvzO3q?$pxAPqBG*zw1ax<>GVHq&$kq=F+?@2AHnc@N; zTo%XlFusoWYkVG#kML9ci}+YnvvR`*X{AcOTu7V{XOf zjC?qrvhD|JEFN_7?DG~5;od0jdKBKuCruspj3L?*h02om$7p9C_264^Y!j`U6xfMT zkYnfovIZF6`M++pUo*6Y@6G7*;ya9JPqbiJZ|2={Ow!Q1QY_|BcIk#7m~&^c?v)DI zi=r)%9mASg>xt#G3GI;-6CjQgx2$vG^Uab3Z?fbZ2H6;E@AaC}z3!nV@WaQbi0g7|(s1D$`AQi}IT>Ra5KrtDKe}&Ni$|#? zy5dO>gjkY>W)-bCg~Ip`tJaVld)q!+d!O-vUh^rOUGm37{a#!fw|)>{IG=re=swQl zcVdcv?B{NtqV;UN5oFGRZN%jIe|mZGzWDWhq^yql()<5JN!2hfRWo>7gA-sRlB-F-H8a0$Y-Z>BrioEn0G zA#Rx_DQ0DlW}FeAhTLNa$~O~4yqOtKP9z$R8VBT3aoxrk-PU1BG9mCAf-PV-V%c!MS96$NRq?=fSAUy``Fq z9h$PM#z^PA^4HqQWOEhK{n_zIpu;qTfsbWbgGA%6bXtm>@8wX%^G_jA*aN#iCFJ(Z zcJvHGBa&u4k(({594*QR-weh7Ov3zq)f8aQ_{C6$?nJ+o<*j}4fW`>?`szEqCn$hG z{t0<)pA8_)p;+itLFhKD&_;q!@5`Caik-HM6^!oK90Ia z4VV@A3}0y~t#x>GBIjtfceGD2x4gl}GZU2lUTC-^y_eAAhpv9L2QzSQk}qwjNzi=c zeSTAze}6(;E0K3>RFnEWzT^e6z5gWDM)*6a2Qvz)*-5Eve(%d7?U*SmN%3Ogr6r%x z)dnUo?}6kyd%1l(1E=Q)$YRQYZWF){Ty>XdW{pvP`|%O@{E3STy88p|`%hL!iGJ)X zcJcd8R#^eFzj}i=ORIiyCw%;COh7h3v@@dpI7kWiL$*J?0s%OH7t?fZ{VsSlok-)$g{^T&F|Ap8D_`P=+( zc&0sqG}io{S^PVjr=$TF5vJS&HaD;9i1+_VvHcSlVThbGls49-g9t{|oRP61DxbZL zKWrHytu3Mc;Pdh_W#o4*sjz0oaV7toR{zfv3(yTlyMIPVP*Xqxy%C^4d-pU!3d8kt zmzr2e6i{#_T5qNeMDm{m+Q+Lw(Nk`-TkhtMPO-C$bn} zODdzQPXI3Z$b~6rEx3xUIEvIt^xlS(J+Yl?%zzg{k{|xQR~=JAc&7V%24B*cEvIPYe^1k;;S|gJM@NRiCaTS z#Wc|#0oEWut%da&?l_WWU*qG8o_c(PG~rlBTF@JuQrqi0jS2?QKfKy_u!qYvZ4C1t z#P>hj$Ey1>A?`MILj;;}2U8TEL~}Z-(5m2#_DC&{w>LhM^NIxo#)0@Y6TJMrz0gAAN%He=p=N$P6-g!@b)Njs@p!^oquu;V2?`?6inStDEQK6mI~k@*ML zIH2-jKl_+SkCIozHWy3!v5M&bdA5I}cx=DJQUh%VvaI+b?KnrZhYB{B6RxhGw`#z) zTn&|%(XBytZKjcRf5({`CLs;4VG&Cz`Jh3+SqM&Z^gI1r3Bt{IsWsV66!Tu2=#_|` zw%s3!@V`GS7)?Qr^1m~y3oclVN9u0LYn_dXZTHw4yhb_) zC`U72$~;y)>pAy(l9#3Luxn|u<;Hcc~!XODd{#$3c+ zVNIv|S3%;Rwf_ChMp4(YZ296n1QYG)i+hE8=*%8veZAz$Btd^ zd29R?|K_dv*9u)Bqd-kpti<9RB#8GU2=?aK;C~M|{P$*(*8teKk2#N?oOe`%yCJ?z zm=XtLKT{xi#|Y1!G2}jxS?JE4t0H~+xd1BfxF}74>yJG4xa8R!2wda3=j7)1 zCBC$CqW(T+JdufspT@`4xt?()*JEO9IX@j@Y@62wF1@k6(<9cea=;ma}^kD1&YVb@THY zhTf-`bqhsNC3E|=VI5gg2{*H`H~a_kMn+_Zw2~2xOBYuctJ3ve2SWEl*-GqL%T1S1 z!FzWl{qT`hupjz)3Chp9*v{HZ-K)>D?-oR^)M|=vFbM}ZXdttUVq472$$g<&bZg`K zYD!DnkY2hSy;d9ea{Yu5XfAoB3DC)aHT6x*(0Ca>Adq0HF6<82`8JO4&kdG{r>p+1 z#Pw|r=Tg&YHtxyKd_0$G4rE$_g=A!B60@_vfOtH|+vraK9t{p~3Lo*(w)@=PxY*Sb zQBuC>>FGg0qE)x(jGTHPuVTT1yXdva-Jirt$SN=YX2^7^h*ryU{guPs@VD;C1^F@1 zH@Or83qdBB4lz^A$5b)u88vjV+ZluSoG*F8M;@l+%vBp08C_P;U-jlrt2i9Y!a`(g z9Zd0f-4I$@TI#D9gpa*84>!X(_b+SYXG$G$2NSswA=7ovgkc1n0a;S<*Xfp2c{Ro^ zH}_us6RuFc7}- z8+5J27q>6y=;6cY91g}KxDMLU&ned|w?_F!* zucr|2+ZwDkkx!lW^!00FwbUjH!R~2m>$h7(S}M1DUCz%#Flm(tjE#)+I`Srjt?X|< zqzsoja+X_+X`#Ldo?BcQz%htRQ`5Fos}caZoDd=|F1)kdiPa;j_fxA2v({Qo_bU(< z<#1C>u{U;-BU_w*YcgpIGaT?Sx$&5&d+9(**8N)CU>KC`CE=u~M=C=TNvQ6SU&kG5 zJ_LF8wAHNi$0$}nwk0n9nu@t3W$?885=FP(;0m0x?AtQPZwKp4EF+T;Jf2XLHV_bs zTVj0&18J@k4DC@lcZggjrjrM64?< zgI9#j(MvbzPCmjA3??F(R6RoYFy;5oL`eLj3=L_;FWfvDV z=v@u2_rXF)k!Br*9zpn&;la5kq*xmqtxoN?mvB1~lH3u7<)^$m(UPE57$wS)4UJOf zglevv9f*eS*NqY4TkU~t!~LEtNd#ih%i_$YcUO82M!q^JZi2t#5+S%bm zxc-~WVeF1KENe)mIg6Y>(7jAI2L#+deeis2CZ}Q%&Uxiz5(qn0N?%(7a(oIuPqcA? za*L&>e*zchS18h73ohJ5L;_y&Ex8YIZ;h9jco(n&7RzEGwG2WydGVu8^To?0&fs5o zFH}*>ysu#j)hiT|#_Cm>KH+lWXnUO@X{FqfL4K^t@CXkPEDV41bk}m`D6_mm)~K<= zfIP#-4oXbK+ncUIjHS~SnV?d1vDS^Ni|dW1*8TPU8;~jcy*63xx(wJp9wjk5`U)1& zsgvtDC)pYSAQSSaXnBM82E+MPPLiSU4GKEOSC-k(2^G4As zmjAnqux-;BfY?kJ!)o{5NJc95-E|-j^QRW~BxOe$V!+9MxI}(5(wH=zxzk{>#Me7q z_k0T!Q z{P>a0V~v7JA&4(&w!(8z*?m_Dhg8h&tGxCG*{fHNz)=#lvwKaYT;#WfGeTD*vp_8N zd}U?D_Oky4nB@7$ad*aw;P<0=AowRyyvME8<`Bdl@#6J!j+UN``j>ky1RV_ zj70fB&4{1>(IlX#+H4IIudQvQnMRTk?9$PMcxe_~^D&(?I5V7W8-uIzx^ZMoc6E!N zIs+zt<=4l^YTH#fv+Dm3w%s)a0|Z7Fv$o=X%w6{SfpxdU3Ysm1}Lwq+7g zTk1C$6}#giK=lyu#&c%rO&l;A(n-O>HFoR6sb1Vsbed{YZ+80JyY|fznhsBd9dFRH zmJSxnq?0-PfnqfYSr+EbMB(mSKqV)7;_dsl)Zn zxvhbrak^X^T#oFw4>Bp->ns=!h1r>zEz6&ESQ4Ii9G*MXlZv$#s++nV%FL#~uiY%j z50wa( z&-XYVsw>E3LJtvgx-Fh*MJjqTjW5<4y=EYLH~Hauc+&1GWX=6X?en1+Ufg-S2N%&{ z1q70LOaKpqK<3R45r;+Sai`;@i#+F|IV^taV+Rp{@!PzKhJO}u-h}7VUB8KOa!Uo1 zlX$NDh))qB2Qh;L4PNELq>}l}Ld@20CVH;&ky3RRwKXB3#{{geylElKu)_q+4}XjD z-ReRKd8zk#y<)Du!CDWxNCXEJyc8BviU2y`ia#!>l?oIFwd)OX%kP@CM}1lZGpQ!b zD2heFFTkPT5+`xH4`yCpKjNj_v{Wm-4hNSlq+CP_3z=PAW%T}<7Hfrx}|o#$?adc8hhxmYX^nJ`A=6Ap=Dp_aTW zcd2+3vrRX{_Vopu)ZB#mWX#K#`EQ3Bett2in#+7~catK)xx->Y<9R%@X*IW$sV+nL zvNU+SQZQQ}G@C1nzW%gSAzzw1w$XWSUP|q*3vQv)0z@!$o1;zOHqi6-LF5?8;kZqw zSfC-LC^Im7mXV#}sU0*}OGa|jK_LH1JG{tsASMqSZm%-@RSZ1yaFST&jxMFmn zMqw?p(R{;bW?$?=%vo0vIZ%cr=Kl3F{T+D8fMccA4I$42r`sO4IJdQA%Ch3uwKW4u zDh?4<>Y5s*@ZBPYU8OIi+bw~FieZ}7HZA!qwAY3a?=}Ke%M`n`T(%9@ReD2lt#(Z& z(<;!x;^Q#5`qm~Y#*!dqHl0y( z{|d9Ek`QG_i=`6zozcSVzKVS-Yt&-xqr-F=o(5WXi3*&GsGIBA3iHuvck-N0_WRYY zH^en<>kReB8EY-#cO^*nycLdZXaFnru4`~1Ln@)_*PEfnM(1C1EY63{D;!h1o?1h@ zT~l6T=LIL5s~NG{u8K8T_s^BS@j6)h%2IbqIXz2y4g}Q7TJB~$W4#x+tX6iMaJII# zy{_f;{U9LEL{6#|$DmSFtoWuIxnae-T9e>Dn+5hqt>xH6{#2BCgYltPt!8-kP@Ypmb?z&#CUA4xW!RB!2Ve&7)zq z!(!d!0J2>Zq+^H5T37Fi6Xu$@`n!pf@|rEK8#*ePw)~iL?MW!r+V=bC<6BV#99{M_ z{NC`kyKKVSJcF6h6PIMx9}{1f{rxg=jI=r|&+iALY^b_o03>!G6jCQBf59SJ!hpu_v67-I6 z>^mjwOxK=y>kNO^ov!o@+;G#Z-D7=9!14e*e`j_tDi+L!OK4YXiZ{QTTWz1)biE;U z?fF*dKBrS{)cx75Je>Y`>l>hRaY(IGHTPy}#_!|#>ZWiLrdta8&nbS0G|E)23^zE$ z$LoFi=Yy8hW%isb1?uU?JOHNiSFI9$KV?p3tvP3T(DdaMDXGq{ZpQo1c+JG5xO>yy z6N$}X;U{y#r&?l%QF_c3AsU8_9NClM$H{FEEqHBwaIdD#VAju;$mTj~xVPSrX&$bX zcOL#>-B)!?YyJ@ z0#O6%B=+T*`z3Sd0w>I!>kU%M#`M&A*xU$9!_wwit=IK7tLISsWq;W(-AM~lGP0e@ zB}^yJ9{1<8tR602Z&%l;m1+w^2yi)EKJQGc-?_uDb}j{u84nI$2SXCIa=^KMLg2E6 z3OIJf8%dSh&M1~@C1%m1vAS&mTTa}QVIM)Gc?84AR5`5^M;&D#eYJ= zWpU%qy7$>hqFUu&{sM#;1K(88i+qK8B0H+U>pie0TJlVw+Wa!CLqci&(!2Nk`8zDd z-Te%_&wnJ7xv^K!_&BJKZ?&nMp2$pp_d?=Hyhwf?&ji-kx}Lpl_tI$S zYlvoD67P?RLV5VZhLcKpKD8z|>v|~RtMX-KZSP$<>}MB-BgHDf2|=V$cPEs!I=^Up zw?GRMeokPed{Zinha~dOdi^>gx7z*6wa!0Z?TY3LhumCn*wisQL47m=e|R4eL5SX* zVJ62z%jXEIux>7?F|W&?t+%!^=wITh)OftWq>Bp-B#2A%E4@z{z(wWvT>}t?JjD$M z*g_b{eS`_Fjz#I_7I)Eo)ADq02G*!dKJMyATX+d@K3?Ifhl>s0-8$?Fv`RF#Q168eKU_8g!t@E71wF-9w+wl#<7^sqT3tY_!K6v{D@82pmw#kp0EFCD#M#!E7wX` zm;7DL(gk{fg;A0vdT#Y=Z!EmT@w+^&GC8Bb-@D<`8m#5mZf&u4Q&>53_UEx2 zUDzmk?Zw?v#e4;RNl9A6LKlHzM|bj{lXHhFK&F0cxRJZ@a)qftqw%S>*Dd92xoKg6 zFP4_a%=$)Z>raW~?}niJ*C0q<2j`8Q(5==c{|_zjSUrA?koSfkpD!{YpKK0x7B|tf zlc4bW0o>#Pq)1buJ);MO!u|evw(Vf_G3s77h-==j-q-Y_^F@30^O(#&ulu-p7|em} zPr4ytxhX*|15)&0=A+W!#nA4UqF%L@`S7yMj~-K*RS*zC_#7ONJbvERsg#*L!t77* zg(q7Aik%R#FF(&%mt4^|PQ4B(b}BK>uIh`Y!jo?n%Qj`=B*{KCofCK*kHG(0uCr#a z+EZzQs&hlD4;E^_=?NRV9KHcg6yu}!-NFoO*-XJK)?|@-csTFPQ$Q96#4yAm-jFx> zN;(ViigAoLNU!#ef}`^ptZ!ws1~@IpW*v7I7MsbddQ6!0`g7!JwZg%u5qL-BSXr^cdD)|zNC8+h-?0V;kKZ>W%v2$Eg$Q|%lU(?}X9i;c zLTv_GXacrlQU?)f39uS+LR;CLUNamMy}18}sy>Qx-`VVvep6o1)by<$f5+g5p8B3F z`7LG_f4TLu%WsANfcp#9_II^6`X+Oz)q7$jm5?SF2;CYjB)4Em*a_VJpwd9Lq;7GP zmLgYU_e!yWA1Gzr4BS0{R9Y^*?+nFtRXjXcaF?Y6Vz$08gr00@KvG;eY@%2hWq-Dk zKX7p2b7Z71KBsd{Avrh=_sbfq?ZNL_sMv>z&0&CW@YRM8x<3a*LyDIHoU+m_6q?iHF75Ogm$K3=^UjI7z3dd24Oivg0V+Xkmn zx@Ek+;Ztcjr_;M87I)Di>T-Vb72;#vbVYD;2|Y6J2f1Z5;m&{&T7eR7Yg=3NR6X&O znd0NrC6BX5B4OA?I4590FqOX7O1l`%FH>TG_sEnrHaGJXXxBY)G@DY=0;7g#!Qhx+ zEG@Sekng%ItU~@8b=GivYbNO zTpe6hGNbDC_x}d&Fpk%`k_yErVX_cR4FeW05F~|oJRU+9M|DIw6&$w*en(l1l}u@*Nu9w?Ck7*wulnyZ@3?# z*B*cY4!Xw4+1lq;3$i@LhqUUNR|J>BZr2HTO4D!#u))a+{xhv>)sB{v? z3P=VXLF$h-yhoa}wW}_6&OH8g>XE;z{G1!@h_^r7^~&#ZFY7UA-I62uxvmWKN(K_9 z8$IFOPPd9U$a#3QT*G%J%HY8sNNUoUwdmbsjqLHu48i&amPfoMhBiK3y^3yY!5Ly_ zZ-2DdkHX;8pYy=}Xp|*0J6nG>YXEz=DPvWpkf1yzDRxn4BAsF$I){_V;kkPQ@A{bvxtpBA z(&Ot3i(mWaygz0ugx2R%u=@LkJ}#uO!y)1MYz)L>aJ)kUbp?A-f&ZqF)DMs?I|3Ss zbjuWICi(w|MzCCiVVm=!ttSnX=fR zuu>+uABTOqvwgbK-Q6wgRX~YQ#(vk?ZT@jeBaD~f!mB-nGxV2z_EGz4xZA?u5YG*E z3He=TE?SoYuXvx3u<$qA#s*c zsE$;PriY2QzOovLiHWJySv4%3oU9hi^sa6fH)SCpL}h17b^PFmjV3HKEaq$I?8mCK zS_t_6*n8`!D%Y-Gcp)k(r6Mh$pn#-o1f&rK1nHD6k?xKKC?YB)ih^_~AV>*FgOW;j zcX#&!);Dk6`+48z{hl+<8Rzda#vcB$2O`|}wXQkmuO?6~s1~}w&tmuL51aY)G~!z0 z1Y51q#InWu+qlV1&(?RD>9NI*FfltD^G;`PW@zY^E8Z0s&oLf+jQrehedv^4eiuEw zjgLBi{=Dyp)yj;+gfCu`w|G=wvs1gXoPkMA=lf)^#|*V6W499`Bkn9wK2t;YwJw$WP647ohgG~E5yac z*G4IAOTGl70#DgCyQzGL_s93yq2T{cQ+Zr+ub(N+l>s%aRc^n@*kd{5m2ZvVt!2oT zi|&D^lj60%u{Yp$d~;-KC#$*I0<{fls+xBf1%ypjl>`KMQHMnjQaf?9FYw+?suxRRYKX-i#} zPpFJwGAN#VcFr`Te7TZ0Yn|HhJ$B$!*n9@fmM>2EW_~aaB=L8KC6Dfo(o(&$P4v9*;vjwbg z1#p|TGCPj9OhR;-G4yVR+YO_+PV4mRjqgW|XYjZ1DltrQPM&&;>g??~hJIy#%?ii# z%4|AAW8rpHw=&LYFe_TCz=CCBg^rqc;z#F*3X-GhmV`1l4PbEqGq23 z1SA{c&KCVNimr4yI_O}OKGTE=qegvoEYs&aP5-piayB@e+U@YyXSa#Z<~G=t7=CS| zooOY800y>Os+$jCxOkOn0l!~k1SfgPvA(zS^IoEJ=N#5=srru}JLfJQT;E)4!&Mm? zfGdnnJ^PR*L*qE4Jy{YtO3hI`q^q_OmSvB<`*xH1v|%*dN!A-Ki4u?NkeVoFpW$au z-wjE!(N?N##dsXe_1i|_?YXQJjaV?NkfT-+Erg*x&_`_ZR9 zJwIA01P=wb7UR5JvduA`HqCnq56`&mJ5EV{;gptD6dcaX9%PCxTzEQoUqD8;cDd?`Vs7;FA(z+KBs=zcQ9d&Q7P+77rLlrP z69%3cgS4SEqxD)}^3K&5g~god{;eJn-9KtG+v@e-k}Q?7Fh^&L3uIK1BG25I?Bt?% zF1=^deIEV!bCJ{jUn!OQ`b~SQ*f#jFoXkd%hU3nxJPrEb@`T;(9FJzLrF}4XL~YI5?~ z-l1#PuixNbu&A%uQw^Yn1E;$7GGynnOYvi;Tgb*Gw*e_hbtnE*nRl@IHQ>4b$j)Ml zxc@n~iCn35IQKYqGo?B(TQ@|o20*Ws=$INp!Rz$mO|LS7(|`V4h`L>E&Sy5%GPqa3SLy0w?trWZ0j^l_bC5)ZHN|&wpARoKG|;s_RVWuw)mLUcpB$MUX7ZZIoe+Ce zd%vcptExY5Hpg&M^5e&kX&Wx_*H75p!OX{26smq+Fw{TGUV^^P&#&1(SU&I9vAa3q zZiLw!QR=cTrCHUi&=K|66=eG|_WD>NchsY?h%4ECYmV#VP|*{>Es|hFl8K&bTV{|X zQ1Ks2?HxH%p>>Kjx+W|f8Rqc*WhmFS{m z(@@$zpD|8YA$RTupG|^Su|r?6B_H$yhG3wFx#b!YlX3HaGoUGW!09wS&TBB%3VAxY z>RDbny?W`@hTs#GN1@=s8f-@uJS>0A4m+;ohCEwum+jYC%Dkv&)#x(Jo2CoF zr{}*eLCK`QR3U+RzC znro+7Z9YT+P6zw_C~n#LPRtKwS!;*iP&r-hv3(Nt@zW@lv{XhrM<7Y!-tr=hiR zI8?Opq$?+1EeJlz_H@(IirOfW#VP)Ex8d1Z#69qBmeN^{_$Xny@v~nZP>-coDrL$) z@Oc~BIFV&FItQ|JUo>^sLHwO+5o_wP*kg0D21ShOQp!PwmA;66x~yEbf>4sH&t5((ci`8$ zWvgd^CJMj}6*>O6k?dqir>9^fr{#t26k2S)oh61xdxNi`}Zbc ztl8J7P`+MSm&>v)UzrpJlvnTv&bA6BM#d6Cx*K$G__k86aOPu}h6AKYm<+H_Dq$tC z{L;WC)6UX9iKeDzPQO(opASwJU?lF2F~yfzHGa_rK#M)zZ<^xX9kNgreBQr6`#iEB z(`VE}+kNDlHMP@19}Z8thLo8Zb5&KX0WWR5Z?qn^&VIS^ z>eu*RH#SQ6CQJ1(nt({6C6kDEglrd9&t1reY=Tq$c_`v0q6?(z>N6p zT1PfNzTV{wuui^Bx3b!EJxkk)bpc>4^%7z&y3@(h<%B(*>JLPD4TcXyks%yL*-vua z>FN?tnF6h3wZ55!K>00#Zqwz)iF|IXDOd2bfO#N0?09pEQ=0*bQJ6{)6i;iRf9l^ zebFC6C~;#BsJk&~)oIVX>@`Fp7DD}VZ98*puj~xZ$9EMMT*1KCumv5n#9R7iAiKhj z#Iw&2xugk4<2bX~vs84r&1}@X2n=A^Rh{EG=MtnidfkA@#ca+pN_J54^y`7tw+sWR zI|SfgD$BR+$gySqh{i)DUz2wI$aMC%VyiY_ZOtx-mPh#)w%D_kw#jYL8kyO7qY3rV zN9+|x2aP8d`CX5Nhz_04`*PQ8N2#&i+H{GMJtgJ#QW&lE3!CO2fV~-@lBOCfB;Sl5-MY-JpOE;oHBNYzw>8e|G79>B z#YA!c!7cw=*!AWv)xud_wlO@J{YGn;<=dd47uw9vtLS%}nJC{it%9^M=#y?c?yy0< zM=B4I+C2g=Kt!%q{6y+^$*pUc>V|Jr7F1k^iwu6v{UBNLNxF63tMe-R|x?Oe2dQp$AHT zJrjk#Qg7M4#c}P6=k znyf4Gpz4hFO-fhWUOa*aQWsncN0!;JNV~x5iLj4=V*Us)Hi)tDI zwNCcsR)zuXose*)+0k{izgm9^1Z*qbX~&NlvOC*4RmsC?)Nl&kr+8iRx75;MDN(Lh zU^%D4q*D%UQ_sIGi~E*)^MK*jQefBzbd-=!BFBuA!Bv7RKd0Aq@~Jd$&!zPeIm?@K z)qI0xalJXV9P&GV*Ir56YtrJNi+J<)ZCF^?xI@`p%+B87+t7EjTT%uJF(R>8_vgXBAw zSqxWrc}_P*Xoz#fi_*>Rl$Cq#npebyg(ZG*mOevG125P#MXvVs55LV`fnu&Zw9zWL zxwLni85tSrIXLvLKgAgLPVz{ejD`uQL&y{+J~ZvB26p@F#@(GS{f=R;7410Yu$b1x z29b#j4OPS5Oi|S@k(_oVjh-dg?>N~)2@!0%GrUt4;^HTc`*Ltlis`C1LTSI#SDqhV zd|6LdofgJ0bSzh9`_y42Nn(F`q33h5(DA|Gs!mU0(*lnrm)V>h@_Sak-r#Ty*D2c} zv+YfY5ycD@Z}xq4jvm~A@qX}=tWt&RP{`j9aqIFzVH_q?)Kh1)0)75{#3Iyb)^*G| z(>-f|>A8$0-OF~ob-#95mlvzEf@0+YIeGTJW*f=T{pk1DiW96F*-Aar0ICHpd4$iu zi>Th;TPJyVFzA4iZ(TgtUbr#4wX#f5jh>oQV$;t(fii%WvEYGe^ZLf`QO4s7iO)zc zQp_v!%~s0H=K-CHlb?;2`ungygCSuO0o`U zDe~y%;WN_m@IEepYhSOMnv(Lfkcih*TBCh*^K%B}ky&ryKw={FI`~%$>aCIEntsyqzS4Bid zrek(R_fRl5AXuQmEh^Z&m-cxMsO_E!?Ge6IO>VvYS;HZ3T~Yo1`S&6 zATNk&(Rc(di@M>K1x7P?bcVp!piobrK3(g;ZzXSt%UNLQ|XQF>r?>juA9H5Qw;p+|jxVAgfvpk5; z)8cwCGO1(h>$4SnRJfNmhuk;cEq;_=9*~I}N%C4PqOoRO*mc*>jvwr{75+_Z zz>fPM3N8Xvj>R?=$flwlf;BR<)HVm++KOpH$Kb8KLe(M)%WmO9xD&lY)1HEsvTA8e z)QRLJq!YP>`rTRN|NM|wVG>BDC$YKaT2|t^m{KO{1Dq2oVG8};yt9M{RA*1FN$+jt zwQlNJPG0;}9lz@#+_0D{f9S5yiXb~16Zow+LPrlq2O}%Tn7Y^DvY-%gxCQ#*{XiO^ zDTfta_F$d9ak`t2CiYIv|Fg4l`DE=?g3HdFspH?Sj~5Bq{nyS)a8Omh?35-oPK7MD z|KMja+)6R3eP!04bm~~Z?L3ImDEPcjFe*en`(~}hz<>SJVBzZb!+0{5+0e^eLm3{_ zJXXFPpB^y4g8;s`4#XV>KNFt3c=_4?*|P_G6OGxoP8qs-?H&=|c3!vytUw4f4>7`? zM5Erj!W{a=Cr~e5y;63^z65gE=zBt<8(?T{X@+;Frlt(4>*OBF3O&_xJJy8l$9uvl z@Y#@vXo<~1*UJOKootJ}o;$*Op;#F-kJD9IrD)`rUHmul`}EfmHR{pp8uqhD9JOs!p&phZJI_Q$3+gkn&Tt9 zo36)ReakI#y6_Kt4%AfuNK)nk6Vr(3smZz!$yxbWP%-A%cRoJ6ZTX&lV6Pzq>p=<6 zTM|S&_hn?Nezs5Ee7wb+Z_$4dXp4Im3vxAeaX)~dSEYTLeS}d{>oc)ka~?jp+smPQ z{?esqfDOUVcGh?`*4N%xlHt~^OQtO`wS1%AvugKU_YX9I0zO@*|9x+LH$lBQ>bB>~ z<(X#vglE@@iHPdBJ5xM{D}ZxUnX#)`Gdy*!cYJ(&uBU*N*Jj`ut45a5;0_I6<b2orQG?NA+}qxVCp~uN1ElEODGH2@UdP3S1V{54gDOh~ z-8t$eS9~>rc~sCwYVg$odZc%8)@55e^hiBh*k-6N7wQ3rva<3e&VGC2dJF6sGv3MV z-s9l2B(Z#R!iRH{eHF$`2iwbj(8pXBaynCqtx&$uZCPJqF!mkCpEe%;5>iO+D=27G zeGT32#PkoYLsh*9YJud@H;n7Tx^VX|;#2GW+4@n9k&Y#o#lb5?oZ$3w54o z#b_y^nbyenpBG(!5CJS%ZC-2T3lIc70}vBt@>99FsSx|smM={LPbs`|2p}?uK`^?J z&{D}3e>eFr+*6BS9aGN=eBR%aK6*yOI_Kuj=VPV|nCIes|Is=oxOD!sKT#Qu#f9D= zFP`|i8v!>B7!4KEu2@~N3gqhhTxHvpV@uxB`_*=Wg&CFDki-xY3ZY=@9-*Ut+@rb7?27YGOlYMOROevl~0;i9ZY z%4%yfQj7zL(o}CKuaDW+2hH1#4ey#FX97{mG_JoQWt|wzuDs`4o1|Hx-OF(XAHRBI zRKv{U80R~hq;7J=vu>U@CEk1E0)`J~Uq9Mj7taWS^N#6JvKHr_kMC-AJ z8XK{RPz}qy`c;n_uq8$}Db~6p;td;ci6^H%s}zCIDb8ozq?uP9y>a%P+f1mgg3x}A z@xuzEQ}QtNef)UMYkj&GxeMP-g6@6fc+_V-TLZhi=_aL?@thsh3GMaqH7mlN26_EC zz}8(-FbxAjqccU=ACE3l*-ZQRi?;q}IBqKOUMB$U_`b~Jiv9TVw#!l^eR|R4+fb33 z($&_Quw*IwDg7)_Upzd#$;MVu2{*T*-sNOIRkwyCSxSDRNcwR017|KMLg&6y3T!VI zJ|5ei=Y9?AxC<70j1ee#8a} zEw3Hq*@Fe&0KL=w$Tjwv1eUFgf0DhIPOs^4+1{b!TxV&owfkz3t~G1JuDefG{9rp$ zR?Bya)Y)U>Y900_$Hoi*o@iU%M`O0?9&ieU5{n#AK(@T&Y;!#nXWbTr_MK^to$j=i z2f6z_n9HwY9e|&?P#r+Jznxarx-*wJlmL~xQRSuoec%mii!p^dL8by{yVjsBPIQ=7>>D8-p$u!bqBh&al=GPk{6fb{H1@~Hu z86<4sqk=o!0UKVsI_1Gw9v3pDD)d=uriW&zDl2oOe~G5`5VUqNJ@ z;`m{y7Pr2O0V;FwNQ;Xywq7=+3SGfYPWD`mx;NRhl{US#4n*LRy&SRYorlF{FtdE9 z6jR&B9_`9`t@ksfJ3c}hNuXH}nz4CXRgm$t&ll}rP%Ax^c}K4sQV2?h%^5ImWA{ZP zjF0=Ar9LZv%CTCfm;E3l%@YcF+i-qr%J}ncTKzO=K1#T$nx%8L@jY7=h$j|#U2}gJ zh#_5t$>!;@!wLMT3Bx;!SqaXp@44OQYt0xv)f4LUFwljKClimj{?gaZP?tji@H`k__MHVich}ZR>WZsEK^JeB6?f)gTyVNP7YYVE`xpqV~ z8zr7R!ZH^i9&=36!|ym)U#HzSgtFMHNEj<+`+P~1)sMQW{vp2vm82==>L6I*qz4|(c23H+ zVw&!P{THvecC+Zngh4UJPVuGAy*b8lp4?I8IJ7i{D>wg4TciO=myx$v+))S0;{Kcb z*SmQ*ZjMPG+$4Kd3+G&6fL zu7xv}$629T7TJ@f_fnl*n|WE#d*b8?TwJA8SiB|5D2@BAq8FSVK_AEpZ9ZLvw%Mfd`K3MF0y02u z;qP1(W}s>3Ng};EE{}XmXv_TXIwTnSK{d}nz6&|0-aYW7q)VvXotAlbZhO)Mun*uZ z1KV;G@2O?XY&%b6>#{p!s)NqtDtrUDLfQ}8A96zXV>dO&6(dR)@cQ*%Y1)NE3td^u z-BA^~i#-}yI>oO50J;J)L3(<6uPmuI*N{dSdglUTi)z>|C0`Bdv7!CV`_l4vwimiD zP-?bYW*dV?Fq+R6(pbQ&HN<2)E$D80qlrpZuH3(9@AgSNykzJdOYpB$l(`ONeIu>) zd{5h}ptK8J*-rexEuu&0y+wO1amitZf;(BYs!wWpXyZL>19zOnuL zGT$1E-z`WwkXKX%n_B)`QkU#F(_S0e7!b6rMh=Efsp(ZAfkzK~_o zZ>)HEIim5Wv$_94%0#g=g&9egVL7{E;Lk0gVui$! zH~(t%*3O!8pc8m>vo55)h4XkVIdrmcx)K*P({g+P_h2;6Zs@QaGCCzI(H#aihw#RP zVov1KEL?6N+8BD}wf_E9+J-$#QG;H!17#GkR+Aqaey0PC>gY%MucQ{4in8Sogx}Tj z`gKXD>?zx8b4bOym`7WGWOKIr1Zx5dw6Zir6gqNNBbf4OZc&t z?-uhuVYbUXw`-mUN52N#q+<#XY)49fJN8+- z)YR64X$jAF(-j1-`)8h9^WjH0d5t^C^tk&~H=2W&q_Ma4c4#bV{iG~>ei>RIUr7pH9Xq!dVW*$xaUrJLapE#GcyY+mcbWZ+4?2SY0)J@ zzN$^10#Q}IiiMu;ip{nC71yN8PW|EQ>0#aFX}~q5_BW=L8tUo75C|B6`edDl6vWKG zUu2N{i%JFOr8b<+$JjX)d8_B^&tRiKjHc)q=nF3xTQh2#YUUSTk@r01W9vI z97K^%2ySi5@Z#e#68#mN%2C)XyQKN^k)nn(ZdY;CJPk>gie}Tk71@B*`4A-}c!1tS z1}AOB?lu`@{=kpBsZjN=6w#DNj@&$?p1Uh|!Cs3P1EIdUD@M}KLRVAOAM8_;%K__@r?-&R;DB6t{G^+`mbu-K8bq;t^1%Ox z9zBwPj_D=dQv@xYuw$l5i`ih0jROs`$&v-v6=rmm=@-Px4qf8v*O{3#YqYR+!Tyq0iLU z#x!?j31TFRSdMObbjYL@s9P{1h!^U&twaarK||4ZlBnf9_D(+$)?XT>%h$)mEXz z%;c#TeF}5joJh3jTX!PD__-jY^GIh-PYpO+v@Rz4f9Z5c@%?}4bpKcBbf;0T|H7r64qEkz@t2F{W#Hhb`0n5c z3*O$&u(ua!;zKjo!ZcW1TnxyZ6j-f#O~6;DTxZj}J5mH+pX{BSk~W(5xfOjP#Z zDXm3MRsaad-PMrb44Dt^n?4=RI*1$w9y?e&k?0JaRuDh3SbNQd)xSFOkdbi+(S$BP zF@#H2DY^c?y^?SWNPL0F(BM;jzjLJTyfsj{qjgcQ@GMR0wE0)7;>*Em9A~FLo>+ps zEA7C~f3Ce1afG@8ljj6Nfd6LMkM?Kv2&lQJ5F72xdP}UpoBCLt5ZC!05_avv>Id0} zjYk3eQpZvxzs846Bo<%yPSGXC_#PTdWXAanahr(LsvH4I zk|tTby9km2U=R?dzw2}7-gv#{s}};c$0tBLI*C2r{+gb}r-vbiQTK^23SYowZp>(L zsW=b3Lq$&W4lk)^{Q`(^QEX(~r-?3q#}6%Lkd~1V2W>hm9}fyL>aTygbK}2CE>8IQ zAz!UWr*yVOHKoGuYN{NCE!a9}?qBW?eCRC)DYD9v8=VzlLS)+t{UQY>^t?j-e0MV| z$&mVGE&|^0-_a9cx1vfc26;|j5;vU=`H8K)^BV8Xxe6yPil6R`4k0&ezt3|y;_M7} zn_gT}!klkOb^b}Rl8N@XqlkH|utP%>5EBGp;E28?sPK3T}?)e?{L*stj1n`>6VSbXGJR(8na5VIL&lR>jT#Uu*L0g3rne zUh$B!Jlk#L;J?h`l6giYUY2^t zf`$@&rcwZic4cVyeu}v!{UR{1exBP@u|S5jD^r`CEO1x<4ni!=_jMvn9HN8e)#M?dmuu9(9>5few9GWnT5T1^Av2xi1h{h zHsVgfX3w6#pC%^x`(&w<<<1A|VK!aJE* z%3DjF-*86e;~ysy6e!f%q*pfVOm7xkwyB+K^-k>NRGXNh^#4Ileugxay$aR;%rV%G z@PYMnff~M8)Jvh%z`EEY-_oH!+IQEhSWk@Z^_Vt46-LiX@g{L-k0|=MFAs~)fpLd_ zr!h%isZklco0&No6~{hE<4es{Pc^@+H`z2 zBOq%}VFNLr z?p)yPybkA0&H9RN2skag@~l&+N#mMq1KK%%xs5V!wu#j#zVc|r^HVG69wyep7%2EX z*o+o0up6`pDrbPvLbG@|Bgpi1ZM5RtL#JRQ-zj4KT&;I?wVNei(tmh1WSGo$FwV+cK_?DABvqjRBSWg?T zQie8aWVz+SSF|DLG;EEve)bcA>1`s;rDS^a1kF_U0xP-t|g`&}QVX24+`mc*IfhSceR3 zQ;q3kcj*wa4i}GDV)%40*Ure<$eZilA5%uQGD0~kwqA8)HAfe^m8nm=Q+TeP48??3 zPKqplm<=!Z5E(h=aM&^3D5DL55y|F`J2AyFr9fYLX=gd>XJ^dnxt-;5UQ9MwbSZMJ zy0=Alo1&e|x&8A4SF4e)-Nw;~U;)^i+l__hq3gSHRq#~X6YRO27CLBrtor7150^_A znSE%4o+%mECF)f(Qrvc9W&|p?977~l{ycacex(VJ(;Pm5N$YoUcy-mCPbk9as8t_x z3KF!z znjgROTW2`L$z&fya0LHn^Z28WM)~jpj$8whUx-Tm)aylEaW@OR>p+_~I5esq@%pvz zI77X`=KD;zkeaeJ-q?ZZl7NQyged1h_otyBejqO!E^(1~XqL9&0k_o(rKl3==~##H zs#9fq8>}FDp7&qO3mhsJ6njUC;=Ip^`m!;uS;&RM(eUJ4Znws08$)=EW z-{aHKKhAKuTw)Y}0!bR9#}D^5IT4pdl);2!+8;3NJ2ug4)16Tydh7TQ#ckIOIYRv-d*;ulvjum zdTGBa`@P}_PiJ6Gfi8fUE?r2k!swGWW~;C5ho8`j%JH|)py_Xz)GggD>XP=~fEsT( zLXgLu9rNpv_~18do5ljYzQqNQDb2N)asoB(3;MAx%X|N3g>T--O;t$Nh(C@LHjR7W zzW=W<0_*a<(%vj>EZ%8C$`tpvFCf+cN|hnBglyv6e-Co&e}f@Yb;l3~uD#_&HW?WB ztK2;6(ZCI^tfGgUKffz+MaMCfgbgN!7~0U2(9eXCk)j7AEnu&JpjSR|(M;G*PemBp z#a}9Yg1-;hiY%hh1s^jC1Qvh$m`B`X8n;%4@iR2o@KA{A>&>-9aPA;*{VX0!-hLKk zUg3y0ISNUXl8w5Jqtu-~4!W|(%^w2Mm>m$()#7tj1lj18BsfgV$Q1wlc^`zK7s1FZ zuQs~G@0bfBJCxY4fb&|LA8`Wsv+uXwuMeRqU8{5*k+8Ahs5mx$mJ0{Vc(DVj;a z{X7W75Q|x0kb+)2l zl?#4~oaec6kDX`jW;Gx!@wvgk^G!+Z5K3orQX6o?GZuCL@aVh!5+mY1>%_F zT+0(EARL5_mNr2Q4$YApm|5p~vpE-fGX4DUhz)y|_z`0Va{Ty4VxAP|`AiX$|5MWs z&u{Z-Ci|^L&WNWR(2b?9zTEDZ)bhAiz?m|^Q<7`jmb1EMfUGMU>We6wt5l~ohea8u z6DzfL(Bh%`HgjSf&jz}hwPP;xOMkmJFm}ELw@bRhgxWzf@HyJO%ACN7N+EWj@Gd)5 zV|s;VwaBNNJA_n65#&#Fld(ogjtV>P=tz)FHAp{WGA3Kd9C}Y-d>k*O^R7`*5F$dkZ|;UE_eR9~yy8lh zy3smVU>W!X_rMU6L+%&3<=#JdoYx=j&i6s~VTs!XNa@MAY}=p2U*f#@bOenD`6}dy z%fh%mNZigYr*$!1iNTa&J+^e?t}>tXz{%z)-t7!dKRm)3K7F5;s6dHAktm1@pyfG% zMAO+o=)&@#Yl2khO8UX%fYR<`W9GdJG(aM3=~vn0#=*yKV84MzL(ZiK(+=MB2uVS8PcE6J1-^H|A4}SX*{_E{cU=7w*Fx)t| z@A@^K*b=puL$yRRPq`P{R=JgJ?r6&tr>mtWfHsBVrWrHRMvtH|<94@&W-k4+lw&6A z*(?38DU!}Yni?O?pU9yc##tB}r_)B#K8eoI>lc!2i|&gyhYQ`t62O=TT3#Gl)K2~X#(K_l)p{5;7tHCL92SJFRf zYm-d$S+f4tI!BgIW5G!|a@)qg?XefM$T$u)f4MH71-e};y zFQLSgmEW)ktt~&)7(qnJ$ft>8B99hbX1ernI#>N4_iQoyW*i zWZ?{K{m1u=*naQ7`S`5=I5q2R-i^wk?hFl{Q4$xc!5}bS+i$Eg{0WzbTS|5vS^6a~ z$medZ|0kFm^7b8GW3SMVBC*`WR<6HV|Fslr)h)rkCAhZR`wsu)@7}I>^X6;1hUYT2@~8W?+MI9;0KbC&B^y+!4U@lAXsc%R zz5TsexA zsp`{&D3rbZdc&fFn;|OF3ww>&((ojV>ZH=6Q#-g~*yE$2xL(juPjf9-Bago==MJu1 zm~yBHubHC0CfqY$oPX`J28a zV8&z3z}g^9QLlh*R-gKg+Q4vTZEP2h638ngRF93TC56`77=B}9yR!cvD6h!f$euszwB|{t*+HiACwn>M`rvJntMLAT?(^i zFiKFMEi^j+ceW`Pk0nber_TK%hQT7&U3n03vaXfE1yTp}oBo!uI^w=82(O==oB$=v z^!lNBXI#~rPmOlK8-YxqZi^2a2&r;(FlxUbS{_W+9~GG!`kbsEUtrO@Gc=>cV>vO` zZj7KtUi%JDtSeN`;CB)=$Gv%z9_@=frmc%4R0Ud3-4E^*#=*V`)U8P?SR6IzioE1@s&EQ69s9CC*s_el)R3oHBi2!tQv;34QkB#S(gV2Z36%`G=gA)w1>I$ zK4}Jj#-GTEK*D_xT-{Y}Zhz&)E>C6(@uGC-<~JI2nJPULVC{VV>HRZDYk|Iq7c@$W zfR3HV)Ri4akCh&?SO%+(euDV?2T6E^OOv^N_}Q{mxd?xpf|997xdV~%w9(?+3HEL?7F zX<xgz$Dm?s>vIGI_X3EPai;Ja!1*J?u`p8Zc>?9J z?Q}evZ_bTME%I27a;%)|&#R|#&um=YoGD3IE^=9pYIL5K6Il_Qk8(RI@Im59l03E- z8Z7^IjJj=)W+!Sk^17|~N2pHl{X;0#`jw^0{t4yR;?FlpHCm8e3ern{}(Ij`tX0J z->>`y7|{8P7oXaQ>F0`s$5%w{f&C->b8`#@(8xl06SI^c7A#08%FVR0$z^~LjBU2LE zzntRm?$F+L9%@mAqa? zhM4K2NtbMLpRAYvhpx-V>jC(GUy(Pw71?dG4JtIU>ff| zm~iTqIMp}1BHlVGEi&jG5bGwizU1j%!BqR>{$MKvyK4SjH|wrMuxi;#@sfqWZ(-c0TB52>-ekWUCWy)W$ zf(9nqJML^Vuiy3ijQMJels$OQ;dpkK?JeL=qP$ipR5*)TL-H&e3Z5bmTo4GrIw?I5 zfodYyDdTB=(n9>|P|+62tnPGotKOAifCjFiOh?rDljJ~uNXZ~>HZm$uOFzf#lD4c3LLirMT~Nugb-GIFw~IV*-wgMa)lzm8 zBS~NUSFc_*>;1-#GNoA2EsddVEBDx1vy?>__u%u0xbvs9#tN=-d0~h}TU>77q9Cjp zXRK`92yqvh0B?{Yw09E-$q+z)nK2up&T@|)Jz_SwE{*O)!!#QAftU2|>Dknew;gBL z{?ts0=YMwI(&c264iA_H33UIh=&^Euy}|v9z4E91OA;D!tpY61SlcUJH;VVT6&;v| zUT?hp`+j%DYmVkYynrYan7HQz4Q{%u_9wgBK-dZ5OYj$kM6xsI&Q*ajTc6qU$0t7= z)Zb>a!cU>?HObo;I-Tm|$B!P3iDt{~re^^ zqMXk}`_yNHRW41t{zgwGD0?c|vBT3bPdD_Z z=)L~H4kYI$%lm$uy&i^c|7AeCw2K(fc3%q=AX=is*AogN$B`Ru2SJ7B>F5BTKOz?S z-k_F|3syGZ(@p4(QnOwHc9Iy5h7h)>NpT5lEnZNlLWCqPI+qQ3Vme*208en#4BC(y~(}xfPh!HwHipJu~#|ro(p@6Vqz_c~) zcQ6Mq7bsLxQqs-!inHl|LEOv_i0dFmQ3&tQ%0?etqvEr822xj}#-7YQllBQg7dddh zT}JF7U_%K4%_0&ZyS~-Mq?B!=i%`r*7-EB!!~LAWSf$t$IkfT(YJ=RdTJpH+eA75w z6oQxUK|H|LN;k=qCr@sJm>4N#A5&93t^7nMO?ji&4=k~D&tA$Wu8m94)$h;m^l1xyIOBC|B)>%|gTGtNBn-*aNd==prYA`AnH-5z(%7G_QAP24`lG4AW%aY9NeBt-Nj+|jJU%^w_F+U)Caniui!Nuw1O{OZ4Gn^V|wbOh`PEo_!C5yCXx(w+SkFQTjk zNd^O4TrzW0e>_BMbe1Y$9)ZVbn8(jRzqK;$;U@>`(hF+K*g?#ofn~{71#wBw0y>T| zct(Os^Xt8jbJkPhA;yil?}}Kykvuzl_39`y^NEm`x#C8~PkH|G`aYKKd*W=}RbChV zmuF7hW>nU+z4L~h>FP<9X%-!IE2En|_rKELyC(7f(e@@#O`LuBs8)qqm9(yPfmG{S zMN|Y7gw$H4ia^yWl>l)iVt}YDktG?GDk@5S|Hr&2(V50{Hd$ttm z6igp2WPI{a0XtEZs3yG6!Vjf+54gxNcm`>h1xj1Iwb*P9{FL*G2&V$CSu#6xkJbb0 z$0}KdG;9VeL(`<|FhD^tg^e8K;db%x8zPi|ErGqIdg*g;Bnmsr?4be;D1?=PUx%Zn zQe-|&cV0YttcZn6IvXYpR^qWz(**N?-K&6;QfCPtM0o>lq)yOoLC&OgraF=V zXiH}Jf|yZ?xN5D8Tr@#DEX0rsA=sZ@T!-EQ44fB0JAhhxCt#2Vv)iK))U-$sVvPVq zO#Y)vS*VURK9r8=#02D)G8^auM+kIIL&AZ1QoD^r zU0s-_gutpP#^=>;5Y#xZ3Yhv*qQWUHrgP*h!&i8e9VB^#h|qNGrVc~d##HR>kxY&u zC4VHvNp+3AGxQaj<90q;s+Cv(=(IU0SY!o{^)5(rlLF1sP5^q~K^>YRbzFH8{dgL5 z07x}*Kv}_H5=%;&&%#`=Sg^EMCp84Z52ZR`Qvy?*AV3{@L_mv3%t5t4Jqxn~>NC~d z*Qp&GjAIPamZQDkrZAuR9Q8)dVQ_$f#%TczG)C}>jgBD9$+1FSS!FR=!^%+@E0Vh4 zuWQ1Op|8U9m`oas>UN^D{n-hz?G}AU3o2RzTl(kqZSmtl4bUJ+h8oqHN=dWiw`QEFP4GD@GS&La3~H~MNB4W8Ic z?xJzyPP?IX6nK}lH9U<1@69@F>ZHCUY{b+gBwcHVzF~`4HdfaA*p6fN1P>o?Uvc2&&*9E8t-wb`tLAqCdd1zz&bw%w*4W;}9FUXwG(q zUwZ%@9W62CowY30GN2Ca#PrML-xHyWOx(XD$Ei=dx3kgbBowWFO@fV58rZIcG)f1& zVO7o*n>r1RhZEf+4{2`qzp*mbS&0eQ5c~JXWh{+|74U6SQLvM-&s{S5kB#L{%EQ{D z6vKmM8ab5&2Wdr^fx_qNFI(}g4EM@+zr!@x8#(|Y3L)|yQ$8^=Hd)B`a0~}wGB7|F zC$Rbwnz+bKN|qn8`j&@I=L{zSYO3XfBb1>@loJ|Ni7aP0qov-4quB!uQh{pLAjz;6 zZWbE7;3r(HKh$T*FN{Aeu zV`VQb0{QD=|G>#ze5Iz28@eowTk!yBu3}YHvGR=IEL-WW!Sp$>6k4NgeYoV2fcb`c z)j3JADo`}C@u8II72xBzv9f4Akke-t&;s2K@U)ls=YQYi?-S}^ztTQ0LZg!h?T%9> zxeD1@lqc>4N>tP8JU3pmnj$ScU%D}u z?}BuH0el1WgiIPY?gTj!=_K-jA)-D*OF$=pn&Yu-*2wqTS~jbzLZV$lQI&oCYYt@@ zK3(cd?t`I}=+ctn!OCL)oRufs&7z}>O(3jvf+C1Wo2gucB!UBbg?(1~b5@OB^SmK^ z@s0yZX#@%tMvO??Pdwuqo3O#S>hywwC}#T{R(ssl+Pr{Bnl4yCHQuInii}N^h*}+p z+iGWe*it9$b9NK%IMVF^G`YZmH)RK&@Z!fywd&V%GuFtlgOApwS5*vl)&pCqYf zZ5gcf=63_-GmPkh?&aA009F-OIyE9z>Q6@dt@nYu7%Kp#c6u|5`dm6|kU{e3yOZk5 zKMxxQGD-=mA~+g^F{@KEL5nW$z!nOv+jZjT`Tlj-m24?XwM)jlYdPH!mXV~3*o(Ez z2QBp8d6xUFY%Sdb6jIAw^h*&1Zw}PkcjqVN2h0K!1|YX%q9I8Iy-7H?=3gU?{ycHG zun$pAHd?N9dZ$@^h&{cz_~3`02lq5m`9tIE)8OHzgl26>GZ`8zd1zCoHUXuVGFUT! zQ@Wa*zhHTfX&x2e_QxRNo+Y^n$X0~WVTuoWX3ncBNKVHUx8HuyZN|c%fR9^XDO+uFzIt=?yIZUvfc0Bt^$aN_fV(t@H zlJKV{0xnP*DWVA$R!}sp8br2OX7n$j^!rp*%u&S{tKzkta{_b8A5&u(S&t^h0%jJl?v&uUZ0~XJ_s~c6+dk-q@6a! zUji4TN~iMPabeG~Vd`N!)VwWBJGGI`vI;fQq)M%YPW{EsxpucCMMD*l3D{gAB4 z)h_V(#ir14eBRBN0=G(2w(Yb4BXHfd^5C3dqGh$E!04YweUf?!`IY%@POU$}0RyiF*mYc^P z`66dRVYFS_=v@E%IIVeaU}>QSHAvGNt5rX&Ru*1#{GzviUXp*lW5F+JS!SAwa5F{u zGUHyBjPZqs-S24I;3_n{l=bf+@DFE_zI$+F8_IA6CL>PDq76Xv_h$kfZW{##`$67mx+4~X*TZh7t^a!0F^w78R&2=2#9fB1UL<#@QSC>y*g13X5O z^gLI)>3k05wZ-`0g2yF2l5BwmVWO3SVY$mrbg5^aU7|P{zQuKIoo;l9*x8qWq!#hR z+x8hh9dDf7=4$a3MCpl^82x7g*Oken3l3FL{qy<>PXbL3!0(w;n=Q8!{SzM%Te8g* z>Qp#|^t*)k&e0xgGm*{yY^;*fVIJKPD~JbfNGVHzO@nI)$k_(V%|ct(4{-yxkJMXs zI_=kiBJcP6ol+$qnA6np)o@f!9O681D=BM>F)9)Wo{?&zTbB=4Zzeq=ZFg7%ULt;a zy=@Icx01w%_cf^O1T&b5M-XL7P>A#M9=0!=x;`Dq3PaPvd~N`S2p3z+Qn{qIm=ucO zbznGICF)i0f|=D3!)@~Op+|E1&Wh!-VyCda^)GUjkZ1SaVh;~wOB)F8!dp-ObG%Gn zx`cDB82UIvnSYTKvwjq{xw}@7F9o`G8ntvVDW9o4REBIz3DU9V(ZPm0ubASc=5nuzBDGOyu&E*~~@6nBL_FOT9n>v&q(0rrDe zHpx0PD!6|a5=|aS*nN7&r(5ZzjqFw@3k&#ZCR(3mV(%;80M_izElj{6Z!y)YsE92Rg;%lC%UL=ZOu$svY z3A`5Z-ueL{@Py}2$~|yN&vvE|t6r%ab7##H3Dh4!4WitQd7_D505DwEouK=n#4$g~ zT6Cvt-T;AT;oW&zKq#uN8(-#aRiHc~Bl;IlDF|@Xp`DhHw|V5hCTaBN8FHJe3~=w_ znqx5=CU`QOk^}=WNv`~G{sp~#&#p5WBJ&5G>5+k7W8dlt{4U`4Nnd>W>nB!@`tD1J zUkUI{#Kan>@d4YzUAlO|ho1M%9*)1a3}OVo4NWzFW)3;aNV((l_LCg$d^#&_Z%)@k z(rPrnmZF_kSZam`2p;o=Vt)IIx|6A}&&pbPy{0zg-FH}~t<=J4BK|#P|ID!JA=0x64IQSHr>xSbv67Ug>9W_DdgriRf@rrN6#r< z*hYAL^XuSnq@Uv**w?s`+WPaSmwm$JV;n@##B10he0OB~=eTzXjE?q;9V!{u2d;$n zW=qjzqJ4{K4V~&{hqc}Ad-FfM!9%I?QDD*~@*{caAW!`L8H;9V_DIeoP`y3;y4!lu zwJkLZ(PHvCF1ic(FzuxPT2X?F8~$_Hy-BLZQYw_ff@0i%9|LMaLa(YYZL}A>t_5wQ zOBbSd{DC|A5{r63$yJ0q-4#}^ZN7&cob}~@#=x_ajG>QK6-PM+66llDxj}(-n@y9J>MJ%Pwj*yzjhzQu%cf-o?q?$vka1sF zkVQta&uifK;j~Gl@#{Z5OY=NSpuQ6@ir>0G9PuU|Z8Mj&qfthmS7Sh)AB}g!b|Fp+ zR^v-9VDg~>6Rej-uVVqMEFr}u&FEXtd!Rvjc@+-crOI=w72D!mX>n}Zj3ulS$$OiR ze0%iQ$iD`bo!uV&n+|Gt98K1WJpY?jFH;Tp9^&-*ygrz=y=?;3RYqP033L8v5zW^* zoR`>mMz@HAmxVm{^FAeQ52x%kDdB$mtyh}prF0XcuKF!-LjLruw0eXp54gqH2R ztXg9;{eouJHN3#dbX7Y8p)Z6)GV0NtFAu8dIh%ob$@R(!falPhB#)3-#O4@CxZ++x zNm3qABYV9^2wbDujn>D z)n&*4kt!_~Y;=Pcr>^T|#-Bm9NgU^=&|yi7T|0>-ATduDmT{r9FOS6~;1^+H=*((2W zuxsfB<$6kWQ<}<|p+v32|I$51J6GZ&&`*x$>3D#Ylu9cpu85Pq__U7JdU8m!&DH)L z%u4%DARs31l6n#R?lf7CP;b^TfY+!7TM(!Bh zB15n+dwNSnXf;tc^-dfj5ltrs^t3aB;rA-&6j9FgN61o9SGDkL@#8zm1-YFa&n3&hso#wokO0rDCvir0{ zOMv3NAo;UUHf7ZPUPg0hP0e6>WY5-#H7uCVr6~A+z^9t!vVfSdbj#M`DYX37={hZ> zP1cHsEn(umv!ATUxN(KyJ68D8H(>?$q^~&v`PXud$Ra!@NL;7cN;3nrr~e8$3DPd* z=iy#Bx3)^rEQ}0L#rI0Zhj)NoM0wGN3H<&sDRu7TQ`Np*xG@qG)Kq<3q!Jmew0;x) z3j7-4Fiw)DINTPv-Eg4(XJc<>$O#UyMTe9$p}#6>Ayc~z{NB&TvWVr3PIoqvil9G0 zod=`C+6Y;Jlf!fTo}_rm7AFPH)m7wUMT&dXs<|zh3ff=%;8tQ*au>-{*nHo-pV$Sb zCVgv@n^4=rFf(j6Zg2Vqaz)16KmUTTxypj~A|CWh=?!ugV4i=aJ6yH_)<KJV1Ybt1`ia2to+qzr0}F{N8&ea~|xR0WcBnhKY+Yh_HK z=m)Nw{ibIM$`^ znBxYAJP^0-1V!NHoTUi*QVzeAR#RI$h!h?P?=<@R81gpCJBrPT2J?nFJdf}`!l3r* z`+404=(sOK5s?uT)0~>Jf_WmUetI~kiD2vAAAvG_^2XlT($gCz7;sBXFo;y5nR`NH zLeyp+ntMT-B99A^e(8QKc7BV_^HLxulbyN81Y%@E+M$I*qN^;5TQlK!XfjyFbChfhoG5q$)>@YO1N0^fWG{j2p z8+}irPehxNimK0O9g<^UUP!P@Bh&R1&u?6-%ZC{C%sl00Wb4vcaaJHCfLvA-p8M1| z+LoSvgu-}Ev}}mn=6;Gurlg&Eep*v7X0EHN@cH{5uA`M?!0{F z5L@OlFuuiZK)6x8^wZ4y47p=;F57gXE6AMZ9^sFV@|cV03T5p=@&4jCFKX5nE?(>+ zHGRbw!W@F~Aye5-JH>zZ1~x{PbBJVT^G^XpUyi_H{74&``G9Y!Pj;`13%-{ZyWpJJ zu&(8Ln19_<=an~y+p#DsQjBUvqgxDRr_7l&;P(MY1 zfMTb2)#&&!ezNXMR@uuo`yvyxCoe8^8yZEUPD4T;k{oa&9Gjv{<~+Enkg=?v zaxX@%;V}a6-OP()qKzu>2T=gW#g^c2lpQYzi2C|-U}NEvpf2uan0X*_2ig>Ank3`) z+s72vPy8jbG%_k=3S;FKxkILF;;O4!Q|~#t{luMceorfK`taB+0Eb4D)S{3011SV4 z3w=k_HIDc8j;g}rG+bRfvDH8ECA^I z6+<+%ue8&WC7@)hRJ+l65Us{acC|fLT|#^)uV;YMTIj=priYfJ{+8qqzy6|TPS@y>brjeg0&hvMUv0IdH$?Y!y@ z`ELHnYk!Zd(eARZWbB-u72hGvAGDB zS}vRO+<9C};PGcrXaKLg^l1$2?ebm_axd@ARo_qc*kf3N9aCmlO^0<;uY5SqhR0(()=<`SA>k+Zl=DIf58y-L^8h7DTFwI;Zlc}+5OIpj3^lCEtU}) zw9%*7)uh~#yse*&HFN?Q9G&iNVz&-|0SUpOY65U4#HEJkx<}Jxzf2rlnd{zQREEq6 zi5K>UhEPfiAE?ng^2Jzfc+XP#uh@4|V$17CB}G>h#X&WMe)qcAxAc$L{J$?b*Cw*Z zSNqq^Y{XUlGsodLDthJBvg;|7D(;*s=qCoGV16lcx;bboj$ogFL$j1@bC3>#t?`JB zA@V(oqxRW!I^wSRt$^?Yp>Q78-N*jwDn&%`zOb9h53{hZ^-B6!!yJ0Dy@Gn5?ld|> z&sO%ZBPP|@==bbV?Yl>=KMfis%7=kcho-DT2K>~$D_!8R?h!ai3Ym-rS-2^9DL9&v zkHE=YOF93*r?t@sl4xDW>N6C@#kp2_-h;z!1GUDd#*K}KAD?iQ6=B~chtI_Du=il* ze*=Bq;fZIy3_LxwdMmw&;dOo6K#91*SoFY99L$*V!lqqk8YneIL!H#KF?}Kq9Qkbi z_Z;FMJ_1K{Q*1Z-G&}pE=HHI5f#0*9 zh3%HALG`<_cV<^oI=5!jnZF0)!G|xUDC;EDU9{r_ThUWxvpnyOq4cSefl3b^Iwxp&{9k2^Gd4utAFI0odzSl;he9*fcH8+3J za?I4<8Lfo~fj&qV?xIg}0r)9NgSnEZPwa2Q!0{ z*S!VP1^j5jS^RtOsSeh!yaB|L74ig_ij{qoHa+;fYj0-YPuh@ zZ3%wqUa2X4qRuPn0=3Wv$k8CYP-LmxE=KK9)FU1YG0Bqlc{Ot~Qpv9rwChQ(6NY@A z_}or=%OrGItvgxuFr<=RP1(^tYm9TiNj8lX&xst*O1}WE!yA%tB#!eZJZoIjP<$1C zTd!H)vF;z&@f;$&Zrv$(DzNaFI5T1s#goumydS8(W%tdebAdZx-1mP0g1%kgMSOQy zCdp@n1p#ccifUDImwl>vxSS8jqTO^hRgzov0@4O*{>lI04f=ErPb9t_vya1T;8C>G zRL8I^3Mf%VUQf9{LlDySb?`+{8DEtS%mhLvoCsp=IPqx(@$%{@l1^2@>P)LcqlkQP zvUe&18W)O+ck)Sk3F9JZxrDf!^{jkE3a1yOxcBmcrt*9LJM8?9H3MtQESeH+p1G^} zYPLzgHUKai>9rp^R=*x(Y7ej_rQ}!r1GkfcYf2tYW}Pwvr#Y$!cn!`tIU$4G@I7#f z1@3LV?MzF<*|B{%hV4FXOu50|Rw*6PQvh2$r=Z#j2R&;B*weL8l1Y{m;D76=5SR%P zqGJSV_aJEinqNZ7m*Q|ThbUKz>ij_Qh`*mB$>6VY6AcyIi7BW(Qs2~->Povr^rFtP zo4al9Ok$5=`+>TJADG1<{q6C_?0x^ms&QyN|5hV4f6mE9zv=py`|F{G?I_Rkpic9~ z=++*3wc#Mcwq?7wzh^=-Be&J#=H{W5CMKdjn;|=4a+bA<=;c6b<69fWxDk#`QC#$^ z0)k1pq=U?@T~W7+X!S@fCwWj^9*^zK3xvI1gdG?lc{rf(OU`VhtY>dB4!|`jCv@&n ziFzCwHvxM^`@52t{&>o~XZ}-iE*V$xoeZcu;+IA0&CeAY4m62ubZF^(^`}ce3XO!3 z2L6FRJnpp0*@Nbmo8jc(5j;*y7_m!-eCsE++T}A>S7Zx9`j?A-1uK-ADqp1>;(56k zkCrG2ip+JrjAi@lx-Mcanq!mQlP~W!{D``Y@lf85| z`WVL)ZMN(@OHsQME$G8E^vTVH1eNG5C5p9?K9zBsfUXJP6vF|%tQdyF*A97?+8qQ5 zJndtowxs~OV$s8Vg6S`h^_cwEc!1On=~NywKti!qt1*$WAhKvzT&ya&!{IKI{;co# z*$ADnAzjSVB?&9IvNL!xC+mVIM3Z2f7Ss$H$Y*8W*Lkn?P;GCC71T7`0=T?u8~qY z{-39h3B6XQ2nnB$6r?6m?in(=*)$fGx9^^VxEktA86SKdfIT~KQZI_22}BJ5<%9Xhde_^NJS#=TPi1$~{T+ z`*4!nGu5?nH(c$Q8|%7HO!4dlFB+_#d>E_=l>y#g`2$7FFni~zu6K!?M zA2?y(jL(vy@__`{vb}f#0}hkmymbseQI?p=e_g~ZW~MPiBP-G9z2AN6@yBsfc3&3H z$J4i7yJ2cl;Nn0MILgI`?ujaMI741>9K2byq`$|$)~jn z?IR5KxeEt%^3M9h^30i z5rfXKGi2PWDlautza$=OnLgrQ|C?i8^>*8qb&9wUETUy=a<_H9_b3h4S4cYMPyuA6 z=$J+!VS#3$4FQImmq5q~eEedPXu8Kjn~S z>mtC^MoL<3^|1!zWCeW+i`Qq?S=grR=JXg2-53a{pri`x6YWFoJJXSw(8743CfG{Px8$TmV8a)X ziVr1Yckd+6hx*xSFij{IQlNPD)U=%6FI=M~PJ@GyL+TYO3pASAx0R|bvhCA8a0rCQI z>l6m_cZYo1&roV|yWKE6SR=c74Qm{RY459zey}UjgKT9fCES0ans;d@0Yhv*k^GmOE~jc=Jf~aMB{q8h6VZI| zwBWKtsPNC<{o_Caf7bXi3t>XTgnY_%U{gJC1^GJ#{xg)s{Q<|M(i{@#Yk^H4l-#+H z)gkW4?n+XsM0$Ypue-v)T{3z_J#`guJW{vm2Y^{r5Cnzga>7JBl**cgph zHN!j?h+H{Pm%&_ne#msjCgVVhJS)Ep*ky2o`2ta2=q*IxWB1#@qh%D2;H3=JsZiR!$E3WjrDV##@X=Ki67$C9xdHj-n?+=u`R*1OIn5%ahJu6nHbBPB&qNi|X^^xP zN=?xr*Hz^-D8%}?vOZ?R;QGmtZBP3m2Nq-E_-Al-a!l7?243;v3B}DH>2KoBI9f3_1*Y|05L}Q>B{vJrd_(E%_6%;@ zQ(Qt20VVl}lwYRoT{;{44$av@Hts@i`6mM5U=POyJyx#u{I7uNsbmHJ5-eAgFcD`v{%BO6vkxojtozQD(#xs51|JKRidW0%$&L8l2s? zu^b&kxo>o2h`rKcRm!)N03T~+@Pw=~rQ{*{0yjOWiP3H8FG6Ky(!iFriQ;S4V^QyY zZ#O0hgx@zH&*h4MTV9n|lM+$*5g+KKT!^~5!BlD<0mog%CDOmG&to>Tn|Px(%HIb=78B@3O`c7c@20CCE)#6Bsr_S^wbUQ~hmSF`iyM7cD)HhTp}SKj(c3OLB!3*ga+Pb!=}$7}WWIB_RF_aJ8g*a4_B0!H^5j+yx;8jDf5k+GOTUlf@DA2tH|MWU!Q!@0O`>aKw7i!bzC%+*tf3 zz6QxKN(Mt!V4C*-jOeGq<*_&+08IpfYfjG^izK9{HR#m!y-zzIAeQg2rj6xfl^suK z`$zE&WOyFBO77larTyt2qESx^&rekV0iN%g7@x=h=5+99AhY$fu_Dym$-8&>s*w!5 zN~HnP>lieoX;78#F)kT`3w2v>w0)G4nvLe>S$j>2_Z+WTYk5_--B{#G`_m&Skf2M> zKqDssefn&Q)iAuBL9cHb_)zuaZ(;#GBA~0Ds&2WcK}H6LWJoUc72%;JL&k}KB$<9e zSPEXqO>KRkmrILTdD7{M%9DH!-?AqoG9*1LvoCzg4T(&`Xrh*{geq?$IVGH&oWBXE z($j7n%5enLoBgc-+FfNUbT|lnh}3@+7W{5!NGbb=47J1jrF;zyz`G05fp z$~wP!e$_uUsE(NyYwX6!^p%s)lUrc-g@hu)k16p-NgcKBE!#c9gL|bf1;yg{a*LX+KPwdH@Fgz z#4UJa3S9~GAU10v?K#~RyVsmqax9wool+MS`88mMv*#4WZhsGKpLuQWgU zW3cn{yo&oPXK%}kC0%T049x~vPV}LKSpbYnq5N-1KNAeyoye$ciM-RKdXTN(1(a$*^78jQD^@PH%M%6neXIE9kYUR+W}0Dh&GkB)-ojdosD=)7 z!Qja`&!p>o%78!J94})h&f)1C#eGQfMoWbhuW=}IY`*~ij~>964JCm_@!vM9!iCcom&>+3xU)mrj;(qlIvqmi4g~floEi z(BYr3f|Y3aLn-Hhcb7%0PFA&TEb6-=5|uH&gOOS)6%VfSHqcNHIixOkG0K&#=E>if z?>#+=k5`uTJkD$QmRllAFJf4{*e;u$SN_9R6*9B5 z)ffU*%B?MLXv(K>5=myblW4w;d6#e|{BLPSrdi}o;j|9o1gw23U|&B9aGwL;YW7L~ z#!Btmumt<)bLt0j3I!Cp3+fR7BEw5$oKbd4KBK0?zE!!n;YG7$27N{Nb-+2=-wqky zxfE9)aZK&L6RA8PZ#B_<1TK+7>1ruRa%mhJ{`lufvM?Ij!&plfV3BC(U~}c3ZnjRL z^K%9RK7;FfWzI<^+zOlDD#Ku*nL@f3t$s{KGHmmP^e8=2b;t2TP>Iq+cW< zKgM`{e;jK=oEZXKD|Tm2=vW2f)%J7~{?t1EaP)}cl#Unfu)?P~l*@$K*9-$-$ z!of-Ci@V002K2Ty9dCR4&yl<29wL;{SCXw^yiJ<=EA1~V1#^1=Eo^1MjHKUi3CT)w#>)A~+)8c* zec5NY+_~sZD!+%09wV#Di>0?eDvtxnk21y^_Ky}-0fV05@mRocQgS>H7yxwH4anHVBhY9mH}FzFA)mK?-~9Wgz%tRUy_tLE zMTyc;7?#a9s&PUvB~ zCj&h%xk;Cp4@Y}H&Jt@DlSGSKlz(Z-1>`8itu4M^D((zbHJsg!Km1?MJ_~02zM+iN z7|hUI2Yq_2rl7W)k=6A7?19lXg%bLp*E{T{$IQvx=&^(f&*07s~HGJ@0Axdr$csV0aEt^6;SlN^VOfQNRqf1lHq#eIb>G z=6>MV8eEaoWDf8IPk8gAa3BBWootI-izDVY9|gu8{F4+1CqG2c6p2|sJPqB9bee#~ zi%YPze`V#A(3fR_ZyncTwNe<0W$2Q8C)Miu_TOFy4S<9Q7^s(!?V| z`gEHZoT{PbAOerI`|!FnH9&}i4|p5k@BSDPB;Y0;6)sh7T;{bU(%{n!#v!eY3#8i- z&-xSxIq!%MzOQn%P!2+S%JHI&J>R&cjrf4H2*@s9Q-n+HBLgrv`Y-G)8+prCjlCRl z8{SU(o}DNz(EcUVsQ7phid8-2A$K_@i9#f*}?yN?l z37Hb{4c>}r0ZEP^=iOPVIINlxSM^NAHSG$%UI}I z>E;YkDh2C-`s?p^p*?tckUU#uILzc&1I_hxTf$>nTe>QlR}mqY60uYMj~aI6x`oKk z8yiP(l`|9TwHGt?2}${+52WH#pc16aD<38qqktg-OQeew>LTYq$Q@G@JgBdZw6%t- zl}I%mn*g*CB6S;LIcs^896w0Tzm9oVatrP;_n)#<%8gX(!8Ihr?Eprn_~vKKe3bcp zRnPW(X?3f~7J?z?&S9g5H-EiS=MWwJk{CdBuUidpS(CP2gGZthBk%w%V6L7d7ghMy zJ%l;XEe`a6WK6?G2+YC5M0jKlvvv-%P3@#q7w0}#@XnvSXgJL!dD0Z>5-sQq;1pP+YT&>nMAot%d(W2<2oB& zD;G-b;Wze|8e)U3haEJyMdKa39AG&c*Kq5bo-qSm9&I=CJ6 zZVd-ERle42KGCNSI>B8U)kEXL+h4qAO<5|~Y&g7z_q@SSNgA3!8afONTcKqjI@*Ry z(kcp+r~rR>zSGEE0`tVT7Z}Gg8qoTm`j-C{%ktR~hDkH3_?RyK%zP3H(GN=>V)Yzj z*!)vD6lfAh_e6qOli>Z88^v=9Lf4@B;m&e4@#7cq4?sFb#aq%>r5&M+472O7(f=hz zDoIckRgR)9lwZmz=zNksilmw@y;F!}iQJaI<=E>V^ll|Ry#^+!uI^u28S5c2G2`9E9*Uxhlx*F3OKmkN-Oue7MmA3R*Yx~*p8oX# z>o975#yJ6U8(tk4&*A);N3VGqWpTprX6iK>v{T-z$o|D43yAD#u=Q>wMWP9U!8w9K zItdwE-p=EC4O-ugNMJynXJQJ##fKg9X;6e}b-#NNS zsxuljU!RlMhPE5Fz9N&L){~o`hzpPK#f3Nc!1muJ+sjMDO~9OqB`h4b$TTh;Z)|%t zv>DmhtL{LW(9)maBGRNdM(?Ke`S*VI2x=|}CA`>icqXV=#O|S7hZ2sWdv5`{WGLYX zdUbZf_TQ7Ru%jqlLmacG{xw%0cUb|f6pp0L!V1hm+`tjn3B!xWKQ-{wgbvYn`4D+^ zFs{aIT(mF~%Om(WGmN{M44D)2Qfa!iLkV}-F(b?nv`bM=z1#}?8JYGAtn{iOW`ibj zt2!2u1wU2#7{DEEJ^}f)*(P(7_J#Q*VyTrY1rLvwMt?VC3$^kl)i~WG&Y7;7x#_#w zeL*cu^3g@plJ_oH@r%azE&*>!mhM@zi&s_v@Fte$$B_A&h)A)2+?*}(%A;Z5^eLoK zPY=DdwG7WMa0)1_+kUAL_!G@(W9>Xgo3an{pNqYpi!HXgShxlYPiJ2^ z&@HS(@Sd*VbENi9EN#rJ=s7KT)<~R#94!H6V$VB8FKV}*%1b@6FWl`#{Grv!aDz8k z)>BZPKIK;lgMEE(pQ3Y@B7LG$QT1#v@7agN2Q+fx17qq4@Sfe8vH6)6TaMxHujVeh z0%Q#^{ZPp(M8|xf#(N{}C)j%iteJT5$W0T&<`3aro?nscnLMaO>U6+j)oO8a)Xm9T zzHVL(S$@fOp8OkOdcWt_N5a8|y}I-bigUkuP)x2-_=D^h>t2!Ghm~*-29Lbh@NUZh zY`wp*NJ<*SW~yL-(ZJYuqDOT;B5R+|hJW6Eg!Xtd&ND{qKp; zX^7pz{94XFq&${VT4w`>s5p-nWlXv|(EH-aqPbT#a;1|ary>t#jBG2&;*S8+-jEn7 zjt~05VSZi$X=^9tHQvkZl>|7sRM|>LHl+LsJp2y(4Y&bpgVKGo9kH!Pb9GkyChMNuw=1l^8Gj$;@jr^lR9L(r(@q{IY&t!1^?9LUIGmNyf9yC?r73U zwA}Wnq;g5+@oNj7&f5iih2*rc_x+$jDteB-oiXa0KlQ!;-VxXjxQIHt$8NF--w-$P z{;tQ}i=pU{bvDy(hEShcc3G8A!qGclwQKC-PLWpRhR*OVn0S_-aRs=R<5}a8SY{q& zJD{flJ=37H*uB@DuCuHHj|_*^krB-wh>bnNAfC{hfAEFhS4w*8GP%>mO%vm`wBSSC zY2cbYF8R@4Bbp|6FS(ER?cNY62_>aA!A%qgtL#U{*-zabmuOC{$uqN+J_O(6FWSsC z1buxP=H-+hh@Cw^jI@~4*TkCA#I@>Jg*FZALeJ6ugN}4%iss@W3=FLA!c$Z+uBm0Yu zMM$ZA`?0<*tEgta;@yYK1@eepaQ2nc*PI5sNqf(U{ne@GLQ0>+XI8K5B!#{Ke(xJ~ zK+6HIci=t9<6QIVNuq&nt|P`%o{9ZwZ_C#C)1FP5@e5%*T_ZHTbz;SrJ4_*Q;B?X?!t?mGjZNs5G~-sJwz@C;p7h+MdD)Z+O!Dt}Yu{xT zkr?}KADbMkB$=Fj5i;9ll>l7$Ws?S6-q1tgBIkAN&5|5_w()WO|J>?C>^*n`xZTPA zAt&}a>HZy~)141@)~RG|LD_N4E1RXUw%o;D=TOnFA7rE@U#_>w)okX1+S+VNfq}X8k=5r`Eoqu;eseY( zSu!O0E>~Ng*T28+asBKmD$ZiaU5N9A5uKFThE?x?x_5fn0TgPsx*GJZE`5pO$i3K( zt7da4Dvw);rcVP+NjcBMpN<%F4GxfYbDpP5twLKx~)KgPu zkATHqv}gT`Tyj&A)d$r1#{9%>a9XaiAIST;KoG*urfga>QEsLBA{GffN2=&B!&I;T zlW_jq>HXt_azNQ_MK&_1hE#ml%XRzDr?@h|d?h)gc0KRe+QbJ=u;N}8nvBl`!7X2} z)-}ak}l3}YEt#yW->V`j{mbKY;i>w2&Ey59HIU;Wcnb7sEh z{@(XzyUEtt-}V4ilcZI6MC3U>M83dF=ti5jLPpw{TRpMiAe!akQ@Uqg-`_WyXty36 z>;|=Irki_gwyj|ZKn)56(w4UdW$GM^sNG;jCia^w#$}^9b*(dCFnVHj@OZcN=yz z9odZ^f?Qpk#l#woP}X39Op8)aB(*Pc`N?o{J>8ZvOKVUHz|^AGDUH+JYk!l29O-88 z>Y9{ylW)H;(pk|_f7@xs4+3`Fo8=woTB#-zsEt%0RAFsaNbdMR_m^1B7nIDukx_`Q zJg^yZnNF)3?rUV_1au$<*Z)22z4){dMp?HtY!F$n3u5NOQ?oEeP9(J1qQ`anzPk)F z4(Hh$MXi-iH^F>(gPwjZ=$tWBaZd8+(fgm|)`K^5B?SFh=qYcwKYU~sVtnIG}6z*zucu{%&V3BVw2{#Z#K}lhCO*W1w@M9W6z-LN=Z*j&vM1v(ZFZ|RVcq;{lnVDao+QQsK3v= zRAy0TjSlAYA2EI}xlsL15@sQOAk~p8DU&aAKHcPI(MPG;WM(;HEF~e-3+ZdbkRG-% z1_14^X4TmSqR^*M>JYK4Yfn9a&Vq}X(YF^rA#6W^URqpOXPrQs|Ljb0kglWze~w&x zF)q-g*WE~J8)@Z~ZzFjLOfAaLHSLdh0Od+7vL0=GEMVXs*{yO+I^>zf#w%V-IU^nG zVbPr%o8h*j(sX^C(z-+P%CFa{?;jo6j{mmtG@%>$FuwH^&R8conFV$A+j-9yDO~#) zy=>u2FCX#jr|JMf7*$?mIex3m^pt7H{FddqHu2w{_A@W=0vQe@;v0~V@Bj&4m7n}M zFCDeh8Kg>xN?g2~Pe5C!R}9vMyidU#9yIs`q+`HEG$q~S8u;0|HudyNhVhjiy9|{e z$EjPHTgHac1k=av-0AB6sylCn*%1^<@6!g3Qm^}rp@z@>My_wFBe zKD7VT5V0Pvmy_T`5hCyLA*gFU&A_GwpvfNS1tpxzi@9a5K>sS4o4UkPEuFvS?~H$E z=yIZesq4yrWCdAjUra)fjfF=@FeNNVuuE!jE_05f@G@@6X}+a`bs+w|CVP5K4ekpm zK7v2Iqo>trAavFd9&W=8;;iuag2HK)G%S=xrrwQ3{+F} zbK4-~iw=p2yb>BK&9LZPpnDzj;%ejwTGlUk#lLf4ZKe6!vo z;An^(UONj7;bPEcbBu0FDt-#(4cqyNx_=b$WI)gQRx+}?eCM(TvfhoyMh+I8qv}@^ zul!qk|H0^ib1OgipFM6r&Fvg$Ht&C-d3R45=T6fm#P=IVHdVLPJIdET>K#ZPJtOMd z@H6vgMvpJd!Orm%*M$=(RR$~x=U8<`C$d^tK7cpBJ4Gd)@0;N8q6yET(!mmGsCvPh zm|4yo*=+)K(Kr^Ta7Xor@ixOX$EGUk`F`=7hl(8+JDJ9`&?c_zCtMVJQpr=${lrFAdQQKLcv)ZxA#X&*WZ1(2FTr#(uuxQ)& zX_gRvH^2PUo)7*4MU$S^rn6NXQ%4{fOl)jkImf2&>MdH+kDHuXJ-hY4V>F3o8vT27 z;7Wg}(DkjgIQYcP006&S6jPd0nuJapu+f)uZ5!g+QlT!^h{03aX?HLFy#P25+2Di# zS(a04|ALnfnMqdSQZty2i0tmqCBhd2Hr?bZ&eBT-zI^6pmsGWGBbl?@1R^h^b-=v^ zbi`g7(2tc*P_@{kxwOWdel_C<%aXZSmw49-BwOsskp3{yA|5&t=GpZOK9cl0Sh;+@ z=8Ub0-y-(UaCt?Z&!!TYteB(KF)QxhdAn`d5u4RJ(pFrcN|}31k342lPw%VMY*B5# zFw-I24A6}Xa|Y3fO^>OfBx%{8y1xS2FkcJtF-CwP{_o>4$|?G$`=tEY?7RBuB4v?m z*sDjhm~LK{Dv%LjcmJ;r>;IH0Xy*5E_jhIO<7Vjyqbhe>i~Ygq#ntX@Tc0$e7W1-n z#Lm299Ur5y+CweV$iBTiOVLk;(5(fvpC{BaFUD)XRWGDBro^rp0Y4X|m;M}ciD#R- zE%G-cJan}=oN}h!qFD56s50?R)BP2RavR;h#g@c0PV|>B6==(4Oz@f1a;G{)26%FCUd~gO+X&Ln z&D5{dJ@hGJsq+_I-PvOT(-2N|AY=XW;Cd@(?W~2vN%9Bhfo9OwjM(%YD;}b@+9LUu zSIV6hxete%PCq(%&7{Oxp{1jYAF6~)_D^5TU;5q~b=+Xap(~rEtq(N>>5DnrS1E4w zmh)_f3em;=haJmR&KpEaqvrF3hHuVZJw+0d!GAtK-Fsvogg&9a#DZT(Kr21^TNh7; z>(kO3o7GyBlTDA?crQ7GZpNSC5biQdymE-$1Q|B*IacA0_{NGBexb9m_m}`HLTE}z z=AfN6r9X$u!?ETrFuiM9C&l+v^1Hdr?Y9I%l_S2qrZ-DMg)w(tr%ia|I zx;5vADf>b$&#>Y_#7_AD=&JW%n?ma!h04Fwd)Cj`!CaIm`_8%C-r31n(@MxUn;#r(pSRfH6NJu-4sZVCS!Z}+<*DPgBv$1%tD(dCp}v}X+B3mDLQLa@in zg?@W1S4=@Nr$*_>*hV(a30$?RxuORO$L(g)gcAobw=67$L5xPUrODgmMTzq@kI+mc zhk=xjpVh#Aa=R*!-2t@(`*^|;k@wVhm?1~=*XS<)G&yIm)JOjENt;uCH9nsFp7T*Y zGJAckcP#U*;%JYqo{h;n(js@jInp_54=qY=+NL`|iA-0C+VcD#Egy&z&-F35L)7@? zH>p#0@Q}?~pA8{Voxuhz;N2Q2KzZo!ORuf7i`(1Hv_{wP>HX5UBB<^Uhg*B5I|=z_ z%f=bMIJ#}Z3k;D0~Pb|4q5H>v6SNanO1x6u0&S{?5eLQ9cXT*-1e+_U` zc?r>QC=M7AmPb#j43Q0%4NgQ8$YacOKWRW?75)6jr0uhmMow3`X(>Ux&+6T#q>4Oq zx1zQ};@Q=z^=$as3Yk1nROg2g8^7ArAyZ31Y0p^7+MX=pzlkyH)*fcyRI{fVR5eTK zS`ZarH(uJhpE~+IwqD>_G(UJqTd!+$x0)!~zpNgVmza+%LWpC=ETZ)cvtv^i`aKCK zc-$k{C!pOWIwBRi!&~>$w~_S7eY}YyjTEt{;#laIJ|8+2Rx$!o8WJ0Im>02;BxIYk zglhaoZ`o@}c`F!-nEH(biioHbSgmrai@NXr1D6le8E7%YpA5=W5a9Us5373WlqoU{}~#kX(oqk1MP zRkvR9;F>iY82SR@UALmTq>2n_^qpjUFHi`VtOPx;-NMhNJZwk(DB&*wP@yTbL5r~I zlE=of5H9%yx9lA6Z!h~S31hDnvN12Mv4I$u5HY4dl8J&j{c}*@oe(L1lr9RQ;(yv=y`$fIr#6KWHlxth^r^ntbeut!S+{v~=yU zGg$n5LKErAbIf*1wE9D2%MM2Dm)1|h$^)H+BvNwwhEPMjr91Clt0PF|7|&|-GDvJ} zv}#h!jB`KqB;J(a@?nr8CN_8;S}aKx?G0iPn+gA-I?dMiA!r_eEOWaUgw3ezw z$?JftozrdKO*N)P3hk{QQkHRY;;kVYHhp(NY|{e^?Q=y!-J9kI1Nk^z{l8b=M#7g>JT98L zi>GZ~jF~;+_CK|S+@?<+s3GqK(I*7g;2%7?&io&y*(wppO%ARC&et-lt1B2pC8T1! zqC)*s3Or0VzV z{|@wCcbEJuMpL})*_D_Nr(2eOEkF(!DevE&wHkoIP%kiLkRPZdt=U(*Tt@Fb+sR_| z<`6qGF`9G&S~~#z2{E=e39=Ggy0(cmW;y)VcatE}!;{nL8-@0(jdI{1$IP~sz#lT9vM{S zI#NU_cniSYHA3+mbvW(>Y7oS2_WaGaIGbu=2lhgZ<}5+>lF^Nb@$$^5FO#85{h}hU zkE-X*09D(nqWZS7isQ6I#oxo#T*5+H!+zMH=2Hf;?7ebdbJ9*bd_9LlCmIfmK|`>8 zmOwfEQvjVZ?6DhH{BXp|+$VSBl=!2#a|VQ%8aS)A@ltF%N%vqW9jjy{_PqaS0z4*a8Yf7Vdam7J$&L$In`MhSY4)@q z`0hA0*oN>vS)jfN)bs&-h}Rt*BGIB^qtq>{sZ5!i9oZi;{xM{VCUBLn)?_=T1wew~ z5`VSd9 z(vlC2@?k+7%_Qx^+ZhQp=i12{qEQ3Rq?k_yEYU3=nR;&)p3{* zC170}L|N%i;JNMV;QNb=y2^_q6Ra-MG}SIuCSH%PJ5V+RtvHF~_wQ8}&Og@Ae@?@Y z)gStNP|tpW;Hf{UvLFDaKH*5vk(gtlmVRQ2tci4vTEfwj9D#%?TdAOUUcey7q=e3{ z9+hvVvv8L@iZ!_6f`5yS(tLOYWfACA3cwgxSx=h)E%&i5ilV5{2)#q zr8G9bolEWBs^8d`UA1YIWlF;%Lu%W^x2_XhZ4N#mCes#uhw4cJxGs%lM_INBliQb< z7d-T3#KY@=4TeX?Hxd&cwmTdg@RMy(I(o2I)is)=o@&mKGX# zhe;1;re#N8;u)c&oJxQy?g)FT%rO7@YhxkwfJwD(or}O)-x|M^eb4~biCB8u`@NUq zyG^&K4lm}2D6&99V5nXF5@Q}*5HmtY=2En|S;{|11)?oquOWl?;SYrbX|z0^;E;A% z?SRaFH;%AtyGu&*SdgI5@o-)`;f6P^3QHfPqN+bocjt@DL*v(CA@odZ&>MN5T^TE z^s!?Ev7sB~_!PdrkvDfwNprM*^Fq)O7(=Lh7^4p3>{1Duz8C-!$Ux9IRoJnsf8#~V zq$@d6tg>z+X_5(tp{xHbm(;sKrHEiGU|QS{wz@(;FfOd!k|1XgHro zrmC8a^uKC#SQPxr*mZeX?VEcZ+uyILoo^od#X`j~jm`0M24ntbPmaEEgr!OHm4ih6 zK92T9P|L$Kgb^y4m?TDt&u;;sKK*6D$t;OWUKR4DEq>thktU4rQ6B0&Yjs#jEVKKzeElv}$>~X4&$i7XxERFtOfIJ&6@eN~VB8^6= zr|^)qIhrNEY!6hZ4xQ$@#gF;d5!nAB4m{YYWT{bu#jw*(VY^hT<5fL3HcrYUzFX<* zsi=2Fn#Ii2$ZUd9XD=MYJp$4e6<2J#K5gHE_N3l0n8w9$wDyi&%K}lEC4-hZR*^U# zu_R_>QJe*i1y4FHsdN4tPcAUJ(zHd|@ax?iGQi<-d<^7i*4|iFk>qJFuqEgX>!>16r z%e`tiEq+l!w#H`=2e?jQW7{fj0VU`Y6IEmPw6D|XI`;fk!N7k+fjYW#y$@eJ_mFn+ z;pR2^<4o2*XGl31+(RUjTTwkNSlP*MxDQjfS&e1c5@DPn0g8Ak+o!9qeB5}Dst{C| zK#@^kWTHWLpoQ5rI2@{oh9^703?jIBZTZ1teDAcB!VbT6X=Lvnbk<+TTx`(R4%F}G zgK2P)L`kYDMriqUA9yE@?xE%sd%?a}MXG3NWs zi2jpJ!(G43-A(9fr+!WizI}U2x5KZ`s=s`Qo?dJElE21EQrD-mEk0)5YS{_gCyyoY zlvLb29Ks++qowlIFatR~K`A8qwZ$1ylQC zz)fka=@wyUk^(3Z!MHN`1kw#Pq6|n8(*@Uunn;EF$hqtvf4ktRrtCsrZ{FcbU<$JGpLG z+?jg~mfbcO;`rPa=z&k06@F5T3#b0;yt?q|+``AqeIwP6-| zj#pplYI;Bx9ev@|D+ebNE^L6(*QBthPTdk@?cyM|=Csm>9W7v3IWFwC$9=lUv#6%z z)AvtjJ|;RXZj*+k&t6}t#_E|FdvI{#UjcxEnRWxOelky#1{MfE2K&Q#2Yg{2?vH7b z-lo+_n~p2Z z-(g-Ml6UPa;;*{sZ!Gx;FO@ zG{>>u$FY2XstPei;|%f7dzxLvexS0R_hDd^9yix%ae9@*u0jK76@$Z5&;8_=5Zl{b zn19v177IfB;t3rqMf7bV&)#Qn?l9G9WZTlwHW!CiZp}7X_Il4$fRZgu_JP7KI-B(b z2(q`wxHe5YJt+A+F&D1qbY@^*?SCg==2`blg(CgRc~IWh9v%0<#HNK`s5$#)=PO@) z`}pzQnaLhE5W|VPJcBoBvq6JiGZ!Y|_Ks1NQVKk{bZM+*Mx0$}L+U;C?$uNR)7A&d z7wvDXl$>~{k|dfcB0|)fifk}S5$)DPjm&Tnk^15j3kn_-`k`4g@$ZrzYD%zNIKRtQU;OX}ye zrgnlBj>b_cw7{wP6Q96~F*vbz%R3C(M*VwdfXfefgKys$elU00ZDE_@|XDkLxtjq%_Uf$ukq+=lD|nI}+3BT<^3&;YUr zq*m)d_LnV^7UPJry{Mlk%W;pb_YigOIx}(jh-=zuS%d9PY>R5o)h|{l(HjM8*jHW? zwqw1>#&Zhkbx((OU*IvOjo!bu_%Et9a)smlcQ8HFXiJ4fE8lBpXZaE6)H(Hyux`|O z#qAS$ywTMnT?ss7m;TZ%^o7$5eYa%z=pTm4LHIR+@o?XL07?psA5ai|Bc^j)L~bD7 zvjx>f-}zT~o{>#+vg$yo=?LBm^ShEK>OF~Ny#y+iF_)H_N56?)au)0Nvsk{$!X40) zXDf(oX+!mSD_sXoWYZ7m3+?-x0p%A1?}JVa7;i6PH>atc-{s|!3O@U6$f^7=Wl@I}uD#D*kGo$z8|jWnDqY`BL$To8_f!yu13LO9@H z?R3zxozT7f7kX^^f$^=Ti9LQ#4{XDq&bj;@+5;7+2RWrQGplXUQ%>9xpEcR6fTBd` zB3hya06|?5Zju)M zRNNYSLLmZNM8Q=7-oif!DI10CL$E?=1X^Yx&Jpqj6^LbX_MCC@H%pL1veVG&kol=w zmZHeMe!{b^ipJ1~IYf*89$&1buKTs;*}q}^UA5^4@Ul^_M8qHyxAm9@ItC{ivzZBS z-}y!9F*JUxFWnX_dCjFiXUnGEGJV?SKbg7vis=dy5OO=5;)#miyM~#URH{!AA3V4);Pes73Hz^b_=BtTEWfI zg4RA4%)^&`V3_QIDH!4v`qCg$W!objHH1a{&Fq{-1zcJm0`k)X@}x@g%4+k^nHl@W z%dI^oY%4vo>A&+l#n#GXboBvEiyDqBPd(?zEP7ww?wYo4t%IWg&bmf;1#;w4`sH>cr7s<(Cj;X;L10v@+61n&n=tBR3MLO1s!zo-XCsR za5PP69O~7_*!rOWKN5LEyLxAbVtYp&^tvFUoxq6H4#ZCv-$uNjPAHg*DZQ;5w}_FP z6vC<>s3tg>&dOZ7Ml(9s4tK~>L{CQeR@d`(gVPxvbR#rjaa{4wv||dgarKT9sj#V8 zqbf}PIQEOzdbStn%op=@HU{>`9rVVQaM#S8;RUX$+)^$xj+)Qm?Qv%;L007im)RAm z9WoRbqMbt|z65d(kwU&=Z3$r`rugCA{wi=`mlP6fK>012i(7DnLQ@IBTm|_h%_En= zQj+dyV2ZPxv9v6>D9({;d;)H+tjC!CXihCT8rf#V3;!rQdZBRu5xT`gsZ!mggE%EF z!Nj&Wh43~B`8NeVT*JRyM+`8$(Gj~T|7#9Zy=%hw0 zXy*+U)lSKj;Jv6KL0S4$(7A2IhyB)0ln%LwMRq-_b>? z!MBn%{+Tk3J>zwxu&Vb`!#?x;&QVsE8=U9@s6So-n2!gE;X222Zf{}Vcx#_zt3=F^Cd4CwdF zg^QVUnn_s)v>1NVS$Fi~gZO;cS7ykp0NvOs{fD zN0eUa@k<^Z>NZ#Ucy2Al6y3Eg;%(^;8e7N>w1(Uf>Lw5`qc@!%zh4_b5p`!5g7Z7^3EHQyssoh=E#umg-BbX+W{z_Fmih? zBLU-co6T9w-?%l@u@0E=P2H9ur+s2a%_c6p>HVFnV880%g~Ymxh9(d8WoL34Y{l&| z?8Wz@J)sNJt51K{FLblHDyaV-ddy25F$g|-ZMBcv>avOd+Iv~9)#W42v~PVpL5NG5 z)VK}W7IvIs$cQEqRh~cxzA@!z7ee1jNWeF$D30kLc^}Rb{@lREOE`Zym3C_<3A3f#=lqRy2%k2J^65}8XRIKx{E5W!X$T6~>ex0KVM#ZQ{ z5})9^Q@Vz9$d9Baw?kiOGp%Tye{t~BfZa`)j+%Q6Xg!OuK@CwiNyQv-7j`6U+qj@1 z=?^^y=m2nO4uo;qxrIatWeDn+(G~;{P+$bg zp&ZzgI}1(C5}%yT-HTNxiL%061JLezgx=d;))2AnLDZVXg~3Lx=e7PRwCU9CyO1aQ z)bGrA^WkFkyQ(pD?_@)q!ah=VKkBwn7BvoBdtW4R166OA6aa}Dl!hLW*1)FIu7PG2 zM1IPd9^FyQLmbtqCMuHn(tskUk)`7vE+H$kz*d5yxvZDi!kr>?4gEL_Va-mLz}oP& zAykPQH&!!hV-b95T1?`S+-k{)t%tml>MY_g4@?FG8&L{a)Mf5GVRII|aLLy>!*Mlh zxYVs!TX}X0fin=q6*S;P_QE-scSCmB@x@Ny^HZ#VRjGxb2U zl7nI9pum_G7f5K&eb*wsXYDu9G`jX^ec=yMVoUiyShoyJOy3DceQmSufFG!NWbBz? z5dY23e3iN4sK;qv8kNUUgsrdu-#=78Ux1P)DjaU+kE~%3!Sy3xTN zK^On4eyH8NJ)sGRx&|%X1||GEXKsH3%Q;u%Iq2nGTjV7=kEqC~l90H^K=ocSe zZ`-!(R<11=kf$C|i3S~hVJq$t_6hu80XeV?p0=m5sJg|3q0;p(-$f+NlQpK?tggNvOA8BlpTZW$i{4X(nbbJ zQc@?7buk$b51qpHvvHd0CH)bVU|i69^~CTYoE&@?0Sx|&U(6q9*0lD*9nu9TN`sAS zo*sEbGNwp6W|SYqH9BBBmpQiwn2%<&2^qgifGj|j!Qs5xi-rt~ynoOy;NKv{cE5-} zB*L}ErPwu__~=p+MiuxI$wx$X@lCN)<5fMK2Fu_1x^ zITZ0v`mpUY_S6^k80;gbIaw2c`EcReKEKywQ1AFz!7GC(N_?_`<%hG4V zH|-4Z(*EY}+-#@Ca>}9_c|_?zyz5D`P~!-!pApams42jM>lJoXTDe7_g+DL=VE*T% zG|wcQ9uLq`{XVd3gItvfE>{S-TKK{o3!l2(YG+-HZSo z)T3@%Wr+Cu5FvFRptb%h4~ACI%i;-{yLoWDFGxy>G^@LYX>xK47i*8IBb zC6dh5!*$@0)(Zm0%<6&=}F%Jd>&~|g=}~W!Ynl~8Fqzs z_ZD$w{efK~juCK^*bT-iKlQ!_VkG9|3!d{-G~jK~lSU*}fI5WU2VRf&Iy`E|eypjE z05<%+hoAK}<9FVeN)PxDJa|l|p1QV0wu|`9NJn|kXvd=9k6~=E{8&~2&Zv43ZI}Zs zLt5|0w)ujnpVUuJh`2L+dQ;4<+UDy1!+wTL6OUo@2TLY<fn$rs}#001A7xGr|S_J%f~_^W;3 z2i*kDnD`*FbE(BOqz=MQ3GUCK`8oLA|2#*rx@P-hJ9$-q#r`98P_k@hiDH#f9u%ab z@t9U04c7fdi>WuEr%CHw!16qjK`hjIQ5d-_+R;BzF!C6hEQF(``dFDVv;FgHb#-@? zVm)&8l7rE#;}D~t^9b9y9(xBGhvI&E%K8Pb5-bEbZqQ#;D357aNQ@cZDQxOb3rd8P-#M?cNWrrwoJ>&O+*=~ndl3JI!z{kr~)xZP}v!tplrbN{bAb4)w6 zhjhDI-TYHtXI(mKrGqlU`d1Cm=ft~L-7l~GusaliNXC(s z2{Okn9T{{LeLE@kj{#wtL(Mv(IF_A_s5t?Qs3nZc1!FGXL0e#@uKEZXe+UOx!+GD~ zv)_xnvnui8Hg z`B!E`&x60a8!SUL6=*S@yUft(kVLDo(24Q;x3?ZRb`z|SmY7fF${_tyIyN^{DqhY? zI~%iMP9f$KC(FoTQY+W@jD(Y-I*TOpS5gb1k7LW@YN#X3&nX?~U^J7O z%mpDE6{66|SttOR_$t&E;a8+X3qw*VV}!lXy99huNRRBV(GH|aOqmO4BzADgF~TA& zDk1{ho*gKN9A|96Sl~rFiC%-RBD{M%>g5+u7K@Berg@l>5)^j%1_ztx)R2chS2U-s zC`|U-v0+lg&PszQ3b6<%n10;Fh0{AZO+1Klg`AYBvYX=HWHPEU>YU#obWXI(oGXRSXPRv#l4 zzv8W)$d>5^PhU(Pz+Xlp*n%9_z!uDC)i^GO>6->VWQF# zf(0H2!fB}3+0tS^9(oB%j$iMT=(;LyN{SxWi zy9q0AA-SbO!?#d^7uxj|DS3&NfNwg3z7}i{{I94ZGWn&Uk$Pol@l{|AOPkuN<~1N% z$^hmt%q5xQ;G&wa6jr;E2iWoni`}m9g{b9Q*!$V^^q)W#>abO7{fHJ^*U;ZNQ!4*)RGmNYG!fYT{OT%;EBDp_L z(3{1sW@7#psF!vj_5#t{2y9B8mkqAZ(R-dlmCHTs7xiw5W!_QqziOux5D=gx6?FS> z(AKb39(P=}e6}4hkLHZth~O*ll^Lh+PG~18|3O&aAr|I&%9}t_(w$cO(W0E*%T9Tgt`=BQb!Hby^eo(CE13iU1!2~}P5S$5& zKH%J) z?lIc=QBh5k&6`f7|0-C;qIdn-HSJHP?V!~v8=!wI?JPV}S!YwWFYcb;`avwK=|Mql z1C1=&!9e;&Hq}t)4)lch4^rD>B8f}g{$*GERtJuERl5N!G7~&CsH_1xqC`Pf5->-? zzIQeN;ST&_OfX2?`w;5AiUOexQJU&6TiAuDoWlxwM4_u>nmM(4if@yfq>MhvI+W1F zRwsru_%}IP03+L_R(>^N@9b~dpAdOgRa4%yj| zy8G#?LvtlS>2zKm-6$og5bezyB2zC2cz!EiQkn$AvaiDhrjhM+Nt#dn*EHH$6ZYpf zIvrP80zHY{{ajsZT6yZ7kJXaUe+;~=%K27sp{`awe_>QWpL zFk`yaU@y>x^$J+pw0OFG1aG=ePkRXG2Nn~yLB8lo%@xFppu3>IbQVKBEok9cq-ISu zoUs!fJcv4LHG{n{D-8*|QWnkMSBZ9zan(2K4l0VxGn(lZQexYvkGBGv`2A>wGdaLs)sQn~W za@gbL!W1jkD6(rL@4-3;0F_g3Ew-zJn(B!6d%91GDeeu=v4=kZrg_S46ax|bEW5!} zk!Rr=pu^U@QMs!%`;KnRuLi4;ru#Sh77viVg4Aovz#!++(&m+hy{eO;dlYU0H}=xb zzd`0G?u~?P1k{)J<`k|ZrJQp0g@V*>$S@crldS&Vl`L*RfG^+athu@fqRy189Q?z< za3gV4-94^aqgS&DR_N}_m$3IFGN#MNl(6KvIK?~EBJ3$L)&_EIhT@F2#M+7*S)a?~ zUXo`}$?~L8nqjJ@!80k6R`g}eF8`~!-=uimW``w?d`q2OK?(D6fQ1Q;4Q!?k7XamN zOeJ_Boiz%9;mYeSk^L8+ttR0R``r+dLmU>d%A;EAI&JioVBwpwWF(GDw&BLhs&%o&|cJnimIkdeXzCbAyn-@RyA%)G-Csq*$BSEqBMOOCY4Dx(oxJlaNY)NFh{nsN84is-U^pyfGmM> z;8NM<|HKiJ0Ok3TSy+Y%Ca=+mC(2*{{X@(L0lkJ~vFuKuC-(|VhVXuDLJj#pqFpWY zV;yo~M${iM47u?vp_RQS&~b}yx7W2Xzm_(h<0Z7uFDgp$Qs$AjH&%U>RoF_ld`P?x>LM5Vg+r=7mmIf^%5T>-KjeBC3Xc3u=m$t|xSmjgjY`I*_nJ2Sel zEFm4x@zdTS{1PVm4!h>9YxgIx(MxRCh`UsSc-n}YXDr#Eeee2#4$VV0;>25D-Ndj* z3ugC(knFbHFJR}5$6IXKh%L59&R+6nwtF;K9F;G+IbZ{{m;CUU@|GhJr*A%SM79V@ zJ4o&)D5#^_*-@Z|AQWLmCi{J0fh9iWtOb^}dmdyLWIbFM0mZ=r-~zMYkqcu0ev8j4 zgfmj1N7{3cQ2}PK58i{7IilC?djc2b=4=W|vY1uXW4e1ygL!y~0E`)V5fN4@|53FT zF@ljiFXCGo968(L?FI&y3CT9_DR9PUpZTa8(p7Q10~t&O-(=mb3}&=)46*1nn_!Ji zWGgTDqk>mMlEuPT0E^m&&IFKZVA&0`1R}fr-v}99D5H*Ce*}z3cIHCZ3B7);=i(y& z%lX1D#WD)di5dgM6(lc0#WZbNg? zaSz=rVU#!rvB+XV(wMDprq_HANVCfy|3WB?Ij}FLia*ZxNJcLFT-qt2P4+PzgND)( z*LoVzF7AK;d;*xr3N%h_+(zQYfIf!#%KhQ1F@TJAVq49>MEZ(tY9J8bAkWRRL97mn zul;UHbJuJnCJ+?O;J}2V>m{G_>ZjMV>E@lq`Nsv&fpd<`gw2qllkjCp0A1DJEp4!T7I*RusFaA#1FZIU;wgh~B4qqXhz49@HE!UX9|zzjJNdXY%* zz3s+CZIBb-utWNF%?@l-8Vi%`e8>rYka-oNCi54z^p0ZBj*E0`316U_5X6z$Tec^oOvz8O{))GJdZ6 zF{%4K_TYSI3M(LlB~1HN%!&($E-75fpw_CFH0`2YKxVU_`VsRVm2`er`|jTK@ip#(r`p_P$BHK2K~#R|EcWMt;p(>_uT zpqsYD+ZyEt1J|+n%Qa2smw2aj2m$_jI4X~bLkj!ps`bG2X`PhICi3D8bHRS6ib70q z5woAC6x7;yXC5nbgJrNP@1|74*@f#3R?LkB4KB)T!0|CHc3d@F=|Jb(%l)rY&~tAGiLf>aOE@`^2!=Vn-={X5C@=!3K3bRL#id<>Bghy(#>2*-n&jT=8m_3 z3zSvVZ+}IB^jfT3t4{A5C)D3+R)tJx9C1U+-s5m3GRF<@hl*=%eFG zz#2@FJlAsn8~dTldCw!L-^e(&N6(9mwOKSt4jBPuC2ynDM|4LJ=FVwPSo#FIl5^n4 zH-l=BcyB?4VR^MadnBxiICS`x!mlEU!S%6)QP&w}J^=6<9Cqbo`M~qkCy+}#K{a|> z_*}$HWAcwKs<6!uOOGPRNi_Lx{HWSV?Tbkq$JBQYYO5+zHs|aKC-u7YHa(j|TL)sg z_~tfFTwG>uBk;SHMaf|h1{RTg*`la$oM_!T z^wr+fNnkyjoR>519L$cJ+ycT*k5mv2R4_bCZ`Klfyg{qgUPS!_rS!kzqLgD!#goJM zfw+rY1^gE%;ODx%m62to6GCj)J>+mT^UsH^c@X9!o^?bpMin9NM~L-+QF1~`6jR#D*s z?@N%&4DoNstpQv9i)WOozfaEO<$=#w;k{9iq0!jjrf~V3TC^Yjk;9O{OZq-fEL%nG z*#BabdXw#mGEKJA3A?h0{IJn-uqwG z9a&6MS+pI%W?U#SXdRS-5k?189-tkkVoNR9As`Z!5gDOiMW~iVtU?R)u}Bbbsmc~{ zQp5lQXmJFT!NLPc29aTtk+n%tP?SxUmM*W$-1#uknD&3Z-p$KBx#zxrzccw=5N-8P+@meCX_Sc>bYEgs!#7@aS#iZ|M|OsHU?8A^U*aqD%Pu9j*n` zsuiONQ>reVAdhg+QoK%GyCldTpqTxjzB3HxQ))H&5!CYD6-)_@$Dau3Ga+6BX`xP6|br00_08EqzetreM&UN z=!MhDy;l{RrV52{w89K4&&A)>WmGxZB(u{b^EcTM*@Oe+wC z!i$EJXKA40(C9}Ub_vuAzdT^vz!PW>O%AdGnCC&!R2oJTXwlbr=H3fm8a_Y?yUe8> zn!{#W7WFJb8r!ZUjlzTd(Qd*bU?P0kMR*P*-g*Cg`XZrDCe>ZRUo)Q7+HpQ7MvB`^vNW(R1?d za5~CRF7@elelnoG)~C!&>TgBVC}Fa{{@hu0&u;A$Ch?ZaJx|v&LR$>R$vDB~n>#z5 zaW4I>x=K9R1oA*Z4&z-?y$F&aXoM4bt9jp***Nv`a1^6{&V0FSHP`a}8EfNVEP$e6 zoeDd)TAO28%lr1SgMp-$0LvNwXgE30XDab))IWOz$5174LpgeWFZ~s8MuJ~>+RZrO z>j!$T6Q#ebZ57=;VLXrkG(LP1&ZlC>a_&FyaLqj{+X{M5+0FbxL7Kfr5Zrq&SW#dS)BOHt#(&$j8#G|DbENB#97=>!C5D99w|o#^%rLB>UW=|+S5FbPh1rhR=!`^5zJ z&!;*3pVwhq^#;m*+P2NRtgOL39J$^>+*9G)2r?@^0z5EokQ=lEa^KR*e)8}wG?*>6fa&hxVsc7C8ZQAT3iCb-Q9{iZE-7-BE`Kplwd^)6o()o zhyC3<&bUABX8$|C&WMh+V9vE(dEV!J=1i21mNEe@H7)=EAW&6N&;tOl3IG5MS8U9O zBQ@e{JOBW`tew2Pj-90?0H6|;W`t#|KSZAQT2IwB2wMfGGfJ;S9j8!{IFWM!Ta~e} zFOgW`V7MOl>l+1`H&ccr6kZ+}@4r;oTap}n{aqLtUC&GIP|=}^^5)9#$o~ioTe;mC z6+?1l`5oZ{#Dyg*g(zk*7`62nV-m0}G*vY%lfI##Mh4?8x5X0laZQoLqpwU9^k22D}nANrHE1R2szZ zDoJfBKSq(-RD3KQX5-I8J23|g3ejt)V+48%&NSd&n560z zd`Y^&@8i>uO1Xp*5zFUYf8U?Q-!rsn75CPIhm$EH`uDWiYA&*Y4*B}j^=U8v!CFDo z`=pcMYzvsv)@ZceJL*3F4CZ$Sd#rMfe^uoVK#AwT%;Z($Fn@fI*ND@AZ9 zYLUL~g~&hKB0Pg~lCzdoxb;_rZER6SHZfTbyO9>nh-7NkMLrR9VA1d6I%^49(0(3; zt$SuEC}6dILhWag2W~ZY$Wj@Nn_8& zKz}~o1DjPf+qaI_PFAI(|0+yKRLe3!Kdg;Jt@CML*=Y}Y93Qz-Unj#~$i_G)4C>XRmc*Zi7+>KU2f@BeA z*v`g_aQ&MvE;6HFFBENIo<3g7${$Oq7W*vx3EjshlEha7#p}Y9gkCFHS9If-4N~h& zg()uiE@_jBtz!Be3YUgb+%It4yRp}^vjw|8Q?-PA&hy5m2V66Wj`wK>;z`phz1x(1 z(ab*MDwM@ljm*Av76wmw#L@jo3)WN84dx&O`F)VE^NX*2?ssDqG1F!pd!8mJaOMFX zr}#wv-EU?-eL>&=;E5>_^r@H7QZq1&t~a|*{s+&O?LhHE{6uGiJe;|xRQnobv5W-ed| z!wU7eZ{S6~1aw*HWL=mHG+?ex$^$5Cfcu|8-v=y(0m|ZVT$4i62rfQ!84U5`C;`mv z@6<29`>q609AkAe;%lJSF_M%7Q`L?zx8_;B70JXR57E;hd=)}afa`#<-0gJCvOtvm z-NFU+4wE;K(B#^IfblV{@e7Mm(G`NQII#u8*ZsMLao7 zg&0GC$Rs+I#XgDiJ&j((T`aAf7UNE$))t#9(Vn6?)rW|9d4C-d>M*vV zpHtjI3_MEelWDfBrZImNX{Mg+Vw`g>g-I)7y$H0k&=@6k>ju9dB#$Yz$jZcj9hheE z)R<>3u<1MUT3{~h!s5tR>=B6g<(u z8Ak`AX1oYXRLscMmb{7LqO4t^S;@H$W~Hxz-v@wjQnuzBjV~o4I@Z1qz32zfbU>N>RNbt_{^%sfT;-%#ftzl*c1DqX`N-7oJ>JPL zb5bRKZ@gp@3U|sVsx!)4$#X1LWp7~24Uib$EMBRHLQf_|X$6Ac7y@1D-#?r<9 zjHO2_3hG3eXIw5=SyK-23<;3;?>z}03ReuD4Ohl*&!qerKV-EnV8nkVSi=uX5TN-% z&q~__Ht4NTFJ7gL6TuZBrB0(d6#Vw#d^OXG);ia+qrY_s9*^U+@m^r@ee)1`%1<`` zVgjYxgzW@gnoh_$Ls>;-ie1N^+0Vl=$1*hQZEF&1y#`Hd_OYAMtnKdY#qIsEgzPKR z7u={kedPN*@g|ZMRP_s=&0ewYlU2i}X9TA8EZWBEf4NQ$uW}B3h?n72x_o&Bo* zRpUJ=)gwjjE9581a3pE|GGGKwlZQW{ng{c3_6;~cy-fBI_P+34_Ad9E_Xb_@A4i>; zth>!+tkG<=PhQm?NdWnvs8B=z_w(;Z zXzjt=A>Oi0vR5HrLNK}|LKy1k78egX4{VseGSw%BFgd>r$i2?pEHt)Nur;yu%M38q zGd5iKbriTtvFRgT2xi^S6M=F zr06wUVG5g;spy_(tYhr6G7j=SSIhYyt5FRJBMG-20v}yhw*CweZT{NW`H`>s_SvY$ zLdvl?|Fe&V8(*G9JX6%Ouh%+l-1@d9%2CK+um7zqHb($59A=PW@bQBiH3yHFqs`Ly znc7O4vP+G#+*jg4Qx>IlMjQqoic z=J&z|A)MIcpDE69(L(LR5(Ll$=B=g2aR*H^X1Q=l4I^**Xg{XGeLUY^&K-z~)rqyc zhP&#!Uj0rwn?55{J!ch5)^8ZKc{=tdRa{-Y^v!j^HO=X*m2UkfR|V-et7dNjq6dz+ zSU*Ig{lbF6X2YCq*e9fQN{pUye8|}pvboMx{;~c8IQnDfbfc#>Cwfu3R9Zj154(Z1 zdr)<0bbR)28#vV*0jA*$k7u-}8>K>wyFnlCC0dR+p){shZT0?X^Hn_6QPr%~HD7Q{ z8~nbkE^RdZ+GqP>Z#H2HYQCQh&!QPOjICMtmh?@xuC7|(TfI-pSlMijv_VwW*H;k+ zN7ejaOw7-$8{VFk@^rtZZq9b(f!*Buom`1FD>~SJZmRyWp!E>Ui1qj_I-7vw>q4jU zq4CpC3|^|99*6NT|Elr!uTBYjd4?CZokd+EQ`^~OpZph|dmbzZ-R=I@-t>s- z1WI}nk5u2rt=-AG4NJ6v(t%s8_n&s1J}vt0Z>6RfX=zH&28jPTUxf8QBz(gCw-*)z z8zLsIKS{W+?tp({)ZoQA<~d?PuI>tA<&%Zav#q|Z|&OMsuf-=9?ct-Iaq?OgAq(=LzX(D=h5qc0WE$h2hDzKZ zWazAoY??PpEf-~Ai6TIuS8AC2r2|u0ce`tK9wojGQ9@E7iBDNXdv*+_wq$6Fygc6+ zfUya1tScfU)aqlqyGfXNpb3cIsh-GCW9n(>zKU0ySyjRSjX+V{?*iDFW;mZd^c0Mi zDtej#fG-;W5Eu#o+&ml#+ywwUUH|}p-U0yPnE(KVOYS#a$%hk|@6?qQ0LXtH1)b$7 z4@YoZR7~6e0CLuUUMQ-1&yE2ALVaHYV|P6ZFGd$vXKOnLD@J!87c0j9X;_TIzGT@X zKWifhL+)_6qf<|=y=)};hQv5$(#*(OO%suu?Hy8MBfvg8PV~6*i`@i)i#|x_`ZvcP z#BlKvQQR%2*_bP;smMl$uIXuJo4S1cJZMRiYL`~l=>9(6GU`W^Hm?}f-+M3&`OBtZ z|6@%+fHnS^ayyHJ-w8S02_f3= zkTy(&-SOt&?eBL3g^(b~Jrb|5M|b*4SFQ^hYo?x<-Q%&($9ikxHu2gQcS0^h06}fc zKbY*V-O6_JrtWixNb7Bgy+h&xBOQYTI*>b*b(L`Ej#W3Z49v%j_zM*wOkVV^J$Wh3 z{&pePuzuyTbyJM&87FggfaKkunpp=fjvqFKuMOzD&-x*kUXbzK=h4WOR-QAYs1;BG zUv^!pG#}@RM2FKaMjC$3-B?<{YSsegl=!B^Z8u#1_kN%HWN{GlL|J)Wjz1TVY466Z zP)84U4>Q|EmD+NIgAeUj!jrznah4s1GoVC4p~)(EZ%+5Kr_gWP{RYr$5{c{?z9{PL zfl=f2JeMEl2N$V>z~nB~&{;kIETk3PRv#!2XP#Bd2CsA;vqfQq%2dsp?r_xyD`wy5 zvXwnjkSV(NR?YtFNq=I9kFl z^Q7)AGfUZi_BEfgycpVk-Q2EK-2P%^u}yNVx{}bD0opeQywQm;sHp1itX{eBc~8q| z?lEG-UrQ#pF#Ca)A3e+ABK_zuB38~ax{oB5dz`29o*ZckaQlCkMWO#da5S`CX?5gwC;vM^rIyZO4w@;-k$DN_5Lx7W>+ zhp3Q!5JUgV`}6#aWoXB}y=2*hQGHps@7??xBU`5*=P^PFy?M!W5b<9TuDyIg zw=u<-AxY4m-Oeea?L7X=2rAQ^vrYfmgfIZOR{Yyb+_9gjx3XM23kxk4Vu(4>gnX?0 zYgQLnu=tfSGlF6C0GMzSqL^e5xuBk~d+D8T9D6z&@!r&Vb*(A+ge=;aM|t=S zT_VLNnfGq^``9drKDuEE>}b~<=Bv^Yd2f-a)RV}mu7OW$Ag8ayP0bRjsW9?U>0F;L z`{E6e2@=3f>6h;rYuiYSrnFQ&4!Wz`h-o)rZW<$4;P&znUiH!wT=;2KYAZ5s zy<=Zy1+qx~$Ufq%`YVddrel_-L0e~FG)(Z7yRJ#WWp$Z8xz5AGR^x-iOypvXrDmrzj-& zz<)yw!w)~TlSE^Z)Vm#KRyj!HSJ|f_z3yKd*ZRa&xHi>@WscbT*2?>pvim4pTPb_C zQ!d9PN@KZ#oDL(Aml&*rMNPCQMRqgzEl8Ya2IE&H@q~&!Tndc_`}(;01z#)~Yr&n8|cb8pWXP51dynWw4`Tww+VjkNf$(}fS=RfO%* zkUU!>gB~#UhUPk|V9}%D>PQjaNy<-Qyx>adN!J|tYLH5YEDemSCE;{4(zX7f{ej>s zvy>TF>}?;?&bfk&B{}eM*1wS?VfiL z9?>jO|3OsIe)ZlM#!{7je-au`#B=k)7BAKFgz@;ghj#`J0DM{h$%29&H5nTB#Cs;* z-1SUP;sA_F7$b#(#UR<3Ps+-Wmy2TRo_}+mJ6tqoF6=$5n}2rP=9KRzqjTeVhGF}B zLnZ6SjtTXeFfL;^XAMk@GPSxVbl z2IqDu-6oj_^apR0|Nh4I>2{aW6iSs#t&_>-ZNZLnf}74w4k&a%~nv z*w~oi88Uqtj}>6^&A#ATq!27;rQwzkIhOxWtuhrW5d*pD*r`y2N;Tl4OLt z&iA>mfXK^tbWc%JwP-kK>~_{@ie`<=o<`B8jn=cU$4hOdfBDhHiOEBv_7qE*nyWu5 zC@MWNUx}DauS~&soP>e{_gS~Jl9z33zj@FoDra=uXocN*_KIeLMoMG<*A zwqiQiub+|$YVmUQ-=nA zw_Xrpi}Fe^OITDhaWzyR-T<3*+PkXtEsx;rR7$Ww_S24rSR*}4Q~SnGddl{1>|%sj z2#9H(M6qp*>;0t7mSL-!NP3lzGsqrttAILa6PI_){fdPq5GrZ+{dq8k5VbokRbJ?a zk8C_*$*;$$7tQZ@e)zH3XBn#U z_wNdB^2C(y6-fFR=sD-rZ-de*7~?i5QZ08lsoqbtr=#Lm^V>t`F~-*ZA~eF8%GIaCfB!A;yJ7(f;R{L*zwY`24E<^)4o*QCz7PN32=%*4xj*>b2j-NvMU6Z(R8XO8wEwli0>C}F*hB`96 zHplg|iGOT`!(K%Q0n(Xpv#7o#oew?#^2FMogUY`Vj3j%4w5;k6GytB z4rggrT&Uz$wTD#T96y7gYnI4a`qJ2u>Yp?}~d_N{M^-4`pTPOEoviEaVW9#u4K2!hS zO#9|vQ&L;=rD)gGcX;HVv&f{`Qf-`eyPXU~O4L6%Vzc}n4}?9NUO2#}qF88BVNt(i z#Qn|KGG+yh38KKmVq}#=y9u;hzkT9|TIGn69jLAhli3fx`f7LNUx{0{zqAqGgry*^ ztMj>03fz4}kRi)zE}GaFhAy{?@}+yV&2!w%Mvz*eL7;5IUFTB><#QU_MFLKk`r<;0 zOr@>P)ib5^^UiGm3(j(9W&1&f4DwQ(NxDYpU_R?ivlp{{Tv>4MVtC^wE@h((a`zs7 z1K;^HbTWG#fXKhe&!>k5fMUwuAFeKNPMjGIwwm|seuK2O-TwNOPal<>`-G{2|K1e= zmnmUY2l`R(Z=&T()-?QrMvUr5Ec^gMlLP1vMKBdE zc5Kv&99u7W=JWG6fo_sEjtNF5jt|`_KvhB3z2FRsnWo#dEG6Io@eq2{+Bms7nnNkRnf<( zNu`{&?(m~%F;19)*-7|Y`iRi^m+7L<(vHFW(xhN~OIT5wvOr*b%DUXIz{I<1|)2XZe{D!7njHZ<2YJ)@B(t_<6 zln!rz0_@l^m8dO!y_NEBZwbNyObCn(;iaCUsVZx-0=wUtDv7B0y*>4goPT`O6i{vg=>>ykWvo)M;k$Y^Ilbu1)P+#mEx!dB z$-k!b5#Hk~lY{?m#DDIU;q`+dm10D21gjQb=`)6TAEF2vhB(T*annYQ#XV*v_WV0U zzBY|bKiSG=?`ZIOvniUu4lohax=I1HA5kKse^Ta>xYJnb!uYRV{GSsL@bS~8p%Y8m zEyTpuJEO>*%ZR##l;|1zO|NS~vRePm++puH@*TFvN68115trLNShiTjg^;4o>|pw5 zU-MwE<}>h$Xr7>yVUHWU-x}>-qUnDR&43BY%LzWG6x}vwSl%Qr6W2*sba2A&s&g5e z4->mXtmU)EdnA29W7HQ~kktPV)3QTa?~W-Wg3lKO2^SWq*m=l{`N-Qxe>wZ+4Qk4j z>Aje6^erA# zjYT~l%#rJgh!nXW+BmXif=`0`&i;%j{)x^H=-FTa<`bQW6SetbQeT_DTv~vGKYroB zgKg7oF+=lEADaZ|do6vDq5H$eKnP>^qkVkcaii7G6q?*-2Y2f(KdamclAXjnmf8-d z#xsk>7mbrhK-l3@w$YK$TN zUZ?WD@bU?wd=9J=TLzFa54CaA9V8eZ{dh!EGuyvyd++$9$%1F%Op^xJb{r}jNvdS-Da=S;a=0zyPhTDY4XyZ)qObq9jwh{M1#V5I@Y#>*LD6k z$?nPMWyCz^b@qScd-S#HO@cla!mi|;4|htKOx14oP~Xbi@%sV*yvZ*ZY^>#bCi%6_ zPKAh~Ci*V*WrRsi0d1ECGO_O}@u+em`QPC2|BchCYfDX}+Q!c++t|RbaRq#5`#BtF z?~~jk$7HvQm4mS&vqWTkKfrs}+Bdu-6{(dZ%5jf>TQf?%eFiFnxTrY*9}BOCxr=j% zLiU-VB9|(Apx?)(HDP+!(s&WXA(^mU$V#v;wQ6a#AWlLdtvXi%+G{f zW5FR-rc7N~0pI&G^60IH!=44yT}q^1`gv@$N6sr@=bsT@btTb6$MM-SKNDl9U_N{t zA6ia2`OBaNAvM({kXb#5rO-qAknD@5)iRb)gj-6M#l;P!bIL|pf-OG|87zjuExv*q z79@wa{06l@z1_@FTzeB@!U+VMo40J0_nm0<&;&OhOMM(qvVGi~0i;kfL~j!|tk?uO zrL+v*%vPU;{;7mcJ(rpPF$%uKy%swhBSWFSZrjzIAR+LJzi~kk>vt0gP~&#WN&&?T z;GX=JOYuRxDSl9-E|=lF8*R5^?%4G&z&vo4UjdII^_}U7`V{E=xf2lI-?4Gmxy%hE z4%K~3VYeiTmm)uz#F2$vx;rKa>Lv5}o;ipABmx;#yarb)bDr_k0(S9c))UfQ|`(}ZEH zvv1i#^srxg*alNxdbftxnqgADYzMgvQx|<0IQH!FUl~e@_PzHO*Cm7=R;>e}=7nb8 zEW2C)l@wpcl1!H3oVlJZNivS&&}kWn?Ui7KbGR(uH~Uzm_Fg@KH_IJc@O$q02&`OY zjI=ZXqmE3?`F0u(AXeUATWia+UAPZhe4w%6kIgN8&C*+wb{~j(GhllN5p-Q3^R*u` z>YapDRU)Ujw`=iEM}^rEEH%{TGrg^uyy9}NBDgzvDZ=cziC^ymagRIEyV&6m_Fu~Z z=VWr8EmC}dl;Peb?oi^*tpvWY{HbP`#diyNw)A-Zf+CM%^7q!LQw!};+8TfQqAxrD z%y*BvbG_iB%zn*}`10z8VT`$XdgIBMC|e94TT<@bG|P|JXX)k?&s{ns`=8>~8Fa0@ zz&&ZIqkJpYUr7Rbx>hZIY;}8q-T1#L#{X|JL!QAc&|RN@{YGx#39*G%4s|mN&C4S# z_bjLO8sTzWGe*{_^&#GlYcGHuN&)6R3?~NjGUM{4#Gu#kcqY>kv&(5bc_;35W>qS% zTVd9A#&@rzBe8c};vlX7y<6GGW39^&q8A>%#hmx4c?sM=@6NMSlNd+JH+OHk2O%qz zMWOC5$)G2AL7u}=5kBA@seG-LfG>7JXZh|AdeT^S z=(8s164+<_LklRb;9m5vppGDhSHQZ~>u3~{T{Ersu!YvG{bYDoH<8lDRBy~w zAe9)fSf{T_xB444m4|$#NPXcM6ZEtMT5>aGqO`>j@Fzz1B^TTQz=o6E)%Zr{N%q}mO!}BnalZ@BWg#lSj}-! zdeMoRzHQrhXx3@>XVJHpj}?LhudY??^9a{#Rm9P&B)(f1jrHx=pbZVf(?+Q24T!%> zDd2-M?&PhVA0jl0i#^v~Lybc#M|X4SWerEqQV-k_&!~(}#RNY6`bX~F15u>FADVx9 znij_Q6OvQpMhdH820B2N*3=W|_srHzm-vc@nqKCAu5@(D{;}kIYX9rrwg0iy8jygR zULoyEfw2n6<)tISl%rQ4?|R*Q3~3<-70ANKd&{2;1D_Zr%r(f_GwiUF*(%TDYkhh$ z&B>PpIMOn6lNs_rzJbq9nydsO@?150cAE6pGUxGj7*LtH}cbRkdVGo#g3Bf(F-CRG1u-@eB2ZA&pw4!q7-XsNd zF)t5jVy5v!GR$e~$Lp!G`PkDfO?IVE&-z9%-f!Oa_i4U{>lqWp^h%^hNs```Tyl+I z;%-qSitg(f#en{kHsU@o(;wBOpg-EanTKBCi}xQ+3`r0~;Q!Q6M(tDSnSY<^E8TLfN8s^F z#a@mmnsNZGVxd{XwCQofO^u+Z>+M#L22zT4*Os5vABNs3Q1ViO#pzh&y4nSUGbPxN z6){wXyxwT~HhjZ^vCGdZXKy*BK7rn#(kc?5&FSv!`)+W47riU@;Ooo&Q4dh;QB;@? z4nunW^OPEbuW?2nZd2gf?^1=yli?N2P-7(5h==Xt?1B{j`wxSRWKpx}VarLx^1bT? z`@ke@czpzWYdsd}@^Cic)=}vEo?B))R7GrXnApXCQ|zZcN@Tc%F>X3mKy7G8w+)5DXvbP16 z-3yp?*}wQCuzW;?>RfrJb|E@2iIm)Ib6p||0e!d~nPs?=(7*lIt}zkoq8DCNL+iru zae`c|Qs}fefUa&=a!Z-F7`=wqjo4VMG7ei!6KwVA+q1=WO%9yrS#-czC+Ql{vdNMbks7M4C` z3AI`P!@5YOH2 zIxU(XRHe-T%fA5&%wTPo^^B}b%?w2Sk*D5xgx$Fu87i{sw= zv%a&XdSbjLC~d$X_Z;$3W3fZ~!8!LE#&C0thfh7bTlMwgzRQd%h~ZLzVc1Dc`2F)N zJtWQ9)Z}dlz>)k`ge4@+>N{E?@KIt<|X}Vyrs&zF2K*-{Mq#3h6MBQ4Op@?^Ku6XzW^M`keAEgxE$_*;XlLnF*;vw*r2qyEgC9CQAz zMdYxtd{-%A>7{w|V^w*G0R)B>A@P-w&%+)H-Zai3U&ay5O~O|B@YVx$AD)JaAS#nD zt8p*b4GMtbqQ+2n!{D_J zFPT8TMuWjS0=Xcnf$TjjjjjiMB~0v6FL4g@K@|F3XSdl}a_>bDPs z!7)LXexP&s7#AK)kd0DptzB^`0lmusn({s4P#Nbi0AG!FWAI9GY z|1b`GjqaX&Z~G_TQfrXTe*SY}t~xAz^A|VqUm7UaR{6=Reg&a@How}P>0i$>GEje+0KP$=XhYqB!8@`Q>E29X$&b42} zHnS}Hp7|gTd<{!d&1_Y@OSPKLE^4SsOkf5ZhCY;@2Y}}a$)7&5T`8?wp0__3wZt#X@K;b_FeB$K}l}Qkl#4x^|ffv_-QmAc-_rHz% zVPz)dIgqgP34V)8e)lh`F$#nwcYBl}hrRT__o>l#X;MU4*dj#ON_ghMaI>W~8)7~- zKK9DEBevtQ{ic)NO$YG&F4lmnbW8N1*N+}`6Y{TF^vj}fbGh4?lQGnjWKabn?bO0S z$tmb@1lvrhiQWZ@Amq~qwWmQ2Hwi`xkOrKhuycwxp+`?AVRsK<8+gA-J_#c`4UtVb z2O4g`DLz2$Be&xfWkgx>9zr}D)%{S>cJaiT-j}LvpX$l*_7^58b@0MZmG<-j2e6T3 zh8!<@0Q_6(k7X3{E=$R6w#MbH@>oqKOA_~>JIPb&)8ae?I{(W`WYfo3{Q|_WEp$c5 z9S7mO{2ly|l3&MEkI6Y~?hK5poyx&`9x|p#k}G!>svUJ7W_0ya-tkdg4WT1Jhi~=}sxD z_?!9?NvqBf?@PnQ(dt-u&^$JLF2gS+@fJUG?_@g6X^c<=ldf|5+MCjej&)p~HH#=OaxRAYAuF+|o^D4aO3#;LAHgL)UHy~b^ z>#N@4jX_&YPsh#*j{|^i5I2lzFaepdy>kd>kix8QKzU zVkSiv?bx=h$rtfr!$&1@b@-V3BhQnu2cUV7Fdnj@4*ODoF2wTu4aYw;(5dhD0~|nC z`fx8G9N-7E5Fy$hntwDiDt=3_e81vyfRrgntJy+%zfTx^pT}4NW=p9Ly^i3`KF75rvQwMt2N+I#kNqmp7&$I~%)S=8IQ>b;=aQoq*| zNgA`wjx2QD*?!SZTH2VFki`J@f2fEPN|$~K;-Q#HpT;b;M^boC827)5&v`A2w2v7) zVn3GJY}zh+clu9Akx@e4yuFJV13t!WA?K%DvkbWc=L{(z4Wv%`CHslv&1)vaz*Y`| zZ~2Jz*nh4Timy{UfZ2oc`4!CL?t=GK)-srfxh%U`n_yejsE69wja4ehhc8~- z!G0VF;K~UDFN5K>{iBz=a^{hC9Y6rjVg`Sj41fY)8Zd*tj!}Mi+dlOB|3~Dcz}PoOw=>&(!yJ@mgde@>%zS5ODoYfG%(p=)B1l!owcpD3@tYmKSyu z4Rwq$rAZ-7$M}nCi#`b`ppwx)ZlU3({P{%wvMI}Qb-Q#u`p0??eO>NMKpWG`{xcD2 z?p0s?=N{LMk6OSpK}QCY0dJTep#Eyu0Ydpp0=)nTpQngyM&MBAS3+48 z`6;H6v@!STCCEh~CHD2D(cPnWH^q|5O&1fo9H;Rj4LmYddk)5IA@v=E;VK7IdDzxB zb_4a^sZ482aOn+?G`f*}2e4p57nzD?SDVG4=@%uI$G_t+iyPHpX;dgz3{*K zgUoCH=7T8*oiv7URG3~NW}F8jxmWI}C_3iSY1nPrxogV?!*l>l<~0y2Fq9$dE#)7`djNwbCn`n|yohDK?mB zQN}NH#03BO;`*O_t>AkV6mi)=Pwv7$);8>ln#;Ix5=zwQVmPA}HlGr|GHykrj2!^y zdm@;O)uo5m9@?A{+6xYVWBDh~B?}`EqI4vKTkK@IyO7CSUjEqQQb4ZesbJ`m2%h02 zDo-}4gH+qtbItZ2PJ}MsS;>VU||7ov*2}k0DD+bhYaRlB6bpuYw%N8gCgggTx z8wkIf7yihq{O)*BKK5<0%xU-axo9O&tM89+V+At0}vD{^A9e$*C2k6u#^d|IK9V%&Y!uDNE9{9wNwa^U!k# z3K@IxPkHx#tjyM6RGCreX_t4UuOLl>PUg{9#Jw23}E&T~yA1WcDBfq~>H!n+r`}fL`zq|bXkMGu8 z=t^V)gQKUJLM5U}W29{5)_x?9WfHT>1WpHhZAc4#6{*MdUXaap_XR;nbTh|esQ(YV z@(s_M_RdRhPvk?+3nS>4JSL>BKBG(~c#}1fzN^=S=tnBk^-k{J30wf5?Lr=OjpTdd zsQW0?8+Huam}BlAHu?zB;wTIEE_)4e!3`5vu;s=}OrS;sPrl%_HOjF84mj+NY(=C? z1U{UZdkRm#;(O!UhXp(i(iRdC9-r(I$)$7UAO`RKAk7=()_2m-rJIR;rG~*l8LWwV zeS#1-7Yck#zxl^K>KncDgYN}0h3xe9(|KO!y=kx>6DeF?RIr6jN+8hJjsG~?ZGB+p z>I->A7X#mCJ2u3*DdsE!F2SD%ImdX5{7g;2UH1~obapR@@LvCW40@z_*NanhJEr1T&^6U3lfPVupkOxq9b6*dyjiBz<6ZPz5Pe|{7ZqfQAevx@F z8{?#7aT;=L*9%|`6|HI#>}5>W`ID^&-$>!>e9T!!F927mV8RYdy_(AY8>oOmy( zktgYMBDRz3#u@lZ9_>6VU>lt}X9j5|k95OF@Xx^X$PwCq60B33$S3C2Al!<`bApql zrsE6SsQ~?A73?dLi8s8R)OwK-Ww#rYX=_;k`P#H6LinZHRP^Z64DzSb{jeoC2YZJI zy!QAf3arU2Uw}=om(dpO>Bq*@@GgFC$ zWp^5a)|5El;c$IpD$l`Sx_7{wV7M?BL=heTsl!@qzez^u}|6Kr803kfMhr;8o?0yhiebp`mSRpyt$a`lnSAdUUFhi!73*ul#kA zQ~jykUa=3m5Zv0QEsOl+ZXIla?K)xdQFGm=v*J5dg(#rvT`_b#>DPR#Lyq*5I$eX$ z>9>t1WvfEhn7;H7MEqAiMGP3lhm5PH5Xwl#G<;6`9M;cv0W?8de43pNmg3eO*Ms0+ zw8Sbx+)2-sA9kY6Fc`+2Yd`QWePVL^?@(CVd7dT?R72Y@o8mxxtAG-sRuaBvS&Cz$f0|R=_j?0l}B9d>+CY!$f8j zTuu!zqoi)*v`$bzh(%?M(nz&On ztM|_q?3!AI`|KN7;>(Dv@#Ps<$vu0RdHDlu^A!P$6cD;5!TJwmvL+7Og$hUdD|0~_ z>(cyFv|TD)D2FAg-4?~nC0^+2ZMdyN7q8WE1b#w9W7v`DcriD4el2JI3&8`}aZCk> zotVJ`FFT)y1u^jImNpC#1 z3)=f$iV=AEn3(a8`ydP8Pd_!^6c%@5>v(Yc=G3D@%LovBmb+fowO>WfB`Leh9vVJJ z@N1z)5qAS)=H?VQ3q6h$wOm~qiJ}8x{oNa?koQXDxBc(W||Uf83@EKW^M zu_gLxwvxzH?vim<5iodHh7u`tDm+dCrLWV@^y5R&tS16!0y9v~F^U|ABWcrpKM4fP z%R$cZd32RTb7bqy<=)rX>_YMift)NwOEV0bOm7}|gXI)3?PCXz!15ORUX4dfl1BF- zGZece>&lD@tyHnX_hqM4?-SXw@1C(0@2x_s{lZ-iSj>?o&)?#+yg6BZ*nPO8rM{o+mqlBi^vw3qbBRb zHq|r1s;0C4JL38&s`JzTDz7!Tz^^q~H#uPQKLNx=H3Fd@u3KmJqW2)rWs!pR+I~td zmCljf!`KE*Cu5h_=@kwsL^1bb@0gEOl%;#8`D+zuMqaqSMsJ`ZbPivn*booL3L*vX zsWNqvMW2khFAuL(qk_u;KzC|ez~sr|g#Tr<%T46(ELe5qt%t3$yd6o$m#wmQ9U|w_ zy4IpMvZm;Y|K*n6Z7$_?3E1^G55N(rXW!?MzzJ^tyl57GZ_EiR17-`C zI)V*@?@c(Ne?^i>CYyC!IQnk-OA^g-0(wqd0g@-*8c$lZh|8?tV9Id@!T===+zDpp z5sU)dWB-M-sffE;{|5lr9oLj3fCueF%>~RYKRcH@Y2Xq)W!8$$q=Z1OcBm5#i%sTEe;lyt}aYQlhNu=i11qeZWBm0*kVf z&z`z4cdhU+2RJ?5wUwCDy){fMVoB2~E-WO`)FjY}=UfOlv_B`hw0sK!N&?aNHh+s$ z3S3vX-aaKWn^)vKEGn$S(Ts~*H=F_A2@Bm^5fngy%Y0N56ch912$oso@W*<@-?GVt zg~Ss7v>}k7#I}fe+(wdiY0>kj(-0CiUe1nuHfJl*CbDUTZa!amhvpA zo5yGWh}ggn@GeYDteYu@m8;SB9S&B@A8V0ZSS~AM)0Je@G}KcIGtYx9s+W;V^OTgd zqpMz{-p7(e)c394NJGLkabCSW_sgz-#?v!{@CRr>@xn~?A%YhT8o~GMXwprSIKTJl z`bJKM&*!Yk>f)Rq8sW(M|HagM05zR;|HB{xDpC}r3QGJ3Gq+WA69fb3X0dti1-sThaL+ zl2FDkby7%JU-p{JKQ=~lIa&|$naFV$nl=1hGqm#OxHO}?r25Ktd#E+JR+%BUTP5o+ zzVV92Rot~c<*?SS&O=_as7qjdX6Mfk@aW3k%g|*sbL6LKhYQ(iU(hnuOY{@(3Vtx^ zp16I1`Qm)=C&f9H94XN9^O74H6t*U&!k?u?4-A6$TVb#IRSe%)&wDjRg33kRTicupE}Su1 zo16%&I6C@{swRH{!B#KqcFU}M{o2}R^x$&Q%vS@%|4*qxBME=qjtXbiHYNirDkRFv zB=-OJ2p0$q@;-k{-RvDurRJQdUmYtX2r8r25C6s1>fO6v@5$(ysbG08Pk(#~FZe;k zsfX7u6W}!$~MR|JGufR>%oUDrJ&UCds{qDt&zO70+dYXE1N3r@zBSf}6YcU#( z%)p+#p2YYFL@b0pd=j@;CqcX$3WYeE76}Olx<@phg7}84$v$S+KJh&y{@l}+7O7~{8t*+TMMKx~7M99Wl zDh5eg@5KxKJOL6CPcN}~((jEDx0*S4XnX2b%$oQoX?`auIq2|KlW*Q!j)q0zys%pj z+xLqd<{y=nm9@G(kvH?w^EMX?*zv(1nG#P99gH}@Gb}m6?o7~Zd%PB9pIXcun4NtY zjX}?p($C(6tbSd?>W&o!FUnY1Td$H7Nk5m+GsEGZSEDw|RsS3G;PFD0H>0<<3v3Al zN&+W}6X}LFb~g^fw&Y`5eq*)s2Fdkap7UO$pA8V%d+5NTMi<_)%5q1dVvCDbf|zCB z6jdGFcjoFfV=Y5*F##IPo%U4QGhc?unZ>s^AF4j&2-%E!Ib1qw8h2tz=StL45IGj| zhXz_*k+?XBe$YUAw^8H*H{`$ZKsF@!b8yNUKfG5`o{DX6)Ekws__nh~LLi&1QN7{d zNwNBUv4a_%q)BmsD#P>K)i>YW;FR#a^$C6L_5-Lp@sKg<{WgC*=QX@jfq0A))wc4x z587pWU)3G2)(Gs$I6gi)Tk`PcB|B-;d5>6UzZX{!$-CIY?UsQ77AE;E(M&BNs{&o(=%YDwr$Ls5#Hx7SIgRhFyO_jQC%iO=8IXE)?Y7~Q- z8V~LPe}wFTXy%Z427F@@y*ZYCHRXwxmKYYYr+f(s{hQG-l=^>zH9V*|GOuJ{_R3pd z5`|@L_Ms~6p+Q0S2pTEwFdJd+Ax0}ZJ8m5^_7HnjOsZlBI(|qxtZ{jo^U~`5J1*=d zY`KQA>hGwG>57>h)ossUs77{Q-BbNNvfAA7NchE=0h5-KY`b(8iNh#2u!v#TVySEd zmPNYh^3X#=iyZT*F!8j)b3;TylC;a4>X6{r+9x>{k8_gND~-%|<+~rKw81?^0=7S} zaAXdL$y79PyHQg9oZ%vOvvZf{&~Np(C+HX{1@8#@E6Xwu{k#kO zdS%oa(`MNG9@9^-oiUB0N!jQBV`rCc`IXL_v4Cju)sn1q_?+g+D?8)OHNj&%45BbF zH5DGnz;SK4X4eOy<}Ed#--7kYd?|G2brn^;eEqIV#oM;odan|22&&A>?cqWI;Q{MnlHK);M}H-8|h(WO8C=d z*&6qExHcH|i(!`8AS5-F52tWz2T|a&wa(>*joZs$-JeKPa%t%? zPat8Hei*LUg4Mpmr2y6yftsU|5p?-cUG1UfD>|T`QC-c&Dl2GWM4L$kKViQi5f z82pr;PRflSH#V}!$adHvM{N0AKA4y|e8DpxX9U4S2VmLQ|2Gkav=*0?%rG~jKMAHg zJ_h^tPtk3}cf?0*i^@cXtc<9X)N@BN01hS>@znwNNY+6V?EcO;a#3o+-`Vp!TXM@V zqb?$P;ZCbGHw!ewdKjX(?bJEVorzacp)+b3!uwf@ z9|{u}rw`oED4FOLO>o#o5C2v6Rkv7YywY+gX6BR)Fb@Mtv9IM}HcPxqjyf}AH2SRX z#5X)}&kGr$-SxkJ=Blyv8|&8a?$M^({=<)`Rq&k4Pj^!7`tH9qGbh#RbYyDO9k1|MspR~(W;{rQ2^D?M zg4@Q>PH_DvpizdMz^3}eCi-t2?DN<+e9F!aa;zu$z^NVUHNx_Kdl%>-xr#Rtzl}fq zB)@AtgmF1;g#gbnRQs89xgQyDjoD0{u?Y^UJjLT{i!#dRj-bE}+vQzGoUmqjMJnxi5Q<)FG%M!#&% z1>6kv6|s0|S3;i@z&?}bcR)Az;vvR8t5llwRec7c6R9hcdq1uBP?J~`_6W3sO^kOG>)yvT?sBMV3CCUAXy$GH+m9T-=3COK9}y*^d1aT@`BSbnUR#mt=-R zIWa}Ye@L9hA3y)BSpO%T#F<+8iU{J$Tx~Y*{eXbLS+yBzuI?*zVr}%2C3BA({Oig$oc{Mm3UU3_JI3EAcG77AA6?r-On;x zIgi^*Uf|2!b#6mcZsX3d=juF;N^S?X6vf@J zYIzhc|LwoN(vH?ojh|no1jCSp-kSKQIqtCh7cn|iIxVeTo( z1BH(DPWKY{SYLKB9beV;eA{`JWzVQ7o_Ia{m+Y;l7T>jxhO|@pY5bB257~XQ{LKB7 zgj2N2{9ek`dIZFCX-DXORaTKe`kf;&I2}iW2#7pN@m4JN{-Jct%Zd9?eYE5@rVKJN z#!13i5_)_Gp@)ged|3FNG9w)S%{uY}_j{Qdo_@H@4bDHMr4Ro8f8N=?9Dna|^Nl>8AVX-SiG z8tsL`4-5=EN8;;!C2U=?_K~%vxf+H;^ zo;;_~7rGHsI*-xP%VE*-kDdrsCqe@azX*OwTYjBgA#n&xoZ$=!@7jZ~MEOY^OAuce z*TO$S5$wY-UVnHYsRpI=Kow0DK}cR4N^1OkU8jAnOZ#nhJ(JSR`2{~anNN_sEIZRb zBa>bCz7#ewPbJ>v6EpI%*{%$o6uQnZvn$8DBG}nr8x;P^dhMoZRTpoD^Dh>*n43VV z{oHSNUElpj07ssm*`8@oplGaLm;~n@){Er3d$q?g`HD-(r2QmKfznCzd<5($+Oe=- z?&UP%4@BHsnCt%M(N zmnHKb8MmibrS%cFI6RVBe>&y=74u8e`V-SL$}{0`%oy?Rir`p~pO_!YLj6r(J}KKA zmw()@sYQ}Tsz2TJ|T!1wcR1x_m(G# z<#86RVqenY4bL^q@85f@V4lp{34LT70(GwLUM;t14(zvV#VEGV1rzRX{rGKNrsw(O zsV}b9CR`37LEW%v*2(ObS#FivCC%A1KA^HH7sXPOjQceHtT_FFVyH)|m;IRlnb^a! zKPz+NU!P}5G|;UkT7Eb7Jo|o12UlM|5pHiEoGQV4GUq=J@wqSR=BtkTs;uz{uifuy zGJZ=6Yzn@==g)tzWVTK|ljA5rh*WBfVf{2lD?ZP$Nsh;Pw9hY@Pe(HUCs@Rmqu4y~1%T|CN7o}3Wtm-A1ut2t|AWaP5`&!1?)MSjTfnMj3` zwQuzW>khr22S^4*prdfk?R(w(ZwkFYW5t7yv>ObYo3Ko4t6ohF_t;<2CemH|AB;O( z9=9YDN@4iYA01`og#V~UJxO97LYjv-jB4v@6Mdj1 z8NuRYYAcAky70t@zqh>W3uoWpZ8_x;M7*4xO>a4QYP7zid|BcR~0^Q z2Duy4SUs*Y@t`|0Ji4dtmY~u&K6yty;)?piFML;@8hugq`nrGbZ2jvG#m|IpmW*j9 z9AB3`(!(o8gMQ>0-%Ud9ZulYj#D~WLzaqQa*=O-o{rwXyFNT-VFRk2iz^!}o%$q^8jio-& z`7ue~uwj8TKj!||VYI^gxy?`{d2{n@m1zr|q1%khAblVpO&5XRsxOX0=8dHa8&o|0 zv9Y(@4IZmt#K$v6DVU;VDU|zSgbQmLwMj=LZ`Jxr(yl%E#NIrcoL5f%3R5^f7|Z@| z#D8>o%5t~bnewv3F$2eu7s~TSXipA(1B1Nwx&L+3S%Rl`j!3(ey?uwau2EpM^J;sf z@Zsc!EBs2=7h_}c_#$_u?NpGx&!)lJ`g*9mg2&z)!w-W>lu{NU9b5jdtm3*5!XMeF z1hQNf-Es4lZZm$2d*AP{P`8Jd34$!`!LQs(b-r* zK*{>bj{Mc*$k%cLC=T0!J@HAb^919yKgJAE7Z|g&B~&zNa~Q1OU5Q(}(pi!wt1LnE zJu08%WMBOXYd)SxNf;ao81buq5X1hcPlUtD=7F=$J=fauruW(ou1^(L5G1ijW0aLa|}7Go@NvjaM^0zr>jkCUCBxHbDpyp z5bNh=2ZIY_C%k`^>0-fv)=+|Hr_Id?M3d&YdOA=ag>AtPz4Obz_s z>>?iR0N5wioOEUj!Cy~~wD8r`WF9Lp2re+FG($D`P<;f#oLZU!Z}4TOGm}$Of64!+ zf007=@pycR=i&Q&IFb(_wDPe5@1qIJlAWyh-9E9t#)Yl zCN4*)WSmWSp)lJ-KDD8aS-^+#S;Pm>A~&(frlzaj*jiLCYnrC?GMo1jKjfj7mew=x zEH(}B|ChbCN~)IQ40dsgQ5_B42=K}_UF3=O{rmSv4u~)VN5_PHc+|`x+QJ`d5#vCI z`POc_Va<#QvFP}L6jC&g_RJhP-+TVgxnuFPERxlp#m8UjA|=1^j<^s zKWI*GA*ZByVuj)E+Zg9`H(9{?mujh5z z^Ov++o;x5sATqvKgEGwxKnWh7{g5I@8{_}VlK!paVFq^9?MGgYEDxg*HT+#;FvLcq z(;DeXWcsjE!^+BJ75x5vC-j1S{o}x(K8YS%zQ_GZk|w$c4pIAeN+8CIz$dva9L?4a zD%8?Mn39j#(a;pH7Ok$PfIg=4_YW7nYV97457-&XID?m~biiFr3RS{zs#7)EB94oU z+M6~iyo=&V61L5fMfL3UUPn}&Vf}Ez0tcWiF}L=Vkb0>7K<1E_W6f)^pz$?<>L&05=#nmLEtbwSZ_Ay z{Q%iz77<)a{(^+;M_{W}j!=_Dh&@G;HIIbJXjkkm5x2Cyz5WoWC&qf@a~g8%t#j=( zcyO`8JbJR6AzHxY_y0nV9YU~Z3}s_1A|QCUd*VXVJtF>S9&C?G5_Z!e*amF9wiOKb zKMeo^;V&k0yB;sco6pu&Uz#PWvD~-DkTTkQI$yYwF*~*B_Vx%K^L`|NYwb7U4gY~0 z8lFP_`gJx9*D46a<4^Q_?pHk5!D}3`Gj59u%*KYpSh8rirNusEf>bF0gYa*{uwB=Q z{c7U88}@JIEptB3y?+8xl@~R?ESM1|AAW^*BdS8CuXru(?U7~w07Epc%c()-KsSk9 z_U&n_ME~jhoUO1vu~-ia!VYJpcFTD7oi4v%_k$7%fft?3;W5^Zd=Uh**&%)^kd2o^ zGx$yp`A!6hZW-~d@(@=z`55&Lz1Y_nE~vMmQoj>T<~Oab1{*{5X`A0BtX^4j;k8S+ zWo)Q0Etaed`4iT!l|%I_M#+8bc%gJ!E$Q3uBI1mFiM1L1ZbfBmTa*em_q)iMR|isT z-z8un&uVvCTi@}1+*}D?jO&iR7XRL+v%z&LM3k>L)G*gh)?RvKi^Nlx| zFV~ZI4NXFW4>e<60;j`I*5#fZ%2!e#OU9uurnGB;*^*Fx^&GoBG7@()u;^2Sy-jQR zxG%U;2~(X_POIxP&yXPNX6!z;v1__2SPn5GMB`Xx1r}PPHCn?ib>EG_h>A*m1SN2x zl~wbxmzUSGZ3q)me-Sb|$t{7JC0A?RoOaspEvY7b?S@^P8Y<`JgEa)@qR9Fgh5yw) z=Y~gf^7<1bgBfBl;Sph`*3Eo5YqwtBzP!xhR%KIzLXnxqzN1<$#kGd$jZrC(&&66rD1# z{SQr73q>AS_asZRMlN2jK#cdLyhi%USAfRf^y#5mk^-aiYHv%jw6n^4@>s#t7fjH= zStxdXDgxwEEb&Ear->M~xUKoC>)^Q=6 z9i#)5IuIbj=e}J&zPn*vbT#_VX&;X>;4jie%sKDtrYY%r5}js-Kia1HI8kc3*vTK& zyd_OP*G{gv+aJnAWjNmUDyo=y}G>RTp<72ozK4f17{{W>Kw62Uhj@#Q<>VwgofD~ET5$JV`%a8Ea!qu(Y*)Ko zAx9cw1~=8u)S7=CU{=6g>62PKua+cHAb}=xt`Is%ze(n|m9y*P#J^hvIQ=9ua&aed zT#lCrFzRr~drHlDK2j^_3lIQp%j0jrZWJ1AM1k~u`bX%c{OiQwqJK#G(N=5v=LVkL z&C&l5LomuEL}qD;FI0E;R_R#WBs|Og3GEZ|aJnWF^mCij+hW({6pFoThezaYDn=hk z1+y?rbB*b`HK9-6G;nK^G4q2VUa4ZutItc|^E<{0)ZF33$-(4P*DpS?p8JeaZiLg@ zS^^ers|h(8pAPC(&J3zh|6-ezl`Y0crZpP4UpdI9QCaBzR)1@{^06@75=AGqY2O?$ zv8{*UdgMJu`}Wrd+;b{J4pxD3bL>gdcfreaWj(^7@O&~Hg_UVQVg$=Cc@~j$0{5wWf-0 zyQ(rMkdL7zO?Af>hlqECU2kcU!)n^g#(=Y|j?HHUO_y^o0j|Z#$$5Ur5!w`RRN)7P zDIo)+T!;d54gTdaWDF^I4S{z}Uo`&EGS{v2%7&ypLVh$?czD9I0}LVeIeP2we#A=s z?V=B4h&_P=?tKA-L{JVV>p53bG_LN7w@ zZz};=j*brBp+?3hsx4*4{dv(<0uLoYbLc29lOTWL`AEiK!c!N*# zJ$bhUj6RS3)reXm?7i2n&y6LZHqRB-?lkXNbW>42fGdF|>C**{=E&`^oip@`7ig*dB-S+dJWPuB|K$h(2Bb`vgr4#a5FzQevP~aPBsk^jaiH z5Simvvj#Rf^)q{Z+t8Jpah{l$AB^ASpte0%aBq4>?Alk;3&y5ghN$P;Mj0*Y>Eq(Y zc>y5?Aw^%{a?>ScLKf2OA*&Yg#-{~f2Nlns9F+bJ87~|Rruxz~Iy(qbwY$Y1y}mq# zyJx*2qeA6WKFGDta?Gj@V!m3lOoNB`Igb6SYi$DVj`H&krL`4-9;Kyp zq4pvcyvB;f%)iEWT0cMQdRkjx(QdIBm&vveXn5)SH*Qh$Au0)^FMVALIU8I`Lqgi_ zr##oRClVlk!uBdG>Ue*(X}m%EJA?_g#Zy51d;A5vlfJL19RPD&IGya? z9QwNC8e2MjvG?(B8}+p#S8IH5Z*UOg{K9SrM7pT_+$5+h%k1^Tw+?$yd}2m9v1a}2NAnPUi^x5+0>!p?zrrHA7rl~s(8ApUu^791v+N= z1C|QA8SbpCTnqd%N%k8a&NCt0Y{Rx_L6SdN%fR(RNG#EUn(fSXxQD$sb@d2$G9DGB z4Dn&JO!IM_T}48Dj#bxocG_cgjYGxyr1+!AYZ*~B8rHpwZSJ(3>w#)wro`CmkYpk{LVRO2SxX6zu3C(| zY1ZLlblH2iDM8Bd8ijuq7K-HSm!BgNi2!pdd>tn-@<_~$8Q3+A6{|PlgKSANjvbo& zQXpw)RuEx+K#nUga3mg%XXNEEP>K3XexNk{A|y$srlzLY2k%Ol3xdoQ!SLe=vX*wU zxcJFqi=L>g?+TMwr;7NJrt>1 z7Ph~D9@Tyi`_GPCvc~NSW8dc0li5q32Q-{)-W4K7oO@oZ;Mk4Cbsj@%zR#p^gfz79b`Xfcx2SxlY@I|bTNbq%n@(9_p zrx4MDq zP#$t@ALLw)HfdM>GkV{HE~_ts4?3MWEC@4i*Y(;^s^s}3JSDm zXN+HO_A&qGY5y58MZ<2Z0^BxkjjljgLW<_Cu=`Bo)^qTSY+<^eV4+Z__FF08&*ONE zV&WcM4eT_a9AHFe;9i9^^Cj}=aWa4N^A4qD(*i`msu=2 z+?|43=dBQUm|*xs)p2jKa0U6RX2Z(|LYJ}*e9K7f_mD^=gzE9ekT*jbLzD$M8g5S- z%2F-)us)Pq{)q_ZZ5ZRW9?Peuy6o6`fq#~?nug$`a=^_8N7Z5^rwYs46`AD&;H15H zkW>Oi-O9$M6(BLzo*C^hZsgYX<9ixl3U~B=XKtX$zPQNO^Mvt|{4#SlBEK$^?uOaR{ce!h zvKS;~3fy$57L9fLi9QYquS#!_e6y=awEw9_d|_|^6P|pPOA`0XU&omakK z8~!woMr8PzY~0xkt_kO1%(B`V*~R-7sUNN&&$x9pyD>KOZ0^K%Vuii+aMMdkfq!fX zyC-k9S9d)X8^#(UTbpd=qWjq6#!Yv;UnpK-Q;3Zm+Iphz^nKtKOzqR0@-J>G#?{0e z(dzn34#_y3-0-b@kN$A_%k?JuU`1R!d}t8C6i|v{OgKqVe3*P+uRv!@^y?} zHfQ9?4OdISDuuv5yh1-yZinvyCb?LvdrkfqSC`{nwB+@WevGvwt@Q(GrlII>7~D>* zI0Ug2Yw$C&9!TN16-gvlXg}CpxG5yj;ErKcaW;>ZT<-_lJ8bD%4{J`I2QX;`>kQ}0 zlMa6y*j3*+vhUFg-9+kd77c+eglWl%5O%(t^JDc^2_+~tQ(O6C+%q-UsMb}_S|0pb zFUAK_>$?3&#NfHd*zmB{Q8}oVISanCCFaU)MZB95$t6XZC~s6pUyAJA`}bcR$($=a zjImx(S9%9(_>DAd`M7Zl$b{VWIr#uW{MB>iT|8fw57cqhb!-Opp5j!GzeY(+)wI$sa`uE5%;>v;c8*^3O6Y8rE}80 zpwH1z0csR^yQuEoMKx*)pNuzjI?K(?{Ua$iow#KQYXK+ci$)GOvo8tjX{2`#`xu~g zEHfeXz?|lP!AS)KMausE`P~?`S%l=1*R@N!wH$zAXc>n){kd@$!`1nOkmkAZi|Y3y zH#i)weezEn(k(OI^P39H`v$WASstt7eNRav^9Ia;r-WB2`yJ6ryUTKr1Edzh2Aan*8U6>W_ZjXRhGf#*ue2U#0%F`JFdD zXh_!3iE=p4%N(LicUv(-b%>nF#JPcZSuB1CGx|hY(?3wxB0Jw2fP`bTX;1Pb4#vN| zF5v&(%MednVtU@Mr;X25ht3gwn$!Qf;1w3Al-;>q7(K(n9xmpgHugc4m%f$^X zQm=q>-AQaQ+OtsE`I2_(yElsUSuOGA#e22SOBr70E~#WjoT-2Dqy9DcYKm17+=7Pi z(s~@kRc?q3u(PI_+R*G_P0Zih*?rQlWtYMd{Ja~3hpN}sU*9RDdxd>pR&jsj__T9q~zj$8d;7>Znv?<`}xcA+qNtdt)Z-r3!#E$ z%U!V^Uk5MG7V-M0-{(w}WJ0L*`HOZhdJ#Y&E}1AK`_r=U|2rL@BWEW|pYi zj$yL1FoLW^f}}kkAlLsS{4I0c*7x2tK%Js8^f??I z`+3i!M||9n)vE{^tCcGZZ@7$|^@38Qw@;s_K{Bc*Rh}m&%~z%m%&ycWv7kstm6(Na z=mPk+y`+OL9B`NpO1T~YBmlGlaC}(+ch_53jh>w~o_6XMrdVD4P#nme&;K=#YD*)n zr>)E+z$@)|0h^KmQNy_;6hXkQ4)a6~Gy)390~Upj_lj8BA9KQv8?r?caWecgWUAU( zP~l|ICZ(h;oMW+wv{AGRbe2UBab}8niK|55EB~&ZM`1CE{oZswK0Z?Dx_yWFK#ul4 z1iBu(Kw(=HkOT@lmg*xIFT=Zo=mKaymX8<4aug1KC7kgZR+pSthMioXn#+R|Z;cfi z863#mPBf1_N_qzr(pGuwv_F7yCMG6SDnb-teKplfq)%>Nt*X$P7d2&%X}aq@+mgR4qDySEK`Z5CU?wbgnr>;jNDBVXPMel%w=yT@LK ztw%?+Rt``Wua2wj zF%U; z(WN)N0LG&|`n^QW+s|)C`~?|bu$9jX_kaUj@`uXV*BW7G# z4pDPp_Vj8hZ1(cf7f7mR(AJbdl$>#Dzhq?e;w9F$4DGqi&cW+gQ~BCX?dL+qzf6>@ zX$#7Jrm?(=#$LGe53}T_=O13lR#;lYrr0cPSzTJd_dCr%@cb!#sXR)!Ci40K{t0c8 zr)Fh?3C+oackJ;1sv^G1xEwvWD{h0$4iAw{f~dRknr;e;y7Zyi5~Jy9qm=Mun_M%N7kf$%Fq063{>V>A!rhQPX&gam=?1MqWAfYpbKM;vp=VW*vyP^C5( ze$S&!V^#^r`y~K`;2NShjNPdPlN}y?*g84f%y2CLoF5%DMhQrOzd1l5Vhe6=ZW%c_ z^j_GV2zh~w_w;mh*Gi zRnR8y%V-yM%1u7XGpeNiEle_iDv#h@g0F{Bv zFKGADHL2h;6DTm#_}dC7j&fwe{_9#-;li4YTRq>zyC>}_&XEHco?SXS3GzYqCBDRy zy0tL}M*EqXOaCWhSa;O8Z0@F@z3CB0mWUwGk2>1P*-3U`N-f}<0x3+SsBZ6^@2)>& zP7!kQe6~jOJsvc7%r8x!TTabiz4C1%?Iz34rmj8|3Z!gleQWpBU`lHN>z4qqShji+ zU5Defbf{bhr4?Rw>b&|;U6FT++16|Et1=%~=z2x@9_YW6)=njA*_XVQ;579L%zirN zmA8Y|&)nhoz5EHVgN;3wFM$S2iJpK&e)neh{Lu|zgk7-YSoq-!qlU`=QjnSrh5bIw zd4)CSN-g^%OR_am!l1sGaCaceI)W0c{ef2!|6r)kL=k&C+ zoF~wZZ=WP=PgRa*s^1zqeJh#Fq8-<W88+VV zIEPs?Gnlawvv9piWVKjJOI0H0KSl&LL7Y#OMY%iLD4&=5{OO;F%CnVkbFFR9{7E%= zK-lI`2UJ50O|j9>q?uw? zX&J=e>WrJT!RzNU>GGQo&UQUT=Qqp9&bOz3$8J$i>gT~!4LLmfQ{B(m@W7s;3d-F1 z&!}=*F^d1CS*~Db3p=L}KUbe;NdLZAFkj&dh2qa7@|D$Ut1Fn1s2@ng?%8MIjm>Jn;mUU{H?I%0goR(2e1+XL&>?3 z@aPUa;0kr)C>Ef`3ZfF=k++Q(8U_6NUIpNj>Gjh(d*RdtGv~fc*o4B%KV1iqw9O*xh$S znXNy^OZydgER!ASKsCKO4UD9R>>z;S(azJE2g97LMZSl5PY;fKAY=@Ld|@=Be(QI) z129Ieq-dBQZj9nUmk0rG0rUt0J&A}S%YWl|i8CxQqZO$?c$o~~CZ*S40K7a0o?~;^ zrQ5|I14cRDxW63=K|owL9nICo0Szb;9H>RgvIDVZ|A!Q?M@v8?31GPuA3M@uly3k~ z8Ns@muMcHOfvnG*2VWc%9trZG%z$9DLlMWS*10ROw{^|hKXbjV`5;6=Gk_fvz=aNN z{84g#J3DsZF(8VwKdObbH*8l-6?7(s-U0%eA0Kuj~#AIT>a;CD}d)rFygu< zH5D-ZP44LboR-k;I?H?iqYc|%@EeYlB0pLV5`h_xK(bQC>x!TJ!(Lh3Z_7oqK{g6c zqr?*kC;OYG&$uWRIjFQx#(Ha-WjOW_QDA43uq@rv&md7tCgCxF$<^7!dF-gDpkhwA zZYAfmB$6k*I?SDkw*@_wxE~i;_{H5bcmkOk4!wv`loeM1~9*)-|#t0C%mktUr_ojzQ-T7 zEQtj`j^9E}PUzwkj{Ep9b@}?}0&aKuU8~|@R+Zgi&PDLkQ}Sg;r3*iyt51uimlxzR zGU=NJ&oFcb2dnz%9P6(=mwEc>`69O9hc}D>ji)x;%K zgH{FRlJpx#E){*h#zAz+Y}P@WXkxI8DT<%*+$<*O4MNgtX zg(^~laMV-)4KahDdBN&25aB=V_roC30_p(ov+jZ;zzd+2_(vPhMM@k*=IGx#w~<$L ziVC=&{fj`n1k+TkAe2X8HuL@v!j+FU`g&TA&u)XBFQ~Ae*lz+7T?u#1pO~q`K_eI% zx_H(ya`Ags7A>eqC00A;k#`Hi%d<Ep@0e1G{G#i0VMKoW0XG}xv5|G{97}Hyp^UA?|{ooqJo0x01jh-;Qw|| zRA`#cu@m)N24Xt1&l$A$s_b2`H7MCz;CY5zesHui!^5*Es%{R(7euP&PEp<*2)quB z)HrZujWcC+qySDWKxzFmX&f1NVFCC-lvV{2!JAe1f1D#fv3;i=YoV=UY_;@e> zzQ^u+b1#VSin`(Vu7$pX(4Ambl~n#vXt-Bxr{*cfCVQ6c=xyd}T1v}fS8muyS^PMK zmWkiFLJ+%iz~?zkrPt32t2><{Z~P9DTfn$mr$2q8H?{T*Ol6qGb1L8xOS9{JwU0-H zW|bGT{qLY&J7yry2D>Xxow}+mnfR$|_DyQSx99tqs7d$@JjFHu|EvYIP$FJ+ufocG z_L({g6e@t{MY#pyE7c4TBS49$$%UNc%96_VR$iox!2>BsDOfXudZMN_z4HM4Dij(v z)CIh5t~j`*nVBJ%v;8jut>-QiROE3k?Mn+Wy2cXUWDQnrtp9XiofM)_~gO2LwoAE z8MLok%#*S9ytdwm-O@G+`B$O>qB94j`RVKH|7f68t^I&9uP=8iZpwAA@^Zx}g7!x40iK1OVGMW2w$0s!2qa4$0oe1vEnO#iJ2vaYc z1t889FecD2my|I79tBVm9oN!>1^NaX8X9h1Dt(986GWI5%=0`kMNd^izbOs@9omjJ z4{)U?JrFH>Am3y;((Vtl%1i(CP3&ywixVEONS%DBAHo4`&XY6yRZH*lB=cio` z=JPy55&y%HI0nKnjL6ym^yax5@KyI9aKOv!1t@StSi>}=;G0kvpr$`Y)?$s$|4*Oh zZ-mes0la25HD)`uYLj;O-bK+yiUapFnlFi~OfcQC?-?D$ z6XxVJ3wAROOnzHBX+>ZS@pOP(rbJe~YOJH{8}e)jl10k7cmPZJPQEk*^HCIx*@h~S z?`R_!B^$n3bQS6{T1|+SE;gUNz6lNPkY13QSbrPoTKc_8Eqz-LH?PU;*oF$O|67&M zAS|fvF4B=8DuC)iGO5-YE#)wX*0a3vbfo{7S6Y4UyLQ5LefGe9_HWqqQjVWsSSv2A zU&Q9cb7N)YhwO>E1G|^L=cv)TqEB)2>;=Dwv>J+Mh~4cNcz!gk&#{!}5cRTJUF1EK zZ9s~b)05HaX-Cnok&7E$_Y|p2ZqnTE>+@K;PRYUNXLG%Vm2ojLMtB(BaPiN4HFr)2 zBO?~mRF|DNL97m1gm3rLQ+zp!m}T#~p9DO%W`M@Q(L&E_rJb-v%541f^e$(bgnKcx ztu~r706AF-7+!mJZyBvi3pQ}${XN_R=Di!`WcDd?ryvX~84>h)X$inc8~JvD^VE$i zy-67;2pF5G^Xz&c;^YW2c}>%Oz7M1Ucfg>?MAYjBZ)pILhpf`h58DS1_O~pv)$U~e z!w0m&h>cpiiQhNS`|VeQFJH_f-`@W2&(utTd_Fv+1`s$P;E`mnJ$%4jfg!+L^+!wK z0BC?2k&l#73!v*!BudP*bAJ=o=Q3!W6v1!r{cO-9PfmFw>%8{A@x%5n*Hpe?fh1cZ zGqWed5E~-B_T9hOX}RllQs%_9(w3(V1}crAtb*)>o(tz@-ga#k&(1{h%KorIUoQ>) z^X$UXym(NWX;$FAz-JW+TR`(R$BQ~Z_Z*y=i2$Jc0E=B6Rjo`^e@y>d00@VU=X9~>UeQ*x}7qoWkg4!-Y|sTpX!ajhf6ZIi~i z;^9e|6x1S8yY>6;VSl0+Jw<@WMA&=N00G4vNT(OA{o~C6k#7g%1GHCowrk!E3&;_6 zTV9vGWu)X2fYCIx@k&cI(qs4tp#6x$qRkp9P#a1B1Gr;Qab8pYkgcY+HbY$OrB5{s zoOK?cRsl+7T|fj)bmGaa$n2GWM->pKafiiVlIrq+{NzAY>McmCy|)x>Zp+tiNVPAbWN#Q($=}bPQBykMi71sZwwx{F2ktuYx_Q z#H4NSH8r)n2qAM$RoZt@Ch9280XW(%g+{e=QcSZaW0g9A=A|iM@&p;orDG!jz#B;A z$h&$A6*1sngjt&Y+o3?pr_6+>`JlL5B8x3jdWBPNuah4b9~=%qV|_B%7tR4~ANi$q z*Xzi}2B>C~Xw2LGR9>b2G1ZTSM}IlQq~AWCT4|Kj0fgoXH5o`ABk@v0GN5Fmo z*wWfaEATYoxmsLNlBnq^1#ETye4i}3RTWwvAn$c#0&Ke1)lN5nlLEApVi2gPBZ-V0 zIjQw^3~Rz>Zl!9b$Xrss?07mA0D@d4!P-KeJajDp;>k{3LRC98n-s&00xxlU@km2m zjf5IXR0G_!pvHzpVItig>xs{L@Aq2uDCa`4%76%SgU?nBL;$tKdls)(&!vQBO1<1s z$F8;iXV$vRNA1YVu%)&1e;7B$s{?b7gJN0ROjlh1Ei^?uT!Rtm^J;`#-t|-($R4j( zeyzgY)3^GqO;vUP_$Zold`p*EoT)jAmU&Y1#9|+=TvRxE!oZ*D(mRHX?zYSR3OUcM zAV4FlI3vPl)sj}2zWt2Y&;EdWEJ|YtQl1Vw>5S45(FT`$79qO0``ZpQ4SLtE6Sc33 zI87al=jscCD+*#Ionuv_PG5oT=`v-$S{CaJZ0SCGvt`kzyEU5ThWwT0rZ4Fm_i83S ztHgP0{f@EK;PU2r3uW-hxkHG#dm*cbr=gv8?oBD%&j)EEFIN11I@In4{IPh!Q~@ao z6$&WoZMd22aaG!Rmd#VSgPL<+tvS!-yhCtCXaQA|+i?gQNnIB1jG0Aq`Rj5|W~T z(gIRSO6N!jNcYg)Azd>t^INz3^F3#u{ha4@{z1f%iThq_UDvy=9ofk^qjs$t0aD)U zqLYvIY(FfN-RMKpiq(e9^@-h~X*B~1J(ySXwd$i^VqbDk)jE0amVcD9NBnVCJ7WF+Bs@uM)z&Yr=hW3rzP{{bWOQ5AN9b221buO_p0j0}sM|sm z;znN9?%|Ls1n-G}Gb?j#6>2@*4O-?YZaRbe6*H!8a06Ljr(4 zWKqN`_6Nk10m;VzK$HMiOz(F(F9J@c0btAkl10cDdHP$`Ph26G{mERkpVJHmja3j>|Y~GVoG;ZKzlCaIHO;}z2q`jVj}*|z8!*uoWgsl^RO&0)}Q&fCf;1-vk zH-*s#@<0G>(L=0m7DBs7Cm=#{H{gfTpWXA$Sd~TJuE|K8KNDnFfo~*mdth{c&;gy52k~g0`Y*)U1F_7aQ zg4EB)u*C=;Y3G|J#SRLVK4+-BH~v%2RWRNS?)t5}hwC5>7=|TxUWyJpKQvZWyyed2 z(!tRxvu!@(fmbISxTI8k`S&Mcvc2+279}b=VHZS~>%#ccuPy@}x~n&6WMP+!DPUuB zE~!OtJ)V}FY8~HGTpHJIdUtfGEF(sORHnEw@NkJ#Rw|jm9@&1o+2ax(@%Bc5dr6o>W&8TY?v{M|pPsMGhpJo4aVyQf5bM(fhrc9 zbCDaw{TM4>+=%+7^~Mi?#s$SBwq_xjqoCh;NreXeUkljAqagdFD)vw{i+jbwetF)R z(BK5rHa3*w;I@ebQlI)o8E@c5y4lAx8kGtFp~xDCX;Dz{A;n#k9#I)~L4}aq7bt7? zh95PzVI+jmLL`7I{|Z=mMfLKlJZ;}-P2r?FV2xA~_5)Y{7_f%Wx4#=y=>tMgKz2PV zm?bgG`tWf@v*ICzb2qAQ-f~^r&vtfe{pGu<8uEq z^{&DeDbI!`s_+%@J_4EsUVn_wrjv2_(fn8Ua|pZ#`0#zD1lfv)XCJLU0C<|iX7-f` z)I~tG{_%veh1&ZI^}fcbS$hDLowhJxfFxaL4qT|hu}ACRk6%F41Y*~$rmGauoxOdK zInmGeEbGi~Y~feL9;682Zc+B|5H2c~>9kMg3J1fwNVb6aL>3&+EFa%VdK3Xt1u9_J zEq{emmiCqBKmX=FYfbUvz;Cz+q4s=KaB(w5)_x->2a`jh{^F$}^=lIEwmq(errb_) zCkdJMpgVJ&k-u{=tV&xs+AI@IxeESKP2g9h?-{NdvPJG1lGr@qi)?dvI#$Mzt)&@&HC6+oN zGwI@r>P{hx>jo^9zv#t9zt~ltl42Okz4p`SJ?_UojAKZ$22&h=(Z$PdbXZ+^2bCDQ=&GGVVOs9_7F+DQ*2k@vPM?ViO0nrZ|8u>tZ(I0dNfoLY0E zyg@OdOJVN=xLE@&4A9alBr6#nw45*~mb`2qrgpehlx zmvj&e01-EU9RA*!zf{{27T_vs|17o=^eKQTYi73zR&V7C=b+Fw^x2auFsKvSaRb`e zQ;7ALbf|lHgI%ct)L#^l{hL4x3Wuj3)c}ygXudgk*O$p-#_Iu2YvvfK#G#siu&^np z`36=C6w7++!2-ZbuQIT#XrFO^=G?2ACjJQJ<8?Ca(Q>dbn_n>sm1Mi6F}}nQ1fAL5 zf?5ZA13MG~v$@&;@fYrPg#~~m2X9_lQ}d(X2Of$rL%%cg??y9#Zi3b|#Fd0czhryC zN~o7VU6G%U!OD0G`e0pJM#w%%YH3(9e({?UtB{oZ%GN!dJSU>jIKA~0?< zCs6?Wgd}*;m;{$rU`0&OreMO-YQeC7-EIM2IZFGdN2)>P59=cpebFAPVH zkJdN7|9Z3-$&X_uw*X`YgQ$sDq&VZWL(Bu8&~+e2X%Qr>TzZoy|GH)rQ0<_3#KGAe zt!k{;SEl;cu@-~lU#?5qnx>9}^9JXs?BnM;Z6#{IV^K4tbbeUvNq}m-0%EClV8JM= zySv(9qvP)n1D{sWm??NV=bk@j&KLL#uHw2ng!vgWEZUBDE(Z7ytDXm9J`43)Zp5fu zzfh&@XEN`%XYz@m*M+uQ!F1Y0y`%H`RqR$QxHh zMOD~^00!blrA9Nh0O%5B=m80~)IG5K+}J>%BLpeb%m8`^ae}8PBqI8+iV>LlM8(92 z3=!uikfiTs`so$S0yhR1MA_(U)$oLmpZHFJ2dbwhVw+jl)I=nJb|iBZ@QG0Tk}}K9 zcf1M=ZqG5^`T?87Lt{li*$R%$9`D9}w-=(vzfjL?qx@01{>>1FqVG1MwJXm3+CW5D z$ZqTn1mA+sKVX!WPRQ;jq|<>!eYIW`X`7&|j*;z!NC%xtyIbIR1c`iq6^A=m%+5So zGAStu(ibN9r2d*P^2Pui`kPT&$jC_F{@c3;(!+MlKzeuxb}1hP@_FbPj*##e@ECGn z8e;_z6;FZfwPO5^99n_&kIlOf(Fv}PRp9{GPyqWWapRT!YJBhQzv3BygsoM;Fnck~ z8KjfYk1OMS~iQMZyC({{hXyj{y|D>f!ORd>_E!l&a@L=m4oqOGjslH2gC~ znB|=2kMTNRQ-C!?C54VgE)WsN+t-9{8X)-zsEOMh3l1Nq;(OopStg1`_CURgkcK-apm#J#zwe8_8 z!E*<$Pf z`W6w-yKe4l2Szi^S~)6;ld0kdPX@{O6b20wJyQG=^;jVS&cVcPSP_Ppww zVQ$8cPrKQ2O%zTX=KTF)j(bVJ)UYA5bthMCS;aYU(5L~hv53u_ae3y}SJ*XDrEG=d znrt&A9jn+et>IQ)&;t{wjG*9B(PL`zjG**de{zYs*QE`M7ahvp+T(zD!T$NZ(^}N+ zaPEn2u-e&@GIh~BKB9f0irvbND4%Lm-6( zSXkIykP5aqAIc;TYD&%@P9R4$w!_~00?0?OMz461V^@H!#CyT1W&ZPVWmN+SB+LcJ zEOa753n3wp1P5rUr6A$#D3S^Emyoad6%bvt%Qo(oje+bZ+V4!sD!F^mNe}(fNZ=X= ztla5Uu%748e#7qBf9;4mnCV@K)>~f3Lh*LbEcV>j-)~8de zlGI}D0}4zGay3;I70YrxT!!@`;m3w0Mvq@2@o^v>>@J{|O#m)-T8BW3i9`oM7`u9_ zZRuvg@z~|@usR;p5!e^np~9K99jeDw#rLi-dT;SUdg#-`Tv(K=D8o^iy#r9&_<)wO z9aI$d5KIim9>M2DRPGgow)-4rF+Hrqc2=kzDl3|9)^Y)@_l>`bTz~@Xf_WM+M=sIm zpc4f4qV%vmehf4XrC`-S8ak=~+6fRf5)P7POn}t@+U+1M324Y6m=D*S_4L6wc!N=p z!UN((4@P$(nQgB};}EJApwu*wNW;ErIt03W(NS7!pP45?o`B^7*b=3HVb`H{odqaM zzBDvQBxvkG+p5M6wXOI4N~0!R=o~pcD)x_pv?hPKf9t_}K&C6lCKRtx4TK?~S_m{a z!dijgt^{;e5I)_N@K6ST(xRfGz#ezJ)?f^1T*xj6Gf4qHHG;pYBOsTAHiT24LI?rc z->r!X4&7n^NLT$KIojyjGXg9ewSnt(!1-E0g&~AVI01n>R7B#zPdYh@LBbcK6lgyn z9s&BT`NOXq9_|0l2!>l?X!2|Yfm6>1^fipJ<&%TwC2fu%2ZaMd=^#b;Idrr!f`xJm zyvkPta@5Q547K1nlp5PT!Rj&wDoU?(-yB`V^XDg+6&fA?JYJY#CY3b5K-a9zQs^Dg zwt}Gq7jtq|_%`k96y=kL%$fEmcs?pC-#=-+v4?iFv!CLE@JL&RBx28&g%oMWeFJ8Y z#c$^HYMhskeN3kQi|5s|U!~@juNUgUnAI|ZPQ&h|=H5OUpJE)Qu+WOG*8^$fsO-={ zFla6^{DsNFNDZaMKDZh`^1e$$?%;VhF9)Mt{&D4$La+JY$4*@d! zT&_vT&fm=rC@FdOYAPx!92Q)vf4^`$x3vpy`=N_e>p9byOM5bnoc)`g<0u)$@@t^j zXPE;sp$$w-5aQ6#&`1H8tXFiC)91J>T~0I=*woq^=|xEYibFsr`^xpBB*j%dP!$7b z!y;fib)Rz}%UejrIA4>cKXS1!Vdz&BDN1&k6D-za3r1W_B7Ol|!9ZTGBdflftLq$) zJGDX;Kj=^NidP|i=M&=G91>o{;xG{2hv?y%qau&xh8587wgQJ|Xch2qT3K01`TK*Z z^$hM~#?`>IdC>Ypt+l-3QiuF;MO77uTz#ZkpAI~zlIZb1NXDnep8P>M+$Dnn{9<)6 zP;so$@cVF$DdehYE+5MUkI*48#=OZ8CqEfhqhQ}4+ON(E3A`OGS?$2S9}E)XiY zI_a`Zkhdh^Ymd(AchHbC@Dhaz+Na}A=-jvOMSla1gsI7({Thf3yL3(RzYhf$TK-mllU=U}? zh^NXX>`5t*ygcDa1*=>V2+LLtyl>?8 zPoW?s1K7tNOwfT(JqXa<#sIEW6vNc?`4+96e3G`O<+23BN=^az7X!4yKm92HsddAR8}}ir{>L`<<0A82&3Thv^!|stOW_0-4;cy-gYiEOHPiWdg-5 zo1oAVNUx})F8T)mMv!zf^4)|~CH<2}q-B(|o=d1t&83b6J%t*!{(4&GY%wbew09_)+3+HK$*rL zd@jCHMDA;k*Rfnvk#UL+2@Oyb;SyI>Bu)sb#t%$f&>JmJ@Oh9ionsjk`~KE598%pn zhv{OzCK8J5IGxY5y7~H#QAVXU@e=Xjl~T`=*O(acFLp;`@Qah5tZ5l1`OmSTUB z)%9GS>;}r7o`+JRByZtwB*Mdd2t+mm63 zIq5Ca6}TV8G_35cuMD!W3Qzu;I0(ofK0YQfTKz*@|MY?J+MAQdRlVN{0R@McKwN^2 z`w3$_P6)rU2xb9~SH3GdN@K^1kx%B<;mOgRGFzsZ38x!eX(&lft0ZkoznTk#+vE$# zZ|{cYDFZYsWYY(lAtl$cgZhKs@0~T;h5FZUMCMyJ%2xpn7=5L0bQC;(;T;H-3$P>X z-Xa;9kHG>M4hrEIUJ``?E(*Aaz85itLq!|pgUNq}DAoDFUejw6ebMNP4nKyz{wse*>Bt~t z9|BG;{}!kT09ukb_hdy|yU9utU0Xmnu!OtCk3lUI04En9yAOa0i5SH|k{S^502@`l zRYNmSCSRKcT4fwF%?V)vvoalk01+iB=giFJ%N!(e^9sE zj1THPfbWOpS(2H-$#Qvv#$<&pwUGV96{H)l%St!vw67qj3HpTBeX08F;NYJneK~D3Eql+=(9S)Z*Z^ z-w^mm4c0bW>8oe(#~Xl3%l8>9%4rM0yoA_dza?p*q%avXI)prb6zjt(xOwcb~H^c+nc#ZTy5G z_Zf)&L)1Gk;C#u?&Su%%v4qtT>9Xk`2Am-6E`$ZX?nMvHI+4E7#yMo>7)&y;XZ04U=iO-^kc?uF3<_$GDg#@1^O6$ohf_W~4zfs=< z4g3q=c|R%q^MZAZ=uOwI`%512=bO*=1WmY-(H^ys56^WW!AULEwC99zS5cAZhd zUY}jqsLo%O4fy|RkA1!9X6N%XMl(Vcd48C`r8 z=A**qjlNiUL?d!qJb%~_^3VW_U$rV{WW=A6v6UQ??htB|64d>+<;yC4sB+i&H^|d` zo>No(x)*MGF^nw9T*dDCoJ4qL`SaH{6i5j-*|(qPB#LA%^Kd>|6XCQoRMYYszbM|^ zBpd@MJ7lM*28oXlh5*`@LYviSpn*#UsYoE@0piN{6F@ffRh4{Uy6=LRiXR+B)wsgb zuA0-bYarC=18huND3-?r?Kq8uon@uLs0M=vlWqC0Fi8dEk4R>nTv6%rB_rhaxm`DFP; zzK-wW>v5pY#<~41N^hfr)UxNnI9Ll{Ig%mWoPY$4QbICSg$ymqPDwJf?)uXDhh{!S z&Q+D*5i9ho2|e44@{Ej2V39O|NGf^32dOHHK$J^A;`@k^GhWdct2SUz{A6ktE2|bf)ssQo7e}8I803cq2mI z=TY>_sG})2RTO6oH3Rv9g*sCBw^S9TUll%^8O;)f|VWiQa*aya&ZL zwNP(Mz|e{%_wV1Y@vVc>rx`4gm`7w%2nXpvDpH5m|4R7JTz5RNwxs4rvvk1u3y)0+E`wV0?obnAhcL*y{ zhqed5&SZ1wN2LUqW7Nusu|h|xvz{vZ0qokg#R)j}A%&Ka?Pi_U4odpfq?8v#8`7MQI8&Vi1$ z9mI~ytv=1w@I(R}AdrZQ_4~aiT7SfB49?Dxltl>jL(F$yrZ8Lk3{q+vXJd+zi1YG^ z40oEVwIL`|&jN~g1E-eiY74kGOmyW~M;)1!$I3DahyKo_h-%K|aqhC5y5Dsw6 z*(wUx(tMMkSRZ-g_!sXF@@h-3RB6As9}g+3E_;XD(7{Q6JV&*dYF;~cz2&3F?l|uE z@}q9$tT-95Wb4}xxYZE_r`za8GB}4wXN+v#md5h{y2y}XbLq<@g+J(|xh@A%T~0J; zmvj|>7;@F;fpYAZ3|~sGMyvgHJf@XQ?C0acM^LB(RP2|PxhPkr%4dxuY@6HyKYaXWS%mJef{`Lh4NN)DD~WaRE_OtY zwpRg##A#4V0f2VVKM1TJC%m!V?2c%v!_N=*AIw9wrfR4CK?AwNy@eM7*vr4GrjAa4 zIDuUDTf|W)Jxu)A(gRDsD=7JD0Dbwl&Sx6zlfGff0{?bA=Y@hu6p5hZZR#abAFTUl?9zsp&ToF@qG5b+mZ4*}5yuGrLG0>m)h-z2eV++$f;$Fp;Zif-9CgA0 zvDkeNLCsfPKJ&)UT}0}7-XE3R;ft#DdH7!G5f~)#^%bYBL|vQN?t3`(M8T}xB8O@J z$J1!@UA{1HvadwDJ$Y8tPS^Ev<`N>BI9dOQL|%7=-oS-Z#gZ{8 zI1t1!4GZbR_k7{ z*XI8};`+4H={N%Y_Nazw#q9oXLX`hklo!xOSA#0`73g{wL6~?;5;f9jF(eAAvq2?~ zj{~_WAYGefFa2L33{brRCkdbPMaqqUJj!lt373mbUd_ZN_jfy_`vtlYzxAj}jhYC| zmusUw*%GFO#ff>#SQq-E|DL6Ak%ECYN78t@wOEqI-{9 z_`A_Z0++qe^wo+d!Q_}C=U+2rwkdnfsJBK9ejy@-fukABsn$>Fx4vK}++aFSP4j zA%RS946%pn=X4l&c zVlh@j*n6`T^x9ycAR+vg&zBO+=cjWI)?*yrZ5MZZix1S(^XsHvw%D-B|Jo(b(IwTf zFs4iV&2gR6E4rVknUW!0zVU=iOY{5IqA|$Yc-$dZ!Z7Kibylv0FlcQOLb`NO|AD(FG#NgPth5dKmKNJzSn<^wh(dq%$)>@NdGvk3~n;4 zneHDRlb04$2@~neh8%*8#0$4RfSJwgp~Y;iWPKl{{bYX(lM}6{^9?>S8#`1TznYJD zU1AyJ-dd47F!SR@Is4Dzv2WKeF}Ua13UrnU5XhUhgnT|5@io0Yv@q2;Fn$MiKiVm( z=~G_|-@Kg<+wI)&-P9|Me5dRIjw>FYZcfP6JCq-~s-;nXrhj_8 zK|~4&6?<%}CnQm*L8_}a2^_i+rqvSMnS~V+uP2M!PB~c1E6W#u@lJ5NZJtz)ZY6XB zafy0!sIz|Pf_I7^A*G?oLgNU3;Y~f!4`G!8MU}j$>ulH=3--*^_7T=rr zLxhHulC9WiNjlN7i?^-by~F5}qZoZDi#$XyqU*`5;!%|}is=gXQ~$WYANjCvS0sT( zl?r6So~!vB$1<(i48gO<>>|FZERc15yCapH%7U+QD@uq+TM5rV{yO<7@pb^>G>QnHU9@6Ne144nSN)VoqxC#3dDE1Wl5tWRiFv0k~82glj zyaPEa4Mt6v@7_6OTf(1ykqJveSt?^Wnzw0;<3S;w;k zKQJ>BQcrvjY$BDT?w*Zpi(LuE8mk?LT~G7|#ck~Egz-FNy?Rz_V3WEK5@UGl~-T957d>X)!>8nDOzX#pL7;FoXrV{%+a9j;_u8+IRBa zxx3zI>aAo;@l-tJjLE$F`v^*A8;RHyl@d4N_wmX@JRJ}mp6n)AmR}Nph0XR*jAt;? zgip?w8oM6cc1G#vS%<58 zW(Ku%t!yJROYvd<`~06h<(G<%-MHu;tF1|J?nd7h3mjyBa{q(3q)%~}#-rPu$BZA! zVuFiDn7SnvS%5#}!J1lSj_m9qm zq>8x%esa|4RSA=fOk$pdZq_|N*HmM4kYr?iV|Y1SZo#)m=<0JJ15ftlOkkCO5}lUj zWWMO{u^43SrH@HovM($gt8oG0D)V^6#KgB3&F3u7lgj<87vc7PozI${)c~4XTA{tw ziZR%?6Krk+osQ}K(FtI$W4vf40s~;BEINW#E!(-PFf_tHKD-h zbLp6mnS5_8K2z1w<7T{w&x0kcelUM!95z_ge=Wch<)DdGTG+gCq{{smd-xvSHL>JP z)tIQEuP30ZbBHuXz9|a9v0ot)K8WCudGx8>DvSBqB|55|%bKUb^Jib=Rz0bfCC$~3 zdrDli-V{d$yl>BrJnq`$Klt6{_sWQjXDzUIJY7RSirop*8tT5*H7IdDU`Sm*yN zwP<(VP%6&2@TA2vUs^bsUlpR-Z@)jQPMV{f8px)ZYXo#hhHXK`7b(nfW4H?-7%_G9 zg`{(5#q#);d`9evV(LvNh6m`YX%4Sk&hKt}(BngzVW{*L5CLwQIrO-&rg=RFXW)6XwH?d0fJs~n3tbo5QX zTK$)gYU!-Vna68mY06i%uZu8i(Fp5dK+T2>PF7hy72NP|S0A`o1~WhTjA1cBCvfn> za`e9rk$6>weCNl;Zev-`+~Sexq^G(_hYL$MoA;z(t2&5YNesSoD1;V1Xkv^)KmqAyCt|}<^s<1 z49y8jSKbo9H+4=K7Y5ota6eGc`8uUsXdhB6*3oy%aj~UYRZpB~=^l^F^u^nE^E$G} z9T9gU-$ZZ6v+vRj_$}psFgRe}e?6dRuF1OOd=JNOF8BjU4MigxdpNz;zz#e4%JW0# z{dR6xs){8-B)rOU%`SXFU)GgNP~kXAI3bJqRIqCHspJ(H^^tA)?5QVtsek&ia3s#HvpoonRs)c?!@w+55pNEO;7;S0@uf z#FSrdM=aJ~p$=5Tel$6{?QC6bUSjnDv!(~Y!2tzvU(XMim!z}YUl2+873!H7cIHk6 z{Wl4}N_&V#ueEz;E}D7PtOw&P>L5=iIeWL`ex8u@;XGnf-kYjVdyWeyO|UiYdbdp% z(Wd<14_#(i-|zB&{Vqm)maJFUeR4;HP`cYnITZRrq0jl?3_0X>epK@*8+1htwnLVG5%n{0}GYHzb>MOj?4TODMqlnKFzp=OT|wf~kw|tGJ(j?&$VhU3g9xjw`@0p{AD_kG;(fUj z5QFQJ`cvW7HW~b5WjWh|7#sC&8RLERg%DN}M0CB9*&b?cS3k*wp}6;Z(D_B|r|=g| zd-E^d`Uz5>$vytR2DWQ0fP`3K<=kx=RPrq;_9K|4njmvXdLo}M_JQA!_mOtO!;J|c?A zxrN6^=d^@ixKrmgk2taZV(!Bo(YLG8isxIWOY!OTV?%edJk?~{FEytSsFfz+hVk7S z;}pK>wpGf*jo7N0TD<+=2h{)eo&Vc212GR=9F6tE&-VT@>`{{rhzn92gOKWPoVd1m ziPkc2+=v-88fS!ErSq}Y5twT-2+ka+htBbD2D;!2i_|avqFRIS9^Em?Zz&;lwAcHK zc*z^(%!1cmv1uro8?2ZJ;~D4~ze18H%QSxadGZTkvzLnN!*6G}pL*BlY^clGa%w3?Rf_aw|yD)OGi{JS_?yx1Y^z=d#gCCfj zh&6w|K#aDUzYJHNz*GO>mVPEJ%ELa5NjQkE&cPIoX=ssusmRFb>M+JXtLcx=04aRI z`5ZD|!7jL8SgKH(}~=L842k@#KQ@>>bpG&XgS;iN5NEeQUQB&J3dbAn2@J>(+;_?8y0)x4u@i1(W4}9nWk7N;HGWaboUf@_ zz!&!iT@;~E%I!@**C#qV1{@^!H|k~9?QAe}PT9{($ktfh0!L{H7`1i(Yt#O>clK{T zgDIX8n$}%NbMpsD@pq_ZGvpK>N15tp+)@Pb{;dXV6BCCDfX!(=(D3ipIqZwOen0ib zU1ts2ZD~|)q}B1wLsd=x_=UOx1N)8Q%EKwjWX)`svF3UP-fCUql0(HO?|MIcY~>gI z#ec;fNnVjn{f66+NuDv;2NqD=T9f^r^Q^JSBqG4AY1 zgER`RXyx-11)sPPm-H28qx7bL{jtAtgprme_PZ?hkZ3KPCI`bNXM-gFWzJKo_wZ6J zSUfyeEX(+nV<&_~UlMk9iiBDcXA=lpk zd~Rg>U^7}ed<;BVpOr_PH>Ll&ESD#x#q(X4w0p+Qc$C?2f`}$`hS<|N`zZ}y`PVdM*d3aLs@;g&N_$>iz2;vn1ZHGs!A;qpxv~oFGktj* z$6u^##R^dc)srUPkW!(tw?=$2c>gk`SZnU-hi5V51>;70%%UuR>dEa`6q~@rF@i_M zGz^}Ztf&0}C*gx{qJ2bNU7i1rJ5C{*N$I_WJSY)JIb*9WC`xSKg}X4qU(a#hCTD@w$83^Y7!` zf?P5`4V1=wIy%Bum#?@I=MewK-?tSEJ&*gW7Oe(a0Wh7H(W9M)#(Y<^ZQ<2JVLccpr0|_!W`ynw)>#z=x71pW`4!7bK=*J?jkUpriY7JKmtin6yKD7 zE91JNZ~ygkut_-1hoaKio2%B-C;DMMoWqrT9YPl)31=_$(hi8XU39Fgzf)c+qSy0*bJBSyx-PX98J*gCl7pI1 zNtqH5+h#$uMyJXm<^IV1xUclX+)X`-!g~kr%0L+DR&UBIQ<>#SYFSxC{|*{_2mj!+4QfS1eWtC{lQs{e_GXd}YRbbi5A|UeT@G zBX4AK;CK1(CWN$kTP+<0GV=fv46;1`|9!hS!p*Iu$ghP8QV9q%n1n|hU|%YouEY!}T*7Kn?!kt#hPjvg+q?>*&7V;3!yb&hiH@*K==DkY=#bnW zP5CnN^O5p{`vuz_6iAkaieV4a!=V>zuX%kFFE@OaB!5kWK2#_F#wDQk+Am2_uvUY5LEYS;YQ zz`{3r$b)$;1whTC}ql z%iaHeRe!%5y0%zxNgdmBy)PhThox()Q($oMh$%`Tm)8kn%IjNqku~y3{xx|PlQvp6 z>SQjy`AtI9k0|r3JIr6rGi)cfk)u+vUfqwko;;_Olh8{%eA4DS22_ zzOUC#!Xo8H)Rpy#$@!T}nexS)#6^Vz_p$iXyHGdhZp2`{t>yCTHqZf&X|piSlL_nv3to zV>_klv6dS&_@f~{r3|VC+!u0_*fQq09?TO*Hvvr6FtXzW=61;!|15Se>j-8Jn-~}v z{Css^0?9icXGPIbKIBY(g*VD27LGGH!=&JvQaQt)x_Qml`nVH!fp74&0IJAJhS#@j z`)x(x{9&qk`7AN69_$j1;y@6~e_WNJ;DVF;7s81wx)_pG?9-US_gL1R>9=F&h$*{qkLj}PW#jC|pggRVArp0W-X(i?MXGO= zo4k`g^Y> zO>^Q;{(>RmN+7#?h4;`V$|T&{laBbUmLfW z^=3Kx{a%{V9vc~vSpCnBi=5A(BQCw-naP)G>{Z#I=h@f?mz_foX1iZA?=eXzF|lsJ z*pR(cW58LJP?|#W{ap<=6Dxu6Y-sdyZU%7(}Tj2~9At0BxCO9Xp8ET=TV{ME91H!4TIY;RXQgZn}uev9)-)wygMSkld>^G z?K~)&j7I+6<4qdh|M*a(b8c30Tbv7@iIP9dl}N$jFQFZ!oUrPY15CYGx_20>i@wrw zI4bfF!BP8L&E_CStZm&AU#AYnHZ)!7V8ZpYvVnaJl~WI8y?J}W5jBQiPMW?ko152u)lw#p->JSkLB8|{ca%IrZ@Ix*h0U+*G!(bUoZldLTTXB0QL?^}XvhY61?9xh+V1uNE35T~Pf+>X|ix;KHrHu6Pc?c}g-C4=9~S7MY| zj{84jWM|XOE~K~dGb_sNeerSVm-i`T|MQaH%=uchjky0FelUJK`xPNH1gWkY?P4fTv#1pCVcuohuzO5XRopcLd6c;4<(yhxCm8Y%Ufpy_^ z$Et5UD6~i=!NUXz>wk`Q@GOv!0 z=hth78sRVd$^M~sNn>UkWGkz_3N@=BrZq!~`d02?c zL&R<>b99pP>Xr9{W5jTPLGon(WPB3U#n(98eP7Y_N2rbyrki1-{8#sbOqbo4(JZ24 zr!m&HUhA-LxG2WV8Afu!4+@Kbh86A-<3+hMSk@?~G_rr$i8-N302L1d8<9;Hk7HuO zB*kwb{GpqhosX}`M%dBmzbzxUVRB37a<78lfD^cyP0rS|$%#0Ik&WWFEplWA2S4#s z`pC*mR*W!lWm;6)A(Y9uj*QoD{?BdWJzMWD?Y_309(6QhEj;In;oBMida_DPj)c2b+aAM5&o)#c_B(Q9$u%d98t?+Xq~FiGQMueRyy z_ZF#*SIY{=P*z0l5=eJr51qA+aSRjr(caf$R*5Q#eSWIsBQsiu$rPc@iGTumIAyl^lE%7#=vDkzIk|MXwPH@E`b5zwwr%+{{8kJi z5oxXu$~QtcbLK?Y?$I+XN6Sa88asGN&~|N>e))D?$(GvGxaY?3rygnhmzO(lj_7zi zyDX$HM%|p*b$*Ur3HzEZ&%ChN;pFb-=|0Gt*8l? zk#wV-ieA4tk3&Yg{WP}jibL`_);eL$@0F(r&QtVzgs*i4-S1ic`Fhqa_j98i0%+)8 zFyX%WzW(?>?giyrLNh$n!U+3oD-ZMEY7holGd1K>99MYE8R^j(+DHa$TdHQ%d*RPy&c{y2QRAl=ukYZC>@Qe z8%i5U6Ne*{?r-{GHAG?qdy z;7r!EGJIz?YqAxSu2p+pnxDwo(r6x=v%aqV)o%`UhqW=VxC|_bx z$G6!={rEjUO2drTThxnaTK=OlHRH4T3=a^St)ky7P9-4;emtwN`jfme&7pE@Cln!CiF}gc8*nT&k z=Q+RgeLjD1@NjVKzIR>k_p9F5eUH;Su(C^ZSJs`7$S||JJGDT6<_9(D&Xk4v5Xqp4 zakO`U&2!#nH(r*@0|i?bmL|E6n)nhzlRnO%oQF2j$|wJP+yuGxQBmg(>z-OdlF`?y zzk0Fm&!Jnssb_PKP)ZKs*on)s@k=#!@bd=Yp&>N;893;=d{{70cf0I}MZQXrT|Ufd zR?6wC?^wcQ$&8_ySE2_x`VUWD7;;>9;NyVT<7yd|hm~5q!^pXxBE}S=Z@A<+KzwL0wmp#5mvbihud4Hit zeEuBo{>V&3D0xy&&PReN6Cu(vF{f@Q){U6Y7{{(T;X`10^)slv0c`plYxTwsiM3M{ z65?4^7Eb&9o~GWh=tvZ^XnVT1G%pV2Py#=1#l2c6HB#*OinU+(J{xaZU|EmLDG%BQ zddWFON=S)?*C=ltdD)5e7kdV7XE9x8vth!~74v^P1XEq#n4c4cMPB>wa4Rixjbg;1 z2CK&GV2?$LIM&Z_Qn|6f{~|Rh(hG-1^vm0`^m6!{EUNEErk$nhsu*Hf?0b)f-Cz0O zmiBXJ3w-ieQjqU*qh%_{uE)2fm$dwBN6u*}@aIKiN_b3v+pbmS&S|h5xPAa++Olj4C`Q-Q@WR ziDD5c;Loo2mT5qHb$EZv^hv0Emci1WBMOpuA8B4MeEnid4by0rAuEg52 z*%}f1B~da{e?b8=Naol1;AR)6e-Q7#FwMh_xYC(B3rA>r%eCH*ICAb6YyrMY&jK1Y zXia4&am|Y2PVbE##+_@qrjPP!N!Dcx(`v7qMZj=z43%Wr@7>+w?3`p^SN(iFX4oT- zGvfC3EiVeCzH+%_Kz7R9b1i|$&B16IyZ7M@8oUki>!>4YH_>YOS+>`KD}mIup=-Di zqggGX7BNI#E9Y5Wi|ItFuGz z$VFz?*1l;|W$;eRq3466ay)_xCeAfE2O>#gC(AvXOa~52xsC54IXb=mO19FiZy;vw zv`gFsdRv3;(VviAL9sFW8L!CeEo_U)-63Y-bc~Eg%i!4vm+Q&O5@UJ*g5gJidTK=L zP8a=;Qke(0*%x7TLnf9p_fJ@d8r~@`?&h5W+>=Z=!8Gp~pR^`aAJq~V@K%mBB6S@Z z4P>L8YK_n4> z&nC)-J`mr@QTRETZHBK2W90KwF||(xS7O4+I-icEQx0d`wE zj06f5lkMilAbVJ}GsfTHU+PuM{MncUt3j9=GX=O=n@Rmx#xktLee5K~)5J{Y*Axpr z0_5MQdumR0(~-T^Vi`{v^ULw?exm-v`@!Ijl}9y`z8h*wVB0eI^o;maVEo)+^uKq# z1grMs)58U@ariW8|5z5uk1HQB`0=2fbW;)Ye2BcQEYbTP8z(kOu3rVuS~ZJFNt#Y9t4mo2|Nw-G&R+c+US9D1ANYkqW@BIIfUSt?cK$niByz^uxGIo)(yXu=(}!a$eRugF7lXCJB{ye zPVN1q3(7>|bg_MGZOF}Adrx-G+}rlc+NbZJDnk>>wCU(&*ScH9VVd;BqYsIFJuwOF z#^-iX`w>M1|3%dW$J&+~dAq+vpS>dLJYNs+M~3Q3`!x}T*nPTNg&!&>HOhe2 zQ<757%bJgx-nAKmd@r57W>CF>&`j=HW0Wa=_O!qb?Fz`h)_;Fpxyn9~D0!lw- zG4o+`dbWC2L=)=rWrt(sjN!la6Tx@4dw&O9Ljvkd*{2O?s=$xkC7*DXdXqfB!1oq1 z?y8_D3DNq{GxYKWQKb&$jQ*P(B2IT6l?e&R)9^6&M>JRIZ@KBO(m#J3R#IZWXnE1J zNK81ocqNUJ6lH(qeG5cBhh43GUs#k>?P3Omi@&22zp!bx&{-TB5-s0#Q&2;ArqH0m8pc#qP<>$}i*tL8}Soo&~i zd9|i9W|ivoFNE4tk1w5G{hy-#_1j_U#q;pAx0?*7N1H(`bB!lVl4v~fH}Vcvk1`AH zKDP%$*fUIUas-(53u_H{TQdt>a#MO>I=m=`z@*Osq9x7qziTA&W)w9b{TPMXn83!b^{jn-dOTAL@Fcxp zH}emn_|0Fv*}zFHHHq$u_)++*5l)BQBf-s^v# zC3H&NmYYk?P7bomT7WADQMJtw$uap&Y@2XHs^uD<3>uxLog2+vuMIBq&_7{l{yY1g zd%yU~aY1O-O=#A0iA~1m-pxkl%iOlRI{>SQ790F^UNo%kg;1eURyyqeZN|2U{(cr6 z-LcW$t+qK{5{OP{{*P~ zu`^*-uN&$u6l7%2DD_tQXIF+GIQky%$YqZT)SC7yLyOZ)!gyTLVlS?{B(E`8Z#vBo z+#$&SExlv|LoP;m>Bk-*)%9bAmhT!nx`HUW>^Pe@mZr(HCYK(SE5X#k=`m6h<>m5Z{OM~SP z2cF<;N`UblJ-%qc>)pUMTPV0;(mua{f4%9`+?@S*eARULM);mpQzP@0qw)nRVuY19 z(w4Dko^D5F!=we(0B2^{V~=_uDntG<3z>sgyQ zfQ14%U>}1Qlm9PX;ObAP%8d0@Ddk^vX!9>+josb(C1=><&TLyDRFdmC+#qE8sXmh$ z)GLYfO)a*q5TR-!jwhnKT<(Y=EnvR$=t<)gx1}i;=Vjp3D^AL_%J4S`c?scr_QWyj zU0TlT8W0DCR&GmOo&=E}CdH22`%%^`4eSqob~bOsmA4R|B$fZv0sj65t8-?4CgM0K z)^_#BYh@>YaU^RYwM#m;;)E&v3G14q(&9N?^rG!GxWuJR&P2{k2^8CleOAbqHBdg< z0B@H`$u;`589VTaw*c2Eyl#Nsn{|xpL>$7L`@R037*cp9v|%D*_-%wr$zFu~0|=&f zt2Hqo=f$Gkr``r7f8ursIbmajVgs|M!nZ@PqdBRkkFC~eWe0l2#>%4NZh1Na4eva_! ziP-E6@p@sTQsU~~Y&>8Gs7bb^nc<{J-zENu(l>;IEH zYS%O)-(7}t`j&Ut@a4ou9-KEsfyYZ1%$;v9M19ss-R2$W)#>mJKf|I~A^eyugRVPa zGxaIZYUVBQn;v}>%#FIA3gwl$`vOxmO=M(dgyPI~L1)=uCy7rzRl&efu>Iq)LSxF& zdb#hGzGQq0kptxm^0oLoOA@choO}em!=G8z(_jM`?i--lr5LB=zf4dn6<3A+r)HYn zzvKN}?WFB38Y=L$AYh#AZ9yTNNT#e>`oj^bx}%M3@g`hGyrIZJdv@CO#<={SKDZEi zI02H$P`LaHHvRm?o)U~g+|cJ=mDB#fv`7#v9_*;+t@*Hilnm!LXDS*GBg& zN(U=enXR#QD5}|d)1LLkz>(>$Z#DGqMZ#SM9(pqw#%PsN zKrQgfWazA-IDM#E?S%HqF)06}k}tCKkwlNLqC03xHhm8yC%DXZD8hum_pp7T;9$EL z?v<{(2cb9gd;i?7ASXU7EVj45xyk9z^MArvLv4pNI=k3Z3mvF z)2k*rP7TrQHVc7of0Rxez!U{q&HQEwW^MWiK{H@x12 zCT#t2{81#V5n`;N{K(h(u;^$uihA{D8?O*;+U9%Y1wlmWubFW@g3|(4J9L(yk63gu z#{)Ld9QT<(RDk)}m@9^diu^;u$MH@UdH}*&`!rnrY+lLkU%l|cx8nGXP(`kpzcyfg zK+j_O%Buw|Wm-q`eU<7%qv6(js zuoeJSQvE%80#Y=Y6i_2A*8Ez6Z8g|xvfylbH0Qay9PZYiok?^WF#zA^rQoNK!P#^XOtx+x3=XZxMP?nxV5a| zViLi=r*MfRipi~Yp<25e%0}EijDyQ`Nz6nUlZBK1@J^wq$J3jJD*R`q&fP|cHs&N@ zQxZLix8q(~AQF;(&#}70=;9LnVD}7-yc!GY(jDH=jmf;SD`nT<08YB6$GY71a}xYx zqaarrVpJ^KydRG9)g$8ocjRM+QJmb~A5pFp)9GO8xq7lzR{?i^SRcTHjVb7nW;bByNM4d{0n%%{Mq=c;dVt82rEhFtr?;SAb5y= zOj#;y8f{rct@LQ%?WqOohot(p-;`*OEx8TDFdu~Mah!{6nrFc~z#z+qtF}6w-b>lb z|9NaWNHk2eR7%3F?qc7g01VD51)va=p)I#+O5T6SUSt%AAw z&%gw9ryl=sG+|DxDC_Ah+E^(vn~u$NZ{vDH{LsoCDGr=0CrX-y3g>Y>Nb<5AA>G@J zuU@E2N%(ny-O+KC37t^>cr?<1ek4`!7dfeuJgfb=SuH`|d&u$nl!xfYO-b!;GHHAb z34Kz#J&P#V$6j%O;~RzOykIP|@@=_U^2B-gW&Nubyhv4ewX5SK9A6>@!K2?MLzl#Qrq?jE>b^-piHI@{^iZq$eyCeLZ+4HOA` zQ&s&HYquce^wkvk>UzWiQ+5i%S1~KxO)P2a)4|r!64uFt$QfijnJ`i*T70(isH3x9 zAXqJA@2wBf*l(l->X?mw!W;0>B-IB$QXFgf&Z0gLhM1X4*)ZN+Wt^$0qQUWp;`;Zn z%$talnCn_f$evzBi+dIm-J*n~EL$#dcc+DK{cd}Gw;Q-GKpZ-_;lbURw>VJn_Dy0d zP}x8Gs+92qolc6;z30sRhra?d=E~cQNo&sufVBC4r4JXwYhq3Ga^TfWk$MOV`Sqs? zHFLkxz}18>?B@-MJZO|SAajM%z0@79sVJM8Q8Ti^r7LA$?uw^uy@P!0rc8wFebr@5nrHG>lahoxq- z^lq(-3`IRO)oqh=05{>OOocsptLtLlsZ(VdxWOVh6vIx_{R=TjDE#$}!>*J}gh?OK zyM69ELBkSWDQSm>JI1CC5AY2weHA47?@{=Zx1D`6DCW|-JPB7{e&xW*-LJs-h6ofi z{`Qdi4hs{_O%#981zmK~^0)-!l0>Do^hRDh=_U?H*5hlh`3OsXcUSwyE zMA_^FfqTHIcI0c1moD}c`2UfK3D5)9BXq$*Uh4f}LDW)0NuBlMs=-1>Wy#sG?wY|W zfrLGC?USmby;UzqzR~1gp^q~59RG~N;!$pxqCJ(FcQcx1sI1=a&(=HovrX*;X9ISc zICaQvLv7)%26v1lvAD+$+yldLgyq1=Lcp`uLu;Tr=E>?}zBAT2ZU*VIQ%SXVR!)cf z8Uok|v(nqy$gP?y|ArS-J%b7nf9HJ5dHtdo7iz1_F_VS{6t&zXK~gf(P>tN zs;f>C|BV4ZpEbZxu+o&MK{I7u9(_(`ecf4Tw2mCYT8hNumG0bY+RGSlU4${27sb6^ zD?zI-Ej0|cAxt!ur@VQ4coyr3)t`#20pA}OvAW0)9Lajk5&XWk*3oZixUa1IR_ky^ zioT}j|6e0NjgR|{XZ8RKiY(S2{p$Sc2x@Y<4KeHG=eBY5=nf9%UM>hDD-)P{>>)h5%=%p7Cz*)~tSO=mbICz@>I#5--=`>Sdc9XqyVrN7pC2_vh{?FF2sCuywI2Indo0z!Jb?F+{VHcb9Zc)D>tdni`lKlR& zs^BD7*L8h9b=Lh~B?>ac!PT(`z;6~NOae88#GPIzw?iy?oxNQg+C)@QgtA1W%xb4( zST}EkislpI$Lsm(SLaZW>iz9Jqg7|w>^*|ciz7tEcV(jrHHI!bF1M#~0?&o;#eK6G zC(mA&&*{fLaj?%}S~_CQklUEXrP7ROnYPyVwUe>oE0(iX!<*j&%)9-*{f*hM3I~Z9 z0jZgh)o!{;{U2>0_cU()e+PMI+F;-hDV>Zhte|zaEcOy=$M~z5>d9Y|onGDk*Q1+x zTiJ1`CumFQ79qNdAbQwz6mT_7=OQ`P0Na~!%VOVnR^AzG4P0P33Ed>iaOSS^NgPYM zCfMZfUxH3%B#oBQrk$7x`gK4d+KK{q$FZRz`Y(3V3 zl>FxU{D;%B9UOp$g6yD3E?*Q0E1mgaJUgy>x|xE6inpCG0ToGkZvU3yR#&r}Bx;8( zY7qIkTEN7@2(P~_<}qk2Mz8sKlp`=gcM)2)hB_gI2_gXW2#QI>Wm<6K^~uYJ!!1MP{PneFMNnt*=o<)2nJUPU?JWpIQqeA} z38zqFE?6Q0B|R(uxd?Z@3-4$r0hnu;!t)KPCKls8g`LOQ12~Vf;}k7_JsT`b7y57_ zaY0JefAp0zEjA}}e$x)a5*&ndO@B=5fs2&zuGE?#`ub_HmdMtJPS?3S>l1r+V0!pd zl^GCL&E|fC%&S@0os}KYG{oLMKW@=DR%ieOjrIZ8eueYqvTnd6^F~=eV?mAn4{ti{ zCz3g>hxwZoKx1t?H4{TPcd4FRJZF!#wryq7|Ixq|y(50pM4|rKX$Hl6oY%Z2Tk`%? zCkh@jCbrd%?*P@ux`@8AB;b`ZrM%2no3y%FjqecprgnM|XP-S6(z0gy&Y^eQvu ze1=dN;Ri{&B@S!=&Mneh(^=++@0ko7PJ*ElF4L1qVoN}K2`QaX-1Q2;WQ8B@;x~JI z0{YCCUCKl=sF)<cj zCNq=gte)9IVB_`h_U_BFp{YKj!wDETFbHmIhyVyn_hcg<4vznshFLGbx_o{yy4R-E zazx4@>9Gf{j&~OI(X=?+r82k31s{jP>EI_&nwpNtBXiLheNu8;&BO4ejE-tNM4OHL z?x&2P1>u0Jj69!h`1dD_wd~fD1+|9_8Wr+G<<}$mQ=JVQMu(j+=6)WUY+Ba=sl=6D z1m6pT0wdRXG!|)Y%AERVJN9V%o;g|zQcHL`_cGz_^5d0vS?mMcCUZAqI!)Jwm!Jxn z4b96g@WHPI`dQM2RlgC|@<@>sREyRnYNL_fQDLG#br-%rJ062Y)iPHPn0TUtck9QX zW-@`0fB^0TrFlTGzo$1R3HG{icM7@uB@ztv3xmJKpmfZxIS@xf9?*Ri-ShdIL+ z@e|4L-I9TlkYyvTcDY63avJdkA=YX`J2qk|v!5rsp|(^n^6=BwBNHOk^#f4PE$m=C zFr`J$uInvId@;jj`}}FyMm?6j4vkK3e2g_*G2UT=A0b*@kLA2yAB;r-`5?56WTpc) zSm>*F$6k&LOV=5oD%%UNoV)CG zuA8Oznwx=&Vo$rzXooX5L$YEz&i0Djzw_>mg#Jarun>-Y|HTi3PW|(G@cnvH>N}td zY@fU|x|7SXDS%=DvsLdqI|jNX?rvBZ)9PpEuo|H3^z+C7th9nBI)o$q?Xvh`$Y|T- z8*4I_XgSCr3!RbzQA&g@c=R9iBb7`D?z%Q^C7v;dKU6&-Jl1$V!r{IivRZ-J=lZP_ zMZM=Ex;wEv<06G0K$l2;H3j2=Bk&9VfuIEL*!Wk1UjB3&PDUN50w zfT`q?r4;f)~EE&)7|DE{H=I<$MYz&sc z<`5a(d>v_N&&6SOn54;Q7yVBcFfWDjKNh^J`+|JkwdhP^+v(|wFC$y#q=$g}1; z38^f*=xf)jpGl&0ZSsUTDu}5tE>9(it0f&5)2Q1Q=wcPcah>L2Jd(oxxLZ#in$&#L zK5$ej#y2dKh1=;yYkGpA^O@+=>#LMXl&v?Yu9iLMqkj0yXSQf+C9E}##3qun>iBSm zvf`(w_w)3x0!9(H#efLhC@|$ODn@$?Ze%Z;qkXOK-@eN^R7^p&7-+S{}R0d&=HWcvZ)^3V8HW%X^Sn7585Tv=q`UIiP1&5mY2U? zQpj420GQU(a@JCNn#)z-=faFb(KU_OeM83dFT8+YpmuDWT4mqWT378ap5cKm8L=y$TL*RRGNL zcfO@GSbN!$sMX^_fo7x+0>T@UJVMy_&Szd(ccqfDvQsMHVCCOPl4j>wl~ebc*htzT zrhWNL&F8j!wYxC(0YLxu-#uql4l8$k@azl?$O~{5iPSUHEVISr46?rx(|!vIQ3SpR zTCMwPhQmI~JzVB_?B7WmxE>?ikh$4sE*bdx)v6>(5FrzR@sxIGtXU(KS)2P4%;{v= z(UeM(xrrq^sNeqGmhPi1A4}mNyiIeekiCvD7I6Z^YdJfbt8$^{9+7yZOL{h%spr^0 z^J1c|P6jz5TSEhAW^8aGCE(N9{fq&kS^}b2>O_pRsvp$zb%A=E_5rFvI*ao!|O&HQ?oWzWSXCO^9%V|)7JCI<)&Luy6=xA znLDAEQu;d;c172;XVQFr`?&+SX?bwWR9oBcAE1UCf3WoF`4QkO;S4+Y;E&BZzu)$n z=o7X42-pKO&#Yi;tQnfN*l=gkGl$D_5-`9+mDQ1#@VV%|>T|n?EmC1WuDT`w%0an? z0~F@KuWhU$17)?AjKmzDZ!e;v2wm;!D`I-o`%?dhG?Vvj$}tnVq&*eLeU_XsX#cE_ z`M@M|{#?!s)PdR;NSBz31RSOx``gp{4V4r){4THQ_EDWA*O!au5EndSsPg{P{y+Hh zKA2^jbji68tCUCwvsx;~N=lB-^7a~B9=?*1DVwx%%!63oKkwnJgTB(d_bi&+SIZV# z$!gaVl;Na}GSk8EOyPCDl5VvX%!nET7{d4p$##j(e}^%fyDd)ff~U z0f)yJ^`%z;BA+m&g0IQ*tzP|w7>t{6fcabzvXSoOF zb(h=W-Yv(|SRC24rwL8*5Q?X8ZF>^>LHrPpfbLVKYPKS+hv=~Zdth+Y3+$8*i8{&U z`MSHlP$QYcdXj>~@*N@$nkUS*(VupfR(y4UpWkb&NR6I?|Jr=8`4Vl;(ceZ3;@n5zVW*w4 z2T(pGv-`LjKmhqU)NFGAS0+6`0!O@mXt(>X^}Pu}D+$f){Ug=vGAF7n?XMX_Vt(&m zP6fh&4qQ`}B|9Do!{${`=LH-@?p=;<@O2%ZdA=oSLbeYao{hLDyXcVs9I~&)p_>#A zSp9#5viaa2yu4;_i{G)iI0c9vaNPAaa^JwQ8h+Jlh-T7eg;^;#M-6(}!wxYknBue6 zCSEjt(I&wWI6(mZnPfVBtk8Sjn#JF$?GMQtQ0I(NsT!Yi*U{a5-p z4wq!YYdT21r6<1JdQ4fD$4`Ck5>*!6LWq@WRu*NL1_-#)9A|X{ubYKRZAUdD2^-kq zh+j3#L3w}1?m`0ib-hLE!m6~|AHnz@4`x2OaiVWwiS#WjS!Mb+69gy|Kv%&dKk0WH zvnK!7_yilaE|LPr3ml?M?|xEc`|NUFI`e;OjOqVdW16vGij}Rbj3{G#Vb-l*03M^3 zORmoYglA@g+}HJl`&W_7)U__an1Xm)8O;GEYp2^wOlPSk4RkbKH5|XnG6bCRl)sp# zwLAkWt@VeRG{oXA1z}}rxn6rOtx@cLtR!c>St%f>jhLQ87tF`)eqn#f1$<2X3H_i= z6(k@x^EUY}Io$HW;g}Mck;dg;W}-+Wtd&b_tF4(8dz_N=6+~7MYU$T9Iw>3BjjbAN zGEL?o6?rFp^!>X}k4xnXKs#c^)T$iTk2v*h^;}(W(?6@~4e$6NAoVa;-%d_2VDQdJ z(8FjUC$4xN0=`k#5PpgJ*Yz3XYC0gp(DmB8T%n}pM*4){Q6DP^E?jrU-)FeR>ur(huq&!ELbS~9yy-adgrgT2aQRH-(vO?Q#BO1@0V>Ff-F5V(^J^o z(|6vVey6X2Pj$tE4GtE^Ww)N5!k;q>oeyX_WY<3N4qE*Bx%({%Fjleu2;GNW#I$j` zfh%tL6BT{N*)*Rt!&sYq{>(7kOJTo0>8EN}WL0X0nnOEGMR}FbVBe?S60vUFa=ym6 zt>i)7a^7#;Qe+meVe1&(+6VJss^CCdBI3wS3xGXF31t6znj7S$ulI}%Pv{tT;$BHU z+0sg5ycTaiJ8xc)^ysv0+w3etk(iOS7Qe( zL#ZQij1SGEA^@+{&C!J(Q2K(9VT|Cqb{ZIlQ3E*wL)u*`el??;=X@>BufM!L zh^^lK_TwN8kjHz>njSO0r@-L@zq>3{%yC~$B@*Q1s?Vogfo#C4iA#coYK*t^p?K_ds&8#m zknd0isfA0YC~xH;OQZ}RZA=rxfg9_VgiCH^1>o1luS=Q>1|a^`F&*>>fk$G$&2`k{ z1BJO}BvMUr_S{OvF@Gzj$f)|DU~b1j2r*vJq%4#PXS{L=|I=}vwO!ugp=$UF@?oQJVn~Ety%ik#h=a2-9{^-MOYVf^N8MFJ%(F?yPcy03X)zf1JoPhJQkbl=~ zLfUGNJ>C1WMfipD$EGut7-+x2`|}rcUlEd6!(WUO_4`|~@WdC<_1_#;J*sf+sd?jn zeiq$i^-iJ%6>=yReCDVAP&hY1GiC6fq+jh%PbP8uI?+r*TB^%=IZ1*whfai?B+j_x zwaVwd^DKh}N*vZhv{6oohgB~6s#$LpPiPLy6NGWalzkZ!i|uogO$3GrV{NU3EWCs( zJL}yhto0impmz#X4)i4{a^H>1<_a;WZZ_YqN(0ixVz=R>QV$T?Lo=f%ypMuRhLR^W>*8p@XF61=X|Xr1Ze?Nty|XX+P%MT z1L*^%nOcou8j{~$W-t8;%X_PnCg+=wbmh)2_G-2M((0^F-xC5-6379He19v?VSlgy7rIYhM9MOt z$#g-Tb@Fs`CY9>NE4xbkr%3PUAz)h)1Kq=RtDIuvbNfNIM*P#S?Ge%-mT}LXWyWt3zVHUYi?rrQcrnZ-Hry zhZ{TkC+70_y-Wtz;846qgODWN@}1%R;fH^RWMMY5S{I?;6;07O3BU(+7zb{>V}_m+ z1#EW0Pr-`^3^9;PM}R8P{C zgS5tmdcH0akfarpb*q#XU}=&-P&&pc7c`*k5=8nE)LvX!Upauy)5=@R#cX-)ie zcyG=Dy?=BvvDJ;kvkGo0FS=$a09sFqHShQ^yC*G`OyB&>&V?nS-H!f>+Nhu2aw3KE|BptS`PUx^C3OTeobrLvrc3Mo_)!_R(HLWf@DYvJCO?*@*Ml{F5- zN40POJ~{#Uy+PT1TLwUzsRNX1Ick8NKmfTTcVO2y zhZ%gG1SN2Brj=6eXMF5bL=+~IG%}Jb;(lK{8##z$^Z6is>Jfqx9~k8IpvY;FH8_?{ zozPCXXqTauz8+%NZ+6oa6&fb+!|;dywV+LcrTze#QI1_t^G%HdiNjA>5V%xKSPIu zK)1jcVch23&GIF>rO>Dk-Rv(U3JFs z`QUWZb>DaoxxYDf`C(m_N*=t0Y~kwoWnI{m>~&?&D89mb`RyM*p29Y|`%PbbN2Fhq z;~D0)9bYFtdYcnxg?91cGMmB(yeMcwLrb=I>o^8qtu~HKKhWtqmXAbZ?=sb{B{W-yp_E|@d}SU-fB4LTT4kH? zfHYtW zj3Y?q??`4!>ES#Dr8qO+*=xtF-+h4C%Y4oxvVfF5c3=2ue9H&8h5*gsy7CX?`iSS3 z>Kv{cR8yD1<_pg+nbf26`3SgjQD;3iz60`b|0S7Nwf{4kk#NhKdiTS^ShIL&fX{}+ zZ6M)k-P04R;#)=I$TR<0X1c7rp42C>VGm!Q~y13-mdc6(-I7QVK#Qw@mIiRBeT3;b0j8Y}bI z6N~E`4pTW7J^L4Z<>f)5a~oVSQVXrpX(SXlsj;UP*eMF&L;+g{3251^?0K^MG7kkA;qWTr+iOl$b8a!i2fXk=MWCwtL1KYq?b@C(nTaiP@BR7M+ zp*)HSMxpRdvKJ52%7BQN43Ox#RW+LyCN45K4gDZ3wLmPnvPs0dc6X^E<{ztKOxX{Z z1Cgd>^5^vufh?pNQi8PpUuWa|Q)x)yYzMU_yh@#l17aLhP52N*&H`sM@CitX{potjt; z)-A54^aBT`xv9?pZ0s4imq>XZ2PY8cwW2(5)b2eo`1^NWf^UEq0_5F3p#Q3GCMRqS z*n|3SgKrjZlzElzQ84MrJ7i2I30-Evv5$c~YFFFYeKT#L-2hcxSd>yyeB#u^jsElD z3%;9e)!h#|^>_b%X5@V8X%6ILd0&Xf*^iZW?}+i1Mky95!4B3cN4^wn@x&AA6$%*F z6y6^J&lw*+jZG>s%2X$Ksl`a441_w`4qpkG`s6db30)Hge8=P6$0>j&mV;~Z3E^-4 zQuJ3na7Fj)_j+ZX0@G(c>B_z9L>kLOSaxZ9#9T8@$wRPT&)Hx#{P$5tvHMs=RS?Jj zi${kPfrh6hkNA{zP*unF1sOHzeMYylNt` zqge)j$(rwdVDEBq)Du3O17qv-Ow!HG?SAp zd=|>)GAsDh9A{zA?|1W_=?pqp=F$qBj6ZC2keDT?bqbl`^>UKB;CBD2Js2oBkUSh8 zR>dTY@tE@d8|ry<0vzQ4I3a7k0$F~onm+46DQN+%z}WS|SxRKBnH3ObW2~*7#pOgzNz`uE~A?Nxk8<%4ge3utSL)oItl6z z_!^K2z1cxC!-NVat6b$T?;AJh2y8lmq^;{@nfo56_KxpRLT#;(w3BmFE0-T`I*6o3 z$U|ka$O<(vFYzhUy*Xve8|J7pwg%xV?j)~r>6ZmVo5YSW-$d#G%P#u%t2m1>!)&#l`a<0+2bE5-_FN@t{thLD~VbTK8w(>Jc7WByzH1xQx} znAQaVx~qVA&vq@KxsoR8Asf7(_qbrs){=p7ftm}wMVT-AF`JGPkN_{iV@r!Yo!UHb zp>e1;blsxu#v8HnKfzA@I1$rY@W&ZKx1}}ynvVdH*rlwxjZIA_urk*G@ejwn?AxLK z+i-(e|80`P1v|6`%&U~SUi9g{AEF~?x5rLAq8sw88WQUVmdveHJ22J0bMV@7!1Acp zC;@Nbrei9{?VYg9@tW9Bu>L!?sS)**)DIWNVBk$QvFXQ@p#ttxlmZ0Az8PI?R;H;0w>#ct%AC(3d z8f%J$6QZ4C=f@@iC(?61-p-nR6BipXXh7wtsokb|O>}S*;#pih)d9GkZd*Jc(tU-E z=^)2bJ0RukbYOhH`Mut|z2)aw##*DCAFnU|S*r(J(1WmuGL*EUQ@rwI~*qI7o(l1eK| z!>Dw3GlaCHQqo=0-6aZ0moyAGbk`6=%zJP>_qRRXUeEvUhuh{49mkX7Jl0zK+T)%{ z#4>$T^RCJ`JW+%!vw_`LdgOX3b9xHXfAAvy=>tH|Tmkki%3_}b@-FX^Clmph4X!5oW2)fN+Lkc5T-14{sF%$?Y}sR=(`SJzjFNT0vj z^F>y=6B;9q6hqnv?;Y|O=WlDPMd(DmVG%sZ+pTClY?$ef+Id$obEw`1o_pUeqQQkG zJeZa9`i}U*D1&b;!cj+!N3^f+bMbn#;w86CHR0W$YPNc)4vdOWM8%yG1E^aeKh{J* zC>sI@tYunz69_6UotrlWp=3S{LxiSiu6wB+fSz|felRG)6Vg(?rIJnOA>tRl0pM^6 z2KfX{Wpw~pmfLZ!LdD_Kcy~bSVn|wY+b25-=WxXJ;*_lmc`cq&7$48H zcDBae20Zkz;>v@OEEC&dqhZP!9WN-oGxmgp4Mpq4z_6v^0J!z80W6GjeRDbCoZ+fW z3Q$lh0>{9g7`%LM=+u;Uv5u$fbdE7L$mSPsyBDWY)OjsOOdYu6Dc%OQ?w{6x1j~ch zqk}zSihy}8ep97 zHCY@wR=)1AD`sVYO0%fRP<`qB(KV-Pg>D#kZEmpI$mHQ5L_0v`5*{nKXOGh`9SHgZ zqPWu1-m83Y*vilAYYw@M(=N}LbUjuj`}9@Ob9}Bx#Q2tqn_w^h_V@yyRZERBq{kDv zT7NhOz^|T?C-*{&vIaX?>way=I=Kn^63FS zP`Btk{C!K4`=j`<9Q4i+JHj~m zdyPsvr~wllyA4&9pF95$+d#VPVGhhfuMdJG0<~ z(jYH7yQ{5a!h=Y>tPO?{Er-iwx9>4At!m?N0m8%QR7t7u(CEBZwlN>Z--(&3 zrD#UD$GVkNxlz%VI`jJIhwoIPkI%m%9!&8$nh~z5zerVkPVIK*nKwsFd|y+^HqmDK z_E1+5veEtAs9t=;n<}KGPk37gxx}+W zT4dAA-qCEN?-X6B`%oNJFIyE=6PjPRdvB;#366H=2BTJhJ@5}W(%VNT4{xc7bNIe5 z-%Fxue6Jg;OQqEwP0rb6@z{lqXR(=&?Ox)a-yh}3>EOeLJQnT% z;tUWC>!SghlwKT^sy<^pzEjM*+~NDW*efaUaW3yX6b)4~vL~J#k1Yvu6p3odG^>ebnN&CF60(h??koj=1I&_+%`Sqqcq$y$Ub8%$#LOIO} zEZGa7%jFv*T2tlIfK09dOGPCdK*Is;a=tqf8A4U*r485dt|ZvKf^2enJe%wUgXTDzKf|NWuXx>e3=dXMw**%sE_DXVTuD(<;C!;|ZBXy&$)F>0!-8*<&uo=i17 zMOFTCb0!5KkBffs?)54Slog{$qgf>2JYzb#!r3BlQ0JuTdfI8>x5~R((#9tbC3UvQ zv3=sbeudR5-34@6fD)%S^@Qp@?>cOC{|0)f-J%yu^GT|`%JR$#2K6y?ypd;YaIK3b3KOEvL75z*x11O^c zJE%y^C(Zw?sfcpwj?;FwfbbP{xhk?30n?!rLGL)>Yq=C?w4G^;dv{e)9*@i~QhsZ# z#{0S9EC0)~n2?L)5g+=TT(G!{!RYyn@31K<*z#eMS?#^nm%f$yp61lE3G@XsEESeD z-m=YluOhwJ??w~q0f8EwcL~B%?Y1oGKWO1dkaDAkfri98zsyR@!M@kf1ixZ(2))dt; zWsNbMK!|@<$?)xr>GrFFE74>=-n|1j+vNU{magLzYac{C989a!cuE0FEv znwvRNm_KHI!J<18;LWB&<3Vw7=;X0sZ&?A?HD_4-az_DJ1gO9NWmI{gS1qjj=t zUMct+P2?el7ulKPYL}<$8pMX9b6wEf7DR2MEuc}^!8el*=#N3As>vJpJpmKBSMWr; z=TPFIGN3VtqvjRrHZfVsj=xUjTLsTInTbtB%I%1K*jABY=y7x*UW8rQvRw0yK_#_z zHqIZH06Gv+C)5i-g6N;OB;O#RZx-(?6iN96gGgZ-h_r^UP~AVJ5Wnm}zdp{TUMJkZ z&+~3b&F(tYx0ZNeTd)c59KT6Pv9}-IIvtWUU-6i-`rS3T3<{VjhbYmQ@aIGrDK6W? z_L(Gr)WGK2%b;#BEW`K7`5Fyl@baWujupCHp2rjGQhWsXB4BV(p53SH1*OI4@$x(2 zyKgrQ*j$(9v)0T*(*iE8Sy-U>Yrx8BU&VEV%}9v|@7s8nVU@b~-U75~W&L}xz_my8 zD(klEzDEDvsC!`e)HefGT;6FF68{NZ!2B^h5!!-{aAo|5L~;t>Iv1|l9(-!cY#~82 zHyRu7dqd*b^UkR-2j7xw#JTB!8@#>-__cAD15ggpXk6#PU^lUTY%hiR6v#9%p--;| zr(tlr0nV^M3HLnM@$ngBQNuIP4i22Zl%bG8+Yv>yz{QccF>F zVvqUj*KW^Au&z}p#Fm@V9uDHxsPN_T%^sNW50Lr&+NW*e)8?09FJrk(BmD^qECw{= z(%YlLI{G1ftOHa8rI*n!0s_ME)_515+;L3jL8Qs(t@V*|l~Q6(kK(G?Zw>`3*P4kU zE+4%9*51R?v-o7})aq$*WkIc4P@04}DyvPE;`!rmCo%X+Yi*(fMY-G$hwq>0B&5XM z98n!=A<1*+ih&!QFNp#JG!fj_uM==Ob^SJoPdH8m(kOtoK}$Y)_K zQ*qngl0_EaT4_P8(^3pu$tjhOJiS;YtH~%# zsow0A+TP;6c6+-@y(2t8+&O9$z@YoZ@F;O{c z=ct$yxH^`Zn)(hqI~Q|30|JICHckC-M`nrM^7+h}FU(MRc2O#gjCcA%*YYW?fKcfX znazTy$zoG9^=_QEzzmyj!zx$N*AAd^$C`*89==ZoHDCFC>qD8j!2YAS-dnmr5e$wi ztoahmchegUOuw(IFf@XfP(eOuley3AtN$(z`Pz%f2J4r=ZWj1$WCvmZxe0l-7x>43 z8d{YY$c=WtSZfNENWwGa0Z|qRvA)-j`@U4dEyzEPVszk|OpCZAbi=~|^aa(KsP98Q zk$}=0Hj?(uz`h7Dsm{JV-2pr%uwU+;OxS|))VXZV=&LJ{42I}&(^wMO@ zDI#z0%)_QHckya7()#J{x;q}zlWSGyZOF90qc;3UG4!+xReJX>9?tZ{J2ulLLK8EI zAim7-b*k|IXTED@wRZcyua*-rfAd!ih0=V9ZBa7)fDby@j3zPj!JKKM{USrCQ*pXE zyBlANSk=Ld35I zH|H@I$bGDrnz+{mFoYZ?PklyoiAed9mXY+rn!tc8Lqovd^iI{q?@zMDlDsmtM^dpv zQDQ7=whEOq7Z#5)a-Ol$MQ?L=7@u<+xhA8SC*pm-yNNS>;u&NR!>Zldt80Qwcn#R8 zIDU}jh1Jgnu7A0a`Dx7emuurr#Td7-^=ufr1|cJLmW|^rbrJZHSYe8UqwF)?^Ec?w z`$9XoP^(P~-8z9=;L^BOz+CSnI06Ptg+Nt6otezIVHV$TtR}h_mYv8rQthRa0#%i?GXLR;kX zU91TjI6&PxP7rm*8xbd(#K-4?cIh6otHCQ-1~z^LczRonC7{X3qT`7AADXV`JDQUM z+v~-H;g;g@ZsO;wTuQiC7y>|E=Mk;&PG#VvfI4K+kYWm;9Xj>)uIJ$wnE~&YpvBXZ zlWe;T9L1aV8>%Eoj}gYgBhI|}j?AeC!qbCyd<71rw?Fjm<~Md%W<~}*OB`f7A4YAKK7y{0zUIawJj*zv z@-L{BI_dvOJ|yq&l-O-*n3Yp$ltGQ7eQwLV+VNuCAbn7Lx0Or!7y@6O3M^1$VB>kD zfT@9uOc2Y#RH(LdBz-V@U5gjLLIRxVysI$;b3g4R!n0 z9db^)ZD62FX5pv~1?+_BK{QbY-t1`A=h^5kq_)^T z(zi@C*VC;Nf)21v9ES%J5(ia@M;KhPP@hmF>(L_VJ<$@(L^qgulQI2?KRbV;=4GnK zlsXV%6X^1`1l`Xy0u52rR+WcQM0t!RP;%5~e888}j;D){|6wW%Q?Gh@nJ z_V>LA>vygyD;7^i2&7EV)CaFfBBv=dYg(q1 z8>Fk-7;b=Dzh`Cz4t{0jJ`DMq_`U9xUA|UPJ9DQKtPczA=TUmV9U@-u*^a*l& zdJ=B{EI1Y`episk2WMBPFM@9L10X6G%<(y>>TSPW{>W|V)<6@YNWGT4U-V6UE$pml z!JKFU=fl(RjCQmag1A+ZnIk`v&)8Q=jyY|lZXF8HzvLPWpqtBh_cTfvH=PQ{mMYs> zG~!Bb*Vo%v{I%PoqRXN;K>Tq?{w}+!P|`p+sY~!Sb@7|AhBp%9JqJ+NN`Y@LUcZMa ztfByz-?bHX)D09N2|e1mdCtYF6+zpqU0PFpt!Cu|wpVG?&09a#dI`H;1-n8zvjKpUA?c7DcxEl~nEWc~Ao zow{0&6-}B{05&xp6|TJe_4Ki!AaEh7FpEPrBv^<1uU~qfWzExh459_TU5GERJlo>d z#+*sDZ0EQFLemSWF;%Ya6!f1w zTziW7Mjx9HODOLJ-Rw;J^L3~&5VVPXpn4J zV8L0kLhCj$Mv8~p7roW@+ZN2KFLx#C@tNU-SYDlnvFd5hOs?{H=q+>a*>ei|_{P`1 z-7A353RYk#+Y*1B#r)t%zg&Z%i1e_s;;?wPp&L^b;ve|2vs0M(Xb7#zC}}~R|NZL9 z@rwk_%#J&=HIdiR6x>!dVOz1o?cAhetQ_I`23I}$4mXK(sg+^XM?j4bjjijR={&wV zyn#t~2+8SUzWn+AYBM`;A&#kL`E8V0o)v>wcs|}{a76hgb1%gZv80-MDCQ%aPl`6h zHz7Wh!2_PE!2{S)n93!qkrLwFO&nRZL8C53B!L#|EE&5WkI{Wf6>j5s>yrZk$Tzxv z*Tql9z%}Vwo!``O58=?Os+A&P6ppjZ=vYmXS!ji;x9tbK0Q|uSa&3Gj@Zir&UJ;|E zv>cwGzHt8-D?zB~Xzf0z48+WZdPUl5fz5+NXzO8TRQX|e#S3VAybD

}WR6Gd80l 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

?W0N2tz1~IY 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 literal 0 HcmV?d00001 diff --git a/docs/twitter-01-repository-secrets.png b/docs/twitter-05-repository-secrets.png similarity index 100% rename from docs/twitter-01-repository-secrets.png rename to docs/twitter-05-repository-secrets.png diff --git a/lib/common/parse-tweet-file-content.js b/lib/common/parse-tweet-file-content.js index 77b1f885..e62b58ad 100644 --- a/lib/common/parse-tweet-file-content.js +++ b/lib/common/parse-tweet-file-content.js @@ -13,8 +13,6 @@ const FRONT_MATTER_REGEX = new RegExp( ); function parseTweetFileContent(text, dir, isThread = false) { - text = text.trim(); - const options = { threadDelimiter: "---", reply: null, diff --git a/lib/common/tweet.js b/lib/common/tweet.js index 37103fd2..5f680cfe 100644 --- a/lib/common/tweet.js +++ b/lib/common/tweet.js @@ -1,108 +1,203 @@ module.exports = tweet; -const { TwitterApi } = require("twitter-api-v2"); +const { promises: fs } = require("fs"); +const Twitter = require("twitter"); const mime = require("mime-types"); const TWEET_REGEX = /^https:\/\/twitter\.com\/[^/]+\/status\/(\d+)$/; async function tweet({ twitterCredentials }, tweetData, tweetFile) { - const client = new TwitterApi(twitterCredentials); - - const self = await client.v2.me(); - if (self.errors) throw self.errors; - - return handleTweet(client, self.data, tweetData, tweetFile); + const client = new Twitter(twitterCredentials); + return handleTweet(client, tweetData, tweetFile); } -async function handleTweet(client, self, tweet, name) { +async function handleTweet(client, tweet, name) { if (tweet.retweet && !tweet.text) { // TODO: Should this throw if an invalid tweet is passed and there is no match? const match = tweet.retweet.match(TWEET_REGEX); - if (match) return createRetweet(client, self, match[1]); + if (match) return createRetweet(client, match[1]); } const tweetData = { - text: tweet.text, + status: tweet.text, }; if (tweet.poll) { - tweetData.poll = { - duration_minutes: 1440, - options: tweet.poll, - }; + /* istanbul ignore if */ + if (!process.env.TWITTER_ACCOUNT_ID) { + throw new Error(`TWITTER_ACCOUNT_ID environment variable must be set`); + } + + tweetData.card_uri = await createPoll(client, { + name, + pollOptions: tweet.poll, + }).then((poll) => poll.card_uri); } if (tweet.reply) { // TODO: Should this throw if an invalid reply is passed and there is no match? const match = tweet.reply.match(TWEET_REGEX); if (match) { - tweetData.reply = { - in_reply_to_tweet_id: match[1], - }; + tweetData.in_reply_to_status_id = match[1]; + tweetData.auto_populate_reply_metadata = true; } } if (tweet.retweet) { // TODO: Should this throw if an invalid tweet is passed and there is no match? const match = tweet.retweet.match(TWEET_REGEX); - if (match) tweetData.quote_tweet_id = match[1]; - } - - if (tweet.media?.length) { - tweetData.media = { - media_ids: await Promise.all( - tweet.media.map((media) => createMedia(client, media)) - ), - }; + if (match) tweetData.attachment_url = match[0]; } - const tweetResult = await createTweet(client, self, tweetData); + if (tweet.media) + tweetData.media_ids = await Promise.all( + tweet.media.map((media) => createMedia(client, media)) + ).then((ids) => ids.join(",")); - if (tweet.thread) { + const tweetResult = await createTweet(client, tweetData); + if (tweet.thread) tweetResult.thread = await handleTweet( client, - self, { ...tweet.thread, reply: tweetResult.url }, name ); - } return tweetResult; } -async function createMedia(client, { file, alt }) { - const mediaId = await client.v1.uploadMedia(file, { - mimeType: mime.lookup(file), +function createPoll( + client, + { + name, + text, + pollOptions: [first_choice, second_choice, third_choice, fourth_choice], + } +) { + return new Promise((resolve, reject) => { + // TODO: Switch to the v2 Twitter API for creating tweets and use the `poll` object, not Ads API + // https://developer.twitter.com/en/docs/ads/creatives/api-reference/poll#post-accounts-account-id-cards-poll + client.post( + `https://ads-api.twitter.com/11/accounts/${process.env.TWITTER_ACCOUNT_ID}/cards/poll`, + { + name, + duration_in_minutes: 1440, // two days + first_choice, + second_choice, + third_choice, + fourth_choice, + text, + }, + (error, result) => { + /* istanbul ignore if */ + if (error) { + return reject(error); + } + + resolve({ card_uri: result.data.card_uri }); + } + ); }); - if (alt) - await client.v1.createMediaMetadata(mediaId, { alt_text: { text: alt } }); - return mediaId; } -async function createTweet(client, self, options) { - return client.v2.tweet(options).then((data) => { - if (data.errors) throw data.errors; - return { - text: data.data.text, - url: `https://twitter.com/${self.username}/status/${data.data.id}`, - }; +async function createMedia(client, { file, alt }) { + const { size } = await fs.stat(file); + + const id = await new Promise((resolve, reject) => { + client.post( + "media/upload", + { + command: "INIT", + total_bytes: size, + media_type: mime.lookup(file), + }, + (error, result) => { + if (error) return reject(error); + resolve(result.media_id_string); + } + ); }); -} -function createRetweet(client, self, id) { - return client.v2.retweet(self.id, id).then(async (data) => { - if (data.errors) throw data.errors; - if (!data.data.retweeted) throw new Error("Retweet failed"); + const data = await fs.readFile(file); + + await new Promise((resolve, reject) => { + client.post( + "media/upload", + { + command: "APPEND", + media_id: id, + media: data, + segment_index: 0, + }, + (error) => { + if (error) return reject(error); + resolve(); + } + ); + }); - const other = await client.v2.singleTweet(id, { expansions: "author_id" }); - if (other.errors) throw other.errors; - const otherUser = other.includes.users.find( - (user) => user.id === other.data.author_id + await new Promise((resolve, reject) => { + client.post( + "media/upload", + { + command: "FINALIZE", + media_id: id, + }, + (error) => { + if (error) return reject(error); + resolve(); + } ); + }); + + // TODO: Support alt text (twitter library does not support JSON payloads) + // https://github.com/desmondmorris/node-twitter/issues/347 + // if (alt) { + // await new Promise((resolve, reject) => { + // client.post( + // "media/metadata/create", + // { + // media_id: id, + // alt_text: { + // text: alt, + // }, + // }, + // (error) => { + // if (error) return reject(error); + // resolve(); + // } + // ); + // }); + // } + + return id; +} + +function createTweet(client, options) { + return new Promise((resolve, reject) => { + client.post("statuses/update", options, (error, result) => { + if (error) { + return reject(error); + } + + resolve({ + text: options.status, + url: `https://twitter.com/${result.user.screen_name}/status/${result.id_str}`, + }); + }); + }); +} - return { - retweet: `https://twitter.com/${otherUser.username}/status/${id}`, - url: `https://twitter.com/${otherUser.username}/status/${id}`, // TODO: Twitter does not return the id of the retweet itself - }; +function createRetweet(client, id) { + return new Promise((resolve, reject) => { + client.post(`statuses/retweet/${id}`, {}, (error, result) => { + if (error) { + return reject(error); + } + + resolve({ + retweet: `https://twitter.com/${result.retweeted_status.user.screen_name}/status/${result.retweeted_status.id_str}`, + url: `https://twitter.com/${result.user.screen_name}/status/${result.id_str}`, + }); + }); }); } diff --git a/lib/index.js b/lib/index.js index 0350c77b..22a727c7 100644 --- a/lib/index.js +++ b/lib/index.js @@ -17,10 +17,10 @@ async function main() { const state = { startedAt: new Date().toISOString(), twitterCredentials: { - appKey: process.env.TWITTER_API_KEY, - appSecret: process.env.TWITTER_API_SECRET_KEY, - accessToken: process.env.TWITTER_ACCESS_TOKEN, - accessSecret: process.env.TWITTER_ACCESS_TOKEN_SECRET, + consumer_key: process.env.TWITTER_API_KEY, + consumer_secret: process.env.TWITTER_API_SECRET_KEY, + access_token_key: process.env.TWITTER_ACCESS_TOKEN, + access_token_secret: process.env.TWITTER_ACCESS_TOKEN_SECRET, }, }; diff --git a/package-lock.json b/package-lock.json index 1216e5d8..369f576e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "twitter-together", - "version": "2.1.1", + "version": "2.1.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "twitter-together", - "version": "2.1.1", + "version": "2.1.0", "license": "MIT", "dependencies": { "@actions/core": "1.9.1", @@ -14,12 +14,12 @@ "js-yaml": "^4.1.0", "mime-types": "^2.1.35", "parse-diff": "^0.9.0", - "twitter-api-v2": "^1.12.7", + "twitter": "^1.7.1", "twitter-text": "^3.1.0" }, "devDependencies": { "@semantic-release/git": "^10.0.1", - "@vercel/ncc": "^0.34.0", + "@zeit/ncc": "^0.22.0", "nock": "^13.2.9", "prettier": "^2.7.1", "semantic-release": "^19.0.5", @@ -1245,10 +1245,11 @@ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, - "node_modules/@vercel/ncc": { - "version": "0.34.0", - "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.34.0.tgz", - "integrity": "sha512-G9h5ZLBJ/V57Ou9vz5hI8pda/YQX5HQszCs3AmIus3XzsmRn/0Ptic5otD3xVST8QLKk7AMk7AqpsyQGN7MZ9A==", + "node_modules/@zeit/ncc": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@zeit/ncc/-/ncc-0.22.0.tgz", + "integrity": "sha512-zaS6chwztGSLSEzsTJw9sLTYxQt57bPFBtsYlVtbqGvmDUsfW7xgXPYofzFa1kB9ur2dRop6IxCwPnWLBVCrbQ==", + "deprecated": "@zeit/ncc is no longer maintained. Please use @vercel/ncc instead.", "dev": true, "bin": { "ncc": "dist/ncc/cli.js" @@ -1278,6 +1279,26 @@ "node": ">=8" } }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "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/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==" + }, "node_modules/ansi-escapes": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", @@ -1406,6 +1427,22 @@ "node": ">=0.10.0" } }, + "node_modules/asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "engines": { + "node": ">=0.8" + } + }, "node_modules/async-hook-domain": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/async-hook-domain/-/async-hook-domain-2.0.4.tgz", @@ -1415,12 +1452,38 @@ "node": ">=10" } }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + }, "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/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, "node_modules/before-after-hook": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", @@ -1585,6 +1648,11 @@ "cdl": "bin/cdl.js" } }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -1679,6 +1747,17 @@ "color-support": "bin.js" } }, + "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==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -1804,8 +1883,7 @@ "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "node_modules/cosmiconfig": { "version": "7.0.1", @@ -1864,6 +1942,17 @@ "node": ">=8" } }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/dateformat": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", @@ -1913,6 +2002,15 @@ "node": ">=0.10.0" } }, + "node_modules/deep-extend": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", + "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, "node_modules/default-require-extensions": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", @@ -1977,6 +2075,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "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=", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/deprecation": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", @@ -2054,6 +2160,15 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, "node_modules/electron-to-chromium": { "version": "1.4.254", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.254.tgz", @@ -2203,6 +2318,19 @@ "integrity": "sha512-inRWzRY7nG+aXZxBzEqYKB3HPgwflZRopAjDCHv0whhRx+MTUr1ei0ICZUypdyE0HRm4L2d5VEcIqLD6yl+BFA==", "dev": true }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "engines": [ + "node >=0.6.0" + ] + }, "node_modules/fast-glob": { "version": "3.2.11", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", @@ -2244,6 +2372,11 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, "node_modules/fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", @@ -2384,6 +2517,27 @@ "node": ">=8.0.0" } }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, "node_modules/from2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", @@ -2524,6 +2678,14 @@ "node": ">=8.0.0" } }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, "node_modules/git-log-parser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz", @@ -2675,6 +2837,27 @@ "uglify-js": "^3.1.4" } }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "deprecated": "this library is no longer supported", + "dependencies": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", @@ -2771,6 +2954,20 @@ "node": ">= 6" } }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -3034,8 +3231,7 @@ "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 + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, "node_modules/is-windows": { "version": "1.0.2", @@ -3058,6 +3254,11 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, "node_modules/issue-parser": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", @@ -3257,6 +3458,11 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -3281,11 +3487,20 @@ "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==" + }, + "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==" + }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "node_modules/json5": { "version": "2.2.1", @@ -3336,6 +3551,20 @@ "node": "*" } }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -6457,6 +6686,14 @@ "node": ">=8" } }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "engines": { + "node": "*" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -6691,6 +6928,11 @@ "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=" + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -6854,11 +7096,15 @@ "node": ">= 8" } }, + "node_modules/psl": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz", + "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==" + }, "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" } @@ -6873,6 +7119,14 @@ "teleport": ">=0.2.0" } }, + "node_modules/qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "engines": { + "node": ">=0.6" + } + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -7080,6 +7334,37 @@ "node": ">=4" } }, + "node_modules/request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 4" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -7173,8 +7458,12 @@ "node_modules/safe-buffer": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", - "dev": true + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/semantic-release": { "version": "19.0.5", @@ -7500,6 +7789,30 @@ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, + "node_modules/sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/stack-utils": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", @@ -9785,6 +10098,23 @@ "node": ">=8.0" } }, + "node_modules/tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dependencies": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tough-cookie/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -9846,15 +10176,35 @@ "node": ">=0.6.11 <=0.7.0 || >=0.7.3" } }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, "node_modules/twemoji-parser": { "version": "11.0.2", "resolved": "https://registry.npmjs.org/twemoji-parser/-/twemoji-parser-11.0.2.tgz", "integrity": "sha512-5kO2XCcpAql6zjdLwRwJjYvAZyDy3+Uj7v1ipBzLthQmDL7Ce19bEqHr3ImSNeoSW2OA8u02XmARbXHaNO8GhA==" }, - "node_modules/twitter-api-v2": { - "version": "1.12.7", - "resolved": "https://registry.npmjs.org/twitter-api-v2/-/twitter-api-v2-1.12.7.tgz", - "integrity": "sha512-kz0/algmi49xejjrKoEJEpXCa1Y0d2MHHhjJZS55ORcqzs8RHxvLO1oWeJNvFz/o+FQW+sFCpmM/5DyYy+QBXw==" + "node_modules/twitter": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/twitter/-/twitter-1.7.1.tgz", + "integrity": "sha1-B2I3jx3BwFDkj2ZqypBOJLGpYvQ=", + "dependencies": { + "deep-extend": "^0.5.0", + "request": "^2.72.0" + } }, "node_modules/twitter-text": { "version": "3.1.0", @@ -9982,6 +10332,14 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dependencies": { + "punycode": "^2.1.0" + } + }, "node_modules/url-join": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", @@ -9994,6 +10352,15 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "node_modules/uuid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -10004,6 +10371,19 @@ "spdx-expression-parse": "^3.0.0" } }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, "node_modules/vlq": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", @@ -11186,10 +11566,10 @@ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, - "@vercel/ncc": { - "version": "0.34.0", - "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.34.0.tgz", - "integrity": "sha512-G9h5ZLBJ/V57Ou9vz5hI8pda/YQX5HQszCs3AmIus3XzsmRn/0Ptic5otD3xVST8QLKk7AMk7AqpsyQGN7MZ9A==", + "@zeit/ncc": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@zeit/ncc/-/ncc-0.22.0.tgz", + "integrity": "sha512-zaS6chwztGSLSEzsTJw9sLTYxQt57bPFBtsYlVtbqGvmDUsfW7xgXPYofzFa1kB9ur2dRop6IxCwPnWLBVCrbQ==", "dev": true }, "agent-base": { @@ -11210,6 +11590,24 @@ "indent-string": "^3.2.0" } }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "dependencies": { + "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==" + } + } + }, "ansi-escapes": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", @@ -11310,18 +11708,54 @@ "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, "async-hook-domain": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/async-hook-domain/-/async-hook-domain-2.0.4.tgz", "integrity": "sha512-14LjCmlK1PK8eDtTezR6WX8TMaYNIzBIsd2D1sGoGjgx0BuNMMoSdk7i/drlbtamy0AWv9yv2tkB+ASdmeqFIw==", "dev": true }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + }, "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 }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, "before-after-hook": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", @@ -11433,6 +11867,11 @@ "redeyed": "~2.1.0" } }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -11508,6 +11947,14 @@ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -11614,8 +12061,7 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "cosmiconfig": { "version": "7.0.1", @@ -11661,6 +12107,14 @@ "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", "dev": true }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, "dateformat": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", @@ -11699,6 +12153,11 @@ } } }, + "deep-extend": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", + "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==" + }, "default-require-extensions": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", @@ -11749,6 +12208,11 @@ } } }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, "deprecation": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", @@ -11819,6 +12283,15 @@ } } }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, "electron-to-chromium": { "version": "1.4.254", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.254.tgz", @@ -11930,6 +12403,16 @@ "integrity": "sha512-inRWzRY7nG+aXZxBzEqYKB3HPgwflZRopAjDCHv0whhRx+MTUr1ei0ICZUypdyE0HRm4L2d5VEcIqLD6yl+BFA==", "dev": true }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, "fast-glob": { "version": "3.2.11", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", @@ -11961,6 +12444,11 @@ } } }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, "fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", @@ -12063,6 +12551,21 @@ "signal-exit": "^3.0.2" } }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, "from2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", @@ -12171,6 +12674,14 @@ "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, "git-log-parser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz", @@ -12298,6 +12809,20 @@ "wordwrap": "^1.0.0" } }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, "hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", @@ -12369,6 +12894,16 @@ "debug": "4" } }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, "https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -12556,8 +13091,7 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, "is-windows": { "version": "1.0.2", @@ -12577,6 +13111,11 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, "issue-parser": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", @@ -12734,6 +13273,11 @@ "argparse": "^2.0.1" } }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -12752,11 +13296,20 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "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==" + }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "json5": { "version": "2.2.1", @@ -12790,6 +13343,17 @@ "through": ">=2.2.7 <3" } }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -15023,6 +15587,11 @@ } } }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -15194,6 +15763,11 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -15314,11 +15888,15 @@ "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", "dev": true }, + "psl": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz", + "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==" + }, "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 + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "q": { "version": "1.5.1", @@ -15326,6 +15904,11 @@ "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", "dev": true }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -15479,6 +16062,33 @@ "es6-error": "^4.0.1" } }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -15539,8 +16149,12 @@ "safe-buffer": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", - "dev": true + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "semantic-release": { "version": "19.0.5", @@ -15803,6 +16417,22 @@ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, "stack-utils": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", @@ -17338,6 +17968,22 @@ "is-number": "^7.0.0" } }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } + } + }, "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -17381,15 +18027,32 @@ "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, "twemoji-parser": { "version": "11.0.2", "resolved": "https://registry.npmjs.org/twemoji-parser/-/twemoji-parser-11.0.2.tgz", "integrity": "sha512-5kO2XCcpAql6zjdLwRwJjYvAZyDy3+Uj7v1ipBzLthQmDL7Ce19bEqHr3ImSNeoSW2OA8u02XmARbXHaNO8GhA==" }, - "twitter-api-v2": { - "version": "1.12.7", - "resolved": "https://registry.npmjs.org/twitter-api-v2/-/twitter-api-v2-1.12.7.tgz", - "integrity": "sha512-kz0/algmi49xejjrKoEJEpXCa1Y0d2MHHhjJZS55ORcqzs8RHxvLO1oWeJNvFz/o+FQW+sFCpmM/5DyYy+QBXw==" + "twitter": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/twitter/-/twitter-1.7.1.tgz", + "integrity": "sha1-B2I3jx3BwFDkj2ZqypBOJLGpYvQ=", + "requires": { + "deep-extend": "^0.5.0", + "request": "^2.72.0" + } }, "twitter-text": { "version": "3.1.0", @@ -17478,6 +18141,14 @@ "picocolors": "^1.0.0" } }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, "url-join": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", @@ -17490,6 +18161,11 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "uuid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" + }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -17500,6 +18176,16 @@ "spdx-expression-parse": "^3.0.0" } }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, "vlq": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", diff --git a/package.json b/package.json index fc221349..0b3a4455 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "twitter-together", - "version": "2.2.0", + "version": "2.1.3", "description": "A GitHub action to tweet together using pull requests", "main": "lib/index.js", "scripts": { @@ -20,12 +20,12 @@ "js-yaml": "^4.1.0", "mime-types": "^2.1.35", "parse-diff": "^0.9.0", - "twitter-api-v2": "^1.12.7", + "twitter": "^1.7.1", "twitter-text": "^3.1.0" }, "devDependencies": { "@semantic-release/git": "^10.0.1", - "@vercel/ncc": "^0.34.0", + "@zeit/ncc": "^0.22.0", "nock": "^13.2.9", "prettier": "^2.7.1", "semantic-release": "^19.0.5", diff --git a/test/command-line-has-tweet-with-front-matter-media-in-directory/test.js b/test/command-line-has-tweet-with-front-matter-media-in-directory/test.js index 047a0770..6bad7ad8 100644 --- a/test/command-line-has-tweet-with-front-matter-media-in-directory/test.js +++ b/test/command-line-has-tweet-with-front-matter-media-in-directory/test.js @@ -6,93 +6,57 @@ const nock = require("nock"); const tap = require("tap"); -// SETUP -process.env.TWITTER_API_KEY = "key123"; -process.env.TWITTER_API_SECRET_KEY = "keysecret123"; -process.env.TWITTER_ACCESS_TOKEN = "token123"; -process.env.TWITTER_ACCESS_TOKEN_SECRET = "tokensecret123"; - // MOCK nock("https://api.twitter.com") - .get("/2/users/me") - .reply(200, { - data: { - id: "123", - name: "gr2m", - username: "gr2m", - }, - }) - - .post("/2/tweets", (body) => { - tap.equal(body.text, "Cuddly :)"); - tap.type(body.media, "object"); - tap.hasProp(body.media, "media_ids"); - tap.same(body.media.media_ids, ["0000000000000000002"]); + .post("/1.1/statuses/update.json", (body) => { + tap.equal(body.status, "Cuddly :)\n"); + tap.equal(body.media_ids, "0000000000000000002"); return true; }) .reply(201, { - data: { - id: "0000000000000000001", - text: "Cuddly :) https://t.co/abcdeFGHIJ", + id_str: "0000000000000000001", + user: { + screen_name: "gr2m", }, }); nock("https://upload.twitter.com") .post("/1.1/media/upload.json", (body) => { - tap.match( - body, - 'Content-Disposition: form-data; name="command"\r\n\r\nINIT' - ); - tap.match( - body, - 'Content-Disposition: form-data; name="total_bytes"\r\n\r\n107352' - ); - tap.match( - body, - 'Content-Disposition: form-data; name="media_type"\r\n\r\nimage/png' - ); + tap.equal(body.command, "INIT"); + tap.equal(body.total_bytes, "107352"); + tap.equal(body.media_type, "image/png"); return true; }) - .reply(202, { + .reply(201, { media_id_string: "0000000000000000002", - expires_after_secs: 86400, - media_key: "3_0000000000000000002", }) - .post("/1.1/media/upload.json") - .reply(204) - - .post("/1.1/media/upload.json", (body) => { - tap.match( - body, - 'Content-Disposition: form-data; name="command"\r\n\r\nFINALIZE' - ); - tap.match( - body, - 'Content-Disposition: form-data; name="media_id"\r\n\r\n0000000000000000002' - ); + .post("/1.1/media/upload.json", () => { + // TODO: Body just seems to be a string here, not an object. + // tap.equal(body.command, "APPEND"); + // tap.equal(body.media_id, "0000000000000000002"); + // tap.equal(body.media_type, ""); + // tap.equal(body.media, ""); + // tap.equal(body.segment_index, 0); return true; }) - .reply(201, { - media_id_string: "0000000000000000002", - media_key: "3_0000000000000000002", - size: 107352, - expires_after_secs: 86400, - image: { - image_type: "image/png", - w: 640, - h: 360, - }, - }) + .reply(201) - .post("/1.1/media/metadata/create.json", (body) => { + .post("/1.1/media/upload.json", (body) => { + tap.equal(body.command, "FINALIZE"); tap.equal(body.media_id, "0000000000000000002"); - tap.type(body.alt_text, "object"); - tap.hasProp(body.alt_text, "text"); - tap.equal(body.alt_text.text, "Blahaj!"); return true; }) - .reply(200); + .reply(201); + +// TODO: Support alt text (twitter library does not support JSON payloads) +// https://github.com/desmondmorris/node-twitter/issues/347 +// .post("/1.1/media/metadata/create.json", (body) => { +// tap.equal(body.media_id, "0000000000000000002"); +// tap.equal(body.alt_text.text, "Blahaj!"); +// return true; +// }) +// .reply(201); process.chdir(__dirname); process.argv = [ diff --git a/test/command-line-has-tweet-with-front-matter-media/test.js b/test/command-line-has-tweet-with-front-matter-media/test.js index 9b9e8e89..2f56bda1 100644 --- a/test/command-line-has-tweet-with-front-matter-media/test.js +++ b/test/command-line-has-tweet-with-front-matter-media/test.js @@ -6,93 +6,57 @@ const nock = require("nock"); const tap = require("tap"); -// SETUP -process.env.TWITTER_API_KEY = "key123"; -process.env.TWITTER_API_SECRET_KEY = "keysecret123"; -process.env.TWITTER_ACCESS_TOKEN = "token123"; -process.env.TWITTER_ACCESS_TOKEN_SECRET = "tokensecret123"; - // MOCK nock("https://api.twitter.com") - .get("/2/users/me") - .reply(200, { - data: { - id: "123", - name: "gr2m", - username: "gr2m", - }, - }) - - .post("/2/tweets", (body) => { - tap.equal(body.text, "Cuddly :)"); - tap.type(body.media, "object"); - tap.hasProp(body.media, "media_ids"); - tap.same(body.media.media_ids, ["0000000000000000002"]); + .post("/1.1/statuses/update.json", (body) => { + tap.equal(body.status, "Cuddly :)\n"); + tap.equal(body.media_ids, "0000000000000000002"); return true; }) .reply(201, { - data: { - id: "0000000000000000001", - text: "Cuddly :) https://t.co/abcdeFGHIJ", + id_str: "0000000000000000001", + user: { + screen_name: "gr2m", }, }); nock("https://upload.twitter.com") .post("/1.1/media/upload.json", (body) => { - tap.match( - body, - 'Content-Disposition: form-data; name="command"\r\n\r\nINIT' - ); - tap.match( - body, - 'Content-Disposition: form-data; name="total_bytes"\r\n\r\n107352' - ); - tap.match( - body, - 'Content-Disposition: form-data; name="media_type"\r\n\r\nimage/png' - ); + tap.equal(body.command, "INIT"); + tap.equal(body.total_bytes, "107352"); + tap.equal(body.media_type, "image/png"); return true; }) - .reply(202, { + .reply(201, { media_id_string: "0000000000000000002", - expires_after_secs: 86400, - media_key: "3_0000000000000000002", }) - .post("/1.1/media/upload.json") - .reply(204) - - .post("/1.1/media/upload.json", (body) => { - tap.match( - body, - 'Content-Disposition: form-data; name="command"\r\n\r\nFINALIZE' - ); - tap.match( - body, - 'Content-Disposition: form-data; name="media_id"\r\n\r\n0000000000000000002' - ); + .post("/1.1/media/upload.json", () => { + // TODO: Body just seems to be a string here, not an object. + // tap.equal(body.command, "APPEND"); + // tap.equal(body.media_id, "0000000000000000002"); + // tap.equal(body.media_type, ""); + // tap.equal(body.media, ""); + // tap.equal(body.segment_index, 0); return true; }) - .reply(201, { - media_id_string: "0000000000000000002", - media_key: "3_0000000000000000002", - size: 107352, - expires_after_secs: 86400, - image: { - image_type: "image/png", - w: 640, - h: 360, - }, - }) + .reply(201) - .post("/1.1/media/metadata/create.json", (body) => { + .post("/1.1/media/upload.json", (body) => { + tap.equal(body.command, "FINALIZE"); tap.equal(body.media_id, "0000000000000000002"); - tap.type(body.alt_text, "object"); - tap.hasProp(body.alt_text, "text"); - tap.equal(body.alt_text.text, "Blahaj!"); return true; }) - .reply(200); + .reply(201); + +// TODO: Support alt text (twitter library does not support JSON payloads) +// https://github.com/desmondmorris/node-twitter/issues/347 +// .post("/1.1/media/metadata/create.json", (body) => { +// tap.equal(body.media_id, "0000000000000000002"); +// tap.equal(body.alt_text.text, "Blahaj!"); +// return true; +// }) +// .reply(201); process.chdir(__dirname); process.argv = ["node", "lib/index.js", "--file", "tweets/hello-world.tweet"]; diff --git a/test/command-line-has-tweet/test.js b/test/command-line-has-tweet/test.js index 00cc8082..e8b2f0c1 100644 --- a/test/command-line-has-tweet/test.js +++ b/test/command-line-has-tweet/test.js @@ -5,31 +5,16 @@ const nock = require("nock"); const tap = require("tap"); -// SETUP -process.env.TWITTER_API_KEY = "key123"; -process.env.TWITTER_API_SECRET_KEY = "keysecret123"; -process.env.TWITTER_ACCESS_TOKEN = "token123"; -process.env.TWITTER_ACCESS_TOKEN_SECRET = "tokensecret123"; - // MOCK nock("https://api.twitter.com") - .get("/2/users/me") - .reply(200, { - data: { - id: "123", - name: "gr2m", - username: "gr2m", - }, - }) - - .post("/2/tweets", (body) => { - tap.equal(body.text, "Hello, world!"); + .post("/1.1/statuses/update.json", (body) => { + tap.equal(body.status, "Hello, world!\n"); return true; }) .reply(201, { - data: { - id: "0000000000000000001", - text: "Hello, world!", + id_str: "0000000000000000001", + user: { + screen_name: "gr2m", }, }); diff --git a/test/push-main-has-tweet-with-front-matter-media/test.js b/test/push-main-has-tweet-with-front-matter-media/test.js index e1f8dec5..e7332857 100644 --- a/test/push-main-has-tweet-with-front-matter-media/test.js +++ b/test/push-main-has-tweet-with-front-matter-media/test.js @@ -14,10 +14,6 @@ process.env.GITHUB_TOKEN = "secret123"; process.env.GITHUB_EVENT_PATH = require.resolve("./event.json"); process.env.GITHUB_REF = "refs/heads/main"; process.env.GITHUB_WORKSPACE = path.dirname(process.env.GITHUB_EVENT_PATH); -process.env.TWITTER_API_KEY = "key123"; -process.env.TWITTER_API_SECRET_KEY = "keysecret123"; -process.env.TWITTER_ACCESS_TOKEN = "token123"; -process.env.TWITTER_ACCESS_TOKEN_SECRET = "tokensecret123"; // set other env variables so action-toolkit is happy process.env.GITHUB_WORKFLOW = ""; @@ -63,85 +59,55 @@ nock("https://api.github.com", { .reply(201); nock("https://api.twitter.com") - .get("/2/users/me") - .reply(200, { - data: { - id: "123", - name: "gr2m", - username: "gr2m", - }, - }) - - .post("/2/tweets", (body) => { - tap.equal(body.text, "Cuddly :)"); - tap.type(body.media, "object"); - tap.hasProp(body.media, "media_ids"); - tap.same(body.media.media_ids, ["0000000000000000002"]); + .post("/1.1/statuses/update.json", (body) => { + tap.equal(body.status, "Cuddly :)"); + tap.equal(body.media_ids, "0000000000000000002"); return true; }) .reply(201, { - data: { - id: "0000000000000000001", - text: "Cuddly :) https://t.co/abcdeFGHIJ", + id_str: "0000000000000000001", + user: { + screen_name: "gr2m", }, }); nock("https://upload.twitter.com") .post("/1.1/media/upload.json", (body) => { - tap.match( - body, - 'Content-Disposition: form-data; name="command"\r\n\r\nINIT' - ); - tap.match( - body, - 'Content-Disposition: form-data; name="total_bytes"\r\n\r\n107352' - ); - tap.match( - body, - 'Content-Disposition: form-data; name="media_type"\r\n\r\nimage/png' - ); + tap.equal(body.command, "INIT"); + tap.equal(body.total_bytes, "107352"); + tap.equal(body.media_type, "image/png"); return true; }) - .reply(202, { + .reply(201, { media_id_string: "0000000000000000002", - expires_after_secs: 86400, - media_key: "3_0000000000000000002", }) - .post("/1.1/media/upload.json") - .reply(204) - - .post("/1.1/media/upload.json", (body) => { - tap.match( - body, - 'Content-Disposition: form-data; name="command"\r\n\r\nFINALIZE' - ); - tap.match( - body, - 'Content-Disposition: form-data; name="media_id"\r\n\r\n0000000000000000002' - ); + .post("/1.1/media/upload.json", () => { + // TODO: Body just seems to be a string here, not an object. + // tap.equal(body.command, "APPEND"); + // tap.equal(body.media_id, "0000000000000000002"); + // tap.equal(body.media_type, ""); + // tap.equal(body.media, ""); + // tap.equal(body.segment_index, 0); return true; }) - .reply(201, { - media_id_string: "0000000000000000002", - media_key: "3_0000000000000000002", - size: 107352, - expires_after_secs: 86400, - image: { - image_type: "image/png", - w: 640, - h: 360, - }, - }) + .reply(201) - .post("/1.1/media/metadata/create.json", (body) => { + .post("/1.1/media/upload.json", (body) => { + tap.equal(body.command, "FINALIZE"); tap.equal(body.media_id, "0000000000000000002"); - tap.type(body.alt_text, "object"); - tap.hasProp(body.alt_text, "text"); - tap.equal(body.alt_text.text, "Blahaj!"); return true; }) - .reply(200); + .reply(201); + +// TODO: Support alt text (twitter library does not support JSON payloads) +// https://github.com/desmondmorris/node-twitter/issues/347 +// .post("/1.1/media/metadata/create.json", (body) => { +// tap.equal(body.media_id, "0000000000000000002"); +// tap.equal(body.alt_text.text, "Blahaj!"); +// return true; +// }) +// .reply(201); process.on("exit", (code) => { tap.equal(code, 0); diff --git a/test/push-main-has-tweet-with-front-matter-poll/test.js b/test/push-main-has-tweet-with-front-matter-poll/test.js index 6c1ab082..18eff894 100644 --- a/test/push-main-has-tweet-with-front-matter-poll/test.js +++ b/test/push-main-has-tweet-with-front-matter-poll/test.js @@ -14,10 +14,6 @@ process.env.GITHUB_TOKEN = "secret123"; process.env.GITHUB_EVENT_PATH = require.resolve("./event.json"); process.env.GITHUB_REF = "refs/heads/main"; process.env.GITHUB_WORKSPACE = path.dirname(process.env.GITHUB_EVENT_PATH); -process.env.TWITTER_API_KEY = "key123"; -process.env.TWITTER_API_SECRET_KEY = "keysecret123"; -process.env.TWITTER_ACCESS_TOKEN = "token123"; -process.env.TWITTER_ACCESS_TOKEN_SECRET = "tokensecret123"; // set other env variables so action-toolkit is happy process.env.GITHUB_WORKFLOW = ""; @@ -26,6 +22,9 @@ process.env.GITHUB_ACTOR = ""; process.env.GITHUB_REPOSITORY = ""; process.env.GITHUB_SHA = ""; +// Needed for polls only +process.env.TWITTER_ACCOUNT_ID = "account123"; + // MOCK nock("https://api.github.com", { reqheaders: { @@ -58,29 +57,27 @@ nock("https://api.github.com", { ) .reply(201); -nock("https://api.twitter.com") - .get("/2/users/me") - .reply(200, { - data: { - id: "123", - name: "gr2m", - username: "gr2m", - }, +// lookup user ID +nock("https://ads-api.twitter.com") + .post("/11/accounts/account123/cards/poll", (body) => { + tap.equal(body.name, "tweets/hello-world.tweet"); + tap.equal(body.duration_in_minutes, "1440"); // two days + tap.equal(body.first_choice, "a"); + tap.equal(body.second_choice, "b"); + return true; }) + .reply(201, { data: { card_uri: "card://123" } }); - .post("/2/tweets", (body) => { - tap.equal(body.text, "Hello, world!"); - tap.type(body.poll, "object"); - tap.hasProp(body.poll, "options"); - tap.same(body.poll.options, ["a", "b"]); - tap.hasProp(body.poll, "duration_minutes"); - tap.equal(body.poll.duration_minutes, 1440); +nock("https://api.twitter.com") + .post("/1.1/statuses/update.json", (body) => { + tap.equal(body.card_uri, "card://123"); + tap.equal(body.status, "Hello, world!"); return true; }) .reply(201, { - data: { - id: "0000000000000000001", - text: "Hello, world!", + id_str: "0000000000000000001", + user: { + screen_name: "gr2m", }, }); diff --git a/test/push-main-has-tweet-with-front-matter-quote/test.js b/test/push-main-has-tweet-with-front-matter-quote/test.js index 6a22f02d..307c766c 100644 --- a/test/push-main-has-tweet-with-front-matter-quote/test.js +++ b/test/push-main-has-tweet-with-front-matter-quote/test.js @@ -14,10 +14,6 @@ process.env.GITHUB_TOKEN = "secret123"; process.env.GITHUB_EVENT_PATH = require.resolve("./event.json"); process.env.GITHUB_REF = "refs/heads/main"; process.env.GITHUB_WORKSPACE = path.dirname(process.env.GITHUB_EVENT_PATH); -process.env.TWITTER_API_KEY = "key123"; -process.env.TWITTER_API_SECRET_KEY = "keysecret123"; -process.env.TWITTER_ACCESS_TOKEN = "token123"; -process.env.TWITTER_ACCESS_TOKEN_SECRET = "tokensecret123"; // set other env variables so action-toolkit is happy process.env.GITHUB_WORKFLOW = ""; @@ -59,24 +55,18 @@ nock("https://api.github.com", { .reply(201); nock("https://api.twitter.com") - .get("/2/users/me") - .reply(200, { - data: { - id: "123", - name: "gr2m", - username: "gr2m", - }, - }) - - .post("/2/tweets", (body) => { - tap.equal(body.text, "Smart thinking!"); - tap.equal(body.quote_tweet_id, "0000000000000000001"); + .post("/1.1/statuses/update.json", (body) => { + tap.equal(body.status, "Smart thinking!"); + tap.equal( + body.attachment_url, + "https://twitter.com/m2rg/status/0000000000000000001" + ); return true; }) .reply(201, { - data: { - id: "0000000000000000002", - text: "Smart thinking! https://t.co/abcdeFGHIJ", + id_str: "0000000000000000002", + user: { + screen_name: "gr2m", }, }); diff --git a/test/push-main-has-tweet-with-front-matter-reply/test.js b/test/push-main-has-tweet-with-front-matter-reply/test.js index 74ac31d7..ae309e48 100644 --- a/test/push-main-has-tweet-with-front-matter-reply/test.js +++ b/test/push-main-has-tweet-with-front-matter-reply/test.js @@ -14,10 +14,6 @@ process.env.GITHUB_TOKEN = "secret123"; process.env.GITHUB_EVENT_PATH = require.resolve("./event.json"); process.env.GITHUB_REF = "refs/heads/main"; process.env.GITHUB_WORKSPACE = path.dirname(process.env.GITHUB_EVENT_PATH); -process.env.TWITTER_API_KEY = "key123"; -process.env.TWITTER_API_SECRET_KEY = "keysecret123"; -process.env.TWITTER_ACCESS_TOKEN = "token123"; -process.env.TWITTER_ACCESS_TOKEN_SECRET = "tokensecret123"; // set other env variables so action-toolkit is happy process.env.GITHUB_WORKFLOW = ""; @@ -59,26 +55,16 @@ nock("https://api.github.com", { .reply(201); nock("https://api.twitter.com") - .get("/2/users/me") - .reply(200, { - data: { - id: "123", - name: "gr2m", - username: "gr2m", - }, - }) - - .post("/2/tweets", (body) => { - tap.equal(body.text, "Good idea :)"); - tap.type(body.reply, "object"); - tap.hasProp(body.reply, "in_reply_to_tweet_id"); - tap.equal(body.reply.in_reply_to_tweet_id, "0000000000000000001"); + .post("/1.1/statuses/update.json", (body) => { + tap.equal(body.status, "Good idea :)"); + tap.equal(body.in_reply_to_status_id, "0000000000000000001"); + tap.equal(body.auto_populate_reply_metadata, "true"); return true; }) .reply(201, { - data: { - id: "0000000000000000002", - text: "Good idea :)", + id_str: "0000000000000000002", + user: { + screen_name: "gr2m", }, }); diff --git a/test/push-main-has-tweet-with-front-matter-retweet/test.js b/test/push-main-has-tweet-with-front-matter-retweet/test.js index 5e61d54b..995dde56 100644 --- a/test/push-main-has-tweet-with-front-matter-retweet/test.js +++ b/test/push-main-has-tweet-with-front-matter-retweet/test.js @@ -14,10 +14,6 @@ process.env.GITHUB_TOKEN = "secret123"; process.env.GITHUB_EVENT_PATH = require.resolve("./event.json"); process.env.GITHUB_REF = "refs/heads/main"; process.env.GITHUB_WORKSPACE = path.dirname(process.env.GITHUB_EVENT_PATH); -process.env.TWITTER_API_KEY = "key123"; -process.env.TWITTER_API_SECRET_KEY = "keysecret123"; -process.env.TWITTER_ACCESS_TOKEN = "token123"; -process.env.TWITTER_ACCESS_TOKEN_SECRET = "tokensecret123"; // set other env variables so action-toolkit is happy process.env.GITHUB_WORKFLOW = ""; @@ -51,7 +47,7 @@ nock("https://api.github.com", { (body) => { tap.equal( body.body, - "Tweeted:\n\n- https://twitter.com/m2rg/status/0000000000000000001" + "Tweeted:\n\n- https://twitter.com/gr2m/status/0000000000000000002" ); return true; } @@ -59,40 +55,17 @@ nock("https://api.github.com", { .reply(201); nock("https://api.twitter.com") - .get("/2/users/me") - .reply(200, { - data: { - id: "123", - name: "gr2m", - username: "gr2m", - }, - }) - - .post("/2/users/123/retweets", (body) => { - tap.equal(body.tweet_id, "0000000000000000001"); - return true; - }) + .post("/1.1/statuses/retweet/0000000000000000001.json") .reply(201, { - data: { - retweeted: true, + id_str: "0000000000000000002", + user: { + screen_name: "gr2m", }, - }) - - .get("/2/tweets/0000000000000000001?expansions=author_id") - .reply(200, { - data: { - id: "0000000000000000001", - text: "", - author_id: "456", - }, - includes: { - users: [ - { - id: "456", - name: "m2rg", - username: "m2rg", - }, - ], + retweeted_status: { + id_str: "0000000000000000001", + user: { + screen_name: "m2rg", + }, }, }); diff --git a/test/push-main-has-tweet-with-poll/test.js b/test/push-main-has-tweet-with-poll/test.js index 0826baae..e94f5a5a 100644 --- a/test/push-main-has-tweet-with-poll/test.js +++ b/test/push-main-has-tweet-with-poll/test.js @@ -14,10 +14,6 @@ process.env.GITHUB_TOKEN = "secret123"; process.env.GITHUB_EVENT_PATH = require.resolve("./event.json"); process.env.GITHUB_REF = "refs/heads/main"; process.env.GITHUB_WORKSPACE = path.dirname(process.env.GITHUB_EVENT_PATH); -process.env.TWITTER_API_KEY = "key123"; -process.env.TWITTER_API_SECRET_KEY = "keysecret123"; -process.env.TWITTER_ACCESS_TOKEN = "token123"; -process.env.TWITTER_ACCESS_TOKEN_SECRET = "tokensecret123"; // set other env variables so action-toolkit is happy process.env.GITHUB_WORKFLOW = ""; @@ -26,6 +22,9 @@ process.env.GITHUB_ACTOR = ""; process.env.GITHUB_REPOSITORY = ""; process.env.GITHUB_SHA = ""; +// Needed for polls only +process.env.TWITTER_ACCOUNT_ID = "account123"; + // MOCK nock("https://api.github.com", { reqheaders: { @@ -58,34 +57,29 @@ nock("https://api.github.com", { ) .reply(201); -nock("https://api.twitter.com") - .get("/2/users/me") - .reply(200, { - data: { - id: "123", - name: "gr2m", - username: "gr2m", - }, +// lookup user ID +nock("https://ads-api.twitter.com") + .post("/11/accounts/account123/cards/poll", (body) => { + tap.equal(body.name, "tweets/my-poll.tweet"); + tap.equal(body.duration_in_minutes, "1440"); // two days + tap.equal(body.first_choice, "option 1"); + tap.equal(body.second_choice, "option 2"); + tap.equal(body.third_choice, "option 3"); + tap.equal(body.fourth_choice, "option 4"); + return true; }) + .reply(201, { data: { card_uri: "card://123" } }); - .post("/2/tweets", (body) => { - tap.equal(body.text, "Here is my poll"); - tap.type(body.poll, "object"); - tap.hasProp(body.poll, "options"); - tap.same(body.poll.options, [ - "option 1", - "option 2", - "option 3", - "option 4", - ]); - tap.hasProp(body.poll, "duration_minutes"); - tap.equal(body.poll.duration_minutes, 1440); +nock("https://api.twitter.com") + .post("/1.1/statuses/update.json", (body) => { + tap.equal(body.card_uri, "card://123"); + tap.equal(body.status, "Here is my poll"); return true; }) .reply(201, { - data: { - id: "0000000000000000001", - text: "Here is my poll", + id_str: "0000000000000000001", + user: { + screen_name: "gr2m", }, }); diff --git a/test/push-main-has-tweet-with-thread/test.js b/test/push-main-has-tweet-with-thread/test.js index 089a2716..5e2567b8 100644 --- a/test/push-main-has-tweet-with-thread/test.js +++ b/test/push-main-has-tweet-with-thread/test.js @@ -16,10 +16,6 @@ process.env.GITHUB_TOKEN = "secret123"; process.env.GITHUB_EVENT_PATH = require.resolve("./event.json"); process.env.GITHUB_REF = "refs/heads/main"; process.env.GITHUB_WORKSPACE = path.dirname(process.env.GITHUB_EVENT_PATH); -process.env.TWITTER_API_KEY = "key123"; -process.env.TWITTER_API_SECRET_KEY = "keysecret123"; -process.env.TWITTER_ACCESS_TOKEN = "token123"; -process.env.TWITTER_ACCESS_TOKEN_SECRET = "tokensecret123"; // set other env variables so action-toolkit is happy process.env.GITHUB_WORKFLOW = ""; @@ -28,6 +24,9 @@ process.env.GITHUB_ACTOR = ""; process.env.GITHUB_REPOSITORY = ""; process.env.GITHUB_SHA = ""; +// Needed for polls only +process.env.TWITTER_ACCOUNT_ID = "account123"; + // MOCK nock("https://api.github.com", { reqheaders: { @@ -61,37 +60,27 @@ nock("https://api.github.com", { .reply(201); nock("https://api.twitter.com") - .get("/2/users/me") - .reply(200, { - data: { - id: "123", - name: "gr2m", - username: "gr2m", - }, - }) - - .post("/2/tweets", (body) => { - tap.equal(body.text, "Hello, world!"); + .post("/1.1/statuses/update.json", (body) => { + tap.equal(body.status, "Hello, world!"); return true; }) .reply(201, { - data: { - id: "0000000000000000001", - text: "Hello, world!", + id_str: "0000000000000000001", + user: { + screen_name: "gr2m", }, }) - .post("/2/tweets", (body) => { - tap.equal(body.text, "Second Tweet!"); - tap.type(body.reply, "object"); - tap.hasProp(body.reply, "in_reply_to_tweet_id"); - tap.equal(body.reply.in_reply_to_tweet_id, "0000000000000000001"); + .post("/1.1/statuses/update.json", (body) => { + tap.equal(body.status, "Second Tweet!"); + tap.equal(body.in_reply_to_status_id, "0000000000000000001"); + tap.equal(body.auto_populate_reply_metadata, "true"); return true; }) .reply(201, { - data: { - id: "0000000000000000002", - text: "Second Tweet!", + id_str: "0000000000000000002", + user: { + screen_name: "gr2m", }, }); diff --git a/test/push-main-has-tweet-with-trailing-whitespace/test.js b/test/push-main-has-tweet-with-trailing-whitespace/test.js index 64d06659..c2dc5d60 100644 --- a/test/push-main-has-tweet-with-trailing-whitespace/test.js +++ b/test/push-main-has-tweet-with-trailing-whitespace/test.js @@ -15,10 +15,6 @@ process.env.GITHUB_TOKEN = "secret123"; process.env.GITHUB_EVENT_PATH = require.resolve("./event.json"); process.env.GITHUB_REF = "refs/heads/main"; process.env.GITHUB_WORKSPACE = path.dirname(process.env.GITHUB_EVENT_PATH); -process.env.TWITTER_API_KEY = "key123"; -process.env.TWITTER_API_SECRET_KEY = "keysecret123"; -process.env.TWITTER_ACCESS_TOKEN = "token123"; -process.env.TWITTER_ACCESS_TOKEN_SECRET = "tokensecret123"; // set other env variables so action-toolkit is happy process.env.GITHUB_WORKFLOW = ""; @@ -60,40 +56,29 @@ nock("https://api.github.com", { .reply(201); nock("https://api.twitter.com") - .get("/2/users/me") - .reply(200, { - data: { - id: "123", - name: "gr2m", - username: "gr2m", - }, - }) - - .post("/2/tweets", (body) => { - tap.equal(body.text, "Hello, world!"); - tap.type(body.reply, "object"); - tap.hasProp(body.reply, "in_reply_to_tweet_id"); - tap.equal(body.reply.in_reply_to_tweet_id, "0000000000000000001"); + .post("/1.1/statuses/update.json", (body) => { + tap.equal(body.status, "Hello, world!"); + tap.equal(body.in_reply_to_status_id, "0000000000000000001"); + tap.equal(body.auto_populate_reply_metadata, "true"); return true; }) .reply(201, { - data: { - id: "0000000000000000002", - text: "Hello, world!", + id_str: "0000000000000000002", + user: { + screen_name: "gr2m", }, }) - .post("/2/tweets", (body) => { - tap.equal(body.text, "Second Tweet!"); - tap.type(body.reply, "object"); - tap.hasProp(body.reply, "in_reply_to_tweet_id"); - tap.equal(body.reply.in_reply_to_tweet_id, "0000000000000000002"); + .post("/1.1/statuses/update.json", (body) => { + tap.equal(body.status, "Second Tweet!"); + tap.equal(body.in_reply_to_status_id, "0000000000000000002"); + tap.equal(body.auto_populate_reply_metadata, "true"); return true; }) .reply(201, { - data: { - id: "0000000000000000003", - text: "Second Tweet!", + id_str: "0000000000000000003", + user: { + screen_name: "gr2m", }, }); diff --git a/test/push-main-has-tweet/test.js b/test/push-main-has-tweet/test.js index 22b82935..a50ffd2e 100644 --- a/test/push-main-has-tweet/test.js +++ b/test/push-main-has-tweet/test.js @@ -14,10 +14,6 @@ process.env.GITHUB_TOKEN = "secret123"; process.env.GITHUB_EVENT_PATH = require.resolve("./event.json"); process.env.GITHUB_REF = "refs/heads/main"; process.env.GITHUB_WORKSPACE = path.dirname(process.env.GITHUB_EVENT_PATH); -process.env.TWITTER_API_KEY = "key123"; -process.env.TWITTER_API_SECRET_KEY = "keysecret123"; -process.env.TWITTER_ACCESS_TOKEN = "token123"; -process.env.TWITTER_ACCESS_TOKEN_SECRET = "tokensecret123"; // set other env variables so action-toolkit is happy process.env.GITHUB_WORKFLOW = ""; @@ -59,23 +55,14 @@ nock("https://api.github.com", { .reply(201); nock("https://api.twitter.com") - .get("/2/users/me") - .reply(200, { - data: { - id: "123", - name: "gr2m", - username: "gr2m", - }, - }) - - .post("/2/tweets", (body) => { - tap.equal(body.text, "Hello, world!"); + .post("/1.1/statuses/update.json", (body) => { + tap.equal(body.status, "Hello, world!"); return true; }) .reply(201, { - data: { - id: "0000000000000000001", - text: "Hello, world!", + id_str: "0000000000000000001", + user: { + screen_name: "gr2m", }, }); From ef623cbbfad7bf4f06c3bbbfed8a18828f274c53 Mon Sep 17 00:00:00 2001 From: Gregor Martynus <39992+gr2m@users.noreply.github.com> Date: Fri, 7 Oct 2022 16:55:07 -0700 Subject: [PATCH 2/3] ci(release): support maintenance releases --- .github/workflows/release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d6e596ad..224d4607 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,6 +1,7 @@ "on": push: branches: + - "*.x" - main name: release jobs: From 10fb76d8ad5cbc7953d382a0cb24f2a83209d0af Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Fri, 7 Oct 2022 23:55:49 +0000 Subject: [PATCH 3/3] build(release): compiled action for 2.2.1 [skip ci] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0b3a4455..1e7bc77a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "twitter-together", - "version": "2.1.3", + "version": "2.2.1", "description": "A GitHub action to tweet together using pull requests", "main": "lib/index.js", "scripts": {