@nlabs/reaktor 1.15.0 → 1.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -244,8 +244,14 @@ rewriting them. URLs must use HTTP(S), without embedded credentials, query, or
244
244
  fragment. No host/model defaults, model discovery, endpoint fallback, or model
245
245
  switching are performed. Do not pass untrusted client input as server configuration.
246
246
 
247
- Input is `prompt` plus optional `system`; message arrays, images, tools, search,
248
- reasoning effort, and JSON schemas are outside this text-only operation. Optional
247
+ Input is `prompt` plus optional `system`; message arrays, tools, search,
248
+ reasoning effort, and JSON schemas are outside this operation. Native `generate`
249
+ and `chat` also accept `images: [{bytes: Buffer, mime: "image/png"}]` for text
250
+ output. Image bytes must be nonempty and MIME must be an image type. They are
251
+ encoded as base64 in caller order, at the top level for generate or on the user
252
+ message for chat. Empty image arrays are omitted. Image input on `openai-chat`
253
+ is rejected before submission. Reaktor does not load, resize, or inspect images;
254
+ callers own preparation and model capability selection. Optional
249
255
  `maxTokens` maps to native `options.num_predict` or compatible `max_tokens`.
250
256
  Nonnegative finite `temperature` preserves zero. Omitted token/temperature controls
251
257
  remain omitted. Explicit `json_object` output maps to native `format: 'json'` or
@@ -284,3 +290,5 @@ completion-validation and single-submission behavior is unchanged.
284
290
  Other providers and image generation reject this option before submission. This is
285
291
  a server-action capability; it does not enable Ollama through GraphQL. Applications
286
292
  retain ownership of sampling values and writing policy.
293
+
294
+ Image protocol references: [generate](https://docs.ollama.com/api/generate) and [chat](https://docs.ollama.com/api/chat).
@@ -79,7 +79,7 @@ const validMessageContent = (message)=>{
79
79
  if (input.maxTokens !== undefined && (!Number.isInteger(input.maxTokens) || input.maxTokens < 1)) {
80
80
  throw new ContentGenerationRejectedError('maxTokens must be a positive integer.');
81
81
  }
82
- if (input.provider !== 'gemini' && (input.images?.length || input.modality === 'image' || input.search)) {
82
+ if (input.provider !== 'gemini' && (input.provider !== 'ollama' && input.images?.length || input.modality === 'image' || input.search)) {
83
83
  throw new ContentGenerationRejectedError('This provider operation supports text input and output only.');
84
84
  }
85
85
  if (input.provider === 'ollama') return generateOllamaContent(input, config);
@@ -312,4 +312,4 @@ const validMessageContent = (message)=>{
312
312
  };
313
313
  };
314
314
 
315
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvYWN0aW9ucy9jb250ZW50R2VuZXJhdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2dlbmVyYXRlT2xsYW1hQ29udGVudH0gZnJvbSAnLi9vbGxhbWFHZW5lcmF0aW9uLmpzJztcbmltcG9ydCB7Q29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yLCBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3J9IGZyb20gJy4vY29udGVudEdlbmVyYXRpb25FcnJvcnMuanMnO1xuZXhwb3J0IHtDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IsIENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcn0gZnJvbSAnLi9jb250ZW50R2VuZXJhdGlvbkVycm9ycy5qcyc7XG5pbXBvcnQge3Bvc3R9IGZyb20gJ0BubGFicy9yaXAtaHVudGVyJztcblxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudEdlbmVyYXRpb25Db25maWcge1xuICBjbGF1ZGVLZXk/OiBzdHJpbmc7XG4gIGNsYXVkZU1vZGVsPzogc3RyaW5nO1xuICBnZW1pbmlJbWFnZU1vZGVsPzogc3RyaW5nO1xuICBnZW1pbmlLZXk/OiBzdHJpbmc7XG4gIGdlbWluaU1vZGVsPzogc3RyaW5nO1xuICBvbGxhbWE/OiB7ZW5kcG9pbnQ6IHN0cmluZzsgcHJvdG9jb2w6ICdnZW5lcmF0ZScgfCAnY2hhdCcgfCAnb3BlbmFpLWNoYXQnfTtcbiAgb3BlbmFpS2V5Pzogc3RyaW5nO1xuICBvcGVuYWlNb2RlbD86IHN0cmluZztcbn1cbmV4cG9ydCB0eXBlIENvbnRlbnRHZW5lcmF0aW9uUGFydCA9IHt0ZXh0OiBzdHJpbmc7IHR5cGU6ICd0ZXh0J30gfCB7XG4gIGRldGFpbD86ICdhdXRvJyB8ICdoaWdoJyB8ICdsb3cnO1xuICB0eXBlOiAnaW1hZ2UnO1xuICB1cmw6IHN0cmluZztcbn07XG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRHZW5lcmF0aW9uTWVzc2FnZSB7XG4gIGNvbnRlbnQ6IHN0cmluZyB8IENvbnRlbnRHZW5lcmF0aW9uUGFydFtdO1xuICByb2xlOiAnYXNzaXN0YW50JyB8ICdkZXZlbG9wZXInIHwgJ3N5c3RlbScgfCAndXNlcic7XG59XG5leHBvcnQgdHlwZSBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRm9ybWF0ID0ge3R5cGU6ICdqc29uX29iamVjdCcgfCAndGV4dCd9IHwge1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBzY2hlbWE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBzdHJpY3Q/OiBib29sZWFuO1xuICB0eXBlOiAnanNvbl9zY2hlbWEnO1xufTtcbmV4cG9ydCB0eXBlIENvbnRlbnRHZW5lcmF0aW9uUmVhc29uaW5nRWZmb3J0ID0gJ25vbmUnIHwgJ21pbmltYWwnIHwgJ2xvdycgfCAnbWVkaXVtJyB8ICdoaWdoJyB8ICd4aGlnaCcgfCAnbWF4JztcblxuZXhwb3J0IGludGVyZmFjZSBDb250ZW50R2VuZXJhdGlvbklucHV0IHtcbiAgYXNwZWN0UmF0aW8/OiBzdHJpbmc7XG4gIGltYWdlcz86IHtieXRlczogQnVmZmVyOyBtaW1lOiBzdHJpbmd9W107XG4gIG1heFRva2Vucz86IG51bWJlcjtcbiAgbWVzc2FnZXM/OiBDb250ZW50R2VuZXJhdGlvbk1lc3NhZ2VbXTtcbiAgbW9kYWxpdHk/OiAnaW1hZ2UnIHwgJ3RleHQnO1xuICBtb2RlbD86IHN0cmluZztcbiAgcHJvbXB0Pzogc3RyaW5nO1xuICBwcm92aWRlcjogJ2NsYXVkZScgfCAnZ2VtaW5pJyB8ICdvbGxhbWEnIHwgJ29wZW5haSc7XG4gIHJlYXNvbmluZ0VmZm9ydD86IENvbnRlbnRHZW5lcmF0aW9uUmVhc29uaW5nRWZmb3J0O1xuICByZXNwb25zZUZvcm1hdD86IENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VGb3JtYXQ7XG4gIHNlYXJjaD86IGJvb2xlYW47XG4gIHN5c3RlbT86IHN0cmluZztcbiAgdGVtcGVyYXR1cmU/OiBudW1iZXI7XG4gIHRpbWVvdXRNcz86IG51bWJlcjtcbiAgdG9wUD86IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhdGVkQ29udGVudCB7XG4gIGltYWdlPzoge2J5dGVzOiBCdWZmZXI7IG1pbWU6ICdpbWFnZS9qcGVnJyB8ICdpbWFnZS9wbmcnfTtcbiAgc2VhcmNoU3VnZ2VzdGlvbnNIdG1sPzogc3RyaW5nO1xuICBzb3VyY2VzOiB7dGl0bGU6IHN0cmluZzsgdXJsOiBzdHJpbmd9W107XG4gIHRleHQ6IHN0cmluZztcbn1cbmludGVyZmFjZSBHZW1pbmlQYXJ0IHtpbmxpbmVEYXRhPzoge2RhdGE6IHN0cmluZzsgbWltZVR5cGU6IHN0cmluZ307IHRleHQ/OiBzdHJpbmc7IHRob3VnaHQ/OiBib29sZWFufVxuaW50ZXJmYWNlIEdlbWluaVJlc3BvbnNlIHtcbiAgY2FuZGlkYXRlcz86IHtcbiAgICBjb250ZW50Pzoge3BhcnRzPzogR2VtaW5pUGFydFtdfTtcbiAgICBmaW5pc2hSZWFzb24/OiBzdHJpbmc7XG4gICAgZ3JvdW5kaW5nTWV0YWRhdGE/OiB7XG4gICAgICBncm91bmRpbmdDaHVua3M/OiB7d2ViPzoge3RpdGxlPzogc3RyaW5nOyB1cmk/OiBzdHJpbmd9fVtdO1xuICAgICAgc2VhcmNoRW50cnlQb2ludD86IHtyZW5kZXJlZENvbnRlbnQ/OiBzdHJpbmd9O1xuICAgIH07XG4gIH1bXTtcbiAgZXJyb3I/OiB7Y29kZT86IG51bWJlcn07XG4gIHByb21wdEZlZWRiYWNrPzoge2Jsb2NrUmVhc29uPzogc3RyaW5nfTtcbn1cblxuY29uc3QgdmFsaWRNZXNzYWdlQ29udGVudCA9IChtZXNzYWdlOiBDb250ZW50R2VuZXJhdGlvbk1lc3NhZ2UpOiBib29sZWFuID0+IHtcbiAgaWYodHlwZW9mIG1lc3NhZ2UuY29udGVudCA9PT0gJ3N0cmluZycpIHJldHVybiAhIW1lc3NhZ2UuY29udGVudC50cmltKCk7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KG1lc3NhZ2UuY29udGVudCkgJiYgbWVzc2FnZS5jb250ZW50Lmxlbmd0aCA+IDAgJiYgbWVzc2FnZS5jb250ZW50LmV2ZXJ5KChwYXJ0KSA9PiB7XG4gICAgaWYoIXBhcnQpIHJldHVybiBmYWxzZTtcbiAgICBpZihwYXJ0LnR5cGUgPT09ICd0ZXh0JykgcmV0dXJuIHR5cGVvZiBwYXJ0LnRleHQgPT09ICdzdHJpbmcnICYmICEhcGFydC50ZXh0LnRyaW0oKTtcbiAgICByZXR1cm4gcGFydC50eXBlID09PSAnaW1hZ2UnICYmIG1lc3NhZ2Uucm9sZSA9PT0gJ3VzZXInICYmIHR5cGVvZiBwYXJ0LnVybCA9PT0gJ3N0cmluZydcbiAgICAgICYmIC9eKGh0dHBzPzpcXC9cXC9bXlxcc10rfGRhdGE6aW1hZ2VcXC8ocG5nfGpwZWd8d2VicHxnaWYpO2Jhc2U2NCxbQS1aYS16MC05Ky9dKz17MCwyfSkkLy50ZXN0KHBhcnQudXJsKVxuICAgICAgJiYgKHBhcnQuZGV0YWlsID09PSB1bmRlZmluZWQgfHwgWydhdXRvJywgJ2hpZ2gnLCAnbG93J10uaW5jbHVkZXMocGFydC5kZXRhaWwpKTtcbiAgfSk7XG59O1xuXG4vKiogU2luZ2xlIHN1Ym1pc3Npb24gdGhyb3VnaCBSaXAtSHVudGVyOyBjYWxsZXJzIG93biBkdXJhYmxlIGpvYnMgYW5kIHJlY29uY2lsaWF0aW9uLiAqL1xuZXhwb3J0IGNvbnN0IGdlbmVyYXRlQ29udGVudCA9IGFzeW5jIChcbiAgaW5wdXQ6IENvbnRlbnRHZW5lcmF0aW9uSW5wdXQsXG4gIGNvbmZpZzogQ29udGVudEdlbmVyYXRpb25Db25maWcgPSBDb25maWcuZ2V0PENvbnRlbnRHZW5lcmF0aW9uQ29uZmlnPignY29udGVudEdlbmVyYXRpb24nKSB8fCB7fVxuKTogUHJvbWlzZTxHZW5lcmF0ZWRDb250ZW50PiA9PiB7XG4gIGlmKCFbJ2NsYXVkZScsICdnZW1pbmknLCAnb2xsYW1hJywgJ29wZW5haSddLmluY2x1ZGVzKGlucHV0LnByb3ZpZGVyKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ0Egc3VwcG9ydGVkIHByb3ZpZGVyIGlzIHJlcXVpcmVkLicpO1xuICB9XG4gIGlmKGlucHV0Lm1lc3NhZ2VzICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZihpbnB1dC5wcm9tcHQgIT09IHVuZGVmaW5lZCB8fCAhQXJyYXkuaXNBcnJheShpbnB1dC5tZXNzYWdlcykgfHwgIWlucHV0Lm1lc3NhZ2VzLmxlbmd0aCB8fCBpbnB1dC5tZXNzYWdlcy5zb21lKChtZXNzYWdlKSA9PlxuICAgICAgIW1lc3NhZ2UgfHwgIVsnYXNzaXN0YW50JywgJ2RldmVsb3BlcicsICdzeXN0ZW0nLCAndXNlciddLmluY2x1ZGVzKG1lc3NhZ2Uucm9sZSkgfHwgIXZhbGlkTWVzc2FnZUNvbnRlbnQobWVzc2FnZSkpKSB7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdTdXBwbHkgZWl0aGVyIGEgbm9uLWVtcHR5IHByb21wdCBvciBub24tZW1wdHkgdGV4dCBtZXNzYWdlcyB3aXRoIHN1cHBvcnRlZCByb2xlcy4nKTtcbiAgICB9XG4gIH0gZWxzZSBpZih0eXBlb2YgaW5wdXQucHJvbXB0ICE9PSAnc3RyaW5nJyB8fCAhaW5wdXQucHJvbXB0LnRyaW0oKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ0Egbm9uLWVtcHR5IHByb21wdCBpcyByZXF1aXJlZC4nKTtcbiAgfVxuICBpZihpbnB1dC5wcm92aWRlciAhPT0gJ29wZW5haScgJiYgKGlucHV0Lm1lc3NhZ2VzICE9PSB1bmRlZmluZWQgfHwgaW5wdXQucmVhc29uaW5nRWZmb3J0ICE9PSB1bmRlZmluZWQgfHwgKGlucHV0LnByb3ZpZGVyID09PSAnY2xhdWRlJyAmJiBpbnB1dC5yZXNwb25zZUZvcm1hdCAhPT0gdW5kZWZpbmVkKSkpIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdNZXNzYWdlcyBhbmQgcmVhc29uaW5nIGVmZm9ydCByZXF1aXJlIE9wZW5BSTsgQ2xhdWRlIGRvZXMgbm90IHN1cHBvcnQgcmVzcG9uc2UgZm9ybWF0IG9wdGlvbnMuJyk7XG4gIH1cbiAgaWYoaW5wdXQudGltZW91dE1zICE9PSB1bmRlZmluZWQgJiYgKCFOdW1iZXIuaXNJbnRlZ2VyKGlucHV0LnRpbWVvdXRNcykgfHwgaW5wdXQudGltZW91dE1zIDwgMSB8fCBpbnB1dC50aW1lb3V0TXMgPiAyXzE0N180ODNfNjQ3KSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ3RpbWVvdXRNcyBtdXN0IGJlIGEgcG9zaXRpdmUgMzItYml0IGludGVnZXIuJyk7XG4gIH1cbiAgaWYoaW5wdXQucmVhc29uaW5nRWZmb3J0ICE9PSB1bmRlZmluZWQgJiYgIVsnbm9uZScsICdtaW5pbWFsJywgJ2xvdycsICdtZWRpdW0nLCAnaGlnaCcsICd4aGlnaCcsICdtYXgnXS5pbmNsdWRlcyhpbnB1dC5yZWFzb25pbmdFZmZvcnQpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignVW5zdXBwb3J0ZWQgcmVhc29uaW5nIGVmZm9ydC4nKTtcbiAgfVxuICBjb25zdCBmb3JtYXQgPSBpbnB1dC5yZXNwb25zZUZvcm1hdDtcbiAgaWYoZm9ybWF0ICE9PSB1bmRlZmluZWQgJiYgKCFmb3JtYXQgfHwgIVsndGV4dCcsICdqc29uX29iamVjdCcsICdqc29uX3NjaGVtYSddLmluY2x1ZGVzKGZvcm1hdC50eXBlKSB8fCAoZm9ybWF0LnR5cGUgPT09ICdqc29uX3NjaGVtYScgJiYgKFxuICAgIHR5cGVvZiBmb3JtYXQubmFtZSAhPT0gJ3N0cmluZycgfHwgIS9eW2EtekEtWjAtOV8tXXsxLDY0fSQvLnRlc3QoZm9ybWF0Lm5hbWUpIHx8ICFmb3JtYXQuc2NoZW1hIHx8IHR5cGVvZiBmb3JtYXQuc2NoZW1hICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KGZvcm1hdC5zY2hlbWEpXG4gICAgfHwgKGZvcm1hdC5zdHJpY3QgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgZm9ybWF0LnN0cmljdCAhPT0gJ2Jvb2xlYW4nKVxuICApKSkpIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdJbnZhbGlkIHJlc3BvbnNlIGZvcm1hdC4gSlNPTiBzY2hlbWFzIHJlcXVpcmUgYSBuYW1lIGFuZCBzY2hlbWEgb2JqZWN0LicpO1xuICB9XG4gIGlmKFsnZ2VtaW5pJywgJ29sbGFtYSddLmluY2x1ZGVzKGlucHV0LnByb3ZpZGVyKSAmJiBmb3JtYXQgIT09IHVuZGVmaW5lZCAmJiAoZm9ybWF0LnR5cGUgPT09ICdqc29uX3NjaGVtYScgfHwgaW5wdXQubW9kYWxpdHkgPT09ICdpbWFnZScpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignVGhpcyBwcm92aWRlciBzdXBwb3J0cyB0ZXh0IG9yIGpzb25fb2JqZWN0IGZvciB0ZXh0IGdlbmVyYXRpb24gb25seS4nKTtcbiAgfVxuICBpZihpbnB1dC50b3BQICE9PSB1bmRlZmluZWQgJiYgKGlucHV0LnByb3ZpZGVyICE9PSAnb2xsYW1hJyB8fCBpbnB1dC5tb2RhbGl0eSA9PT0gJ2ltYWdlJyB8fCAhTnVtYmVyLmlzRmluaXRlKGlucHV0LnRvcFApIHx8IGlucHV0LnRvcFAgPCAwIHx8IGlucHV0LnRvcFAgPiAxKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ3RvcFAgcmVxdWlyZXMgYW4gT2xsYW1hIHRleHQgcmVxdWVzdCBhbmQgYSBmaW5pdGUgdmFsdWUgYmV0d2VlbiAwIGFuZCAxLicpO1xuICB9XG4gIGlmKGlucHV0LnRlbXBlcmF0dXJlICE9PSB1bmRlZmluZWQgJiYgKCFbJ2dlbWluaScsICdvbGxhbWEnXS5pbmNsdWRlcyhpbnB1dC5wcm92aWRlcikgfHwgaW5wdXQubW9kYWxpdHkgPT09ICdpbWFnZScgfHwgIU51bWJlci5pc0Zpbml0ZShpbnB1dC50ZW1wZXJhdHVyZSkgfHwgaW5wdXQudGVtcGVyYXR1cmUgPCAwIHx8IChpbnB1dC5wcm92aWRlciA9PT0gJ2dlbWluaScgJiYgaW5wdXQudGVtcGVyYXR1cmUgPiAyKSkpIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCd0ZW1wZXJhdHVyZSByZXF1aXJlcyBhIG5vbm5lZ2F0aXZlIGZpbml0ZSB2YWx1ZSBmb3IgT2xsYW1hIHRleHQgb3IgYSB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDIgZm9yIEdlbWluaSB0ZXh0LicpO1xuICB9XG4gIGlmKGlucHV0Lm1heFRva2VucyAhPT0gdW5kZWZpbmVkICYmICghTnVtYmVyLmlzSW50ZWdlcihpbnB1dC5tYXhUb2tlbnMpIHx8IGlucHV0Lm1heFRva2VucyA8IDEpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignbWF4VG9rZW5zIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLicpO1xuICB9XG4gIGlmKGlucHV0LnByb3ZpZGVyICE9PSAnZ2VtaW5pJyAmJiAoaW5wdXQuaW1hZ2VzPy5sZW5ndGggfHwgaW5wdXQubW9kYWxpdHkgPT09ICdpbWFnZScgfHwgaW5wdXQuc2VhcmNoKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ1RoaXMgcHJvdmlkZXIgb3BlcmF0aW9uIHN1cHBvcnRzIHRleHQgaW5wdXQgYW5kIG91dHB1dCBvbmx5LicpO1xuICB9XG4gIGlmKGlucHV0LnByb3ZpZGVyID09PSAnb2xsYW1hJykgcmV0dXJuIGdlbmVyYXRlT2xsYW1hQ29udGVudChpbnB1dCwgY29uZmlnKTtcbiAgY29uc3Qge3Byb21wdCwgaW1hZ2VzID0gW119ID0gaW5wdXQ7XG4gIGlmKGlucHV0LnByb3ZpZGVyID09PSAnY2xhdWRlJykge1xuICAgIGlmKCFjb25maWcuY2xhdWRlS2V5KSB7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdDbGF1ZGUgaXMgbm90IGNvbmZpZ3VyZWQgb24gdGhpcyBzZXJ2ZXIuJyk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcG9zdCgnaHR0cHM6Ly9hcGkuYW50aHJvcGljLmNvbS92MS9tZXNzYWdlcycsIHtcbiAgICAgIG1heF90b2tlbnM6IGlucHV0Lm1heFRva2VucyA/PyA0MDk2LFxuICAgICAgbWVzc2FnZXM6IFt7Y29udGVudDogcHJvbXB0LCByb2xlOiAndXNlcid9XSxcbiAgICAgIG1vZGVsOiBpbnB1dC5tb2RlbCB8fCBjb25maWcuY2xhdWRlTW9kZWwgfHwgJ2NsYXVkZS1zb25uZXQtNScsXG4gICAgICBzeXN0ZW06IGlucHV0LnN5c3RlbVxuICAgIH0sIHtjYWNoZTogZmFsc2UsIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHsnYW50aHJvcGljLXZlcnNpb24nOiAnMjAyMy0wNi0wMScsICd4LWFwaS1rZXknOiBjb25maWcuY2xhdWRlS2V5fSksIHRpbWVvdXQ6IGlucHV0LnRpbWVvdXRNcyA/PyAxMjBfMDAwfSkgYXMge1xuICAgICAgY29udGVudD86IHt0ZXh0Pzogc3RyaW5nOyB0eXBlPzogc3RyaW5nfVtdO1xuICAgICAgZXJyb3I/OiB7dHlwZT86IHN0cmluZ307XG4gICAgICBzdG9wX3JlYXNvbj86IHN0cmluZztcbiAgICAgIHR5cGU/OiBzdHJpbmc7XG4gICAgfTtcbiAgICBpZihyZXNwb25zZS5lcnJvciAmJiBbJ2F1dGhlbnRpY2F0aW9uX2Vycm9yJywgJ2ludmFsaWRfcmVxdWVzdF9lcnJvcicsICdub3RfZm91bmRfZXJyb3InLCAncGVybWlzc2lvbl9lcnJvciddLmluY2x1ZGVzKHJlc3BvbnNlLmVycm9yLnR5cGUgfHwgJycpKSB7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdDbGF1ZGUgcmVqZWN0ZWQgdGhlIHJlcXVlc3QuIENoZWNrIHRoZSBtb2RlbCBhbmQgYWNjb3VudCBhY2Nlc3MuJyk7XG4gICAgfVxuICAgIGNvbnN0IHRleHQgPSByZXNwb25zZS5jb250ZW50Py5maWx0ZXIoKHBhcnQpID0+IHBhcnQudHlwZSA9PT0gJ3RleHQnKS5tYXAoKHBhcnQpID0+IHBhcnQudGV4dCB8fCAnJykuam9pbignXFxuJykudHJpbSgpO1xuICAgIGlmKHJlc3BvbnNlLmVycm9yIHx8IHJlc3BvbnNlLnR5cGUgIT09ICdtZXNzYWdlJyB8fCByZXNwb25zZS5zdG9wX3JlYXNvbiAhPT0gJ2VuZF90dXJuJyB8fCAhdGV4dCkge1xuICAgICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcignQ2xhdWRlIHJlc3BvbnNlIGNvdWxkIG5vdCBiZSBjb25maXJtZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiB7c291cmNlczogW10sIHRleHR9O1xuICB9XG4gIGlmKGlucHV0LnByb3ZpZGVyID09PSAnb3BlbmFpJykge1xuICAgIGlmKCFjb25maWcub3BlbmFpS2V5KSB7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdPcGVuQUkgaXMgbm90IGNvbmZpZ3VyZWQgb24gdGhpcyBzZXJ2ZXIuJyk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcG9zdCgnaHR0cHM6Ly9hcGkub3BlbmFpLmNvbS92MS9yZXNwb25zZXMnLCB7XG4gICAgICBpbnB1dDogaW5wdXQubWVzc2FnZXM/Lm1hcCgobWVzc2FnZSkgPT4gKHtjb250ZW50OiB0eXBlb2YgbWVzc2FnZS5jb250ZW50ID09PSAnc3RyaW5nJyA/IG1lc3NhZ2UuY29udGVudCA6IG1lc3NhZ2UuY29udGVudC5tYXAoKHBhcnQpID0+IHBhcnQudHlwZSA9PT0gJ3RleHQnXG4gICAgICAgID8ge3RleHQ6IHBhcnQudGV4dCwgdHlwZTogJ2lucHV0X3RleHQnfSA6IHtkZXRhaWw6IHBhcnQuZGV0YWlsID8/ICdhdXRvJywgaW1hZ2VfdXJsOiBwYXJ0LnVybCwgdHlwZTogJ2lucHV0X2ltYWdlJ30pLCByb2xlOiBtZXNzYWdlLnJvbGUgPT09ICdzeXN0ZW0nID8gJ2RldmVsb3BlcicgOiBtZXNzYWdlLnJvbGV9KSkgPz8gcHJvbXB0LFxuICAgICAgaW5zdHJ1Y3Rpb25zOiBpbnB1dC5zeXN0ZW0sXG4gICAgICBtYXhfb3V0cHV0X3Rva2VuczogaW5wdXQubWF4VG9rZW5zID8/IDQwOTYsXG4gICAgICBtb2RlbDogaW5wdXQubW9kZWwgfHwgY29uZmlnLm9wZW5haU1vZGVsIHx8ICdncHQtNi1hc3RyYScsXG4gICAgICAuLi4oaW5wdXQucmVhc29uaW5nRWZmb3J0ID8ge3JlYXNvbmluZzoge2VmZm9ydDogaW5wdXQucmVhc29uaW5nRWZmb3J0fX0gOiB7fSksXG4gICAgICBzdG9yZTogZmFsc2UsXG4gICAgICAuLi4oZm9ybWF0ID8ge3RleHQ6IHtmb3JtYXR9fSA6IHt9KSxcbiAgICAgIHRydW5jYXRpb246ICdkaXNhYmxlZCdcbiAgICB9LCB7Y2FjaGU6IGZhbHNlLCBoZWFkZXJzOiBuZXcgSGVhZGVycyh7QXV0aG9yaXphdGlvbjogYEJlYXJlciAke2NvbmZpZy5vcGVuYWlLZXl9YH0pLCB0aW1lb3V0OiBpbnB1dC50aW1lb3V0TXMgPz8gMTIwXzAwMH0pIGFzIHtcbiAgICAgIGVycm9yPzoge2NvZGU/OiBzdHJpbmc7IHR5cGU/OiBzdHJpbmd9O1xuICAgICAgb3V0cHV0Pzoge2NvbnRlbnQ/OiB7dGV4dD86IHN0cmluZzsgdHlwZT86IHN0cmluZ31bXTsgc3RhdHVzPzogc3RyaW5nOyB0eXBlPzogc3RyaW5nfVtdO1xuICAgICAgc3RhdHVzPzogc3RyaW5nO1xuICAgIH07XG4gICAgaWYocmVzcG9uc2UuZXJyb3IgJiYgWydpbnZhbGlkX3JlcXVlc3RfZXJyb3InLCAnYXV0aGVudGljYXRpb25fZXJyb3InLCAncGVybWlzc2lvbl9lcnJvciddLmluY2x1ZGVzKHJlc3BvbnNlLmVycm9yLnR5cGUgfHwgJycpKSB7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdPcGVuQUkgcmVqZWN0ZWQgdGhlIHJlcXVlc3QuIENoZWNrIHRoZSBtb2RlbCBhbmQgYWNjb3VudCBhY2Nlc3MuJyk7XG4gICAgfVxuICAgIGlmKHJlc3BvbnNlLmVycm9yIHx8IHJlc3BvbnNlLnN0YXR1cyAhPT0gJ2NvbXBsZXRlZCcgfHwgcmVzcG9uc2Uub3V0cHV0Py5zb21lKChpdGVtKSA9PiBpdGVtLnN0YXR1cyA9PT0gJ2luY29tcGxldGUnKSkge1xuICAgICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcignT3BlbkFJIHJlc3BvbnNlIGNvdWxkIG5vdCBiZSBjb25maXJtZWQ6IGdlbmVyYXRpb24gZGlkIG5vdCBjb21wbGV0ZS4nKTtcbiAgICB9XG4gICAgaWYocmVzcG9uc2Uub3V0cHV0Py5zb21lKChpdGVtKSA9PiBpdGVtLmNvbnRlbnQ/LnNvbWUoKHBhcnQpID0+IHBhcnQudHlwZSA9PT0gJ3JlZnVzYWwnKSkpIHtcbiAgICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3IoJ09wZW5BSSBkZWNsaW5lZCB0aGUgcmVxdWVzdC4nKTtcbiAgICB9XG4gICAgaWYocmVzcG9uc2Uub3V0cHV0Py5zb21lKChpdGVtKSA9PiBpdGVtLnR5cGUgJiYgIVsnbWVzc2FnZScsICdyZWFzb25pbmcnXS5pbmNsdWRlcyhpdGVtLnR5cGUpKSkge1xuICAgICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcignT3BlbkFJIHJldHVybmVkIGFuIHVuc3VwcG9ydGVkIG91dHB1dCBpdGVtLicpO1xuICAgIH1cbiAgICBjb25zdCB0ZXh0ID0gcmVzcG9uc2Uub3V0cHV0Py5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0udHlwZSA9PT0gJ21lc3NhZ2UnKS5mbGF0TWFwKChpdGVtKSA9PiBpdGVtLmNvbnRlbnQgfHwgW10pXG4gICAgICAuZmlsdGVyKChwYXJ0KSA9PiBwYXJ0LnR5cGUgPT09ICdvdXRwdXRfdGV4dCcpLm1hcCgocGFydCkgPT4gcGFydC50ZXh0IHx8ICcnKS5qb2luKCcnKS50cmltKCk7XG4gICAgaWYoIXRleHQpIHtcbiAgICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3IoJ09wZW5BSSByZXR1cm5lZCBlbXB0eSBvdXRwdXQuJyk7XG4gICAgfVxuICAgIHJldHVybiB7c291cmNlczogW10sIHRleHR9O1xuICB9XG4gIGlmKCFjb25maWcuZ2VtaW5pS2V5KSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignR2VtaW5pIGlzIG5vdCBjb25maWd1cmVkIG9uIHRoaXMgc2VydmVyLicpO1xuICB9XG4gIGNvbnN0IHBhcnRzOiB1bmtub3duW10gPSBbe3RleHQ6IHByb21wdH0sIC4uLmltYWdlcy5tYXAoKGltYWdlKSA9PiAoe2lubGluZURhdGE6IHtkYXRhOiBpbWFnZS5ieXRlcy50b1N0cmluZygnYmFzZTY0JyksIG1pbWVUeXBlOiBpbWFnZS5taW1lfX0pKV07XG4gIGNvbnN0IG1vZGVsID0gaW5wdXQubW9kZWwgfHwgKGlucHV0Lm1vZGFsaXR5ID09PSAnaW1hZ2UnID8gY29uZmlnLmdlbWluaUltYWdlTW9kZWwgfHwgJ2dlbWluaS0zLjEtZmxhc2gtaW1hZ2UnIDogY29uZmlnLmdlbWluaU1vZGVsIHx8ICdnZW1pbmktMy44LWZsYXNoJyk7XG4gIGlmKCEvXlthLXpBLVowLTkuXy1dKyQvLnRlc3QobW9kZWwpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignSW52YWxpZCBHZW1pbmkgbW9kZWwgY29uZmlndXJhdGlvbi4nKTtcbiAgfVxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHBvc3QoYGh0dHBzOi8vZ2VuZXJhdGl2ZWxhbmd1YWdlLmdvb2dsZWFwaXMuY29tL3YxYmV0YS9tb2RlbHMvJHttb2RlbH06Z2VuZXJhdGVDb250ZW50YCwge1xuICAgIGNvbnRlbnRzOiBbe3BhcnRzLCByb2xlOiAndXNlcid9XSxcbiAgICAuLi4oaW5wdXQuc3lzdGVtID8ge3N5c3RlbUluc3RydWN0aW9uOiB7cGFydHM6IFt7dGV4dDogaW5wdXQuc3lzdGVtfV19fSA6IHt9KSxcbiAgICBnZW5lcmF0aW9uQ29uZmlnOiBpbnB1dC5tb2RhbGl0eSA9PT0gJ2ltYWdlJyA/IHsuLi4oaW5wdXQuYXNwZWN0UmF0aW8gPyB7aW1hZ2VDb25maWc6IHthc3BlY3RSYXRpbzogaW5wdXQuYXNwZWN0UmF0aW99fSA6IHt9KSwgcmVzcG9uc2VNb2RhbGl0aWVzOiBbJ1RFWFQnLCAnSU1BR0UnXX0gOiB7XG4gICAgICBtYXhPdXRwdXRUb2tlbnM6IGlucHV0Lm1heFRva2VucyA/PyA0MDk2LFxuICAgICAgLi4uKGZvcm1hdCA/IHtyZXNwb25zZU1pbWVUeXBlOiBmb3JtYXQudHlwZSA9PT0gJ2pzb25fb2JqZWN0JyA/ICdhcHBsaWNhdGlvbi9qc29uJyA6ICd0ZXh0L3BsYWluJ30gOiB7fSksXG4gICAgICAuLi4oaW5wdXQudGVtcGVyYXR1cmUgIT09IHVuZGVmaW5lZCA/IHt0ZW1wZXJhdHVyZTogaW5wdXQudGVtcGVyYXR1cmV9IDoge30pXG4gICAgfSxcbiAgICAuLi4oaW5wdXQuc2VhcmNoID8ge3Rvb2xzOiBbe2dvb2dsZVNlYXJjaDoge319XX0gOiB7fSlcbiAgfSwge2NhY2hlOiBmYWxzZSwgaGVhZGVyczogbmV3IEhlYWRlcnMoeyd4LWdvb2ctYXBpLWtleSc6IGNvbmZpZy5nZW1pbmlLZXl9KSwgdGltZW91dDogaW5wdXQudGltZW91dE1zID8/IDEyMF8wMDB9KSBhcyBHZW1pbmlSZXNwb25zZTtcbiAgaWYocmVzcG9uc2UuZXJyb3IgJiYgWzQwMCwgNDAxLCA0MDMsIDQwNF0uaW5jbHVkZXMocmVzcG9uc2UuZXJyb3IuY29kZSB8fCAwKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ0dlbWluaSByZWplY3RlZCB0aGUgcmVxdWVzdC4gQ2hlY2sgdGhlIHJlZmVyZW5jZSBmb3JtYXQgYW5kIG1vZGVsIGFjY2Vzcy4nKTtcbiAgfVxuICBpZihyZXNwb25zZS5wcm9tcHRGZWVkYmFjaz8uYmxvY2tSZWFzb24gfHwgcmVzcG9uc2UuZXJyb3IgfHwgIXJlc3BvbnNlLmNhbmRpZGF0ZXM/Lmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3IoJ0dlbWluaSByZXNwb25zZSBjb3VsZCBub3QgYmUgY29uZmlybWVkLicpO1xuICB9XG4gIGNvbnN0IGNhbmRpZGF0ZSA9IHJlc3BvbnNlLmNhbmRpZGF0ZXNbMF0hO1xuICBpZihjYW5kaWRhdGUuZmluaXNoUmVhc29uICE9PSAnU1RPUCcpIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZXNwb25zZUVycm9yKCdHZW1pbmkgcmVzcG9uc2UgY291bGQgbm90IGJlIGNvbmZpcm1lZDogZ2VuZXJhdGlvbiBkaWQgbm90IGNvbXBsZXRlLicpO1xuICB9XG4gIGNvbnN0IG91dHB1dCA9IChjYW5kaWRhdGUuY29udGVudD8ucGFydHMgfHwgW10pLmZpbHRlcigocGFydCkgPT4gIXBhcnQudGhvdWdodCk7XG4gIGNvbnN0IGlubGluZSA9IG91dHB1dC5maW5kKChwYXJ0KSA9PiBwYXJ0LmlubGluZURhdGEpPy5pbmxpbmVEYXRhO1xuICBsZXQgaW1hZ2U6IEdlbmVyYXRlZENvbnRlbnRbJ2ltYWdlJ107XG4gIGlmKGlubGluZSAmJiBbJ2ltYWdlL3BuZycsICdpbWFnZS9qcGVnJ10uaW5jbHVkZXMoaW5saW5lLm1pbWVUeXBlKSkge1xuICAgIGNvbnN0IGJ5dGVzID0gQnVmZmVyLmZyb20oaW5saW5lLmRhdGEsICdiYXNlNjQnKTtcbiAgICBpZighYnl0ZXMubGVuZ3RoIHx8IGJ5dGVzLmxlbmd0aCA+IDIwICogMTAyNCAqIDEwMjQpIHtcbiAgICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3IoJ0ludmFsaWQgaW1hZ2Ugb3V0cHV0LicpO1xuICAgIH1cbiAgICBpbWFnZSA9IHtieXRlcywgbWltZTogaW5saW5lLm1pbWVUeXBlIGFzICdpbWFnZS9wbmcnIHwgJ2ltYWdlL2pwZWcnfTtcbiAgfVxuICBjb25zdCB0ZXh0ID0gb3V0cHV0Lm1hcCgocGFydCkgPT4gcGFydC50ZXh0IHx8ICcnKS5qb2luKCdcXG4nKS50cmltKCk7XG4gIGlmKGlucHV0Lm1vZGFsaXR5ID09PSAnaW1hZ2UnID8gIWltYWdlIDogIXRleHQpIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZXNwb25zZUVycm9yKCdUaGUgcmVxdWVzdGVkIG91dHB1dCB3YXMgbm90IHJldHVybmVkLicpO1xuICB9XG4gIGNvbnN0IHNvdXJjZXMgPSAoY2FuZGlkYXRlLmdyb3VuZGluZ01ldGFkYXRhPy5ncm91bmRpbmdDaHVua3MgfHwgW10pLmZsYXRNYXAoKHt3ZWJ9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwod2ViPy51cmkgfHwgJycpO1xuICAgICAgcmV0dXJuIHVybC5wcm90b2NvbCA9PT0gJ2h0dHBzOicgPyBbe3RpdGxlOiB3ZWI/LnRpdGxlIHx8IHVybC5ob3N0bmFtZSwgdXJsOiB1cmwuaHJlZn1dIDogW107XG4gICAgfSBjYXRjaHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGltYWdlLCBzZWFyY2hTdWdnZXN0aW9uc0h0bWw6IGNhbmRpZGF0ZS5ncm91bmRpbmdNZXRhZGF0YT8uc2VhcmNoRW50cnlQb2ludD8ucmVuZGVyZWRDb250ZW50LCBzb3VyY2VzLCB0ZXh0XG4gIH07XG59O1xuIl0sIm5hbWVzIjpbImdlbmVyYXRlT2xsYW1hQ29udGVudCIsIkNvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvciIsIkNvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvciIsInBvc3QiLCJDb25maWciLCJ2YWxpZE1lc3NhZ2VDb250ZW50IiwibWVzc2FnZSIsImNvbnRlbnQiLCJ0cmltIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwiZXZlcnkiLCJwYXJ0IiwidHlwZSIsInRleHQiLCJyb2xlIiwidXJsIiwidGVzdCIsImRldGFpbCIsInVuZGVmaW5lZCIsImluY2x1ZGVzIiwiZ2VuZXJhdGVDb250ZW50IiwiaW5wdXQiLCJjb25maWciLCJnZXQiLCJwcm92aWRlciIsIm1lc3NhZ2VzIiwicHJvbXB0Iiwic29tZSIsInJlYXNvbmluZ0VmZm9ydCIsInJlc3BvbnNlRm9ybWF0IiwidGltZW91dE1zIiwiTnVtYmVyIiwiaXNJbnRlZ2VyIiwiZm9ybWF0IiwibmFtZSIsInNjaGVtYSIsInN0cmljdCIsIm1vZGFsaXR5IiwidG9wUCIsImlzRmluaXRlIiwidGVtcGVyYXR1cmUiLCJtYXhUb2tlbnMiLCJpbWFnZXMiLCJzZWFyY2giLCJjbGF1ZGVLZXkiLCJyZXNwb25zZSIsIm1heF90b2tlbnMiLCJtb2RlbCIsImNsYXVkZU1vZGVsIiwic3lzdGVtIiwiY2FjaGUiLCJoZWFkZXJzIiwiSGVhZGVycyIsInRpbWVvdXQiLCJlcnJvciIsImZpbHRlciIsIm1hcCIsImpvaW4iLCJzdG9wX3JlYXNvbiIsInNvdXJjZXMiLCJvcGVuYWlLZXkiLCJpbWFnZV91cmwiLCJpbnN0cnVjdGlvbnMiLCJtYXhfb3V0cHV0X3Rva2VucyIsIm9wZW5haU1vZGVsIiwicmVhc29uaW5nIiwiZWZmb3J0Iiwic3RvcmUiLCJ0cnVuY2F0aW9uIiwiQXV0aG9yaXphdGlvbiIsInN0YXR1cyIsIm91dHB1dCIsIml0ZW0iLCJmbGF0TWFwIiwiZ2VtaW5pS2V5IiwicGFydHMiLCJpbWFnZSIsImlubGluZURhdGEiLCJkYXRhIiwiYnl0ZXMiLCJ0b1N0cmluZyIsIm1pbWVUeXBlIiwibWltZSIsImdlbWluaUltYWdlTW9kZWwiLCJnZW1pbmlNb2RlbCIsImNvbnRlbnRzIiwic3lzdGVtSW5zdHJ1Y3Rpb24iLCJnZW5lcmF0aW9uQ29uZmlnIiwiYXNwZWN0UmF0aW8iLCJpbWFnZUNvbmZpZyIsInJlc3BvbnNlTW9kYWxpdGllcyIsIm1heE91dHB1dFRva2VucyIsInJlc3BvbnNlTWltZVR5cGUiLCJ0b29scyIsImdvb2dsZVNlYXJjaCIsImNvZGUiLCJwcm9tcHRGZWVkYmFjayIsImJsb2NrUmVhc29uIiwiY2FuZGlkYXRlcyIsImNhbmRpZGF0ZSIsImZpbmlzaFJlYXNvbiIsInRob3VnaHQiLCJpbmxpbmUiLCJmaW5kIiwiQnVmZmVyIiwiZnJvbSIsImdyb3VuZGluZ01ldGFkYXRhIiwiZ3JvdW5kaW5nQ2h1bmtzIiwid2ViIiwiVVJMIiwidXJpIiwicHJvdG9jb2wiLCJ0aXRsZSIsImhvc3RuYW1lIiwiaHJlZiIsInNlYXJjaFN1Z2dlc3Rpb25zSHRtbCIsInNlYXJjaEVudHJ5UG9pbnQiLCJyZW5kZXJlZENvbnRlbnQiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVFBLHFCQUFxQixRQUFPLHdCQUF3QjtBQUM1RCxTQUFRQyw4QkFBOEIsRUFBRUMsOEJBQThCLFFBQU8sK0JBQStCO0FBQzVHLFNBQVFELDhCQUE4QixFQUFFQyw4QkFBOEIsUUFBTywrQkFBK0I7QUFDNUcsU0FBUUMsSUFBSSxRQUFPLG9CQUFvQjtBQUV2QyxTQUFRQyxNQUFNLFFBQU8sZUFBZTtBQW1FcEMsTUFBTUMsc0JBQXNCLENBQUNDO0lBQzNCLElBQUcsT0FBT0EsUUFBUUMsT0FBTyxLQUFLLFVBQVUsT0FBTyxDQUFDLENBQUNELFFBQVFDLE9BQU8sQ0FBQ0MsSUFBSTtJQUNyRSxPQUFPQyxNQUFNQyxPQUFPLENBQUNKLFFBQVFDLE9BQU8sS0FBS0QsUUFBUUMsT0FBTyxDQUFDSSxNQUFNLEdBQUcsS0FBS0wsUUFBUUMsT0FBTyxDQUFDSyxLQUFLLENBQUMsQ0FBQ0M7UUFDNUYsSUFBRyxDQUFDQSxNQUFNLE9BQU87UUFDakIsSUFBR0Es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
315
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvYWN0aW9ucy9jb250ZW50R2VuZXJhdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2dlbmVyYXRlT2xsYW1hQ29udGVudH0gZnJvbSAnLi9vbGxhbWFHZW5lcmF0aW9uLmpzJztcbmltcG9ydCB7Q29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yLCBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3J9IGZyb20gJy4vY29udGVudEdlbmVyYXRpb25FcnJvcnMuanMnO1xuZXhwb3J0IHtDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IsIENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcn0gZnJvbSAnLi9jb250ZW50R2VuZXJhdGlvbkVycm9ycy5qcyc7XG5pbXBvcnQge3Bvc3R9IGZyb20gJ0BubGFicy9yaXAtaHVudGVyJztcblxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudEdlbmVyYXRpb25Db25maWcge1xuICBjbGF1ZGVLZXk/OiBzdHJpbmc7XG4gIGNsYXVkZU1vZGVsPzogc3RyaW5nO1xuICBnZW1pbmlJbWFnZU1vZGVsPzogc3RyaW5nO1xuICBnZW1pbmlLZXk/OiBzdHJpbmc7XG4gIGdlbWluaU1vZGVsPzogc3RyaW5nO1xuICBvbGxhbWE/OiB7ZW5kcG9pbnQ6IHN0cmluZzsgcHJvdG9jb2w6ICdnZW5lcmF0ZScgfCAnY2hhdCcgfCAnb3BlbmFpLWNoYXQnfTtcbiAgb3BlbmFpS2V5Pzogc3RyaW5nO1xuICBvcGVuYWlNb2RlbD86IHN0cmluZztcbn1cbmV4cG9ydCB0eXBlIENvbnRlbnRHZW5lcmF0aW9uUGFydCA9IHt0ZXh0OiBzdHJpbmc7IHR5cGU6ICd0ZXh0J30gfCB7XG4gIGRldGFpbD86ICdhdXRvJyB8ICdoaWdoJyB8ICdsb3cnO1xuICB0eXBlOiAnaW1hZ2UnO1xuICB1cmw6IHN0cmluZztcbn07XG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRHZW5lcmF0aW9uTWVzc2FnZSB7XG4gIGNvbnRlbnQ6IHN0cmluZyB8IENvbnRlbnRHZW5lcmF0aW9uUGFydFtdO1xuICByb2xlOiAnYXNzaXN0YW50JyB8ICdkZXZlbG9wZXInIHwgJ3N5c3RlbScgfCAndXNlcic7XG59XG5leHBvcnQgdHlwZSBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRm9ybWF0ID0ge3R5cGU6ICdqc29uX29iamVjdCcgfCAndGV4dCd9IHwge1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBzY2hlbWE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBzdHJpY3Q/OiBib29sZWFuO1xuICB0eXBlOiAnanNvbl9zY2hlbWEnO1xufTtcbmV4cG9ydCB0eXBlIENvbnRlbnRHZW5lcmF0aW9uUmVhc29uaW5nRWZmb3J0ID0gJ25vbmUnIHwgJ21pbmltYWwnIHwgJ2xvdycgfCAnbWVkaXVtJyB8ICdoaWdoJyB8ICd4aGlnaCcgfCAnbWF4JztcblxuZXhwb3J0IGludGVyZmFjZSBDb250ZW50R2VuZXJhdGlvbklucHV0IHtcbiAgYXNwZWN0UmF0aW8/OiBzdHJpbmc7XG4gIGltYWdlcz86IHtieXRlczogQnVmZmVyOyBtaW1lOiBzdHJpbmd9W107XG4gIG1heFRva2Vucz86IG51bWJlcjtcbiAgbWVzc2FnZXM/OiBDb250ZW50R2VuZXJhdGlvbk1lc3NhZ2VbXTtcbiAgbW9kYWxpdHk/OiAnaW1hZ2UnIHwgJ3RleHQnO1xuICBtb2RlbD86IHN0cmluZztcbiAgcHJvbXB0Pzogc3RyaW5nO1xuICBwcm92aWRlcjogJ2NsYXVkZScgfCAnZ2VtaW5pJyB8ICdvbGxhbWEnIHwgJ29wZW5haSc7XG4gIHJlYXNvbmluZ0VmZm9ydD86IENvbnRlbnRHZW5lcmF0aW9uUmVhc29uaW5nRWZmb3J0O1xuICByZXNwb25zZUZvcm1hdD86IENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VGb3JtYXQ7XG4gIHNlYXJjaD86IGJvb2xlYW47XG4gIHN5c3RlbT86IHN0cmluZztcbiAgdGVtcGVyYXR1cmU/OiBudW1iZXI7XG4gIHRpbWVvdXRNcz86IG51bWJlcjtcbiAgdG9wUD86IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhdGVkQ29udGVudCB7XG4gIGltYWdlPzoge2J5dGVzOiBCdWZmZXI7IG1pbWU6ICdpbWFnZS9qcGVnJyB8ICdpbWFnZS9wbmcnfTtcbiAgc2VhcmNoU3VnZ2VzdGlvbnNIdG1sPzogc3RyaW5nO1xuICBzb3VyY2VzOiB7dGl0bGU6IHN0cmluZzsgdXJsOiBzdHJpbmd9W107XG4gIHRleHQ6IHN0cmluZztcbn1cbmludGVyZmFjZSBHZW1pbmlQYXJ0IHtpbmxpbmVEYXRhPzoge2RhdGE6IHN0cmluZzsgbWltZVR5cGU6IHN0cmluZ307IHRleHQ/OiBzdHJpbmc7IHRob3VnaHQ/OiBib29sZWFufVxuaW50ZXJmYWNlIEdlbWluaVJlc3BvbnNlIHtcbiAgY2FuZGlkYXRlcz86IHtcbiAgICBjb250ZW50Pzoge3BhcnRzPzogR2VtaW5pUGFydFtdfTtcbiAgICBmaW5pc2hSZWFzb24/OiBzdHJpbmc7XG4gICAgZ3JvdW5kaW5nTWV0YWRhdGE/OiB7XG4gICAgICBncm91bmRpbmdDaHVua3M/OiB7d2ViPzoge3RpdGxlPzogc3RyaW5nOyB1cmk/OiBzdHJpbmd9fVtdO1xuICAgICAgc2VhcmNoRW50cnlQb2ludD86IHtyZW5kZXJlZENvbnRlbnQ/OiBzdHJpbmd9O1xuICAgIH07XG4gIH1bXTtcbiAgZXJyb3I/OiB7Y29kZT86IG51bWJlcn07XG4gIHByb21wdEZlZWRiYWNrPzoge2Jsb2NrUmVhc29uPzogc3RyaW5nfTtcbn1cblxuY29uc3QgdmFsaWRNZXNzYWdlQ29udGVudCA9IChtZXNzYWdlOiBDb250ZW50R2VuZXJhdGlvbk1lc3NhZ2UpOiBib29sZWFuID0+IHtcbiAgaWYodHlwZW9mIG1lc3NhZ2UuY29udGVudCA9PT0gJ3N0cmluZycpIHJldHVybiAhIW1lc3NhZ2UuY29udGVudC50cmltKCk7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KG1lc3NhZ2UuY29udGVudCkgJiYgbWVzc2FnZS5jb250ZW50Lmxlbmd0aCA+IDAgJiYgbWVzc2FnZS5jb250ZW50LmV2ZXJ5KChwYXJ0KSA9PiB7XG4gICAgaWYoIXBhcnQpIHJldHVybiBmYWxzZTtcbiAgICBpZihwYXJ0LnR5cGUgPT09ICd0ZXh0JykgcmV0dXJuIHR5cGVvZiBwYXJ0LnRleHQgPT09ICdzdHJpbmcnICYmICEhcGFydC50ZXh0LnRyaW0oKTtcbiAgICByZXR1cm4gcGFydC50eXBlID09PSAnaW1hZ2UnICYmIG1lc3NhZ2Uucm9sZSA9PT0gJ3VzZXInICYmIHR5cGVvZiBwYXJ0LnVybCA9PT0gJ3N0cmluZydcbiAgICAgICYmIC9eKGh0dHBzPzpcXC9cXC9bXlxcc10rfGRhdGE6aW1hZ2VcXC8ocG5nfGpwZWd8d2VicHxnaWYpO2Jhc2U2NCxbQS1aYS16MC05Ky9dKz17MCwyfSkkLy50ZXN0KHBhcnQudXJsKVxuICAgICAgJiYgKHBhcnQuZGV0YWlsID09PSB1bmRlZmluZWQgfHwgWydhdXRvJywgJ2hpZ2gnLCAnbG93J10uaW5jbHVkZXMocGFydC5kZXRhaWwpKTtcbiAgfSk7XG59O1xuXG4vKiogU2luZ2xlIHN1Ym1pc3Npb24gdGhyb3VnaCBSaXAtSHVudGVyOyBjYWxsZXJzIG93biBkdXJhYmxlIGpvYnMgYW5kIHJlY29uY2lsaWF0aW9uLiAqL1xuZXhwb3J0IGNvbnN0IGdlbmVyYXRlQ29udGVudCA9IGFzeW5jIChcbiAgaW5wdXQ6IENvbnRlbnRHZW5lcmF0aW9uSW5wdXQsXG4gIGNvbmZpZzogQ29udGVudEdlbmVyYXRpb25Db25maWcgPSBDb25maWcuZ2V0PENvbnRlbnRHZW5lcmF0aW9uQ29uZmlnPignY29udGVudEdlbmVyYXRpb24nKSB8fCB7fVxuKTogUHJvbWlzZTxHZW5lcmF0ZWRDb250ZW50PiA9PiB7XG4gIGlmKCFbJ2NsYXVkZScsICdnZW1pbmknLCAnb2xsYW1hJywgJ29wZW5haSddLmluY2x1ZGVzKGlucHV0LnByb3ZpZGVyKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ0Egc3VwcG9ydGVkIHByb3ZpZGVyIGlzIHJlcXVpcmVkLicpO1xuICB9XG4gIGlmKGlucHV0Lm1lc3NhZ2VzICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZihpbnB1dC5wcm9tcHQgIT09IHVuZGVmaW5lZCB8fCAhQXJyYXkuaXNBcnJheShpbnB1dC5tZXNzYWdlcykgfHwgIWlucHV0Lm1lc3NhZ2VzLmxlbmd0aCB8fCBpbnB1dC5tZXNzYWdlcy5zb21lKChtZXNzYWdlKSA9PlxuICAgICAgIW1lc3NhZ2UgfHwgIVsnYXNzaXN0YW50JywgJ2RldmVsb3BlcicsICdzeXN0ZW0nLCAndXNlciddLmluY2x1ZGVzKG1lc3NhZ2Uucm9sZSkgfHwgIXZhbGlkTWVzc2FnZUNvbnRlbnQobWVzc2FnZSkpKSB7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdTdXBwbHkgZWl0aGVyIGEgbm9uLWVtcHR5IHByb21wdCBvciBub24tZW1wdHkgdGV4dCBtZXNzYWdlcyB3aXRoIHN1cHBvcnRlZCByb2xlcy4nKTtcbiAgICB9XG4gIH0gZWxzZSBpZih0eXBlb2YgaW5wdXQucHJvbXB0ICE9PSAnc3RyaW5nJyB8fCAhaW5wdXQucHJvbXB0LnRyaW0oKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ0Egbm9uLWVtcHR5IHByb21wdCBpcyByZXF1aXJlZC4nKTtcbiAgfVxuICBpZihpbnB1dC5wcm92aWRlciAhPT0gJ29wZW5haScgJiYgKGlucHV0Lm1lc3NhZ2VzICE9PSB1bmRlZmluZWQgfHwgaW5wdXQucmVhc29uaW5nRWZmb3J0ICE9PSB1bmRlZmluZWQgfHwgKGlucHV0LnByb3ZpZGVyID09PSAnY2xhdWRlJyAmJiBpbnB1dC5yZXNwb25zZUZvcm1hdCAhPT0gdW5kZWZpbmVkKSkpIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdNZXNzYWdlcyBhbmQgcmVhc29uaW5nIGVmZm9ydCByZXF1aXJlIE9wZW5BSTsgQ2xhdWRlIGRvZXMgbm90IHN1cHBvcnQgcmVzcG9uc2UgZm9ybWF0IG9wdGlvbnMuJyk7XG4gIH1cbiAgaWYoaW5wdXQudGltZW91dE1zICE9PSB1bmRlZmluZWQgJiYgKCFOdW1iZXIuaXNJbnRlZ2VyKGlucHV0LnRpbWVvdXRNcykgfHwgaW5wdXQudGltZW91dE1zIDwgMSB8fCBpbnB1dC50aW1lb3V0TXMgPiAyXzE0N180ODNfNjQ3KSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ3RpbWVvdXRNcyBtdXN0IGJlIGEgcG9zaXRpdmUgMzItYml0IGludGVnZXIuJyk7XG4gIH1cbiAgaWYoaW5wdXQucmVhc29uaW5nRWZmb3J0ICE9PSB1bmRlZmluZWQgJiYgIVsnbm9uZScsICdtaW5pbWFsJywgJ2xvdycsICdtZWRpdW0nLCAnaGlnaCcsICd4aGlnaCcsICdtYXgnXS5pbmNsdWRlcyhpbnB1dC5yZWFzb25pbmdFZmZvcnQpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignVW5zdXBwb3J0ZWQgcmVhc29uaW5nIGVmZm9ydC4nKTtcbiAgfVxuICBjb25zdCBmb3JtYXQgPSBpbnB1dC5yZXNwb25zZUZvcm1hdDtcbiAgaWYoZm9ybWF0ICE9PSB1bmRlZmluZWQgJiYgKCFmb3JtYXQgfHwgIVsndGV4dCcsICdqc29uX29iamVjdCcsICdqc29uX3NjaGVtYSddLmluY2x1ZGVzKGZvcm1hdC50eXBlKSB8fCAoZm9ybWF0LnR5cGUgPT09ICdqc29uX3NjaGVtYScgJiYgKFxuICAgIHR5cGVvZiBmb3JtYXQubmFtZSAhPT0gJ3N0cmluZycgfHwgIS9eW2EtekEtWjAtOV8tXXsxLDY0fSQvLnRlc3QoZm9ybWF0Lm5hbWUpIHx8ICFmb3JtYXQuc2NoZW1hIHx8IHR5cGVvZiBmb3JtYXQuc2NoZW1hICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KGZvcm1hdC5zY2hlbWEpXG4gICAgfHwgKGZvcm1hdC5zdHJpY3QgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgZm9ybWF0LnN0cmljdCAhPT0gJ2Jvb2xlYW4nKVxuICApKSkpIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdJbnZhbGlkIHJlc3BvbnNlIGZvcm1hdC4gSlNPTiBzY2hlbWFzIHJlcXVpcmUgYSBuYW1lIGFuZCBzY2hlbWEgb2JqZWN0LicpO1xuICB9XG4gIGlmKFsnZ2VtaW5pJywgJ29sbGFtYSddLmluY2x1ZGVzKGlucHV0LnByb3ZpZGVyKSAmJiBmb3JtYXQgIT09IHVuZGVmaW5lZCAmJiAoZm9ybWF0LnR5cGUgPT09ICdqc29uX3NjaGVtYScgfHwgaW5wdXQubW9kYWxpdHkgPT09ICdpbWFnZScpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignVGhpcyBwcm92aWRlciBzdXBwb3J0cyB0ZXh0IG9yIGpzb25fb2JqZWN0IGZvciB0ZXh0IGdlbmVyYXRpb24gb25seS4nKTtcbiAgfVxuICBpZihpbnB1dC50b3BQICE9PSB1bmRlZmluZWQgJiYgKGlucHV0LnByb3ZpZGVyICE9PSAnb2xsYW1hJyB8fCBpbnB1dC5tb2RhbGl0eSA9PT0gJ2ltYWdlJyB8fCAhTnVtYmVyLmlzRmluaXRlKGlucHV0LnRvcFApIHx8IGlucHV0LnRvcFAgPCAwIHx8IGlucHV0LnRvcFAgPiAxKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ3RvcFAgcmVxdWlyZXMgYW4gT2xsYW1hIHRleHQgcmVxdWVzdCBhbmQgYSBmaW5pdGUgdmFsdWUgYmV0d2VlbiAwIGFuZCAxLicpO1xuICB9XG4gIGlmKGlucHV0LnRlbXBlcmF0dXJlICE9PSB1bmRlZmluZWQgJiYgKCFbJ2dlbWluaScsICdvbGxhbWEnXS5pbmNsdWRlcyhpbnB1dC5wcm92aWRlcikgfHwgaW5wdXQubW9kYWxpdHkgPT09ICdpbWFnZScgfHwgIU51bWJlci5pc0Zpbml0ZShpbnB1dC50ZW1wZXJhdHVyZSkgfHwgaW5wdXQudGVtcGVyYXR1cmUgPCAwIHx8IChpbnB1dC5wcm92aWRlciA9PT0gJ2dlbWluaScgJiYgaW5wdXQudGVtcGVyYXR1cmUgPiAyKSkpIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCd0ZW1wZXJhdHVyZSByZXF1aXJlcyBhIG5vbm5lZ2F0aXZlIGZpbml0ZSB2YWx1ZSBmb3IgT2xsYW1hIHRleHQgb3IgYSB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDIgZm9yIEdlbWluaSB0ZXh0LicpO1xuICB9XG4gIGlmKGlucHV0Lm1heFRva2VucyAhPT0gdW5kZWZpbmVkICYmICghTnVtYmVyLmlzSW50ZWdlcihpbnB1dC5tYXhUb2tlbnMpIHx8IGlucHV0Lm1heFRva2VucyA8IDEpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignbWF4VG9rZW5zIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLicpO1xuICB9XG4gIGlmKGlucHV0LnByb3ZpZGVyICE9PSAnZ2VtaW5pJyAmJiAoKGlucHV0LnByb3ZpZGVyICE9PSAnb2xsYW1hJyAmJiBpbnB1dC5pbWFnZXM/Lmxlbmd0aCkgfHwgaW5wdXQubW9kYWxpdHkgPT09ICdpbWFnZScgfHwgaW5wdXQuc2VhcmNoKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ1RoaXMgcHJvdmlkZXIgb3BlcmF0aW9uIHN1cHBvcnRzIHRleHQgaW5wdXQgYW5kIG91dHB1dCBvbmx5LicpO1xuICB9XG4gIGlmKGlucHV0LnByb3ZpZGVyID09PSAnb2xsYW1hJykgcmV0dXJuIGdlbmVyYXRlT2xsYW1hQ29udGVudChpbnB1dCwgY29uZmlnKTtcbiAgY29uc3Qge3Byb21wdCwgaW1hZ2VzID0gW119ID0gaW5wdXQ7XG4gIGlmKGlucHV0LnByb3ZpZGVyID09PSAnY2xhdWRlJykge1xuICAgIGlmKCFjb25maWcuY2xhdWRlS2V5KSB7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdDbGF1ZGUgaXMgbm90IGNvbmZpZ3VyZWQgb24gdGhpcyBzZXJ2ZXIuJyk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcG9zdCgnaHR0cHM6Ly9hcGkuYW50aHJvcGljLmNvbS92MS9tZXNzYWdlcycsIHtcbiAgICAgIG1heF90b2tlbnM6IGlucHV0Lm1heFRva2VucyA/PyA0MDk2LFxuICAgICAgbWVzc2FnZXM6IFt7Y29udGVudDogcHJvbXB0LCByb2xlOiAndXNlcid9XSxcbiAgICAgIG1vZGVsOiBpbnB1dC5tb2RlbCB8fCBjb25maWcuY2xhdWRlTW9kZWwgfHwgJ2NsYXVkZS1zb25uZXQtNScsXG4gICAgICBzeXN0ZW06IGlucHV0LnN5c3RlbVxuICAgIH0sIHtjYWNoZTogZmFsc2UsIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHsnYW50aHJvcGljLXZlcnNpb24nOiAnMjAyMy0wNi0wMScsICd4LWFwaS1rZXknOiBjb25maWcuY2xhdWRlS2V5fSksIHRpbWVvdXQ6IGlucHV0LnRpbWVvdXRNcyA/PyAxMjBfMDAwfSkgYXMge1xuICAgICAgY29udGVudD86IHt0ZXh0Pzogc3RyaW5nOyB0eXBlPzogc3RyaW5nfVtdO1xuICAgICAgZXJyb3I/OiB7dHlwZT86IHN0cmluZ307XG4gICAgICBzdG9wX3JlYXNvbj86IHN0cmluZztcbiAgICAgIHR5cGU/OiBzdHJpbmc7XG4gICAgfTtcbiAgICBpZihyZXNwb25zZS5lcnJvciAmJiBbJ2F1dGhlbnRpY2F0aW9uX2Vycm9yJywgJ2ludmFsaWRfcmVxdWVzdF9lcnJvcicsICdub3RfZm91bmRfZXJyb3InLCAncGVybWlzc2lvbl9lcnJvciddLmluY2x1ZGVzKHJlc3BvbnNlLmVycm9yLnR5cGUgfHwgJycpKSB7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdDbGF1ZGUgcmVqZWN0ZWQgdGhlIHJlcXVlc3QuIENoZWNrIHRoZSBtb2RlbCBhbmQgYWNjb3VudCBhY2Nlc3MuJyk7XG4gICAgfVxuICAgIGNvbnN0IHRleHQgPSByZXNwb25zZS5jb250ZW50Py5maWx0ZXIoKHBhcnQpID0+IHBhcnQudHlwZSA9PT0gJ3RleHQnKS5tYXAoKHBhcnQpID0+IHBhcnQudGV4dCB8fCAnJykuam9pbignXFxuJykudHJpbSgpO1xuICAgIGlmKHJlc3BvbnNlLmVycm9yIHx8IHJlc3BvbnNlLnR5cGUgIT09ICdtZXNzYWdlJyB8fCByZXNwb25zZS5zdG9wX3JlYXNvbiAhPT0gJ2VuZF90dXJuJyB8fCAhdGV4dCkge1xuICAgICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcignQ2xhdWRlIHJlc3BvbnNlIGNvdWxkIG5vdCBiZSBjb25maXJtZWQuJyk7XG4gICAgfVxuICAgIHJldHVybiB7c291cmNlczogW10sIHRleHR9O1xuICB9XG4gIGlmKGlucHV0LnByb3ZpZGVyID09PSAnb3BlbmFpJykge1xuICAgIGlmKCFjb25maWcub3BlbmFpS2V5KSB7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdPcGVuQUkgaXMgbm90IGNvbmZpZ3VyZWQgb24gdGhpcyBzZXJ2ZXIuJyk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcG9zdCgnaHR0cHM6Ly9hcGkub3BlbmFpLmNvbS92MS9yZXNwb25zZXMnLCB7XG4gICAgICBpbnB1dDogaW5wdXQubWVzc2FnZXM/Lm1hcCgobWVzc2FnZSkgPT4gKHtjb250ZW50OiB0eXBlb2YgbWVzc2FnZS5jb250ZW50ID09PSAnc3RyaW5nJyA/IG1lc3NhZ2UuY29udGVudCA6IG1lc3NhZ2UuY29udGVudC5tYXAoKHBhcnQpID0+IHBhcnQudHlwZSA9PT0gJ3RleHQnXG4gICAgICAgID8ge3RleHQ6IHBhcnQudGV4dCwgdHlwZTogJ2lucHV0X3RleHQnfSA6IHtkZXRhaWw6IHBhcnQuZGV0YWlsID8/ICdhdXRvJywgaW1hZ2VfdXJsOiBwYXJ0LnVybCwgdHlwZTogJ2lucHV0X2ltYWdlJ30pLCByb2xlOiBtZXNzYWdlLnJvbGUgPT09ICdzeXN0ZW0nID8gJ2RldmVsb3BlcicgOiBtZXNzYWdlLnJvbGV9KSkgPz8gcHJvbXB0LFxuICAgICAgaW5zdHJ1Y3Rpb25zOiBpbnB1dC5zeXN0ZW0sXG4gICAgICBtYXhfb3V0cHV0X3Rva2VuczogaW5wdXQubWF4VG9rZW5zID8/IDQwOTYsXG4gICAgICBtb2RlbDogaW5wdXQubW9kZWwgfHwgY29uZmlnLm9wZW5haU1vZGVsIHx8ICdncHQtNi1hc3RyYScsXG4gICAgICAuLi4oaW5wdXQucmVhc29uaW5nRWZmb3J0ID8ge3JlYXNvbmluZzoge2VmZm9ydDogaW5wdXQucmVhc29uaW5nRWZmb3J0fX0gOiB7fSksXG4gICAgICBzdG9yZTogZmFsc2UsXG4gICAgICAuLi4oZm9ybWF0ID8ge3RleHQ6IHtmb3JtYXR9fSA6IHt9KSxcbiAgICAgIHRydW5jYXRpb246ICdkaXNhYmxlZCdcbiAgICB9LCB7Y2FjaGU6IGZhbHNlLCBoZWFkZXJzOiBuZXcgSGVhZGVycyh7QXV0aG9yaXphdGlvbjogYEJlYXJlciAke2NvbmZpZy5vcGVuYWlLZXl9YH0pLCB0aW1lb3V0OiBpbnB1dC50aW1lb3V0TXMgPz8gMTIwXzAwMH0pIGFzIHtcbiAgICAgIGVycm9yPzoge2NvZGU/OiBzdHJpbmc7IHR5cGU/OiBzdHJpbmd9O1xuICAgICAgb3V0cHV0Pzoge2NvbnRlbnQ/OiB7dGV4dD86IHN0cmluZzsgdHlwZT86IHN0cmluZ31bXTsgc3RhdHVzPzogc3RyaW5nOyB0eXBlPzogc3RyaW5nfVtdO1xuICAgICAgc3RhdHVzPzogc3RyaW5nO1xuICAgIH07XG4gICAgaWYocmVzcG9uc2UuZXJyb3IgJiYgWydpbnZhbGlkX3JlcXVlc3RfZXJyb3InLCAnYXV0aGVudGljYXRpb25fZXJyb3InLCAncGVybWlzc2lvbl9lcnJvciddLmluY2x1ZGVzKHJlc3BvbnNlLmVycm9yLnR5cGUgfHwgJycpKSB7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdPcGVuQUkgcmVqZWN0ZWQgdGhlIHJlcXVlc3QuIENoZWNrIHRoZSBtb2RlbCBhbmQgYWNjb3VudCBhY2Nlc3MuJyk7XG4gICAgfVxuICAgIGlmKHJlc3BvbnNlLmVycm9yIHx8IHJlc3BvbnNlLnN0YXR1cyAhPT0gJ2NvbXBsZXRlZCcgfHwgcmVzcG9uc2Uub3V0cHV0Py5zb21lKChpdGVtKSA9PiBpdGVtLnN0YXR1cyA9PT0gJ2luY29tcGxldGUnKSkge1xuICAgICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcignT3BlbkFJIHJlc3BvbnNlIGNvdWxkIG5vdCBiZSBjb25maXJtZWQ6IGdlbmVyYXRpb24gZGlkIG5vdCBjb21wbGV0ZS4nKTtcbiAgICB9XG4gICAgaWYocmVzcG9uc2Uub3V0cHV0Py5zb21lKChpdGVtKSA9PiBpdGVtLmNvbnRlbnQ/LnNvbWUoKHBhcnQpID0+IHBhcnQudHlwZSA9PT0gJ3JlZnVzYWwnKSkpIHtcbiAgICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3IoJ09wZW5BSSBkZWNsaW5lZCB0aGUgcmVxdWVzdC4nKTtcbiAgICB9XG4gICAgaWYocmVzcG9uc2Uub3V0cHV0Py5zb21lKChpdGVtKSA9PiBpdGVtLnR5cGUgJiYgIVsnbWVzc2FnZScsICdyZWFzb25pbmcnXS5pbmNsdWRlcyhpdGVtLnR5cGUpKSkge1xuICAgICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcignT3BlbkFJIHJldHVybmVkIGFuIHVuc3VwcG9ydGVkIG91dHB1dCBpdGVtLicpO1xuICAgIH1cbiAgICBjb25zdCB0ZXh0ID0gcmVzcG9uc2Uub3V0cHV0Py5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0udHlwZSA9PT0gJ21lc3NhZ2UnKS5mbGF0TWFwKChpdGVtKSA9PiBpdGVtLmNvbnRlbnQgfHwgW10pXG4gICAgICAuZmlsdGVyKChwYXJ0KSA9PiBwYXJ0LnR5cGUgPT09ICdvdXRwdXRfdGV4dCcpLm1hcCgocGFydCkgPT4gcGFydC50ZXh0IHx8ICcnKS5qb2luKCcnKS50cmltKCk7XG4gICAgaWYoIXRleHQpIHtcbiAgICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3IoJ09wZW5BSSByZXR1cm5lZCBlbXB0eSBvdXRwdXQuJyk7XG4gICAgfVxuICAgIHJldHVybiB7c291cmNlczogW10sIHRleHR9O1xuICB9XG4gIGlmKCFjb25maWcuZ2VtaW5pS2V5KSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignR2VtaW5pIGlzIG5vdCBjb25maWd1cmVkIG9uIHRoaXMgc2VydmVyLicpO1xuICB9XG4gIGNvbnN0IHBhcnRzOiB1bmtub3duW10gPSBbe3RleHQ6IHByb21wdH0sIC4uLmltYWdlcy5tYXAoKGltYWdlKSA9PiAoe2lubGluZURhdGE6IHtkYXRhOiBpbWFnZS5ieXRlcy50b1N0cmluZygnYmFzZTY0JyksIG1pbWVUeXBlOiBpbWFnZS5taW1lfX0pKV07XG4gIGNvbnN0IG1vZGVsID0gaW5wdXQubW9kZWwgfHwgKGlucHV0Lm1vZGFsaXR5ID09PSAnaW1hZ2UnID8gY29uZmlnLmdlbWluaUltYWdlTW9kZWwgfHwgJ2dlbWluaS0zLjEtZmxhc2gtaW1hZ2UnIDogY29uZmlnLmdlbWluaU1vZGVsIHx8ICdnZW1pbmktMy44LWZsYXNoJyk7XG4gIGlmKCEvXlthLXpBLVowLTkuXy1dKyQvLnRlc3QobW9kZWwpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignSW52YWxpZCBHZW1pbmkgbW9kZWwgY29uZmlndXJhdGlvbi4nKTtcbiAgfVxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHBvc3QoYGh0dHBzOi8vZ2VuZXJhdGl2ZWxhbmd1YWdlLmdvb2dsZWFwaXMuY29tL3YxYmV0YS9tb2RlbHMvJHttb2RlbH06Z2VuZXJhdGVDb250ZW50YCwge1xuICAgIGNvbnRlbnRzOiBbe3BhcnRzLCByb2xlOiAndXNlcid9XSxcbiAgICAuLi4oaW5wdXQuc3lzdGVtID8ge3N5c3RlbUluc3RydWN0aW9uOiB7cGFydHM6IFt7dGV4dDogaW5wdXQuc3lzdGVtfV19fSA6IHt9KSxcbiAgICBnZW5lcmF0aW9uQ29uZmlnOiBpbnB1dC5tb2RhbGl0eSA9PT0gJ2ltYWdlJyA/IHsuLi4oaW5wdXQuYXNwZWN0UmF0aW8gPyB7aW1hZ2VDb25maWc6IHthc3BlY3RSYXRpbzogaW5wdXQuYXNwZWN0UmF0aW99fSA6IHt9KSwgcmVzcG9uc2VNb2RhbGl0aWVzOiBbJ1RFWFQnLCAnSU1BR0UnXX0gOiB7XG4gICAgICBtYXhPdXRwdXRUb2tlbnM6IGlucHV0Lm1heFRva2VucyA/PyA0MDk2LFxuICAgICAgLi4uKGZvcm1hdCA/IHtyZXNwb25zZU1pbWVUeXBlOiBmb3JtYXQudHlwZSA9PT0gJ2pzb25fb2JqZWN0JyA/ICdhcHBsaWNhdGlvbi9qc29uJyA6ICd0ZXh0L3BsYWluJ30gOiB7fSksXG4gICAgICAuLi4oaW5wdXQudGVtcGVyYXR1cmUgIT09IHVuZGVmaW5lZCA/IHt0ZW1wZXJhdHVyZTogaW5wdXQudGVtcGVyYXR1cmV9IDoge30pXG4gICAgfSxcbiAgICAuLi4oaW5wdXQuc2VhcmNoID8ge3Rvb2xzOiBbe2dvb2dsZVNlYXJjaDoge319XX0gOiB7fSlcbiAgfSwge2NhY2hlOiBmYWxzZSwgaGVhZGVyczogbmV3IEhlYWRlcnMoeyd4LWdvb2ctYXBpLWtleSc6IGNvbmZpZy5nZW1pbmlLZXl9KSwgdGltZW91dDogaW5wdXQudGltZW91dE1zID8/IDEyMF8wMDB9KSBhcyBHZW1pbmlSZXNwb25zZTtcbiAgaWYocmVzcG9uc2UuZXJyb3IgJiYgWzQwMCwgNDAxLCA0MDMsIDQwNF0uaW5jbHVkZXMocmVzcG9uc2UuZXJyb3IuY29kZSB8fCAwKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ0dlbWluaSByZWplY3RlZCB0aGUgcmVxdWVzdC4gQ2hlY2sgdGhlIHJlZmVyZW5jZSBmb3JtYXQgYW5kIG1vZGVsIGFjY2Vzcy4nKTtcbiAgfVxuICBpZihyZXNwb25zZS5wcm9tcHRGZWVkYmFjaz8uYmxvY2tSZWFzb24gfHwgcmVzcG9uc2UuZXJyb3IgfHwgIXJlc3BvbnNlLmNhbmRpZGF0ZXM/Lmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3IoJ0dlbWluaSByZXNwb25zZSBjb3VsZCBub3QgYmUgY29uZmlybWVkLicpO1xuICB9XG4gIGNvbnN0IGNhbmRpZGF0ZSA9IHJlc3BvbnNlLmNhbmRpZGF0ZXNbMF0hO1xuICBpZihjYW5kaWRhdGUuZmluaXNoUmVhc29uICE9PSAnU1RPUCcpIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZXNwb25zZUVycm9yKCdHZW1pbmkgcmVzcG9uc2UgY291bGQgbm90IGJlIGNvbmZpcm1lZDogZ2VuZXJhdGlvbiBkaWQgbm90IGNvbXBsZXRlLicpO1xuICB9XG4gIGNvbnN0IG91dHB1dCA9IChjYW5kaWRhdGUuY29udGVudD8ucGFydHMgfHwgW10pLmZpbHRlcigocGFydCkgPT4gIXBhcnQudGhvdWdodCk7XG4gIGNvbnN0IGlubGluZSA9IG91dHB1dC5maW5kKChwYXJ0KSA9PiBwYXJ0LmlubGluZURhdGEpPy5pbmxpbmVEYXRhO1xuICBsZXQgaW1hZ2U6IEdlbmVyYXRlZENvbnRlbnRbJ2ltYWdlJ107XG4gIGlmKGlubGluZSAmJiBbJ2ltYWdlL3BuZycsICdpbWFnZS9qcGVnJ10uaW5jbHVkZXMoaW5saW5lLm1pbWVUeXBlKSkge1xuICAgIGNvbnN0IGJ5dGVzID0gQnVmZmVyLmZyb20oaW5saW5lLmRhdGEsICdiYXNlNjQnKTtcbiAgICBpZighYnl0ZXMubGVuZ3RoIHx8IGJ5dGVzLmxlbmd0aCA+IDIwICogMTAyNCAqIDEwMjQpIHtcbiAgICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3IoJ0ludmFsaWQgaW1hZ2Ugb3V0cHV0LicpO1xuICAgIH1cbiAgICBpbWFnZSA9IHtieXRlcywgbWltZTogaW5saW5lLm1pbWVUeXBlIGFzICdpbWFnZS9wbmcnIHwgJ2ltYWdlL2pwZWcnfTtcbiAgfVxuICBjb25zdCB0ZXh0ID0gb3V0cHV0Lm1hcCgocGFydCkgPT4gcGFydC50ZXh0IHx8ICcnKS5qb2luKCdcXG4nKS50cmltKCk7XG4gIGlmKGlucHV0Lm1vZGFsaXR5ID09PSAnaW1hZ2UnID8gIWltYWdlIDogIXRleHQpIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZXNwb25zZUVycm9yKCdUaGUgcmVxdWVzdGVkIG91dHB1dCB3YXMgbm90IHJldHVybmVkLicpO1xuICB9XG4gIGNvbnN0IHNvdXJjZXMgPSAoY2FuZGlkYXRlLmdyb3VuZGluZ01ldGFkYXRhPy5ncm91bmRpbmdDaHVua3MgfHwgW10pLmZsYXRNYXAoKHt3ZWJ9KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwod2ViPy51cmkgfHwgJycpO1xuICAgICAgcmV0dXJuIHVybC5wcm90b2NvbCA9PT0gJ2h0dHBzOicgPyBbe3RpdGxlOiB3ZWI/LnRpdGxlIHx8IHVybC5ob3N0bmFtZSwgdXJsOiB1cmwuaHJlZn1dIDogW107XG4gICAgfSBjYXRjaHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGltYWdlLCBzZWFyY2hTdWdnZXN0aW9uc0h0bWw6IGNhbmRpZGF0ZS5ncm91bmRpbmdNZXRhZGF0YT8uc2VhcmNoRW50cnlQb2ludD8ucmVuZGVyZWRDb250ZW50LCBzb3VyY2VzLCB0ZXh0XG4gIH07XG59O1xuIl0sIm5hbWVzIjpbImdlbmVyYXRlT2xsYW1hQ29udGVudCIsIkNvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvciIsIkNvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvciIsInBvc3QiLCJDb25maWciLCJ2YWxpZE1lc3NhZ2VDb250ZW50IiwibWVzc2FnZSIsImNvbnRlbnQiLCJ0cmltIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwiZXZlcnkiLCJwYXJ0IiwidHlwZSIsInRleHQiLCJyb2xlIiwidXJsIiwidGVzdCIsImRldGFpbCIsInVuZGVmaW5lZCIsImluY2x1ZGVzIiwiZ2VuZXJhdGVDb250ZW50IiwiaW5wdXQiLCJjb25maWciLCJnZXQiLCJwcm92aWRlciIsIm1lc3NhZ2VzIiwicHJvbXB0Iiwic29tZSIsInJlYXNvbmluZ0VmZm9ydCIsInJlc3BvbnNlRm9ybWF0IiwidGltZW91dE1zIiwiTnVtYmVyIiwiaXNJbnRlZ2VyIiwiZm9ybWF0IiwibmFtZSIsInNjaGVtYSIsInN0cmljdCIsIm1vZGFsaXR5IiwidG9wUCIsImlzRmluaXRlIiwidGVtcGVyYXR1cmUiLCJtYXhUb2tlbnMiLCJpbWFnZXMiLCJzZWFyY2giLCJjbGF1ZGVLZXkiLCJyZXNwb25zZSIsIm1heF90b2tlbnMiLCJtb2RlbCIsImNsYXVkZU1vZGVsIiwic3lzdGVtIiwiY2FjaGUiLCJoZWFkZXJzIiwiSGVhZGVycyIsInRpbWVvdXQiLCJlcnJvciIsImZpbHRlciIsIm1hcCIsImpvaW4iLCJzdG9wX3JlYXNvbiIsInNvdXJjZXMiLCJvcGVuYWlLZXkiLCJpbWFnZV91cmwiLCJpbnN0cnVjdGlvbnMiLCJtYXhfb3V0cHV0X3Rva2VucyIsIm9wZW5haU1vZGVsIiwicmVhc29uaW5nIiwiZWZmb3J0Iiwic3RvcmUiLCJ0cnVuY2F0aW9uIiwiQXV0aG9yaXphdGlvbiIsInN0YXR1cyIsIm91dHB1dCIsIml0ZW0iLCJmbGF0TWFwIiwiZ2VtaW5pS2V5IiwicGFydHMiLCJpbWFnZSIsImlubGluZURhdGEiLCJkYXRhIiwiYnl0ZXMiLCJ0b1N0cmluZyIsIm1pbWVUeXBlIiwibWltZSIsImdlbWluaUltYWdlTW9kZWwiLCJnZW1pbmlNb2RlbCIsImNvbnRlbnRzIiwic3lzdGVtSW5zdHJ1Y3Rpb24iLCJnZW5lcmF0aW9uQ29uZmlnIiwiYXNwZWN0UmF0aW8iLCJpbWFnZUNvbmZpZyIsInJlc3BvbnNlTW9kYWxpdGllcyIsIm1heE91dHB1dFRva2VucyIsInJlc3BvbnNlTWltZVR5cGUiLCJ0b29scyIsImdvb2dsZVNlYXJjaCIsImNvZGUiLCJwcm9tcHRGZWVkYmFjayIsImJsb2NrUmVhc29uIiwiY2FuZGlkYXRlcyIsImNhbmRpZGF0ZSIsImZpbmlzaFJlYXNvbiIsInRob3VnaHQiLCJpbmxpbmUiLCJmaW5kIiwiQnVmZmVyIiwiZnJvbSIsImdyb3VuZGluZ01ldGFkYXRhIiwiZ3JvdW5kaW5nQ2h1bmtzIiwid2ViIiwiVVJMIiwidXJpIiwicHJvdG9jb2wiLCJ0aXRsZSIsImhvc3RuYW1lIiwiaHJlZiIsInNlYXJjaFN1Z2dlc3Rpb25zSHRtbCIsInNlYXJjaEVudHJ5UG9pbnQiLCJyZW5kZXJlZENvbnRlbnQiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVFBLHFCQUFxQixRQUFPLHdCQUF3QjtBQUM1RCxTQUFRQyw4QkFBOEIsRUFBRUMsOEJBQThCLFFBQU8sK0JBQStCO0FBQzVHLFNBQVFELDhCQUE4QixFQUFFQyw4QkFBOEIsUUFBTywrQkFBK0I7QUFDNUcsU0FBUUMsSUFBSSxRQUFPLG9CQUFvQjtBQUV2QyxTQUFRQyxNQUFNLFFBQU8sZUFBZTtBQW1FcEMsTUFBTUMsc0JBQXNCLENBQUNDO0lBQzNCLElBQUcsT0FBT0EsUUFBUUMsT0FBTyxLQUFLLFVBQVUsT0FBTyxDQUFDLENBQUNELFFBQVFDLE9BQU8sQ0FBQ0MsSUFBSTtJQUNyRSxPQUFPQyxNQUFNQyxPQUFPLENBQUNKLFFBQVFDLE9BQU8sS0FBS0QsUUFBUUMsT0FBTyxDQUFDSSxNQUFNLEdBQUcsS0FBS0wsUUFBUUMsT0FBTyxDQUFDSyxLQUFLLENBQUMsQ0FBQ0M7UUFDNUYs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
@@ -48,6 +48,15 @@ const compatible = z.object({
48
48
  ].includes(url.protocol) || url.username || url.password || url.search || url.hash || typeof input.model !== 'string' || !input.model.trim()) {
49
49
  throw new ContentGenerationRejectedError('Ollama requires a protocol, model, and endpoint without credentials, query, or fragment.');
50
50
  }
51
+ if (input.images !== undefined && (!Array.isArray(input.images) || input.images.some((image)=>!image || !Buffer.isBuffer(image.bytes) || !image.bytes.length || typeof image.mime !== 'string' || !/^image\/[a-zA-Z0-9.+-]+$/.test(image.mime)))) {
52
+ throw new ContentGenerationRejectedError('Ollama images require nonempty Buffer bytes and an image MIME type.');
53
+ }
54
+ if (input.images?.length && target.protocol === 'openai-chat') {
55
+ throw new ContentGenerationRejectedError('Ollama image input requires the native generate or chat protocol.');
56
+ }
57
+ const images = input.images?.length ? {
58
+ images: input.images.map((image)=>image.bytes.toString('base64'))
59
+ } : {};
51
60
  const messages = [
52
61
  ...input.system !== undefined ? [
53
62
  {
@@ -57,6 +66,7 @@ const compatible = z.object({
57
66
  ] : [],
58
67
  {
59
68
  content: input.prompt,
69
+ ...images,
60
70
  role: 'user'
61
71
  }
62
72
  ];
@@ -83,6 +93,7 @@ const compatible = z.object({
83
93
  };
84
94
  const payload = target.protocol === 'generate' ? {
85
95
  ...native,
96
+ ...images,
86
97
  prompt: input.prompt,
87
98
  ...input.system !== undefined ? {
88
99
  system: input.system
@@ -125,4 +136,4 @@ const compatible = z.object({
125
136
  };
126
137
  };
127
138
 
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvYWN0aW9ucy9vbGxhbWFHZW5lcmF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cG9zdH0gZnJvbSAnQG5sYWJzL3JpcC1odW50ZXInO1xuaW1wb3J0IHt6fSBmcm9tICd6b2QnO1xuaW1wb3J0IHtDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IsIENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcn0gZnJvbSAnLi9jb250ZW50R2VuZXJhdGlvbkVycm9ycy5qcyc7XG5pbXBvcnQgdHlwZSB7Q29udGVudEdlbmVyYXRpb25Db25maWcsIENvbnRlbnRHZW5lcmF0aW9uSW5wdXQsIEdlbmVyYXRlZENvbnRlbnR9IGZyb20gJy4vY29udGVudEdlbmVyYXRpb24uanMnO1xuXG5jb25zdCB0ZXh0ID0gei5zdHJpbmcoKS5yZWZpbmUoKHZhbHVlKSA9PiBCb29sZWFuKHZhbHVlLnRyaW0oKSkpO1xuY29uc3QgbWVzc2FnZSA9IHoub2JqZWN0KHtcbiAgY29udGVudDogdGV4dCxcbiAgZnVuY3Rpb25fY2FsbDogei5udWxsKCkub3B0aW9uYWwoKSxcbiAgcmVmdXNhbDogei51bmlvbihbei5udWxsKCksIHoubGl0ZXJhbCgnJyldKS5vcHRpb25hbCgpLFxuICByb2xlOiB6LmxpdGVyYWwoJ2Fzc2lzdGFudCcpLFxuICB0b29sX2NhbGxzOiB6LmFycmF5KHoudW5rbm93bigpKS5tYXgoMCkub3B0aW9uYWwoKVxufSk7XG5jb25zdCBjb21wbGV0ZWQgPSB6Lm9iamVjdCh7ZG9uZTogei5saXRlcmFsKHRydWUpLCBkb25lX3JlYXNvbjogei5saXRlcmFsKCdzdG9wJyksIGVycm9yOiB6Lm5ldmVyKCkub3B0aW9uYWwoKX0pO1xuY29uc3QgZ2VuZXJhdGVkID0gY29tcGxldGVkLmV4dGVuZCh7cmVzcG9uc2U6IHRleHR9KTtcbmNvbnN0IGNoYXR0ZWQgPSBjb21wbGV0ZWQuZXh0ZW5kKHttZXNzYWdlfSk7XG5jb25zdCBjb21wYXRpYmxlID0gei5vYmplY3Qoe2Nob2ljZXM6IHouYXJyYXkoei5vYmplY3Qoe2ZpbmlzaF9yZWFzb246IHoubGl0ZXJhbCgnc3RvcCcpLCBtZXNzYWdlfSkpLmxlbmd0aCgxKSwgZXJyb3I6IHoubmV2ZXIoKS5vcHRpb25hbCgpfSk7XG5cbi8qKiBDYWxsZXItcmVzb2x2ZWQgZGVzdGluYXRpb24gYW5kIG1vZGVsLiBObyBkaXNjb3ZlcnksIGFsdGVybmF0ZSBlbmRwb2ludHMsIG9yIHJldHJpZXMuICovXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVPbGxhbWFDb250ZW50ID0gYXN5bmMgKGlucHV0OiBDb250ZW50R2VuZXJhdGlvbklucHV0LCBjb25maWc6IENvbnRlbnRHZW5lcmF0aW9uQ29uZmlnKTogUHJvbWlzZTxHZW5lcmF0ZWRDb250ZW50PiA9PiB7XG4gIGNvbnN0IHRhcmdldCA9IGNvbmZpZy5vbGxhbWE7XG4gIGxldCB1cmw6IFVSTDtcbiAgdHJ5IHtcbiAgICB1cmwgPSBuZXcgVVJMKHRhcmdldD8uZW5kcG9pbnQgfHwgJycpO1xuICB9IGNhdGNoIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdPbGxhbWEgcmVxdWlyZXMgYW4gZXhwbGljaXQgSFRUUChTKSBlbmRwb2ludC4nKTtcbiAgfVxuICBpZighdGFyZ2V0IHx8ICFbJ2dlbmVyYXRlJywgJ2NoYXQnLCAnb3BlbmFpLWNoYXQnXS5pbmNsdWRlcyh0YXJnZXQucHJvdG9jb2wpIHx8ICFbJ2h0dHA6JywgJ2h0dHBzOiddLmluY2x1ZGVzKHVybC5wcm90b2NvbCkgfHwgdXJsLnVzZXJuYW1lIHx8IHVybC5wYXNzd29yZCB8fCB1cmwuc2VhcmNoIHx8IHVybC5oYXNoIHx8IHR5cGVvZiBpbnB1dC5tb2RlbCAhPT0gJ3N0cmluZycgfHwgIWlucHV0Lm1vZGVsLnRyaW0oKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ09sbGFtYSByZXF1aXJlcyBhIHByb3RvY29sLCBtb2RlbCwgYW5kIGVuZHBvaW50IHdpdGhvdXQgY3JlZGVudGlhbHMsIHF1ZXJ5LCBvciBmcmFnbWVudC4nKTtcbiAgfVxuICBjb25zdCBtZXNzYWdlcyA9IFsuLi4oaW5wdXQuc3lzdGVtICE9PSB1bmRlZmluZWQgPyBbe2NvbnRlbnQ6IGlucHV0LnN5c3RlbSwgcm9sZTogJ3N5c3RlbSd9XSA6IFtdKSwge2NvbnRlbnQ6IGlucHV0LnByb21wdCwgcm9sZTogJ3VzZXInfV07XG4gIGNvbnN0IG9wdGlvbnMgPSB7Li4uKGlucHV0Lm1heFRva2VucyAhPT0gdW5kZWZpbmVkID8ge251bV9wcmVkaWN0OiBpbnB1dC5tYXhUb2tlbnN9IDoge30pLCAuLi4oaW5wdXQudGVtcGVyYXR1cmUgIT09IHVuZGVmaW5lZCA/IHt0ZW1wZXJhdHVyZTogaW5wdXQudGVtcGVyYXR1cmV9IDoge30pLCAuLi4oaW5wdXQudG9wUCAhPT0gdW5kZWZpbmVkID8ge3RvcF9wOiBpbnB1dC50b3BQfSA6IHt9KX07XG4gIGNvbnN0IG5hdGl2ZSA9IHtcbiAgICAuLi4oaW5wdXQucmVzcG9uc2VGb3JtYXQ/LnR5cGUgPT09ICdqc29uX29iamVjdCcgPyB7Zm9ybWF0OiAnanNvbid9IDoge30pLFxuICAgIG1vZGVsOiBpbnB1dC5tb2RlbCxcbiAgICAuLi4oT2JqZWN0LmtleXMob3B0aW9ucykubGVuZ3RoID8ge29wdGlvbnN9IDoge30pLFxuICAgIHN0cmVhbTogZmFsc2VcbiAgfTtcbiAgY29uc3QgcGF5bG9hZCA9IHRhcmdldC5wcm90b2NvbCA9PT0gJ2dlbmVyYXRlJ1xuICAgID8gey4uLm5hdGl2ZSwgcHJvbXB0OiBpbnB1dC5wcm9tcHQsIC4uLihpbnB1dC5zeXN0ZW0gIT09IHVuZGVmaW5lZCA/IHtzeXN0ZW06IGlucHV0LnN5c3RlbX0gOiB7fSl9XG4gICAgOiB0YXJnZXQucHJvdG9jb2wgPT09ICdjaGF0JyA/IHsuLi5uYXRpdmUsIG1lc3NhZ2VzfSA6IHtcbiAgICAgIC4uLihpbnB1dC5tYXhUb2tlbnMgIT09IHVuZGVmaW5lZCA/IHttYXhfdG9rZW5zOiBpbnB1dC5tYXhUb2tlbnN9IDoge30pLFxuICAgICAgbWVzc2FnZXMsXG4gICAgICBtb2RlbDogaW5wdXQubW9kZWwsXG4gICAgICAuLi4oaW5wdXQucmVzcG9uc2VGb3JtYXQ/LnR5cGUgPT09ICdqc29uX29iamVjdCcgPyB7cmVzcG9uc2VfZm9ybWF0OiBpbnB1dC5yZXNwb25zZUZvcm1hdH0gOiB7fSksXG4gICAgICBzdHJlYW06IGZhbHNlLFxuICAgICAgLi4uKGlucHV0LnRlbXBlcmF0dXJlICE9PSB1bmRlZmluZWQgPyB7dGVtcGVyYXR1cmU6IGlucHV0LnRlbXBlcmF0dXJlfSA6IHt9KSxcbiAgICAgIC4uLihpbnB1dC50b3BQICE9PSB1bmRlZmluZWQgPyB7dG9wX3A6IGlucHV0LnRvcFB9IDoge30pXG4gICAgfTtcbiAgbGV0IHJlc3BvbnNlOiB1bmtub3duO1xuICB0cnkge1xuICAgIHJlc3BvbnNlID0gYXdhaXQgcG9zdCh1cmwudG9TdHJpbmcoKSwgcGF5bG9hZCwge2NhY2hlOiBmYWxzZSwgdGltZW91dDogaW5wdXQudGltZW91dE1zID8/IDEyMDAwMH0pO1xuICB9IGNhdGNoIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZXNwb25zZUVycm9yKCdPbGxhbWEgc3VibWlzc2lvbiBvdXRjb21lIGlzIHVua25vd247IGRvIG5vdCBhdXRvbWF0aWNhbGx5IHJldHJ5LicpO1xuICB9XG4gIGNvbnN0IHBhcnNlZCA9ICh0YXJnZXQucHJvdG9jb2wgPT09ICdnZW5lcmF0ZScgPyBnZW5lcmF0ZWQgOiB0YXJnZXQucHJvdG9jb2wgPT09ICdjaGF0JyA/IGNoYXR0ZWQgOiBjb21wYXRpYmxlKS5zYWZlUGFyc2UocmVzcG9uc2UpO1xuICBpZighcGFyc2VkLnN1Y2Nlc3MpIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3IoJ09sbGFtYSByZXNwb25zZSBjb3VsZCBub3QgYmUgY29uZmlybWVkOyBkbyBub3QgYXV0b21hdGljYWxseSByZXRyeS4nKTtcbiAgY29uc3QgcmVzdWx0ID0gcGFyc2VkLmRhdGE7XG4gIHJldHVybiB7c291cmNlczogW10sIHRleHQ6ICdyZXNwb25zZScgaW4gcmVzdWx0ID8gcmVzdWx0LnJlc3BvbnNlIDogJ21lc3NhZ2UnIGluIHJlc3VsdCA/IHJlc3VsdC5tZXNzYWdlLmNvbnRlbnQgOiByZXN1bHQuY2hvaWNlc1swXSEubWVzc2FnZS5jb250ZW50fTtcbn07XG4iXSwibmFtZXMiOlsicG9zdCIsInoiLCJDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IiLCJDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3IiLCJ0ZXh0Iiwic3RyaW5nIiwicmVmaW5lIiwidmFsdWUiLCJCb29sZWFuIiwidHJpbSIsIm1lc3NhZ2UiLCJvYmplY3QiLCJjb250ZW50IiwiZnVuY3Rpb25fY2FsbCIsIm51bGwiLCJvcHRpb25hbCIsInJlZnVzYWwiLCJ1bmlvbiIsImxpdGVyYWwiLCJyb2xlIiwidG9vbF9jYWxscyIsImFycmF5IiwidW5rbm93biIsIm1heCIsImNvbXBsZXRlZCIsImRvbmUiLCJkb25lX3JlYXNvbiIsImVycm9yIiwibmV2ZXIiLCJnZW5lcmF0ZWQiLCJleHRlbmQiLCJyZXNwb25zZSIsImNoYXR0ZWQiLCJjb21wYXRpYmxlIiwiY2hvaWNlcyIsImZpbmlzaF9yZWFzb24iLCJsZW5ndGgiLCJnZW5lcmF0ZU9sbGFtYUNvbnRlbnQiLCJpbnB1dCIsImNvbmZpZyIsInRhcmdldCIsIm9sbGFtYSIsInVybCIsIlVSTCIsImVuZHBvaW50IiwiaW5jbHVkZXMiLCJwcm90b2NvbCIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJzZWFyY2giLCJoYXNoIiwibW9kZWwiLCJtZXNzYWdlcyIsInN5c3RlbSIsInVuZGVmaW5lZCIsInByb21wdCIsIm9wdGlvbnMiLCJtYXhUb2tlbnMiLCJudW1fcHJlZGljdCIsInRlbXBlcmF0dXJlIiwidG9wUCIsInRvcF9wIiwibmF0aXZlIiwicmVzcG9uc2VGb3JtYXQiLCJ0eXBlIiwiZm9ybWF0IiwiT2JqZWN0Iiwia2V5cyIsInN0cmVhbSIsInBheWxvYWQiLCJtYXhfdG9rZW5zIiwicmVzcG9uc2VfZm9ybWF0IiwidG9TdHJpbmciLCJjYWNoZSIsInRpbWVvdXQiLCJ0aW1lb3V0TXMiLCJwYXJzZWQiLCJzYWZlUGFyc2UiLCJzdWNjZXNzIiwicmVzdWx0IiwiZGF0YSIsInNvdXJjZXMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVFBLElBQUksUUFBTyxvQkFBb0I7QUFDdkMsU0FBUUMsQ0FBQyxRQUFPLE1BQU07QUFDdEIsU0FBUUMsOEJBQThCLEVBQUVDLDhCQUE4QixRQUFPLCtCQUErQjtBQUc1RyxNQUFNQyxPQUFPSCxFQUFFSSxNQUFNLEdBQUdDLE1BQU0sQ0FBQyxDQUFDQyxRQUFVQyxRQUFRRCxNQUFNRSxJQUFJO0FBQzVELE1BQU1DLFVBQVVULEVBQUVVLE1BQU0sQ0FBQztJQUN2QkMsU0FBU1I7SUFDVFMsZUFBZVosRUFBRWEsSUFBSSxHQUFHQyxRQUFRO0lBQ2hDQyxTQUFTZixFQUFFZ0IsS0FBSyxDQUFDO1FBQUNoQixFQUFFYSxJQUFJO1FBQUliLEVBQUVpQixPQUFPLENBQUM7S0FBSSxFQUFFSCxRQUFRO0lBQ3BESSxNQUFNbEIsRUFBRWlCLE9BQU8sQ0FBQztJQUNoQkUsWUFBWW5CLEVBQUVvQixLQUFLLENBQUNwQixFQUFFcUIsT0FBTyxJQUFJQyxHQUFHLENBQUMsR0FBR1IsUUFBUTtBQUNsRDtBQUNBLE1BQU1TLFlBQVl2QixFQUFFVSxNQUFNLENBQUM7SUFBQ2MsTUFBTXhCLEVBQUVpQixPQUFPLENBQUM7SUFBT1EsYUFBYXpCLEVBQUVpQixPQUFPLENBQUM7SUFBU1MsT0FBTzFCLEVBQUUyQixLQUFLLEdBQUdiLFFBQVE7QUFBRTtBQUM5RyxNQUFNYyxZQUFZTCxVQUFVTSxNQUFNLENBQUM7SUFBQ0MsVUFBVTNCO0FBQUk7QUFDbEQsTUFB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
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvYWN0aW9ucy9vbGxhbWFHZW5lcmF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cG9zdH0gZnJvbSAnQG5sYWJzL3JpcC1odW50ZXInO1xuaW1wb3J0IHt6fSBmcm9tICd6b2QnO1xuaW1wb3J0IHtDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IsIENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcn0gZnJvbSAnLi9jb250ZW50R2VuZXJhdGlvbkVycm9ycy5qcyc7XG5pbXBvcnQgdHlwZSB7Q29udGVudEdlbmVyYXRpb25Db25maWcsIENvbnRlbnRHZW5lcmF0aW9uSW5wdXQsIEdlbmVyYXRlZENvbnRlbnR9IGZyb20gJy4vY29udGVudEdlbmVyYXRpb24uanMnO1xuXG5jb25zdCB0ZXh0ID0gei5zdHJpbmcoKS5yZWZpbmUoKHZhbHVlKSA9PiBCb29sZWFuKHZhbHVlLnRyaW0oKSkpO1xuY29uc3QgbWVzc2FnZSA9IHoub2JqZWN0KHtcbiAgY29udGVudDogdGV4dCxcbiAgZnVuY3Rpb25fY2FsbDogei5udWxsKCkub3B0aW9uYWwoKSxcbiAgcmVmdXNhbDogei51bmlvbihbei5udWxsKCksIHoubGl0ZXJhbCgnJyldKS5vcHRpb25hbCgpLFxuICByb2xlOiB6LmxpdGVyYWwoJ2Fzc2lzdGFudCcpLFxuICB0b29sX2NhbGxzOiB6LmFycmF5KHoudW5rbm93bigpKS5tYXgoMCkub3B0aW9uYWwoKVxufSk7XG5jb25zdCBjb21wbGV0ZWQgPSB6Lm9iamVjdCh7ZG9uZTogei5saXRlcmFsKHRydWUpLCBkb25lX3JlYXNvbjogei5saXRlcmFsKCdzdG9wJyksIGVycm9yOiB6Lm5ldmVyKCkub3B0aW9uYWwoKX0pO1xuY29uc3QgZ2VuZXJhdGVkID0gY29tcGxldGVkLmV4dGVuZCh7cmVzcG9uc2U6IHRleHR9KTtcbmNvbnN0IGNoYXR0ZWQgPSBjb21wbGV0ZWQuZXh0ZW5kKHttZXNzYWdlfSk7XG5jb25zdCBjb21wYXRpYmxlID0gei5vYmplY3Qoe2Nob2ljZXM6IHouYXJyYXkoei5vYmplY3Qoe2ZpbmlzaF9yZWFzb246IHoubGl0ZXJhbCgnc3RvcCcpLCBtZXNzYWdlfSkpLmxlbmd0aCgxKSwgZXJyb3I6IHoubmV2ZXIoKS5vcHRpb25hbCgpfSk7XG5cbi8qKiBDYWxsZXItcmVzb2x2ZWQgZGVzdGluYXRpb24gYW5kIG1vZGVsLiBObyBkaXNjb3ZlcnksIGFsdGVybmF0ZSBlbmRwb2ludHMsIG9yIHJldHJpZXMuICovXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVPbGxhbWFDb250ZW50ID0gYXN5bmMgKGlucHV0OiBDb250ZW50R2VuZXJhdGlvbklucHV0LCBjb25maWc6IENvbnRlbnRHZW5lcmF0aW9uQ29uZmlnKTogUHJvbWlzZTxHZW5lcmF0ZWRDb250ZW50PiA9PiB7XG4gIGNvbnN0IHRhcmdldCA9IGNvbmZpZy5vbGxhbWE7XG4gIGxldCB1cmw6IFVSTDtcbiAgdHJ5IHtcbiAgICB1cmwgPSBuZXcgVVJMKHRhcmdldD8uZW5kcG9pbnQgfHwgJycpO1xuICB9IGNhdGNoIHtcbiAgICB0aHJvdyBuZXcgQ29udGVudEdlbmVyYXRpb25SZWplY3RlZEVycm9yKCdPbGxhbWEgcmVxdWlyZXMgYW4gZXhwbGljaXQgSFRUUChTKSBlbmRwb2ludC4nKTtcbiAgfVxuICBpZighdGFyZ2V0IHx8ICFbJ2dlbmVyYXRlJywgJ2NoYXQnLCAnb3BlbmFpLWNoYXQnXS5pbmNsdWRlcyh0YXJnZXQucHJvdG9jb2wpIHx8ICFbJ2h0dHA6JywgJ2h0dHBzOiddLmluY2x1ZGVzKHVybC5wcm90b2NvbCkgfHwgdXJsLnVzZXJuYW1lIHx8IHVybC5wYXNzd29yZCB8fCB1cmwuc2VhcmNoIHx8IHVybC5oYXNoIHx8IHR5cGVvZiBpbnB1dC5tb2RlbCAhPT0gJ3N0cmluZycgfHwgIWlucHV0Lm1vZGVsLnRyaW0oKSkge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ09sbGFtYSByZXF1aXJlcyBhIHByb3RvY29sLCBtb2RlbCwgYW5kIGVuZHBvaW50IHdpdGhvdXQgY3JlZGVudGlhbHMsIHF1ZXJ5LCBvciBmcmFnbWVudC4nKTtcbiAgfVxuICBpZihpbnB1dC5pbWFnZXMgIT09IHVuZGVmaW5lZCAmJiAoIUFycmF5LmlzQXJyYXkoaW5wdXQuaW1hZ2VzKSB8fCBpbnB1dC5pbWFnZXMuc29tZSgoaW1hZ2UpID0+XG4gICAgIWltYWdlIHx8ICFCdWZmZXIuaXNCdWZmZXIoaW1hZ2UuYnl0ZXMpIHx8ICFpbWFnZS5ieXRlcy5sZW5ndGggfHwgdHlwZW9mIGltYWdlLm1pbWUgIT09ICdzdHJpbmcnIHx8ICEvXmltYWdlXFwvW2EtekEtWjAtOS4rLV0rJC8udGVzdChpbWFnZS5taW1lKSkpKSB7XG4gICAgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvcignT2xsYW1hIGltYWdlcyByZXF1aXJlIG5vbmVtcHR5IEJ1ZmZlciBieXRlcyBhbmQgYW4gaW1hZ2UgTUlNRSB0eXBlLicpO1xuICB9XG4gIGlmKGlucHV0LmltYWdlcz8ubGVuZ3RoICYmIHRhcmdldC5wcm90b2NvbCA9PT0gJ29wZW5haS1jaGF0Jykge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlamVjdGVkRXJyb3IoJ09sbGFtYSBpbWFnZSBpbnB1dCByZXF1aXJlcyB0aGUgbmF0aXZlIGdlbmVyYXRlIG9yIGNoYXQgcHJvdG9jb2wuJyk7XG4gIH1cbiAgY29uc3QgaW1hZ2VzID0gaW5wdXQuaW1hZ2VzPy5sZW5ndGggPyB7aW1hZ2VzOiBpbnB1dC5pbWFnZXMubWFwKChpbWFnZSkgPT4gaW1hZ2UuYnl0ZXMudG9TdHJpbmcoJ2Jhc2U2NCcpKX0gOiB7fTtcbiAgY29uc3QgbWVzc2FnZXMgPSBbLi4uKGlucHV0LnN5c3RlbSAhPT0gdW5kZWZpbmVkID8gW3tjb250ZW50OiBpbnB1dC5zeXN0ZW0sIHJvbGU6ICdzeXN0ZW0nfV0gOiBbXSksIHtjb250ZW50OiBpbnB1dC5wcm9tcHQsIC4uLmltYWdlcywgcm9sZTogJ3VzZXInfV07XG4gIGNvbnN0IG9wdGlvbnMgPSB7Li4uKGlucHV0Lm1heFRva2VucyAhPT0gdW5kZWZpbmVkID8ge251bV9wcmVkaWN0OiBpbnB1dC5tYXhUb2tlbnN9IDoge30pLCAuLi4oaW5wdXQudGVtcGVyYXR1cmUgIT09IHVuZGVmaW5lZCA/IHt0ZW1wZXJhdHVyZTogaW5wdXQudGVtcGVyYXR1cmV9IDoge30pLCAuLi4oaW5wdXQudG9wUCAhPT0gdW5kZWZpbmVkID8ge3RvcF9wOiBpbnB1dC50b3BQfSA6IHt9KX07XG4gIGNvbnN0IG5hdGl2ZSA9IHtcbiAgICAuLi4oaW5wdXQucmVzcG9uc2VGb3JtYXQ/LnR5cGUgPT09ICdqc29uX29iamVjdCcgPyB7Zm9ybWF0OiAnanNvbid9IDoge30pLFxuICAgIG1vZGVsOiBpbnB1dC5tb2RlbCxcbiAgICAuLi4oT2JqZWN0LmtleXMob3B0aW9ucykubGVuZ3RoID8ge29wdGlvbnN9IDoge30pLFxuICAgIHN0cmVhbTogZmFsc2VcbiAgfTtcbiAgY29uc3QgcGF5bG9hZCA9IHRhcmdldC5wcm90b2NvbCA9PT0gJ2dlbmVyYXRlJ1xuICAgID8gey4uLm5hdGl2ZSwgLi4uaW1hZ2VzLCBwcm9tcHQ6IGlucHV0LnByb21wdCwgLi4uKGlucHV0LnN5c3RlbSAhPT0gdW5kZWZpbmVkID8ge3N5c3RlbTogaW5wdXQuc3lzdGVtfSA6IHt9KX1cbiAgICA6IHRhcmdldC5wcm90b2NvbCA9PT0gJ2NoYXQnID8gey4uLm5hdGl2ZSwgbWVzc2FnZXN9IDoge1xuICAgICAgLi4uKGlucHV0Lm1heFRva2VucyAhPT0gdW5kZWZpbmVkID8ge21heF90b2tlbnM6IGlucHV0Lm1heFRva2Vuc30gOiB7fSksXG4gICAgICBtZXNzYWdlcyxcbiAgICAgIG1vZGVsOiBpbnB1dC5tb2RlbCxcbiAgICAgIC4uLihpbnB1dC5yZXNwb25zZUZvcm1hdD8udHlwZSA9PT0gJ2pzb25fb2JqZWN0JyA/IHtyZXNwb25zZV9mb3JtYXQ6IGlucHV0LnJlc3BvbnNlRm9ybWF0fSA6IHt9KSxcbiAgICAgIHN0cmVhbTogZmFsc2UsXG4gICAgICAuLi4oaW5wdXQudGVtcGVyYXR1cmUgIT09IHVuZGVmaW5lZCA/IHt0ZW1wZXJhdHVyZTogaW5wdXQudGVtcGVyYXR1cmV9IDoge30pLFxuICAgICAgLi4uKGlucHV0LnRvcFAgIT09IHVuZGVmaW5lZCA/IHt0b3BfcDogaW5wdXQudG9wUH0gOiB7fSlcbiAgICB9O1xuICBsZXQgcmVzcG9uc2U6IHVua25vd247XG4gIHRyeSB7XG4gICAgcmVzcG9uc2UgPSBhd2FpdCBwb3N0KHVybC50b1N0cmluZygpLCBwYXlsb2FkLCB7Y2FjaGU6IGZhbHNlLCB0aW1lb3V0OiBpbnB1dC50aW1lb3V0TXMgPz8gMTIwMDAwfSk7XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBDb250ZW50R2VuZXJhdGlvblJlc3BvbnNlRXJyb3IoJ09sbGFtYSBzdWJtaXNzaW9uIG91dGNvbWUgaXMgdW5rbm93bjsgZG8gbm90IGF1dG9tYXRpY2FsbHkgcmV0cnkuJyk7XG4gIH1cbiAgY29uc3QgcGFyc2VkID0gKHRhcmdldC5wcm90b2NvbCA9PT0gJ2dlbmVyYXRlJyA/IGdlbmVyYXRlZCA6IHRhcmdldC5wcm90b2NvbCA9PT0gJ2NoYXQnID8gY2hhdHRlZCA6IGNvbXBhdGlibGUpLnNhZmVQYXJzZShyZXNwb25zZSk7XG4gIGlmKCFwYXJzZWQuc3VjY2VzcykgdGhyb3cgbmV3IENvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvcignT2xsYW1hIHJlc3BvbnNlIGNvdWxkIG5vdCBiZSBjb25maXJtZWQ7IGRvIG5vdCBhdXRvbWF0aWNhbGx5IHJldHJ5LicpO1xuICBjb25zdCByZXN1bHQgPSBwYXJzZWQuZGF0YTtcbiAgcmV0dXJuIHtzb3VyY2VzOiBbXSwgdGV4dDogJ3Jlc3BvbnNlJyBpbiByZXN1bHQgPyByZXN1bHQucmVzcG9uc2UgOiAnbWVzc2FnZScgaW4gcmVzdWx0ID8gcmVzdWx0Lm1lc3NhZ2UuY29udGVudCA6IHJlc3VsdC5jaG9pY2VzWzBdIS5tZXNzYWdlLmNvbnRlbnR9O1xufTtcbiJdLCJuYW1lcyI6WyJwb3N0IiwieiIsIkNvbnRlbnRHZW5lcmF0aW9uUmVqZWN0ZWRFcnJvciIsIkNvbnRlbnRHZW5lcmF0aW9uUmVzcG9uc2VFcnJvciIsInRleHQiLCJzdHJpbmciLCJyZWZpbmUiLCJ2YWx1ZSIsIkJvb2xlYW4iLCJ0cmltIiwibWVzc2FnZSIsIm9iamVjdCIsImNvbnRlbnQiLCJmdW5jdGlvbl9jYWxsIiwibnVsbCIsIm9wdGlvbmFsIiwicmVmdXNhbCIsInVuaW9uIiwibGl0ZXJhbCIsInJvbGUiLCJ0b29sX2NhbGxzIiwiYXJyYXkiLCJ1bmtub3duIiwibWF4IiwiY29tcGxldGVkIiwiZG9uZSIsImRvbmVfcmVhc29uIiwiZXJyb3IiLCJuZXZlciIsImdlbmVyYXRlZCIsImV4dGVuZCIsInJlc3BvbnNlIiwiY2hhdHRlZCIsImNvbXBhdGlibGUiLCJjaG9pY2VzIiwiZmluaXNoX3JlYXNvbiIsImxlbmd0aCIsImdlbmVyYXRlT2xsYW1hQ29udGVudCIsImlucHV0IiwiY29uZmlnIiwidGFyZ2V0Iiwib2xsYW1hIiwidXJsIiwiVVJMIiwiZW5kcG9pbnQiLCJpbmNsdWRlcyIsInByb3RvY29sIiwidXNlcm5hbWUiLCJwYXNzd29yZCIsInNlYXJjaCIsImhhc2giLCJtb2RlbCIsImltYWdlcyIsInVuZGVmaW5lZCIsIkFycmF5IiwiaXNBcnJheSIsInNvbWUiLCJpbWFnZSIsIkJ1ZmZlciIsImlzQnVmZmVyIiwiYnl0ZXMiLCJtaW1lIiwidGVzdCIsIm1hcCIsInRvU3RyaW5nIiwibWVzc2FnZXMiLCJzeXN0ZW0iLCJwcm9tcHQiLCJvcHRpb25zIiwibWF4VG9rZW5zIiwibnVtX3ByZWRpY3QiLCJ0ZW1wZXJhdHVyZSIsInRvcFAiLCJ0b3BfcCIsIm5hdGl2ZSIsInJlc3BvbnNlRm9ybWF0IiwidHlwZSIsImZvcm1hdCIsIk9iamVjdCIsImtleXMiLCJzdHJlYW0iLCJwYXlsb2FkIiwibWF4X3Rva2VucyIsInJlc3BvbnNlX2Zvcm1hdCIsImNhY2hlIiwidGltZW91dCIsInRpbWVvdXRNcyIsInBhcnNlZCIsInNhZmVQYXJzZSIsInN1Y2Nlc3MiLCJyZXN1bHQiLCJkYXRhIiwic291cmNlcyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsSUFBSSxRQUFPLG9CQUFvQjtBQUN2QyxTQUFRQyxDQUFDLFFBQU8sTUFBTTtBQUN0QixTQUFRQyw4QkFBOEIsRUFBRUMsOEJBQThCLFFBQU8sK0JBQStCO0FBRzVHLE1BQU1DLE9BQU9ILEVBQUVJLE1BQU0sR0FBR0MsTUFBTSxDQUFDLENBQUNDLFFBQVVDLFFBQVFELE1BQU1FLElBQUk7QUFDNUQsTUFBTUMsVUFBVVQsRUFBRVUsTUFBTSxDQUFDO0lBQ3ZCQyxTQUFTUjtJQUNUUyxlQUFlWixFQUFFYSxJQUFJLEdBQUdDLFFBQVE7SUFDaENDLFNBQVNmLEVBQUVnQixLQUFLLENBQUM7UUFBQ2hCLEVBQUVhLElBQUk7UUFBSWIsRUFBRWlCLE9BQU8sQ0FBQztLQUFJLEVBQUVILFFBQVE7SUFDcERJLE1BQU1sQixFQUFFaUIsT0FBTyxDQUFDO0lBQ2hCRSxZQUFZbkIsRUFBRW9CLEtBQUssQ0FBQ3BCLEVBQUVxQixPQUFPLElBQUlDLEdBQUcsQ0FBQyxHQUFHUixRQUFRO0FBQ2xEO0FBQ0EsTUFBTVMsWUFBWXZCLEVBQUVVLE1BQU0sQ0FBQztJQUFDYyxNQUFNeEIsRUFBRWlCLE9BQU8sQ0FBQztJQUFPUSxhQUFhekIsRUFBRWlCLE9BQU8sQ0FBQztJQUFTUyxPQUFPMUIsRUFBRTJCLEtBQUssR0FBR2IsUUFBUTtBQUFFO0FBQzlHLE1BQU1jLFlBQVlMLFVBQVVNLE1BQU0sQ0FBQztJQUFDQyxVQUFVM0I7QUFBSTtBQUNsRCxNQUFNNEIsVUFBVVIsVUFBVU0sTUFBTSxDQUFDO0lBQUNwQjtBQUFPO0FBQ3pDLE1BQU11QixhQUFhaEMsRUFBRVUsTUFBTSxDQUFDO0lBQUN1QixTQUFTakMsRUFBRW9CLEtBQUssQ0FBQ3BC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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nlabs/reaktor",
3
- "version": "1.15.0",
3
+ "version": "1.16.0",
4
4
  "description": "GraphQL and ArangoDB application platform for typed actions, authentication, billing, media, messaging, and realtime services.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "type": "module",