From 5d0ffe8ff496cd6e32d63886824029f8e5f8a7d7 Mon Sep 17 00:00:00 2001 From: Shahed Nasser Date: Thu, 9 May 2024 17:23:49 +0300 Subject: [PATCH 1/3] docs: refactored versioning in api reference + modified v2 content (#7274) --- .../api-reference/app/_mdx/{ => v1}/admin.mdx | 14 - .../app/_mdx/{ => v1}/client-libraries.mdx | 0 .../api-reference/app/_mdx/{ => v1}/store.mdx | 3 - www/apps/api-reference/app/_mdx/v2/admin.mdx | 478 +++++++++++++++++ .../app/_mdx/v2/client-libraries.mdx | 20 + www/apps/api-reference/app/_mdx/v2/store.mdx | 495 ++++++++++++++++++ .../api-reference/app/api/[area]/page.tsx | 12 +- .../app/api/[area]/v2/opengraph-image.jpg | Bin 0 -> 259227 bytes .../api-reference/app/api/[area]/v2/page.tsx | 62 +++ .../app/api/[area]/v2/twitter-image.jpg | Bin 0 -> 259227 bytes .../api-reference/components/Navbar/index.tsx | 6 +- .../components/PageHeading/index.tsx | 5 +- .../components/VersionNote/index.tsx | 22 - .../components/VersionSwitcher/index.tsx | 15 +- www/apps/api-reference/middleware.ts | 18 + www/apps/api-reference/providers/version.tsx | 49 +- 16 files changed, 1107 insertions(+), 92 deletions(-) rename www/apps/api-reference/app/_mdx/{ => v1}/admin.mdx (98%) rename www/apps/api-reference/app/_mdx/{ => v1}/client-libraries.mdx (100%) rename www/apps/api-reference/app/_mdx/{ => v1}/store.mdx (99%) create mode 100644 www/apps/api-reference/app/_mdx/v2/admin.mdx create mode 100644 www/apps/api-reference/app/_mdx/v2/client-libraries.mdx create mode 100644 www/apps/api-reference/app/_mdx/v2/store.mdx create mode 100644 www/apps/api-reference/app/api/[area]/v2/opengraph-image.jpg create mode 100644 www/apps/api-reference/app/api/[area]/v2/page.tsx create mode 100644 www/apps/api-reference/app/api/[area]/v2/twitter-image.jpg delete mode 100644 www/apps/api-reference/components/VersionNote/index.tsx create mode 100644 www/apps/api-reference/middleware.ts diff --git a/www/apps/api-reference/app/_mdx/admin.mdx b/www/apps/api-reference/app/_mdx/v1/admin.mdx similarity index 98% rename from www/apps/api-reference/app/_mdx/admin.mdx rename to www/apps/api-reference/app/_mdx/v1/admin.mdx index f1cafbd04e01e..958a9d43b0322 100644 --- a/www/apps/api-reference/app/_mdx/admin.mdx +++ b/www/apps/api-reference/app/_mdx/v1/admin.mdx @@ -1,12 +1,9 @@ import { Feedback, CodeTabs, CodeTab } from "docs-ui" import SectionContainer from "@/components/Section/Container" import formatReportLink from "@/utils/format-report-link" -import VersionNote from "@/components/VersionNote" - - This API reference includes Medusa's Admin APIs, which are REST APIs exposed by the Medusa backend. They are typically used to perform admin functionalities or create an admin dashboard to access and manipulate your commerce store's data. All API Routes are prefixed with `/admin`. So, during development, the API Routes will be available under the path `http://localhost:9000/admin`. For production, replace `http://localhost:9000` with your Medusa backend URL. @@ -135,17 +132,6 @@ You can also pass it to client libraries: - - ### JWT Token Use a JWT token to send authenticated requests. Authentication state is managed by the client, which is ideal for Jamstack applications and mobile applications. diff --git a/www/apps/api-reference/app/_mdx/client-libraries.mdx b/www/apps/api-reference/app/_mdx/v1/client-libraries.mdx similarity index 100% rename from www/apps/api-reference/app/_mdx/client-libraries.mdx rename to www/apps/api-reference/app/_mdx/v1/client-libraries.mdx diff --git a/www/apps/api-reference/app/_mdx/store.mdx b/www/apps/api-reference/app/_mdx/v1/store.mdx similarity index 99% rename from www/apps/api-reference/app/_mdx/store.mdx rename to www/apps/api-reference/app/_mdx/v1/store.mdx index 862f45dd836c3..b5ef864b71e6d 100644 --- a/www/apps/api-reference/app/_mdx/store.mdx +++ b/www/apps/api-reference/app/_mdx/v1/store.mdx @@ -2,12 +2,9 @@ import { Feedback, CodeTabs, CodeTab } from "docs-ui" import SectionContainer from "@/components/Section/Container" import formatReportLink from "@/utils/format-report-link" -import VersionNote from "@/components/VersionNote" - - This API reference includes Medusa's Store APIs, which are REST APIs exposed by the Medusa backend. They are typically used to create a storefront for your commerce store, such as a webshop or a commerce mobile app. All API Routes are prefixed with `/store`. So, during development, the API Routes will be available under the path `http://localhost:9000/store`. For production, replace `http://localhost:9000` with your Medusa backend URL. diff --git a/www/apps/api-reference/app/_mdx/v2/admin.mdx b/www/apps/api-reference/app/_mdx/v2/admin.mdx new file mode 100644 index 0000000000000..44a23dc9430ab --- /dev/null +++ b/www/apps/api-reference/app/_mdx/v2/admin.mdx @@ -0,0 +1,478 @@ +import { Feedback, CodeTabs, CodeTab } from "docs-ui" +import SectionContainer from "@/components/Section/Container" +import formatReportLink from "@/utils/format-report-link" + + + + + +Medusa v2.0 is in development and not suitable for production +environments. As such, the API reference is incomplete and subject to +change, so please use it with caution. + + + +This API reference includes Medusa's Admin APIs, which are REST APIs exposed by the Medusa application. They are used to perform admin functionalities or create an admin dashboard to access and manipulate your commerce store's data. + +All API Routes are prefixed with `/admin`. So, during development, the API Routes will be available under the path `http://localhost:9000/admin`. For production, replace `http://localhost:9000` with your Medusa application URL. + + + + + + + +## Authentication + +There are three ways to send authenticated requests to the Medusa server: Using an admin user's API token, using a JWT token in a bearer authorization header, or using a cookie session ID. + +### Bearer Authorization with JWT Tokens + +Use a JWT token in a request's bearer authorization header to send authenticated requests. Authentication state is managed by the client, which is ideal for Jamstack applications and mobile applications. + +#### How to Obtain the JWT Token + +{/* TODO add correct link to auth route */} + +JWT tokens are obtained by sending a request to the authentication route passing it the user's email and password in the request body. + +For example: + +```bash +curl -X POST '{backend_url}/auth/admin/emailpass' \ +-H 'Content-Type: application/json' \ +--data-raw '{ + "email": "user@example.com", + "password": "supersecret" +}' +``` + +If authenticated successfully, an object is returned in the response with the property `token` being the JWT token. + +#### How to Use the JWT Token + +Pass the JWT token in the authorization bearer header: + + +```bash +Authorization: Bearer {jwt_token} +``` + +--- + +### API Token + +Use a user's API Token to send authenticated requests. + + + +This authentication method relies on using another authentication method first, as you must be an authenticated user to create an API token. + + + +#### How to Create an API Token for a User + +Use the [Create API Key API Route](#api-keys_postapikeys) to create an API token: + +```bash +curl --location 'localhost:9000/admin/api-keys' \ +--header 'Content-Type: application/json' \ +--header 'Authorization: Bearer {jwt_token}' \ +--data '{ + "title": "my token", + "type": "secret" +}' +``` + +{/* TODO add a link to the API key object */} + +An `api_key` object is returned in the response. You need its `token` property. + +#### How to Use the API Token + + +The API token can be used by providing it in a basic authorization header: + +```bash +Authorization: Basic {api_key_token} +``` + +--- + +### Cookie Session ID + +When you authenticate a user and create a cookie session ID for them, the cookie session ID is passed automatically when sending the request from the browser, or with tools like Postman. + +### How to Obtain the Cookie Session + +To obtain a cookie session ID, you must have a [JWT token for bearer authentication](#bearer-authorization-with-jwt-tokens). + +{/* TODO add a link to the session authentication route. */} + +Then, send a request to the session authentication API route. To view the cookie session ID, pass the `-v` option to the `curl` command: + +```bash +curl -v -X POST '{backend_url}/auth/session' \ +--header 'Authorization: Bearer {jwt_token}' +``` + + +The headers will be logged in the terminal as well as the response. You +should find in the headers a Cookie header similar to this: + + +```bash +Set-Cookie: connect.sid=s%3A2Bu8BkaP9JUfHu9rG59G16Ma0QZf6Gj1.WT549XqX37PN8n0OecqnMCq798eLjZC5IT7yiDCBHPM; +``` + +#### How to Use the Cookie Session ID in cURL + +Copy the value after `connect.sid` (without the `;` at the end) and pass +it as a cookie in subsequent requests as the following: + + +```bash +curl '{backend_url}/admin/products' \ +-H 'Cookie: connect.sid={sid}' +``` + + +Where `{sid}` is the value of `connect.sid` that you copied. + +#### Including Credentials in the Fetch API + +If you're sending requests using JavaScript's Fetch API, you must pass the `credentials` option +with the value `include` to all the requests you're sending. For example: + +```js +fetch(`/admin/products`, { + credentials: "include", +}) +``` + + + + + + + +## HTTP Compression + +If you've enabled HTTP Compression in your Medusa configurations, and you +want to disable it for some requests, you can pass the `x-no-compression` +header in your requests: + +```bash +x-no-compression: true +``` + + + + + + + +## Select Fields and Relations + +Many API Routes accept a `fields` query that allows you to select which fields and relations should be returned in a record. + + + + +When you pass the `fields` query, only specified fields and relations, along with the `id`, are retrieved in the result. + + + +### Select Multiple Fields + +Separate the fields and relations you want to select with a comma. + +For example: + +```bash +curl 'localhost:9000/admin/products?fields=title,handle' \ +-H 'Authorization: Bearer {jwt_token}' +``` + +This returns only the `title` and `handle` fields of a product. + +### Select Relations + +To select a relation, pass to `fields` the relation name prefixed by `.*`. For example: + +```bash +curl 'localhost:9000/admin/products?fields=variants.*' \ +-H 'Authorization: Bearer {jwt_token}' +``` + +This returns the variants of each product. + +### Select Fields in a Relation + +The `.*` suffix selects all fields of the relation's data model. + +To select a specific field, change the `*` to the field's name. + +To specify multiple fields, pass each of the fields with the `.` format, separated by a comma. + +For example: + +```bash +curl 'localhost:9000/admin/products?fields=variants.title,variants.sku' \ +-H 'Authorization: Bearer {jwt_token}' +``` + +This returns the variants of each product, but the variants only have their `id`, `title`, and `sku` fields. The `id` is always included. + + + + + +## Query Parameter Types + + +This section covers how to pass some common data types as query parameters. + + +### Strings + + +You can pass a string value in the form of `=`. + + +For example: + + +```bash +curl "http://localhost:9000/admin/products?title=Shirt" \ +-H 'Authorization: Bearer {jwt_token}' +``` + + +If the string has any characters other than letters and numbers, you must +encode them. + + +For example, if the string has spaces, you can encode the space with `+` or +`%20`: + + +```bash +curl "http://localhost:9000/admin/products?title=Blue%20Shirt" \ +-H 'Authorization: Bearer {jwt_token}' +``` + + +You can use tools like [this one](https://www.urlencoder.org/) to learn how +a value can be encoded. + + +### Integers + + +You can pass an integer value in the form of `=`. + + +For example: + + +```bash +curl "http://localhost:9000/admin/products?offset=1" \ +-H 'Authorization: Bearer {jwt_token}' +``` + + +### Boolean + + +You can pass a boolean value in the form of `=`. + + +For example: + + +```bash +curl "http://localhost:9000/admin/products?is_giftcard=true" \ +-H 'Authorization: Bearer {jwt_token}' +``` + + +### Date and DateTime + + +You can pass a date value in the form `=`. The date +must be in the format `YYYY-MM-DD`. + + +For example: + + +```bash +curl -g "http://localhost:9000/admin/products?created_at[lt]=2023-02-17" \ +-H 'Authorization: Bearer {jwt_token}' +``` + + +You can also pass the time using the format `YYYY-MM-DDTHH:MM:SSZ`. Please +note that the `T` and `Z` here are fixed. + + +For example: + + +```bash +curl -g "http://localhost:9000/admin/products?created_at[lt]=2023-02-17T07:22:30Z" \ +-H 'Authorization: Bearer {jwt_token}' +``` + + +### Array + + +Each array value must be passed as a separate query parameter in the form +`[]=`. You can also specify the index of each +parameter in the brackets `[0]=`. + + +For example: + + +```bash +curl -g "http://localhost:9000/admin/products?sales_channel_id[]=sc_01GPGVB42PZ7N3YQEP2WDM7PC7&sales_channel_id[]=sc_234PGVB42PZ7N3YQEP2WDM7PC7" \ +-H 'Authorization: Bearer {jwt_token}' +``` + + +Note that the `-g` parameter passed to `curl` disables errors being thrown +for using the brackets. Read more +[here](https://curl.se/docs/manpage.html#-g). + + +### Object + + +Object parameters must be passed as separate query parameters in the form +`[]=`. + + +For example: + + +```bash +curl -g "http://localhost:9000/admin/products?created_at[lt]=2023-02-17&created_at[gt]=2022-09-17" \ +-H 'Authorization: Bearer {jwt_token}' +``` + + + + + + + +## Pagination + +### Query Parameters + + +In listing API Routes, such as list customers or list products, you can control the pagination using the query parameters `limit` and `offset`. + + +`limit` is used to specify the maximum number of items to be returned in the response. `offset` is used to specify how many items to skip before returning the resulting records. + + +Use the `offset` query parameter to change between pages. For example, if the limit is `50`, at page `1` the offset should be `0`; at page `2` the offset should be `50`, and so on. + + +For example: + +```bash +curl "http://localhost:9000/admin/products?limit=5" \ +-H 'Authorization: Bearer {jwt_token}' +``` + + +### Response Fields + + +In the response of listing API Routes, aside from the records retrieved, +there are three pagination-related fields returned: + + +- `limit`: the maximum number of items that can be returned in the response. +- `offset`: the number of items that were skipped before the records in the result. +- `count`: the total number of available items of this data model. It can be used to determine how many pages are there. + + +For example, if the `count` is `100` and the `limit` is `50`, divide the +`count` by the `limit` to get the number of pages: `100/50 = 2 pages`. + + +### Sort Order + + +The `order` field (available on API Routes that support pagination) allows you to +sort the retrieved items by a field of that item. + +For example, pass the query parameter `order=created_at` to sort products by their `created_at` field: + +```bash +curl "http://localhost:9000/admin/products?order=created_at" \ +-H 'Authorization: Bearer {jwt_token}' +``` + +By default, the sort direction is ascending. To change it to +descending, pass a dash (`-`) before the field name. + +For example: + +```bash +curl "http://localhost:9000/admin/products?order=-created_at" \ +-H 'Authorization: Bearer {jwt_token}' +``` + + +This sorts the products by their `created_at` field in the descending order. + + + + \ No newline at end of file diff --git a/www/apps/api-reference/app/_mdx/v2/client-libraries.mdx b/www/apps/api-reference/app/_mdx/v2/client-libraries.mdx new file mode 100644 index 0000000000000..b85d8aaea3255 --- /dev/null +++ b/www/apps/api-reference/app/_mdx/v2/client-libraries.mdx @@ -0,0 +1,20 @@ +import Space from "@/components/Space" +import DownloadFull from "@/components/DownloadFull" + +### Just Getting Started? + +Check out the [quickstart guide](https://docs.medusajs.com/create-medusa-app). + + + + + +Support for v2 API Routes is coming soon in Medusa JS Client and Medusa React. + + + +### Download Full Reference + +Download this reference as an OpenApi YAML file. You can import this file to tools like Postman and start sending requests directly to your Medusa backend. + + \ No newline at end of file diff --git a/www/apps/api-reference/app/_mdx/v2/store.mdx b/www/apps/api-reference/app/_mdx/v2/store.mdx new file mode 100644 index 0000000000000..277eab62e9974 --- /dev/null +++ b/www/apps/api-reference/app/_mdx/v2/store.mdx @@ -0,0 +1,495 @@ + +import { Feedback, CodeTabs, CodeTab } from "docs-ui" +import SectionContainer from "@/components/Section/Container" +import formatReportLink from "@/utils/format-report-link" + + + + + +Medusa v2.0 is in development and not suitable for production +environments. As such, the API reference is incomplete and subject to +change, so please use it with caution. + + + +This API reference includes Medusa's Store APIs, which are REST APIs exposed by the Medusa application. They are used to create a storefront for your commerce store, such as a webshop or a commerce mobile app. + +All API Routes are prefixed with `/store`. So, during development, the API Routes will be available under the path `http://localhost:9000/store`. For production, replace `http://localhost:9000` with your Medusa application URL. + + + + + + + +## Authentication + +There are two ways to send authenticated requests to the Medusa application: Using a JWT token or using a Cookie Session ID. + +### Bearer Authorization with JWT Tokens + +Use a JWT token in a request's bearer authorization header to send authenticated requests. Authentication state is managed by the client, which is ideal for Jamstack applications and mobile applications. + +#### How to Obtain the JWT Token + +{/* TODO add correct link to auth route */} + +JWT tokens are obtained by sending a request to the authentication route passing it the customer's email and password in the request body. + +For example: + +```bash +curl -X POST '{backend_url}/auth/store/emailpass' \ +-H 'Content-Type: application/json' \ +--data-raw '{ + "email": "user@example.com", + "password": "supersecret" +}' +``` + + + +{/* TODO add link to implementing login with google guide. */} + +Alternatively, you can use the `google` provider instead of `emailpass`. + + + +If authenticated successfully, an object is returned in the response with the property `token` being the JWT token. + +#### How to Use the JWT Token + +Pass the JWT token in the authorization bearer header: + + +```bash +Authorization: Bearer {jwt_token} +``` + +--- + +### Cookie Session ID + +When you authenticate a customer and create a cookie session ID for them, the cookie session ID is passed automatically when sending the request from the browser, or with tools like Postman. + +### How to Obtain the Cookie Session + +To obtain a cookie session ID, you must have a [JWT token for bearer authentication](#bearer-authorization-with-jwt-tokens). + +{/* TODO add a link to the session authentication route. */} + +Then, send a request to the session authentication API route. To view the cookie session ID, pass the `-v` option to the `curl` command: + +```bash +curl -v -X POST '{backend_url}/auth/session' \ +--header 'Authorization: Bearer {jwt_token}' +``` + + +The headers will be logged in the terminal as well as the response. You +should find in the headers a Cookie header similar to this: + + +```bash +Set-Cookie: connect.sid=s%3A2Bu8BkaP9JUfHu9rG59G16Ma0QZf6Gj1.WT549XqX37PN8n0OecqnMCq798eLjZC5IT7yiDCBHPM; +``` + +#### How to Use the Cookie Session ID in cURL + +Copy the value after `connect.sid` (without the `;` at the end) and pass +it as a cookie in subsequent requests as the following: + + +```bash +curl '{backend_url}/store/products' \ +-H 'Cookie: connect.sid={sid}' +``` + + +Where `{sid}` is the value of `connect.sid` that you copied. + +#### Including Credentials in the Fetch API + +If you're sending requests using JavaScript's Fetch API, you must pass the `credentials` option +with the value `include` to all the requests you're sending. For example: + +```js +fetch(`/store/products`, { + credentials: "include", +}) +``` + + + + + + + +## Publishable API Key + +Publishable API Keys allow you to send a request with a pre-defined scope. You can associate the +publishable API key with one or more resources, such as sales channels, then include the publishable +API key in the header of your requests. + +The Medusa application will infer the scope of the current +request based on the publishable API key. At the moment, publishable API keys only work with sales channels. + +It's highly recommended to create a publishable API key and pass it in the header of all your requests to the +store APIs. + +{/* TODO add link to the v2 guide */} + +{/* You can learn more about publishable API keys and how to use them in [this documentation](https://docs.medusajs.com/development/publishable-api-keys/). */} + +### How to Create a Publishable API Key + +{/* TODO add v2 links */} + +Create a publishable API key either using the admin REST APIs, or using the Medusa Admin. + +### How to Use a Publishable API Key + +You can pass the publishable API key in the header `x-publishable-api-key` in all your requests to the store APIs: + +```bash +x-publishable-api-key: {your_publishable_api_key} +``` + + + + + + + +## HTTP Compression + +If you've enabled HTTP Compression in your Medusa configurations, and you +want to disable it for some requests, you can pass the `x-no-compression` +header in your requests: + +```bash +x-no-compression: true +``` + + + + + + + +## Select Fields and Relations + +Many API Routes accept a `fields` query that allows you to select which fields and relations should be returned in a record. + + + + +When you pass the `fields` query, only specified fields and relations, along with the `id`, are retrieved in the result. + + + +### Select Multiple Fields + +Separate the fields and relations you want to select with a comma. + +For example: + +```bash +curl 'localhost:9000/store/products?fields=title,handle' \ +-H 'Authorization: Bearer {jwt_token}' +``` + +This returns only the `title` and `handle` fields of a product. + +### Select Relations + +To select a relation, pass to `fields` the relation name prefixed by `.*`. For example: + +```bash +curl 'localhost:9000/store/products?fields=variants.*' \ +-H 'Authorization: Bearer {jwt_token}' +``` + +This returns the variants of each product. + +### Select Fields in a Relation + +The `.*` suffix selects all fields of the relation's data model. + +To select a specific field, change the `*` to the field's name. + +To specify multiple fields, pass each of the fields with the `.` format, separated by a comma. + +For example: + +```bash +curl 'localhost:9000/store/products?fields=variants.title,variants.sku' \ +-H 'Authorization: Bearer {jwt_token}' +``` + +This returns the variants of each product, but the variants only have their `id`, `title`, and `sku` fields. The `id` is always included. + + + + + + + +## Query Parameter Types + + +This section covers how to pass some common data types as query parameters. +This is useful if you're sending requests to the API Routes and not using +our JS Client. For example, when using cURL or Postman. + + +### Strings + + +You can pass a string value in the form of `=`. + + +For example: + + +```bash +curl "http://localhost:9000/store/products?title=Shirt" +``` + + +If the string has any characters other than letters and numbers, you must +encode them. + + +For example, if the string has spaces, you can encode the space with `+` or +`%20`: + + +```bash +curl "http://localhost:9000/store/products?title=Blue%20Shirt" +``` + + +You can use tools like [this one](https://www.urlencoder.org/) to learn how +a value can be encoded. + +### Integers + +You can pass an integer value in the form of `=`. + + +For example: + + +```bash +curl "http://localhost:9000/store/products?offset=1" +``` + + +### Boolean + + +You can pass a boolean value in the form of `=`. + + +For example: + + +```bash +curl "http://localhost:9000/store/products?is_giftcard=true" +``` + + +### Date and DateTime + + +You can pass a date value in the form `=`. The date +must be in the format `YYYY-MM-DD`. + + +For example: + + +```bash +curl -g "http://localhost:9000/store/products?created_at[lt]=2023-02-17" +``` + + +You can also pass the time using the format `YYYY-MM-DDTHH:MM:SSZ`. Please +note that the `T` and `Z` here are fixed. + + +For example: + + +```bash +curl -g "http://localhost:9000/store/products?created_at[lt]=2023-02-17T07:22:30Z" +``` + + +### Array + + +Each array value must be passed as a separate query parameter in the form +`[]=`. You can also specify the index of each +parameter in the brackets `[0]=`. + + +For example: + + +```bash +curl -g "http://localhost:9000/store/products?sales_channel_id[]=sc_01GPGVB42PZ7N3YQEP2WDM7PC7&sales_channel_id[]=sc_234PGVB42PZ7N3YQEP2WDM7PC7" +``` + + +Note that the `-g` parameter passed to `curl` disables errors being thrown +for using the brackets. Read more +[here](https://curl.se/docs/manpage.html#-g). + + +### Object + + +Object parameters must be passed as separate query parameters in the form +`[]=`. + + +For example: + + +```bash +curl -g "http://localhost:9000/store/products?created_at[lt]=2023-02-17&created_at[gt]=2022-09-17" +``` + + + + + + + +## Pagination + + +### Query Parameters + + +In listing API Routes, such as list products, you can control the pagination using the query parameters `limit` and `offset`. + + +`limit` is used to specify the maximum number of items to be returned in the response. `offset` is used to specify how many items to skip before returning the resulting records. + + +Use the `offset` query parameter to change between pages. For example, if the limit is `50`, at page `1` the offset should be `0`; at page `2` the offset should be `50`, and so on. + + +For example: + +```bash +curl "http://localhost:9000/store/products?limit=5" \ +-H 'Authorization: Bearer {jwt_token}' +``` + + +### Response Fields + + +In the response of listing API Routes, aside from the records retrieved, +there are three pagination-related fields returned: + + +- `limit`: the maximum number of items that can be returned in the response. +- `offset`: the number of items that were skipped before the records in the result. +- `count`: the total number of available items of this data model. It can be used to determine how many pages are there. + + +For example, if the `count` is `100` and the `limit` is `50`, divide the +`count` by the `limit` to get the number of pages: `100/50 = 2 pages`. + + +### Sort Order + + +The `order` field (available on API Routes that support pagination) allows you to +sort the retrieved items by a field of that item. + +For example, pass the query parameter `order=created_at` to sort products by their `created_at` field: + +```bash +curl "http://localhost:9000/store/products?order=created_at" \ +-H 'Authorization: Bearer {jwt_token}' +``` + +By default, the sort direction is ascending. To change it to +descending, pass a dash (`-`) before the field name. + +For example: + +```bash +curl "http://localhost:9000/store/products?order=-created_at" \ +-H 'Authorization: Bearer {jwt_token}' +``` + + +This sorts the products by their `created_at` field in the descending order. + + + + \ No newline at end of file diff --git a/www/apps/api-reference/app/api/[area]/page.tsx b/www/apps/api-reference/app/api/[area]/page.tsx index 512589b374e77..d8dba1ece4097 100644 --- a/www/apps/api-reference/app/api/[area]/page.tsx +++ b/www/apps/api-reference/app/api/[area]/page.tsx @@ -1,7 +1,7 @@ import AreaProvider from "@/providers/area" -import AdminDescription from "../../_mdx/admin.mdx" -import StoreDescription from "../../_mdx/store.mdx" -import ClientLibraries from "../../_mdx/client-libraries.mdx" +import AdminContentV1 from "../../_mdx/v1/admin.mdx" +import StoreContentV1 from "../../_mdx/v1/store.mdx" +import ClientLibrariesV1 from "../../_mdx/v1/client-libraries.mdx" import Section from "@/components/Section" import Tags from "@/components/Tags" import type { Area } from "@/types/openapi" @@ -25,11 +25,11 @@ const ReferencePage = async ({ params: { area } }: ReferencePageProps) => { mainContent={
- {area.includes("admin") && } - {area.includes("store") && } + {area.includes("admin") && } + {area.includes("store") && }
} - codeContent={} + codeContent={} className="flex-col-reverse" /> diff --git a/www/apps/api-reference/app/api/[area]/v2/opengraph-image.jpg b/www/apps/api-reference/app/api/[area]/v2/opengraph-image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c56693dc376340b920320da3184b1681d6851d06 GIT binary patch literal 259227 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

i zomICB5xYWihlJ72PsY#jy7v1R+a{~4VOWR~TcpM^**4~y_3zH~B^L9mQ;5er>O|NC zTotJ3ODm}@QEZFOCzEZCIHxif3drqi;;PzR2yM{G{+8gv9E?||g3fq?Y%*zHN(&PB zE8?akpIa-!>0Wv5_iFy2k1gKRNJfA!(k9WUqGSbl7=?|*vm8T4XOSOZhzX>XZ`>=1 z^#<>S_u6<-AHyis-vwC=!cpLHHY`Mj^j@Nc1JWVn5aT014DhFp;z&6F#~F-tOVRhi z?PY@TP15RUPii{VlIO#3WBmR67_5Ca{Oxix9Tukwk=<*R#&IZ`UzvwNVeFbT z=S^z2#N2v3iE^}El1Tvq+(cB`1+)Rk@t+VPe~8Ubk8OOB(to5Yy;kz(MuI|F7fUvq zX+-ezFjDDbbW~}lXFDJKq4mt-T55ikd%3V2@)Eo*WgiQxOuEDF4pT!Rp{MimK>S+x zJP2P7BSFox+)8JqM~B2M8|W30^R3p{0C5Zp=Zl>Hpjn^9M?gKKBr(iIEwyLz7JO_j zNngK$r>DziMHyzSkcn_{E#3;!(6T{W{?Vp!ppG90`#HIVvzFI7GgQ!*1iAki9)LGl zEfcKKg}yS{w+=lfNp~gE04^-h%^IH3%2&cY0TxrBhDy%o`zTr?YT4-INinA~=K3Zy z37Ti8kRtMV+J%->;W5rRuqiM%*L)WeZ(7+tS)W!f%(sU=7P{L&YEeb>B8W+Y-jsfm0JS6@E>IbKW6IF`ZDVw&vr-WImoYwpK+f zgTxesCn*;xm95i&cv83St;}>$s(^^6o5DADuOQjXOb$%Pttn#Cif!iJ_Eto`LyE=& zXx2(9x0a9dF(AbxfstFs-;E=c05@MZZgRa+WFyUF!in4!^MKq$kJ=7M93p%!SOJC{ zqL9mZNboGe8+33!q@h+)&$X_+uBeb#|G-_89Q<22g;k7OEx5taOeSKCFRT-tMC`UY!*8UJ-sI6oYXgG4A855XEUUb_2xch)@)6^( zsN_;sul+zd22=`A__(s|we&GfFuQgf6$UD67$U~UfFl1eEybV#^#6~#HxGz8kN?Nt z)1(n;9HFSDRg`00wX6G`wJUd7th+&MIV*{jdJiE-8s)ZXB9t>nl%odGL^M$=gsDcR zWOU3_bG+y6_k2&+OwQf!em>vt@1M0(&HH%0p7-ndd_0n+c>(unoJrnX#^{#X_W!uu z0U>?ha#6;46AW7i(P{EmBNRi`?XE)R|-O9H6HghrY{~1kTDW>Qw2K&@1KTqSbffE6JtM;7t_KJNClJ&Z zqB0kBY7v~ELnWwHvHl~&@$ZZj6qjuob$y|lJzSvTCeVL>0VQBGN#?0z#CPCXr$Jp8 z2YN0OV>nmCJ)UaOj5oglFqg}#Rl!0)=&!5Zmc@7`XzU6pQhuNei~kK7^|?H%c{_eE zQDICGz+6V9oDADap8_0#;7sk12Q91f{ecd-Csl6UdN$(xQh{-UxVpfi=``(|c-m_1 zqduz8+7IpB`RXT%JF{*?u>->kXj&i}OiGd~po{$L36y?sC=Vziv0Td(a}BTfMYCgL zVxOST5+0?3O|wi&dDGr{B&}V=|s}!SK6tag6ZwhCg0vie)oQMW8Uk7MK!<{5W7Zn6hfah!JmxXw*4;gV36TWmU9*4}M4WSl?(3dVnk~TAFpy%2>W}Ue?LMHI-rmf{aF<;+wf> zGl3aW9U7{N&|EYZz`vq7BAiyIu1`5b?>ke{83K}~6I~!W6sT@MEU*lz1hJqE^TO*D z-H1?c=*ZJUZHu3_GZRhHb)eQ7zlH&0Mt*`}L}?>_4=w=9>jw>I&9W78K18Izwqhfq zk7-xt$(wYr#xXv&DzlI*QDmbRxgRVcEJ2e_u7{5JxORb#^FU`I$}x}U5Q$G%=Dmwj zR;)G2LvtE55hq)HM*uMxVz#C#@-oC3imk&S{sL=|W=DCZdB)ggKuMALPrg>^Y66vT zKcbYY#N5nJspSj+h8#In1^63J-B6EAd$A(QA9F+|nTON@z&x2lX{w?#x6B>C-Lx2X zh#-=R7P|_bH=Sl3%#FaWuYoN1rKDYLhSD*IWE82-*Iki$WG&AuSSqx36-+>uH2I2u z%JJt7q4|J$i0>>ps6(pd(!q34NSe4gjehG$e7iJHS+rZ?W^uTSlKzO}HLk3@TI=1kT3| zS{dp9?~@_X15k4|32Ht{6QDfR;7F*jk^pLrqrsKnrRe$V92A-Wi)usI{Akc>#KhCF zVrUHWq?CHdA)`oRs;(s%-f5@d&H8Qt%VLV{M9Z^?*W3o^8101RLh0i=SkXt#eT1I~ z8o6ht*bd12o4@4fu@#fRNl>~UA;_nlZZU2;-cbf&bZF^a$V@Ur6|#DsvC42YoHVJR zs-S3sI&Z!Bdh9M+9)Z1tFlB`=qE!!CZvv9}gk`xzR8#1;BrH{)RbVbt??3_K5(M=S1ldCjurEW#|hL=vAvtu{r{knqdyaM zgJO9-o1c;f2~`C^VSJ^O(}4>8l=42vK?4eeyC`wGE!O?wA^ARVSa~=0}z^6LEgFf}^vfWI=d3vAK}|-dU|i%c^%F z-lkM3P+6O^NUhbZhWb>Zb#Pd|g4=KcSMSgPIQl)xcX$t=ks69k z>BsiNavG|mpPSJ7wUq9ud^`xkf37kd5_?A^OZ%vNz|^QU4MGXu#Y4k;Xeu)tDKqbK z>dGOUL6yI-+S?hB2RNeSl)H5wB*o?C>8dd0YKQkN;a;RdVQXEYNG=qWNR7ErWh)fftxKaJCIzof5`D<2qm@nmLFfMdS zeP!`EWRy9P-uMRElI@TjR3;FaIuHOytC1cF+clhz*P36kZ2;F%dg5)cOvSpUW;QV zkZzypk)$3FNb(#56+yz<_inm{EpP7G0k%4V=l~>85i%eeMxU~Vw3rbnV1-C4i&JQ| zDi=tpT7KMYUB1{dMBTfXED4f^6gW!5(9-tNTl4$aFoj)(#Nox5fGZ*bp0I{h zFzZ0TSD<85pgI)mL~*gvSxBJ#8e*PiZw*Zj<$#e=K6jFLQOt+HBABy)BE41}S1)`I z06Q0x`+F`W&1tuU9$d>uwCFECd62LkV#0O+A)c`4F&^|2IWzBOUBM z!4XBcbxs8`K?jwiBnFUROX5$m%u+F^5+9Jktd&p^&PjRa+pefthC|hSc(t<0+&TXM z@5xZEf%iO&h&2;AvZ0Yk^UFPf49Le0)MbZ-_#}%-x(VoPp&qHXehs8yjy`EqtE!2R z9mrDMAaxIry;jG;8V;P5zJ;2!zq*b!y=`CBBCogaKK~+ka!!GnuZ~L+Dl$XSRdNS- ztu9S}NzEm!u!nt#G8Foo!0 zHBC;(ZNlgParAQs*O%UkeAXk8MiU^N@SjQ+I2{@oiNO_2xYMb|+5uemNk)3oE%i`oV)BQB9#lkAI4rU)# zavSy`eMaFoLGT%>Gj4rbmWnbcY7IUv+cl2JaNXQC2-=b)X^zf3tMS3_a>abGWXaU) zQ=vX}Bj|$%_vk(CgMb7d9OYLL5GW*^J;<>IF}*0>m%2{7qE#45%x*Nn*PGuI zRkRy->O^yf-e;Mx7OI)mK=?OWLBM%=a~|C;&cpv*F^Z|bDO|7-(pq(Jw|k6wGewoR zA0f^*3?UelD&XCDsS_T7qnuXbu9kvU{Rjw$BG|!oDhTq(Rwn3`KFC&G$H-i>W$Rjn zT^%OblfBrlH~>tCZ6O*twOJFW2QEeTguTK@GPA=74fybb}eeVOADE!&*1vrb!d6;@9Uo zGIcG}!Ov7xL3!Ypu|S3>H*0_4T?e>KuZT2e5(Dr_pgTdMslWg=z;YW^H!$%%WX&6M z53?H^>xFeF+rzDSoKR~8VEuGVh3u(BSSI%=%fYXkL0A-41Q{tPc`_vvJYD;9;ij*z z&(H|IHFdfD)!YA$&aAyJiasK`Xd=4mdb6pSkzyLh?em$gZHjwcg8t0PD4|OrEIKDw zlN_t3$T?ZT;WJ9zbZPq;W8^;2`E;-8ndk`TmeTtOeUkajz+$u83HrX;n*t=NUt-zG zBJaa|1Ch>fTB*EIv(d55xKnbAT#pdcl$5&01OwG?mln>e>-ksB%7pOKFg@~i>n)c% z>z3?d0i(x9q+$`vaS&;a^?RdJ9O~bNXR0p8@Qo<_HC7Lj&S=&824Rvpk--l~nj#wq zkM8!vmNIGwO?VUP5Jd-0lo;q}nuZh%Tb-O$ablxt9-xhBTm))M5+WS3&?qeapt$ge zkD@`75RginyV8XSTyVXV^45l$ ze;~p28A!3Disv__P;1m(-w5+^;US9JJ(Z6%%UA0K(MzWN9M=(b4tO~sOLge5)il{b zMx7lcrj(~MFc4obz>A-p~#g!$*YXsckP+m$FS_>2bo1&NrPII9xjZweA?%U+YmzH)B_$ zm|qWE+#_-PrDR>dpJV3MjT|O&GyBZ(W|N|nBuRz&4e#u$s%4(E-eo-VC3~57FFyLg z>=rz@YSD^tOKT&fx?|3F4nS<9*KKL7cmHfn~>f^Wv#LN`Kvzw|g9IwdK+o7o{W5haY1(?a->$w@E%!3>f$F zGFL{8=^JAm!y?}A>T?P&^LxN@9JbZ=*vn-NciAInt#~{7<%t_Ftv1uW1I^)TE+H%+ zcgr%OnDZq#7Zl7RhqAdF*mHUNF&CX~Kz@j!W2)ge&;gQ~`WV@oY6$b_gJkTHc8cjF z)6hCw`mb?nrlCDRi?qT1P_M8*UdFtg*z@=U*hKR+t7#khZswnKKZk^zYtfG%Ou(yT z`0Dga=Xu4)DM7`_w)>y8vPk-mvMqxSNpom|=)tEBVwY|2>=YdJwc=4TkcGhu3&*cB z5BC{2k3Q98_oz3E=O9(vfW(%22&^R1Z$TLPLjit71qt>imPWl1K)l{}VC>(t*VFg0 zA3x}T%7o!wg$V!a+(8n}KF9X^sktTXf7jpZh<8zng{ZQU0J?+Us>3Bv3RGx5!Qj^w3?{WtdYuw`rYvAQxi#)J=82cXFbAh{GA%L3%%^IHL zKyaFS4)l!zaQ23J3#qiS@^wpbs@3M|-8en;tv%zED{CE0o^E`E{ONSa_+oW_h+!69 z@0^cBdoRdJoBGa)Ey4-v4$8g$&RuhJZwGg0a2%RcUJ3b>+M@K z|6wrI!e8GZ+bA$LWVIf2d>ikX@Mp|%XP*QqH32rMg3?gbW#!08H^uf#@~8t#_o{&V zWfO&GM0q|spy$Iylv@7WzkneM_#-wb~76?&3zl4L2QbXho$mC@DjY4?dOudFnzSu%9xi}cg}|k?=jBQ zm`BY4YCQu!$QW2sdKFMrwzIk&ebRTlu(dj;zVY+v>#Xa{##0Bd?2G@}dhO8LRci8% z=_Gl_sayB0golv>Q!@8Vxw-Yjh#R@~Yw~nsE@T~bx#U`T`^D|KG~)z1^J3=JLW|kr z;|9l(+?dP(A7Y2DKIc0tv_cFCK4p>rQ(>wiOVLdBs=?KCazqzkVM8yd)hGnP>^J!jv20$eNfeZen9mtdl( z2P4ODJklL;{s6rXs}`pR?BaF0mh-Du&(YNz@7tR!ngVr~mDa!iHJ-ak(JlS%UFXFm z6MO8sG}goZWm37l)4ahY`*c_?!pVi=pXM&UetECs@V@!G`)^V5MlRkP!1prVkTbjE zB1(9hvGWIOh_cOP(7geyn?T-IfIG2TPsDuQ&54WOx1w=o?6$|FpB>Vh%}Mn?IeMK{ z^bs5Rk<&W2sJE`{nzEAV8LwEF_Q=A$*Sd}iM_;wSeJk(p@@>?>{Tp<$S%aUw%Ggyn z)5i8fX@NbxuYZMyeNII)cTT~NLrXHYklZ=c)wP*F!v>H4gArqT3ih{Go07Hawy6;( zNnQ#3e;rJ*_^{yWq9U_h$R9T|(k^T{neKm@^5Ujn%nhsM*}{TnhO<}@kq_nGj3wU9 zJ!C)BfBTVbLa%PLDIj|Li${pgal#nbTb9D(K9aYYV) zI)_qnyHe~ZJ&1rCdl0W9b1MBPN?sa1e#k5rV`4w1T<>y`Iv>hDIX2!YSOMTfW8v8UgmE z!c*_hQ>SKE_Bt1|eo*$#xb3_DJS4yCpJecUHSHMt(1T-_J!$+G*-1aABzuGnFMhk* za;MYg;myoUb$2P(a$PCjZu-ZU1upHgB|~Z%uzg$XNdNv@vY&ff)B5g>I~Q^BPNx1m zPa1dW^|<(RD-Qgz`s}t_ev>v185*KihKQoAjFG*5F=qL;lqG?=l$l$kfI0VW=C2d$ zsE3B^??B!ZqYZg8C<`bhimNAn zK8LwTvzG4NXu6<$(RRIO!fDxSlXJW3iH68J>_SE_S=%sk#7m33J7Wg;n;EO=w?^O2 zLY~dhih;oDy(09D&jup0E2WndU3n zr-3%4Tn>KuGHYqK{XQi5Rv_oYF||nvvNAY~l=uyeuPYlb0E?2b)}nN#fO_h~-FPWd zJa_ArIO{2EIft4kltjs(p8f&A2ljL0i1}mtZ@)yJL0F-$0-mvR>UE>~An|S1<6nm* zX6ev>`GD0$Tt(6pQA0zB2;7EpjjwK~quRq6)$7+>@YS7=Q81Z_-f8!jNW0$}jT0VK z(PZIqHk1t{zY%%ORu-f0U?igITfK>e!(K8I`zE1LXHl+7A_od39hEj25tj?4f|T~u zL0_XU`mS#RGTf`eO-u3ufbqCGr%L5<8CKZ}`>fU)501z?sveVdMphP+a zX-*R1$RTNtmT`y>Ob9=@`+xTrxQmLnN6tQb#NLsXgXv0OiVwXI?= zP>1-z;YK`{B=qUWqNlxraebzm2dJAHtr*4}L@C6Woga~H2~=?-CMjwn0wU?0lw3I! zgGd6QG8@X+#9+tCt)H;}6(*qZ=0Cscdui0^Sb9Np;?Q277)IeyJB0h< z^Snh2;4SK`N`ey-7l45FLL^)9Uf<8 z>bL#5zIo(Ql0Ieh2OH|V-~)51Imx>nC}szrU~P z`(tazUcVI)?vLH@^G&K*!s;f2(fatZ&{GC!J;pmno_X+I%yye~g!0S)x(9Xbpcg;p z|F>is+~N?9nwW^B>46GV0#X%n)OeJ8%~k{((bZCtU{Lwz{X&1^^ zmf%W<%$+~)dCq_<@ypk{_brV{T(R!==~1UXBn=9UaO-;pRIr;(r=NOkR8`F#fbRV1 zqIW%Di~>BWcNwaHp{_S4K-T(^@TmH1I99K)gqi#O41A{>4IkhN9}?KagjrbKj{s$T zP{t-Uq4I$X0l_&Hkgm0_Kwfi6+314bv$4v&EZ9(A3RY@cJ4~g^t(&6$ObQVHE?3$e z1i-18x(9_1`4a*6^nEjR4-Owj55xCdfJd7H0;+Wd$~hsU`^bHcdl2l#^2NJkBj*mL zC--9wU$yFkUw_;AFDC~K6mEE8w+o~q?zEH5o#;EP!4T1P&vJfR{dV+_7_>2QQIdHi zE#{pesUqW+zqnxB+oyKxEB4z()-aMo2>#}ZK(j68Vrr(CdOtZxZ%!`(PI9fO=8_0a zbsf@3vNfs_`vYW^i*H=n#4__=eRXPCmw9Wz>^9xCH__e9TYXzEFt1UbI*hK%-Yj@+ z9`?i4Y4Woc>|6PI^9mmMza3v5I}^QU*~?yPVol9g>%(-=hYS3lZfv*MKW-jow8B%E zPcjIZM!fXYOQ_X5uh*ee__Xhz=wH8#2PZrXw{qkGI?bDml#hrpsrztW46SRrEh!#` z7a;}X$cHV5_q8GSGIACy03Sba1TS}_Yz;~(4}wF z1Fh=r59XA`>@*EA*t4-h4+gC6Bz@=bG`TNY1#Gdx_;8EoTy-u3sg|wj6ubrtRqY z%dV;07_U<=ti@-GXR{0UxEaDW3-6&)BiN}Qoj|G88~?4JP|(s*weBjIE32F60eU0wfY)u;BN*N^8voITNF&b-MhZG;;}+O2R8>fgFjql&U!t$>znk{eNfZV%_) z;b#}|CR(!pGu!rg>xeZOM_78Y!|K1MI_q|mSvH`l6PVIk{ZSS9O{6)?#WHXkcn?31;zji@9_s{-wWnE6)2*P?1 zuZe6?hkWPH5rjTIvy944Wn|lUyz>Ujp=3@4Yskj8&>$%W@9^(G8oc=8L55}_=hNy= z|4x~lQ=)njv*||ff_hZwrgu-O@{r|IXFIWTVQ_$amEWd_pii(5vbO10l#5~LGyqoo zI;T_pF8WmIo9MXE`U(%2^+1~flu5ZX96ZTqezW>{@ty~m5M1^>pGp~EJy zBfF!|&9END(E`p<GQBl z{+O0E0wHJECMs4@h=lDZCSdb~by)41 z|H%*a7q2)xoR3x>=a3ku^$eJMeBX;B$!%gTx(D@y&K`1T7A6^pKpq^!lJGjqiaP8M zJIYw$Ko+5QCG+t7F?kara(*klNIZ6NW%(4D+33_1 zh*41tI&+U=IEd$0Zlde}H-P{y76Ku7`Ar4HdW>XMx{gdudeNP>r}=3fArtIKdL;Sy zVSvyH2_|5<|2I5Kk&`cx;u&DY{W}Lnwp^F>|b<)yG9e}b^=MgASRSjRPIdcZ{DxW?|es(I`uEZbGm)jJkn{nKA>(&SBq z(s;orV29#$U>i}kK+)Ilx$nstvxm-(8JDx&pHaNt;l()7swV-35%-YgT^JrzJ)N+J zmlqSi|3Afg^i{T{NcRFhe!=qP#8LIT$=CO@8}RGWl_p1Q?r)KAzzTjwR#|fPv78NT zyHgMmlwS>Fd80=T%3b@&c-5~1Su$}(^e?gKW*s-@eHJ^AqCP_pqvbC-fp#B}CvNBj zg!z8{C?bqo_Y?0UVg{bAH`H=Ce)uk^=J9~J;a&kIDuy}Hd06cW1iiRMAP2zNoFWFk z78rj1n{U#FZa)bdZ2pReUrmQ<#mTHHS-7r_M>ByC`C#V2e%)*T*bWz&0d{iL5=&`< z0puxk=G8iOOfkh&Qg=OEAf^xCi2<)U98T(LhDfE@mJIEiRoXcMjf@^S#>YGfo;U*n}E z6njw_gTBgd%M@^!cOP*e6k(5rL$!Sk-6$w62P2n?ua3hYtYA^n?YdYQ^!@$y+t4T?cB7gQOzW16X8>KKz}|#% z2p3=()&nc&%8{Fkz}tP}VcUN*7Ar3Rc>+HKyidD>L&ph!J_PfpjZ8c^EW{vGYC$F? z>)h3=aqv34J(SF@s`HXi@`os{{-G2SQkO(nA`XzTVZg;Uru3CXROjC_%gRKSgkmrI zVISmn;mzR-$Hw1&?U@)j_kP3x+O)pOeRJM#8MDCu;WJ(8?gYf3#=)9J3qhnRT4~kG zduFdM54l=tVYq)d>$2E6!uhQ6uj6iy7-Y-x=l9)|Kuz_~ku9*HP4=-o^OKkm*6Xi6 z!#TzVmqc`B8esW@(FSF*Fi91T)w5HQsUMM2YE7Do>f)eWl_(RcY++sjYAE`pOhpIm zO~VODxxgU)U;g~GhOuS#xIW8&a53@o%cTcoRu-W%EMKtfQ@U<&4D~&J<8lA}<(3^@ zXNR2&NL`)%dU~h+7K^vV^=yb5{NT+%r0&j$+a=K*UBJ^AawpehP1ydE^5$sPLO)}j zN#^m(FZ`fy<~eWyeaP8PtS+UnL23yr6Im1Tz4V+;2vg>siZv1Br2s)54Yz!O;&R9+ z??Ev{P0%N15E~%PTvP>eMi#L;Hn2hPF!_ieuuc_ZPW4rxKugUZgZS`ChCZ&EppWhQ z5s`q@?&;0M!y!%mM-QOGFs#&FFlS$5@7@lK#=_&_3-a|0Pn1Sq#cV z9S^>8d+ok>P+#iSKW|x>Zh_3as4~-d>C^$-b=!s;{3t}4`3fyhcNjt`-?!0|a?{!A zI3;4)+?OxsL0Bsoxv`mg?)%;~Nv#0ykcBl3v1oZACQxz;8lU41mG1)F42WA#Fj1Sj zp%?5pB)d~iBdTU->tYRf!F4XMJ|sh1iwO#ZwFQQ@@BgZ+MKK0mwXPj$*5IatLa?nbrq51^OEjQ%UUO>?E$QH0v(3ZfsjoaO#c<>C1}J)yFBV#ppm#OmgyH@S*!nAci6kQf zJ%QN%FA>mnt(Y_0xYxa~y9J{9z2L1!q~OlpWB1>G;g+z6T5^A5QSK6C#7ATS3z!;z zrXb}NpgPC0vL5vtl6L;_R+Fv+bPtN(j>!4Ny#|>@z5hoCU+QAtIkSv^zL)W^KqTEu zCz(7osq}nxERQWsfE_!Jim&isBZ-r&9{(4dc)P%XVz~1pN50PTWVz0#dl=GqKUc4C`QA$`|lt6+fWZf!r_!L_%_>aeBh~ZHD^lqKOL@H?D1;k4INAC zo6F9Ybh{RFDS>*N*{Q+}S+SE*{nI1BV_)$OwE)h+(q8$P2;O@@3JSQbblGpI40$cs z)-!x!9Lb}&l16O6>Xu2MG^utXb4P;{Vc>^vf|()9m|9Z@_N{+^++VWS(XsyKC_by~xVoh}dU zi@p}sLU+mYZ1c&yV+QO-wny%s`g_Q-mfi*3(~e40A6(@aHe!bcn*?Q0Ev^VGMpb_2 z)uWy?H2IF@LB}ZlvG3QuH0;apq8A=UQdS&2e!n6S-ClxCbL*1}tUx|BW|DmWkS`2Z zheQzmp$w*^xCrTRB;VS*insDs>BagI6_8#|**xB1t;wvd)iM)% zCcLu_%TZ&EAB+q`O~LG=B0I`Yt<4bRslSiPoJlH(y8oKwmcRXq>x+Y zTb`BLO63PblM@VYk3~6CWFlj-OW-rtq5!I+2S}f#6y{V|Lel!yhlT?oihah~=L>Fh zPoMz#6*YB7fVHZApZAAsR+moCeQu0Qe^6}WKVtV{?`;xkmOaovxv$8lEeE>^kEhYY z0#Gh++3EDVDt8myR&Mwzxrxfa)Oy>Gf4r`l5TU>N>VV1!{uN{#*hKII0?xUX*^u_D7;Js_ z#{n+r?77L)tsIZ6^q+3f;o7cE^A=!NCj~MZ%EOU+0Ji(*qg8$npBS7trtjt)G1%;) zkDC7}#+Uk7Q?=U!melvJyaSSHa(V7w61#|jzMDMh77utUW;c;v9iM|p=d_jxDQB+% zIZUyD!DOz2j-cP2w0WlJXsy|?;@8`EBL^k`VO952I^;%+R446_;MI>;4V#oVa{p;7 zM5@891($DqNWh0AGQ->@2^|jwR39N2ry2nsGF3~${NpXI%niLg$e{m&LmkbIPuosz zF{9z260jDOGtzH@q|UY3ZJ7OsJsbT{dIU>7Q*1|hrM6W+Z4KuVH^Y-YBIj*%`i&^Y zcYMlyLfuica)0NGgOFaO6L&j}OX`jZX8+;(-j_P@_KOg&Wq+1=_Hi=m(ZSLpPkhys z{cBbZTD;2d~+k1 zE#%a|)Ebsj2hGlT z(b!SIG*M${x2^rx@Cv5N!b!6}oLWa5WE242Lz@D$x=lk2nhy>zm40w{U&;$0QB{mq z$hjhU2+Qy=>$Cf6HJV=~TWeX{K#qvnP@8d+cz~NkZ3a07cpop8q!ex#LM5z|(us#WV!AK2Nb`ZTSI3!M#=&oKKUf2Ni2^Cdf6$twrTG7*Za~v? zGtEw?X_O7q9A%6A%qW{aTOt+7h4u9b9d{7(BzgAM>`DO)ytau6IJBNE@ZPYHMzE00 z@ZLK#;l1@P*ppcoL4CQv z?-9?kYyR@;x-cgZKy?)3&^9?i&-Ea$TqcCNR?E6~Frp0SEo83>g<*NG^hz~upq5VS zoI8N0ij?u9IF%FO_39eZ$8FK)HERHbgbq9}2iKdNA{Nc_yX}fYXl=bBki$1mtQ!E} zlFb3OLD*aZlv|uankA@%9bhY$0L--wwe{{sL1vgCcME{SWv=$97n#SAsJ+_J*4Gf1 z%1uQDCqwIb(CzL0W>nFw!{6gfH`zr3fw2)W?_4geM5zLZ}W5+Vf3Ezu=Ar^gg_{ z@B%Gn!wh5MHrSseLU!edWp_^9U`RZ^R5DkWMJ={M8aUKR4qo6?y%WOn>+H7Vj{3! zJ*KN^$F*>BMma--F~Uz70M~qgNGBj;@|8*$a1#`5bn6Q9I?YQ#<4ZN9qfTRYH%!zi!zUrgZVfQeQNqqjTO* zr*J{2E)!_MQO8sU!+p5fp`LG$|PyMut2fN1;9EqRlRi+ zHSwIf2Vw|EyquJcIFZ@{to3rEq{n4_|);`1ZOG%+(E%d`cFkC@zN-$Djc7nRLzW)BL1_0uu znI!1#Ch;p=Q<0WM(t30xcnq-!ZGg1~6wMcH3ZZ@hL>()@1n_U`#ZuEiF(=u+@fMiQ zra${mmV$0EJCN;}k@4%_qcHO=x>nH!nQKGcQ|pdHSOjRJ#gNrw@^E+#KUI2y;iVSM z=(kW-yAh=JssHehwbji?bQ-$%HL^dz1ep~mttu*tz8M=9vgR$TZ_~#7TSL`@k}q-& zPh|6Is}(JycV9#u2~j!5@EM{b-C!avRm=9ZK<5sb1tQD@`dz+TpJs6xcM#v!P>+)~ zO{@t@N%sti!dy4|;9+4lI_mUAGpgy-fYuce5M+XmbE@98QLt->p(ph~O1MLbGGyH& zWD*z-gN%s;+`rgEmE@-P7uZRzm_rmMbZIp@&Bo=R!8(z#nM`G?2-g^||E5KH-~h}J zobrm0HDHp`9@ zC9a~jyXq#>rrWkaozn>N|IGP{%3tx5zg#^)`b~AmExXgX%@L*T`2sPe){KRD*Ssbt6LFvaC$Q z$3S@?_!9slxYYN>RQ}Tx1X?Pu7k@x%GDY%$%3_AcYM2*>lsrX_Cu`_dCj@HU081%B znqsMBaK0MYF6r$;I$aA0$3h|We43zVlfP`WZr#l3a5ad{wGn>59xvHYb`>ZBiO>L^7hXs9(~=^@K=Z#45NWDy`#(WM zJCH*GQFSi1yfW9!HprYWC4Bll1ON&sh^T)>glLEHZ4~04GejIBGn0&3_$%7{FVHUq z6z{n$x;jEk1eZkne#sI&2X1lc7pzbb9)8ms24e~~9#->#=N59y*(CAdi#5nnZe1|} zUxunrp_XhxfFl7?=t&tgx%tg-OtT_otVqLefE{C!c5Kh*u-wKao?MSRhJ~{I_z*Ly zHLfkvrP60Zxa_Bd_OsMvZ;|l~>O|}mbG&ZRujbyYox|(oL@e3jSeoF<3MBZ+xAPGJ# zAekmw<0{OMc0SCOWKd`|ir-N^qEuCh-??79E#)~w*LM5Kc8$`}r)-N9H{69dLac$n zR#Z?amqaNRYa;EnO02ee2QfOMZ=K-Sm8;6hr=5rQ?;Mq{vjr&W!h`J_0KL2e6$0iX zgu^GufdHk6)-s6&j7BKmybJ=&WGHKXLNC>3-zjeTQT344l)D)W77HZ!2q~k$w25Q- zJ2SH;MT>mtBR2>Emu=;pj(YIxnm~2G+twHX$s(Gyv9LCJy@e>v{AND2Mc%$6)ait5 ziDa$_b6|L^x*2BEu2QZI8hx#VA>WA=vx(Q9v}3TW9YFSQebd6t-deXv*)VWtnsFJU@rRl5P&$}0-c}%SsrvmtFjUyT>55CLg zd?0n(8qgdHdA}3XRg-)(4ROfKPb*Z~?-Jt_4q7`2``uA$M?MVYz$q-3pDb(;oH1sTJ@~Y)u{CkBo(C5a-6UWw5ewnx~KqNIMT0U#TqTD8&8;)_MT%=o82J>2|SwSqpi>Y0z$iSReVA06l# z2dgP^>z>RLN^>Bj-SSBw_pQiB-;D^fm6?O8*`5nUqlZq!Yp7MfU^%k4 za3m0Dr89{)WSN@c9}>?IRS|%6wtJ{!biB$V{FPG>4l7sIl3}zt10;dYkfi_&Bwe`! z`{2lO!1S<(6N#5_<#%6%2wF;&R`OOI50ygu@L2b>dIjNb4)rBNYqGvYZ?11q?=U3Y z;Qu{H^kh^_gfz1sTnqfXD_abg4)90Ze8=6 zCHgC5<4am~7s)pBcQkYi0?!aw5Tyi41EvVqUZHP9IEYIZ{k;rZcCA^u_Zu2A1q zg9`k+TuTQ;Rvu3jQidzMO&BTmc!onurTI%7N&T5C8s0nH<|P&GiMNdo(6l75!#ZFK zpm?K0?4>N?5pzBwx6pZ(mWS0Sa?@Vx7tLsfxQ{FIAEZCF<}I!jFH5*fsy za3=kxDFM)oJ9@tVhjQFVCNPtb12`D4s~qJNR+mx4TnsuZ zPPz5j+Zs}ko97U!G}suORM!Z{T_sHzmuheS4J!n}QY|nNq)cmVNDrsQ}T zqV!w`VL~(D8`d4mJ)l1B>V!Ctg3#@=3|&)!waGL92^eFLaWPY0OV4b8#+SOvr4vk6`g40LIa2QORb_B>x#|7$C4upwe*gm_h*@TfK!m zEP$!vb^3DEr#0kLKaH+srA#7_ug2~MB^dV2wq!hSs!DN14B-yMZ!`MVQjOaU@Zl%g z^c_T?*{=XdGDma;bT|GW&gFa8mqC@}A6T8uix;u_S?(!HLA_pci1PqY)KX-zE@R6B zz~*sOX#ismeU>VC4uLYj%}m4YM3M)Q-C!hL29e7=EK;gniPmybt)%7*lGOZHweIeU z3;=$N29=|Ki1H1~oqQ>ZMD@A%Y<}G@{X=OS^&V0I-6B;wR&vy}e|nAR{Vt`GOjLH) zaY^AH@jui?^=k0yD_dGRdvTrMel2>J+sn&0oc6dnlW$%8!{hTok5ib%?t?2s=1a!@ z&O(n1HZyCMFvXIxxPArGWLe4y#6wJf==sv|bF*Ibz<-e?o?m)){yy=Qr9a}sO5jB9 z+>=3Pz`StoI=)Jz&FH-`0-^YnCE+HMmFs1JlhU~|ccn*o?nlIEsQAFcKGxga?{c;} z#?@_d-otB%O~wjO)GY|&OJ7M1tv(a*3=Nrwcu=WuQv{e zN3I7;0^C{|UvyXlrm|cD#07W^C!slz`bWXvA@_2UxjH332=!8f7JhFHo@UdK7k-Uc z5XA5ZK@PTQiKe;#T$%}Zmqkfsp&~{6%TM(DD}i74q)DpaYFv(II8oYptmcrDl3UM1 zMbe5e3|h`>Y0c~z5XSvtgJ`oKwArTSujrOB%b zy&bAGk4QQo-#%Ib#=*^sJp{vJUZe2EXMD$3<2`pd^d)XAz&94Y36)lE#93M$FKut9 zZFx`2rrVM&1O6Amkoc0!fGqkVD&xT?F_!-{BBW6)>sBv(%`)v#1Q|G*lmu|{rbeL{ zhsn$db6i02cR|V1aTj0Y7Bub4rT7*kSagpoKLBQZFa(t^kT+i{#cLa7;26hDAS@k4 z2+)S7EX$fm{4ORg00YRq!*ZJN`IKxqq`1Q*1-1NAi2lYxwVcG`#p+6-4S}irG$q&0 z<0w%mUsM$xY^HB7e#ZK($+~}E>_;ZMxKJS}NZ~$dvEFL;ppBF-VqtH8gf~Ey>)p(^ zt8Y*sa0vwhTv2fnV_I{>x#1(ybnjLN^CgSh>XT_{;e6(0KVHgM{l#mEoIwJL8|6e7R*AwfndH`1h84T7#;lpfoaz9bw*~ zrYMWPIb64forOlab}3l&7#~>TrxT1#tV!Fl!R6$b*!>}6wy@2g;o8GU=}UWoVWwTEp16=6Nb+6g(>1aX?%dY7iVb z@yMBp3(xuTe?$j5hL~MC7b#C(+$H?=4{S<92BY?xG3G9uDd5q2%HgYZmG&w zr%mRe>+59@Okj9nV471~rGS)|FP@BaqN8k5F@ffxAT2x&Un1`RFIJuI; zbE!epkuHUO2FvBDz~8)BL-A@K@M{+eAi8gGFbfgU3P_{ShpcjZU#&nl!bKm#zoK`p z$9q&o1F~lS*0@9S{>ai#>30%2qW2@J;EiGqBL{uBauv-(Qh_wLXtbJ=FA@wM!VWMZ zy%M8Dr>b9mvA4RYC_!WzqC%&M-HgpGpvs9VgJC_4kZ;rsY;e~|X9!0JL7RY!8?{Jo z=xE-2>hXPtCgU>F`NAA=Ri(U^XQEwk{Z^6E2xCeJDE9y*k!xf@f(lg>YNTN;RhTbP za@}{AR)llCN_te-wga1QbL56o_Xz6vX_Y_#X=qDE%TVQB;fxihkX#{!I5bZjY-~Bl zy{%=*fNAx7Xt*U5H5ADdr90&6^r9kMafIb`qGjKM1^ec|jwxS)nZfwjfW zEQY{RxI!ZEvy7%l0vyh8B+yYZWCRfs5!pkA0o%QLv`UCh2Bo=8g1N`yW^SxNv`2na{Xm zyI$=ZM{9tN0$s2e5x=2Jt6$8vqwi#-|5})gJ3T30sX(x!?(YMX9mDTq7kX#e5Z#IU zOkErzfjgJ3WMpRq9UmQ#9DF1Da9rwSqmUxDbHF)|WLa8v$R*31{Y73DPls)dTLqIm zPmWzENZgudK|kM?{L=SwmsdZ-8m6gk62=p2A{#Er29{Jug?IVmX8L2S)Z+5~;=7q$ z{vNjS-nr}>CBsZAr_Bn!d`ltS|8DohGr`PRPd{d%x3JdwoTGnK4hDZOi6UJ+D0p63~Mq zCS^Rn@~HQWi-*M3YaY!VU%22Zx8O==hsPz?FW*et`u6o=-|}5%6Ice%~27Q$sqrT1TIX1 zmgGlPG1LP8k6cGkg)2vd6A>rKYk#NPI8B=xB@`6P!^Ssi)-=CW*2%4`uBsPTRfKkR zfTxDHb8hp1po3ql>Qpo&00MoaiI|gRE;K=tn+h;(A$5~x#kga_1gtjE|@kL=g@O1xuZw zw3zs>H-*VpU+62`_E)Cfs^ZD(71C_XS?iXq)`dKhikDJGvPL|U ziny30=7=Y)hY*!RyHc@;cmZ!wlSn{kStHnsm%EVA=CvpPN$@G+R?0o8ccj2eQ>%z5 zD5#81=-&ERq*3cDOZ$k71V+evSR)i#INF>~>Rr^hV2j_P(KQ}`Qo@&S$BH?`D^J?8 z2M+e46sAX33aScl>(=u3+QB!~IG{j~#C+$tK>9wA9KY>_eXncKVf6!UN%JFy8P`zN zvL@o$@60NweYq}MLnELECJETCHJ?mNKtAUYK(>JZwp%wMSmofLAU3FB=KqmDpeEFC zwm5qT`8|V|-+HZILtHH5n*{Uk_8GOsxqqo2eQD#IOl}#ohivE6t5570^oo!fQPaHM zg=Ako{d&&Q7k_em4AN$%r464u_ny_IW4r0~;G;GfV7DP!=!lgZLJjc|wR~YxBtEKk zSVL{C7u)>A`QYq^*MeD(VHiWXa``0Rp@b=Jy?*o4{N=r#&PFnjbEDy1P591$ zb)^i(i#fA>uaC;ENG%@S-~qB}VhtEv+~qkd%L<$=Ydh8Co(mo+eD6P>pBy~JDb5(d z_N45>dzMvi%^X?llf`Ao0%z4=(Kq$WCi~qcM%Hk)t?()MsoFr6lohfskDcP{m>0MD zRDk#CrH&`!{@zl5Jm=EwK;0O7gOe;0{eaY#p6gLjo$DcJ^*$63?XteAsJ5j>->get zE4urW7MNBk6J~bQO*Er{Ijd5`{kC{HiW~GP*^~6OC?BGmrfC0LH6Wc=TRGV2*Dsb{ zpTF<*iDbdc-aaySqzxD-Eq6ypsNf&`{EAwFe z8&8@`*>@0uscjx~jiMXzjIhhm&~pWIQUGwTHi+Msc1+Qu$w{dJ-E*n~eNN!XZ2mu#~J5wNlPEyAo%=G69|oE(n7Bmn)$; zLLbr=j_MjFeub?2ZFChLDS;zT7;`2dxCt`5fW;wpDJMguJU=4M?1m7);2047q_i|{ zYkCVxmW)p<6Dk|?s7YdzHw!7t%&MevW67jHr#LxD+VVR z(4CJd3MqGkQ@gIPEm9384@oHBrfeT8MJ`zuYR^w8<)M=} zSdz&Apw(I zgjm#`yTGikkSh+To!RhAwzE`L&!iDK3iFs_8-DD4W6N=YdAQ{XMe*{dwd?)5;2b(m zJ-NIfSNBnmrHZ0m8!XSx?VWycOjnx1CttlM6dCj-b%4H#h%IPI9HVCP{JFDaLA5lV zA}QO0t(cLKe@)h{=I1V>?#0{W2ie@*7coT^S=Ra7#3?mc){X7v!Ee)_)Qf#(m(1+P zC(n`1^c=I&EQeMng3cQHdRcw)yFK)cf(t2khIRDaR{Ude8TTG)vcdiDp)+QqPX>5& z^yPN`ameB6-8mN%1v}Tq(2CD*9^!+f)T9vfVAWAO@uFw=D%DokF2Pw@)x#&I%4XI& zWq(AvT-h1A?uW_uQsaMok~w&`*W?xY2WRK@+`%;JC0JE(lYiwdMKuQMb5IN}DMMw} zG~6iSk0+VtGTX9VCu)WX^Ugjlt`txSbil5X>h8hu#Q5VIhh&-u?=P77w{s7nvMPeX z@k#K#E~`EAbkeG~H78O%=lAuezgpJhmC#4a3Ho5wrZw~kPO9KGyO>kju-$OqvGBs{ zQ_hw6?W|qekU#esJBn-Y-tKau>{#idZo=Pd8?%(Tp%W8gVglCJRR8|>hw@O>oU-w5 z=*|gESB0TFI8K#|fRS-w{<@ODs+OrcbOyI1N^p@GiLLtoczg4BDBrhle56uYrXoa) zq9~!V^|4(fTaq?}m_*rPTFCBFvWHUmP>do=LiVg%|`X2O`v%++)1(|5b? z`*(kz`}caD=Z{`vnwjf7&f`4J^L!tB{BS8{p@|e}v!gRo2kmQWNXN8d?u&Ve*d*b> zMIOpl@ZitJKOdR4F<_+RT^M3MYO5xOX+eHE_*@&eZBwg>v;8--UN7jP=QqKP8vuJA z?F7j!dY^(Ls71u|H=UdvhgTUHXvz%2tHcua4PXd!YJzvO4=~~99T|aAbk7(HDVo5u zR8`JzWTD}6mu=18kvJbKnfdbFtz0`BWuKdH4uLP-Ced&|QS9x9eLOhvDi$A=f1*U( z$5*7*1+Xp0Q4jBP<1dP#y0A>({6#hk`y)hubwr{lez1`U?)|W$A9#>z<~&270Y#X- zT?yOsqBx#$-eaAQz@EN9i2h`}BRkV&_8!kY`#>{7&$lZdEtJYwZ@A?Ywtd-(ZdDqt zMEFg_l)_azBQdYht(a}TPprG=zSd(<$dS=W^W2%~Cz7_%`oJ?K6|}Jw*Wi~jcIwCJ z+0hj%AEuLo)k}Pn=X5b`_-HM8Dwdo11WR+izr>Gis#l;@6z4MGmU=O|K$>^fOsYUl zmYu2NOPAI9lprDXB(d1AFUmG!)+4REy3E9hdw4*HhA|S&gmf3?gIq{Vx#Zbmn(4TD z*mHViGdj{9s{2&yK(Q{@#u>&~_c+j!qg0R1W%aVv^CnkEQwx@3vyiL!yrGkUMG9XI zYdw6;v+@Va32dOvF!}LM6d&ZcFjPs!-XS;@V07t(=FY*=@uIj|i6R5K>3G3xwQO|l zUK*iQQi?WTAd!?qKgKev2~xLwU0Q2uckJVQ+pSH}(?itJtf&yE!}6DxXqkv?a%8Cm z?%)(cgnBD7*vjf6NBUEk=2p?R#Zw`HC$O@H?j<)|qxsN$LD zlg;+vWWFj=$dY^iNKXY8VWjN7y!ZGUlQ}2vGdFN5dYMv~$8ZIXEw+Ki(^|i)pKZkA zV_&5wH{l`=*<2i%!tmECPjeIDE#>WfPVQ!VltiXhPeNM*(d!?kB$-`Bpr}_)woYQ_ zxAa`>;-M9>jF1kz_)nBm{CyoI=4RIMK<)neoq-lK?UCC<3*p{HB_H`j4lA^!5&=^N8LRF_Eve?%PXRh1C8EPbeW5a)b90j1;pPnp+6K%M;8L?x~+rfF099y%$y zR+$WMa#gokiP5@3l@Mu47wMY4cXiR4E)rQT?;&l_?XkXSm*LEr-Xeup|B%k z`3e}HrM6t>LY(ll>pXKefRAff9@&Ct83i7v$wqr&cLpA$DNIDvZwZvAW5SosAUoQ8 zF~vMwLq*IoufP{>5i{%fmRvNcvxmNfsL~Z9UQJahezv#UJ#wjOk7`W1Rh0Zq$`&>~|tE1cStP719rI&w?`Zj29qX{a?_~p}CL25z|3% zCw%Fjnp^)nZ}4`-01Q&eQzW6c@=+7i75!&C@(cd|e}U`)HX^$4bQM0>wZ8f21TaJZ zAjSM!QqXVk_xokvX&3;l{;70Qyevo&p9lnZsv@2N_D`A1zwrz|1i&)=Xs7nkRp)f{ zui(fv^!C4lvbSsm)e8Vs_D6Ir!; zhy`2^{JG}H2!SylqWOLe6>LmgzY62qmohfJoerY+NR&>)ou~d|+%9<5zhM4*nYYt@=i0ldb zOHuk~UUKh(;zX;LCq$)zJG*s^SmhnVJg_O8*N zD4s3MN`_xQ8|;+zbDVp%e(K@KVI#+Vc-HB_TeP0X{q-V4?x|*JefTCgTx{CYOp_{{ zndJt%(+ROE$znOpZ(fviY5f6Cv*q&qq75iGjlW}bl+)M2S?*~4IybvGW>HJ#g{GNGB_ z$jM;4zk26K#foEXjK1YG!cp~7eX;>XTYa0R`}QSMI`6A$rg+B-c6ca-mgm=*w)oiZ z3_8!vD*LsQ5G#mGBW<3t2Rg>xW3g_C=$CpLX3mIa+p@Z=Kypf9nU|wPtl#p+<*9}! zyFFkl{0$yInnH9{xDKtX9a)tXAnSEaSfCnEf?2hcVGT;@ z@i3g21+4S#tLBfWnD{X@EDuw0^_z?N@%<4O{MK15`JBPs_kezVul>y9kJ0rPGcb*yhbb2aT!4))@(GM?PUb)y zbaitl0H-?;iMXFA{ed4{JWJ(3W1}&L=`iCa;3+OppP5Nhr(&WIk-%d;I=cg9dtPZ_ zDf|XYb)MbL*7UF!ae1ygMjRr;SGx`GdJ#LtcZK+6pvkY{MhA$T%bhbvWF152#DNNf zqbPr3Q#?}%!`|UYQHoShZC4uVX_M3_i@q?#YKC@{#q)vNlTqXuU-zo;5%yDd|Fu1j zX)E@U{a$8gPWxS--nRRIE>urq%77;bHezY#;X&2~`d31PM<5sd5hc7hhv_(O-t4Y9 zxGbS**sB`jUPItz7B%|}9H_LCMAKgsKFOEZqo50ly11rRgi;lRrxu=f&w1BfEc-hD5>$-GvX{4 z>t@;;;;bL*q~L>qKw*0E5@P{T;X*Xd|Jv7bFjYs4B9B*wgl|{cJXGd1=sV(jj;a`S#BlijEf;$&8Y!|Y+3S#cS}OxTQE(xlc~7&{PQka?lk%Fi7@tFveHlvB{{r+?Z`LACvsbdk4c~*;x!5) zmUOj<=Wf;Ec|ib43Hdr(61p$bJwvJ!zdiBUSmRLW>oeOgpYJk;L4C(EHKiH6G!oF% zKi}?TyrVH9wzILEgymR%)wHW0yFn~#C>f4p8#z-5TYcfP4{gMs)ZjKVYc6)xx@OhJ z`bdUe9aD1;Fdo46DpF8CQOaf(;gce71c;NZx}YD68A#2LKB9C}2thr7mv-xlt5qah z^}HxZEN}h#p{6!J;DXbebhF5Aowt{*9x@E$=E_g?S~`ZE)!i_P)f>>#_GT!+hJ9X| zqtB3c`BMX_9{v3m-ni1SX1oYh&d1MTWwZB-KEaH>wv)x3yZZ;n?E~nnO^5Vj%oBCCu;cq7tUQtsWcU`(N zvafF!h2oL=RhUG=O2UscQ46Yl8v^7E+cK#btR;O>gr=$-d)Pct8HX`X+ii_X}5 z>25$?W@SaVZPZtfV*T~FgWc+O#Y9o(+YMR=9_fmSWrr0^;`sdg<6lmGzbN};y?-{| zC#RN95&sb8NeO#lR$@5Zb%fG2!B>TP{}-&|di!cNH~QmzY2dlL#>v~?-BJznvWd6v+FGmf>rB5>blm$`yXK;SXo|9Uu5bJOO#YU9ZuJ+C@Xg)^0mmWi59sl)!jy4_g(IYbjFXzAzbmg zqC@%oT}sy_K+o_ypnFj&%4~m#YjV|jho!R(NTD3JTgbl3iZ?YW3UilIzfsM`E(+7N zdURTyJsujqnk(OtR*~0~f4E_N*M?Xl)84X}q>{d}nK?!Jd1V_nwPazd16d{EE{cxP zr(Yz7?7e>C^)x@~45;z7xD2A9rs9J91s|;C2K+OK1A+P)?d$qyMh@N&zJD6cL3MFu z9ztt4Ctdg~@MZsXSYdoIgP#r}IQ#7oq%0n67=ji!iuRTazIx#)`gFK1Df!PbuD*XvOMv_6 z3e-;HXg)o?J~QWs(7!~0?TUyR*?Djr0ljPEUBy(fpb2~;N>bE&yB!gq(k;T>Yv{!P zW2bP4#;;7E%@J_$4dMh5TWFqh=IwtKEqb(bM|H}<%+3!{nh%i=YpuIan*9(%`P|D| zXZv|^QS16!o}KdI#s&9Rcb-p0&HutI|CsV$aQ6&ip7R6PRvS z%Iio>igfxhXfW})1r!A${|}(1>UW%qx$$aPkoE3aNgB`1q=j3%B53ZpKT#Se#&4Di z@!@G8QF;!zQQC*Q|5ldgFHicg`M?wc?^UNLyFaN(D%dH`Z_`iIRm-UJ z$UYH}6i&Mqy_XRAuxk9SfyDck?)*yuJFTEIx)NVesx`sdHREyQfJ@6C<e;p+_9FJIpXiMTB`PNfuh!PXIZWov-dQL1#|LjD-o|EGvhT+LB<1`c zcEZ{$`gg(j&fJMg;E3Q~Q+arHQ++m?0+bxJ-C26bFxG1EFbERi370sYd}HF9S6IXH zwiNDQLxT)~`ZdeeZ@(lLS|0%z1L`S29rIrSo(d%GSH#iZ$UN5)$2(-iK9Nu*`O%RZ zJQAdmxi{R*eRB5R!+PVn7iUIZDIBT7=xaDn%W-%AmYP_CfX1x>d~lW{&j7*UR|wSq zD8rj)wGP0WXQc1pqz&*O%$)m)${9Tp0_6+=w;&bA1Zk5bMD?AjzK{* zEag;Hk+12=KHkFQfKqD$aXnMeZA+mh*)b*G9dR2q$ zk;T)sj}JsCdddW49?cN&01=o0PwAmE59hh0)*yfC8guzO`It{yba?5q5w(sK3EX+w zKr~yn&{bz2jTpIPIvlHRLjzH`UgE5va|ZoOv4)?h)vxyOzda^@IJX8cvaILOw1Nac0<^!{z)wJOmSOh5aQ;X*_ z(BGqfUq8ANh1$SPGypdH#MBakP5c$q)9WkUSTD_t9XH<;s7<^5M6r~*Ai>PkrQyQL zBDcI6DvD&E$+vMym3+ec$9Zd9x#o=Rh4zwMKfTKv%}{V5dX`92ZpN1K%+AnoWc7&j zPhL(aj^ZM5rCx z=Wg3gB712S1wPMasx7)<{x*~m}H5(AD4GOsnlfPYS28;fb`AkYeM~*Gn$JyVx!&y7&geX z%Z`OV4SiJ^^=YN{edVkkUx~qeH@T_Hvk<|S;C9UJ1OunimsUR6ns__VV<*{eQ;?CWTaB;iWiCMn$+{{d%No)s3n?~E8DDaaXFa47x2w(K* zVJJ8o&lXZV4CEByRDog$A3@cn=eOcW8v?I^(|v|Cje>|9f0^1>Y7qX%;4He^8T`I^ z;27r_wEPq~0CXJ*@LY#;7}^QoFTik8;kIDX^1f-u%8Sd0JsC4zwvwvq8y2DGB|trVaziRIh@APhapf` z4Z?fY>jfD3B;0sR-0BeLA#?>FonZ8>*Z}zyb1Y@)(mjo&Kc{CdS4^IgB)7#$Sla<~bJk=*7c;oP-l~M~Czo;x0(Vm4hc%HcJXffA0XB+$P;Hgi zhzs%e03hcc`wTrt?@!@S;+Xcp!PJ2k`|V8ZOM@t_-Pz3Gabvo3++4bn(C~~uI_tM7MZ$c*la%&18}avG*LbEZZjO}W1_~*&CFnH_El!cw@Do=Img$hi zWRVw$qS+2m%9U$ zwjBTdA)UcvCO@3HF<0`aK1JZ;=ysr zaij+4-JsaXHm+jsB67hWt0Ur7l|)B*F}T$@4;)RoycHxi&}2T>^Q zFv!VA3`rGf3*qI^FosduTf5We8Hov<234fB?3rg-&4QopeBD->tze;A3!N|@%1puj zFWvKAnrVur)@3P60|A>~NsgJSyWhV506lXK+2jo@hV9H-aVH5fFHi4#a)OR;GdpMg$eb>joH_IQ9WLM3xnXq!@+c4M>f!K` znQRsJ9>MaR1pS6a-LbEE*n;>5|5J(HFN5EaijA6w2}=^f9~qzthk1h;+B#MGo9T{( zi)NJEWzH$1j*gj};brmsh=lp6oU|{A4RS76aS&nzR~E+SF?pLIL4p%BEO`9xSU{|M zgAE*wpxM4<a{R7Hik*zn2D_d5 z`RiVB0h8Bfz|D;Mbu^Lt^_!8QN4~^Hoo#fden_ZZu+>pLs#Z1Ay?d}#{T|zLvDIbu zMPkn|QQ0u|z_GU_M>3D@Js*Ppgk>JUu(vHX0&~V`{BRCKiZ(JPQo(d(sRO$kj-KB} zkgV0Cv6>h<;&13j&^y=)0LV0(^5ahQ6wF?$)u+yc_YNv~+Sqbrn^xhda_s{f>+bGC z1-}hE$_!vhBF$qPyXr;R%3Z-5kq-MU#+M^bbQO5k?k6i3nz+5TQOnG8(|FOBT`DN_8P~synuhrRtIh4Lflak={hn&n&7j&zy({)O{$>!nv^J)*vob)D1GM_J+_pvSV z+r}z8xJO=G%4Aw8}XX7EkcN)fGzeT|_(hJ-#gPQOkf>L~|^Ls@_D1 zwo+GnTd!|t=c}k~WmEO0blv1Ir^0OiTvV#*4aM<2ThUEL%mZk)xHsz$q$_wkod;Z` zpJSSJ#5rj?kn8Pan=Fh#nOu(%QgHpZA~LFH{T^;NM8XzKdR)RT=Z zs5PKG`K&`5}j1^mk!a>31V-7a|e zOmHiSOJ|F(eiI~+Y{&dTRj{RETY^LylZ2D(H!yEJW2+C~$~)XGHTK57N-pg%%$4JW-TW28I=-d3s`lqOaWR}5;s+y;&A>^szKo_69{5L=3D{)yCDk6)_JKCc z4r)=v5V{qT96jbxQQfbKlVG;ZnD)+FPX9!Cg_?AI?O`jw7`>=k5t}*nX&VZ~3U0P% z>eI&?eFR;Gike}7H3XJJb?~=zo&-_iBkOtlcJ4WIU$x@>cokR@M0zxudQ_ z!m+No?$w1UId&m%#=;`KZ)#1l3l<`fgG{vn<8HQRg?}{f6Fb{xtYGbdVz+_Y zw-!v_N(Y&q?J9Z~XPPhnHm;isfw43zCFWl97Kpj8sI^0@F^}ZSV)!sqeDa_sbd>s; z2322-`DX2fkYFkOD;~~{SH^>cyInlbB2E1R$LYb3NyGjJg+(k8DcVGM10*e#l9A|S ze>>f1!So+!Q^?=hn%WKFLTz+@gPZA^p1<9R51V(Sng$kwzHS!wUgjPw`ep;C- z`C=T8Hl})Lwi33hx`>f1y8~qloAP~txmdvE?BI0$o^I#T0mbqT$fT8|st5~t?p zr`6L<3JV{beplZx{{6@~HDn7nw{36(Qz5<}X*@Hx+b}%x4?J)#JsOhtr!yRk*bO zgA3W1@a2-z5<56eQ!*5_?!=mYzhy=J(9rQKDNVVPM@J@Dxr7$tcL@{jeIZB1+jDB) zB>4QDjLAP_?-$F~q4uV=4~`gV@Xg8qGP-_~K?ykuObE!(wD_BQuisqJHlpvIFRVKs z|2FRY1HBC1zZ)*U&MXY)EK380Jk9`R_D|LzF8k?e@uR7(BM0I_W9LT`MVNmg`uSVA zq_{s8d5$r@nMR0?T+e@c&wz4XlDX^Aog^9Z)sXG)=Vl8X-{_^?3qMKLIMlpfYk5~_ zXgH|%tScGg?!DoQsfxf(a|=Ypb9$!lLh$jMS$XS2tU(pH32^MD%dNAR0wJ~dTl4=Y z0J-LD`em%$;9m3Q;4{~p>o2*6YH<&1WZWNE$A95Dc+3_Zqd2ATTg}S%WBwcYS>8S+3OcWqMk;M+i&9<&-n6`|AY1G z%^AEJl0`ZZdBbjp_`eD7xezr}+Aw~tSTHp9{mobU*B(fd6W4|4BzJoUNVt7cI=IhT z`jXb$ck5ha7KG?u{v6qQ1E1I?!MmGJS7maIJQ?$g0YNw6oFAa%9gw5H+Z-h`rw|DZ zWM{*d;4&_`l?=WDN9&#?%|Dd9H}}i+ViXVQrBY9Q(v#FnIA;7&=lo8;om-Vr=w#Ko zt3d(ht9$1+HY;z4-a4GLNm|???9|5Fx$UnlNYYwQ^lr+nD@+U8m*&Sm;&|i!gQ=&R zr5z%U`L!7x0PMAFY(@Dm$8sv3tsAj5mN=!ZBu@35+Oupa$v*VsaiY`%-p79}?cq8& zU8g>?P@Boo-SZEs!AY?0#oTh;J$~)>urq1-59X~twfes2_m2|FcVxh-pAtAi@FLG$DhQ26 zEyrjMyE82VT)FeOZ_?}4<`WcezWQTr*-iJa53$jy$Kxr;4ff6v)kH(1NNQwJ28 zbNMHp{ywJ;*xL_(Zt591YJr-&82eq_DfU*9Bk}dFVw9k+q#f+Hm(yE$HR$K9i#NUjUJdZ&5+-)J+j z#5~-UcR)`{_&<@bURwv0YD@$cR?r$}FUqRAI{f3lRG%%G8RG$!R}7GS(1Ym~lrd^C zf4H))DuL3bzU#om?rpvnJoP*>-qWEhvRygs zOxKO7&XqH8RQwl>1YobbuAXe}cSB~OZ9MGampuYIjJj@`@4O6Zfjlwo-P^t3P#fua zI6?Br^}SKygVM53Jow03n0p-xlK{F~|QWvv{qy+TVyIx0*IEvq8 zf1#=a8^nG$)M?`>Q0zjHvCQEC{Xy&MU_C?#g~MUH;4qZ<@W2v=qKlaZsC%QcZ;=IE zguUIFSZ$cGsGSo6Li;iIC55_LUPK$c7z;ei6d8|7Al=%!TZ43eIZFJJ1q*aTUQqnN z#aRn#$9xcBON{?S$$8L=ILV+)JG2_qJIM`ZR9Q3$HHGlc&8(tn8QcN>NGMwlH8w`b zSZjTy4nCFR8oP!c`$gZkcbtV!a8n3c&3qv^1_25I7f=W)@g*(zG7MWt){vQ2V8h95 zgi1QYm4XjWOM1Uf?Or5mghFBU;;x?G#?Iem3|sc9V#KHB?Kf+YxQ#DAC`pvU463t* z0~lGD5+k-?G9#RhqyZ!JRp0TpF~HR@1sbqdn`-OTy3#G2X@k8gQE9dsIbnhFO3_-k z*2!F(O&59M`C+Ft;HU!bZ144Bw+L z_?i31l+2?96P+b4jsx8Id>pDMn%mz7kBeLdGLc$DTOb_GKu^je0=UxH!j3tB(%(&$(?sWC~~kA+mdd_>8N{A zafi0jI7EsmH%y(k2uG_8==UsSRYqmqsHT1~z-{+Tuy%~KZs1ux4N~f0n#lq%fi|im z>wVY45+pD8kU79I>7rSL9`$W+9`fL17hR#XHy}Ig%s{mb^SK}$_cWz5biRS=w){e7 z^XX6Xvfb(Pfp$3P|BuKWwgibvdm@h>#l zYCGI$2W-7%u1CMTqsINafPR|giYy`plB5dJDZK)r`RFh}VjZ18M(cGTLY$jqi)=FpE=s%G3TbA%4 zGS0mF8v16~T49tOjeh8=%wNXE0d|l^ZUQ+}35)==<9h?+mBb=3rY+TH&Xz9Q)Q@Zl ztKA`)jjU%vWbv3f$aa8zn9^ZtS>9d9K1Wp&nz6YWs}!YW<@e0>;h^=Tu$V}A0p)cK zT{4q;daV;cXe9yHxrx1v6E;V{kdha`2#U9Qx>>9#I6!i&22_a)2f1x@NJ0m~s=d z!>pse&)-k4P||a#PY4o$joQa*$*)GJ~9-%8N9k8O;|D5wLO;G=uHKfavEgBbfh6;d%Md#0*I-j z{dh7VEPeCc9#i4(7ks^#@#jAE*dWBv4_$1DEBVuwNmK=87qDUy3q$P;0_Pd*u@H+W z0_TA%6gfm{QHmT>tWUq1zWU9pi+wmt<$HS$Q@>FRowg58G3Rl4_}*hF9zAuY)qNeV z>W#WhY{%ERw>*(deWJZGGl+^uGshd!4-Bw(jzgQL85-c^V_Q=^ELU`aUr)6|k)pUX z>ZsqpR8`=upmgqab)065=8XKGo*v%}687(SEC%SZftl*b$d)@)5dOE{XI32e0`7|> z4G_vO4e`PzGl>_ zWJibWPFDvvF7`PfLj%}iB!YDq{B_b(=b-PFCJEU_sDdZtAfhrl)t~ghW@-r68U$I? z(;`|;14PHidejJh*)EuE%K=sR5BQc~s6SCUdQ6lH#RmC2cMV2AK;%3E?bP$m2at#P zU=egc0HS#Mo~s`Mv#`evpIrj>bcx`8sY9J?Wpknf9uTpmvem98-V=U-f+LNFa)5Gx zXHLU(6)x7AbfY=ZOYxwe!4@p-93?q!*2;=$PV1LAH@?!^vClTZJ;n~#i04!E%6p}y zoHzX8Q`8b9%4Av5%tLGScX>Y-8N;w6oaH(habf)-?v6R#l5GoF;6n*AN$%TN>uqr>cjRam3GHg;FKWV!A*?K$D6CP&p&;VTFkqLgEik*E1%zek1&!D?y!)E9P zOc^$u4Y3S;osE0u9K+j9`?OqdRlibUp2rnHBr$e`53%WCO zd&>Y-{}r*(^2qUX~S%1`%%SH6qh?ieP>#1 zDx(8UUYg4!oapp>ta!wta_biV3y@1LXR4!e}T+ja80 z9M5Vg(gRB%;7)0T2#)c(zd5j=tqU5%_zS`&*EB z%h+z(e14Am7^c5mf%js!l2orsnzLcelaqa3H7x7(6$3-JGo5Jm*7mmV^JPTTdJI&K z$oY<5;MT=VnE`ye0ym!23StE#@5c_(I@>rNS_bq*25z7Xv&pxn_2g@VT;@UpBG-fS z1SyF<_R(BI&MgB+Ty*x+zEyeiS7+x#;go?wr$=Y{m68sjCzKI^G)|HVArz`mZ^jQn zjf`!sHnMZ)$aR+R4%;D{!Dd(4R`W2WjLG1=eMy=wnOjYZm{u)18|vy@smjy-Uo_^6 zKtOrlS8@pV07UMVuX@6W;uO{r->v~ta$w*~=$qdY$cv9ogxgiPI9dRqz@D*I3=}5< z*~|8(Jr=ft1#v|{)lhs;%uR15P)|T3FBFNdc54R8U zr+%krd55p(#W_2p6P+Dgcd6aBWH27+Z$Sk)gT1}PA=DoU20PC@G+4=(rzQ0r&E4I` zBDs|maeL)x7pSTPB{235lzHfzK8WGz&*&NYHq!)xo0U|w-89|*+{aS3x3xpTFIyhD zAc|c(Wo#t^nuGUtZ!y{R$-pmrMq^*GlRgNd&osE@n0w)3V!|I=iQ2WT5+{n!av}PJ zGUzUz!b1e83%j{M_G&p3OOK#BH`iRf{7Bgr)VfI}g+EhJ_KTGlU25HD_;9fEgI&~! zE>x?;RI6khd(GU-62uQ_Vtb0|nvC4OLT^fdpX+*`RHLSNp6TlBJ7kaTpCVFZZV%1P zYAnPlDqaro?z^^3LL2$G5s#Ioh3II3bK@aEka^IydcheDk=gw$ZRWrk+SQ^0UrSOe zh#gjsVJrKnrBN?<;kH)kY-M7zXN2Q7e2Wq;dSTm1#fhoL?EP4j;f4rzZ(r3u0H9;4 z=W`J9!l|EK>n6p%d3g0+2P$|0ZrlQf$+el7J;ySff_RZbfkrhwuoFHS)LznXzCWjB z0Q>k*2;uezgsqatB$zSJhbq&(u#jc60&nZP?1NiDd}X1xw&57U((TrIfS!brEniu{ zy4-jKx~9aGU6|Vp3g3ZH3!lc$9f8NoXdmFM^+K){$tw#5rgU-2a{b6B@+dWUNI4D=x&tWywJI7z&``B6SW0dNU)60*`}(JW5f_cGUS|icH-5Ud_6~ z*k`Vvh>~gGPDH!r?*?8*FLzr7`BR}Qw=0V8wuWdeHtFcli$Vg;p8Iw-Ao~Zjc2gJl zr?Ij-cAvcEFP{_{x|*M(T{oBb!Eg7K$`p+Ik?j_LZbdHv3hpWdlR!|K z5HCZqD-fn{`PL7|V)?a>u$L_d*tX9xv#1w;qzV6l`DG+EH&NF)3IURv3q9D zni?y3Ez!*?qdb<{HO(~ohlZrkU$_wg1x_l6Bp)OqTf~c)MUDNItLC8uSIovKNX+4N zNoh2%IA-VQv_?*N{qDw1nkyr2^?SN(+Xg+&!X7ueuJe0u|?SEHb^B6y+_(FYnyY!?^jMF2>tCw$+9WqXF8=j2I0KoHjh00zgs zP_QfT&3EG15h6cP;u+km6Dvpn{N?Ccb^~U}im*5gln$^X+9pvNu|NSyBGTe^vlBuN zXvIr=J{nd~Y#HcWju?)l_l^i%&`-jc*Du~%7FK#cJU`U-?t$`<}L_A>4VYmIKwFS0qd zNHCE14M2F;=!Stz;|c6L0K2ZyP3j{|{Gb2n)|sJVQFUip_^A1}Jv_@9e1lh0eU6w( zzn}QE$nVJhTx+d}qk+XTY3H}f8#3G9@y1hQqj&l5+V&tI^g%#0s#j8~uc4t<%fI;= zanZ#DiptmkECvx50QH^hY3LMXUN{}tRhftZ58QF=5AqU`R6CKi99_Rhh~RuqQz zU+-N=G>B{j{!&*2a?LZik?j(Wz|r{Ke&8qS z{%I}%lLU%^(Bgk6xdTqgf!pEV4Zi1}2j5SZEHUJtB9;lihYxRp;#{~7xK32vlKK8l zC4!lCnK*gGS2E<1K+~@(B?>n7V;4@!mQuNYfb<3C;p~M1`pg6MD1MVg}=l-0m}_eumA9#K*KXDk-MZHyR(Df ziT0ro5k#0LhA^oBSR&>O&at&=@^ZJ5mVk)A<5va;M=qFW*d6M^+Ec?*z*E5~($qlr z;cOs$*FOn1^Z~%-OTIOKJr(}G1918ES{+$E9Q#2J^kWNP^94yokTp?>7`x)xVY<9v z2;SE5Y{2Em9Hq4(xWuXGn9&ny4k20+6*g|_wvc{7ez_+-l?roe(%u{y zIq|(-Q%>nYTB>q(6Vo_cG%q-p#>}7n2@L!%`7u!~`oUR~AM?NDCl%yrgQwSlr~eWl zGj{}rzuWixO@Q_RDFuTmfx-R~phq@9dP(eLa0~yEUXy}fqYuGAc=f5;PWQ!oItIA2Ge0bC@QwT>J9=tJmgz;E?X_vnZ8hjAwl+1_x&7+hrc96(O!H z)wv6Nyrs-$PvYWXK~OggBu!6~7QyZOK!L#QKw*YKzc8?rUwCog0OesI;O>UtAM1v} z(gEN?$cH;gh;9W~CKVL?f903_|F|*M4sHE{>3f$(F-@Xe>=xblk0Hu0QmuyryS0iq z6Mvl*&C#eha9Sqpe{pA}S-NFB_HFAaZGla1wHwJ`zRy+bPV@0*GMl-el*mUv*5>Q! z2I}gs%@-Ko)+U^qvvy(du3Z>BjBj~hzStk@zR2z=K!J$Ziuz{{x`qm2Nx

%W>diZ8=A$?;6@*%%^cdazXOhm)TuFas7lF72Guju7IK0I9axbseo) zcWqt2-qmYkre$99S)aG_+~_I2c{y&^K#QVWlp7B>tDkWn7IwdBP6dFEau6KhfJAT) zTqFDt11FNHDnMy#|MAXN2{FuAuXA7^-WJ^Ii6uY;*0#e5Z%}WVGpYMP6vHo_o{(3<#2LLTkpYWBx9_V1;@pK?k=G9kFuz4BCQz4s!40M*} zG|=_T+1v6NIc2ob*tQo`T<8s^EaPtXtGRK%olB&!boriTH0I*l;xxoQg;u>n)F`}d ztko{sd|>~PHZBAzLoK70B_Qltb<>#;=rYin*e#5y)IXv)_$qWFl)aYJum9$3X46LS5#=%t*seW^$rOV!cw$M}pg5oHJX?uPYmJFV%KxF9^Dc&WrNu5Mv zQPFN;DG@+e4MaN?51Lfc85zbhy(-% zF%Lh_#n}aT0^kYxDO{1m7QETRxWf!$9e2ZS_Qr-0w$BGjk1O#Q&{%E$#K@v02s2rX zolM`8@U8PKEh6HWH8Zn0S!~P5MNZ*lqx!uv=Cg{JIiDkM)?;Y5oM+QShe73kefL>^QQtm1 zH2j+9M{BKi&v&Q`(ApmY<&&5ywureEBM~%;wR;kWU$oSbIL)&%NF{Cam2X-VswTGZ z0Xc>Eq$wsCp7lZ;j2|vi+R3c(O_JieKov-Mm{BZ+Gz|8_|gj z(}vDgpj-}M7^ii_kc-pA0fNrcb#kbF0>Dq7Cn)oAL-A1ra1{;~HQMlJ-F!RX-`R!_ z*THm?Ev_$aQ&@=dPR-^u(;s$D4+YX-Gs) zt9vFBK3-xx>lGyVzTLbmR;m)jJwC(I^d>KxGv$kBk2YR6YPB<-I0%2!qsLbP>HPwf z_ee4j2pw<;zaYMc9pi_t@0!RA6r>X}M768f^j>bZ8`6nhf#}~r`J-GEOA8wLi6TA$ zT~;%=XF=@#E#UpcAqPUBK$tuzN{vBy^;ieqT-*kd*q?rl#}2krbLY*0e}T%Ra2D4+k{|BlF#%lo6q9-rmBgNs!;Ke zz6|N|r?LY5({Ff7`n&xu80tb8D@4E^&@b!5DJ%XAp8N;Wp9Tt_+=D@hT}T(cyujQq zI}706hAll>e)+*fg7`HZrJ=yXgsvr$L^CE-N17>kp0-SkDp(dzTW6al2#z+k_^Xl6 zZl9*aURt{)35)nU4TxRgWYnU>7jbU_)l{~;iw6M_5h8+23Q=42{oyd?-+>+8N{FS?(QRE zF@yc3fWumhMD8mFf#fi{(qUIxl!ZSBE8}J6?Io`>(UoQH`Z!o$7nyV zXj5|9xJ^=YANGQnYx^l&0zVQ+CJyo>!~#E|4i{fx`qCjSxVCrM4SkLrvDS=C$@FSJ z!yL52@xD>KAD+BN^xvA-I^nAI#<-~UNiN6rqT~$Nl1LNK*uf310^YwTLD{uBf5>f# zm_o8YdH#TMRMguaE}I7n9G2fgTP94s1@-|}e7{n!2vznX6BIJj}o)7)UaRMHoR z!+r;tpEHFvX=PU;$Pirn8=Yqhh*EW^Dg}eU!0zYhF6~Dz=uC=0=Ora{Iq;G$m|~~z zLn^z?sT4>tWUAk3CTJA7jBR0b%Am3d!sS3fjg0AWGo~ZA*%URR^Dcy*Lv(WD=hEWI z%ZRt@`L1}PAq!vFyw3O&U%KaQs6(uU{X?73c84WHzvQKqEfp2G(_E8s#;a0iGa}d8XU&GFA7@CWL>b43uHljpuk=w(_XAFD_;+-0eoH!=5Mwz|lLbIo|4AN4> zoxOH*$*aT0EOlasOMBq_FWFCk1u%6*Yz?Cnpfq1a-7x6{9 zF(O9}K@u@)2%;+%?lP^hGU3Za>QL%}j?AUA6MTkWrp+Dd8r>(aUCVr{xaFMY3ZD{U zv5{3D_Dv8F7Z-XTB{RF)AU+NLS}L+(I11;xvsfj2trxRUdGLk{P+~tDSGS=R^~tVv zM2~n(;BqnKTWAf$b0l;{qOy&BATYE^d_!cyaa=$=*ifOLP~WRl$j2p?ZRub0%>)Su z)0bYS|Fo$4aolN+SrFA{$riuHr4+R*`JawTPAh>i)L2+%HSx0rEBR}yDR7R+04cxA zST??It49Vv06PSG%M#WfOw#3RWi)5sc(C!t0T0+%?e7p+7yMSY z+&akOvQF}olhL0KXB~Pqu6aljgn_VwphWBl?;Z6iT(yU0lF&_D^_*uq(#rR#)A-}+ z`7cMjRZ~Z6Mx|b#_1;M+4r&n{dw3)dE4#77bpDB>_39B29mnht97fEAKBR?w(~)uh z=+5>)TC|mZo5kjbK1{br+K`o6o8ME?TG}CEvTgU{L4xMU-mQ$HSV(hd2 z62r^bSK#uFJOyr;WMEeq(>UFwOHgh16Pmm1^%PJ zHpPy2pSQ-HCD-D4JE1NmRF?e+RNT@}0aCSsnuB;{;M*y9^=<%gK|+Juaz4ql7+v(d z-LKGypip%7%nd_kBhCBvr;^TA{rcCY^I9>uXqXpt=}IADMc{>~2WR(V;x%7b) z6w(FsHP(v~foY7Y*!LtYWH$ykw##Dv`opDgwLw-W^~>4B ziT-7{&%VNtPG$+WQRuNDVI|!gVCO62Sj%2Rs-mOzZ2t6F5KyZVN+bRbyzCK6p(Zid zK4R;!`{YKJ#OXfC`6t%$URIBqyzOK^UH47H`SC3?;PAfc@>mrCz4JlkRG+#MK@dGe z=;>qj#>Mh8t=`qCnqTz#x(+BN*m(UuQP*bvOW?J91e_+%oNfCoGomUbo?#&4cT`|$ zSj5g)P(LJL_C9ajae=p}^4#9Mm*^Z@qX})Ri|=QvashQlFIb z6)I?=#Eg78xq#0^vN=$+2@nsx>nnp_v)3-HJ8X|xu#_hujwN@(dH6~?;Q9mxIzbTA zLbAz4lpOd^uk;Uxo7Rxmd=RY+Hi!*y)plzx9C+Dg9CGY=>9hFO+SG(Jt5X|CgNlPs zrw86yX$=`Rh?anTl*-j4tBM?e(ZG8l3W9EAKug_c5u4>DUBN`5n>lDTV?uxh55=^>yFgL2~rv7^wM>^?i~Yw&s_% zj;tz7Ir2PhbIv0T*={A_|2dK(QuvyoDlJ0^TI8mGd(C7e?{8fMBx{5)Q@9&ru z4!|N>jX|4$50ws0FT$gnt>*=FYlFRrom%7|cA>OH7=0_e7g7FFMKXCw_$VT`z;Cn) zGqcE3QUf^3%)%B@rOxwH)**^H)6;{``?$Ko=ZxnTd*Cf@}R)Z4ZPlxH?I>B`vz>U{{;ef+AJDfMqz;JNWDg-bb8NvP-5wO-? z6~MEz&wm09#Gp37ikqGN^4mLYPZeP5Ia_tyIzxdBCe1CR$r`^(9x}A}t&A?gOcDe@A27>0N?MT^A><@ z;Y6ur;3l4hVpZP517IIl(V*!Szy<$rAD0+ryJGspk@RJ*y=2@NUkqD$N`P|^_Z2q| zmM!@pU6c&)+7+QPA_V^Q0gO`T{T$#Z&6%gN(sAm>(5UucX%OzFu|(sr)&fuMu%vbN ztNxHqZE-Q~w$rIu5w&QcneCgU=f}z}{eD?tK3Jzgy#S>ZPfAWVM}PYLCiYTy=chH= zh_#O7>wWVww4%tT#ZPZ>FibtES;q|v%oc%T~qh%PXniGlJ0SknTq=^Z#x5RhwE zQ#71DW&&oa2_#u{7gz*>DCsPa7EcM=ga^3kzzGn(>d-3xjtQ#-&bs@H3|aWu1brH~ zBd?}#qEPS*O9M0<0FdArTHqO2Ao*0hh%)<(91L0mj^aQE`1+49e+UEpmyb%Bsob!Y z&cmNIo)(|fp2%3>1HzMP%~|F(Qs(YlJRqPlJ;PBjv@-Mr)OtZ*#ejeXD0_V z$n5O?FMV|3R}FhLm8|gEDfORAvCFRJln%&>`ZQn8_G~%11kiHZk7UNF##ZI%S;fGq@p`rVg3v_S6a8L*0#tBffLZ_70nE2B&xC(`I1Fwj&~}q=X2@crCyvikiE_+&{sLr=R6IB~9cjH( zkj*|2r4eq~yMOPC+)q_0k`LqBR+Hef*MO{WBdj;gvX2zBTC8rl=a^$&t2S4qxz8c8 zwdvfv-^1=bJc`vzoFAbOLG-beocq4y#q$@h!Gljp{?skysjCCwmsF*{*k^UTgT=_`Hw^X!VlKUUm! z0zW-AyW(`P;)^Kqo*t-6`35vOWH7w~wkkJV4G=+f0Dk;<2Ds^es3Y3|=*Nd{(|>BS zv|kjU#F83~Ktnupc!FS`oU1;)MwcxoXDSMC9%}*mI z<BO(_k4c-tqAS+& zgauzC;D#HPPz#t)ZawgqComLL@#j*X`b)O{pDy)0l1ZlGdC!9%U0goFEGNbPOJXF? zXP2u(ijJ@f?NS^W3*gmU=-U8+JQ!D>J(xTXr|AFq_nlWgZYX(}lg;7z< z*6~lE97Fy61nr;qoJN4YUZULb3Xa$K%o||MsCA%P8!{bEaF^||KhHZ+Is7?4LhU=| znf0G5F#%R$?=kk5D=N+%o;3?%mFDaW8dv+YTpPjYNql-dr%)o_SYL0!lH4x^x!zqd@JV*Q9U}RR_cMQD)mon4K8u%#jKd=J;(fO|y#MXO**{JKQDJ4ho ziP>BFHdm@XSO2zAl=}J#xqkYMO8ExyRl_i&rSmagK!{7>YQq-8-x`CO)cm%si9opJ zmwvwrU7TZWaeY}lrbA<0D)jjy)!+C#ro|dC>)`)41_?B4pUl<7?cxGg<4QI}nd#l6 zy?GX7nG2urVvPgse8mGSS|R4|KT3f3;V&hZKMUf3jQ+5O~yYzb50jbP1g8k*S5$B%lZLTg>XgE->wn#z@foH3m38L;H*}u1!ZQxk0YjELB z#ZIKz{oYaNy1UoB$@Cy-Bf7az?BvjYGhqaH4lseQawHJ!m`Ri|wfEdG$~d}~e@ExycYIer16 z?U-tNb=;-Gd7vbDd-LQit~JDztkRMLJ5XI;?Z>$eh_sa0FQ4?5c#I(k2ro@Kmd=SfuM9FZkH%3dz<7hwk67+(e8ySd>@MJ}R~M4Sz6o zZraM;lE*I7em7E2QG)}Qjj=<4_2L3c5*?~=(qwg_Q)Rlwg~n=@0$G`;x{X&H~$o-e|PojV@0jTt{V-kf@C!s59uP1sq=79L|_h#w&bF*RhNWKngbgLb$r(+)<1bt8G#*IQg5ZibF8OFYpvy(#w{-Z{0X#pbZ&c@ zer^rH*#FQlD$lP!@1Nx@M>uz3`^l2FLf_p7E^th)sIRhj()P24UMUF@k(C@uS4n?I zJubq{$X+Inj1}4P2{q!~!4ci7?vqTO^b8iK_T0AtA%wV~a(DUSq6a&!HY(2qil6Wu z^!Di_N{H9MRhe`HE={;Y>pcDB>lc#1PKe6m4ePeHvhHvqpbQGK`ThVZYs7b?PCvp+ zfw=D4#s&V9>Qj=#*0?X>;4tqxo`LTi7Tne4Rj5q{*yEaf8 zHi0-~)hM?M6!ixcJ^Wb1gE+<@06!n{wA4QpSO{S)9Ks1pwT#wF-NNrdJZMSg_3dBQ z233@|6gCCd+(>5X#y<4`1vWs^Z6zn7fze_P-Kx(CV481N||LypS( z2$y&jn8k=TV!7U@RX(3)PN5ny{fY(74RK!_oPcvDOSro3h;qn*IjGMz%Cdd&+c9GX zadfSU%_1My#a4zQ4hel!Mm3E{Em!7w+dD$a|EeU$o)DV9lP5 zDC$3}* zqRV*=^`$E-Tlx+h(@7z)S*pb31N#%#JG*L(*{@dwh@mx==kF*o=rI75b`MC0#MFxA zA_pY+326y3*as_Bhz)h=@*h4UJ{)HsBfXd|)>7p< z0JR{^2iJ5e6LSY;g2o2eF6n7;E+FD&JS%EEqCbdC@`FdBx$cM4+gzxNr&oPG7I6J8 z_DgKfiM2)NmuW$K?f!%Hj)}>GrjRPCPuht*26Y+1bED4kwHwmc@ZZkpX+(Cvh8214vyh zlXX$FtwIwC<8b9_sSCAZ4)VmHx>t^fYIPAG2z)kWpDf>arMuA3=m7?5DnOTb2%0Qm z9||+zJEkWLdHfyIF+zqp55TMY&t2^n%cqOx;lh1I?OYR8msTU&H+R2yiQ@Tz*oVgnAn z9!|h16*jHnj!u-Db5v{bsz^)CF8WoKlB-jWh5S`{51qSuUi&pke(Y{o%8)bO`B@f_ zCIa%mwgYR0TgdI3MtOuP{LJk}6ck27I{-dB$Z-@Y4flPshxoT}So)+r`o2&?v_K(K zBnAYqfOvSKVY+Y3Jd*ky7~C_6NSz^CGa9ut5b^2T8J5frHz*+m^i#fALvMt$ZAFs% z#Rc%lFx`_XcJ5sd;@zP1=fWSPKk|?!VD^0$Cy9LB%{~_5<^U2J*L{Cn+v!}3n?HiB z!7AQzetS8N>dK4G)On~KW3L%GORNIR(|LHtc@0Jt9$7=JFL&cq`@nL5Scg|qkDtr3 z*q!IC(!2cq=?RL;ar|$aG<={~4Qza$=kX9XbE9J>HL~kKgdrh7;wvnRDg&1N&wSNt zyewG>aTC^46-j}Q)+MkVOxcXIVL#Z`@Lo21acX=7lp@Bxkx)k0JR+obImsUyc(4_#D z;?R3nhjq6XKfMs>aP#`aSHEQ#R2pIz06HFM#vIE$m`>-1lUD-_%V`#dkf#cdft#R{ z+`>Zs@v;iww|fTpEvX5DHi>W6C6w{H*Qkd}{w6cHEg@8mW$lF)e+IKB^wOe$lVtaq>mc3&JBxC}yyOHr=q5(f|(se9Sd)iXk!KU)x9j>B~qx zBF?}wFFv94i2eu#ha)A2{4U0?FPZNGz5z>lx;5NBLmoT-P*!h-$2Gr8uchufZZ+E2 zdCpQ5y9|&YsOB_bLZfC4BB^*-J8@<}ZDxF`fD1ZH|7mf9zhqS(Slt0>x2@S~(B;1x zO-g)9-_Y8^a8gyo4ddNLXC693+s~e%)ZLUb;A+5p?qG_2NB!?#o^^ zC=LuppG8|Pb!8~D12p^3FF5xdGbw&PU>V8_Cysc|*$Z6VJE3Td`nx~7aQykkO^yqX zYP&@$_%+5w16KXQMeE;fM&c{w$ZklYEbyP4Qk@LMw zD)HWHUqWqjL|*Um6v>EHPQ@;8`Sr^nrH*SY6E$*Uc#qL`)0L^R)|Lz2b{}U5pNGf@ zx0mNgwtzYODnk-OjuV1UQxkxXDXd>vLjNCM9ugcsvafZolI@%ZV)VYuj9a_A@=(En zt!Qh>mUs;Q|APd~PQkVzM{2yIgxyMe8g?e+M@7T0UoP2XvG+uA3CFYY(CEU(^OZ_# zy4OLyZ(hO7pbW`sfkR-9`u!zWo1`+dqEGqed5Aw+M2hdbwMh&HU}8iw1Hg7~2OFV; zhAjxH%#ixqy#Ab}t;2?|pQ;b?2o1 zAKN9qo^+2LN582z2zL}peEko5Ab)!1PH=rFS?d;q&bC%mN~VtgWKlVjzO2YOtm?M~ zE8pCjr+MEg4jO&(7$>+X+#|sj?tflp`23CY>dOlC2R2clZ|pm8;p1*&iJref3KDW; zI`#C-**4xL!Q?NUL?!BciW{XnuVduSWWD<9(Lu%-&jXE?UDxXmbZtGK7^w}U^ug@F z%}+&`ANhF{R_K;&`WiC9kV$?$2}NM`NP+``HT_R(^ml>y>nH34h^t2G0=py4s1BD; zNj z2C|zZ_uz1Ci79GSaD$NdyM*Z5kVeqm`z+VN)ZC;mpf{z9gI9R=kV@-e{9#w?FPn3p za@Q?d!+p9uaE+dk?N!^p$2muBFdN_0PdSwpw@!4M=l+h4d2&ZaPUn7pSyuY|`h_~_ zqC#1n)+X(Rd3B47UM^g04~Rt^P+1TSo7)0cffObJexaw?Xi~)zVx+)EOkKB5KfArc zfJEd~fDtale;unWSwVI|mK83;Wn6DZt*WKk90}!HFDgf)JkFkS+w(4fis>S9%v)}Z%XtO%tgyY&Ykzb+0?Hai z){Sy4=mokWrGx#~d((2VD2Wv&OeUGpJ0D+Y@9S^UQTvMKOFCw9yQ-M@G+;D3$jY=W zcU59Ww1C+fkaKto@X-x-%$_Rjq!d`(dE~YPA>e8;s*rXaIzko1Bvs5i;)*h?Hepvd zSOnu294jc~xs+h(jPx*IAatOT^s<+wTP)vYoh7?DL?3u@Q*t^P9Ic1YNmb;e&oLJuI)Qi2rd3tC3Ta+DXDh$g|?JFFHbcma+hfg)HE{YG-TE3wDh|55PfP> zc9L?gEt@+f(%9Y&`#LhMzhgeoT(AsILk;B(KtLd5^OY(v+TA244EQ$Ht$oy1954Nl z2bDGk#mY=)g7shY0HV52r&kK62Ga{?K@d;y0p(&Aveskd_pW-YHAC>sc_Of&TbF?P zQY-i~%`f!?aJ@BsA1X2w6xHwa$we9fm}-eFvquhtclnP6zsK0}qLNvzgb!s-yj6mp+zJgJe8pLli3$auC8IH^4~sAT@vJp~ zGS_v;==P}Mn#+=32#8rXDD=nGV=ttugQ=Y-nYJX-7s4J~vl?JqsB`s>V$X7*3#AnR zD(`e#d394}$TtHk4Wz^+g}YC>zdHT5b`#CtJx56Te#(-FojBdfiZ~9^uBLgxf_TK; zU%KQHDvtm%kf|6OW?^dhpRwOER zkE*y3d%t7$mM^r|yRp$MF;!XB$oZzT3x6qp+g+76uS1pF z0%`L2kH0_QFgyOZ@ue;6?fTLP_;GeME(t0ih?EI}y#@U2sP3&uHV@a|ao#`#aai+* z>g8fCbi1}(qV{8BtV~+Der~R~+8On-=Pf3Ui=SWm@@CAWyw&ehNs43JDbVg0@+BZ9 zk%Bm0%%w@HA{ht*Ac&zw9myT(2sN!4jZN1s;W^epGB$z!Yi;gYy?9ueF3W$A@}SbG zk*_zyh%!ltI$2DuF?#Jcll4{REe`0!zD^pl2C6ks_L>Q!!{dkIn;;9Q}*UX}XRW z^a>!L@Jhtbg-$FmDL&l5>$f@ei!Wn@=%6* zBcOQKVAK`n($VG&1sWS$>!>1HjwJL^<9j7O;I{D_YVc|ZzJa{(L;qfFuZoqt^gP1T zuO-o|rdMq@S+XQ#<%OMf7RT7vjQuJj;78OE9GDuwQ!m7mn~uoT(WM-LMeA+0Q%eh} z<5diK2Cikr^cufty+BN;>RtA%EKY0Ori>N1D)N!*Vf~nR3rl0uvk%6@JOHOq-K=qT zI+(JqESv+!;huRUSZD_J(HG)bKEAxQoK-YXv=7U=vU)zcI@|*-r;iVIgev5+U-}!L z`N|AVSVw~3%+77aB^uw#b$rfL;?k&CxUZXntN}X4M&$~JE+txr?9E(~b*aCOya6d- zyZY>M*wfJTqNufEsbhaq=od$Q2j}ixSzWhI5HnMq|1fNtCnEq?s1(?<3ui^ZKfe$} zW*o#ziwsC47$o%#<#GrK6;S)cOJ^^OV9px7W36|KW9+;P+*?E|?+)@3G$m_VdRSS{ zsZMQv9zbj4?%YF=&JP7I-o?wkYs`EVzcIpNb(b0;F14afO z8;KjUt5Al!OnADuskMV{7bnG*5uhmxU0g>0G!30*3C%{Cz$8B~mAG1RMj03pr=h<4 zTI$GNjyx<-LSA#$hRXpkq-?K2qLm~u;ZT{%jBiS9((aaqT^;BW$FOtgu8U;TnB9Ph zXP$FPQGQBYF|+=bDl>3Y-Ru2s3GqrGvpea1x1f1I@jXyU$Mw5 zwI`tyi4m&qY2%KVV3iQsp=ZyZH`7R4H>TY0@?u)P%e+4rbZ||Mt9QyWEdU|Q{D$_D z)sQtpJ%$iRbaaj;B*KN)j)d^F(%f~<^&obA?N@S{LmKb09*OxLx|ag=*Fmyg>vvpm z5bL6g8eWu7*j!YSI6|JNUSY{SLDT_#r$pAlyo3;CXxKU8xL?!TA%-W#K#; zhZ-H|D2t3%X-pgl?l3cX_b>~DA`k{UrB+im^+a(SS3gizFVI}>y3ekI4rN6jCb|p) zES+~%lw!~w^wTV4Bd(toLn1suk_EbaILc~;Xv2qfG=oA$46ImYTcL!+u@&{A4;jnh z7vhhYMv;y^a9-n?Ym)1*pZD%jo?KX%P;UBa|H0>&X*)Kcz&{4;IBouD+>=69EK{Zi zcRpRibhQZ{EH+3J7P*_0U$~h#?q!CpF&|ZR@eVzo^hxD_=~U|CCsT@Qqb9Cqst)%g z#81&W{IiluR;Qi76QuTeP$Z8yBat=lUEDynu|Wa}f9yfgK&_)%Z`R`>RG)A8STFU2 zVvSGMU}#YCF=4l_l67-Hg0_FKzlT*;fP@Gfo~o0uC!uRt5GgJaxrPZ1h*&l)5?x5z z+~RAc=~b~D@#g~=Hs~&A z8C%sCj|u+=ETb&3!hL*ZhHOV4ZrdYu?I%za!lKZ>C;=~$CG@aXBQN=mNnr_tK@R$a zMB9(2{QxuOn}Gx~(E5AWS_#|0A0DNSgLcF!|3uDKOD6N}M8FX4W}w~gCD`yZ84QRZ zex9L_Kl`pZe`se*@;^}l;07A{5vFz| z?ve4GbtC^3+L}Wd7lCXQO9B@Bt8{XBG-Bn#n4wkK-MnxIE`y_wR2_v?Z&kNa*UQLc)+L-RMCLX5C8i4g?F&ylatC4N`WX$ zodz>I9G4os3S8n?O=Ctn6txvG=KS7~E`jv-l^X^|_t(?s zl8))$vC?bx-DelSB+19Rw4lYppY0HKi~D4NAAE6QwZXR)tyyI{lHxn4Jjoq+%fFL; z#f#(^aj=|)eE-Xw zeI|b-9e>W>9rdV5qyEvO_)BvhJ<7pISj!{+LKE~IEaO+v!=v+I>FgLEJJ@n`x?m@wC$XF$sr!~_7JA{>F6FM|0r@b3g; z>KxGqtHjCpXl)Dbl}A>xeI57TuHI;N zJ@?5}(2a@}9p6lL9js5+ztBFur?{98#RWRAwX~huU66k>g6#IE^2nr3k2ZixCnW{y z03D)q%r@49x8is^3CKDcXv3WfYG@-xvhV5c2N3GhVK;NWZY@qjWSiVCa+6K2Eqzy@ zm6ql8tcG2OXmYv&UTR`%G_+#w+Yk)m0{1_!h}_q{LWmU<96Ay~5`xR+B(U?Uh%|J5 ztd;y%04U@@Y#Ri}))lP;{5mVHkhTNkly{9ts|8iGL3G{~{1BdZfjHM3KjN$HfHt+9 zh6@a|x`j?hsNA|hY(cdI(mE@;5<+`mN&=02p@H}qxOQYCFYP{-$N-iSxq-0iK@iNj zxX&?e4Ud5;Qk4v@CE{{o4 zSQKH0p_IT*yz$uImd% z46euvz!t6bK<66>b&^T%EBpFqrAfAA?1Ue2D0&tvv^m;nOoY89rFPB2*~@LmE8P|u($Xz7vfQd zZdWiqiSL9|oIZ+cVR2=Fop#)`ff9jVN|wQOYNLvH#DygT82wg*5oMwp*M_M)u&>p% zJhvh?mODCvM?7}ngzm!GKX$^kLT3l`y%6ex3Qv=o0~gBhe*&6Q9wH@oK|823gt}GP zF!z)d@T01GAo(XG7|7r}tY{UU7XhCJFZ%Pw>$D`tAvTDNUOWi;2C}+f-c{HexVab4 z2?5QnP(kQe7@m*8ew7iF0(#PJ*p` z+uIy9?Ms#pcto?`RoA&WaI;F!f|LVR3;AE)8w70X9et}fIF7Jt`r4s7q#zT?C}=`9U?hi$APvY2;?noFIBQz z7t>FRE4e(FdMWo_lh1~tHe-UkXSzaj;Pai&hD-gjPY)92$@B$c!Wbh({FkVDw%{5f zE8L0&mQJ-Nc^=6P3F99`6>(e|Vh6E-vv?6(r{NI?KcklbHzg394laIVG!OQMk9)I@ zjaRga(?UK^D@cfUi$JYGWC5N-tER*O0&|e~ERF(VtIZxrB1r`@5O0_ZD(8`%7N!qD zqp^cRBUHW75q*y`&}JdNlgx4#&~;x4Pv#{v5+#vApdG9}i({d_Ongy_NQqUSLe>-C zMztF=z05upkM={+ zPw@7CNl-fZ_DBG_s-tKAy^4p+uBR@ z6oHGMkPyz|wBYu<@VZ2_Xtav1Zm|OLfDku`S1j7a#w!B239bf+Y7}r)fsPbun;m%k zAe=HnaTSG&Ne+=5+Q=YZ^$(swZ0hPKMLm{Mp_C}n$;<}r z9RUXF$ngn>`$&R=-k4>nTlekqb)SLaGWKaQb-J{qGXi>uJ5S{W7N?e)q*I0V=o{wk z;rFY$M;DWn`BBM(%w#Foe49RaiH*<3Ya{G3kUt^Yo3+HRXOXqCjWuoyxUm$Tim&(v zOeI(23Szjpr$ZU`pSy@xP>^-&cuG!~F_V6)AFu9`5ybhubZ4~5^tB!2BN)+6aVfoz zO=nICN_g)|c#Z5E$ysP4eZIw3DS-wz=Ddm6!48gRP@zf};pR@ljyuLRoTZD?m52DeeL2qdDRtwP(;0&&VnD4a|&=Nb;Y$-rjO`yK*C?1D!^ z;F0OR(epUoTO2P7W&?DGJ(>XXuEW(s;Mo-MU2#+&HP#JaBNt&I7F}!*(L`g?*%oLs z`T^~HF$U#VycXX!?XLK6N&-=}UX(KfQ}+&G9iN6yV$g~*;5*11f~%MJ0p5QHRLxwt zjp$r+L^Z|+2%3p%msO8AA&WUkJuNg485O-M7CLqTr=vi8um3gc^YqxrxSHfN9^r#z z7F9w6E|CT9l01kF{vY*{kLTzDi9&3_ZqtilHV%wXSU1xUKl_$qs9=K1C5(VS&tNb3 z1`Fow+PavWaUT?yoTDju_WCNr|`7FdZt$PN1j8`tFtEyyi1*m8GFOp)&e}>_`~dD71n9BW%J)TB1@sNB z;9Cl>VNcm5A0kfXUe=y7F-IljO9Ivo5!$Xa->u;A^E8ebo& zGhKts@JCy+2SdZlpQb%vGCPlSch^c(dqHD-kk~{QWMRTkFXMH(GivMX!`j_7?E`>r0_n<6PUFYsR@{M*W9KM#1;)9v>9g zlbmVK=H=gRH&pA#OyYsGRefOP7u~pJTp=L_EAEL~G`vE0{UIWKAL8E^ZfKt;eE#J_ zA$}2QOKJ2fh)WKcl|Bu2%m+=jcukh~siJ4iU4JG{c#*NNRx<1F4C z?q8Sca`W9Sz6@vauruIm%{zJ`df5IwNPa+k_7?}n9O9w(nxEX4=~ zeb}D=)FWyW40P99Q+9R-Y;kORx$L|=yP=t9rCMkA;%NkRg@$c@?4Ee!8_v?!P z*nBBV1^89H;~=1%P~xzrV=h6The1MI!8DFPusK7Dmo1`$bpu$~dzoYZ+~&X53xs+N zv4p$0l<%0QKgclWWByMY_U90`wvMCQW&p$I9x2^qDj#|mvFIndF^fEY7TJSM$Ioth z;c5(zB?3#;U4nLGDBSz`rg_c}#T#Y@E|rT52Ce0RAXxPN^V9z}$zQ6y=4{ zzK-_JVU&49y5YK)SvF77Olz6zWoG<=qA-X1a^Yuy_gPqVju<1rBLyBgM21}}mqzmE zIn}SHMUgiUrL(6G4ZA6pU4KW*yq|TjAVmb?; z3k$)3OJ><+b{fcNh6(N>FF~hCU%Oqtc2#sqi-pA%dPqrs`QyV%WdNh%0w_w(cDOIx zaL~W++WcU6jDbo6S0Enq;yzF!4Pr1L<~4~t>-k3ABFexd=u7wY7yNT+#d8L}l?S~A zZR!5XP4u4`6_o;6g2kEE$`h<%t9MA>f z&M0s;xHPmiW40DPg(5r&h}2h09{(wQGPJE?ER>?o{TLRQA?x|eXnq{F1(qJDE1g?{ zwq!^GBO`?>bO)dIlne;uBH*rqs4WqzG@%S`_FuqwkU#ob@&WYD zPKK3;T8vraeo+b%uaQjD1?CO_1@aZcql@S;IJ6)4$Q=Ihrpd_$3&3J`9NIf-z33mp z@(Tj{cSUUhJU|1mH9#Ac7)x|Ne8qqUS}k9q*D(Kf{mnjO^(GNe@YI1<8M5bJeaBb` z1sMw3_3${jZb}&9B7md+4g3D<;`_U<2gJ~~Ta``5|b3@?HkQ+}ZO^D!2t zU<7ml7l`y%$($c=+KR#qgm0~Aihp27?){Y9`(t7u<^Oqw{yEcMqyoGsbF2>=>t>EP z^&4PGHi&z_filUGKXtK4>I2E3-%)zFlp0;Omo2u}zN#3OIh<!hIsc_Y*=w+{}r& z_R?t$b&fF`b$9SaFXf)Tamd$Cw5u<+%!CtLcw4%xoJXgK9M6WpBnj~t2z>%e6~sdh zlT2Ey){~oHH491pV|H<2j=shIKJ3EI;o_iLGGGV201RNsNKqd(5?Wwkmf>xs&#%u@ zNb%7B7^ltrI%AnV8tABqBnbeY_^mJYl?)Hqa?*|fA*r!i zhJ0~UA_1YkaFpoX&!%3~a1d*a3+^LHpc5m>hA(~V@Cb0**&a3J`?K>h3n((G4d_5IUN>x2ngCZCE( zzje*AxIDp)?^ohA<;)Yw_m59M-|75|Zi=F;e*21@4maHXnn&gFgwORsX46}9kFyEP zGRSN>aMEpkwAhI(sWdUpzTv~Ht$_R7t|*V7!i8XYQHC^X6C0$Cc6HT7>C-z?A2d)O zeqHW55&ozmnJ5xEo zVdFjSX#8!V(6WleXh6M+w9iB~GoyC#7MUE|2U5BeA28va0B9MsrGBYrxHMIMw}X{I zCQd}^bYcmrAnjRbk1(=igW}^fO~e8;HT@!D%f7xx136RU>-cysrU27-T@X?m!gw6e2nsc09_7&irX@2v z=FoLfs{C*6fObMPe(&C6nAh!7-XIW=PEYXgqYZc=)U1cg)Ag62HGyAG;wT3Tbzv;K zAKwzf@d=oC9HpC1OHLQe~UUIgYYZarKOFRK)_-6tPARMI;Smb>*89Gki(~&OlOMj&@9>YAw5BGAa#n!g zye0e={pl&=FA}G%3%&Mq)2r)sE4r?I^_uup-6Qv@Q=KG--EXPu#C5}Ts|QX}C%yP4 zcg?9oFO|YSLc(hXsblWl>v5_;Z2LIoR==97^% zjti|AmUyT-bn|be!Fhv=8~W8*b6zG!Oc5XqthX7L2?_Yj)>v$#g=A1Q`?-q_k&fgEOF1>_qvbdf@ zQ-TfMr9Uhy5Bs)e>v#_l*x=7n{ApM9Y2HIFUTr*!FROc<{DK|-1~I$(1t&j0`D=T| z18AAs!M6$?d8W5CC1=4F@4`{N1=sFhUH<#y1KU{iXA>Ip^jCyy&{E}#wfug2>~V8R&DYNh@^l=WSsB}6A#cvJ5!23q#2M3FJ8I|zjjo) z6FJ;2f7>~<*{dMcLSaX>fQduuoz0f-3e}^j93$aNxdWnB)lgHm$(qy)USussLJ%dW zS@_9R5)ITv014`*azB*|>r078AX%p)#qCxTus)>AD^nM=8>ay{$?4~*lA?J?onA8<;`|PFE$Bo{QDPzk($? ze*+Xon^{Rq52>SNr22F0A2z+@4rR=UF}C?>PA_^VReFjK009eu+ZW79}`?h(D z`h1EG>M!q=;in$~vP7Aawg-oomildUVdbc5bOhSpcY$}MwgQ@|VIwHJOBWC^?FbfB55-ro+~`W`c@uhSdqYs(s2J4Rmm()^lvJaSv~#BJ zt_#33u~M*Dps|as!C>zwc`3~ICr1=P1r-Xdc%!P%%NfnumUXS0DMY5p4xV8*q^ zlH@hO8YQLBXQxrM8IL|rAtJ3Gg@NU23(fbnij8BZk?F!@uPCibrfF*EU?@@iv1d?o zjZH@!2vkj133>q4Q}-R|t=2`ev4W!G$jo=0To+HFCh!eHg(8n2vzHw>m@*<<8xtVI z6PzgxtuNtc#uJy|@F@NkKl5C?uC$&CU`WlkrlDuRx=hz+fFC}N!k!6Wgpx+FK^`1$ zCU!U)@LS~>^i7ZKb*hpS}z{~{8_oQeE z*d(q5TKukf&iiEvMAX?zeWW&JgNJsb!bpXgkPNLqluv2mu~G@JCKVqTsy`0Q4FP2$ z+L@Zwevlp6^f?X`Hd>7omR55FO=4g1;g0>gj0g$y7?7yJ&5;Wtzh zSa&3FEBewA9?2&SLQ{%rAuO^NHbppF4Rl05nLixnTy?hS4i7gQ?$rd3)bcda%&H(t z3*T)ZJJypKI?#Zn9K_27l$?Z&8e~{g{%%wCtgcVoRJQi|O0zyC_6Hfs0VUdS(^lCJ zS(dwt8nodMi_>Zw4Wp`@sdo*8^Ul3_|9?_(;LJtHk)9j^l`&*{+cbT`EC~;ynBIWv z3p%iU<=v8tY^p`6MJ0I5f4Fug=iLRC97lA~J0o#wFuKscxg$y51yAjpb7DIvC;dgx z&1YgO^Bc1jWmXNb@C}j!0kK6L!=Hc&l$roAXz5stULRy6SSYMM34B?tT)_*O)t2}9 zSOaBhnBJAAEMe?MW}&1afDr<1oAd$y6)X*0DM<;9COG5ZyY6?WZAs z2`gj-B={AJkTPI5nW6HQc<+Vf$sP}NNHAnMx zF>ntLB=;Q|hn9=G`S=SVBw!IeMjfU`yxaHWgN_mf3@WsMG?&;)BAQ1QBN{|^8>4lI ze|CuHnZ;=^zATm)!W}j@QG;o-F_bt9^~R?6FnqEN_zCh3&DR~NeVZFSF zr_l&3%g~GpZ6l6(rR<{&d)L+QKBk68ge$S4)dwwWXVA9yHaxTUc}`%hw1}qJg{jiO zhsE$*p`r$S*xiUdq%IEf^p`QkU1Za~HnnF&-d`km25O^#&;A525cm!JSN{fN-}@c- zz&EUt}mzVcx-XH~O=`$rYW?YjtFHE=AJ!h}e4NqFnQ z_P$+O2O)1CNiA`~=(s2&Af{hP*k$Eex+XlSG~xL!$U8!0NJX`p@KT9FieQ3)6;G*p z?I~5Z#N6PtQPaXn6=w5|L=YO~1Cs8d0S+B{m&vF}~1vp%h{x8SfA?)RIf1 zXK^t8^5Q^y&9m05H|z@K4whV0lqoNg!;XW|9Uvr!zK|Z$M@GoNOJr|pRLP5WMPn$( zIDq&;VFPd_^B}zDW*^VgU)B=bj%^Q}DsjqnAw^996P6d63u;mQ!lqkq2`eCe6YGWY zoUYjp!ZVf36t8Ak(lRu5OwkF?jm&9+Zec|dM%p{6tz)<=5Wgu@fPovFM$K%O*9Hn28?WOc>6{H_$+w>k&#ni?? zKSap@YvhiJBi?yN<&!!{s5A(=vI8m_D&1>De>W%1|D9!H2Iwn#kDg$9tF$YHoDYed zA%u5aVIPSQjo)G`8)qbpNQwULq^`3Rg!z%^DDZ1+rKt?Ipv@mM$j%lnwtfvlm5iVo>RkKrfwTH*ISW_oLmV zF31ehWD1bi@XCF%+dYlWJ*MsmhaWOgq1H!X{?9rZC-1Gn$zpX!#Q}0wA2W6U#-8ID z&2)bcD^Qn$VZ_#jfMJ9M0K{TxEgQcHrV#{yf-9+4oB4s_6QI;+>$KpH#Loa(U9G2S zwB_73W5U_3W+$>AW1O(`%x4pm8|g2DLStOOuGy^5h7-E@ zK_jR4dHX}6fS0T$Md_KSme5G&o6@G0&7G)V+(4#&#s&^FzoD|`EUJNpZ23FU3K8)X zYkbP3_W*yrNq+@X+(I_)YqhiDx$NV}q|g*+GOXTa0e`5(W+jv(cpodOE*ioeQr*mU zw4Ym5v+>EaKIR=lwuQ%ieI0PGYs#{%Euw%dIzg9rE$- zHEEp9<~KH0%f;>@?31&o_ELE+CO zz>6jWh`~WHWtUv9-}*3?)u&QwdH`FgvM=MjWgvD(Uf^)i=o%g9a3~G*8Vqq1hAtdF z97Yr^+~OC?va}4tA5 zaR#fk8T5l2)hZXvCcpr7Nop#MKfB1?IC%RJ)@Ij-<$;O3Tz9+dQ2hK|#K%Zeldong z+<{gUkYegb#C{NHISJYP*-~26`&^z!9Kop**EdujZhh{*3;%+K1}`!hoyAd6i$IZG zXx^81M}HykT5t*TW-8^9jN=d<6sJBn3B9~e;GEQMb}A{2RTK@7+9+5?Jkmy+o%m2> z)Rpi8gQ(<06vnSLR+F}=e5J;crNYJEBl{q1mLiXy zvV38>iS5`Ofyx2B8}RRv7&~x++cI7sGHamb;$AOghDT3~Ux>k&QKKvl5Xbwf);0i> zargpxNr`fRs=G!LnuJhZxW*LQE}BGb4G?R~LVYFzI!X=%Eq z5#HcRaU;rK+lVH=K^9P+i;75lnp0>dljnuqix%dV+~@WLf>#nVn;o`1wrn6F>97liJpb1jGG59N3v$ zNbmu2v5##cxzrP=_K7p)LW@Pv@`q9Yy*NvRWW8b#WX4R$YOotTHx}2|LYd!I_@~|j z_8AnTHL|by>VI0q)?zeKlT~&)OOe+u6;7OJP1cyXd&WR~wX2Q*;B})or8O)beSvyG z8VWgxxhNI<^y4O;_`3tj5D*sb@Uo5O9H|ovoFs`x8n=Z_;7_M{D&!at8XCd|iawdo z0OM2l(m0guT+`41QYI}5A}Gtk2)2q?na*s9FuUv9V1l}HLU70)UBaNY>5EpfXfZ-5 z1tmDKvW(1ly#P64`1V6$3JeLksG5jcRl6b5R@p)Fb`n-L9y~Ee2go6}iMy zVdG;iy*mazrT#KlOc0W7qX~f&*Y$>yI@Xi(TFjdxJL9J9D8xF8`E;~KtdXo+$S5fU z41saJNtLlIlv<3fEYT=gJ+A6vgffW+&?T;}ctqR-aV{=-bpeTRKc_!d(})%+AZ}BG zqvEx3YTYvcjtxdnctVOJfP+k6C`%F~?AemKamXPw1@rS!3Cvqul(yBvt90%%w!bT7 zP;XwCIHaT`;b@e7#5i(jeXDqQZ~fTvcJpSi!$wrkLAD=B(%4H*VB$qaAgG|ZK3J^K zbLFmOut6au_1B?gW<&>l?%YY*eD{?)6%k*B9-z%-^=>`rf9s^VgWZ%;2G!a1ZVpzE zG&Ib!!Gp|Me`UY~Mg9NR}#O=k5S zcYnh4?EFdII~OqYUHvRhx1DwCk&kvvO=ZNNgZZ2-nH8JIr+O8-theL+wKMh&A~=l9 z{FJ*oIcwhXhB-OJ8E5MEt-=dzp(8Oz+4lSb>NSrx%d>@+mQ|1Ju{eGGA7iv*SZD*4 zWw9&AOP;cDXstHuT_N}ZLDIhv7XOMsQ#4j&z9lE>T zCuB%M#fsJQw`&I^qqAA|vF!xvo0^(cO@zr6Mc}CHHGbPw<@AsMIl+ldf&wJk&k^6rU0t z6s?K_wWo;$;Di|hQnbM@Hd}lJs&t1{pyT7IyT4J6$*6!VirtsVp|Y3ZKjx@|<<^MH;fAgkfKjO4?)$Gq3zTACpk1uV5KDg(u%aOm{<5p$y4qSCsoZWHybBSZ8U`PjgHJ9rfHwP@adv( zB!*2}!V4S|t2tOo9{1Z+nFiQF5FUq;X$X`xIAvrb<6C#*A9jbe9tOo{Hq;V@C?zCx zIfd2L*DlD+YC{+cadU?@6Z2KZX(Ov&7|+$1Kh$r&G&cOdIOu#EeG#*dGV|bht0*Gw ztbnrMl$mGDu}nda->z?)C~j!Jx26BFltXB$Ccg%3uDC==U4sJJ{+hpQS5^=aU;3bb zm@U1S&+-JVx-jP@*VXRNT??8jnY85uCnbndJEL&=A1<%+~Y07y@x9^V=C zl2v!sF_RePy~~p!E4CUPL}sce)sXl^ZQGgsyYg=vH<$ zWXF|Xe|oSWsy6rKoOwU6Mu9vukd;{+511wq|D&sUj!a&PzcjXs)1%WK%P)z;HakpV zgiZ0fRCC|$~TtE9lJ}beie2UdB9~-a0@9S?;vI@K@ zD_Nf`EXzK6GfZ&r#^h1!?YicE>ZP)?w6vkd?L=x6XMVY|{i`0^<`!dC_EpsneDUoS z)654Nx&d3%X3HPn(|Vd*A9@6Hg;H5~@xHIm{BnNBiK92tD&3wc9?iyf@X9^TAy$Z2 zRimONcvWWTZc+EF{4f3cPOOQ&?KWV=EQ=t@$TLsxy!6~U;GyrTd(>k+$0mtq=exNr z8w5L5c`3us|I72N=lfIv(y6b{WY3Q;_ZcyLk8hX5CUSY`T#c-FvnZrKqN%Om=k(^y zUG{xG?sZ?5=Qq3SC#>4Np~o1UTe02G7g2gvi>_tutx!K*zvIZ(-4S2Xc0JoL%VNR# zW#4go49Ylnd1r;iCR>j{iZqx!IC5hwuHQm9-ySdPfA;r6w{IPS{U_u-xj*Ihh}?R| z{lk2Rn%y-bR0tDjH#UMt-*g-L>3*PVa4flPI7XMR3QD7F7DdH(7ucOjyf*b!;+YM9 zMl@0nIG6=d3({+b3NIgcIjhH!A%R2OO14fc5>&09Fy`}JhmnykL(g8``EtzBc*{dM zd&fU7JYu^l+|6^rXUkr2nbYqzKGpU;{3Q2N>W1==-9S-$=f`{B+;WH9tKUras!a`@ zjEo9d*@M0Q`8?{y4HNR8?ET{2LY{rjhMUMtByyv^Jh^F3+3o9LTW6H}46NPm5e~%t za@e^fR+k^k5A>hCB+vEi^CCB^sbwC0;&vs()7ErZYwJflx$tSJWYYP?nXpGocGqQu zCvKR2R`!s0Xxf}^$i;T!$C!@#y11-+wS4t!+Y#JNXQpZf{V_GGV2t#kRzI1@gcWSa8}!;{=I3lK#G;!yfiilIeT^QjjGQM=81&NVHrli9C7ahToK!T6+^7hN<0jt{hx3el%LPB0bLp3x#68;3XW#xb-XaJ&cO`02+8MvV<+&%;+rxpSkZ<>#OK#JNMN6+ob-zp9Hpiku zx@Fyyp-cAujt+4r1;9vy4z@<}+~f`NDpc=dUk0#y{Y@?M&z>xu9N1^3=Z~`sL$gc& z_z%pSW8`mKfeb|=A1F$nmfc=29hA^FY|r+qBjO~~z3a!`Jkqn!Y~j-E{eN!m>Uwt1 z?IX0QHs3m>9NV*gea?7GXX;<;f(2K1d>5PhX_YW<_micZQ}q0VdHWsq^caUgMur^8UgqAarv90R6jhNEI!g~EWb>Wc_330pcVV8fxXJCVi_lymq#$LS~Rj|V; z#-M{fA$8E+hytr9c$xPLpk-IKRrNj4uP1%Jlw-T$clYaz8NKtL#jz|6=>vle@GtEK zC>#wA38=;^k*80E0P?)b}ICf`!F zh=`_2dH@trC|AM1V2%gvXQw9N6!P9)kI-zbi`tL!^0vO_FBlv}AJ49d`H8SbBLBdm z8Ukts7FN@459M>nswm1thjJ_WMVOD3q>~t4&E)bzaN9h^$vS9?2e6iSYb5$VAvG{r z^c0NWDx@^-5DKB$Asy&|MSDCPa>Rs(5TA)Kf_`qf0-W-Hb47sR88CFV_X^R-Y2LrS zG}JY4Jo7d?j%Car%DB%RslWCLD+s|ixN7&^MHnGh$oRO%(go__tiSIc2OvM?ZbCJ5 zW+^_CXcS zFW*O*T^>0oJmH?`iWU0}vKT^c`@p!q@3T8&>Z{#Vzs5C4(;B_}y8M#%G{H-%{?$k2 zJQHy-p^5;7=UeEL0rHyMOkNLwb5fw%yF0@`U#9`B zs0j$n?+rpy*u@ao2q7^E@{A;jna~tnu^6rc4%zcdGfjUFw-safkMw4m{@VDtgCDr? z>?3ikkw2)JOLuR&Gk% z&nzytf5H7iv}5Dh(Qt!HjlW~#xk>87NPv3UMX?4lFSpmQ2_FHKuv!;JU|9X4B7lvr zL;w=v=OqxolHdm}z|uJ|@O^j*Dua~`JB@1WxpdRZyTI>{EoG1`JA41ea2`3etlKPL zJXE6jED*M%0fwi~O~=Gd#Pmn7vrL$szOP!MB!7R2{5=i8G@BqUfR&%-0|reY#Gg7` zzx&1Rjj}bJrS{x&Zq&0jkSHd**}Dxn zuwa4L9Is$>hs{aRFCxFFxa&2n{(0w5Qern?HUcN*7%R*JB+Kcqh#0KC7aZh3Al5Z- z-h4hD2Pc=8h7ga7g)-S2!~rBq-ERnb>7t7UBA@x=;hewc(*K*+&Sj9T7<+&-)ejI) zUD!N$k90hie2*ZCWyWv4B;MpFu}2}TZ5aULlZ5o%+F%`-zwJVQ9Nl+bK<)pY#9vY&iV~H#t0TrvlMi6 z@b`SB3LXw*uLg-#dN>u=W92%T29OKRKGi#J6V`QIF|on{MAO{^t5d^<-uF6#?Ra=j z+cSkGFq|`(V%?Uftl6w|IN;0I{dI0GZ*p9|issN{P5Jc;#e$wa&Z~2SManUKz~zR* z=_-j5Xn4=(Lc=PdCl4sFyhn&(nFR1IifPQ?q{(FpPhnyS!MfDEK_7pm*>3C`yHSR9 zl@Jl+Q*TWEoh+gH>M@YePT-`$f1@%u>0t^?eG3?2Pc=gcB(=9uh_B#&qK^B<(V|u< z@AU`&?sD@O3+~vLDQn`#vPbUCB0jY_ClcItv*#{@9xt*Tci6Vb(`D1l|Cl6IA6pS` zA8)?O{+WT{Y1_Y8KiY+Ef3|cC{@9BBB8Y-@`dGT!cOy>&40t;#fEWYpIMhRg6Igk6 z`WwWCln!<)2@I|GFM+-BBbn3k9BdX}i{b->--M zuyAlFKKtBc-sB&~(${aGhq4C7-5i){(?6cKVBJAtT{kB%VT7i8-Ql_atBdaNaC2{m z2l>~pdTA%GO;s+K$cPp6%t}4{{LiF=Q-Km0}X%k=@Y zOm|wQpx49~y_WRskt_Or{GZtPt<7@(9~?9l%TR^=T?5i@F;;gNLH_~&B823DQ1-7b z{a;{xP>U69?;6th`ZtV3%W7Tq7i^7|lv*J2NwIZzE)gTF?*i(Alv*ZY8lXrXK(P&Z zDeyYEV;_I*|CETI*ev2Diqq`>FVvi|dZk#NKWXoMAL}Y$q-`IF{4(;7KT9hT%U9yF zZt)5ONz2+i9CAa61w%i-_No1Nd6q$u&xT%v9>=~erZIxhU4H!HJko@_b_@g(L(`p3 zd;u!!-+dZzp<|5NIP=)acg#&GUG~0ldYJQzHQfG}lsV)u0qZ(1! zMZ{%4qlwg+0}-#ZH^>!j20XLEM-P0L$EA-zUlXU{>5;QxR+K8FPSEwKyn(J74AnDp)&$~Z*r4Pqix$^dHY`QJm<1SJ!<1XrV77IgborvAw9{zFN(05-4rrL`%L^qP56vHHY zj2OYC|F3>k1`Zimv^xdel?#`Db#t0%7=6j6>(Zgxm38;JAb}9A8R)klm{Kt;EPrB& zJpd{U5cJ@$0HY%%5~@Rl4c{Z)x4O7qd06 z@Gx>4Oq4H9H{7qX-!RX9l1ndM;|_TP)jLzp>c5S@8dkMKdzJs!j|gKKI2kDc8mqUS zK{Gs^_%a!wf(6u9{rJiPDF6NnND!hHJ=mHG@K(U*eNjm%NPU#_CwYsIMt$8w&Ojtd zH@<*~z{;m#>I#JM=u&`E)O@MP86oce0S`pU2fBl_SeJ~~fq>r&n|udB&##4^Yr`WG z{LJje=R@`N5avzz@*BqnK~LRjXMs!bEpB<9B#JQ09dxCZ<-PSVk_Ss2zb^bgRevlQ z!;0*kPOeoaWVu#Ne8C-O@$)LQBGLQhH0)Tc)(7h1bj@?vM?gfA?nC0I zpF`_!@j`iHL!I=tUQc)zbOZK1V1M70r@OWF!P6TV5dK8jF;Pm#x2v6Ae z{~teg4UYz9D==f;JdZ8x3Og{W=}YI+!;ZOf$1Y#nUlhG-%oWBH2V2V?R$Y*=VkiZf zwo-7Y@3&XJ+cjZ`bX*C?5FRUf~?uyeOB|6|i0=b<_3vCB5rKVtR79y*Mt z^}NevxpQFdciP!nrSDIlS6^7Z?aOYl!#yK+ZTKV+NBSZ4^J5nwj|TQTVA1PbNZ2@y zei#+dwus#O5EUr_KfesCt3uGT4MGh#pZQG;9O?>RFE zad5}~uPzm~KJ+odsayn_F?k|{9A0PHA8UFloPjyeUAD@SUA1?7OBYh-LxEV5cUEbaO$ZdeEj|Y z+})zES!T2Ng!w_HSDwQwCtd7UNaVL`xs=Rty@vK2H0SBds9nU~W?`^wwb3IP4+pYw zEmj`ICz!w?BvgzyUtTue2D!{!3T7G+HJ$Kcods z@8qN*PwnmQBiAo}{yKQn2CU`~3+D>Rcv6%P96X92glaZv12~jSF!02DV#ZReP76-7 z{a-*spyP*+5~}s!Me~9nE(hC`)IR`^f%ufq1xy1@_U)h22^9QU$HyoRPImb%AUg&) zw7nG!VhcFwE2?2<$#7HGMjq?|rWpgZnIb~~>>s_r;M&)Frgk|Q5E>c=dl^05=VdQs zS(U%d=ws|U(ULHx7Li3?}u1K*e2yrvk}gL*jo9S6$v$q z4}Z044{fo{rqg*vcYfZnWc1d=A6Co@?4IMA_bd%jBwqq^Go*4 z(mLB0BQ@%YTRw%xP$8aDEY!F@<@O;y3FwX$j*O0xr0G#vJ?u#HFVX`vF~#S3sgJd~ z&9*u}Dm(V-XC*pN=uQ_I%k%qhl?nqyiL7q0A?S~2WnXpl6{sR#i+je5L-@6E>cvDX zrtt)OvpxW-RSdrpR`!Q&zYN(1NPGB0+*L3 zxNdi&o>woPGVJN@kr_Q~${OdcTiwXJx@^B$H(%TBhx*o9mL%rSp}aI-8F$_GlPHJ| z*v0((eA|AjHBAw5(C#&wgS*KuuH7c#D(;n zK%{GUFNW=+4IXchUzc*Qk}!!K{ZbGmm37~9Q8RB6(GXDjZ!zG%XZrsI3H8MVyP=k! zgMb!ixG8xI!1d+n=+oPUbkP5$kp7pdfnxdN@x<7*-;~Yt#uoa5-W~|ktn$XKUVHS{ z?%hUvgJjxr$&bot?Ajuk{JDs0PI(GqS4k}l4>7+`cl_R|p?f~#7Od`PUdm>BOzr77 zbeZP+<6O7zrgmY`=3V=wwiX#=1yhTc`mfR*&FC)N3vP${%PmY`JBSSYd<~=vc>K?M z*EZ>?z#qXni0K89p)sFaNdp~3(Ulrv8Yy}hbgU2s$yFoN3tuYvJi(xic?pm@(FQ_F(F-Yk$dSe3oDSDa@FH3br2#z8pKEApFnR zZC`$tE4|d{UYdwI1P>@bY3^r{_E!VExX zQmxKyrF4eEw~zQlspdh|Tngs07Er;48E&oVj)nV7_%Zrp|M3^ys!YSQ4y;q?gQzU*h@bhha_mTq{gbx-7SnZdQaFu`cC5zDQ-!G z_RcxD7Z19N85bA-l>6DP6x_G%V&eKt#)3kES4A%A1$gtlKht_a@P%Z8HVSy3PAB znb-Ko8SHVGg4N^s&tGH-U46$M*gg!Y@A>e1B?7_W$WV+(eC*tWA7erdiNo&T(0-T3L?!(n-nCZ+9NqU?03HHG*5 z)R&ppTzx5DeQAYo1{{1bQpQW}3F*bieq1I!0?<$(=Bp9{zJ*0Ur>q)nBZL>BlX%_R z$3mVC1Z%b{`aNx!!8N};cQ943-`5J0EQIxp0aUyLKZSC>3*C2dwgc^#{Rxg@U1lId zF`|$r08Z-pU0$R++`1&ag4H_-`t`JnMLG&wXrM6A@jAIKu38= zb#+mykoJqUQC|f3vU?*$?5~(J*j7I#XnNja<@7mOI-aIm^=rI7YtSWU>St3f^;tT= z_S<#EZon1KT^n*oH_bLhoc*_r3f4%4*sVtIeMD9WJx6I~evpk8%YeLKbKleEN$&gf z)Qm0RIQy&(oYf{{$hvm}SHSws5{^|j;Ns^{l!9si=L;MZ+eJIN+W*>RG4?%^toTk-Dc^*1vYD}C`959z<)UNveZgNuo^#n+r8QEZ# zp!$%B9kCIC1dNdhk)VKjaLm`DjTez{Ki{cyZVL3&oiKyhFBMJ1(Vo)MohGdUM#|8n>oRzYH#GAK^_iGLfpDg@%ey>j$&rJ`h}UGi_JNQFek~4$JKK1J4Vx^~ZHB(^V#Q<&!qS_nAjhLT_aYn5RAQCe~Zx9MVajj?; z2VEGl)R5EAIlWO_p&w(?Jx+3{F|v(W5wQr%K^wnEvS7AQ9B&C0uW1xtGy%0~6B2Og zMrtD6|BuaL9D);Q`Xpz{h)I7AfK>@Tns%Ah3ARlON7Lt)9%-n~i(-^}?=zk= zVmLTrV2fRVDx+AKcZ~xx#UNA#kLkP=tezYWFszI_)%I zL@cJr`V=o`4CF8Ig#DaI*FU>Ie$!G6AVE0gBPUgCI(5)LDSuFn?G zeOvXdMN(;MaJ(=zy+Je`*~PD7M%?oOM|!%6eMMco%T_6V;dU2^EJ@JHu|}OXdY7L? z|9D|V4FP(Z)Jpq|cZGCtM!o3EtI>K$VyqK3?neerz^?-C3PXR2HK^^VpdT5Q^#+*_=3DG-FYU@p zp^_BTKg+b=)Y=qhaA1Et8!M&jPqXX{K4P3#qt?TK-6F4yZLom$e%KS%4S?(Vn}|e+|?BWIQ0*CS(%~X^W^9W4U$m z(kjGyH0i2vabZ5Pgg{gM4^w#x^ZjVQ z8*6IArdaquD@slwbu&FClUNcRrDt9jn7imP?Gub%vJ(lekxR7UxH93%S>*mS_a?E1 z*hi@d=!3rO_67-c(VrDqhTQ0UP(|w_X$+(378c}ez!nT3NUyYWTRZJH({nk_24u;W ziGq}@S{<Z$Eyp^T)EA@;KV;=S41{ZmvT}?{U{Po!1qTBrWVIgkZ=m!> zLFx&MQhue1w?I~4w6G0Ewh7M$sumJ|3oMOVZ~r9{akJ#E@(GyaDo+y4;;wYZx48je zu;Hk+Y0#fnu27S*(XmDig^T;&GJ5~kFZTSx@`>DlZH+{ zqrEfi@_;5ueE~ruNAj2-?%cQmWE-H$Bf7Any8K4zo^DgSO5K{YB$T(P^HDmj>XK5m z9urYB(!pd+79wrfeIGV#x*%S?8)PLVh2ioe#6bwxK-X}s%DqElW~UZT^RzYIIXMAc zqnOyAFVpa61-0VRw7wz8gOHnOy&OClhHfgCPR9x)de~#d_lO*TKrwnz;l{@5BK{fY zW}ml2{%-Yb47KF4Euoi8e`TXsKcPWjd4aJ-mTG?_<)M?jk{LuPHqwa3irz#mcd0!m zDs3LPiHg1aX#Rte@~P=4m@Hc87v1;1TNv|Y=Tm1!v8(xc+@1ho!-)zPAY*JA1znzE zBULg$r!9+YYLrUc@$4~BI@*iCW?jpDC=+@W(gwXK;-BSU$E9`SUvfRLcl%G2u^u4c zEU)2y6u5h|CxA#ah=NlY`jFskPJ_S#EJ#%Y5vkpX2T>-}?c%JwG^Rm>CQnCJ4{d5i z8mHbNhGT#BAzlRNmV>+c5w_kW7BsIyz%6fuB~w(PX~NxLvgY8Hkrf6Ye^h3Tq7#ZA!lr)YYH_twq&^)#iS+Q02+ z2g8>SVMmyvB1sAVd+6bSdnE{8!mETxbb&0JnE$>52Il=VC<{pU78PrwgUn`^k_x?~ z8XTqf02?RQdH|*Zy{^~BK0Q1-|VOaKM(G~ z8w3zW7GVW!HI2B->JN-ZJAn!GY-v$y`4r?UFt4Y-%UpJ?5mqFV=%lLz-Ns2YArR*P zb@R#vsIf=~=JX%S*jfQl{%JrNo*ttX1c?=t1lETSxFy%8--@ zB(SKYWI&_)>#2`BsGJrL$THw2zrMl{pqa#__kyrl>-gV^A`LV~k{d=%Y^W*8a6-#D z&rC2q+K9Ka`6HG+Ihz{fMJZtEi?b2mLFj=9S$!V1#E+V0N(jxLJ{k|tkqsrm*n_*IoE-*q&Bvh}5s6 zFQMrfOkZLNw9ha1suLCQ*ldiPkZZ~Qhhefc5KnM(^FHMLNWtoDAGK1>vdw4*@e60r zg)dzIZIPjiV%aCclLr&gLa_#9=`OasTJL=<{g)=24soQe4^?(P^^M-;yaFZC(}^^& zt^z6;jjygImSb)3ZblZkF**MGh_Rp9F7Ve-83Z&v=&2eadJ3SEbmF!_ZyS+~o&*`x z2K(u3b`|FPLavP1hfKt=S_Y)@+E@_ot&cH`SCZl2MWm}6ZkKmZukW>%AX*y7>hq~o zUQ(~+*Lo$s6+;3Rpzxz1QY-{W_F;(UtZJ83sDN$6lyTPuy=LdX+smU=MPd9|$1(&t zGGUte1q$yJRv^@01mzKq7!6uqYfL)^mZ#6Dy6%{*6?#3q}4SgwE*kYF>Kn2Sp;S+%}xy2 zGZ_6lQ6)-+e>wiZ;l#uv9dAO)qRs|}SX+4vMD~q_(<`P`MMnkN)xGr|266U*i7}Mt zXFX+?U;tCVlAe$m3mhN{){E=$s5+I2TsBz3ABlr!azZB8P=8ei0%EC92SW)IdW3Vl zqwM~da)cUIT~l<)L&q#o;yANgRmxf%h5QP6!Z#%SBFVE7cHLtz6NWFcHww(<^fF zI4Y^o!5+0|wPKjIDCABAiJ$p)EcY6k;wn+L!Be#IC#lPf44E!xt6gx2=mbL623>?a zFyDkj^`}0FykDA>&sxFs3)N z!pFE?ux9f#?4CD&hoihKtgvPBlVM{`Fj0|0VMR6Z5CdPSErLv$SdOW5bt<`B0X}ae z5zPi;!?C!7+to3&+`(U`OcbTtp#jwZinl!BkhmJ+>u6YlTRSj%JBxKbCd6vnGfo2- zJGwW>tmq#RFOYNXwoS`TJ`A!>?^Oiq1tNse8`cL=p2z076GuH%Og)iZ*+JhJXMEll zBWh>UwpTH|Ozu4Z@>C(jbD<7n*>@b;(RPtFr2_ld=uNNB6TG+T=`Th{)<952V9}q+ zld3n>h#xDt&T(i>NY!9qu4t617t3 zbt#CRNF1|m(DHHxuS_!B6jra5JpZfD8VJz)M+PF>q3?#D%B*ZoxO+iuQh*Y|U>P;~ z^ManJiLY*CHvVh)2vXN@q(_K=5>)(9`yF?fEtrm3od$TwOAbvF)!T+E68O*aq3@?< zep+`hIcazgn0`ltQmY(*W?Rszcp+O@kODO7tiK?h2(0vE`T-)41*$HDXf98e~*`lP4`jNU@NTy2Us z)lN*FJW#qI7rL;PyiRoIZWFpO#TOZ**0aSRXCQjpLo|9C< z%i+lgAE6O6p$Xu7uO5WIP!UhY^L}W~0Fv9jo+)JHbHY*L%oJq0)0W%+%E+y!o_$Bgy>kiE1#z>N$YSMC@|9wE4N$%6 zaPNk;K;K788FEXXJ%krZVY=#>94>P~Gz95RK^|8N(3|@ZoTsd5mtLkKN?eo4z<2e5)DKZ;SA9hzIXf;$i* zb!|WY2VT^qPzkQoq<}H}ZB}KpE-)qL*sgGU$PxE)GFU2LM;QsH5FB+IDAGeJy{1U1 zVA*fK%YW&nO<-ngWoKV?m=N>H9>{8Ir4R?Sg4&lpTK*lbRWmKp(Yg}+2CNvgjA6j4 zq`nDUG+6f{u7`1K}{nK`doF4 zcO28TC?O_O4iX3B=Yn8j1~rSzbhH-B5gtcA!5BDATi9i%Q6#3@JbhGP6&7$(QFGh4 zbf*i_nK49xc+PWHpHZGMOb$Q2x(FtO8x53fIa2X8kZA!B#NNy8!O*N}4q{hQzud?G zRO}$LWznd&r&14-hFe~<<+7GPvxx|BJ_72?Hwk(^nJ3E!5hv8KL9eM{zGwK`bKQ-v zw%%x$#kdE7asbQpj>h=jnWW&Qynp7VY4qHDXEY}oO@A)&f>7YFR>S`TVd!QygrH4s zNosnrG(#g5P_K)}8A*r_$|*9I%~$f5G-)|80HN87?|)4KVUIJR9n8i~aBEw3!OvGt z*hO=~6;Nyd4oq+HHTMR0d1*$+TA`12H=f;$VMbvikoCcmXJd>XsRkX$N7c=ZTdwk>L;+MxU`Wy+R*z2MINyuQ-gDc$lATUWVP{5Yfym z`={J)P};|+LysaYXKEi%=SVD*H1!6-H4u>*=LnmVeHIYBrq?wph*14hmQ4VYmZ|5w zLCA{X0ZAa){DHvRZq}wNKNeQn8oB?Fh~_;n*;VUWbQsx{l3Alts0d8(k~^rCuZ_i6 zu-ZIPe;Py%s*7aV$G85(@LcLNMRldCDA)tzg)Hm3qX8!M=-EPbd(7+qh3`h24mJ`K zJHhNGS3FGl4|mWz#{##iE3-HvH05X*cs|yY(e4bH636sgS^yF|b>YmowyALJx2tPX zQnCTN!+21z$uyeJ(TY^k5BpBg1H4y~#hLUBDZh}QCb;1Sgia%C5=fEits@p<5Nm0i z4yA(?=>{K8(2JZl`&=%T^VI$88}7aXS<>J<4mf=14dUlXpTN-2Ng<_z%s*NWHsM+! zgtOlc1(C;A0fjS6$U>!DJ313=o9HNzS^YYhLu2x~9vc9$T|6gLJgZEpmSxCTEyaf> zgJ{ONXnK5W_87d|X zBRplRX*{^|L2GSqlDOCl<5v^WGfj5&!>(Ezuff(+GwkC*%;)3u?~(N}ajHsJE%1-*<&EvGMcWoSe;{bqygpan4Xz`!7P~{v&eFYFy=o)! z9psMCfV$RX9QiwwQ!A^b^ zA17z>g2yC0f^3|x?lu2)sFg+(d?2M-iutu>=KRM6Dlu8qx#@6 zM09IyWa~Z2?J`QxQ&s}h8TO0;9$b(gj5?9j0#96lNpZx|YkZl+TVM=@+)n$HfX%RG4+CMb9 zl}U!43I;!krxq;HLH+T!t)`&yIU4TWb`d0@1;%Op+W;5fM_VqGmr&gqJM>KNAGp?| ziKQADu2cg@gOE~ooCwsy21dox>sWTQTucK#Vi_re(x}DnXA>{s3m^Qt@U1oU=k*lCuGB*C7?E2r5?0v$T5bxn^svmggeHI35Bj$ zBZRr2PW9K;by=LJfVf&**VF)z8NHB5{d>==jV_HSqg8~pd}ju!Vi-VHg~%$iFO!8o z3px&vX=9QNNk=#k;?c;j!{FZUNg38@SO~78R7S-Fl$2%w_U15%9ktqW?<;9;c}uI$ zERQmU0l9T3uVV$0NdVeR^nciU@3ID%??2)FKfi&3>b#YFp`kme$O3Nf;c)p@6Y@9 z_4kd0vcwlYgmi0nwyphC|kDH#*bTq<7{*A|3=nD1PVq>6abpC> zQ`98$n}awEbjGA*5uU=1nD%FHx4MVK$G@Uo99-6byZI7noEDhRt7Iv}k>qXeYEiI} z5T@h>Ic1TGc7}oNEN3-(lLBFuaSd^!%awFwcq^N1(g;5of2C`Ws(J#(7Q=NXvD%`r znr0+)M{nasF)%3!vgxp2vzFh%TJFI?I)rZDCuMfOQO98Z_={;Sr2f=YNgtHZ)GBOf zZK;v^S&&Y~6~KXZ*JNqGw{qOhAc+LektV+eQJQij)U5M~C#KQzuQl_WZfy8!M89t+ZL%lG6ms z;ZsFq;LArLbDPm5_@X9ttW#7YPplf_fk<>j#tmt-SA*Q1ILwt{u5wK7$y(YSv>ClD zHr^=9OKj*R8HS9bj;e8hV&Q&Vk9` zfyuF`nF#k!y&-9H3&!rP+i5|;86mlUAj2#X(XSz^_cCgyCQuq*ftu&5&UHk|I9QNM zGfxVWB_@q!#vo=7+!fNJ>gfJO=9?Gk$qm`Gv%?UpuSvCoZ;ahQ`F$wm9WqUq^ti_u zg$ydHiPNh)UJyNIfe%GyWv57BN)nqrSPRI98^~%cXI?H?VDkJvNqQWxFvc`L<8n)& z!eoVRA5Sg6=}uAJva|IpeTd@GRn|FgW6H7zlZkuzRwP zG)u(p?6!=pF>yXe079UeQu~)#*F++_sU@Mi9&Y8BjLf5WesJ`Ya)OWD+W!cB{mtQ= zme>>D%N}l&01+-~u32%2!@Ra)3s}?mc32-?)c0rs4&un?f;~b-UpTSOtjjxcZuJjy>oufa9DwH+I z8YFp;HROD3SojzuBKVi#|jgk?IOkU&8%ma?zYT@+`08Jo5(GrRseUBc2Sq zIEc$Tyk{7R2M; z)(EHoguztb5F*_qrZEFBfgR(pc z9NqxWAP=o$jOBWv5_UgOH9^P~};vqR(Zv?bi*kWx47q3$YH z1H9?44;SqQr*g_OcjUM4w;FNg7Q6R(x;%Th5K=391gK-(@+;$Nc+)B-#YA?Y+6M&9 zU-r-s{Vp7-#pG+rN05g>lP7uc*-b`KlBy6k$?)E-D4!DrK{Vm%CPw$o6(oVOS zK&?nK#Ip-J#vN&7nlI+-mR;N=bjqMB!3z5!UOAV}tg#`BoU($@GEn|{lCwHM$eB_> znSzJqk#u*O|6s&4DKI|K2=-&c$=xGsr^OZr8Q~($8!tq*)Vlo=11rm)ezt6_zNajwKQXq<3$>^~xdml;B&}cdhfI0a=s3TbwyPq{ za2Qgt;(!?`Hj-T6pB`K>rNYfEqIh{;pI8vJMx{+%euc`cavA&h_Kq?eGP{=h*duTQzi}RfD;H z+ol&0v>o(i7w4vn#;UMo9V4Uf{OHYPg6O6ieslHPNlbb?N z90l)2aKUF7FmJ9E`<+YNG57Xqsdh5iG%m&)Nxk;ty8Ww#>$1oD>APtqSJ@dF4%D_` zYv1p`>w=fgH_s`jaWluKQ7cgs1@dQoPooMt3Yn86Ni(Do;Ta+7YICx|+e&)L%m0&M zL?5_x>D?do4=%_u8Y)f%lno`I1Gcd9dU{y;tF;3E+ZO@`QTm-oo>EYDYC_C0cA%Up*_5W2gVqWqj)W z?3!sQCdX@{H#LDHK;l8d12_?~9k7u9keF*wQ= zZY?d5-D)St9xWIfRFv!wT3y`|-cNyWo~gfq&|NKf%7 zQ*LD=&ul>d;Og~ljb=wETFGZYrPCT7rYEJN$8y~#?A+-Muh%8}owd`pzOiM#=W8#C z_HT3mh1g}>2rD`~-q1_YH$!*0hbfRVaa)fdv%XCGJw2vWV~dWyC8Hu+>!he4pc6SW z?tH<}*s*||ar{C2_{O=E?^j3$-QN#vu{FJ$y1xYmQI|R=e;s>z34f}!-l5$l=4uO< zZag^I&p&;}i)Z$RUzQxWi-fftJ@dTk&)m&x$K*t7H09{r7XB7EYKDuRWAF;mh*cwY zY3%46G5Ta8-nc3h92S5=Qme)OxMPDPkgnnE&wq!UXVug2v&f1FmXMZQT34`=F&H$8 zX>cxM3yHXBewu_=evhh)Y>#`zuxuXZnm;o&>}c-P;gpqXT9<7q4M*==_9)En#MpB8 zA&BvybL;1=FBI`-e|>nNrr=SjuEp0}JsbTOC&p%tZyhV{vy0uYay`I z201$g`XdC;$A>oVpB!?p936e@MX9Gc5EEZqkvkX8OIvbu5%~-`bXDJx5e@ebo9Pi` zs;T#<3?F)$)VHJ|zg|!%o5ZR|qElTUx`OhWKz;tclJ!zI=hGG=dzmPHQ`peN-LP4j zN48Kq)+|qDk(Vyb8RWbr#h~0LcUbcpr(z4qAp)W^qQLiLf$yjr`!-GAaQ(zx zRQ;^-7>ze$pXswTH~I|wbJH=~7ZIx;kw+`2HOFt=y2aHc6&DrX-K=+TR1Qpzeb5Np zPHP&9O!aTR<;XdJObrWTJ~+*FfLsKdyX|Lp6jtZHM5${#8&+kt`S1^kkfc#Y1~vs) zF225=1f0d7s1PcV=^8D~ata_{{`xQbnfmkL3XnNK?@s_@h>K3#52TVdg@e|wFJ(A* zZ6tgH>y_dTAB4(~34+Wo?+_rm6Ms7t7&h;-X*}&*oqUcteNPA*dtR9XaZ1@{46qVT zkF6m!q2Vb=vU($J-|%6|a(@6!B%55L15%5CL;-A#=FdZHSI%f|Pnb~KIVRv_WEJ2G zJg>}ZzYdUYKJSu)F~t?3oNs82r8X1FUQ*!TQGOPaRKou!x8rQ!AAqk^VFbeFpZ;dx zWy{3NLkNxyaZYNxY+w1pGtIC$vwrd6yVRn>WZZ@YI34?%1XPp{F-4|iBQ!`_#|My( z`A>a`kdWSu zaj9v=L~sFut8)hgpxZbS2%Ql;p4S#gTR2|^P9DM40k%+P9S-)p9o+LbnK2)~*>gfx zMO^09-1i9bTWzD!qlZF3p@6l61(iC(`0JMjzgwT(PtA`x@vMP9Wao)cP^x2?jq7>E5ci%xFY(!6p8m)%8pp~lP@xv}AfN$8m| z{*_#X40`1JOv4aiLyU>^P%bE|{)cEZe~p6US+k6eJ>YgwaFER#>CxeAe9&#`8xvkN zUH9a{8B2b;&}a=L6T{HJye^VS`Tik%U8cdN;^_H;ymoBQ<8$lD%qz5e7H(BuFzMSo z=YpHSl8`EpemW1v{*k%J*crX^ zcA;D&l)Bb#>IXi!3&#h9a3?9hh3@^Ir(jV|KsAb?tXV<8d5$ck{WRIZ)ke|1CDFtS1GK|r z$x|fjIvPE3u;kEg$d{S$Z_#J|KDXxM-yHF0^VEqx%u+1`I5jRpy8e?t#@1x6GyVY= zUGi$ucj)fmCs}Q!v9JB_fu(IHwbY00K^_l#by}m(W7!G@>*1XlvI-LR7myME1UKAZJW?a4C+@vRH)Cza%BG>W-*_NeWhvy1jB_4h#W z5;*<2b}zHp;{F5q2dVc8vB^{98i8pwzNqf?S=`=$Z|Y z9&ZvQ`sQ@I^_~)QC_u`&f>8B?_hAoRig1UwsALF8;SQ!jo>iU;gpl9|Ly4La?6%iy zRH_LR=M=1mBMGU@zRX?kkP0}w+6I;z6e>q&p*@LyU6I)80Yz|^Y(!Ocws!Iuwdh`ty#@! zSK!1l{Ht`YWV)Jf>>gvl&y`YE1Dm{3 z8j%cjvem14cJs_?b>c%zgs9_LI6VyV!p7x-_-OecqE8lATdJ*Th z?Gf>$gs@+97wmt0I7@$GYJWlIJ-wIA+I`xTKD!}RuL=$hXZ9bE<#6&sh^C#OxJBw^ zMes@ z3Tg|$Zf=2Dao{wXa%9W?4M+@P7Y?^Fsc6I&Sdp9sbH?<~nnlWWzE>yitH;ZWmJX)t zTLIPNj|=fYHQ6~vZlT>c3*%~6CrE8*1ij?%A!R;1P-)NqEr3ml%e8|`as2>vqBq&D?pq+XoU>vC ztn?S{vx{HBcnMH|tdh(AbUj@tCZ4kT7yU0*UtdGd9{ELSLs6JvO%6WLTB~vXHVg86 zZ)q?D7u4Ghufg||AQBDwAnW*|I$|CT=G3DKLG1M{PA_cahZ|6+6B- zd1Z|sJFfpePx6I(h>xS+NwrWl?luw+f+R+@u_gDCtgaQ5?eF8Kzi}io=SrhPrQRTY zli${#%0ewqY-5v8d-nB4kPWkFbzePwVV_)xMtP7V42LnZ1-Mq2Pot$tx!q~wG zbwtZ+Tct~($`;Z{V7GtUtduW>e?cN2yn2PwJu`|^K?7~HAbz_NKA}6x#_&0OOrdl? zE&I;Eu`^k9xU6|4b)g8A3J8a4GvPFCudwWC<*ZzsX@@5M?5!>m$WpY%~b zMAMk9ow>w<#B5X7$SOU2QIj$Oyo}95jE&a~TAi^adScGjiKblNNikD(P=;ET@yv@~ z(hW?eKFPY3I<9sN3q8pONn_4`=tcfP^Zj2N6d-@K4G{g305?RtiBxfY!qy|fg7l{+ z30tz^b=J{!mBO5?UAcNri_h6mv>sm@gV^1z_l=?>&xV+YkJPrB7uQ_-UKURn*V{&= zJShb$d#Tv#xWhhNGbjqJFd`;094Z`uefWr1hA@+ZU?#)%2M~kxQNe-uR=&g*JdE7= zNYrg(0~#Ten){#*pV`7zcN$dx%2Iwz9Dd;)QZKA=@aI)N%OksO|H<|pLWkM2H7HvG zDk#3Pkt!yFR=-OehHr(;`o#eI$n?quoUixK=G#IuU z*WMbZ?i+Y&hUtCA<;Amh9wndI`E5Vb;Q=PAwdj&%&vpzq4t2J17<7wr6;isMEUXyy z?ING&CkEu~m`F29yOi^tOFd&cW&g=R^kIT;^Ic>&;$S98r&B=n_rCxa_7Oyx=B8y< zkbjwO{2IJAg%=qY&OY??)a5mPCq@mu^;1yeGZGlO-<{pocx|N{K83f>d+wdIa%|d$ z9D`W3dhy$3yG8`cvreTe5F+gVIfTeR!H<0WyCiL9GE1@?oDtvZ5#Tbde$}xKYs?(%IUfu!rDZejL5$_hpvDSH$X+I5{p%ta*oQ8f}tzU_~m!%2|Qw zvur--TR9w-#Ga(SzvosNcGp~e=4oZm-Lj*GYq*8l;`T#Z!(@s~nBO1`gESG9Ou-Yz z@^6vZ)MO5AHYijUf8A(#H~+izjcmJdi$MN5CC`lS-06Q+^!yB&zq(rZmBP zZEh7vR>NrJSav8`i{g6X7PQ z!R)?Ud5#?UCZ&`hjql6COpEQNTY~TtEliYye&?-rF9A7NazpDklP!)*6V1yXgwGGl zqs)Sba@5r4mGd&guTw?Eop0TdK{9GyezLfM>uMQuLgJ^{E=y)3U;lE&bsdY_#iQF1 zCFuhoo-?L*EQ{JU7dKI*6pT^|5LD)I0n}xlFH+SQ=x7)Udiu7>A-m|l&TqFAYa7r! zs0Bw5tBUP$bw1xr^LvNp0Kdc1fb5swBAYjTV34TAaD+{*pmn=&>&kSUQEKqEl(iJ< zv(1pS+Hx1M|2A#Wh3J^c7cKnk_50plTPb>v6rtMT6x#VEzgbWHMsLZE@$?E)3YF<~ z!1vrRq@X^0+p?-PA$0GzUW3OZ4$Qy2G0GONHU1VVW4@|6f;1~94=9qaAg8BLgnEja zt&nq)+dY+w=^r|+r?zRt8g83p2DL4~ zdV{;hf*l(!zdXEj^~QJ`y`0ID?u1BJBw|-iqWL0TZ2wdI_D@M{0~ zRDv_p&1d-mZgoR(E9GAM-?-oaPxWg3bME>$r%5)HyhR@D?NMA`Z3kgwU;t;@7 zETHFWpd&w!hiP*x;Q5LhI&6~9&=4|vpCKx5J`h-Yk74jj(e4Y;(UViF47Kk$+su|v ze2Bj20Wj%xSbj?kOP3RoQQX22nJ4qen}UZdi8G1*t^ZB!S1W*na%)BHiPM0l_&uJl_vSak)i+=*=Mf*cH&kmMaHTg(4VOnuD{7P~%RfQA0PTST>==`M^YYZs zLKPG!l*p1OR!9|$m7@(**>$Xli$7*-$*u7vSP?2eLmw7T*eIRR6?VqQY#b*gLF&O? zm8#wj6ZS!|yiM%B--BaPZTu?BD-#``VL@u@)#|CLI9wmWeGzdn5VBgrnc(k`=|)3B zu_W{nnziLU3((oYDizXLR1WP&MTzthric$2t(D#%9MQI%f#6yt%Wq;e!;s?o39`E= zQ6K9A@Ve|Ic!om!urL*rc9DHFU(qeRyRN3|MaYqZpyFu-6VE^#Y#^NRXANJ}0>y`9 z5YYt*ZwZ@fBaQ@-Yi1h;#hhb6lfW7Z-8hOuw+iy)AM6h;Jtw5d*a|5mD zWD%QEYs``Rde}kNxq2f!352k^OGmqE6j@NC_?HVC|Mr&#yhEZek)9xx1zr`J0b6Y` z5<1rxK+d*uOD^cn?4u9HBr>}&5g{9l3MHWayb9E(XDa2RbxcUA_2)H?@|0F5TEP(= zhD2XPceACuz)fD21L->CB#2!b8JI#7S34;>ASqJ-u(ig& zc7Km(=Vp}0zb4pv3&aVxv?wGpRW#(t=o}*FsD<|qS?{iK3cdi1GkA2)y%4!S3ufZe zSE`p&G~I_0E$U~VS7G}=T>cDXQTOVR>xJ@UH?SgK`6;@_Ug&DH1@5vwPov%;CX$~o z0-1Cu-!-E+${XP4DfuatPm~#jod$<6C?C@4JUJl$ObhfgFTbFz9}+wqB57!0Jr63~ z@_HE*5CBsayD~`X0|jr%ods{8QZZ*#-?XoMg@neMk(SUIvY3`I+65zy1&?V_Z9ZnJpb`piUNc?9hX>`tP zqN7I)Uz-$<-1ANO6-^3vr0Ca%L03cUrIR?_dfafe{5h~uR*_tId zDyBBG`*)fNB{KyM&Pi5wG&Mq|jphoD6I1RpZ4FZHlzHr0CGT{FCG$bDF6pbzXYH23 z8*1e%34uOD+ZHgaJ7ykGn)t?yGGNnr6gPD$?kdIrXioyN2sGgu_%U`~Y#6|&KkC>J zC?#!-O4L3^vcL=%I=#2Lf6%jmzUl`r3^Gh~@C*rzR2i1kr@QvDt64v$$(raEDbmpp`l(h&+Jo(!$fXGrjS+$;V~ryUdMYm)N%QuzFl&T17J*d zYLqJ*$gWmc$^ww7F0I1R*|JUw*LO$YR%n#itEf7W5rB`{ApaSEg|)zWW;TVkv9-+_ zFLtLaoNk1Tw*(oOP8Hbqow&aydD#!KgjqSt1&R)pktWddC`dZK6vN^?32TEbf6)u1 zY0vw;IR#a>crxNRjrnlbSb3d!M*2u2%RU?QuFW%5CLON`bPE106{ zW`}w=H@7>a9T|23C@QL}or8Q$SZ3v6OV0j~C|#G~8<@lw@MHL|?L+g_zr8G3-X_Iq z!e?-)4=qsaZl|*!B9iv@rd?gvYk#W#aK97ygU!kkx|Gpep{z}qtY-wuia=z@%s8!7 zaMy>TCl$&p)C^9<(tI2piw*K{2)0zJnr=mJd>Bp%aT^fSCs=6lhB#<$9yX1LbduA%oI53F_+!E^ z>=GfA3DI>lT5J8~jt%)~Kojk4Kc}qz;uAa+U&(3#hcYdmRMFKjC3k|H_(BQ5u7>Mq zsINuw-&heD=&2s&lWO14D!Yw!i8Er2kc0)QEglTJUMHtw$o7CI__y%e;JD*O6RBXE z%S>c)IHoYOSCHeEWEq!WYg$=h!=_MhmOSDn)wj?wYbfjW`7NDL3RxiJ>9u(~C!=xB9CF0m=k~Oo? z81^k?RL)Gqnkf<1gnW$9QE56@$3N0zqA?!uNQ8)Q|y$xl@0s0C><$}6O?Kug7jtv;4Al}fO}T;C!0 z3GF9l1MD!!x0)+Jk>QO(u|>q8VGqr5KBwgoV`9gSwHN2f5*#L`s0!SKB^>Nmy2-dC z)H55#_l4<76;dkxZEs?(T>}G_)dAxofv+inl&?Isk%5wiEJa-FKV->b?Qt4t2zB-< z1WgP<%_sjflxcw=Y7&K(f_h}!P(^MGT#A8OF!)K(w<+`J1GWo-Oj0o|*iWJ*^s#xp zdi?4P{A81PjI6mDC#sD<*OVdb5_pOX&SKs-K?-Z3 zzUS3TG}l%hBDml-vq#~vR`?Qp8GJj1!1T_5k%tL^(Q! zH54{gG9WLbv&A}AR~5w>YX|7(Np5Za;3C{dnv~Z_iVylLnhjCw=H-B*$qu&{7Ky6) z$!Sj*v_$B$_%4^3a!lNYuRy!t9UKXCU7D{vg$`?_@u zvRU~X{p0elBKn|bU&jPXmBfOoH$h#^BUB1Dr8=}9vW)+r(TS}^!X4f)hKAfjrLxdK zRw0_8i)_6lSsrl=n;?2d3fd${hW;`1GQuWm|8OT6UD?v+g6Dx%Oy;l=Pp!o8G`O`J zD#MR8B6fQLBtT&cJO#YZhnG23!N7GHrw0!H2V+kGv_cL2hB? z1&R|vbYUy8b$lR`Htx_qAcAqH64dTh z_7iljFt6x5P?4a=Lcndj6&BEDo6Y5!3BpSNoB8QX7U+Fk#tpTA>V=eXXo~cXt^I)Vzk8b z3B!cRDFrRI`}-)O7I~ORKHUiE*n}y!FVWiC9vLx#x0=b3uzH{~k!=-a&KLyn!6CdM=hHNJKiarin68z1TgYsrMgAm|>#XL8;Q2J6IE02U2kI`iAMv~S>4rlZQ_ zRGIfkaPRB9@_>PE`+O0=?k}piVFs_@;PuBad1O=D+9wRhftO%Q3mpdsfNb?#P?iPg zBqXAlbuV4Y&;QZ)B+v4yu1v⩔v%4oLI9#deA2xDNf1|0r<0nT%hEad{(rGG}#e^ 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 { + return ( + + + + + + {area.includes("admin") && } + {area.includes("store") && } + + } + codeContent={} + className="flex-col-reverse" + /> + + + + ) +} + +export default ReferencePage + +export function generateMetadata({ params: { area } }: ReferencePageProps) { + return { + title: `Medusa ${capitalize(area)} API Reference`, + description: `REST API reference for the Medusa ${area} API. This reference includes code snippets and examples for Medusa JS Client and cURL.`, + metadataBase: process.env.NEXT_PUBLIC_BASE_URL, + } +} + +export const dynamicParams = false + +export async function generateStaticParams() { + return [ + { + area: "admin", + }, + { + area: "store", + }, + ] +} diff --git a/www/apps/api-reference/app/api/[area]/v2/twitter-image.jpg b/www/apps/api-reference/app/api/[area]/v2/twitter-image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c56693dc376340b920320da3184b1681d6851d06 GIT binary patch literal 259227 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

i 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⩔v%4oLI9#deA2xDNf1|0r<0nT%hEad{(rGG}#e^ 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 { const { setMobileSidebarOpen, mobileSidebarOpen } = useSidebar() const pathname = usePathname() const { isLoading } = usePageLoading() + const { isVersioningEnabled } = useVersion() const navbarItems = useMemo( () => @@ -38,9 +40,7 @@ const Navbar = () => { mobileSidebarOpen, }} additionalActionsBefore={ - <> - {process.env.NEXT_PUBLIC_VERSIONING === "true" && } - + <>{isVersioningEnabled && } } additionalActionsAfter={} isLoading={isLoading} diff --git a/www/apps/api-reference/components/PageHeading/index.tsx b/www/apps/api-reference/components/PageHeading/index.tsx index d878d79aa1034..5af3c61c244d2 100644 --- a/www/apps/api-reference/components/PageHeading/index.tsx +++ b/www/apps/api-reference/components/PageHeading/index.tsx @@ -10,10 +10,9 @@ type PageHeadingProps = { const PageHeading = ({ className }: PageHeadingProps) => { const { area } = useArea() - const { version } = useVersion() + const { version, isVersioningEnabled } = useVersion() - const versionText = - process.env.NEXT_PUBLIC_VERSIONING === "true" ? ` V${version}` : "" + const versionText = isVersioningEnabled ? ` V${version}` : "" return (

diff --git a/www/apps/api-reference/components/VersionNote/index.tsx b/www/apps/api-reference/components/VersionNote/index.tsx deleted file mode 100644 index 1ecf6d40ed9ba..0000000000000 --- a/www/apps/api-reference/components/VersionNote/index.tsx +++ /dev/null @@ -1,22 +0,0 @@ -"use client" - -import { Note } from "docs-ui" -import { useVersion } from "../../providers/version" - -const VersionNote = () => { - const { version } = useVersion() - - return ( - <> - {version === "2" && ( - - Medusa v2.0 is in development and not suitable for production - environments. As such, the API reference is incomplete and subject to - change, so please use it with caution. - - )} - - ) -} - -export default VersionNote diff --git a/www/apps/api-reference/components/VersionSwitcher/index.tsx b/www/apps/api-reference/components/VersionSwitcher/index.tsx index f1a9be56de8ef..29dc2fd3c7baf 100644 --- a/www/apps/api-reference/components/VersionSwitcher/index.tsx +++ b/www/apps/api-reference/components/VersionSwitcher/index.tsx @@ -1,11 +1,13 @@ "use client" import { Toggle } from "docs-ui" -import { useVersion } from "../../providers/version" import clsx from "clsx" +import { usePathname } from "next/navigation" +import { useVersion } from "../../providers/version" const VersionSwitcher = () => { - const { version, changeVersion } = useVersion() + const pathname = usePathname() + const { version } = useVersion() return (
@@ -19,7 +21,14 @@ const VersionSwitcher = () => { changeVersion(checked ? "2" : "1")} + onCheckedChange={(checked) => { + let newPath = pathname.replace("/v2", "") + if (checked) { + newPath += `/v2` + } + + location.href = location.href.replace(pathname, newPath) + }} /> void + isVersioningEnabled: boolean } const VersionContext = createContext(null) @@ -18,44 +17,18 @@ type VersionProviderProps = { const VersionProvider = ({ children }: VersionProviderProps) => { const pathname = usePathname() - const [version, setVersion] = useState("1") - const isBrowser = useIsBrowser() - const changeVersion = (version: Version) => { - if (!isBrowser || process.env.NEXT_PUBLIC_VERSIONING !== "true") { - return - } - localStorage.setItem("api-version", version) - - location.href = `${location.href.substring( - 0, - location.href.indexOf(location.pathname) - )}${pathname}` - } - - useEffect(() => { - if (!isBrowser || process.env.NEXT_PUBLIC_VERSIONING !== "true") { - return - } - // try to load from localstorage - const versionInLocalStorage = localStorage.getItem("api-version") as Version - if (versionInLocalStorage) { - setVersion(versionInLocalStorage) - } - }, [isBrowser]) - - useEffect(() => { - if (!isBrowser || process.env.NEXT_PUBLIC_VERSIONING !== "true") { - return - } - const versionInLocalStorage = localStorage.getItem("api-version") as Version - if (version !== versionInLocalStorage) { - localStorage.setItem("api-version", version) - } - }, [version, isBrowser]) + const version = useMemo(() => { + return pathname.includes("v2") ? "2" : "1" + }, [pathname]) return ( - + {children} ) From 489a54e1fb35d8cdb4bec839c0e76a073a8e3eb6 Mon Sep 17 00:00:00 2001 From: Shahed Nasser Date: Thu, 9 May 2024 17:23:59 +0300 Subject: [PATCH 2/3] fix(docblock-generator): eslint errors + missing await (#7281) * chore: add missing await in docblock generator * add fix for undefined symbol * fix dirname path --- .../docblock-generator/src/classes/helpers/formatter.ts | 5 ++++- .../packages/docblock-generator/src/classes/kinds/default.ts | 2 +- .../docblock-generator/src/commands/run-git-changes.ts | 2 +- .../docblock-generator/src/commands/run-git-commit.ts | 2 +- .../packages/docblock-generator/src/commands/run-release.ts | 2 +- www/utils/packages/docblock-generator/src/utils/dirname.ts | 4 ++-- .../docblock-generator/src/utils/get-monorepo-root.ts | 2 +- 7 files changed, 11 insertions(+), 8 deletions(-) diff --git a/www/utils/packages/docblock-generator/src/classes/helpers/formatter.ts b/www/utils/packages/docblock-generator/src/classes/helpers/formatter.ts index 929a22ebe64e9..7a18c1362cac7 100644 --- a/www/utils/packages/docblock-generator/src/classes/helpers/formatter.ts +++ b/www/utils/packages/docblock-generator/src/classes/helpers/formatter.ts @@ -106,7 +106,10 @@ class Formatter { this.eslintConfig = ( await import( - path.relative(dirname(), path.join(this.cwd, ".eslintrc.js")) + path.relative( + dirname(import.meta.url), + path.join(this.cwd, ".eslintrc.js") + ) ) ).default as Linter.Config diff --git a/www/utils/packages/docblock-generator/src/classes/kinds/default.ts b/www/utils/packages/docblock-generator/src/classes/kinds/default.ts index e20d864b14dcd..1a502cc8c5740 100644 --- a/www/utils/packages/docblock-generator/src/classes/kinds/default.ts +++ b/www/utils/packages/docblock-generator/src/classes/kinds/default.ts @@ -474,7 +474,7 @@ class DefaultKindGenerator { } if ( - symbolType.symbol.valueDeclaration && + symbolType.symbol?.valueDeclaration && "heritageClauses" in symbolType.symbol.valueDeclaration ) { return this.isEntity({ diff --git a/www/utils/packages/docblock-generator/src/commands/run-git-changes.ts b/www/utils/packages/docblock-generator/src/commands/run-git-changes.ts index 78818f6d810e3..50ce7c4ab45b7 100644 --- a/www/utils/packages/docblock-generator/src/commands/run-git-changes.ts +++ b/www/utils/packages/docblock-generator/src/commands/run-git-changes.ts @@ -40,7 +40,7 @@ export default async function runGitChanges({ ...options, }) - oasGenerator.run() + await oasGenerator.run() } console.log(`Finished generating docs for ${files.length} files.`) diff --git a/www/utils/packages/docblock-generator/src/commands/run-git-commit.ts b/www/utils/packages/docblock-generator/src/commands/run-git-commit.ts index a88034d4138ee..1ed2cd2332ca9 100644 --- a/www/utils/packages/docblock-generator/src/commands/run-git-commit.ts +++ b/www/utils/packages/docblock-generator/src/commands/run-git-commit.ts @@ -48,7 +48,7 @@ export default async function ( ...options, }) - oasGenerator.run() + await oasGenerator.run() } console.log(`Finished generating docs for ${filteredFiles.length} files.`) diff --git a/www/utils/packages/docblock-generator/src/commands/run-release.ts b/www/utils/packages/docblock-generator/src/commands/run-release.ts index 62df087beae24..5af53a24c138d 100644 --- a/www/utils/packages/docblock-generator/src/commands/run-release.ts +++ b/www/utils/packages/docblock-generator/src/commands/run-release.ts @@ -46,7 +46,7 @@ export default async function ({ type, tag, ...options }: CommonCliOptions) { ...options, }) - oasGenerator.run() + await oasGenerator.run() } console.log(`Finished generating docs for ${filteredFiles.length} files.`) diff --git a/www/utils/packages/docblock-generator/src/utils/dirname.ts b/www/utils/packages/docblock-generator/src/utils/dirname.ts index fbdb8f6a90589..4e4a89bd72173 100644 --- a/www/utils/packages/docblock-generator/src/utils/dirname.ts +++ b/www/utils/packages/docblock-generator/src/utils/dirname.ts @@ -1,8 +1,8 @@ import path from "path" import { fileURLToPath } from "url" -export default function dirname() { - const __filename = fileURLToPath(import.meta.url) +export default function dirname(fileUrl: string) { + const __filename = fileURLToPath(fileUrl) return path.dirname(__filename) } diff --git a/www/utils/packages/docblock-generator/src/utils/get-monorepo-root.ts b/www/utils/packages/docblock-generator/src/utils/get-monorepo-root.ts index 2d8ac2af00b8d..b5040b0ffc581 100644 --- a/www/utils/packages/docblock-generator/src/utils/get-monorepo-root.ts +++ b/www/utils/packages/docblock-generator/src/utils/get-monorepo-root.ts @@ -10,6 +10,6 @@ import dirname from "./dirname.js" export default function getMonorepoRoot() { return ( process.env.MONOREPO_ROOT_PATH || - path.join(dirname(), "..", "..", "..", "..", "..", "..") + path.join(dirname(import.meta.url), "..", "..", "..", "..", "..", "..") ) } From 9a14aeebcfb6b064b16c2bde5dcab23aa9be0152 Mon Sep 17 00:00:00 2001 From: Riqwan Thamir Date: Fri, 10 May 2024 09:53:56 +0200 Subject: [PATCH 3/3] feat(core-flows,types,medusa): API to add promotions to campaign (#7277) what: - adds an API to add promotions to campaign - reworks module to perform atomic actions --- .changeset/silver-lemons-fly.md | 7 + .../promotion/admin/campaigns.spec.ts | 600 ++++++++++++++++++ .../promotion/admin/create-campaign.spec.ts | 178 ------ .../promotion/admin/delete-campaign.spec.ts | 56 -- .../promotion/admin/list-campaigns.spec.ts | 178 ------ .../promotion/admin/list-promotions.spec.ts | 2 +- .../promotion/admin/retrieve-campaign.spec.ts | 117 ---- .../promotion/admin/update-campaign.spec.ts | 100 --- .../steps/add-campaign-promotions.ts | 41 ++ .../core-flows/src/promotion/steps/index.ts | 2 + .../steps/remove-campaign-promotions.ts | 40 ++ .../add-or-remove-campaign-promotions.ts | 16 + .../src/promotion/workflows/index.ts | 5 +- .../types/src/promotion/common/campaign.ts | 6 + .../types/src/promotion/common/promotion.ts | 2 +- .../core/types/src/promotion/mutations.ts | 30 +- packages/core/types/src/promotion/service.ts | 17 +- .../admin/campaigns/[id]/promotions/route.ts | 34 + .../src/api-v2/admin/campaigns/middlewares.ts | 16 +- .../api-v2/admin/promotions/middlewares.ts | 6 +- .../src/api-v2/admin/promotions/route.ts | 10 +- .../src/api-v2/admin/promotions/validators.ts | 26 +- .../promotion-module/campaign.spec.ts | 168 +++-- .../promotion-module/compute-actions.spec.ts | 2 +- .../promotion-module/promotion.spec.ts | 4 +- .../modules/promotion/src/models/campaign.ts | 4 +- .../modules/promotion/src/models/promotion.ts | 10 +- .../promotion/src/repositories/campaign.ts | 149 ----- .../promotion/src/repositories/index.ts | 1 - .../src/services/promotion-module.ts | 141 +++- .../modules/promotion/src/types/promotion.ts | 4 +- 31 files changed, 1033 insertions(+), 939 deletions(-) create mode 100644 .changeset/silver-lemons-fly.md create mode 100644 integration-tests/modules/__tests__/promotion/admin/campaigns.spec.ts delete mode 100644 integration-tests/modules/__tests__/promotion/admin/create-campaign.spec.ts delete mode 100644 integration-tests/modules/__tests__/promotion/admin/delete-campaign.spec.ts delete mode 100644 integration-tests/modules/__tests__/promotion/admin/list-campaigns.spec.ts delete mode 100644 integration-tests/modules/__tests__/promotion/admin/retrieve-campaign.spec.ts delete mode 100644 integration-tests/modules/__tests__/promotion/admin/update-campaign.spec.ts create mode 100644 packages/core/core-flows/src/promotion/steps/add-campaign-promotions.ts create mode 100644 packages/core/core-flows/src/promotion/steps/remove-campaign-promotions.ts create mode 100644 packages/core/core-flows/src/promotion/workflows/add-or-remove-campaign-promotions.ts create mode 100644 packages/medusa/src/api-v2/admin/campaigns/[id]/promotions/route.ts delete mode 100644 packages/modules/promotion/src/repositories/campaign.ts diff --git a/.changeset/silver-lemons-fly.md b/.changeset/silver-lemons-fly.md new file mode 100644 index 0000000000000..feb899e43e8e5 --- /dev/null +++ b/.changeset/silver-lemons-fly.md @@ -0,0 +1,7 @@ +--- +"@medusajs/core-flows": patch +"@medusajs/types": patch +"@medusajs/medusa": patch +--- + +feat(core-flows,types,medusa): API to add promotions to campaign diff --git a/integration-tests/modules/__tests__/promotion/admin/campaigns.spec.ts b/integration-tests/modules/__tests__/promotion/admin/campaigns.spec.ts new file mode 100644 index 0000000000000..10ffcf7c5dab9 --- /dev/null +++ b/integration-tests/modules/__tests__/promotion/admin/campaigns.spec.ts @@ -0,0 +1,600 @@ +import { ModuleRegistrationName } from "@medusajs/modules-sdk" +import { IPromotionModuleService } from "@medusajs/types" +import { CampaignBudgetType, PromotionType } from "@medusajs/utils" +import { medusaIntegrationTestRunner } from "medusa-test-utils" +import { createAdminUser } from "../../../../helpers/create-admin-user" + +jest.setTimeout(50000) + +export const campaignData = { + name: "campaign 1", + description: "test description", + currency: "USD", + campaign_identifier: "test-1", + starts_at: new Date("01/01/2023").toISOString(), + ends_at: new Date("01/01/2024").toISOString(), + budget: { + type: CampaignBudgetType.SPEND, + limit: 1000, + used: 0, + }, +} + +export const campaignsData = [ + { + id: "campaign-id-1", + name: "campaign 1", + description: "test description", + currency: "USD", + campaign_identifier: "test-1", + starts_at: new Date("01/01/2023"), + ends_at: new Date("01/01/2024"), + budget: { + type: CampaignBudgetType.SPEND, + limit: 1000, + used: 0, + }, + }, + { + id: "campaign-id-2", + name: "campaign 2", + description: "test description", + currency: "USD", + campaign_identifier: "test-2", + starts_at: new Date("01/01/2023"), + ends_at: new Date("01/01/2024"), + budget: { + type: CampaignBudgetType.USAGE, + limit: 1000, + used: 0, + }, + }, +] + +const env = { MEDUSA_FF_MEDUSA_V2: true } +const adminHeaders = { + headers: { "x-medusa-access-token": "test_token" }, +} + +medusaIntegrationTestRunner({ + env, + testSuite: ({ dbConnection, getContainer, api }) => { + describe("Admin Campaigns API", () => { + let appContainer + let promotionModuleService: IPromotionModuleService + + beforeAll(async () => { + appContainer = getContainer() + promotionModuleService = appContainer.resolve( + ModuleRegistrationName.PROMOTION + ) + }) + + beforeEach(async () => { + await createAdminUser(dbConnection, adminHeaders, appContainer) + }) + + const generatePromotionData = () => { + const code = Math.random().toString(36).substring(7) + + return { + code, + type: PromotionType.STANDARD, + is_automatic: true, + application_method: { + target_type: "items", + type: "fixed", + allocation: "each", + value: 100, + max_quantity: 100, + target_rules: [], + }, + rules: [], + } + } + + describe("GET /admin/campaigns", () => { + beforeEach(async () => { + await promotionModuleService.createCampaigns(campaignsData) + }) + + it("should get all campaigns and its count", async () => { + const response = await api.get(`/admin/campaigns`, adminHeaders) + + expect(response.status).toEqual(200) + expect(response.data.count).toEqual(2) + expect(response.data.campaigns).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + id: expect.any(String), + name: "campaign 1", + description: "test description", + currency: "USD", + campaign_identifier: "test-1", + starts_at: expect.any(String), + ends_at: expect.any(String), + budget: { + id: expect.any(String), + type: "spend", + limit: 1000, + used: 0, + raw_limit: { + precision: 20, + value: "1000", + }, + raw_used: { + precision: 20, + value: "0", + }, + created_at: expect.any(String), + updated_at: expect.any(String), + deleted_at: null, + }, + created_at: expect.any(String), + updated_at: expect.any(String), + deleted_at: null, + }), + expect.objectContaining({ + id: expect.any(String), + name: "campaign 2", + description: "test description", + currency: "USD", + campaign_identifier: "test-2", + starts_at: expect.any(String), + ends_at: expect.any(String), + budget: { + id: expect.any(String), + type: "usage", + limit: 1000, + used: 0, + raw_limit: { + precision: 20, + value: "1000", + }, + raw_used: { + precision: 20, + value: "0", + }, + created_at: expect.any(String), + updated_at: expect.any(String), + deleted_at: null, + }, + created_at: expect.any(String), + updated_at: expect.any(String), + deleted_at: null, + }), + ]) + ) + }) + + it("should support search on campaigns", async () => { + const response = await api.get( + `/admin/campaigns?q=ign%202`, + adminHeaders + ) + + expect(response.status).toEqual(200) + expect(response.data.campaigns).toEqual([ + expect.objectContaining({ + name: "campaign 2", + }), + ]) + }) + + it("should get all campaigns and its count filtered", async () => { + const response = await api.get( + `/admin/campaigns?fields=name,created_at,budget.id`, + adminHeaders + ) + + expect(response.status).toEqual(200) + expect(response.data.count).toEqual(2) + expect(response.data.campaigns).toEqual( + expect.arrayContaining([ + { + id: expect.any(String), + name: "campaign 1", + created_at: expect.any(String), + budget: { + id: expect.any(String), + }, + }, + { + id: expect.any(String), + name: "campaign 2", + created_at: expect.any(String), + budget: { + id: expect.any(String), + }, + }, + ]) + ) + }) + }) + + describe("GET /admin/campaigns/:id", () => { + it("should throw an error if id does not exist", async () => { + const { response } = await api + .get(`/admin/campaigns/does-not-exist`, adminHeaders) + .catch((e) => e) + + expect(response.status).toEqual(404) + expect(response.data.message).toEqual( + "Campaign with id: does-not-exist was not found" + ) + }) + + it("should get the requested campaign", async () => { + const createdCampaign = await promotionModuleService.createCampaigns( + campaignData + ) + + const response = await api.get( + `/admin/campaigns/${createdCampaign.id}`, + adminHeaders + ) + + expect(response.status).toEqual(200) + expect(response.data.campaign).toEqual({ + id: expect.any(String), + name: "campaign 1", + description: "test description", + currency: "USD", + campaign_identifier: "test-1", + starts_at: expect.any(String), + ends_at: expect.any(String), + budget: { + id: expect.any(String), + type: "spend", + limit: 1000, + raw_limit: { + precision: 20, + value: "1000", + }, + raw_used: { + precision: 20, + value: "0", + }, + used: 0, + created_at: expect.any(String), + updated_at: expect.any(String), + deleted_at: null, + }, + created_at: expect.any(String), + updated_at: expect.any(String), + deleted_at: null, + }) + }) + + it("should get the requested campaign with filtered fields and relations", async () => { + const createdCampaign = await promotionModuleService.createCampaigns( + campaignData + ) + + const response = await api.get( + `/admin/campaigns/${createdCampaign.id}?fields=name`, + adminHeaders + ) + + expect(response.status).toEqual(200) + expect(response.data.campaign).toEqual({ + id: expect.any(String), + name: "campaign 1", + }) + }) + }) + + describe("POST /admin/campaigns", () => { + it("should throw an error if required params are not passed", async () => { + const { response } = await api + .post(`/admin/campaigns`, {}, adminHeaders) + .catch((e) => e) + + expect(response.status).toEqual(400) + // expect(response.data.message).toEqual( + // "name must be a string, name should not be empty" + // ) + }) + + it("should create a campaign successfully", async () => { + const createdPromotion = await promotionModuleService.create({ + code: "TEST", + type: "standard", + }) + + const response = await api.post( + `/admin/campaigns?fields=*promotions`, + { + name: "test", + campaign_identifier: "test", + starts_at: new Date("01/01/2024").toISOString(), + ends_at: new Date("01/01/2029").toISOString(), + budget: { + limit: 1000, + type: "usage", + }, + }, + adminHeaders + ) + + expect(response.status).toEqual(200) + expect(response.data.campaign).toEqual( + expect.objectContaining({ + id: expect.any(String), + name: "test", + campaign_identifier: "test", + starts_at: expect.any(String), + ends_at: expect.any(String), + budget: expect.objectContaining({ + limit: 1000, + type: "usage", + }), + }) + ) + }) + + it("should create 3 campaigns in parallel and have the context passed as argument when calling createCampaigns with different transactionId", async () => { + const parallelPromotion = await promotionModuleService.create({ + code: "PARALLEL", + type: "standard", + }) + + const spyCreateCampaigns = jest.spyOn( + promotionModuleService.constructor.prototype, + "createCampaigns" + ) + + const a = async () => { + return await api.post( + `/admin/campaigns`, + { + name: "camp_1", + campaign_identifier: "camp_1", + starts_at: new Date("01/01/2024").toISOString(), + ends_at: new Date("01/02/2024").toISOString(), + budget: { + limit: 1000, + type: "usage", + }, + }, + adminHeaders + ) + } + + const b = async () => { + return await api.post( + `/admin/campaigns`, + { + name: "camp_2", + campaign_identifier: "camp_2", + starts_at: new Date("01/02/2024").toISOString(), + ends_at: new Date("01/03/2029").toISOString(), + budget: { + limit: 500, + type: "usage", + }, + }, + adminHeaders + ) + } + + const c = async () => { + return await api.post( + `/admin/campaigns`, + { + name: "camp_3", + campaign_identifier: "camp_3", + starts_at: new Date("01/03/2024").toISOString(), + ends_at: new Date("01/04/2029").toISOString(), + budget: { + limit: 250, + type: "usage", + }, + }, + { + headers: { + ...adminHeaders.headers, + "x-request-id": "my-custom-request-id", + }, + } + ) + } + + await Promise.all([a(), b(), c()]) + + expect(spyCreateCampaigns).toHaveBeenCalledTimes(3) + expect(spyCreateCampaigns.mock.calls[0][1].__type).toBe( + "MedusaContext" + ) + + const distinctTransactionId = [ + ...new Set( + spyCreateCampaigns.mock.calls.map((call) => call[1].transactionId) + ), + ] + expect(distinctTransactionId).toHaveLength(3) + + const distinctRequestId = [ + ...new Set( + spyCreateCampaigns.mock.calls.map((call) => call[1].requestId) + ), + ] + + expect(distinctRequestId).toHaveLength(3) + expect(distinctRequestId).toContain("my-custom-request-id") + }) + }) + + describe("POST /admin/campaigns/:id", () => { + it("should throw an error if id does not exist", async () => { + const { response } = await api + .post(`/admin/campaigns/does-not-exist`, {}, adminHeaders) + .catch((e) => e) + + expect(response.status).toEqual(404) + expect(response.data.message).toEqual( + `Campaign with id "does-not-exist" not found` + ) + }) + + it("should update a campaign successfully", async () => { + const createdPromotion = await promotionModuleService.create({ + code: "TEST", + type: "standard", + }) + + const createdCampaign = await promotionModuleService.createCampaigns({ + name: "test", + campaign_identifier: "test", + starts_at: new Date("01/01/2024").toISOString(), + ends_at: new Date("01/01/2029").toISOString(), + budget: { + limit: 1000, + type: "usage", + used: 10, + }, + }) + + await promotionModuleService.addPromotionsToCampaign({ + id: createdCampaign.id, + promotion_ids: [createdPromotion.id], + }) + + const response = await api.post( + `/admin/campaigns/${createdCampaign.id}?fields=*promotions`, + { + name: "test-2", + campaign_identifier: "test-2", + budget: { + limit: 2000, + }, + }, + adminHeaders + ) + + expect(response.status).toEqual(200) + expect(response.data.campaign).toEqual( + expect.objectContaining({ + id: expect.any(String), + name: "test-2", + campaign_identifier: "test-2", + budget: expect.objectContaining({ + limit: 2000, + type: "usage", + used: 10, + }), + promotions: [ + expect.objectContaining({ + id: createdPromotion.id, + }), + ], + }) + ) + }) + }) + + describe("DELETE /admin/campaigns/:id", () => { + it("should delete campaign successfully", async () => { + const [createdCampaign] = + await promotionModuleService.createCampaigns([ + { + name: "test", + campaign_identifier: "test", + starts_at: new Date("01/01/2024"), + ends_at: new Date("01/01/2025"), + }, + ]) + + const deleteRes = await api.delete( + `/admin/campaigns/${createdCampaign.id}`, + adminHeaders + ) + + expect(deleteRes.status).toEqual(200) + + const campaigns = await promotionModuleService.listCampaigns({ + id: [createdCampaign.id], + }) + + expect(campaigns.length).toEqual(0) + }) + }) + + describe("POST /admin/campaigns/:id/promotions", () => { + it("should add or remove promotions from campaign", async () => { + const campaign = ( + await api.post(`/admin/campaigns`, campaignData, adminHeaders) + ).data.campaign + + const promotion1 = ( + await api.post( + `/admin/promotions`, + generatePromotionData(), + adminHeaders + ) + ).data.promotion + + const promotion2 = ( + await api.post( + `/admin/promotions`, + generatePromotionData(), + adminHeaders + ) + ).data.promotion + + let response = await api.post( + `/admin/campaigns/${campaign.id}/promotions`, + { add: [promotion1.id, promotion2.id] }, + adminHeaders + ) + + expect(response.status).toEqual(200) + expect(response.data.campaign).toEqual( + expect.objectContaining({ + id: expect.any(String), + }) + ) + + response = await api.get( + `/admin/promotions?campaign_id=${campaign.id}`, + adminHeaders + ) + + expect(response.status).toEqual(200) + expect(response.data.promotions).toHaveLength(2) + expect(response.data.promotions).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + id: promotion1.id, + }), + expect.objectContaining({ + id: promotion2.id, + }), + ]) + ) + + await api.post( + `/admin/campaigns/${campaign.id}/promotions`, + { remove: [promotion1.id] }, + adminHeaders + ) + + response = await api.get( + `/admin/promotions?campaign_id=${campaign.id}`, + adminHeaders + ) + + expect(response.status).toEqual(200) + expect(response.data.promotions).toHaveLength(1) + expect(response.data.promotions).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + id: promotion2.id, + }), + ]) + ) + }) + }) + }) + }, +}) diff --git a/integration-tests/modules/__tests__/promotion/admin/create-campaign.spec.ts b/integration-tests/modules/__tests__/promotion/admin/create-campaign.spec.ts deleted file mode 100644 index a1d5f1a086772..0000000000000 --- a/integration-tests/modules/__tests__/promotion/admin/create-campaign.spec.ts +++ /dev/null @@ -1,178 +0,0 @@ -import { IPromotionModuleService } from "@medusajs/types" -import { ModuleRegistrationName } from "@medusajs/modules-sdk" -import { createAdminUser } from "../../../../helpers/create-admin-user" -import { medusaIntegrationTestRunner } from "medusa-test-utils" - -jest.setTimeout(50000) - -const env = { MEDUSA_FF_MEDUSA_V2: true } -const adminHeaders = { - headers: { "x-medusa-access-token": "test_token" }, -} - -medusaIntegrationTestRunner({ - env, - testSuite: ({ dbConnection, getContainer, api }) => { - describe("POST /admin/campaigns", () => { - let appContainer - let promotionModuleService: IPromotionModuleService - - beforeAll(async () => { - appContainer = getContainer() - promotionModuleService = appContainer.resolve( - ModuleRegistrationName.PROMOTION - ) - }) - - beforeEach(async () => { - await createAdminUser(dbConnection, adminHeaders, appContainer) - }) - - it("should throw an error if required params are not passed", async () => { - const { response } = await api - .post(`/admin/campaigns`, {}, adminHeaders) - .catch((e) => e) - - expect(response.status).toEqual(400) - // expect(response.data.message).toEqual( - // "name must be a string, name should not be empty" - // ) - }) - - it("should create a campaign successfully", async () => { - const createdPromotion = await promotionModuleService.create({ - code: "TEST", - type: "standard", - }) - - const response = await api.post( - `/admin/campaigns?fields=*promotions`, - { - name: "test", - campaign_identifier: "test", - starts_at: new Date("01/01/2024").toISOString(), - ends_at: new Date("01/01/2029").toISOString(), - promotions: [{ id: createdPromotion.id }], - budget: { - limit: 1000, - type: "usage", - }, - }, - adminHeaders - ) - - expect(response.status).toEqual(200) - expect(response.data.campaign).toEqual( - expect.objectContaining({ - id: expect.any(String), - name: "test", - campaign_identifier: "test", - starts_at: expect.any(String), - ends_at: expect.any(String), - budget: expect.objectContaining({ - limit: 1000, - type: "usage", - }), - promotions: [ - expect.objectContaining({ - id: createdPromotion.id, - }), - ], - }) - ) - }) - - it("should create 3 campaigns in parallel and have the context passed as argument when calling createCampaigns with different transactionId", async () => { - const parallelPromotion = await promotionModuleService.create({ - code: "PARALLEL", - type: "standard", - }) - - const spyCreateCampaigns = jest.spyOn( - promotionModuleService.constructor.prototype, - "createCampaigns" - ) - - const a = async () => { - return await api.post( - `/admin/campaigns`, - { - name: "camp_1", - campaign_identifier: "camp_1", - starts_at: new Date("01/01/2024").toISOString(), - ends_at: new Date("01/02/2024").toISOString(), - promotions: [{ id: parallelPromotion.id }], - budget: { - limit: 1000, - type: "usage", - }, - }, - adminHeaders - ) - } - - const b = async () => { - return await api.post( - `/admin/campaigns`, - { - name: "camp_2", - campaign_identifier: "camp_2", - starts_at: new Date("01/02/2024").toISOString(), - ends_at: new Date("01/03/2029").toISOString(), - promotions: [{ id: parallelPromotion.id }], - budget: { - limit: 500, - type: "usage", - }, - }, - adminHeaders - ) - } - - const c = async () => { - return await api.post( - `/admin/campaigns`, - { - name: "camp_3", - campaign_identifier: "camp_3", - starts_at: new Date("01/03/2024").toISOString(), - ends_at: new Date("01/04/2029").toISOString(), - promotions: [{ id: parallelPromotion.id }], - budget: { - limit: 250, - type: "usage", - }, - }, - { - headers: { - ...adminHeaders.headers, - "x-request-id": "my-custom-request-id", - }, - } - ) - } - - await Promise.all([a(), b(), c()]) - - expect(spyCreateCampaigns).toHaveBeenCalledTimes(3) - expect(spyCreateCampaigns.mock.calls[0][1].__type).toBe("MedusaContext") - - const distinctTransactionId = [ - ...new Set( - spyCreateCampaigns.mock.calls.map((call) => call[1].transactionId) - ), - ] - expect(distinctTransactionId).toHaveLength(3) - - const distinctRequestId = [ - ...new Set( - spyCreateCampaigns.mock.calls.map((call) => call[1].requestId) - ), - ] - - expect(distinctRequestId).toHaveLength(3) - expect(distinctRequestId).toContain("my-custom-request-id") - }) - }) - }, -}) diff --git a/integration-tests/modules/__tests__/promotion/admin/delete-campaign.spec.ts b/integration-tests/modules/__tests__/promotion/admin/delete-campaign.spec.ts deleted file mode 100644 index bc1a65c7aba6c..0000000000000 --- a/integration-tests/modules/__tests__/promotion/admin/delete-campaign.spec.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { IPromotionModuleService } from "@medusajs/types" -import { ModuleRegistrationName } from "@medusajs/modules-sdk" -import { createAdminUser } from "../../../../helpers/create-admin-user" -import { medusaIntegrationTestRunner } from "medusa-test-utils" - -jest.setTimeout(50000) - -const env = { MEDUSA_FF_MEDUSA_V2: true } -const adminHeaders = { - headers: { "x-medusa-access-token": "test_token" }, -} - -medusaIntegrationTestRunner({ - env, - testSuite: ({ dbConnection, getContainer, api }) => { - describe("DELETE /admin/campaigns/:id", () => { - let appContainer - let promotionModuleService: IPromotionModuleService - - beforeAll(async () => { - appContainer = getContainer() - promotionModuleService = appContainer.resolve( - ModuleRegistrationName.PROMOTION - ) - }) - - beforeEach(async () => { - await createAdminUser(dbConnection, adminHeaders, appContainer) - }) - - it("should delete campaign successfully", async () => { - const [createdCampaign] = await promotionModuleService.createCampaigns([ - { - name: "test", - campaign_identifier: "test", - starts_at: new Date("01/01/2024"), - ends_at: new Date("01/01/2025"), - }, - ]) - - const deleteRes = await api.delete( - `/admin/campaigns/${createdCampaign.id}`, - adminHeaders - ) - - expect(deleteRes.status).toEqual(200) - - const campaigns = await promotionModuleService.listCampaigns({ - id: [createdCampaign.id], - }) - - expect(campaigns.length).toEqual(0) - }) - }) - }, -}) diff --git a/integration-tests/modules/__tests__/promotion/admin/list-campaigns.spec.ts b/integration-tests/modules/__tests__/promotion/admin/list-campaigns.spec.ts deleted file mode 100644 index c1f1eb7c8d213..0000000000000 --- a/integration-tests/modules/__tests__/promotion/admin/list-campaigns.spec.ts +++ /dev/null @@ -1,178 +0,0 @@ -import { ModuleRegistrationName } from "@medusajs/modules-sdk" -import { IPromotionModuleService } from "@medusajs/types" -import { CampaignBudgetType } from "@medusajs/utils" -import { createAdminUser } from "../../../../helpers/create-admin-user" -import { medusaIntegrationTestRunner } from "medusa-test-utils" - -jest.setTimeout(50000) - -export const campaignsData = [ - { - id: "campaign-id-1", - name: "campaign 1", - description: "test description", - currency: "USD", - campaign_identifier: "test-1", - starts_at: new Date("01/01/2023"), - ends_at: new Date("01/01/2024"), - budget: { - type: CampaignBudgetType.SPEND, - limit: 1000, - used: 0, - }, - }, - { - id: "campaign-id-2", - name: "campaign 2", - description: "test description", - currency: "USD", - campaign_identifier: "test-2", - starts_at: new Date("01/01/2023"), - ends_at: new Date("01/01/2024"), - budget: { - type: CampaignBudgetType.USAGE, - limit: 1000, - used: 0, - }, - }, -] - -const env = { MEDUSA_FF_MEDUSA_V2: true } -const adminHeaders = { - headers: { "x-medusa-access-token": "test_token" }, -} - -medusaIntegrationTestRunner({ - env, - testSuite: ({ dbConnection, getContainer, api }) => { - describe("GET /admin/campaigns", () => { - let appContainer - let promotionModuleService: IPromotionModuleService - - beforeAll(async () => { - appContainer = getContainer() - promotionModuleService = appContainer.resolve( - ModuleRegistrationName.PROMOTION - ) - }) - - beforeEach(async () => { - await createAdminUser(dbConnection, adminHeaders, appContainer) - await promotionModuleService.createCampaigns(campaignsData) - }) - - it("should get all campaigns and its count", async () => { - const response = await api.get(`/admin/campaigns`, adminHeaders) - - expect(response.status).toEqual(200) - expect(response.data.count).toEqual(2) - expect(response.data.campaigns).toEqual( - expect.arrayContaining([ - expect.objectContaining({ - id: expect.any(String), - name: "campaign 1", - description: "test description", - currency: "USD", - campaign_identifier: "test-1", - starts_at: expect.any(String), - ends_at: expect.any(String), - budget: { - id: expect.any(String), - type: "spend", - limit: 1000, - used: 0, - raw_limit: { - precision: 20, - value: "1000", - }, - raw_used: { - precision: 20, - value: "0", - }, - created_at: expect.any(String), - updated_at: expect.any(String), - deleted_at: null, - }, - created_at: expect.any(String), - updated_at: expect.any(String), - deleted_at: null, - }), - expect.objectContaining({ - id: expect.any(String), - name: "campaign 2", - description: "test description", - currency: "USD", - campaign_identifier: "test-2", - starts_at: expect.any(String), - ends_at: expect.any(String), - budget: { - id: expect.any(String), - type: "usage", - limit: 1000, - used: 0, - raw_limit: { - precision: 20, - value: "1000", - }, - raw_used: { - precision: 20, - value: "0", - }, - created_at: expect.any(String), - updated_at: expect.any(String), - deleted_at: null, - }, - created_at: expect.any(String), - updated_at: expect.any(String), - deleted_at: null, - }), - ]) - ) - }) - - it("should support search on campaigns", async () => { - const response = await api.get( - `/admin/campaigns?q=ign%202`, - adminHeaders - ) - - expect(response.status).toEqual(200) - expect(response.data.campaigns).toEqual([ - expect.objectContaining({ - name: "campaign 2", - }), - ]) - }) - - it("should get all campaigns and its count filtered", async () => { - const response = await api.get( - `/admin/campaigns?fields=name,created_at,budget.id`, - adminHeaders - ) - - expect(response.status).toEqual(200) - expect(response.data.count).toEqual(2) - expect(response.data.campaigns).toEqual( - expect.arrayContaining([ - { - id: expect.any(String), - name: "campaign 1", - created_at: expect.any(String), - budget: { - id: expect.any(String), - }, - }, - { - id: expect.any(String), - name: "campaign 2", - created_at: expect.any(String), - budget: { - id: expect.any(String), - }, - }, - ]) - ) - }) - }) - }, -}) diff --git a/integration-tests/modules/__tests__/promotion/admin/list-promotions.spec.ts b/integration-tests/modules/__tests__/promotion/admin/list-promotions.spec.ts index 94ca5b6cd1d83..fcb24aa5250c7 100644 --- a/integration-tests/modules/__tests__/promotion/admin/list-promotions.spec.ts +++ b/integration-tests/modules/__tests__/promotion/admin/list-promotions.spec.ts @@ -113,7 +113,7 @@ medusaIntegrationTestRunner({ ]) const response = await api.get( - `/admin/promotions?fields=code,created_at,application_method.id&expand=application_method`, + `/admin/promotions?fields=code,created_at,application_method.id`, adminHeaders ) diff --git a/integration-tests/modules/__tests__/promotion/admin/retrieve-campaign.spec.ts b/integration-tests/modules/__tests__/promotion/admin/retrieve-campaign.spec.ts deleted file mode 100644 index 4b63a0fb6909a..0000000000000 --- a/integration-tests/modules/__tests__/promotion/admin/retrieve-campaign.spec.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { ModuleRegistrationName } from "@medusajs/modules-sdk" -import { IPromotionModuleService } from "@medusajs/types" -import { CampaignBudgetType } from "@medusajs/utils" -import { createAdminUser } from "../../../../helpers/create-admin-user" -import { medusaIntegrationTestRunner } from "medusa-test-utils" - -jest.setTimeout(50000) - -export const campaignData = { - name: "campaign 1", - description: "test description", - currency: "USD", - campaign_identifier: "test-1", - starts_at: new Date("01/01/2023"), - ends_at: new Date("01/01/2024"), - budget: { - type: CampaignBudgetType.SPEND, - limit: 1000, - used: 0, - }, -} - -const env = { MEDUSA_FF_MEDUSA_V2: true } -const adminHeaders = { - headers: { "x-medusa-access-token": "test_token" }, -} - -medusaIntegrationTestRunner({ - env, - testSuite: ({ dbConnection, getContainer, api }) => { - describe("GET /admin/campaigns", () => { - let appContainer - let promotionModuleService: IPromotionModuleService - - beforeAll(async () => { - appContainer = getContainer() - promotionModuleService = appContainer.resolve( - ModuleRegistrationName.PROMOTION - ) - }) - - beforeEach(async () => { - await createAdminUser(dbConnection, adminHeaders, appContainer) - }) - - it("should throw an error if id does not exist", async () => { - const { response } = await api - .get(`/admin/campaigns/does-not-exist`, adminHeaders) - .catch((e) => e) - - expect(response.status).toEqual(404) - expect(response.data.message).toEqual( - "Campaign with id: does-not-exist was not found" - ) - }) - - it("should get the requested campaign", async () => { - const createdCampaign = await promotionModuleService.createCampaigns( - campaignData - ) - - const response = await api.get( - `/admin/campaigns/${createdCampaign.id}`, - adminHeaders - ) - - expect(response.status).toEqual(200) - expect(response.data.campaign).toEqual({ - id: expect.any(String), - name: "campaign 1", - description: "test description", - currency: "USD", - campaign_identifier: "test-1", - starts_at: expect.any(String), - ends_at: expect.any(String), - budget: { - id: expect.any(String), - type: "spend", - limit: 1000, - raw_limit: { - precision: 20, - value: "1000", - }, - raw_used: { - precision: 20, - value: "0", - }, - used: 0, - created_at: expect.any(String), - updated_at: expect.any(String), - deleted_at: null, - }, - created_at: expect.any(String), - updated_at: expect.any(String), - deleted_at: null, - }) - }) - - it("should get the requested campaign with filtered fields and relations", async () => { - const createdCampaign = await promotionModuleService.createCampaigns( - campaignData - ) - - const response = await api.get( - `/admin/campaigns/${createdCampaign.id}?fields=name`, - adminHeaders - ) - - expect(response.status).toEqual(200) - expect(response.data.campaign).toEqual({ - id: expect.any(String), - name: "campaign 1", - }) - }) - }) - }, -}) diff --git a/integration-tests/modules/__tests__/promotion/admin/update-campaign.spec.ts b/integration-tests/modules/__tests__/promotion/admin/update-campaign.spec.ts deleted file mode 100644 index 318a88a00acae..0000000000000 --- a/integration-tests/modules/__tests__/promotion/admin/update-campaign.spec.ts +++ /dev/null @@ -1,100 +0,0 @@ -import { IPromotionModuleService } from "@medusajs/types" -import { ModuleRegistrationName } from "@medusajs/modules-sdk" -import { createAdminUser } from "../../../../helpers/create-admin-user" -import { medusaIntegrationTestRunner } from "medusa-test-utils" - -jest.setTimeout(50000) - -const env = { MEDUSA_FF_MEDUSA_V2: true } -const adminHeaders = { - headers: { "x-medusa-access-token": "test_token" }, -} - -medusaIntegrationTestRunner({ - env, - testSuite: ({ dbConnection, getContainer, api }) => { - describe("POST /admin/campaigns/:id", () => { - let appContainer - let promotionModuleService: IPromotionModuleService - - beforeAll(async () => { - appContainer = getContainer() - promotionModuleService = appContainer.resolve( - ModuleRegistrationName.PROMOTION - ) - }) - - beforeEach(async () => { - await createAdminUser(dbConnection, adminHeaders, appContainer) - }) - - it("should throw an error if id does not exist", async () => { - const { response } = await api - .post(`/admin/campaigns/does-not-exist`, {}, adminHeaders) - .catch((e) => e) - - expect(response.status).toEqual(404) - expect(response.data.message).toEqual( - `Campaign with id "does-not-exist" not found` - ) - }) - - it("should update a campaign successfully", async () => { - const createdPromotion = await promotionModuleService.create({ - code: "TEST", - type: "standard", - }) - - const createdPromotion2 = await promotionModuleService.create({ - code: "TEST_2", - type: "standard", - }) - - const createdCampaign = await promotionModuleService.createCampaigns({ - name: "test", - campaign_identifier: "test", - starts_at: new Date("01/01/2024").toISOString(), - ends_at: new Date("01/01/2029").toISOString(), - promotions: [{ id: createdPromotion.id }], - budget: { - limit: 1000, - type: "usage", - used: 10, - }, - }) - - const response = await api.post( - `/admin/campaigns/${createdCampaign.id}?fields=*promotions`, - { - name: "test-2", - campaign_identifier: "test-2", - budget: { - limit: 2000, - }, - promotions: [{ id: createdPromotion2.id }], - }, - adminHeaders - ) - - expect(response.status).toEqual(200) - expect(response.data.campaign).toEqual( - expect.objectContaining({ - id: expect.any(String), - name: "test-2", - campaign_identifier: "test-2", - budget: expect.objectContaining({ - limit: 2000, - type: "usage", - used: 10, - }), - promotions: [ - expect.objectContaining({ - id: createdPromotion2.id, - }), - ], - }) - ) - }) - }) - }, -}) diff --git a/packages/core/core-flows/src/promotion/steps/add-campaign-promotions.ts b/packages/core/core-flows/src/promotion/steps/add-campaign-promotions.ts new file mode 100644 index 0000000000000..a175b5b15dd24 --- /dev/null +++ b/packages/core/core-flows/src/promotion/steps/add-campaign-promotions.ts @@ -0,0 +1,41 @@ +import { ModuleRegistrationName } from "@medusajs/modules-sdk" +import { IPromotionModuleService, LinkWorkflowInput } from "@medusajs/types" +import { StepResponse, WorkflowData, createStep } from "@medusajs/workflows-sdk" + +export const addCampaignPromotionsStepId = "add-campaign-promotions" +export const addCampaignPromotionsStep = createStep( + addCampaignPromotionsStepId, + async (input: WorkflowData, { container }) => { + const { id: campaignId, add: promotionIdsToAdd = [] } = input + + const promotionModule = container.resolve( + ModuleRegistrationName.PROMOTION + ) + + if (promotionIdsToAdd.length) { + await promotionModule.addPromotionsToCampaign({ + id: campaignId, + promotion_ids: promotionIdsToAdd, + }) + } + + return new StepResponse(null, input) + }, + async (data, { container }) => { + if (!data) { + return + } + + const { id: campaignId, add: promotionIdsToRemove = [] } = data + const promotionModule = container.resolve( + ModuleRegistrationName.PROMOTION + ) + + if (promotionIdsToRemove.length) { + await promotionModule.removePromotionsFromCampaign({ + id: campaignId, + promotion_ids: promotionIdsToRemove, + }) + } + } +) diff --git a/packages/core/core-flows/src/promotion/steps/index.ts b/packages/core/core-flows/src/promotion/steps/index.ts index f3b89f7a68a4e..632fd1c808ecb 100644 --- a/packages/core/core-flows/src/promotion/steps/index.ts +++ b/packages/core/core-flows/src/promotion/steps/index.ts @@ -1,8 +1,10 @@ +export * from "./add-campaign-promotions" export * from "./add-rules-to-promotions" export * from "./create-campaigns" export * from "./create-promotions" export * from "./delete-campaigns" export * from "./delete-promotions" +export * from "./remove-campaign-promotions" export * from "./remove-rules-from-promotions" export * from "./update-campaigns" export * from "./update-promotion-rules" diff --git a/packages/core/core-flows/src/promotion/steps/remove-campaign-promotions.ts b/packages/core/core-flows/src/promotion/steps/remove-campaign-promotions.ts new file mode 100644 index 0000000000000..fdcf242b1a609 --- /dev/null +++ b/packages/core/core-flows/src/promotion/steps/remove-campaign-promotions.ts @@ -0,0 +1,40 @@ +import { ModuleRegistrationName } from "@medusajs/modules-sdk" +import { IPromotionModuleService, LinkWorkflowInput } from "@medusajs/types" +import { StepResponse, WorkflowData, createStep } from "@medusajs/workflows-sdk" + +export const removeCampaignPromotionsStepId = "remove-campaign-promotions" +export const removeCampaignPromotionsStep = createStep( + removeCampaignPromotionsStepId, + async (input: WorkflowData, { container }) => { + const { id: campaignId, remove: promotionIdsToRemove = [] } = input + const promotionModule = container.resolve( + ModuleRegistrationName.PROMOTION + ) + + if (promotionIdsToRemove.length) { + await promotionModule.removePromotionsFromCampaign({ + id: campaignId, + promotion_ids: promotionIdsToRemove, + }) + } + + return new StepResponse(null, input) + }, + async (data, { container }) => { + if (!data) { + return + } + + const { id: campaignId, remove: promotionIdsToAdd = [] } = data + const promotionModule = container.resolve( + ModuleRegistrationName.PROMOTION + ) + + if (promotionIdsToAdd.length) { + await promotionModule.addPromotionsToCampaign({ + id: campaignId, + promotion_ids: promotionIdsToAdd, + }) + } + } +) diff --git a/packages/core/core-flows/src/promotion/workflows/add-or-remove-campaign-promotions.ts b/packages/core/core-flows/src/promotion/workflows/add-or-remove-campaign-promotions.ts new file mode 100644 index 0000000000000..adb34649c6395 --- /dev/null +++ b/packages/core/core-flows/src/promotion/workflows/add-or-remove-campaign-promotions.ts @@ -0,0 +1,16 @@ +import { LinkWorkflowInput } from "@medusajs/types" +import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + addCampaignPromotionsStep, + removeCampaignPromotionsStep, +} from "../steps" + +export const addOrRemoveCampaignPromotionsWorkflowId = + "add-or-remove-campaign-promotions" +export const addOrRemoveCampaignPromotionsWorkflow = createWorkflow( + addOrRemoveCampaignPromotionsWorkflowId, + (input: WorkflowData): WorkflowData => { + addCampaignPromotionsStep(input) + removeCampaignPromotionsStep(input) + } +) diff --git a/packages/core/core-flows/src/promotion/workflows/index.ts b/packages/core/core-flows/src/promotion/workflows/index.ts index e90129f58cc2b..604b82679b24d 100644 --- a/packages/core/core-flows/src/promotion/workflows/index.ts +++ b/packages/core/core-flows/src/promotion/workflows/index.ts @@ -1,10 +1,11 @@ +export * from "./add-or-remove-campaign-promotions" export * from "./batch-promotion-rules" export * from "./create-campaigns" +export * from "./create-promotion-rules" export * from "./create-promotions" export * from "./delete-campaigns" +export * from "./delete-promotion-rules" export * from "./delete-promotions" export * from "./update-campaigns" export * from "./update-promotion-rules" -export * from "./delete-promotion-rules" -export * from "./create-promotion-rules" export * from "./update-promotions" diff --git a/packages/core/types/src/promotion/common/campaign.ts b/packages/core/types/src/promotion/common/campaign.ts index fa502c1b27945..9af0dec0d23a3 100644 --- a/packages/core/types/src/promotion/common/campaign.ts +++ b/packages/core/types/src/promotion/common/campaign.ts @@ -1,5 +1,6 @@ import { BaseFilterable } from "../../dal" import { CampaignBudgetDTO } from "./campaign-budget" +import { PromotionDTO } from "./promotion" /** * The campaign details. @@ -44,6 +45,11 @@ export interface CampaignDTO { * The associated campaign budget. */ budget?: CampaignBudgetDTO + + /** + * The associated promotions. + */ + promotions?: PromotionDTO[] } /** diff --git a/packages/core/types/src/promotion/common/promotion.ts b/packages/core/types/src/promotion/common/promotion.ts index 73bd193ee8336..e3d9723c60b50 100644 --- a/packages/core/types/src/promotion/common/promotion.ts +++ b/packages/core/types/src/promotion/common/promotion.ts @@ -133,7 +133,7 @@ export interface UpdatePromotionDTO { /** * The associated campaign's ID. */ - campaign_id?: string + campaign_id?: string | null } /** diff --git a/packages/core/types/src/promotion/mutations.ts b/packages/core/types/src/promotion/mutations.ts index ec9462ddf86b1..6370a87e4d409 100644 --- a/packages/core/types/src/promotion/mutations.ts +++ b/packages/core/types/src/promotion/mutations.ts @@ -1,4 +1,4 @@ -import { CampaignBudgetTypeValues, PromotionDTO } from "./common" +import { CampaignBudgetTypeValues } from "./common" /** * The campaign budget to be created. @@ -83,11 +83,6 @@ export interface CreateCampaignDTO { * The associated campaign budget. */ budget?: CreateCampaignBudgetDTO - - /** - * The promotions of the campaign. - */ - promotions?: Pick[] } /** @@ -133,9 +128,28 @@ export interface UpdateCampaignDTO { * The budget of the campaign. */ budget?: Omit +} + +export interface AddPromotionsToCampaignDTO { + /** + * The ID of the campaign. + */ + id: string + + /** + * Ids of promotions to add + */ + promotion_ids: string[] +} + +export interface RemovePromotionsFromCampaignDTO { + /** + * The ID of the campaign. + */ + id: string /** - * The promotions of the campaign. + * Ids of promotions to add */ - promotions?: Pick[] + promotion_ids: string[] } diff --git a/packages/core/types/src/promotion/service.ts b/packages/core/types/src/promotion/service.ts index 37855478ff248..d92e92a2d99dc 100644 --- a/packages/core/types/src/promotion/service.ts +++ b/packages/core/types/src/promotion/service.ts @@ -16,7 +16,12 @@ import { UpdatePromotionDTO, UpdatePromotionRuleDTO, } from "./common" -import { CreateCampaignDTO, UpdateCampaignDTO } from "./mutations" +import { + AddPromotionsToCampaignDTO, + CreateCampaignDTO, + RemovePromotionsFromCampaignDTO, + UpdateCampaignDTO, +} from "./mutations" /** * The main service interface for the Promotion Module. @@ -967,4 +972,14 @@ export interface IPromotionModuleService extends IModuleService { config?: RestoreReturn, sharedContext?: Context ): Promise | void> + + addPromotionsToCampaign( + data: AddPromotionsToCampaignDTO, + sharedContext?: Context + ): Promise<{ ids: string[] }> + + removePromotionsFromCampaign( + data: RemovePromotionsFromCampaignDTO, + sharedContext?: Context + ): Promise<{ ids: string[] }> } diff --git a/packages/medusa/src/api-v2/admin/campaigns/[id]/promotions/route.ts b/packages/medusa/src/api-v2/admin/campaigns/[id]/promotions/route.ts new file mode 100644 index 0000000000000..7fc71e316565a --- /dev/null +++ b/packages/medusa/src/api-v2/admin/campaigns/[id]/promotions/route.ts @@ -0,0 +1,34 @@ +import { + AuthenticatedMedusaRequest, + MedusaResponse, +} from "../../../../../types/routing" + +import { addOrRemoveCampaignPromotionsWorkflow } from "@medusajs/core-flows" +import { LinkMethodRequest } from "@medusajs/types/src" +import { refetchCampaign } from "../../helpers" + +export const POST = async ( + req: AuthenticatedMedusaRequest, + res: MedusaResponse +) => { + const { id } = req.params + const { add, remove } = req.validatedBody + const { errors } = await addOrRemoveCampaignPromotionsWorkflow(req.scope).run( + { + input: { id, add, remove }, + throwOnError: false, + } + ) + + if (Array.isArray(errors) && errors[0]) { + throw errors[0].error + } + + const campaign = await refetchCampaign( + req.params.id, + req.scope, + req.remoteQueryConfig.fields + ) + + res.status(200).json({ campaign }) +} diff --git a/packages/medusa/src/api-v2/admin/campaigns/middlewares.ts b/packages/medusa/src/api-v2/admin/campaigns/middlewares.ts index 6217dfd7b4b66..a83bfe4d37778 100644 --- a/packages/medusa/src/api-v2/admin/campaigns/middlewares.ts +++ b/packages/medusa/src/api-v2/admin/campaigns/middlewares.ts @@ -1,14 +1,15 @@ -import * as QueryConfig from "./query-config" import { MiddlewareRoute } from "../../../loaders/helpers/routing/types" import { authenticate } from "../../../utils/authenticate-middleware" +import { validateAndTransformBody } from "../../utils/validate-body" import { validateAndTransformQuery } from "../../utils/validate-query" +import { createLinkBody } from "../../utils/validators" +import * as QueryConfig from "./query-config" import { AdminCreateCampaign, AdminGetCampaignParams, AdminGetCampaignsParams, AdminUpdateCampaign, } from "./validators" -import { validateAndTransformBody } from "../../utils/validate-body" export const adminCampaignRoutesMiddlewares: MiddlewareRoute[] = [ { @@ -57,4 +58,15 @@ export const adminCampaignRoutesMiddlewares: MiddlewareRoute[] = [ ), ], }, + { + method: ["POST"], + matcher: "/admin/campaigns/:id/promotions", + middlewares: [ + validateAndTransformBody(createLinkBody()), + validateAndTransformQuery( + AdminGetCampaignParams, + QueryConfig.retrieveTransformQueryConfig + ), + ], + }, ] diff --git a/packages/medusa/src/api-v2/admin/promotions/middlewares.ts b/packages/medusa/src/api-v2/admin/promotions/middlewares.ts index e52f4b03db0b8..d0bb738b7360c 100644 --- a/packages/medusa/src/api-v2/admin/promotions/middlewares.ts +++ b/packages/medusa/src/api-v2/admin/promotions/middlewares.ts @@ -1,7 +1,9 @@ -import * as QueryConfig from "./query-config" import { MiddlewareRoute } from "../../../loaders/helpers/routing/types" import { authenticate } from "../../../utils/authenticate-middleware" +import { validateAndTransformBody } from "../../utils/validate-body" import { validateAndTransformQuery } from "../../utils/validate-query" +import { createBatchBody } from "../../utils/validators" +import * as QueryConfig from "./query-config" import { AdminCreatePromotion, AdminCreatePromotionRule, @@ -13,8 +15,6 @@ import { AdminUpdatePromotion, AdminUpdatePromotionRule, } from "./validators" -import { validateAndTransformBody } from "../../utils/validate-body" -import { createBatchBody } from "../../utils/validators" export const adminPromotionRoutesMiddlewares: MiddlewareRoute[] = [ { diff --git a/packages/medusa/src/api-v2/admin/promotions/route.ts b/packages/medusa/src/api-v2/admin/promotions/route.ts index 17866457f22a2..e9731503a5335 100644 --- a/packages/medusa/src/api-v2/admin/promotions/route.ts +++ b/packages/medusa/src/api-v2/admin/promotions/route.ts @@ -1,17 +1,17 @@ import { createPromotionsWorkflow } from "@medusajs/core-flows" -import { - AuthenticatedMedusaRequest, - MedusaResponse, -} from "../../../types/routing" import { ContainerRegistrationKeys, remoteQueryObjectFromString, } from "@medusajs/utils" +import { + AuthenticatedMedusaRequest, + MedusaResponse, +} from "../../../types/routing" +import { refetchPromotion } from "./helpers" import { AdminCreatePromotionType, AdminGetPromotionsParamsType, } from "./validators" -import { refetchPromotion } from "./helpers" export const GET = async ( req: AuthenticatedMedusaRequest, diff --git a/packages/medusa/src/api-v2/admin/promotions/validators.ts b/packages/medusa/src/api-v2/admin/promotions/validators.ts index 17adcbc97a25d..37effa3e0aa43 100644 --- a/packages/medusa/src/api-v2/admin/promotions/validators.ts +++ b/packages/medusa/src/api-v2/admin/promotions/validators.ts @@ -24,17 +24,20 @@ export type AdminGetPromotionsParamsType = z.infer< export const AdminGetPromotionsParams = createFindParams({ limit: 50, offset: 0, -}).merge( - z.object({ - q: z.string().optional(), - code: z.union([z.string(), z.array(z.string())]).optional(), - created_at: createOperatorMap().optional(), - updated_at: createOperatorMap().optional(), - deleted_at: createOperatorMap().optional(), - $and: z.lazy(() => AdminGetPromotionsParams.array()).optional(), - $or: z.lazy(() => AdminGetPromotionsParams.array()).optional(), - }) -) +}) + .merge( + z.object({ + q: z.string().optional(), + code: z.union([z.string(), z.array(z.string())]).optional(), + campaign_id: z.union([z.string(), z.array(z.string())]).optional(), + created_at: createOperatorMap().optional(), + updated_at: createOperatorMap().optional(), + deleted_at: createOperatorMap().optional(), + $and: z.lazy(() => AdminGetPromotionsParams.array()).optional(), + $or: z.lazy(() => AdminGetPromotionsParams.array()).optional(), + }) + ) + .strict() export type AdminGetPromotionRuleParamsType = z.infer< typeof AdminGetPromotionRuleParams @@ -152,7 +155,6 @@ export const AdminCreateCampaign = z.object({ budget: CreateCampaignBudget.optional(), starts_at: z.coerce.date().optional(), ends_at: z.coerce.date().optional(), - promotions: z.array(z.object({ id: z.string() })).optional(), }) export type AdminCreatePromotionType = z.infer diff --git a/packages/modules/promotion/integration-tests/__tests__/services/promotion-module/campaign.spec.ts b/packages/modules/promotion/integration-tests/__tests__/services/promotion-module/campaign.spec.ts index d6765daab5eb8..9905e642ccb98 100644 --- a/packages/modules/promotion/integration-tests/__tests__/services/promotion-module/campaign.spec.ts +++ b/packages/modules/promotion/integration-tests/__tests__/services/promotion-module/campaign.spec.ts @@ -152,43 +152,6 @@ moduleIntegrationTestRunner({ }) ) }) - - it("should create a basic campaign with promotions successfully", async () => { - await createPromotions(MikroOrmWrapper.forkManager()) - - const startsAt = new Date("01/01/2024") - const endsAt = new Date("01/01/2025") - const [createdCampaign] = await service.createCampaigns([ - { - name: "test", - campaign_identifier: "test", - starts_at: startsAt, - ends_at: endsAt, - promotions: [{ id: "promotion-id-1" }, { id: "promotion-id-2" }], - }, - ]) - - const campaign = await service.retrieveCampaign(createdCampaign.id, { - relations: ["promotions"], - }) - - expect(campaign).toEqual( - expect.objectContaining({ - name: "test", - campaign_identifier: "test", - starts_at: startsAt, - ends_at: endsAt, - promotions: [ - expect.objectContaining({ - id: "promotion-id-1", - }), - expect.objectContaining({ - id: "promotion-id-2", - }), - ], - }) - ) - }) }) describe("updateCampaigns", () => { @@ -251,66 +214,6 @@ moduleIntegrationTestRunner({ }) ) }) - - it("should update promotions of a campaign successfully", async () => { - await createCampaigns(MikroOrmWrapper.forkManager()) - await createPromotions(MikroOrmWrapper.forkManager()) - - const [updatedCampaign] = await service.updateCampaigns([ - { - id: "campaign-id-1", - description: "test description 1", - currency: "EUR", - campaign_identifier: "new", - starts_at: new Date("01/01/2024"), - ends_at: new Date("01/01/2025"), - promotions: [{ id: "promotion-id-1" }, { id: "promotion-id-2" }], - }, - ]) - - expect(updatedCampaign).toEqual( - expect.objectContaining({ - description: "test description 1", - currency: "EUR", - campaign_identifier: "new", - starts_at: new Date("01/01/2024"), - ends_at: new Date("01/01/2025"), - promotions: [ - expect.objectContaining({ - id: "promotion-id-1", - }), - expect.objectContaining({ - id: "promotion-id-2", - }), - ], - }) - ) - }) - - it("should remove promotions of the campaign successfully", async () => { - await createCampaigns(MikroOrmWrapper.forkManager()) - await createPromotions(MikroOrmWrapper.forkManager()) - - await service.updateCampaigns({ - id: "campaign-id-1", - promotions: [{ id: "promotion-id-1" }, { id: "promotion-id-2" }], - }) - - const updatedCampaign = await service.updateCampaigns({ - id: "campaign-id-1", - promotions: [{ id: "promotion-id-1" }], - }) - - expect(updatedCampaign).toEqual( - expect.objectContaining({ - promotions: [ - expect.objectContaining({ - id: "promotion-id-1", - }), - ], - }) - ) - }) }) describe("retrieveCampaign", () => { @@ -438,6 +341,77 @@ moduleIntegrationTestRunner({ expect(campaigns).toHaveLength(1) }) }) + + describe("addPromotionsToCampaign", () => { + beforeEach(async () => { + await createCampaigns(MikroOrmWrapper.forkManager()) + await createPromotions(MikroOrmWrapper.forkManager()) + + await service.addPromotionsToCampaign({ + id, + promotion_ids: ["promotion-id-1"], + }) + }) + + const id = "campaign-id-1" + + it("should add promotions to a campaign", async () => { + await service.addPromotionsToCampaign({ + id, + promotion_ids: ["promotion-id-2"], + }) + + const campaign = await service.retrieveCampaign(id, { + relations: ["promotions"], + }) + + expect(campaign.promotions).toHaveLength(2) + expect(campaign).toEqual( + expect.objectContaining({ + id, + promotions: expect.arrayContaining([ + expect.objectContaining({ id: "promotion-id-1" }), + expect.objectContaining({ id: "promotion-id-2" }), + ]), + }) + ) + }) + }) + + describe("removePromotionsFromCampaign", () => { + beforeEach(async () => { + await createCampaigns(MikroOrmWrapper.forkManager()) + await createPromotions(MikroOrmWrapper.forkManager()) + + await service.addPromotionsToCampaign({ + id, + promotion_ids: ["promotion-id-1", "promotion-id-2"], + }) + }) + + const id = "campaign-id-1" + + it("should remove promotions to a campaign", async () => { + await service.removePromotionsFromCampaign({ + id, + promotion_ids: ["promotion-id-1"], + }) + + const campaign = await service.retrieveCampaign(id, { + relations: ["promotions"], + }) + + expect(campaign.promotions).toHaveLength(1) + expect(campaign).toEqual( + expect.objectContaining({ + id, + promotions: expect.arrayContaining([ + expect.objectContaining({ id: "promotion-id-2" }), + ]), + }) + ) + }) + }) }) }, }) diff --git a/packages/modules/promotion/integration-tests/__tests__/services/promotion-module/compute-actions.spec.ts b/packages/modules/promotion/integration-tests/__tests__/services/promotion-module/compute-actions.spec.ts index 0bd32d73b0d24..9b9a951141270 100644 --- a/packages/modules/promotion/integration-tests/__tests__/services/promotion-module/compute-actions.spec.ts +++ b/packages/modules/promotion/integration-tests/__tests__/services/promotion-module/compute-actions.spec.ts @@ -539,7 +539,7 @@ moduleIntegrationTestRunner({ }, ]) - await service.updateCampaigns({ + const updated = await service.updateCampaigns({ id: "campaign-id-2", budget: { used: 1000 }, }) diff --git a/packages/modules/promotion/integration-tests/__tests__/services/promotion-module/promotion.spec.ts b/packages/modules/promotion/integration-tests/__tests__/services/promotion-module/promotion.spec.ts index 03a3386741d84..a59c95eb1216d 100644 --- a/packages/modules/promotion/integration-tests/__tests__/services/promotion-module/promotion.spec.ts +++ b/packages/modules/promotion/integration-tests/__tests__/services/promotion-module/promotion.spec.ts @@ -6,9 +6,9 @@ import { CampaignBudgetType, PromotionType, } from "@medusajs/utils" +import { moduleIntegrationTestRunner, SuiteOptions } from "medusa-test-utils" import { createCampaigns } from "../../../__fixtures__/campaigns" import { createPromotions } from "../../../__fixtures__/promotion" -import { moduleIntegrationTestRunner, SuiteOptions } from "medusa-test-utils" jest.setTimeout(30000) @@ -918,6 +918,7 @@ moduleIntegrationTestRunner({ { id: "promotion-id-1", code: "PROMOTION_1", + campaign_id: null, campaign: null, is_automatic: false, type: "standard", @@ -929,6 +930,7 @@ moduleIntegrationTestRunner({ { id: "promotion-id-2", code: "PROMOTION_2", + campaign_id: null, campaign: null, is_automatic: false, type: "standard", diff --git a/packages/modules/promotion/src/models/campaign.ts b/packages/modules/promotion/src/models/campaign.ts index 6874398035729..bafa194a4a8f3 100644 --- a/packages/modules/promotion/src/models/campaign.ts +++ b/packages/modules/promotion/src/models/campaign.ts @@ -70,9 +70,7 @@ export default class Campaign { }) budget: CampaignBudget | null = null - @OneToMany(() => Promotion, (promotion) => promotion.campaign, { - orphanRemoval: true, - }) + @OneToMany(() => Promotion, (promotion) => promotion.campaign) promotions = new Collection(this) @Property({ diff --git a/packages/modules/promotion/src/models/promotion.ts b/packages/modules/promotion/src/models/promotion.ts index bee0fe91c34ae..2f53cae22ac6e 100644 --- a/packages/modules/promotion/src/models/promotion.ts +++ b/packages/modules/promotion/src/models/promotion.ts @@ -45,13 +45,17 @@ export default class Promotion { }) code: string - @Searchable() @ManyToOne(() => Campaign, { + columnType: "text", fieldName: "campaign_id", nullable: true, - cascade: ["soft-remove"] as any, + mapToPk: true, + onDelete: "set null", }) - campaign: Campaign | null = null + campaign_id: string | null = null + + @ManyToOne(() => Campaign, { persist: false }) + campaign: Campaign | null @Property({ columnType: "boolean", default: false }) is_automatic: boolean = false diff --git a/packages/modules/promotion/src/repositories/campaign.ts b/packages/modules/promotion/src/repositories/campaign.ts deleted file mode 100644 index afec080397274..0000000000000 --- a/packages/modules/promotion/src/repositories/campaign.ts +++ /dev/null @@ -1,149 +0,0 @@ -import { Context } from "@medusajs/types" -import { DALUtils } from "@medusajs/utils" -import { SqlEntityManager } from "@mikro-orm/postgresql" -import { Campaign, Promotion } from "@models" -import { CreateCampaignDTO, UpdateCampaignDTO } from "@types" - -export class CampaignRepository extends DALUtils.mikroOrmBaseRepositoryFactory( - Campaign -) { - async create( - data: CreateCampaignDTO[], - context: Context = {} - ): Promise { - const manager = this.getActiveManager(context) - const promotionIdsToUpsert: string[] = [] - const campaignIdentifierPromotionsMap = new Map() - - data.forEach((campaignData) => { - const campaignPromotionIds = - campaignData.promotions?.map((p) => p.id) || [] - - promotionIdsToUpsert.push(...campaignPromotionIds) - - campaignIdentifierPromotionsMap.set( - campaignData.campaign_identifier, - campaignPromotionIds - ) - - delete campaignData.promotions - }) - - const existingPromotions = await manager.find(Promotion, { - id: promotionIdsToUpsert, - }) - - const existingPromotionsMap = new Map( - existingPromotions.map((promotion) => [promotion.id, promotion]) - ) - - const createdCampaigns = await super.create(data, context) - - for (const createdCampaign of createdCampaigns) { - const campaignPromotionIds = - campaignIdentifierPromotionsMap.get( - createdCampaign.campaign_identifier - ) || [] - - for (const campaignPromotionId of campaignPromotionIds) { - const promotion = existingPromotionsMap.get(campaignPromotionId) - - if (!promotion) { - continue - } - - createdCampaign.promotions.add(promotion) - } - } - - return createdCampaigns - } - - async update( - data: { entity: Campaign; update: UpdateCampaignDTO }[], - context: Context = {} - ): Promise { - const manager = this.getActiveManager(context) - const promotionIdsToUpsert: string[] = [] - const campaignIds: string[] = [] - const campaignPromotionIdsMap = new Map() - - data.forEach(({ update: campaignData }) => { - const campaignPromotionIds = campaignData.promotions?.map((p) => p.id) - - campaignIds.push(campaignData.id) - - if (campaignPromotionIds) { - promotionIdsToUpsert.push(...campaignPromotionIds) - campaignPromotionIdsMap.set(campaignData.id, campaignPromotionIds) - } - - delete campaignData.promotions - }) - - const existingCampaigns = await manager.find( - Campaign, - { id: campaignIds }, - { populate: ["promotions"] } - ) - - const promotionIds = existingCampaigns - .map((campaign) => campaign.promotions?.map((p) => p.id)) - .flat(1) - .concat(promotionIdsToUpsert) - - const existingPromotions = await manager.find(Promotion, { - id: promotionIds, - }) - - const existingCampaignsMap = new Map( - existingCampaigns.map((campaign) => [campaign.id, campaign]) - ) - - const existingPromotionsMap = new Map( - existingPromotions.map((promotion) => [promotion.id, promotion]) - ) - - const updatedCampaigns = await super.update(data, context) - - for (const updatedCampaign of updatedCampaigns) { - const upsertPromotionIds = campaignPromotionIdsMap.get(updatedCampaign.id) - - if (!upsertPromotionIds) { - continue - } - - const existingPromotionIds = ( - existingCampaignsMap.get(updatedCampaign.id)?.promotions || [] - ).map((p) => p.id) - - for (const existingPromotionId of existingPromotionIds) { - const promotion = existingPromotionsMap.get(existingPromotionId) - - if (!promotion) { - continue - } - - if (!upsertPromotionIds.includes(existingPromotionId)) { - updatedCampaign.promotions.remove(promotion) - } - } - - for (const promotionIdToAdd of upsertPromotionIds) { - const promotion = existingPromotionsMap.get(promotionIdToAdd) - - if (!promotion) { - continue - } - - if (existingPromotionIds.includes(promotionIdToAdd)) { - continue - } else { - updatedCampaign.promotions.add(promotion) - } - } - } - - return updatedCampaigns - } -} diff --git a/packages/modules/promotion/src/repositories/index.ts b/packages/modules/promotion/src/repositories/index.ts index db193bb79fe2d..147c9cc259fa4 100644 --- a/packages/modules/promotion/src/repositories/index.ts +++ b/packages/modules/promotion/src/repositories/index.ts @@ -1,2 +1 @@ export { MikroOrmBaseRepository as BaseRepository } from "@medusajs/utils" -export { CampaignRepository } from "./campaign" diff --git a/packages/modules/promotion/src/services/promotion-module.ts b/packages/modules/promotion/src/services/promotion-module.ts index a4c628ed2138d..bf6942eed98ce 100644 --- a/packages/modules/promotion/src/services/promotion-module.ts +++ b/packages/modules/promotion/src/services/promotion-module.ts @@ -528,7 +528,7 @@ export default class PromotionModuleService< promotionsData.push({ ...promotionData, - campaign: campaignId, + campaign_id: campaignId, }) } @@ -536,6 +536,7 @@ export default class PromotionModuleService< promotionsData, sharedContext ) + const promotionsToAdd: PromotionTypes.AddPromotionsToCampaignDTO[] = [] for (const promotion of createdPromotions) { const applMethodData = promotionCodeApplicationMethodDataMap.get( @@ -617,8 +618,25 @@ export default class PromotionModuleService< sharedContext ) - if (campaignsData.length) { - await this.createCampaigns(campaignsData, sharedContext) + const createdCampaigns = await this.createCampaigns( + campaignsData, + sharedContext + ) + + for (const campaignData of campaignsData) { + const promotions = campaignData.promotions + const campaign = createdCampaigns.find( + (c) => c.campaign_identifier === campaignData.campaign_identifier + ) + + if (!campaign || !promotions || !promotions.length) { + continue + } + + await this.addPromotionsToCampaign( + { id: campaign.id, promotion_ids: promotions.map((p) => p.id) }, + sharedContext + ) } for (const applicationMethod of createdApplicationMethods) { @@ -704,7 +722,7 @@ export default class PromotionModuleService< ...promotionData } of data) { if (campaignId) { - promotionsData.push({ ...promotionData, campaign: campaignId }) + promotionsData.push({ ...promotionData, campaign_id: campaignId }) } else { promotionsData.push(promotionData) } @@ -1110,19 +1128,7 @@ export default class PromotionModuleService< >() for (const createCampaignData of data) { - const { - budget: campaignBudgetData, - promotions, - ...campaignData - } = createCampaignData - - const promotionsToAdd = promotions - ? await this.list( - { id: promotions.map((p) => p.id) }, - { take: null }, - sharedContext - ) - : [] + const { budget: campaignBudgetData, ...campaignData } = createCampaignData if (campaignBudgetData) { campaignIdentifierBudgetMap.set( @@ -1133,7 +1139,6 @@ export default class PromotionModuleService< campaignsData.push({ ...campaignData, - promotions: promotionsToAdd, }) } @@ -1244,4 +1249,104 @@ export default class PromotionModuleService< return updatedCampaigns } + + @InjectManager("baseRepository_") + async addPromotionsToCampaign( + data: PromotionTypes.AddPromotionsToCampaignDTO, + sharedContext?: Context + ): Promise<{ ids: string[] }> { + const ids = await this.addPromotionsToCampaign_(data, sharedContext) + + return { ids } + } + + // TODO: + // - introduce currency_code to promotion + // - allow promotions to be queried by currency code + // - when the above is present, validate adding promotion to campaign based on currency code + @InjectTransactionManager("baseRepository_") + protected async addPromotionsToCampaign_( + data: PromotionTypes.AddPromotionsToCampaignDTO, + @MedusaContext() sharedContext: Context = {} + ) { + const { id, promotion_ids: promotionIds = [] } = data + + const campaign = await this.campaignService_.retrieve(id, {}, sharedContext) + const promotionsToAdd = await this.promotionService_.list( + { id: promotionIds, campaign_id: null }, + { take: null }, + sharedContext + ) + + const diff = arrayDifference( + promotionsToAdd.map((p) => p.id), + promotionIds + ) + + if (diff.length > 0) { + throw new MedusaError( + MedusaError.Types.NOT_FOUND, + `Cannot add promotions (${diff.join( + "," + )}) to campaign. These promotions are either already part of a campaign or not found.` + ) + } + + await this.promotionService_.update( + promotionsToAdd.map((promotion) => ({ + id: promotion.id, + campaign_id: campaign.id, + })), + sharedContext + ) + + return promotionsToAdd.map((promo) => promo.id) + } + + @InjectManager("baseRepository_") + async removePromotionsFromCampaign( + data: PromotionTypes.AddPromotionsToCampaignDTO, + sharedContext?: Context + ): Promise<{ ids: string[] }> { + const ids = await this.removePromotionsFromCampaign_(data, sharedContext) + + return { ids } + } + + @InjectTransactionManager("baseRepository_") + protected async removePromotionsFromCampaign_( + data: PromotionTypes.AddPromotionsToCampaignDTO, + @MedusaContext() sharedContext: Context = {} + ) { + const { id, promotion_ids: promotionIds = [] } = data + + await this.campaignService_.retrieve(id, {}, sharedContext) + const promotionsToRemove = await this.promotionService_.list( + { id: promotionIds }, + { take: null }, + sharedContext + ) + + const diff = arrayDifference( + promotionsToRemove.map((p) => p.id), + promotionIds + ) + + if (diff.length > 0) { + throw new MedusaError( + MedusaError.Types.NOT_FOUND, + `Promotions with ids (${diff.join(",")}) not found.` + ) + } + + await this.promotionService_.update( + promotionsToRemove.map((promotion) => ({ + id: promotion.id, + campaign_id: null, + })), + sharedContext + ) + + return promotionsToRemove.map((promo) => promo.id) + } } diff --git a/packages/modules/promotion/src/types/promotion.ts b/packages/modules/promotion/src/types/promotion.ts index ae63f9f36b434..c1c6fffd6ba24 100644 --- a/packages/modules/promotion/src/types/promotion.ts +++ b/packages/modules/promotion/src/types/promotion.ts @@ -4,7 +4,7 @@ export interface CreatePromotionDTO { code: string type: PromotionTypeValues is_automatic?: boolean - campaign?: string + campaign_id?: string } export interface UpdatePromotionDTO { @@ -12,5 +12,5 @@ export interface UpdatePromotionDTO { code?: string type?: PromotionTypeValues is_automatic?: boolean - campaign?: string + campaign_id?: string }