From 2ed096e5249f11e853ca919008123e5c3af5a1d2 Mon Sep 17 00:00:00 2001 From: Dmytro Lazarenko Date: Mon, 19 Aug 2024 21:34:01 -0700 Subject: [PATCH 1/3] Update EDS SDK --- .../event-delivery/clients/_category_.json | 2 +- .../event-delivery/clients/connection.md | 63 +++++++++-- docs/photoniq/event-delivery/clients/index.md | 100 ++++++++++++++---- .../clients/listeners-and-errors.md | 8 +- .../clients/query-set-and-batch.md | 20 ++++ .../eds-clients/photoniq-eds-sdk.min.js | 1 + .../download/eds-clients/photoniq-eds-sdk.zip | Bin 0 -> 130225 bytes .../eds-clients/photoniq-eds-ws.min.js | 1 - 8 files changed, 161 insertions(+), 34 deletions(-) create mode 100644 static/download/eds-clients/photoniq-eds-sdk.min.js create mode 100644 static/download/eds-clients/photoniq-eds-sdk.zip delete mode 100644 static/download/eds-clients/photoniq-eds-ws.min.js diff --git a/docs/photoniq/event-delivery/clients/_category_.json b/docs/photoniq/event-delivery/clients/_category_.json index 364bf5bd05..16e50667be 100644 --- a/docs/photoniq/event-delivery/clients/_category_.json +++ b/docs/photoniq/event-delivery/clients/_category_.json @@ -1,4 +1,4 @@ { - "label": "Client SDKs", + "label": "Client SDK", "position": 100 } diff --git a/docs/photoniq/event-delivery/clients/connection.md b/docs/photoniq/event-delivery/clients/connection.md index 7c283ff5ad..68bbb4da9f 100644 --- a/docs/photoniq/event-delivery/clients/connection.md +++ b/docs/photoniq/event-delivery/clients/connection.md @@ -16,35 +16,86 @@ connection.connect(); ### getConfig -Retrieves the configuration of the connection. Returns a [`Config`](/photoniq/event-delivery/clients/#config-schema) instance: +Retrieves the configuration of the connection. Returns a [`Config`](/photoniq/event-delivery/clients/#config) instance: ```js connection.getConfig(); ``` +| **Argument** | **Type** | **Description** | +|--------------|------------|------------------------| +| return | [`Config`](/photoniq/event-delivery/clients/#config) | Client configuration of the connection | + ### getId -Retrieves the connection ID. Returns a `number` value: +Retrieves the connection ID: ```js connection.getId(); ``` -### isConnected +| **Argument** | **Type** | **Description** | +|--------------|------------|------------------------| +| return | `number` | ID of the connection | + +### getStatus + +Checks status of the connection: +```js +connection.getStatus(); +``` + +The method can return the next `ConnectionType` enum values: + +| **Type** | **Description** | +|----------------------|---------------------------| +| `ConnectionType.Closed` | Connection closed | +| `ConnectionType.Connecting` | Connection is opening | +| `ConnectionType.Open` | Connection opened | +| `ConnectionType.Closing` | Connection is closing | + -Checks whether the connection is alive. Returns a `boolean` value: +### getProperty + +Get property of a connection: ```js -connection.isConnected(); +connection.getProperty(name); ``` +| **Argument** | **Type** | **Description** | +|--------------|------------|------------------------| +| `name` | `string` | Name of a property | +| return | `string` | Value of a property | + + +### getProperties + +Get all properties of a connection: +```js +connection.getProperties(); +``` + +| **Argument** | **Type** | **Description** | +|--------------|------------|------------------------| +| return | `object` | Object of all property:value pairs | + ### querySet -Create a `QuerySet` instance: +Create a [`QuerySet`](/photoniq/event-delivery/clients/query-set-and-batch) instance: ```js connection.querySet(); ``` +| **Argument** | **Type** | **Description** | +|--------------|------------|------------------------| +| return | [`QuerySet`](/photoniq/event-delivery/clients/query-set-and-batch) | Query set instance | + + ### disconnect Disconnect from the Event Delivery Service: ```js connection.disconnect(); ``` + +| **Argument** | **Type** | **Description** | +|--------------|------------|------------------------| +| return | `boolean` | `true` if disconnected; `false` if it was not connected | \ No newline at end of file diff --git a/docs/photoniq/event-delivery/clients/index.md b/docs/photoniq/event-delivery/clients/index.md index 17523e9a79..6e4f3f4eb2 100644 --- a/docs/photoniq/event-delivery/clients/index.md +++ b/docs/photoniq/event-delivery/clients/index.md @@ -3,22 +3,24 @@ sidebar_position: 1 title: Event Delivery Client SDKs --- -This section demonstrates some of the tasks you can complete with JavaScript SDKs. Macrometa offers the following SDKs: +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; -- [WebSocket](/download/eds-clients/photoniq-eds-ws.min.js) -- SSE (coming soon) +Manage connections to EDS using the JavaScript SDK, which supports both WebSocket and Server-Sent Events (SSE) connections. -## Pre-requisites +## Quick Start + + + + +- Download [Minified JS Script for Browsers](/download/eds-clients/photoniq-eds-sdk.min.js) -- Download `photoniq-eds-ws.min.js` or `photoniq-eds-sse.min.js` from section above. - Attach the module to your html: ```html - - - + ``` -## Basic Example +- Basic Example: Connect to Event Delivery Service, retrieve and subsribe to SQL: ```js @@ -29,7 +31,7 @@ let config = { fabric: "", }; -let connection = PhotoniqEdsWs.connect(config); +let connection = PhotoniqEdsSdk.connect(config); let querySet = connection.querySet(); @@ -38,28 +40,82 @@ querySet.retrieveAndSubscribe("SELECT * FROM WHERE key= + + + +- Download [Node.JS module](/download/eds-clients/photoniq-eds-sdk.zip) + +- Link the module in another project by the next command: + +``` +npm link ../photoniq-eds-sdk +``` + +- Add dependency in the project: + +[Vue](https://vuejs.org/) Framework Example: +```js +import { connect } from 'photoniq-eds-sdk'; + +export default { + name: 'App', + mounted() { + this.initializePhotoniqEdsSdk(); + }, + methods: { + initializePhotoniqEdsSdk() { + let connection = connect({ + host: "", + customerId: "", + apiKey: "", + fabric: "", + }); + + let qs = connection.querySet(); + + qs.retrieve("SELECT * FROM WHERE key=", (event) => { + console.log(`Message event: `, event); + }); + } + } +} +``` + + + + :::note -The example uses the WebSocket client. To use an SSE connection, replace `PhotoniqEdsWs` with `PhotoniqEdsSse`. +The example uses a WebSocket connection. To switch to an SSE connection, add connectionTypes: `["sse"]` to the config. For a priority connection that falls back to WebSocket in case of network issues, use connectionTypes: `["sse", "ws"]`. ::: +## Supported Methods -## Config Schema +### Connect -| **Property** | **Type** | **Requred** | **Description** | -|----------------------|-----------|-----------|-----------------------------------| -| `host` | `string` | Yes | Host of the connectionn | -| `fabric` | `string` | No | Fabric to be used. Default is `_system` | -| `customerId` | `string` | Yes | Customer ID credentails | -| `apiKey` | `string` | Yes | ApiKey credentails | -| `pingSeconds` | `number` | No | Seconds between ping-pong messages to the server. Default is `29` | +Create a new [`Connection`](/photoniq/event-delivery/clients/Connection) instance and establish connection to PhotonIQ EDS server: +```js +let connection: Connection = PhotoniqEdsSdk.connect(config); +``` -## Disconnect +### Create -To gracefully disconnect from the Event Delivery Service: +Create a new [`Connection`](/photoniq/event-delivery/clients/Connection) instance: ```js -connection.disconnect(); +let connection = PhotoniqEdsSdk.create(config); ``` +#### `Config` instance schema: +| **Property** | **Type** | **Requred** | **Description** | +|----------------------|-----------|-----------|-----------------------------------| +| `host` | `string` | Yes | Host of the connectionn | +| `customerId` | `string` | Yes | Customer ID credentails | +| `apiKey` | `string` | Yes | ApiKey credentails | +| `fabric` | `string` | No | Fabric to be used. Default is `_system` | +| `connectionTypes` | `string[]` | No | Use type of connection and priority. Default is `["ws"]`. Types: `ws`, `sse` | +| `queryType` | `string` | No | Type of query to use. Types: `"SQL"` | +| `autoReconnect` | `boolean` | No | Automatically reconnect in case of network issues. Default is `true` | +| `pingSeconds` | `number` | No | Seconds between ping-pong messages to the WebSocket server. Default is `29` | diff --git a/docs/photoniq/event-delivery/clients/listeners-and-errors.md b/docs/photoniq/event-delivery/clients/listeners-and-errors.md index 8237d1d52d..222609c91d 100644 --- a/docs/photoniq/event-delivery/clients/listeners-and-errors.md +++ b/docs/photoniq/event-delivery/clients/listeners-and-errors.md @@ -15,8 +15,8 @@ The listener can be attached to the client when use `connect` method to Event De let globalListener = function(event) { if (event.type === "open") { console.log('EDS connection established: ', event); - } else if (event.type === "connection-id") { - console.log("EDS assigned connection's ID: " + event.data); + } else if (event.type === "properties") { + console.log("EDS assigned properties: ", event.data); } else if (event.type === "server-global-error") { console.log(`EDS replied with an Error: `, event); }else if (event.type === "server-query-error") { @@ -32,7 +32,7 @@ let globalListener = function(event) { } }; -let connection = PhotoniqEdsWs.connect({ +let connection = PhotoniqEdsSdk.connect({ host: ".photoniq.macrometa.io", customerId: "", apiKey: "", @@ -61,7 +61,7 @@ The `type` property can have the next `EDSEventType` enum values: | **Type** | **Description** | |----------------------|---------------------------| | `open` | Openned WebSocket/SSE connection | -| `connection-id` | Received a connection ID | +| `properties` | Received properties of connection | | `server-query-error` | Server-side error related to a query | | `server-global-error` | Server-side error **not** related to a query | | `client-query-error` | Client-side error related to a query | diff --git a/docs/photoniq/event-delivery/clients/query-set-and-batch.md b/docs/photoniq/event-delivery/clients/query-set-and-batch.md index a4e632d094..0569ea9320 100644 --- a/docs/photoniq/event-delivery/clients/query-set-and-batch.md +++ b/docs/photoniq/event-delivery/clients/query-set-and-batch.md @@ -21,6 +21,13 @@ querySet.retrieve("SELECT * FROM WHERE key=", (event }) ``` +| **Argument** | **Type** | **Requred** | **Description** | +|--------------|------------|----------|------------------------| +| `query` | `string` | Yes | SQL query to retrieve/listen | +| `resultListener`| `function` | Yes | [Info](/photoniq/event-delivery/clients/listeners-and-errors#result-listener) | +| `errorListener`| `function` | No | [Info](/photoniq/event-delivery/clients/listeners-and-errors#error-listener) | +| `compress` | `boolean` | No | Compress incoming initial data. | + ### retrieveAndSubscribe Retrieves initial data and subscribes to changes in the query: @@ -30,6 +37,13 @@ querySet.retrieveAndSubscribe("SELECT * FROM WHERE key= WHERE key=", (even }) ``` +| **Argument** | **Type** | **Requred** | **Description** | +|--------------|------------|----------|-------------------| +| `query` | `string` | Yes | SQL query to retrieve/listen | +| `resultListener`| `function` | Yes | [Info](/photoniq/event-delivery/clients/listeners-and-errors#result-listener) | +| `errorListener`| `function` | No | [Info](/photoniq/event-delivery/clients/listeners-and-errors#error-listener) | + ### unubscribe Removes a subscription if the query was subscribed in the `QuerySet`. This applies only to the `retrieveAndSubscribe` and `subscribe` methods: diff --git a/static/download/eds-clients/photoniq-eds-sdk.min.js b/static/download/eds-clients/photoniq-eds-sdk.min.js new file mode 100644 index 0000000000..95031ed7d9 --- /dev/null +++ b/static/download/eds-clients/photoniq-eds-sdk.min.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.PhotoniqEdsSdk=t():e.PhotoniqEdsSdk=t()}(this,(()=>(()=>{"use strict";var e={d:(t,r)=>{for(var i in r)e.o(r,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:r[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{connect:()=>m,create:()=>b});const r="x-photoniq-es";var i,s;!function(e){e.Open="open",e.Close="close",e.Properties="properties",e.ServerQueryError="server-query-error",e.ServerGlobalError="server-global-error",e.ClientQueryError="client-query-error",e.ClientGlobalError="client-global-error",e.Message="message"}(i||(i={})),function(e){e.Closed="closed",e.Connecting="connecting",e.Open="open",e.Closing="closing"}(s||(s={}));var n=function(e,t,r,i){return new(r||(r=Promise))((function(s,n){function o(e){try{l(i.next(e))}catch(e){n(e)}}function c(e){try{l(i.throw(e))}catch(e){n(e)}}function l(e){var t;e.done?s(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,c)}l((i=i.apply(e,t||[])).next())}))};function o(e){for(let t in e){let r=t.split(".");if(r.length<=1)continue;let i=e;for(let e=0;ee.charCodeAt(0))),r=new Blob([t],{type:"application/octet-stream"}),i=new DecompressionStream("gzip"),s=r.stream().pipeThrough(i),n=yield new Response(s);return yield n.text()}))}class l{constructor(e,t){this.STUB_FILTER="%7B%22action%22%3A%22remove%22%2C%22queries%22%3A%5B%22SELECT%20%2A%20FROM%20fake%22%5D%7D",this.DEFAULT_PING_SECONDS=29,this.properties={},this.config=e,this.filtersState=t}connect(){let e=this;const t=`wss://${this.config.host}/api/es/v1/subscribe?type=collection&x-customer-id=${this.config.customerId}&apiKey=${this.config.apiKey}&fabric=${this.config.fabric}&filters=${this.STUB_FILTER}`;this.ws=new WebSocket(t),this.ws.addEventListener("open",(function(t){var r;null===(r=e.openListener)||void 0===r||r.call(e,t);let i=e.filtersState.activeFilters();for(const t of i)e.send(t);e.updatePingInterval()})),this.ws.addEventListener("message",(function(t){var i;if(e.properties[r])(function(e){return n(this,void 0,void 0,(function*(){return new Promise(((t,r)=>{try{t(JSON.parse(e))}catch(i){try{c(e).then((e=>t(JSON.parse(e))))}catch(e){r(e)}}}))}))})(t.data).then((t=>{var r,i;if(t.error)null===(i=e.errorListener)||void 0===i||i.call(e,t,!0);else for(let i in t){let s=t[i],n=e.filtersState.filterForQuery(i);if(n){e.filtersState.increment(n),null===(r=e.messageListener)||void 0===r||r.call(e,i,n,s);let t=e.filtersState.tryToRemove(n,i);t&&e.send(t)}}}));else{const r=t.data.split("\n");for(const t of r){const r=t.split(":");2==r.length&&(e.properties[r[0].trim()]=r[1].trim())}null===(i=e.propertiesListener)||void 0===i||i.call(e,e.properties)}e.updatePingInterval()})),this.ws.addEventListener("close",(function(t){var r;null===(r=e.closeListener)||void 0===r||r.call(e,t)})),this.ws.addEventListener("error",(function(t){var r;null===(r=e.errorListener)||void 0===r||r.call(e,t,!1)}))}onOpen(e){this.openListener=e}onProperties(e){this.propertiesListener=e}onMessage(e){this.messageListener=e}onClose(e){this.closeListener=e,this.pingIntervalId&&clearInterval(this.pingIntervalId)}onError(e){this.errorListener=e}send(e){var t;this.getStatus()===s.Open&&(null===(t=this.ws)||void 0===t||t.send(JSON.stringify(e)))}disconnect(){return!!this.ws&&(this.ws.close(),!0)}getStatus(){var e;switch(null===(e=this.ws)||void 0===e?void 0:e.readyState){case WebSocket.CONNECTING:return s.Connecting;case WebSocket.OPEN:return s.Open;case WebSocket.CLOSING:return s.Closing;default:return s.Closed}}getId(){return this.properties[r]}getProperty(e){return this.properties[e]}getProperties(){return this.properties}updatePingInterval(){var e;void 0!==this.pingIntervalId&&(clearInterval(this.pingIntervalId),this.pingIntervalId=void 0);let t=this;(!t.config.pingSeconds||t.config.pingSeconds>0)&&(this.pingIntervalId=setInterval((()=>{var e;t.getStatus()===s.Open&&(null===(e=t.ws)||void 0===e||e.send("{1}"))}),1e3*(null!==(e=t.config.pingSeconds)&&void 0!==e?e:this.DEFAULT_PING_SECONDS)))}}class a{constructor(e,t){this.properties={},this.url=e,this.headers=t}onOpen(e){this.openListener=e}onProperties(e){this.propertiesListener=e}onMessage(e){this.messageListener=e}onError(e){this.errorListener=e}onClose(e){this.closeListener=e}connect(e){return t=this,r=void 0,s=function*(){var t,r,i,s,n,o;try{const o=yield fetch(this.url,{method:"POST",headers:this.headers,body:JSON.stringify(e)});o.ok?null===(r=this.openListener)||void 0===r||r.call(this,o):null===(t=this.errorListener)||void 0===t||t.call(this,o);const c=o.body;let l,a="";for(this.reader=c.getReader();!(l=yield this.reader.read()).done;){let e,t=new TextDecoder("utf-8").decode(l.value);for(a+=t;(e=a.indexOf("\n\n"))>-1;){let r=!1,n=a.substring(0,e);if(a=a.substring(e+2),n.startsWith(":")){const e=t.split("\n");for(const t of e){const e=t.split(":");3==e.length&&(this.properties[e[1].trim()]=e[2].trim(),r=!0)}}else{let e=n.indexOf(":");if(e>-1){let t=n.substring(0,e).trim();" "===n[e+1]&&e++,e++;let r=n.substring(e).replace(/\ndata: ?/g,"\n");"data"===t?null===(i=this.messageListener)||void 0===i||i.call(this,r):console.warn(`Not supported message with type of message ${t}: ${r}`)}}r&&(null===(s=this.propertiesListener)||void 0===s||s.call(this,this.properties))}}null===(n=this.closeListener)||void 0===n||n.call(this,"Connection closed")}catch(e){null===(o=this.errorListener)||void 0===o||o.call(this,e)}},new((i=void 0)||(i=Promise))((function(e,n){function o(e){try{l(s.next(e))}catch(e){n(e)}}function c(e){try{l(s.throw(e))}catch(e){n(e)}}function l(t){var r;t.done?e(t.value):(r=t.value,r instanceof i?r:new i((function(e){e(r)}))).then(o,c)}l((s=s.apply(t,r||[])).next())}));var t,r,i,s}disconnect(){var e;null===(e=this.reader)||void 0===e||e.cancel()}getProperty(e){return this.properties[e]}getProperties(){return this.properties}}const u="FALSE",h="TRUE",d="add",f="remove";class p{constructor(e,t){this.config=e,this.queries=new Map,this.globalListener=t}calculateFilter(e,t,r){return{action:e,queries:[t],initialData:r.querySets.some((e=>e.initialData&&0===e.count))?h:void 0,once:r.querySets.every((e=>e.once))?h:void 0,compress:r.querySets.some((e=>e.compress))?h:void 0,filterType:this.config.queryType}}increment(e){for(const t of e.querySets)t.count++}tryToRemove(e,t){if(e.querySets.every((e=>e.once)))return this.queries.delete(t),{action:f,queries:[t]}}equalFiltersWithoutQueries(e,t){return e.action===t.action&&e.compress===t.compress&&e.initialData===t.initialData&&e.once===t.once}addQueries(e,t,r,i,s){let n=[];for(const o of e){let e=this.queries.get(o.query);if(e){let c=this.calculateFilter(d,o.query,e),l=e.querySets.find((e=>e.querySet===s));if(l)l.initialData=t,l.once=r,l.compress=i,t&&(l.count=0),-1==l.callbacks.indexOf(o.listener)&&l.callbacks.push(o.listener),-1==l.errorCallbacks.indexOf(o.errorListener)&&l.errorCallbacks.push(o.errorListener);else{let n=[];o.listener&&n.push(o.listener);let c=[];o.errorListener&&c.push(o.errorListener),e.querySets.push({querySet:s,initialData:t,compress:i,once:r,count:0,callbacks:o.listener?[o.listener]:[],errorCallbacks:o.errorListener?[o.errorListener]:[]})}let a=this.calculateFilter(d,o.query,e);if(!this.equalFiltersWithoutQueries(c,a)){let e=n.find((e=>this.equalFiltersWithoutQueries(e,a)));e?e.queries.push(o.query):n.push(a)}}else{let e={querySets:[{querySet:s,initialData:t,compress:i,once:r,count:0,callbacks:o.listener?[o.listener]:[],errorCallbacks:o.errorListener?[o.errorListener]:[]}]};this.queries.set(o.query,e);let c=this.calculateFilter(d,o.query,e),l=n.find((e=>this.equalFiltersWithoutQueries(e,c)));l?l.queries.push(o.query):n.push(c)}}return n}filterForQuery(e){return this.queries.get(e)}removeAllQueries(e){let t=Array.from(this.queries.keys());return this.removeQueries(t,e)}removeQueries(e,t){let r=[];for(const i of e){let e=!0,s=this.queries.get(i);if(s){let r=s.querySets.findIndex((e=>e.querySet===t));r>-1&&s.querySets.splice(r,1),s.querySets.length&&(e=!1)}e&&(this.queries.delete(i),r.push(i))}if(r.length)return{action:f,queries:r}}activeFilters(){let e=[];for(const[t,r]of this.queries){const i=this.calculateFilter(d,t,r);let s=e.find((e=>this.equalFiltersWithoutQueries(e,i)));s?s.queries.push(t):e.push(i)}return e}handleErrorListeners(e,t,r){for(let i of e)try{i(r)}catch(e){console.warn(`Error while handling error listener for query: ${t}`,e)}}handleGlobalListener(e){var t;try{null===(t=this.globalListener)||void 0===t||t.call(this,e)}catch(e){console.warn("Error while handling global error listener",e)}}}class v{constructor(e,t){this.ENCODED_GZ_CONTENT="encoded-gz-content: ",this.FAILED_TO_PARSE_QUERY="Failed to parse query: ",this.config=e,this.filtersState=t,this.url=`https://${this.config.host}/api/es/sse/v1/subscribe`,this.headers={"Content-Type":"application/json",Authorization:`${this.config.apiKey}`,"x-customer-id":`${this.config.customerId}`},this.status=s.Closed}send(e){e&&(this.eventSource&&(this.eventSource.disconnect(),this.eventSource=void 0),this.connect())}connect(){if(this.eventSource)throw Error("SSE connection already opened");let e=this.filtersState.activeFilters();this.retrieve(e)}retrieve(e){var t;let r=e.filter((e=>e.initialData===h)).map((e=>e.queries)).reduce(((e,t)=>e.concat(t)),[]);if(!r.length)return void this.subscribe(e);let i=e.filter((e=>e.initialData===h)).some((e=>e.compress)),n={type:"collection",fabric:this.config.fabric,filters:{once:h,compress:i?h:u,initialData:h,queries:r}},o=this;this.eventSource||null===(t=this.openListener)||void 0===t||t.call(this,"SSE connection opened"),this.eventSource=new a(this.url,this.headers),this.eventSource.onOpen((e=>{var t;o.status===s.Connecting&&(o.status=s.Open,null===(t=o.openListener)||void 0===t||t.call(o,e))})),this.eventSource.onProperties((e=>{var t;null===(t=o.propertiesListener)||void 0===t||t.call(o,e)})),this.eventSource.onError((e=>{var t;null===(t=o.errorListener)||void 0===t||t.call(o,e,!1)})),this.eventSource.onMessage((t=>{o.handleMessage(t).then((t=>{var r;t&&(null===(r=o.eventSource)||void 0===r||r.disconnect(),o.eventSource=void 0,o.subscribe(e))}))})),this.status===s.Closed&&(this.status=s.Connecting),this.eventSource.connect(n)}subscribe(e){let t=e.filter((e=>e.once!==h)).map((e=>e.queries)).reduce(((e,t)=>e.concat(t)),[]);if(!t.length)return;let r=e.filter((e=>e.once!==h)).some((e=>e.compress)),i={type:"collection",fabric:this.config.fabric,filters:{action:d,filterType:"SQL",once:u,compress:r?h:u,initialData:u,queries:t}},n=this;this.eventSource=new a(this.url,this.headers),this.eventSource.onOpen((e=>{var t;n.status===s.Connecting&&(n.status=s.Open,null===(t=n.openListener)||void 0===t||t.call(n,e))})),this.eventSource.onError((e=>{var t;null===(t=n.errorListener)||void 0===t||t.call(n,e,!1)})),this.eventSource.onProperties((e=>{var t;null===(t=n.propertiesListener)||void 0===t||t.call(n,e)})),this.eventSource.onMessage((e=>{n.handleMessage(e)})),this.eventSource.onClose((e=>{var t;this.status===s.Closing&&(this.status=s.Closed,null===(t=n.closeListener)||void 0===t||t.call(n,e))})),this.status===s.Closed&&(this.status=s.Connecting),this.eventSource.connect(i)}onOpen(e){this.openListener=e}onProperties(e){this.propertiesListener=e}onMessage(e){this.messageListener=e}onClose(e){this.closeListener=e}onError(e){this.errorListener=e}getStatus(){return this.status}disconnect(){var e;return!!this.eventSource&&(this.status=s.Closing,null===(e=this.eventSource)||void 0===e||e.disconnect(),this.eventSource=void 0,!0)}getId(){return this.getProperty(r)}getProperty(e){var t;return null===(t=this.eventSource)||void 0===t?void 0:t.getProperty(e)}getProperties(){return this.eventSource?this.eventSource.getProperties():{}}handleMessage(e){return this.tryToDecodeData(e).then((e=>{var t,r;if(e.error)return null===(r=this.errorListener)||void 0===r||r.call(this,e,!0),!1;for(let r in e){let i=e[r],s=this.filtersState.filterForQuery(r);s&&(this.filtersState.increment(s),null===(t=this.messageListener)||void 0===t||t.call(this,r,s,i),this.filtersState.tryToRemove(s,r))}return!0}))}tryToDecodeData(e){return t=this,r=void 0,s=function*(){return new Promise(((t,r)=>{if(e.startsWith(this.ENCODED_GZ_CONTENT))try{c(e.substring(this.ENCODED_GZ_CONTENT.length)).then((e=>t(JSON.parse(e))))}catch(e){r(e)}else if(e.startsWith(this.FAILED_TO_PARSE_QUERY))t({error:e,code:400});else try{t(JSON.parse(e))}catch(e){r(e)}}))},new((i=void 0)||(i=Promise))((function(e,n){function o(e){try{l(s.next(e))}catch(e){n(e)}}function c(e){try{l(s.throw(e))}catch(e){n(e)}}function l(t){var r;t.done?e(t.value):(r=t.value,r instanceof i?r:new i((function(e){e(r)}))).then(o,c)}l((s=s.apply(t,r||[])).next())}));var t,r,i,s}}class g{constructor(e,t,r){this.subscribeQueries=[],this.retrieveAndSubscribeQueries=[],this.retrieveQueries=[],this.unsubscribeQueries=[],this.querySet=e,this.connection=t,this.filtersState=r}subscribe(e,t,r){return this.subscribeQueries.push({query:e,listener:t,errorListener:r,compress:!1}),this}retrieveAndSubscribe(e,t,r,i){return this.retrieveAndSubscribeQueries.push({query:e,listener:t,errorListener:r,compress:!0===i}),this}retrieve(e,t,r,i){return this.retrieveQueries.push({query:e,listener:t,errorListener:r,compress:!0===i}),this}unsubscribe(e){return this.unsubscribeQueries.push(e),this}assemble(){let e=this.retrieveQueries.some((e=>e.compress)),t=this.filtersState.addQueries(this.retrieveQueries,!0,!0,e,this.querySet),r=this.retrieveAndSubscribeQueries.some((e=>e.compress)),i=this.filtersState.addQueries(this.retrieveAndSubscribeQueries,!0,!1,r,this.querySet);this.joinFilters(t,i);let s=this.filtersState.addQueries(this.subscribeQueries,!1,!1,!1,this.querySet);this.joinFilters(t,s);for(const e of t)this.connection.send(e);let n=this.filtersState.removeQueries(this.unsubscribeQueries,this.querySet);n&&this.connection.send(n)}joinFilters(e,t){for(const r of t){let t=e.find((e=>this.filtersState.equalFiltersWithoutQueries(e,r)));t?t.queries.push(...r.queries):e.push(r)}}}class S{constructor(e,t){this.connection=e,this.filtersState=t}subscribe(e,t,r){let i=[{query:e,listener:t,errorListener:r,compress:!1}],s=this.filtersState.addQueries(i,!1,!1,!1,this);for(const e of s)this.connection.send(e)}retrieveAndSubscribe(e,t,r,i){let s=[{query:e,listener:t,errorListener:r,compress:!0===i}],n=this.filtersState.addQueries(s,!0,!1,!0===i,this);for(const e of n)this.connection.send(e)}retrieve(e,t,r,i){let s=[{query:e,listener:t,errorListener:r,compress:!0===i}],n=this.filtersState.addQueries(s,!0,!0,!0===i,this);for(const e of n)this.connection.send(e)}unsubscribe(e){let t=this.filtersState.removeQueries([e],this);t&&this.connection.send(t)}unsubscribeAll(){let e=this.filtersState.removeAllQueries(this);e&&this.connection.send(e)}batch(){return new g(this,this.connection,this.filtersState)}}class y{constructor(e,t){this.connectionTypes=["ws"],this.reconnection=-1,this.config=e,this.filtersState=new p(e,t)}connect(){var e;if(this.connection)throw new Error(`Already connected with status: ${this.getStatus()}`);(null===(e=this.config.connectionTypes)||void 0===e?void 0:e.length)&&(this.connectionTypes=this.config.connectionTypes);let t=this.connectionTypes[this.reconnection%this.connectionTypes.length];switch(t){case"ws":this.connection=new l(this.config,this.filtersState);break;case"sse":this.connection=new v(this.config,this.filtersState);break;default:throw new Error(`Connection type not supported: ${t}`)}let r=this;this.connection.onOpen((function(e){let t=r.reconnection;if(r.reconnection=0,-1===t){const t={type:i.Open,connection:r,data:e};r.filtersState.handleGlobalListener(t)}})),this.connection.onProperties((function(e){const t={type:i.Properties,connection:r,data:e};r.filtersState.handleGlobalListener(t)})),this.connection.onMessage((function(e,t,s){let n=s,c=Array.isArray(n);if(c)for(let e=0;e-1){let e=Math.pow(2,6+r.reconnection++);setTimeout((function(){r.connect()}),e)}else{r.reconnection=-1;const t={type:i.Close,connection:r,data:e};r.filtersState.handleGlobalListener(t)}})),this.connection.connect()}send(e){var t;null===(t=this.connection)||void 0===t||t.send(e)}disconnect(){var e;return-1!==this.reconnection&&(this.reconnection=-1,null===(e=this.connection)||void 0===e||e.disconnect(),!0)}getConfig(){return this.config}getStatus(){return-1===this.reconnection?s.Closed:this.connection?this.connection.getStatus():s.Connecting}getId(){var e;return null===(e=this.connection)||void 0===e?void 0:e.getId()}getProperty(e){var t;return null===(t=this.connection)||void 0===t?void 0:t.getProperty(e)}getProperties(){return this.connection?this.connection.getProperties():{}}querySet(){return new S(this,this.filtersState)}}function b(e,t){return new y(e,t)}function m(e,t){let r=new y(e,t);return r.connect(),r}return t})())); \ No newline at end of file diff --git a/static/download/eds-clients/photoniq-eds-sdk.zip b/static/download/eds-clients/photoniq-eds-sdk.zip new file mode 100644 index 0000000000000000000000000000000000000000..a21c4da5fe099fa7cda462b9d5ad8dc6ab60f76e GIT binary patch literal 130225 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ⓈXy7N;EM) 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 literal 0 HcmV?d00001 diff --git a/static/download/eds-clients/photoniq-eds-ws.min.js b/static/download/eds-clients/photoniq-eds-ws.min.js deleted file mode 100644 index 762671527b..0000000000 --- a/static/download/eds-clients/photoniq-eds-ws.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.PhotoniqEdsWs=t():e.PhotoniqEdsWs=t()}(this,(()=>(()=>{"use strict";var e={670:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Connection=t.EDSEventType=void 0;const r=s(721);var i;!function(e){e.Open="open",e.Close="close",e.ConnectionId="connection-id",e.ServerQueryError="server-query-error",e.ServerGlobalError="server-global-error",e.ClientQueryError="client-query-error",e.ClientGlobalError="client-global-error",e.Message="message"}(i||(t.EDSEventType=i={})),t.Connection=class{constructor(e,t){this.queriesToQuerySetsAndCallbacks=new Map,this.waitingMessages=[],this.config=e,this.globalListener=t}connect(){const e=`wss://${this.config.host}/api/es/v1/subscribe?type=collection&x-customer-id=${this.config.customerId}&apiKey=${this.config.apiKey}&fabric=${this.config.fabric}&filters=%7B%22action%22%3A%22remove%22%2C%22queries%22%3A%5B%22SELECT%20%2A%20FROM%20fake%22%5D%7D`;this.ws=new WebSocket(e);let t=this;this.ws.addEventListener("open",(function(e){var s;for(let e of t.waitingMessages)null===(s=t.ws)||void 0===s||s.send(e);t.waitingMessages=[];const r={type:i.Open,connection:t,data:e};t.handleGlobalListener(r),t.updatePingInterval()})),this.ws.addEventListener("message",(function(e){let s=e.data;if(t.id){let e=JSON.parse(s);if(e.error){let s=e.error;const r="Error parsing SQL query:";if(s.startsWith(r)){let n=s.substring(r.length,s.indexOf("ERROR")).trim();const o={type:i.ServerQueryError,connection:t,data:void 0,code:e.code,message:s,query:n};let l=t.queriesToQuerySetsAndCallbacks.get(n);l&&t.handleErrorListenerForMap(l,n,o),t.handleGlobalListener(o)}else{const r={type:i.ServerGlobalError,connection:t,data:void 0,code:e.code,message:s};t.handleGlobalListener(r)}}else for(let s in e){let r=t.queriesToQuerySetsAndCallbacks.get(s);if(r){let n=e[s];if(r.initial&&0===r.count)for(let e=0;e-1){const r=e+13+1,n=s.indexOf("\n",r);t.id=parseInt(s.substring(r,n).trim());const o={type:i.ConnectionId,connection:t,data:t.id};t.handleGlobalListener(o)}}})),this.ws.addEventListener("close",(function(e){t.pingIntervalId&&clearInterval(t.pingIntervalId);const s={type:i.Close,connection:t,data:e};t.handleGlobalListener(s)})),this.ws.addEventListener("error",(function(e){const s={type:i.ClientGlobalError,connection:t,data:e,message:"Client error"};t.handleGlobalListener(s)}))}send(e){var t;this.isConnected()?(null===(t=this.ws)||void 0===t||t.send(e),this.updatePingInterval()):this.waitingMessages.push(e)}querySet(){return new r.QuerySet(this,this.queriesToQuerySetsAndCallbacks)}disconnect(){var e;null===(e=this.ws)||void 0===e||e.close()}getConfig(){return this.config}getId(){return this.id}isConnected(){var e;return(null===(e=this.ws)||void 0===e?void 0:e.readyState)===WebSocket.OPEN}convertInitialData(e){for(let t in e){let s=t.split(".");if(s.length<=1)continue;let r=e;for(let e=0;e{var e;null===(e=t.ws)||void 0===e||e.send("{1}")}),null!==(e=t.config.pingSeconds)&&void 0!==e?e:29e3)}}},977:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.QueryBatch=void 0,t.QueryBatch=class{constructor(e,t,s,r,i,n,o,l,a){this.subscribeQueries=[],this.retrieveAndSubscribeQueries=[],this.retrieveQueries=[],this.unsubscribeQueries=[],this.retrieveList=e,this.retrieveAndSubscribeList=t,this.subscribeList=s,this.unsubscribeList=r,this.addCallbackToQueries=i,this.removeCallbacksForQuery=n,this.queriesToQuerySetsAndCallbacks=o,this.querySet=l,this.connection=a}subscribe(e,t,s){return this.subscribeQueries.push({query:e,listener:t,errorListener:s}),this}retrieveAndSubscribe(e,t,s){return this.retrieveAndSubscribeQueries.push({query:e,listener:t,errorListener:s}),this}retrieve(e,t,s){return this.retrieveQueries.push({query:e,listener:t,errorListener:s}),this}unsubscribe(e){return this.unsubscribeQueries.push(e),this}assemble(){this.retrieveList(this.retrieveQueries,this.addCallbackToQueries,this.queriesToQuerySetsAndCallbacks,this.querySet,this.connection),this.retrieveAndSubscribeList(this.retrieveAndSubscribeQueries,this.addCallbackToQueries,this.queriesToQuerySetsAndCallbacks,this.querySet,this.connection),this.subscribeList(this.subscribeQueries,this.addCallbackToQueries,this.queriesToQuerySetsAndCallbacks,this.querySet,this.connection),this.unsubscribeList(this.unsubscribeQueries,this.removeCallbacksForQuery,this.queriesToQuerySetsAndCallbacks,this.querySet,this.connection)}}},721:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.QuerySet=void 0;const r=s(977);t.QuerySet=class{constructor(e,t){this.connection=e,this.queriesToQuerySetsAndCallbacks=t}subscribe(e,t,s){this.subscribeList([{query:e,listener:t,errorListener:s}],this.addCallbackToQueries,this.queriesToQuerySetsAndCallbacks,this,this.connection)}subscribeList(e,t,s,r,i){let n=[];for(const i of e){let e=t([i.query],i.listener,i.errorListener,!1,!1,s,r);n.push(...e)}if(n.length){const e=JSON.stringify({action:"add",queries:n});i.send(e)}}retrieveAndSubscribe(e,t,s){this.retrieveAndSubscribeList([{query:e,listener:t,errorListener:s}],this.addCallbackToQueries,this.queriesToQuerySetsAndCallbacks,this,this.connection)}retrieveAndSubscribeList(e,t,s,r,i){let n=[];for(const i of e){let e=t([i.query],i.listener,i.errorListener,!1,!0,s,r);n.push(...e)}if(n.length){const e=JSON.stringify({action:"add",initialData:"TRUE",queries:n});i.send(e)}}retrieve(e,t,s){this.retrieveList([{query:e,listener:t,errorListener:s}],this.addCallbackToQueries,this.queriesToQuerySetsAndCallbacks,this,this.connection)}retrieveList(e,t,s,r,i){let n=[];for(const i of e){let e=t([i.query],i.listener,i.errorListener,!0,!0,s,r);n.push(...e)}if(n.length){const e=JSON.stringify({action:"add",once:"TRUE",initialData:"TRUE",queries:n});i.send(e)}}unsubscribe(e){this.unsubscribeList([e],this.removeCallbacksForQuery,this.queriesToQuerySetsAndCallbacks,this,this.connection)}unsubscribeList(e,t,s,r,i){let n=t(e,s,r);if(n.length){const e=JSON.stringify({action:"remove",queries:n});i.send(e)}}unsubscribeAll(){let e=Array.from(this.queriesToQuerySetsAndCallbacks.keys());this.unsubscribeList(e,this.removeCallbacksForQuery,this.queriesToQuerySetsAndCallbacks,this,this.connection)}batch(){return new r.QueryBatch(this.retrieveList,this.retrieveAndSubscribeList,this.subscribeList,this.unsubscribeList,this.addCallbackToQueries,this.removeCallbacksForQuery,this.queriesToQuerySetsAndCallbacks,this,this.connection)}addCallbackToQueries(e,t,s,r,i,n,o){let l=[];for(let a of e){let e=n.get(a);if(e){if(e.once!==r)return l}else e={qsCb:new Map,qsErrCb:new Map,once:!1,initial:!1,count:0};(0===e.qsCb.size||e.once!==r)&&(e.once=r,e.count=0,e.initial=i,l.push(a));let c=e.qsCb.get(o);if(null!=c||(c=[]),c.push(t),e.qsCb.set(o,c),s){let t=e.qsErrCb.get(o);null!=t||(t=[]),t.push(s),e.qsErrCb.set(o,t)}n.set(a,e)}return l}removeCallbacksForQuery(e,t,s){let r=[];for(let i of e){let e=t.get(i);e&&(e.qsCb.delete(s),e.qsErrCb.delete(s),0===e.qsCb.size&&(t.delete(i),r.push(i)))}return r}}}},t={};function s(r){var i=t[r];if(void 0!==i)return i.exports;var n=t[r]={exports:{}};return e[r](n,n.exports,s),n.exports}var r={};return(()=>{var e=r;Object.defineProperty(e,"__esModule",{value:!0}),e.connect=void 0;const t=s(670);e.connect=function(e,s){let r=new t.Connection(e,s);return r.connect(),r}})(),r})())); \ No newline at end of file From f53ca18ad663b5aa4599bfb250170904a7a1c906 Mon Sep 17 00:00:00 2001 From: Dmytro Lazarenko Date: Wed, 28 Aug 2024 17:30:14 -0700 Subject: [PATCH 2/3] Update EDS SDK --- docs/photoniq/event-delivery/clients/index.md | 28 ++++++++++-------- .../eds-clients/photoniq-eds-sdk.min.js | 2 +- .../download/eds-clients/photoniq-eds-sdk.zip | Bin 130225 -> 0 bytes 3 files changed, 17 insertions(+), 13 deletions(-) delete mode 100644 static/download/eds-clients/photoniq-eds-sdk.zip diff --git a/docs/photoniq/event-delivery/clients/index.md b/docs/photoniq/event-delivery/clients/index.md index 6e4f3f4eb2..693d122dbd 100644 --- a/docs/photoniq/event-delivery/clients/index.md +++ b/docs/photoniq/event-delivery/clients/index.md @@ -1,21 +1,27 @@ --- sidebar_position: 1 -title: Event Delivery Client SDKs +title: Getting Started with Event Delivery Client SDK --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -Manage connections to EDS using the JavaScript SDK, which supports both WebSocket and Server-Sent Events (SSE) connections. +PhotonIQ offers SDK to enable you connect to and deliver event streams to your applications, services, and several other data-volatile use cases. It supports both WebSocket and Server-Sent Events (SSE) connections. ## Quick Start +This section demonstrates some simple tasks to help get you started using this client SDK in two ways. + +This quickstart guide will guide you through: +- Connecting to an event delivery service +- Querying and subscribing that service and receiving query results and updates + - + -- Download [Minified JS Script for Browsers](/download/eds-clients/photoniq-eds-sdk.min.js) +- Download [`photoniq-eds-sdk.min.js`](/download/eds-clients/photoniq-eds-sdk.min.js) client SDK. -- Attach the module to your html: +- Attach the Javascript module to html code: ```html ``` @@ -42,14 +48,12 @@ querySet.retrieveAndSubscribe("SELECT * FROM WHERE key= - - -- Download [Node.JS module](/download/eds-clients/photoniq-eds-sdk.zip) + -- Link the module in another project by the next command: +- Install the module: ``` -npm link ../photoniq-eds-sdk +npm i photoniq-eds-sdk ``` - Add dependency in the project: @@ -61,10 +65,10 @@ import { connect } from 'photoniq-eds-sdk'; export default { name: 'App', mounted() { - this.initializePhotoniqEdsSdk(); + this.initialize(); }, methods: { - initializePhotoniqEdsSdk() { + initialize() { let connection = connect({ host: "", customerId: "", diff --git a/static/download/eds-clients/photoniq-eds-sdk.min.js b/static/download/eds-clients/photoniq-eds-sdk.min.js index 95031ed7d9..9e0bea88ff 100644 --- a/static/download/eds-clients/photoniq-eds-sdk.min.js +++ b/static/download/eds-clients/photoniq-eds-sdk.min.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.PhotoniqEdsSdk=t():e.PhotoniqEdsSdk=t()}(this,(()=>(()=>{"use strict";var e={d:(t,r)=>{for(var i in r)e.o(r,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:r[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{connect:()=>m,create:()=>b});const r="x-photoniq-es";var i,s;!function(e){e.Open="open",e.Close="close",e.Properties="properties",e.ServerQueryError="server-query-error",e.ServerGlobalError="server-global-error",e.ClientQueryError="client-query-error",e.ClientGlobalError="client-global-error",e.Message="message"}(i||(i={})),function(e){e.Closed="closed",e.Connecting="connecting",e.Open="open",e.Closing="closing"}(s||(s={}));var n=function(e,t,r,i){return new(r||(r=Promise))((function(s,n){function o(e){try{l(i.next(e))}catch(e){n(e)}}function c(e){try{l(i.throw(e))}catch(e){n(e)}}function l(e){var t;e.done?s(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,c)}l((i=i.apply(e,t||[])).next())}))};function o(e){for(let t in e){let r=t.split(".");if(r.length<=1)continue;let i=e;for(let e=0;ee.charCodeAt(0))),r=new Blob([t],{type:"application/octet-stream"}),i=new DecompressionStream("gzip"),s=r.stream().pipeThrough(i),n=yield new Response(s);return yield n.text()}))}class l{constructor(e,t){this.STUB_FILTER="%7B%22action%22%3A%22remove%22%2C%22queries%22%3A%5B%22SELECT%20%2A%20FROM%20fake%22%5D%7D",this.DEFAULT_PING_SECONDS=29,this.properties={},this.config=e,this.filtersState=t}connect(){let e=this;const t=`wss://${this.config.host}/api/es/v1/subscribe?type=collection&x-customer-id=${this.config.customerId}&apiKey=${this.config.apiKey}&fabric=${this.config.fabric}&filters=${this.STUB_FILTER}`;this.ws=new WebSocket(t),this.ws.addEventListener("open",(function(t){var r;null===(r=e.openListener)||void 0===r||r.call(e,t);let i=e.filtersState.activeFilters();for(const t of i)e.send(t);e.updatePingInterval()})),this.ws.addEventListener("message",(function(t){var i;if(e.properties[r])(function(e){return n(this,void 0,void 0,(function*(){return new Promise(((t,r)=>{try{t(JSON.parse(e))}catch(i){try{c(e).then((e=>t(JSON.parse(e))))}catch(e){r(e)}}}))}))})(t.data).then((t=>{var r,i;if(t.error)null===(i=e.errorListener)||void 0===i||i.call(e,t,!0);else for(let i in t){let s=t[i],n=e.filtersState.filterForQuery(i);if(n){e.filtersState.increment(n),null===(r=e.messageListener)||void 0===r||r.call(e,i,n,s);let t=e.filtersState.tryToRemove(n,i);t&&e.send(t)}}}));else{const r=t.data.split("\n");for(const t of r){const r=t.split(":");2==r.length&&(e.properties[r[0].trim()]=r[1].trim())}null===(i=e.propertiesListener)||void 0===i||i.call(e,e.properties)}e.updatePingInterval()})),this.ws.addEventListener("close",(function(t){var r;null===(r=e.closeListener)||void 0===r||r.call(e,t)})),this.ws.addEventListener("error",(function(t){var r;null===(r=e.errorListener)||void 0===r||r.call(e,t,!1)}))}onOpen(e){this.openListener=e}onProperties(e){this.propertiesListener=e}onMessage(e){this.messageListener=e}onClose(e){this.closeListener=e,this.pingIntervalId&&clearInterval(this.pingIntervalId)}onError(e){this.errorListener=e}send(e){var t;this.getStatus()===s.Open&&(null===(t=this.ws)||void 0===t||t.send(JSON.stringify(e)))}disconnect(){return!!this.ws&&(this.ws.close(),!0)}getStatus(){var e;switch(null===(e=this.ws)||void 0===e?void 0:e.readyState){case WebSocket.CONNECTING:return s.Connecting;case WebSocket.OPEN:return s.Open;case WebSocket.CLOSING:return s.Closing;default:return s.Closed}}getId(){return this.properties[r]}getProperty(e){return this.properties[e]}getProperties(){return this.properties}updatePingInterval(){var e;void 0!==this.pingIntervalId&&(clearInterval(this.pingIntervalId),this.pingIntervalId=void 0);let t=this;(!t.config.pingSeconds||t.config.pingSeconds>0)&&(this.pingIntervalId=setInterval((()=>{var e;t.getStatus()===s.Open&&(null===(e=t.ws)||void 0===e||e.send("{1}"))}),1e3*(null!==(e=t.config.pingSeconds)&&void 0!==e?e:this.DEFAULT_PING_SECONDS)))}}class a{constructor(e,t){this.properties={},this.url=e,this.headers=t}onOpen(e){this.openListener=e}onProperties(e){this.propertiesListener=e}onMessage(e){this.messageListener=e}onError(e){this.errorListener=e}onClose(e){this.closeListener=e}connect(e){return t=this,r=void 0,s=function*(){var t,r,i,s,n,o;try{const o=yield fetch(this.url,{method:"POST",headers:this.headers,body:JSON.stringify(e)});o.ok?null===(r=this.openListener)||void 0===r||r.call(this,o):null===(t=this.errorListener)||void 0===t||t.call(this,o);const c=o.body;let l,a="";for(this.reader=c.getReader();!(l=yield this.reader.read()).done;){let e,t=new TextDecoder("utf-8").decode(l.value);for(a+=t;(e=a.indexOf("\n\n"))>-1;){let r=!1,n=a.substring(0,e);if(a=a.substring(e+2),n.startsWith(":")){const e=t.split("\n");for(const t of e){const e=t.split(":");3==e.length&&(this.properties[e[1].trim()]=e[2].trim(),r=!0)}}else{let e=n.indexOf(":");if(e>-1){let t=n.substring(0,e).trim();" "===n[e+1]&&e++,e++;let r=n.substring(e).replace(/\ndata: ?/g,"\n");"data"===t?null===(i=this.messageListener)||void 0===i||i.call(this,r):console.warn(`Not supported message with type of message ${t}: ${r}`)}}r&&(null===(s=this.propertiesListener)||void 0===s||s.call(this,this.properties))}}null===(n=this.closeListener)||void 0===n||n.call(this,"Connection closed")}catch(e){null===(o=this.errorListener)||void 0===o||o.call(this,e)}},new((i=void 0)||(i=Promise))((function(e,n){function o(e){try{l(s.next(e))}catch(e){n(e)}}function c(e){try{l(s.throw(e))}catch(e){n(e)}}function l(t){var r;t.done?e(t.value):(r=t.value,r instanceof i?r:new i((function(e){e(r)}))).then(o,c)}l((s=s.apply(t,r||[])).next())}));var t,r,i,s}disconnect(){var e;null===(e=this.reader)||void 0===e||e.cancel()}getProperty(e){return this.properties[e]}getProperties(){return this.properties}}const u="FALSE",h="TRUE",d="add",f="remove";class p{constructor(e,t){this.config=e,this.queries=new Map,this.globalListener=t}calculateFilter(e,t,r){return{action:e,queries:[t],initialData:r.querySets.some((e=>e.initialData&&0===e.count))?h:void 0,once:r.querySets.every((e=>e.once))?h:void 0,compress:r.querySets.some((e=>e.compress))?h:void 0,filterType:this.config.queryType}}increment(e){for(const t of e.querySets)t.count++}tryToRemove(e,t){if(e.querySets.every((e=>e.once)))return this.queries.delete(t),{action:f,queries:[t]}}equalFiltersWithoutQueries(e,t){return e.action===t.action&&e.compress===t.compress&&e.initialData===t.initialData&&e.once===t.once}addQueries(e,t,r,i,s){let n=[];for(const o of e){let e=this.queries.get(o.query);if(e){let c=this.calculateFilter(d,o.query,e),l=e.querySets.find((e=>e.querySet===s));if(l)l.initialData=t,l.once=r,l.compress=i,t&&(l.count=0),-1==l.callbacks.indexOf(o.listener)&&l.callbacks.push(o.listener),-1==l.errorCallbacks.indexOf(o.errorListener)&&l.errorCallbacks.push(o.errorListener);else{let n=[];o.listener&&n.push(o.listener);let c=[];o.errorListener&&c.push(o.errorListener),e.querySets.push({querySet:s,initialData:t,compress:i,once:r,count:0,callbacks:o.listener?[o.listener]:[],errorCallbacks:o.errorListener?[o.errorListener]:[]})}let a=this.calculateFilter(d,o.query,e);if(!this.equalFiltersWithoutQueries(c,a)){let e=n.find((e=>this.equalFiltersWithoutQueries(e,a)));e?e.queries.push(o.query):n.push(a)}}else{let e={querySets:[{querySet:s,initialData:t,compress:i,once:r,count:0,callbacks:o.listener?[o.listener]:[],errorCallbacks:o.errorListener?[o.errorListener]:[]}]};this.queries.set(o.query,e);let c=this.calculateFilter(d,o.query,e),l=n.find((e=>this.equalFiltersWithoutQueries(e,c)));l?l.queries.push(o.query):n.push(c)}}return n}filterForQuery(e){return this.queries.get(e)}removeAllQueries(e){let t=Array.from(this.queries.keys());return this.removeQueries(t,e)}removeQueries(e,t){let r=[];for(const i of e){let e=!0,s=this.queries.get(i);if(s){let r=s.querySets.findIndex((e=>e.querySet===t));r>-1&&s.querySets.splice(r,1),s.querySets.length&&(e=!1)}e&&(this.queries.delete(i),r.push(i))}if(r.length)return{action:f,queries:r}}activeFilters(){let e=[];for(const[t,r]of this.queries){const i=this.calculateFilter(d,t,r);let s=e.find((e=>this.equalFiltersWithoutQueries(e,i)));s?s.queries.push(t):e.push(i)}return e}handleErrorListeners(e,t,r){for(let i of e)try{i(r)}catch(e){console.warn(`Error while handling error listener for query: ${t}`,e)}}handleGlobalListener(e){var t;try{null===(t=this.globalListener)||void 0===t||t.call(this,e)}catch(e){console.warn("Error while handling global error listener",e)}}}class v{constructor(e,t){this.ENCODED_GZ_CONTENT="encoded-gz-content: ",this.FAILED_TO_PARSE_QUERY="Failed to parse query: ",this.config=e,this.filtersState=t,this.url=`https://${this.config.host}/api/es/sse/v1/subscribe`,this.headers={"Content-Type":"application/json",Authorization:`${this.config.apiKey}`,"x-customer-id":`${this.config.customerId}`},this.status=s.Closed}send(e){e&&(this.eventSource&&(this.eventSource.disconnect(),this.eventSource=void 0),this.connect())}connect(){if(this.eventSource)throw Error("SSE connection already opened");let e=this.filtersState.activeFilters();this.retrieve(e)}retrieve(e){var t;let r=e.filter((e=>e.initialData===h)).map((e=>e.queries)).reduce(((e,t)=>e.concat(t)),[]);if(!r.length)return void this.subscribe(e);let i=e.filter((e=>e.initialData===h)).some((e=>e.compress)),n={type:"collection",fabric:this.config.fabric,filters:{once:h,compress:i?h:u,initialData:h,queries:r}},o=this;this.eventSource||null===(t=this.openListener)||void 0===t||t.call(this,"SSE connection opened"),this.eventSource=new a(this.url,this.headers),this.eventSource.onOpen((e=>{var t;o.status===s.Connecting&&(o.status=s.Open,null===(t=o.openListener)||void 0===t||t.call(o,e))})),this.eventSource.onProperties((e=>{var t;null===(t=o.propertiesListener)||void 0===t||t.call(o,e)})),this.eventSource.onError((e=>{var t;null===(t=o.errorListener)||void 0===t||t.call(o,e,!1)})),this.eventSource.onMessage((t=>{o.handleMessage(t).then((t=>{var r;t&&(null===(r=o.eventSource)||void 0===r||r.disconnect(),o.eventSource=void 0,o.subscribe(e))}))})),this.status===s.Closed&&(this.status=s.Connecting),this.eventSource.connect(n)}subscribe(e){let t=e.filter((e=>e.once!==h)).map((e=>e.queries)).reduce(((e,t)=>e.concat(t)),[]);if(!t.length)return;let r=e.filter((e=>e.once!==h)).some((e=>e.compress)),i={type:"collection",fabric:this.config.fabric,filters:{action:d,filterType:"SQL",once:u,compress:r?h:u,initialData:u,queries:t}},n=this;this.eventSource=new a(this.url,this.headers),this.eventSource.onOpen((e=>{var t;n.status===s.Connecting&&(n.status=s.Open,null===(t=n.openListener)||void 0===t||t.call(n,e))})),this.eventSource.onError((e=>{var t;null===(t=n.errorListener)||void 0===t||t.call(n,e,!1)})),this.eventSource.onProperties((e=>{var t;null===(t=n.propertiesListener)||void 0===t||t.call(n,e)})),this.eventSource.onMessage((e=>{n.handleMessage(e)})),this.eventSource.onClose((e=>{var t;this.status===s.Closing&&(this.status=s.Closed,null===(t=n.closeListener)||void 0===t||t.call(n,e))})),this.status===s.Closed&&(this.status=s.Connecting),this.eventSource.connect(i)}onOpen(e){this.openListener=e}onProperties(e){this.propertiesListener=e}onMessage(e){this.messageListener=e}onClose(e){this.closeListener=e}onError(e){this.errorListener=e}getStatus(){return this.status}disconnect(){var e;return!!this.eventSource&&(this.status=s.Closing,null===(e=this.eventSource)||void 0===e||e.disconnect(),this.eventSource=void 0,!0)}getId(){return this.getProperty(r)}getProperty(e){var t;return null===(t=this.eventSource)||void 0===t?void 0:t.getProperty(e)}getProperties(){return this.eventSource?this.eventSource.getProperties():{}}handleMessage(e){return this.tryToDecodeData(e).then((e=>{var t,r;if(e.error)return null===(r=this.errorListener)||void 0===r||r.call(this,e,!0),!1;for(let r in e){let i=e[r],s=this.filtersState.filterForQuery(r);s&&(this.filtersState.increment(s),null===(t=this.messageListener)||void 0===t||t.call(this,r,s,i),this.filtersState.tryToRemove(s,r))}return!0}))}tryToDecodeData(e){return t=this,r=void 0,s=function*(){return new Promise(((t,r)=>{if(e.startsWith(this.ENCODED_GZ_CONTENT))try{c(e.substring(this.ENCODED_GZ_CONTENT.length)).then((e=>t(JSON.parse(e))))}catch(e){r(e)}else if(e.startsWith(this.FAILED_TO_PARSE_QUERY))t({error:e,code:400});else try{t(JSON.parse(e))}catch(e){r(e)}}))},new((i=void 0)||(i=Promise))((function(e,n){function o(e){try{l(s.next(e))}catch(e){n(e)}}function c(e){try{l(s.throw(e))}catch(e){n(e)}}function l(t){var r;t.done?e(t.value):(r=t.value,r instanceof i?r:new i((function(e){e(r)}))).then(o,c)}l((s=s.apply(t,r||[])).next())}));var t,r,i,s}}class g{constructor(e,t,r){this.subscribeQueries=[],this.retrieveAndSubscribeQueries=[],this.retrieveQueries=[],this.unsubscribeQueries=[],this.querySet=e,this.connection=t,this.filtersState=r}subscribe(e,t,r){return this.subscribeQueries.push({query:e,listener:t,errorListener:r,compress:!1}),this}retrieveAndSubscribe(e,t,r,i){return this.retrieveAndSubscribeQueries.push({query:e,listener:t,errorListener:r,compress:!0===i}),this}retrieve(e,t,r,i){return this.retrieveQueries.push({query:e,listener:t,errorListener:r,compress:!0===i}),this}unsubscribe(e){return this.unsubscribeQueries.push(e),this}assemble(){let e=this.retrieveQueries.some((e=>e.compress)),t=this.filtersState.addQueries(this.retrieveQueries,!0,!0,e,this.querySet),r=this.retrieveAndSubscribeQueries.some((e=>e.compress)),i=this.filtersState.addQueries(this.retrieveAndSubscribeQueries,!0,!1,r,this.querySet);this.joinFilters(t,i);let s=this.filtersState.addQueries(this.subscribeQueries,!1,!1,!1,this.querySet);this.joinFilters(t,s);for(const e of t)this.connection.send(e);let n=this.filtersState.removeQueries(this.unsubscribeQueries,this.querySet);n&&this.connection.send(n)}joinFilters(e,t){for(const r of t){let t=e.find((e=>this.filtersState.equalFiltersWithoutQueries(e,r)));t?t.queries.push(...r.queries):e.push(r)}}}class S{constructor(e,t){this.connection=e,this.filtersState=t}subscribe(e,t,r){let i=[{query:e,listener:t,errorListener:r,compress:!1}],s=this.filtersState.addQueries(i,!1,!1,!1,this);for(const e of s)this.connection.send(e)}retrieveAndSubscribe(e,t,r,i){let s=[{query:e,listener:t,errorListener:r,compress:!0===i}],n=this.filtersState.addQueries(s,!0,!1,!0===i,this);for(const e of n)this.connection.send(e)}retrieve(e,t,r,i){let s=[{query:e,listener:t,errorListener:r,compress:!0===i}],n=this.filtersState.addQueries(s,!0,!0,!0===i,this);for(const e of n)this.connection.send(e)}unsubscribe(e){let t=this.filtersState.removeQueries([e],this);t&&this.connection.send(t)}unsubscribeAll(){let e=this.filtersState.removeAllQueries(this);e&&this.connection.send(e)}batch(){return new g(this,this.connection,this.filtersState)}}class y{constructor(e,t){this.connectionTypes=["ws"],this.reconnection=-1,this.config=e,this.filtersState=new p(e,t)}connect(){var e;if(this.connection)throw new Error(`Already connected with status: ${this.getStatus()}`);(null===(e=this.config.connectionTypes)||void 0===e?void 0:e.length)&&(this.connectionTypes=this.config.connectionTypes);let t=this.connectionTypes[this.reconnection%this.connectionTypes.length];switch(t){case"ws":this.connection=new l(this.config,this.filtersState);break;case"sse":this.connection=new v(this.config,this.filtersState);break;default:throw new Error(`Connection type not supported: ${t}`)}let r=this;this.connection.onOpen((function(e){let t=r.reconnection;if(r.reconnection=0,-1===t){const t={type:i.Open,connection:r,data:e};r.filtersState.handleGlobalListener(t)}})),this.connection.onProperties((function(e){const t={type:i.Properties,connection:r,data:e};r.filtersState.handleGlobalListener(t)})),this.connection.onMessage((function(e,t,s){let n=s,c=Array.isArray(n);if(c)for(let e=0;e-1){let e=Math.pow(2,6+r.reconnection++);setTimeout((function(){r.connect()}),e)}else{r.reconnection=-1;const t={type:i.Close,connection:r,data:e};r.filtersState.handleGlobalListener(t)}})),this.connection.connect()}send(e){var t;null===(t=this.connection)||void 0===t||t.send(e)}disconnect(){var e;return-1!==this.reconnection&&(this.reconnection=-1,null===(e=this.connection)||void 0===e||e.disconnect(),!0)}getConfig(){return this.config}getStatus(){return-1===this.reconnection?s.Closed:this.connection?this.connection.getStatus():s.Connecting}getId(){var e;return null===(e=this.connection)||void 0===e?void 0:e.getId()}getProperty(e){var t;return null===(t=this.connection)||void 0===t?void 0:t.getProperty(e)}getProperties(){return this.connection?this.connection.getProperties():{}}querySet(){return new S(this,this.filtersState)}}function b(e,t){return new y(e,t)}function m(e,t){let r=new y(e,t);return r.connect(),r}return t})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.PhotoniqEdsSdk=t():e.PhotoniqEdsSdk=t()}(this,(()=>(()=>{"use strict";var e={d:(t,r)=>{for(var i in r)e.o(r,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:r[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{connect:()=>m,create:()=>b});const r="x-photoniq-es";var i,s;!function(e){e.Open="open",e.Close="close",e.Properties="properties",e.ServerQueryError="server-query-error",e.ServerGlobalError="server-global-error",e.ClientQueryError="client-query-error",e.ClientGlobalError="client-global-error",e.Message="message"}(i||(i={})),function(e){e.Closed="closed",e.Connecting="connecting",e.Open="open",e.Closing="closing"}(s||(s={}));var n=function(e,t,r,i){return new(r||(r=Promise))((function(s,n){function o(e){try{l(i.next(e))}catch(e){n(e)}}function c(e){try{l(i.throw(e))}catch(e){n(e)}}function l(e){var t;e.done?s(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,c)}l((i=i.apply(e,t||[])).next())}))};function o(e){for(let t in e){let r=t.split(".");if(r.length<=1)continue;let i=e;for(let e=0;ee.charCodeAt(0))),r=new Blob([t],{type:"application/octet-stream"}),i=new DecompressionStream("gzip"),s=r.stream().pipeThrough(i),n=yield new Response(s);return yield n.text()}))}class l{constructor(e,t){this.STUB_FILTER="%7B%22action%22%3A%22remove%22%2C%22queries%22%3A%5B%22SELECT%20%2A%20FROM%20fake%22%5D%7D",this.DEFAULT_PING_SECONDS=29,this.properties={},this.config=e,this.filtersState=t}connect(){let e=this;const t=`wss://${this.config.host}/api/es/v1/subscribe?type=collection&x-customer-id=${this.config.customerId}&apiKey=${this.config.apiKey}&fabric=${this.config.fabric}&filters=${this.STUB_FILTER}`;this.ws=new WebSocket(t),this.ws.addEventListener("open",(function(t){var r;null===(r=e.openListener)||void 0===r||r.call(e,t);let i=e.filtersState.activeFilters();e.send(i),e.updatePingInterval()})),this.ws.addEventListener("message",(function(t){var i;if(e.properties[r])(function(e){return n(this,void 0,void 0,(function*(){return new Promise(((t,r)=>{try{t(JSON.parse(e))}catch(i){try{c(e).then((e=>t(JSON.parse(e))))}catch(e){r(e)}}}))}))})(t.data).then((t=>{var r,i;if(t.error)null===(i=e.errorListener)||void 0===i||i.call(e,t,!0);else for(let i in t){let s=t[i],n=e.filtersState.filterForQuery(i);if(n){e.filtersState.increment(n),null===(r=e.messageListener)||void 0===r||r.call(e,i,n,s);let t=e.filtersState.tryToRemove(n,i);t&&e.send([t])}}}));else{const r=t.data.split("\n");for(const t of r){const r=t.split(":");2==r.length&&(e.properties[r[0].trim()]=r[1].trim())}null===(i=e.propertiesListener)||void 0===i||i.call(e,e.properties)}e.updatePingInterval()})),this.ws.addEventListener("close",(function(t){var r;null===(r=e.closeListener)||void 0===r||r.call(e,t)})),this.ws.addEventListener("error",(function(t){var r;null===(r=e.errorListener)||void 0===r||r.call(e,t,!1)}))}onOpen(e){this.openListener=e}onProperties(e){this.propertiesListener=e}onMessage(e){this.messageListener=e}onClose(e){this.closeListener=e,this.pingIntervalId&&clearInterval(this.pingIntervalId)}onError(e){this.errorListener=e}send(e){var t;if(this.getStatus()===s.Open)for(const r of e)null===(t=this.ws)||void 0===t||t.send(JSON.stringify(r))}disconnect(){return!!this.ws&&(this.ws.close(),!0)}getStatus(){var e;switch(null===(e=this.ws)||void 0===e?void 0:e.readyState){case WebSocket.CONNECTING:return s.Connecting;case WebSocket.OPEN:return s.Open;case WebSocket.CLOSING:return s.Closing;default:return s.Closed}}getId(){return this.properties[r]}getProperty(e){return this.properties[e]}getProperties(){return this.properties}updatePingInterval(){var e;void 0!==this.pingIntervalId&&(clearInterval(this.pingIntervalId),this.pingIntervalId=void 0);let t=this;(!t.config.pingSeconds||t.config.pingSeconds>0)&&(this.pingIntervalId=setInterval((()=>{var e;t.getStatus()===s.Open&&(null===(e=t.ws)||void 0===e||e.send("{1}"))}),1e3*(null!==(e=t.config.pingSeconds)&&void 0!==e?e:this.DEFAULT_PING_SECONDS)))}}class a{constructor(e,t){this.properties={},this.url=e,this.headers=t}onOpen(e){this.openListener=e}onProperties(e){this.propertiesListener=e}onMessage(e){this.messageListener=e}onError(e){this.errorListener=e}onClose(e){this.closeListener=e}connect(e){return t=this,r=void 0,s=function*(){var t,r,i,s,n,o;try{const o=yield fetch(this.url,{method:"POST",headers:this.headers,body:JSON.stringify(e)});o.ok?null===(r=this.openListener)||void 0===r||r.call(this,o):null===(t=this.errorListener)||void 0===t||t.call(this,o);const c=o.body;let l,a="";for(this.reader=c.getReader();!(l=yield this.reader.read()).done;){let e,t=new TextDecoder("utf-8").decode(l.value);for(a+=t;(e=a.indexOf("\n\n"))>-1;){let r=!1,n=a.substring(0,e);if(a=a.substring(e+2),n.startsWith(":")){const e=t.split("\n");for(const t of e){const e=t.split(":");3==e.length&&(this.properties[e[1].trim()]=e[2].trim(),r=!0)}}else{let e=n.indexOf(":");if(e>-1){let t=n.substring(0,e).trim();" "===n[e+1]&&e++,e++;let r=n.substring(e).replace(/\ndata: ?/g,"\n");"data"===t?null===(i=this.messageListener)||void 0===i||i.call(this,r):console.warn(`Not supported message with type of message ${t}: ${r}`)}}r&&(null===(s=this.propertiesListener)||void 0===s||s.call(this,this.properties))}}null===(n=this.closeListener)||void 0===n||n.call(this,"Connection closed")}catch(e){null===(o=this.errorListener)||void 0===o||o.call(this,e)}},new((i=void 0)||(i=Promise))((function(e,n){function o(e){try{l(s.next(e))}catch(e){n(e)}}function c(e){try{l(s.throw(e))}catch(e){n(e)}}function l(t){var r;t.done?e(t.value):(r=t.value,r instanceof i?r:new i((function(e){e(r)}))).then(o,c)}l((s=s.apply(t,r||[])).next())}));var t,r,i,s}disconnect(){var e;null===(e=this.reader)||void 0===e||e.cancel()}getProperty(e){return this.properties[e]}getProperties(){return this.properties}}const u="FALSE",h="TRUE",d="add",f="remove";class p{constructor(e,t){this.config=e,this.queries=new Map,this.globalListener=t}calculateFilter(e,t,r){return{action:e,queries:[t],initialData:r.querySets.some((e=>e.initialData))?h:void 0,once:r.querySets.every((e=>e.once))?h:void 0,compress:r.querySets.some((e=>e.compress))?h:void 0,filterType:this.config.queryType}}increment(e){for(const t of e.querySets)t.count++}tryToRemove(e,t){if(e.querySets.every((e=>e.once)))return this.queries.delete(t),{action:f,queries:[t]}}equalFiltersWithoutQueries(e,t){return e.action===t.action&&e.compress===t.compress&&e.initialData===t.initialData&&e.once===t.once}addQueries(e,t,r,i,s){let n=[];for(const o of e){let e=this.queries.get(o.query);if(e){let c=this.calculateFilter(d,o.query,e),l=e.querySets.find((e=>e.querySet===s));l?(l.initialData=t,l.once=r,l.compress=i,-1==l.callbacks.indexOf(o.listener)&&l.callbacks.push(o.listener),-1==l.errorCallbacks.indexOf(o.errorListener)&&l.errorCallbacks.push(o.errorListener)):e.querySets.push({querySet:s,initialData:t,compress:i,once:r,count:0,callbacks:o.listener?[o.listener]:[],errorCallbacks:o.errorListener?[o.errorListener]:[]});let a=this.calculateFilter(d,o.query,e);if(!this.equalFiltersWithoutQueries(c,a)){let e=n.find((e=>this.equalFiltersWithoutQueries(e,a)));e?e.queries.push(o.query):n.push(a)}}else{let e={querySets:[{querySet:s,initialData:t,compress:i,once:r,count:0,callbacks:o.listener?[o.listener]:[],errorCallbacks:o.errorListener?[o.errorListener]:[]}]};this.queries.set(o.query,e);let c=this.calculateFilter(d,o.query,e),l=n.find((e=>this.equalFiltersWithoutQueries(e,c)));l?l.queries.push(o.query):n.push(c)}}return n}filterForQuery(e){return this.queries.get(e)}removeAllQueries(e){let t=Array.from(this.queries.keys());return this.removeQueries(t,e)}removeQueries(e,t){let r=[];for(const i of e){let e=this.queries.get(i);if(e){let s=e.querySets.findIndex((e=>e.querySet===t));s>-1&&e.querySets.splice(s,1),e.querySets.length||(this.queries.delete(i),r.push(i))}}if(r.length)return{action:f,queries:r}}activeFilters(){let e=[];for(const[t,r]of this.queries){const i=this.calculateFilter(d,t,r);let s=e.find((e=>this.equalFiltersWithoutQueries(e,i)));s?s.queries.push(t):e.push(i)}return e}handleErrorListeners(e,t,r){for(let i of e)try{i(r)}catch(e){console.warn(`Error while handling error listener for query: ${t}`,e)}}handleGlobalListener(e){var t;try{null===(t=this.globalListener)||void 0===t||t.call(this,e)}catch(e){console.warn("Error while handling global error listener",e)}}}class v{constructor(e,t){this.ENCODED_GZ_CONTENT="encoded-gz-content: ",this.FAILED_TO_PARSE_QUERY="Failed to parse query: ",this.config=e,this.filtersState=t,this.url=`https://${this.config.host}/api/es/sse/v1/subscribe`,this.headers={"Content-Type":"application/json",Authorization:`${this.config.apiKey}`,"x-customer-id":`${this.config.customerId}`},this.status=s.Closed}send(e){if(null==e?void 0:e.length){let t=this.filtersState.activeFilters();this.eventSource?(this.eventSource.disconnect(),this.eventSource=void 0,this.retrieve(e,(()=>{this.subscribe(t)}))):this.retrieve(t,(()=>{this.subscribe(t)}))}}connect(){if(this.eventSource)throw Error("SSE connection already opened");let e=this.filtersState.activeFilters();this.retrieve(e,(()=>{this.subscribe(e)}))}retrieve(e,t){var r;let i=e.filter((e=>e.initialData===h)).map((e=>e.queries)).reduce(((e,t)=>e.concat(t)),[]);if(!i.length)return this.subscribe(e),void t();let n=e.filter((e=>e.initialData===h)).some((e=>e.compress)),o={type:"collection",fabric:this.config.fabric,filters:{once:h,compress:n?h:u,initialData:h,queries:i}},c=this;this.eventSource||null===(r=this.openListener)||void 0===r||r.call(this,"SSE connection opened"),this.eventSource=new a(this.url,this.headers),this.eventSource.onOpen((e=>{var t;c.status===s.Connecting&&(c.status=s.Open,null===(t=c.openListener)||void 0===t||t.call(c,e))})),this.eventSource.onProperties((e=>{var t;null===(t=c.propertiesListener)||void 0===t||t.call(c,e)})),this.eventSource.onError((e=>{var t;null===(t=c.errorListener)||void 0===t||t.call(c,e,!1)})),this.eventSource.onMessage((e=>{c.handleMessage(e).then((r=>{var s,n;if(r)try{let r=JSON.parse(e);for(let e in r){let t=i.indexOf(e);t>-1&&i.splice(t,1)}i.length||(null===(s=c.eventSource)||void 0===s||s.disconnect(),c.eventSource=void 0,t())}catch(e){null===(n=c.errorListener)||void 0===n||n.call(c,e,!1)}}))})),this.status===s.Closed&&(this.status=s.Connecting),this.eventSource.connect(o)}subscribe(e){let t=e.filter((e=>e.once!==h)).map((e=>e.queries)).reduce(((e,t)=>e.concat(t)),[]);if(!t.length)return;let r=e.filter((e=>e.once!==h)).some((e=>e.compress)),i={type:"collection",fabric:this.config.fabric,filters:{action:d,filterType:"SQL",once:u,compress:r?h:u,initialData:u,queries:t}},n=this;this.eventSource=new a(this.url,this.headers),this.eventSource.onOpen((e=>{var t;n.status===s.Connecting&&(n.status=s.Open,null===(t=n.openListener)||void 0===t||t.call(n,e))})),this.eventSource.onError((e=>{var t,r;null===(t=n.errorListener)||void 0===t||t.call(n,e,!1),null===(r=n.closeListener)||void 0===r||r.call(n,e)})),this.eventSource.onProperties((e=>{var t;null===(t=n.propertiesListener)||void 0===t||t.call(n,e)})),this.eventSource.onMessage((e=>{n.handleMessage(e)})),this.eventSource.onClose((e=>{var t;this.status===s.Closing&&(this.status=s.Closed,null===(t=n.closeListener)||void 0===t||t.call(n,e))})),this.status===s.Closed&&(this.status=s.Connecting),this.eventSource.connect(i)}onOpen(e){this.openListener=e}onProperties(e){this.propertiesListener=e}onMessage(e){this.messageListener=e}onClose(e){this.closeListener=e}onError(e){this.errorListener=e}getStatus(){return this.status}disconnect(){var e;return!!this.eventSource&&(this.status=s.Closing,null===(e=this.eventSource)||void 0===e||e.disconnect(),this.eventSource=void 0,!0)}getId(){return this.getProperty(r)}getProperty(e){var t;return null===(t=this.eventSource)||void 0===t?void 0:t.getProperty(e)}getProperties(){return this.eventSource?this.eventSource.getProperties():{}}handleMessage(e){return this.tryToDecodeData(e).then((e=>{var t,r;if(e.error)return null===(r=this.errorListener)||void 0===r||r.call(this,e,!0),!1;for(let r in e){let i=e[r],s=this.filtersState.filterForQuery(r);s&&(this.filtersState.increment(s),null===(t=this.messageListener)||void 0===t||t.call(this,r,s,i),this.filtersState.tryToRemove(s,r))}return!0}))}tryToDecodeData(e){return t=this,r=void 0,s=function*(){return new Promise(((t,r)=>{if(e.startsWith(this.ENCODED_GZ_CONTENT))try{c(e.substring(this.ENCODED_GZ_CONTENT.length)).then((e=>t(JSON.parse(e))))}catch(e){r(e)}else if(e.startsWith(this.FAILED_TO_PARSE_QUERY))t({error:e,code:400});else try{t(JSON.parse(e))}catch(e){r(e)}}))},new((i=void 0)||(i=Promise))((function(e,n){function o(e){try{l(s.next(e))}catch(e){n(e)}}function c(e){try{l(s.throw(e))}catch(e){n(e)}}function l(t){var r;t.done?e(t.value):(r=t.value,r instanceof i?r:new i((function(e){e(r)}))).then(o,c)}l((s=s.apply(t,r||[])).next())}));var t,r,i,s}}class g{constructor(e,t,r){this.subscribeQueries=[],this.retrieveAndSubscribeQueries=[],this.retrieveQueries=[],this.unsubscribeQueries=[],this.querySet=e,this.connection=t,this.filtersState=r}subscribe(e,t,r){return this.subscribeQueries.push({query:e,listener:t,errorListener:r,compress:!1}),this}retrieveAndSubscribe(e,t,r,i){return this.retrieveAndSubscribeQueries.push({query:e,listener:t,errorListener:r,compress:!0===i}),this}retrieve(e,t,r,i){return this.retrieveQueries.push({query:e,listener:t,errorListener:r,compress:!0===i}),this}unsubscribe(e){return this.unsubscribeQueries.push(e),this}assemble(){let e=this.retrieveQueries.some((e=>e.compress)),t=this.filtersState.addQueries(this.retrieveQueries,!0,!0,e,this.querySet),r=this.retrieveAndSubscribeQueries.some((e=>e.compress)),i=this.filtersState.addQueries(this.retrieveAndSubscribeQueries,!0,!1,r,this.querySet);this.joinFilters(t,i);let s=this.filtersState.addQueries(this.subscribeQueries,!1,!1,!1,this.querySet);this.joinFilters(t,s);let n=this.filtersState.removeQueries(this.unsubscribeQueries,this.querySet);n&&t.push(n),this.connection.send(t)}joinFilters(e,t){for(const r of t){let t=e.find((e=>this.filtersState.equalFiltersWithoutQueries(e,r)));t?t.queries.push(...r.queries):e.push(r)}}}class S{constructor(e,t){this.connection=e,this.filtersState=t}subscribe(e,t,r){let i=[{query:e,listener:t,errorListener:r,compress:!1}],s=this.filtersState.addQueries(i,!1,!1,!1,this);for(const e of s)this.connection.send([e])}retrieveAndSubscribe(e,t,r,i){let s=[{query:e,listener:t,errorListener:r,compress:!0===i}],n=this.filtersState.addQueries(s,!0,!1,!0===i,this);for(const e of n)this.connection.send([e])}retrieve(e,t,r,i){let s=[{query:e,listener:t,errorListener:r,compress:!0===i}],n=this.filtersState.addQueries(s,!0,!0,!0===i,this);for(const e of n)this.connection.send([e])}unsubscribe(e){let t=this.filtersState.removeQueries([e],this);t&&this.connection.send([t])}unsubscribeAll(){let e=this.filtersState.removeAllQueries(this);e&&this.connection.send([e])}batch(){return new g(this,this.connection,this.filtersState)}}class y{constructor(e,t){this.connectionTypes=["ws"],this.reconnection=-1,this.config=e,this.filtersState=new p(e,t)}connect(){var e;if(this.connection)throw new Error(`Already connected with status: ${this.getStatus()}`);(null===(e=this.config.connectionTypes)||void 0===e?void 0:e.length)&&(this.connectionTypes=this.config.connectionTypes),-1===this.reconnection&&(this.reconnection=0);let t=this.connectionTypes[this.reconnection%this.connectionTypes.length];switch(t){case"ws":this.connection=new l(this.config,this.filtersState);break;case"sse":this.connection=new v(this.config,this.filtersState);break;default:throw new Error(`Connection type not supported: ${t}`)}let r=this;this.connection.onOpen((function(e){let t=r.reconnection;if(r.reconnection=0,-1===t){const t={type:i.Open,connection:r,data:e};r.filtersState.handleGlobalListener(t)}})),this.connection.onProperties((function(e){const t={type:i.Properties,connection:r,data:e};r.filtersState.handleGlobalListener(t)})),this.connection.onMessage((function(e,t,s){let n=s,c=Array.isArray(n);if(c)for(let e=0;e-1){let e=Math.pow(2,6+r.reconnection++);setTimeout((function(){r.connect()}),e)}else{r.reconnection=-1;const t={type:i.Close,connection:r,data:e};r.filtersState.handleGlobalListener(t)}})),this.connection.connect()}send(e){var t;null===(t=this.connection)||void 0===t||t.send(e)}disconnect(){var e;return-1!==this.reconnection&&(this.reconnection=-1,null===(e=this.connection)||void 0===e||e.disconnect(),!0)}getConfig(){return this.config}getStatus(){return-1===this.reconnection?s.Closed:this.connection?this.connection.getStatus():s.Connecting}getId(){var e;return null===(e=this.connection)||void 0===e?void 0:e.getId()}getProperty(e){var t;return null===(t=this.connection)||void 0===t?void 0:t.getProperty(e)}getProperties(){return this.connection?this.connection.getProperties():{}}querySet(){return new S(this,this.filtersState)}}function b(e,t){return new y(e,t)}function m(e,t){let r=new y(e,t);return r.connect(),r}return t})())); \ No newline at end of file diff --git a/static/download/eds-clients/photoniq-eds-sdk.zip b/static/download/eds-clients/photoniq-eds-sdk.zip deleted file mode 100644 index a21c4da5fe099fa7cda462b9d5ad8dc6ab60f76e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130225 zcmc$`WmH|+)+UU*ySux)ySr;}cemgK3GVI?+}+*X-Gh5@0!^y=-m156>VDn7zRlR2 z180oM+|$-GpScza(!d}n0KYC*A8gG(-u&-xhyVlt_U3lZcD5D{v?j(*v`)rW^r|Yb z0N^=llcxW=UEHAo0732m0Ra9Gqwt3~2mlCxFMksULID7P^*eENBFg&8&UTI_f5`3n zkQ<{mVfyR!|B!pGrTukY1%prD%`b`89u2K=m3mBE>z>y8)2_>3Q%0=)uPv#_Ob`z%W6dt9stRzB5BZ zLy!Xf*{6H{ch2JXtqYEueB5XWL4UXj) zx~H8NP0YFsEbcYxGV55}nuiIc@)C+7hKAJH7s!xZA|o4+NBSRI7skKo&v7skhCy4Y z*&In-GK1wn^SiXV8Lc$|TorY*no||K;ti+~&I&4ZAFLZE5O6YH6_@+l1{N z+Qyxi8SWYjx6RU3F(%H{58$lJ^j$0rN1GulNHS^VG^abd%n6hIJ2kd^?oZXq&%o5u zOd-z3wyNGMh1BW`Rcp)M=l4;2x8?({poz6S{gqV*nCzIXbKIupo120Q6DLWg8eY%0 zAy&pR9YaduKcGlRj~~6Y809s~X%H%2?yU|zD&#LcqPD8MF?D-`zek_V(zH?KzvXdcdtfO0BP8s`^Bq^e3xo#QQ)ILdPs z)t+y6T#D8__MW9QF^5-)iD^)in`~Oe6kVT+ZPazEj8vL5B<$*(z$s}|S4AAAA8Z#{ zbfLklS4t^_FZ32>xCc|Hj=%6syDs9bD}KK|w48&Pa&4|-wpZ#K#g@6DDN=aKqgX6> z)`PC}k+n2&N4A7=BW})7k}XYIBPt;)lccsFZwnJ19O>96bWGuq-y|6t9@>|_!F>wL z0AWBzGR?NyFmfK~2rRxt86-vy37z^^u6*Nal3reV# zJwkd8_GhrqRWJ}P9+Op&4iDpJ3L>6ESN0xTv{@QCKa^$6OuJ?Rm>?&HcUH6vy zoT~?oM2q%0=YGzTM8PX31gQ{D9ZkQUM2}Wq=UdP0>X`}f9dMq0qO;nvSBrPp@MzE^ z#02UMDiJjT7c)!zb(x4-oC<_Y3tgv}VX*j^5HqG-oJjbz2E9IQ4N^hPba|3;oQNcc ztaQ7qv5Ck#t4}t8eyrWd)INOCWs63)N(WGbMuhBg_~}d!%0{H#nGhD$Ttk&5bpA3t zdXr%Qr594u9s%4A-+DB7N-Ms>^Zmk4lB`|>o=Eg-q^Mog_9%9H7`q+ZqKD`!(9WKR z$6S#CZmEk~`T?p*H|``0Z7+$(?20Yhcp8U@rD&$b8N!u3)|(^WPBAL$$Z|UgvPBg7 zSlByK>3v?F0cP4*@b^*EG>~E)=;)(DD~liq#9yUl$6HiW0`mRky^*==JsN?q_Z=g& z!L^AkUYQ=Gxcj}5w8XV%& z8U-K+=tqJ6sKURm&+Z>3pY)?X>+8!33d<{N(Emr>r_=w>Qa$`prhnc4N2xaYglc5= z$?(&atc=Ga2%f{55} zn*O0=>VGO~qS#~G%K+1Hi^?ejB{97jQIzSrS#aJc`>lc(qCheXcOLR?>ktK_x>J~F z=yGLB?i{zqQhM{7II2CqYt2;{WGBW1#*Bb19R&ZlI? zG_AFQiuKr2o2fs6{Lw(#ti57M3pxkvO#w&NfaTPw83@A;r2+{T z>!>%-0Bi-}fQ01_>Y7~g!uz1HqigHr~A`UBlWp;7*96lr#DyUZ|3ce%# zG;IXt+7L-lzV6YzFaq_HdO^Q0_I4iN%5SkL^0lS@D7ovGM{bg?r|~|P_Fs1Y%OizB z;Q#iB5e)zU#_v2LBPlE@r!4x156D65{|PT_XxT)s4I;i}>DQnt{D8|b8IoNcqztF( zbjn*?#4L8&$T|9g+LF*n)-q1#!F9LfrgtA1cX5`tWr-0+>R@Jec#vvlO4)z-M&qe@ zk>Fk?y})_5fGqzet63~dt~aTVvP)l!UC0}nOt0sCdz81q@S`e=f9vwWNpfvGa)Zy# zo%-RGTF2eZ=f##5t&IBm+0><>U3;^9ad%>(;<37uuK)b*Wi7o7zUulkAgfiY^3pb$ z-@DsRqI=27q0n;U7%;)W=ANq-OR9cv(}MV2V$1IY8p4Ts%0TsJ=;!pLVNLW1LNf%Oir_McUK`22F)u+Hsjc z=hfJD(?qf<7+u{3X7wO7;}UW}QvkE>3}JY-QRhdm7e7t+q!l5|mR{u&7DDsDe&%*X zrJD=M+zS{nz8nh|&zt2|$NnyZnn(T&A{Z6=Ryf zXfT-UFt2T~SAxnZR{09GcHU8ho&M`{TqE-*JT`9x7C2jgvV8b%S+y1dL=jsRa4`zj zW=A64Ip&sEGv>*D(DDJ_l@*ff)Z8t9J8KfmL{|`#rjsYkL2rltcfA{lB1>DpEeRFB#QhC?xNTo{;~EJ+ zDQeI4Mjyzz=D0{8goaP<#4~}Q_{=>m_FQ#gW5JTh)RxL^vD&CBG(HPQU^AL8b+(p5EC-KatLst_8~swX14J-{8o z8lG!NFu*y&_jZJAogWwED@VWEUz+ccw=iK>$y&k}+CrN=rv{z?Co+Lg~UetbJZw2_`U)nW1!A=FbM0VI8mxvEz$Mx*GON-&|%V2!pw z)@=^J%R4>9S8(BUvl;WZB?8!pQQ6bs+a^?Q@@f$o-w3GY?lCU0K?lowP@?0L>C5g7 z(WY2#YnwO4H9|y7{Xy!%x|;>)t&N2p>YJJ?iEkKPH=lv(2-sVtLWH#PG5f>>ydgsTkWuIFea3vH5)MGwg17U}5NF z#gt6C4kr;+MKTssf*{CmvVS)e9e^`P8L01c0U!x-2Yh--#Vb-LpLv7%racgOZ^*3M z^9&7}+$mwPCAcP#)l#)x zAbQJhQpXb4XD>{2v+00^-;go(ARc!r!KoL`b=r;@ydxQ+^&Nb(#m}S^pP?t`00T%A z2o#rHBsuS}&U6#F6|UFyMh|fe8cGr0<^;gx=WGAN_WKv66Pg|fMrPf?H<@j(i`hrgWw1sp9YP~iCrl4|1@vsSd^rYGXKI9YqI}5rdKYSV$dxEX2zv!^Tjrj8at*u| z5DQ{!HlSfe9KwA6_jHZeVjJe|#>{feB?Wh+5y6++|qE%`$M6 zc6Q@4l1@ryN~J+6j(oQsbIZ)i(%TMBPccch`ULI=>uZk+#m{T1MHE-0( zsOqzjyeX(p7?r0>>P$ry;y4Z``rQ?Xjkg1*5yRivQ*)e{$sm_dT9q?ADXZ52;m-BaqZ7ooc(p+bBYrdaV1d zmNNMgc2c8+Zxn?HVH&WuP9UcuYljeih8=hEFvmd5FqecS*Nyw47okgTBI7B27`SQH zVHliO#8NLdS7zb5MKshUW&FF*N{njod*kxuK4PjQWT_Xlk0cq2wGVjI@RZ0;lqmL6 zDVK$1uvMh~7{+cGv-q$g)oEr%`071}*BS%7wk8g%ym?gwn?eI# zWWW3#_3uz9yHl}cUx_&*%UyaMrx+etR=J%_`VDK_h?KKuiX<$QmFwKy3s6Ujofs1( z@N6?>Z{vW-n^fbea5UK`plG1Q}k-IxA4gGED_?#6)aXDpq zyTu9z?~_SP(McRS9XL#5R~V?Vjd;0QrDX8kc<}Za7S{IX4&RGdZ&@Pd$ALmb8C)uQ z&xxz_QvuNj*04+IvHN5(i_Vi)xoLpRkbai^p2Y!uG|2-fGJ==`Uz=Fd0Lr*GJusY&cq;KFX`t~ zI)kiWR(98En6NTDDZQeZeclnBZy3knzvRGTeUXr~DOK(Iy1IpDAn3M@Omn=iMDbcQ zaB49RRu0pi9|Y{F-d_Yv-avl45+mDV*NK%u320riH8qgvI?uIJXhX{f^bXR7V~8Z8 z$_{S(spNJLjk*WGBQ`CW1(Z6j&-i-sZ&wGJz_(E&;=q&a zvqpLH>8JJRv9@emzV)!^h_$tW6I+iCH1?*ahSv$~8jYVcZ>>7IfEzR3z^{IDipg?$ zkm{w@GHFbq-wT+w=K<4nm{3_o?okYTQryPcnwCH{eD17UJe}Hfe!Bm>@N`iRbz5qx z@&%$r=cn1CyZl^);91wMty}eU=O3JW{n-H;?&ZqWfqK)o*~ho8^Sk9(Q!wl%jo%xu zb?NbDOGtK2 z1OZ__rla}BneI+07tQ{)3qz*S$oTB3!52_u(2QetPvM}bgtc8BqD}1}T5xaRo|*H< zr`JzEG7{i%MnRHU)7b8j0Uax>4_vwWh8A`b{eC$5ouY15m^DqsCP(@5ncJw(N9U}7=VacRcI?VwjjZFw@m6NEP6GbPT&sh*OR^$$gTzl1ips= z`Fu?cIj6gviR6JqB8j6REbyRAhdK?8Xj3edyhP?Tz3Q^|Xs&?UR* z^x9-6e#yo^IEmZH9ZD*Ga>RstLdU;pA^Zv?CyFIOx8xClH(HSQ8JFThWo@U7)Pi8p z)F$Af*BXmIm}v6`#{fK)UcaH+gF)Zhw-7jB5NwaUZb&Xvd&Hcf){KlJGkVkfIPHv$ z#L?E5R!CUqofXI;KyfxXMXps;GBk@!R1@PdmEm5d)zo`1=+K*dZGMI=u{2kA2etca z8FRjqg|<+hKxICvGFS9s(Hav!Czwn~B~H33ULIPp)80f+e57*@uol4zOWczWS|p~; z*H(J~{i@39$}BI~sL%TCzVOjB?{84L5_3QT^MSrTguX8DzQn5c*L09?>pnXHy( z%j2^mBB`9f67fDZGCBatT*ko4GMzSlJA`{UqEDQCO6P z3XtI!9N7m=^?7wl5;%OW4u>7VWLTr+oG5MOiy=;>8aq`-tq^;GAo3Szvm6}QO2j}j z4eBEH?6(7S6=Wd!p%-_%7W+%AA!dtVLYtO8Y%91B=hVlWfib&&ZcQPpDlp2oqtu7& zwW|djxS!-&`@)5zT*Vd$s83e8yFmD%c6xfBqltvn1MIs+$KhvyQND*CUGU{Clbvm!*wt3RFcIDxhd9n_+Py}H%jcK zD?9+euMYnAy}j^9=TH36+y6IK=yz@Y{|hI?$iM&vWI>QUlj={gje&#&V&L!64!CR2 zLMo%+U_&4^Ikg~7LoqD5FeXbYDI-ZESwDL3a!n&SaVJ+nGfW{xBL^!@OEoz@6_`Q^ zN8*fu@x%TUTC#$|VRDLEa)SC=a$K5TRz@E5ScYnNgocih0bzT`k1HDS1V@bJ(4i** ztnfRc(irR?{FCcTwodK`_w?(z|FX#6`6t#79)$eEBL6{;{fmFHceFG94FQ$*PXv^# z-5&%LwPOlO%(DZ1n(Jz+m3wk=(a;A312?MK_84$ET+iiwsdDT~Y39 z3Lc!m`|1S7q_R8187@>9<7u}^WTu091eof5Uns&l9G`frvYaUh6DBg<96AMuA~A0Z z;6_V->eftRvpYu6V9HYAMa%Sa`a;ASH^!_~aOdyXNhT%r(LiA_Qp6(*iMGz?Wi#Vr zn$Ma$Wn9CU2NgHkpY)mPPsrL>D=Wu~HiePn>*vtf`7oewol(Ar;%4F97>hw*Buk}WsZ(A#PWp8+3NlhR z$q905_V_CGv1V}M`%XA%3iB|yVJ!YZK`mdi^b>qIq7gT zQ=Cnloc|nH^*!+@S1pG^8;NJ#TzvTW_rm@ApWHx^I^k4V?!GQiHvm^ND|F@pT zc1BKr>e)p3?VpIUKV|+JtmTwq{hNM+{7B&64%U=J1w~{<>1>SuAmC_JCQQwLAA=3* zHg;=l2yc`64iaF?J%*e%{4mmc043*idfEkbbEtg`Bni%qn$iVAN_y?x?>^#EH)FdT zvKhyLwD^}7oOsc0(GNS+Aq)yLAhgc)DS08evsWJF<#8QbIct~<_te=pf(4?c>B)64 z5lgBr+=Hm`lu}v){j^h`{5+|Mg1B0^Aab&$fm^;HPkC}?}t8Kp<(9&|w~&wQ8)G6q{~ zOp9fn_=3c~u?({-sZhCai80NrHi*}k1>;eaM?kF_m>{lIXzoEUznQ!A)zL_@z>D!X zdt9ZmifSe?R9>1kD-51P+kASe405t`fe^kS)SPwjSXBgSF%)BL;E52%={UbKpF04U z!q7PyLx>QD2A7~-i*{KVbF@R16u&4=j1+^!Ql)Aptl~RR} z?*47Dav9{bMxY6`e%>#`k%+`$j5LwvW28C=PGep0a|%1TwqKD@Zwmais5?+!SN*NV zkp!20p}E26a!<#jc0BuR@qs%>N?zT1?><1D|0=v2=+}47DjT@t9b=Jw-Bogu{BzhG z1^{mk*l5GgZg^4>-q#h>f$~(&cGm)t=x!AWkMK*3wlFT?iDch}adRrvi{9#1f-t`D z$kXhHL{CH8$>hvf3QF8{2tF7!`9Oxnm=hHuZa&cS^@J9?AFNV(^IqP!ZF>rpxjO$i zxl7N_j?(+7lfS08@w9k6Dz-HH;;=Jcwkf^$>Q^C_rp(piAG2nz1A5{+58WX;Z^neT zpPPG+N#`a&`IU?w(`Su)9qZ{nbdb$w#C>vPLwF|PSyW+uk^vUEKnb8Rg-<{H%uzx$ zqmA;%XtWr=B|70BV|Y!7CK4L$)i*F(yM)tH6kh1H&S{O@PZP_^_TWTjF=v1B zjMb*4e=Zp<9B9_lb>v1PLr~J_LB57ZnxSwPbHF{^1Uc6jV9|t%h#ZZmYnl(aSk6PZ za0qfyQs5zF<>2hX&`Bb0rO9U{n|@1^KyBEOv4 zyz@F=Sg26hhBW@f&UK|DR2_*#vttG3iMz`8+MJ4UCIjnA1kODhhzrpReCuH5cqQXm zO)cn-CF;KUoqZg%i`S6_t>H+B|h9*U$y68tJG6LV6!+rnM zH~s@ULEP6q!jyU+0`2GhvdP?i_ zq&L+EeQ*^b$e(k@XPGa75OUwY3fm5js{%kmnVsqX0vkH-+hc|x006)0)nAot`ER2g z=8sQte^MvyzXA&cXBe?Y=pzv*nAYs|hJe zO7?KUXj+a(xfTLRgL*CvSfX+44#IC`qiq(UjlANS46q9DUDFQ}mTX;vm`q8$C>IITxQv(N|O(W?8J|%^Jev`9h zYr<_XU~&j@?u^muM*eyJ0m@*TnPn8V^2t<8`K0dd0VwCgLK6keg89eOn7uA#%hwu)?U4%yOFNZXx&agEF^3$3g*5 z0|g!L;SU?kOJM-MCLL+|G%Xo@&yh-SMu4^^&0o)}|4c z2%P0mU&O&r6zMV;!is}G6W&~%t$QBBRu5^Z+qz@HQq&If{b*}C08bE*3h$Yt9d}vn zhOr4#1s2d1!gX5DF-eBG8c#*#fx0Au(tPjRo=mdw98QPmP4G_xH0Q|uKncXskm0*! z>We)iGc?rtqYIksURbJO^gy?=7^`JIgZGXpb_2>heaU6PHbCH>;xy@$OP`9bpx8DYuNi3s$KLbqg!wahFU@40q2rzOVEeu3|xZJm74V?lOx<=}6 zat~XQv-jrFls6Aq@n(n3lu#zs=NaIh$NdJM?i6r{qXJldKq6UzdRLVqHky0EqfZB1 z!?Kp}Qwj0P0NvNRB&;_yMw!@tA~Z8T2mL(h#t#bEYfC#i-GiN1;C@M!6CBM5c{)^3 zvr3zhKbCLv$N;T)W1AgRk`ZqN6V+d;xOa*` zlKZC2NA=@;Ln^hy3_6T0?O{pF%+@ib(xF54-Y>ZH#C_+L(1u}^tAObW2<=#+)wGBvOYuJ+>EjK6pU3~)DTVsGcye+y`V-VK z%Ktfi{zvfn3)KC+%Mkwf6ZpRq`3InNGIF%AcmBT^Z%co)Ky-=}!^89=Q)4vFvXpT2 zYSpR~QnWM^G*Sx+UnGx;icn6`ijB*x934o38}<(iP7d~qttcohw1EG3`pLquBEAo0 zekt^qL(%_+lUs-Y0O)?F>K{1S$<4yq$lSot+JyEaw`@&}oGt8Z|E2k*>OXEG`xpw_ z%}F4efo$}$~3 zmkHW?Jvn*GTvykIb8&gu!-qpY)__vi0(RL9f4Qte23?s7PkxO8w=Ig&LkUaGaS%R6 zjkisc_NYFt#4BI$m=4Y$N=K9>h!l_o4VoL;46hyl7_n5n?Jt4ux0RS=SenmDW5R@v zoD0kSNDyC$LZMda08|qpjCiF1jW+X`ilTLkL3UacA|I<5BX^e_vHS8VjV9|!qA7$t zI_ouR4*sFvFjWF}$=n9#wggR*XHlkj^ou(EP*tVEZ1G)OADECaP)AShV0NjS$^?({ zf=+~O;nh@6Jx*=$S5&u2#qhbUD9tL-f)Q-c7$1BPv4;Qs)*sv4vSPS3UsX8;9hIbdk?8_oO{B zM8rWxY(fRc?$%~2&pJscP-pps#`F^e>*#R``pXfh;)r}DU?N`W2G|_)lTLFS$V;FG zK@oNgg6Wm7vdA%Ht`_Z(Be}A(t|8%2V?nV7CFZ!SP?`FICzkIP>x7D>2Bb*OBu=Py z>j5@t=FKEmq(8l}DRpO6D<>pjlqgrMQ^FAW8W%675>4r{--8hg24)Avld$>#yE(It zkw>E08zkEmgHKYdnaF}DH15$2ti5mWBqzy!RDHSojT&Jv-QMHsv9{J{5~V*Z1X4WF zF)C%-Y97!B6GGKTyPAU(e4#xihqg9!t`3ohsr=Tjs0Olq-*q0HW}AXehJ@W1hmcS3 z>$t40LvVvZ(*#^3pS$<`4Kxsncy02ax%uH5L`QpR;V1NVX1er_H0_57AYsD(Z9zO< zWsZZa3ZKeav%?Y8_^VXaXM^buG2@p+?5}`KnwW|Dl3^w8PegGUpjOoODSb`~Ma!@| zZw&_QdtB7MdcIC8Rb#h&%s&DSn#jtZ8L)EGl|b$vE(PWvZ>bOgL!LdZnfm<&`}b0_ z*1&B2Ptd{=1JZA3g{l@uXz=d$Z`njXJ0X2P(OSuq`3YPlw_I;FT5YVD1#6X!TlD>? zRvl@IY0YkLCS3MfhM`+O3I|I8c1<;Sb<~-h3xvnmqCgjlg}}0c)D$qsFn^Y`f}4jR zba6u$*qrw*T-*Tf&UFyogg9)A-s3FTB4gwShw7FoLYQv;SA+*F+Y_*+5QouxF33XV zOhb`{63Vrpm__AneW~&*-%YnnK9@O{ zt{r!e%5&PZrEeM(_n5BV#2&wT4;y1DcFxQPy9rx8cgN;(S}H=AxJ3}V6OwAf2Qj^S z9=v|WzHdmS>)x}3&x$p;0ekn*qD)9Oe0{#kwPNBWy>4k9PP!L!J6%DEB5FJqAmiof z4PQ;N@;YmOb(jgho}Glr*1r||38TJW-j|~{47HGxV-C1}tmb|NaM6$o7j*Dc*_$Jp zanmSILBOvZu^FbVJEVS{+E(%VzrgqGFWD>zlGXrXNxex+Jro=iV25lhW!y+5!-rM{sU z0MqK0V7-ftK3%$rNbJnEOzYU6tvZU>zsfYiD#3ARDy|85Hk@4lsS%l$$ryfwb&b-- z+7*clK!ry)BB-WKgE-;P4~;y04@m!W7M?w@QscI9D!kt^1;3Y*lC{A+kevR|kB@X4%}_LvhDvU%z-XJ#pvH1dzCp zDVf@5aei&&`bqATT8QB(;AP&Ba}nQp!zQm$Bz>$X>3wMsyMf zs)z}KFd{Y@)4bg_0)M_@Ck}SdwRCNEQZ+oeIy?VZ7Y#5j{VC40FJA4tRI^+%_4c%3 zzevB15s7ah88~TM|HFbF8JdjOle;0Z%M{-ShctZ4`QAXKB-1FN+sf_?%8;wbs6?-Q`=~HTXJ2~GgAp9DRgVm8^*&7KO zk7R?1i#l&TtXoAEc2|X_8Nt!9U)|}qVZH*othH{uy;pv2P)m>^ms!5=4ly=TK>m}3 z(xRE&;qn5h!VejA+&1bG8T74daO zYzrs*?Wj^q{7V$ocl=$=ct!OeQ0k#c=<)#-0#mBZqv>GBdlg1UNxRN*ouu&L%{*?og@c9=OX-yfu^F!7rocf9Eqc@86G76@tvFO~ z=z)MP547{9c6ASbkkX>VQd0Ne006&m#qSY^8yo-t(LW*%2Nx4Z4_YUaf8(S7f-=t4 zx9rjx5I#@oJDebgQKXjg7LLtl!^dk`*r=W7o&*AmUxBgJ$*x+DzIQT%0p;q>NhY$D zP(Xd!@;Q9D;OpL-F$W;#NPLpI7B%eV#_c7AP8^?Rz~>7?xZmNB-C32hY8H#M3`6wL z9K!B_ikBGhH3T8dwXXrd43umRNhv<+i(~#|2#P7zKI}Kxpvc2=4CP3Q%y(E66gVaI zJzQC%fe0L$+z>C9A*0ast!#HN$M4C~D;OVwf=b9KVPQ{@qAr?mrDA(~qsPk;AKpDl z+GHDD2lbm8`FIdyIUyPNGV~z-+4kFd)CDfwU{ta+*)kC8vZS1u82_}n6puH>b#H>j zIfI$R6>v`A>rNC@{t;56-sntB+50J&9-!3d^Zh<%y zhebjg2PUUX52a6{r03JZ>w}}EBwcE(VrHM86b={5q4vX9_YV^_Uu5+@yMdnf7R{5o z2+QucGArVf&i7}&Zd&6S)P^n89rtHB+r2CnBxX1+A%|*~)-ZQYpV|ZCDFe1E5v#(W2Q1rtvA%r_l>mw)y3u;8061kQZI41a z5pcn_p=;j0-+}GNIUNqkQ#7Nw))1+~Mcrqweh*8+LMu|94WrT%R7Y!=QKsMIC$2dy zU6mh>Xf2-xZ5UaRT*>N@^XvtOfxay&N=n;A`H>9e`2Jq$XDf1hZ@*PGQD(+ofs*%d z?~pl{W_f@Dt1w=$fH_eqDykLQEr1O-L_D`Q)wE&rD{WO zrV_NyBfMKi5=QjWQRyO>OQm@T3!>c)ln(j6sqXqk1@^RK*z*eeS5E}+Q|BiOFaW@> zO#CZH1@aO9-D5v|blwb|Bxm^H<7>s3DFBk@ zyvQK|9cIK4#*NCQQAka>nUyl5@31!LuYICb<|s4h>F7S{wL<` z03KtNU6jTGfmAT6c@=d6hp8wfI_zZ*?ddd*-X1qI_NbsmRwaaO88Ix_c&fgaKw?vt zYTHfMM?pX5%$wrUX#Il5)-)+S;N(lXE$Js~k%d975VKS@zgx<6ohsYL0Df4+K+1U5 zzIRmW%AX8KS|US1NI!*0^8?X`gODcaOxLZavuW>n_${3$pgdx3QG^chG;d5R?)jmE zq+sIz-J}G5@9&JgANgg$))U2 zi8)kOv95_qGwJ2{To1^RYAHhC!wu4jNO$W}40UG>r`&oE3w6tGusv#!H*k<(*v8#L zzV7UyTGJjoM4%=@Z57~yEcXIe8ko$9BXV36oI0BF`bx+Q-iA7Z)C(!9Qmf^R80d)i zywaxd8RGeQNXo5Z9%f#HH_KE^%zVF~=I zveTpOT{K=3H(Oalm0;cn-?ZiA;SwC8%e{!1u_M%9p(;Hn`ONUaM*IrMzuI@gQkZ{- z>PKh$`vJ!8)|4qK&g!}T&Ch?qq} zOS8~XZrB6Zei9vlYz6>T&v}?3Tt%!!QBoic@QAxp3-`6akq215YS#CIA?S%@=8IcK z3#w$BBn(0j3iUCnbY6GG77E2>%7zcFbaukd2Iq1$V$wa5VsEO^&mqn{l0k2sotO|F z!{GZ$jg1`67_5P+ z17fc-z&&^W1$i0N!G2S^REs)~kYv#8vV+n)4snYUF{Um0&A26g^vu$vYinifDrsz< z+`cbZI35m8?vOsZFS2D{e+k#aqwjv$_C4=erst1|&CJIFx2n%|52Th8H*aYs`29W7 z?#8G*{PFo)hjoth6kHwtII{{rx-u?lTpG&pXW&r^Je#OXNq5k*iQG)u1lQMrq&z~^a(BOle z`>Xo=H>j*8ZMQ0b(D@NXoPx$V;hv7GC_+jlszj`Uic_a|7RaCokAc0s>Av{ra?Lxqai4bMf8jjS{KCwTJabLDd^>XCycXn0C_oz#Z<;-ld} zlA`GX%9XHem8PI`G*u?m?Jbs{W4FG|?Yo0#K?;|N2JMLChhAsLaA?Ng5~B8lZ%hr= zNdnDGGL6jGy@tFlnZs!BMETBZ9hV6QsvPluY5h@6roh|K*y(9%aQ7{?ET@7#C|7@^ z`i?Om+N@fQ2=1BlvnM7e6nDf8+h`Zxs4RhJ5W2B>BYzOe8wP+&)ZO>a%j+w8N`!h& zL<%J;VKV*V0h{<8=!Bd}j=gX75x1p<@qrwE(ZiWOMgm^|-wn3gL^VaHH8z;f4^`byBO{z6 zbWO<~(o0$KHZ2v>*ltT-^r~`6mcM_bQ=HUZ;nO9kpj4jmq3vBDDIkG>_anf~*`qtq zQ1$%X?Z}yiSd_&xbAPwu#ae-b z0*a2ej@ZfE0BiQm9s2!m=8g}wmIuWxm3reNw%~{S8SfHfQ)IQJ4GvcjcGxU!s9f#= ztf_rJew^vkbJZLb@ykyFk`+^xy0 zmw_G@vt{NNP8rRCXa~2%YdQF7VJP;f&3V2Vt!LGYVxLklJLx)C5gc#ih)WF5k`3l1 z`R>B$1rHgdHw=G+I`6X>M!<>~pw!vbVkx{$Y<)3yTQqP~X1#^Wo3Kd2CnPg!al`t~PIL{>` z1VeVyy3Ai`-UhJj0Pxr&A0Fxcc6I&*aiw*wKXn`f<#8L6YvJ<~YA`3*&C}O9z zNhc_i3sW+yx>PAId9XbYjMmf%$zaT)%{7;y*Ri3(93waSbd%}ylLRz>pt7k;35rCU zeWW6rcmJSKx7^N&KZdy=HP%umx$wYiXNf*-5i+SErdp$ZSk@_817_0v1rK0A3cx5R zqeA7&QRhmcD}vM`4V%pXJ~0AllopMx$?_!5{ii9|M(npev&vmdF+H4l2q;?oXu z#h><;2}@m}VySLxAq{2<;;6NyBB`pMzBdGstui>%lS|wqw%prEB|tJg3a}${&D?j- zj>4~LO6u+p-2<7*5ZMk9H@o*Bz{bo{B{A!=d^^Gcn#Lovp7|c_v2{AdDew4JDSHig z?IYdH2v46nBsi;Rur)N-GiN;>4Z(a_c{Ev-$BU8Iuv%UE5`JPf*|W&gF87jYKL^^} zribisR5U@B_(Rr9vSGPRM1^%ijvL8}i%l#~VRvRA$Hul)&-3Te8rupXvLOf3(WLb0 z>glD|abwR9zi6L)UiFS*1Ka%j`<6%%@DN3ym1T_t6SAABq_DZo#z#MmixM$S9Lr<6 zX!z_GudSgT!7JEbR9lf0aMb@V^dsDtsIo{&g()KejvmQU3nwUlaVTHh4C6KIuyS3J)ZOlKTf`@X z1I<25^{_L&@3=d9Yz7}8BYeKhl$i0%sr$6hucTEGY_x|UZplS8tWT#!<1C_a2OCpE`hmMEH~Yj->aGNg-il!<^BLmm^xo z*-Lg;m045Sah}{2+8I#N`10qD8FzB&rZJ3X3=yo$eXQ;W=w*z!z_c+#r^%l^&EZQs zQfXHpUg{oKV0a7xg<<%bGo!a_{>S%Oz`18_q{A0>S!pol(rT$o6W$P1au}5GsxZ3 zJY>~1P>u+Pq{5i%8Y61C`wL0y#1Fn7#T&j3uR&%F1D%`KNK4wz4gxzEe-+AYlQSZT zI5A7>wc86XJo&EN846{`$LOfb*s!?VxV^gEGTde&I?31F*0JWe>2>}S_*YN^zXBu} zeyr)gLiewr{yQ@E{GgW^{xPV3KeGP6S>q#BW$pgpr_>QRIsN0E2jq@dZH|T%KJ|U@ zQ}BI$BWSqLiG?b0@t(TxFBB^^nZ|%g!U3W4#7~bB6N7tzUw4$MsECtV0*@R)vNbH7 z{i6o#%al^Oy(o7k(`napMeD@mnqCJk!xQP2#9qbVD03kiKr;Quf`erwz8cVCFsKUp z>m-0qx44KE$f;E`aiNFV1HyG;bT9?{%R1j1;H+u~6b5Ct` z8@TsQJJ}^7>w=P#m(!oSTMN;!;E#odxu3Bind8%c~iT zk_LLK6zV+=EeC9&C_*?E9!-M*R5q;mUR8N2&5Y75W{WaSTzFY~ZeXfy-?};QW50Ke z!_?cvE!5$aQFBcnM#$psm02JKjx|V$GR2OGQu5^`=*oss?esCQ3&HBLBK9F$pwbGH z?96I;f)F!}mvnom?#$KFWVLLY z6zZyF_10W~LxDmnnXD&!ebhdMH6EFFmqi_KrVE~n#gFX4OjG6bZ))G$GrJ1sA>;8S zb-qoH6ADc|v}e{KX6ScoLGy9tlwbmH0p#IfUG!Npai_9AiR60-Z~^4;Ic<+K?#9+W zXooSd2U!4rhf5(n{Dzn7QAZuMqt~EYV)hPUxWtofkk?Rff#c_svub%G)z^FW1$9k* z4(HVPx94ZBRfw6_khYPD3h`;2l^p|=om^kOyLoTb3xiH6UCojX{(Nhqk zjG8U?q0U}ydY%!DlPwSWiUh;MYtZ1N;qOy6s4Yd#5iuBA(!}|{DEsE{(dyTJ^ zGAD~5w&qF=%yG=I4a>okb`U%hvCqnsx$g~e_-+n$cyyBh(+eQ`Nbr;Pjr0PrE-KP3O> z5bAq+;jhU){uRRbBZT@7vX6fTPyZqiCQnW!r9eteHX=bSTXXRF{h6R(S#)f$aPLp~ zc+wwx__MP}d3Pm$e*tu`H!-*S1N{7l3!p;`--mMuIDbKgWh>xY7#on%khK??$>|D( zHVMO06V5gJT(dV~ujsVog+rv*#a@QGjQ_xWDO=jV0|r?pz#`;n4s>-xS3!X&ATCE` zvk$$o9cQ;xU>}8bg9NLukl^psfu0W@qczk+8t_8E4{g#UJRX_IY8@~VWjuU2#lPGB zm3c?Vo{q82XqeSKEGMkYVz=1W|B6ZNvL`|O;XFogNRQ{0V>`w7RC_P?1(Am?hfB+J zJ^0e&fp5PwZ+`D4cV1Pv3DNOIfA{>Fh)0j77(D9i0Hj^Y8z-W{16>5vt!deFxx#Ap zNW&&}@<}(P(x4;p4w%|WtJ0xpf{Rd>@JsHw4#l)&vB!GMt+d*d0THy|mtTmrN>j^Z zq5RXeO6C!X1|eF-0zht3qr-crKAEj>z=`3d_&L~Z@QNfYBYw=ysmCm;+~--BcZ}`h zHrzZNWJ#K0QM+ukh0MOb5R|C7b!4u@yMXYisXxe}-~ zQ%pqjXSZ5xsICyvm#!1efFjxhOsRQC@S?hWT~P+k0vOMsVSXvd?$?4Z`N0AEi!u_t zQYzqx13v%~!vThsX!E|PjR7o*lPQxwKpf;I*H92MvEPd$*>y*kDQ|xYpw6laKZu2| zxaEN$CK}&1-M71^z#l;=dG=7Ogq_vB)%CWfaQ3`-M&<126zH6Q#6w<@>lwZuf6`<1 z6?VNmnp)@Lc*$m&_wurOK2BJ{S2;LO$L{pFi{d6ZDpQs-%ZjVYZSI==y^aIq1*$570z`gW=iZAw}W1C1s}7boC!XUHcTL}Yn*4LQOieai`k z%JsPg62#S_iGWkXdT+rxGx}Q%K8`nj4La%5&Uci-gBeo4eTgqWkz;^Nl(SR&=iSIh zbwV1%ETflEt>t0P5L;VKiKtMT{qyn&SeN`Z!xe<8h8Wm&*v4VFVg)m2NU2)-RKz8^ zZ@WW08Byyf-9}{mtc0kF)q~gMQqYB(^N!!TmP^aneeERgd)DibSZchQWW;u2UQa3( zDWg(TTCMuH)y99-?RyIWn>PDsu6FcZBIN<(v4k`Yzj{If4$Q>y0}%a~V?~Sq#yn+8 zK}XDIpce?Psy8`nawZ_1SvR7kCLtD|%{t$0TC3vH6cHhb`{P{sy-LU!hGC@SYt}R& z3|3RNUa>4kkSLwsM8`QUOxFtP2L8TF(Q*+BWKXI2O^lAG)=($34-mu81S*YyKq%-S zcIC=roYvNgAlOyo8SU{&nCv(%#S#^^!1fe}Ky}fQZJ~%yV(f{7s21|m3WAiZHFNL3wLcehwL}RM8?6%lDop)Q-Q|mN{Ql326>8+#n^@E11 zm!j}NztW3y{aK-|-RtTJFTB4}JaD*FBzR0|)zb#ERA)BXP!~Z`c*`kbAfNddH&B;z zRxN(qb&xxI?9glxn*Re!!XmwRrYYgOFgdnqTttE#G~hHNx}tpmdqflR+){L(s$4={ zYBW{mefEHboG-e^jBj@<6_asskT|UAb23uS zz+>(Sp@x<1?RMGCIvvd)ut#x=fhZ2f`)TP!npia<-Bv!@khuo`r!uXN&=pR;~^moR@?Qb%LYfGlw$sc{MI z4P-0bWccYMh|B~-hO!}8d=7nU>7=wiW7VeEp$O;Hs)oKt!@LHGZ{=<`A!iy1yQNae z8p4BSld3gp67DB-h3Ffzz+-Hhdf*P`wkb@?#A#F`7XXSGy3%sj2=5=z@#dB!eCT` z)4&3hTw=~*E_g0J)vGlA`hvUBaOof;mUH)d$&ziP&q4{EYqpG2b7pP0W@YY{O5@8S z*QU#Tzr-qX8Fv=rH)azOBKiz|gm9C6Zs4L`ny-7qBvk0`DfChiRmW!OhH$BwQs6lT znB9|`*ZMEu{p-2PYCc}E@L&mjL_U-ZA+PZPfV>we0`=CcabFZENAa%hk?yMG~H16B|=bd0b^pR7P%Pjm5& zdnI%|-$Zo`Rc*&D%9XI(vvSb~8|tiuuwLCII8dVrDb_qtv+rVDgf-A-fwsH{rtl~l zLLx;0-YR_PWhC~|k4!{S))3tBlV<@YW&8jd1QBmC0=?>&NYDg4rjm zgmNkuXZ=RXws0NJ)CkChD4pCoVbcu;8qOX>N@d7MsmBiWJPvj@l%|oG5!N=tqsDC5 z`GsnMN$Y2gUio-cI7P?wpy4fDW~pO@b z)qu~|kfEl6q;h6Wq6tI+KTmIr*Yo#%w&Yfur%*?1R--=`b7R@mQVRN{*Fi7$lfdcB zXXaacL*>pA&{0@fmn02HY(A*mA^}Q>@&8hr+i#~7cZT8=r%Ktym9Xd-nnHDfi&qgQ z%Pe@t%y$pjENYVjWjS|&hw3W7uGa4*^0Sg3iy)?Mm)VM2#l*5)NawRgz6s!FJP-J+ zqZ3Xoox%$O!M31yST}lznt0|LQ;waQ8f==4%^xAq*TlamRTtu*@6GoxIB>jB- zZmI6m9_S^O?s*DK3B}@D0dc-kzahGMosnJtV%Pv(Oo8E&y8pZ_XT8Yi<+ioV0B4<-F;^=*Dns{DQW`gi2~-yu}F zg4%m`Dw5}9CF_NNc+q!E3^&r)CbPtRfuMRO+iq;A-hu+XFhI!?r2VgwFPlyx>*Zy@ zf$&vCF^BGl97>UqQBhlH)VqX>x`#SPQsbF-r( zcXX`AmVIqv;V%rp_~|^zM49yLgNOqyuRRfjN|R3G=|S&*zNwQ@(iNgxp5h9|Z+X;nxS$eGm?iO*dcY-<aKY&~9RUh?JRx^j;PI<}C+d+f`sB z%|~0Ljlxg0-y=7}gq02EEFdZ>E%6EzeL!`Av>5WMJeu2IuO2TaZk6e8*WYYUnO+CpvmHTpa<-nSA5(~Hs3=4&-&%`t=9Aq%kqWM7Wts!>l_+Z(W>Nrv) zNCC}kRY`SPm+)E*dj|;@3WvdO9wWPWkZhF*2WBdNs@%bL(}sW;dkruZQ42#tf!aE% zRQsm|`>rS6&VGgH)qJEG^p|0+;tgFRX$`kYRn4h@-g}wOY69r_-j{ao+gOR#)LW~)7MavSCQ`wugCGHZcM_x z`_vshxG>Ym>Pz2qJ;MXyubb29*>g1wX_gfl2a1R!+VqstYurs|%d<%j&5oFXh5^Q?XlZO)Zkofc^*J-MO}B$+*z2bznE0#ptB^(VF5Mb|{eqJq;2EJIu%Q)=zLThZ;9`u1BuX^v``mFhjD@L_)bFid}DtlWC% zyZB(W_^(Nge^{pv^2)y{u9-()wOwVt)zI>>HVq0j5W8)dEkPv9>|{excMHSnIl`J zDo?Lvtsl8^bGp#l$fU29C135<9K1i(%-skn?IE4C%=&hI9)*Is2 zA!#yR2QJija1h5)=F-sZqH%}@0yTV_(po!{>a;drp})B8Q91~Pm^YOMpfB#>WN?^= zl)3bnSE0Y%Y2FWZnr$=Oy+D|^CwfmSw(d(w(5;1|CZ}hvY$vtdA70hHRH&1|QNRom z4=a69rQWs+d;{aqhB)4lK@l*n{C5qgJKQ^rea5rcb@;qyNcY@Rcs@~qq@FIW^la^* zvNVenP?hI^JGmR#z~b7N>jB9XR%iz-!nDG_G(Fts9iGCf+@ zG62ecIX9^Sab66s;~B2LxJm;c&4mL?_xX?s*q!Q``cVh?@?!7F*+!W_DtcPU$0u4( z(HrGdE@&5$tQ?gDXy*M6FG5Q2( zIF>0)t|7z&QZC6+t98`48Lgu0*PJDt=EzZwo_0U<%Y0yK8uSv%qEUc7TN%H5 zEOsLgSAL+9Qc#r&coVXi49jtY&(x+zC_r?8nJ5qpQt|68eROJu_Qb~H&!OA4k~4Q5 z-0x91U3N-_Zqb77Rp3GQ2qi+ini_|^@nE!h*tWGQ-2miI{Crk>S|y}(n*C-%oV>8k zp~_qC-JGeX17dJ+hOQ+e83M6h!uz(!jfSuHo|CPO%fiy=_PcL4eCY?kgK)`uGnts zxBw>A8B?Bl?dcbe+u&dW5*GID>n+NwTpQHS>U$SX-_98Dud_U0{=+|>W~cWzY^=`F z;9NV^!+E+oQ(gphU#x5Hc84uCuyyqw!ix}_DTt3a44AMFf_1Dwv_I!~TP{~ncn~%K zTonXc({LDLU>gKWT9u*UXKyU|jkT)q#*nd6r%3qt+HB}w+4s>}nMX_W0d`q~nL*%f z`^fqsf3`Yg}F-cTD*f2!;Yo79e@cK-Z68k|PhW zHW1yRujOxTVR@%;JQB)HI@00Iy0`80g@s9vZx!9&8hGy)TiM+hsGUDyCJaFuzsU4^ zlEm_49Cza^M>T>-F)<-zEShW|zryky_>&J1(ks&!uR29$1LfLMx)RjSOR*{f!cyUV zPzJvIaJ#@#U+gLSGN_TFJU|BvRj}&H+3qv*bKp7Kz2&$SJ{L0Gh-Zg>iWYxviv_A2 zO91HAl1?>&$yK;%v?eWY>lJWx7ghVfc2~F8@Emx9YN@_q@%2$1 zZn3awtBwRCn2z}=P`beZ-wH#;6#E$w_6u|~i_vdX3Qdcl;v2fwF9?`6&mzerYqX4N zTc`8UCT63(zYhuVRj_SKdQ6EdAlZx?z+zO^@=}0~kl&B0@M?29JDQRmpGW=f*}?G2Gsa<%E0<6mz<&f6 zG$)sJ^7YrJm*({yGdV8@9b`t*lRjfPtroO3xW&ZeUotQSZHg!hJ0sIsamy>_2daVW zo#-C=#d+_nH>459Sl(y}g*O;e+FWviL?qnnL-Pank37N5wf5^WN-02&tc&$0zIyzu6zPn_`l#sUA)f?zs9nzd)rLi=z-h@_1;o zNfG1Kvg94(O({8DSYnx=mXePnM9p`NUkT^A%f{fmA`I^H;F~14z0}SoW$KTEU#X?I zA6L9q8eL6R?^!iTF0(9a5v?ws5tAg@@A@>gPzV-Q$j#8v&680yQxP0NvvZQ$Aqy&i z*k?;j@wMEc2N4$syEVMp!H|`<9F7~q;p>R`Q=Ifn z`@V&M|2u|~rO~*B#&aH{B*{gdQD}FD{!!I(&0mxA!WH|E2`yw&#PBSp=lJtoXYO`XD5=qi@TPkT ze&VEwTGH`%1aWcvVpb1{2~`%&(*A-m0Ih~OfePa##yp)ZZ13?kd*fIV$(1PwpK^sE z6gJJYc$i%|lG*ftK14aKTNrs9BW0UvV&qwqnR4pY3dA0Kd3loZ*a%xh+FH}f%w|aX zkrV^`4n)+Mnj#E2wa46NOOlLmh8q5H_Sh|U$wKzN`O`}iPx0q5Dk6!snuX`j99q21 z%tMm!qO4n#H{l^lM{GML-13`9t3O?Px?7N?W)d3)4vTPR#itl8mNK5RP-uQ&bgeZ@ zo)M+5l^h+JX!pZqQ^*9c`sdS9He7Ev}=-><54rl zzq;iN{DRK4M*8kh!stTYdJ}a%gl&GD_BiT6lqz;L6h_zv>`AnIkcQcOg}0?rE*hP) zl(E*1sIq}!K66XoHy=GB7(mAOg7|8W+ZmjVLEY`)uv=9G3k2+JXCqFNy7W zH~mXGdMC=YT~n^d{90?<(hEwp^S8`@Yku@`2si-12fq6Q`TaSW)AgQc{QG3i@2SN9 zC6coKp3Ir$g$p=;K$hkriV2bJC!@*;yIwOV| z&1$nUKi0uw)iItl`X#YR>I_$XKJ?+{Gfqa*TyzUm-hmK5F_hcobt-juDM}8oPV|E~M9Zrp61su% zG$@<1i%)x&-tf!B;9Iv1dc+yXT`SWLsyi-AnnzC8y{{Gztt2uhn@r+JJ(n5`)eV|l z-X09CUYC_a_7dd#q~i^JY85I3#MhVmDS7A-Y{jgDuaQ?bL#bFDk8_LW;YSJ`c2Wgi zkDae~h@a>~x^t>s=dwt@M>|rxZ%r%^@+DJS3wb>yJ3yjGSuzd#*CpK_GA=QK5VxTv zO&+cK=i=g|!;NrbC*I9QUJ2~oAQm4sFC<49FGxS5IJ*US?C4f=<2|5m6`m8fo}2GK z5>hg5S4gGqoE6!udGX#~oND2{{>C(ctsJ-L`JT!7kmz5_y5K#pNBFlW|IhW$e+okU z4a`4N`aKA7SIHVBmQ5y5U1U!kTll3a2YA6*5GRm(Y9^*%GFM-7#?|lb2}V#uL`5nc zsn~+u)%Mp32Bg&5nF+6Wbu*-@4M~dUn9l~p^GXUlnfVSkP1eel%EmAOwYGuLB(pZL7Oz zB&nG4iR4EhLA_|aHRE9_?uF(M%B!*PzxroDlpE;Jo+=jWagfu_x1m%QNaTH^7-!6M z@Hrj5Od+jREZH-wYi3Po^55iXhq530$e*T0=AT_+&o74Py*r)3+%Dmg# zH$vil`YdeJd_L^pc}Uxpk8IbBC|AN9yC9!SUl2G6JUqad5}{I6$d`(bJbla_#673b zOIW&wR<_Z3<|(Tl%3T#LIVN5ql1LaIzgKJcBP$wX+uM_x^#@x(!|fbl`OR*LWw}byP>5aEVg47`rkyHZVS^M#A>?UeeJzV2 z@jGNt29Ly1IxSk9y$&cG0r8bf=xxQM=vujL+D0A>rUPZulUL#*FHtFvTu-h69Cd5A zWI(#X&u8Nqs!>C<*ge=_mp%*^or?#&1GddTj||QgQs?Z^!i-|#2Jv_mn{AehtZbt3 z_rUUbouV^wdyAtNUL@_Xdcpu~H)^}XPN^epk@%3Tcf^=ypy}Am1d)nHFGz5UVmkGO z+*6lk4z*{g7;1W}1ETqO1%41JhsX~J33IpCVIBQ#{cJTsa#}Kr zqP7}&!AEPTV$TB?y1~?zmxX2RsVrLLDj%>L`2iQPf+1Sew0V3&S<8`gbxXvp z{{`c&ZzBYMaz3mbmh=~MIfY&#Vu%747#n-dYLs1EMOH=G}%Njq4Hf;1DwT+pX0U}+>dPf?p%dbTU6s_#swk_@$>v4&Ld=m_?BGR(l zqvC4L9C79^dQ74SJlZ^LA+4~P(fRC%9Rdr1(4m|trA3~d_rJy76R*;h#@;Q*hmH8% zdc5cV0sg%!?91O;52t^y_5GKoFr@dUFff2t8Q6a{g-s9w08sqxvVYW5{;MzYAGXPk zspIdu&(6>_-UFl;T%9|HPyy*|Vrr+uDhuFX+v5x%wzywk!Zt+ZUiO?L(_5=!e5dsl*05{1?o$UPu(gt9043I{( z8v!tp(r2S+truDS(z&}(!qoO6axf_!Uacb+I#iue?~_ohOOEQ>P)a;nx4lB*1q(hB zVaKzb$wsSZ+p`C+Gllc(^+RRdi}ktrBg^9qwDkb~x3TEa1i!{4x+GnI_FyvjA`yzDppTb)J<`xOG`f!LLF6(tJSNx)p2PK7t&Q^L3i;St zt?Odd;GB&*pE*XwO$nEX9o7ZQg?A*Iq0|-F(GVA#oMT-dD?j!#hc5_pV^)BBlim}YaZ*Q*McAPLYIc!7_M3gKOG8*p{J z0rfYs+eIs<)I-Yx?iv?}gJ9+vUhCh(y${SWXR%rep z?uz+N2h2+ajY6m3p%wdlu_sD^%F4|hSajC5a1*JIduPZaem25ze4jG5xsMA$*e}SE z_*tNVIuk>B&H^(kmTkZFohLJUq7&)6p+zARK+gpr8lVI2c*TzkQpdH0D_VhJx1*y6b z2_|@{h{2Q3(JY*PlyqG%k*d1O8r|qoi`d%{r8g8eRSq=?9Ky>g zo#-xg0i_61E?Fh9gi#6WX$nh2l%v_5n7y?J>x$4X_JZ8eM%|N+sbw=A2ze$-mnGwE z90kk00z|5qxfla>hdX;HFaE0G>6#h?$2{7X4Q@Vo$$LQ3mxE5{7-Xw%LIZDHT_8V~ z0cF}sSHlOgA7GgPAXFjgJg6I$cAvGe&Un3%jF(p6(MXXQ*6s4OmdIiN3^_IVIRsj# zm}nemym+5MF=( z8V?_HoqgJFFj<*mlu zK~#p^$?lC*NWIv1yl`aB{HH?vSKQauFe7g7FU*}QmDa*KlovMVwM=0+yZmZTGkRtM z^-1Lwt#O9m!_(r{=aT`9@+n!3rrxT=RQW-@u|vNWa!{=bG(S5X!;Jzq*s=0u?m5u@qB}ch>GO&zmmz$( z)nyy0yjNHl8A4hmZ&2G;iWvZn@I^PV@j#l%U|41t-+`eR(~RBZC&WnKOy}9QE?vtl zs{|*-`8P|y^pGS;lJ!e4l?Z}dLa6Ok78&J1Lw;DV&rH@;5mV1Z= z_2x7yk)XfPjJv7nAD-PwDa<9n4}$DtA&2T?%Wdy0HwrBISX zn-{W-DKx_%C9-}wmSotZJ@?HcUaPv+a9jt?(OA2WxqndDGrr_udKxTJyWmnT%t2SD zEwu}JSJl8c1vHB&h%CK`Y^~V<(8*ZFiWZ;3$eBh(2eF`EI@~)B6>l+HwRI6^JKD(-g5b#iH0H5CkSbY6aiKl*6v@ZHEuCpc->4>@>G)f2=^Kcg=zw zDH$9oK@H#JA{6w<%*#H}I)ZpAb%3X*_Xvd)F9?(;bXdkuYR(dS+C~iA!;vT8$AwMX zCGFtYnRE#c$qW6M>ZH@4OJyvMVvdB0pp=Vcw@@4EABC`q>Qyx;GGsCqO~?_FcWt{l z>J%wvvHk&@sy`!G{4?H0#{a#25?@&%jyA8{5RwX7hf&aU8!u;r=5nZ8N;#8&YFe=h zd;z4q)L?>f)btBbhqHFUMu>DfJw{a`5{`Prg?23tL`%(zU_rt{SB#wU$athH{$&cz`s!dF3rRo=5j zohRIUYde5qTk|ef!91%zkVyliXUNNTm|2y(vz0|SC+G&Qab6}e2|iH`&2RnbSbf~w z_%x>&cU(W;P&>{I8ktT^HqK6Zi>dak)LNzL8fnLFvQ zgdP<3zv7kXCDA_=k_ur=ja#`Y%s{Ilps8W~G&a@~0z^zM-^vaT6!|Wn2v`NpFYG@} z^YQ!gS3!{e`JTuB_!a#Dh5wzk8uKqP>j!J~Z*AzmQzZOP+|_?x`PVzO;9rMhK34uc z9Aj*6Vg4KG>&NQ74gKn`esjNRn3;f%qE~-%SR8#JW>r;szsI?1%jGBI>mwL@!{4lt7D|oFtTbq0@5-c#=7r z(_iHhHQ+y)Y{r--`bq#qi{WdpImzf`=UcJ2$&649l2A&?Jr{jvQ{?yk4$7Agc1S=H zZ?Iv7Ai1?lcUApuqNa*2F-KnxmYDLGLrkc`#OBPuTtp-rUjm)cd{!e^-+n|_F9`(C zTvMRGaSHvHv0@BV?o5NG1A|C6x4fVYxHQqd#3SLpabeDm@4!}nwiL32ey9Z_RV`KDV6l1zy02#?7pX5o>G@NiPx6ZOqTveO(FO3Mx+JWq(F8au>Lt+z@N3SQK{HkJE_x#~ z{Mmuj2*zW$61lh2utlu=0^JjLkaM6^3MQf_xSdrck+l=1&jn`JRWLdzu&O<#F-B_J z!0koFdHwv~ez6WXpB!xzx@;UJ1_jLZQBMOPS*R{FPOMIitYM)>{y4Tiql^%vfYo%c z!2l>Daus!&M_+0fz%(=rv^1;Z7EJ2M78*ZCS~2*pOHH%9TW7S8s<@+BRrT#D(8^Pa@l!MG>a%V)yW z>I9L_eUVsN)@2V!Zk>xj0PZnD(lPp|LU;o?g;20iz$^m%n+r&e3+T-==e6mMbWds`({3Jb~7wYA6F?R7zC>^bpCFyWysrJ?gPe>dGmFMV8b@VAj(OZ$;8vc9(KT!V02!lJ8uy7xgF`q>kXQR%svv|3O`6uN3n(@9( zG;~xUTRKy((JICo6LnpJFos}L0H)~py=$OpmoS(it)EeoDDua%M~GEC1XVq8XP&4OK>AnrGoId+!B(?mKl8%72*At($5= z?Seka^6JbY)2d6Ip=@`VmUJ$^WsW+Rk>=}IX~%7%zj*;U!D-BO48kkLcH7*<;I4ZXntJ5u zW#;)-m)#ANt%EVkv6`~=s_OOws6%>$l3Y#%z4s+#J$D2}5=_Py5B>ZQbKqByUv2jZ zWNZzT{t$3?%Kp(Mjlh>4t_4gD8} zkxPlXb$}6baC*&>?(`PRY3-)QlJMroU!s^0zTp@shFl4 z-^cWKhYk}wOS=?_x@Za_d6L_gDA9c(v>Yi8=4OKq-&U3adXcO~Y>)!-b zJ(?684pwulZ87DU7~DQw#nt2VtoX^bn?+cVySP84YN#)o^t}iCDWUmHUab!PbR+W%nOF$s6_DFY)_yw>gT| zdKjrU>_jLf8yd&ScH(T|8m0xLhI|E38W^U8#jPLERnPpLB+=l19qIBBd;T*l{`mg)fZM>* z!Qy{i`6K)c^QQqcQSU4NC9n8z18Ar%txOHfT+DyR+ZLq7hL-Q2zv!eRir|Ck!G#m7 zyp*1jPc~L>w%)Cf0Z9&K016~t>rh;zId4BKv!8~h27;&>!-|3IMyj8d(rv0)4;<_z zdh99037?3yF1n*M=oSZMCaIbRLf`G&A#2U3@0PZw=YSsdXR6-c_Nqr#jZm0SvoDyn zeHQ{K7$r;>f$jSXe7wXTLK*(k>%ITuKinrAb!<&On8^Qecq9L9($2?f|1OrlzpWTL zSpG(C{=bUmuU7wig|e{Hclg)N|9K1g3(5R(F8{vsznrY`o7g{8)&Boy+av#Wwb|4`UJbL*$#{0;xa2eAQ+CNkIXBKxW6fatB zUNnr0&4HaJDVH~_LbR0|4Ma@5j_O+?W~lA4!|OQ*pM15Nu=Qv(!(Smd4C*xo zQgJ+@;rP6wHNYc>!Blad$K&GtjpMZaYpGOYSjm*Y1|Wsvf(z8@3LofGh$OmlHcdJT z!K(_?lDoERToB^IiCFi~d8Ym8Vsn-k5-xxN`VIO#HA;T*#aB-7XRqcSl1zH}{1|N4 ztWiCT&#^khbcW9z4NDt^-U>P*7yXiR{1&Jq^xi@yb2Pn`Y_XW{Z2!HelLmY}P~>?X zP7!hAGNuSvhj)!Y3z&&ime!uh)6R|!Db&wH=qLsafIjTF_eMA@n5UI-Hw-ckXs}w` z#^d339R~%5sMK9RB1cXgDWN7{3dQ5(22Op;8`>)$XwU_OdWW4TAI+C+k%lneps-f{ zjdQ!LA5K)Q5sqrcJ#dyq^pho#eeh??`vg{rkF_o|Yn5rJQ3Q4}dbj}x9WH?Oz|y}?Q*fZSyz zPL9P1wTvOWnP4+G2)Ij#UpZ-@>@aZ_XQRV?U8LZuatc3QCUAPcvcoY zMm8(BbGgVpxgW-4`NTfdD|e|fSzi`Rgm#+VVVuUXL9_^$P&74@L+QpMfP5N)4|m96 z8oDp|ELkzDv)hhgj?!JR*jD z8M*j=%V&AcvHEzm86@K2t(~ zLX85emz?cJFC)%X1bA3x(F4mcu0)40IEegHDC`4kBy=u(s)TgA34tvHeNpTJbThjA z!f_0iKV*+S5RALc(bv{6i`_RNUdr*Va=9tDZ-LS2Wj%XU3QZ%HoJZfw%+*HmoOjtD z=9(_*U5_wIn@Y6f!lb1=naIun7<*X$MIyju&{6PK?0j3zaD_Wc#K= zaNHM1W`Y7{?E~{@+Ejvv7oD!iPiMZ*`(T^-XL3Jjf-@brP$p9E0R~Hwj{k58JKfn& zb0gc@!cbk>(ok5&i$%#71j&?N(Vd9hsSnuBa4g5309EH+#m(@yUz?)-A%Kyl^|~*@ ziv#1I(_xlqTW(YYGu;N`5O6TRpt9mjv2NfkEQbRDABV0CT~-psXWw4a$TI8RyXa zdsC6gReL~;RxCdYijeICJLFk_$B6>8nh7zlWC#aMm?Od3K;1IsnH7+8-iue_n^TSZ zioH7nf7xqe)zc=m#t)vVug@IK?yOOrJVAE{=XVDcaRq0q3W!UMA#vxGw&b_(oozuh z@@t*rmG}3JVjlgmZ>i?{DnD2y$FcNB2PSn-Pd}a5_0knMb8H#)`4Ekw)=+((9W3mU zgEB(JNPWWX)z#EBpy)Vk&w@FAE)Z(lR8$Ndy^2hn@GLozx*NQ0%DvibeQ_TrgE{BZ zux=LI-7<1(fTbcyHUs0pFA6$Z?vB4aGRrO?RC}jn09v`UgZi?`<$^5Dwi&c>^DSIU zO8JX;yuhg%*IZ&Z&;^CZ8z5^?6jhp=xk;6Idf%_jOx^Ypawx*L9K`%v&NN1|nQtCW z710Mn*F4HExAX0)a}-CMJ1rM4BI9%%r>R@=D6b$WkJX7x3WD z=ob{F5?RCKZA~0`1h*WeSXYk~T3(L?c6MeS0_RyvP~mm3!7tFNwlNMDtGHP#vJc(| zZuC0C8%`qtZ=4>+Boyge2brL_qpak%8pI-$@Vr5h`SZ7|?)fS`zCKH?opSq)ytErO zVgQ+}C@l;&WQR?sqFlHSy0KlP{-}QES{nY-Hm(f2Pq!aw4P*wpmR$yfmJ<&Lb3=LKb=> z7#Ba1@R2O?3pTc?V8$2vY8#SR+D15t76VnL6QSo}oa)NTBn~D~a8@Bd4|7E`bIWqQ z-VgRpGfNM7Y}%oE%LIm}C9;G=d8&<5o-Dm(9<8Sh$+09%v4g<>$c&3+PYTjr9RWby>}97T%Bk|5DBV`2;_xX8-e~qu-A5->I z5%aOdKbOk=17ulnjvJ=^^)$&d<@Y92){g;fP_D6nf+|REwk+?Rq!6dMzzx4pxPaKE zW`=euBt{7L=b)cAor-DVV$)kbg`$L^`|u2SHYizhckPk6MUWIz zsu9iYft9nR%#UUr5UkZYZ0>o-wfas^uFeg(pH;u?-Nzbu&sHYRn?o2HhJJ}b_*8Gp zvEH_%aYwYeTxO-u2ec~7?yxPCwCU=b3BSdw8*6`KN|O#j4_Bv;gGUlC6N;H)eCf`$ zVN2U8f{;yTD9^CIp#9`3tHaFf7C;%}E7oY)l;%L$fyT1dn;Aju)MEdN7Zn07rce~gt9EIq^uoo#v+VGahNYz!}me$*H??H zh#hLoPefc->1M~wbq2aCB9JI=kS1iu=I0Dj90Cu==%bQlKvx@W=%dzM#^%&<)4EsOQ**Pvcp4xD(G=9YkDTAa-IL4M%Jv*4HdsP%Xz@ z1D=Y6ItzqW16FcRJFUCV{BVNVn2C?74PUA1u^gv{jPVR2B{;v|31>2IYCU3&A08g^ zMqyr`W>z6vrkcZ=1Ih`Mh?5_lC?$mF=GjMO(Nd2~&%-Lb36Q_MmHvc%veWQjJb!co z5+++_LnGF6a5#9G;TC(oXi~A$61;z;q^Tc3#=!QFwSl$}rF~@!&^%cG(qPf$BzlC75QB)}?^I}>*kkk45Q;=m6ba6Hx19m0d@l|nF ztcuo=2L9{dBH($RO}gCi37-Rr8RK1Jn*>5D9lF)s#9VnzCz#-EE*5Kr)MUGkuz$Fwu1!2sOin5c{7_9$-zYpMGOUHcY!e{$NJ_uxo!*DBZ~tT5QeRdi@YVCFAOhr#ny{cwzab zW@c7&@np%HZF50h&#gp78}`uVyK(kT$4;$FeoapUL~h~Jkmo6a`!s=Vg@sFG;tj*Q z&%w9(TrmciHCk+=Q>8KusP99Z*HMxUM?Ct`eI3iahPWh>$)%)J2qjRa0GCsW)+rl- za$b*>g)cxxB9@-xkNJPJy;GE>Yt}WG8MbX(8MbZPw#^LNkzw1mGHlznZFFSS*W*<8 zf2z8^i@w+wd+dun-sfGIYprL^S>$g+LK~s4reNorH!FdhM?$R7^tnz(FjrmtfSpM% zrzw2LY_Zr&HaQ_2QKsw8`5rtv=x?`vx*AbK-h*8-$87cFg;pQ)cmj?>%#yo(asxuu z_H!_xz$a-Drshjo$h{TK~e{_B>hDnd~= zysh+EH*vRb3kIWNHv^PMelNNti6qyV-R+4ZdmuEG1E4r1YK+N))s{jmrk_y>q5RtS z!Di!|Xr_xey`GPUO$Ha5@0_qdaR-UziMGaVW<;gou{jvGP!4fGDT#>bE^`Dl^27Sd zu9R$R`%8(zf}s`WC~4R-dhH?D1ot?pCM%fv-8cL|JevpK= z|AU<@WC>P->#TcB>rPUQbN`sbLf>?ViMz3lAFbZ4^?)U$TL(?<+ijh+DOD}1o{~v$_!mFA`E+Pv#+Rp!q2YvH=UXJOf(>)DiRs98Ad z@2wI|&yR?kK-{mr)0a?n5f9wPQWud#n@keb`T;y?Y-{9FpP871Wwyi9kYdld70|+P zEi`#_;`uFG1r7*vpGc3?kG&zACW^?c{y9`nUrRW3gLXLZGnmeS z^q4Qs&W5p8#cNN7z(p1A!W?e=_0!kGt+GPW(G)@=JOBkI=QxqmJEBJmS(Y+?mnDN`q}X^-^oST`)J2 zkbsy;TCrd$(Z2BL&F@RseD3paWw=zw+{2si7enE7b>QjU@<|P`s~P^sH%J>Hb4LIf z$=#9SdN5VDSQqUpJ=p4u9%DnJ93K^e`_3yvK6L&GxuOlg9p9VcQJCom(a#FL<(QMv z#VdU$YML0D+hsM5O+o5U0M+HXh@E{_QseO1Y?P&M6+XgP!h|c?pnbIf=8I~3Lr3efVn+OXVp@Jm4AJ?x zsi6YO-6yc*i;THd9!;)GT0!!|04=LVobuE(?|{TYhi|5h4>mcbI22T;C&Y^iAve^C*(&ck`VL{Js(;+_&S+T~bZA2I#%Jw#mwbeIHSDmng zen-GlUO8ORwJI$s)t2guj9Dl*?u(2$ei91R>3Nnbpr^0ZcIO*|(vBU#-E9c-ev7^s z=(a4*6vhYu)$a&^`d9s+`jzM`{p^urjtJ#^srm`I;_S2YEX7g^1V+AI$vb$D2Y2gPbIo2%k|Wf}5KA!~(!uBO0^u z-X-$Us6Lp1yrtPO6)U9U@}8C^IEp{K_9W0;}2 zVZ}sEf)W@%!ya%tQ?5J@wx9s((na|d2~_{wD7TiMmDK(dChAXioLh=*Nl<3!mGmP) z(MwKH%WUO1As#68xzp#E^mAjh>8bPjKIwvt{wBBcvkv>Y%-!kk8LK=Y;5mwLp!{54`r2)@67CtdDdDmb0^>eDi%idlHEr{c|y#cRL2nK0xrwFS7YcqDonN}#F! zoWe0)^6PC*yDK5IPs$B~R-0ZFu)IEu_?!c}l->VZ!yp)D`?JA<)0;!LN83lG&^6n& z7tLD6pq8;+YP}(A#5CVz(Q+~dypFc=LZ*(I1D)WhEt|w@Rk8O0mgQJ4C3!28?Idvi zsxqS8$%BU!#j(dj>WHna51DvshBMKEqjiK}PHP?q-|VVl^T&9v%lS4!3RG__@1u^r zWn~X;{wnaS0Ut~SjJ{J&P#dOG)8@LUqansUFD7OCfinF`tUVo^3!C6*WEU?QnV;?+`1wjB=Cxvd zhN2N0jOJ@}>y4X9n39r_A+-fnY1AO+`3n=QvdDH6fmq_JQri>+IJ8wlvb7ny+SUiA2aI=sMyI6>6L)A5TT-MWMe5Mx7qBq?n_nanEYQm_LAK5aYgjS*6Jwbapy=rKE+T z=wKY%>f*Q^JzS}TeNTc-r>}1AvLFW{36l5`GMn+td3=V%lk&XYN@cbJ;1w>xIIg`$ z->qES%{+WOas*q?FsVtUdGjj<;@su!%)Q3om9zRMEn;?3n%xDnSUJs_d^gkgXmc1} z=wz2~(t6hr3vopou)pF?w07TKl3A?e3S>{&`s7iD`V3bmpN{CHZpFImFJw(uNFgfD znaK=GkOXUSdY<{VXkmhl{JAosos(1R;W>W3gaUO73noyoDl>cL_tdBKcb3QHa-&-* z)XuseGD(VhFBhAfHaJ~cJ#s%mB|4QO_8R~ZzF&wCIVe!(fWv5^g5cQCXlWHN+f9^0 z3=7gTvc3Fdo;T`8qI}1oy4+yOBBM20w90TC>?lAbDksxVd;?aaeyfLNBmG`#$C3yM zz^XSc==b0}OMjMlBv`*Z%#*u6O)&B5T7r4HfOONQGjG=&?>(lQpMM2}97sxO%I=c% zT?Rs)mogF9^9&kLs!f8m_D-rHYv4gn;P!g4#)S4T0vUs2^9Hm zvxc$b)*on`H%F$$qb6sT+f8^Cg%zBc$rF5~PH#A;5$1?;hU_b<@{m<~p-g|02V{p!0E4#0E zbla$|P=~9X3J#FhzfPB(3au%=L(RR*-pwi`XLS zpVzm-CzHm_2U2n02jnLSg@JHxH)>;(UEHP1M&~3 zO5_`>S^5H1e}ctdVWjF`Ko#=WmFmA0Y5NmK{+Ho}sDL1dOB79`( z{9t;3XmLunwrhqRY3(48LjB%&WW6TDgY=z1qh3lev7HEcarM^cH+o#0XsA6FV|YJ; zl~sJNo0sv^LY>K^^cK1%Qd-8==r6w`eXz^;7P19NV#4N;Lt6-&TBu4h)gGpJ$+a3J zlj*+A+kC|`{wp3e2#39%TVf;RUSArKKXAEP!1kGiFs?)ky?fVCxKiuJ$_qdNwdB?lt!0fL?+P6`V$n?l8hEGrJe zIoLi!Xsio`D>woq)gnD>ZSswtAltmI)qM|EuP$U*sTmB zOxG0yYfU9msXJN&W{U{DOO{$x_llS%75+VmaWG{&NweMyay;t z9vQw!0Sd}AMj}LZ$2MO9cYF+=G7New?isaKhc0zqbO&+>T|!Mgl;hN{!(>5f@NmV> z*5hT@%HV_|HU<^K7^XX)uwNz_%krZOa`MtOZ2s~bUSMZ*SKPEXFVA*gjvxXFfog!6DtG(Cd1(n3DX1|@L)MdPLbX$oaL1!yZu~X^6p3JI9-s= z1R#bi8;3Hm4Y4N@wtS=Lh-4s=Y0i{d{vA7SplBkd`hluA+1>iNUNtCaoDn4E`>iyy z%6-8QkEJRO^~jp)xFq(Kzu1~OQ*g4!)iv}b)NTSQH#l*G%#R%Tg~SR0F(znL3fgz~ zK*_eg6>&$ov-AD|!viwWwPHAnj$TD_Ya#uqi{psPHr**0+wTn8+Ym`LSsf5)O3V#g zbApc1grI(lmON>2)+e3P^4xvV-*FpR+F);UuXXb>Z0x@Az}j!t;MBF9tZ2av|SAqfFb?vz?ITPSKh3oT9n8-#bvR& z^WbT)18MbHQs^Vq%#r%KVZSeEsVV1JjeAGT=>;LvDml33#1f{=NvpPKdgF?hmf09> z3tOVFQBt*zBVTHM85Bx&axaoq9XAHiED{|+Ivtc@@GHWr*(LPx9WQftK^^xST_gUn zGb@_DxuYRiv}xVhUFV7hWk^EvWVe)k7M6MbrTWaolXBHwwbpfnZ>6#$Ie*PmqMFa= zm6Xr&W>BCx@N4Ov!e?VPs!{`P>rv|vtM`1c-QmFYPZE)?3UlW`PRV-atEgeKU~;XW z4+tR28>RQu_$wFYz_D`QbR)=UC=wzqqq?|U*@$kNm3}jybe_1Mshd0`j*F|%>Joay zgy|_Gp=T^wOf$rhih=G-0y6JaF#nneI z%6Pl0rRQnHzlul+5Z`+t>*dov9=!SywK7*h@!qkiGwAN}bM9kB^N09{KwJSWH2-=u z+^=2d<4x?Wjf}yL8n+=Bmh<(s1soi-n(SF)xTU}kE7HgC@|X*9M%U|Hr)wHHb1Y|> zP~;!$=p+Rcm1U#IuJkEg1Uag^ZbcqUx21qs?zebZK3$f)xX4`j{P9-9B4x zNragU0^Ulv&#A}-=9LsLC;1jGrrqn&tziv-)1Vhq^NLRX7mb6>jx&58!5i#Kn;t*b z!epK>d`52Ou>9nsq>B!9l)4hfc~3CCBupxAh!Iu;TUyuN;JPr_grda;6bYO5hNl?__^n(@Ui#lJkO}Mn>k|$n`rCrV8Mw@$i=Qs!7 zRuccHH>v()Iu-LFv(Q~xe&ie7xVmshs!keeBa>MupV{M3ym^9t zmW$Ze0`^M)MBVVnovix1R(Q_h5WN**46#7rteep9SHr>Qx@->1C8JJJynCEs+zc8N zc$8*4smqpfpt>}+PO@_?sa*XvwMYj~Mi5wm)_%Z-J(dK}dAv7cCDLEFZ~pd2TRn{d zlz7NZWJ|IU(3E7Wd4=h182B4uCe(!@yITF|qo%NST(_vi3T%qG+BlDJveX<4=ml&#Z61#uIwnEA5~LHj$nnWk-3MNDYd}_&6Xp{n zRaGKyN;eS5it=vF%T-u$uMl8}qmT;hQs}cGuxX}$L+f~5Hi z)t=gqNcQ65L|D9o{{hQ=%dO~5-@kqPV+a4Vkgr+kH@KL;HuwL0NBeg*_y5fYP?O*J z|2<|G3;t_*@A>tge}=?=Peu4=eE%0Gz+VfD7!dzfW63DG+uHw2xb@PrpNy0jel0W= z3t>*e+VguLbPW*m%6hIM*{3!tX{@PdbwSGdAv!}u6f#59gtlapkXz|UX!%YQWZU;N zs>xbSAK|!hn%q_T4f)wc$*U$X3jE(zC33q|2Vfr&mWAr?eSYf|^_4C1Od=`sVyytmG(ML;Q`Apx3&e@iprs zW3!HKu{+Z+C$dTfI=i7ydIyu$mro`|7FMg7+@B4dBESEx$nR7 z`UDgHCt8I+$N2T3{+FZtFDPHszUmlexUV{<8$*B)G;Hnr>mDAZU*B=9ky~B39wkI@ ztf_`Sl^fCig4Gx8ERj$sg3zE_cMJgHlp@Jx)Fk$$)Ep?)Sz}~gm*wpEw z=o@YVgVxn39DE?jvaWY3EWhey!M#HtbNmYUEfb}S!dwzks-KSdM zQ&*30TGN&|3^V5|JD$4FX#tvql{uMv!$i^u2uee2THQJW!#$J@(DFBGl%z4)aJRNW z?EqzPmtx7lLn|2OADzV9j!zNBS?svDZ4pSI?1$jARA4rI2?aosmFH>^D55X@mGi=Y z+=L}67z4D|Ng8-KE$V?djoI`l+Ej5$X^^4kFIP3IN(Vs51*}V}8TZ}NoH~XHfH%8T zQlWEZLq8@1ci-*VTH9IMaA1S7Ux6Mlocyu}RUp5pOb>Oz%b@DggYt7v;eWJF?p2F< zIoj{!&F0;1cZuYsJpw8)9>MT^@$}ocMUoTfp~SlA>;#Hs-m=1r4w;CdkR<=wK=Kvj;-hVndGG;~7`Hj2wMxHEV2lX1}8ibNe@AokbuC@FIfkRiE zG*AwXVLFxtJ(5nsYs<0g+5OV70jmRj+)ZWRx!xPzETS6yV@Bg+$>13q(#%uD8Z*uq zNTeD}v@C)sbKStm{~eyS&l>j}0yF~Ox$C0iw_4)Gi_=S9`XoJuPb^ZGtp+Httv6xW zy_Nszt#>j*<~aCzG+~;=S0pDnY|R0Tr-7zm?BHaTrWej7AllOro*7a|WO^sa%ubZ! zB2>Xw!ecZOCjyaz>!(t5ZNKR5*!#&XLr5R05ZN^6Jh)>K+s5p8c79%R&1D6@o!qIM+@M+6C9`T*y^ zF!%u)HV)3nm~xW{-5{itR){s6EW$qiH78aO_l_$Bm@kHR=z2i&&0aFC{WG5xp*Hf3 zUqHSBx5Z0l*f;DA=+z?;7&<$Oi;M@@p{$ry=n$zB%H0_RB}Ze`}Gzl%*#g7qMiru1)L zUi#rzPFvm3#7Kk!7}K{q755@*V5s4J4u3ErmkgQfSIuyW3I3*2)@T~r0qcMt&vQTS z6@=R%itWD4GuB=G-cc!H%9R!BJadG@snznPzHcVnlEPnihmd&3$wsnUP-)3f-S8{m zd8E{KNf|ZF*Ks9r#Nv#(uFH_r(a3f91*jL&8<*Tm%Sg9l*>I|n7HogZ0+t~?rz;of zy4-vXP*W*>P@lx__1HGYsSn)q&NA}FMHI;uBGju=TRld?lObIge0nZb)eEiI1~_fH zpwTrTD@liB!E%<>xMyjBF%2_WzNR8I8Dr3EUR=H7;w|c(4D(lHH%(gCL+kMc)+khs zR3jw^z1*U?S7=305 z1d;gbzQ#Vj+X%1W&w|f_gpbQQKkp{!(OL1&h0&px`zz6rQP|+X!#+sh zw7((AYSrXd^6UuA3Zc7lj!y_8SnVKc0lUeiU-J}{w~HSkccG@VjtAE zRKsWI$v9%02y;^`Jef+Zn>w(bOg&AK0#y8j`sFnivJ8>jUeXMKt@164wX%|kbJ!sg z>T&nF1|MvGpWLZz+AfiHoeY`@R|Vq9ggJP6DvLZUP|MubEQZd;AlUgRBTje5xIztD z>xVj-;IOd$xHmH*QHc00;vaiVd{o=F``xg7NinhxK zTU#6GWT*T;bAjVDR2NX=Dxa)`J*Ax7Ciobt8#II{9{~7fe zIU89!Qaji<*&7)BtGL;};is!m`R8PNQl}eSK!Cck&XLw1unMh~+j0pbkGwIs&(`eN z(4v6cH}?#!$R`%%n(lt_(gDXJfWCDex zA2QS)zL*src(%%(i2#yB~Z?j1zZIy_i(aO{1OruqJTL$b{P>6=#b078&n%y&2`mdn6Ufb zV!}jZDvWAx4>n5&LIlzrD$7ByEwD%cruHYYoaYEqmWt*mykQmli9c-gjoFgVPmJjH z8}gLq4ZIp4B%kqob!vjNQJkOR4@0n%eOryJ{sPvB$${oyK@Jb2`V5nTYeh$hIC=8` zh7!aSNIolK30qGm1jfXb-h3iw{yQIjR0fnsNe$#^Aiy2*2wE$YAa{4!F&vqOq}4#~ z?z~_isz*SuDf&v^8@EQKjSwsZ8^y5VaHDNhKzZQQwJOZYH1K)_HFs#ca7pd~UV8{y zE3Q*&%Oev)iy+DRVR^4!(Og9dx@PieiiEKtnXGs#;%)h9OderzX+<(PnYT$A1ka4M zNVdKCKU|xAcn0)C`YECw0()29KtCIqP(%W}4<*q_v(hr{1yP}(tp+zqXO9y?(jBx$ zQo%n_;HSJgo|3ovSas7^McKTtU12KVx6tqW)Y)a{{Va6VAN16{843vir?$J8L$dF( zqJ%xTK!p50q(n@reQ?Y4Z9z^9Z#4Ct+5@tmS!k4Qp%7c z4+1L|Eup-&7hm!bb6i%Um#TdH@ur_>9FRLco)L(XeN%b)mcKW zT;O{gSb`gVvD5UahTsgoTzUz1kX{pUZj%0vS!D4NHgD~0)Iu<57n5VUt2Nhbe(m$tUQ2^PrxUi8AA4 zIL6qdQG@3IPuV=O!}rZG%2_HB`+0iUy*(v*`V;eH5?-0@WgrrUaCUBjm~%Z{lvw2a z!EwX#b1XFRRP?Zh+)BlkCSxQFGa@8PSg23dNSP@woRY#~-yz{B>-=4ujZ+y;D>kiV znS*oZ*(C6)`RT-5^?cDT3ForD-Mld%q3+w!ef$)uFSwgWWbg$;se(dd_&7A6mZ!BE z5Y%k{Y-#(j8YJVi(ALAnKudj%7pT{&i|l%*j1_}ceIND7t=k#CAXM7gbK$Y@FI%+B zWTd;a7&UqDdD)YtH=~0W^hY~Yi>#JAPyB9q_8-t1MS#*&1&-tpdoayi&dS4oT z)Uk)a0{F>l+DtvBOlUPytZ6Gzk9sbC)GgV?Nh5;3RG>;Lv>hgB#YOuzMKiORD5g=>7YkO!ze``}fp* ze{#+LBPjnjY(l@{`Ti8+LXYYC3CN;Ktt?ipAp{NbWy&YuR17(Zx*(Cz6ygq#sjQ5- zM3C)WfS)|0w^o+x)vl~viJ?=jqj&gg*{DK7pcg(?f7Y{C<>U3^ zO9Q9AK;f`V)lkzrr3&xZ3y(H8EuGVwvIJB^EyFBR@kzFOo8@#wF$3oeudsWfX{MP{ zmSbihwhQ`1<;#dIvVvqq0>AM}0AEmVL!rw<4OsZ_W@5$b{7IIRlATYuUv>ST)BpST z^1lKD|M?aD{|^SzKTd2hLSR<2i$HS!p+>PrFa`Rb!GQCZRsQW1_8%gbf9&r6g>e2W z%TtuIS)qgTK2%Zlf(ZHbm~B;xml4B$gz-?_frqG5OguO-0i!;5|9dhDF$BJ3g|lzk zYtw~$(*=fBJTRy|CNPeTM{=D4pFwk2M3FdqJNtEdPF7)ghzk{@T0;w|(2)4NDStJ><1-ZIH(dRQ3Ct6%Z6XAAE?Hg_JyWhn1!DcVN-H zD&%W=f(PM|!(3eyttX8Tn^VO`q&WTY z{8liGnSZ%i8GYR8f%=lmgRG0aiqB6YvksZMs4XK5?Zxoilk!yKj&OMHG+ck~EcqY~ zo_*sU1&H>kUPI79Dq5O2JsZj4=Y|%z z|C_MrObPeTighpN2AjCC!nzoV8&P#VI9Ziix+4h@;aqVVpG#EGh|^atAs zXUon~G{%Z&85h-piZ}gumI^F)rmL}0!m_a{a-oJx@%}rLiXKmY@tx=XVoxi(S(Q(UZa&T&L z#S6?78j#))$6AW_su78?k}#l1Mj7kT;ivm?;{)q`hu=!;LJYE{?nre$JlkEo?Y^q@ zxL&Q^G`pu+@lsXZU7Tgyj0k2JAub0fjT|_{!?wvQDAe? z%~rx&yA5>Uy!(-m1%W?AJR%^IY72*haAFOrDU)hvL0e)e zk}AT6;lsNN4fxL2GcV8kXhXrwH;;miX7###A|2!=9b61>q=E%*ZwnfU7wHJ2hHPd$ zWGk5?9V%mXE}hAdmvUf4I0mSeKUIp3jrF_VIeVu~j^{7a z0<$-D=q|wMX81#1;xbovG5%$8@3C}Z{F+foPE1N?>B+lDDs4q=*w+YQUY2mce~U@gAmefX0`LbGTDzo+%9rqb z4T!Uu!wchDlo46_QBwTaYsC;pNfW%;AfHiz>X9ss7^rBLetL~~V!3rt+3L0V^5$nV zQx51Mozcf?E7h5ID9uXDH&ivznVj$NxfV1|^3#?f%{fw5SwM1GWRbG2Hhb;6=MAac z$WTVI*e582llRxnp*r@8mv58V6_-}V=|+$Eanbun1}X$P!~LS>w$X2|Ax%VsmC8~8 zHz6Gga{7|lJeEGM&>BWz$P%--ywt7glFl2>BWrX8mP>?9z0aiiuzv%qLu^4r zCKbZ4)$JsvZBzy9NslOP26?_pL7DzLZAC>b>y9JLq0F=xeE~8VtLQ?x_36Titn!(@4(?_hs2uZl@=T z^>84l$D*%oy@XL}Nn*ZX`tjRR{4A-ed3h4W6Uf$rItmY)rXTpVlyjjiW6$Sxa?1}Q zzg_ft_pvy82EzO15RzOak+kqs7I^kv+~q?kQkM_FSEc&^8~Tmz(G8Ud3T32lf3+!c z(j9NWp9W5B&t0Pgk_s>SS~)tM)@?KUOq)S(nft_@K8+&p`6WvN#m`Djb&O8*KV&DP zV{WS-eo2sx1!V7A-rc#x9_GkavF6| z*qa3_w44rVmC7jMfLjh^i~z8uPIuOx@3KWAr`rk_ued{uX{9-V*6`urTkHJT3M5t( zc9%H`tiUr#{0SwR7{pa|q^(hpPC7sis6EFNuV;BWd6DT6J!m(b!{~JvRwjl?VW%QQ z{By?L_NTgwRK=CI{0DvwKg_UQhc>P0^7X_&h9%jWDs1szS>R8+|NBe;_x0<)2fF`9 zCiw5*#@8YY9aP5`Z6+5R-^v=cWp8415AOnqL>La>crNsJ`hBrlmb_D+ti9+tn4O&a zZiuHR(Ua?bg3(`%R{)ekp`wQ$L=hFT^@|iDR=}y=ce*Lmnue75LhBjaVGbcf?<6Ff zGuy}r74*$5Z5m4yA`W%wA(bY*OiV3V$&A+;yWd5+c$j<*s8WP&Z49=S?^>JV5EzIo zD#x$rzd!D&Cv?UN4Vc#KWvC3GBkyfumg%Lpf^A>uebwySk;W!?kiQ1qes84flq60YpZDushHu* z6L5Vn(DAq3N=Dtx8u)s8pHb8{tH^yN?h(~iQ=m$R^79!u!B=|W^=}*-lt%Ei)Z!iCaSI9ai z5-NLA?h6lQEop7i&o46q1(UQKvfB6p7=MiCFSGhrl95BaZ{O&@ns)!^DDw{^&Od1) z|78LvU}J4;WMIbq1PQjslD}u@h0IK_^kgZ1Fh*nRYOiJQ9p+QKRM_ z?LGdkih|5SFw$*MLj|3{dN6)UOhi6KMkonWW@FTXLjKxSDv6;MhU+C-|Cx=NbLuiC zq5X|oa!_1Rc&N7bMt#7^*Cu^sS-lj$Y#jkRDe`BqIK`~qH6B7dHR4hTn&;~^GGYOp z-(hEz8_X#Ak6|IVNu)gqnKUaHc0gX56u^@L-l8NkRD-y)Fb?+g zf&fUf6c-4nnhD*o7<}N^%Tej4R_L(9z~UvLnW2Wq=owFq{VoPk`?k7cY9M5QIL`P>$w9zpOrUv3ODe3IiPZ3IXy-TBF_s_(h^_n6CBuwG%C zY!2N6cQnl8T;u&%o+0TkLN;uGGg8{6Z$cii+?vKhb0EY}@q2Y1n`v``nkE;Rn<`E% zE-{)Lk%_YLnuD>QbVt=kHjSvB%L;FlG5`W()W{5>zgK2~pwJXaX;eot0*K~=%VylM zT}usbS1!(PgK{TKo&x*Ux(h-+gthimE$nsG!Hn&)0`f2<|Ls8;)Hfx%SbuCPT`4B! zoRc=H7Q->O)q-I{K2lNvst@P>0p4ANdeT}oFs;BuxjowEXsx*@Im6&WYpw|F0=oES zAqh5PJrDp?crd7#Ql8bI{Dh#k@D3?=7mc0aB$C`vewPM$M_oL`D%lz80eaVf18^;B zBfyyNe1DVUws;n_ys!L+8{;axhTYRkcKl6{0{Gc z93$-agxkvoi6|E8bSE`G0q*iRw@Uu2|JE~O%~>5k|Bnf^&7yEe4__<&2fJ=?gCS`0 zgD^HnvO+}^a*{=;vNQjf2Ha^W?6u}b;89Q%O3@=hkv(_TYN_nCY@eknom?B}_31WR zW1{e%dL&suXDb=baw&#(T3%I6E4)zVz`6CPY{lZx-*l~m_s_LObCMnDNwhg&? ztt!S25MEH)!}kMDxFv!=Sxd7sUAvMt_Zf(QwJm_jvx7UUoD?prN{>EEi^LP91F9jc zZQpmAc0>Ab9pHOfW#KK~2(G%CFjWKv?g=~VLA8>Mf+IAQy-!F01QW=-6opt925-_- zA}@Ee+*v-G*VlS?nN^bM;yFu(;mWNx7hBrdshIoae0&|l+voMYVS2al@Qpfm!h7va zBRu%Hg|w8l9H{sbZ5#ZXtV}aegxZI&DSW6V+F?Dlke1$7Xv@HTCm;mG*(L|S$%<)1 zpcLXtSf?JDl_AF%Vyd<8MjZzy#&MwlT9pr)|47Is;qwu6QO}j>R5{*t>g=kQz>>cy z_o{&4C0ED+gRs@Z6doe@07Sard_V%fafj(*d0(`vXBLH85~~x3$RN}ac8d&GV}nc} zZm&XMOtL}1771oXPbXgUBaT4HrWVNUZQXK&6s_Or@*UJVMVF2Pa~cTksuKtY0DG_>Za%LsrrHZ-enZ0`y0b*H*?rq8L26xHtkt#J z6$+-cZgk`8o8SGdu2sXUTMUX3h`1wX+pI1q-wp8nA@93X+2N%BS9doaVGrbC{Smc3 z3-Ej~(p{w6xg=%vU@#i-iz$cA-G{=hnGhq1&U8rZy{!$-W4ckj+0)m`RXZ;L0WtWo zDSWB{#^ao+xXE4OcV@1bXn&c7=LI=G%i|Vrrm1vWa9x^tSLzA{^;p}P!DnT9{M zvSY$}WMPO%LEvmRw!hH%)>CJ994xGzWB2VE?RUuJOrVbNg?Fv(Zfrb^ehruJ4Q;0O z%znE;r3HuT`iq{N~F${z}htW|P>a!?sA@ah81^N-$bRXeWY+t6reKiX`YS*XPGx{x=(sb zy$d2C&r=<2#R?{1h^OBk8$+6b7$+L13OG7=`P2>K-vlbQOywH#JjYOcidpdwZuceC zf6Gf1Cn{q^+~+-N5Iq67EY69~h*6Nsh?5@4>{cMo#|d%OFPUf}KT`wf^m>Y_j{CZ; zP=zp}*T%@tN{Jf^)Onx4Z7a+6O?;U6tWg^-;D~#QqTYZnckZ-kk7|_dFDJZBH9uI{Jb~F1^n4r|^ih(jpBNxxmth%!2CmtInrIwvh}UOEHhrm| zD%eH5(-S{ab|Y9iUyaQ6sz6dH9j8&7T>OeVdka+gXYu{;F!{1@fbu-Mzw;^`PxOtOM+`DERAe=%7ML%rg@kSx_O*sbK{Q2ukkg@io!fg^> zCe|7j^seygLJPctR4hd6^^BDAQiCC^7Ou*p{aSuRiVJ&jn4GS2_$DXdyPGaZ1jPR?Xuvz5G&rzyji`H3odh&5KN#Xx68h(o{qvTy@&$ zpfINkJ<%I$7M&*;wIzHQJ3`Bu47xe+Rccle))N|h3ZjV=i8@B8labpz+u8^SZ))*O zKeMK^)rHa@g6c<5ku=omV@}ZKcf=7u70zP|6t&4!#TDj!5-*Xv|Q zs^Mj-!ce|}*!Uf*Y)vIV%K380vo(cw(-0U7>V_dey|bdD5=tR97)2$ zNng;i#l_s`OVYQF{VXZ9v{-UHp_zlb$wiuTP{pz5dq-AlEyFnF=We0rjO#&UJLlAIRpsM? zXJF0oC1Ktyx>y4x2AAZjLwd0)B)pmSK~C5&>U9BnKG5V*Z72tHF_qK){Cuzq zY6jJmlMyKF2KmNXbBH$ZMz6fE`T7ObV9ca^Q`}wiA=6Q+ED}@a6-QPlIaxO}dZ%7* z22;O1OU1fM6t8jf3lXMM^T^*kzm28rmn7u0!;9=STQ^up^nRwJ$0?i)fp@G#ZV!6% z|Drp7=Te|DPB%mSpcc{6>m*$=aGy3I(=Ye?T>H_w)pt-^-R85(#0U^r@gCjuX`HOb zvdL7;&|5ftI{=N#PUsfVU&o>a;X)j#2fXyu!Xn6pkHzQMc!E#=NEkAq+&5)u5Ld?- zh=3Z~z$cztJ>5BN>bLH4lPo5e)a=+cfCn|kC9dPXr(1=9TbLnX8ekBmkTFT4X9Kq; zVwqR1)Cx5*u~>%e%-g+h-qNX+3H)>!QJ&cSdb>K$-mIFX6Sq&Gn&Ba6MvjxCR_b=6 z!Q~&-eb;)Gr)z3!Fsdq$r?E=Eto2rTZ{t$T`2IZBazo-;$7P+twQ_NdxnSepaDQRr z&q(PIV;Qpy=$8R>%rdtLa4%Dl<%7Al{pG*=)Mx9rEcKfJ=V=2Sb-HacW7xO1TDfl6 zo9!DOC9bY?oRzw=U6HSCj};F_-t~6(0Lu#6d4T|s!MGPJIeF3|=S3*AtxTWVJ7SUH zc^2&tSUDOVH#1e_kppwSkr0G!)bur_>9q76s5AAyFqj`-T{}#dWGU>{0cA{-*OIoH8w%wR(IA}#wr52S8%|SrV zwk!okx!Y{hIFmIu(oVur$n9B?+iG&XRPZP)!5X6j75ZrXNI9Hd_XmI+A!}DmO7d9c}$X;&*}00=j%Hv6@+( zsY4TNI1vOB77Uw%@esQC_3P=RkNeZ;IyB{(FbSl4t)jg_A|Hr_wge{K@Tey`FS;(z z6_uK0mwh6N=BB?ENP|{z65m=3q(vEA=bU~URAz5#aLJ0|TG+3Ep9Q7$vOCGqED}TZ z*>cLN;KSqh@8c+K*7eG%UPekei``x&a(+hT#5hcJ1|cObn!}NdU~xlr|i zOIvqEU!4f|sRSgU{500DP6Qcaz4$QlqG`OOWm|`o$dYTdU1fy#cLD7vIkZB&eYmEd zvE4n$D-l=6uo{pt=y60kzF+#Y_!k~+qunulkaZU$L&M3qUE;`vYr)hz&EqN2O}g&B zIp6jkJEdZuMef_7Nd7O%&M`={Zd= zr@L=Q?093Xc>nJ`)|hk6$MSbETBNB3zEOZceJL!~VD$4h4n(V0IiGNiNOm_)-ku`= zLd~x<*F35g$fD+2Cp58E+*iMuiBbc5*2V)fibVa%j1;HNU-gOnLL;(?_f`4KSp^n= zN&P4>I|p;6>uWvED0jqfUy}FRDbdYBSkCwcOZbO5Vf1iSTWpgEAvf|2W?vvb03BA# z2>;d2@G$dQ0B+@J(Y%>0Uoy)M9{XDApHT84tVs`0^3|#PD<$m!enl6rA&+t;w`fc| zzAmpoo*##k*cSUHr)?e&7ZBf(uP^YzF1$ zlVfdj5~0xsC!3|L#s&31Wy;W(W;jvrF!2s&e_d{7RwDAJlhL4tXCpef0XMP z)$Dv=S{%*^S@YdZ`@H0&7&}%}r4#y7W%Zq-J>R3eO-~qx|j28-fW-O0~*Y@ z_4F;(EDfoyVfrXobuZ+)*Z@s_@um6j?p#xUnNqdMjslRUvz9p8T?Nz&4(f8@Uh%pL z=t*1gKgZN-qy5Stg}yuAD&!ij;?9w{|3AQvZRx9HS7OjjA4dV9vk*bjF@BUr9Rgk{q(!-~?w4@&|9 zc8RRZFwvu%Rxa9T`#JBswU-wirWs@gv=gUJ+;bkfX>j>>?v{Q|OPy*85)!7;QLx&f z2YreG`O%qVC47asLWgEK%C4Y%7e?z3FT<#EC#WG}gsX$@VCEwNjL}WpJ;l+C3bv^r z>NBOlp$OhvMM{cng`x`ASdjtBOt#?F!Na%H!&iML7C)3s9sSwYkVnt@Y(5U1{sT+r zwAui-MJ?JFC!NjNgF805^K8D>}6KfOIj(ot&{ z%R7~2jCk?8Y!n4lI0)l)7UF)ujawu0HY3qMx`f$MMyf)RSHh7boaPe>+Kgrqr}eiOG*oPJ;%s z2XAjq&KR1h;}lDdFynjQU7B*7Z+YMbz3wF90amWNt3oWhE0XdFWoBiCf539kvDEzr z+g{c#3YX8?r(s!#z>|Bah*qRM&hjaw+J=8Kv&a)q#gH{zZ9iCXGodHL>T8)D)q zFTU2>?epdLq><}2pX!2anUns2EM|SWEy0D6#@04;>__3Fm_AC z=z1$K#ePv6oPS}>B z)I~vNro2b5q9|s5DLn6T+K@@g$ynG(X?D1DTIS&XgGi3Zo-H%SCYW(!@Vdt5{l0(u z%34*A)xIg0RDzh*7{jpksHqV!p>rYyFcEMHcv?9ER&{F5|NMLAUT*XG4MS+g?(a2< z!0DzHntoNMi*w<&r9zgayb4M zIY55Ue3Qd3Q+a9%O2yS(ud45;Yn#lWRrOQ+imuA+aphixqQ=WwSHv{xWDHATsJyoq zzc6{#J|k0k8a;Mm68Xd!$pB5Tp(~XHpG)I-;rfjPsz@DeWXwm85>Rnyh+nJD zY0C+D5`2sW^E9`?5e%=Rxi0!L&7}X3gZ(!-ybs;v|{{QVeyMQ!Ge&0lNFS zk*&V?)Wd8r3bFPl|DXeimB{BQ?O$|&`<3ncjSg-b)6RqcphLAG2*VLtt$YyqvtESv z#?i#E23=RLEWqzBpOTUH1b1yPBo@7SXc2>Nbl4AC%xAGh=EV7~VPJPPt>L@Irq=$0 z4rNm_?TJ0DN)uM}nq_~AZ<>)l0@V=>dwGBc<;7Q3y82HQ$%*#pK_qfFYz z1kw4f^!ok=`ek`4+CM5R0mhc^=AemY!o$E>fF5JgFBB+>g1U_A_$7HR^`qtf3vFYV zXl#e*+ZcR^jC|t$dV{U=h+QFmk!#hf5Cdhj$Stv-tk6H^cM(n3svGJCX&uANC}Zx2 z%J!2uv}=0R3h4xlA$^7;eU+Lw%KvPl!8aJ4x}|dxKymdaoD}hL2KR7__U3MA2P0XM zRHdk%p~^2*o?Rr*4pK?MjN_j+E?*)?cZuw{zyG=9fAE8N9k*yf?q5VeBtSTr<64f= zR9iNu#KktT|2-n_-$X!=CWGhKAYqC9Rr|M^5S#r^HNn_3xih8?{~YIfsk5Ui)d}7e ztGzuH7VhMm2=+wFHBHY-rR6qsP&y-k7Y0ozRr->>!wKWsV7dJdUR zpnL?4Fp$|H!3ZP@5H@H_n-TR*v3N}|9|3Q)Zx#RpyNh1^7ZD8CQig`H4{^5)o}gZV zX1#?{Lp9^4%)Y-{vh-gO{3QbGl6#1+jD}Svcb{(}h@hF8qFr@FoSXs<{-eb$(4cgW z(rho{0dz*VOZpEHbO#b?tVg#Fcr35ETwo`14r zqZ$FKI}&s-?x6BNZJyigKE_mK`C#_+GxA8#XtZ4a4Y8u`{EGw&tKCfZ!|$$wqAHt{ zi>nfY{lK#?{(Zhg_t)19o5Fw0ch5na59>u>QBdJ{w`lcwIWnDi4L~Y1UayJMBPBcA zznOsG$pfBdA$_itcWrhSuYR2XsbcJw;F}55CjgySXylw&)d{-GsWRcNAhMRDtG9pZ z-05Ljv1pFff&}btF6KT9j_y`}oxtJp+nv+KKBEod5Vl&Is=HUCC`11g%%>EB8_CcJ z0{zf=r*tN3%BwgjAPI^WE}j!R<$_B+*L!elrkVHB*M7Cbld2Pa7G#|m{_bCsi_>YFrP$YQ4|#i2N!)T z?)J0TW(skP;dlceV$8t(rYBL($a&9(r~C6C-shHqo8+a3pFUy6a?4p{92pARcgXs3 z9`tglReU@JuMh5{T;fat9PkqvWZkT|n&ka>t2dpCzFzl}k3xTVZch33$59?9(gu<9 z?bZ!g7TP+p=)C%BlTF-FGrISiCz+-XSpM)UgFUxed1KOTVso`G3#y4Y>&_Dk?r2WZ ztEl47UcfHD6LZPU&SY|~78B4JQCcK$SGVpHr@JyaO{ad($Tqjc)7D0sXW>pz2UaOS z&4{f1G2YmN7@~$W_{f6l06Ub6(yw>B;ae1O7*-~OJiQ1`V1#$RU^Qs8FdM1J$WW%o z$)c43-B+fl5vw^fBP+fYd7e?bScYS(0gG!*O|o4kng_kexRWIrI_PHykK=OUUj}`& z>1O#y-jPI{tY#zzS7^8Tj>R02Q=a(Eab8Q!kx|aln(>gD>3vm`;mU(nr<)*wJg;I= zXSe6<=ld;=yX&7bDLFAw&^VsX-J; zd#w{v{=gK#$Rxi;WJf|P`7C*6N);TlzovR*5|Qi$M9@Iy zkBW^zHB+_UXvR;Y6KzZ%L3x5!{BHR45{n*zyg>=(E#|fV02~>EvUyx|q#zvuFrTG5 z;+;t*g0JF{9U_n^ijhb{VM5)C4x({TP>kyEGBm(B^o{9v8wH!usM3MyOE}GIlg)dC zQ~|(w{E(k*bb8WKQtBO=Sk6$Gzr)6xGYKd%N0!>{s7NYb%ngSCJ6_XCViv4Bl~jG_Y@2mMbM<$f5>5XOk< zU`tOsC-(Mqoe61~mB=hDzx$i@_jg0@-;MX|ob1>-r{A?;tlzPjhPB7tFShLB_2}_i zn$ZjsKcO_o+89*XHgq84Ax0Cf$52_u^7pXSAR*F|GpHz_LE7U=1(9 zb!f^Oel10f!Tg?R^^Wzwx^(O2RWxMk`h)_rh8+?MV#BJMo_OZEP*}lz!UkBzNbO*6 zs)bSQdiiJd!&yEoth9ujSssz|%2qu5tn5Zr= zuQh$keAC`LgkI7nZR9rY$XyhD>6$kPOCfx@q65r9de{BkwJyeBh?CRT<6g*(8^u_> z1u89rG{eVGoE!ZfKmS@1Pk)2f2hk)v(AGwlm!k;jQfoiK{PH6!*1?fL9Ca26Kq9Ul zj02j^dEph{gz>@UEhHJ_=GE>9rUXA#Dvs$9hrswuYF5>cYuoSCd1;~joKPGh_dpTC z_+|-xvDfNl;tLQy1KfAlruh@j@;=g>4(SB<46qk*ds_1orFUFZh@S_L;0|A)gxn6N z>=dwwmtk2rr6Obj0x!`u*p@}4Atkjf3r-m~&BV5=DGqA;nSCKfW~y3zhy=S5a3!U@r)X3oCAz zTT%a|-i;|w?oYaw`jx7EThfPo@8c=a_Om>ZU#i5#KzotTq+8zb34kG+p|{<%)i&51 zoi_cj&H>0v&}J-~V&ufK9c*DIm`{LdHsmTb_f>;^2d=G80nnrQ(QU zqd9NyR7GP&(94B~?a~w_W0&JJ`_!xULz$-7)95D4E<+lq&xXLiAN#re>IbpREx?BL zTX#~Qn2nT)l!znfW}gJgLk>{;xE+!e8|7!(cXA9bt0g1lMy%m;RWh|3Tqc90xVQCA zzi05GjuPe+=!uMv@Bk}e$(r!`y(ErMMcv+pM}c&RBX zI=1D*X)(YP6Exl3r(06zXy2E?&s4k$Z^u@$C21fOwUTeB643|MiCI4vh$%Z{UWA+! zw_wyQ8v=;*u_*P@BwFlOvQcgfx5voy2~X8iASS^dM?;Lk#XklUv9`o=msL@pYAhd< zb;J6iDb_1J1O!4!+O?7@!_NrBc_*j@fvG=%1Q}Wwdt{xUq`kM_Y{g%q#I}z)PVOrW zf!Tuih!2q2m>EDyp!ZW8!2 ze`e?w#xB4_-i$#baQswtytL1RX2VE1T~qEV&qGAX7}~55Sq!!tx*6Zp!=y0`1XzIPIY&WU$q2rD93QNahN-xTRy$7Ci^;A*`+aRLl@IcCjx z@=1e1K(M6*yvjV&j@+Di1RWa?7*n8u#NWwvOF8DjZD z8+;vNFtX7R(|DTSVjWL4!#ykXWOeJJCi%I!T3o?Hp=WowiCVb8*sgxf&|YFdG+fjy zaLPgCq*H=W5e0R#Yq1Q*EqdY?+|aQuFNK`VJY6e}_iv4!!>`YpxZ=UV7|Gdc`*7#Q zviwV}7AWM?wi9X6@VP3JcN-Ruowa45)P1|MaWiQx>6Y?wq-VnYYmW4gKZiVErdWF^ zFgr3=#AC^C1tOQhPx#K}H!gJMKWD+=tmR`E6)m0Mi|&(dsHPJXPr;utX%WVSqQClOZVo%In)=dolE=bR>mqaE$o!e)RBekxTr7k&(>?Y0(BQ&swvCV*O1wrvs;=A$|UX!uv&2Q915>C;V z&vz{t@(v@zvQ32mM`I2Gv)rahbmv(eu^jVyMKRH>dh;e$8XdEX$VTDjSoYr|bIa4V zCvtrt1V4G6W`8yY$2|!+4&BzqMIK6?rL} zoll_FgOq}|fqOm43~@AFcF38PG7AeY+kzi8-$V}q zU&tR`ZN}|b&TTxlEbtj$KiPh2c+kAAEWA?5b>RUgmp_J*e9c?itd>g2uSq`Qa;scT zGoz-__Mr?{dN;J#4IyTpf`~iDSfqh7_gQb4zHFi7Z$f?$WI5a(+SB6FZ*H{x-;>{K5?eszp_vE!n&XpOj$2ctZCav&thZi9Ok?_q^f3{->OxCc*Bq_I>Z253x zzsDM96o1pN6?ixE;R5gO^TPdij?>mr4znlJoC)GvRXdTaMnXKAQ248o=}6(f^o}tA z?K#9K6Kh!XY&qOwE@Pop8U@3fMPk#AlQY1oweR2ua^*h%2l z7=Y+OZmHN}N^<;xgTv ztXYNURdSD(e-VJZcd!HFtJ<(boqYp(sou&qkB=%pP%m7#WIt8-B~yR)G*vg9jwQJ4 zd?HvH3zt1e+HhO{QK^fKvxlGn$;q=C!4~$93aTSY zC#(S5Vktnhjr?>xFAeReMow%mzjtD4ZOd6K+4 zIrR)2@viQ`J$7Mv7al)1kPpS5=&~-x?zXrbYKB0wqJu^1sAv8J}T}t{QnJgdfzOD9-Q3W#Hf~7Z-`i zXBfdZaUnJa9N8f?2S@k7fgIo5*4w%U(}$UGA@W$F38eEhoyacyY%95Fm|;D6cc{Un z$Fb_>ASI2S*)2{3gz9~jvapGewC zfwjY^tDoa`{Q{kiV^*MKD_<(cT2bv{OQ)Z1hjqXgp$KN^v}b|r-f;R+ zKop)PwM=|vwl*;sy9WX`3j|OIn~RwnLdTBYLZ2#^f-l5iz6V^wfuN*WjZh=T*L5L; z<8zz|yjZeaL4*L!gn~?3KL30dcRJvbH~XH9K_hjlsnFJdPBBmb7YT=SI6jfz`VoN! zwq+}IXHSeOV(0^jYHy1}^>dgT#zb>_#~H`g^wsCD3<0sUk`F-u0Qjps{<93>n+E`3 z{(s7le?r1^{!X2jb274bQ}|x|x2qlhM-%d9lOgu{{6=|H+Gt+%lXtIh)%rrAmo$hD`DSxgGYtp?7m(&qzlk50`-)a=#vQO^W{7)dw#Z zzHZPZ_hK$MAg-CyvBB=5RUv*3C(pg!)ae}K0aZkvu@=va2_M+d7QfS(oDt?S8SL|Q zUv$fx-s<4`kj$+<%HRA3?IvyA!dVN2%Zl*Iwn1*3>aw)FN-%|)Mpkj)Dem6p;o##p zlWF`*$JOho%#jsx=rl|u+fV80@sU;H_`%*S>&YwA$aMo0cf@nOO8S4`%X`D(`^BUa4qFNR2NF&XxFB}^ zI|$OY2BiS-*W)>>DU0Ze(-+v6lJQ)KhU)HP#d0ctvLWb44Lq4!|E9f6y)fKr!}Y)o;-Hd5LW8j(x~~ z9BMTLMZ)QUK+%okoyJ9iWlN{-B;w66s{zcz%8DS*M|enFeAu=&dNR%^s#?8(p5q*9 zhf8z2r0y@vHk7dtB}9z7?2iuyIkOP_Ow;yvx!K?IY()R@;mI#zk{|&r)950&;t)bV zteDf)o)#(36`1^-AQw$6=r`(o2A_-rtI3amuX?BL=C4&>(Rxe;{6Lja)G-E^cTy6p zi+!RCaT(Hu1TpEq2<4ISu+ln>=bjn~uhDw#uB{n!PTo@K2mMwLr;+Q=H5L_t`og25 zkcxH(;fo1UxeB!236I`3?a8$g_jDO$9p5CH)q&D{S-Hs%1RkL#q++a>G(>Ul53l z(+8B-U~pW)vmw-1`K&7!BKJH?7U1+Tr0vWYW^4WX;jc^qU+8>O3^`JA{1cW37 zr$!ir025Sh5mZ0aRRqzQFC1ulkQW2?NC3(}+auHUf4y-&4&1}tNeQGc!`MN~mOPf> zeDc(KNVWHNK_qt}094qanSMvnwg*Wr6%W$!V2)y1C$*Cm%j{5Fv)_2g?GV*gM`54G zAJlgVB|2%+tTKYq*>VgPBD1~a-}W_k1cx7~(alH_!T0vTb(XT{8>KoMK48f3os=A$Um^n&b(A~8Rj3_U z9Z~ot9(Dh#>^8Y@Vg6N#pV?gK__9I*DbA%*S4QuNn@kG{q@tjB{mq_R@kpmu!)p!K z@~fo8V?3;`p^WENV_~e3mkP;MX1q}Hj>PD$@R!@sQC4Ajc8ddVTABGa+2Xjs;86+I z-4%M4kqq5z3z2HW-%Hi}9=J&_u>bVPj_<-oU zd5~=e#vbaQL+=3GK(%)edu|JFsvhW0j`CeDu9+pTzMC25U2cY94HPz83oA7g>pn;K z4IqmqpVwa$r+<{qu7h7qWW;Zj=1oS{`dPd)Nh~?g)5a`4#~TqP@_`27g6++H z%6-d3%A{%=SereWk&QYB!^ri*S`7mkZ1EZ!FfRe=V&dRbcu4M&GJ~O*+}LN0xUH`z z6BEIoaJb#9t3-fkJbqi*SQ=VVTs3rXi@EHu-ztA)bXqx)9?=Nd`FPZ1S5AGWg6MKNX69^`8sKzjn#yg?w9L>Yc)Kg!_HZJ@! zAHp}eRTVw#^wqUFViLJn3u$ofH`_*Oxc*THy`gyf=Yoz)u**bf6&BP>jg#aD3fQTM zU0VwEn_7P8{al=EEvEdOrs?x6;X8l44i1toEo-QTPp|at2(ztsZOIJgp7r=Tyga7oGzw1fl zv1SpZP$gLts|%IMbgna=F0`5?v7~L=MO!!~PuoRJsXtXVcXzdvq&yBtxCDLBba=C} zbS87vF_oLE893mqA!(j)x1e&hh+kX=`?4O-4vyHR6mC>_(1is6E$5|VlQRk_@|v(~uWcLTFt6XfuAn6h~_cg3phj>EvojaI%1gK|Erhw-zrEHzuC z9j>IfW4`mh!5R4}4O5vUcNN<{=$j_Bm_4~JzqEc{Cde7^N+uyGknaMkHU7 zAm(+~D3jeS)OMXv^3U>Vbe;!e@%!HcGuj%jy9dXFl6|{R6};S{BD9P#AF9%=b;%%| zm#}-53r-&u@*x?csIDZ%T;qQFjdAY}Q|RG#{H%`%k?&`5vCe0wu}j=&5;Er%^qpJ(&FlztUanc^Zr>)*m;*$!)-Ww=kGZ} zlyqN|{P5Jh*+fqJpB5u7XweG(w;OYIIw$Mbo=SOhtk&%dD#m)eE6#$LN$>9L>sv;? z1Lm8x9G6z=zJ=*sR*vUm^M5crR7IPM?ERetCDk`F^S8@4Z2S9N%GqSgz7i6>c&Tr?GLmBpvQbNGZe= zS&=JhXqx1-)~ZxW9K!dA%4DLcD5v*SCTP`2jF zZ=y>IJdaE`%H#h0(mFiH;W)hQ=4ZMvdUi&m9n}@i%xyj7bhV#uq25At^}5YIpwO=ZTh`Mfu#4#N_3sg(#UH zWF*LTCL5v%P34qO$$h3d4^E1ywG~7*x-dxxQqC6$a)EG5kOe?=HBm`zY?f^GCnGWh zxs~SDaiTRYakRx}7`w=krnCi-2XXqLkfiW83gzqEuE97d&{ftOGK-_ zFLJ8TH&uxe_avUn;TndZL)rI|_^J-T_QOO>kw8YgI0XxvAPuYwZS^+71hCbHqS;Ej z(W#LrVG1zpyiLp%_yJ3ZS`-fW>hxb2fLaZdfU}~plcV2_9;?tiP0kSyfYLoz_ye5N zrkt(*ab)1%hkmqY$li*aR(x>?CNX&2{4;4-t}QuDJL_5~J%s|o$@C%qyXbcZKS;?> zmz`CPJMboeU4#^>K&)o63jB*XE1~THM0=j(*TbqC4PycW>+$vM<;xomNoU-E`D6qC zkd(O##Q=1n$n0|~+Ybk!tsmq>HslRO86+)#=8(v{e<|;D z&K<_TwH;3Nb6*o;gNay5e}?YsGr=T$0;wBt0>F^7!S!rt!5Ue7mQAkaP1wBTSb4!n z@BLx+B;gLWzkI2bd?D8=K<}6lE~K$@ehCvJ3F!TjKoU0+55gMuJRpIh@mN+LBAjK^GW#K*L8W>-LkQ;VQl1M9A+*Xb*Vp+Cu9X%e zIuU_w_Pls$GERnaG#;}Lv7yo;^WzLcfYnql!ifn~W~julZ|xZSwz8#zb47esWg<>~ z3y6)KwV@gSjMVyvp`)~lyl{Q{*SFiC>aU`VF)&BX+s;)`-n$cHvxdc2F^kFhOHz)_ z{#u?UJGru`(Ss?#%P9F*Y&Hpiofle>0YK_^zx!AK=7()#zzjYOPg!(32p~9Pw8J)R z+G4U=(_r?7$bz7=9o?W<51oNRe>|MX^IaH(a$@WvjN0G94hA1mDJe;b>eA8Rw%$yG79n)<_ojjAkM?ZCyuC}# z@g5M<%l7Kd>HGPH?13#Rol%EC-PN@aAq2fwucqSec7&8HE2eZh3geM2OVlA~!b}g9 zxgdO>;9YNl*qFZlnf;Z!^5Dq#9rE>8)cj|K19tm=yBYKEewP1IIQn{y2B!ZdaRmNZ z{?9ay*>~vI)7v{#H580`ZhVcVlmV@A`c*z(_^4z(G!<%uf3m5Bf|?@nSeW0R+cz=s zdYbh+lyNw}fn+kA>!W>-LeKk_^=%&R&*M+V`qcsKjT;%mb~c!|bYT%T`?O%qi>SAs zw@j|mwal$)2*Gh?`#XNM-KceO-bGD&`Wf^(q`U+sYs=Y>5a%RWFRAQ;DW)TZID|Nj zf9~33D(QEtQu{R-UbqSRE>tEYF+YMlGZ@a;c^&nGUKL#D>Y92bA_<4ED9oZ6mIWk zwMIWHx#CQYaCWF-`~9x z%GtWZjGr)m^wet9Rnh%vCa4vhzD6VGgu`bRRE>^u`Qt239*~f5lAOy?RO$`5@G@C- zJBrn`WYs67#KbmYRcdqRz2R+EL})o$1lRQabb)=At)gBB^12(q1%Nn629hgiA|y70 zy7|FRa37CobEc(Uk{t)Y81Y`oNUt>6kIXUdLT?b*yc|dZgilYGoC~;k7jHfxK7@^@ z^W2d)Pn%9ktbl1V(@uA_CkL1b%^$OUMGqsiS2?|08&&Y z>0Up1XAB_Wg2)0iWA(LQC`vO1oFY8u5lB;cK+^3#4>F>#_S9t$_VDf6#1GkMa*X=` zlK`O#s0=knVl92S$}?2Usc-B!MC7*{r$9@AcI|0v+KfNNbKcZ3o8*pxZtLUr+v(B3 zSmngT+X)Xb-M#v25HI*#a~V>KPSJTl2?8*O?+F1Mj)12kxfhD&#Q``S(CmvIb3 zauca@Wr@>VzfselSH&~0AV2OsQl1er7NL^L=ZfQ(8U$*j?~4BT?abouBH|PU`}FAgQM{85CzQ0S9lBBnWbAdn-9DQOe;z|5 zP#kFrJ6ZQN2~e}n9@f`ODBz{V#o>RNqW6XxBS-}cB%<0irhj*|*jte-gzF}of9x>c zx8Ucb@8bxC(TJC8m}E?lKD9n}>TaouUnlrS|jK@6BB!=;B7@U@S1`?G3F%G7#Zq6;MeHAT$I8eJD}l zVcnS4SGL?Z+D3j`=`D*0OvCbU4;nV#-2LFy@_GR(jWm)K5OGz3E?xUO-BeSCzCNmT zmZ}0$_~Xlc#4DWal;QpGUMZD>{sEKUSOs~$_LtZqk+<|gpYbLD8w9#EA}fbZz2Tm_ zm;7?iH8aIh#ek1EBr8t$;ZYz6cp=A~d<5!qW9)YN~c zvK=Zv<(HhZV$GT!u3(!hWqdagGPZHaeIU3kl(_v9D69oH;WNo6Na_DDD)k6z>E%E# zTxa*`aEH6BWv7vR+Z#B~x?PCw$(%l#A&VIQ+FAVEVSH~QoU zmMicJ6&H)hL~a3aO8z>Z_w^%_f`k|oWI7lx!Ef6Ks|yo~%|#{R1l8EG-*FKLI!b?b z4_sLoBkjTsLbe>dG}yf<&V<3Np4o+CVzumU5AK*9AF<%zWkj&ltENY>Py;4FhVUym&oufj>m&7UfuMJE$SfXCdo*VVnvm^ zO1ee4NMku<$H0M}z?Aqyme=#^-cCArn68w^{`Q3jgQ>gK>~;*ev2qeuH=yizs*&G5 zsd)`=FFyFX;&yUq@A?;AA5aODW)R;mwROevBM|DLT}qO)84Qoqu*y)r4x(M}%+&cM zBC)y#M?CJ#?~Cz^V9Rz&iUn8eubVWL6tjJR*$6`kzP$DTJ+uLGmbxUa%hvqq3pLm#yXUN`I9M7rIcg;04e6}cXDY%UIl~u(>YKhL6ixgit~j;c&tD(gV6rI+ z?i+=@FYUs)M7?3--xcjZ`9yNiLrzNLVtM(agv>TkcF;*ynViIoX-w+IzM&Qyth*P9 zYsHhExhkZ^s&h2i3IVWemFX*~@{t|m#6F%1@5Dma>-qR1_av%pHnNP7%g6dMGYg=@ z6GgOM|Lg@{1doQx;7a+%6m-^tGUi}R`7^`|D^^48O&#+Eb(R7!I-NQl9Rwfe)!}w! zy#BF8?4BAc&84$s58(9#b_4kuIX$xxmmy*-vWq)%z?eBep(NMm;1jIl-2_a`!2Q@3 z^IFsxAX;WKpON)0bu4QNMn05Y&h#jv&HFj&_^UtuRYVnNznPb6q3aK%wAzyIk512+ zB1Xw8e~p(`H+-KI8LkIkn0hpqK|IHL{bQud+_U24A35F>%bA-^nUrRo>&yt1CY2u8 zK%F*0`<#(f-K}uu?Jx?iLhfL`^tOje8wtxtjY~R3DNMwOXiD@M#zw3e#;-TVd1McgUXar)q~2GRR^?_(dts(oLVig-c75AyRPJ7BgeZSuIF#smWd}I zIX0CzRpG8M7FU<*`MvdhtUnVumMZKwDlP@~YIBIuj=`Tck{oT?lt-YRC~rTPVHzyY z-)Vo$7WJ~2qsnE#=y*Vgdw0Ei79M;qj&z0FVp|1DSXFD$Wv*#f@x9Kg&k5)ERM*Qhf_^Y*Ov{^x_woGWvLXx>uNIgqPoyE;LPE)h| zKn;mlop}0b7q9FfO`M?gU=@0rU;IiZYNO(NpIvsaD(<8*%9s?n!hw+&Zz8T8^GjRl z?jkVW3iR;cw|x3UNMm}Mr4`wOE!&`xMrBBhT`5yAg!jt{^r0jj$K%>uRa&k-v)? zE?2VsOQoN9AhkpwN+R#a;)=7o(+O^@Qhe2&o+tvPCQb2h0upCuBq$o_8Um#`{9Xc<8Q%)bOP6@fIDU#SXF2ED^;g92d%4ZqZcZ(B54Pw{ot2y)f`kn>0d!cnQun=s5Pb;Oc0jPVgw)OvC8oNxfuahkhlQe21& zHu%o1TZb8!<2=X9f$|aqdsixUZL{sNOemEUqc+iflL&{KY7e~n8-c_*7-V(Bxkz#2 z2yk-9A}hizJp?q>B1^TbEDvgwyb6ai!#aANdOaFwtlX2ztLi0wskG?l1d~$sfLw0`YMY&aWtPE-#c!OzNc9E#HFO*_F&8( zWOH>>m5V6tUUBuIXv*T~6LJlx1I@xDtz;di5)5nQm|x$HlHi1ULNofJzw!8q3fd-J ztZXVy9mtz7z*{b$?YksU=(0s9X zYbbZAqVir9AGAzuqqtiy+}Kh#3=QZ+eBDv`EqN+zwE1wefDzHZ0bvOM40$Nj;0qLu zX-o;!Gtv+(g%?TO#1%<`1ap_l%rk1h?LG3?Ksq^-U_jqdK8&$Bt+TpT+Vr4R zcbn@h&OLdoag-@{i`wh%?&u6(qCjpa_R=A8qDj5)o z{@ww6-VXwoxi8KtvO_nafUsI_&)`W%v7kvRnfY6TkT^)6A!_eMgXxⓈXy7N;EM) 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 From c2b2b39f76958af596e98995059d1bc6fd4decd7 Mon Sep 17 00:00:00 2001 From: Dmytro Lazarenko Date: Mon, 23 Sep 2024 21:41:13 -0700 Subject: [PATCH 3/3] Update config and options for eds sdk --- docs/photoniq/event-delivery/clients/index.md | 17 +++++++++++++---- .../clients/query-set-and-batch.md | 18 +++++++++++++----- .../eds-clients/photoniq-eds-sdk.min.js | 2 +- 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/docs/photoniq/event-delivery/clients/index.md b/docs/photoniq/event-delivery/clients/index.md index 693d122dbd..11ac256155 100644 --- a/docs/photoniq/event-delivery/clients/index.md +++ b/docs/photoniq/event-delivery/clients/index.md @@ -115,11 +115,20 @@ let connection = PhotoniqEdsSdk.create(config); | **Property** | **Type** | **Requred** | **Description** | |----------------------|-----------|-----------|-----------------------------------| -| `host` | `string` | Yes | Host of the connectionn | +| `host` | `string` | Yes | Host of the connection | | `customerId` | `string` | Yes | Customer ID credentails | | `apiKey` | `string` | Yes | ApiKey credentails | | `fabric` | `string` | No | Fabric to be used. Default is `_system` | -| `connectionTypes` | `string[]` | No | Use type of connection and priority. Default is `["ws"]`. Types: `ws`, `sse` | -| `queryType` | `string` | No | Type of query to use. Types: `"SQL"` | +| `connectionTypes` | `(string `\|` SubConfig)[]` | No | Use type of connection and priority. Default is `["ws"]`. Types: `ws`, `sse` | | `autoReconnect` | `boolean` | No | Automatically reconnect in case of network issues. Default is `true` | -| `pingSeconds` | `number` | No | Seconds between ping-pong messages to the WebSocket server. Default is `29` | + +#### `SubConfig` instance schema: + +| **Property** | **Type** | **Requred** | **Description** | +|----------------------|-----------|-----------|-----------------------------------| +| `type` | `string` | Yes | Type of the connection. Value: `ws` or `sse` | +| `customerId` | `string` | No | Customer ID credentails. Default set from `Config` | +| `apiKey` | `string` | No | ApiKey credentails. Default set from `Config` | +| `fabric` | `string` | No | Fabric to be used. Default set from `Config` | +| `pingSeconds` | `number` | No | Seconds between ping-pong messages to the WebSocket server. Default is `29`. Acceptable only for `ws` connection. | +| `flushTimeoutMs` | `number` | No | Seconds between ping-pong messages to the WebSocket server. Default is `20`. Acceptable only for `sse` connection. | \ No newline at end of file diff --git a/docs/photoniq/event-delivery/clients/query-set-and-batch.md b/docs/photoniq/event-delivery/clients/query-set-and-batch.md index 0569ea9320..a6622fcb0f 100644 --- a/docs/photoniq/event-delivery/clients/query-set-and-batch.md +++ b/docs/photoniq/event-delivery/clients/query-set-and-batch.md @@ -25,8 +25,8 @@ querySet.retrieve("SELECT * FROM WHERE key=", (event |--------------|------------|----------|------------------------| | `query` | `string` | Yes | SQL query to retrieve/listen | | `resultListener`| `function` | Yes | [Info](/photoniq/event-delivery/clients/listeners-and-errors#result-listener) | -| `errorListener`| `function` | No | [Info](/photoniq/event-delivery/clients/listeners-and-errors#error-listener) | -| `compress` | `boolean` | No | Compress incoming initial data. | +| `errorListenerOrOptions`| `function `\|` QueryOptions` | No | [Info](/photoniq/event-delivery/clients/listeners-and-errors#error-listener) or set query options | +| `options` | `QueryOptions` | No | Set query options. | ### retrieveAndSubscribe @@ -41,8 +41,8 @@ querySet.retrieveAndSubscribe("SELECT * FROM WHERE key= WHERE key=", (even |--------------|------------|----------|-------------------| | `query` | `string` | Yes | SQL query to retrieve/listen | | `resultListener`| `function` | Yes | [Info](/photoniq/event-delivery/clients/listeners-and-errors#result-listener) | -| `errorListener`| `function` | No | [Info](/photoniq/event-delivery/clients/listeners-and-errors#error-listener) | +| `errorListenerOrOptions`| `function `\|` QueryOptions` | No | [Info](/photoniq/event-delivery/clients/listeners-and-errors#error-listener) or set query options | +| `options` | `QueryOptions` | No | Set query options. | ### unubscribe @@ -92,3 +93,10 @@ Removes all subscriptions in the `QuerySet`: ```js querySet.unsubscribeAll(); ``` + + +#### `QueryOptions` instance schema: + +| **Property** | **Type** | **Requred** | **Description** | +|--------------|----------|-------------|-----------------| +| `compress` | `bolean` | No | compress response data | \ No newline at end of file diff --git a/static/download/eds-clients/photoniq-eds-sdk.min.js b/static/download/eds-clients/photoniq-eds-sdk.min.js index 9e0bea88ff..5c411de54c 100644 --- a/static/download/eds-clients/photoniq-eds-sdk.min.js +++ b/static/download/eds-clients/photoniq-eds-sdk.min.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.PhotoniqEdsSdk=t():e.PhotoniqEdsSdk=t()}(this,(()=>(()=>{"use strict";var e={d:(t,r)=>{for(var i in r)e.o(r,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:r[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{connect:()=>m,create:()=>b});const r="x-photoniq-es";var i,s;!function(e){e.Open="open",e.Close="close",e.Properties="properties",e.ServerQueryError="server-query-error",e.ServerGlobalError="server-global-error",e.ClientQueryError="client-query-error",e.ClientGlobalError="client-global-error",e.Message="message"}(i||(i={})),function(e){e.Closed="closed",e.Connecting="connecting",e.Open="open",e.Closing="closing"}(s||(s={}));var n=function(e,t,r,i){return new(r||(r=Promise))((function(s,n){function o(e){try{l(i.next(e))}catch(e){n(e)}}function c(e){try{l(i.throw(e))}catch(e){n(e)}}function l(e){var t;e.done?s(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,c)}l((i=i.apply(e,t||[])).next())}))};function o(e){for(let t in e){let r=t.split(".");if(r.length<=1)continue;let i=e;for(let e=0;ee.charCodeAt(0))),r=new Blob([t],{type:"application/octet-stream"}),i=new DecompressionStream("gzip"),s=r.stream().pipeThrough(i),n=yield new Response(s);return yield n.text()}))}class l{constructor(e,t){this.STUB_FILTER="%7B%22action%22%3A%22remove%22%2C%22queries%22%3A%5B%22SELECT%20%2A%20FROM%20fake%22%5D%7D",this.DEFAULT_PING_SECONDS=29,this.properties={},this.config=e,this.filtersState=t}connect(){let e=this;const t=`wss://${this.config.host}/api/es/v1/subscribe?type=collection&x-customer-id=${this.config.customerId}&apiKey=${this.config.apiKey}&fabric=${this.config.fabric}&filters=${this.STUB_FILTER}`;this.ws=new WebSocket(t),this.ws.addEventListener("open",(function(t){var r;null===(r=e.openListener)||void 0===r||r.call(e,t);let i=e.filtersState.activeFilters();e.send(i),e.updatePingInterval()})),this.ws.addEventListener("message",(function(t){var i;if(e.properties[r])(function(e){return n(this,void 0,void 0,(function*(){return new Promise(((t,r)=>{try{t(JSON.parse(e))}catch(i){try{c(e).then((e=>t(JSON.parse(e))))}catch(e){r(e)}}}))}))})(t.data).then((t=>{var r,i;if(t.error)null===(i=e.errorListener)||void 0===i||i.call(e,t,!0);else for(let i in t){let s=t[i],n=e.filtersState.filterForQuery(i);if(n){e.filtersState.increment(n),null===(r=e.messageListener)||void 0===r||r.call(e,i,n,s);let t=e.filtersState.tryToRemove(n,i);t&&e.send([t])}}}));else{const r=t.data.split("\n");for(const t of r){const r=t.split(":");2==r.length&&(e.properties[r[0].trim()]=r[1].trim())}null===(i=e.propertiesListener)||void 0===i||i.call(e,e.properties)}e.updatePingInterval()})),this.ws.addEventListener("close",(function(t){var r;null===(r=e.closeListener)||void 0===r||r.call(e,t)})),this.ws.addEventListener("error",(function(t){var r;null===(r=e.errorListener)||void 0===r||r.call(e,t,!1)}))}onOpen(e){this.openListener=e}onProperties(e){this.propertiesListener=e}onMessage(e){this.messageListener=e}onClose(e){this.closeListener=e,this.pingIntervalId&&clearInterval(this.pingIntervalId)}onError(e){this.errorListener=e}send(e){var t;if(this.getStatus()===s.Open)for(const r of e)null===(t=this.ws)||void 0===t||t.send(JSON.stringify(r))}disconnect(){return!!this.ws&&(this.ws.close(),!0)}getStatus(){var e;switch(null===(e=this.ws)||void 0===e?void 0:e.readyState){case WebSocket.CONNECTING:return s.Connecting;case WebSocket.OPEN:return s.Open;case WebSocket.CLOSING:return s.Closing;default:return s.Closed}}getId(){return this.properties[r]}getProperty(e){return this.properties[e]}getProperties(){return this.properties}updatePingInterval(){var e;void 0!==this.pingIntervalId&&(clearInterval(this.pingIntervalId),this.pingIntervalId=void 0);let t=this;(!t.config.pingSeconds||t.config.pingSeconds>0)&&(this.pingIntervalId=setInterval((()=>{var e;t.getStatus()===s.Open&&(null===(e=t.ws)||void 0===e||e.send("{1}"))}),1e3*(null!==(e=t.config.pingSeconds)&&void 0!==e?e:this.DEFAULT_PING_SECONDS)))}}class a{constructor(e,t){this.properties={},this.url=e,this.headers=t}onOpen(e){this.openListener=e}onProperties(e){this.propertiesListener=e}onMessage(e){this.messageListener=e}onError(e){this.errorListener=e}onClose(e){this.closeListener=e}connect(e){return t=this,r=void 0,s=function*(){var t,r,i,s,n,o;try{const o=yield fetch(this.url,{method:"POST",headers:this.headers,body:JSON.stringify(e)});o.ok?null===(r=this.openListener)||void 0===r||r.call(this,o):null===(t=this.errorListener)||void 0===t||t.call(this,o);const c=o.body;let l,a="";for(this.reader=c.getReader();!(l=yield this.reader.read()).done;){let e,t=new TextDecoder("utf-8").decode(l.value);for(a+=t;(e=a.indexOf("\n\n"))>-1;){let r=!1,n=a.substring(0,e);if(a=a.substring(e+2),n.startsWith(":")){const e=t.split("\n");for(const t of e){const e=t.split(":");3==e.length&&(this.properties[e[1].trim()]=e[2].trim(),r=!0)}}else{let e=n.indexOf(":");if(e>-1){let t=n.substring(0,e).trim();" "===n[e+1]&&e++,e++;let r=n.substring(e).replace(/\ndata: ?/g,"\n");"data"===t?null===(i=this.messageListener)||void 0===i||i.call(this,r):console.warn(`Not supported message with type of message ${t}: ${r}`)}}r&&(null===(s=this.propertiesListener)||void 0===s||s.call(this,this.properties))}}null===(n=this.closeListener)||void 0===n||n.call(this,"Connection closed")}catch(e){null===(o=this.errorListener)||void 0===o||o.call(this,e)}},new((i=void 0)||(i=Promise))((function(e,n){function o(e){try{l(s.next(e))}catch(e){n(e)}}function c(e){try{l(s.throw(e))}catch(e){n(e)}}function l(t){var r;t.done?e(t.value):(r=t.value,r instanceof i?r:new i((function(e){e(r)}))).then(o,c)}l((s=s.apply(t,r||[])).next())}));var t,r,i,s}disconnect(){var e;null===(e=this.reader)||void 0===e||e.cancel()}getProperty(e){return this.properties[e]}getProperties(){return this.properties}}const u="FALSE",h="TRUE",d="add",f="remove";class p{constructor(e,t){this.config=e,this.queries=new Map,this.globalListener=t}calculateFilter(e,t,r){return{action:e,queries:[t],initialData:r.querySets.some((e=>e.initialData))?h:void 0,once:r.querySets.every((e=>e.once))?h:void 0,compress:r.querySets.some((e=>e.compress))?h:void 0,filterType:this.config.queryType}}increment(e){for(const t of e.querySets)t.count++}tryToRemove(e,t){if(e.querySets.every((e=>e.once)))return this.queries.delete(t),{action:f,queries:[t]}}equalFiltersWithoutQueries(e,t){return e.action===t.action&&e.compress===t.compress&&e.initialData===t.initialData&&e.once===t.once}addQueries(e,t,r,i,s){let n=[];for(const o of e){let e=this.queries.get(o.query);if(e){let c=this.calculateFilter(d,o.query,e),l=e.querySets.find((e=>e.querySet===s));l?(l.initialData=t,l.once=r,l.compress=i,-1==l.callbacks.indexOf(o.listener)&&l.callbacks.push(o.listener),-1==l.errorCallbacks.indexOf(o.errorListener)&&l.errorCallbacks.push(o.errorListener)):e.querySets.push({querySet:s,initialData:t,compress:i,once:r,count:0,callbacks:o.listener?[o.listener]:[],errorCallbacks:o.errorListener?[o.errorListener]:[]});let a=this.calculateFilter(d,o.query,e);if(!this.equalFiltersWithoutQueries(c,a)){let e=n.find((e=>this.equalFiltersWithoutQueries(e,a)));e?e.queries.push(o.query):n.push(a)}}else{let e={querySets:[{querySet:s,initialData:t,compress:i,once:r,count:0,callbacks:o.listener?[o.listener]:[],errorCallbacks:o.errorListener?[o.errorListener]:[]}]};this.queries.set(o.query,e);let c=this.calculateFilter(d,o.query,e),l=n.find((e=>this.equalFiltersWithoutQueries(e,c)));l?l.queries.push(o.query):n.push(c)}}return n}filterForQuery(e){return this.queries.get(e)}removeAllQueries(e){let t=Array.from(this.queries.keys());return this.removeQueries(t,e)}removeQueries(e,t){let r=[];for(const i of e){let e=this.queries.get(i);if(e){let s=e.querySets.findIndex((e=>e.querySet===t));s>-1&&e.querySets.splice(s,1),e.querySets.length||(this.queries.delete(i),r.push(i))}}if(r.length)return{action:f,queries:r}}activeFilters(){let e=[];for(const[t,r]of this.queries){const i=this.calculateFilter(d,t,r);let s=e.find((e=>this.equalFiltersWithoutQueries(e,i)));s?s.queries.push(t):e.push(i)}return e}handleErrorListeners(e,t,r){for(let i of e)try{i(r)}catch(e){console.warn(`Error while handling error listener for query: ${t}`,e)}}handleGlobalListener(e){var t;try{null===(t=this.globalListener)||void 0===t||t.call(this,e)}catch(e){console.warn("Error while handling global error listener",e)}}}class v{constructor(e,t){this.ENCODED_GZ_CONTENT="encoded-gz-content: ",this.FAILED_TO_PARSE_QUERY="Failed to parse query: ",this.config=e,this.filtersState=t,this.url=`https://${this.config.host}/api/es/sse/v1/subscribe`,this.headers={"Content-Type":"application/json",Authorization:`${this.config.apiKey}`,"x-customer-id":`${this.config.customerId}`},this.status=s.Closed}send(e){if(null==e?void 0:e.length){let t=this.filtersState.activeFilters();this.eventSource?(this.eventSource.disconnect(),this.eventSource=void 0,this.retrieve(e,(()=>{this.subscribe(t)}))):this.retrieve(t,(()=>{this.subscribe(t)}))}}connect(){if(this.eventSource)throw Error("SSE connection already opened");let e=this.filtersState.activeFilters();this.retrieve(e,(()=>{this.subscribe(e)}))}retrieve(e,t){var r;let i=e.filter((e=>e.initialData===h)).map((e=>e.queries)).reduce(((e,t)=>e.concat(t)),[]);if(!i.length)return this.subscribe(e),void t();let n=e.filter((e=>e.initialData===h)).some((e=>e.compress)),o={type:"collection",fabric:this.config.fabric,filters:{once:h,compress:n?h:u,initialData:h,queries:i}},c=this;this.eventSource||null===(r=this.openListener)||void 0===r||r.call(this,"SSE connection opened"),this.eventSource=new a(this.url,this.headers),this.eventSource.onOpen((e=>{var t;c.status===s.Connecting&&(c.status=s.Open,null===(t=c.openListener)||void 0===t||t.call(c,e))})),this.eventSource.onProperties((e=>{var t;null===(t=c.propertiesListener)||void 0===t||t.call(c,e)})),this.eventSource.onError((e=>{var t;null===(t=c.errorListener)||void 0===t||t.call(c,e,!1)})),this.eventSource.onMessage((e=>{c.handleMessage(e).then((r=>{var s,n;if(r)try{let r=JSON.parse(e);for(let e in r){let t=i.indexOf(e);t>-1&&i.splice(t,1)}i.length||(null===(s=c.eventSource)||void 0===s||s.disconnect(),c.eventSource=void 0,t())}catch(e){null===(n=c.errorListener)||void 0===n||n.call(c,e,!1)}}))})),this.status===s.Closed&&(this.status=s.Connecting),this.eventSource.connect(o)}subscribe(e){let t=e.filter((e=>e.once!==h)).map((e=>e.queries)).reduce(((e,t)=>e.concat(t)),[]);if(!t.length)return;let r=e.filter((e=>e.once!==h)).some((e=>e.compress)),i={type:"collection",fabric:this.config.fabric,filters:{action:d,filterType:"SQL",once:u,compress:r?h:u,initialData:u,queries:t}},n=this;this.eventSource=new a(this.url,this.headers),this.eventSource.onOpen((e=>{var t;n.status===s.Connecting&&(n.status=s.Open,null===(t=n.openListener)||void 0===t||t.call(n,e))})),this.eventSource.onError((e=>{var t,r;null===(t=n.errorListener)||void 0===t||t.call(n,e,!1),null===(r=n.closeListener)||void 0===r||r.call(n,e)})),this.eventSource.onProperties((e=>{var t;null===(t=n.propertiesListener)||void 0===t||t.call(n,e)})),this.eventSource.onMessage((e=>{n.handleMessage(e)})),this.eventSource.onClose((e=>{var t;this.status===s.Closing&&(this.status=s.Closed,null===(t=n.closeListener)||void 0===t||t.call(n,e))})),this.status===s.Closed&&(this.status=s.Connecting),this.eventSource.connect(i)}onOpen(e){this.openListener=e}onProperties(e){this.propertiesListener=e}onMessage(e){this.messageListener=e}onClose(e){this.closeListener=e}onError(e){this.errorListener=e}getStatus(){return this.status}disconnect(){var e;return!!this.eventSource&&(this.status=s.Closing,null===(e=this.eventSource)||void 0===e||e.disconnect(),this.eventSource=void 0,!0)}getId(){return this.getProperty(r)}getProperty(e){var t;return null===(t=this.eventSource)||void 0===t?void 0:t.getProperty(e)}getProperties(){return this.eventSource?this.eventSource.getProperties():{}}handleMessage(e){return this.tryToDecodeData(e).then((e=>{var t,r;if(e.error)return null===(r=this.errorListener)||void 0===r||r.call(this,e,!0),!1;for(let r in e){let i=e[r],s=this.filtersState.filterForQuery(r);s&&(this.filtersState.increment(s),null===(t=this.messageListener)||void 0===t||t.call(this,r,s,i),this.filtersState.tryToRemove(s,r))}return!0}))}tryToDecodeData(e){return t=this,r=void 0,s=function*(){return new Promise(((t,r)=>{if(e.startsWith(this.ENCODED_GZ_CONTENT))try{c(e.substring(this.ENCODED_GZ_CONTENT.length)).then((e=>t(JSON.parse(e))))}catch(e){r(e)}else if(e.startsWith(this.FAILED_TO_PARSE_QUERY))t({error:e,code:400});else try{t(JSON.parse(e))}catch(e){r(e)}}))},new((i=void 0)||(i=Promise))((function(e,n){function o(e){try{l(s.next(e))}catch(e){n(e)}}function c(e){try{l(s.throw(e))}catch(e){n(e)}}function l(t){var r;t.done?e(t.value):(r=t.value,r instanceof i?r:new i((function(e){e(r)}))).then(o,c)}l((s=s.apply(t,r||[])).next())}));var t,r,i,s}}class g{constructor(e,t,r){this.subscribeQueries=[],this.retrieveAndSubscribeQueries=[],this.retrieveQueries=[],this.unsubscribeQueries=[],this.querySet=e,this.connection=t,this.filtersState=r}subscribe(e,t,r){return this.subscribeQueries.push({query:e,listener:t,errorListener:r,compress:!1}),this}retrieveAndSubscribe(e,t,r,i){return this.retrieveAndSubscribeQueries.push({query:e,listener:t,errorListener:r,compress:!0===i}),this}retrieve(e,t,r,i){return this.retrieveQueries.push({query:e,listener:t,errorListener:r,compress:!0===i}),this}unsubscribe(e){return this.unsubscribeQueries.push(e),this}assemble(){let e=this.retrieveQueries.some((e=>e.compress)),t=this.filtersState.addQueries(this.retrieveQueries,!0,!0,e,this.querySet),r=this.retrieveAndSubscribeQueries.some((e=>e.compress)),i=this.filtersState.addQueries(this.retrieveAndSubscribeQueries,!0,!1,r,this.querySet);this.joinFilters(t,i);let s=this.filtersState.addQueries(this.subscribeQueries,!1,!1,!1,this.querySet);this.joinFilters(t,s);let n=this.filtersState.removeQueries(this.unsubscribeQueries,this.querySet);n&&t.push(n),this.connection.send(t)}joinFilters(e,t){for(const r of t){let t=e.find((e=>this.filtersState.equalFiltersWithoutQueries(e,r)));t?t.queries.push(...r.queries):e.push(r)}}}class S{constructor(e,t){this.connection=e,this.filtersState=t}subscribe(e,t,r){let i=[{query:e,listener:t,errorListener:r,compress:!1}],s=this.filtersState.addQueries(i,!1,!1,!1,this);for(const e of s)this.connection.send([e])}retrieveAndSubscribe(e,t,r,i){let s=[{query:e,listener:t,errorListener:r,compress:!0===i}],n=this.filtersState.addQueries(s,!0,!1,!0===i,this);for(const e of n)this.connection.send([e])}retrieve(e,t,r,i){let s=[{query:e,listener:t,errorListener:r,compress:!0===i}],n=this.filtersState.addQueries(s,!0,!0,!0===i,this);for(const e of n)this.connection.send([e])}unsubscribe(e){let t=this.filtersState.removeQueries([e],this);t&&this.connection.send([t])}unsubscribeAll(){let e=this.filtersState.removeAllQueries(this);e&&this.connection.send([e])}batch(){return new g(this,this.connection,this.filtersState)}}class y{constructor(e,t){this.connectionTypes=["ws"],this.reconnection=-1,this.config=e,this.filtersState=new p(e,t)}connect(){var e;if(this.connection)throw new Error(`Already connected with status: ${this.getStatus()}`);(null===(e=this.config.connectionTypes)||void 0===e?void 0:e.length)&&(this.connectionTypes=this.config.connectionTypes),-1===this.reconnection&&(this.reconnection=0);let t=this.connectionTypes[this.reconnection%this.connectionTypes.length];switch(t){case"ws":this.connection=new l(this.config,this.filtersState);break;case"sse":this.connection=new v(this.config,this.filtersState);break;default:throw new Error(`Connection type not supported: ${t}`)}let r=this;this.connection.onOpen((function(e){let t=r.reconnection;if(r.reconnection=0,-1===t){const t={type:i.Open,connection:r,data:e};r.filtersState.handleGlobalListener(t)}})),this.connection.onProperties((function(e){const t={type:i.Properties,connection:r,data:e};r.filtersState.handleGlobalListener(t)})),this.connection.onMessage((function(e,t,s){let n=s,c=Array.isArray(n);if(c)for(let e=0;e-1){let e=Math.pow(2,6+r.reconnection++);setTimeout((function(){r.connect()}),e)}else{r.reconnection=-1;const t={type:i.Close,connection:r,data:e};r.filtersState.handleGlobalListener(t)}})),this.connection.connect()}send(e){var t;null===(t=this.connection)||void 0===t||t.send(e)}disconnect(){var e;return-1!==this.reconnection&&(this.reconnection=-1,null===(e=this.connection)||void 0===e||e.disconnect(),!0)}getConfig(){return this.config}getStatus(){return-1===this.reconnection?s.Closed:this.connection?this.connection.getStatus():s.Connecting}getId(){var e;return null===(e=this.connection)||void 0===e?void 0:e.getId()}getProperty(e){var t;return null===(t=this.connection)||void 0===t?void 0:t.getProperty(e)}getProperties(){return this.connection?this.connection.getProperties():{}}querySet(){return new S(this,this.filtersState)}}function b(e,t){return new y(e,t)}function m(e,t){let r=new y(e,t);return r.connect(),r}return t})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.PhotoniqEdsSdk=t():e.PhotoniqEdsSdk=t()}(this,(()=>(()=>{"use strict";var e={d:(t,i)=>{for(var r in i)e.o(i,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:i[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{connect:()=>m,create:()=>b});const i="x-photoniq-es";var r,s;!function(e){e.Open="open",e.Close="close",e.Properties="properties",e.ServerQueryError="server-query-error",e.ServerGlobalError="server-global-error",e.ClientQueryError="client-query-error",e.ClientGlobalError="client-global-error",e.Message="message"}(r||(r={})),function(e){e.Closed="closed",e.Connecting="connecting",e.Open="open",e.Closing="closing"}(s||(s={}));var n=function(e,t,i,r){return new(i||(i=Promise))((function(s,n){function o(e){try{c(r.next(e))}catch(e){n(e)}}function l(e){try{c(r.throw(e))}catch(e){n(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,l)}c((r=r.apply(e,t||[])).next())}))};function o(e){for(let t in e){let i=t.split(".");if(i.length<=1)continue;let r=e;for(let e=0;ee.charCodeAt(0))),i=new Blob([t],{type:"application/octet-stream"}),r=new DecompressionStream("gzip"),s=i.stream().pipeThrough(r),n=yield new Response(s);return yield n.text()}))}class c{constructor(e,t,i){this.STUB_FILTER="%7B%22action%22%3A%22remove%22%2C%22queries%22%3A%5B%22SELECT%20%2A%20FROM%20fake%22%5D%7D",this.DEFAULT_PING_SECONDS=29,this.properties={},this.config=e,this.subConfig=t,this.filtersState=i}connect(){let e=this,t=this.subConfig.url?this.subConfig.url:`wss://${this.config.host}/api/es/v1/subscribe`,r=this.subConfig.apiKey?this.subConfig.apiKey:this.config.apiKey,o=this.subConfig.fabric?this.subConfig.fabric:this.config.fabric?this.config.fabric:"_system";const c=`${t}?type=collection&x-customer-id=${this.subConfig.fabric?this.subConfig.fabric:this.config.customerId}&apiKey=${r}&fabric=${o}&filters=${this.STUB_FILTER}`;this.ws=new WebSocket(c),this.ws.addEventListener("open",(function(t){var i,r;null===(i=e.openListener)||void 0===i||i.call(e,t);let n=e.filtersState.activeFilters();if(e.getStatus()===s.Open)for(const t of n)null===(r=e.ws)||void 0===r||r.send(JSON.stringify(t)),e.filtersState.activeFilterSent(t);e.updatePingInterval()})),this.ws.addEventListener("message",(function(t){var r;if(e.properties[i])(function(e){return n(this,void 0,void 0,(function*(){return new Promise(((t,i)=>{try{t(JSON.parse(e))}catch(r){try{l(e).then((e=>t(JSON.parse(e))))}catch(e){i(e)}}}))}))})(t.data).then((t=>{var i,r;if(t.error)null===(r=e.errorListener)||void 0===r||r.call(e,t,!0);else for(let r in t){let s=t[r],n=e.filtersState.filterForQuery(r);n&&(e.filtersState.increment(n),null===(i=e.messageListener)||void 0===i||i.call(e,r,n,s),e.filtersState.tryToRemove(n,r),e.flush())}}));else{const i=t.data.split("\n");for(const t of i){const i=t.split(":");2==i.length&&(e.properties[i[0].trim()]=i[1].trim())}null===(r=e.propertiesListener)||void 0===r||r.call(e,e.properties)}e.updatePingInterval()})),this.ws.addEventListener("close",(function(t){var i;null===(i=e.closeListener)||void 0===i||i.call(e,t)})),this.ws.addEventListener("error",(function(t){var i;null===(i=e.errorListener)||void 0===i||i.call(e,t,!1)}))}onOpen(e){this.openListener=e}onProperties(e){this.propertiesListener=e}onMessage(e){this.messageListener=e}onClose(e){this.closeListener=e,this.pingIntervalId&&clearInterval(this.pingIntervalId)}onError(e){this.errorListener=e}flush(){var e,t;if(this.getStatus()===s.Open){let i=this.filtersState.removeFilter();i&&(null===(e=this.ws)||void 0===e||e.send(JSON.stringify(i)),this.filtersState.removeFilterSent());let r=this.filtersState.activeNotSentFilters();for(const e of r)null===(t=this.ws)||void 0===t||t.send(JSON.stringify(e)),this.filtersState.activeFilterSent(e)}}disconnect(){return!!this.ws&&(this.ws.close(),!0)}getStatus(){var e;switch(null===(e=this.ws)||void 0===e?void 0:e.readyState){case WebSocket.CONNECTING:return s.Connecting;case WebSocket.OPEN:return s.Open;case WebSocket.CLOSING:return s.Closing;default:return s.Closed}}getId(){return this.properties[i]}getProperty(e){return this.properties[e]}getProperties(){return this.properties}updatePingInterval(){var e;void 0!==this.pingIntervalId&&(clearInterval(this.pingIntervalId),this.pingIntervalId=void 0);let t=this;(!t.subConfig.pingSeconds||t.subConfig.pingSeconds>0)&&(this.pingIntervalId=setInterval((()=>{var e;t.getStatus()===s.Open&&(null===(e=t.ws)||void 0===e||e.send("{1}"))}),1e3*(null!==(e=t.subConfig.pingSeconds)&&void 0!==e?e:this.DEFAULT_PING_SECONDS)))}}class a{constructor(e,t){this.properties={},this.disconnected=!1,this.url=e,this.headers=t}onOpen(e){this.openListener=e}onProperties(e){this.propertiesListener=e}onMessage(e){this.messageListener=e}onError(e){this.errorListener=e}onClose(e){this.closeListener=e}connect(e){return t=this,i=void 0,s=function*(){var t,i,r,s,n,o;try{const o=yield fetch(this.url,{method:"POST",headers:this.headers,body:JSON.stringify(e)});o.ok?null===(i=this.openListener)||void 0===i||i.call(this,o):null===(t=this.errorListener)||void 0===t||t.call(this,o);const l=o.body;let c,a="";for(this.reader=l.getReader(),this.disconnected&&this.disconnect();!(c=yield this.reader.read()).done;){let e,t=new TextDecoder("utf-8").decode(c.value);for(a+=t;(e=a.indexOf("\n\n"))>-1;){let i=!1,n=a.substring(0,e);if(a=a.substring(e+2),n.startsWith(":")){const e=t.split("\n");for(const t of e){const e=t.split(":");3==e.length&&(this.properties[e[1].trim()]=e[2].trim(),i=!0)}}else{let e=n.indexOf(":");if(e>-1){let t=n.substring(0,e).trim();" "===n[e+1]&&e++,e++;let i=n.substring(e).replace(/\ndata: ?/g,"\n");"data"===t?null===(r=this.messageListener)||void 0===r||r.call(this,i):console.warn(`Not supported message with type of message ${t}: ${i}`)}}i&&(null===(s=this.propertiesListener)||void 0===s||s.call(this,this.properties))}}null===(n=this.closeListener)||void 0===n||n.call(this,"Connection closed")}catch(e){null===(o=this.errorListener)||void 0===o||o.call(this,e)}},new((r=void 0)||(r=Promise))((function(e,n){function o(e){try{c(s.next(e))}catch(e){n(e)}}function l(e){try{c(s.throw(e))}catch(e){n(e)}}function c(t){var i;t.done?e(t.value):(i=t.value,i instanceof r?i:new r((function(e){e(i)}))).then(o,l)}c((s=s.apply(t,i||[])).next())}));var t,i,r,s}disconnect(){var e;this.disconnected=!0,null===(e=this.reader)||void 0===e||e.cancel()}getProperty(e){return this.properties[e]}getProperties(){return this.properties}}const u="FALSE",h="TRUE",f="add",d="remove";class p{constructor(e,t){this.config=e,this.queries=new Map,this.queriesToRemove=[],this.globalListener=t}calculateFilter(e,t,i){return{action:e,queries:[t],initialData:i.querySets.some((e=>e.initialData&&0===e.count))?h:void 0,once:i.querySets.every((e=>e.once))?h:void 0,compress:i.querySets.some((e=>e.compress))?h:void 0}}increment(e){for(const t of e.querySets)t.count++}tryToRemove(e,t){if(e.querySets.every((e=>e.once)))return this.queries.delete(t),-1==this.queriesToRemove.indexOf(t)&&this.queriesToRemove.push(t),{action:d,queries:[t]}}equalFiltersWithoutQueries(e,t){return e.action===t.action&&e.compress===t.compress&&e.initialData===t.initialData&&e.once===t.once}addQueries(e,t,i,r,s){let n=[];for(const o of e){let e=this.queries.get(o.query);if(e){let l=this.calculateFilter(f,o.query,e),c=e.querySets.find((e=>e.querySet===s));c?(c.initialData=t,c.once=i,c.compress=r,-1==c.callbacks.indexOf(o.listener)&&c.callbacks.push(o.listener),-1==c.errorCallbacks.indexOf(o.errorListener)&&c.errorCallbacks.push(o.errorListener)):e.querySets.push({querySet:s,initialData:t,compress:r,once:i,count:0,callbacks:o.listener?[o.listener]:[],errorCallbacks:o.errorListener?[o.errorListener]:[]});let a=this.calculateFilter(f,o.query,e);if(!this.equalFiltersWithoutQueries(l,a)){e.sent=!1;let t=n.find((e=>this.equalFiltersWithoutQueries(e,a)));t?t.queries.push(o.query):n.push(a)}}else{let e={querySets:[{querySet:s,initialData:t,compress:r,once:i,count:0,callbacks:o.listener?[o.listener]:[],errorCallbacks:o.errorListener?[o.errorListener]:[]}],sent:!1};this.queries.set(o.query,e);let l=this.calculateFilter(f,o.query,e),c=n.find((e=>this.equalFiltersWithoutQueries(e,l)));c?c.queries.push(o.query):n.push(l)}}return n}filterForQuery(e){return this.queries.get(e)}removeAllQueries(e){let t=Array.from(this.queries.keys());return this.removeQueries(t,e)}removeQueries(e,t){for(const i of e){let e=this.queries.get(i);if(e){let r=e.querySets.findIndex((e=>e.querySet===t));r>-1&&e.querySets.splice(r,1),e.querySets.length||(this.queries.delete(i),-1==this.queriesToRemove.indexOf(i)&&this.queriesToRemove.push(i))}}if(this.queriesToRemove.length)return{action:d,queries:this.queriesToRemove}}activeFilters(){let e=[];for(const[t,i]of this.queries){const r=this.calculateFilter(f,t,i);let s=e.find((e=>this.equalFiltersWithoutQueries(e,r)));s?s.queries.push(t):e.push(r)}return e}activeNotSentFilters(){let e=[];for(const[t,i]of this.queries){if(i.sent)continue;const r=this.calculateFilter(f,t,i);let s=e.find((e=>this.equalFiltersWithoutQueries(e,r)));s?s.queries.push(t):e.push(r)}return e}activeFiltersSent(e){for(let t of e)this.activeFilterSent(t)}activeFilterSent(e){for(let t of e.queries){let e=this.queries.get(t);e&&(e.sent=!0)}}allFiltersNotSent(){for(const[e,t]of this.queries)t.sent=!1}removeFilter(){let e=this.queriesToRemove.filter((e=>!this.queries.has(e)));if(0!==e.length)return{action:d,queries:e}}removeFilterSent(){this.queriesToRemove.splice(0,this.queriesToRemove.length)}handleErrorListeners(e,t,i){for(let r of e)try{r(i)}catch(e){console.warn(`Error while handling error listener for query: ${t}`,e)}}handleGlobalListener(e){var t;try{null===(t=this.globalListener)||void 0===t||t.call(this,e)}catch(e){console.warn("Error while handling global error listener",e)}}}class v{constructor(e,t,i){this.ENCODED_GZ_CONTENT="encoded-gz-content: ",this.FAILED_TO_PARSE_QUERY="Failed to parse query: ",this.DEFAULT_FLUSH_TIMEOUT_MS=20,this.config=e,this.subConfig=t,this.filtersState=i,this.url=this.subConfig.url?this.subConfig.url:`https://${this.config.host}/api/es/sse/v1/subscribe`;let r=this.subConfig.apiKey?this.subConfig.apiKey:this.config.apiKey;this.fabric=this.subConfig.fabric?this.subConfig.fabric:this.config.fabric?this.config.fabric:"_system";let n=this.subConfig.fabric?this.subConfig.fabric:this.config.customerId;this.retrievingInitialData=!1,this.retrieveInitialDataAgain=!1,this.headers={"Content-Type":"application/json",Authorization:`${r}`,"x-customer-id":`${n}`},this.status=s.Closed}flush(){var e;let t=this;this.retrieveTimeout||(this.retrieveTimeout=setTimeout((function(){t.retrieveTimeout=void 0,t.retrievingInitialData?t.retrieveInitialDataAgain=!0:t.flushNow()}),void 0!==(null===(e=this.subConfig)||void 0===e?void 0:e.flushTimeoutMs)?this.subConfig.flushTimeoutMs:this.DEFAULT_FLUSH_TIMEOUT_MS))}flushNow(){let e=this.filtersState.activeNotSentFilters();if(e.length>0){let t=this.filtersState.activeFilters(),i=e.filter((e=>e.initialData===h)).map((e=>e.queries)).reduce(((e,t)=>e.concat(t)),[]);if(this.filtersState.activeFiltersSent(e),i.length){let r=e.filter((e=>e.initialData===h)).some((e=>e.compress));this.retrievingInitialData=!0,this.retrieve(i,r,(()=>{this.retrievingInitialData=!1,this.retrieveInitialDataAgain?(this.retrieveInitialDataAgain=!1,this.flushNow()):this.subscribe(t)}))}else this.subscribe(t)}}connect(){if(this.eventSource)throw Error("SSE connection already opened");this.flush()}retrieve(e,t,i){var r;let n={type:"collection",fabric:this.fabric,filters:{once:h,compress:t?h:u,initialData:h,queries:e}},o=this;this.eventSource?this.eventSource.disconnect():null===(r=this.openListener)||void 0===r||r.call(this,"SSE connection opened"),this.eventSource=new a(this.url,this.headers),this.eventSource.onOpen((e=>{var t;o.status===s.Connecting&&(o.status=s.Open,null===(t=o.openListener)||void 0===t||t.call(o,e))})),this.eventSource.onProperties((e=>{var t;null===(t=o.propertiesListener)||void 0===t||t.call(o,e)})),this.eventSource.onError((e=>{var t;null===(t=o.errorListener)||void 0===t||t.call(o,e,!1)})),this.eventSource.onMessage((t=>{o.handleMessage(t).then((t=>{var r,s;if(t)try{for(let i in t){let t=e.indexOf(i);t>-1&&e.splice(t,1)}e.length||(null===(r=o.eventSource)||void 0===r||r.disconnect(),o.eventSource=void 0,i())}catch(e){null===(s=o.errorListener)||void 0===s||s.call(o,e,!1)}}))})),this.status===s.Closed&&(this.status=s.Connecting),this.eventSource.connect(n)}subscribe(e){var t;let i=e.filter((e=>e.once!==h)).map((e=>e.queries)).reduce(((e,t)=>e.concat(t)),[]);if(!i.length)return;this.eventSource?this.eventSource.disconnect():null===(t=this.openListener)||void 0===t||t.call(this,"SSE connection opened");let r=e.filter((e=>e.once!==h)).some((e=>e.compress)),n={type:"collection",fabric:this.fabric,filters:{once:u,compress:r?h:u,initialData:u,queries:i}},o=this;this.eventSource=new a(this.url,this.headers),this.eventSource.onOpen((e=>{var t;o.status===s.Connecting&&(o.status=s.Open,null===(t=o.openListener)||void 0===t||t.call(o,e))})),this.eventSource.onError((e=>{var t,i;null===(t=o.errorListener)||void 0===t||t.call(o,e,!1),null===(i=o.closeListener)||void 0===i||i.call(o,e)})),this.eventSource.onProperties((e=>{var t;null===(t=o.propertiesListener)||void 0===t||t.call(o,e)})),this.eventSource.onMessage((e=>{o.handleMessage(e)})),this.eventSource.onClose((e=>{var t;this.status===s.Closing&&(this.status=s.Closed,null===(t=o.closeListener)||void 0===t||t.call(o,e))})),this.status===s.Closed&&(this.status=s.Connecting),this.eventSource.connect(n)}onOpen(e){this.openListener=e}onProperties(e){this.propertiesListener=e}onMessage(e){this.messageListener=e}onClose(e){this.closeListener=e}onError(e){this.errorListener=e}getStatus(){return this.status}disconnect(){var e;return this.retrieveTimeout=void 0,!!this.eventSource&&(this.status=s.Closing,null===(e=this.eventSource)||void 0===e||e.disconnect(),this.eventSource=void 0,!0)}getId(){return this.getProperty(i)}getProperty(e){var t;return null===(t=this.eventSource)||void 0===t?void 0:t.getProperty(e)}getProperties(){return this.eventSource?this.eventSource.getProperties():{}}handleMessage(e){return this.tryToDecodeData(e).then((e=>{var t,i;if(!e.error){for(let i in e){let r=e[i],s=this.filtersState.filterForQuery(i);s&&(this.filtersState.increment(s),null===(t=this.messageListener)||void 0===t||t.call(this,i,s,r),this.filtersState.tryToRemove(s,i)&&this.flush())}return e}null===(i=this.errorListener)||void 0===i||i.call(this,e,!0)}))}tryToDecodeData(e){return t=this,i=void 0,s=function*(){return new Promise(((t,i)=>{if(e.startsWith(this.ENCODED_GZ_CONTENT))try{l(e.substring(this.ENCODED_GZ_CONTENT.length)).then((e=>t(JSON.parse(e))))}catch(e){i(e)}else if(e.startsWith(this.FAILED_TO_PARSE_QUERY))t({error:e,code:400});else try{t(JSON.parse(e))}catch(e){i(e)}}))},new((r=void 0)||(r=Promise))((function(e,n){function o(e){try{c(s.next(e))}catch(e){n(e)}}function l(e){try{c(s.throw(e))}catch(e){n(e)}}function c(t){var i;t.done?e(t.value):(i=t.value,i instanceof r?i:new r((function(e){e(i)}))).then(o,l)}c((s=s.apply(t,i||[])).next())}));var t,i,r,s}}class g{constructor(e,t,i){this.querySet=e,this.connection=t,this.filtersState=i}subscribe(e,t,i,r){return this.handleSubscription(e,t,!1,!1,i,r)}retrieveAndSubscribe(e,t,i,r){return this.handleSubscription(e,t,!0,!1,i,r)}retrieve(e,t,i,r){return this.handleSubscription(e,t,!0,!0,i,r)}handleSubscription(e,t,i,r,s,n){let o={query:e,listener:t};return"function"==typeof s?o.errorListener=s:"object"==typeof s&&null!==s&&(n=s),this.filtersState.addQueries([o],i,r,!0===(null==n?void 0:n.compress),this.querySet),this}unsubscribe(e){return this.filtersState.removeQueries([e],this.querySet),this}assemble(){this.connection.flush()}}class S{constructor(e,t){this.connection=e,this.filtersState=t}subscribe(e,t,i,r){this.handleSubscription(e,t,!1,!1,i,r)}retrieveAndSubscribe(e,t,i,r){this.handleSubscription(e,t,!0,!1,i,r)}retrieve(e,t,i,r){this.handleSubscription(e,t,!0,!0,i,r)}handleSubscription(e,t,i,r,s,n){let o={query:e,listener:t};"function"==typeof s?o.errorListener=s:"object"==typeof s&&null!==s&&(n=s),this.filtersState.addQueries([o],i,r,!0===(null==n?void 0:n.compress),this),this.connection.flush()}unsubscribe(e){this.filtersState.removeQueries([e],this),this.connection.flush()}unsubscribeAll(){this.filtersState.removeAllQueries(this),this.connection.flush()}batch(){return new g(this,this.connection,this.filtersState)}}class y{constructor(e,t){this.connectionTypes=["ws"],this.reconnection=-1,this.config=e,this.filtersState=new p(e,t)}connect(){var e;if(this.connection)throw new Error(`Already connected with status: ${this.getStatus()}`);(null===(e=this.config.connectionTypes)||void 0===e?void 0:e.length)&&(this.connectionTypes=this.config.connectionTypes),-1===this.reconnection&&(this.reconnection=0);let t=this.connectionTypes[this.reconnection%this.connectionTypes.length];switch("string"==typeof t?t:t.type){case"ws":let e="string"==typeof t?{type:t}:t;this.connection=new c(this.config,e,this.filtersState);break;case"sse":let i="string"==typeof t?{type:t}:t;this.connection=new v(this.config,i,this.filtersState);break;default:throw new Error(`Connection type not supported: ${t}`)}let i=this;this.connection.onOpen((function(e){let t=i.reconnection;if(i.reconnection=0,-1===t){const t={type:r.Open,connection:i,data:e};i.filtersState.handleGlobalListener(t)}})),this.connection.onProperties((function(e){const t={type:r.Properties,connection:i,data:e};i.filtersState.handleGlobalListener(t)})),this.connection.onMessage((function(e,t,s){let n=s,l=Array.isArray(n);if(l)for(let e=0;e-1){let e=Math.pow(2,6+i.reconnection++);setTimeout((function(){i.connect()}),e)}else{i.reconnection=-1;const t={type:r.Close,connection:i,data:e};i.filtersState.handleGlobalListener(t)}})),this.connection.connect()}flush(){var e;null===(e=this.connection)||void 0===e||e.flush()}disconnect(){var e;return-1!==this.reconnection&&(this.reconnection=-1,null===(e=this.connection)||void 0===e||e.disconnect(),!0)}getConfig(){return this.config}getStatus(){return-1===this.reconnection?s.Closed:this.connection?this.connection.getStatus():s.Connecting}getId(){var e;return null===(e=this.connection)||void 0===e?void 0:e.getId()}getProperty(e){var t;return null===(t=this.connection)||void 0===t?void 0:t.getProperty(e)}getProperties(){return this.connection?this.connection.getProperties():{}}querySet(){return new S(this,this.filtersState)}}function b(e,t){return new y(e,t)}function m(e,t){let i=new y(e,t);return i.connect(),i}return t})())); \ No newline at end of file