diff --git a/.env b/.env
index 23efc40..650b548 100644
--- a/.env
+++ b/.env
@@ -1,14 +1,5 @@
-PGHOST=db
-PGPORT=5432
-PGUSER=postgres
-PGPASSWORD=postgres
-PGDATABASE=postgres
-SSLmode=disable
-PGURL='postgres://postgres:postgres@db:5432/postgres?sslmode=disable'
-# SERVER
-SERVER_PORT=8000
-SECRET_KEY=my_very_secret_key
+
# MIGRATOR
MIGRATOR_PORT=3000
@@ -16,13 +7,11 @@ GOOSE_DRIVER=postgres
GOOSE_DBSTRING='user=postgres dbname=postgres sslmode=disable'
GOOSE_MIGRATION_DIR=migrations
-# FRONTEND SPA
-HTTP_INNER_PORT=80
-HTTP_OUTER_PORT=80
-HTTPS_INNER_PORT=443
-HTTPS_OUTER_PORT=443
+
# NGINX
EMAIL=valitovgaziz@yandex.ru
-DOMAINS=yalarba.ru,www.yalarba.ru
+DOMAINS_yalarba=yalarba.ru,www.yalarba.ru
DOMAINS_valitovgaziz=valitovgaziz.ru,www.valitovgaziz.ru
+DOMAINS_easysite102=easysite102.ru,www.easysite102.ru
+ALL_DOMAINS=yalarba.ru,www.yalarba.ru,valitovgaziz.ru,www.valitovgaziz.ru,easysite102.ru,www.easysite102.ru
diff --git a/.gitignore b/.gitignore
index d298d9f..5dc2324 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,8 +12,8 @@ lerna-debug.log*
node_modules
.DS_Store
-dist
-dist-ssr
+# dist
+# dist-ssr
coverage
*.local
@@ -31,3 +31,29 @@ coverage
*.sw?
*.tsbuildinfo
+*.node_modules
+*Makefile
+
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+
+# testing
+/coverage
+
+# production
+/build
+
+# misc
+.DS_Store
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
diff --git a/Makefile b/Makefile
index f76eae3..8902af7 100644
--- a/Makefile
+++ b/Makefile
@@ -1,19 +1,10 @@
build:
- @docker compose --profile dev build --no-cache
+ @docker compose build --no-cache
run: stop
- @docker compose --profile dev up -d --remove-orphans
+ @docker compose up -d --remove-orphans
stop:
- @docker compose --profile dev down
-
-clean:
- @docker builder --profile dev prune
-
-test:
- @go test ./api/src/auth/... -v
-
-tc:
- @go test -cover
+ @docker compose down
.DEFAULT_GOAL=run
diff --git a/README.md b/README.md
index 3d254eb..cfe1eb2 100644
--- a/README.md
+++ b/README.md
@@ -5,5 +5,11 @@
## build and start with command: make
+Разделить на отдельные сервисы.
+
+1. DB, rest api *
+2. Migrator *
+3. spa *
+4. Certbot *
+5. nginx *
-need to see conf for nginx and change link to keycloak
diff --git a/api/Makefile b/api/Makefile
deleted file mode 100644
index 91aef25..0000000
--- a/api/Makefile
+++ /dev/null
@@ -1,2 +0,0 @@
-t:
- @go test ./... -v
diff --git a/certbot/Dockerfile b/certbot/Dockerfile
deleted file mode 100644
index e95d859..0000000
--- a/certbot/Dockerfile
+++ /dev/null
@@ -1,12 +0,0 @@
-FROM certbot/certbot
-
-# Создаем директории для конфигов
-RUN mkdir -p /etc/letsencrypt/config
-
-# Копируем конфигурационные файлы
-COPY scripts/ /opt/
-
-# Устанавливаем права
-RUN chmod +x /opt/*
-
-ENTRYPOINT ["/opt/init-certbot.sh"]
diff --git a/certbot/scripts/init-certbot.sh b/certbot/scripts/init-certbot.sh
deleted file mode 100644
index 08392a2..0000000
--- a/certbot/scripts/init-certbot.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-
-# Проверяем наличие сертификатов
-if [ ! -d "/etc/letsencrypt/live/${DOMAINS}" ]; then
- echo "Получаем новые сертификаты yalarba ..."
- certbot certonly --webroot \
- --config /etc/letsencrypt/config/certbot.ini \
- -w /var/www/certbot \
- -d ${DOMAINS}
-fi
-
-if [ ! -d "/etc/letsencrypt/live/${DOMAINS_valitovgaziz}" ]; then
- echo "Получаем новые сертификаты valitovgaziz ..."
- certbot certonly --webroot \
- --config /etc/letsencrypt/config/certbot.ini \
- -w /var/www/certbot \
- -d ${DOMAINS_valitovgaziz}
-fi
\ No newline at end of file
diff --git a/docker-compose.yaml b/docker-compose.yaml
index 1842b81..a399891 100644
--- a/docker-compose.yaml
+++ b/docker-compose.yaml
@@ -1,162 +1,45 @@
services:
- db:
- image: postgres:16
- container_name: db
- profiles:
- - prod
- env_file:
- - .env
- ports:
- - "${PGPORT}:${PGPORT}"
- volumes:
- - postgres-db:/var/lib/postgresql/data
- environment:
- - POSTGRES_USER=${PGUSER}
- - POSTGRES_PASSWORD=${PGPASSWORD}
- - POSTGRES_DB=${PGDATABASE}
- restart: unless-stopped
-
- api:
- container_name: api
- build:
- context: ./api
- dockerfile: Dockerfile
- profiles:
- - prod
- env_file:
- - .env
- ports:
- - "${SERVER_PORT}:${SERVER_PORT}"
- volumes:
- - api:/usr/src/app
- depends_on:
- - db
- command: ./bin/api
- restart: unless-stopped
+# keycloak:
+# build:
+# context: ./keycloak
+# dockerfile: Dockerfile
+# container_name: keycloak
+# ports:
+# - "8080:8080"
+# environment:
+# KC_ADMIN: admin
+# KC_ADMIN_PASSWORD: admin
+# PROXY_ADDRESS_FORWARDING: true
+# KС_HTTPS_PORT: 8443
+# KС_HTTP_PORT: 8080
+# KС_LOGLEVEL: INFO
+# KС_HTTP_PROXY: true
+# KС_HTTPS_REDIRECT: false
+# KC_HOSTNAME_STRICT: false
+# KC_PROXY: passthrough
+# KC_HTTP_ENABLED: true
+# KC_HOSTNAME: yalarba.ru
+# KC_HOSTNAME_STRICT_BACKCHANNEL: false
+# KC_FRONTEND_URL: https://yalarba.ru/auth
+# command: start --optimized
+# networks:
+# - internal
- migrator:
- container_name: migrator
- profiles:
- - prod
- build:
- context: ./migrator
- dockerfile: Dockerfile
- env_file:
- - .env
- depends_on:
- - api
- - db
- volumes:
- - goose:/migrations
- command: goose up
-
- spa:
- container_name: spa
- profiles:
- - prod
- build:
- context: ./spa
- dockerfile: Dockerfile
- env_file:
- - .env
-
- nginx:
- build:
- context: ./nginx
- dockerfile: Dockerfile
- profiles:
- - prod
- - dev
- env_file: .env
- container_name: nginx
- restart: unless-stopped
- ports:
- - "80:80"
- - "443:443"
- volumes:
- - certbot_data:/etc/letsencrypt
- - certbot_www:/var/www/certbot
- - ./spa/app:/usr/share/nginx/html
- - ./valitovgaziz/html:/usr/share/nginx/valitovgaziz/html
- networks:
- - web-network
- - internal
- depends_on:
- - certbot
-
- certbot:
- build:
- context: ./certbot
- dockerfile: Dockerfile
- container_name: certbot
- profiles:
- - prod
- - dev
- volumes:
- - ./certbot/config:/etc/letsencrypt/config
- - certbot_data:/etc/letsencrypt
- - certbot_www:/var/www/certbot
- env_file:
- - .env
- environment:
- - EMAIL=valitovgaziz@yandex.ru
- - DOMAINS=yalarba.ru
- - STAGING=0
- restart: unless-stopped
-
- keycloak:
- build:
- context: ./keycloak
- dockerfile: Dockerfile
- container_name: keycloak
- ports:
- - "8080:8080"
- profiles:
- - prod
- - dev
- - kk
- environment:
- KC_ADMIN: admin
- KC_ADMIN_PASSWORD: admin
- PROXY_ADDRESS_FORWARDING: true
- KС_HTTPS_PORT: 8443
- KС_HTTP_PORT: 8080
- KС_LOGLEVEL: INFO
- KС_HTTP_PROXY: true
- KС_HTTPS_REDIRECT: false
- KC_HOSTNAME_STRICT: false
- KC_PROXY: passthrough
- KC_HTTP_ENABLED: true
- KC_HOSTNAME: yalarba.ru
- KC_HOSTNAME_STRICT_BACKCHANNEL: false
- KC_FRONTEND_URL: https://yalarba.ru/auth
- command: start --optimized
- networks:
- - internal
-
- kk_db:
- image: postgres:16
- container_name: kk_db
- profiles:
- - prod
- - dev
- environment:
- POSTGRES_DB: keycloak
- POSTGRES_USER: postgres
- POSTGRES_PASSWORD: postgres
- volumes:
- - keycloak-postgres:/var/lib/postgresql/data
- networks:
- - internal
+# kk_db:
+# image: postgres:16
+# container_name: kk_db
+# environment:
+# POSTGRES_DB: keycloak
+# POSTGRES_USER: postgres
+# POSTGRES_PASSWORD: postgres
+# volumes:
+# - keycloak-postgres:/var/lib/postgresql/data
+# networks:
+# - internal
volumes:
- api:
- postgres-db:
- goose:
- certbot_data:
- certbot_www:
- keycloak-postgres:
+ keycloak-postgres:
networks:
web-network:
diff --git a/easySite/easy-site/README.md b/easySite/easy-site/README.md
new file mode 100644
index 0000000..58beeac
--- /dev/null
+++ b/easySite/easy-site/README.md
@@ -0,0 +1,70 @@
+# Getting Started with Create React App
+
+This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
+
+## Available Scripts
+
+In the project directory, you can run:
+
+### `npm start`
+
+Runs the app in the development mode.\
+Open [http://localhost:3000](http://localhost:3000) to view it in your browser.
+
+The page will reload when you make changes.\
+You may also see any lint errors in the console.
+
+### `npm test`
+
+Launches the test runner in the interactive watch mode.\
+See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.
+
+### `npm run build`
+
+Builds the app for production to the `build` folder.\
+It correctly bundles React in production mode and optimizes the build for the best performance.
+
+The build is minified and the filenames include the hashes.\
+Your app is ready to be deployed!
+
+See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.
+
+### `npm run eject`
+
+**Note: this is a one-way operation. Once you `eject`, you can't go back!**
+
+If you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.
+
+Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.
+
+You don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.
+
+## Learn More
+
+You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).
+
+To learn React, check out the [React documentation](https://reactjs.org/).
+
+### Code Splitting
+
+This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)
+
+### Analyzing the Bundle Size
+
+This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)
+
+### Making a Progressive Web App
+
+This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)
+
+### Advanced Configuration
+
+This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)
+
+### Deployment
+
+This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)
+
+### `npm run build` fails to minify
+
+This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)
diff --git a/easySite/easy-site/build/asset-manifest.json b/easySite/easy-site/build/asset-manifest.json
new file mode 100644
index 0000000..9ccc781
--- /dev/null
+++ b/easySite/easy-site/build/asset-manifest.json
@@ -0,0 +1,10 @@
+{
+ "files": {
+ "main.js": "/static/js/main.9a8f7abd.js",
+ "index.html": "/index.html",
+ "main.9a8f7abd.js.map": "/static/js/main.9a8f7abd.js.map"
+ },
+ "entrypoints": [
+ "static/js/main.9a8f7abd.js"
+ ]
+}
\ No newline at end of file
diff --git a/easySite/easy-site/build/index.html b/easySite/easy-site/build/index.html
new file mode 100644
index 0000000..5b89563
--- /dev/null
+++ b/easySite/easy-site/build/index.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+ React App
+
+
+
+
+
+
+
diff --git a/easySite/easy-site/build/static/js/main.9a8f7abd.js b/easySite/easy-site/build/static/js/main.9a8f7abd.js
new file mode 100644
index 0000000..421759d
--- /dev/null
+++ b/easySite/easy-site/build/static/js/main.9a8f7abd.js
@@ -0,0 +1,3 @@
+/*! For license information please see main.9a8f7abd.js.LICENSE.txt */
+(()=>{"use strict";var e={4:(e,t,n)=>{var r=n(853),a=n(43),o=n(950);function l(e){var t="https://react.dev/errors/"+e;if(1M||(e.current=D[M],D[M]=null,M--)}function I(e,t){M++,D[M]=e.current,e.current=t}var B=U(null),H=U(null),q=U(null),W=U(null);function V(e,t){switch(I(q,t),I(H,e),I(B,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?af(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)e=of(t=af(t),e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}$(B),I(B,e)}function Q(){$(B),$(H),$(q)}function K(e){null!==e.memoizedState&&I(W,e);var t=B.current,n=of(t,e.type);t!==n&&(I(H,e),I(B,n))}function Y(e){H.current===e&&($(B),$(H)),W.current===e&&($(W),Yf._currentValue=F)}var J=Object.prototype.hasOwnProperty,X=r.unstable_scheduleCallback,G=r.unstable_cancelCallback,Z=r.unstable_shouldYield,ee=r.unstable_requestPaint,te=r.unstable_now,ne=r.unstable_getCurrentPriorityLevel,re=r.unstable_ImmediatePriority,ae=r.unstable_UserBlockingPriority,oe=r.unstable_NormalPriority,le=r.unstable_LowPriority,ie=r.unstable_IdlePriority,ue=r.log,se=r.unstable_setDisableYieldValue,ce=null,fe=null;function de(e){if("function"===typeof ue&&se(e),fe&&"function"===typeof fe.setStrictMode)try{fe.setStrictMode(ce,e)}catch(t){}}var pe=Math.clz32?Math.clz32:function(e){return 0===(e>>>=0)?32:31-(he(e)/me|0)|0},he=Math.log,me=Math.LN2;var ge=256,ye=4194304;function ve(e){var t=42&e;if(0!==t)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194048&e;case 4194304:case 8388608:case 16777216:case 33554432:return 62914560&e;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function be(e,t,n){var r=e.pendingLanes;if(0===r)return 0;var a=0,o=e.suspendedLanes,l=e.pingedLanes;e=e.warmLanes;var i=134217727&r;return 0!==i?0!==(r=i&~o)?a=ve(r):0!==(l&=i)?a=ve(l):n||0!==(n=i&~e)&&(a=ve(n)):0!==(i=r&~o)?a=ve(i):0!==l?a=ve(l):n||0!==(n=r&~e)&&(a=ve(n)),0===a?0:0!==t&&t!==a&&0===(t&o)&&((o=a&-a)>=(n=t&-t)||32===o&&0!==(4194048&n))?t:a}function we(e,t){return 0===(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)}function Se(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return-1}}function ke(){var e=ge;return 0===(4194048&(ge<<=1))&&(ge=256),e}function Ee(){var e=ye;return 0===(62914560&(ye<<=1))&&(ye=4194304),e}function xe(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Ce(e,t){e.pendingLanes|=t,268435456!==t&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Re(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-pe(t);e.entangledLanes|=t,e.entanglements[r]=1073741824|e.entanglements[r]|4194090&n}function Pe(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-pe(n),a=1<)":-1--a||u[r]!==s[a]){var c="\n"+u[r].replace(" at new "," at ");return e.displayName&&c.includes("")&&(c=c.replace("",e.displayName)),c}}while(1<=r&&0<=a);break}}}finally{ot=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?at(n):""}function it(e){switch(e.tag){case 26:case 27:case 5:return at(e.type);case 16:return at("Lazy");case 13:return at("Suspense");case 19:return at("SuspenseList");case 0:case 15:return lt(e.type,!1);case 11:return lt(e.type.render,!1);case 1:return lt(e.type,!0);case 31:return at("Activity");default:return""}}function ut(e){try{var t="";do{t+=it(e),e=e.return}while(e);return t}catch(n){return"\nError generating stack: "+n.message+"\n"+n.stack}}function st(e){switch(typeof e){case"bigint":case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function ct(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function ft(e){e._valueTracker||(e._valueTracker=function(e){var t=ct(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&"undefined"!==typeof n&&"function"===typeof n.get&&"function"===typeof n.set){var a=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(e){r=""+e,o.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function dt(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=ct(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function pt(e){if("undefined"===typeof(e=e||("undefined"!==typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}var ht=/[\n"\\]/g;function mt(e){return e.replace(ht,function(e){return"\\"+e.charCodeAt(0).toString(16)+" "})}function gt(e,t,n,r,a,o,l,i){e.name="",null!=l&&"function"!==typeof l&&"symbol"!==typeof l&&"boolean"!==typeof l?e.type=l:e.removeAttribute("type"),null!=t?"number"===l?(0===t&&""===e.value||e.value!=t)&&(e.value=""+st(t)):e.value!==""+st(t)&&(e.value=""+st(t)):"submit"!==l&&"reset"!==l||e.removeAttribute("value"),null!=t?vt(e,l,st(t)):null!=n?vt(e,l,st(n)):null!=r&&e.removeAttribute("value"),null==a&&null!=o&&(e.defaultChecked=!!o),null!=a&&(e.checked=a&&"function"!==typeof a&&"symbol"!==typeof a),null!=i&&"function"!==typeof i&&"symbol"!==typeof i&&"boolean"!==typeof i?e.name=""+st(i):e.removeAttribute("name")}function yt(e,t,n,r,a,o,l,i){if(null!=o&&"function"!==typeof o&&"symbol"!==typeof o&&"boolean"!==typeof o&&(e.type=o),null!=t||null!=n){if(!("submit"!==o&&"reset"!==o||void 0!==t&&null!==t))return;n=null!=n?""+st(n):"",t=null!=t?""+st(t):n,i||t===e.value||(e.value=t),e.defaultValue=t}r="function"!==typeof(r=null!=r?r:a)&&"symbol"!==typeof r&&!!r,e.checked=i?e.checked:!!r,e.defaultChecked=!!r,null!=l&&"function"!==typeof l&&"symbol"!==typeof l&&"boolean"!==typeof l&&(e.name=l)}function vt(e,t,n){"number"===t&&pt(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function bt(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a=En),Rn=String.fromCharCode(32),Pn=!1;function Tn(e,t){switch(e){case"keyup":return-1!==Sn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function _n(e){return"object"===typeof(e=e.detail)&&"data"in e?e.data:null}var Nn=!1;var On={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Ln(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!On[e.type]:"textarea"===t}function zn(e,t,n,r){Lt?zt?zt.push(r):zt=[r]:Lt=r,0<(t=qc(t,"onChange")).length&&(n=new Zt("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var An=null,jn=null;function Fn(e){Fc(e,0)}function Dn(e){if(dt(He(e)))return e}function Mn(e,t){if("change"===e)return t}var Un=!1;if(Mt){var $n;if(Mt){var In="oninput"in document;if(!In){var Bn=document.createElement("div");Bn.setAttribute("oninput","return;"),In="function"===typeof Bn.oninput}$n=In}else $n=!1;Un=$n&&(!document.documentMode||9=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=Xn(r)}}function Zn(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?Zn(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function er(e){for(var t=pt((e=null!=e&&null!=e.ownerDocument&&null!=e.ownerDocument.defaultView?e.ownerDocument.defaultView:window).document);t instanceof e.HTMLIFrameElement;){try{var n="string"===typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=pt((e=t.contentWindow).document)}return t}function tr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var nr=Mt&&"documentMode"in document&&11>=document.documentMode,rr=null,ar=null,or=null,lr=!1;function ir(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;lr||null==rr||rr!==pt(r)||("selectionStart"in(r=rr)&&tr(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},or&&Jn(or,r)||(or=r,0<(r=qc(ar,"onSelect")).length&&(t=new Zt("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=rr)))}function ur(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var sr={animationend:ur("Animation","AnimationEnd"),animationiteration:ur("Animation","AnimationIteration"),animationstart:ur("Animation","AnimationStart"),transitionrun:ur("Transition","TransitionRun"),transitionstart:ur("Transition","TransitionStart"),transitioncancel:ur("Transition","TransitionCancel"),transitionend:ur("Transition","TransitionEnd")},cr={},fr={};function dr(e){if(cr[e])return cr[e];if(!sr[e])return e;var t,n=sr[e];for(t in n)if(n.hasOwnProperty(t)&&t in fr)return cr[e]=n[t];return e}Mt&&(fr=document.createElement("div").style,"AnimationEvent"in window||(delete sr.animationend.animation,delete sr.animationiteration.animation,delete sr.animationstart.animation),"TransitionEvent"in window||delete sr.transitionend.transition);var pr=dr("animationend"),hr=dr("animationiteration"),mr=dr("animationstart"),gr=dr("transitionrun"),yr=dr("transitionstart"),vr=dr("transitioncancel"),br=dr("transitionend"),wr=new Map,Sr="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function kr(e,t){wr.set(e,t),Ke(t,[e])}Sr.push("scrollEnd");var Er=new WeakMap;function xr(e,t){if("object"===typeof e&&null!==e){var n=Er.get(e);return void 0!==n?n:(t={value:e,source:t,stack:ut(t)},Er.set(e,t),t)}return{value:e,source:t,stack:ut(t)}}var Cr=[],Rr=0,Pr=0;function Tr(){for(var e=Rr,t=Pr=Rr=0;t>=l,a-=l,Xr=1<<32-pe(t)+a|n<o?o:8;var l=A.T,i={};A.T=i,Il(e,!1,t,n);try{var u=a(),s=A.S;if(null!==s&&s(i,u),null!==u&&"object"===typeof u&&"function"===typeof u.then)$l(e,t,function(e,t){var n=[],r={status:"pending",value:null,reason:null,then:function(e){n.push(e)}};return e.then(function(){r.status="fulfilled",r.value=t;for(var e=0;eh?(m=f,f=null):m=f.sibling;var g=p(a,f,i[h],u);if(null===g){null===f&&(f=m);break}e&&f&&null===g.alternate&&t(a,f),l=o(g,l,h),null===c?s=g:c.sibling=g,c=g,f=m}if(h===i.length)return n(a,f),oa&&Zr(a,h),s;if(null===f){for(;hm?(g=h,h=null):g=h.sibling;var b=p(a,h,v.value,s);if(null===b){null===h&&(h=g);break}e&&h&&null===b.alternate&&t(a,h),i=o(b,i,m),null===f?c=b:f.sibling=b,f=b,h=g}if(v.done)return n(a,h),oa&&Zr(a,m),c;if(null===h){for(;!v.done;m++,v=u.next())null!==(v=d(a,v.value,s))&&(i=o(v,i,m),null===f?c=v:f.sibling=v,f=v);return oa&&Zr(a,m),c}for(h=r(h);!v.done;m++,v=u.next())null!==(v=y(h,a,m,v.value,s))&&(e&&null!==v.alternate&&h.delete(null===v.key?m:v.key),i=o(v,i,m),null===f?c=v:f.sibling=v,f=v);return e&&h.forEach(function(e){return t(a,e)}),oa&&Zr(a,m),c}(u,s,c=b.call(c),f)}if("function"===typeof c.then)return v(u,s,Xl(c),f);if(c.$$typeof===S)return v(u,s,Pa(u,c),f);Zl(u,c)}return"string"===typeof c&&""!==c||"number"===typeof c||"bigint"===typeof c?(c=""+c,null!==s&&6===s.tag?(n(u,s.sibling),(f=a(s,c)).return=u,u=f):(n(u,s),(f=Br(c,u.mode,f)).return=u,u=f),i(u)):n(u,s)}return function(e,t,n,r){try{Jl=0;var a=v(e,t,n,r);return Yl=null,a}catch(l){if(l===Wa||l===Qa)throw l;var o=Fr(29,l,null,e.mode);return o.lanes=r,o.return=e,o}}}var ni=ti(!0),ri=ti(!1),ai=U(null),oi=null;function li(e){var t=e.alternate;I(ci,1&ci.current),I(ai,e),null===oi&&(null===t||null!==ho.current||null!==t.memoizedState)&&(oi=e)}function ii(e){if(22===e.tag){if(I(ci,ci.current),I(ai,e),null===oi){var t=e.alternate;null!==t&&null!==t.memoizedState&&(oi=e)}}else ui()}function ui(){I(ci,ci.current),I(ai,ai.current)}function si(e){$(ai),oi===e&&(oi=null),$(ci)}var ci=U(0);function fi(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||yf(n)))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!==(128&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}function di(e,t,n,r){n=null===(n=n(r,t=e.memoizedState))||void 0===n?t:d({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var pi={enqueueSetState:function(e,t,n){e=e._reactInternals;var r=As(),a=ao(r);a.payload=t,void 0!==n&&null!==n&&(a.callback=n),null!==(t=oo(e,a,r))&&(Fs(t,e,r),lo(t,e,r))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=As(),a=ao(r);a.tag=1,a.payload=t,void 0!==n&&null!==n&&(a.callback=n),null!==(t=oo(e,a,r))&&(Fs(t,e,r),lo(t,e,r))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=As(),r=ao(n);r.tag=2,void 0!==t&&null!==t&&(r.callback=t),null!==(t=oo(e,r,n))&&(Fs(t,e,n),lo(t,e,n))}};function hi(e,t,n,r,a,o,l){return"function"===typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,l):!t.prototype||!t.prototype.isPureReactComponent||(!Jn(n,r)||!Jn(a,o))}function mi(e,t,n,r){e=t.state,"function"===typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"===typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&pi.enqueueReplaceState(t,t.state,null)}function gi(e,t){var n=t;if("ref"in t)for(var r in n={},t)"ref"!==r&&(n[r]=t[r]);if(e=e.defaultProps)for(var a in n===t&&(n=d({},n)),e)void 0===n[a]&&(n[a]=e[a]);return n}var yi="function"===typeof reportError?reportError:function(e){if("object"===typeof window&&"function"===typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"===typeof e&&null!==e&&"string"===typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"===typeof process&&"function"===typeof process.emit)return void process.emit("uncaughtException",e);console.error(e)};function vi(e){yi(e)}function bi(e){console.error(e)}function wi(e){yi(e)}function Si(e,t){try{(0,e.onUncaughtError)(t.value,{componentStack:t.stack})}catch(n){setTimeout(function(){throw n})}}function ki(e,t,n){try{(0,e.onCaughtError)(n.value,{componentStack:n.stack,errorBoundary:1===t.tag?t.stateNode:null})}catch(r){setTimeout(function(){throw r})}}function Ei(e,t,n){return(n=ao(n)).tag=3,n.payload={element:null},n.callback=function(){Si(e,t)},n}function xi(e){return(e=ao(e)).tag=3,e}function Ci(e,t,n,r){var a=n.type.getDerivedStateFromError;if("function"===typeof a){var o=r.value;e.payload=function(){return a(o)},e.callback=function(){ki(t,n,r)}}var l=n.stateNode;null!==l&&"function"===typeof l.componentDidCatch&&(e.callback=function(){ki(t,n,r),"function"!==typeof a&&(null===xs?xs=new Set([this]):xs.add(this));var e=r.stack;this.componentDidCatch(r.value,{componentStack:null!==e?e:""})})}var Ri=Error(l(461)),Pi=!1;function Ti(e,t,n,r){t.child=null===e?ri(t,null,n,r):ni(t,e.child,n,r)}function _i(e,t,n,r,a){n=n.render;var o=t.ref;if("ref"in r){var l={};for(var i in r)"ref"!==i&&(l[i]=r[i])}else l=r;return Ca(t),r=Lo(e,t,n,l,o,a),i=Fo(),null===e||Pi?(oa&&i&&ta(t),t.flags|=1,Ti(e,t,r,a),t.child):(Do(e,t,a),Yi(e,t,a))}function Ni(e,t,n,r,a){if(null===e){var o=n.type;return"function"!==typeof o||Dr(o)||void 0!==o.defaultProps||null!==n.compare?((e=$r(n.type,null,r,t,t.mode,a)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=o,Oi(e,t,o,r,a))}if(o=e.child,!Ji(e,a)){var l=o.memoizedProps;if((n=null!==(n=n.compare)?n:Jn)(l,r)&&e.ref===t.ref)return Yi(e,t,a)}return t.flags|=1,(e=Mr(o,r)).ref=t.ref,e.return=t,t.child=e}function Oi(e,t,n,r,a){if(null!==e){var o=e.memoizedProps;if(Jn(o,r)&&e.ref===t.ref){if(Pi=!1,t.pendingProps=r=o,!Ji(e,a))return t.lanes=e.lanes,Yi(e,t,a);0!==(131072&e.flags)&&(Pi=!0)}}return ji(e,t,n,r,a)}function Li(e,t,n){var r=t.pendingProps,a=r.children,o=null!==e?e.memoizedState:null;if("hidden"===r.mode){if(0!==(128&t.flags)){if(r=null!==o?o.baseLanes|n:n,null!==e){for(a=t.child=e.child,o=0;null!==a;)o=o|a.lanes|a.childLanes,a=a.sibling;t.childLanes=o&~r}else t.childLanes=0,t.child=null;return zi(e,t,r,n)}if(0===(536870912&n))return t.lanes=t.childLanes=536870912,zi(e,t,null!==o?o.baseLanes|n:n,n);t.memoizedState={baseLanes:0,cachePool:null},null!==e&&Ha(0,null!==o?o.cachePool:null),null!==o?go(t,o):yo(),ii(t)}else null!==o?(Ha(0,o.cachePool),go(t,o),ui(),t.memoizedState=null):(null!==e&&Ha(0,null),yo(),ui());return Ti(e,t,a,n),t.child}function zi(e,t,n,r){var a=Ba();return a=null===a?null:{parent:La._currentValue,pool:a},t.memoizedState={baseLanes:n,cachePool:a},null!==e&&Ha(0,null),yo(),ii(t),null!==e&&Ea(e,t,r,!0),null}function Ai(e,t){var n=t.ref;if(null===n)null!==e&&null!==e.ref&&(t.flags|=4194816);else{if("function"!==typeof n&&"object"!==typeof n)throw Error(l(284));null!==e&&e.ref===n||(t.flags|=4194816)}}function ji(e,t,n,r,a){return Ca(t),n=Lo(e,t,n,r,void 0,a),r=Fo(),null===e||Pi?(oa&&r&&ta(t),t.flags|=1,Ti(e,t,n,a),t.child):(Do(e,t,a),Yi(e,t,a))}function Fi(e,t,n,r,a,o){return Ca(t),t.updateQueue=null,n=Ao(t,r,n,a),zo(e),r=Fo(),null===e||Pi?(oa&&r&&ta(t),t.flags|=1,Ti(e,t,n,o),t.child):(Do(e,t,o),Yi(e,t,o))}function Di(e,t,n,r,a){if(Ca(t),null===t.stateNode){var o=Ar,l=n.contextType;"object"===typeof l&&null!==l&&(o=Ra(l)),o=new n(r,o),t.memoizedState=null!==o.state&&void 0!==o.state?o.state:null,o.updater=pi,t.stateNode=o,o._reactInternals=t,(o=t.stateNode).props=r,o.state=t.memoizedState,o.refs={},no(t),l=n.contextType,o.context="object"===typeof l&&null!==l?Ra(l):Ar,o.state=t.memoizedState,"function"===typeof(l=n.getDerivedStateFromProps)&&(di(t,n,l,r),o.state=t.memoizedState),"function"===typeof n.getDerivedStateFromProps||"function"===typeof o.getSnapshotBeforeUpdate||"function"!==typeof o.UNSAFE_componentWillMount&&"function"!==typeof o.componentWillMount||(l=o.state,"function"===typeof o.componentWillMount&&o.componentWillMount(),"function"===typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount(),l!==o.state&&pi.enqueueReplaceState(o,o.state,null),co(t,r,o,a),so(),o.state=t.memoizedState),"function"===typeof o.componentDidMount&&(t.flags|=4194308),r=!0}else if(null===e){o=t.stateNode;var i=t.memoizedProps,u=gi(n,i);o.props=u;var s=o.context,c=n.contextType;l=Ar,"object"===typeof c&&null!==c&&(l=Ra(c));var f=n.getDerivedStateFromProps;c="function"===typeof f||"function"===typeof o.getSnapshotBeforeUpdate,i=t.pendingProps!==i,c||"function"!==typeof o.UNSAFE_componentWillReceiveProps&&"function"!==typeof o.componentWillReceiveProps||(i||s!==l)&&mi(t,o,r,l),to=!1;var d=t.memoizedState;o.state=d,co(t,r,o,a),so(),s=t.memoizedState,i||d!==s||to?("function"===typeof f&&(di(t,n,f,r),s=t.memoizedState),(u=to||hi(t,n,u,r,d,s,l))?(c||"function"!==typeof o.UNSAFE_componentWillMount&&"function"!==typeof o.componentWillMount||("function"===typeof o.componentWillMount&&o.componentWillMount(),"function"===typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount()),"function"===typeof o.componentDidMount&&(t.flags|=4194308)):("function"===typeof o.componentDidMount&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=s),o.props=r,o.state=s,o.context=l,r=u):("function"===typeof o.componentDidMount&&(t.flags|=4194308),r=!1)}else{o=t.stateNode,ro(e,t),c=gi(n,l=t.memoizedProps),o.props=c,f=t.pendingProps,d=o.context,s=n.contextType,u=Ar,"object"===typeof s&&null!==s&&(u=Ra(s)),(s="function"===typeof(i=n.getDerivedStateFromProps)||"function"===typeof o.getSnapshotBeforeUpdate)||"function"!==typeof o.UNSAFE_componentWillReceiveProps&&"function"!==typeof o.componentWillReceiveProps||(l!==f||d!==u)&&mi(t,o,r,u),to=!1,d=t.memoizedState,o.state=d,co(t,r,o,a),so();var p=t.memoizedState;l!==f||d!==p||to||null!==e&&null!==e.dependencies&&xa(e.dependencies)?("function"===typeof i&&(di(t,n,i,r),p=t.memoizedState),(c=to||hi(t,n,c,r,d,p,u)||null!==e&&null!==e.dependencies&&xa(e.dependencies))?(s||"function"!==typeof o.UNSAFE_componentWillUpdate&&"function"!==typeof o.componentWillUpdate||("function"===typeof o.componentWillUpdate&&o.componentWillUpdate(r,p,u),"function"===typeof o.UNSAFE_componentWillUpdate&&o.UNSAFE_componentWillUpdate(r,p,u)),"function"===typeof o.componentDidUpdate&&(t.flags|=4),"function"===typeof o.getSnapshotBeforeUpdate&&(t.flags|=1024)):("function"!==typeof o.componentDidUpdate||l===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),"function"!==typeof o.getSnapshotBeforeUpdate||l===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=p),o.props=r,o.state=p,o.context=u,r=c):("function"!==typeof o.componentDidUpdate||l===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),"function"!==typeof o.getSnapshotBeforeUpdate||l===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),r=!1)}return o=r,Ai(e,t),r=0!==(128&t.flags),o||r?(o=t.stateNode,n=r&&"function"!==typeof n.getDerivedStateFromError?null:o.render(),t.flags|=1,null!==e&&r?(t.child=ni(t,e.child,null,a),t.child=ni(t,null,n,a)):Ti(e,t,n,a),t.memoizedState=o.state,e=t.child):e=Yi(e,t,a),e}function Mi(e,t,n,r){return pa(),t.flags|=256,Ti(e,t,n,r),t.child}var Ui={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function $i(e){return{baseLanes:e,cachePool:qa()}}function Ii(e,t,n){return e=null!==e?e.childLanes&~n:0,t&&(e|=gs),e}function Bi(e,t,n){var r,a=t.pendingProps,o=!1,i=0!==(128&t.flags);if((r=i)||(r=(null===e||null!==e.memoizedState)&&0!==(2&ci.current)),r&&(o=!0,t.flags&=-129),r=0!==(32&t.flags),t.flags&=-33,null===e){if(oa){if(o?li(t):ui(),oa){var u,s=aa;if(u=s){e:{for(u=s,s=ia;8!==u.nodeType;){if(!s){s=null;break e}if(null===(u=vf(u.nextSibling))){s=null;break e}}s=u}null!==s?(t.memoizedState={dehydrated:s,treeContext:null!==Jr?{id:Xr,overflow:Gr}:null,retryLane:536870912,hydrationErrors:null},(u=Fr(18,null,null,0)).stateNode=s,u.return=t,t.child=u,ra=t,aa=null,u=!0):u=!1}u||sa(t)}if(null!==(s=t.memoizedState)&&null!==(s=s.dehydrated))return yf(s)?t.lanes=32:t.lanes=536870912,null;si(t)}return s=a.children,a=a.fallback,o?(ui(),s=qi({mode:"hidden",children:s},o=t.mode),a=Ir(a,o,n,null),s.return=t,a.return=t,s.sibling=a,t.child=s,(o=t.child).memoizedState=$i(n),o.childLanes=Ii(e,r,n),t.memoizedState=Ui,a):(li(t),Hi(t,s))}if(null!==(u=e.memoizedState)&&null!==(s=u.dehydrated)){if(i)256&t.flags?(li(t),t.flags&=-257,t=Wi(e,t,n)):null!==t.memoizedState?(ui(),t.child=e.child,t.flags|=128,t=null):(ui(),o=a.fallback,s=t.mode,a=qi({mode:"visible",children:a.children},s),(o=Ir(o,s,n,null)).flags|=2,a.return=t,o.return=t,a.sibling=o,t.child=a,ni(t,e.child,null,n),(a=t.child).memoizedState=$i(n),a.childLanes=Ii(e,r,n),t.memoizedState=Ui,t=o);else if(li(t),yf(s)){if(r=s.nextSibling&&s.nextSibling.dataset)var c=r.dgst;r=c,(a=Error(l(419))).stack="",a.digest=r,ma({value:a,source:null,stack:null}),t=Wi(e,t,n)}else if(Pi||Ea(e,t,n,!1),r=0!==(n&e.childLanes),Pi||r){if(null!==(r=rs)&&(0!==(a=0!==((a=0!==(42&(a=n&-n))?1:Te(a))&(r.suspendedLanes|n))?0:a)&&a!==u.retryLane))throw u.retryLane=a,Or(e,a),Fs(r,e,a),Ri;"$?"===s.data||Qs(),t=Wi(e,t,n)}else"$?"===s.data?(t.flags|=192,t.child=e.child,t=null):(e=u.treeContext,aa=vf(s.nextSibling),ra=t,oa=!0,la=null,ia=!1,null!==e&&(Kr[Yr++]=Xr,Kr[Yr++]=Gr,Kr[Yr++]=Jr,Xr=e.id,Gr=e.overflow,Jr=t),(t=Hi(t,a.children)).flags|=4096);return t}return o?(ui(),o=a.fallback,s=t.mode,c=(u=e.child).sibling,(a=Mr(u,{mode:"hidden",children:a.children})).subtreeFlags=65011712&u.subtreeFlags,null!==c?o=Mr(c,o):(o=Ir(o,s,n,null)).flags|=2,o.return=t,a.return=t,a.sibling=o,t.child=a,a=o,o=t.child,null===(s=e.child.memoizedState)?s=$i(n):(null!==(u=s.cachePool)?(c=La._currentValue,u=u.parent!==c?{parent:c,pool:c}:u):u=qa(),s={baseLanes:s.baseLanes|n,cachePool:u}),o.memoizedState=s,o.childLanes=Ii(e,r,n),t.memoizedState=Ui,a):(li(t),e=(n=e.child).sibling,(n=Mr(n,{mode:"visible",children:a.children})).return=t,n.sibling=null,null!==e&&(null===(r=t.deletions)?(t.deletions=[e],t.flags|=16):r.push(e)),t.child=n,t.memoizedState=null,n)}function Hi(e,t){return(t=qi({mode:"visible",children:t},e.mode)).return=e,e.child=t}function qi(e,t){return(e=Fr(22,e,null,t)).lanes=0,e.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null},e}function Wi(e,t,n){return ni(t,e.child,null,n),(e=Hi(t,t.pendingProps.children)).flags|=2,t.memoizedState=null,e}function Vi(e,t,n){e.lanes|=t;var r=e.alternate;null!==r&&(r.lanes|=t),Sa(e.return,t,n)}function Qi(e,t,n,r,a){var o=e.memoizedState;null===o?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:a}:(o.isBackwards=t,o.rendering=null,o.renderingStartTime=0,o.last=r,o.tail=n,o.tailMode=a)}function Ki(e,t,n){var r=t.pendingProps,a=r.revealOrder,o=r.tail;if(Ti(e,t,r.children,n),0!==(2&(r=ci.current)))r=1&r|2,t.flags|=128;else{if(null!==e&&0!==(128&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&Vi(e,n,t);else if(19===e.tag)Vi(e,n,t);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}switch(I(ci,r),a){case"forwards":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===fi(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),Qi(t,!1,a,n,o);break;case"backwards":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===fi(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}Qi(t,!0,n,null,o);break;case"together":Qi(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function Yi(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),ps|=t.lanes,0===(n&t.childLanes)){if(null===e)return null;if(Ea(e,t,n,!1),0===(n&t.childLanes))return null}if(null!==e&&t.child!==e.child)throw Error(l(153));if(null!==t.child){for(n=Mr(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Mr(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function Ji(e,t){return 0!==(e.lanes&t)||!(null===(e=e.dependencies)||!xa(e))}function Xi(e,t,n){if(null!==e)if(e.memoizedProps!==t.pendingProps)Pi=!0;else{if(!Ji(e,n)&&0===(128&t.flags))return Pi=!1,function(e,t,n){switch(t.tag){case 3:V(t,t.stateNode.containerInfo),ba(0,La,e.memoizedState.cache),pa();break;case 27:case 5:K(t);break;case 4:V(t,t.stateNode.containerInfo);break;case 10:ba(0,t.type,t.memoizedProps.value);break;case 13:var r=t.memoizedState;if(null!==r)return null!==r.dehydrated?(li(t),t.flags|=128,null):0!==(n&t.child.childLanes)?Bi(e,t,n):(li(t),null!==(e=Yi(e,t,n))?e.sibling:null);li(t);break;case 19:var a=0!==(128&e.flags);if((r=0!==(n&t.childLanes))||(Ea(e,t,n,!1),r=0!==(n&t.childLanes)),a){if(r)return Ki(e,t,n);t.flags|=128}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null,a.lastEffect=null),I(ci,ci.current),r)break;return null;case 22:case 23:return t.lanes=0,Li(e,t,n);case 24:ba(0,La,e.memoizedState.cache)}return Yi(e,t,n)}(e,t,n);Pi=0!==(131072&e.flags)}else Pi=!1,oa&&0!==(1048576&t.flags)&&ea(t,Qr,t.index);switch(t.lanes=0,t.tag){case 16:e:{e=t.pendingProps;var r=t.elementType,a=r._init;if(r=a(r._payload),t.type=r,"function"!==typeof r){if(void 0!==r&&null!==r){if((a=r.$$typeof)===k){t.tag=11,t=_i(null,t,r,e,n);break e}if(a===C){t.tag=14,t=Ni(null,t,r,e,n);break e}}throw t=L(r)||r,Error(l(306,t,""))}Dr(r)?(e=gi(r,e),t.tag=1,t=Di(null,t,r,e,n)):(t.tag=0,t=ji(null,t,r,e,n))}return t;case 0:return ji(e,t,t.type,t.pendingProps,n);case 1:return Di(e,t,r=t.type,a=gi(r,t.pendingProps),n);case 3:e:{if(V(t,t.stateNode.containerInfo),null===e)throw Error(l(387));r=t.pendingProps;var o=t.memoizedState;a=o.element,ro(e,t),co(t,r,null,n);var i=t.memoizedState;if(r=i.cache,ba(0,La,r),r!==o.cache&&ka(t,[La],n,!0),so(),r=i.element,o.isDehydrated){if(o={element:r,isDehydrated:!1,cache:i.cache},t.updateQueue.baseState=o,t.memoizedState=o,256&t.flags){t=Mi(e,t,r,n);break e}if(r!==a){ma(a=xr(Error(l(424)),t)),t=Mi(e,t,r,n);break e}if(9===(e=t.stateNode.containerInfo).nodeType)e=e.body;else e="HTML"===e.nodeName?e.ownerDocument.body:e;for(aa=vf(e.firstChild),ra=t,oa=!0,la=null,ia=!0,n=ri(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|4096,n=n.sibling}else{if(pa(),r===a){t=Yi(e,t,n);break e}Ti(e,t,r,n)}t=t.child}return t;case 26:return Ai(e,t),null===e?(n=_f(t.type,null,t.pendingProps,null))?t.memoizedState=n:oa||(n=t.type,e=t.pendingProps,(r=rf(q.current).createElement(n))[Le]=t,r[ze]=e,ef(r,n,e),We(r),t.stateNode=r):t.memoizedState=_f(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return K(t),null===e&&oa&&(r=t.stateNode=Sf(t.type,t.pendingProps,q.current),ra=t,ia=!0,a=aa,hf(t.type)?(bf=a,aa=vf(r.firstChild)):aa=a),Ti(e,t,t.pendingProps.children,n),Ai(e,t),null===e&&(t.flags|=4194304),t.child;case 5:return null===e&&oa&&((a=r=aa)&&(null!==(r=function(e,t,n,r){for(;1===e.nodeType;){var a=n;if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!r&&("INPUT"!==e.nodeName||"hidden"!==e.type))break}else if(r){if(!e[Ue])switch(t){case"meta":if(!e.hasAttribute("itemprop"))break;return e;case"link":if("stylesheet"===(o=e.getAttribute("rel"))&&e.hasAttribute("data-precedence"))break;if(o!==a.rel||e.getAttribute("href")!==(null==a.href||""===a.href?null:a.href)||e.getAttribute("crossorigin")!==(null==a.crossOrigin?null:a.crossOrigin)||e.getAttribute("title")!==(null==a.title?null:a.title))break;return e;case"style":if(e.hasAttribute("data-precedence"))break;return e;case"script":if(((o=e.getAttribute("src"))!==(null==a.src?null:a.src)||e.getAttribute("type")!==(null==a.type?null:a.type)||e.getAttribute("crossorigin")!==(null==a.crossOrigin?null:a.crossOrigin))&&o&&e.hasAttribute("async")&&!e.hasAttribute("itemprop"))break;return e;default:return e}}else{if("input"!==t||"hidden"!==e.type)return e;var o=null==a.name?null:""+a.name;if("hidden"===a.type&&e.getAttribute("name")===o)return e}if(null===(e=vf(e.nextSibling)))break}return null}(r,t.type,t.pendingProps,ia))?(t.stateNode=r,ra=t,aa=vf(r.firstChild),ia=!1,a=!0):a=!1),a||sa(t)),K(t),a=t.type,o=t.pendingProps,i=null!==e?e.memoizedProps:null,r=o.children,lf(a,o)?r=null:null!==i&&lf(a,i)&&(t.flags|=32),null!==t.memoizedState&&(a=Lo(e,t,jo,null,null,n),Yf._currentValue=a),Ai(e,t),Ti(e,t,r,n),t.child;case 6:return null===e&&oa&&((e=n=aa)&&(null!==(n=function(e,t,n){if(""===t)return null;for(;3!==e.nodeType;){if((1!==e.nodeType||"INPUT"!==e.nodeName||"hidden"!==e.type)&&!n)return null;if(null===(e=vf(e.nextSibling)))return null}return e}(n,t.pendingProps,ia))?(t.stateNode=n,ra=t,aa=null,e=!0):e=!1),e||sa(t)),null;case 13:return Bi(e,t,n);case 4:return V(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=ni(t,null,r,n):Ti(e,t,r,n),t.child;case 11:return _i(e,t,t.type,t.pendingProps,n);case 7:return Ti(e,t,t.pendingProps,n),t.child;case 8:case 12:return Ti(e,t,t.pendingProps.children,n),t.child;case 10:return r=t.pendingProps,ba(0,t.type,r.value),Ti(e,t,r.children,n),t.child;case 9:return a=t.type._context,r=t.pendingProps.children,Ca(t),r=r(a=Ra(a)),t.flags|=1,Ti(e,t,r,n),t.child;case 14:return Ni(e,t,t.type,t.pendingProps,n);case 15:return Oi(e,t,t.type,t.pendingProps,n);case 19:return Ki(e,t,n);case 31:return r=t.pendingProps,n=t.mode,r={mode:r.mode,children:r.children},null===e?((n=qi(r,n)).ref=t.ref,t.child=n,n.return=t,t=n):((n=Mr(e.child,r)).ref=t.ref,t.child=n,n.return=t,t=n),t;case 22:return Li(e,t,n);case 24:return Ca(t),r=Ra(La),null===e?(null===(a=Ba())&&(a=rs,o=za(),a.pooledCache=o,o.refCount++,null!==o&&(a.pooledCacheLanes|=n),a=o),t.memoizedState={parent:r,cache:a},no(t),ba(0,La,a)):(0!==(e.lanes&n)&&(ro(e,t),co(t,null,null,n),so()),a=e.memoizedState,o=t.memoizedState,a.parent!==r?(a={parent:r,cache:r},t.memoizedState=a,0===t.lanes&&(t.memoizedState=t.updateQueue.baseState=a),ba(0,La,r)):(r=o.cache,ba(0,La,r),r!==a.cache&&ka(t,[La],n,!0))),Ti(e,t,t.pendingProps.children,n),t.child;case 29:throw t.pendingProps}throw Error(l(156,t.tag))}function Gi(e){e.flags|=4}function Zi(e,t){if("stylesheet"!==t.type||0!==(4&t.state.loading))e.flags&=-16777217;else if(e.flags|=16777216,!Bf(t)){if(null!==(t=ai.current)&&((4194048&os)===os?null!==oi:(62914560&os)!==os&&0===(536870912&os)||t!==oi))throw Ga=Ka,Va;e.flags|=8192}}function eu(e,t){null!==t&&(e.flags|=4),16384&e.flags&&(t=22!==e.tag?Ee():536870912,e.lanes|=t,ys|=t)}function tu(e,t){if(!oa)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function nu(e){var t=null!==e.alternate&&e.alternate.child===e.child,n=0,r=0;if(t)for(var a=e.child;null!==a;)n|=a.lanes|a.childLanes,r|=65011712&a.subtreeFlags,r|=65011712&a.flags,a.return=e,a=a.sibling;else for(a=e.child;null!==a;)n|=a.lanes|a.childLanes,r|=a.subtreeFlags,r|=a.flags,a.return=e,a=a.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function ru(e,t,n){var r=t.pendingProps;switch(na(t),t.tag){case 31:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:case 1:return nu(t),null;case 3:return n=t.stateNode,r=null,null!==e&&(r=e.memoizedState.cache),t.memoizedState.cache!==r&&(t.flags|=2048),wa(La),Q(),n.pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),null!==e&&null!==e.child||(da(t)?Gi(t):null===e||e.memoizedState.isDehydrated&&0===(256&t.flags)||(t.flags|=1024,ha())),nu(t),null;case 26:return n=t.memoizedState,null===e?(Gi(t),null!==n?(nu(t),Zi(t,n)):(nu(t),t.flags&=-16777217)):n?n!==e.memoizedState?(Gi(t),nu(t),Zi(t,n)):(nu(t),t.flags&=-16777217):(e.memoizedProps!==r&&Gi(t),nu(t),t.flags&=-16777217),null;case 27:Y(t),n=q.current;var a=t.type;if(null!==e&&null!=t.stateNode)e.memoizedProps!==r&&Gi(t);else{if(!r){if(null===t.stateNode)throw Error(l(166));return nu(t),null}e=B.current,da(t)?ca(t):(e=Sf(a,r,n),t.stateNode=e,Gi(t))}return nu(t),null;case 5:if(Y(t),n=t.type,null!==e&&null!=t.stateNode)e.memoizedProps!==r&&Gi(t);else{if(!r){if(null===t.stateNode)throw Error(l(166));return nu(t),null}if(e=B.current,da(t))ca(t);else{switch(a=rf(q.current),e){case 1:e=a.createElementNS("http://www.w3.org/2000/svg",n);break;case 2:e=a.createElementNS("http://www.w3.org/1998/Math/MathML",n);break;default:switch(n){case"svg":e=a.createElementNS("http://www.w3.org/2000/svg",n);break;case"math":e=a.createElementNS("http://www.w3.org/1998/Math/MathML",n);break;case"script":(e=a.createElement("div")).innerHTML="
+
+
+
+
+
+
+ О проекте
+
+ ЯлАрба — это супер-приложение для путешественников, объединяющее в себе:
+
+
+ - Агрегатор мест отдыха (отели, экскурсии, рестораны)
+ - Маркетплейс туров и локальных сувениров
+ - ИИ-планировщик маршрутов с учетом здоровья пользователя
+ - Систему бронирования и покупки билетов
+
+
+ Наша миссия — сделать планирование путешествий простым,
+ персонализированным и доступным.
+
+
+
+
+
Разработчик
+
Валитов Газиз
+
+ Full-stack разработчик с опытом в travel-tech проектах. Специализация:
+ Python/Django, React, системы рекомендаций на основе ИИ.
+
+
+
+
+ План разработки
+
+
+
Этап 1: MVP (0-6 месяцев)
+
+ - База мест отдыха (1000+ позиций)
+ - Интеграция с API бронирования (Booking.com, Ostrovok)
+ - Прототип ИИ-рекомендаций
+ - Мобильная версия (PWA)
+
+
+
+
+
Этап 2: Монетизация (6-12 месяцев)
+
+ - Система комиссий (10-15% с бронирований)
+ - Платные подписки (PRO-аккаунт)
+ - Партнерская программа для гидов
+
+
+
+
+
Этап 3: Масштабирование (12-24 месяца)
+
+ - Выход на рынки СНГ (Казахстан, Узбекистан)
+ - Полноценный ИИ-ассистент с рекомендациями по здоровью
+ - Интеграция с сервисами аренды авто
+
+
+
+
+
+ Технологический стек
+
+ - Frontend: React.js, TypeScript, PWA
+ - Backend: Python/Django, PostgreSQL
+ -
+ AI: NLP-модели для обработки запросов,
+ рекомендательные системы
+
+ - DevOps: Docker, Kubernetes, Yandex Cloud
+
+
+
+
+