diff --git a/404.html b/404.html index 493029b9..5ba3fa5c 100644 --- a/404.html +++ b/404.html @@ -1,16 +1,13 @@ - + - -Page Not Found | Groundlight - - + +Page Not Found | Groundlight + + -
-
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- - +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

\ No newline at end of file diff --git a/assets/css/styles.196046c5.css b/assets/css/styles.73495a9e.css similarity index 54% rename from assets/css/styles.196046c5.css rename to assets/css/styles.73495a9e.css index 8c6fe294..32af0661 100644 --- a/assets/css/styles.196046c5.css +++ b/assets/css/styles.73495a9e.css @@ -1 +1 @@ -.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}*,.loadingRing_RJI3 div{box-sizing:border-box}.clean-list,.containsTaskList_mC6p,.details_lb9f>summary,.dropdown__menu,.menu__list{list-style:none}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-color-primary:#2e4b85;--ifm-color-primary-dark:#294378;--ifm-color-primary-darker:#274071;--ifm-color-primary-darkest:#20345d;--ifm-color-primary-light:#335292;--ifm-color-primary-lighter:#355699;--ifm-color-primary-lightest:#3c61ad;--ifm-code-font-size:95%;--docusaurus-highlighted-code-line-bg:#0000001a;--docusaurus-announcement-bar-height:auto;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}html{-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);text-rendering:optimizelegibility}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_NmtK,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_EoeP .wordWrapButtonIcon_Bwma{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_tbUL,.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after,.searchBarContainer_NW3z.searchIndexLoading_EJ1f .searchBarLoadingRing_YnHq{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.content_knG7 a,.hitFooter_E9YW a,.suggestion_fB_2.cursor_eG29 mark{text-decoration:underline}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_Tfdd:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;pointer-events:none;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_Djhp article>:first-child,.docItemContainer_Djhp header+*,.footer__item{margin-top:0}.admonitionContent_S0QG>:last-child,.collapsibleContent_i85q>:last-child,.footer__items,.searchResultItem_U687>h2{margin-bottom:0}.codeBlockStandalone_MEMb,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist-caret:after{height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;filter:var(--ifm-menu-link-sublist-icon-filter);content:""}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;position:fixed;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;left:0;top:0;visibility:hidden}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_xLdY,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}#nprogress,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{-webkit-appearance:none;appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover{text-decoration:none}.pagination-nav{grid-gap:var(--ifm-spacing-horizontal);display:grid;gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}[data-theme=dark]{--ifm-color-primary:#71a3e5;--ifm-color-primary-dark:#5490e0;--ifm-color-primary-darker:#4687dd;--ifm-color-primary-darkest:#256cca;--ifm-color-primary-light:#8eb6ea;--ifm-color-primary-lighter:#9cbfed;--ifm-color-primary-lightest:#c8dbf5;--docusaurus-highlighted-code-line-bg:#4469a54d}#docusaurus-base-url-issue-banner-container,.docSidebarContainer_b6E3,.hideAction_vcyE>svg,.page-content[data-id=redirect],.sidebarLogo_isFc,.themedImage_ToTc,[data-theme=dark] .lightToggleIcon_pyhR,[data-theme=light] .darkToggleIcon_wfgR,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}.skipToContent_fXgn{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.toggle_vylO{height:2rem;width:2rem}.toggleButton_gllP{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_aARS{cursor:not-allowed}.darkNavbarColorModeToggle_X3D1:hover{background:var(--ifm-color-gray-800)}[data-theme=dark] .themedImage--dark_i4oU,[data-theme=light] .themedImage--light_HNdA{display:initial}.iconExternalLink_nPIU{margin-left:.3rem}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}.searchBar_RVTs .dropdownMenu_qbY6{background:var(--search-local-modal-background,#f5f6f7);border-radius:6px;box-shadow:var(--search-local-modal-shadow,inset 1px 1px 0 0 #ffffff80,0 3px 8px 0 #555a64);left:auto!important;margin-top:8px;padding:var(--search-local-spacing,12px);position:relative;right:0!important;width:var(--search-local-modal-width,560px)}html[data-theme=dark] .searchBar_RVTs .dropdownMenu_qbY6{background:var(--search-local-modal-background,var(--ifm-background-color));box-shadow:var(--search-local-modal-shadow,inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309)}.searchBar_RVTs .dropdownMenu_qbY6 .suggestion_fB_2{align-items:center;background:var(--search-local-hit-background,#fff);border-radius:4px;box-shadow:var(--search-local-hit-shadow,0 1px 3px 0 #d4d9e1);color:var(--search-local-hit-color,#444950);cursor:pointer;display:flex;flex-direction:row;height:var(--search-local-hit-height,56px);padding:0 var(--search-local-spacing,12px);width:100%}.hitTree_kk6K,.noResults_l6Q3{align-items:center;display:flex}html[data-theme=dark] .dropdownMenu_qbY6 .suggestion_fB_2{background:var(--search-local-hit-background,var(--ifm-color-emphasis-100));box-shadow:var(--search-local-hit-shadow,none);color:var(--search-local-hit-color,var(--ifm-font-color-base))}.searchBar_RVTs .dropdownMenu_qbY6 .suggestion_fB_2:not(:last-child){margin-bottom:4px}.searchBar_RVTs .dropdownMenu_qbY6 .suggestion_fB_2.cursor_eG29{background-color:var(--search-local-highlight-color,var(--ifm-color-primary))}.hitFooter_E9YW a,.hitIcon_a7Zy,.hitPath_ieM4,.hitTree_kk6K,.noResultsIcon_EBY5{color:var(--search-local-muted-color,#969faf)}html[data-theme=dark] .hitIcon_a7Zy,html[data-theme=dark] .hitPath_ieM4,html[data-theme=dark] .hitTree_kk6K,html[data-theme=dark] .noResultsIcon_EBY5{color:var(--search-local-muted-color,var(--ifm-color-secondary-darkest))}.hitTree_kk6K>svg{height:var(--search-local-hit-height,56px);opacity:.5;width:24px}.hitIcon_a7Zy,.hitTree_kk6K>svg{stroke-width:var(--search-local-icon-stroke-width,1.4)}.hitAction_NqkB,.hitIcon_a7Zy{height:20px;width:20px}.hitWrapper_sAK8{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;margin:0 8px;overflow-x:hidden;width:80%}.hitWrapper_sAK8 mark{background:none;color:var(--search-local-highlight-color,var(--ifm-color-primary))}.hitTitle_vyVt{font-size:.9em}.hitPath_ieM4{font-size:.75em}.hitPath_ieM4,.hitTitle_vyVt{overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.noResults_l6Q3{flex-direction:column;justify-content:center;padding:var(--search-local-spacing,12px) 0}.noResultsIcon_EBY5{margin-bottom:var(--search-local-spacing,12px)}.hitFooter_E9YW{font-size:.85em;margin-top:var(--search-local-spacing,12px);text-align:center}.cursor_eG29 .hideAction_vcyE>svg,.tocCollapsibleContent_vkbj a{display:block}.suggestion_fB_2.cursor_eG29,.suggestion_fB_2.cursor_eG29 .hitIcon_a7Zy,.suggestion_fB_2.cursor_eG29 .hitPath_ieM4,.suggestion_fB_2.cursor_eG29 .hitTree_kk6K,.suggestion_fB_2.cursor_eG29 mark{color:var(--search-local-hit-active-color,var(--ifm-color-white))!important}.searchBarContainer_NW3z{margin-left:16px}.searchBarContainer_NW3z .searchBarLoadingRing_YnHq{display:none;left:10px;position:absolute;top:6px}.searchBarContainer_NW3z .searchClearButton_qk4g{background:none;border:none;line-height:1rem;padding:0;position:absolute;right:.8rem;top:50%;transform:translateY(-50%)}.navbar__search{position:relative}.searchIndexLoading_EJ1f .navbar__search-input{background-image:none}.searchHintContainer_Pkmr{align-items:center;display:flex;gap:4px;height:100%;justify-content:center;pointer-events:none;position:absolute;right:10px;top:0}.searchHint_iIMx{background-color:var(--ifm-navbar-search-input-background-color);border:1px solid var(--ifm-color-emphasis-500);box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-500);color:var(--ifm-navbar-search-input-placeholder-color)}.loadingRing_RJI3{display:inline-block;height:20px;opacity:var(--search-local-loading-icon-opacity,.5);position:relative;width:20px}.loadingRing_RJI3 div{animation:1.2s cubic-bezier(.5,0,.5,1) infinite a;border:2px solid var(--search-load-loading-icon-color,var(--ifm-navbar-search-input-color));border-color:var(--search-load-loading-icon-color,var(--ifm-navbar-search-input-color)) #0000 #0000 #0000;border-radius:50%;display:block;height:16px;margin:2px;position:absolute;width:16px}.loadingRing_RJI3 div:first-child{animation-delay:-.45s}.loadingRing_RJI3 div:nth-child(2){animation-delay:-.3s}.loadingRing_RJI3 div:nth-child(3){animation-delay:-.15s}@keyframes a{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.navbarHideable_m1mJ{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_jGov{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}.footerLogoLink_BH7S{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_BH7S:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.mainWrapper_z2l0{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}.tag_zVej{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_zVej:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_sFm0{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_h2kH{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_h2kH:after,.tagWithCount_h2kH:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_h2kH:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_h2kH:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_h2kH span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tags_jXut{display:inline}.tag_QGVx{display:inline-block;margin:0 .4rem .5rem 0}.lastUpdated_vwxv{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_TO0P{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_TO0P:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_MG3E:after,.tocCollapsibleExpanded_sAul{transform:none}.tocCollapsible_ETCw{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_vkbj>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vkbj ul li{margin:.4rem .8rem}.searchContextInput_mXoe,.searchQueryInput_CFBF{background:var(--ifm-background-color);border:var(--ifm-global-border-width) solid var(--ifm-color-content-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-font-color-base);font-size:var(--ifm-font-size-base);margin-bottom:1rem;padding:.5rem;width:100%}.searchResultItem_U687{border-bottom:1px solid #dfe3e8;padding:1rem 0}.searchResultItemPath_uIbk{color:var(--ifm-color-content-secondary);font-size:.8rem;margin:.5rem 0 0}.searchResultItemSummary_oZHr{font-style:italic;margin:.5rem 0 0}.backToTopButton_sjWU{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.buttonGroup__atx button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.backToTopButton_sjWU:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xfvO{opacity:1;transform:scale(1);visibility:visible}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_PEFL{display:none;margin:0}.docMainContainer_gTbr,.docPage__5DB{display:flex;width:100%}.docPage__5DB{flex:1 0}.docsWrapper_BCFX{display:flex;flex:1 0 auto}.buttons_AeoN,.features_t9lD{align-items:center;display:flex}.features_t9lD{padding:2rem 0;width:100%}.featureSvg_GfXr{height:200px;width:200px}.heroBanner_qdFl{overflow:hidden;padding:4rem 0;position:relative;text-align:center}.buttons_AeoN{justify-content:center}.codeBlockContainer_Ckt0{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_biex{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_Ktv7{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_Ktv7+.codeBlockContent_biex .codeBlock_bY9V{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup__atx{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup__atx button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup__atx button:focus-visible,.buttonGroup__atx button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup__atx button{opacity:.4}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_lJS_{counter-increment:a;display:table-row}.codeLineNumber_Tfdd{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_Tfdd:before{content:counter(a);opacity:.4}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_obH4{opacity:1!important}.copyButtonIcons_eSgA{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_y97N,.copyButtonSuccessIcon_LjdS{fill:currentColor;height:inherit;left:0;opacity:inherit;position:absolute;top:0;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_LjdS{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_obH4 .copyButtonIcon_y97N{opacity:0;transform:scale(.33)}.copyButtonCopied_obH4 .copyButtonSuccessIcon_LjdS{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.wordWrapButtonIcon_Bwma{height:1.2rem;width:1.2rem}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border-color:#0000 #0000 #0000 var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.details_b_Ee{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.anchorWithStickyNavbar_LWe7{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_WYt5{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.img_ev3q{height:auto}.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.admonition_LlT9{margin-bottom:1em}.admonitionHeading_tbUL{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.3rem}.admonitionHeading_tbUL code{text-transform:none}.admonitionIcon_kALy{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_kALy svg{fill:var(--ifm-alert-foreground-color);display:inline-block;height:1.6em;width:1.6em}.breadcrumbHomeIcon_YNFT{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.mdxPageWrapper_j9I6{justify-content:center}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_m80_{background-color:var(--docusaurus-collapse-button-bg)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.searchBox_ZlJk{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.lastUpdated_vwxv{text-align:right}.tocMobile_ITEo{display:none}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_kv0_{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_BlDH,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_m80_:focus,.expandButton_m80_:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_M9Kj{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_SIkG{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_SIkG{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_GW3s{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_njMd{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{opacity:0;visibility:hidden}.sidebarLogo_isFc{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_isFc img{height:2rem;margin-right:.5rem}.expandButton_m80_{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_BlDH{transform:rotate(180deg)}.docSidebarContainer_b6E3{border-right:1px solid var(--ifm-toc-border-color);-webkit-clip-path:inset(0);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_b3ry{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_Xe31{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_gTbr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_Uz_u{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_czyv{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.docItemCol_VOVn{max-width:75%!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_DEke,.footer__link-separator,.navbar__item,.tableOfContents_bqdL{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.searchBox_ZlJk{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_F8PC{padding:0 .3rem}}@media not (max-width:996px){.searchBar_RVTs.searchBarLeft_MXDe .dropdownMenu_qbY6{left:0!important;right:auto!important}}@media only screen and (max-width:996px){.searchQueryColumn_q7nx{max-width:60%!important}.searchContextColumn_oWAF{max-width:40%!important}}@media screen and (max-width:996px){.heroBanner_qdFl{padding:2rem}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}.navbar__search-input:not(:focus){width:2rem}.searchBar_RVTs .dropdownMenu_qbY6{max-width:calc(100vw - var(--ifm-navbar-padding-horizontal)*2);width:var(--search-local-modal-width-sm,340px)}.searchBarContainer_NW3z:not(.focused_OWtg) .searchClearButton_qk4g,.searchHintContainer_Pkmr{display:none}}@media screen and (max-width:576px){.searchQueryColumn_q7nx{max-width:100%!important}.searchContextColumn_oWAF{max-width:100%!important;padding-left:var(--ifm-spacing-horizontal)!important}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media print{.announcementBar_mb4j,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_e6Vv{white-space:pre-wrap}} \ No newline at end of file +.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.toggleButton_fOL9,html{-webkit-tap-highlight-color:transparent}*,.loadingRing_RJI3 div{box-sizing:border-box}.clean-list,.containsTaskList_t83X,.details_lb9f>summary,.dropdown__menu,.menu__list{list-style:none}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-color-primary:#2e4b85;--ifm-color-primary-dark:#294378;--ifm-color-primary-darker:#274071;--ifm-color-primary-darkest:#20345d;--ifm-color-primary-light:#335292;--ifm-color-primary-lighter:#355699;--ifm-color-primary-lightest:#3c61ad;--ifm-code-font-size:95%;--docusaurus-highlighted-code-line-bg:#0000001a;--docusaurus-announcement-bar-height:auto;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}html{-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);text-rendering:optimizelegibility}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_iv3S,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_px86 .wordWrapButtonIcon_mL3R{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_GGQ4,.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after,.searchBarContainer_NW3z.searchIndexLoading_EJ1f .searchBarLoadingRing_YnHq{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.content_M4QP a,.hitFooter_E9YW a,.suggestion_fB_2.cursor_eG29 mark{text-decoration:underline}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_SYni:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;pointer-events:none;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_OGiL article>:first-child,.docItemContainer_OGiL header+*,.footer__item{margin-top:0}.admonitionContent_pGk6>:last-child,.collapsibleContent_i85q p:last-child,.details_lb9f>summary>p:last-child,.footer__items,.searchResultItem_U687>h2{margin-bottom:0}.codeBlockStandalone_Nhx8,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist-caret:after{content:"";height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;filter:var(--ifm-menu-link-sublist-icon-filter)}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;position:fixed;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;left:0;top:0;visibility:hidden}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_JsD6,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}#nprogress,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{-webkit-appearance:none;appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover{text-decoration:none}.pagination-nav{grid-gap:var(--ifm-spacing-horizontal);display:grid;gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList_t83X>li)>.containsTaskList_t83X{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}[data-theme=dark]{--ifm-color-primary:#71a3e5;--ifm-color-primary-dark:#5490e0;--ifm-color-primary-darker:#4687dd;--ifm-color-primary-darkest:#256cca;--ifm-color-primary-light:#8eb6ea;--ifm-color-primary-lighter:#9cbfed;--ifm-color-primary-lightest:#c8dbf5;--docusaurus-highlighted-code-line-bg:#4469a54d}#__docusaurus-base-url-issue-banner-container,.docSidebarContainer_Ta75,.hideAction_vcyE>svg,.navbarSearchContainer_IP3a:not(:has(>*)),.page-content[data-id=redirect],.sidebarLogo_IZVG,.themedComponent_mlkZ,[data-theme=dark] .lightToggleIcon_DCeJ,[data-theme=light] .darkToggleIcon_DFgp,html[data-announcement-bar-initially-dismissed=true] .announcementBar_w47h{display:none}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}.skipToContent_gu5v{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_gu5v:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_VBLd{line-height:0;padding:0}.content_M4QP{font-size:85%;padding:5px 0;text-align:center}.content_M4QP a{color:inherit}.announcementBar_w47h{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_VCrL{flex:0 0 10px}.announcementBarClose_X3y7{align-self:stretch;flex:0 0 30px}.toggle_kWbt{height:2rem;width:2rem}.toggleButton_fOL9{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_fOL9:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_STpu{cursor:not-allowed}.darkNavbarColorModeToggle_e68Z:hover{background:var(--ifm-color-gray-800)}[data-theme=dark] .themedComponent--dark_xIcU,[data-theme=light] .themedComponent--light_NVdE,html:not([data-theme]) .themedComponent--light_NVdE{display:initial}.iconExternalLink_T11m{margin-left:.3rem}.iconLanguage_Ax7J{margin-right:5px;vertical-align:text-bottom}.searchBar_RVTs .dropdownMenu_qbY6{background:var(--search-local-modal-background,#f5f6f7);border-radius:6px;box-shadow:var(--search-local-modal-shadow,inset 1px 1px 0 0 #ffffff80,0 3px 8px 0 #555a64);left:auto!important;margin-top:8px;padding:var(--search-local-spacing,12px);position:relative;right:0!important;width:var(--search-local-modal-width,560px)}html[data-theme=dark] .searchBar_RVTs .dropdownMenu_qbY6{background:var(--search-local-modal-background,var(--ifm-background-color));box-shadow:var(--search-local-modal-shadow,inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309)}.searchBar_RVTs .dropdownMenu_qbY6 .suggestion_fB_2{align-items:center;background:var(--search-local-hit-background,#fff);border-radius:4px;box-shadow:var(--search-local-hit-shadow,0 1px 3px 0 #d4d9e1);color:var(--search-local-hit-color,#444950);cursor:pointer;display:flex;flex-direction:row;height:var(--search-local-hit-height,56px);padding:0 var(--search-local-spacing,12px);width:100%}.hitTree_kk6K,.noResults_l6Q3{align-items:center;display:flex}html[data-theme=dark] .dropdownMenu_qbY6 .suggestion_fB_2{background:var(--search-local-hit-background,var(--ifm-color-emphasis-100));box-shadow:var(--search-local-hit-shadow,none);color:var(--search-local-hit-color,var(--ifm-font-color-base))}.searchBar_RVTs .dropdownMenu_qbY6 .suggestion_fB_2:not(:last-child){margin-bottom:4px}.searchBar_RVTs .dropdownMenu_qbY6 .suggestion_fB_2.cursor_eG29{background-color:var(--search-local-highlight-color,var(--ifm-color-primary))}.hitFooter_E9YW a,.hitIcon_a7Zy,.hitPath_ieM4,.hitTree_kk6K,.noResultsIcon_EBY5{color:var(--search-local-muted-color,#969faf)}html[data-theme=dark] .hitIcon_a7Zy,html[data-theme=dark] .hitPath_ieM4,html[data-theme=dark] .hitTree_kk6K,html[data-theme=dark] .noResultsIcon_EBY5{color:var(--search-local-muted-color,var(--ifm-color-secondary-darkest))}.hitTree_kk6K>svg{height:var(--search-local-hit-height,56px);opacity:.5;width:24px}.hitIcon_a7Zy,.hitTree_kk6K>svg{stroke-width:var(--search-local-icon-stroke-width,1.4)}.hitAction_NqkB,.hitIcon_a7Zy{height:20px;width:20px}.hitWrapper_sAK8{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;margin:0 8px;overflow-x:hidden;width:80%}.hitWrapper_sAK8 mark{background:none;color:var(--search-local-highlight-color,var(--ifm-color-primary))}.hitTitle_vyVt{font-size:.9em}.hitPath_ieM4{font-size:.75em}.hitPath_ieM4,.hitTitle_vyVt{overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.noResults_l6Q3{flex-direction:column;justify-content:center;padding:var(--search-local-spacing,12px) 0}.noResultsIcon_EBY5{margin-bottom:var(--search-local-spacing,12px)}.hitFooter_E9YW{font-size:.85em;margin-top:var(--search-local-spacing,12px);text-align:center}.cursor_eG29 .hideAction_vcyE>svg,.tocCollapsibleContent_oBBC a{display:block}.suggestion_fB_2.cursor_eG29,.suggestion_fB_2.cursor_eG29 .hitIcon_a7Zy,.suggestion_fB_2.cursor_eG29 .hitPath_ieM4,.suggestion_fB_2.cursor_eG29 .hitTree_kk6K,.suggestion_fB_2.cursor_eG29 mark{color:var(--search-local-hit-active-color,var(--ifm-color-white))!important}.searchBarContainer_NW3z{margin-left:16px}.searchBarContainer_NW3z .searchBarLoadingRing_YnHq{display:none;left:10px;position:absolute;top:6px}.searchBarContainer_NW3z .searchClearButton_qk4g{background:none;border:none;line-height:1rem;padding:0;position:absolute;right:.8rem;top:50%;transform:translateY(-50%)}.navbar__search{position:relative}.searchIndexLoading_EJ1f .navbar__search-input{background-image:none}.searchHintContainer_Pkmr{align-items:center;display:flex;gap:4px;height:100%;justify-content:center;pointer-events:none;position:absolute;right:10px;top:0}.searchHint_iIMx{background-color:var(--ifm-navbar-search-input-background-color);border:1px solid var(--ifm-color-emphasis-500);box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-500);color:var(--ifm-navbar-search-input-placeholder-color)}.loadingRing_RJI3{display:inline-block;height:20px;opacity:var(--search-local-loading-icon-opacity,.5);position:relative;width:20px}.features_t9lD,.tocCollapsibleButton_pHwF{width:100%;align-items:center;display:flex}.loadingRing_RJI3 div{animation:1.2s cubic-bezier(.5,0,.5,1) infinite a;border:2px solid var(--search-load-loading-icon-color,var(--ifm-navbar-search-input-color));border-color:var(--search-load-loading-icon-color,var(--ifm-navbar-search-input-color)) #0000 #0000 #0000;border-radius:50%;display:block;height:16px;margin:2px;position:absolute;width:16px}.loadingRing_RJI3 div:first-child{animation-delay:-.45s}.loadingRing_RJI3 div:nth-child(2){animation-delay:-.3s}.loadingRing_RJI3 div:nth-child(3){animation-delay:-.15s}@keyframes a{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.navbarHideable_GXDz{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_WAp3{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}.errorBoundaryFallback_VBag{color:red;padding:.55rem}.footerLogoLink_uIzf{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_uIzf:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.anchorWithStickyNavbar_FNw8{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_JmiO{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.mainWrapper_IbdI{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.iconEdit_NulP{margin-right:.3em;vertical-align:sub}.tag_QDqo{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_QDqo:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_RTiO{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_mElv{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_mElv:after,.tagWithCount_mElv:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_mElv:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_mElv:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_mElv span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tags_aHIs{display:inline}.tag_nwHU{display:inline-block;margin:0 .4rem .5rem 0}.lastUpdated__GQF{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_pHwF{font-size:inherit;justify-content:space-between;padding:.4rem .8rem}.tocCollapsibleButton_pHwF:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_IUTr:after,.tocCollapsibleExpanded_RnCm{transform:none}.tocCollapsible_QCOD{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_oBBC>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_oBBC ul li{margin:.4rem .8rem}.searchContextInput_mXoe,.searchQueryInput_CFBF{background:var(--ifm-background-color);border:var(--ifm-global-border-width) solid var(--ifm-color-content-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-font-color-base);font-size:var(--ifm-font-size-base);margin-bottom:1rem;padding:.5rem;width:100%}.searchResultItem_U687{border-bottom:1px solid #dfe3e8;padding:1rem 0}.searchResultItemPath_uIbk{color:var(--ifm-color-content-secondary);font-size:.8rem;margin:.5rem 0 0}.searchResultItemSummary_oZHr{font-style:italic;margin:.5rem 0 0}.features_t9lD{padding:2rem 0}.featureSvg_GfXr{height:200px;width:200px}.heroBanner_qdFl{overflow:hidden;padding:4rem 0;position:relative;text-align:center}.buttons_AeoN{align-items:center;display:flex;justify-content:center}.backToTopButton_SdI4{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.buttonGroup_Sd8_ button,.codeBlockContainer_aalF{background:var(--prism-background-color);color:var(--prism-color)}.backToTopButton_SdI4:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_mWsi{opacity:1;transform:scale(1);visibility:visible}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_Cq4q{display:none;margin:0}.docMainContainer_lg0V,.docRoot_eRbX{display:flex;width:100%}.docsWrapper_JGIH{display:flex;flex:1 0 auto}.codeBlockContainer_aalF{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_MHx8{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_RqKv{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_zHgq{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_RqKv+.codeBlockContent_MHx8 .codeBlock_zHgq{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_RjmQ{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_xeGh{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup_Sd8_{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup_Sd8_ button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup_Sd8_ button:focus-visible,.buttonGroup_Sd8_ button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup_Sd8_ button{opacity:.4}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_gn0d{counter-increment:a;display:table-row}.codeLineNumber_SYni{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_SYni:before{content:counter(a);opacity:.4}.codeLineContent_hJ_G{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_cTKk{opacity:1!important}.copyButtonIcons_LnQD{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_t3l1,.copyButtonSuccessIcon_IiZV{fill:currentColor;height:inherit;left:0;opacity:inherit;position:absolute;top:0;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_IiZV{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_cTKk .copyButtonIcon_t3l1{opacity:0;transform:scale(.33)}.copyButtonCopied_cTKk .copyButtonSuccessIcon_IiZV{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.wordWrapButtonIcon_mL3R{height:1.2rem;width:1.2rem}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border-color:#0000 #0000 #0000 var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.details_jW4y{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.img_wQsy{height:auto}.tableOfContents_IS5x{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.admonition_LMjb{margin-bottom:1em}.admonitionHeading_GGQ4{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family)}.admonitionHeading_GGQ4:not(:last-child){margin-bottom:.3rem}.admonitionHeading_GGQ4 code{text-transform:none}.admonitionIcon_ifdW{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_ifdW svg{fill:var(--ifm-alert-foreground-color);display:inline-block;height:1.6em;width:1.6em}.breadcrumbHomeIcon_JACu{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_k3Z9{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.mdxPageWrapper_TZLa{justify-content:center}@media (min-width:997px){.collapseSidebarButton_Cq4q,.expandButton_HpEX{background-color:var(--docusaurus-collapse-button-bg)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_X3y7,.announcementBarPlaceholder_VCrL{flex-basis:50px}.navbarSearchContainer_IP3a{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.lastUpdated__GQF{text-align:right}.tocMobile_N0YI{display:none}.collapseSidebarButton_Cq4q{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_eHqP{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_uYDu,[dir=rtl] .collapseSidebarButtonIcon_eHqP{transform:rotate(0)}.collapseSidebarButton_Cq4q:focus,.collapseSidebarButton_Cq4q:hover,.expandButton_HpEX:focus,.expandButton_HpEX:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_DqR3{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_vPEQ{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_vPEQ{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_qugZ{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_oDHW{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_eLdD{padding-top:0}.sidebarHidden_Jvsw{opacity:0;visibility:hidden}.sidebarLogo_IZVG{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_IZVG img{height:2rem;margin-right:.5rem}.expandButton_HpEX{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_uYDu{transform:rotate(180deg)}.docSidebarContainer_Ta75{border-right:1px solid var(--ifm-toc-border-color);-webkit-clip-path:inset(0);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_J4G2{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_fgog{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_lg0V{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_Wylw{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_DheW{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.docItemCol_nDJs{max-width:75%!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_GwZs,.footer__link-separator,.navbar__item,.tableOfContents_IS5x{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.navbarSearchContainer_IP3a{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_kAdk{padding:0 .3rem}}@media not (max-width:996px){.searchBar_RVTs.searchBarLeft_MXDe .dropdownMenu_qbY6{left:0!important;right:auto!important}}@media only screen and (max-width:996px){.searchQueryColumn_q7nx{max-width:60%!important}.searchContextColumn_oWAF{max-width:40%!important}}@media screen and (max-width:996px){.heroBanner_qdFl{padding:2rem}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}.navbar__search-input:not(:focus){width:2rem}.searchBar_RVTs .dropdownMenu_qbY6{max-width:calc(100vw - var(--ifm-navbar-padding-horizontal)*2);width:var(--search-local-modal-width-sm,340px)}.searchBarContainer_NW3z:not(.focused_OWtg) .searchClearButton_qk4g,.searchHintContainer_Pkmr{display:none}}@media screen and (max-width:576px){.searchQueryColumn_q7nx{max-width:100%!important}.searchContextColumn_oWAF{max-width:100%!important;padding-left:var(--ifm-spacing-horizontal)!important}}@media (hover:hover){.backToTopButton_SdI4:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media print{.announcementBar_w47h,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_N0YI{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_RjmQ{white-space:pre-wrap}} \ No newline at end of file diff --git a/assets/js/004649c5.46c6f850.js b/assets/js/004649c5.46c6f850.js deleted file mode 100644 index cd95adfd..00000000 --- a/assets/js/004649c5.46c6f850.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[342],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>u});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),p=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},g=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),m=p(n),g=a,u=m["".concat(l,".").concat(g)]||m[g]||d[g]||i;return n?r.createElement(u,o(o({ref:t},c),{},{components:n})):r.createElement(u,o({ref:t},c))}));function u(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=g;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[m]="string"==typeof e?e:a,o[1]=s;for(var p=2;p{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>p});var r=n(7462),a=(n(7294),n(3905));const i={sidebar_position:1},o="Grabbing Images",s={unversionedId:"building-applications/grabbing-images",id:"building-applications/grabbing-images",title:"Grabbing Images",description:"Groundlight's SDK accepts images in many popular formats, including PIL, OpenCV, and numpy arrays.",source:"@site/docs/building-applications/2-grabbing-images.md",sourceDirName:"building-applications",slug:"/building-applications/grabbing-images",permalink:"/python-sdk/docs/building-applications/grabbing-images",draft:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/building-applications/2-grabbing-images.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Sample Applications",permalink:"/python-sdk/docs/building-applications/sample-applications"},next:{title:"Working with Detectors",permalink:"/python-sdk/docs/building-applications/working-with-detectors"}},l={},p=[{value:"PIL",id:"pil",level:2},{value:"OpenCV",id:"opencv",level:2},{value:"Numpy",id:"numpy",level:2},{value:"Channel order: BGR vs RGB",id:"channel-order-bgr-vs-rgb",level:3},{value:"Framegrab",id:"framegrab",level:2}],c={toc:p},m="wrapper";function d(e){let{components:t,...i}=e;return(0,a.kt)(m,(0,r.Z)({},c,i,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"grabbing-images"},"Grabbing Images"),(0,a.kt)("p",null,"Groundlight's SDK accepts images in many popular formats, including PIL, OpenCV, and numpy arrays. "),(0,a.kt)("h2",{id:"pil"},"PIL"),(0,a.kt)("p",null,"The Groundlight SDK can accept PIL images directly in ",(0,a.kt)("inlineCode",{parentName:"p"},"submit_image_query"),". Here's an example:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-python"},'from groundlight import Groundlight\nfrom PIL import Image\n\ngl = Groundlight()\ndet = gl.get_or_create_detector(name="path-clear", query="Is the path clear?")\npil_img = Image.open("./docs/static/img/doorway.jpg")\ngl.submit_image_query(det, pil_img)\n')),(0,a.kt)("h2",{id:"opencv"},"OpenCV"),(0,a.kt)("p",null,"OpenCV is a popular image processing library, with many utilities for working with images.\nOpenCV images are stored as numpy arrays. (Note they are stored in BGR order, not RGB order, but as of Groundlight SDK v0.8 this is the expected order.)\nOpenCV's images can be send directly to ",(0,a.kt)("inlineCode",{parentName:"p"},"submit_image_query")," as follows:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-python",metastring:"notest",notest:!0},"import cv2\n\ncam = cv2.VideoCapture(0) # Initialize camera (0 is the default index)\n\n_, frame = cam.read() # Capture one frame\ngl.submit_image_query(detector, frame) # Send the frame to Groundlight\ncam.release() # Release the camera\n")),(0,a.kt)("h2",{id:"numpy"},"Numpy"),(0,a.kt)("p",null,"The Groundlight SDK can accept images as ",(0,a.kt)("inlineCode",{parentName:"p"},"numpy")," arrays. They should be in the standard HWN format in BGR color order, matching OpenCV standards.\nPixel values should be from 0-255 (not 0.0-1.0 as floats). So ",(0,a.kt)("inlineCode",{parentName:"p"},"uint8")," data type is preferable since it saves memory."),(0,a.kt)("p",null,"Here's sample code to create an 800x600 random image in numpy:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-python",metastring:"notest",notest:!0},"import numpy as np\n\nnp_img = np.random.uniform(low=0, high=255, size=(600, 800, 3)).astype(np.uint8)\n# Note: channel order is interpretted as BGR not RGB\ngl.submit_image_query(detector, np_img)\n")),(0,a.kt)("h3",{id:"channel-order-bgr-vs-rgb"},"Channel order: BGR vs RGB"),(0,a.kt)("p",null,"Groundlight expects images in BGR order, because this is standard for OpenCV, which uses numpy arrays as image storage.\n(OpenCV uses BGR because it was originally developed decades ago for compatibility with the BGR color format used by many cameras and image processing hardware at the time of its creation.)\nMost other image libraries use RGB order, so if you are using images as numpy arrays which did not originate from OpenCV you likely need to reverse the channel order before sending the images to Groundlight.\nNote this change was made in v0.8 of the Groundlight SDK - in previous versions, RGB order was expected. "),(0,a.kt)("p",null,"If you have an RGB array, you must reverse the channel order before sending it to Groundlight, like:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-python",metastring:"notest",notest:!0},"# Convert numpy image in RGB channel order to BGR order\nbgr_img = rgb_img[:, :, ::-1]\n")),(0,a.kt)("p",null,"The difference can be surprisingly subtle when red and blue get swapped. Often images just look a little off, but sometimes they look very wrong."),(0,a.kt)("p",null,"Here's an example of a natural-scene image where you might think the color balance is just off:\n",(0,a.kt)("img",{alt:"Correct color order",src:n(2e3).Z,width:"800",height:"600"}),"\n",(0,a.kt)("img",{alt:"Swapped color channels",src:n(9337).Z,width:"800",height:"600"})),(0,a.kt)("p",null,"In industrial settings, the difference can be almost impossible to detect without prior knowledge of the scene:\n",(0,a.kt)("img",{alt:"Correct color order",src:n(6033).Z,width:"1418",height:"979"}),"\n",(0,a.kt)("img",{alt:"Swapped color channels",src:n(2239).Z,width:"1418",height:"979"})),(0,a.kt)("h2",{id:"framegrab"},"Framegrab"),(0,a.kt)("p",null,"For a unified interface to many different kinds of image sources, see the ",(0,a.kt)("a",{parentName:"p",href:"https://pypi.org/project/framegrab/"},"framegrab library"),".\nFramegrab is still an early work in progress, but has many useful features for working with cameras and other image sources. Framegrab provides a single interface for many different kinds of image sources, including:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"USB cameras"),(0,a.kt)("li",{parentName:"ul"},"IP cameras"),(0,a.kt)("li",{parentName:"ul"},"Video files"),(0,a.kt)("li",{parentName:"ul"},"Image files")))}d.isMDXComponent=!0},2239:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/cnc-gripper-bgr-3f62a203a84000db8dffb8b542aa8706.jpg"},6033:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/cnc-gripper-4e667290978a62db9edcb5859e42da1b.jpg"},9337:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/michonne-bgr-b7e5ce1b0ea7a8fad1386bb13f0b13cb.jpg"},2e3:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/michonne-d62a9f110b7dab2a04b1dca75c5cf39c.jpg"}}]); \ No newline at end of file diff --git a/assets/js/004649c5.9aef1b73.js b/assets/js/004649c5.9aef1b73.js new file mode 100644 index 00000000..a6e5d312 --- /dev/null +++ b/assets/js/004649c5.9aef1b73.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[342],{7867:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>d,contentTitle:()=>t,default:()=>g,frontMatter:()=>s,metadata:()=>o,toc:()=>l});var r=i(5893),a=i(1151);const s={sidebar_position:1},t="Grabbing Images",o={id:"building-applications/grabbing-images",title:"Grabbing Images",description:"Groundlight's SDK accepts images in many popular formats, including PIL, OpenCV, and numpy arrays.",source:"@site/docs/building-applications/2-grabbing-images.md",sourceDirName:"building-applications",slug:"/building-applications/grabbing-images",permalink:"/python-sdk/docs/building-applications/grabbing-images",draft:!1,unlisted:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/building-applications/2-grabbing-images.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Sample Applications",permalink:"/python-sdk/docs/building-applications/sample-applications"},next:{title:"Working with Detectors",permalink:"/python-sdk/docs/building-applications/working-with-detectors"}},d={},l=[{value:"PIL",id:"pil",level:2},{value:"OpenCV",id:"opencv",level:2},{value:"Numpy",id:"numpy",level:2},{value:"Channel order: BGR vs RGB",id:"channel-order-bgr-vs-rgb",level:3},{value:"Framegrab",id:"framegrab",level:2}];function c(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",pre:"pre",ul:"ul",...(0,a.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"grabbing-images",children:"Grabbing Images"}),"\n",(0,r.jsx)(n.p,{children:"Groundlight's SDK accepts images in many popular formats, including PIL, OpenCV, and numpy arrays."}),"\n",(0,r.jsx)(n.h2,{id:"pil",children:"PIL"}),"\n",(0,r.jsxs)(n.p,{children:["The Groundlight SDK can accept PIL images directly in ",(0,r.jsx)(n.code,{children:"submit_image_query"}),". Here's an example:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",children:'from groundlight import Groundlight\nfrom PIL import Image\n\ngl = Groundlight()\ndet = gl.get_or_create_detector(name="path-clear", query="Is the path clear?")\npil_img = Image.open("./docs/static/img/doorway.jpg")\ngl.submit_image_query(det, pil_img)\n'})}),"\n",(0,r.jsx)(n.h2,{id:"opencv",children:"OpenCV"}),"\n",(0,r.jsxs)(n.p,{children:["OpenCV is a popular image processing library, with many utilities for working with images.\nOpenCV images are stored as numpy arrays. (Note they are stored in BGR order, not RGB order, but as of Groundlight SDK v0.8 this is the expected order.)\nOpenCV's images can be send directly to ",(0,r.jsx)(n.code,{children:"submit_image_query"})," as follows:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",metastring:"notest",children:"import cv2\n\ncam = cv2.VideoCapture(0) # Initialize camera (0 is the default index)\n\n_, frame = cam.read() # Capture one frame\ngl.submit_image_query(detector, frame) # Send the frame to Groundlight\ncam.release() # Release the camera\n"})}),"\n",(0,r.jsx)(n.h2,{id:"numpy",children:"Numpy"}),"\n",(0,r.jsxs)(n.p,{children:["The Groundlight SDK can accept images as ",(0,r.jsx)(n.code,{children:"numpy"})," arrays. They should be in the standard HWN format in BGR color order, matching OpenCV standards.\nPixel values should be from 0-255 (not 0.0-1.0 as floats). So ",(0,r.jsx)(n.code,{children:"uint8"})," data type is preferable since it saves memory."]}),"\n",(0,r.jsx)(n.p,{children:"Here's sample code to create an 800x600 random image in numpy:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",metastring:"notest",children:"import numpy as np\n\nnp_img = np.random.uniform(low=0, high=255, size=(600, 800, 3)).astype(np.uint8)\n# Note: channel order is interpretted as BGR not RGB\ngl.submit_image_query(detector, np_img)\n"})}),"\n",(0,r.jsx)(n.h3,{id:"channel-order-bgr-vs-rgb",children:"Channel order: BGR vs RGB"}),"\n",(0,r.jsx)(n.p,{children:"Groundlight expects images in BGR order, because this is standard for OpenCV, which uses numpy arrays as image storage.\n(OpenCV uses BGR because it was originally developed decades ago for compatibility with the BGR color format used by many cameras and image processing hardware at the time of its creation.)\nMost other image libraries use RGB order, so if you are using images as numpy arrays which did not originate from OpenCV you likely need to reverse the channel order before sending the images to Groundlight.\nNote this change was made in v0.8 of the Groundlight SDK - in previous versions, RGB order was expected."}),"\n",(0,r.jsx)(n.p,{children:"If you have an RGB array, you must reverse the channel order before sending it to Groundlight, like:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-python",metastring:"notest",children:"# Convert numpy image in RGB channel order to BGR order\nbgr_img = rgb_img[:, :, ::-1]\n"})}),"\n",(0,r.jsx)(n.p,{children:"The difference can be surprisingly subtle when red and blue get swapped. Often images just look a little off, but sometimes they look very wrong."}),"\n",(0,r.jsxs)(n.p,{children:["Here's an example of a natural-scene image where you might think the color balance is just off:\n",(0,r.jsx)(n.img,{alt:"Correct color order",src:i(2e3).Z+"",width:"800",height:"600"}),"\n",(0,r.jsx)(n.img,{alt:"Swapped color channels",src:i(9337).Z+"",width:"800",height:"600"})]}),"\n",(0,r.jsxs)(n.p,{children:["In industrial settings, the difference can be almost impossible to detect without prior knowledge of the scene:\n",(0,r.jsx)(n.img,{alt:"Correct color order",src:i(6033).Z+"",width:"1418",height:"979"}),"\n",(0,r.jsx)(n.img,{alt:"Swapped color channels",src:i(2239).Z+"",width:"1418",height:"979"})]}),"\n",(0,r.jsx)(n.h2,{id:"framegrab",children:"Framegrab"}),"\n",(0,r.jsxs)(n.p,{children:["For a unified interface to many different kinds of image sources, see the ",(0,r.jsx)(n.a,{href:"https://pypi.org/project/framegrab/",children:"framegrab library"}),".\nFramegrab is still an early work in progress, but has many useful features for working with cameras and other image sources. Framegrab provides a single interface for many different kinds of image sources, including:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"USB cameras"}),"\n",(0,r.jsx)(n.li,{children:"IP cameras"}),"\n",(0,r.jsx)(n.li,{children:"Video files"}),"\n",(0,r.jsx)(n.li,{children:"Image files"}),"\n"]})]})}function g(e={}){const{wrapper:n}={...(0,a.a)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},2239:(e,n,i)=>{i.d(n,{Z:()=>r});const r=i.p+"assets/images/cnc-gripper-bgr-3f62a203a84000db8dffb8b542aa8706.jpg"},6033:(e,n,i)=>{i.d(n,{Z:()=>r});const r=i.p+"assets/images/cnc-gripper-4e667290978a62db9edcb5859e42da1b.jpg"},9337:(e,n,i)=>{i.d(n,{Z:()=>r});const r=i.p+"assets/images/michonne-bgr-b7e5ce1b0ea7a8fad1386bb13f0b13cb.jpg"},2e3:(e,n,i)=>{i.d(n,{Z:()=>r});const r=i.p+"assets/images/michonne-d62a9f110b7dab2a04b1dca75c5cf39c.jpg"},1151:(e,n,i)=>{i.d(n,{Z:()=>o,a:()=>t});var r=i(7294);const a={},s=r.createContext(a);function t(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:t(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/0b4c8eac.4fbaf820.js b/assets/js/0b4c8eac.4fbaf820.js deleted file mode 100644 index d649c508..00000000 --- a/assets/js/0b4c8eac.4fbaf820.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[67],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=r.createContext({}),p=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},g=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),c=p(n),g=i,h=c["".concat(s,".").concat(g)]||c[g]||d[g]||a;return n?r.createElement(h,o(o({ref:t},u),{},{components:n})):r.createElement(h,o({ref:t},u))}));function h(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,o=new Array(a);o[0]=g;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:i,o[1]=l;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var r=n(7462),i=(n(7294),n(3905));const a={},o="Installing on Raspberry Pi",l={unversionedId:"installation/raspberry-pi",id:"installation/raspberry-pi",title:"Installing on Raspberry Pi",description:"This guide will help you install the Groundlight SDK on Raspberry Pi. The Groundlight SDK requires Python 3.7 or higher.",source:"@site/docs/installation/4-raspberry-pi.md",sourceDirName:"installation",slug:"/installation/raspberry-pi",permalink:"/python-sdk/docs/installation/raspberry-pi",draft:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/installation/4-raspberry-pi.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Installing on Windows",permalink:"/python-sdk/docs/installation/windows"},next:{title:"Installing on NVIDIA Jetson",permalink:"/python-sdk/docs/installation/nvidia-jetson"}},s={},p=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Basic Installation",id:"basic-installation",level:2},{value:"Installing Groundlight SDK",id:"installing-groundlight-sdk",level:3},{value:"Using RTSP Streams",id:"using-rtsp-streams",level:2},{value:"Sample application",id:"sample-application",level:2},{value:"Ready to go!",id:"ready-to-go",level:2}],u={toc:p},c="wrapper";function d(e){let{components:t,...n}=e;return(0,i.kt)(c,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"installing-on-raspberry-pi"},"Installing on Raspberry Pi"),(0,i.kt)("p",null,"This guide will help you install the Groundlight SDK on Raspberry Pi. The Groundlight SDK requires Python 3.7 or higher."),(0,i.kt)("h2",{id:"prerequisites"},"Prerequisites"),(0,i.kt)("p",null,"Ensure that you have the following installed on your Raspberry Pi:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Python 3.7 or higher"),(0,i.kt)("li",{parentName:"ul"},"pip (Python package installer)")),(0,i.kt)("h2",{id:"basic-installation"},"Basic Installation"),(0,i.kt)("p",null,"Assuming you have Python 3.7 or higher installed on your Raspberry Pi, you can proceed with the following steps to install or upgrade the Groundlight SDK:"),(0,i.kt)("h3",{id:"installing-groundlight-sdk"},"Installing Groundlight SDK"),(0,i.kt)("p",null,"To install the Groundlight SDK using pip, run the following command in your terminal:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"pip3 install groundlight\n")),(0,i.kt)("p",null,"An ARM-compatible version will automatically get installed. The Groundlight SDK is now installed and ready for use."),(0,i.kt)("h2",{id:"using-rtsp-streams"},"Using RTSP Streams"),(0,i.kt)("p",null,"If you have ",(0,i.kt)("inlineCode",{parentName:"p"},"docker")," installed on your Raspberry Pi, you can even just run"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"docker run groundlight/stream\n")),(0,i.kt)("p",null,"as we publish an ARM version of our streaming application to Docker Hub."),(0,i.kt)("h2",{id:"sample-application"},"Sample application"),(0,i.kt)("p",null,"For a complete end-to-end example of running on a Raspberry Pi, see ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/groundlight/raspberry-pi-door-lock"},"this GitHub repo"),"."),(0,i.kt)("h2",{id:"ready-to-go"},"Ready to go!"),(0,i.kt)("p",null,"You're now ready to start using the Groundlight SDK in your projects. For more information on using the SDK, refer to the ",(0,i.kt)("a",{parentName:"p",href:"/docs/getting-started/api-tokens"},"API Tokens")," and ",(0,i.kt)("a",{parentName:"p",href:"/docs/building-applications"},"Building Applications")," documentation pages."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0b4c8eac.8fcac91c.js b/assets/js/0b4c8eac.8fcac91c.js new file mode 100644 index 00000000..d42aeaab --- /dev/null +++ b/assets/js/0b4c8eac.8fcac91c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[67],{7495:(n,e,i)=>{i.r(e),i.d(e,{assets:()=>a,contentTitle:()=>l,default:()=>p,frontMatter:()=>s,metadata:()=>o,toc:()=>d});var t=i(5893),r=i(1151);const s={},l="Installing on Raspberry Pi",o={id:"installation/raspberry-pi",title:"Installing on Raspberry Pi",description:"This guide will help you install the Groundlight SDK on Raspberry Pi. The Groundlight SDK requires Python 3.7 or higher.",source:"@site/docs/installation/4-raspberry-pi.md",sourceDirName:"installation",slug:"/installation/raspberry-pi",permalink:"/python-sdk/docs/installation/raspberry-pi",draft:!1,unlisted:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/installation/4-raspberry-pi.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Installing on Windows",permalink:"/python-sdk/docs/installation/windows"},next:{title:"Installing on NVIDIA Jetson",permalink:"/python-sdk/docs/installation/nvidia-jetson"}},a={},d=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Basic Installation",id:"basic-installation",level:2},{value:"Installing Groundlight SDK",id:"installing-groundlight-sdk",level:3},{value:"Using RTSP Streams",id:"using-rtsp-streams",level:2},{value:"Sample application",id:"sample-application",level:2},{value:"Ready to go!",id:"ready-to-go",level:2}];function h(n){const e={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...n.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(e.h1,{id:"installing-on-raspberry-pi",children:"Installing on Raspberry Pi"}),"\n",(0,t.jsx)(e.p,{children:"This guide will help you install the Groundlight SDK on Raspberry Pi. The Groundlight SDK requires Python 3.7 or higher."}),"\n",(0,t.jsx)(e.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,t.jsx)(e.p,{children:"Ensure that you have the following installed on your Raspberry Pi:"}),"\n",(0,t.jsxs)(e.ul,{children:["\n",(0,t.jsx)(e.li,{children:"Python 3.7 or higher"}),"\n",(0,t.jsx)(e.li,{children:"pip (Python package installer)"}),"\n"]}),"\n",(0,t.jsx)(e.h2,{id:"basic-installation",children:"Basic Installation"}),"\n",(0,t.jsx)(e.p,{children:"Assuming you have Python 3.7 or higher installed on your Raspberry Pi, you can proceed with the following steps to install or upgrade the Groundlight SDK:"}),"\n",(0,t.jsx)(e.h3,{id:"installing-groundlight-sdk",children:"Installing Groundlight SDK"}),"\n",(0,t.jsx)(e.p,{children:"To install the Groundlight SDK using pip, run the following command in your terminal:"}),"\n",(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:"language-bash",children:"pip3 install groundlight\n"})}),"\n",(0,t.jsx)(e.p,{children:"An ARM-compatible version will automatically get installed. The Groundlight SDK is now installed and ready for use."}),"\n",(0,t.jsx)(e.h2,{id:"using-rtsp-streams",children:"Using RTSP Streams"}),"\n",(0,t.jsxs)(e.p,{children:["If you have ",(0,t.jsx)(e.code,{children:"docker"})," installed on your Raspberry Pi, you can even just run"]}),"\n",(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:"language-bash",children:"docker run groundlight/stream\n"})}),"\n",(0,t.jsx)(e.p,{children:"as we publish an ARM version of our streaming application to Docker Hub."}),"\n",(0,t.jsx)(e.h2,{id:"sample-application",children:"Sample application"}),"\n",(0,t.jsxs)(e.p,{children:["For a complete end-to-end example of running on a Raspberry Pi, see ",(0,t.jsx)(e.a,{href:"https://github.com/groundlight/raspberry-pi-door-lock",children:"this GitHub repo"}),"."]}),"\n",(0,t.jsx)(e.h2,{id:"ready-to-go",children:"Ready to go!"}),"\n",(0,t.jsxs)(e.p,{children:["You're now ready to start using the Groundlight SDK in your projects. For more information on using the SDK, refer to the ",(0,t.jsx)(e.a,{href:"/docs/getting-started/api-tokens",children:"API Tokens"})," and ",(0,t.jsx)(e.a,{href:"/docs/building-applications",children:"Building Applications"})," documentation pages."]})]})}function p(n={}){const{wrapper:e}={...(0,r.a)(),...n.components};return e?(0,t.jsx)(e,{...n,children:(0,t.jsx)(h,{...n})}):h(n)}},1151:(n,e,i)=>{i.d(e,{Z:()=>o,a:()=>l});var t=i(7294);const r={},s=t.createContext(r);function l(n){const e=t.useContext(s);return t.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function o(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(r):n.components||r:l(n.components),t.createElement(s.Provider,{value:e},n.children)}}}]); \ No newline at end of file diff --git a/assets/js/0cd01ddf.271ec697.js b/assets/js/0cd01ddf.271ec697.js deleted file mode 100644 index 21081cba..00000000 --- a/assets/js/0cd01ddf.271ec697.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[240],{3905:(e,t,o)=>{o.d(t,{Zo:()=>c,kt:()=>h});var r=o(7294);function a(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function n(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function i(e){for(var t=1;t=0||(a[o]=e[o]);return a}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(a[o]=e[o])}return a}var l=r.createContext({}),p=function(e){var t=r.useContext(l),o=t;return e&&(o="function"==typeof e?e(t):i(i({},t),e)),o},c=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var o=e.components,a=e.mdxType,n=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),u=p(o),m=a,h=u["".concat(l,".").concat(m)]||u[m]||d[m]||n;return o?r.createElement(h,i(i({ref:t},c),{},{components:o})):r.createElement(h,i({ref:t},c))}));function h(e,t){var o=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var n=o.length,i=new Array(n);i[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[u]="string"==typeof e?e:a,i[1]=s;for(var p=2;p{o.r(t),o.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>n,metadata:()=>s,toc:()=>p});var r=o(7462),a=(o(7294),o(3905));const n={id:"esp32cam",title:"Setting up an ESP32 Camera Board",sidebar_position:1},i="No-Code IoT Deployment",s={unversionedId:"iot/esp32cam",id:"iot/esp32cam",title:"Setting up an ESP32 Camera Board",description:"Groundlight supplies a tool for no-code deployment of a detector to an ESP32 Camera board. You can find it at https://iot.groundlight.ai/espcam.",source:"@site/docs/iot/iot.md",sourceDirName:"iot",slug:"/iot/",permalink:"/python-sdk/docs/iot/",draft:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/iot/iot.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{id:"esp32cam",title:"Setting up an ESP32 Camera Board",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Monitoring Notification Server",permalink:"/python-sdk/docs/installation/monitoring-notification-server"},next:{title:"API Reference",permalink:"/python-sdk/docs/api-reference/"}},l={},p=[{value:"Easy Deployment",id:"easy-deployment",level:2},{value:"Notification Options",id:"notification-options",level:2},{value:"Multiple Supported Boards",id:"multiple-supported-boards",level:2},{value:"Source Code",id:"source-code",level:2}],c={toc:p},u="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"no-code-iot-deployment"},"No-Code IoT Deployment"),(0,a.kt)("p",null,"Groundlight supplies a tool for no-code deployment of a detector to an ESP32 Camera board. You can find it at ",(0,a.kt)("a",{parentName:"p",href:"https://iot.groundlight.ai/espcam"},"https://iot.groundlight.ai/espcam"),"."),(0,a.kt)("h2",{id:"easy-deployment"},"Easy Deployment"),(0,a.kt)("p",null,"This tool is designed to make it as easy as possible to deploy your Groundlight detector on an ESP32 Camera Board. You can deploy your detector in just a few clicks."),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Go to ",(0,a.kt)("a",{parentName:"li",href:"https://iot.groundlight.ai/espcam"},"https://iot.groundlight.ai/espcam")),(0,a.kt)("li",{parentName:"ol"},"Plug your ESP32 Camera Board into your computer with a USB cable."),(0,a.kt)("li",{parentName:"ol"},"Click through the steps to upload your detector to your ESP32 Camera Board."),(0,a.kt)("li",{parentName:"ol"},"When prompted, allow your browser access to the serial port, so that it can program the device.")),(0,a.kt)("img",{src:o(5733).Z,alt:"Dialog box in browser asking for serial port access",width:"50%"}),(0,a.kt)("p",null,"If you don't see a prompt like this, try using a current version of Chrome or another browser that supports Web Serial."),(0,a.kt)("h2",{id:"notification-options"},"Notification Options"),(0,a.kt)("p",null,"The tool supports the following notification options for your deployed detector:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Email"),(0,a.kt)("li",{parentName:"ul"},"SMS (With Twilio)"),(0,a.kt)("li",{parentName:"ul"},"Slack")),(0,a.kt)("h2",{id:"multiple-supported-boards"},"Multiple Supported Boards"),(0,a.kt)("p",null,"Tested with the following boards. Many other ESP32 boards should work as well, but may require building the firmware from source and changing the IO pin definitions."),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"M5Stack ESP32 PSRAM Timer Camera [",(0,a.kt)("a",{parentName:"li",href:"https://shop.m5stack.com/products/esp32-psram-timer-camera-ov3660"},"purchase here"),"]"),(0,a.kt)("li",{parentName:"ul"},"M5Stack ESP32 PSRAM Timer Camera X [",(0,a.kt)("a",{parentName:"li",href:"https://shop.m5stack.com/products/esp32-psram-timer-camera-x-ov3660"},"purchase here"),"]"),(0,a.kt)("li",{parentName:"ul"},"ESP32-CAM [",(0,a.kt)("a",{parentName:"li",href:"https://www.amazon.com/s?k=ESP32-CAM&i=electronics"},"purchase here"),"]"),(0,a.kt)("li",{parentName:"ul"},"SeeedStudio ESP32S3 Sense [",(0,a.kt)("a",{parentName:"li",href:"https://www.seeedstudio.com/XIAO-ESP32S3-Sense-p-5639.html"},"purchase here"),"]")),(0,a.kt)("img",{src:o(4575).Z,alt:"Example banner",width:"25%"}),(0,a.kt)("img",{src:o(2393).Z,alt:"Example banner",width:"25%"}),(0,a.kt)("img",{src:o(3546).Z,alt:"Example banner",width:"25%"}),(0,a.kt)("img",{src:o(369).Z,alt:"Example banner",width:"25%"}),(0,a.kt)("h2",{id:"source-code"},"Source Code"),(0,a.kt)("p",null,"The source code is written as an Arduino-based PlatformIO project for ESP32, and is available on GitHub at ",(0,a.kt)("a",{parentName:"p",href:"https://github.com/groundlight/esp32cam"},"https://github.com/groundlight/esp32cam")),(0,a.kt)("p",null,"If you need assistance or have questions about integrating Groundlight with Arduino, please consider opening an issue on the GitHub repository or reaching out to our ",(0,a.kt)("a",{parentName:"p",href:"mailto:support@groundlight.ai"},"support team"),"."))}d.isMDXComponent=!0},5733:(e,t,o)=>{o.d(t,{Z:()=>r});const r=o.p+"assets/images/allow_serial_access-863da6e65d1a3e9733424aef1a7f5a6d.png"},3546:(e,t,o)=>{o.d(t,{Z:()=>r});const r=o.p+"assets/images/esp32-cam-8cfc5b14afe01eeda8d661750d2729f6.png"},4575:(e,t,o)=>{o.d(t,{Z:()=>r});const r=o.p+"assets/images/m5stack_timer_camera-17dc3c94bb9f53e45029ece01a46c9a3.png"},2393:(e,t,o)=>{o.d(t,{Z:()=>r});const r=o.p+"assets/images/m5stack_timer_camera_x-d646fcd94513041300a46cb8a8a0094e.png"},369:(e,t,o)=>{o.d(t,{Z:()=>r});const r=o.p+"assets/images/xiao-esp32s3-sense-97553deefbc4483ae862271d405defa7.png"}}]); \ No newline at end of file diff --git a/assets/js/0cd01ddf.65917e73.js b/assets/js/0cd01ddf.65917e73.js new file mode 100644 index 00000000..e174e6b6 --- /dev/null +++ b/assets/js/0cd01ddf.65917e73.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[240],{4919:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>d,contentTitle:()=>r,default:()=>p,frontMatter:()=>n,metadata:()=>a,toc:()=>c});var i=o(5893),s=o(1151);const n={id:"esp32cam",title:"Setting up an ESP32 Camera Board",sidebar_position:1},r="No-Code IoT Deployment",a={id:"iot/esp32cam",title:"Setting up an ESP32 Camera Board",description:"Groundlight supplies a tool for no-code deployment of a detector to an ESP32 Camera board. You can find it at https://iot.groundlight.ai/espcam.",source:"@site/docs/iot/iot.md",sourceDirName:"iot",slug:"/iot/",permalink:"/python-sdk/docs/iot/",draft:!1,unlisted:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/iot/iot.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{id:"esp32cam",title:"Setting up an ESP32 Camera Board",sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Monitoring Notification Server",permalink:"/python-sdk/docs/installation/monitoring-notification-server"},next:{title:"API Reference",permalink:"/python-sdk/docs/api-reference/"}},d={},c=[{value:"Easy Deployment",id:"easy-deployment",level:2},{value:"Notification Options",id:"notification-options",level:2},{value:"Multiple Supported Boards",id:"multiple-supported-boards",level:2},{value:"Source Code",id:"source-code",level:2}];function l(e){const t={a:"a",h1:"h1",h2:"h2",li:"li",ol:"ol",p:"p",ul:"ul",...(0,s.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h1,{id:"no-code-iot-deployment",children:"No-Code IoT Deployment"}),"\n",(0,i.jsxs)(t.p,{children:["Groundlight supplies a tool for no-code deployment of a detector to an ESP32 Camera board. You can find it at ",(0,i.jsx)(t.a,{href:"https://iot.groundlight.ai/espcam",children:"https://iot.groundlight.ai/espcam"}),"."]}),"\n",(0,i.jsx)(t.h2,{id:"easy-deployment",children:"Easy Deployment"}),"\n",(0,i.jsx)(t.p,{children:"This tool is designed to make it as easy as possible to deploy your Groundlight detector on an ESP32 Camera Board. You can deploy your detector in just a few clicks."}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsxs)(t.li,{children:["Go to ",(0,i.jsx)(t.a,{href:"https://iot.groundlight.ai/espcam",children:"https://iot.groundlight.ai/espcam"})]}),"\n",(0,i.jsx)(t.li,{children:"Plug your ESP32 Camera Board into your computer with a USB cable."}),"\n",(0,i.jsx)(t.li,{children:"Click through the steps to upload your detector to your ESP32 Camera Board."}),"\n",(0,i.jsx)(t.li,{children:"When prompted, allow your browser access to the serial port, so that it can program the device."}),"\n"]}),"\n",(0,i.jsx)("img",{src:o(5733).Z,alt:"Dialog box in browser asking for serial port access",width:"50%"}),"\n",(0,i.jsx)(t.p,{children:"If you don't see a prompt like this, try using a current version of Chrome or another browser that supports Web Serial."}),"\n",(0,i.jsx)(t.h2,{id:"notification-options",children:"Notification Options"}),"\n",(0,i.jsx)(t.p,{children:"The tool supports the following notification options for your deployed detector:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"Email"}),"\n",(0,i.jsx)(t.li,{children:"SMS (With Twilio)"}),"\n",(0,i.jsx)(t.li,{children:"Slack"}),"\n"]}),"\n",(0,i.jsx)(t.h2,{id:"multiple-supported-boards",children:"Multiple Supported Boards"}),"\n",(0,i.jsx)(t.p,{children:"Tested with the following boards. Many other ESP32 boards should work as well, but may require building the firmware from source and changing the IO pin definitions."}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["M5Stack ESP32 PSRAM Timer Camera [",(0,i.jsx)(t.a,{href:"https://shop.m5stack.com/products/esp32-psram-timer-camera-ov3660",children:"purchase here"}),"]"]}),"\n",(0,i.jsxs)(t.li,{children:["M5Stack ESP32 PSRAM Timer Camera X [",(0,i.jsx)(t.a,{href:"https://shop.m5stack.com/products/esp32-psram-timer-camera-x-ov3660",children:"purchase here"}),"]"]}),"\n",(0,i.jsxs)(t.li,{children:["ESP32-CAM [",(0,i.jsx)(t.a,{href:"https://www.amazon.com/s?k=ESP32-CAM&i=electronics",children:"purchase here"}),"]"]}),"\n",(0,i.jsxs)(t.li,{children:["SeeedStudio ESP32S3 Sense [",(0,i.jsx)(t.a,{href:"https://www.seeedstudio.com/XIAO-ESP32S3-Sense-p-5639.html",children:"purchase here"}),"]"]}),"\n"]}),"\n",(0,i.jsx)("img",{src:o(4575).Z,alt:"Example banner",width:"25%"}),"\n",(0,i.jsx)("img",{src:o(2393).Z,alt:"Example banner",width:"25%"}),"\n",(0,i.jsx)("img",{src:o(3546).Z,alt:"Example banner",width:"25%"}),"\n",(0,i.jsx)("img",{src:o(369).Z,alt:"Example banner",width:"25%"}),"\n",(0,i.jsx)(t.h2,{id:"source-code",children:"Source Code"}),"\n",(0,i.jsxs)(t.p,{children:["The source code is written as an Arduino-based PlatformIO project for ESP32, and is available on GitHub at ",(0,i.jsx)(t.a,{href:"https://github.com/groundlight/esp32cam",children:"https://github.com/groundlight/esp32cam"})]}),"\n",(0,i.jsxs)(t.p,{children:["If you need assistance or have questions about integrating Groundlight with Arduino, please consider opening an issue on the GitHub repository or reaching out to our ",(0,i.jsx)(t.a,{href:"mailto:support@groundlight.ai",children:"support team"}),"."]})]})}function p(e={}){const{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},5733:(e,t,o)=>{o.d(t,{Z:()=>i});const i=o.p+"assets/images/allow_serial_access-863da6e65d1a3e9733424aef1a7f5a6d.png"},3546:(e,t,o)=>{o.d(t,{Z:()=>i});const i=o.p+"assets/images/esp32-cam-8cfc5b14afe01eeda8d661750d2729f6.png"},4575:(e,t,o)=>{o.d(t,{Z:()=>i});const i=o.p+"assets/images/m5stack_timer_camera-17dc3c94bb9f53e45029ece01a46c9a3.png"},2393:(e,t,o)=>{o.d(t,{Z:()=>i});const i=o.p+"assets/images/m5stack_timer_camera_x-d646fcd94513041300a46cb8a8a0094e.png"},369:(e,t,o)=>{o.d(t,{Z:()=>i});const i=o.p+"assets/images/xiao-esp32s3-sense-97553deefbc4483ae862271d405defa7.png"},1151:(e,t,o)=>{o.d(t,{Z:()=>a,a:()=>r});var i=o(7294);const s={},n=i.createContext(s);function r(e){const t=i.useContext(n);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),i.createElement(n.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/0fd99c0f.123688df.js b/assets/js/0fd99c0f.123688df.js new file mode 100644 index 00000000..ba11fd7d --- /dev/null +++ b/assets/js/0fd99c0f.123688df.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[136],{5917:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>c,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var r=i(5893),n=i(1151);const o={sidebar_position:2},s="Working with Detectors",a={id:"building-applications/working-with-detectors",title:"Working with Detectors",description:"Explicitly create a new detector",source:"@site/docs/building-applications/3-working-with-detectors.md",sourceDirName:"building-applications",slug:"/building-applications/working-with-detectors",permalink:"/python-sdk/docs/building-applications/working-with-detectors",draft:!1,unlisted:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/building-applications/3-working-with-detectors.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Grabbing Images",permalink:"/python-sdk/docs/building-applications/grabbing-images"},next:{title:"Confidence Levels",permalink:"/python-sdk/docs/building-applications/managing-confidence"}},l={},d=[{value:"Explicitly create a new detector",id:"explicitly-create-a-new-detector",level:3},{value:"Retrieve an existing detector",id:"retrieve-an-existing-detector",level:3},{value:"List your detectors",id:"list-your-detectors",level:3},{value:"Retrieve an image query",id:"retrieve-an-image-query",level:3},{value:"List your previous image queries",id:"list-your-previous-image-queries",level:3},{value:"Adding labels to existing image queries",id:"adding-labels-to-existing-image-queries",level:3}];function g(e){const t={code:"code",h1:"h1",h3:"h3",p:"p",pre:"pre",...(0,n.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h1,{id:"working-with-detectors",children:"Working with Detectors"}),"\n",(0,r.jsx)(t.h3,{id:"explicitly-create-a-new-detector",children:"Explicitly create a new detector"}),"\n",(0,r.jsxs)(t.p,{children:["Typically you'll use the ",(0,r.jsx)(t.code,{children:"get_or_create_detector(name: str, query: str)"})," method to find an existing detector you've already created with the same name, or create a new one if it doesn't exists. But if you'd like to force creating a new detector you can also use the ",(0,r.jsx)(t.code,{children:"create_detector(name: str, query: str)"})," method"]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-python",metastring:"notest",children:'from groundlight import Groundlight\n\ngl = Groundlight()\n# highlight-start\ndetector = gl.create_detector(name="your_detector_name", query="is this what we want to see?")\n# highlight-end\n'})}),"\n",(0,r.jsx)(t.h3,{id:"retrieve-an-existing-detector",children:"Retrieve an existing detector"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-python",metastring:"notest",children:'from groundlight import Groundlight\n\ngl = Groundlight()\n# highlight-start\ndetector = gl.get_detector(id="YOUR_DETECTOR_ID")\n# highlight-end\n'})}),"\n",(0,r.jsx)(t.h3,{id:"list-your-detectors",children:"List your detectors"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-python",children:"from groundlight import Groundlight\n\ngl = Groundlight()\n# highlight-start\n# Defaults to 10 results per page\ndetectors = gl.list_detectors()\n\n# Pagination: 1st page of 5 results per page\ndetectors = gl.list_detectors(page=1, page_size=5)\n# highlight-end\n"})}),"\n",(0,r.jsx)(t.h3,{id:"retrieve-an-image-query",children:"Retrieve an image query"}),"\n",(0,r.jsxs)(t.p,{children:["In practice, you may want to check for a new result on your query. For example, after a cloud reviewer labels your query. For example, you can use the ",(0,r.jsx)(t.code,{children:"image_query.id"})," after the above ",(0,r.jsx)(t.code,{children:"submit_image_query()"})," call."]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-python",metastring:"notest",children:'from groundlight import Groundlight\n\ngl = Groundlight()\n# highlight-start\nimage_query = gl.get_image_query(id="iq_YOUR_IMAGE_QUERY_ID")\n# highlight-end\n'})}),"\n",(0,r.jsx)(t.h3,{id:"list-your-previous-image-queries",children:"List your previous image queries"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-python",children:"from groundlight import Groundlight\n\ngl = Groundlight()\n# highlight-start\n# Defaults to 10 results per page\nimage_queries = gl.list_image_queries()\n\n# Pagination: 1st page of 5 results per page\nimage_queries = gl.list_image_queries(page=1, page_size=5)\n# highlight-end\n"})}),"\n",(0,r.jsx)(t.h3,{id:"adding-labels-to-existing-image-queries",children:"Adding labels to existing image queries"}),"\n",(0,r.jsxs)(t.p,{children:["Groundlight lets you start using models by making queries against your very first image, but there are a few situations where you might either have an existing dataset, or you'd like to handle the escalation response programatically in your own code but still include the label to get better responses in the future. With your ",(0,r.jsx)(t.code,{children:"image_query"})," from either ",(0,r.jsx)(t.code,{children:"submit_image_query()"})," or ",(0,r.jsx)(t.code,{children:"get_image_query()"})," you can add the label directly. Note that if the query is already in the escalation queue due to low ML confidence or audit thresholds, it may also receive labels from another source."]}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-python",children:'from groundlight import Groundlight\nfrom PIL import Image\nimport requests\n\ngl = Groundlight()\nd = gl.get_or_create_detector(name="doorway", query="Is the doorway open?")\nimage_url= "https://images.selfstorage.com/large-compress/2174925f24362c479b2.jpg"\nimage = Image.open(requests.get(image_url, stream=True).raw)\nimage_query = gl.submit_image_query(detector=d, image=image)\n# highlight-start\ngl.add_label(image_query, \'YES\') # or \'NO\'\n# highlight-end\n'})}),"\n",(0,r.jsxs)(t.p,{children:["The only valid labels at this time are ",(0,r.jsx)(t.code,{children:"'YES'"})," and ",(0,r.jsx)(t.code,{children:"'NO'"}),"."]})]})}function c(e={}){const{wrapper:t}={...(0,n.a)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(g,{...e})}):g(e)}},1151:(e,t,i)=>{i.d(t,{Z:()=>a,a:()=>s});var r=i(7294);const n={},o=r.createContext(n);function s(e){const t=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:s(e.components),r.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/0fd99c0f.3b605a77.js b/assets/js/0fd99c0f.3b605a77.js deleted file mode 100644 index 204dd074..00000000 --- a/assets/js/0fd99c0f.3b605a77.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[136],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>m});var i=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function o(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=i.createContext({}),g=function(e){var t=i.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},u=function(e){var t=g(e.components);return i.createElement(s.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},p=i.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=g(r),p=n,m=d["".concat(s,".").concat(p)]||d[p]||c[p]||a;return r?i.createElement(m,o(o({ref:t},u),{},{components:r})):i.createElement(m,o({ref:t},u))}));function m(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,o=new Array(a);o[0]=p;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[d]="string"==typeof e?e:n,o[1]=l;for(var g=2;g{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>c,frontMatter:()=>a,metadata:()=>l,toc:()=>g});var i=r(7462),n=(r(7294),r(3905));const a={sidebar_position:2},o="Working with Detectors",l={unversionedId:"building-applications/working-with-detectors",id:"building-applications/working-with-detectors",title:"Working with Detectors",description:"Explicitly create a new detector",source:"@site/docs/building-applications/3-working-with-detectors.md",sourceDirName:"building-applications",slug:"/building-applications/working-with-detectors",permalink:"/python-sdk/docs/building-applications/working-with-detectors",draft:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/building-applications/3-working-with-detectors.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Grabbing Images",permalink:"/python-sdk/docs/building-applications/grabbing-images"},next:{title:"Confidence Levels",permalink:"/python-sdk/docs/building-applications/managing-confidence"}},s={},g=[{value:"Explicitly create a new detector",id:"explicitly-create-a-new-detector",level:3},{value:"Retrieve an existing detector",id:"retrieve-an-existing-detector",level:3},{value:"List your detectors",id:"list-your-detectors",level:3},{value:"Retrieve an image query",id:"retrieve-an-image-query",level:3},{value:"List your previous image queries",id:"list-your-previous-image-queries",level:3},{value:"Adding labels to existing image queries",id:"adding-labels-to-existing-image-queries",level:3}],u={toc:g},d="wrapper";function c(e){let{components:t,...r}=e;return(0,n.kt)(d,(0,i.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"working-with-detectors"},"Working with Detectors"),(0,n.kt)("h3",{id:"explicitly-create-a-new-detector"},"Explicitly create a new detector"),(0,n.kt)("p",null,"Typically you'll use the ",(0,n.kt)("inlineCode",{parentName:"p"},"get_or_create_detector(name: str, query: str)")," method to find an existing detector you've already created with the same name, or create a new one if it doesn't exists. But if you'd like to force creating a new detector you can also use the ",(0,n.kt)("inlineCode",{parentName:"p"},"create_detector(name: str, query: str)")," method"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-python",metastring:"notest",notest:!0},'from groundlight import Groundlight\n\ngl = Groundlight()\n# highlight-start\ndetector = gl.create_detector(name="your_detector_name", query="is this what we want to see?")\n# highlight-end\n')),(0,n.kt)("h3",{id:"retrieve-an-existing-detector"},"Retrieve an existing detector"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-python",metastring:"notest",notest:!0},'from groundlight import Groundlight\n\ngl = Groundlight()\n# highlight-start\ndetector = gl.get_detector(id="YOUR_DETECTOR_ID")\n# highlight-end\n')),(0,n.kt)("h3",{id:"list-your-detectors"},"List your detectors"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-python"},"from groundlight import Groundlight\n\ngl = Groundlight()\n# highlight-start\n# Defaults to 10 results per page\ndetectors = gl.list_detectors()\n\n# Pagination: 1st page of 5 results per page\ndetectors = gl.list_detectors(page=1, page_size=5)\n# highlight-end\n")),(0,n.kt)("h3",{id:"retrieve-an-image-query"},"Retrieve an image query"),(0,n.kt)("p",null,"In practice, you may want to check for a new result on your query. For example, after a cloud reviewer labels your query. For example, you can use the ",(0,n.kt)("inlineCode",{parentName:"p"},"image_query.id")," after the above ",(0,n.kt)("inlineCode",{parentName:"p"},"submit_image_query()")," call."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-python",metastring:"notest",notest:!0},'from groundlight import Groundlight\n\ngl = Groundlight()\n# highlight-start\nimage_query = gl.get_image_query(id="iq_YOUR_IMAGE_QUERY_ID")\n# highlight-end\n')),(0,n.kt)("h3",{id:"list-your-previous-image-queries"},"List your previous image queries"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-python"},"from groundlight import Groundlight\n\ngl = Groundlight()\n# highlight-start\n# Defaults to 10 results per page\nimage_queries = gl.list_image_queries()\n\n# Pagination: 1st page of 5 results per page\nimage_queries = gl.list_image_queries(page=1, page_size=5)\n# highlight-end\n")),(0,n.kt)("h3",{id:"adding-labels-to-existing-image-queries"},"Adding labels to existing image queries"),(0,n.kt)("p",null,"Groundlight lets you start using models by making queries against your very first image, but there are a few situations where you might either have an existing dataset, or you'd like to handle the escalation response programatically in your own code but still include the label to get better responses in the future. With your ",(0,n.kt)("inlineCode",{parentName:"p"},"image_query")," from either ",(0,n.kt)("inlineCode",{parentName:"p"},"submit_image_query()")," or ",(0,n.kt)("inlineCode",{parentName:"p"},"get_image_query()")," you can add the label directly. Note that if the query is already in the escalation queue due to low ML confidence or audit thresholds, it may also receive labels from another source."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-python"},'from groundlight import Groundlight\nfrom PIL import Image\nimport requests\n\ngl = Groundlight()\nd = gl.get_or_create_detector(name="doorway", query="Is the doorway open?")\nimage_url= "https://images.selfstorage.com/large-compress/2174925f24362c479b2.jpg"\nimage = Image.open(requests.get(image_url, stream=True).raw)\nimage_query = gl.submit_image_query(detector=d, image=image)\n# highlight-start\ngl.add_label(image_query, \'YES\') # or \'NO\'\n# highlight-end\n')),(0,n.kt)("p",null,"The only valid labels at this time are ",(0,n.kt)("inlineCode",{parentName:"p"},"'YES'")," and ",(0,n.kt)("inlineCode",{parentName:"p"},"'NO'"),"."))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/14fdb7e5.320aeedf.js b/assets/js/14fdb7e5.320aeedf.js new file mode 100644 index 00000000..93646d21 --- /dev/null +++ b/assets/js/14fdb7e5.320aeedf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[355],{1110:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>u,frontMatter:()=>a,metadata:()=>o,toc:()=>c});var i=t(5893),r=t(1151);const a={},s="A Serious Example: Retail Analytics",o={id:"getting-started/retail-analytics",title:"A Serious Example: Retail Analytics",description:"Tracking utilization of a customer service counter",source:"@site/docs/getting-started/3-retail-analytics.md",sourceDirName:"getting-started",slug:"/getting-started/retail-analytics",permalink:"/python-sdk/docs/getting-started/retail-analytics",draft:!1,unlisted:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/getting-started/3-retail-analytics.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Writing Queries",permalink:"/python-sdk/docs/getting-started/writing-queries"},next:{title:"A Fun Example: Dog-on-Couch Detector",permalink:"/python-sdk/docs/getting-started/dog-on-couch"}},l={},c=[{value:"Tracking utilization of a customer service counter",id:"tracking-utilization-of-a-customer-service-counter",level:2},{value:"Requirements",id:"requirements",level:2},{value:"Installation",id:"installation",level:2},{value:"Creating the Application",id:"creating-the-application",level:2}];function d(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"a-serious-example-retail-analytics",children:"A Serious Example: Retail Analytics"}),"\n",(0,i.jsx)(n.h2,{id:"tracking-utilization-of-a-customer-service-counter",children:"Tracking utilization of a customer service counter"}),"\n",(0,i.jsx)(n.p,{children:"This example demonstrates the application of Groundlight to a retail analytics solution, which monitors the usage of a service counter by customers throughout the day. The application creates a detector to identify when the service desk is being utilized by a customer. It checks the detector every minute, and once an hour, it prints out a summary of the percentage of time that the service counter is in use. At the end of the day, it emails the daily log."}),"\n",(0,i.jsx)(n.p,{children:"This retail analytics application can be beneficial in various ways:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Staff allocation and scheduling:"})," By analyzing the usage patterns of the service counter, store managers can optimize staff allocation and scheduling, ensuring that enough employees are available during peak hours and reducing wait times for customers."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Identifying trends:"})," The application can help identify trends in customer behavior, such as busier times of the day or specific days of the week with higher traffic. This information can be used to plan targeted marketing campaigns or promotions to increase sales and customer engagement."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Improving store layout:"})," Understanding when and how often customers use the service counter can provide insights into the effectiveness of the store's layout. Retailers can use this information to make data-driven decisions about rearranging the store layout to encourage customers to visit the service counter or explore other areas of the store."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Customer satisfaction:"})," By monitoring the usage of the service counter and proactively addressing long wait times or crowded areas, retailers can improve customer satisfaction and loyalty. A positive customer experience can lead to increased sales and return visits."]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"To implement this retail analytics solution, a store would need to install a supported camera near the service counter, ensuring a clear view of the area. The camera would then be connected to a computer running the Groundlight-based application. Store managers would receive hourly summaries of the service counter usage and a daily log via email, enabling them to make informed decisions to improve store operations and customer experience."}),"\n",(0,i.jsx)(n.h2,{id:"requirements",children:"Requirements"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"/docs/installation/",children:"Groundlight SDK"})," with Python 3.7 or higher"]}),"\n",(0,i.jsx)(n.li,{children:"A supported USB or network-connected camera"}),"\n",(0,i.jsx)(n.li,{children:"An email account with SMTP access to send the daily log"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"installation",children:"Installation"}),"\n",(0,i.jsx)(n.p,{children:"Ensure you have Python 3.7 or higher installed, and then install the Groundlight SDK, OpenCV library, and other required libraries:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"pip install groundlight opencv-python pillow\n"})}),"\n",(0,i.jsx)(n.h2,{id:"creating-the-application",children:"Creating the Application"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["First, log in to the ",(0,i.jsx)(n.a,{href:"https://app.groundlight.ai",children:"Groundlight application"})," and get an ",(0,i.jsx)(n.a,{href:"api-tokens",children:"API Token"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Next, we'll write the Python script for the application. Import the required libraries:"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-python",metastring:"notest",children:"import time\nimport cv2\nimport smtplib\nfrom groundlight import Groundlight\nfrom PIL import Image\nfrom datetime import datetime, timedelta\nfrom email.mime.multipart import MIMEMultipart\nfrom email.mime.text import MIMEText\n"})}),"\n",(0,i.jsxs)(n.ol,{start:"3",children:["\n",(0,i.jsx)(n.li,{children:"Define a function to capture an image from the camera using OpenCV:"}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-python",children:"def capture_image():\n cap = cv2.VideoCapture(0)\n\n ret, frame = cap.read()\n cap.release()\n\n if ret:\n # Convert to PIL image\n return Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))\n else:\n return None\n"})}),"\n",(0,i.jsxs)(n.ol,{start:"4",children:["\n",(0,i.jsx)(n.li,{children:"Define a function to send the daily log via email. You will need to customize this for your particular network environment."}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-python",children:"def send_email(sender, receiver, subject, body):\n msg = MIMEMultipart()\n msg['From'] = sender\n msg['To'] = receiver\n msg['Subject'] = subject\n msg.attach(MIMEText(body, 'plain'))\n\n server = smtplib.SMTP('smtp.example.com', 587)\n server.starttls()\n server.login(sender, \"your-password\")\n text = msg.as_string()\n server.sendmail(sender, receiver, text)\n server.quit()\n"})}),"\n",(0,i.jsxs)(n.ol,{start:"5",children:["\n",(0,i.jsx)(n.li,{children:"Define when your business's operating hours are:"}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-python",metastring:"notest",children:"START_OF_BUSINESS = 9 # e.g. 9am\nEND_OF_BUSINESS = 17 # e.g. 5pm\n\ndef is_within_business_hours():\n current_hour = datetime.now().hour\n return START_OF_BUSINESS <= current_hour < END_OF_BUSINESS\n\n"})}),"\n",(0,i.jsxs)(n.ol,{start:"6",children:["\n",(0,i.jsx)(n.li,{children:"Write the main application loop:"}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-python",metastring:"notest",children:'gl = Groundlight()\n\ndetector = gl.get_or_create_detector(\n name="counter-in-use",\n query="Is there a customer at the service counter?",\n # We can get away with relatively low confidence since we\'re aggregating\n confidence_threshold=0.8)\n\nDELAY = 60\n\nlog = []\ndaily_log = []\nnext_hourly_start = datetime.now().replace(minute=0, second=0, microsecond=0) + timedelta(hours=1)\n\nwhile True:\n if not is_within_business_hours():\n time.sleep(DELAY)\n continue\n\n image = capture_image()\n if not image:\n print("Failed to capture image")\n time.sleep(DELAY)\n continue\n\n try:\n iq = gl.submit_image_query(image=image, detector=detector, wait=60)\n except Exception as e:\n print(f"Error submitting image query: {e}")\n time.sleep(DELAY)\n continue\n\n answer = iq.result.label\n log.append(answer)\n\n if datetime.now() >= next_hourly_start:\n next_hourly_start += timedelta(hours=1)\n\n percent_in_use = (log.count("YES") / len(log)) * 100\n current_time = datetime.now().replace(hour=START_OF_BUSINESS, minute=0, second=0)\n formatted_time = current_time.strftime("%I%p") # like 3pm\n msg = f"Hourly summary for {formatted_time}: {percent_in_use:.0f}% counter in use"\n print(msg)\n daily_log.append(msg)\n log = []\n\n current_hour = datetime.now().hour\n if current_hour == END_OF_BUSINESS and not daily_log == []:\n daily_summary = "Daily summary:\\n"\n for msg in daily_log:\n daily_summary += f"{msg}\\n"\n\n print(daily_summary)\n send_email(sender="counterbot@example.com",\n receiver="manager@example.com",\n subject="Daily Service Counter Usage Log",\n body=daily_summary)\n daily_log = []\n\n time.sleep(DELAY)\n'})}),"\n",(0,i.jsxs)(n.p,{children:["This application captures an image using the ",(0,i.jsx)(n.code,{children:"capture_image"})," function, then submits it to the Groundlight API for analysis. If a customer is detected at the counter, it logs the event. Every hour, it prints a summary of the counter's usage percentage, and at the end of the day, it emails the daily log using the ",(0,i.jsx)(n.code,{children:"send_email"})," function."]}),"\n",(0,i.jsxs)(n.p,{children:["Save the script as ",(0,i.jsx)(n.code,{children:"service_counter_monitor.py"})," and run it:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"python service_counter_monitor.py\n"})})]})}function u(e={}){const{wrapper:n}={...(0,r.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>o,a:()=>s});var i=t(7294);const r={},a=i.createContext(r);function s(e){const n=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),i.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/14fdb7e5.4fcd5332.js b/assets/js/14fdb7e5.4fcd5332.js deleted file mode 100644 index bb114d50..00000000 --- a/assets/js/14fdb7e5.4fcd5332.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[355],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>g});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),p=c(n),d=a,g=p["".concat(l,".").concat(d)]||p[d]||m[d]||i;return n?r.createElement(g,o(o({ref:t},u),{},{components:n})):r.createElement(g,o({ref:t},u))}));function g(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=d;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[p]="string"==typeof e?e:a,o[1]=s;for(var c=2;c{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var r=n(7462),a=(n(7294),n(3905));const i={},o="A Serious Example: Retail Analytics",s={unversionedId:"getting-started/retail-analytics",id:"getting-started/retail-analytics",title:"A Serious Example: Retail Analytics",description:"Tracking utilization of a customer service counter",source:"@site/docs/getting-started/3-retail-analytics.md",sourceDirName:"getting-started",slug:"/getting-started/retail-analytics",permalink:"/python-sdk/docs/getting-started/retail-analytics",draft:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/getting-started/3-retail-analytics.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Writing Queries",permalink:"/python-sdk/docs/getting-started/writing-queries"},next:{title:"A Fun Example: Dog-on-Couch Detector",permalink:"/python-sdk/docs/getting-started/dog-on-couch"}},l={},c=[{value:"Tracking utilization of a customer service counter",id:"tracking-utilization-of-a-customer-service-counter",level:2},{value:"Requirements",id:"requirements",level:2},{value:"Installation",id:"installation",level:2},{value:"Creating the Application",id:"creating-the-application",level:2}],u={toc:c},p="wrapper";function m(e){let{components:t,...n}=e;return(0,a.kt)(p,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"a-serious-example-retail-analytics"},"A Serious Example: Retail Analytics"),(0,a.kt)("h2",{id:"tracking-utilization-of-a-customer-service-counter"},"Tracking utilization of a customer service counter"),(0,a.kt)("p",null,"This example demonstrates the application of Groundlight to a retail analytics solution, which monitors the usage of a service counter by customers throughout the day. The application creates a detector to identify when the service desk is being utilized by a customer. It checks the detector every minute, and once an hour, it prints out a summary of the percentage of time that the service counter is in use. At the end of the day, it emails the daily log."),(0,a.kt)("p",null,"This retail analytics application can be beneficial in various ways:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},(0,a.kt)("strong",{parentName:"p"},"Staff allocation and scheduling:")," By analyzing the usage patterns of the service counter, store managers can optimize staff allocation and scheduling, ensuring that enough employees are available during peak hours and reducing wait times for customers.")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},(0,a.kt)("strong",{parentName:"p"},"Identifying trends:")," The application can help identify trends in customer behavior, such as busier times of the day or specific days of the week with higher traffic. This information can be used to plan targeted marketing campaigns or promotions to increase sales and customer engagement.")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},(0,a.kt)("strong",{parentName:"p"},"Improving store layout:")," Understanding when and how often customers use the service counter can provide insights into the effectiveness of the store's layout. Retailers can use this information to make data-driven decisions about rearranging the store layout to encourage customers to visit the service counter or explore other areas of the store.")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},(0,a.kt)("strong",{parentName:"p"},"Customer satisfaction:")," By monitoring the usage of the service counter and proactively addressing long wait times or crowded areas, retailers can improve customer satisfaction and loyalty. A positive customer experience can lead to increased sales and return visits."))),(0,a.kt)("p",null,"To implement this retail analytics solution, a store would need to install a supported camera near the service counter, ensuring a clear view of the area. The camera would then be connected to a computer running the Groundlight-based application. Store managers would receive hourly summaries of the service counter usage and a daily log via email, enabling them to make informed decisions to improve store operations and customer experience."),(0,a.kt)("h2",{id:"requirements"},"Requirements"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/docs/installation/"},"Groundlight SDK")," with Python 3.7 or higher"),(0,a.kt)("li",{parentName:"ul"},"A supported USB or network-connected camera"),(0,a.kt)("li",{parentName:"ul"},"An email account with SMTP access to send the daily log")),(0,a.kt)("h2",{id:"installation"},"Installation"),(0,a.kt)("p",null,"Ensure you have Python 3.7 or higher installed, and then install the Groundlight SDK, OpenCV library, and other required libraries:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"pip install groundlight opencv-python pillow\n")),(0,a.kt)("h2",{id:"creating-the-application"},"Creating the Application"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},"First, log in to the ",(0,a.kt)("a",{parentName:"p",href:"https://app.groundlight.ai"},"Groundlight application")," and get an ",(0,a.kt)("a",{parentName:"p",href:"api-tokens"},"API Token"),".")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},"Next, we'll write the Python script for the application. Import the required libraries:"))),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-python",metastring:"notest",notest:!0},"import time\nimport cv2\nimport smtplib\nfrom groundlight import Groundlight\nfrom PIL import Image\nfrom datetime import datetime, timedelta\nfrom email.mime.multipart import MIMEMultipart\nfrom email.mime.text import MIMEText\n")),(0,a.kt)("ol",{start:3},(0,a.kt)("li",{parentName:"ol"},"Define a function to capture an image from the camera using OpenCV:")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-python"},"def capture_image():\n cap = cv2.VideoCapture(0)\n\n ret, frame = cap.read()\n cap.release()\n\n if ret:\n # Convert to PIL image\n return Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))\n else:\n return None\n")),(0,a.kt)("ol",{start:4},(0,a.kt)("li",{parentName:"ol"},"Define a function to send the daily log via email. You will need to customize this for your particular network environment.")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-python"},"def send_email(sender, receiver, subject, body):\n msg = MIMEMultipart()\n msg['From'] = sender\n msg['To'] = receiver\n msg['Subject'] = subject\n msg.attach(MIMEText(body, 'plain'))\n\n server = smtplib.SMTP('smtp.example.com', 587)\n server.starttls()\n server.login(sender, \"your-password\")\n text = msg.as_string()\n server.sendmail(sender, receiver, text)\n server.quit()\n")),(0,a.kt)("ol",{start:5},(0,a.kt)("li",{parentName:"ol"},"Define when your business's operating hours are:")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-python",metastring:"notest",notest:!0},"START_OF_BUSINESS = 9 # e.g. 9am\nEND_OF_BUSINESS = 17 # e.g. 5pm\n\ndef is_within_business_hours():\n current_hour = datetime.now().hour\n return START_OF_BUSINESS <= current_hour < END_OF_BUSINESS\n\n")),(0,a.kt)("ol",{start:6},(0,a.kt)("li",{parentName:"ol"},"Write the main application loop:")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-python",metastring:"notest",notest:!0},'gl = Groundlight()\n\ndetector = gl.get_or_create_detector(\n name="counter-in-use",\n query="Is there a customer at the service counter?",\n # We can get away with relatively low confidence since we\'re aggregating\n confidence_threshold=0.8)\n\nDELAY = 60\n\nlog = []\ndaily_log = []\nnext_hourly_start = datetime.now().replace(minute=0, second=0, microsecond=0) + timedelta(hours=1)\n\nwhile True:\n if not is_within_business_hours():\n time.sleep(DELAY)\n continue\n\n image = capture_image()\n if not image:\n print("Failed to capture image")\n time.sleep(DELAY)\n continue\n\n try:\n iq = gl.submit_image_query(image=image, detector=detector, wait=60)\n except Exception as e:\n print(f"Error submitting image query: {e}")\n time.sleep(DELAY)\n continue\n\n answer = iq.result.label\n log.append(answer)\n\n if datetime.now() >= next_hourly_start:\n next_hourly_start += timedelta(hours=1)\n\n percent_in_use = (log.count("YES") / len(log)) * 100\n current_time = datetime.now().replace(hour=START_OF_BUSINESS, minute=0, second=0)\n formatted_time = current_time.strftime("%I%p") # like 3pm\n msg = f"Hourly summary for {formatted_time}: {percent_in_use:.0f}% counter in use"\n print(msg)\n daily_log.append(msg)\n log = []\n\n current_hour = datetime.now().hour\n if current_hour == END_OF_BUSINESS and not daily_log == []:\n daily_summary = "Daily summary:\\n"\n for msg in daily_log:\n daily_summary += f"{msg}\\n"\n\n print(daily_summary)\n send_email(sender="counterbot@example.com",\n receiver="manager@example.com",\n subject="Daily Service Counter Usage Log",\n body=daily_summary)\n daily_log = []\n\n time.sleep(DELAY)\n')),(0,a.kt)("p",null,"This application captures an image using the ",(0,a.kt)("inlineCode",{parentName:"p"},"capture_image")," function, then submits it to the Groundlight API for analysis. If a customer is detected at the counter, it logs the event. Every hour, it prints a summary of the counter's usage percentage, and at the end of the day, it emails the daily log using the ",(0,a.kt)("inlineCode",{parentName:"p"},"send_email")," function."),(0,a.kt)("p",null,"Save the script as ",(0,a.kt)("inlineCode",{parentName:"p"},"service_counter_monitor.py")," and run it:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"python service_counter_monitor.py\n")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/17896441.0ede9f27.js b/assets/js/17896441.0ede9f27.js new file mode 100644 index 00000000..54aaddf4 --- /dev/null +++ b/assets/js/17896441.0ede9f27.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[918],{3147:(e,t,s)=>{s.r(t),s.d(t,{default:()=>be});var a=s(7294),n=s(1944),i=s(902),l=s(5893);const o=a.createContext(null);function r(e){let{children:t,content:s}=e;const n=function(e){return(0,a.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(s);return(0,l.jsx)(o.Provider,{value:n,children:t})}function d(){const e=(0,a.useContext)(o);if(null===e)throw new i.i6("DocProvider");return e}function c(){const{metadata:e,frontMatter:t,assets:s}=d();return(0,l.jsx)(n.d,{title:e.title,description:e.description,keywords:t.keywords,image:s.image??t.image})}var u=s(6010),m=s(7524),h=s(5999),p=s(9960);function b(e){const{permalink:t,title:s,subLabel:a,isNext:n}=e;return(0,l.jsxs)(p.Z,{className:(0,u.Z)("pagination-nav__link",n?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t,children:[a&&(0,l.jsx)("div",{className:"pagination-nav__sublabel",children:a}),(0,l.jsx)("div",{className:"pagination-nav__label",children:s})]})}function x(e){const{previous:t,next:s}=e;return(0,l.jsxs)("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,h.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"}),children:[t&&(0,l.jsx)(b,{...t,subLabel:(0,l.jsx)(h.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc",children:"Previous"})}),s&&(0,l.jsx)(b,{...s,subLabel:(0,l.jsx)(h.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc",children:"Next"}),isNext:!0})]})}function g(){const{metadata:e}=d();return(0,l.jsx)(x,{previous:e.previous,next:e.next})}var v=s(2263),j=s(143),f=s(5281),_=s(373),N=s(4477);const C={unreleased:function(e){let{siteTitle:t,versionMetadata:s}=e;return(0,l.jsx)(h.Z,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:(0,l.jsx)("b",{children:s.label})},children:"This is unreleased documentation for {siteTitle} {versionLabel} version."})},unmaintained:function(e){let{siteTitle:t,versionMetadata:s}=e;return(0,l.jsx)(h.Z,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:(0,l.jsx)("b",{children:s.label})},children:"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained."})}};function L(e){const t=C[e.versionMetadata.banner];return(0,l.jsx)(t,{...e})}function k(e){let{versionLabel:t,to:s,onClick:a}=e;return(0,l.jsx)(h.Z,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:(0,l.jsx)("b",{children:(0,l.jsx)(p.Z,{to:s,onClick:a,children:(0,l.jsx)(h.Z,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label",children:"latest version"})})})},children:"For up-to-date documentation, see the {latestVersionLink} ({versionLabel})."})}function Z(e){let{className:t,versionMetadata:s}=e;const{siteConfig:{title:a}}=(0,v.Z)(),{pluginId:n}=(0,j.gA)({failfast:!0}),{savePreferredVersionName:i}=(0,_.J)(n),{latestDocSuggestion:o,latestVersionSuggestion:r}=(0,j.Jo)(n),d=o??(c=r).docs.find((e=>e.id===c.mainDocId));var c;return(0,l.jsxs)("div",{className:(0,u.Z)(t,f.k.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert",children:[(0,l.jsx)("div",{children:(0,l.jsx)(L,{siteTitle:a,versionMetadata:s})}),(0,l.jsx)("div",{className:"margin-top--md",children:(0,l.jsx)(k,{versionLabel:r.label,to:d.path,onClick:()=>i(r.name)})})]})}function T(e){let{className:t}=e;const s=(0,N.E)();return s.banner?(0,l.jsx)(Z,{className:t,versionMetadata:s}):null}function U(e){let{className:t}=e;const s=(0,N.E)();return s.badge?(0,l.jsx)("span",{className:(0,u.Z)(t,f.k.docs.docVersionBadge,"badge badge--secondary"),children:(0,l.jsx)(h.Z,{id:"theme.docs.versionBadge.label",values:{versionLabel:s.label},children:"Version: {versionLabel}"})}):null}function w(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:s}=e;return(0,l.jsx)(h.Z,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:(0,l.jsx)("b",{children:(0,l.jsx)("time",{dateTime:new Date(1e3*t).toISOString(),children:s})})},children:" on {date}"})}function y(e){let{lastUpdatedBy:t}=e;return(0,l.jsx)(h.Z,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:(0,l.jsx)("b",{children:t})},children:" by {user}"})}function A(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:s,lastUpdatedBy:a}=e;return(0,l.jsxs)("span",{className:f.k.common.lastUpdated,children:[(0,l.jsx)(h.Z,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t&&s?(0,l.jsx)(w,{lastUpdatedAt:t,formattedLastUpdatedAt:s}):"",byUser:a?(0,l.jsx)(y,{lastUpdatedBy:a}):""},children:"Last updated{atDate}{byUser}"}),!1]})}const B={iconEdit:"iconEdit_NulP"};function M(e){let{className:t,...s}=e;return(0,l.jsx)("svg",{fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,u.Z)(B.iconEdit,t),"aria-hidden":"true",...s,children:(0,l.jsx)("g",{children:(0,l.jsx)("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})})})}function I(e){let{editUrl:t}=e;return(0,l.jsxs)(p.Z,{to:t,className:f.k.common.editThisPage,children:[(0,l.jsx)(M,{}),(0,l.jsx)(h.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page",children:"Edit this page"})]})}const H={tag:"tag_QDqo",tagRegular:"tagRegular_RTiO",tagWithCount:"tagWithCount_mElv"};function E(e){let{permalink:t,label:s,count:a}=e;return(0,l.jsxs)(p.Z,{href:t,className:(0,u.Z)(H.tag,a?H.tagWithCount:H.tagRegular),children:[s,a&&(0,l.jsx)("span",{children:a})]})}const D={tags:"tags_aHIs",tag:"tag_nwHU"};function P(e){let{tags:t}=e;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("b",{children:(0,l.jsx)(h.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,l.jsx)("ul",{className:(0,u.Z)(D.tags,"padding--none","margin-left--sm"),children:t.map((e=>{let{label:t,permalink:s}=e;return(0,l.jsx)("li",{className:D.tag,children:(0,l.jsx)(E,{label:t,permalink:s})},s)}))})]})}const V={lastUpdated:"lastUpdated__GQF"};function R(e){return(0,l.jsx)("div",{className:(0,u.Z)(f.k.docs.docFooterTagsRow,"row margin-bottom--sm"),children:(0,l.jsx)("div",{className:"col",children:(0,l.jsx)(P,{...e})})})}function S(e){let{editUrl:t,lastUpdatedAt:s,lastUpdatedBy:a,formattedLastUpdatedAt:n}=e;return(0,l.jsxs)("div",{className:(0,u.Z)(f.k.docs.docFooterEditMetaRow,"row"),children:[(0,l.jsx)("div",{className:"col",children:t&&(0,l.jsx)(I,{editUrl:t})}),(0,l.jsx)("div",{className:(0,u.Z)("col",V.lastUpdated),children:(s||a)&&(0,l.jsx)(A,{lastUpdatedAt:s,formattedLastUpdatedAt:n,lastUpdatedBy:a})})]})}function F(){const{metadata:e}=d(),{editUrl:t,lastUpdatedAt:s,formattedLastUpdatedAt:a,lastUpdatedBy:n,tags:i}=e,o=i.length>0,r=!!(t||s||n);return o||r?(0,l.jsxs)("footer",{className:(0,u.Z)(f.k.docs.docFooter,"docusaurus-mt-lg"),children:[o&&(0,l.jsx)(R,{tags:i}),r&&(0,l.jsx)(S,{editUrl:t,lastUpdatedAt:s,lastUpdatedBy:n,formattedLastUpdatedAt:a})]}):null}var O=s(6043),z=s(5796);const J={tocCollapsibleButton:"tocCollapsibleButton_pHwF",tocCollapsibleButtonExpanded:"tocCollapsibleButtonExpanded_IUTr"};function q(e){let{collapsed:t,...s}=e;return(0,l.jsx)("button",{type:"button",...s,className:(0,u.Z)("clean-btn",J.tocCollapsibleButton,!t&&J.tocCollapsibleButtonExpanded,s.className),children:(0,l.jsx)(h.Z,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component",children:"On this page"})})}const G={tocCollapsible:"tocCollapsible_QCOD",tocCollapsibleContent:"tocCollapsibleContent_oBBC",tocCollapsibleExpanded:"tocCollapsibleExpanded_RnCm"};function Q(e){let{toc:t,className:s,minHeadingLevel:a,maxHeadingLevel:n}=e;const{collapsed:i,toggleCollapsed:o}=(0,O.u)({initialState:!0});return(0,l.jsxs)("div",{className:(0,u.Z)(G.tocCollapsible,!i&&G.tocCollapsibleExpanded,s),children:[(0,l.jsx)(q,{collapsed:i,onClick:o}),(0,l.jsx)(O.z,{lazy:!0,className:G.tocCollapsibleContent,collapsed:i,children:(0,l.jsx)(z.Z,{toc:t,minHeadingLevel:a,maxHeadingLevel:n})})]})}const W={tocMobile:"tocMobile_N0YI"};function Y(){const{toc:e,frontMatter:t}=d();return(0,l.jsx)(Q,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:(0,u.Z)(f.k.docs.docTocMobile,W.tocMobile)})}var $=s(6306);function K(){const{toc:e,frontMatter:t}=d();return(0,l.jsx)($.Z,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:f.k.docs.docTocDesktop})}var X=s(2757),ee=s(1299);function te(e){let{children:t}=e;const s=function(){const{metadata:e,frontMatter:t,contentTitle:s}=d();return t.hide_title||void 0!==s?null:e.title}();return(0,l.jsxs)("div",{className:(0,u.Z)(f.k.docs.docMarkdown,"markdown"),children:[s&&(0,l.jsx)("header",{children:(0,l.jsx)(X.Z,{as:"h1",children:s})}),(0,l.jsx)(ee.Z,{children:t})]})}var se=s(2802),ae=s(8596),ne=s(4996);function ie(e){return(0,l.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,l.jsx)("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"})})}const le={breadcrumbHomeIcon:"breadcrumbHomeIcon_JACu"};function oe(){const e=(0,ne.Z)("/");return(0,l.jsx)("li",{className:"breadcrumbs__item",children:(0,l.jsx)(p.Z,{"aria-label":(0,h.I)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e,children:(0,l.jsx)(ie,{className:le.breadcrumbHomeIcon})})})}const re={breadcrumbsContainer:"breadcrumbsContainer_k3Z9"};function de(e){let{children:t,href:s,isLast:a}=e;const n="breadcrumbs__link";return a?(0,l.jsx)("span",{className:n,itemProp:"name",children:t}):s?(0,l.jsx)(p.Z,{className:n,href:s,itemProp:"item",children:(0,l.jsx)("span",{itemProp:"name",children:t})}):(0,l.jsx)("span",{className:n,children:t})}function ce(e){let{children:t,active:s,index:a,addMicrodata:n}=e;return(0,l.jsxs)("li",{...n&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},className:(0,u.Z)("breadcrumbs__item",{"breadcrumbs__item--active":s}),children:[t,(0,l.jsx)("meta",{itemProp:"position",content:String(a+1)})]})}function ue(){const e=(0,se.s1)(),t=(0,ae.Ns)();return e?(0,l.jsx)("nav",{className:(0,u.Z)(f.k.docs.docBreadcrumbs,re.breadcrumbsContainer),"aria-label":(0,h.I)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"}),children:(0,l.jsxs)("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList",children:[t&&(0,l.jsx)(oe,{}),e.map(((t,s)=>{const a=s===e.length-1,n="category"===t.type&&t.linkUnlisted?void 0:t.href;return(0,l.jsx)(ce,{active:a,index:s,addMicrodata:!!n,children:(0,l.jsx)(de,{href:n,isLast:a,children:t.label})},s)}))]})}):null}var me=s(6689);const he={docItemContainer:"docItemContainer_OGiL",docItemCol:"docItemCol_nDJs"};function pe(e){let{children:t}=e;const s=function(){const{frontMatter:e,toc:t}=d(),s=(0,m.i)(),a=e.hide_table_of_contents,n=!a&&t.length>0;return{hidden:a,mobile:n?(0,l.jsx)(Y,{}):void 0,desktop:!n||"desktop"!==s&&"ssr"!==s?void 0:(0,l.jsx)(K,{})}}(),{metadata:{unlisted:a}}=d();return(0,l.jsxs)("div",{className:"row",children:[(0,l.jsxs)("div",{className:(0,u.Z)("col",!s.hidden&&he.docItemCol),children:[a&&(0,l.jsx)(me.Z,{}),(0,l.jsx)(T,{}),(0,l.jsxs)("div",{className:he.docItemContainer,children:[(0,l.jsxs)("article",{children:[(0,l.jsx)(ue,{}),(0,l.jsx)(U,{}),s.mobile,(0,l.jsx)(te,{children:t}),(0,l.jsx)(F,{})]}),(0,l.jsx)(g,{})]})]}),s.desktop&&(0,l.jsx)("div",{className:"col col--3",children:s.desktop})]})}function be(e){const t=`docs-doc-id-${e.content.metadata.id}`,s=e.content;return(0,l.jsx)(r,{content:e.content,children:(0,l.jsxs)(n.FG,{className:t,children:[(0,l.jsx)(c,{}),(0,l.jsx)(pe,{children:(0,l.jsx)(s,{})})]})})}}}]); \ No newline at end of file diff --git a/assets/js/17896441.ac333cde.js b/assets/js/17896441.ac333cde.js deleted file mode 100644 index 0ab3c7f7..00000000 --- a/assets/js/17896441.ac333cde.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[918],{903:(e,t,a)=>{a.r(t),a.d(t,{default:()=>pe});var n=a(7294),l=a(1944),r=a(902);const o=n.createContext(null);function s(e){let{children:t,content:a}=e;const l=function(e){return(0,n.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(a);return n.createElement(o.Provider,{value:l},t)}function c(){const e=(0,n.useContext)(o);if(null===e)throw new r.i6("DocProvider");return e}function i(){const{metadata:e,frontMatter:t,assets:a}=c();return n.createElement(l.d,{title:e.title,description:e.description,keywords:t.keywords,image:a.image??t.image})}var d=a(6010),m=a(7524),u=a(7462),b=a(5999),p=a(9960);function E(e){const{permalink:t,title:a,subLabel:l,isNext:r}=e;return n.createElement(p.Z,{className:(0,d.Z)("pagination-nav__link",r?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t},l&&n.createElement("div",{className:"pagination-nav__sublabel"},l),n.createElement("div",{className:"pagination-nav__label"},a))}function h(e){const{previous:t,next:a}=e;return n.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,b.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages navigation",description:"The ARIA label for the docs pagination"})},t&&n.createElement(E,(0,u.Z)({},t,{subLabel:n.createElement(b.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc"},"Previous")})),a&&n.createElement(E,(0,u.Z)({},a,{subLabel:n.createElement(b.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc"},"Next"),isNext:!0})))}function v(){const{metadata:e}=c();return n.createElement(h,{previous:e.previous,next:e.next})}var g=a(2263),f=a(143),_=a(5281),N=a(373),Z=a(4477);const k={unreleased:function(e){let{siteTitle:t,versionMetadata:a}=e;return n.createElement(b.Z,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:n.createElement("b",null,a.label)}},"This is unreleased documentation for {siteTitle} {versionLabel} version.")},unmaintained:function(e){let{siteTitle:t,versionMetadata:a}=e;return n.createElement(b.Z,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:n.createElement("b",null,a.label)}},"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.")}};function C(e){const t=k[e.versionMetadata.banner];return n.createElement(t,e)}function L(e){let{versionLabel:t,to:a,onClick:l}=e;return n.createElement(b.Z,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:n.createElement("b",null,n.createElement(p.Z,{to:a,onClick:l},n.createElement(b.Z,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label"},"latest version")))}},"For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).")}function T(e){let{className:t,versionMetadata:a}=e;const{siteConfig:{title:l}}=(0,g.Z)(),{pluginId:r}=(0,f.gA)({failfast:!0}),{savePreferredVersionName:o}=(0,N.J)(r),{latestDocSuggestion:s,latestVersionSuggestion:c}=(0,f.Jo)(r),i=s??(m=c).docs.find((e=>e.id===m.mainDocId));var m;return n.createElement("div",{className:(0,d.Z)(t,_.k.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert"},n.createElement("div",null,n.createElement(C,{siteTitle:l,versionMetadata:a})),n.createElement("div",{className:"margin-top--md"},n.createElement(L,{versionLabel:c.label,to:i.path,onClick:()=>o(c.name)})))}function U(e){let{className:t}=e;const a=(0,Z.E)();return a.banner?n.createElement(T,{className:t,versionMetadata:a}):null}function w(e){let{className:t}=e;const a=(0,Z.E)();return a.badge?n.createElement("span",{className:(0,d.Z)(t,_.k.docs.docVersionBadge,"badge badge--secondary")},n.createElement(b.Z,{id:"theme.docs.versionBadge.label",values:{versionLabel:a.label}},"Version: {versionLabel}")):null}function x(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:a}=e;return n.createElement(b.Z,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:n.createElement("b",null,n.createElement("time",{dateTime:new Date(1e3*t).toISOString()},a))}}," on {date}")}function y(e){let{lastUpdatedBy:t}=e;return n.createElement(b.Z,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:n.createElement("b",null,t)}}," by {user}")}function A(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:a,lastUpdatedBy:l}=e;return n.createElement("span",{className:_.k.common.lastUpdated},n.createElement(b.Z,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t&&a?n.createElement(x,{lastUpdatedAt:t,formattedLastUpdatedAt:a}):"",byUser:l?n.createElement(y,{lastUpdatedBy:l}):""}},"Last updated{atDate}{byUser}"),!1)}const M={iconEdit:"iconEdit_Z9Sw"};function B(e){let{className:t,...a}=e;return n.createElement("svg",(0,u.Z)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,d.Z)(M.iconEdit,t),"aria-hidden":"true"},a),n.createElement("g",null,n.createElement("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})))}function I(e){let{editUrl:t}=e;return n.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener",className:_.k.common.editThisPage},n.createElement(B,null),n.createElement(b.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}const V={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};function H(e){let{permalink:t,label:a,count:l}=e;return n.createElement(p.Z,{href:t,className:(0,d.Z)(V.tag,l?V.tagWithCount:V.tagRegular)},a,l&&n.createElement("span",null,l))}const P={tags:"tags_jXut",tag:"tag_QGVx"};function D(e){let{tags:t}=e;return n.createElement(n.Fragment,null,n.createElement("b",null,n.createElement(b.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list"},"Tags:")),n.createElement("ul",{className:(0,d.Z)(P.tags,"padding--none","margin-left--sm")},t.map((e=>{let{label:t,permalink:a}=e;return n.createElement("li",{key:a,className:P.tag},n.createElement(H,{label:t,permalink:a}))}))))}const S={lastUpdated:"lastUpdated_vwxv"};function F(e){return n.createElement("div",{className:(0,d.Z)(_.k.docs.docFooterTagsRow,"row margin-bottom--sm")},n.createElement("div",{className:"col"},n.createElement(D,e)))}function R(e){let{editUrl:t,lastUpdatedAt:a,lastUpdatedBy:l,formattedLastUpdatedAt:r}=e;return n.createElement("div",{className:(0,d.Z)(_.k.docs.docFooterEditMetaRow,"row")},n.createElement("div",{className:"col"},t&&n.createElement(I,{editUrl:t})),n.createElement("div",{className:(0,d.Z)("col",S.lastUpdated)},(a||l)&&n.createElement(A,{lastUpdatedAt:a,formattedLastUpdatedAt:r,lastUpdatedBy:l})))}function z(){const{metadata:e}=c(),{editUrl:t,lastUpdatedAt:a,formattedLastUpdatedAt:l,lastUpdatedBy:r,tags:o}=e,s=o.length>0,i=!!(t||a||r);return s||i?n.createElement("footer",{className:(0,d.Z)(_.k.docs.docFooter,"docusaurus-mt-lg")},s&&n.createElement(F,{tags:o}),i&&n.createElement(R,{editUrl:t,lastUpdatedAt:a,lastUpdatedBy:r,formattedLastUpdatedAt:l})):null}var O=a(6043),j=a(3743);const q={tocCollapsibleButton:"tocCollapsibleButton_TO0P",tocCollapsibleButtonExpanded:"tocCollapsibleButtonExpanded_MG3E"};function G(e){let{collapsed:t,...a}=e;return n.createElement("button",(0,u.Z)({type:"button"},a,{className:(0,d.Z)("clean-btn",q.tocCollapsibleButton,!t&&q.tocCollapsibleButtonExpanded,a.className)}),n.createElement(b.Z,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component"},"On this page"))}const W={tocCollapsible:"tocCollapsible_ETCw",tocCollapsibleContent:"tocCollapsibleContent_vkbj",tocCollapsibleExpanded:"tocCollapsibleExpanded_sAul"};function J(e){let{toc:t,className:a,minHeadingLevel:l,maxHeadingLevel:r}=e;const{collapsed:o,toggleCollapsed:s}=(0,O.u)({initialState:!0});return n.createElement("div",{className:(0,d.Z)(W.tocCollapsible,!o&&W.tocCollapsibleExpanded,a)},n.createElement(G,{collapsed:o,onClick:s}),n.createElement(O.z,{lazy:!0,className:W.tocCollapsibleContent,collapsed:o},n.createElement(j.Z,{toc:t,minHeadingLevel:l,maxHeadingLevel:r})))}const Q={tocMobile:"tocMobile_ITEo"};function X(){const{toc:e,frontMatter:t}=c();return n.createElement(J,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:(0,d.Z)(_.k.docs.docTocMobile,Q.tocMobile)})}var Y=a(9407);function $(){const{toc:e,frontMatter:t}=c();return n.createElement(Y.Z,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:_.k.docs.docTocDesktop})}var K=a(2503),ee=a(7432);function te(e){let{children:t}=e;const a=function(){const{metadata:e,frontMatter:t,contentTitle:a}=c();return t.hide_title||void 0!==a?null:e.title}();return n.createElement("div",{className:(0,d.Z)(_.k.docs.docMarkdown,"markdown")},a&&n.createElement("header",null,n.createElement(K.Z,{as:"h1"},a)),n.createElement(ee.Z,null,t))}var ae=a(2802),ne=a(8596),le=a(4996);function re(e){return n.createElement("svg",(0,u.Z)({viewBox:"0 0 24 24"},e),n.createElement("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"}))}const oe={breadcrumbHomeIcon:"breadcrumbHomeIcon_YNFT"};function se(){const e=(0,le.Z)("/");return n.createElement("li",{className:"breadcrumbs__item"},n.createElement(p.Z,{"aria-label":(0,b.I)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e},n.createElement(re,{className:oe.breadcrumbHomeIcon})))}const ce={breadcrumbsContainer:"breadcrumbsContainer_Z_bl"};function ie(e){let{children:t,href:a,isLast:l}=e;const r="breadcrumbs__link";return l?n.createElement("span",{className:r,itemProp:"name"},t):a?n.createElement(p.Z,{className:r,href:a,itemProp:"item"},n.createElement("span",{itemProp:"name"},t)):n.createElement("span",{className:r},t)}function de(e){let{children:t,active:a,index:l,addMicrodata:r}=e;return n.createElement("li",(0,u.Z)({},r&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},{className:(0,d.Z)("breadcrumbs__item",{"breadcrumbs__item--active":a})}),t,n.createElement("meta",{itemProp:"position",content:String(l+1)}))}function me(){const e=(0,ae.s1)(),t=(0,ne.Ns)();return e?n.createElement("nav",{className:(0,d.Z)(_.k.docs.docBreadcrumbs,ce.breadcrumbsContainer),"aria-label":(0,b.I)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"})},n.createElement("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList"},t&&n.createElement(se,null),e.map(((t,a)=>{const l=a===e.length-1;return n.createElement(de,{key:a,active:l,index:a,addMicrodata:!!t.href},n.createElement(ie,{href:t.href,isLast:l},t.label))})))):null}const ue={docItemContainer:"docItemContainer_Djhp",docItemCol:"docItemCol_VOVn"};function be(e){let{children:t}=e;const a=function(){const{frontMatter:e,toc:t}=c(),a=(0,m.i)(),l=e.hide_table_of_contents,r=!l&&t.length>0;return{hidden:l,mobile:r?n.createElement(X,null):void 0,desktop:!r||"desktop"!==a&&"ssr"!==a?void 0:n.createElement($,null)}}();return n.createElement("div",{className:"row"},n.createElement("div",{className:(0,d.Z)("col",!a.hidden&&ue.docItemCol)},n.createElement(U,null),n.createElement("div",{className:ue.docItemContainer},n.createElement("article",null,n.createElement(me,null),n.createElement(w,null),a.mobile,n.createElement(te,null,t),n.createElement(z,null)),n.createElement(v,null))),a.desktop&&n.createElement("div",{className:"col col--3"},a.desktop))}function pe(e){const t=`docs-doc-id-${e.content.metadata.unversionedId}`,a=e.content;return n.createElement(s,{content:e.content},n.createElement(l.FG,{className:t},n.createElement(i,null),n.createElement(be,null,n.createElement(a,null))))}},4477:(e,t,a)=>{a.d(t,{E:()=>s,q:()=>o});var n=a(7294),l=a(902);const r=n.createContext(null);function o(e){let{children:t,version:a}=e;return n.createElement(r.Provider,{value:a},t)}function s(){const e=(0,n.useContext)(r);if(null===e)throw new l.i6("DocsVersionProvider");return e}}}]); \ No newline at end of file diff --git a/assets/js/1a4e3797.62dd5461.js b/assets/js/1a4e3797.62dd5461.js new file mode 100644 index 00000000..0cb3e0c5 --- /dev/null +++ b/assets/js/1a4e3797.62dd5461.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[920],{2027:(e,t,r)=>{r.r(t),r.d(t,{default:()=>$});var s=r(7294),a=r(2263),n=r(2758),c=r(5742),l=r(9960),o=r(5999);const u=["zero","one","two","few","many","other"];function h(e){return u.filter((t=>e.includes(t)))}const i={locale:"en",pluralForms:h(["one","other"]),select:e=>1===e?"one":"other"};function m(){const{i18n:{currentLocale:e}}=(0,a.Z)();return(0,s.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:h(t.resolvedOptions().pluralCategories),select:e=>t.select(e)}}(e)}catch(t){return console.error(`Failed to use Intl.PluralRules for locale "${e}".\nDocusaurus will fallback to the default (English) implementation.\nError: ${t.message}\n`),i}}),[e])}function d(){const e=m();return{selectMessage:(t,r)=>function(e,t,r){const s=e.split("|");if(1===s.length)return s[0];s.length>r.pluralForms.length&&console.error(`For locale=${r.locale}, a maximum of ${r.pluralForms.length} plural forms are expected (${r.pluralForms.join(",")}), but the message contains ${s.length}: ${e}`);const a=r.select(t),n=r.pluralForms.indexOf(a);return s[Math.min(n,s.length-1)]}(r,t,e)}}var p=r(6010),g=r(6550),x=r(2389);const f=function(){const e=(0,x.Z)(),t=(0,g.k6)(),r=(0,g.TH)(),{siteConfig:{baseUrl:s}}=(0,a.Z)(),n=e?new URLSearchParams(r.search):null,c=n?.get("q")||"",l=n?.get("ctx")||"",o=n?.get("version")||"",u=e=>{const t=new URLSearchParams(r.search);return e?t.set("q",e):t.delete("q"),t};return{searchValue:c,searchContext:l,searchVersion:o,updateSearchPath:e=>{const r=u(e);t.replace({search:r.toString()})},updateSearchContext:e=>{const s=new URLSearchParams(r.search);s.set("ctx",e),t.replace({search:s.toString()})},generateSearchPageLink:e=>{const t=u(e);return`${s}search?${t.toString()}`}}};var y=r(22),S=r(8202),C=r(2539),j=r(726),I=r(1073),v=r(311),w=r(3926),R=r(1029);const P={searchContextInput:"searchContextInput_mXoe",searchQueryInput:"searchQueryInput_CFBF",searchResultItem:"searchResultItem_U687",searchResultItemPath:"searchResultItemPath_uIbk",searchResultItemSummary:"searchResultItemSummary_oZHr",searchQueryColumn:"searchQueryColumn_q7nx",searchContextColumn:"searchContextColumn_oWAF"};var b=r(5893);function F(){const{siteConfig:{baseUrl:e}}=(0,a.Z)(),{selectMessage:t}=d(),{searchValue:r,searchContext:n,searchVersion:l,updateSearchPath:u,updateSearchContext:h}=f(),[i,m]=(0,s.useState)(r),[g,x]=(0,s.useState)(),[C,j]=(0,s.useState)(),I=`${e}${l}`,w=(0,s.useMemo)((()=>i?(0,o.I)({id:"theme.SearchPage.existingResultsTitle",message:'Search results for "{query}"',description:"The search page title for non-empty query"},{query:i}):(0,o.I)({id:"theme.SearchPage.emptyResultsTitle",message:"Search the documentation",description:"The search page title for empty query"})),[i]);(0,s.useEffect)((()=>{u(i),g&&(i?g(i,(e=>{j(e)})):j(void 0))}),[i,g]);const F=(0,s.useCallback)((e=>{m(e.target.value)}),[]);return(0,s.useEffect)((()=>{r&&r!==i&&m(r)}),[r]),(0,s.useEffect)((()=>{!async function(){const{wrappedIndexes:e,zhDictionary:t}=await(0,y.w)(I,n);x((()=>(0,S.v)(e,t,100)))}()}),[n,I]),(0,b.jsxs)(s.Fragment,{children:[(0,b.jsxs)(c.Z,{children:[(0,b.jsx)("meta",{property:"robots",content:"noindex, follow"}),(0,b.jsx)("title",{children:w})]}),(0,b.jsxs)("div",{className:"container margin-vert--lg",children:[(0,b.jsx)("h1",{children:w}),(0,b.jsxs)("div",{className:"row",children:[(0,b.jsx)("div",{className:(0,p.Z)("col",{[P.searchQueryColumn]:Array.isArray(R.Kc),"col--9":Array.isArray(R.Kc),"col--12":!Array.isArray(R.Kc)}),children:(0,b.jsx)("input",{type:"search",name:"q",className:P.searchQueryInput,"aria-label":"Search",onChange:F,value:i,autoComplete:"off",autoFocus:!0})}),Array.isArray(R.Kc)?(0,b.jsx)("div",{className:(0,p.Z)("col","col--3","padding-left--none",P.searchContextColumn),children:(0,b.jsxs)("select",{name:"search-context",className:P.searchContextInput,id:"context-selector",value:n,onChange:e=>h(e.target.value),children:[(0,b.jsx)("option",{value:"",children:R.pQ?(0,o.I)({id:"theme.SearchPage.searchContext.everywhere",message:"everywhere"}):""}),R.Kc.map((e=>(0,b.jsx)("option",{value:e,children:e},e)))]})}):null]}),!g&&i&&(0,b.jsx)("div",{children:(0,b.jsx)(v.Z,{})}),C&&(C.length>0?(0,b.jsx)("p",{children:t(C.length,(0,o.I)({id:"theme.SearchPage.documentsFound.plurals",message:"1 document found|{count} documents found",description:'Pluralized label for "{count} documents found". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)'},{count:C.length}))}):(0,b.jsx)("p",{children:(0,o.I)({id:"theme.SearchPage.noResultsText",message:"No documents were found",description:"The paragraph for empty search result"})})),(0,b.jsx)("section",{children:C&&C.map((e=>(0,b.jsx)(_,{searchResult:e},e.document.i)))})]})]})}function _(e){let{searchResult:{document:t,type:r,page:s,tokens:a,metadata:n}}=e;const c=0===r,o=2===r,u=(c?t.b:s.b).slice(),h=o?t.s:t.t;c||u.push(s.t);let i="";if(R.vc&&a.length>0){const e=new URLSearchParams;for(const t of a)e.append("_highlight",t);i=`?${e.toString()}`}return(0,b.jsxs)("article",{className:P.searchResultItem,children:[(0,b.jsx)("h2",{children:(0,b.jsx)(l.Z,{to:t.u+i+(t.h||""),dangerouslySetInnerHTML:{__html:o?(0,C.C)(h,a):(0,j.o)(h,(0,I.m)(n,"t"),a,100)}})}),u.length>0&&(0,b.jsx)("p",{className:P.searchResultItemPath,children:(0,w.e)(u)}),o&&(0,b.jsx)("p",{className:P.searchResultItemSummary,dangerouslySetInnerHTML:{__html:(0,j.o)(t.t,(0,I.m)(n,"t"),a,100)}})]})}const $=function(){return(0,b.jsx)(n.Z,{children:(0,b.jsx)(F,{})})}}}]); \ No newline at end of file diff --git a/assets/js/1a4e3797.9085b72e.js b/assets/js/1a4e3797.9085b72e.js deleted file mode 100644 index 3c91b3a2..00000000 --- a/assets/js/1a4e3797.9085b72e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[920],{2027:(e,t,r)=>{r.r(t),r.d(t,{default:()=>_});var a=r(7294),n=r(2263),l=r(179),s=r(5742),c=r(9960),o=r(5999);const u=["zero","one","two","few","many","other"];function m(e){return u.filter((t=>e.includes(t)))}const h={locale:"en",pluralForms:m(["one","other"]),select:e=>1===e?"one":"other"};function i(){const{i18n:{currentLocale:e}}=(0,n.Z)();return(0,a.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:m(t.resolvedOptions().pluralCategories),select:e=>t.select(e)}}(e)}catch(t){return console.error(`Failed to use Intl.PluralRules for locale "${e}".\nDocusaurus will fallback to the default (English) implementation.\nError: ${t.message}\n`),h}}),[e])}function p(){const e=i();return{selectMessage:(t,r)=>function(e,t,r){const a=e.split("|");if(1===a.length)return a[0];a.length>r.pluralForms.length&&console.error(`For locale=${r.locale}, a maximum of ${r.pluralForms.length} plural forms are expected (${r.pluralForms.join(",")}), but the message contains ${a.length}: ${e}`);const n=r.select(t),l=r.pluralForms.indexOf(n);return a[Math.min(l,a.length-1)]}(r,t,e)}}var g=r(6010),d=r(6550),f=r(412);const y=function(){const e=(0,d.k6)(),t=(0,d.TH)(),{siteConfig:{baseUrl:r}}=(0,n.Z)(),a=f.Z.canUseDOM?new URLSearchParams(t.search):null,l=a?.get("q")||"",s=a?.get("ctx")||"",c=a?.get("version")||"",o=e=>{const r=new URLSearchParams(t.search);return e?r.set("q",e):r.delete("q"),r};return{searchValue:l,searchContext:s,searchVersion:c,updateSearchPath:t=>{const r=o(t);e.replace({search:r.toString()})},updateSearchContext:r=>{const a=new URLSearchParams(t.search);a.set("ctx",r),e.replace({search:a.toString()})},generateSearchPageLink:e=>{const t=o(e);return`${r}search?${t.toString()}`}}};var E=r(22),S=r(8202),C=r(2539),I=r(726),x=r(1073),w=r(311),v=r(3926),R=r(1029);const P={searchContextInput:"searchContextInput_mXoe",searchQueryInput:"searchQueryInput_CFBF",searchResultItem:"searchResultItem_U687",searchResultItemPath:"searchResultItemPath_uIbk",searchResultItemSummary:"searchResultItemSummary_oZHr",searchQueryColumn:"searchQueryColumn_q7nx",searchContextColumn:"searchContextColumn_oWAF"};function b(){const{siteConfig:{baseUrl:e}}=(0,n.Z)(),{selectMessage:t}=p(),{searchValue:r,searchContext:l,searchVersion:c,updateSearchPath:u,updateSearchContext:m}=y(),[h,i]=(0,a.useState)(r),[d,f]=(0,a.useState)(),[C,I]=(0,a.useState)(),x=`${e}${c}`,v=(0,a.useMemo)((()=>h?(0,o.I)({id:"theme.SearchPage.existingResultsTitle",message:'Search results for "{query}"',description:"The search page title for non-empty query"},{query:h}):(0,o.I)({id:"theme.SearchPage.emptyResultsTitle",message:"Search the documentation",description:"The search page title for empty query"})),[h]);(0,a.useEffect)((()=>{u(h),d&&(h?d(h,(e=>{I(e)})):I(void 0))}),[h,d]);const b=(0,a.useCallback)((e=>{i(e.target.value)}),[]);return(0,a.useEffect)((()=>{r&&r!==h&&i(r)}),[r]),(0,a.useEffect)((()=>{!async function(){const{wrappedIndexes:e,zhDictionary:t}=await(0,E.w)(x,l);f((()=>(0,S.v)(e,t,100)))}()}),[l,x]),a.createElement(a.Fragment,null,a.createElement(s.Z,null,a.createElement("meta",{property:"robots",content:"noindex, follow"}),a.createElement("title",null,v)),a.createElement("div",{className:"container margin-vert--lg"},a.createElement("h1",null,v),a.createElement("div",{className:"row"},a.createElement("div",{className:(0,g.Z)("col",{[P.searchQueryColumn]:Array.isArray(R.Kc),"col--9":Array.isArray(R.Kc),"col--12":!Array.isArray(R.Kc)})},a.createElement("input",{type:"search",name:"q",className:P.searchQueryInput,"aria-label":"Search",onChange:b,value:h,autoComplete:"off",autoFocus:!0})),Array.isArray(R.Kc)?a.createElement("div",{className:(0,g.Z)("col","col--3","padding-left--none",P.searchContextColumn)},a.createElement("select",{name:"search-context",className:P.searchContextInput,id:"context-selector",value:l,onChange:e=>m(e.target.value)},a.createElement("option",{value:""},R.pQ?(0,o.I)({id:"theme.SearchPage.searchContext.everywhere",message:"everywhere"}):""),R.Kc.map((e=>a.createElement("option",{key:e,value:e},e))))):null),!d&&h&&a.createElement("div",null,a.createElement(w.Z,null)),C&&(C.length>0?a.createElement("p",null,t(C.length,(0,o.I)({id:"theme.SearchPage.documentsFound.plurals",message:"1 document found|{count} documents found",description:'Pluralized label for "{count} documents found". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)'},{count:C.length}))):a.createElement("p",null,(0,o.I)({id:"theme.SearchPage.noResultsText",message:"No documents were found",description:"The paragraph for empty search result"}))),a.createElement("section",null,C&&C.map((e=>a.createElement(F,{key:e.document.i,searchResult:e}))))))}function F(e){let{searchResult:{document:t,type:r,page:n,tokens:l,metadata:s}}=e;const o=0===r,u=2===r,m=(o?t.b:n.b).slice(),h=u?t.s:t.t;o||m.push(n.t);let i="";if(R.vc&&l.length>0){const e=new URLSearchParams;for(const t of l)e.append("_highlight",t);i=`?${e.toString()}`}return a.createElement("article",{className:P.searchResultItem},a.createElement("h2",null,a.createElement(c.Z,{to:t.u+i+(t.h||""),dangerouslySetInnerHTML:{__html:u?(0,C.C)(h,l):(0,I.o)(h,(0,x.m)(s,"t"),l,100)}})),m.length>0&&a.createElement("p",{className:P.searchResultItemPath},(0,v.e)(m)),u&&a.createElement("p",{className:P.searchResultItemSummary,dangerouslySetInnerHTML:{__html:(0,I.o)(t.t,(0,x.m)(s,"t"),l,100)}}))}const _=function(){return a.createElement(l.Z,null,a.createElement(b,null))}}}]); \ No newline at end of file diff --git a/assets/js/1b28ffce.14f50206.js b/assets/js/1b28ffce.14f50206.js deleted file mode 100644 index 58f61ae5..00000000 --- a/assets/js/1b28ffce.14f50206.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[518],{3905:(n,t,e)=>{e.d(t,{Zo:()=>u,kt:()=>m});var i=e(7294);function a(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}function o(n,t){var e=Object.keys(n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(n);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),e.push.apply(e,i)}return e}function r(n){for(var t=1;t=0||(a[e]=n[e]);return a}(n,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(n,e)&&(a[e]=n[e])}return a}var l=i.createContext({}),c=function(n){var t=i.useContext(l),e=t;return n&&(e="function"==typeof n?n(t):r(r({},t),n)),e},u=function(n){var t=c(n.components);return i.createElement(l.Provider,{value:t},n.children)},d="mdxType",p={inlineCode:"code",wrapper:function(n){var t=n.children;return i.createElement(i.Fragment,{},t)}},g=i.forwardRef((function(n,t){var e=n.components,a=n.mdxType,o=n.originalType,l=n.parentName,u=s(n,["components","mdxType","originalType","parentName"]),d=c(e),g=a,m=d["".concat(l,".").concat(g)]||d[g]||p[g]||o;return e?i.createElement(m,r(r({ref:t},u),{},{components:e})):i.createElement(m,r({ref:t},u))}));function m(n,t){var e=arguments,a=t&&t.mdxType;if("string"==typeof n||a){var o=e.length,r=new Array(o);r[0]=g;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=n,s[d]="string"==typeof n?n:a,r[1]=s;for(var c=2;c{e.r(t),e.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>p,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var i=e(7462),a=(e(7294),e(3905));const o={sidebar_position:7},r="Industrial and Manufacturing Applications",s={unversionedId:"building-applications/industrial",id:"building-applications/industrial",title:"Industrial and Manufacturing Applications",description:"Modern natural language-based computer vision is transforming industrial and manufacturing applications by enabling more intuitive interaction with automation systems. Groundlight offers cutting-edge computer vision technology that can be seamlessly integrated into various industrial processes, enhancing efficiency, productivity, and quality control.",source:"@site/docs/building-applications/8-industrial.md",sourceDirName:"building-applications",slug:"/building-applications/industrial",permalink:"/python-sdk/docs/building-applications/industrial",draft:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/building-applications/8-industrial.md",tags:[],version:"current",sidebarPosition:7,frontMatter:{sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Using Groundlight on the Edge",permalink:"/python-sdk/docs/building-applications/edge"},next:{title:"Installation",permalink:"/python-sdk/docs/installation/"}},l={},c=[{value:"Machine Tending",id:"machine-tending",level:2},{value:"Process Automation",id:"process-automation",level:2},{value:"Quality Control",id:"quality-control",level:2},{value:"Integration with Cobots and CNC Machines",id:"integration-with-cobots-and-cnc-machines",level:2}],u={toc:c},d="wrapper";function p(n){let{components:t,...e}=n;return(0,a.kt)(d,(0,i.Z)({},u,e,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"industrial-and-manufacturing-applications"},"Industrial and Manufacturing Applications"),(0,a.kt)("p",null,"Modern natural language-based computer vision is transforming industrial and manufacturing applications by enabling more intuitive interaction with automation systems. Groundlight offers cutting-edge computer vision technology that can be seamlessly integrated into various industrial processes, enhancing efficiency, productivity, and quality control."),(0,a.kt)("h2",{id:"machine-tending"},"Machine Tending"),(0,a.kt)("p",null,"Groundlight's computer vision technology can assist in automating machine-tending tasks, such as loading and unloading materials in CNC machines, milling centers, or injection molding equipment. By enabling robots to recognize parts and tools using natural language, complex machine-tending tasks become more accessible and efficient."),(0,a.kt)("h2",{id:"process-automation"},"Process Automation"),(0,a.kt)("p",null,"Integrating Groundlight's computer vision into your process automation systems can help identify bottlenecks, optimize workflows, and reduce manual intervention. Our technology can work hand-in-hand with robotic systems to perform tasks like sorting, assembly, all while interpreting natural language commands to streamline operations."),(0,a.kt)("h2",{id:"quality-control"},"Quality Control"),(0,a.kt)("p",null,"Groundlight's computer vision technology can play a vital role in ensuring the highest quality standards in your manufacturing processes. By identifying defects or irregularities in products, our computer vision system can help maintain strict quality control, reducing the need for manual inspections and increasing overall product quality."),(0,a.kt)("h2",{id:"integration-with-cobots-and-cnc-machines"},"Integration with Cobots and CNC Machines"),(0,a.kt)("p",null,"Groundlight's computer vision technology can be easily integrated with popular cobot robotic arms, such as Universal Robots, to enhance their capabilities and improve collaboration between humans and robots. Additionally, our technology can be integrated into existing CNC machines or other devices using the Modbus interface, allowing for seamless communication and control within your manufacturing environment."),(0,a.kt)("h1",{id:"contact-sales"},"Contact Sales"),(0,a.kt)("p",null,"To learn more about how Groundlight's natural language computer vision technology can revolutionize your industrial and manufacturing processes, please reach out to us at ",(0,a.kt)("a",{parentName:"p",href:"mailto:info@groundlight.ai"},"info@groundlight.ai"),"."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/1b28ffce.b1d4e132.js b/assets/js/1b28ffce.b1d4e132.js new file mode 100644 index 00000000..a1c54980 --- /dev/null +++ b/assets/js/1b28ffce.b1d4e132.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[518],{1235:(n,i,t)=>{t.r(i),t.d(i,{assets:()=>c,contentTitle:()=>s,default:()=>d,frontMatter:()=>o,metadata:()=>r,toc:()=>l});var e=t(5893),a=t(1151);const o={sidebar_position:7},s="Industrial and Manufacturing Applications",r={id:"building-applications/industrial",title:"Industrial and Manufacturing Applications",description:"Modern natural language-based computer vision is transforming industrial and manufacturing applications by enabling more intuitive interaction with automation systems. Groundlight offers cutting-edge computer vision technology that can be seamlessly integrated into various industrial processes, enhancing efficiency, productivity, and quality control.",source:"@site/docs/building-applications/8-industrial.md",sourceDirName:"building-applications",slug:"/building-applications/industrial",permalink:"/python-sdk/docs/building-applications/industrial",draft:!1,unlisted:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/building-applications/8-industrial.md",tags:[],version:"current",sidebarPosition:7,frontMatter:{sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Using Groundlight on the Edge",permalink:"/python-sdk/docs/building-applications/edge"},next:{title:"Installation",permalink:"/python-sdk/docs/installation/"}},c={},l=[{value:"Machine Tending",id:"machine-tending",level:2},{value:"Process Automation",id:"process-automation",level:2},{value:"Quality Control",id:"quality-control",level:2},{value:"Integration with Cobots and CNC Machines",id:"integration-with-cobots-and-cnc-machines",level:2}];function u(n){const i={a:"a",h1:"h1",h2:"h2",p:"p",...(0,a.a)(),...n.components};return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(i.h1,{id:"industrial-and-manufacturing-applications",children:"Industrial and Manufacturing Applications"}),"\n",(0,e.jsx)(i.p,{children:"Modern natural language-based computer vision is transforming industrial and manufacturing applications by enabling more intuitive interaction with automation systems. Groundlight offers cutting-edge computer vision technology that can be seamlessly integrated into various industrial processes, enhancing efficiency, productivity, and quality control."}),"\n",(0,e.jsx)(i.h2,{id:"machine-tending",children:"Machine Tending"}),"\n",(0,e.jsx)(i.p,{children:"Groundlight's computer vision technology can assist in automating machine-tending tasks, such as loading and unloading materials in CNC machines, milling centers, or injection molding equipment. By enabling robots to recognize parts and tools using natural language, complex machine-tending tasks become more accessible and efficient."}),"\n",(0,e.jsx)(i.h2,{id:"process-automation",children:"Process Automation"}),"\n",(0,e.jsx)(i.p,{children:"Integrating Groundlight's computer vision into your process automation systems can help identify bottlenecks, optimize workflows, and reduce manual intervention. Our technology can work hand-in-hand with robotic systems to perform tasks like sorting, assembly, all while interpreting natural language commands to streamline operations."}),"\n",(0,e.jsx)(i.h2,{id:"quality-control",children:"Quality Control"}),"\n",(0,e.jsx)(i.p,{children:"Groundlight's computer vision technology can play a vital role in ensuring the highest quality standards in your manufacturing processes. By identifying defects or irregularities in products, our computer vision system can help maintain strict quality control, reducing the need for manual inspections and increasing overall product quality."}),"\n",(0,e.jsx)(i.h2,{id:"integration-with-cobots-and-cnc-machines",children:"Integration with Cobots and CNC Machines"}),"\n",(0,e.jsx)(i.p,{children:"Groundlight's computer vision technology can be easily integrated with popular cobot robotic arms, such as Universal Robots, to enhance their capabilities and improve collaboration between humans and robots. Additionally, our technology can be integrated into existing CNC machines or other devices using the Modbus interface, allowing for seamless communication and control within your manufacturing environment."}),"\n",(0,e.jsx)(i.h1,{id:"contact-sales",children:"Contact Sales"}),"\n",(0,e.jsxs)(i.p,{children:["To learn more about how Groundlight's natural language computer vision technology can revolutionize your industrial and manufacturing processes, please reach out to us at ",(0,e.jsx)(i.a,{href:"mailto:info@groundlight.ai",children:"info@groundlight.ai"}),"."]})]})}function d(n={}){const{wrapper:i}={...(0,a.a)(),...n.components};return i?(0,e.jsx)(i,{...n,children:(0,e.jsx)(u,{...n})}):u(n)}},1151:(n,i,t)=>{t.d(i,{Z:()=>r,a:()=>s});var e=t(7294);const a={},o=e.createContext(a);function s(n){const i=e.useContext(o);return e.useMemo((function(){return"function"==typeof n?n(i):{...i,...n}}),[i,n])}function r(n){let i;return i=n.disableParentContext?"function"==typeof n.components?n.components(a):n.components||a:s(n.components),e.createElement(o.Provider,{value:i},n.children)}}}]); \ No newline at end of file diff --git a/assets/js/1be78505.b7ce2bd9.js b/assets/js/1be78505.b7ce2bd9.js deleted file mode 100644 index a70fa51e..00000000 --- a/assets/js/1be78505.b7ce2bd9.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[514,972],{9963:(e,t,n)=>{n.r(t),n.d(t,{default:()=>fe});var a=n(7294),l=n(6010),o=n(1944),r=n(5281),c=n(3320),i=n(2802),s=n(4477),d=n(1116),m=n(179),u=n(5999),b=n(2466),p=n(5936);const h={backToTopButton:"backToTopButton_sjWU",backToTopButtonShow:"backToTopButtonShow_xfvO"};function E(){const{shown:e,scrollToTop:t}=function(e){let{threshold:t}=e;const[n,l]=(0,a.useState)(!1),o=(0,a.useRef)(!1),{startScroll:r,cancelScroll:c}=(0,b.Ct)();return(0,b.RF)(((e,n)=>{let{scrollY:a}=e;const r=n?.scrollY;r&&(o.current?o.current=!1:a>=r?(c(),l(!1)):a{e.location.hash&&(o.current=!0,l(!1))})),{shown:n,scrollToTop:()=>r(0)}}({threshold:300});return a.createElement("button",{"aria-label":(0,u.I)({id:"theme.BackToTopButton.buttonAriaLabel",message:"Scroll back to top",description:"The ARIA label for the back to top button"}),className:(0,l.Z)("clean-btn",r.k.common.backToTopButton,h.backToTopButton,e&&h.backToTopButtonShow),type:"button",onClick:t})}var f=n(6550),g=n(7524),v=n(6668),k=n(1327),_=n(7462);function C(e){return a.createElement("svg",(0,_.Z)({width:"20",height:"20","aria-hidden":"true"},e),a.createElement("g",{fill:"#7a7a7a"},a.createElement("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),a.createElement("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})))}const S={collapseSidebarButton:"collapseSidebarButton_PEFL",collapseSidebarButtonIcon:"collapseSidebarButtonIcon_kv0_"};function I(e){let{onClick:t}=e;return a.createElement("button",{type:"button",title:(0,u.I)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,u.I)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,l.Z)("button button--secondary button--outline",S.collapseSidebarButton),onClick:t},a.createElement(C,{className:S.collapseSidebarButtonIcon}))}var N=n(9689),T=n(902);const x=Symbol("EmptyContext"),Z=a.createContext(x);function B(e){let{children:t}=e;const[n,l]=(0,a.useState)(null),o=(0,a.useMemo)((()=>({expandedItem:n,setExpandedItem:l})),[n]);return a.createElement(Z.Provider,{value:o},t)}var w=n(6043),y=n(8596),L=n(9960),A=n(2389);function M(e){let{categoryLabel:t,onClick:n}=e;return a.createElement("button",{"aria-label":(0,u.I)({id:"theme.DocSidebarItem.toggleCollapsedCategoryAriaLabel",message:"Toggle the collapsible sidebar category '{label}'",description:"The ARIA label to toggle the collapsible sidebar category"},{label:t}),type:"button",className:"clean-btn menu__caret",onClick:n})}function F(e){let{item:t,onItemClick:n,activePath:o,level:c,index:s,...d}=e;const{items:m,label:u,collapsible:b,className:p,href:h}=t,{docs:{sidebar:{autoCollapseCategories:E}}}=(0,v.L)(),f=function(e){const t=(0,A.Z)();return(0,a.useMemo)((()=>e.href?e.href:!t&&e.collapsible?(0,i.Wl)(e):void 0),[e,t])}(t),g=(0,i._F)(t,o),k=(0,y.Mg)(h,o),{collapsed:C,setCollapsed:S}=(0,w.u)({initialState:()=>!!b&&(!g&&t.collapsed)}),{expandedItem:I,setExpandedItem:N}=function(){const e=(0,a.useContext)(Z);if(e===x)throw new T.i6("DocSidebarItemsExpandedStateProvider");return e}(),B=function(e){void 0===e&&(e=!C),N(e?null:s),S(e)};return function(e){let{isActive:t,collapsed:n,updateCollapsed:l}=e;const o=(0,T.D9)(t);(0,a.useEffect)((()=>{t&&!o&&n&&l(!1)}),[t,o,n,l])}({isActive:g,collapsed:C,updateCollapsed:B}),(0,a.useEffect)((()=>{b&&null!=I&&I!==s&&E&&S(!0)}),[b,I,s,S,E]),a.createElement("li",{className:(0,l.Z)(r.k.docs.docSidebarItemCategory,r.k.docs.docSidebarItemCategoryLevel(c),"menu__list-item",{"menu__list-item--collapsed":C},p)},a.createElement("div",{className:(0,l.Z)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":k})},a.createElement(L.Z,(0,_.Z)({className:(0,l.Z)("menu__link",{"menu__link--sublist":b,"menu__link--sublist-caret":!h&&b,"menu__link--active":g}),onClick:b?e=>{n?.(t),h?B(!1):(e.preventDefault(),B())}:()=>{n?.(t)},"aria-current":k?"page":void 0,"aria-expanded":b?!C:void 0,href:b?f??"#":f},d),u),h&&b&&a.createElement(M,{categoryLabel:u,onClick:e=>{e.preventDefault(),B()}})),a.createElement(w.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:C},a.createElement(K,{items:m,tabIndex:C?-1:0,onItemClick:n,activePath:o,level:c+1})))}var H=n(3919),P=n(9471);const W={menuExternalLink:"menuExternalLink_NmtK"};function D(e){let{item:t,onItemClick:n,activePath:o,level:c,index:s,...d}=e;const{href:m,label:u,className:b,autoAddBaseUrl:p}=t,h=(0,i._F)(t,o),E=(0,H.Z)(m);return a.createElement("li",{className:(0,l.Z)(r.k.docs.docSidebarItemLink,r.k.docs.docSidebarItemLinkLevel(c),"menu__list-item",b),key:u},a.createElement(L.Z,(0,_.Z)({className:(0,l.Z)("menu__link",!E&&W.menuExternalLink,{"menu__link--active":h}),autoAddBaseUrl:p,"aria-current":h?"page":void 0,to:m},E&&{onClick:n?()=>n(t):void 0},d),u,!E&&a.createElement(P.Z,null)))}const R={menuHtmlItem:"menuHtmlItem_M9Kj"};function V(e){let{item:t,level:n,index:o}=e;const{value:c,defaultStyle:i,className:s}=t;return a.createElement("li",{className:(0,l.Z)(r.k.docs.docSidebarItemLink,r.k.docs.docSidebarItemLinkLevel(n),i&&[R.menuHtmlItem,"menu__list-item"],s),key:o,dangerouslySetInnerHTML:{__html:c}})}function z(e){let{item:t,...n}=e;switch(t.type){case"category":return a.createElement(F,(0,_.Z)({item:t},n));case"html":return a.createElement(V,(0,_.Z)({item:t},n));default:return a.createElement(D,(0,_.Z)({item:t},n))}}function U(e){let{items:t,...n}=e;return a.createElement(B,null,t.map(((e,t)=>a.createElement(z,(0,_.Z)({key:t,item:e,index:t},n)))))}const K=(0,a.memo)(U),j={menu:"menu_SIkG",menuWithAnnouncementBar:"menuWithAnnouncementBar_GW3s"};function q(e){let{path:t,sidebar:n,className:o}=e;const c=function(){const{isActive:e}=(0,N.nT)(),[t,n]=(0,a.useState)(e);return(0,b.RF)((t=>{let{scrollY:a}=t;e&&n(0===a)}),[e]),e&&t}();return a.createElement("nav",{"aria-label":(0,u.I)({id:"theme.docs.sidebar.navAriaLabel",message:"Docs sidebar",description:"The ARIA label for the sidebar navigation"}),className:(0,l.Z)("menu thin-scrollbar",j.menu,c&&j.menuWithAnnouncementBar,o)},a.createElement("ul",{className:(0,l.Z)(r.k.docs.docSidebarMenu,"menu__list")},a.createElement(K,{items:n,activePath:t,level:1})))}const G="sidebar_njMd",Y="sidebarWithHideableNavbar_wUlq",O="sidebarHidden_VK0M",X="sidebarLogo_isFc";function J(e){let{path:t,sidebar:n,onCollapse:o,isHidden:r}=e;const{navbar:{hideOnScroll:c},docs:{sidebar:{hideable:i}}}=(0,v.L)();return a.createElement("div",{className:(0,l.Z)(G,c&&Y,r&&O)},c&&a.createElement(k.Z,{tabIndex:-1,className:X}),a.createElement(q,{path:t,sidebar:n}),i&&a.createElement(I,{onClick:o}))}const Q=a.memo(J);var $=n(3102),ee=n(2961);const te=e=>{let{sidebar:t,path:n}=e;const o=(0,ee.e)();return a.createElement("ul",{className:(0,l.Z)(r.k.docs.docSidebarMenu,"menu__list")},a.createElement(K,{items:t,activePath:n,onItemClick:e=>{"category"===e.type&&e.href&&o.toggle(),"link"===e.type&&o.toggle()},level:1}))};function ne(e){return a.createElement($.Zo,{component:te,props:e})}const ae=a.memo(ne);function le(e){const t=(0,g.i)(),n="desktop"===t||"ssr"===t,l="mobile"===t;return a.createElement(a.Fragment,null,n&&a.createElement(Q,e),l&&a.createElement(ae,e))}const oe={expandButton:"expandButton_m80_",expandButtonIcon:"expandButtonIcon_BlDH"};function re(e){let{toggleSidebar:t}=e;return a.createElement("div",{className:oe.expandButton,title:(0,u.I)({id:"theme.docs.sidebar.expandButtonTitle",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),"aria-label":(0,u.I)({id:"theme.docs.sidebar.expandButtonAriaLabel",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),tabIndex:0,role:"button",onKeyDown:t,onClick:t},a.createElement(C,{className:oe.expandButtonIcon}))}const ce={docSidebarContainer:"docSidebarContainer_b6E3",docSidebarContainerHidden:"docSidebarContainerHidden_b3ry",sidebarViewport:"sidebarViewport_Xe31"};function ie(e){let{children:t}=e;const n=(0,d.V)();return a.createElement(a.Fragment,{key:n?.name??"noSidebar"},t)}function se(e){let{sidebar:t,hiddenSidebarContainer:n,setHiddenSidebarContainer:o}=e;const{pathname:c}=(0,f.TH)(),[i,s]=(0,a.useState)(!1),d=(0,a.useCallback)((()=>{i&&s(!1),o((e=>!e))}),[o,i]);return a.createElement("aside",{className:(0,l.Z)(r.k.docs.docSidebarContainer,ce.docSidebarContainer,n&&ce.docSidebarContainerHidden),onTransitionEnd:e=>{e.currentTarget.classList.contains(ce.docSidebarContainer)&&n&&s(!0)}},a.createElement(ie,null,a.createElement("div",{className:(0,l.Z)(ce.sidebarViewport,i&&ce.sidebarViewportHidden)},a.createElement(le,{sidebar:t,path:c,onCollapse:d,isHidden:i}),i&&a.createElement(re,{toggleSidebar:d}))))}const de={docMainContainer:"docMainContainer_gTbr",docMainContainerEnhanced:"docMainContainerEnhanced_Uz_u",docItemWrapperEnhanced:"docItemWrapperEnhanced_czyv"};function me(e){let{hiddenSidebarContainer:t,children:n}=e;const o=(0,d.V)();return a.createElement("main",{className:(0,l.Z)(de.docMainContainer,(t||!o)&&de.docMainContainerEnhanced)},a.createElement("div",{className:(0,l.Z)("container padding-top--md padding-bottom--lg",de.docItemWrapper,t&&de.docItemWrapperEnhanced)},n))}const ue={docPage:"docPage__5DB",docsWrapper:"docsWrapper_BCFX"};function be(e){let{children:t}=e;const n=(0,d.V)(),[l,o]=(0,a.useState)(!1);return a.createElement(m.Z,{wrapperClassName:ue.docsWrapper},a.createElement(E,null),a.createElement("div",{className:ue.docPage},n&&a.createElement(se,{sidebar:n.items,hiddenSidebarContainer:l,setHiddenSidebarContainer:o}),a.createElement(me,{hiddenSidebarContainer:l},t)))}var pe=n(4972),he=n(197);function Ee(e){const{versionMetadata:t}=e;return a.createElement(a.Fragment,null,a.createElement(he.Z,{version:t.version,tag:(0,c.os)(t.pluginId,t.version)}),a.createElement(o.d,null,t.noIndex&&a.createElement("meta",{name:"robots",content:"noindex, nofollow"})))}function fe(e){const{versionMetadata:t}=e,n=(0,i.hI)(e);if(!n)return a.createElement(pe.default,null);const{docElement:c,sidebarName:m,sidebarItems:u}=n;return a.createElement(a.Fragment,null,a.createElement(Ee,e),a.createElement(o.FG,{className:(0,l.Z)(r.k.wrapper.docsPages,r.k.page.docsDocPage,e.versionMetadata.className)},a.createElement(s.q,{version:t},a.createElement(d.b,{name:m,items:u},a.createElement(be,null,c)))))}},4972:(e,t,n)=>{n.r(t),n.d(t,{default:()=>c});var a=n(7294),l=n(5999),o=n(1944),r=n(179);function c(){return a.createElement(a.Fragment,null,a.createElement(o.d,{title:(0,l.I)({id:"theme.NotFound.title",message:"Page Not Found"})}),a.createElement(r.Z,null,a.createElement("main",{className:"container margin-vert--xl"},a.createElement("div",{className:"row"},a.createElement("div",{className:"col col--6 col--offset-3"},a.createElement("h1",{className:"hero__title"},a.createElement(l.Z,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),a.createElement("p",null,a.createElement(l.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),a.createElement("p",null,a.createElement(l.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"Please contact the owner of the site that linked you to the original URL and let them know their link is broken.")))))))}},4477:(e,t,n)=>{n.d(t,{E:()=>c,q:()=>r});var a=n(7294),l=n(902);const o=a.createContext(null);function r(e){let{children:t,version:n}=e;return a.createElement(o.Provider,{value:n},t)}function c(){const e=(0,a.useContext)(o);if(null===e)throw new l.i6("DocsVersionProvider");return e}}}]); \ No newline at end of file diff --git a/assets/js/1df93b7f.3923a086.js b/assets/js/1df93b7f.3923a086.js deleted file mode 100644 index 61e3feeb..00000000 --- a/assets/js/1df93b7f.3923a086.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[237],{8391:(e,t,n)=>{n.r(t),n.d(t,{default:()=>p});var a=n(9960),r=n(2263),l=n(7462),i=n(6010);const s={features:"features_t9lD",featureSvg:"featureSvg_GfXr"};var o=n(7294);const c=[{title:"Instant Models",imgsrc:"img/1-models.png",description:o.createElement(o.Fragment,null,"Groundlight's Visual LLM creates computer vision models from English instructions instead of a dataset. This reduces the time to get an AI-driven solution off the ground. Did we mention you don't need a dataset?")},{title:"Human Reliability",imgsrc:"img/2-reliability.png",description:o.createElement(o.Fragment,null,"Groundlight's models are allowed to say they're \"",o.createElement("i",null,"Unsure"),"\" and can escalate to a larger model or human expert for assistance. By knowing what they know, Groundlight's models act more robust, combining the speed of AI with the reliability of human oversight.")},{title:"Seamless MLOps",imgsrc:"img/3-mlops.png",description:o.createElement(o.Fragment,null,"Because Groundlight starts with humans-in-the-loop (HITL), continuous monitoring and auditing are automatic. Any data drift is automatically detected and corrected for. So you know your visual applications won't fall behind as the world around them inevitably changes.")}];function m(e){let{title:t,imgsrc:n,description:a}=e;return o.createElement("div",{className:(0,i.Z)("col col--4")},o.createElement("div",{className:"text--center"},o.createElement("img",{src:n,width:"200px"})),o.createElement("div",{className:"text--center padding-horiz--md"},o.createElement("h3",null,t),o.createElement("p",null,a)))}function u(){return o.createElement("section",{className:s.features},o.createElement("div",{className:"container"},o.createElement("div",{className:"row"},c.map(((e,t)=>o.createElement(m,(0,l.Z)({key:t},e)))))))}var d=n(179);const g={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"};function h(){const{siteConfig:e}=(0,r.Z)();return o.createElement("header",{className:(0,i.Z)("hero hero--primary",g.heroBanner)},o.createElement("div",{className:"container"},o.createElement("h1",{className:"hero__title"},e.title),o.createElement("p",{className:"hero__subtitle"},e.tagline),o.createElement("div",{className:g.buttons},o.createElement(a.Z,{className:"button button--secondary button--lg",to:"/docs/getting-started"},"Tutorial - \u23f1\ufe0f 5 min"))))}function p(){const{siteConfig:e}=(0,r.Z)();return o.createElement(d.Z,{title:`${e.title}`,description:"Computer Vision powered by Natural Language"},o.createElement(h,null),o.createElement("main",null,o.createElement(u,null)))}}}]); \ No newline at end of file diff --git a/assets/js/1df93b7f.475f2fb4.js b/assets/js/1df93b7f.475f2fb4.js new file mode 100644 index 00000000..0017e1ec --- /dev/null +++ b/assets/js/1df93b7f.475f2fb4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[237],{8391:(e,t,s)=>{s.r(t),s.d(t,{default:()=>g});var i=s(9960),n=s(2263),r=s(6010);const a={features:"features_t9lD",featureSvg:"featureSvg_GfXr"};s(7294);var o=s(5893);const l=[{title:"Instant Models",imgsrc:"img/1-models.png",description:(0,o.jsx)(o.Fragment,{children:"Groundlight's Visual LLM creates computer vision models from English instructions instead of a dataset. This reduces the time to get an AI-driven solution off the ground. Did we mention you don't need a dataset?"})},{title:"Human Reliability",imgsrc:"img/2-reliability.png",description:(0,o.jsxs)(o.Fragment,{children:["Groundlight's models are allowed to say they're \"",(0,o.jsx)("i",{children:"Unsure"}),"\" and can escalate to a larger model or human expert for assistance. By knowing what they know, Groundlight's models act more robust, combining the speed of AI with the reliability of human oversight."]})},{title:"Seamless MLOps",imgsrc:"img/3-mlops.png",description:(0,o.jsx)(o.Fragment,{children:"Because Groundlight starts with humans-in-the-loop (HITL), continuous monitoring and auditing are automatic. Any data drift is automatically detected and corrected for. So you know your visual applications won't fall behind as the world around them inevitably changes."})}];function c(e){let{title:t,imgsrc:s,description:i}=e;return(0,o.jsxs)("div",{className:(0,r.Z)("col col--4"),children:[(0,o.jsx)("div",{className:"text--center",children:(0,o.jsx)("img",{src:s,width:"200px"})}),(0,o.jsxs)("div",{className:"text--center padding-horiz--md",children:[(0,o.jsx)("h3",{children:t}),(0,o.jsx)("p",{children:i})]})]})}function d(){return(0,o.jsx)("section",{className:a.features,children:(0,o.jsx)("div",{className:"container",children:(0,o.jsx)("div",{className:"row",children:l.map(((e,t)=>(0,o.jsx)(c,{...e},t)))})})})}var h=s(2758);const u={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"};function m(){const{siteConfig:e}=(0,n.Z)();return(0,o.jsx)("header",{className:(0,r.Z)("hero hero--primary",u.heroBanner),children:(0,o.jsxs)("div",{className:"container",children:[(0,o.jsx)("h1",{className:"hero__title",children:e.title}),(0,o.jsx)("p",{className:"hero__subtitle",children:e.tagline}),(0,o.jsx)("div",{className:u.buttons,children:(0,o.jsx)(i.Z,{className:"button button--secondary button--lg",to:"/docs/getting-started",children:"Tutorial - \u23f1\ufe0f 5 min"})})]})})}function g(){const{siteConfig:e}=(0,n.Z)();return(0,o.jsxs)(h.Z,{title:`${e.title}`,description:"Computer Vision powered by Natural Language",children:[(0,o.jsx)(m,{}),(0,o.jsx)("main",{children:(0,o.jsx)(d,{})})]})}}}]); \ No newline at end of file diff --git a/assets/js/1e924268.4346dd20.js b/assets/js/1e924268.4346dd20.js new file mode 100644 index 00000000..f5c22837 --- /dev/null +++ b/assets/js/1e924268.4346dd20.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[614],{4953:(n,t,i)=>{i.r(t),i.d(t,{assets:()=>r,contentTitle:()=>e,default:()=>h,frontMatter:()=>l,metadata:()=>a,toc:()=>d});var s=i(5893),o=i(1151);const l={},e="Installation",a={id:"installation/installation",title:"Installation",description:"Welcome to the Groundlight SDK installation guide. In this guide, you'll find step-by-step instructions on how to install and set up the Groundlight SDK on various platforms.",source:"@site/docs/installation/installation.md",sourceDirName:"installation",slug:"/installation/",permalink:"/python-sdk/docs/installation/",draft:!1,unlisted:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/installation/installation.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Industrial and Manufacturing Applications",permalink:"/python-sdk/docs/building-applications/industrial"},next:{title:"Installing on Linux",permalink:"/python-sdk/docs/installation/linux"}},r={},d=[{value:"Platform-specific Installation Guides",id:"platform-specific-installation-guides",level:2}];function c(n){const t={a:"a",h1:"h1",h2:"h2",li:"li",p:"p",ul:"ul",...(0,o.a)(),...n.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"installation",children:"Installation"}),"\n",(0,s.jsx)(t.p,{children:"Welcome to the Groundlight SDK installation guide. In this guide, you'll find step-by-step instructions on how to install and set up the Groundlight SDK on various platforms."}),"\n",(0,s.jsx)(t.h2,{id:"platform-specific-installation-guides",children:"Platform-specific Installation Guides"}),"\n",(0,s.jsx)(t.p,{children:"Choose your platform from the list below and follow the instructions in the corresponding guide:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"/python-sdk/docs/installation/linux",children:"Linux"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"/python-sdk/docs/installation/macos",children:"macOS"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"/python-sdk/docs/installation/windows",children:"Windows"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"/python-sdk/docs/installation/raspberry-pi",children:"Raspberry Pi"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"/python-sdk/docs/installation/nvidia-jetson",children:"NVIDIA Jetson"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"/python-sdk/docs/installation/monitoring-notification-server",children:"Linux with Monitoring Notification Server"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"/docs/iot",children:"ESP32 Camera Device"})}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:["After completing the installation process for your platform, you'll be ready to start ",(0,s.jsx)(t.a,{href:"/docs/building-applications/",children:"building visual applications"})," using the Groundlight SDK."]})]})}function h(n={}){const{wrapper:t}={...(0,o.a)(),...n.components};return t?(0,s.jsx)(t,{...n,children:(0,s.jsx)(c,{...n})}):c(n)}},1151:(n,t,i)=>{i.d(t,{Z:()=>a,a:()=>e});var s=i(7294);const o={},l=s.createContext(o);function e(n){const t=s.useContext(l);return s.useMemo((function(){return"function"==typeof n?n(t):{...t,...n}}),[t,n])}function a(n){let t;return t=n.disableParentContext?"function"==typeof n.components?n.components(o):n.components||o:e(n.components),s.createElement(l.Provider,{value:t},n.children)}}}]); \ No newline at end of file diff --git a/assets/js/1e924268.dee40c58.js b/assets/js/1e924268.dee40c58.js deleted file mode 100644 index fa1fc4ab..00000000 --- a/assets/js/1e924268.dee40c58.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[614],{3905:(t,e,n)=>{n.d(e,{Zo:()=>c,kt:()=>m});var i=n(7294);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function a(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function o(t){for(var e=1;e=0||(r[n]=t[n]);return r}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}var s=i.createContext({}),p=function(t){var e=i.useContext(s),n=e;return t&&(n="function"==typeof t?t(e):o(o({},e),t)),n},c=function(t){var e=p(t.components);return i.createElement(s.Provider,{value:e},t.children)},u="mdxType",d={inlineCode:"code",wrapper:function(t){var e=t.children;return i.createElement(i.Fragment,{},e)}},f=i.forwardRef((function(t,e){var n=t.components,r=t.mdxType,a=t.originalType,s=t.parentName,c=l(t,["components","mdxType","originalType","parentName"]),u=p(n),f=r,m=u["".concat(s,".").concat(f)]||u[f]||d[f]||a;return n?i.createElement(m,o(o({ref:e},c),{},{components:n})):i.createElement(m,o({ref:e},c))}));function m(t,e){var n=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var a=n.length,o=new Array(a);o[0]=f;var l={};for(var s in e)hasOwnProperty.call(e,s)&&(l[s]=e[s]);l.originalType=t,l[u]="string"==typeof t?t:r,o[1]=l;for(var p=2;p{n.r(e),n.d(e,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var i=n(7462),r=(n(7294),n(3905));const a={},o="Installation",l={unversionedId:"installation/installation",id:"installation/installation",title:"Installation",description:"Welcome to the Groundlight SDK installation guide. In this guide, you'll find step-by-step instructions on how to install and set up the Groundlight SDK on various platforms.",source:"@site/docs/installation/installation.md",sourceDirName:"installation",slug:"/installation/",permalink:"/python-sdk/docs/installation/",draft:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/installation/installation.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Industrial and Manufacturing Applications",permalink:"/python-sdk/docs/building-applications/industrial"},next:{title:"Installing on Linux",permalink:"/python-sdk/docs/installation/linux"}},s={},p=[{value:"Platform-specific Installation Guides",id:"platform-specific-installation-guides",level:2}],c={toc:p},u="wrapper";function d(t){let{components:e,...n}=t;return(0,r.kt)(u,(0,i.Z)({},c,n,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"installation"},"Installation"),(0,r.kt)("p",null,"Welcome to the Groundlight SDK installation guide. In this guide, you'll find step-by-step instructions on how to install and set up the Groundlight SDK on various platforms."),(0,r.kt)("h2",{id:"platform-specific-installation-guides"},"Platform-specific Installation Guides"),(0,r.kt)("p",null,"Choose your platform from the list below and follow the instructions in the corresponding guide:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/python-sdk/docs/installation/linux"},"Linux")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/python-sdk/docs/installation/macos"},"macOS")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/python-sdk/docs/installation/windows"},"Windows")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/python-sdk/docs/installation/raspberry-pi"},"Raspberry Pi")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/python-sdk/docs/installation/nvidia-jetson"},"NVIDIA Jetson")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/python-sdk/docs/installation/monitoring-notification-server"},"Linux with Monitoring Notification Server")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/iot"},"ESP32 Camera Device"))),(0,r.kt)("p",null,"After completing the installation process for your platform, you'll be ready to start ",(0,r.kt)("a",{parentName:"p",href:"/docs/building-applications/"},"building visual applications")," using the Groundlight SDK."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/1f391b9e.a6e25ab3.js b/assets/js/1f391b9e.a6e25ab3.js deleted file mode 100644 index 86657ba5..00000000 --- a/assets/js/1f391b9e.a6e25ab3.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[85],{4247:(e,t,a)=>{a.r(t),a.d(t,{default:()=>d});var l=a(7294),n=a(6010),c=a(1944),r=a(5281),m=a(179),i=a(7432),s=a(9407);const o={mdxPageWrapper:"mdxPageWrapper_j9I6"};function d(e){const{content:t}=e,{metadata:{title:a,description:d,frontMatter:p}}=t,{wrapperClassName:g,hide_table_of_contents:u}=p;return l.createElement(c.FG,{className:(0,n.Z)(g??r.k.wrapper.mdxPages,r.k.page.mdxPage)},l.createElement(c.d,{title:a,description:d}),l.createElement(m.Z,null,l.createElement("main",{className:"container container--fluid margin-vert--lg"},l.createElement("div",{className:(0,n.Z)("row",o.mdxPageWrapper)},l.createElement("div",{className:(0,n.Z)("col",!u&&"col--8")},l.createElement("article",null,l.createElement(i.Z,null,l.createElement(t,null)))),!u&&t.toc.length>0&&l.createElement("div",{className:"col col--2"},l.createElement(s.Z,{toc:t.toc,minHeadingLevel:p.toc_min_heading_level,maxHeadingLevel:p.toc_max_heading_level}))))))}}}]); \ No newline at end of file diff --git a/assets/js/1f391b9e.e16d9857.js b/assets/js/1f391b9e.e16d9857.js new file mode 100644 index 00000000..bc318f5d --- /dev/null +++ b/assets/js/1f391b9e.e16d9857.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[85],{3967:(e,a,s)=>{s.r(a),s.d(a,{default:()=>x});s(7294);var i=s(6010),n=s(1944),r=s(5281),c=s(2758),l=s(1299),t=s(6306),d=s(6689);const o={mdxPageWrapper:"mdxPageWrapper_TZLa"};var m=s(5893);function x(e){const{content:a}=e,{metadata:{title:s,description:x,frontMatter:g,unlisted:p},assets:h}=a,{keywords:j,wrapperClassName:v,hide_table_of_contents:_}=g,u=h.image??g.image;return(0,m.jsx)(n.FG,{className:(0,i.Z)(v??r.k.wrapper.mdxPages,r.k.page.mdxPage),children:(0,m.jsxs)(c.Z,{children:[(0,m.jsx)(n.d,{title:s,description:x,keywords:j,image:u}),(0,m.jsx)("main",{className:"container container--fluid margin-vert--lg",children:(0,m.jsxs)("div",{className:(0,i.Z)("row",o.mdxPageWrapper),children:[(0,m.jsxs)("div",{className:(0,i.Z)("col",!_&&"col--8"),children:[p&&(0,m.jsx)(d.Z,{}),(0,m.jsx)("article",{children:(0,m.jsx)(l.Z,{children:(0,m.jsx)(a,{})})})]}),!_&&a.toc.length>0&&(0,m.jsx)("div",{className:"col col--2",children:(0,m.jsx)(t.Z,{toc:a.toc,minHeadingLevel:g.toc_min_heading_level,maxHeadingLevel:g.toc_max_heading_level})})]})})]})})}}}]); \ No newline at end of file diff --git a/assets/js/272.4a9157ad.js b/assets/js/272.4a9157ad.js deleted file mode 100644 index 6e1f98d2..00000000 --- a/assets/js/272.4a9157ad.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkweb=self.webpackChunkweb||[]).push([[272],{3905:(e,t,n)=>{"use strict";n.d(t,{Zo:()=>u,kt:()=>f});var o=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function c(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var i=o.createContext({}),s=function(e){var t=o.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},u=function(e){var t=s(e.components);return o.createElement(i.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},p=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,i=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),m=s(n),p=r,f=m["".concat(i,".").concat(p)]||m[p]||d[p]||a;return n?o.createElement(f,c(c({ref:t},u),{},{components:n})):o.createElement(f,c({ref:t},u))}));function f(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,c=new Array(a);c[0]=p;var l={};for(var i in t)hasOwnProperty.call(t,i)&&(l[i]=t[i]);l.originalType=e,l[m]="string"==typeof e?e:r,c[1]=l;for(var s=2;s{"use strict";n.d(t,{Z:()=>u});var o=n(7462),r=n(7294),a=n(6010),c=n(5999),l=n(6668),i=n(9960);const s={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};function u(e){let{as:t,id:n,...u}=e;const{navbar:{hideOnScroll:m}}=(0,l.L)();if("h1"===t||!n)return r.createElement(t,(0,o.Z)({},u,{id:void 0}));const d=(0,c.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof u.children?u.children:n});return r.createElement(t,(0,o.Z)({},u,{className:(0,a.Z)("anchor",m?s.anchorWithHideOnScrollNavbar:s.anchorWithStickyNavbar,u.className),id:n}),u.children,r.createElement(i.Z,{className:"hash-link",to:`#${n}`,"aria-label":d,title:d},"\u200b"))}},7432:(e,t,n)=>{"use strict";n.d(t,{Z:()=>pe});var o=n(7294),r=n(3905),a=n(7462),c=n(5742);var l=n(2389),i=n(6010),s=n(2949),u=n(6668);function m(){const{prism:e}=(0,u.L)(),{colorMode:t}=(0,s.I)(),n=e.theme,o=e.darkTheme||n;return"dark"===t?o:n}var d=n(5281),p=n(7594),f=n.n(p);const h=/title=(?["'])(?.*?)\1/,g=/\{(?<range>[\d,-]+)\}/,y={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}};function v(e,t){const n=e.map((e=>{const{start:n,end:o}=y[e];return`(?:${n}\\s*(${t.flatMap((e=>[e.line,e.block?.start,e.block?.end].filter(Boolean))).join("|")})\\s*${o})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function b(e,t){let n=e.replace(/\n$/,"");const{language:o,magicComments:r,metastring:a}=t;if(a&&g.test(a)){const e=a.match(g).groups.range;if(0===r.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${a}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const t=r[0].className,o=f()(e).filter((e=>e>0)).map((e=>[e-1,[t]]));return{lineClassNames:Object.fromEntries(o),code:n}}if(void 0===o)return{lineClassNames:{},code:n};const c=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return v(["js","jsBlock"],t);case"jsx":case"tsx":return v(["js","jsBlock","jsx"],t);case"html":return v(["js","jsBlock","html"],t);case"python":case"py":case"bash":return v(["bash"],t);case"markdown":case"md":return v(["html","jsx","bash"],t);default:return v(Object.keys(y),t)}}(o,r),l=n.split("\n"),i=Object.fromEntries(r.map((e=>[e.className,{start:0,range:""}]))),s=Object.fromEntries(r.filter((e=>e.line)).map((e=>{let{className:t,line:n}=e;return[n,t]}))),u=Object.fromEntries(r.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.start,t]}))),m=Object.fromEntries(r.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.end,t]})));for(let p=0;p<l.length;){const e=l[p].match(c);if(!e){p+=1;continue}const t=e.slice(1).find((e=>void 0!==e));s[t]?i[s[t]].range+=`${p},`:u[t]?i[u[t]].start=p:m[t]&&(i[m[t]].range+=`${i[m[t]].start}-${p-1},`),l.splice(p,1)}n=l.join("\n");const d={};return Object.entries(i).forEach((e=>{let[t,{range:n}]=e;f()(n).forEach((e=>{d[e]??=[],d[e].push(t)}))})),{lineClassNames:d,code:n}}const E={codeBlockContainer:"codeBlockContainer_Ckt0"};function k(e){let{as:t,...n}=e;const r=function(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach((e=>{let[o,r]=e;const a=t[o];a&&"string"==typeof r&&(n[a]=r)})),n}(m());return o.createElement(t,(0,a.Z)({},n,{style:r,className:(0,i.Z)(n.className,E.codeBlockContainer,d.k.common.codeBlock)}))}const N={codeBlockContent:"codeBlockContent_biex",codeBlockTitle:"codeBlockTitle_Ktv7",codeBlock:"codeBlock_bY9V",codeBlockStandalone:"codeBlockStandalone_MEMb",codeBlockLines:"codeBlockLines_e6Vv",codeBlockLinesWithNumbering:"codeBlockLinesWithNumbering_o6Pm",buttonGroup:"buttonGroup__atx"};function C(e){let{children:t,className:n}=e;return o.createElement(k,{as:"pre",tabIndex:0,className:(0,i.Z)(N.codeBlockStandalone,"thin-scrollbar",n)},o.createElement("code",{className:N.codeBlockLines},t))}var L=n(902);const w={attributes:!0,characterData:!0,childList:!0,subtree:!0};function B(e,t){const[n,r]=(0,o.useState)(),a=(0,o.useCallback)((()=>{r(e.current?.closest("[role=tabpanel][hidden]"))}),[e,r]);(0,o.useEffect)((()=>{a()}),[a]),function(e,t,n){void 0===n&&(n=w);const r=(0,L.zX)(t),a=(0,L.Ql)(n);(0,o.useEffect)((()=>{const t=new MutationObserver(r);return e&&t.observe(e,a),()=>t.disconnect()}),[e,r,a])}(n,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),a())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}const x={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]};var T={Prism:n(7410).Z,theme:x};function O(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Z(){return Z=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},Z.apply(this,arguments)}var j=/\r\n|\r|\n/,H=function(e){0===e.length?e.push({types:["plain"],content:"\n",empty:!0}):1===e.length&&""===e[0].content&&(e[0].content="\n",e[0].empty=!0)},_=function(e,t){var n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)};function S(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&-1===t.indexOf(o)&&(n[o]=e[o]);return n}var A=function(e){function t(){for(var t=this,n=[],o=arguments.length;o--;)n[o]=arguments[o];e.apply(this,n),O(this,"getThemeDict",(function(e){if(void 0!==t.themeDict&&e.theme===t.prevTheme&&e.language===t.prevLanguage)return t.themeDict;t.prevTheme=e.theme,t.prevLanguage=e.language;var n=e.theme?function(e,t){var n=e.plain,o=Object.create(null),r=e.styles.reduce((function(e,n){var o=n.languages,r=n.style;return o&&!o.includes(t)||n.types.forEach((function(t){var n=Z({},e[t],r);e[t]=n})),e}),o);return r.root=n,r.plain=Z({},n,{backgroundColor:null}),r}(e.theme,e.language):void 0;return t.themeDict=n})),O(this,"getLineProps",(function(e){var n=e.key,o=e.className,r=e.style,a=Z({},S(e,["key","className","style","line"]),{className:"token-line",style:void 0,key:void 0}),c=t.getThemeDict(t.props);return void 0!==c&&(a.style=c.plain),void 0!==r&&(a.style=void 0!==a.style?Z({},a.style,r):r),void 0!==n&&(a.key=n),o&&(a.className+=" "+o),a})),O(this,"getStyleForToken",(function(e){var n=e.types,o=e.empty,r=n.length,a=t.getThemeDict(t.props);if(void 0!==a){if(1===r&&"plain"===n[0])return o?{display:"inline-block"}:void 0;if(1===r&&!o)return a[n[0]];var c=o?{display:"inline-block"}:{},l=n.map((function(e){return a[e]}));return Object.assign.apply(Object,[c].concat(l))}})),O(this,"getTokenProps",(function(e){var n=e.key,o=e.className,r=e.style,a=e.token,c=Z({},S(e,["key","className","style","token"]),{className:"token "+a.types.join(" "),children:a.content,style:t.getStyleForToken(a),key:void 0});return void 0!==r&&(c.style=void 0!==c.style?Z({},c.style,r):r),void 0!==n&&(c.key=n),o&&(c.className+=" "+o),c})),O(this,"tokenize",(function(e,t,n,o){var r={code:t,grammar:n,language:o,tokens:[]};e.hooks.run("before-tokenize",r);var a=r.tokens=e.tokenize(r.code,r.grammar,r.language);return e.hooks.run("after-tokenize",r),a}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.render=function(){var e=this.props,t=e.Prism,n=e.language,o=e.code,r=e.children,a=this.getThemeDict(this.props),c=t.languages[n];return r({tokens:function(e){for(var t=[[]],n=[e],o=[0],r=[e.length],a=0,c=0,l=[],i=[l];c>-1;){for(;(a=o[c]++)<r[c];){var s=void 0,u=t[c],m=n[c][a];if("string"==typeof m?(u=c>0?u:["plain"],s=m):(u=_(u,m.type),m.alias&&(u=_(u,m.alias)),s=m.content),"string"==typeof s){var d=s.split(j),p=d.length;l.push({types:u,content:d[0]});for(var f=1;f<p;f++)H(l),i.push(l=[]),l.push({types:u,content:d[f]})}else c++,t.push(u),n.push(s),o.push(0),r.push(s.length)}c--,t.pop(),n.pop(),o.pop(),r.pop()}return H(l),i}(void 0!==c?this.tokenize(t,o,c,n):[o]),className:"prism-code language-"+n,style:void 0!==a?a.root:{},getLineProps:this.getLineProps,getTokenProps:this.getTokenProps})},t}(o.Component);const I=A,P={codeLine:"codeLine_lJS_",codeLineNumber:"codeLineNumber_Tfdd",codeLineContent:"codeLineContent_feaV"};function z(e){let{line:t,classNames:n,showLineNumbers:r,getLineProps:c,getTokenProps:l}=e;1===t.length&&"\n"===t[0].content&&(t[0].content="");const s=c({line:t,className:(0,i.Z)(n,r&&P.codeLine)}),u=t.map(((e,t)=>o.createElement("span",(0,a.Z)({key:t},l({token:e,key:t})))));return o.createElement("span",s,r?o.createElement(o.Fragment,null,o.createElement("span",{className:P.codeLineNumber}),o.createElement("span",{className:P.codeLineContent},u)):u,o.createElement("br",null))}var M=n(5999);const D={copyButtonCopied:"copyButtonCopied_obH4",copyButtonIcons:"copyButtonIcons_eSgA",copyButtonIcon:"copyButtonIcon_y97N",copyButtonSuccessIcon:"copyButtonSuccessIcon_LjdS"};function W(e){let{code:t,className:n}=e;const[r,a]=(0,o.useState)(!1),c=(0,o.useRef)(void 0),l=(0,o.useCallback)((()=>{!function(e,t){let{target:n=document.body}=void 0===t?{}:t;if("string"!=typeof e)throw new TypeError(`Expected parameter \`text\` to be a \`string\`, got \`${typeof e}\`.`);const o=document.createElement("textarea"),r=document.activeElement;o.value=e,o.setAttribute("readonly",""),o.style.contain="strict",o.style.position="absolute",o.style.left="-9999px",o.style.fontSize="12pt";const a=document.getSelection(),c=a.rangeCount>0&&a.getRangeAt(0);n.append(o),o.select(),o.selectionStart=0,o.selectionEnd=e.length;let l=!1;try{l=document.execCommand("copy")}catch{}o.remove(),c&&(a.removeAllRanges(),a.addRange(c)),r&&r.focus()}(t),a(!0),c.current=window.setTimeout((()=>{a(!1)}),1e3)}),[t]);return(0,o.useEffect)((()=>()=>window.clearTimeout(c.current)),[]),o.createElement("button",{type:"button","aria-label":r?(0,M.I)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,M.I)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),title:(0,M.I)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,i.Z)("clean-btn",n,D.copyButton,r&&D.copyButtonCopied),onClick:l},o.createElement("span",{className:D.copyButtonIcons,"aria-hidden":"true"},o.createElement("svg",{className:D.copyButtonIcon,viewBox:"0 0 24 24"},o.createElement("path",{d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"})),o.createElement("svg",{className:D.copyButtonSuccessIcon,viewBox:"0 0 24 24"},o.createElement("path",{d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"}))))}const R={wordWrapButtonIcon:"wordWrapButtonIcon_Bwma",wordWrapButtonEnabled:"wordWrapButtonEnabled_EoeP"};function V(e){let{className:t,onClick:n,isEnabled:r}=e;const a=(0,M.I)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return o.createElement("button",{type:"button",onClick:n,className:(0,i.Z)("clean-btn",t,r&&R.wordWrapButtonEnabled),"aria-label":a,title:a},o.createElement("svg",{className:R.wordWrapButtonIcon,viewBox:"0 0 24 24","aria-hidden":"true"},o.createElement("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"})))}function $(e){let{children:t,className:n="",metastring:r,title:c,showLineNumbers:l,language:s}=e;const{prism:{defaultLanguage:d,magicComments:p}}=(0,u.L)(),f=s??function(e){const t=e.split(" ").find((e=>e.startsWith("language-")));return t?.replace(/language-/,"")}(n)??d,g=m(),y=function(){const[e,t]=(0,o.useState)(!1),[n,r]=(0,o.useState)(!1),a=(0,o.useRef)(null),c=(0,o.useCallback)((()=>{const n=a.current.querySelector("code");e?n.removeAttribute("style"):(n.style.whiteSpace="pre-wrap",n.style.overflowWrap="anywhere"),t((e=>!e))}),[a,e]),l=(0,o.useCallback)((()=>{const{scrollWidth:e,clientWidth:t}=a.current,n=e>t||a.current.querySelector("code").hasAttribute("style");r(n)}),[a]);return B(a,l),(0,o.useEffect)((()=>{l()}),[e,l]),(0,o.useEffect)((()=>(window.addEventListener("resize",l,{passive:!0}),()=>{window.removeEventListener("resize",l)})),[l]),{codeBlockRef:a,isEnabled:e,isCodeScrollable:n,toggle:c}}(),v=function(e){return e?.match(h)?.groups.title??""}(r)||c,{lineClassNames:E,code:C}=b(t,{metastring:r,language:f,magicComments:p}),L=l??function(e){return Boolean(e?.includes("showLineNumbers"))}(r);return o.createElement(k,{as:"div",className:(0,i.Z)(n,f&&!n.includes(`language-${f}`)&&`language-${f}`)},v&&o.createElement("div",{className:N.codeBlockTitle},v),o.createElement("div",{className:N.codeBlockContent},o.createElement(I,(0,a.Z)({},T,{theme:g,code:C,language:f??"text"}),(e=>{let{className:t,tokens:n,getLineProps:r,getTokenProps:a}=e;return o.createElement("pre",{tabIndex:0,ref:y.codeBlockRef,className:(0,i.Z)(t,N.codeBlock,"thin-scrollbar")},o.createElement("code",{className:(0,i.Z)(N.codeBlockLines,L&&N.codeBlockLinesWithNumbering)},n.map(((e,t)=>o.createElement(z,{key:t,line:e,getLineProps:r,getTokenProps:a,classNames:E[t],showLineNumbers:L})))))})),o.createElement("div",{className:N.buttonGroup},(y.isEnabled||y.isCodeScrollable)&&o.createElement(V,{className:N.codeButton,onClick:()=>y.toggle(),isEnabled:y.isEnabled}),o.createElement(W,{className:N.codeButton,code:C}))))}function q(e){let{children:t,...n}=e;const r=(0,l.Z)(),c=function(e){return o.Children.toArray(e).some((e=>(0,o.isValidElement)(e)))?e:Array.isArray(e)?e.join(""):e}(t),i="string"==typeof c?$:C;return o.createElement(i,(0,a.Z)({key:String(r)},n),c)}var F=n(9960);var U=n(6043);const G={details:"details_lb9f",isBrowser:"isBrowser_bmU9",collapsibleContent:"collapsibleContent_i85q"};function Y(e){return!!e&&("SUMMARY"===e.tagName||Y(e.parentElement))}function Q(e,t){return!!e&&(e===t||Q(e.parentElement,t))}function X(e){let{summary:t,children:n,...r}=e;const c=(0,l.Z)(),s=(0,o.useRef)(null),{collapsed:u,setCollapsed:m}=(0,U.u)({initialState:!r.open}),[d,p]=(0,o.useState)(r.open),f=o.isValidElement(t)?t:o.createElement("summary",null,t??"Details");return o.createElement("details",(0,a.Z)({},r,{ref:s,open:d,"data-collapsed":u,className:(0,i.Z)(G.details,c&&G.isBrowser,r.className),onMouseDown:e=>{Y(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const t=e.target;Y(t)&&Q(t,s.current)&&(e.preventDefault(),u?(m(!1),p(!0)):m(!0))}}),f,o.createElement(U.z,{lazy:!1,collapsed:u,disableSSRStyle:!0,onCollapseTransitionEnd:e=>{m(e),p(!e)}},o.createElement("div",{className:G.collapsibleContent},n)))}const J={details:"details_b_Ee"},K="alert alert--info";function ee(e){let{...t}=e;return o.createElement(X,(0,a.Z)({},t,{className:(0,i.Z)(K,J.details,t.className)}))}var te=n(2503);function ne(e){return o.createElement(te.Z,e)}const oe={containsTaskList:"containsTaskList_mC6p"};const re={img:"img_ev3q"};const ae="admonition_LlT9",ce="admonitionHeading_tbUL",le="admonitionIcon_kALy",ie="admonitionContent_S0QG";const se={note:{infimaClassName:"secondary",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 14 16"},o.createElement("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))},label:o.createElement(M.Z,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)"},"note")},tip:{infimaClassName:"success",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 12 16"},o.createElement("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))},label:o.createElement(M.Z,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)"},"tip")},danger:{infimaClassName:"danger",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 12 16"},o.createElement("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))},label:o.createElement(M.Z,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)"},"danger")},info:{infimaClassName:"info",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 14 16"},o.createElement("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))},label:o.createElement(M.Z,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)"},"info")},caution:{infimaClassName:"warning",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 16 16"},o.createElement("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))},label:o.createElement(M.Z,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)"},"caution")}},ue={secondary:"note",important:"info",success:"tip",warning:"danger"};function me(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=o.Children.toArray(e),n=t.find((e=>o.isValidElement(e)&&"mdxAdmonitionTitle"===e.props?.mdxType)),r=o.createElement(o.Fragment,null,t.filter((e=>e!==n)));return{mdxAdmonitionTitle:n,rest:r}}(e.children);return{...e,title:e.title??t,children:n}}const de={head:function(e){const t=o.Children.map(e.children,(e=>o.isValidElement(e)?function(e){if(e.props?.mdxType&&e.props.originalType){const{mdxType:t,originalType:n,...r}=e.props;return o.createElement(e.props.originalType,r)}return e}(e):e));return o.createElement(c.Z,e,t)},code:function(e){const t=["a","abbr","b","br","button","cite","code","del","dfn","em","i","img","input","ins","kbd","label","object","output","q","ruby","s","small","span","strong","sub","sup","time","u","var","wbr"];return o.Children.toArray(e.children).every((e=>"string"==typeof e&&!e.includes("\n")||(0,o.isValidElement)(e)&&t.includes(e.props?.mdxType)))?o.createElement("code",e):o.createElement(q,e)},a:function(e){return o.createElement(F.Z,e)},pre:function(e){return o.createElement(q,(0,o.isValidElement)(e.children)&&"code"===e.children.props?.originalType?e.children.props:{...e})},details:function(e){const t=o.Children.toArray(e.children),n=t.find((e=>o.isValidElement(e)&&"summary"===e.props?.mdxType)),r=o.createElement(o.Fragment,null,t.filter((e=>e!==n)));return o.createElement(ee,(0,a.Z)({},e,{summary:n}),r)},ul:function(e){return o.createElement("ul",(0,a.Z)({},e,{className:(t=e.className,(0,i.Z)(t,t?.includes("contains-task-list")&&oe.containsTaskList))}));var t},img:function(e){return o.createElement("img",(0,a.Z)({loading:"lazy"},e,{className:(t=e.className,(0,i.Z)(t,re.img))}));var t},h1:e=>o.createElement(ne,(0,a.Z)({as:"h1"},e)),h2:e=>o.createElement(ne,(0,a.Z)({as:"h2"},e)),h3:e=>o.createElement(ne,(0,a.Z)({as:"h3"},e)),h4:e=>o.createElement(ne,(0,a.Z)({as:"h4"},e)),h5:e=>o.createElement(ne,(0,a.Z)({as:"h5"},e)),h6:e=>o.createElement(ne,(0,a.Z)({as:"h6"},e)),admonition:function(e){const{children:t,type:n,title:r,icon:a}=me(e),c=function(e){const t=ue[e]??e,n=se[t];return n||(console.warn(`No admonition config found for admonition type "${t}". Using Info as fallback.`),se.info)}(n),l=r??c.label,{iconComponent:s}=c,u=a??o.createElement(s,null);return o.createElement("div",{className:(0,i.Z)(d.k.common.admonition,d.k.common.admonitionType(e.type),"alert",`alert--${c.infimaClassName}`,ae)},o.createElement("div",{className:ce},o.createElement("span",{className:le},u),l),o.createElement("div",{className:ie},t))},mermaid:()=>null};function pe(e){let{children:t}=e;return o.createElement(r.Zo,{components:de},t)}},9407:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var o=n(7462),r=n(7294),a=n(6010),c=n(3743);const l={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"},i="table-of-contents__link toc-highlight",s="table-of-contents__link--active";function u(e){let{className:t,...n}=e;return r.createElement("div",{className:(0,a.Z)(l.tableOfContents,"thin-scrollbar",t)},r.createElement(c.Z,(0,o.Z)({},n,{linkClassName:i,linkActiveClassName:s})))}},3743:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var o=n(7462),r=n(7294),a=n(6668);function c(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const o=n.slice(2,e.level);e.parentIndex=Math.max(...o),n[e.level]=t}));const o=[];return t.forEach((e=>{const{parentIndex:n,...r}=e;n>=0?t[n].children.push(r):o.push(r)})),o}function l(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:o}=e;return t.flatMap((e=>{const t=l({toc:e.children,minHeadingLevel:n,maxHeadingLevel:o});return function(e){return e.level>=n&&e.level<=o}(e)?[{...e,children:t}]:t}))}function i(e){const t=e.getBoundingClientRect();return t.top===t.bottom?i(e.parentNode):t}function s(e,t){let{anchorTopOffset:n}=t;const o=e.find((e=>i(e).top>=n));if(o){return function(e){return e.top>0&&e.bottom<window.innerHeight/2}(i(o))?o:e[e.indexOf(o)-1]??null}return e[e.length-1]??null}function u(){const e=(0,r.useRef)(0),{navbar:{hideOnScroll:t}}=(0,a.L)();return(0,r.useEffect)((()=>{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function m(e){const t=(0,r.useRef)(void 0),n=u();(0,r.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:o,linkActiveClassName:r,minHeadingLevel:a,maxHeadingLevel:c}=e;function l(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(o),l=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const o=[];for(let r=t;r<=n;r+=1)o.push(`h${r}.anchor`);return Array.from(document.querySelectorAll(o.join()))}({minHeadingLevel:a,maxHeadingLevel:c}),i=s(l,{anchorTopOffset:n.current}),u=e.find((e=>i&&i.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(r),e.classList.add(r),t.current=e):e.classList.remove(r)}(e,e===u)}))}return document.addEventListener("scroll",l),document.addEventListener("resize",l),l(),()=>{document.removeEventListener("scroll",l),document.removeEventListener("resize",l)}}),[e,n])}function d(e){let{toc:t,className:n,linkClassName:o,isChild:a}=e;return t.length?r.createElement("ul",{className:a?void 0:n},t.map((e=>r.createElement("li",{key:e.id},r.createElement("a",{href:`#${e.id}`,className:o??void 0,dangerouslySetInnerHTML:{__html:e.value}}),r.createElement(d,{isChild:!0,toc:e.children,className:n,linkClassName:o}))))):null}const p=r.memo(d);function f(e){let{toc:t,className:n="table-of-contents table-of-contents__left-border",linkClassName:i="table-of-contents__link",linkActiveClassName:s,minHeadingLevel:u,maxHeadingLevel:d,...f}=e;const h=(0,a.L)(),g=u??h.tableOfContents.minHeadingLevel,y=d??h.tableOfContents.maxHeadingLevel,v=function(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:o}=e;return(0,r.useMemo)((()=>l({toc:c(t),minHeadingLevel:n,maxHeadingLevel:o})),[t,n,o])}({toc:t,minHeadingLevel:g,maxHeadingLevel:y});return m((0,r.useMemo)((()=>{if(i&&s)return{linkClassName:i,linkActiveClassName:s,minHeadingLevel:g,maxHeadingLevel:y}}),[i,s,g,y])),r.createElement(p,(0,o.Z)({toc:v,className:n,linkClassName:i},f))}},7594:(e,t)=>{function n(e){let t,n=[];for(let o of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(o))n.push(parseInt(o,10));else if(t=o.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,o,r,a]=t;if(o&&a){o=parseInt(o),a=parseInt(a);const e=o<a?1:-1;"-"!==r&&".."!==r&&"\u2025"!==r||(a+=e);for(let t=o;t!==a;t+=e)n.push(t)}}return n}t.default=n,e.exports=n}}]); \ No newline at end of file diff --git a/assets/js/284.999940bb.js b/assets/js/284.999940bb.js new file mode 100644 index 00000000..a519131a --- /dev/null +++ b/assets/js/284.999940bb.js @@ -0,0 +1 @@ +(self.webpackChunkweb=self.webpackChunkweb||[]).push([[284],{8966:(e,n,t)=>{"use strict";t.d(n,{Z:()=>H});var s=t(7294),o=t(5893);function c(e){const{mdxAdmonitionTitle:n,rest:t}=function(e){const n=s.Children.toArray(e),t=n.find((e=>s.isValidElement(e)&&"mdxAdmonitionTitle"===e.type)),c=n.filter((e=>e!==t)),i=t?.props.children;return{mdxAdmonitionTitle:i,rest:c.length>0?(0,o.jsx)(o.Fragment,{children:c}):null}}(e.children),c=e.title??n;return{...e,...c&&{title:c},children:t}}var i=t(6010),a=t(5999),r=t(5281);const l={admonition:"admonition_LMjb",admonitionHeading:"admonitionHeading_GGQ4",admonitionIcon:"admonitionIcon_ifdW",admonitionContent:"admonitionContent_pGk6"};function d(e){let{type:n,className:t,children:s}=e;return(0,o.jsx)("div",{className:(0,i.Z)(r.k.common.admonition,r.k.common.admonitionType(n),l.admonition,t),children:s})}function u(e){let{icon:n,title:t}=e;return(0,o.jsxs)("div",{className:l.admonitionHeading,children:[(0,o.jsx)("span",{className:l.admonitionIcon,children:n}),t]})}function m(e){let{children:n}=e;return n?(0,o.jsx)("div",{className:l.admonitionContent,children:n}):null}function h(e){const{type:n,icon:t,title:s,children:c,className:i}=e;return(0,o.jsxs)(d,{type:n,className:i,children:[(0,o.jsx)(u,{title:s,icon:t}),(0,o.jsx)(m,{children:c})]})}function f(e){return(0,o.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,o.jsx)("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"})})}const p={icon:(0,o.jsx)(f,{}),title:(0,o.jsx)(a.Z,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)",children:"note"})};function x(e){return(0,o.jsx)(h,{...p,...e,className:(0,i.Z)("alert alert--secondary",e.className),children:e.children})}function g(e){return(0,o.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,o.jsx)("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"})})}const v={icon:(0,o.jsx)(g,{}),title:(0,o.jsx)(a.Z,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)",children:"tip"})};function j(e){return(0,o.jsx)(h,{...v,...e,className:(0,i.Z)("alert alert--success",e.className),children:e.children})}function b(e){return(0,o.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,o.jsx)("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"})})}const N={icon:(0,o.jsx)(b,{}),title:(0,o.jsx)(a.Z,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)",children:"info"})};function k(e){return(0,o.jsx)(h,{...N,...e,className:(0,i.Z)("alert alert--info",e.className),children:e.children})}function C(e){return(0,o.jsx)("svg",{viewBox:"0 0 16 16",...e,children:(0,o.jsx)("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"})})}const y={icon:(0,o.jsx)(C,{}),title:(0,o.jsx)(a.Z,{id:"theme.admonition.warning",description:"The default label used for the Warning admonition (:::warning)",children:"warning"})};function L(e){return(0,o.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,o.jsx)("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"})})}const B={icon:(0,o.jsx)(L,{}),title:(0,o.jsx)(a.Z,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)",children:"danger"})};const w={icon:(0,o.jsx)(C,{}),title:(0,o.jsx)(a.Z,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)",children:"caution"})};const E={...{note:x,tip:j,info:k,warning:function(e){return(0,o.jsx)(h,{...y,...e,className:(0,i.Z)("alert alert--warning",e.className),children:e.children})},danger:function(e){return(0,o.jsx)(h,{...B,...e,className:(0,i.Z)("alert alert--danger",e.className),children:e.children})}},...{secondary:e=>(0,o.jsx)(x,{title:"secondary",...e}),important:e=>(0,o.jsx)(k,{title:"important",...e}),success:e=>(0,o.jsx)(j,{title:"success",...e}),caution:function(e){return(0,o.jsx)(h,{...w,...e,className:(0,i.Z)("alert alert--warning",e.className),children:e.children})}}};function H(e){const n=c(e),t=(s=n.type,E[s]||(console.warn(`No admonition component found for admonition type "${s}". Using Info as fallback.`),E.info));var s;return(0,o.jsx)(t,{...n})}},1299:(e,n,t)=>{"use strict";t.d(n,{Z:()=>se});var s=t(7294),o=t(1151),c=t(5742),i=t(2389),a=t(6010),r=t(2949),l=t(6668);function d(){const{prism:e}=(0,l.L)(),{colorMode:n}=(0,r.I)(),t=e.theme,s=e.darkTheme||t;return"dark"===n?s:t}var u=t(5281),m=t(7594),h=t.n(m);const f=/title=(?<quote>["'])(?<title>.*?)\1/,p=/\{(?<range>[\d,-]+)\}/,x={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"},lua:{start:"--",end:""},wasm:{start:"\\;\\;",end:""},tex:{start:"%",end:""}};function g(e,n){const t=e.map((e=>{const{start:t,end:s}=x[e];return`(?:${t}\\s*(${n.flatMap((e=>[e.line,e.block?.start,e.block?.end].filter(Boolean))).join("|")})\\s*${s})`})).join("|");return new RegExp(`^\\s*(?:${t})\\s*$`)}function v(e,n){let t=e.replace(/\n$/,"");const{language:s,magicComments:o,metastring:c}=n;if(c&&p.test(c)){const e=c.match(p).groups.range;if(0===o.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${c}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const n=o[0].className,s=h()(e).filter((e=>e>0)).map((e=>[e-1,[n]]));return{lineClassNames:Object.fromEntries(s),code:t}}if(void 0===s)return{lineClassNames:{},code:t};const i=function(e,n){switch(e){case"js":case"javascript":case"ts":case"typescript":return g(["js","jsBlock"],n);case"jsx":case"tsx":return g(["js","jsBlock","jsx"],n);case"html":return g(["js","jsBlock","html"],n);case"python":case"py":case"bash":return g(["bash"],n);case"markdown":case"md":return g(["html","jsx","bash"],n);case"tex":case"latex":case"matlab":return g(["tex"],n);case"lua":case"haskell":case"sql":return g(["lua"],n);case"wasm":return g(["wasm"],n);default:return g(Object.keys(x).filter((e=>!["lua","wasm","tex","latex","matlab"].includes(e))),n)}}(s,o),a=t.split("\n"),r=Object.fromEntries(o.map((e=>[e.className,{start:0,range:""}]))),l=Object.fromEntries(o.filter((e=>e.line)).map((e=>{let{className:n,line:t}=e;return[t,n]}))),d=Object.fromEntries(o.filter((e=>e.block)).map((e=>{let{className:n,block:t}=e;return[t.start,n]}))),u=Object.fromEntries(o.filter((e=>e.block)).map((e=>{let{className:n,block:t}=e;return[t.end,n]})));for(let h=0;h<a.length;){const e=a[h].match(i);if(!e){h+=1;continue}const n=e.slice(1).find((e=>void 0!==e));l[n]?r[l[n]].range+=`${h},`:d[n]?r[d[n]].start=h:u[n]&&(r[u[n]].range+=`${r[u[n]].start}-${h-1},`),a.splice(h,1)}t=a.join("\n");const m={};return Object.entries(r).forEach((e=>{let[n,{range:t}]=e;h()(t).forEach((e=>{m[e]??=[],m[e].push(n)}))})),{lineClassNames:m,code:t}}const j={codeBlockContainer:"codeBlockContainer_aalF"};var b=t(5893);function N(e){let{as:n,...t}=e;const s=function(e){const n={color:"--prism-color",backgroundColor:"--prism-background-color"},t={};return Object.entries(e.plain).forEach((e=>{let[s,o]=e;const c=n[s];c&&"string"==typeof o&&(t[c]=o)})),t}(d());return(0,b.jsx)(n,{...t,style:s,className:(0,a.Z)(t.className,j.codeBlockContainer,u.k.common.codeBlock)})}const k={codeBlockContent:"codeBlockContent_MHx8",codeBlockTitle:"codeBlockTitle_RqKv",codeBlock:"codeBlock_zHgq",codeBlockStandalone:"codeBlockStandalone_Nhx8",codeBlockLines:"codeBlockLines_RjmQ",codeBlockLinesWithNumbering:"codeBlockLinesWithNumbering_xeGh",buttonGroup:"buttonGroup_Sd8_"};function C(e){let{children:n,className:t}=e;return(0,b.jsx)(N,{as:"pre",tabIndex:0,className:(0,a.Z)(k.codeBlockStandalone,"thin-scrollbar",t),children:(0,b.jsx)("code",{className:k.codeBlockLines,children:n})})}var y=t(902);const L={attributes:!0,characterData:!0,childList:!0,subtree:!0};function B(e,n){const[t,o]=(0,s.useState)(),c=(0,s.useCallback)((()=>{o(e.current?.closest("[role=tabpanel][hidden]"))}),[e,o]);(0,s.useEffect)((()=>{c()}),[c]),function(e,n,t){void 0===t&&(t=L);const o=(0,y.zX)(n),c=(0,y.Ql)(t);(0,s.useEffect)((()=>{const n=new MutationObserver(o);return e&&n.observe(e,c),()=>n.disconnect()}),[e,o,c])}(t,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(n(),c())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}var w=t(4965);const E={codeLine:"codeLine_gn0d",codeLineNumber:"codeLineNumber_SYni",codeLineContent:"codeLineContent_hJ_G"};function H(e){let{line:n,classNames:t,showLineNumbers:s,getLineProps:o,getTokenProps:c}=e;1===n.length&&"\n"===n[0].content&&(n[0].content="");const i=o({line:n,className:(0,a.Z)(t,s&&E.codeLine)}),r=n.map(((e,n)=>(0,b.jsx)("span",{...c({token:e,key:n})},n)));return(0,b.jsxs)("span",{...i,children:[s?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:E.codeLineNumber}),(0,b.jsx)("span",{className:E.codeLineContent,children:r})]}):r,(0,b.jsx)("br",{})]})}var Z=t(5999);function _(e){return(0,b.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,b.jsx)("path",{fill:"currentColor",d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"})})}function T(e){return(0,b.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,b.jsx)("path",{fill:"currentColor",d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"})})}const I={copyButtonCopied:"copyButtonCopied_cTKk",copyButtonIcons:"copyButtonIcons_LnQD",copyButtonIcon:"copyButtonIcon_t3l1",copyButtonSuccessIcon:"copyButtonSuccessIcon_IiZV"};function A(e){let{code:n,className:t}=e;const[o,c]=(0,s.useState)(!1),i=(0,s.useRef)(void 0),r=(0,s.useCallback)((()=>{!function(e,n){let{target:t=document.body}=void 0===n?{}:n;if("string"!=typeof e)throw new TypeError(`Expected parameter \`text\` to be a \`string\`, got \`${typeof e}\`.`);const s=document.createElement("textarea"),o=document.activeElement;s.value=e,s.setAttribute("readonly",""),s.style.contain="strict",s.style.position="absolute",s.style.left="-9999px",s.style.fontSize="12pt";const c=document.getSelection(),i=c.rangeCount>0&&c.getRangeAt(0);t.append(s),s.select(),s.selectionStart=0,s.selectionEnd=e.length;let a=!1;try{a=document.execCommand("copy")}catch{}s.remove(),i&&(c.removeAllRanges(),c.addRange(i)),o&&o.focus()}(n),c(!0),i.current=window.setTimeout((()=>{c(!1)}),1e3)}),[n]);return(0,s.useEffect)((()=>()=>window.clearTimeout(i.current)),[]),(0,b.jsx)("button",{type:"button","aria-label":o?(0,Z.I)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,Z.I)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),title:(0,Z.I)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,a.Z)("clean-btn",t,I.copyButton,o&&I.copyButtonCopied),onClick:r,children:(0,b.jsxs)("span",{className:I.copyButtonIcons,"aria-hidden":"true",children:[(0,b.jsx)(_,{className:I.copyButtonIcon}),(0,b.jsx)(T,{className:I.copyButtonSuccessIcon})]})})}function S(e){return(0,b.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,b.jsx)("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"})})}const M={wordWrapButtonIcon:"wordWrapButtonIcon_mL3R",wordWrapButtonEnabled:"wordWrapButtonEnabled_px86"};function z(e){let{className:n,onClick:t,isEnabled:s}=e;const o=(0,Z.I)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return(0,b.jsx)("button",{type:"button",onClick:t,className:(0,a.Z)("clean-btn",n,s&&M.wordWrapButtonEnabled),"aria-label":o,title:o,children:(0,b.jsx)(S,{className:M.wordWrapButtonIcon,"aria-hidden":"true"})})}function R(e){let{children:n,className:t="",metastring:o,title:c,showLineNumbers:i,language:r}=e;const{prism:{defaultLanguage:u,magicComments:m}}=(0,l.L)(),h=function(e){return e?.toLowerCase()}(r??function(e){const n=e.split(" ").find((e=>e.startsWith("language-")));return n?.replace(/language-/,"")}(t)??u),p=d(),x=function(){const[e,n]=(0,s.useState)(!1),[t,o]=(0,s.useState)(!1),c=(0,s.useRef)(null),i=(0,s.useCallback)((()=>{const t=c.current.querySelector("code");e?t.removeAttribute("style"):(t.style.whiteSpace="pre-wrap",t.style.overflowWrap="anywhere"),n((e=>!e))}),[c,e]),a=(0,s.useCallback)((()=>{const{scrollWidth:e,clientWidth:n}=c.current,t=e>n||c.current.querySelector("code").hasAttribute("style");o(t)}),[c]);return B(c,a),(0,s.useEffect)((()=>{a()}),[e,a]),(0,s.useEffect)((()=>(window.addEventListener("resize",a,{passive:!0}),()=>{window.removeEventListener("resize",a)})),[a]),{codeBlockRef:c,isEnabled:e,isCodeScrollable:t,toggle:i}}(),g=function(e){return e?.match(f)?.groups.title??""}(o)||c,{lineClassNames:j,code:C}=v(n,{metastring:o,language:h,magicComments:m}),y=i??function(e){return Boolean(e?.includes("showLineNumbers"))}(o);return(0,b.jsxs)(N,{as:"div",className:(0,a.Z)(t,h&&!t.includes(`language-${h}`)&&`language-${h}`),children:[g&&(0,b.jsx)("div",{className:k.codeBlockTitle,children:g}),(0,b.jsxs)("div",{className:k.codeBlockContent,children:[(0,b.jsx)(w.y$,{theme:p,code:C,language:h??"text",children:e=>{let{className:n,style:t,tokens:s,getLineProps:o,getTokenProps:c}=e;return(0,b.jsx)("pre",{tabIndex:0,ref:x.codeBlockRef,className:(0,a.Z)(n,k.codeBlock,"thin-scrollbar"),style:t,children:(0,b.jsx)("code",{className:(0,a.Z)(k.codeBlockLines,y&&k.codeBlockLinesWithNumbering),children:s.map(((e,n)=>(0,b.jsx)(H,{line:e,getLineProps:o,getTokenProps:c,classNames:j[n],showLineNumbers:y},n)))})})}}),(0,b.jsxs)("div",{className:k.buttonGroup,children:[(x.isEnabled||x.isCodeScrollable)&&(0,b.jsx)(z,{className:k.codeButton,onClick:()=>x.toggle(),isEnabled:x.isEnabled}),(0,b.jsx)(A,{className:k.codeButton,code:C})]})]})]})}function O(e){let{children:n,...t}=e;const o=(0,i.Z)(),c=function(e){return s.Children.toArray(e).some((e=>(0,s.isValidElement)(e)))?e:Array.isArray(e)?e.join(""):e}(n),a="string"==typeof c?R:C;return(0,b.jsx)(a,{...t,children:c},String(o))}var $=t(9960);var W=t(6043);const V={details:"details_lb9f",isBrowser:"isBrowser_bmU9",collapsibleContent:"collapsibleContent_i85q"};function D(e){return!!e&&("SUMMARY"===e.tagName||D(e.parentElement))}function q(e,n){return!!e&&(e===n||q(e.parentElement,n))}function P(e){let{summary:n,children:t,...o}=e;const c=(0,i.Z)(),r=(0,s.useRef)(null),{collapsed:l,setCollapsed:d}=(0,W.u)({initialState:!o.open}),[u,m]=(0,s.useState)(o.open),h=s.isValidElement(n)?n:(0,b.jsx)("summary",{children:n??"Details"});return(0,b.jsxs)("details",{...o,ref:r,open:u,"data-collapsed":l,className:(0,a.Z)(V.details,c&&V.isBrowser,o.className),onMouseDown:e=>{D(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const n=e.target;D(n)&&q(n,r.current)&&(e.preventDefault(),l?(d(!1),m(!0)):d(!0))},children:[h,(0,b.jsx)(W.z,{lazy:!1,collapsed:l,disableSSRStyle:!0,onCollapseTransitionEnd:e=>{d(e),m(!e)},children:(0,b.jsx)("div",{className:V.collapsibleContent,children:t})})]})}const G={details:"details_jW4y"},F="alert alert--info";function Q(e){let{...n}=e;return(0,b.jsx)(P,{...n,className:(0,a.Z)(F,G.details,n.className)})}function U(e){const n=s.Children.toArray(e.children),t=n.find((e=>s.isValidElement(e)&&"summary"===e.type)),o=(0,b.jsx)(b.Fragment,{children:n.filter((e=>e!==t))});return(0,b.jsx)(Q,{...e,summary:t,children:o})}var K=t(2757);function X(e){return(0,b.jsx)(K.Z,{...e})}const Y={containsTaskList:"containsTaskList_t83X"};function J(e){if(void 0!==e)return(0,a.Z)(e,e?.includes("contains-task-list")&&Y.containsTaskList)}const ee={img:"img_wQsy"};var ne=t(8966);const te={Head:c.Z,details:U,Details:U,code:function(e){return s.Children.toArray(e.children).every((e=>"string"==typeof e&&!e.includes("\n")))?(0,b.jsx)("code",{...e}):(0,b.jsx)(O,{...e})},a:function(e){return(0,b.jsx)($.Z,{...e})},pre:function(e){return(0,b.jsx)(b.Fragment,{children:e.children})},ul:function(e){return(0,b.jsx)("ul",{...e,className:J(e.className)})},img:function(e){return(0,b.jsx)("img",{loading:"lazy",...e,className:(n=e.className,(0,a.Z)(n,ee.img))});var n},h1:e=>(0,b.jsx)(X,{as:"h1",...e}),h2:e=>(0,b.jsx)(X,{as:"h2",...e}),h3:e=>(0,b.jsx)(X,{as:"h3",...e}),h4:e=>(0,b.jsx)(X,{as:"h4",...e}),h5:e=>(0,b.jsx)(X,{as:"h5",...e}),h6:e=>(0,b.jsx)(X,{as:"h6",...e}),admonition:ne.Z,mermaid:()=>null};function se(e){let{children:n}=e;return(0,b.jsx)(o.Z,{components:te,children:n})}},6306:(e,n,t)=>{"use strict";t.d(n,{Z:()=>l});t(7294);var s=t(6010),o=t(5796);const c={tableOfContents:"tableOfContents_IS5x",docItemContainer:"docItemContainer_kAdk"};var i=t(5893);const a="table-of-contents__link toc-highlight",r="table-of-contents__link--active";function l(e){let{className:n,...t}=e;return(0,i.jsx)("div",{className:(0,s.Z)(c.tableOfContents,"thin-scrollbar",n),children:(0,i.jsx)(o.Z,{...t,linkClassName:a,linkActiveClassName:r})})}},5796:(e,n,t)=>{"use strict";t.d(n,{Z:()=>p});var s=t(7294),o=t(6668);function c(e){const n=e.map((e=>({...e,parentIndex:-1,children:[]}))),t=Array(7).fill(-1);n.forEach(((e,n)=>{const s=t.slice(2,e.level);e.parentIndex=Math.max(...s),t[e.level]=n}));const s=[];return n.forEach((e=>{const{parentIndex:t,...o}=e;t>=0?n[t].children.push(o):s.push(o)})),s}function i(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:s}=e;return n.flatMap((e=>{const n=i({toc:e.children,minHeadingLevel:t,maxHeadingLevel:s});return function(e){return e.level>=t&&e.level<=s}(e)?[{...e,children:n}]:n}))}function a(e){const n=e.getBoundingClientRect();return n.top===n.bottom?a(e.parentNode):n}function r(e,n){let{anchorTopOffset:t}=n;const s=e.find((e=>a(e).top>=t));if(s){return function(e){return e.top>0&&e.bottom<window.innerHeight/2}(a(s))?s:e[e.indexOf(s)-1]??null}return e[e.length-1]??null}function l(){const e=(0,s.useRef)(0),{navbar:{hideOnScroll:n}}=(0,o.L)();return(0,s.useEffect)((()=>{e.current=n?0:document.querySelector(".navbar").clientHeight}),[n]),e}function d(e){const n=(0,s.useRef)(void 0),t=l();(0,s.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:s,linkActiveClassName:o,minHeadingLevel:c,maxHeadingLevel:i}=e;function a(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(s),a=function(e){let{minHeadingLevel:n,maxHeadingLevel:t}=e;const s=[];for(let o=n;o<=t;o+=1)s.push(`h${o}.anchor`);return Array.from(document.querySelectorAll(s.join()))}({minHeadingLevel:c,maxHeadingLevel:i}),l=r(a,{anchorTopOffset:t.current}),d=e.find((e=>l&&l.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,t){t?(n.current&&n.current!==e&&n.current.classList.remove(o),e.classList.add(o),n.current=e):e.classList.remove(o)}(e,e===d)}))}return document.addEventListener("scroll",a),document.addEventListener("resize",a),a(),()=>{document.removeEventListener("scroll",a),document.removeEventListener("resize",a)}}),[e,t])}var u=t(9960),m=t(5893);function h(e){let{toc:n,className:t,linkClassName:s,isChild:o}=e;return n.length?(0,m.jsx)("ul",{className:o?void 0:t,children:n.map((e=>(0,m.jsxs)("li",{children:[(0,m.jsx)(u.Z,{to:`#${e.id}`,className:s??void 0,dangerouslySetInnerHTML:{__html:e.value}}),(0,m.jsx)(h,{isChild:!0,toc:e.children,className:t,linkClassName:s})]},e.id)))}):null}const f=s.memo(h);function p(e){let{toc:n,className:t="table-of-contents table-of-contents__left-border",linkClassName:a="table-of-contents__link",linkActiveClassName:r,minHeadingLevel:l,maxHeadingLevel:u,...h}=e;const p=(0,o.L)(),x=l??p.tableOfContents.minHeadingLevel,g=u??p.tableOfContents.maxHeadingLevel,v=function(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:o}=e;return(0,s.useMemo)((()=>i({toc:c(n),minHeadingLevel:t,maxHeadingLevel:o})),[n,t,o])}({toc:n,minHeadingLevel:x,maxHeadingLevel:g});return d((0,s.useMemo)((()=>{if(a&&r)return{linkClassName:a,linkActiveClassName:r,minHeadingLevel:x,maxHeadingLevel:g}}),[a,r,x,g])),(0,m.jsx)(f,{toc:v,className:t,linkClassName:a,...h})}},6689:(e,n,t)=>{"use strict";t.d(n,{Z:()=>h});t(7294);var s=t(6010),o=t(5999),c=t(5742),i=t(5893);function a(){return(0,i.jsx)(o.Z,{id:"theme.unlistedContent.title",description:"The unlisted content banner title",children:"Unlisted page"})}function r(){return(0,i.jsx)(o.Z,{id:"theme.unlistedContent.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function l(){return(0,i.jsx)(c.Z,{children:(0,i.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}var d=t(5281),u=t(8966);function m(e){let{className:n}=e;return(0,i.jsx)(u.Z,{type:"caution",title:(0,i.jsx)(a,{}),className:(0,s.Z)(n,d.k.common.unlistedBanner),children:(0,i.jsx)(r,{})})}function h(e){return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(l,{}),(0,i.jsx)(m,{...e})]})}},7594:(e,n)=>{function t(e){let n,t=[];for(let s of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(s))t.push(parseInt(s,10));else if(n=s.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,s,o,c]=n;if(s&&c){s=parseInt(s),c=parseInt(c);const e=s<c?1:-1;"-"!==o&&".."!==o&&"\u2025"!==o||(c+=e);for(let n=s;n!==c;n+=e)t.push(n)}}return t}n.default=t,e.exports=t},1151:(e,n,t)=>{"use strict";t.d(n,{Z:()=>a,a:()=>i});var s=t(7294);const o={},c=s.createContext(o);function i(e){const n=s.useContext(c);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(c.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/325ecf53.9ab02dd2.js b/assets/js/325ecf53.9ab02dd2.js new file mode 100644 index 00000000..0dc4130c --- /dev/null +++ b/assets/js/325ecf53.9ab02dd2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[45],{9138:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>r,metadata:()=>o,toc:()=>d});var i=n(5893),a=n(1151);const r={},s="Getting Started",o={id:"getting-started/getting-started",title:"Getting Started",description:"Computer Vision powered by Natural Language",source:"@site/docs/getting-started/getting-started.mdx",sourceDirName:"getting-started",slug:"/getting-started/",permalink:"/python-sdk/docs/getting-started/",draft:!1,unlisted:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/getting-started/getting-started.mdx",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",next:{title:"API Tokens",permalink:"/python-sdk/docs/getting-started/api-tokens"}},l={},d=[{value:"Computer Vision powered by Natural Language",id:"computer-vision-powered-by-natural-language",level:2},{value:"How does it work?",id:"how-does-it-work",level:3},{value:"Escalation Technology",id:"escalation-technology",level:3},{value:"Building a simple visual application",id:"building-a-simple-visual-application",level:2}];function c(e){const t={a:"a",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",...(0,a.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h1,{id:"getting-started",children:"Getting Started"}),"\n",(0,i.jsx)(t.h2,{id:"computer-vision-powered-by-natural-language",children:"Computer Vision powered by Natural Language"}),"\n",(0,i.jsx)(t.p,{children:"Build a working computer vision system in just a few lines of python:"}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-python",children:'from groundlight import Groundlight\n\ngl = Groundlight()\ndet = gl.get_or_create_detector(name="doorway", query="Is the doorway open?")\nimg = "./docs/static/img/doorway.jpg" # Image can be a file or a Python object\nimage_query = gl.submit_image_query(detector=det, image=img)\nprint(f"The answer is {image_query.result}")\n'})}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsxs)(t.em,{children:['Note: The SDK is currently in "beta" phase. Interfaces are subject to change in future versions. We will follow ',(0,i.jsx)(t.a,{href:"https://semver.org/",children:"semver"})," semantics for breaking changes."]})}),"\n",(0,i.jsx)(t.h3,{id:"how-does-it-work",children:"How does it work?"}),"\n",(0,i.jsxs)(t.p,{children:["Your images are first analyzed by machine learning (ML) models which are automatically trained on your data. If those models have high enough ",(0,i.jsx)(t.a,{href:"/python-sdk/docs/building-applications/managing-confidence",children:"confidence"}),", that's your answer. But if the models are unsure, then the images are progressively escalated to more resource-intensive analysis methods up to real-time human review. So what you get is a computer vision system that starts working right away without even needing to first gather and label a dataset. At first it will operate with high latency, because people need to review the image queries. But over time, the ML systems will learn and improve so queries come back faster with higher confidence."]}),"\n",(0,i.jsx)(t.h3,{id:"escalation-technology",children:"Escalation Technology"}),"\n",(0,i.jsx)(t.p,{children:"Groundlight's Escalation Technology combines the power of generative AI using our Visual LLM, along with the speed of edge computing, and the reliability of real-time human oversight."}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"diagram showing escalation technology",src:n(7354).Z+"",width:"600",height:"338"})}),"\n",(0,i.jsx)(t.h2,{id:"building-a-simple-visual-application",children:"Building a simple visual application"}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsxs)(t.li,{children:["\n",(0,i.jsxs)(t.p,{children:["Install the ",(0,i.jsx)(t.code,{children:"groundlight"})," SDK. Requires python version 3.7 or higher. See ",(0,i.jsx)(t.a,{href:"#Prerequisites",children:"prerequisites"}),"."]}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-shell",children:"pip3 install groundlight\n"})}),"\n"]}),"\n",(0,i.jsxs)(t.li,{children:["\n",(0,i.jsxs)(t.p,{children:["Head over to the ",(0,i.jsx)(t.a,{href:"https://app.groundlight.ai/reef/my-account/api-tokens",children:"groundlight web\napp"})," to create an ",(0,i.jsx)(t.a,{href:"/docs/getting-started/api-tokens",children:"API token"}),". You will\nneed to set the ",(0,i.jsx)(t.code,{children:"GROUNDLIGHT_API_TOKEN"})," environment variable to access the API."]}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-shell",children:"export GROUNDLIGHT_API_TOKEN=api_2GdXMflhJi6L_example\n"})}),"\n"]}),"\n",(0,i.jsxs)(t.li,{children:["\n",(0,i.jsx)(t.p,{children:"Create a python script."}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-python",metastring:'title="ask.py"',children:'from groundlight import Groundlight\n\ngl = Groundlight()\ndet = gl.get_or_create_detector(name="doorway", query="Is the doorway open?")\nimg = "./docs/static/img/doorway.jpg" # Image can be a file or a Python object\nimage_query = gl.submit_image_query(detector=det, image=img)\nprint(f"The answer is {image_query.result}")\n'})}),"\n"]}),"\n",(0,i.jsxs)(t.li,{children:["\n",(0,i.jsx)(t.p,{children:"Run it!"}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-shell",children:"python ask.py\n"})}),"\n"]}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,a.a)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},7354:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/escalation_diagram-05fa7abe4f95261f01a79faf002e0925.jpg"},1151:(e,t,n)=>{n.d(t,{Z:()=>o,a:()=>s});var i=n(7294);const a={},r=i.createContext(a);function s(e){const t=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:s(e.components),i.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/325ecf53.a901f46b.js b/assets/js/325ecf53.a901f46b.js deleted file mode 100644 index 348a3b08..00000000 --- a/assets/js/325ecf53.a901f46b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[45],{3905:(e,t,a)=>{a.d(t,{Zo:()=>g,kt:()=>m});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},i=Object.keys(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)a=i[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),p=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},g=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,g=l(e,["components","mdxType","originalType","parentName"]),c=p(a),d=n,m=c["".concat(s,".").concat(d)]||c[d]||u[d]||i;return a?r.createElement(m,o(o({ref:t},g),{},{components:a})):r.createElement(m,o({ref:t},g))}));function m(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=a.length,o=new Array(i);o[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:n,o[1]=l;for(var p=2;p<i;p++)o[p]=a[p];return r.createElement.apply(null,o)}return r.createElement.apply(null,a)}d.displayName="MDXCreateElement"},2904:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var r=a(7462),n=(a(7294),a(3905));const i={},o="Getting Started",l={unversionedId:"getting-started/getting-started",id:"getting-started/getting-started",title:"Getting Started",description:"Computer Vision powered by Natural Language",source:"@site/docs/getting-started/getting-started.mdx",sourceDirName:"getting-started",slug:"/getting-started/",permalink:"/python-sdk/docs/getting-started/",draft:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/getting-started/getting-started.mdx",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",next:{title:"API Tokens",permalink:"/python-sdk/docs/getting-started/api-tokens"}},s={},p=[{value:"Computer Vision powered by Natural Language",id:"computer-vision-powered-by-natural-language",level:2},{value:"How does it work?",id:"how-does-it-work",level:3},{value:"Escalation Technology",id:"escalation-technology",level:3},{value:"Building a simple visual application",id:"building-a-simple-visual-application",level:2}],g={toc:p},c="wrapper";function u(e){let{components:t,...i}=e;return(0,n.kt)(c,(0,r.Z)({},g,i,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"getting-started"},"Getting Started"),(0,n.kt)("h2",{id:"computer-vision-powered-by-natural-language"},"Computer Vision powered by Natural Language"),(0,n.kt)("p",null,"Build a working computer vision system in just a few lines of python:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-python"},'from groundlight import Groundlight\n\ngl = Groundlight()\ndet = gl.get_or_create_detector(name="doorway", query="Is the doorway open?")\nimg = "./docs/static/img/doorway.jpg" # Image can be a file or a Python object\nimage_query = gl.submit_image_query(detector=det, image=img)\nprint(f"The answer is {image_query.result}")\n')),(0,n.kt)("p",null,(0,n.kt)("em",{parentName:"p"},'Note: The SDK is currently in "beta" phase. Interfaces are subject to change in future versions. We will follow ',(0,n.kt)("a",{parentName:"em",href:"https://semver.org/"},"semver")," semantics for breaking changes.")),(0,n.kt)("h3",{id:"how-does-it-work"},"How does it work?"),(0,n.kt)("p",null,"Your images are first analyzed by machine learning (ML) models which are automatically trained on your data. If those models have high enough ",(0,n.kt)("a",{parentName:"p",href:"/python-sdk/docs/building-applications/managing-confidence"},"confidence"),", that's your answer. But if the models are unsure, then the images are progressively escalated to more resource-intensive analysis methods up to real-time human review. So what you get is a computer vision system that starts working right away without even needing to first gather and label a dataset. At first it will operate with high latency, because people need to review the image queries. But over time, the ML systems will learn and improve so queries come back faster with higher confidence."),(0,n.kt)("h3",{id:"escalation-technology"},"Escalation Technology"),(0,n.kt)("p",null,"Groundlight's Escalation Technology combines the power of generative AI using our Visual LLM, along with the speed of edge computing, and the reliability of real-time human oversight."),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"diagram showing escalation technology",src:a(7354).Z,width:"600",height:"338"})),(0,n.kt)("h2",{id:"building-a-simple-visual-application"},"Building a simple visual application"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Install the ",(0,n.kt)("inlineCode",{parentName:"p"},"groundlight")," SDK. Requires python version 3.7 or higher. See ",(0,n.kt)("a",{parentName:"p",href:"#Prerequisites"},"prerequisites"),"."),(0,n.kt)("pre",{parentName:"li"},(0,n.kt)("code",{parentName:"pre",className:"language-shell"},"pip3 install groundlight\n"))),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Head over to the ",(0,n.kt)("a",{parentName:"p",href:"https://app.groundlight.ai/reef/my-account/api-tokens"},"groundlight web\napp")," to create an ",(0,n.kt)("a",{parentName:"p",href:"/docs/getting-started/api-tokens"},"API token"),". You will\nneed to set the ",(0,n.kt)("inlineCode",{parentName:"p"},"GROUNDLIGHT_API_TOKEN")," environment variable to access the API."),(0,n.kt)("pre",{parentName:"li"},(0,n.kt)("code",{parentName:"pre",className:"language-shell"},"export GROUNDLIGHT_API_TOKEN=api_2GdXMflhJi6L_example\n"))),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Create a python script."),(0,n.kt)("pre",{parentName:"li"},(0,n.kt)("code",{parentName:"pre",className:"language-python",metastring:'title="ask.py"',title:'"ask.py"'},'from groundlight import Groundlight\n\ngl = Groundlight()\ndet = gl.get_or_create_detector(name="doorway", query="Is the doorway open?")\nimg = "./docs/static/img/doorway.jpg" # Image can be a file or a Python object\nimage_query = gl.submit_image_query(detector=det, image=img)\nprint(f"The answer is {image_query.result}")\n'))),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Run it!"),(0,n.kt)("pre",{parentName:"li"},(0,n.kt)("code",{parentName:"pre",className:"language-shell"},"python ask.py\n")))))}u.isMDXComponent=!0},7354:(e,t,a)=>{a.d(t,{Z:()=>r});const r=a.p+"assets/images/escalation_diagram-05fa7abe4f95261f01a79faf002e0925.jpg"}}]); \ No newline at end of file diff --git a/assets/js/37fce620.13652601.js b/assets/js/37fce620.13652601.js deleted file mode 100644 index 3e572456..00000000 --- a/assets/js/37fce620.13652601.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[871],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>g});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function p(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},i=Object.keys(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var s=a.createContext({}),l=function(e){var t=a.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},c=function(e){var t=l(e.components);return a.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,s=e.parentName,c=p(e,["components","mdxType","originalType","parentName"]),u=l(r),m=n,g=u["".concat(s,".").concat(m)]||u[m]||d[m]||i;return r?a.createElement(g,o(o({ref:t},c),{},{components:r})):a.createElement(g,o({ref:t},c))}));function g(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,o=new Array(i);o[0]=m;var p={};for(var s in t)hasOwnProperty.call(t,s)&&(p[s]=t[s]);p.originalType=e,p[u]="string"==typeof e?e:n,o[1]=p;for(var l=2;l<i;l++)o[l]=r[l];return a.createElement.apply(null,o)}return a.createElement.apply(null,r)}m.displayName="MDXCreateElement"},3542:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>p,toc:()=>l});var a=r(7462),n=(r(7294),r(3905));const i={},o="Sample Applications",p={unversionedId:"building-applications/sample-applications",id:"building-applications/sample-applications",title:"Sample Applications",description:"Explore these GitHub repositories to see examples of Groundlight-powered applications:",source:"@site/docs/building-applications/1-sample-applications.md",sourceDirName:"building-applications",slug:"/building-applications/sample-applications",permalink:"/python-sdk/docs/building-applications/sample-applications",draft:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/building-applications/1-sample-applications.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Building Applications",permalink:"/python-sdk/docs/building-applications/"},next:{title:"Grabbing Images",permalink:"/python-sdk/docs/building-applications/grabbing-images"}},s={},l=[{value:"Groundlight Stream Processor",id:"groundlight-stream-processor",level:2},{value:"Arduino ESP32 Camera Sample App",id:"arduino-esp32-camera-sample-app",level:2},{value:"Raspberry Pi",id:"raspberry-pi",level:2},{value:"Industrial and Manufacturing Applications",id:"industrial-and-manufacturing-applications",level:2}],c={toc:l},u="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(u,(0,a.Z)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"sample-applications"},"Sample Applications"),(0,n.kt)("p",null,"Explore these GitHub repositories to see examples of Groundlight-powered applications:"),(0,n.kt)("h2",{id:"groundlight-stream-processor"},"Groundlight Stream Processor"),(0,n.kt)("p",null,"Repository: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/groundlight/stream"},"https://github.com/groundlight/stream")),(0,n.kt)("p",null,"The Groundlight Stream Processor is an easy-to-use Docker container for analyzing RTSP streams or common USB-based cameras. You can run it with a single Docker command, such as:"),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-bash"},"docker run stream:local --help\n")),(0,n.kt)("h2",{id:"arduino-esp32-camera-sample-app"},"Arduino ESP32 Camera Sample App"),(0,n.kt)("p",null,"Repository: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/groundlight/esp32cam"},"https://github.com/groundlight/esp32cam")),(0,n.kt)("p",null,"This sample application allows you to build a working AI vision detector using an inexpensive WiFi camera. With a cost of under $10, you can create a powerful and affordable AI vision system."),(0,n.kt)("h2",{id:"raspberry-pi"},"Raspberry Pi"),(0,n.kt)("p",null,"Repository: ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/groundlight/raspberry-pi-door-lock"},"https://github.com/groundlight/raspberry-pi-door-lock")),(0,n.kt)("p",null,"This sample application demonstrates how to set up a Raspberry Pi-based door lock system. The application monitors a door and sends a notification if the door is observed to be unlocked during non-standard business hours."),(0,n.kt)("h2",{id:"industrial-and-manufacturing-applications"},"Industrial and Manufacturing Applications"),(0,n.kt)("p",null,"Groundlight can be used to ",(0,n.kt)("a",{parentName:"p",href:"/docs/building-applications/industrial"},"apply modern natural-language-based computer vision to industrial and manufacturing applications"),"."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/37fce620.82bfcbec.js b/assets/js/37fce620.82bfcbec.js new file mode 100644 index 00000000..717003db --- /dev/null +++ b/assets/js/37fce620.82bfcbec.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[871],{4134:(i,e,n)=>{n.r(e),n.d(e,{assets:()=>p,contentTitle:()=>o,default:()=>d,frontMatter:()=>t,metadata:()=>r,toc:()=>l});var a=n(5893),s=n(1151);const t={},o="Sample Applications",r={id:"building-applications/sample-applications",title:"Sample Applications",description:"Explore these GitHub repositories to see examples of Groundlight-powered applications:",source:"@site/docs/building-applications/1-sample-applications.md",sourceDirName:"building-applications",slug:"/building-applications/sample-applications",permalink:"/python-sdk/docs/building-applications/sample-applications",draft:!1,unlisted:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/building-applications/1-sample-applications.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Building Applications",permalink:"/python-sdk/docs/building-applications/"},next:{title:"Grabbing Images",permalink:"/python-sdk/docs/building-applications/grabbing-images"}},p={},l=[{value:"Groundlight Stream Processor",id:"groundlight-stream-processor",level:2},{value:"Arduino ESP32 Camera Sample App",id:"arduino-esp32-camera-sample-app",level:2},{value:"Raspberry Pi",id:"raspberry-pi",level:2},{value:"Industrial and Manufacturing Applications",id:"industrial-and-manufacturing-applications",level:2}];function c(i){const e={a:"a",code:"code",h1:"h1",h2:"h2",p:"p",pre:"pre",...(0,s.a)(),...i.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(e.h1,{id:"sample-applications",children:"Sample Applications"}),"\n",(0,a.jsx)(e.p,{children:"Explore these GitHub repositories to see examples of Groundlight-powered applications:"}),"\n",(0,a.jsx)(e.h2,{id:"groundlight-stream-processor",children:"Groundlight Stream Processor"}),"\n",(0,a.jsxs)(e.p,{children:["Repository: ",(0,a.jsx)(e.a,{href:"https://github.com/groundlight/stream",children:"https://github.com/groundlight/stream"})]}),"\n",(0,a.jsx)(e.p,{children:"The Groundlight Stream Processor is an easy-to-use Docker container for analyzing RTSP streams or common USB-based cameras. You can run it with a single Docker command, such as:"}),"\n",(0,a.jsx)(e.pre,{children:(0,a.jsx)(e.code,{className:"language-bash",children:"docker run stream:local --help\n"})}),"\n",(0,a.jsx)(e.h2,{id:"arduino-esp32-camera-sample-app",children:"Arduino ESP32 Camera Sample App"}),"\n",(0,a.jsxs)(e.p,{children:["Repository: ",(0,a.jsx)(e.a,{href:"https://github.com/groundlight/esp32cam",children:"https://github.com/groundlight/esp32cam"})]}),"\n",(0,a.jsx)(e.p,{children:"This sample application allows you to build a working AI vision detector using an inexpensive WiFi camera. With a cost of under $10, you can create a powerful and affordable AI vision system."}),"\n",(0,a.jsx)(e.h2,{id:"raspberry-pi",children:"Raspberry Pi"}),"\n",(0,a.jsxs)(e.p,{children:["Repository: ",(0,a.jsx)(e.a,{href:"https://github.com/groundlight/raspberry-pi-door-lock",children:"https://github.com/groundlight/raspberry-pi-door-lock"})]}),"\n",(0,a.jsx)(e.p,{children:"This sample application demonstrates how to set up a Raspberry Pi-based door lock system. The application monitors a door and sends a notification if the door is observed to be unlocked during non-standard business hours."}),"\n",(0,a.jsx)(e.h2,{id:"industrial-and-manufacturing-applications",children:"Industrial and Manufacturing Applications"}),"\n",(0,a.jsxs)(e.p,{children:["Groundlight can be used to ",(0,a.jsx)(e.a,{href:"/docs/building-applications/industrial",children:"apply modern natural-language-based computer vision to industrial and manufacturing applications"}),"."]})]})}function d(i={}){const{wrapper:e}={...(0,s.a)(),...i.components};return e?(0,a.jsx)(e,{...i,children:(0,a.jsx)(c,{...i})}):c(i)}},1151:(i,e,n)=>{n.d(e,{Z:()=>r,a:()=>o});var a=n(7294);const s={},t=a.createContext(s);function o(i){const e=a.useContext(t);return a.useMemo((function(){return"function"==typeof i?i(e):{...e,...i}}),[e,i])}function r(i){let e;return e=i.disableParentContext?"function"==typeof i.components?i.components(s):i.components||s:o(i.components),a.createElement(t.Provider,{value:e},i.children)}}}]); \ No newline at end of file diff --git a/assets/js/393be207.6cc91a39.js b/assets/js/393be207.6cc91a39.js new file mode 100644 index 00000000..694922f1 --- /dev/null +++ b/assets/js/393be207.6cc91a39.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[414],{1181:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>l,frontMatter:()=>r,metadata:()=>p,toc:()=>d});var o=t(5893),a=t(1151);const r={title:"Markdown page example"},s="Markdown page example",p={type:"mdx",permalink:"/python-sdk/markdown-page",source:"@site/src/pages/markdown-page.md",title:"Markdown page example",description:"You don't need React to write simple standalone pages.",frontMatter:{title:"Markdown page example"},unlisted:!1},c={},d=[];function i(e){const n={h1:"h1",p:"p",...(0,a.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h1,{id:"markdown-page-example",children:"Markdown page example"}),"\n",(0,o.jsx)(n.p,{children:"You don't need React to write simple standalone pages."})]})}function l(e={}){const{wrapper:n}={...(0,a.a)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(i,{...e})}):i(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>p,a:()=>s});var o=t(7294);const a={},r=o.createContext(a);function s(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function p(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:s(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/393be207.a9b4b4c5.js b/assets/js/393be207.a9b4b4c5.js deleted file mode 100644 index bbb495cc..00000000 --- a/assets/js/393be207.a9b4b4c5.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[414],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>d});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function p(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function c(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),i=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):p(p({},t),e)),r},u=function(e){var t=i(e.components);return n.createElement(l.Provider,{value:t},e.children)},f="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},s=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),f=i(r),s=o,d=f["".concat(l,".").concat(s)]||f[s]||m[s]||a;return r?n.createElement(d,p(p({ref:t},u),{},{components:r})):n.createElement(d,p({ref:t},u))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,p=new Array(a);p[0]=s;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c[f]="string"==typeof e?e:o,p[1]=c;for(var i=2;i<a;i++)p[i]=r[i];return n.createElement.apply(null,p)}return n.createElement.apply(null,r)}s.displayName="MDXCreateElement"},3123:(e,t,r)=>{r.r(t),r.d(t,{contentTitle:()=>p,default:()=>f,frontMatter:()=>a,metadata:()=>c,toc:()=>l});var n=r(7462),o=(r(7294),r(3905));const a={title:"Markdown page example"},p="Markdown page example",c={type:"mdx",permalink:"/python-sdk/markdown-page",source:"@site/src/pages/markdown-page.md",title:"Markdown page example",description:"You don't need React to write simple standalone pages.",frontMatter:{title:"Markdown page example"}},l=[],i={toc:l},u="wrapper";function f(e){let{components:t,...r}=e;return(0,o.kt)(u,(0,n.Z)({},i,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"markdown-page-example"},"Markdown page example"),(0,o.kt)("p",null,"You don't need React to write simple standalone pages."))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4178ee1d.012fbe89.js b/assets/js/4178ee1d.012fbe89.js new file mode 100644 index 00000000..30eec3b9 --- /dev/null +++ b/assets/js/4178ee1d.012fbe89.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[859],{5132:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>a,contentTitle:()=>c,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>d});var n=r(5893),i=r(1151);const o={id:"redirect",title:"API Reference",hide_title:!0},c=void 0,s={id:"api-reference/redirect",title:"API Reference",description:"",source:"@site/docs/api-reference/api-reference.md",sourceDirName:"api-reference",slug:"/api-reference/",permalink:"/python-sdk/docs/api-reference/",draft:!1,unlisted:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/api-reference/api-reference.md",tags:[],version:"current",frontMatter:{id:"redirect",title:"API Reference",hide_title:!0},sidebar:"tutorialSidebar",previous:{title:"Setting up an ESP32 Camera Board",permalink:"/python-sdk/docs/iot/"}},a={},d=[];function p(e){return(0,n.jsx)("meta",{"http-equiv":"refresh",content:"0; url=/python-sdk/api-reference-docs/"})}function u(e={}){const{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(p,{...e})}):p()}},1151:(e,t,r)=>{r.d(t,{Z:()=>s,a:()=>c});var n=r(7294);const i={},o=n.createContext(i);function c(e){const t=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4178ee1d.70661d3b.js b/assets/js/4178ee1d.70661d3b.js deleted file mode 100644 index afa81244..00000000 --- a/assets/js/4178ee1d.70661d3b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[859],{3905:(e,r,t)=>{t.d(r,{Zo:()=>f,kt:()=>m});var n=t(7294);function o(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function c(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?i(Object(t),!0).forEach((function(r){o(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function a(e,r){if(null==e)return{};var t,n,o=function(e,r){if(null==e)return{};var t,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)t=i[n],r.indexOf(t)>=0||(o[t]=e[t]);return o}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)t=i[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var p=n.createContext({}),l=function(e){var r=n.useContext(p),t=r;return e&&(t="function"==typeof e?e(r):c(c({},r),e)),t},f=function(e){var r=l(e.components);return n.createElement(p.Provider,{value:r},e.children)},u="mdxType",s={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},d=n.forwardRef((function(e,r){var t=e.components,o=e.mdxType,i=e.originalType,p=e.parentName,f=a(e,["components","mdxType","originalType","parentName"]),u=l(t),d=o,m=u["".concat(p,".").concat(d)]||u[d]||s[d]||i;return t?n.createElement(m,c(c({ref:r},f),{},{components:t})):n.createElement(m,c({ref:r},f))}));function m(e,r){var t=arguments,o=r&&r.mdxType;if("string"==typeof e||o){var i=t.length,c=new Array(i);c[0]=d;var a={};for(var p in r)hasOwnProperty.call(r,p)&&(a[p]=r[p]);a.originalType=e,a[u]="string"==typeof e?e:o,c[1]=a;for(var l=2;l<i;l++)c[l]=t[l];return n.createElement.apply(null,c)}return n.createElement.apply(null,t)}d.displayName="MDXCreateElement"},7607:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>p,contentTitle:()=>c,default:()=>s,frontMatter:()=>i,metadata:()=>a,toc:()=>l});var n=t(7462),o=(t(7294),t(3905));const i={id:"redirect",title:"API Reference",hide_title:!0},c=void 0,a={unversionedId:"api-reference/redirect",id:"api-reference/redirect",title:"API Reference",description:"",source:"@site/docs/api-reference/api-reference.md",sourceDirName:"api-reference",slug:"/api-reference/",permalink:"/python-sdk/docs/api-reference/",draft:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/api-reference/api-reference.md",tags:[],version:"current",frontMatter:{id:"redirect",title:"API Reference",hide_title:!0},sidebar:"tutorialSidebar",previous:{title:"Setting up an ESP32 Camera Board",permalink:"/python-sdk/docs/iot/"}},p={},l=[],f={toc:l},u="wrapper";function s(e){let{components:r,...t}=e;return(0,o.kt)(u,(0,n.Z)({},f,t,{components:r,mdxType:"MDXLayout"}),(0,o.kt)("meta",{"http-equiv":"refresh",content:"0; url=/python-sdk/api-reference-docs/"}))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/530c8fc0.5f0baf5d.js b/assets/js/530c8fc0.5f0baf5d.js new file mode 100644 index 00000000..f7140c45 --- /dev/null +++ b/assets/js/530c8fc0.5f0baf5d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[642],{1441:(i,n,e)=>{e.r(n),e.d(n,{assets:()=>r,contentTitle:()=>a,default:()=>p,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var s=e(5893),t=e(1151);const o={},a="Building Applications",l={id:"building-applications/building-applications",title:"Building Applications",description:'Groundlight provides a powerful "computer vision powered by natural language" system that enables you to build visual applications with minimal code. With Groundlight, you can quickly create applications for various use cases, from simple object detection to complex visual analysis.',source:"@site/docs/building-applications/building-applications.md",sourceDirName:"building-applications",slug:"/building-applications/",permalink:"/python-sdk/docs/building-applications/",draft:!1,unlisted:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/building-applications/building-applications.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"A Quick Example: Live Stream Alert",permalink:"/python-sdk/docs/getting-started/streaming"},next:{title:"Sample Applications",permalink:"/python-sdk/docs/building-applications/sample-applications"}},r={},c=[{value:"Sample Applications",id:"sample-applications",level:2},{value:"Further Reading",id:"further-reading",level:2}];function d(i){const n={a:"a",h1:"h1",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.a)(),...i.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"building-applications",children:"Building Applications"}),"\n",(0,s.jsx)(n.p,{children:'Groundlight provides a powerful "computer vision powered by natural language" system that enables you to build visual applications with minimal code. With Groundlight, you can quickly create applications for various use cases, from simple object detection to complex visual analysis.'}),"\n",(0,s.jsx)(n.p,{children:"In this page, we'll introduce you to some sample applications built using Groundlight and provide links to more detailed guides on various topics."}),"\n",(0,s.jsx)(n.h2,{id:"sample-applications",children:"Sample Applications"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/python-sdk/docs/building-applications/sample-applications",children:"Sample Applications"})}),": Find repositories with examples of applications built with Groundlight"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"further-reading",children:"Further Reading"}),"\n",(0,s.jsx)(n.p,{children:"For more in-depth guides on various aspects of building applications with Groundlight, check out the following pages:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/python-sdk/docs/building-applications/grabbing-images",children:"Grabbing images"})}),": Understand the intricacies of how to submit images from various input sources to Groundlight."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/python-sdk/docs/building-applications/working-with-detectors",children:"Working with detectors"})}),": Learn how to create, configure, and use detectors in your Groundlight-powered applications."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/python-sdk/docs/building-applications/managing-confidence",children:"Confidence levels"})}),": Master how to control the trade-off of latency against accuracy by configuring the desired confidence level for your detectors."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/python-sdk/docs/building-applications/handling-errors",children:"Handling server errors"})}),": Understand how to handle and troubleshoot HTTP errors that may occur while using Groundlight."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/python-sdk/docs/building-applications/async-queries",children:"Asynchronous queries"})}),": Groundlight makes it easy to submit asynchronous queries. Learn how to submit queries asynchronously and retrieve the results later."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/python-sdk/docs/building-applications/edge",children:"Using Groundlight on the edge"})}),": Discover how to deploy Groundlight in edge computing environments for improved performance and reduced latency."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"/python-sdk/docs/building-applications/industrial",children:"Industrial applications"})}),": Learn how to apply modern natural-language-based computer vision to your industrial and manufacturing applications."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"By exploring these resources and sample applications, you'll be well on your way to building powerful visual applications using Groundlight's computer vision and natural language capabilities."})]})}function p(i={}){const{wrapper:n}={...(0,t.a)(),...i.components};return n?(0,s.jsx)(n,{...i,children:(0,s.jsx)(d,{...i})}):d(i)}},1151:(i,n,e)=>{e.d(n,{Z:()=>l,a:()=>a});var s=e(7294);const t={},o=s.createContext(t);function a(i){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof i?i(n):{...n,...i}}),[n,i])}function l(i){let n;return n=i.disableParentContext?"function"==typeof i.components?i.components(t):i.components||t:a(i.components),s.createElement(o.Provider,{value:n},i.children)}}}]); \ No newline at end of file diff --git a/assets/js/530c8fc0.aa2ba198.js b/assets/js/530c8fc0.aa2ba198.js deleted file mode 100644 index 5f7c4a55..00000000 --- a/assets/js/530c8fc0.aa2ba198.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[642],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var i=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,i,a=function(e,t){if(null==e)return{};var n,i,a={},r=Object.keys(e);for(i=0;i<r.length;i++)n=r[i],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i<r.length;i++)n=r[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=i.createContext({}),p=function(e){var t=i.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=p(e.components);return i.createElement(s.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},g=i.forwardRef((function(e,t){var n=e.components,a=e.mdxType,r=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),c=p(n),g=a,m=c["".concat(s,".").concat(g)]||c[g]||d[g]||r;return n?i.createElement(m,o(o({ref:t},u),{},{components:n})):i.createElement(m,o({ref:t},u))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=n.length,o=new Array(r);o[0]=g;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:a,o[1]=l;for(var p=2;p<r;p++)o[p]=n[p];return i.createElement.apply(null,o)}return i.createElement.apply(null,n)}g.displayName="MDXCreateElement"},4481:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>r,metadata:()=>l,toc:()=>p});var i=n(7462),a=(n(7294),n(3905));const r={},o="Building Applications",l={unversionedId:"building-applications/building-applications",id:"building-applications/building-applications",title:"Building Applications",description:'Groundlight provides a powerful "computer vision powered by natural language" system that enables you to build visual applications with minimal code. With Groundlight, you can quickly create applications for various use cases, from simple object detection to complex visual analysis.',source:"@site/docs/building-applications/building-applications.md",sourceDirName:"building-applications",slug:"/building-applications/",permalink:"/python-sdk/docs/building-applications/",draft:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/building-applications/building-applications.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"A Quick Example: Live Stream Alert",permalink:"/python-sdk/docs/getting-started/streaming"},next:{title:"Sample Applications",permalink:"/python-sdk/docs/building-applications/sample-applications"}},s={},p=[{value:"Sample Applications",id:"sample-applications",level:2},{value:"Further Reading",id:"further-reading",level:2}],u={toc:p},c="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(c,(0,i.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"building-applications"},"Building Applications"),(0,a.kt)("p",null,'Groundlight provides a powerful "computer vision powered by natural language" system that enables you to build visual applications with minimal code. With Groundlight, you can quickly create applications for various use cases, from simple object detection to complex visual analysis.'),(0,a.kt)("p",null,"In this page, we'll introduce you to some sample applications built using Groundlight and provide links to more detailed guides on various topics."),(0,a.kt)("h2",{id:"sample-applications"},"Sample Applications"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},(0,a.kt)("a",{parentName:"strong",href:"/python-sdk/docs/building-applications/sample-applications"},"Sample Applications")),": Find repositories with examples of applications built with Groundlight")),(0,a.kt)("h2",{id:"further-reading"},"Further Reading"),(0,a.kt)("p",null,"For more in-depth guides on various aspects of building applications with Groundlight, check out the following pages:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},(0,a.kt)("a",{parentName:"strong",href:"/python-sdk/docs/building-applications/grabbing-images"},"Grabbing images")),": Understand the intricacies of how to submit images from various input sources to Groundlight."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},(0,a.kt)("a",{parentName:"strong",href:"/python-sdk/docs/building-applications/working-with-detectors"},"Working with detectors")),": Learn how to create, configure, and use detectors in your Groundlight-powered applications."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},(0,a.kt)("a",{parentName:"strong",href:"/python-sdk/docs/building-applications/managing-confidence"},"Confidence levels")),": Master how to control the trade-off of latency against accuracy by configuring the desired confidence level for your detectors."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},(0,a.kt)("a",{parentName:"strong",href:"/python-sdk/docs/building-applications/handling-errors"},"Handling server errors")),": Understand how to handle and troubleshoot HTTP errors that may occur while using Groundlight."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},(0,a.kt)("a",{parentName:"strong",href:"/python-sdk/docs/building-applications/async-queries"},"Asynchronous queries")),": Groundlight makes it easy to submit asynchronous queries. Learn how to submit queries asynchronously and retrieve the results later."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},(0,a.kt)("a",{parentName:"strong",href:"/python-sdk/docs/building-applications/edge"},"Using Groundlight on the edge")),": Discover how to deploy Groundlight in edge computing environments for improved performance and reduced latency."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},(0,a.kt)("a",{parentName:"strong",href:"/python-sdk/docs/building-applications/industrial"},"Industrial applications")),": Learn how to apply modern natural-language-based computer vision to your industrial and manufacturing applications.")),(0,a.kt)("p",null,"By exploring these resources and sample applications, you'll be well on your way to building powerful visual applications using Groundlight's computer vision and natural language capabilities."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5747eae1.52da54fc.js b/assets/js/5747eae1.52da54fc.js new file mode 100644 index 00000000..c8275960 --- /dev/null +++ b/assets/js/5747eae1.52da54fc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[571],{4373:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>l});var i=t(5893),o=t(1151);const r={sidebar_position:3},a="Confidence Levels",s={id:"building-applications/managing-confidence",title:"Confidence Levels",description:"Groundlight gives you a simple way to control the trade-off of latency against accuracy. The longer you can wait for an answer to your image query, the better accuracy you can get. In particular, if the ML models are unsure of the best response, they will escalate the image query to more intensive analysis with more complex models and real-time human monitors as needed. Your code can easily wait for this delayed response. Either way, these new results are automatically trained into your models so your next queries will get better results faster.",source:"@site/docs/building-applications/4-managing-confidence.md",sourceDirName:"building-applications",slug:"/building-applications/managing-confidence",permalink:"/python-sdk/docs/building-applications/managing-confidence",draft:!1,unlisted:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/building-applications/4-managing-confidence.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Working with Detectors",permalink:"/python-sdk/docs/building-applications/working-with-detectors"},next:{title:"Handling Server Errors",permalink:"/python-sdk/docs/building-applications/handling-errors"}},c={},l=[];function d(e){const n={admonition:"admonition",code:"code",h1:"h1",p:"p",pre:"pre",...(0,o.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"confidence-levels",children:"Confidence Levels"}),"\n",(0,i.jsx)(n.p,{children:"Groundlight gives you a simple way to control the trade-off of latency against accuracy. The longer you can wait for an answer to your image query, the better accuracy you can get. In particular, if the ML models are unsure of the best response, they will escalate the image query to more intensive analysis with more complex models and real-time human monitors as needed. Your code can easily wait for this delayed response. Either way, these new results are automatically trained into your models so your next queries will get better results faster."}),"\n",(0,i.jsx)(n.p,{children:"The desired confidence level is set as the escalation threshold on your detector. This determines the minimum confidence score for the ML system to provide before the image query is escalated."}),"\n",(0,i.jsx)(n.p,{children:"For example, say you want to set your desired confidence level to 0.95, but that you're willing to wait up to 60 seconds to get a confident response."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-python",metastring:"notest",children:'from groundlight import Groundlight\nfrom PIL import Image\nimport requests\n\ngl = Groundlight()\nimage_url = "https://www.photos-public-domain.com/wp-content/uploads/2010/11/over_flowing_garbage_can.jpg"\nimage = Image.open(requests.get(image_url, stream=True).raw)\n\n# highlight-start\nd = gl.get_or_create_detector(name="trash", query="Is the trash can full?", confidence_threshold=0.95)\n\n# This will wait until either 60 seconds have passed or the confidence reaches 0.95\nimage_query = gl.submit_image_query(detector=d, image=image, wait=60)\n# highlight-end\n\nprint(f"The answer is {image_query.result}")\n'})}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsx)(n.p,{children:"Tuning confidence lets you balance accuracy against latency.\nHigher confidence will get higher accuracy, but will generally require higher latency.\nHigher confidence also requires more labels, which increases labor costs."})}),"\n",(0,i.jsxs)(n.p,{children:["Or if you want to execute ",(0,i.jsx)(n.code,{children:"submit_image_query"})," as fast as possible, set ",(0,i.jsx)(n.code,{children:"wait=0"}),". You will either get the ML results or a placeholder response if the ML model hasn't finished executing. Image queries which are below the desired confidence level will still be escalated for further analysis, and the results are incorporated as training data to improve your ML model, but your code will not wait for that to happen."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-python",metastring:"notest continuation",children:"image_query = gl.submit_image_query(detector=d, image=image, wait=0)\n"})}),"\n",(0,i.jsx)(n.p,{children:"If the returned result was generated from an ML model, you can see the confidence score returned for the image query:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-python",metastring:"notest continuation",children:'print(f"The confidence is {image_query.result.confidence}")\n'})})]})}function u(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>s,a:()=>a});var i=t(7294);const o={},r=i.createContext(o);function a(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5747eae1.78b4d94a.js b/assets/js/5747eae1.78b4d94a.js deleted file mode 100644 index fee6514f..00000000 --- a/assets/js/5747eae1.78b4d94a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[571],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>g});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),d=c(n),m=a,g=d["".concat(l,".").concat(m)]||d[m]||p[m]||i;return n?r.createElement(g,o(o({ref:t},u),{},{components:n})):r.createElement(g,o({ref:t},u))}));function g(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:a,o[1]=s;for(var c=2;c<i;c++)o[c]=n[c];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},3689:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var r=n(7462),a=(n(7294),n(3905));const i={sidebar_position:3},o="Confidence Levels",s={unversionedId:"building-applications/managing-confidence",id:"building-applications/managing-confidence",title:"Confidence Levels",description:"Groundlight gives you a simple way to control the trade-off of latency against accuracy. The longer you can wait for an answer to your image query, the better accuracy you can get. In particular, if the ML models are unsure of the best response, they will escalate the image query to more intensive analysis with more complex models and real-time human monitors as needed. Your code can easily wait for this delayed response. Either way, these new results are automatically trained into your models so your next queries will get better results faster.",source:"@site/docs/building-applications/4-managing-confidence.md",sourceDirName:"building-applications",slug:"/building-applications/managing-confidence",permalink:"/python-sdk/docs/building-applications/managing-confidence",draft:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/building-applications/4-managing-confidence.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Working with Detectors",permalink:"/python-sdk/docs/building-applications/working-with-detectors"},next:{title:"Handling Server Errors",permalink:"/python-sdk/docs/building-applications/handling-errors"}},l={},c=[],u={toc:c},d="wrapper";function p(e){let{components:t,...n}=e;return(0,a.kt)(d,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"confidence-levels"},"Confidence Levels"),(0,a.kt)("p",null,"Groundlight gives you a simple way to control the trade-off of latency against accuracy. The longer you can wait for an answer to your image query, the better accuracy you can get. In particular, if the ML models are unsure of the best response, they will escalate the image query to more intensive analysis with more complex models and real-time human monitors as needed. Your code can easily wait for this delayed response. Either way, these new results are automatically trained into your models so your next queries will get better results faster."),(0,a.kt)("p",null,"The desired confidence level is set as the escalation threshold on your detector. This determines the minimum confidence score for the ML system to provide before the image query is escalated."),(0,a.kt)("p",null,"For example, say you want to set your desired confidence level to 0.95, but that you're willing to wait up to 60 seconds to get a confident response."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-python",metastring:"notest",notest:!0},'from groundlight import Groundlight\nfrom PIL import Image\nimport requests\n\ngl = Groundlight()\nimage_url = "https://www.photos-public-domain.com/wp-content/uploads/2010/11/over_flowing_garbage_can.jpg"\nimage = Image.open(requests.get(image_url, stream=True).raw)\n\n# highlight-start\nd = gl.get_or_create_detector(name="trash", query="Is the trash can full?", confidence_threshold=0.95)\n\n# This will wait until either 60 seconds have passed or the confidence reaches 0.95\nimage_query = gl.submit_image_query(detector=d, image=image, wait=60)\n# highlight-end\n\nprint(f"The answer is {image_query.result}")\n')),(0,a.kt)("admonition",{type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"Tuning confidence lets you balance accuracy against latency.\nHigher confidence will get higher accuracy, but will generally require higher latency.\nHigher confidence also requires more labels, which increases labor costs.")),(0,a.kt)("p",null,"Or if you want to execute ",(0,a.kt)("inlineCode",{parentName:"p"},"submit_image_query")," as fast as possible, set ",(0,a.kt)("inlineCode",{parentName:"p"},"wait=0"),". You will either get the ML results or a placeholder response if the ML model hasn't finished executing. Image queries which are below the desired confidence level will still be escalated for further analysis, and the results are incorporated as training data to improve your ML model, but your code will not wait for that to happen."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-python",metastring:"notest continuation",notest:!0,continuation:!0},"image_query = gl.submit_image_query(detector=d, image=image, wait=0)\n")),(0,a.kt)("p",null,"If the returned result was generated from an ML model, you can see the confidence score returned for the image query:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-python",metastring:"notest continuation",notest:!0,continuation:!0},'print(f"The confidence is {image_query.result.confidence}")\n')))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5e95c892.c877d3a2.js b/assets/js/5e95c892.c877d3a2.js new file mode 100644 index 00000000..6770f51d --- /dev/null +++ b/assets/js/5e95c892.c877d3a2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[661],{1388:(e,s,r)=>{r.r(s),r.d(s,{default:()=>d});r(7294);var u=r(6010),a=r(1944),c=r(5281),n=r(8790),t=r(2758),l=r(5893);function d(e){return(0,l.jsx)(a.FG,{className:(0,u.Z)(c.k.wrapper.docsPages),children:(0,l.jsx)(t.Z,{children:(0,n.H)(e.route.routes)})})}}}]); \ No newline at end of file diff --git a/assets/js/7aefb68d.17804779.js b/assets/js/7aefb68d.17804779.js new file mode 100644 index 00000000..5d20c736 --- /dev/null +++ b/assets/js/7aefb68d.17804779.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[201],{8523:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>s,metadata:()=>o,toc:()=>d});var i=n(5893),r=n(1151);const s={},a="A Quick Example: Live Stream Alert",o={id:"getting-started/streaming",title:"A Quick Example: Live Stream Alert",description:"A quick example to get used to setting up detectors and asking good questions: set up a monitor on a live stream.",source:"@site/docs/getting-started/5-streaming.md",sourceDirName:"getting-started",slug:"/getting-started/streaming",permalink:"/python-sdk/docs/getting-started/streaming",draft:!1,unlisted:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/getting-started/5-streaming.md",tags:[],version:"current",sidebarPosition:5,frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"A Fun Example: Dog-on-Couch Detector",permalink:"/python-sdk/docs/getting-started/dog-on-couch"},next:{title:"Building Applications",permalink:"/python-sdk/docs/building-applications/"}},l={},d=[{value:"Requirements",id:"requirements",level:2},{value:"Installation",id:"installation",level:2},{value:"Creating the Application",id:"creating-the-application",level:2}];function c(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h1,{id:"a-quick-example-live-stream-alert",children:"A Quick Example: Live Stream Alert"}),"\n",(0,i.jsx)(t.p,{children:"A quick example to get used to setting up detectors and asking good questions: set up a monitor on a live stream."}),"\n",(0,i.jsx)(t.h2,{id:"requirements",children:"Requirements"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"/docs/installation/",children:"Groundlight SDK"})," with Python 3.7 or higher"]}),"\n",(0,i.jsx)(t.li,{children:"The video ID of a YouTube live stream you'd like to monitor"}),"\n"]}),"\n",(0,i.jsx)(t.h2,{id:"installation",children:"Installation"}),"\n",(0,i.jsx)(t.p,{children:"Ensure you have Python 3.7 or higher installed, and then install the Groundlight SDK and OpenCV library:"}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-bash",children:"pip install groundlight pillow ffmpeg yt-dlp typer\n"})}),"\n",(0,i.jsx)(t.h2,{id:"creating-the-application",children:"Creating the Application"}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsxs)(t.li,{children:["Save this command as a shell script ",(0,i.jsx)(t.code,{children:"get_latest_frame.sh"}),":"]}),"\n"]}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{children:'#!/bin/bash\n\nffmpeg -i "$(yt-dlp -g $1 | head -n 1)" -vframes 1 last.jpg -y\n'})}),"\n",(0,i.jsxs)(t.p,{children:["This will download the most recent frame from a YouTube live stream and save it to a local file ",(0,i.jsx)(t.code,{children:"last.jpg"}),"."]}),"\n",(0,i.jsxs)(t.ol,{start:"2",children:["\n",(0,i.jsxs)(t.li,{children:["\n",(0,i.jsxs)(t.p,{children:["Log in to the ",(0,i.jsx)(t.a,{href:"https://app.groundlight.ai",children:"Groundlight application"})," and get an ",(0,i.jsx)(t.a,{href:"api-tokens",children:"API Token"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(t.li,{children:["\n",(0,i.jsx)(t.p,{children:"Next, we'll write the Python script for the application."}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-python",metastring:"notest",children:'import os\nimport subprocess\nimport typer\nfrom groundlight import Groundlight\nfrom PIL import Image\n\n\ndef main(*, video_id: str = None, detector_name: str = None, query: str = None, confidence: float = 0.75, wait: int = 60):\n """\n Run the script to get the stream\'s last frame as a subprocess, and submit result as an image query to a Groundlight detector\n :param video_id: Video ID of the YouTube live stream (the URLs have the form https://www.youtube.com/watch?v=<VIDEO_ID>)\n :param detector_name: Name for your Groundlight detector\n :param query: Question you want to ask of the stream (we will alert on the answer of NO)\n """\n gl = Groundlight()\n detector = gl.create_detector(name=detector_name, query=query, confidence_threshold=confidence)\n\n while True:\n p = subprocess.run(["./get_latest_frame.sh", video_id])\n if p.returncode != 0:\n raise RuntimeError(f"Could not get image from video ID: {video_id}. Process exited with return code {p.returncode}.")\n \n image = Image.open("last.jpg").convert("RGB")\n response = gl.submit_image_query(detector=detector, image=image, wait=wait)\n\n if response.result.label == "NO":\n os.system("say \'Alert!\'") # this may not work on all operating systems\n\n\nif __name__ == "__main__":\n typer.run(main)\n\n'})}),"\n",(0,i.jsxs)(t.ol,{start:"4",children:["\n",(0,i.jsxs)(t.li,{children:["Save the script as ",(0,i.jsx)(t.code,{children:"streaming_alert.py"})," in the same directory as ",(0,i.jsx)(t.code,{children:"get_latest_frame.sh"})," above and run it:"]}),"\n"]}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-bash",children:"python streaming_alert.py <VIDEO_ID> --detector_name <DETECTOR_NAME> --query <QUERY IN QUOTATION MARKS>\n"})})]})}function h(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>o,a:()=>a});var i=n(7294);const r={},s=i.createContext(r);function a(e){const t=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7aefb68d.6eb5ec2f.js b/assets/js/7aefb68d.6eb5ec2f.js deleted file mode 100644 index 15185fcc..00000000 --- a/assets/js/7aefb68d.6eb5ec2f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[201],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>g});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),p=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},m="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),m=p(n),d=a,g=m["".concat(s,".").concat(d)]||m[d]||c[d]||o;return n?r.createElement(g,i(i({ref:t},u),{},{components:n})):r.createElement(g,i({ref:t},u))}));function g(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[m]="string"==typeof e?e:a,i[1]=l;for(var p=2;p<o;p++)i[p]=n[p];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},688:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var r=n(7462),a=(n(7294),n(3905));const o={},i="A Quick Example: Live Stream Alert",l={unversionedId:"getting-started/streaming",id:"getting-started/streaming",title:"A Quick Example: Live Stream Alert",description:"A quick example to get used to setting up detectors and asking good questions: set up a monitor on a live stream.",source:"@site/docs/getting-started/5-streaming.md",sourceDirName:"getting-started",slug:"/getting-started/streaming",permalink:"/python-sdk/docs/getting-started/streaming",draft:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/getting-started/5-streaming.md",tags:[],version:"current",sidebarPosition:5,frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"A Fun Example: Dog-on-Couch Detector",permalink:"/python-sdk/docs/getting-started/dog-on-couch"},next:{title:"Building Applications",permalink:"/python-sdk/docs/building-applications/"}},s={},p=[{value:"Requirements",id:"requirements",level:2},{value:"Installation",id:"installation",level:2},{value:"Creating the Application",id:"creating-the-application",level:2}],u={toc:p},m="wrapper";function c(e){let{components:t,...n}=e;return(0,a.kt)(m,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"a-quick-example-live-stream-alert"},"A Quick Example: Live Stream Alert"),(0,a.kt)("p",null,"A quick example to get used to setting up detectors and asking good questions: set up a monitor on a live stream. "),(0,a.kt)("h2",{id:"requirements"},"Requirements"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"/docs/installation/"},"Groundlight SDK")," with Python 3.7 or higher"),(0,a.kt)("li",{parentName:"ul"},"The video ID of a YouTube live stream you'd like to monitor")),(0,a.kt)("h2",{id:"installation"},"Installation"),(0,a.kt)("p",null,"Ensure you have Python 3.7 or higher installed, and then install the Groundlight SDK and OpenCV library:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"pip install groundlight pillow ffmpeg yt-dlp typer\n")),(0,a.kt)("h2",{id:"creating-the-application"},"Creating the Application"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Save this command as a shell script ",(0,a.kt)("inlineCode",{parentName:"li"},"get_latest_frame.sh"),":")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},'#!/bin/bash\n\nffmpeg -i "$(yt-dlp -g $1 | head -n 1)" -vframes 1 last.jpg -y\n')),(0,a.kt)("p",null,"This will download the most recent frame from a YouTube live stream and save it to a local file ",(0,a.kt)("inlineCode",{parentName:"p"},"last.jpg"),". "),(0,a.kt)("ol",{start:2},(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},"Log in to the ",(0,a.kt)("a",{parentName:"p",href:"https://app.groundlight.ai"},"Groundlight application")," and get an ",(0,a.kt)("a",{parentName:"p",href:"api-tokens"},"API Token"),".")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},"Next, we'll write the Python script for the application."))),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-python",metastring:"notest",notest:!0},'import os\nimport subprocess\nimport typer\nfrom groundlight import Groundlight\nfrom PIL import Image\n\n\ndef main(*, video_id: str = None, detector_name: str = None, query: str = None, confidence: float = 0.75, wait: int = 60):\n """\n Run the script to get the stream\'s last frame as a subprocess, and submit result as an image query to a Groundlight detector\n :param video_id: Video ID of the YouTube live stream (the URLs have the form https://www.youtube.com/watch?v=<VIDEO_ID>)\n :param detector_name: Name for your Groundlight detector\n :param query: Question you want to ask of the stream (we will alert on the answer of NO)\n """\n gl = Groundlight()\n detector = gl.create_detector(name=detector_name, query=query, confidence_threshold=confidence)\n\n while True:\n p = subprocess.run(["./get_latest_frame.sh", video_id])\n if p.returncode != 0:\n raise RuntimeError(f"Could not get image from video ID: {video_id}. Process exited with return code {p.returncode}.")\n \n image = Image.open("last.jpg").convert("RGB")\n response = gl.submit_image_query(detector=detector, image=image, wait=wait)\n\n if response.result.label == "NO":\n os.system("say \'Alert!\'") # this may not work on all operating systems\n\n\nif __name__ == "__main__":\n typer.run(main)\n\n')),(0,a.kt)("ol",{start:4},(0,a.kt)("li",{parentName:"ol"},"Save the script as ",(0,a.kt)("inlineCode",{parentName:"li"},"streaming_alert.py")," in the same directory as ",(0,a.kt)("inlineCode",{parentName:"li"},"get_latest_frame.sh")," above and run it:")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"python streaming_alert.py <VIDEO_ID> --detector_name <DETECTOR_NAME> --query <QUERY IN QUOTATION MARKS>\n")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8091dcef.0b734536.js b/assets/js/8091dcef.0b734536.js new file mode 100644 index 00000000..30544290 --- /dev/null +++ b/assets/js/8091dcef.0b734536.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[100],{8636:(n,e,i)=>{i.r(e),i.d(e,{assets:()=>a,contentTitle:()=>l,default:()=>c,frontMatter:()=>s,metadata:()=>r,toc:()=>h});var t=i(5893),o=i(1151);const s={},l="Installing on macOS",r={id:"installation/macos",title:"Installing on macOS",description:"This guide will help you install the Groundlight SDK on macOS. The Groundlight SDK requires Python 3.7 or higher.",source:"@site/docs/installation/2-macos.md",sourceDirName:"installation",slug:"/installation/macos",permalink:"/python-sdk/docs/installation/macos",draft:!1,unlisted:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/installation/2-macos.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Installing on Linux",permalink:"/python-sdk/docs/installation/linux"},next:{title:"Installing on Windows",permalink:"/python-sdk/docs/installation/windows"}},a={},h=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Basic Installation",id:"basic-installation",level:2},{value:"Installing Groundlight SDK",id:"installing-groundlight-sdk",level:3},{value:"Checking Groundlight SDK Version",id:"checking-groundlight-sdk-version",level:3},{value:"Upgrading Groundlight SDK",id:"upgrading-groundlight-sdk",level:3},{value:"Getting the right Python Version",id:"getting-the-right-python-version",level:2},{value:"Upgrading Python on MacOS",id:"upgrading-python-on-macos",level:3},{value:"Ready to go!",id:"ready-to-go",level:2}];function d(n){const e={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,o.a)(),...n.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(e.h1,{id:"installing-on-macos",children:"Installing on macOS"}),"\n",(0,t.jsx)(e.p,{children:"This guide will help you install the Groundlight SDK on macOS. The Groundlight SDK requires Python 3.7 or higher."}),"\n",(0,t.jsx)(e.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,t.jsx)(e.p,{children:"Ensure that you have the following installed on your system:"}),"\n",(0,t.jsxs)(e.ul,{children:["\n",(0,t.jsx)(e.li,{children:"Python 3.7 or higher"}),"\n",(0,t.jsx)(e.li,{children:"pip (Python package installer)"}),"\n"]}),"\n",(0,t.jsx)(e.h2,{id:"basic-installation",children:"Basic Installation"}),"\n",(0,t.jsx)(e.p,{children:"Assuming you have Python 3.7 or higher installed on your system, you can proceed with the following steps to install or upgrade the Groundlight SDK:"}),"\n",(0,t.jsx)(e.h3,{id:"installing-groundlight-sdk",children:"Installing Groundlight SDK"}),"\n",(0,t.jsx)(e.p,{children:"To install the Groundlight SDK using pip, run the following command in your terminal:"}),"\n",(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:"language-bash",children:"pip install groundlight\n"})}),"\n",(0,t.jsxs)(e.p,{children:["If you're also using ",(0,t.jsx)(e.code,{children:"python2"})," on your system, you might need to use ",(0,t.jsx)(e.code,{children:"pip3"})," instead:"]}),"\n",(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:"language-bash",children:"pip3 install groundlight\n"})}),"\n",(0,t.jsx)(e.p,{children:"The Groundlight SDK is now installed and ready for use."}),"\n",(0,t.jsx)(e.h3,{id:"checking-groundlight-sdk-version",children:"Checking Groundlight SDK Version"}),"\n",(0,t.jsx)(e.p,{children:"To check if the Groundlight SDK is installed and to display its version, you can use the following Python one-liner:"}),"\n",(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:"language-bash",children:'python -c "import groundlight; print(groundlight.__version__)"\n'})}),"\n",(0,t.jsx)(e.h3,{id:"upgrading-groundlight-sdk",children:"Upgrading Groundlight SDK"}),"\n",(0,t.jsx)(e.p,{children:"If you need to upgrade the Groundlight SDK to the latest version, use the following pip command:"}),"\n",(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:"language-bash",children:"pip install --upgrade groundlight\n"})}),"\n",(0,t.jsxs)(e.p,{children:["Or, if you're using ",(0,t.jsx)(e.code,{children:"pip3"}),":"]}),"\n",(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:"language-bash",children:"pip3 install --upgrade groundlight\n"})}),"\n",(0,t.jsx)(e.p,{children:'After upgrading, you can use the Python one-liner mentioned in the "Checking Groundlight SDK Version" section to verify that the latest version is now installed.'}),"\n",(0,t.jsx)(e.h2,{id:"getting-the-right-python-version",children:"Getting the right Python Version"}),"\n",(0,t.jsx)(e.p,{children:"To check your installed Python version, open a terminal and run:"}),"\n",(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:"language-bash",children:"python --version\n"})}),"\n",(0,t.jsx)(e.p,{children:'If you see a version number starting with "3.7" or higher (e.g., "3.7.5" or "3.9.0"), you\'re good to go. If not, you might need to upgrade Python on your system.'}),"\n",(0,t.jsx)(e.h3,{id:"upgrading-python-on-macos",children:"Upgrading Python on MacOS"}),"\n",(0,t.jsxs)(e.p,{children:["Download the latest Python installer from the ",(0,t.jsx)(e.a,{href:"https://www.python.org/downloads/mac-osx/",children:"official Python website"})," and run it, or use ",(0,t.jsx)(e.a,{href:"https://brew.sh/",children:"Homebrew"})," to install Python:"]}),"\n",(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:"language-bash",children:"brew install python\n"})}),"\n",(0,t.jsxs)(e.p,{children:["After upgrading, verify the Python version by running ",(0,t.jsx)(e.code,{children:"python --version"})," or ",(0,t.jsx)(e.code,{children:"python3 --version"}),", as described earlier."]}),"\n",(0,t.jsx)(e.h2,{id:"ready-to-go",children:"Ready to go!"}),"\n",(0,t.jsxs)(e.p,{children:["You're now ready to start using the Groundlight SDK in your projects. For more information on using the SDK, refer to the ",(0,t.jsx)(e.a,{href:"/docs/getting-started/api-tokens",children:"API Tokens"})," and ",(0,t.jsx)(e.a,{href:"/docs/building-applications",children:"Building Applications"})," documentation pages."]})]})}function c(n={}){const{wrapper:e}={...(0,o.a)(),...n.components};return e?(0,t.jsx)(e,{...n,children:(0,t.jsx)(d,{...n})}):d(n)}},1151:(n,e,i)=>{i.d(e,{Z:()=>r,a:()=>l});var t=i(7294);const o={},s=t.createContext(o);function l(n){const e=t.useContext(s);return t.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function r(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(o):n.components||o:l(n.components),t.createElement(s.Provider,{value:e},n.children)}}}]); \ No newline at end of file diff --git a/assets/js/8091dcef.27a3f13a.js b/assets/js/8091dcef.27a3f13a.js deleted file mode 100644 index 58b9d780..00000000 --- a/assets/js/8091dcef.27a3f13a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[100],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>c});var o=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function a(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=o.createContext({}),u=function(e){var t=o.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},p=function(e){var t=u(e.components);return o.createElement(s.Provider,{value:t},e.children)},g="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},h=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,p=a(e,["components","mdxType","originalType","parentName"]),g=u(n),h=r,c=g["".concat(s,".").concat(h)]||g[h]||d[h]||i;return n?o.createElement(c,l(l({ref:t},p),{},{components:n})):o.createElement(c,l({ref:t},p))}));function c(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,l=new Array(i);l[0]=h;var a={};for(var s in t)hasOwnProperty.call(t,s)&&(a[s]=t[s]);a.originalType=e,a[g]="string"==typeof e?e:r,l[1]=a;for(var u=2;u<i;u++)l[u]=n[u];return o.createElement.apply(null,l)}return o.createElement.apply(null,n)}h.displayName="MDXCreateElement"},7143:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>i,metadata:()=>a,toc:()=>u});var o=n(7462),r=(n(7294),n(3905));const i={},l="Installing on macOS",a={unversionedId:"installation/macos",id:"installation/macos",title:"Installing on macOS",description:"This guide will help you install the Groundlight SDK on macOS. The Groundlight SDK requires Python 3.7 or higher.",source:"@site/docs/installation/2-macos.md",sourceDirName:"installation",slug:"/installation/macos",permalink:"/python-sdk/docs/installation/macos",draft:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/installation/2-macos.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Installing on Linux",permalink:"/python-sdk/docs/installation/linux"},next:{title:"Installing on Windows",permalink:"/python-sdk/docs/installation/windows"}},s={},u=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Basic Installation",id:"basic-installation",level:2},{value:"Installing Groundlight SDK",id:"installing-groundlight-sdk",level:3},{value:"Checking Groundlight SDK Version",id:"checking-groundlight-sdk-version",level:3},{value:"Upgrading Groundlight SDK",id:"upgrading-groundlight-sdk",level:3},{value:"Getting the right Python Version",id:"getting-the-right-python-version",level:2},{value:"Upgrading Python on MacOS",id:"upgrading-python-on-macos",level:3},{value:"Ready to go!",id:"ready-to-go",level:2}],p={toc:u},g="wrapper";function d(e){let{components:t,...n}=e;return(0,r.kt)(g,(0,o.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"installing-on-macos"},"Installing on macOS"),(0,r.kt)("p",null,"This guide will help you install the Groundlight SDK on macOS. The Groundlight SDK requires Python 3.7 or higher."),(0,r.kt)("h2",{id:"prerequisites"},"Prerequisites"),(0,r.kt)("p",null,"Ensure that you have the following installed on your system:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Python 3.7 or higher"),(0,r.kt)("li",{parentName:"ul"},"pip (Python package installer)")),(0,r.kt)("h2",{id:"basic-installation"},"Basic Installation"),(0,r.kt)("p",null,"Assuming you have Python 3.7 or higher installed on your system, you can proceed with the following steps to install or upgrade the Groundlight SDK:"),(0,r.kt)("h3",{id:"installing-groundlight-sdk"},"Installing Groundlight SDK"),(0,r.kt)("p",null,"To install the Groundlight SDK using pip, run the following command in your terminal:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"pip install groundlight\n")),(0,r.kt)("p",null,"If you're also using ",(0,r.kt)("inlineCode",{parentName:"p"},"python2")," on your system, you might need to use ",(0,r.kt)("inlineCode",{parentName:"p"},"pip3")," instead:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"pip3 install groundlight\n")),(0,r.kt)("p",null,"The Groundlight SDK is now installed and ready for use."),(0,r.kt)("h3",{id:"checking-groundlight-sdk-version"},"Checking Groundlight SDK Version"),(0,r.kt)("p",null,"To check if the Groundlight SDK is installed and to display its version, you can use the following Python one-liner:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},'python -c "import groundlight; print(groundlight.__version__)"\n')),(0,r.kt)("h3",{id:"upgrading-groundlight-sdk"},"Upgrading Groundlight SDK"),(0,r.kt)("p",null,"If you need to upgrade the Groundlight SDK to the latest version, use the following pip command:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"pip install --upgrade groundlight\n")),(0,r.kt)("p",null,"Or, if you're using ",(0,r.kt)("inlineCode",{parentName:"p"},"pip3"),":"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"pip3 install --upgrade groundlight\n")),(0,r.kt)("p",null,'After upgrading, you can use the Python one-liner mentioned in the "Checking Groundlight SDK Version" section to verify that the latest version is now installed.'),(0,r.kt)("h2",{id:"getting-the-right-python-version"},"Getting the right Python Version"),(0,r.kt)("p",null,"To check your installed Python version, open a terminal and run:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"python --version\n")),(0,r.kt)("p",null,'If you see a version number starting with "3.7" or higher (e.g., "3.7.5" or "3.9.0"), you\'re good to go. If not, you might need to upgrade Python on your system.'),(0,r.kt)("h3",{id:"upgrading-python-on-macos"},"Upgrading Python on MacOS"),(0,r.kt)("p",null,"Download the latest Python installer from the ",(0,r.kt)("a",{parentName:"p",href:"https://www.python.org/downloads/mac-osx/"},"official Python website")," and run it, or use ",(0,r.kt)("a",{parentName:"p",href:"https://brew.sh/"},"Homebrew")," to install Python:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"brew install python\n")),(0,r.kt)("p",null,"After upgrading, verify the Python version by running ",(0,r.kt)("inlineCode",{parentName:"p"},"python --version")," or ",(0,r.kt)("inlineCode",{parentName:"p"},"python3 --version"),", as described earlier."),(0,r.kt)("h2",{id:"ready-to-go"},"Ready to go!"),(0,r.kt)("p",null,"You're now ready to start using the Groundlight SDK in your projects. For more information on using the SDK, refer to the ",(0,r.kt)("a",{parentName:"p",href:"/docs/getting-started/api-tokens"},"API Tokens")," and ",(0,r.kt)("a",{parentName:"p",href:"/docs/building-applications"},"Building Applications")," documentation pages."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8557125a.78a37434.js b/assets/js/8557125a.78a37434.js new file mode 100644 index 00000000..43709ad4 --- /dev/null +++ b/assets/js/8557125a.78a37434.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[729],{3424:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>a,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>d});var n=i(5893),l=i(1151);const o={},r="Optional libraries",s={id:"installation/optional-libraries",title:"Optional libraries",description:"Smaller is better!",source:"@site/docs/installation/6-optional-libraries.md",sourceDirName:"installation",slug:"/installation/optional-libraries",permalink:"/python-sdk/docs/installation/optional-libraries",draft:!1,unlisted:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/installation/6-optional-libraries.md",tags:[],version:"current",sidebarPosition:6,frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Installing on NVIDIA Jetson",permalink:"/python-sdk/docs/installation/nvidia-jetson"},next:{title:"Monitoring Notification Server",permalink:"/python-sdk/docs/installation/monitoring-notification-server"}},a={},d=[{value:"Smaller is better!",id:"smaller-is-better",level:2},{value:"PIL - optional but default installed",id:"pil---optional-but-default-installed",level:2},{value:"Working without PIL",id:"working-without-pil",level:3},{value:"Numpy, OpenCV - fully optional",id:"numpy-opencv---fully-optional",level:2}];function c(e){const t={code:"code",h1:"h1",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,l.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"optional-libraries",children:"Optional libraries"}),"\n",(0,n.jsx)(t.h2,{id:"smaller-is-better",children:"Smaller is better!"}),"\n",(0,n.jsxs)(t.p,{children:["The Groundlight SDK is optimized to run on small edge devices. As such, you can use the Groundlight SDK without\ninstalling large libraries like ",(0,n.jsx)(t.code,{children:"numpy"})," or ",(0,n.jsx)(t.code,{children:"OpenCV"}),"."]}),"\n",(0,n.jsx)(t.p,{children:"But if you're already installing them, we'll use them. Our SDK detects if these libraries are installed\nand will make use of them if they're present. If not, we'll gracefully degrade, and tell you what's\nwrong if you try to use these features."}),"\n",(0,n.jsx)(t.h2,{id:"pil---optional-but-default-installed",children:"PIL - optional but default installed"}),"\n",(0,n.jsxs)(t.p,{children:["The ",(0,n.jsx)(t.code,{children:"PIL"})," library offers a bunch of standard utilities for working with images in python. The Groundlight SDK can work without ",(0,n.jsx)(t.code,{children:"PIL"}),"."]}),"\n",(0,n.jsxs)(t.p,{children:["Because ",(0,n.jsx)(t.code,{children:"PIL"})," is not very large, and is quite useful, we install it by default with the normal build of the Groundlight SDK. So when you"]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-shell",children:"pip3 install groundlight\n"})}),"\n",(0,n.jsxs)(t.p,{children:["it comes with the ",(0,n.jsx)(t.code,{children:"pillow"})," version of the ",(0,n.jsx)(t.code,{children:"PIL"})," library already installed."]}),"\n",(0,n.jsx)(t.h3,{id:"working-without-pil",children:"Working without PIL"}),"\n",(0,n.jsxs)(t.p,{children:["If you are extremely space constrained, you can install the Groundlight SDK from source without ",(0,n.jsx)(t.code,{children:"PIL"})," and it will work properly, but with reduced functionality.\nSpecifically, you will need to convert your images into ",(0,n.jsx)(t.code,{children:"JPEG"})," format yourself. The SDK normally relies on ",(0,n.jsx)(t.code,{children:"PIL"})," to do JPEG compression (which is a non-trivial algorithm), and the API requires images to be in JPEG format. However on space-constrained platforms, sometimes this conversion is done in hardware, and so we don't want to force you to install ",(0,n.jsx)(t.code,{children:"PIL"})," if you don't need it."]}),"\n",(0,n.jsx)(t.h2,{id:"numpy-opencv---fully-optional",children:"Numpy, OpenCV - fully optional"}),"\n",(0,n.jsx)(t.p,{children:"These commonly-used libraries are not installed by default, because they are quite large, and their installation can often cause conflicts with other dependent libraries. If you want to use them, install them directly."})]})}function u(e={}){const{wrapper:t}={...(0,l.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(c,{...e})}):c(e)}},1151:(e,t,i)=>{i.d(t,{Z:()=>s,a:()=>r});var n=i(7294);const l={},o=n.createContext(l);function r(e){const t=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:r(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8557125a.de554df6.js b/assets/js/8557125a.de554df6.js deleted file mode 100644 index 78ec5878..00000000 --- a/assets/js/8557125a.de554df6.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[729],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>f});var i=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function a(e,t){if(null==e)return{};var n,i,r=function(e,t){if(null==e)return{};var n,i,r={},l=Object.keys(e);for(i=0;i<l.length;i++)n=l[i],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(i=0;i<l.length;i++)n=l[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=i.createContext({}),p=function(e){var t=i.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=p(e.components);return i.createElement(s.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},m=i.forwardRef((function(e,t){var n=e.components,r=e.mdxType,l=e.originalType,s=e.parentName,u=a(e,["components","mdxType","originalType","parentName"]),d=p(n),m=r,f=d["".concat(s,".").concat(m)]||d[m]||c[m]||l;return n?i.createElement(f,o(o({ref:t},u),{},{components:n})):i.createElement(f,o({ref:t},u))}));function f(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=n.length,o=new Array(l);o[0]=m;var a={};for(var s in t)hasOwnProperty.call(t,s)&&(a[s]=t[s]);a.originalType=e,a[d]="string"==typeof e?e:r,o[1]=a;for(var p=2;p<l;p++)o[p]=n[p];return i.createElement.apply(null,o)}return i.createElement.apply(null,n)}m.displayName="MDXCreateElement"},4544:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>c,frontMatter:()=>l,metadata:()=>a,toc:()=>p});var i=n(7462),r=(n(7294),n(3905));const l={},o="Optional libraries",a={unversionedId:"installation/optional-libraries",id:"installation/optional-libraries",title:"Optional libraries",description:"Smaller is better!",source:"@site/docs/installation/6-optional-libraries.md",sourceDirName:"installation",slug:"/installation/optional-libraries",permalink:"/python-sdk/docs/installation/optional-libraries",draft:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/installation/6-optional-libraries.md",tags:[],version:"current",sidebarPosition:6,frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Installing on NVIDIA Jetson",permalink:"/python-sdk/docs/installation/nvidia-jetson"},next:{title:"Monitoring Notification Server",permalink:"/python-sdk/docs/installation/monitoring-notification-server"}},s={},p=[{value:"Smaller is better!",id:"smaller-is-better",level:2},{value:"PIL - optional but default installed",id:"pil---optional-but-default-installed",level:2},{value:"Working without PIL",id:"working-without-pil",level:3},{value:"Numpy, OpenCV - fully optional",id:"numpy-opencv---fully-optional",level:2}],u={toc:p},d="wrapper";function c(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,i.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"optional-libraries"},"Optional libraries"),(0,r.kt)("h2",{id:"smaller-is-better"},"Smaller is better!"),(0,r.kt)("p",null,"The Groundlight SDK is optimized to run on small edge devices. As such, you can use the Groundlight SDK without\ninstalling large libraries like ",(0,r.kt)("inlineCode",{parentName:"p"},"numpy")," or ",(0,r.kt)("inlineCode",{parentName:"p"},"OpenCV"),"."),(0,r.kt)("p",null,"But if you're already installing them, we'll use them. Our SDK detects if these libraries are installed\nand will make use of them if they're present. If not, we'll gracefully degrade, and tell you what's\nwrong if you try to use these features."),(0,r.kt)("h2",{id:"pil---optional-but-default-installed"},"PIL - optional but default installed"),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"PIL")," library offers a bunch of standard utilities for working with images in python. The Groundlight SDK can work without ",(0,r.kt)("inlineCode",{parentName:"p"},"PIL"),"."),(0,r.kt)("p",null,"Because ",(0,r.kt)("inlineCode",{parentName:"p"},"PIL")," is not very large, and is quite useful, we install it by default with the normal build of the Groundlight SDK. So when you"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"pip3 install groundlight\n")),(0,r.kt)("p",null,"it comes with the ",(0,r.kt)("inlineCode",{parentName:"p"},"pillow")," version of the ",(0,r.kt)("inlineCode",{parentName:"p"},"PIL")," library already installed."),(0,r.kt)("h3",{id:"working-without-pil"},"Working without PIL"),(0,r.kt)("p",null,"If you are extremely space constrained, you can install the Groundlight SDK from source without ",(0,r.kt)("inlineCode",{parentName:"p"},"PIL")," and it will work properly, but with reduced functionality.\nSpecifically, you will need to convert your images into ",(0,r.kt)("inlineCode",{parentName:"p"},"JPEG")," format yourself. The SDK normally relies on ",(0,r.kt)("inlineCode",{parentName:"p"},"PIL")," to do JPEG compression (which is a non-trivial algorithm), and the API requires images to be in JPEG format. However on space-constrained platforms, sometimes this conversion is done in hardware, and so we don't want to force you to install ",(0,r.kt)("inlineCode",{parentName:"p"},"PIL")," if you don't need it."),(0,r.kt)("h2",{id:"numpy-opencv---fully-optional"},"Numpy, OpenCV - fully optional"),(0,r.kt)("p",null,"These commonly-used libraries are not installed by default, because they are quite large, and their installation can often cause conflicts with other dependent libraries. If you want to use them, install them directly."))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/86aa3e00.3629c340.js b/assets/js/86aa3e00.3629c340.js deleted file mode 100644 index 70355e8d..00000000 --- a/assets/js/86aa3e00.3629c340.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[605],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>c});var i=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function r(e,t){if(null==e)return{};var n,i,o=function(e,t){if(null==e)return{};var n,i,o={},l=Object.keys(e);for(i=0;i<l.length;i++)n=l[i],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(i=0;i<l.length;i++)n=l[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=i.createContext({}),u=function(e){var t=i.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},p=function(e){var t=u(e.components);return i.createElement(s.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},g=i.forwardRef((function(e,t){var n=e.components,o=e.mdxType,l=e.originalType,s=e.parentName,p=r(e,["components","mdxType","originalType","parentName"]),d=u(n),g=o,c=d["".concat(s,".").concat(g)]||d[g]||h[g]||l;return n?i.createElement(c,a(a({ref:t},p),{},{components:n})):i.createElement(c,a({ref:t},p))}));function c(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var l=n.length,a=new Array(l);a[0]=g;var r={};for(var s in t)hasOwnProperty.call(t,s)&&(r[s]=t[s]);r.originalType=e,r[d]="string"==typeof e?e:o,a[1]=r;for(var u=2;u<l;u++)a[u]=n[u];return i.createElement.apply(null,a)}return i.createElement.apply(null,n)}g.displayName="MDXCreateElement"},8205:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>h,frontMatter:()=>l,metadata:()=>r,toc:()=>u});var i=n(7462),o=(n(7294),n(3905));const l={},a="Installing on Linux",r={unversionedId:"installation/linux",id:"installation/linux",title:"Installing on Linux",description:"This guide will help you install the Groundlight SDK on Linux. The Groundlight SDK requires Python 3.7 or higher.",source:"@site/docs/installation/1-linux.md",sourceDirName:"installation",slug:"/installation/linux",permalink:"/python-sdk/docs/installation/linux",draft:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/installation/1-linux.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Installation",permalink:"/python-sdk/docs/installation/"},next:{title:"Installing on macOS",permalink:"/python-sdk/docs/installation/macos"}},s={},u=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Basic Installation",id:"basic-installation",level:2},{value:"Installing Groundlight SDK",id:"installing-groundlight-sdk",level:3},{value:"Checking Groundlight SDK Version",id:"checking-groundlight-sdk-version",level:3},{value:"Upgrading Groundlight SDK",id:"upgrading-groundlight-sdk",level:3},{value:"Getting the right Python Version",id:"getting-the-right-python-version",level:2},{value:"Upgrading Python on Linux",id:"upgrading-python-on-linux",level:3},{value:"Special note about Ubuntu 18.04",id:"special-note-about-ubuntu-1804",level:3},{value:"Ready to go!",id:"ready-to-go",level:2}],p={toc:u},d="wrapper";function h(e){let{components:t,...n}=e;return(0,o.kt)(d,(0,i.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"installing-on-linux"},"Installing on Linux"),(0,o.kt)("p",null,"This guide will help you install the Groundlight SDK on Linux. The Groundlight SDK requires Python 3.7 or higher."),(0,o.kt)("h2",{id:"prerequisites"},"Prerequisites"),(0,o.kt)("p",null,"Ensure that you have the following installed on your system:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Python 3.7 or higher"),(0,o.kt)("li",{parentName:"ul"},"pip (Python package installer)")),(0,o.kt)("h2",{id:"basic-installation"},"Basic Installation"),(0,o.kt)("p",null,"Assuming you have Python 3.7 or higher installed on your system, you can proceed with the following steps to install or upgrade the Groundlight SDK:"),(0,o.kt)("h3",{id:"installing-groundlight-sdk"},"Installing Groundlight SDK"),(0,o.kt)("p",null,"To install the Groundlight SDK using pip, run the following command in your terminal:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"pip install groundlight\n")),(0,o.kt)("p",null,"If you're also using ",(0,o.kt)("inlineCode",{parentName:"p"},"python2")," on your system, you might need to use ",(0,o.kt)("inlineCode",{parentName:"p"},"pip3")," instead:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"pip3 install groundlight\n")),(0,o.kt)("p",null,"The Groundlight SDK is now installed and ready for use."),(0,o.kt)("h3",{id:"checking-groundlight-sdk-version"},"Checking Groundlight SDK Version"),(0,o.kt)("p",null,"To check if the Groundlight SDK is installed and to display its version, you can use the following Python one-liner:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},'python -c "import groundlight; print(groundlight.__version__)"\n')),(0,o.kt)("h3",{id:"upgrading-groundlight-sdk"},"Upgrading Groundlight SDK"),(0,o.kt)("p",null,"If you need to upgrade the Groundlight SDK to the latest version, use the following pip command:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"pip install --upgrade groundlight\n")),(0,o.kt)("p",null,"Or, if you're using ",(0,o.kt)("inlineCode",{parentName:"p"},"pip3"),":"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"pip3 install --upgrade groundlight\n")),(0,o.kt)("p",null,'After upgrading, you can use the Python one-liner mentioned in the "Checking Groundlight SDK Version" section to verify that the latest version is now installed.'),(0,o.kt)("h2",{id:"getting-the-right-python-version"},"Getting the right Python Version"),(0,o.kt)("p",null,"To check your installed Python version, open a terminal and run:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"python --version\n")),(0,o.kt)("p",null,'If you see a version number starting with "3.7" or higher (e.g., "3.7.5" or "3.9.0"), you\'re good to go. If not, you might need to upgrade Python on your system.'),(0,o.kt)("h3",{id:"upgrading-python-on-linux"},"Upgrading Python on Linux"),(0,o.kt)("p",null,"Use your distribution's package manager to install the latest Python version:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"For Ubuntu or Debian-based systems:"),(0,o.kt)("pre",{parentName:"li"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"sudo apt update\nsudo apt install python3\n")),(0,o.kt)("p",{parentName:"li"},"(For Ubuntu 18.04 see note below.)")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"For Fedora-based systems:"),(0,o.kt)("pre",{parentName:"li"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"sudo dnf install python3\n"))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"For Arch Linux:"),(0,o.kt)("pre",{parentName:"li"},(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"sudo pacman -S python\n")))),(0,o.kt)("p",null,"After upgrading, verify the Python version by running ",(0,o.kt)("inlineCode",{parentName:"p"},"python --version")," or ",(0,o.kt)("inlineCode",{parentName:"p"},"python3 --version"),", as described earlier."),(0,o.kt)("h3",{id:"special-note-about-ubuntu-1804"},"Special note about Ubuntu 18.04"),(0,o.kt)("p",null,"Ubuntu 18.04 still uses python 3.6 by default, which is end-of-life. We generally recommend using python 3.10. If you know how to install py3.10, please go ahead. But the easiest version of python 3 to use with Ubuntu 18.04 is python 3.8, which can be installed as follows without adding any extra repositories:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"# Prepare Ubuntu to install things\nsudo apt-get update\n# Install the basics\nsudo apt-get install -y python3.8 python3.8-distutils curl\n# Configure `python3` to run python3.8 by default\nsudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 10\n# Download and install pip3.8\ncurl https://bootstrap.pypa.io/get-pip.py > /tmp/get-pip.py\nsudo python3.8 /tmp/get-pip.py\n# Configure `pip3` to run pip3.8\nsudo update-alternatives --install /usr/bin/pip3 pip3 $(which pip3.8) 10\n# Now we can install Groundlight!\npip3 install groundlight\n")),(0,o.kt)("h2",{id:"ready-to-go"},"Ready to go!"),(0,o.kt)("p",null,"You're now ready to start using the Groundlight SDK in your projects. For more information on using the SDK, refer to the ",(0,o.kt)("a",{parentName:"p",href:"/docs/getting-started/api-tokens"},"API Tokens")," and ",(0,o.kt)("a",{parentName:"p",href:"/docs/building-applications"},"Building Applications")," documentation pages."))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/86aa3e00.e5303d3b.js b/assets/js/86aa3e00.e5303d3b.js new file mode 100644 index 00000000..8a2212ed --- /dev/null +++ b/assets/js/86aa3e00.e5303d3b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[605],{9121:(n,e,i)=>{i.r(e),i.d(e,{assets:()=>a,contentTitle:()=>l,default:()=>u,frontMatter:()=>o,metadata:()=>r,toc:()=>h});var t=i(5893),s=i(1151);const o={},l="Installing on Linux",r={id:"installation/linux",title:"Installing on Linux",description:"This guide will help you install the Groundlight SDK on Linux. The Groundlight SDK requires Python 3.7 or higher.",source:"@site/docs/installation/1-linux.md",sourceDirName:"installation",slug:"/installation/linux",permalink:"/python-sdk/docs/installation/linux",draft:!1,unlisted:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/installation/1-linux.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Installation",permalink:"/python-sdk/docs/installation/"},next:{title:"Installing on macOS",permalink:"/python-sdk/docs/installation/macos"}},a={},h=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Basic Installation",id:"basic-installation",level:2},{value:"Installing Groundlight SDK",id:"installing-groundlight-sdk",level:3},{value:"Checking Groundlight SDK Version",id:"checking-groundlight-sdk-version",level:3},{value:"Upgrading Groundlight SDK",id:"upgrading-groundlight-sdk",level:3},{value:"Getting the right Python Version",id:"getting-the-right-python-version",level:2},{value:"Upgrading Python on Linux",id:"upgrading-python-on-linux",level:3},{value:"Special note about Ubuntu 18.04",id:"special-note-about-ubuntu-1804",level:3},{value:"Ready to go!",id:"ready-to-go",level:2}];function d(n){const e={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.a)(),...n.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(e.h1,{id:"installing-on-linux",children:"Installing on Linux"}),"\n",(0,t.jsx)(e.p,{children:"This guide will help you install the Groundlight SDK on Linux. The Groundlight SDK requires Python 3.7 or higher."}),"\n",(0,t.jsx)(e.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,t.jsx)(e.p,{children:"Ensure that you have the following installed on your system:"}),"\n",(0,t.jsxs)(e.ul,{children:["\n",(0,t.jsx)(e.li,{children:"Python 3.7 or higher"}),"\n",(0,t.jsx)(e.li,{children:"pip (Python package installer)"}),"\n"]}),"\n",(0,t.jsx)(e.h2,{id:"basic-installation",children:"Basic Installation"}),"\n",(0,t.jsx)(e.p,{children:"Assuming you have Python 3.7 or higher installed on your system, you can proceed with the following steps to install or upgrade the Groundlight SDK:"}),"\n",(0,t.jsx)(e.h3,{id:"installing-groundlight-sdk",children:"Installing Groundlight SDK"}),"\n",(0,t.jsx)(e.p,{children:"To install the Groundlight SDK using pip, run the following command in your terminal:"}),"\n",(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:"language-bash",children:"pip install groundlight\n"})}),"\n",(0,t.jsxs)(e.p,{children:["If you're also using ",(0,t.jsx)(e.code,{children:"python2"})," on your system, you might need to use ",(0,t.jsx)(e.code,{children:"pip3"})," instead:"]}),"\n",(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:"language-bash",children:"pip3 install groundlight\n"})}),"\n",(0,t.jsx)(e.p,{children:"The Groundlight SDK is now installed and ready for use."}),"\n",(0,t.jsx)(e.h3,{id:"checking-groundlight-sdk-version",children:"Checking Groundlight SDK Version"}),"\n",(0,t.jsx)(e.p,{children:"To check if the Groundlight SDK is installed and to display its version, you can use the following Python one-liner:"}),"\n",(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:"language-bash",children:'python -c "import groundlight; print(groundlight.__version__)"\n'})}),"\n",(0,t.jsx)(e.h3,{id:"upgrading-groundlight-sdk",children:"Upgrading Groundlight SDK"}),"\n",(0,t.jsx)(e.p,{children:"If you need to upgrade the Groundlight SDK to the latest version, use the following pip command:"}),"\n",(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:"language-bash",children:"pip install --upgrade groundlight\n"})}),"\n",(0,t.jsxs)(e.p,{children:["Or, if you're using ",(0,t.jsx)(e.code,{children:"pip3"}),":"]}),"\n",(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:"language-bash",children:"pip3 install --upgrade groundlight\n"})}),"\n",(0,t.jsx)(e.p,{children:'After upgrading, you can use the Python one-liner mentioned in the "Checking Groundlight SDK Version" section to verify that the latest version is now installed.'}),"\n",(0,t.jsx)(e.h2,{id:"getting-the-right-python-version",children:"Getting the right Python Version"}),"\n",(0,t.jsx)(e.p,{children:"To check your installed Python version, open a terminal and run:"}),"\n",(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:"language-bash",children:"python --version\n"})}),"\n",(0,t.jsx)(e.p,{children:'If you see a version number starting with "3.7" or higher (e.g., "3.7.5" or "3.9.0"), you\'re good to go. If not, you might need to upgrade Python on your system.'}),"\n",(0,t.jsx)(e.h3,{id:"upgrading-python-on-linux",children:"Upgrading Python on Linux"}),"\n",(0,t.jsx)(e.p,{children:"Use your distribution's package manager to install the latest Python version:"}),"\n",(0,t.jsxs)(e.ul,{children:["\n",(0,t.jsxs)(e.li,{children:["\n",(0,t.jsx)(e.p,{children:"For Ubuntu or Debian-based systems:"}),"\n",(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:"language-bash",children:"sudo apt update\nsudo apt install python3\n"})}),"\n",(0,t.jsx)(e.p,{children:"(For Ubuntu 18.04 see note below.)"}),"\n"]}),"\n",(0,t.jsxs)(e.li,{children:["\n",(0,t.jsx)(e.p,{children:"For Fedora-based systems:"}),"\n",(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:"language-bash",children:"sudo dnf install python3\n"})}),"\n"]}),"\n",(0,t.jsxs)(e.li,{children:["\n",(0,t.jsx)(e.p,{children:"For Arch Linux:"}),"\n",(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:"language-bash",children:"sudo pacman -S python\n"})}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(e.p,{children:["After upgrading, verify the Python version by running ",(0,t.jsx)(e.code,{children:"python --version"})," or ",(0,t.jsx)(e.code,{children:"python3 --version"}),", as described earlier."]}),"\n",(0,t.jsx)(e.h3,{id:"special-note-about-ubuntu-1804",children:"Special note about Ubuntu 18.04"}),"\n",(0,t.jsx)(e.p,{children:"Ubuntu 18.04 still uses python 3.6 by default, which is end-of-life. We generally recommend using python 3.10. If you know how to install py3.10, please go ahead. But the easiest version of python 3 to use with Ubuntu 18.04 is python 3.8, which can be installed as follows without adding any extra repositories:"}),"\n",(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:"language-shell",children:"# Prepare Ubuntu to install things\nsudo apt-get update\n# Install the basics\nsudo apt-get install -y python3.8 python3.8-distutils curl\n# Configure `python3` to run python3.8 by default\nsudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 10\n# Download and install pip3.8\ncurl https://bootstrap.pypa.io/get-pip.py > /tmp/get-pip.py\nsudo python3.8 /tmp/get-pip.py\n# Configure `pip3` to run pip3.8\nsudo update-alternatives --install /usr/bin/pip3 pip3 $(which pip3.8) 10\n# Now we can install Groundlight!\npip3 install groundlight\n"})}),"\n",(0,t.jsx)(e.h2,{id:"ready-to-go",children:"Ready to go!"}),"\n",(0,t.jsxs)(e.p,{children:["You're now ready to start using the Groundlight SDK in your projects. For more information on using the SDK, refer to the ",(0,t.jsx)(e.a,{href:"/docs/getting-started/api-tokens",children:"API Tokens"})," and ",(0,t.jsx)(e.a,{href:"/docs/building-applications",children:"Building Applications"})," documentation pages."]})]})}function u(n={}){const{wrapper:e}={...(0,s.a)(),...n.components};return e?(0,t.jsx)(e,{...n,children:(0,t.jsx)(d,{...n})}):d(n)}},1151:(n,e,i)=>{i.d(e,{Z:()=>r,a:()=>l});var t=i(7294);const s={},o=t.createContext(s);function l(n){const e=t.useContext(o);return t.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function r(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(s):n.components||s:l(n.components),t.createElement(o.Provider,{value:e},n.children)}}}]); \ No newline at end of file diff --git a/assets/js/8c48aa69.3390a80a.js b/assets/js/8c48aa69.3390a80a.js new file mode 100644 index 00000000..a0ce2567 --- /dev/null +++ b/assets/js/8c48aa69.3390a80a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[502],{7724:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>s,default:()=>h,frontMatter:()=>d,metadata:()=>r,toc:()=>l});var t=i(5893),o=i(1151);const d={sidebar_position:6},s="Using Groundlight on the Edge",r={id:"building-applications/edge",title:"Using Groundlight on the Edge",description:"If your account has access to edge models, you can download and install them to your edge devices.",source:"@site/docs/building-applications/7-edge.md",sourceDirName:"building-applications",slug:"/building-applications/edge",permalink:"/python-sdk/docs/building-applications/edge",draft:!1,unlisted:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/building-applications/7-edge.md",tags:[],version:"current",sidebarPosition:6,frontMatter:{sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Asynchronous Queries",permalink:"/python-sdk/docs/building-applications/async-queries"},next:{title:"Industrial and Manufacturing Applications",permalink:"/python-sdk/docs/building-applications/industrial"}},a={},l=[{value:"How the Edge Endpoint works",id:"how-the-edge-endpoint-works",level:2},{value:"Configuring the Edge Endpoint",id:"configuring-the-edge-endpoint",level:2}];function c(e){const n={br:"br",code:"code",h1:"h1",h2:"h2",p:"p",pre:"pre",...(0,o.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"using-groundlight-on-the-edge",children:"Using Groundlight on the Edge"}),"\n",(0,t.jsxs)(n.p,{children:["If your account has access to edge models, you can download and install them to your edge devices.",(0,t.jsx)(n.br,{}),"\n","This allows you to run your model evaluations on the edge, reducing latency, cost, network bandwidth, and energy."]}),"\n",(0,t.jsx)(n.h2,{id:"how-the-edge-endpoint-works",children:"How the Edge Endpoint works"}),"\n",(0,t.jsx)(n.p,{children:'The Edge Endpoint runs as a set of docker containers on an "edge device". This edge device can be an NVIDIA Jetson device, rack-mounted server, or even a Raspberry Pi. The Edge Endpoint is responsible for downloading and running the models,\nand for communicating with the Groundlight cloud service.'}),"\n",(0,t.jsxs)(n.p,{children:["To use the edge endpoint, simply configure the Groundlight SDK to use the edge endpoint's URL instead of the cloud endpoint.\nAll application logic will work seamlessly and unchanged with the Groundlight Edge Endpoint, except some ML answers will\nreturn much faster locally. The only visible difference is that image queries answered at the edge endpoint will have the prefix ",(0,t.jsx)(n.code,{children:"iqe_"})," instead of ",(0,t.jsx)(n.code,{children:"iq_"})," for image queries answered in the cloud. ",(0,t.jsx)(n.code,{children:"iqe_"}),' stands for "image query edge". Edge-originated\nimage queries will not appear in the cloud dashboard.']}),"\n",(0,t.jsx)(n.h2,{id:"configuring-the-edge-endpoint",children:"Configuring the Edge Endpoint"}),"\n",(0,t.jsx)(n.p,{children:"To configure the Groundlight SDK to use the edge endpoint, you can either pass the endpoint URL to the Groundlight constructor like:"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:'from groundlight import Groundlight\ngl = Groundlight(endpoint="http://localhost:6717")\n'})}),"\n",(0,t.jsxs)(n.p,{children:["or by setting the ",(0,t.jsx)(n.code,{children:"GROUNDLIGHT_ENDPOINT"})," environment variable like:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"export GROUNDLIGHT_ENDPOINT=http://localhost:6717\npython your_app.py\n"})})]})}function h(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},1151:(e,n,i)=>{i.d(n,{Z:()=>r,a:()=>s});var t=i(7294);const o={},d=t.createContext(o);function s(e){const n=t.useContext(d);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),t.createElement(d.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8c48aa69.7a2eb4e0.js b/assets/js/8c48aa69.7a2eb4e0.js deleted file mode 100644 index cf07ac95..00000000 --- a/assets/js/8c48aa69.7a2eb4e0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[502],{3905:(e,n,t)=>{t.d(n,{Zo:()=>p,kt:()=>h});var o=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function a(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){r(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function d(e,n){if(null==e)return{};var t,o,r=function(e,n){if(null==e)return{};var t,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)t=i[o],n.indexOf(t)>=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)t=i[o],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var l=o.createContext({}),s=function(e){var n=o.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):a(a({},n),e)),t},p=function(e){var n=s(e.components);return o.createElement(l.Provider,{value:n},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var n=e.children;return o.createElement(o.Fragment,{},n)}},g=o.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,p=d(e,["components","mdxType","originalType","parentName"]),c=s(t),g=r,h=c["".concat(l,".").concat(g)]||c[g]||u[g]||i;return t?o.createElement(h,a(a({ref:n},p),{},{components:t})):o.createElement(h,a({ref:n},p))}));function h(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,a=new Array(i);a[0]=g;var d={};for(var l in n)hasOwnProperty.call(n,l)&&(d[l]=n[l]);d.originalType=e,d[c]="string"==typeof e?e:r,a[1]=d;for(var s=2;s<i;s++)a[s]=t[s];return o.createElement.apply(null,a)}return o.createElement.apply(null,t)}g.displayName="MDXCreateElement"},1343:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>d,toc:()=>s});var o=t(7462),r=(t(7294),t(3905));const i={sidebar_position:6},a="Using Groundlight on the Edge",d={unversionedId:"building-applications/edge",id:"building-applications/edge",title:"Using Groundlight on the Edge",description:"If your account has access to edge models, you can download and install them to your edge devices.",source:"@site/docs/building-applications/7-edge.md",sourceDirName:"building-applications",slug:"/building-applications/edge",permalink:"/python-sdk/docs/building-applications/edge",draft:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/building-applications/7-edge.md",tags:[],version:"current",sidebarPosition:6,frontMatter:{sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"Asynchronous Queries",permalink:"/python-sdk/docs/building-applications/async-queries"},next:{title:"Industrial and Manufacturing Applications",permalink:"/python-sdk/docs/building-applications/industrial"}},l={},s=[{value:"How the Edge Endpoint works",id:"how-the-edge-endpoint-works",level:2},{value:"Configuring the Edge Endpoint",id:"configuring-the-edge-endpoint",level:2}],p={toc:s},c="wrapper";function u(e){let{components:n,...t}=e;return(0,r.kt)(c,(0,o.Z)({},p,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"using-groundlight-on-the-edge"},"Using Groundlight on the Edge"),(0,r.kt)("p",null,"If your account has access to edge models, you can download and install them to your edge devices.",(0,r.kt)("br",{parentName:"p"}),"\n","This allows you to run your model evaluations on the edge, reducing latency, cost, network bandwidth, and energy."),(0,r.kt)("h2",{id:"how-the-edge-endpoint-works"},"How the Edge Endpoint works"),(0,r.kt)("p",null,'The Edge Endpoint runs as a set of docker containers on an "edge device". This edge device can be an NVIDIA Jetson device, rack-mounted server, or even a Raspberry Pi. The Edge Endpoint is responsible for downloading and running the models,\nand for communicating with the Groundlight cloud service.'),(0,r.kt)("p",null,"To use the edge endpoint, simply configure the Groundlight SDK to use the edge endpoint's URL instead of the cloud endpoint.\nAll application logic will work seamlessly and unchanged with the Groundlight Edge Endpoint, except some ML answers will\nreturn much faster locally. The only visible difference is that image queries answered at the edge endpoint will have the prefix ",(0,r.kt)("inlineCode",{parentName:"p"},"iqe_")," instead of ",(0,r.kt)("inlineCode",{parentName:"p"},"iq_")," for image queries answered in the cloud. ",(0,r.kt)("inlineCode",{parentName:"p"},"iqe_"),' stands for "image query edge". Edge-originated\nimage queries will not appear in the cloud dashboard.'),(0,r.kt)("h2",{id:"configuring-the-edge-endpoint"},"Configuring the Edge Endpoint"),(0,r.kt)("p",null,"To configure the Groundlight SDK to use the edge endpoint, you can either pass the endpoint URL to the Groundlight constructor like:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-python"},'from groundlight import Groundlight\ngl = Groundlight(endpoint="http://localhost:6717")\n')),(0,r.kt)("p",null,"or by setting the ",(0,r.kt)("inlineCode",{parentName:"p"},"GROUNDLIGHT_ENDPOINT")," environment variable like:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export GROUNDLIGHT_ENDPOINT=http://localhost:6717\npython your_app.py\n")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.421dec64.js b/assets/js/935f2afb.421dec64.js deleted file mode 100644 index 970ee016..00000000 --- a/assets/js/935f2afb.421dec64.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[53],{1109:i=>{i.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"category","label":"Getting Started","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"API Tokens","href":"/python-sdk/docs/getting-started/api-tokens","docId":"getting-started/api-tokens"},{"type":"link","label":"Writing Queries","href":"/python-sdk/docs/getting-started/writing-queries","docId":"getting-started/writing-queries"},{"type":"link","label":"A Serious Example: Retail Analytics","href":"/python-sdk/docs/getting-started/retail-analytics","docId":"getting-started/retail-analytics"},{"type":"link","label":"A Fun Example: Dog-on-Couch Detector","href":"/python-sdk/docs/getting-started/dog-on-couch","docId":"getting-started/dog-on-couch"},{"type":"link","label":"A Quick Example: Live Stream Alert","href":"/python-sdk/docs/getting-started/streaming","docId":"getting-started/streaming"}],"href":"/python-sdk/docs/getting-started/"},{"type":"category","label":"Building Applications","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Sample Applications","href":"/python-sdk/docs/building-applications/sample-applications","docId":"building-applications/sample-applications"},{"type":"link","label":"Grabbing Images","href":"/python-sdk/docs/building-applications/grabbing-images","docId":"building-applications/grabbing-images"},{"type":"link","label":"Working with Detectors","href":"/python-sdk/docs/building-applications/working-with-detectors","docId":"building-applications/working-with-detectors"},{"type":"link","label":"Confidence Levels","href":"/python-sdk/docs/building-applications/managing-confidence","docId":"building-applications/managing-confidence"},{"type":"link","label":"Handling Server Errors","href":"/python-sdk/docs/building-applications/handling-errors","docId":"building-applications/handling-errors"},{"type":"link","label":"Asynchronous Queries","href":"/python-sdk/docs/building-applications/async-queries","docId":"building-applications/async-queries"},{"type":"link","label":"Using Groundlight on the Edge","href":"/python-sdk/docs/building-applications/edge","docId":"building-applications/edge"},{"type":"link","label":"Industrial and Manufacturing Applications","href":"/python-sdk/docs/building-applications/industrial","docId":"building-applications/industrial"}],"href":"/python-sdk/docs/building-applications/"},{"type":"category","label":"Installation","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Installing on Linux","href":"/python-sdk/docs/installation/linux","docId":"installation/linux"},{"type":"link","label":"Installing on macOS","href":"/python-sdk/docs/installation/macos","docId":"installation/macos"},{"type":"link","label":"Installing on Windows","href":"/python-sdk/docs/installation/windows","docId":"installation/windows"},{"type":"link","label":"Installing on Raspberry Pi","href":"/python-sdk/docs/installation/raspberry-pi","docId":"installation/raspberry-pi"},{"type":"link","label":"Installing on NVIDIA Jetson","href":"/python-sdk/docs/installation/nvidia-jetson","docId":"installation/nvidia-jetson"},{"type":"link","label":"Optional libraries","href":"/python-sdk/docs/installation/optional-libraries","docId":"installation/optional-libraries"},{"type":"link","label":"Monitoring Notification Server","href":"/python-sdk/docs/installation/monitoring-notification-server","docId":"installation/monitoring-notification-server"}],"href":"/python-sdk/docs/installation/"},{"type":"link","label":"IoT","href":"/python-sdk/docs/iot/","docId":"iot/esp32cam"},{"type":"link","label":"API Reference","href":"/python-sdk/docs/api-reference/","docId":"api-reference/redirect"}]},"docs":{"api-reference/redirect":{"id":"api-reference/redirect","title":"API Reference","description":"","sidebar":"tutorialSidebar"},"building-applications/async-queries":{"id":"building-applications/async-queries","title":"Asynchronous Queries","description":"Groundlight provides a simple interface for submitting asynchronous queries. This is useful for times in which the thread or process or machine submitting image queries is not the same thread or machine that will be retrieving and using the results. For example, you might have a forward deployed robot or camera that submits image queries to Groundlight, and a separate server that retrieves the results and takes action based on them. We will refer to these two machines as the submitting machine and the retrieving machine.","sidebar":"tutorialSidebar"},"building-applications/building-applications":{"id":"building-applications/building-applications","title":"Building Applications","description":"Groundlight provides a powerful \\"computer vision powered by natural language\\" system that enables you to build visual applications with minimal code. With Groundlight, you can quickly create applications for various use cases, from simple object detection to complex visual analysis.","sidebar":"tutorialSidebar"},"building-applications/edge":{"id":"building-applications/edge","title":"Using Groundlight on the Edge","description":"If your account has access to edge models, you can download and install them to your edge devices.","sidebar":"tutorialSidebar"},"building-applications/grabbing-images":{"id":"building-applications/grabbing-images","title":"Grabbing Images","description":"Groundlight\'s SDK accepts images in many popular formats, including PIL, OpenCV, and numpy arrays.","sidebar":"tutorialSidebar"},"building-applications/handling-errors":{"id":"building-applications/handling-errors","title":"Handling Server Errors","description":"When building applications with the Groundlight SDK, you may encounter server errors during API calls. This page covers how to handle such errors and build robust code that can gracefully handle exceptions.","sidebar":"tutorialSidebar"},"building-applications/industrial":{"id":"building-applications/industrial","title":"Industrial and Manufacturing Applications","description":"Modern natural language-based computer vision is transforming industrial and manufacturing applications by enabling more intuitive interaction with automation systems. Groundlight offers cutting-edge computer vision technology that can be seamlessly integrated into various industrial processes, enhancing efficiency, productivity, and quality control.","sidebar":"tutorialSidebar"},"building-applications/managing-confidence":{"id":"building-applications/managing-confidence","title":"Confidence Levels","description":"Groundlight gives you a simple way to control the trade-off of latency against accuracy. The longer you can wait for an answer to your image query, the better accuracy you can get. In particular, if the ML models are unsure of the best response, they will escalate the image query to more intensive analysis with more complex models and real-time human monitors as needed. Your code can easily wait for this delayed response. Either way, these new results are automatically trained into your models so your next queries will get better results faster.","sidebar":"tutorialSidebar"},"building-applications/sample-applications":{"id":"building-applications/sample-applications","title":"Sample Applications","description":"Explore these GitHub repositories to see examples of Groundlight-powered applications:","sidebar":"tutorialSidebar"},"building-applications/working-with-detectors":{"id":"building-applications/working-with-detectors","title":"Working with Detectors","description":"Explicitly create a new detector","sidebar":"tutorialSidebar"},"getting-started/api-tokens":{"id":"getting-started/api-tokens","title":"API Tokens","description":"About API Tokens","sidebar":"tutorialSidebar"},"getting-started/dog-on-couch":{"id":"getting-started/dog-on-couch","title":"A Fun Example: Dog-on-Couch Detector","description":"Here is a whimsical example of how you could use Groundlight in your home to keep your dog off the couch. This document will guide you through creating a complete application. If the dog is detected on the couch, the application will play a pre-recorded sound over the computer\'s speakers, instructing the dog to get off the couch. Be sure to record your own voice so that your dog pays attention to you.","sidebar":"tutorialSidebar"},"getting-started/getting-started":{"id":"getting-started/getting-started","title":"Getting Started","description":"Computer Vision powered by Natural Language","sidebar":"tutorialSidebar"},"getting-started/retail-analytics":{"id":"getting-started/retail-analytics","title":"A Serious Example: Retail Analytics","description":"Tracking utilization of a customer service counter","sidebar":"tutorialSidebar"},"getting-started/streaming":{"id":"getting-started/streaming","title":"A Quick Example: Live Stream Alert","description":"A quick example to get used to setting up detectors and asking good questions: set up a monitor on a live stream.","sidebar":"tutorialSidebar"},"getting-started/writing-queries":{"id":"getting-started/writing-queries","title":"Writing Queries","description":"Introduction","sidebar":"tutorialSidebar"},"installation/installation":{"id":"installation/installation","title":"Installation","description":"Welcome to the Groundlight SDK installation guide. In this guide, you\'ll find step-by-step instructions on how to install and set up the Groundlight SDK on various platforms.","sidebar":"tutorialSidebar"},"installation/linux":{"id":"installation/linux","title":"Installing on Linux","description":"This guide will help you install the Groundlight SDK on Linux. The Groundlight SDK requires Python 3.7 or higher.","sidebar":"tutorialSidebar"},"installation/macos":{"id":"installation/macos","title":"Installing on macOS","description":"This guide will help you install the Groundlight SDK on macOS. The Groundlight SDK requires Python 3.7 or higher.","sidebar":"tutorialSidebar"},"installation/monitoring-notification-server":{"id":"installation/monitoring-notification-server","title":"Monitoring Notification Server","description":"This is the easiest way to deploy your Groundlight detectors on a linux computer. All configuration is done through a web user interface, and no code development is required.","sidebar":"tutorialSidebar"},"installation/nvidia-jetson":{"id":"installation/nvidia-jetson","title":"Installing on NVIDIA Jetson","description":"This guide will help you install the Groundlight SDK on NVIDIA Jetson devices. The Groundlight SDK requires Python 3.7 or higher.","sidebar":"tutorialSidebar"},"installation/optional-libraries":{"id":"installation/optional-libraries","title":"Optional libraries","description":"Smaller is better!","sidebar":"tutorialSidebar"},"installation/raspberry-pi":{"id":"installation/raspberry-pi","title":"Installing on Raspberry Pi","description":"This guide will help you install the Groundlight SDK on Raspberry Pi. The Groundlight SDK requires Python 3.7 or higher.","sidebar":"tutorialSidebar"},"installation/windows":{"id":"installation/windows","title":"Installing on Windows","description":"This guide will help you install the Groundlight SDK on Windows. The Groundlight SDK requires Python 3.7 or higher.","sidebar":"tutorialSidebar"},"iot/esp32cam":{"id":"iot/esp32cam","title":"Setting up an ESP32 Camera Board","description":"Groundlight supplies a tool for no-code deployment of a detector to an ESP32 Camera board. You can find it at https://iot.groundlight.ai/espcam.","sidebar":"tutorialSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.b0089de4.js b/assets/js/935f2afb.b0089de4.js new file mode 100644 index 00000000..8fce20f2 --- /dev/null +++ b/assets/js/935f2afb.b0089de4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[53],{1109:i=>{i.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"category","label":"Getting Started","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"API Tokens","href":"/python-sdk/docs/getting-started/api-tokens","docId":"getting-started/api-tokens","unlisted":false},{"type":"link","label":"Writing Queries","href":"/python-sdk/docs/getting-started/writing-queries","docId":"getting-started/writing-queries","unlisted":false},{"type":"link","label":"A Serious Example: Retail Analytics","href":"/python-sdk/docs/getting-started/retail-analytics","docId":"getting-started/retail-analytics","unlisted":false},{"type":"link","label":"A Fun Example: Dog-on-Couch Detector","href":"/python-sdk/docs/getting-started/dog-on-couch","docId":"getting-started/dog-on-couch","unlisted":false},{"type":"link","label":"A Quick Example: Live Stream Alert","href":"/python-sdk/docs/getting-started/streaming","docId":"getting-started/streaming","unlisted":false}],"href":"/python-sdk/docs/getting-started/"},{"type":"category","label":"Building Applications","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Sample Applications","href":"/python-sdk/docs/building-applications/sample-applications","docId":"building-applications/sample-applications","unlisted":false},{"type":"link","label":"Grabbing Images","href":"/python-sdk/docs/building-applications/grabbing-images","docId":"building-applications/grabbing-images","unlisted":false},{"type":"link","label":"Working with Detectors","href":"/python-sdk/docs/building-applications/working-with-detectors","docId":"building-applications/working-with-detectors","unlisted":false},{"type":"link","label":"Confidence Levels","href":"/python-sdk/docs/building-applications/managing-confidence","docId":"building-applications/managing-confidence","unlisted":false},{"type":"link","label":"Handling Server Errors","href":"/python-sdk/docs/building-applications/handling-errors","docId":"building-applications/handling-errors","unlisted":false},{"type":"link","label":"Asynchronous Queries","href":"/python-sdk/docs/building-applications/async-queries","docId":"building-applications/async-queries","unlisted":false},{"type":"link","label":"Using Groundlight on the Edge","href":"/python-sdk/docs/building-applications/edge","docId":"building-applications/edge","unlisted":false},{"type":"link","label":"Industrial and Manufacturing Applications","href":"/python-sdk/docs/building-applications/industrial","docId":"building-applications/industrial","unlisted":false}],"href":"/python-sdk/docs/building-applications/"},{"type":"category","label":"Installation","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Installing on Linux","href":"/python-sdk/docs/installation/linux","docId":"installation/linux","unlisted":false},{"type":"link","label":"Installing on macOS","href":"/python-sdk/docs/installation/macos","docId":"installation/macos","unlisted":false},{"type":"link","label":"Installing on Windows","href":"/python-sdk/docs/installation/windows","docId":"installation/windows","unlisted":false},{"type":"link","label":"Installing on Raspberry Pi","href":"/python-sdk/docs/installation/raspberry-pi","docId":"installation/raspberry-pi","unlisted":false},{"type":"link","label":"Installing on NVIDIA Jetson","href":"/python-sdk/docs/installation/nvidia-jetson","docId":"installation/nvidia-jetson","unlisted":false},{"type":"link","label":"Optional libraries","href":"/python-sdk/docs/installation/optional-libraries","docId":"installation/optional-libraries","unlisted":false},{"type":"link","label":"Monitoring Notification Server","href":"/python-sdk/docs/installation/monitoring-notification-server","docId":"installation/monitoring-notification-server","unlisted":false}],"href":"/python-sdk/docs/installation/"},{"type":"link","label":"IoT","href":"/python-sdk/docs/iot/","docId":"iot/esp32cam","unlisted":false},{"type":"link","label":"API Reference","href":"/python-sdk/docs/api-reference/","docId":"api-reference/redirect","unlisted":false}]},"docs":{"api-reference/redirect":{"id":"api-reference/redirect","title":"API Reference","description":"","sidebar":"tutorialSidebar"},"building-applications/async-queries":{"id":"building-applications/async-queries","title":"Asynchronous Queries","description":"Groundlight provides a simple interface for submitting asynchronous queries. This is useful for times in which the thread or process or machine submitting image queries is not the same thread or machine that will be retrieving and using the results. For example, you might have a forward deployed robot or camera that submits image queries to Groundlight, and a separate server that retrieves the results and takes action based on them. We will refer to these two machines as the submitting machine and the retrieving machine.","sidebar":"tutorialSidebar"},"building-applications/building-applications":{"id":"building-applications/building-applications","title":"Building Applications","description":"Groundlight provides a powerful \\"computer vision powered by natural language\\" system that enables you to build visual applications with minimal code. With Groundlight, you can quickly create applications for various use cases, from simple object detection to complex visual analysis.","sidebar":"tutorialSidebar"},"building-applications/edge":{"id":"building-applications/edge","title":"Using Groundlight on the Edge","description":"If your account has access to edge models, you can download and install them to your edge devices.","sidebar":"tutorialSidebar"},"building-applications/grabbing-images":{"id":"building-applications/grabbing-images","title":"Grabbing Images","description":"Groundlight\'s SDK accepts images in many popular formats, including PIL, OpenCV, and numpy arrays.","sidebar":"tutorialSidebar"},"building-applications/handling-errors":{"id":"building-applications/handling-errors","title":"Handling Server Errors","description":"When building applications with the Groundlight SDK, you may encounter server errors during API calls. This page covers how to handle such errors and build robust code that can gracefully handle exceptions.","sidebar":"tutorialSidebar"},"building-applications/industrial":{"id":"building-applications/industrial","title":"Industrial and Manufacturing Applications","description":"Modern natural language-based computer vision is transforming industrial and manufacturing applications by enabling more intuitive interaction with automation systems. Groundlight offers cutting-edge computer vision technology that can be seamlessly integrated into various industrial processes, enhancing efficiency, productivity, and quality control.","sidebar":"tutorialSidebar"},"building-applications/managing-confidence":{"id":"building-applications/managing-confidence","title":"Confidence Levels","description":"Groundlight gives you a simple way to control the trade-off of latency against accuracy. The longer you can wait for an answer to your image query, the better accuracy you can get. In particular, if the ML models are unsure of the best response, they will escalate the image query to more intensive analysis with more complex models and real-time human monitors as needed. Your code can easily wait for this delayed response. Either way, these new results are automatically trained into your models so your next queries will get better results faster.","sidebar":"tutorialSidebar"},"building-applications/sample-applications":{"id":"building-applications/sample-applications","title":"Sample Applications","description":"Explore these GitHub repositories to see examples of Groundlight-powered applications:","sidebar":"tutorialSidebar"},"building-applications/working-with-detectors":{"id":"building-applications/working-with-detectors","title":"Working with Detectors","description":"Explicitly create a new detector","sidebar":"tutorialSidebar"},"getting-started/api-tokens":{"id":"getting-started/api-tokens","title":"API Tokens","description":"About API Tokens","sidebar":"tutorialSidebar"},"getting-started/dog-on-couch":{"id":"getting-started/dog-on-couch","title":"A Fun Example: Dog-on-Couch Detector","description":"Here is a whimsical example of how you could use Groundlight in your home to keep your dog off the couch. This document will guide you through creating a complete application. If the dog is detected on the couch, the application will play a pre-recorded sound over the computer\'s speakers, instructing the dog to get off the couch. Be sure to record your own voice so that your dog pays attention to you.","sidebar":"tutorialSidebar"},"getting-started/getting-started":{"id":"getting-started/getting-started","title":"Getting Started","description":"Computer Vision powered by Natural Language","sidebar":"tutorialSidebar"},"getting-started/retail-analytics":{"id":"getting-started/retail-analytics","title":"A Serious Example: Retail Analytics","description":"Tracking utilization of a customer service counter","sidebar":"tutorialSidebar"},"getting-started/streaming":{"id":"getting-started/streaming","title":"A Quick Example: Live Stream Alert","description":"A quick example to get used to setting up detectors and asking good questions: set up a monitor on a live stream.","sidebar":"tutorialSidebar"},"getting-started/writing-queries":{"id":"getting-started/writing-queries","title":"Writing Queries","description":"Introduction","sidebar":"tutorialSidebar"},"installation/installation":{"id":"installation/installation","title":"Installation","description":"Welcome to the Groundlight SDK installation guide. In this guide, you\'ll find step-by-step instructions on how to install and set up the Groundlight SDK on various platforms.","sidebar":"tutorialSidebar"},"installation/linux":{"id":"installation/linux","title":"Installing on Linux","description":"This guide will help you install the Groundlight SDK on Linux. The Groundlight SDK requires Python 3.7 or higher.","sidebar":"tutorialSidebar"},"installation/macos":{"id":"installation/macos","title":"Installing on macOS","description":"This guide will help you install the Groundlight SDK on macOS. The Groundlight SDK requires Python 3.7 or higher.","sidebar":"tutorialSidebar"},"installation/monitoring-notification-server":{"id":"installation/monitoring-notification-server","title":"Monitoring Notification Server","description":"This is the easiest way to deploy your Groundlight detectors on a linux computer. All configuration is done through a web user interface, and no code development is required.","sidebar":"tutorialSidebar"},"installation/nvidia-jetson":{"id":"installation/nvidia-jetson","title":"Installing on NVIDIA Jetson","description":"This guide will help you install the Groundlight SDK on NVIDIA Jetson devices. The Groundlight SDK requires Python 3.7 or higher.","sidebar":"tutorialSidebar"},"installation/optional-libraries":{"id":"installation/optional-libraries","title":"Optional libraries","description":"Smaller is better!","sidebar":"tutorialSidebar"},"installation/raspberry-pi":{"id":"installation/raspberry-pi","title":"Installing on Raspberry Pi","description":"This guide will help you install the Groundlight SDK on Raspberry Pi. The Groundlight SDK requires Python 3.7 or higher.","sidebar":"tutorialSidebar"},"installation/windows":{"id":"installation/windows","title":"Installing on Windows","description":"This guide will help you install the Groundlight SDK on Windows. The Groundlight SDK requires Python 3.7 or higher.","sidebar":"tutorialSidebar"},"iot/esp32cam":{"id":"iot/esp32cam","title":"Setting up an ESP32 Camera Board","description":"Groundlight supplies a tool for no-code deployment of a detector to an ESP32 Camera board. You can find it at https://iot.groundlight.ai/espcam.","sidebar":"tutorialSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/972.a0881fc8.js b/assets/js/972.a0881fc8.js deleted file mode 100644 index 70a5b810..00000000 --- a/assets/js/972.a0881fc8.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[972],{4972:(e,t,n)=>{n.r(t),n.d(t,{default:()=>i});var a=n(7294),l=n(5999),o=n(1944),r=n(179);function i(){return a.createElement(a.Fragment,null,a.createElement(o.d,{title:(0,l.I)({id:"theme.NotFound.title",message:"Page Not Found"})}),a.createElement(r.Z,null,a.createElement("main",{className:"container margin-vert--xl"},a.createElement("div",{className:"row"},a.createElement("div",{className:"col col--6 col--offset-3"},a.createElement("h1",{className:"hero__title"},a.createElement(l.Z,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),a.createElement("p",null,a.createElement(l.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),a.createElement("p",null,a.createElement(l.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"Please contact the owner of the site that linked you to the original URL and let them know their link is broken.")))))))}}}]); \ No newline at end of file diff --git a/assets/js/980.85f24b27.js b/assets/js/980.85f24b27.js new file mode 100644 index 00000000..8864dae2 --- /dev/null +++ b/assets/js/980.85f24b27.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[980],{5219:(e,t,n)=>{n.d(t,{Z:()=>a});n(7294);var i=n(6010),o=n(5999),s=n(2757),r=n(5893);function a(e){let{className:t}=e;return(0,r.jsx)("main",{className:(0,i.Z)("container margin-vert--xl",t),children:(0,r.jsx)("div",{className:"row",children:(0,r.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,r.jsx)(s.Z,{as:"h1",className:"hero__title",children:(0,r.jsx)(o.Z,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,r.jsx)("p",{children:(0,r.jsx)(o.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,r.jsx)("p",{children:(0,r.jsx)(o.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}},5980:(e,t,n)=>{n.r(t),n.d(t,{default:()=>l});n(7294);var i=n(5999),o=n(1944),s=n(2758),r=n(5219),a=n(5893);function l(){const e=(0,i.I)({id:"theme.NotFound.title",message:"Page Not Found"});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(o.d,{title:e}),(0,a.jsx)(s.Z,{children:(0,a.jsx)(r.Z,{})})]})}}}]); \ No newline at end of file diff --git a/assets/js/a7bd4aaa.dd95f2fb.js b/assets/js/a7bd4aaa.dd95f2fb.js new file mode 100644 index 00000000..8d3ffe49 --- /dev/null +++ b/assets/js/a7bd4aaa.dd95f2fb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[23],{5375:(n,e,s)=>{s.r(e),s.d(e,{default:()=>d});s(7294);var r=s(1944),o=s(3320),t=s(4477),i=s(8790),c=s(3510),u=s(5893);function a(n){const{version:e}=n;return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(c.Z,{version:e.version,tag:(0,o.os)(e.pluginId,e.version)}),(0,u.jsx)(r.d,{children:e.noIndex&&(0,u.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})]})}function l(n){const{version:e,route:s}=n;return(0,u.jsx)(r.FG,{className:e.className,children:(0,u.jsx)(t.q,{version:e,children:(0,i.H)(s.routes)})})}function d(n){return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(a,{...n}),(0,u.jsx)(l,{...n})]})}}}]); \ No newline at end of file diff --git a/assets/js/a94703ab.bb26b4e6.js b/assets/js/a94703ab.bb26b4e6.js new file mode 100644 index 00000000..00b02300 --- /dev/null +++ b/assets/js/a94703ab.bb26b4e6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[368],{499:(e,t,n)=>{n.r(t),n.d(t,{default:()=>be});var a=n(7294),o=n(6010),i=n(1944),s=n(5281),l=n(2802),r=n(1116),c=n(5999),d=n(2466),u=n(5936);const m={backToTopButton:"backToTopButton_SdI4",backToTopButtonShow:"backToTopButtonShow_mWsi"};var b=n(5893);function h(){const{shown:e,scrollToTop:t}=function(e){let{threshold:t}=e;const[n,o]=(0,a.useState)(!1),i=(0,a.useRef)(!1),{startScroll:s,cancelScroll:l}=(0,d.Ct)();return(0,d.RF)(((e,n)=>{let{scrollY:a}=e;const s=n?.scrollY;s&&(i.current?i.current=!1:a>=s?(l(),o(!1)):a<t?o(!1):a+window.innerHeight<document.documentElement.scrollHeight&&o(!0))})),(0,u.S)((e=>{e.location.hash&&(i.current=!0,o(!1))})),{shown:n,scrollToTop:()=>s(0)}}({threshold:300});return(0,b.jsx)("button",{"aria-label":(0,c.I)({id:"theme.BackToTopButton.buttonAriaLabel",message:"Scroll back to top",description:"The ARIA label for the back to top button"}),className:(0,o.Z)("clean-btn",s.k.common.backToTopButton,m.backToTopButton,e&&m.backToTopButtonShow),type:"button",onClick:t})}var p=n(1442),x=n(6550),f=n(7524),j=n(6668),g=n(5012);function k(e){return(0,b.jsx)("svg",{width:"20",height:"20","aria-hidden":"true",...e,children:(0,b.jsxs)("g",{fill:"#7a7a7a",children:[(0,b.jsx)("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),(0,b.jsx)("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})]})})}const v={collapseSidebarButton:"collapseSidebarButton_Cq4q",collapseSidebarButtonIcon:"collapseSidebarButtonIcon_eHqP"};function _(e){let{onClick:t}=e;return(0,b.jsx)("button",{type:"button",title:(0,c.I)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,c.I)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,o.Z)("button button--secondary button--outline",v.collapseSidebarButton),onClick:t,children:(0,b.jsx)(k,{className:v.collapseSidebarButtonIcon})})}var C=n(9689),S=n(902);const I=Symbol("EmptyContext"),N=a.createContext(I);function T(e){let{children:t}=e;const[n,o]=(0,a.useState)(null),i=(0,a.useMemo)((()=>({expandedItem:n,setExpandedItem:o})),[n]);return(0,b.jsx)(N.Provider,{value:i,children:t})}var Z=n(6043),B=n(8596),y=n(9960),L=n(2389);function w(e){let{collapsed:t,categoryLabel:n,onClick:a}=e;return(0,b.jsx)("button",{"aria-label":t?(0,c.I)({id:"theme.DocSidebarItem.expandCategoryAriaLabel",message:"Expand sidebar category '{label}'",description:"The ARIA label to expand the sidebar category"},{label:n}):(0,c.I)({id:"theme.DocSidebarItem.collapseCategoryAriaLabel",message:"Collapse sidebar category '{label}'",description:"The ARIA label to collapse the sidebar category"},{label:n}),type:"button",className:"clean-btn menu__caret",onClick:a})}function A(e){let{item:t,onItemClick:n,activePath:i,level:r,index:c,...d}=e;const{items:u,label:m,collapsible:h,className:p,href:x}=t,{docs:{sidebar:{autoCollapseCategories:f}}}=(0,j.L)(),g=function(e){const t=(0,L.Z)();return(0,a.useMemo)((()=>e.href&&!e.linkUnlisted?e.href:!t&&e.collapsible?(0,l.LM)(e):void 0),[e,t])}(t),k=(0,l._F)(t,i),v=(0,B.Mg)(x,i),{collapsed:_,setCollapsed:C}=(0,Z.u)({initialState:()=>!!h&&(!k&&t.collapsed)}),{expandedItem:T,setExpandedItem:A}=function(){const e=(0,a.useContext)(N);if(e===I)throw new S.i6("DocSidebarItemsExpandedStateProvider");return e}(),E=function(e){void 0===e&&(e=!_),A(e?null:c),C(e)};return function(e){let{isActive:t,collapsed:n,updateCollapsed:o}=e;const i=(0,S.D9)(t);(0,a.useEffect)((()=>{t&&!i&&n&&o(!1)}),[t,i,n,o])}({isActive:k,collapsed:_,updateCollapsed:E}),(0,a.useEffect)((()=>{h&&null!=T&&T!==c&&f&&C(!0)}),[h,T,c,C,f]),(0,b.jsxs)("li",{className:(0,o.Z)(s.k.docs.docSidebarItemCategory,s.k.docs.docSidebarItemCategoryLevel(r),"menu__list-item",{"menu__list-item--collapsed":_},p),children:[(0,b.jsxs)("div",{className:(0,o.Z)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":v}),children:[(0,b.jsx)(y.Z,{className:(0,o.Z)("menu__link",{"menu__link--sublist":h,"menu__link--sublist-caret":!x&&h,"menu__link--active":k}),onClick:h?e=>{n?.(t),x?E(!1):(e.preventDefault(),E())}:()=>{n?.(t)},"aria-current":v?"page":void 0,"aria-expanded":h?!_:void 0,href:h?g??"#":g,...d,children:m}),x&&h&&(0,b.jsx)(w,{collapsed:_,categoryLabel:m,onClick:e=>{e.preventDefault(),E()}})]}),(0,b.jsx)(Z.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:_,children:(0,b.jsx)(V,{items:u,tabIndex:_?-1:0,onItemClick:n,activePath:i,level:r+1})})]})}var E=n(3919),H=n(2339);const W={menuExternalLink:"menuExternalLink_iv3S"};function M(e){let{item:t,onItemClick:n,activePath:a,level:i,index:r,...c}=e;const{href:d,label:u,className:m,autoAddBaseUrl:h}=t,p=(0,l._F)(t,a),x=(0,E.Z)(d);return(0,b.jsx)("li",{className:(0,o.Z)(s.k.docs.docSidebarItemLink,s.k.docs.docSidebarItemLinkLevel(i),"menu__list-item",m),children:(0,b.jsxs)(y.Z,{className:(0,o.Z)("menu__link",!x&&W.menuExternalLink,{"menu__link--active":p}),autoAddBaseUrl:h,"aria-current":p?"page":void 0,to:d,...x&&{onClick:n?()=>n(t):void 0},...c,children:[u,!x&&(0,b.jsx)(H.Z,{})]})},u)}const R={menuHtmlItem:"menuHtmlItem_DqR3"};function D(e){let{item:t,level:n,index:a}=e;const{value:i,defaultStyle:l,className:r}=t;return(0,b.jsx)("li",{className:(0,o.Z)(s.k.docs.docSidebarItemLink,s.k.docs.docSidebarItemLinkLevel(n),l&&[R.menuHtmlItem,"menu__list-item"],r),dangerouslySetInnerHTML:{__html:i}},a)}function P(e){let{item:t,...n}=e;switch(t.type){case"category":return(0,b.jsx)(A,{item:t,...n});case"html":return(0,b.jsx)(D,{item:t,...n});default:return(0,b.jsx)(M,{item:t,...n})}}function F(e){let{items:t,...n}=e;const a=(0,l.f)(t,n.activePath);return(0,b.jsx)(T,{children:a.map(((e,t)=>(0,b.jsx)(P,{item:e,index:t,...n},t)))})}const V=(0,a.memo)(F),q={menu:"menu_vPEQ",menuWithAnnouncementBar:"menuWithAnnouncementBar_qugZ"};function z(e){let{path:t,sidebar:n,className:i}=e;const l=function(){const{isActive:e}=(0,C.nT)(),[t,n]=(0,a.useState)(e);return(0,d.RF)((t=>{let{scrollY:a}=t;e&&n(0===a)}),[e]),e&&t}();return(0,b.jsx)("nav",{"aria-label":(0,c.I)({id:"theme.docs.sidebar.navAriaLabel",message:"Docs sidebar",description:"The ARIA label for the sidebar navigation"}),className:(0,o.Z)("menu thin-scrollbar",q.menu,l&&q.menuWithAnnouncementBar,i),children:(0,b.jsx)("ul",{className:(0,o.Z)(s.k.docs.docSidebarMenu,"menu__list"),children:(0,b.jsx)(V,{items:n,activePath:t,level:1})})})}const G="sidebar_oDHW",U="sidebarWithHideableNavbar_eLdD",Y="sidebarHidden_Jvsw",J="sidebarLogo_IZVG";function X(e){let{path:t,sidebar:n,onCollapse:a,isHidden:i}=e;const{navbar:{hideOnScroll:s},docs:{sidebar:{hideable:l}}}=(0,j.L)();return(0,b.jsxs)("div",{className:(0,o.Z)(G,s&&U,i&&Y),children:[s&&(0,b.jsx)(g.Z,{tabIndex:-1,className:J}),(0,b.jsx)(z,{path:t,sidebar:n}),l&&(0,b.jsx)(_,{onClick:a})]})}const K=a.memo(X);var O=n(3102),Q=n(2961);const $=e=>{let{sidebar:t,path:n}=e;const a=(0,Q.e)();return(0,b.jsx)("ul",{className:(0,o.Z)(s.k.docs.docSidebarMenu,"menu__list"),children:(0,b.jsx)(V,{items:t,activePath:n,onItemClick:e=>{"category"===e.type&&e.href&&a.toggle(),"link"===e.type&&a.toggle()},level:1})})};function ee(e){return(0,b.jsx)(O.Zo,{component:$,props:e})}const te=a.memo(ee);function ne(e){const t=(0,f.i)(),n="desktop"===t||"ssr"===t,a="mobile"===t;return(0,b.jsxs)(b.Fragment,{children:[n&&(0,b.jsx)(K,{...e}),a&&(0,b.jsx)(te,{...e})]})}const ae={expandButton:"expandButton_HpEX",expandButtonIcon:"expandButtonIcon_uYDu"};function oe(e){let{toggleSidebar:t}=e;return(0,b.jsx)("div",{className:ae.expandButton,title:(0,c.I)({id:"theme.docs.sidebar.expandButtonTitle",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),"aria-label":(0,c.I)({id:"theme.docs.sidebar.expandButtonAriaLabel",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),tabIndex:0,role:"button",onKeyDown:t,onClick:t,children:(0,b.jsx)(k,{className:ae.expandButtonIcon})})}const ie={docSidebarContainer:"docSidebarContainer_Ta75",docSidebarContainerHidden:"docSidebarContainerHidden_J4G2",sidebarViewport:"sidebarViewport_fgog"};function se(e){let{children:t}=e;const n=(0,r.V)();return(0,b.jsx)(a.Fragment,{children:t},n?.name??"noSidebar")}function le(e){let{sidebar:t,hiddenSidebarContainer:n,setHiddenSidebarContainer:i}=e;const{pathname:l}=(0,x.TH)(),[r,c]=(0,a.useState)(!1),d=(0,a.useCallback)((()=>{r&&c(!1),!r&&(0,p.n)()&&c(!0),i((e=>!e))}),[i,r]);return(0,b.jsx)("aside",{className:(0,o.Z)(s.k.docs.docSidebarContainer,ie.docSidebarContainer,n&&ie.docSidebarContainerHidden),onTransitionEnd:e=>{e.currentTarget.classList.contains(ie.docSidebarContainer)&&n&&c(!0)},children:(0,b.jsx)(se,{children:(0,b.jsxs)("div",{className:(0,o.Z)(ie.sidebarViewport,r&&ie.sidebarViewportHidden),children:[(0,b.jsx)(ne,{sidebar:t,path:l,onCollapse:d,isHidden:r}),r&&(0,b.jsx)(oe,{toggleSidebar:d})]})})})}const re={docMainContainer:"docMainContainer_lg0V",docMainContainerEnhanced:"docMainContainerEnhanced_Wylw",docItemWrapperEnhanced:"docItemWrapperEnhanced_DheW"};function ce(e){let{hiddenSidebarContainer:t,children:n}=e;const a=(0,r.V)();return(0,b.jsx)("main",{className:(0,o.Z)(re.docMainContainer,(t||!a)&&re.docMainContainerEnhanced),children:(0,b.jsx)("div",{className:(0,o.Z)("container padding-top--md padding-bottom--lg",re.docItemWrapper,t&&re.docItemWrapperEnhanced),children:n})})}const de={docRoot:"docRoot_eRbX",docsWrapper:"docsWrapper_JGIH"};function ue(e){let{children:t}=e;const n=(0,r.V)(),[o,i]=(0,a.useState)(!1);return(0,b.jsxs)("div",{className:de.docsWrapper,children:[(0,b.jsx)(h,{}),(0,b.jsxs)("div",{className:de.docRoot,children:[n&&(0,b.jsx)(le,{sidebar:n.items,hiddenSidebarContainer:o,setHiddenSidebarContainer:i}),(0,b.jsx)(ce,{hiddenSidebarContainer:o,children:t})]})]})}var me=n(5219);function be(e){const t=(0,l.SN)(e);if(!t)return(0,b.jsx)(me.Z,{});const{docElement:n,sidebarName:a,sidebarItems:c}=t;return(0,b.jsx)(i.FG,{className:(0,o.Z)(s.k.page.docsDocPage),children:(0,b.jsx)(r.b,{name:a,items:c,children:(0,b.jsx)(ue,{children:n})})})}},5219:(e,t,n)=>{n.d(t,{Z:()=>l});n(7294);var a=n(6010),o=n(5999),i=n(2757),s=n(5893);function l(e){let{className:t}=e;return(0,s.jsx)("main",{className:(0,a.Z)("container margin-vert--xl",t),children:(0,s.jsx)("div",{className:"row",children:(0,s.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,s.jsx)(i.Z,{as:"h1",className:"hero__title",children:(0,s.jsx)(o.Z,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,s.jsx)("p",{children:(0,s.jsx)(o.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,s.jsx)("p",{children:(0,s.jsx)(o.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}}}]); \ No newline at end of file diff --git a/assets/js/ad6b0f9d.111346bd.js b/assets/js/ad6b0f9d.111346bd.js deleted file mode 100644 index e2d17e4c..00000000 --- a/assets/js/ad6b0f9d.111346bd.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[168],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>f});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},d=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=c(n),m=o,f=p["".concat(s,".").concat(m)]||p[m]||u[m]||i;return n?r.createElement(f,a(a({ref:t},d),{},{components:n})):r.createElement(f,a({ref:t},d))}));function f(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:o,a[1]=l;for(var c=2;c<i;c++)a[c]=n[c];return r.createElement.apply(null,a)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},7095:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var r=n(7462),o=(n(7294),n(3905));const i={},a="Monitoring Notification Server",l={unversionedId:"installation/monitoring-notification-server",id:"installation/monitoring-notification-server",title:"Monitoring Notification Server",description:"This is the easiest way to deploy your Groundlight detectors on a linux computer. All configuration is done through a web user interface, and no code development is required.",source:"@site/docs/installation/7-monitoring-notification-server.md",sourceDirName:"installation",slug:"/installation/monitoring-notification-server",permalink:"/python-sdk/docs/installation/monitoring-notification-server",draft:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/installation/7-monitoring-notification-server.md",tags:[],version:"current",sidebarPosition:7,frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Optional libraries",permalink:"/python-sdk/docs/installation/optional-libraries"},next:{title:"Setting up an ESP32 Camera Board",permalink:"/python-sdk/docs/iot/"}},s={},c=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Deployment",id:"deployment",level:2}],d={toc:c},p="wrapper";function u(e){let{components:t,...i}=e;return(0,o.kt)(p,(0,r.Z)({},d,i,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"monitoring-notification-server"},"Monitoring Notification Server"),(0,o.kt)("p",null,"This is the easiest way to deploy your Groundlight detectors on a linux computer. All configuration is done through a web user interface, and no code development is required."),(0,o.kt)("h2",{id:"prerequisites"},"Prerequisites"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Internet connected linux computer"),(0,o.kt)("li",{parentName:"ol"},"Video source (USB camera or RTSP stream)"),(0,o.kt)("li",{parentName:"ol"},"Groundlight API Key (available from ",(0,o.kt)("a",{parentName:"li",href:"https://www.groundlight.ai/"},"groundlight.ai"),")")),(0,o.kt)("h2",{id:"deployment"},"Deployment"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Install Docker on your computer. See ",(0,o.kt)("a",{parentName:"li",href:"https://docs.docker.com/get-docker/"},"Docker's installation instructions"),"."),(0,o.kt)("li",{parentName:"ol"},"Create a new file called ",(0,o.kt)("inlineCode",{parentName:"li"},"docker-compose.yml")," in your project directory. Copy the following into it:")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-yaml"},'services:\n frontend:\n image: docker.io/groundlight/monitoring-notification-server-frontend:latest\n ports:\n - "3000:3000"\n depends_on:\n - backend\n backend:\n image: docker.io/groundlight/monitoring-notification-server-backend:latest\n ports:\n - "8000:8000"\n devices:\n - /dev/video0:/dev/video0\n - /dev/video1:/dev/video1\n - /dev/video2:/dev/video2\n - /dev/video3:/dev/video3\n privileged: true\n volumes:\n - /dev/bus/usb:/dev/bus/usb\n')),(0,o.kt)("ol",{start:3},(0,o.kt)("li",{parentName:"ol"},"Run the following command in your project directory:")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"docker-compose up\n")),(0,o.kt)("ol",{start:4},(0,o.kt)("li",{parentName:"ol"},"If installed locally, open http://localhost:3000 in your browser. If installed on a remote device, replace ",(0,o.kt)("inlineCode",{parentName:"li"},"localhost")," with the IP address of your device. You should see the following page:")),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"Screenshot of the Groundlight Monitoring Notification Server",src:n(8588).Z,width:"3104",height:"1974"})))}u.isMDXComponent=!0},8588:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/docker-img-frontpage-473e2663c3511f10433832832a74e45a.png"}}]); \ No newline at end of file diff --git a/assets/js/ad6b0f9d.7e5f9452.js b/assets/js/ad6b0f9d.7e5f9452.js new file mode 100644 index 00000000..85326773 --- /dev/null +++ b/assets/js/ad6b0f9d.7e5f9452.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[168],{7078:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>d,contentTitle:()=>s,default:()=>h,frontMatter:()=>r,metadata:()=>l,toc:()=>a});var o=i(5893),t=i(1151);const r={},s="Monitoring Notification Server",l={id:"installation/monitoring-notification-server",title:"Monitoring Notification Server",description:"This is the easiest way to deploy your Groundlight detectors on a linux computer. All configuration is done through a web user interface, and no code development is required.",source:"@site/docs/installation/7-monitoring-notification-server.md",sourceDirName:"installation",slug:"/installation/monitoring-notification-server",permalink:"/python-sdk/docs/installation/monitoring-notification-server",draft:!1,unlisted:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/installation/7-monitoring-notification-server.md",tags:[],version:"current",sidebarPosition:7,frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Optional libraries",permalink:"/python-sdk/docs/installation/optional-libraries"},next:{title:"Setting up an ESP32 Camera Board",permalink:"/python-sdk/docs/iot/"}},d={},a=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Deployment",id:"deployment",level:2}];function c(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",...(0,t.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h1,{id:"monitoring-notification-server",children:"Monitoring Notification Server"}),"\n",(0,o.jsx)(n.p,{children:"This is the easiest way to deploy your Groundlight detectors on a linux computer. All configuration is done through a web user interface, and no code development is required."}),"\n",(0,o.jsx)(n.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsx)(n.li,{children:"Internet connected linux computer"}),"\n",(0,o.jsx)(n.li,{children:"Video source (USB camera or RTSP stream)"}),"\n",(0,o.jsxs)(n.li,{children:["Groundlight API Key (available from ",(0,o.jsx)(n.a,{href:"https://www.groundlight.ai/",children:"groundlight.ai"}),")"]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"deployment",children:"Deployment"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["Install Docker on your computer. See ",(0,o.jsx)(n.a,{href:"https://docs.docker.com/get-docker/",children:"Docker's installation instructions"}),"."]}),"\n",(0,o.jsxs)(n.li,{children:["Create a new file called ",(0,o.jsx)(n.code,{children:"docker-compose.yml"})," in your project directory. Copy the following into it:"]}),"\n"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-yaml",children:'services:\n frontend:\n image: docker.io/groundlight/monitoring-notification-server-frontend:latest\n ports:\n - "3000:3000"\n depends_on:\n - backend\n backend:\n image: docker.io/groundlight/monitoring-notification-server-backend:latest\n ports:\n - "8000:8000"\n devices:\n - /dev/video0:/dev/video0\n - /dev/video1:/dev/video1\n - /dev/video2:/dev/video2\n - /dev/video3:/dev/video3\n privileged: true\n volumes:\n - /dev/bus/usb:/dev/bus/usb\n'})}),"\n",(0,o.jsxs)(n.ol,{start:"3",children:["\n",(0,o.jsx)(n.li,{children:"Run the following command in your project directory:"}),"\n"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"docker-compose up\n"})}),"\n",(0,o.jsxs)(n.ol,{start:"4",children:["\n",(0,o.jsxs)(n.li,{children:["If installed locally, open ",(0,o.jsx)(n.a,{href:"http://localhost:3000",children:"http://localhost:3000"})," in your browser. If installed on a remote device, replace ",(0,o.jsx)(n.code,{children:"localhost"})," with the IP address of your device. You should see the following page:"]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Screenshot of the Groundlight Monitoring Notification Server",src:i(8588).Z+"",width:"3104",height:"1974"})})]})}function h(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(c,{...e})}):c(e)}},8588:(e,n,i)=>{i.d(n,{Z:()=>o});const o=i.p+"assets/images/docker-img-frontpage-473e2663c3511f10433832832a74e45a.png"},1151:(e,n,i)=>{i.d(n,{Z:()=>l,a:()=>s});var o=i(7294);const t={},r=o.createContext(t);function s(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:s(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c5b38f9e.561ea795.js b/assets/js/c5b38f9e.561ea795.js deleted file mode 100644 index ec3edb0d..00000000 --- a/assets/js/c5b38f9e.561ea795.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[863],{3905:(e,t,n)=>{n.d(t,{Zo:()=>k,kt:()=>g});var o=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=o.createContext({}),u=function(e){var t=o.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},k=function(e){var t=u(e.components);return o.createElement(s.Provider,{value:t},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},d=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,s=e.parentName,k=l(e,["components","mdxType","originalType","parentName"]),p=u(n),d=r,g=p["".concat(s,".").concat(d)]||p[d]||c[d]||a;return n?o.createElement(g,i(i({ref:t},k),{},{components:n})):o.createElement(g,i({ref:t},k))}));function g(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,i=new Array(a);i[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:r,i[1]=l;for(var u=2;u<a;u++)i[u]=n[u];return o.createElement.apply(null,i)}return o.createElement.apply(null,n)}d.displayName="MDXCreateElement"},2905:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>c,frontMatter:()=>a,metadata:()=>l,toc:()=>u});var o=n(7462),r=(n(7294),n(3905));const a={},i="API Tokens",l={unversionedId:"getting-started/api-tokens",id:"getting-started/api-tokens",title:"API Tokens",description:"About API Tokens",source:"@site/docs/getting-started/1-api-tokens.md",sourceDirName:"getting-started",slug:"/getting-started/api-tokens",permalink:"/python-sdk/docs/getting-started/api-tokens",draft:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/getting-started/1-api-tokens.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/python-sdk/docs/getting-started/"},next:{title:"Writing Queries",permalink:"/python-sdk/docs/getting-started/writing-queries"}},s={},u=[{value:"About API Tokens",id:"about-api-tokens",level:2},{value:"Handling API Tokens",id:"handling-api-tokens",level:2},{value:"Using API Tokens with the SDK",id:"using-api-tokens-with-the-sdk",level:2},{value:"Creating and Revoking API Tokens",id:"creating-and-revoking-api-tokens",level:2},{value:"Creating API Tokens",id:"creating-api-tokens",level:3},{value:"Viewing and Revoking API Tokens",id:"viewing-and-revoking-api-tokens",level:3},{value:"To revoke an API token",id:"to-revoke-an-api-token",level:3}],k={toc:u},p="wrapper";function c(e){let{components:t,...n}=e;return(0,r.kt)(p,(0,o.Z)({},k,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"api-tokens"},"API Tokens"),(0,r.kt)("h2",{id:"about-api-tokens"},"About API Tokens"),(0,r.kt)("p",null,'To use the Groundlight SDK or API, you need a security token which we call an "API Token." These authenticate you to Groundlight and authorize your code to use services in your account.'),(0,r.kt)("p",null,"API tokens look like ",(0,r.kt)("inlineCode",{parentName:"p"},"api_2GdXMflhJ...")," and consist of a ksuid (a kind of sortable UUID) followed by a secret string."),(0,r.kt)("h2",{id:"handling-api-tokens"},"Handling API Tokens"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"You should treat API tokens like passwords.")," Never check them directly into your code or share them. Please use best security practices with your API tokens, because if anybody gets your API token, they have nearly full control over your Groundlight account."),(0,r.kt)("p",null,"Here are some best practices for handling API tokens:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Store API tokens in a secure location, such as an encrypted vault."),(0,r.kt)("li",{parentName:"ul"},"Use environment variables to store API tokens, rather than hardcoding them in your application."),(0,r.kt)("li",{parentName:"ul"},"Limit the number of people who have access to API tokens."),(0,r.kt)("li",{parentName:"ul"},"Rotate API tokens regularly and revoke old ones when they are no longer needed.")),(0,r.kt)("h2",{id:"using-api-tokens-with-the-sdk"},"Using API Tokens with the SDK"),(0,r.kt)("p",null,"There are a couple of ways the SDK can find your API token:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Environment variable (recommended): As a best practice, we recommend storing API tokens in the environment variable ",(0,r.kt)("inlineCode",{parentName:"li"},"GROUNDLIGHT_API_TOKEN"),". This helps avoid accidentally committing the token to your code repository. The SDK will automatically look for the API token there, so you don't have to put it in your code at all.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-python"},"from groundlight import Groundlight\n\n# looks for API token in environment variable GROUNDLIGHT_API_TOKEN\ngl = Groundlight()\n")),(0,r.kt)("ol",{start:2},(0,r.kt)("li",{parentName:"ol"},"Constructor argument: Alternatively, you can pass the API token directly to the Groundlight constructor. However, be cautious not to commit this code to your repository.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"from groundlight import Groundlight\n\ntoken = get_token_from_secure_location()\ngl = Groundlight(api_token=token)\n")),(0,r.kt)("h2",{id:"creating-and-revoking-api-tokens"},"Creating and Revoking API Tokens"),(0,r.kt)("p",null,"You can manage your API tokens from the Groundlight website at ",(0,r.kt)("a",{parentName:"p",href:"https://app.groundlight.ai/reef/my-account/api-tokens"},"https://app.groundlight.ai/reef/my-account/api-tokens"),"."),(0,r.kt)("h3",{id:"creating-api-tokens"},"Creating API Tokens"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Log in to your Groundlight account and navigate to the API tokens page."),(0,r.kt)("li",{parentName:"ol"},'Click the "Create New API Token" button.'),(0,r.kt)("li",{parentName:"ol"},"Give the new token a descriptive name, so you can easily identify it later."),(0,r.kt)("li",{parentName:"ol"},'Click "Create Token."'),(0,r.kt)("li",{parentName:"ol"},"Copy the generated token and store it securely, as you won't be able to see it again. Groundlight does not store a copy of your API tokens.")),(0,r.kt)("h3",{id:"viewing-and-revoking-api-tokens"},"Viewing and Revoking API Tokens"),(0,r.kt)("p",null,"On the API tokens page, you can see a list of your current tokens, along with the following information:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Token Name: The descriptive name you assigned when creating the token"),(0,r.kt)("li",{parentName:"ul"},"Snippet (prefix): A short, unique identifier for each token"),(0,r.kt)("li",{parentName:"ul"},"Last used: The date and time the token was last used")),(0,r.kt)("h3",{id:"to-revoke-an-api-token"},"To revoke an API token"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Locate the token you want to revoke in the list."),(0,r.kt)("li",{parentName:"ol"},'Click the "Delete" button next to the token.'),(0,r.kt)("li",{parentName:"ol"},"Confirm that you want to revoke the token.")),(0,r.kt)("p",null,"Note: Revoking an API token will immediately invalidate it and prevent any applications using it from accessing your Groundlight account. Be sure to update your applications with a new token before revoking an old one."))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c5b38f9e.c65ff62c.js b/assets/js/c5b38f9e.c65ff62c.js new file mode 100644 index 00000000..c3b26bd2 --- /dev/null +++ b/assets/js/c5b38f9e.c65ff62c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[863],{4725:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var o=t(5893),i=t(1151);const r={},s="API Tokens",a={id:"getting-started/api-tokens",title:"API Tokens",description:"About API Tokens",source:"@site/docs/getting-started/1-api-tokens.md",sourceDirName:"getting-started",slug:"/getting-started/api-tokens",permalink:"/python-sdk/docs/getting-started/api-tokens",draft:!1,unlisted:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/getting-started/1-api-tokens.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Getting Started",permalink:"/python-sdk/docs/getting-started/"},next:{title:"Writing Queries",permalink:"/python-sdk/docs/getting-started/writing-queries"}},l={},d=[{value:"About API Tokens",id:"about-api-tokens",level:2},{value:"Handling API Tokens",id:"handling-api-tokens",level:2},{value:"Using API Tokens with the SDK",id:"using-api-tokens-with-the-sdk",level:2},{value:"Creating and Revoking API Tokens",id:"creating-and-revoking-api-tokens",level:2},{value:"Creating API Tokens",id:"creating-api-tokens",level:3},{value:"Viewing and Revoking API Tokens",id:"viewing-and-revoking-api-tokens",level:3},{value:"To revoke an API token",id:"to-revoke-an-api-token",level:3}];function c(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h1,{id:"api-tokens",children:"API Tokens"}),"\n",(0,o.jsx)(n.h2,{id:"about-api-tokens",children:"About API Tokens"}),"\n",(0,o.jsx)(n.p,{children:'To use the Groundlight SDK or API, you need a security token which we call an "API Token." These authenticate you to Groundlight and authorize your code to use services in your account.'}),"\n",(0,o.jsxs)(n.p,{children:["API tokens look like ",(0,o.jsx)(n.code,{children:"api_2GdXMflhJ..."})," and consist of a ksuid (a kind of sortable UUID) followed by a secret string."]}),"\n",(0,o.jsx)(n.h2,{id:"handling-api-tokens",children:"Handling API Tokens"}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"You should treat API tokens like passwords."})," Never check them directly into your code or share them. Please use best security practices with your API tokens, because if anybody gets your API token, they have nearly full control over your Groundlight account."]}),"\n",(0,o.jsx)(n.p,{children:"Here are some best practices for handling API tokens:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Store API tokens in a secure location, such as an encrypted vault."}),"\n",(0,o.jsx)(n.li,{children:"Use environment variables to store API tokens, rather than hardcoding them in your application."}),"\n",(0,o.jsx)(n.li,{children:"Limit the number of people who have access to API tokens."}),"\n",(0,o.jsx)(n.li,{children:"Rotate API tokens regularly and revoke old ones when they are no longer needed."}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"using-api-tokens-with-the-sdk",children:"Using API Tokens with the SDK"}),"\n",(0,o.jsx)(n.p,{children:"There are a couple of ways the SDK can find your API token:"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["Environment variable (recommended): As a best practice, we recommend storing API tokens in the environment variable ",(0,o.jsx)(n.code,{children:"GROUNDLIGHT_API_TOKEN"}),". This helps avoid accidentally committing the token to your code repository. The SDK will automatically look for the API token there, so you don't have to put it in your code at all."]}),"\n"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-python",children:"from groundlight import Groundlight\n\n# looks for API token in environment variable GROUNDLIGHT_API_TOKEN\ngl = Groundlight()\n"})}),"\n",(0,o.jsxs)(n.ol,{start:"2",children:["\n",(0,o.jsx)(n.li,{children:"Constructor argument: Alternatively, you can pass the API token directly to the Groundlight constructor. However, be cautious not to commit this code to your repository."}),"\n"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:"from groundlight import Groundlight\n\ntoken = get_token_from_secure_location()\ngl = Groundlight(api_token=token)\n"})}),"\n",(0,o.jsx)(n.h2,{id:"creating-and-revoking-api-tokens",children:"Creating and Revoking API Tokens"}),"\n",(0,o.jsxs)(n.p,{children:["You can manage your API tokens from the Groundlight website at ",(0,o.jsx)(n.a,{href:"https://app.groundlight.ai/reef/my-account/api-tokens",children:"https://app.groundlight.ai/reef/my-account/api-tokens"}),"."]}),"\n",(0,o.jsx)(n.h3,{id:"creating-api-tokens",children:"Creating API Tokens"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsx)(n.li,{children:"Log in to your Groundlight account and navigate to the API tokens page."}),"\n",(0,o.jsx)(n.li,{children:'Click the "Create New API Token" button.'}),"\n",(0,o.jsx)(n.li,{children:"Give the new token a descriptive name, so you can easily identify it later."}),"\n",(0,o.jsx)(n.li,{children:'Click "Create Token."'}),"\n",(0,o.jsx)(n.li,{children:"Copy the generated token and store it securely, as you won't be able to see it again. Groundlight does not store a copy of your API tokens."}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"viewing-and-revoking-api-tokens",children:"Viewing and Revoking API Tokens"}),"\n",(0,o.jsx)(n.p,{children:"On the API tokens page, you can see a list of your current tokens, along with the following information:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Token Name: The descriptive name you assigned when creating the token"}),"\n",(0,o.jsx)(n.li,{children:"Snippet (prefix): A short, unique identifier for each token"}),"\n",(0,o.jsx)(n.li,{children:"Last used: The date and time the token was last used"}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"to-revoke-an-api-token",children:"To revoke an API token"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsx)(n.li,{children:"Locate the token you want to revoke in the list."}),"\n",(0,o.jsx)(n.li,{children:'Click the "Delete" button next to the token.'}),"\n",(0,o.jsx)(n.li,{children:"Confirm that you want to revoke the token."}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"Note: Revoking an API token will immediately invalidate it and prevent any applications using it from accessing your Groundlight account. Be sure to update your applications with a new token before revoking an old one."})]})}function h(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(c,{...e})}):c(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>a,a:()=>s});var o=t(7294);const i={},r=o.createContext(i);function s(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/cb33c72e.9272a0ab.js b/assets/js/cb33c72e.9272a0ab.js deleted file mode 100644 index 3da82d8f..00000000 --- a/assets/js/cb33c72e.9272a0ab.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[855],{3905:(e,t,n)=>{n.d(t,{Zo:()=>m,kt:()=>h});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var u=r.createContext({}),l=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},m=function(e){var t=l(e.components);return r.createElement(u.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},c=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,u=e.parentName,m=s(e,["components","mdxType","originalType","parentName"]),p=l(n),c=i,h=p["".concat(u,".").concat(c)]||p[c]||d[c]||a;return n?r.createElement(h,o(o({ref:t},m),{},{components:n})):r.createElement(h,o({ref:t},m))}));function h(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,o=new Array(a);o[0]=c;var s={};for(var u in t)hasOwnProperty.call(t,u)&&(s[u]=t[u]);s.originalType=e,s[p]="string"==typeof e?e:i,o[1]=s;for(var l=2;l<a;l++)o[l]=n[l];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}c.displayName="MDXCreateElement"},6597:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>d,frontMatter:()=>a,metadata:()=>s,toc:()=>l});var r=n(7462),i=(n(7294),n(3905));const a={sidebar_position:5},o="Asynchronous Queries",s={unversionedId:"building-applications/async-queries",id:"building-applications/async-queries",title:"Asynchronous Queries",description:"Groundlight provides a simple interface for submitting asynchronous queries. This is useful for times in which the thread or process or machine submitting image queries is not the same thread or machine that will be retrieving and using the results. For example, you might have a forward deployed robot or camera that submits image queries to Groundlight, and a separate server that retrieves the results and takes action based on them. We will refer to these two machines as the submitting machine and the retrieving machine.",source:"@site/docs/building-applications/6-async-queries.md",sourceDirName:"building-applications",slug:"/building-applications/async-queries",permalink:"/python-sdk/docs/building-applications/async-queries",draft:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/building-applications/6-async-queries.md",tags:[],version:"current",sidebarPosition:5,frontMatter:{sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Handling Server Errors",permalink:"/python-sdk/docs/building-applications/handling-errors"},next:{title:"Using Groundlight on the Edge",permalink:"/python-sdk/docs/building-applications/edge"}},u={},l=[{value:"Setup Submitting Machine",id:"setup-submitting-machine",level:2},{value:"Setup Retrieving Machine",id:"setup-retrieving-machine",level:2},{value:"Important Considerations",id:"important-considerations",level:2}],m={toc:l},p="wrapper";function d(e){let{components:t,...n}=e;return(0,i.kt)(p,(0,r.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"asynchronous-queries"},"Asynchronous Queries"),(0,i.kt)("p",null,"Groundlight provides a simple interface for submitting asynchronous queries. This is useful for times in which the thread or process or machine submitting image queries is not the same thread or machine that will be retrieving and using the results. For example, you might have a forward deployed robot or camera that submits image queries to Groundlight, and a separate server that retrieves the results and takes action based on them. We will refer to these two machines as the ",(0,i.kt)("strong",{parentName:"p"},"submitting machine")," and the ",(0,i.kt)("strong",{parentName:"p"},"retrieving machine"),"."),(0,i.kt)("h2",{id:"setup-submitting-machine"},"Setup Submitting Machine"),(0,i.kt)("p",null,"On the ",(0,i.kt)("strong",{parentName:"p"},"submitting machine"),", you will need to install the Groundlight Python SDK. Then you can submit image queries asynchronously using the ",(0,i.kt)("inlineCode",{parentName:"p"},"ask_async")," interface (read the full documentation ",(0,i.kt)("a",{parentName:"p",href:"pathname:///python-sdk/api-reference-docs/#groundlight.client.Groundlight.ask_async"},"here"),"). ",(0,i.kt)("inlineCode",{parentName:"p"},"ask_async")," submits your query and returns as soon as the query is submitted. It does not wait for an answer to be available prior to returning to minimize the time your program spends interacting with Groundlight. As a result, the ",(0,i.kt)("inlineCode",{parentName:"p"},"ImageQuery")," object ",(0,i.kt)("inlineCode",{parentName:"p"},"ask_async")," returns lacks a ",(0,i.kt)("inlineCode",{parentName:"p"},"result")," (the ",(0,i.kt)("inlineCode",{parentName:"p"},"result")," field will be ",(0,i.kt)("inlineCode",{parentName:"p"},"None"),"). This is acceptable for this use case as the ",(0,i.kt)("strong",{parentName:"p"},"submitting machine")," is not interested in the result. Instead, the ",(0,i.kt)("strong",{parentName:"p"},"submitting machine")," just needs to communicate the ",(0,i.kt)("inlineCode",{parentName:"p"},"ImageQuery.id"),"s to the ",(0,i.kt)("strong",{parentName:"p"},"retrieving machine")," - this might be done via a database, a message queue, or some other mechanism. For this example, we assume you are using a database where you save the ",(0,i.kt)("inlineCode",{parentName:"p"},"ImageQuery.id")," to it via ",(0,i.kt)("inlineCode",{parentName:"p"},"db.save(image_query.id)"),"."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-python",metastring:"notest",notest:!0},'from groundlight import Groundlight\nimport cv2\nfrom time import sleep\n\ndetector = gl.get_or_create_detector(name="your_detector_name", query="your_query")\n\ncam = cv2.VideoCapture(0) # Initialize camera (0 is the default index)\n\nwhile True:\n _, image = cam.read() # Capture one frame from the camera\n image_query = gl.ask_async(detector=detector, image=image) # Submit the frame to Groundlight\n db.save(image_query.id) # Save the image_query.id to a database for the retrieving machine to use\n sleep(10) # Sleep for 10 seconds before submitting the next query\n\ncam.release() # Release the camera\n\n')),(0,i.kt)("h2",{id:"setup-retrieving-machine"},"Setup Retrieving Machine"),(0,i.kt)("p",null,"On the ",(0,i.kt)("strong",{parentName:"p"},"retrieving machine")," you will need to install the Groundlight Python SDK. Then you can retrieve the results of the image queries submitted by another machine using ",(0,i.kt)("inlineCode",{parentName:"p"},"get_image_query"),". The ",(0,i.kt)("strong",{parentName:"p"},"retrieving machine")," can then use the ",(0,i.kt)("inlineCode",{parentName:"p"},"ImageQuery.result")," to take action based on the result for whatever application you are building. For this example, we assume your application looks up the next image query to process from a database via ",(0,i.kt)("inlineCode",{parentName:"p"},"db.get_next_image_query_id()")," and that this function returns ",(0,i.kt)("inlineCode",{parentName:"p"},"None")," once all ",(0,i.kt)("inlineCode",{parentName:"p"},"ImageQuery"),"s are processed."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-python",metastring:"notest",notest:!0},"from groundlight import Groundlight\n\ndetector = gl.get_or_create_detector(name=\"your_detector_name\", query=\"your_query\")\n\nimage_query_id = db.get_next_image_query_id()\n\nwhile image_query_id is not None:\n image_query = gl.get_image_query(id=image_query_id) # retrieve the image query from Groundlight\n result = image_query.result\n\n # take action based on the result of the image query\n if result.label == 'YES':\n pass # TODO: do something based on your application\n elif result.label == 'NO':\n pass # TODO: do something based on your application\n elif result.label == 'UNCLEAR':\n pass # TODO: do something based on your application\n\n # update image_query_id for next iteration of the loop\n image_query_id = db.get_next_image_query_id()\n")),(0,i.kt)("h2",{id:"important-considerations"},"Important Considerations"),(0,i.kt)("p",null,"When you submit an image query asynchronously, ML prediction on your query is ",(0,i.kt)("strong",{parentName:"p"},"not")," instant. So attempting to retrieve the result immediately after submitting an async query will likely result in an ",(0,i.kt)("inlineCode",{parentName:"p"},"UNCLEAR")," result as Groundlight is still processing your query. Instead, if your code needs a ",(0,i.kt)("inlineCode",{parentName:"p"},"result")," synchronously we recommend using one of our methods with a polling mechanism to retrieve the result. You can see all of the interfaces available in the documentation ",(0,i.kt)("a",{parentName:"p",href:"pathname:///python-sdk/api-reference-docs/#groundlight.client.Groundlight"},"here"),"."),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-python",metastring:"notest",notest:!0},'from groundlight import Groundlight\nfrom PIL import Image\n\ndetector = gl.get_or_create_detector(name="your_detector_name", query="your_query")\nimage = Image.open("/path/to/your/image.jpg")\nimage_query = gl.ask_async(detector=detector, image=image) # Submit async query to Groundlight\nresult = image_query.result # This will always be \'None\' as you asked asynchronously\n\nimage_query = gl.get_image_query(id=image_query.id) # Immediately retrieve the image query from Groundlight\nresult = image_query.result # This will likely be \'UNCLEAR\' as Groundlight is still processing your query\n\nimage_query = gl.wait_for_confident_result(id=image_query.id) # Poll for a confident result from Groundlight\nresult = image_query.result\n')))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/cb33c72e.cd82f444.js b/assets/js/cb33c72e.cd82f444.js new file mode 100644 index 00000000..e9e18ca4 --- /dev/null +++ b/assets/js/cb33c72e.cd82f444.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[855],{3574:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>u,contentTitle:()=>a,default:()=>c,frontMatter:()=>s,metadata:()=>o,toc:()=>d});var n=i(5893),r=i(1151);const s={sidebar_position:5},a="Asynchronous Queries",o={id:"building-applications/async-queries",title:"Asynchronous Queries",description:"Groundlight provides a simple interface for submitting asynchronous queries. This is useful for times in which the thread or process or machine submitting image queries is not the same thread or machine that will be retrieving and using the results. For example, you might have a forward deployed robot or camera that submits image queries to Groundlight, and a separate server that retrieves the results and takes action based on them. We will refer to these two machines as the submitting machine and the retrieving machine.",source:"@site/docs/building-applications/6-async-queries.md",sourceDirName:"building-applications",slug:"/building-applications/async-queries",permalink:"/python-sdk/docs/building-applications/async-queries",draft:!1,unlisted:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/building-applications/6-async-queries.md",tags:[],version:"current",sidebarPosition:5,frontMatter:{sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"Handling Server Errors",permalink:"/python-sdk/docs/building-applications/handling-errors"},next:{title:"Using Groundlight on the Edge",permalink:"/python-sdk/docs/building-applications/edge"}},u={},d=[{value:"Setup Submitting Machine",id:"setup-submitting-machine",level:2},{value:"Setup Retrieving Machine",id:"setup-retrieving-machine",level:2},{value:"Important Considerations",id:"important-considerations",level:2}];function l(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",p:"p",pre:"pre",strong:"strong",...(0,r.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"asynchronous-queries",children:"Asynchronous Queries"}),"\n",(0,n.jsxs)(t.p,{children:["Groundlight provides a simple interface for submitting asynchronous queries. This is useful for times in which the thread or process or machine submitting image queries is not the same thread or machine that will be retrieving and using the results. For example, you might have a forward deployed robot or camera that submits image queries to Groundlight, and a separate server that retrieves the results and takes action based on them. We will refer to these two machines as the ",(0,n.jsx)(t.strong,{children:"submitting machine"})," and the ",(0,n.jsx)(t.strong,{children:"retrieving machine"}),"."]}),"\n",(0,n.jsx)(t.h2,{id:"setup-submitting-machine",children:"Setup Submitting Machine"}),"\n",(0,n.jsxs)(t.p,{children:["On the ",(0,n.jsx)(t.strong,{children:"submitting machine"}),", you will need to install the Groundlight Python SDK. Then you can submit image queries asynchronously using the ",(0,n.jsx)(t.code,{children:"ask_async"})," interface (read the full documentation ",(0,n.jsx)(t.a,{href:"pathname:///python-sdk/api-reference-docs/#groundlight.client.Groundlight.ask_async",children:"here"}),"). ",(0,n.jsx)(t.code,{children:"ask_async"})," submits your query and returns as soon as the query is submitted. It does not wait for an answer to be available prior to returning to minimize the time your program spends interacting with Groundlight. As a result, the ",(0,n.jsx)(t.code,{children:"ImageQuery"})," object ",(0,n.jsx)(t.code,{children:"ask_async"})," returns lacks a ",(0,n.jsx)(t.code,{children:"result"})," (the ",(0,n.jsx)(t.code,{children:"result"})," field will be ",(0,n.jsx)(t.code,{children:"None"}),"). This is acceptable for this use case as the ",(0,n.jsx)(t.strong,{children:"submitting machine"})," is not interested in the result. Instead, the ",(0,n.jsx)(t.strong,{children:"submitting machine"})," just needs to communicate the ",(0,n.jsx)(t.code,{children:"ImageQuery.id"}),"s to the ",(0,n.jsx)(t.strong,{children:"retrieving machine"})," - this might be done via a database, a message queue, or some other mechanism. For this example, we assume you are using a database where you save the ",(0,n.jsx)(t.code,{children:"ImageQuery.id"})," to it via ",(0,n.jsx)(t.code,{children:"db.save(image_query.id)"}),"."]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-python",metastring:"notest",children:'from groundlight import Groundlight\nimport cv2\nfrom time import sleep\n\ndetector = gl.get_or_create_detector(name="your_detector_name", query="your_query")\n\ncam = cv2.VideoCapture(0) # Initialize camera (0 is the default index)\n\nwhile True:\n _, image = cam.read() # Capture one frame from the camera\n image_query = gl.ask_async(detector=detector, image=image) # Submit the frame to Groundlight\n db.save(image_query.id) # Save the image_query.id to a database for the retrieving machine to use\n sleep(10) # Sleep for 10 seconds before submitting the next query\n\ncam.release() # Release the camera\n\n'})}),"\n",(0,n.jsx)(t.h2,{id:"setup-retrieving-machine",children:"Setup Retrieving Machine"}),"\n",(0,n.jsxs)(t.p,{children:["On the ",(0,n.jsx)(t.strong,{children:"retrieving machine"})," you will need to install the Groundlight Python SDK. Then you can retrieve the results of the image queries submitted by another machine using ",(0,n.jsx)(t.code,{children:"get_image_query"}),". The ",(0,n.jsx)(t.strong,{children:"retrieving machine"})," can then use the ",(0,n.jsx)(t.code,{children:"ImageQuery.result"})," to take action based on the result for whatever application you are building. For this example, we assume your application looks up the next image query to process from a database via ",(0,n.jsx)(t.code,{children:"db.get_next_image_query_id()"})," and that this function returns ",(0,n.jsx)(t.code,{children:"None"})," once all ",(0,n.jsx)(t.code,{children:"ImageQuery"}),"s are processed."]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-python",metastring:"notest",children:"from groundlight import Groundlight\n\ndetector = gl.get_or_create_detector(name=\"your_detector_name\", query=\"your_query\")\n\nimage_query_id = db.get_next_image_query_id()\n\nwhile image_query_id is not None:\n image_query = gl.get_image_query(id=image_query_id) # retrieve the image query from Groundlight\n result = image_query.result\n\n # take action based on the result of the image query\n if result.label == 'YES':\n pass # TODO: do something based on your application\n elif result.label == 'NO':\n pass # TODO: do something based on your application\n elif result.label == 'UNCLEAR':\n pass # TODO: do something based on your application\n\n # update image_query_id for next iteration of the loop\n image_query_id = db.get_next_image_query_id()\n"})}),"\n",(0,n.jsx)(t.h2,{id:"important-considerations",children:"Important Considerations"}),"\n",(0,n.jsxs)(t.p,{children:["When you submit an image query asynchronously, ML prediction on your query is ",(0,n.jsx)(t.strong,{children:"not"})," instant. So attempting to retrieve the result immediately after submitting an async query will likely result in an ",(0,n.jsx)(t.code,{children:"UNCLEAR"})," result as Groundlight is still processing your query. Instead, if your code needs a ",(0,n.jsx)(t.code,{children:"result"})," synchronously we recommend using one of our methods with a polling mechanism to retrieve the result. You can see all of the interfaces available in the documentation ",(0,n.jsx)(t.a,{href:"pathname:///python-sdk/api-reference-docs/#groundlight.client.Groundlight",children:"here"}),"."]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-python",metastring:"notest",children:'from groundlight import Groundlight\nfrom PIL import Image\n\ndetector = gl.get_or_create_detector(name="your_detector_name", query="your_query")\nimage = Image.open("/path/to/your/image.jpg")\nimage_query = gl.ask_async(detector=detector, image=image) # Submit async query to Groundlight\nresult = image_query.result # This will always be \'None\' as you asked asynchronously\n\nimage_query = gl.get_image_query(id=image_query.id) # Immediately retrieve the image query from Groundlight\nresult = image_query.result # This will likely be \'UNCLEAR\' as Groundlight is still processing your query\n\nimage_query = gl.wait_for_confident_result(id=image_query.id) # Poll for a confident result from Groundlight\nresult = image_query.result\n'})})]})}function c(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},1151:(e,t,i)=>{i.d(t,{Z:()=>o,a:()=>a});var n=i(7294);const r={},s=n.createContext(r);function a(e){const t=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),n.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d5ec6805.08208ce0.js b/assets/js/d5ec6805.08208ce0.js deleted file mode 100644 index deb7971b..00000000 --- a/assets/js/d5ec6805.08208ce0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[986],{3905:(e,n,t)=>{t.d(n,{Zo:()=>p,kt:()=>c});var o=t(7294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function l(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?r(Object(t),!0).forEach((function(n){i(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):r(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function a(e,n){if(null==e)return{};var t,o,i=function(e,n){if(null==e)return{};var t,o,i={},r=Object.keys(e);for(o=0;o<r.length;o++)t=r[o],n.indexOf(t)>=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o<r.length;o++)t=r[o],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var s=o.createContext({}),u=function(e){var n=o.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},p=function(e){var n=u(e.components);return o.createElement(s.Provider,{value:n},e.children)},d="mdxType",g={inlineCode:"code",wrapper:function(e){var n=e.children;return o.createElement(o.Fragment,{},n)}},h=o.forwardRef((function(e,n){var t=e.components,i=e.mdxType,r=e.originalType,s=e.parentName,p=a(e,["components","mdxType","originalType","parentName"]),d=u(t),h=i,c=d["".concat(s,".").concat(h)]||d[h]||g[h]||r;return t?o.createElement(c,l(l({ref:n},p),{},{components:t})):o.createElement(c,l({ref:n},p))}));function c(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var r=t.length,l=new Array(r);l[0]=h;var a={};for(var s in n)hasOwnProperty.call(n,s)&&(a[s]=n[s]);a.originalType=e,a[d]="string"==typeof e?e:i,l[1]=a;for(var u=2;u<r;u++)l[u]=t[u];return o.createElement.apply(null,l)}return o.createElement.apply(null,t)}h.displayName="MDXCreateElement"},4444:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>l,default:()=>g,frontMatter:()=>r,metadata:()=>a,toc:()=>u});var o=t(7462),i=(t(7294),t(3905));const r={},l="Installing on Windows",a={unversionedId:"installation/windows",id:"installation/windows",title:"Installing on Windows",description:"This guide will help you install the Groundlight SDK on Windows. The Groundlight SDK requires Python 3.7 or higher.",source:"@site/docs/installation/3-windows.md",sourceDirName:"installation",slug:"/installation/windows",permalink:"/python-sdk/docs/installation/windows",draft:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/installation/3-windows.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Installing on macOS",permalink:"/python-sdk/docs/installation/macos"},next:{title:"Installing on Raspberry Pi",permalink:"/python-sdk/docs/installation/raspberry-pi"}},s={},u=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Basic Installation",id:"basic-installation",level:2},{value:"Installing Groundlight SDK",id:"installing-groundlight-sdk",level:3},{value:"Checking Groundlight SDK Version",id:"checking-groundlight-sdk-version",level:3},{value:"Upgrading Groundlight SDK",id:"upgrading-groundlight-sdk",level:3},{value:"Getting the right Python Version",id:"getting-the-right-python-version",level:2},{value:"Upgrading Python on Windows",id:"upgrading-python-on-windows",level:3},{value:"Ready to go!",id:"ready-to-go",level:2}],p={toc:u},d="wrapper";function g(e){let{components:n,...t}=e;return(0,i.kt)(d,(0,o.Z)({},p,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"installing-on-windows"},"Installing on Windows"),(0,i.kt)("p",null,"This guide will help you install the Groundlight SDK on Windows. The Groundlight SDK requires Python 3.7 or higher."),(0,i.kt)("h2",{id:"prerequisites"},"Prerequisites"),(0,i.kt)("p",null,"Ensure that you have the following installed on your system:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Python 3.7 or higher"),(0,i.kt)("li",{parentName:"ul"},"pip (Python package installer)")),(0,i.kt)("h2",{id:"basic-installation"},"Basic Installation"),(0,i.kt)("p",null,"Assuming you have Python 3.7 or higher installed on your system, you can proceed with the following steps to install or upgrade the Groundlight SDK:"),(0,i.kt)("h3",{id:"installing-groundlight-sdk"},"Installing Groundlight SDK"),(0,i.kt)("p",null,"To install the Groundlight SDK using pip, run the following command in your Command Prompt:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"pip install groundlight\n")),(0,i.kt)("p",null,"If you're also using ",(0,i.kt)("inlineCode",{parentName:"p"},"python2")," on your system, you might need to use ",(0,i.kt)("inlineCode",{parentName:"p"},"pip3")," instead:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"pip3 install groundlight\n")),(0,i.kt)("p",null,"The Groundlight SDK is now installed and ready for use."),(0,i.kt)("h3",{id:"checking-groundlight-sdk-version"},"Checking Groundlight SDK Version"),(0,i.kt)("p",null,"To check if the Groundlight SDK is installed and to display its version, you can use the following Python one-liner:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},'python -c "import groundlight; print(groundlight.__version__)"\n')),(0,i.kt)("h3",{id:"upgrading-groundlight-sdk"},"Upgrading Groundlight SDK"),(0,i.kt)("p",null,"If you need to upgrade the Groundlight SDK to the latest version, use the following pip command:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"pip install --upgrade groundlight\n")),(0,i.kt)("p",null,"Or, if you're using ",(0,i.kt)("inlineCode",{parentName:"p"},"pip3"),":"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"pip3 install --upgrade groundlight\n")),(0,i.kt)("p",null,'After upgrading, you can use the Python one-liner mentioned in the "Checking Groundlight SDK Version" section to verify that the latest version is now installed.'),(0,i.kt)("h2",{id:"getting-the-right-python-version"},"Getting the right Python Version"),(0,i.kt)("p",null,"To check your installed Python version, open a Command Prompt and run:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"python --version\n")),(0,i.kt)("p",null,'If you see a version number starting with "3.7" or higher (e.g., "3.7.5" or "3.9.0"), you\'re good to go. If not, you might need to upgrade Python on your system.'),(0,i.kt)("h3",{id:"upgrading-python-on-windows"},"Upgrading Python on Windows"),(0,i.kt)("p",null,"Download the latest Python installer from the ",(0,i.kt)("a",{parentName:"p",href:"https://www.python.org/downloads/windows/"},"official Python website")," and run it."),(0,i.kt)("p",null,"After upgrading, verify the Python version by running ",(0,i.kt)("inlineCode",{parentName:"p"},"python --version")," or ",(0,i.kt)("inlineCode",{parentName:"p"},"python3 --version"),", as described earlier."),(0,i.kt)("h2",{id:"ready-to-go"},"Ready to go!"),(0,i.kt)("p",null,"You're now ready to start using the Groundlight SDK in your projects. For more information on using the SDK, refer to the ",(0,i.kt)("a",{parentName:"p",href:"/docs/getting-started/api-tokens"},"API Tokens")," and ",(0,i.kt)("a",{parentName:"p",href:"/docs/building-applications"},"Building Applications")," documentation pages."))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d5ec6805.490085e6.js b/assets/js/d5ec6805.490085e6.js new file mode 100644 index 00000000..e52d01c2 --- /dev/null +++ b/assets/js/d5ec6805.490085e6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[986],{6901:(n,e,i)=>{i.r(e),i.d(e,{assets:()=>d,contentTitle:()=>r,default:()=>g,frontMatter:()=>s,metadata:()=>l,toc:()=>h});var o=i(5893),t=i(1151);const s={},r="Installing on Windows",l={id:"installation/windows",title:"Installing on Windows",description:"This guide will help you install the Groundlight SDK on Windows. The Groundlight SDK requires Python 3.7 or higher.",source:"@site/docs/installation/3-windows.md",sourceDirName:"installation",slug:"/installation/windows",permalink:"/python-sdk/docs/installation/windows",draft:!1,unlisted:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/installation/3-windows.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Installing on macOS",permalink:"/python-sdk/docs/installation/macos"},next:{title:"Installing on Raspberry Pi",permalink:"/python-sdk/docs/installation/raspberry-pi"}},d={},h=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Basic Installation",id:"basic-installation",level:2},{value:"Installing Groundlight SDK",id:"installing-groundlight-sdk",level:3},{value:"Checking Groundlight SDK Version",id:"checking-groundlight-sdk-version",level:3},{value:"Upgrading Groundlight SDK",id:"upgrading-groundlight-sdk",level:3},{value:"Getting the right Python Version",id:"getting-the-right-python-version",level:2},{value:"Upgrading Python on Windows",id:"upgrading-python-on-windows",level:3},{value:"Ready to go!",id:"ready-to-go",level:2}];function a(n){const e={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.a)(),...n.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(e.h1,{id:"installing-on-windows",children:"Installing on Windows"}),"\n",(0,o.jsx)(e.p,{children:"This guide will help you install the Groundlight SDK on Windows. The Groundlight SDK requires Python 3.7 or higher."}),"\n",(0,o.jsx)(e.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,o.jsx)(e.p,{children:"Ensure that you have the following installed on your system:"}),"\n",(0,o.jsxs)(e.ul,{children:["\n",(0,o.jsx)(e.li,{children:"Python 3.7 or higher"}),"\n",(0,o.jsx)(e.li,{children:"pip (Python package installer)"}),"\n"]}),"\n",(0,o.jsx)(e.h2,{id:"basic-installation",children:"Basic Installation"}),"\n",(0,o.jsx)(e.p,{children:"Assuming you have Python 3.7 or higher installed on your system, you can proceed with the following steps to install or upgrade the Groundlight SDK:"}),"\n",(0,o.jsx)(e.h3,{id:"installing-groundlight-sdk",children:"Installing Groundlight SDK"}),"\n",(0,o.jsx)(e.p,{children:"To install the Groundlight SDK using pip, run the following command in your Command Prompt:"}),"\n",(0,o.jsx)(e.pre,{children:(0,o.jsx)(e.code,{className:"language-bash",children:"pip install groundlight\n"})}),"\n",(0,o.jsxs)(e.p,{children:["If you're also using ",(0,o.jsx)(e.code,{children:"python2"})," on your system, you might need to use ",(0,o.jsx)(e.code,{children:"pip3"})," instead:"]}),"\n",(0,o.jsx)(e.pre,{children:(0,o.jsx)(e.code,{className:"language-bash",children:"pip3 install groundlight\n"})}),"\n",(0,o.jsx)(e.p,{children:"The Groundlight SDK is now installed and ready for use."}),"\n",(0,o.jsx)(e.h3,{id:"checking-groundlight-sdk-version",children:"Checking Groundlight SDK Version"}),"\n",(0,o.jsx)(e.p,{children:"To check if the Groundlight SDK is installed and to display its version, you can use the following Python one-liner:"}),"\n",(0,o.jsx)(e.pre,{children:(0,o.jsx)(e.code,{className:"language-bash",children:'python -c "import groundlight; print(groundlight.__version__)"\n'})}),"\n",(0,o.jsx)(e.h3,{id:"upgrading-groundlight-sdk",children:"Upgrading Groundlight SDK"}),"\n",(0,o.jsx)(e.p,{children:"If you need to upgrade the Groundlight SDK to the latest version, use the following pip command:"}),"\n",(0,o.jsx)(e.pre,{children:(0,o.jsx)(e.code,{className:"language-bash",children:"pip install --upgrade groundlight\n"})}),"\n",(0,o.jsxs)(e.p,{children:["Or, if you're using ",(0,o.jsx)(e.code,{children:"pip3"}),":"]}),"\n",(0,o.jsx)(e.pre,{children:(0,o.jsx)(e.code,{className:"language-bash",children:"pip3 install --upgrade groundlight\n"})}),"\n",(0,o.jsx)(e.p,{children:'After upgrading, you can use the Python one-liner mentioned in the "Checking Groundlight SDK Version" section to verify that the latest version is now installed.'}),"\n",(0,o.jsx)(e.h2,{id:"getting-the-right-python-version",children:"Getting the right Python Version"}),"\n",(0,o.jsx)(e.p,{children:"To check your installed Python version, open a Command Prompt and run:"}),"\n",(0,o.jsx)(e.pre,{children:(0,o.jsx)(e.code,{className:"language-bash",children:"python --version\n"})}),"\n",(0,o.jsx)(e.p,{children:'If you see a version number starting with "3.7" or higher (e.g., "3.7.5" or "3.9.0"), you\'re good to go. If not, you might need to upgrade Python on your system.'}),"\n",(0,o.jsx)(e.h3,{id:"upgrading-python-on-windows",children:"Upgrading Python on Windows"}),"\n",(0,o.jsxs)(e.p,{children:["Download the latest Python installer from the ",(0,o.jsx)(e.a,{href:"https://www.python.org/downloads/windows/",children:"official Python website"})," and run it."]}),"\n",(0,o.jsxs)(e.p,{children:["After upgrading, verify the Python version by running ",(0,o.jsx)(e.code,{children:"python --version"})," or ",(0,o.jsx)(e.code,{children:"python3 --version"}),", as described earlier."]}),"\n",(0,o.jsx)(e.h2,{id:"ready-to-go",children:"Ready to go!"}),"\n",(0,o.jsxs)(e.p,{children:["You're now ready to start using the Groundlight SDK in your projects. For more information on using the SDK, refer to the ",(0,o.jsx)(e.a,{href:"/docs/getting-started/api-tokens",children:"API Tokens"})," and ",(0,o.jsx)(e.a,{href:"/docs/building-applications",children:"Building Applications"})," documentation pages."]})]})}function g(n={}){const{wrapper:e}={...(0,t.a)(),...n.components};return e?(0,o.jsx)(e,{...n,children:(0,o.jsx)(a,{...n})}):a(n)}},1151:(n,e,i)=>{i.d(e,{Z:()=>l,a:()=>r});var o=i(7294);const t={},s=o.createContext(t);function r(n){const e=o.useContext(s);return o.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function l(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(t):n.components||t:r(n.components),o.createElement(s.Provider,{value:e},n.children)}}}]); \ No newline at end of file diff --git a/assets/js/ddfecd50.88cc0d86.js b/assets/js/ddfecd50.88cc0d86.js new file mode 100644 index 00000000..4f82edad --- /dev/null +++ b/assets/js/ddfecd50.88cc0d86.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[609],{1178:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>a,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>l});var o=t(5893),r=t(1151);const i={},a="A Fun Example: Dog-on-Couch Detector",c={id:"getting-started/dog-on-couch",title:"A Fun Example: Dog-on-Couch Detector",description:"Here is a whimsical example of how you could use Groundlight in your home to keep your dog off the couch. This document will guide you through creating a complete application. If the dog is detected on the couch, the application will play a pre-recorded sound over the computer's speakers, instructing the dog to get off the couch. Be sure to record your own voice so that your dog pays attention to you.",source:"@site/docs/getting-started/4-dog-on-couch.md",sourceDirName:"getting-started",slug:"/getting-started/dog-on-couch",permalink:"/python-sdk/docs/getting-started/dog-on-couch",draft:!1,unlisted:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/getting-started/4-dog-on-couch.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"A Serious Example: Retail Analytics",permalink:"/python-sdk/docs/getting-started/retail-analytics"},next:{title:"A Quick Example: Live Stream Alert",permalink:"/python-sdk/docs/getting-started/streaming"}},s={},l=[{value:"Requirements",id:"requirements",level:2},{value:"Installation",id:"installation",level:2},{value:"Creating the Application",id:"creating-the-application",level:2}];function d(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h1,{id:"a-fun-example-dog-on-couch-detector",children:"A Fun Example: Dog-on-Couch Detector"}),"\n",(0,o.jsx)(n.p,{children:"Here is a whimsical example of how you could use Groundlight in your home to keep your dog off the couch. This document will guide you through creating a complete application. If the dog is detected on the couch, the application will play a pre-recorded sound over the computer's speakers, instructing the dog to get off the couch. Be sure to record your own voice so that your dog pays attention to you."}),"\n",(0,o.jsx)(n.h2,{id:"requirements",children:"Requirements"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"/docs/installation/",children:"Groundlight SDK"})," with Python 3.7 or higher"]}),"\n",(0,o.jsx)(n.li,{children:"A supported USB or network-connected camera"}),"\n",(0,o.jsxs)(n.li,{children:["A pre-recorded sound file (e.g., ",(0,o.jsx)(n.code,{children:"get_off_couch.mp3"}),")"]}),"\n",(0,o.jsx)(n.li,{children:"A couch and a dog are recommended for proper end-to-end testing."}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"installation",children:"Installation"}),"\n",(0,o.jsx)(n.p,{children:"Ensure you have Python 3.7 or higher installed, and then install the Groundlight SDK and OpenCV library:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"pip install groundlight opencv-python pillow pyaudio\n"})}),"\n",(0,o.jsx)(n.h2,{id:"creating-the-application",children:"Creating the Application"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["First, log in to the ",(0,o.jsx)(n.a,{href:"https://app.groundlight.ai",children:"Groundlight application"})," and get an ",(0,o.jsx)(n.a,{href:"api-tokens",children:"API Token"}),"."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Next, we'll write the Python script for the application. Import the required libraries:"}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-python",metastring:"notest",children:"import time\nimport cv2\nfrom groundlight import Groundlight\nfrom PIL import Image\nimport pyaudio\nimport wave\n"})}),"\n",(0,o.jsxs)(n.ol,{start:"3",children:["\n",(0,o.jsx)(n.li,{children:"Define a function to capture an image from the camera using OpenCV:"}),"\n"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-python",children:"def capture_image():\n cap = cv2.VideoCapture(0)\n\n ret, frame = cap.read()\n cap.release()\n\n if ret:\n # Convert to PIL image\n return Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))\n else:\n return None\n"})}),"\n",(0,o.jsxs)(n.ol,{start:"4",children:["\n",(0,o.jsx)(n.li,{children:"Define a function to play the pre-recorded sound:"}),"\n"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-python",children:"def play_sound(file_path):\n CHUNK = 1024\n wf = wave.open(file_path, 'rb')\n\n p = pyaudio.PyAudio()\n\n stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),\n channels=wf.getnchannels(),\n rate=wf.getframerate(),\n output=True)\n\n data = wf.readframes(CHUNK)\n\n while data:\n stream.write(data)\n data = wf.readframes(CHUNK)\n\n stream.stop_stream()\n stream.close()\n\n p.terminate()\n"})}),"\n",(0,o.jsxs)(n.ol,{start:"5",children:["\n",(0,o.jsx)(n.li,{children:"Write the main application loop:"}),"\n"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-python",metastring:"notest",children:'gl = Groundlight()\n\ndetector = gl.get_detector("Dog on Couch Detector")\n\nwhile True:\n image = capture_image()\n if image:\n try:\n iq = gl.submit_image_query(image=image, detector=detector, wait=60)\n answer = iq.result.label\n if answer == "YES":\n print("Dog detected on the couch!")\n play_sound("get_off_couch.mp3")\n except Exception as e:\n print(f"Error submitting image query: {e}")\n else:\n print("Failed to capture image")\n\n # Sleep for a minute before checking again\n time.sleep(60)\n'})}),"\n",(0,o.jsxs)(n.p,{children:["This application captures an image using the ",(0,o.jsx)(n.code,{children:"capture_image"})," function, then submits it to the Groundlight API for analysis. If the dog is detected on the couch, it plays the pre-recorded sound using the ",(0,o.jsx)(n.code,{children:"play_sound"})," function."]}),"\n",(0,o.jsxs)(n.p,{children:["Save the script as ",(0,o.jsx)(n.code,{children:"dog_on_couch_detector.py"})," and run it:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"python dog_on_couch_detector.py\n"})})]})}function h(e={}){const{wrapper:n}={...(0,r.a)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>c,a:()=>a});var o=t(7294);const r={},i=o.createContext(r);function a(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),o.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ddfecd50.fa9adc48.js b/assets/js/ddfecd50.fa9adc48.js deleted file mode 100644 index afd638e3..00000000 --- a/assets/js/ddfecd50.fa9adc48.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[609],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>g});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var p=r.createContext({}),c=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(p.Provider,{value:t},e.children)},s="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),s=c(n),m=o,g=s["".concat(p,".").concat(m)]||s[m]||d[m]||a;return n?r.createElement(g,i(i({ref:t},u),{},{components:n})):r.createElement(g,i({ref:t},u))}));function g(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l[s]="string"==typeof e?e:o,i[1]=l;for(var c=2;c<a;c++)i[c]=n[c];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},6738:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>l,toc:()=>c});var r=n(7462),o=(n(7294),n(3905));const a={},i="A Fun Example: Dog-on-Couch Detector",l={unversionedId:"getting-started/dog-on-couch",id:"getting-started/dog-on-couch",title:"A Fun Example: Dog-on-Couch Detector",description:"Here is a whimsical example of how you could use Groundlight in your home to keep your dog off the couch. This document will guide you through creating a complete application. If the dog is detected on the couch, the application will play a pre-recorded sound over the computer's speakers, instructing the dog to get off the couch. Be sure to record your own voice so that your dog pays attention to you.",source:"@site/docs/getting-started/4-dog-on-couch.md",sourceDirName:"getting-started",slug:"/getting-started/dog-on-couch",permalink:"/python-sdk/docs/getting-started/dog-on-couch",draft:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/getting-started/4-dog-on-couch.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"A Serious Example: Retail Analytics",permalink:"/python-sdk/docs/getting-started/retail-analytics"},next:{title:"A Quick Example: Live Stream Alert",permalink:"/python-sdk/docs/getting-started/streaming"}},p={},c=[{value:"Requirements",id:"requirements",level:2},{value:"Installation",id:"installation",level:2},{value:"Creating the Application",id:"creating-the-application",level:2}],u={toc:c},s="wrapper";function d(e){let{components:t,...n}=e;return(0,o.kt)(s,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"a-fun-example-dog-on-couch-detector"},"A Fun Example: Dog-on-Couch Detector"),(0,o.kt)("p",null,"Here is a whimsical example of how you could use Groundlight in your home to keep your dog off the couch. This document will guide you through creating a complete application. If the dog is detected on the couch, the application will play a pre-recorded sound over the computer's speakers, instructing the dog to get off the couch. Be sure to record your own voice so that your dog pays attention to you."),(0,o.kt)("h2",{id:"requirements"},"Requirements"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"/docs/installation/"},"Groundlight SDK")," with Python 3.7 or higher"),(0,o.kt)("li",{parentName:"ul"},"A supported USB or network-connected camera"),(0,o.kt)("li",{parentName:"ul"},"A pre-recorded sound file (e.g., ",(0,o.kt)("inlineCode",{parentName:"li"},"get_off_couch.mp3"),")"),(0,o.kt)("li",{parentName:"ul"},"A couch and a dog are recommended for proper end-to-end testing.")),(0,o.kt)("h2",{id:"installation"},"Installation"),(0,o.kt)("p",null,"Ensure you have Python 3.7 or higher installed, and then install the Groundlight SDK and OpenCV library:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"pip install groundlight opencv-python pillow pyaudio\n")),(0,o.kt)("h2",{id:"creating-the-application"},"Creating the Application"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"First, log in to the ",(0,o.kt)("a",{parentName:"p",href:"https://app.groundlight.ai"},"Groundlight application")," and get an ",(0,o.kt)("a",{parentName:"p",href:"api-tokens"},"API Token"),".")),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("p",{parentName:"li"},"Next, we'll write the Python script for the application. Import the required libraries:"))),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-python",metastring:"notest",notest:!0},"import time\nimport cv2\nfrom groundlight import Groundlight\nfrom PIL import Image\nimport pyaudio\nimport wave\n")),(0,o.kt)("ol",{start:3},(0,o.kt)("li",{parentName:"ol"},"Define a function to capture an image from the camera using OpenCV:")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-python"},"def capture_image():\n cap = cv2.VideoCapture(0)\n\n ret, frame = cap.read()\n cap.release()\n\n if ret:\n # Convert to PIL image\n return Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))\n else:\n return None\n")),(0,o.kt)("ol",{start:4},(0,o.kt)("li",{parentName:"ol"},"Define a function to play the pre-recorded sound:")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-python"},"def play_sound(file_path):\n CHUNK = 1024\n wf = wave.open(file_path, 'rb')\n\n p = pyaudio.PyAudio()\n\n stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),\n channels=wf.getnchannels(),\n rate=wf.getframerate(),\n output=True)\n\n data = wf.readframes(CHUNK)\n\n while data:\n stream.write(data)\n data = wf.readframes(CHUNK)\n\n stream.stop_stream()\n stream.close()\n\n p.terminate()\n")),(0,o.kt)("ol",{start:5},(0,o.kt)("li",{parentName:"ol"},"Write the main application loop:")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-python",metastring:"notest",notest:!0},'gl = Groundlight()\n\ndetector = gl.get_detector("Dog on Couch Detector")\n\nwhile True:\n image = capture_image()\n if image:\n try:\n iq = gl.submit_image_query(image=image, detector=detector, wait=60)\n answer = iq.result.label\n if answer == "YES":\n print("Dog detected on the couch!")\n play_sound("get_off_couch.mp3")\n except Exception as e:\n print(f"Error submitting image query: {e}")\n else:\n print("Failed to capture image")\n\n # Sleep for a minute before checking again\n time.sleep(60)\n')),(0,o.kt)("p",null,"This application captures an image using the ",(0,o.kt)("inlineCode",{parentName:"p"},"capture_image")," function, then submits it to the Groundlight API for analysis. If the dog is detected on the couch, it plays the pre-recorded sound using the ",(0,o.kt)("inlineCode",{parentName:"p"},"play_sound")," function."),(0,o.kt)("p",null,"Save the script as ",(0,o.kt)("inlineCode",{parentName:"p"},"dog_on_couch_detector.py")," and run it:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"python dog_on_couch_detector.py\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/efd4b15a.2d7c06d8.js b/assets/js/efd4b15a.2d7c06d8.js new file mode 100644 index 00000000..fdb49cc0 --- /dev/null +++ b/assets/js/efd4b15a.2d7c06d8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[891],{6556:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>p,frontMatter:()=>o,metadata:()=>a,toc:()=>l});var t=i(5893),r=i(1151);const o={sidebar_position:4},s="Handling Server Errors",a={id:"building-applications/handling-errors",title:"Handling Server Errors",description:"When building applications with the Groundlight SDK, you may encounter server errors during API calls. This page covers how to handle such errors and build robust code that can gracefully handle exceptions.",source:"@site/docs/building-applications/5-handling-errors.md",sourceDirName:"building-applications",slug:"/building-applications/handling-errors",permalink:"/python-sdk/docs/building-applications/handling-errors",draft:!1,unlisted:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/building-applications/5-handling-errors.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Confidence Levels",permalink:"/python-sdk/docs/building-applications/managing-confidence"},next:{title:"Asynchronous Queries",permalink:"/python-sdk/docs/building-applications/async-queries"}},c={},l=[{value:"Handling ApiException",id:"handling-apiexception",level:2},{value:"Best Practices for Handling Exceptions",id:"best-practices-for-handling-exceptions",level:2},{value:"Catch Specific Exceptions",id:"catch-specific-exceptions",level:3},{value:"Use Custom Exception Classes",id:"use-custom-exception-classes",level:3},{value:"Log Exceptions",id:"log-exceptions",level:3},{value:"Implement Retry Logic",id:"implement-retry-logic",level:3},{value:"Handle Exceptions Gracefully",id:"handle-exceptions-gracefully",level:3},{value:"Test Your Error Handling",id:"test-your-error-handling",level:3}];function d(e){const n={code:"code",h1:"h1",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,r.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"handling-server-errors",children:"Handling Server Errors"}),"\n",(0,t.jsx)(n.p,{children:"When building applications with the Groundlight SDK, you may encounter server errors during API calls. This page covers how to handle such errors and build robust code that can gracefully handle exceptions."}),"\n",(0,t.jsx)(n.h2,{id:"handling-apiexception",children:"Handling ApiException"}),"\n",(0,t.jsxs)(n.p,{children:["If there is an HTTP error during an API call, the SDK will raise an ",(0,t.jsx)(n.code,{children:"ApiException"}),". You can access different metadata from that exception:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",metastring:"notest",children:'import traceback\nfrom groundlight import ApiException, Groundlight\n\ngl = Groundlight()\ntry:\n d = gl.get_or_create_detector(\n "Road Checker", \n "Is the site access road blocked?")\n iq = gl.submit_image_query(d, get_image(), wait=60)\nexcept ApiException as e:\n # Print a traceback for debugging\n traceback.print_exc()\n\n # e.reason contains a textual description of the error\n print(f"Error reason: {e.reason}")\n\n # e.status contains the HTTP status code\n print(f"HTTP status code: {e.status}")\n\n # Common HTTP status codes:\n # 400 Bad Request: The request was invalid or malformed\n # 401 Unauthorized: Your GROUNDLIGHT_API_TOKEN is missing or invalid\n # 403 Forbidden: The request is not allowed due to insufficient permissions\n # 404 Not Found: The requested resource was not found\n # 429 Too Many Requests: The rate limit for the API has been exceeded\n # 500 Internal Server Error: An error occurred on the server side\n'})}),"\n",(0,t.jsx)(n.h2,{id:"best-practices-for-handling-exceptions",children:"Best Practices for Handling Exceptions"}),"\n",(0,t.jsx)(n.p,{children:"When working with the Groundlight SDK, follow these best practices to handle exceptions and build robust code:"}),"\n",(0,t.jsx)(n.h3,{id:"catch-specific-exceptions",children:"Catch Specific Exceptions"}),"\n",(0,t.jsxs)(n.p,{children:["Catch only the specific exceptions that you expect to be raised, such as ",(0,t.jsx)(n.code,{children:"ApiException"}),". Avoid catching broad exceptions like ",(0,t.jsx)(n.code,{children:"Exception"}),", as it may make debugging difficult and obscure other unrelated issues."]}),"\n",(0,t.jsx)(n.h3,{id:"use-custom-exception-classes",children:"Use Custom Exception Classes"}),"\n",(0,t.jsx)(n.p,{children:"Consider creating custom exception classes for your application-specific errors. This can help you differentiate between errors originating from the Groundlight SDK and those from your application."}),"\n",(0,t.jsx)(n.h3,{id:"log-exceptions",children:"Log Exceptions"}),"\n",(0,t.jsx)(n.p,{children:"Log exceptions with appropriate log levels (e.g., error, warning, etc.) and include relevant context information. This will help you debug issues more effectively and monitor the health of your application."}),"\n",(0,t.jsx)(n.h3,{id:"implement-retry-logic",children:"Implement Retry Logic"}),"\n",(0,t.jsx)(n.p,{children:"When handling exceptions, implement retry logic with exponential backoff for transient errors, such as network issues or rate-limiting. This can help your application recover from temporary issues without manual intervention."}),"\n",(0,t.jsx)(n.h3,{id:"handle-exceptions-gracefully",children:"Handle Exceptions Gracefully"}),"\n",(0,t.jsx)(n.p,{children:"In addition to logging exceptions, handle them gracefully to ensure that your application remains functional despite errors. This might include displaying an error message to users or falling back to a default behavior."}),"\n",(0,t.jsx)(n.h3,{id:"test-your-error-handling",children:"Test Your Error Handling"}),"\n",(0,t.jsx)(n.p,{children:"Write tests to ensure that your error handling works as expected. This can help you catch issues early and ensure that your application can handle errors gracefully in production."}),"\n",(0,t.jsx)(n.p,{children:"By following these best practices, you can create robust and resilient applications that can handle server errors and other exceptions when using the Groundlight SDK."})]})}function p(e={}){const{wrapper:n}={...(0,r.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},1151:(e,n,i)=>{i.d(n,{Z:()=>a,a:()=>s});var t=i(7294);const r={},o=t.createContext(r);function s(e){const n=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),t.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/efd4b15a.d1dfa5ea.js b/assets/js/efd4b15a.d1dfa5ea.js deleted file mode 100644 index ed5603d1..00000000 --- a/assets/js/efd4b15a.d1dfa5ea.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[891],{3905:(e,n,t)=>{t.d(n,{Zo:()=>p,kt:()=>g});var r=t(7294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function a(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?o(Object(t),!0).forEach((function(n){i(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):o(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function s(e,n){if(null==e)return{};var t,r,i=function(e,n){if(null==e)return{};var t,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)t=o[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var l=r.createContext({}),c=function(e){var n=r.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):a(a({},n),e)),t},p=function(e){var n=c(e.components);return r.createElement(l.Provider,{value:n},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},h=r.forwardRef((function(e,n){var t=e.components,i=e.mdxType,o=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),u=c(t),h=i,g=u["".concat(l,".").concat(h)]||u[h]||d[h]||o;return t?r.createElement(g,a(a({ref:n},p),{},{components:t})):r.createElement(g,a({ref:n},p))}));function g(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var o=t.length,a=new Array(o);a[0]=h;var s={};for(var l in n)hasOwnProperty.call(n,l)&&(s[l]=n[l]);s.originalType=e,s[u]="string"==typeof e?e:i,a[1]=s;for(var c=2;c<o;c++)a[c]=t[c];return r.createElement.apply(null,a)}return r.createElement.apply(null,t)}h.displayName="MDXCreateElement"},6385:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var r=t(7462),i=(t(7294),t(3905));const o={sidebar_position:4},a="Handling Server Errors",s={unversionedId:"building-applications/handling-errors",id:"building-applications/handling-errors",title:"Handling Server Errors",description:"When building applications with the Groundlight SDK, you may encounter server errors during API calls. This page covers how to handle such errors and build robust code that can gracefully handle exceptions.",source:"@site/docs/building-applications/5-handling-errors.md",sourceDirName:"building-applications",slug:"/building-applications/handling-errors",permalink:"/python-sdk/docs/building-applications/handling-errors",draft:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/building-applications/5-handling-errors.md",tags:[],version:"current",sidebarPosition:4,frontMatter:{sidebar_position:4},sidebar:"tutorialSidebar",previous:{title:"Confidence Levels",permalink:"/python-sdk/docs/building-applications/managing-confidence"},next:{title:"Asynchronous Queries",permalink:"/python-sdk/docs/building-applications/async-queries"}},l={},c=[{value:"Handling ApiException",id:"handling-apiexception",level:2},{value:"Best Practices for Handling Exceptions",id:"best-practices-for-handling-exceptions",level:2},{value:"Catch Specific Exceptions",id:"catch-specific-exceptions",level:3},{value:"Use Custom Exception Classes",id:"use-custom-exception-classes",level:3},{value:"Log Exceptions",id:"log-exceptions",level:3},{value:"Implement Retry Logic",id:"implement-retry-logic",level:3},{value:"Handle Exceptions Gracefully",id:"handle-exceptions-gracefully",level:3},{value:"Test Your Error Handling",id:"test-your-error-handling",level:3}],p={toc:c},u="wrapper";function d(e){let{components:n,...t}=e;return(0,i.kt)(u,(0,r.Z)({},p,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"handling-server-errors"},"Handling Server Errors"),(0,i.kt)("p",null,"When building applications with the Groundlight SDK, you may encounter server errors during API calls. This page covers how to handle such errors and build robust code that can gracefully handle exceptions."),(0,i.kt)("h2",{id:"handling-apiexception"},"Handling ApiException"),(0,i.kt)("p",null,"If there is an HTTP error during an API call, the SDK will raise an ",(0,i.kt)("inlineCode",{parentName:"p"},"ApiException"),". You can access different metadata from that exception:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-python",metastring:"notest",notest:!0},'import traceback\nfrom groundlight import ApiException, Groundlight\n\ngl = Groundlight()\ntry:\n d = gl.get_or_create_detector(\n "Road Checker", \n "Is the site access road blocked?")\n iq = gl.submit_image_query(d, get_image(), wait=60)\nexcept ApiException as e:\n # Print a traceback for debugging\n traceback.print_exc()\n\n # e.reason contains a textual description of the error\n print(f"Error reason: {e.reason}")\n\n # e.status contains the HTTP status code\n print(f"HTTP status code: {e.status}")\n\n # Common HTTP status codes:\n # 400 Bad Request: The request was invalid or malformed\n # 401 Unauthorized: Your GROUNDLIGHT_API_TOKEN is missing or invalid\n # 403 Forbidden: The request is not allowed due to insufficient permissions\n # 404 Not Found: The requested resource was not found\n # 429 Too Many Requests: The rate limit for the API has been exceeded\n # 500 Internal Server Error: An error occurred on the server side\n')),(0,i.kt)("h2",{id:"best-practices-for-handling-exceptions"},"Best Practices for Handling Exceptions"),(0,i.kt)("p",null,"When working with the Groundlight SDK, follow these best practices to handle exceptions and build robust code:"),(0,i.kt)("h3",{id:"catch-specific-exceptions"},"Catch Specific Exceptions"),(0,i.kt)("p",null,"Catch only the specific exceptions that you expect to be raised, such as ",(0,i.kt)("inlineCode",{parentName:"p"},"ApiException"),". Avoid catching broad exceptions like ",(0,i.kt)("inlineCode",{parentName:"p"},"Exception"),", as it may make debugging difficult and obscure other unrelated issues."),(0,i.kt)("h3",{id:"use-custom-exception-classes"},"Use Custom Exception Classes"),(0,i.kt)("p",null,"Consider creating custom exception classes for your application-specific errors. This can help you differentiate between errors originating from the Groundlight SDK and those from your application."),(0,i.kt)("h3",{id:"log-exceptions"},"Log Exceptions"),(0,i.kt)("p",null,"Log exceptions with appropriate log levels (e.g., error, warning, etc.) and include relevant context information. This will help you debug issues more effectively and monitor the health of your application."),(0,i.kt)("h3",{id:"implement-retry-logic"},"Implement Retry Logic"),(0,i.kt)("p",null,"When handling exceptions, implement retry logic with exponential backoff for transient errors, such as network issues or rate-limiting. This can help your application recover from temporary issues without manual intervention."),(0,i.kt)("h3",{id:"handle-exceptions-gracefully"},"Handle Exceptions Gracefully"),(0,i.kt)("p",null,"In addition to logging exceptions, handle them gracefully to ensure that your application remains functional despite errors. This might include displaying an error message to users or falling back to a default behavior."),(0,i.kt)("h3",{id:"test-your-error-handling"},"Test Your Error Handling"),(0,i.kt)("p",null,"Write tests to ensure that your error handling works as expected. This can help you catch issues early and ensure that your application can handle errors gracefully in production."),(0,i.kt)("p",null,"By following these best practices, you can create robust and resilient applications that can handle server errors and other exceptions when using the Groundlight SDK."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f705f88e.3d4f3b5d.js b/assets/js/f705f88e.3d4f3b5d.js deleted file mode 100644 index 2e0af9cf..00000000 --- a/assets/js/f705f88e.3d4f3b5d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[537],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function a(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=r.createContext({}),u=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},p=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},g=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,s=e.parentName,p=a(e,["components","mdxType","originalType","parentName"]),d=u(n),g=i,h=d["".concat(s,".").concat(g)]||d[g]||c[g]||o;return n?r.createElement(h,l(l({ref:t},p),{},{components:n})):r.createElement(h,l({ref:t},p))}));function h(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,l=new Array(o);l[0]=g;var a={};for(var s in t)hasOwnProperty.call(t,s)&&(a[s]=t[s]);a.originalType=e,a[d]="string"==typeof e?e:i,l[1]=a;for(var u=2;u<o;u++)l[u]=n[u];return r.createElement.apply(null,l)}return r.createElement.apply(null,n)}g.displayName="MDXCreateElement"},9518:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>c,frontMatter:()=>o,metadata:()=>a,toc:()=>u});var r=n(7462),i=(n(7294),n(3905));const o={},l="Installing on NVIDIA Jetson",a={unversionedId:"installation/nvidia-jetson",id:"installation/nvidia-jetson",title:"Installing on NVIDIA Jetson",description:"This guide will help you install the Groundlight SDK on NVIDIA Jetson devices. The Groundlight SDK requires Python 3.7 or higher.",source:"@site/docs/installation/5-nvidia-jetson.md",sourceDirName:"installation",slug:"/installation/nvidia-jetson",permalink:"/python-sdk/docs/installation/nvidia-jetson",draft:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/installation/5-nvidia-jetson.md",tags:[],version:"current",sidebarPosition:5,frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Installing on Raspberry Pi",permalink:"/python-sdk/docs/installation/raspberry-pi"},next:{title:"Optional libraries",permalink:"/python-sdk/docs/installation/optional-libraries"}},s={},u=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Basic Installation",id:"basic-installation",level:2},{value:"Installing Groundlight SDK",id:"installing-groundlight-sdk",level:3},{value:"Using RTSP Streams",id:"using-rtsp-streams",level:2},{value:"Sample application",id:"sample-application",level:2},{value:"Ready to go!",id:"ready-to-go",level:2}],p={toc:u},d="wrapper";function c(e){let{components:t,...n}=e;return(0,i.kt)(d,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"installing-on-nvidia-jetson"},"Installing on NVIDIA Jetson"),(0,i.kt)("p",null,"This guide will help you install the Groundlight SDK on NVIDIA Jetson devices. The Groundlight SDK requires Python 3.7 or higher."),(0,i.kt)("h2",{id:"prerequisites"},"Prerequisites"),(0,i.kt)("p",null,"Ensure that you have the following installed on your NVIDIA Jetson:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Python 3.7 or higher"),(0,i.kt)("li",{parentName:"ul"},"pip (Python package installer)")),(0,i.kt)("h2",{id:"basic-installation"},"Basic Installation"),(0,i.kt)("p",null,"Assuming you have Python 3.7 or higher installed on your NVIDIA Jetson, you can proceed with the following steps to install or upgrade the Groundlight SDK:"),(0,i.kt)("h3",{id:"installing-groundlight-sdk"},"Installing Groundlight SDK"),(0,i.kt)("p",null,"To install the Groundlight SDK using pip, run the following command in your terminal:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"pip3 install groundlight\n")),(0,i.kt)("p",null,"An ARM-compatible version will automatically get installed. The Groundlight SDK is now installed and ready for use."),(0,i.kt)("h2",{id:"using-rtsp-streams"},"Using RTSP Streams"),(0,i.kt)("p",null,"If you have ",(0,i.kt)("inlineCode",{parentName:"p"},"docker")," installed on your NVIDIA Jetson, you can even just run"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"docker run groundlight/stream\n")),(0,i.kt)("p",null,"as we publish an ARM version of our streaming application to Docker Hub."),(0,i.kt)("h2",{id:"sample-application"},"Sample application"),(0,i.kt)("p",null,"For a complete end-to-end example of running on an NVIDIA Jetson, see ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/groundlight/raspberry-pi-door-lock"},"this GitHub repo"),"."),(0,i.kt)("h2",{id:"ready-to-go"},"Ready to go!"),(0,i.kt)("p",null,"You're now ready to start using the Groundlight SDK in your projects. For more information on using the SDK, refer to the ",(0,i.kt)("a",{parentName:"p",href:"/docs/getting-started/api-tokens"},"API Tokens")," and [Building Applications"))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f705f88e.7799550b.js b/assets/js/f705f88e.7799550b.js new file mode 100644 index 00000000..6f2c30b7 --- /dev/null +++ b/assets/js/f705f88e.7799550b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[537],{4440:(n,e,i)=>{i.r(e),i.d(e,{assets:()=>a,contentTitle:()=>l,default:()=>c,frontMatter:()=>o,metadata:()=>r,toc:()=>d});var t=i(5893),s=i(1151);const o={},l="Installing on NVIDIA Jetson",r={id:"installation/nvidia-jetson",title:"Installing on NVIDIA Jetson",description:"This guide will help you install the Groundlight SDK on NVIDIA Jetson devices. The Groundlight SDK requires Python 3.7 or higher.",source:"@site/docs/installation/5-nvidia-jetson.md",sourceDirName:"installation",slug:"/installation/nvidia-jetson",permalink:"/python-sdk/docs/installation/nvidia-jetson",draft:!1,unlisted:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/installation/5-nvidia-jetson.md",tags:[],version:"current",sidebarPosition:5,frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Installing on Raspberry Pi",permalink:"/python-sdk/docs/installation/raspberry-pi"},next:{title:"Optional libraries",permalink:"/python-sdk/docs/installation/optional-libraries"}},a={},d=[{value:"Prerequisites",id:"prerequisites",level:2},{value:"Basic Installation",id:"basic-installation",level:2},{value:"Installing Groundlight SDK",id:"installing-groundlight-sdk",level:3},{value:"Using RTSP Streams",id:"using-rtsp-streams",level:2},{value:"Sample application",id:"sample-application",level:2},{value:"Ready to go!",id:"ready-to-go",level:2}];function h(n){const e={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.a)(),...n.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(e.h1,{id:"installing-on-nvidia-jetson",children:"Installing on NVIDIA Jetson"}),"\n",(0,t.jsx)(e.p,{children:"This guide will help you install the Groundlight SDK on NVIDIA Jetson devices. The Groundlight SDK requires Python 3.7 or higher."}),"\n",(0,t.jsx)(e.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,t.jsx)(e.p,{children:"Ensure that you have the following installed on your NVIDIA Jetson:"}),"\n",(0,t.jsxs)(e.ul,{children:["\n",(0,t.jsx)(e.li,{children:"Python 3.7 or higher"}),"\n",(0,t.jsx)(e.li,{children:"pip (Python package installer)"}),"\n"]}),"\n",(0,t.jsx)(e.h2,{id:"basic-installation",children:"Basic Installation"}),"\n",(0,t.jsx)(e.p,{children:"Assuming you have Python 3.7 or higher installed on your NVIDIA Jetson, you can proceed with the following steps to install or upgrade the Groundlight SDK:"}),"\n",(0,t.jsx)(e.h3,{id:"installing-groundlight-sdk",children:"Installing Groundlight SDK"}),"\n",(0,t.jsx)(e.p,{children:"To install the Groundlight SDK using pip, run the following command in your terminal:"}),"\n",(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:"language-bash",children:"pip3 install groundlight\n"})}),"\n",(0,t.jsx)(e.p,{children:"An ARM-compatible version will automatically get installed. The Groundlight SDK is now installed and ready for use."}),"\n",(0,t.jsx)(e.h2,{id:"using-rtsp-streams",children:"Using RTSP Streams"}),"\n",(0,t.jsxs)(e.p,{children:["If you have ",(0,t.jsx)(e.code,{children:"docker"})," installed on your NVIDIA Jetson, you can even just run"]}),"\n",(0,t.jsx)(e.pre,{children:(0,t.jsx)(e.code,{className:"language-bash",children:"docker run groundlight/stream\n"})}),"\n",(0,t.jsx)(e.p,{children:"as we publish an ARM version of our streaming application to Docker Hub."}),"\n",(0,t.jsx)(e.h2,{id:"sample-application",children:"Sample application"}),"\n",(0,t.jsxs)(e.p,{children:["For a complete end-to-end example of running on an NVIDIA Jetson, see ",(0,t.jsx)(e.a,{href:"https://github.com/groundlight/raspberry-pi-door-lock",children:"this GitHub repo"}),"."]}),"\n",(0,t.jsx)(e.h2,{id:"ready-to-go",children:"Ready to go!"}),"\n",(0,t.jsxs)(e.p,{children:["You're now ready to start using the Groundlight SDK in your projects. For more information on using the SDK, refer to the ",(0,t.jsx)(e.a,{href:"/docs/getting-started/api-tokens",children:"API Tokens"})," and [Building Applications"]})]})}function c(n={}){const{wrapper:e}={...(0,s.a)(),...n.components};return e?(0,t.jsx)(e,{...n,children:(0,t.jsx)(h,{...n})}):h(n)}},1151:(n,e,i)=>{i.d(e,{Z:()=>r,a:()=>l});var t=i(7294);const s={},o=t.createContext(s);function l(n){const e=t.useContext(o);return t.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function r(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(s):n.components||s:l(n.components),t.createElement(o.Provider,{value:e},n.children)}}}]); \ No newline at end of file diff --git a/assets/js/fc921a7a.37e48ff7.js b/assets/js/fc921a7a.37e48ff7.js new file mode 100644 index 00000000..d9e9c432 --- /dev/null +++ b/assets/js/fc921a7a.37e48ff7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[124],{7185:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>c,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var i=n(5893),o=n(1151);const r={},s="Writing Queries",a={id:"getting-started/writing-queries",title:"Writing Queries",description:"Introduction",source:"@site/docs/getting-started/2-writing-queries.md",sourceDirName:"getting-started",slug:"/getting-started/writing-queries",permalink:"/python-sdk/docs/getting-started/writing-queries",draft:!1,unlisted:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/getting-started/2-writing-queries.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"API Tokens",permalink:"/python-sdk/docs/getting-started/api-tokens"},next:{title:"A Serious Example: Retail Analytics",permalink:"/python-sdk/docs/getting-started/retail-analytics"}},l={},d=[{value:"Introduction",id:"introduction",level:2},{value:"Examples",id:"examples",level:2},{value:"\u2705 Are there any cardboard boxes on the conveyor belt?",id:"-are-there-any-cardboard-boxes-on-the-conveyor-belt",level:3},{value:"\ud83d\udfe1 Is the trash can full?",id:"-is-the-trash-can-full",level:3},{value:"\u2705 Is the garage door completely closed?",id:"-is-the-garage-door-completely-closed",level:3},{value:"\ud83d\udfe1 Is the weather nice out?",id:"-is-the-weather-nice-out",level:3},{value:"\u274c Where is the thing?",id:"-where-is-the-thing",level:3},{value:"\ud83d\udfe1 Is the factory floor clean and organized?",id:"-is-the-factory-floor-clean-and-organized",level:3}];function h(e){const t={admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,o.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h1,{id:"writing-queries",children:"Writing Queries"}),"\n",(0,i.jsx)(t.h2,{id:"introduction",children:"Introduction"}),"\n",(0,i.jsxs)(t.p,{children:["With Groundlight's ",(0,i.jsx)(t.code,{children:"detectors"}),', you can ask binary questions about images \u2014 i.e., the answer\nshould be unambiguously "YES" or "NO". If you ask an ambiguous question, you may receive an "UNSURE"\nresponse.']}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-python",metastring:"notest",children:'detector = gl.get_or_create_detector(\n name="Conveyor belt boxes",\n query="Are there any cardboard boxes on the conveyor belt?"\n)\nimage_query = gl.submit_image_query(detector=detector, image=some_image)\n\n# The SDK can return "YES" or "NO" (or "UNSURE")\nprint(f"The answer is {image_query.result.label}")\n'})}),"\n",(0,i.jsx)(t.p,{children:"So, what makes a good question? Let's look at a few good \u2705, moderate \ud83d\udfe1, and bad \u274c examples!"}),"\n",(0,i.jsx)(t.h2,{id:"examples",children:"Examples"}),"\n",(0,i.jsx)(t.h3,{id:"-are-there-any-cardboard-boxes-on-the-conveyor-belt",children:"\u2705 Are there any cardboard boxes on the conveyor belt?"}),"\n",(0,i.jsx)(t.p,{children:'This question is binary and can be answered unambiguously with a simple "YES" or "NO" based on the\nimage content.'}),"\n",(0,i.jsx)(t.h3,{id:"-is-the-trash-can-full",children:"\ud83d\udfe1 Is the trash can full?"}),"\n",(0,i.jsx)(t.p,{children:'This question is okay, but it could be rephrased to be more specific. For example, "Is the black\ntrash can more than 80% full?"'}),"\n",(0,i.jsx)(t.admonition,{type:"tip",children:(0,i.jsx)(t.p,{children:'With Groundlight, your questions may be routed to a machine learning model or a human reviewer. One\nway to improve your questions is to think, "If I saw this question for the first time, would I know\nprecisely what the person was trying to convey?"'})}),"\n",(0,i.jsx)(t.h3,{id:"-is-the-garage-door-completely-closed",children:"\u2705 Is the garage door completely closed?"}),"\n",(0,i.jsx)(t.p,{children:'The query is very specific about what "YES" means. According to this query, any slight / partial\nopening would be considered "NO".'}),"\n",(0,i.jsx)(t.h3,{id:"-is-the-weather-nice-out",children:"\ud83d\udfe1 Is the weather nice out?"}),"\n",(0,i.jsx)(t.p,{children:'This question is somewhat ambiguous. Different people may have different opinions on what\nis nice weather. Instead, you might ask "Can you see any clouds in the sky?"'}),"\n",(0,i.jsx)(t.h3,{id:"-where-is-the-thing",children:"\u274c Where is the thing?"}),"\n",(0,i.jsx)(t.p,{children:'This is not a binary question \u2014 "YES" and "NO" don\'t make sense in this context. Also, it\'s\nnot clear what the "thing" refers to.'}),"\n",(0,i.jsx)(t.h3,{id:"-is-the-factory-floor-clean-and-organized",children:"\ud83d\udfe1 Is the factory floor clean and organized?"}),"\n",(0,i.jsx)(t.p,{children:'While this question is binary, "cleanliness" can be somewhat subjective. An improved version could\nbe: "Are there any visible spills or clutter on the factory floor?"'})]})}function c(e={}){const{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>a,a:()=>s});var i=n(7294);const o={},r=i.createContext(o);function s(e){const t=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),i.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/fc921a7a.f2b08d78.js b/assets/js/fc921a7a.f2b08d78.js deleted file mode 100644 index 18c5ee8e..00000000 --- a/assets/js/fc921a7a.f2b08d78.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb=self.webpackChunkweb||[]).push([[124],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>g});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),d=c(n),p=o,g=d["".concat(l,".").concat(p)]||d[p]||h[p]||i;return n?r.createElement(g,a(a({ref:t},u),{},{components:n})):r.createElement(g,a({ref:t},u))}));function g(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=p;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[d]="string"==typeof e?e:o,a[1]=s;for(var c=2;c<i;c++)a[c]=n[c];return r.createElement.apply(null,a)}return r.createElement.apply(null,n)}p.displayName="MDXCreateElement"},974:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var r=n(7462),o=(n(7294),n(3905));const i={},a="Writing Queries",s={unversionedId:"getting-started/writing-queries",id:"getting-started/writing-queries",title:"Writing Queries",description:"Introduction",source:"@site/docs/getting-started/2-writing-queries.md",sourceDirName:"getting-started",slug:"/getting-started/writing-queries",permalink:"/python-sdk/docs/getting-started/writing-queries",draft:!1,editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/docs/getting-started/2-writing-queries.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"API Tokens",permalink:"/python-sdk/docs/getting-started/api-tokens"},next:{title:"A Serious Example: Retail Analytics",permalink:"/python-sdk/docs/getting-started/retail-analytics"}},l={},c=[{value:"Introduction",id:"introduction",level:2},{value:"Examples",id:"examples",level:2},{value:"\u2705 Are there any cardboard boxes on the conveyor belt?",id:"-are-there-any-cardboard-boxes-on-the-conveyor-belt",level:3},{value:"\ud83d\udfe1 Is the trash can full?",id:"-is-the-trash-can-full",level:3},{value:"\u2705 Is the garage door completely closed?",id:"-is-the-garage-door-completely-closed",level:3},{value:"\ud83d\udfe1 Is the weather nice out?",id:"-is-the-weather-nice-out",level:3},{value:"\u274c Where is the thing?",id:"-where-is-the-thing",level:3},{value:"\ud83d\udfe1 Is the factory floor clean and organized?",id:"-is-the-factory-floor-clean-and-organized",level:3}],u={toc:c},d="wrapper";function h(e){let{components:t,...n}=e;return(0,o.kt)(d,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"writing-queries"},"Writing Queries"),(0,o.kt)("h2",{id:"introduction"},"Introduction"),(0,o.kt)("p",null,"With Groundlight's ",(0,o.kt)("inlineCode",{parentName:"p"},"detectors"),", you can ask binary questions about images ","\u2014",' i.e., the answer\nshould be unambiguously "YES" or "NO". If you ask an ambiguous question, you may receive an "UNSURE"\nresponse.'),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-python",metastring:"notest",notest:!0},'detector = gl.get_or_create_detector(\n name="Conveyor belt boxes",\n query="Are there any cardboard boxes on the conveyor belt?"\n)\nimage_query = gl.submit_image_query(detector=detector, image=some_image)\n\n# The SDK can return "YES" or "NO" (or "UNSURE")\nprint(f"The answer is {image_query.result.label}")\n')),(0,o.kt)("p",null,"So, what makes a good question? Let's look at a few good \u2705, moderate \ud83d\udfe1, and bad \u274c examples!"),(0,o.kt)("h2",{id:"examples"},"Examples"),(0,o.kt)("h3",{id:"-are-there-any-cardboard-boxes-on-the-conveyor-belt"},"\u2705 Are there any cardboard boxes on the conveyor belt?"),(0,o.kt)("p",null,'This question is binary and can be answered unambiguously with a simple "YES" or "NO" based on the\nimage content.'),(0,o.kt)("h3",{id:"-is-the-trash-can-full"},"\ud83d\udfe1 Is the trash can full?"),(0,o.kt)("p",null,'This question is okay, but it could be rephrased to be more specific. For example, "Is the black\ntrash can more than 80% full?"'),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},'With Groundlight, your questions may be routed to a machine learning model or a human reviewer. One\nway to improve your questions is to think, "If I saw this question for the first time, would I know\nprecisely what the person was trying to convey?"')),(0,o.kt)("h3",{id:"-is-the-garage-door-completely-closed"},"\u2705 Is the garage door completely closed?"),(0,o.kt)("p",null,'The query is very specific about what "YES" means. According to this query, any slight / partial\nopening would be considered "NO".'),(0,o.kt)("h3",{id:"-is-the-weather-nice-out"},"\ud83d\udfe1 Is the weather nice out?"),(0,o.kt)("p",null,'This question is somewhat ambiguous. Different people may have different opinions on what\nis nice weather. Instead, you might ask "Can you see any clouds in the sky?"'),(0,o.kt)("h3",{id:"-where-is-the-thing"},"\u274c Where is the thing?"),(0,o.kt)("p",null,"This is not a binary question ","\u2014",' "YES" and "NO" don\'t make sense in this context. Also, it\'s\nnot clear what the "thing" refers to.'),(0,o.kt)("h3",{id:"-is-the-factory-floor-clean-and-organized"},"\ud83d\udfe1 Is the factory floor clean and organized?"),(0,o.kt)("p",null,'While this question is binary, "cleanliness" can be somewhat subjective. An improved version could\nbe: "Are there any visible spills or clutter on the factory floor?"'))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/main.5bb0703e.js b/assets/js/main.5bb0703e.js deleted file mode 100644 index 9bc8721d..00000000 --- a/assets/js/main.5bb0703e.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.5bb0703e.js.LICENSE.txt */ -(self.webpackChunkweb=self.webpackChunkweb||[]).push([[179],{723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7294),a=n(7462),o=n(8356),i=n.n(o),l=n(6887);const s={"004649c5":[()=>n.e(342).then(n.bind(n,896)),"@site/docs/building-applications/2-grabbing-images.md",896],"0b4c8eac":[()=>n.e(67).then(n.bind(n,7474)),"@site/docs/installation/4-raspberry-pi.md",7474],"0cd01ddf":[()=>n.e(240).then(n.bind(n,315)),"@site/docs/iot/iot.md",315],"0fd99c0f":[()=>n.e(136).then(n.bind(n,6392)),"@site/docs/building-applications/3-working-with-detectors.md",6392],"14fdb7e5":[()=>n.e(355).then(n.bind(n,3983)),"@site/docs/getting-started/3-retail-analytics.md",3983],17896441:[()=>Promise.all([n.e(532),n.e(272),n.e(918)]).then(n.bind(n,903)),"@theme/DocItem",903],"1a4e3797":[()=>Promise.all([n.e(532),n.e(920)]).then(n.bind(n,2027)),"@theme/SearchPage",2027],"1b28ffce":[()=>n.e(518).then(n.bind(n,5069)),"@site/docs/building-applications/8-industrial.md",5069],"1be78505":[()=>Promise.all([n.e(532),n.e(514)]).then(n.bind(n,9963)),"@theme/DocPage",9963],"1df93b7f":[()=>Promise.all([n.e(532),n.e(237)]).then(n.bind(n,8391)),"@site/src/pages/index.tsx",8391],"1e924268":[()=>n.e(614).then(n.bind(n,4686)),"@site/docs/installation/installation.md",4686],"1f391b9e":[()=>Promise.all([n.e(532),n.e(272),n.e(85)]).then(n.bind(n,4247)),"@theme/MDXPage",4247],"325ecf53":[()=>n.e(45).then(n.bind(n,2904)),"@site/docs/getting-started/getting-started.mdx",2904],"37fce620":[()=>n.e(871).then(n.bind(n,3542)),"@site/docs/building-applications/1-sample-applications.md",3542],"393be207":[()=>n.e(414).then(n.bind(n,3123)),"@site/src/pages/markdown-page.md",3123],"4178ee1d":[()=>n.e(859).then(n.bind(n,7607)),"@site/docs/api-reference/api-reference.md",7607],"4a1ffe74":[()=>n.e(955).then(n.t.bind(n,3769,19)),"/home/runner/work/python-sdk/python-sdk/docs/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],"530c8fc0":[()=>n.e(642).then(n.bind(n,4481)),"@site/docs/building-applications/building-applications.md",4481],"5747eae1":[()=>n.e(571).then(n.bind(n,3689)),"@site/docs/building-applications/4-managing-confidence.md",3689],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,6809)),"@generated/docusaurus.config",6809],"6662e7aa":[()=>n.e(352).then(n.t.bind(n,2776,19)),"/home/runner/work/python-sdk/python-sdk/docs/.docusaurus/@easyops-cn/docusaurus-search-local/default/plugin-route-context-module-100.json",2776],"7aefb68d":[()=>n.e(201).then(n.bind(n,688)),"@site/docs/getting-started/5-streaming.md",688],"8091dcef":[()=>n.e(100).then(n.bind(n,7143)),"@site/docs/installation/2-macos.md",7143],"8557125a":[()=>n.e(729).then(n.bind(n,4544)),"@site/docs/installation/6-optional-libraries.md",4544],"86aa3e00":[()=>n.e(605).then(n.bind(n,8205)),"@site/docs/installation/1-linux.md",8205],"8c4006d9":[()=>n.e(894).then(n.t.bind(n,5745,19)),"/home/runner/work/python-sdk/python-sdk/docs/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",5745],"8c48aa69":[()=>n.e(502).then(n.bind(n,1343)),"@site/docs/building-applications/7-edge.md",1343],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],ad6b0f9d:[()=>n.e(168).then(n.bind(n,7095)),"@site/docs/installation/7-monitoring-notification-server.md",7095],c5b38f9e:[()=>n.e(863).then(n.bind(n,2905)),"@site/docs/getting-started/1-api-tokens.md",2905],cb33c72e:[()=>n.e(855).then(n.bind(n,6597)),"@site/docs/building-applications/6-async-queries.md",6597],d5ec6805:[()=>n.e(986).then(n.bind(n,4444)),"@site/docs/installation/3-windows.md",4444],ddfecd50:[()=>n.e(609).then(n.bind(n,6738)),"@site/docs/getting-started/4-dog-on-couch.md",6738],efd4b15a:[()=>n.e(891).then(n.bind(n,6385)),"@site/docs/building-applications/5-handling-errors.md",6385],f705f88e:[()=>n.e(537).then(n.bind(n,9518)),"@site/docs/installation/5-nvidia-jetson.md",9518],fc921a7a:[()=>n.e(124).then(n.bind(n,974)),"@site/docs/getting-started/2-writing-queries.md",974]};function u(e){let{error:t,retry:n,pastDelay:a}=e;return t?r.createElement("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"}},r.createElement("p",null,String(t)),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},"Retry"))):a?r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},r.createElement("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb"},r.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"8"},r.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}var c=n(9670),d=n(226);function p(e,t){if("*"===e)return i()({loading:u,loader:()=>n.e(972).then(n.bind(n,4972)),modules:["@theme/NotFound"],webpack:()=>[4972],render(e,t){const n=e.default;return r.createElement(d.z,{value:{plugin:{name:"native",id:"default"}}},r.createElement(n,t))}});const o=l[`${e}-${t}`],p={},f=[],h=[],m=(0,c.Z)(o);return Object.entries(m).forEach((e=>{let[t,n]=e;const r=s[n];r&&(p[t]=r[0],f.push(r[1]),h.push(r[2]))})),i().Map({loading:u,loader:p,modules:f,webpack:()=>h,render(t,n){const i=JSON.parse(JSON.stringify(o));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let o=i;const l=n.split(".");l.slice(0,-1).forEach((e=>{o=o[e]})),o[l[l.length-1]]=a}));const l=i.__comp;delete i.__comp;const s=i.__context;return delete i.__context,r.createElement(d.z,{value:s},r.createElement(l,(0,a.Z)({},i,n)))}})}const f=[{path:"/python-sdk/markdown-page",component:p("/python-sdk/markdown-page","6f0"),exact:!0},{path:"/python-sdk/search",component:p("/python-sdk/search","619"),exact:!0},{path:"/python-sdk/docs",component:p("/python-sdk/docs","03b"),routes:[{path:"/python-sdk/docs/api-reference",component:p("/python-sdk/docs/api-reference","092"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/building-applications",component:p("/python-sdk/docs/building-applications","753"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/building-applications/async-queries",component:p("/python-sdk/docs/building-applications/async-queries","e2f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/building-applications/edge",component:p("/python-sdk/docs/building-applications/edge","859"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/building-applications/grabbing-images",component:p("/python-sdk/docs/building-applications/grabbing-images","ccc"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/building-applications/handling-errors",component:p("/python-sdk/docs/building-applications/handling-errors","b6f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/building-applications/industrial",component:p("/python-sdk/docs/building-applications/industrial","39d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/building-applications/managing-confidence",component:p("/python-sdk/docs/building-applications/managing-confidence","c5f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/building-applications/sample-applications",component:p("/python-sdk/docs/building-applications/sample-applications","aef"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/building-applications/working-with-detectors",component:p("/python-sdk/docs/building-applications/working-with-detectors","711"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/getting-started",component:p("/python-sdk/docs/getting-started","23b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/getting-started/api-tokens",component:p("/python-sdk/docs/getting-started/api-tokens","48d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/getting-started/dog-on-couch",component:p("/python-sdk/docs/getting-started/dog-on-couch","7b3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/getting-started/retail-analytics",component:p("/python-sdk/docs/getting-started/retail-analytics","4ae"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/getting-started/streaming",component:p("/python-sdk/docs/getting-started/streaming","23e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/getting-started/writing-queries",component:p("/python-sdk/docs/getting-started/writing-queries","35e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/installation",component:p("/python-sdk/docs/installation","905"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/installation/linux",component:p("/python-sdk/docs/installation/linux","027"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/installation/macos",component:p("/python-sdk/docs/installation/macos","ce1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/installation/monitoring-notification-server",component:p("/python-sdk/docs/installation/monitoring-notification-server","1fb"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/installation/nvidia-jetson",component:p("/python-sdk/docs/installation/nvidia-jetson","c38"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/installation/optional-libraries",component:p("/python-sdk/docs/installation/optional-libraries","82b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/installation/raspberry-pi",component:p("/python-sdk/docs/installation/raspberry-pi","4e4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/installation/windows",component:p("/python-sdk/docs/installation/windows","9e5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/iot",component:p("/python-sdk/docs/iot","9e2"),exact:!0,sidebar:"tutorialSidebar"}]},{path:"/python-sdk/",component:p("/python-sdk/","978"),exact:!0},{path:"*",component:p("*")}]},8934:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,t:()=>o});var r=n(7294);const a=r.createContext(!1);function o(e){let{children:t}=e;const[n,o]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{o(!0)}),[]),r.createElement(a.Provider,{value:n},t)}},9383:(e,t,n)=>{"use strict";var r=n(7294),a=n(3935),o=n(3727),i=n(405),l=n(412);const s=[n(2497),n(3310),n(8320),n(2295)];var u=n(723),c=n(6550),d=n(8790);function p(e){let{children:t}=e;return r.createElement(r.Fragment,null,t)}var f=n(7462),h=n(5742),m=n(2263),g=n(4996),v=n(6668),y=n(1944),b=n(4711),w=n(9727),k=n(3320),E=n(197);function S(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,m.Z)(),n=(0,b.l)();return r.createElement(h.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:a}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:a})})),r.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function x(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,m.Z)(),a=function(){const{siteConfig:{url:e}}=(0,m.Z)(),{pathname:t}=(0,c.TH)();return e+(0,g.Z)(t)}(),o=t?`${n}${t}`:a;return r.createElement(h.Z,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function C(){const{i18n:{currentLocale:e}}=(0,m.Z)(),{metadata:t,image:n}=(0,v.L)();return r.createElement(r.Fragment,null,r.createElement(h.Z,null,r.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),r.createElement("body",{className:w.h})),n&&r.createElement(y.d,{image:n}),r.createElement(x,null),r.createElement(S,null),r.createElement(E.Z,{tag:k.HX,locale:e}),r.createElement(h.Z,null,t.map(((e,t)=>r.createElement("meta",(0,f.Z)({key:t},e))))))}const T=new Map;function _(e){if(T.has(e.pathname))return{...e,pathname:T.get(e.pathname)};if((0,d.f)(u.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return T.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return T.set(e.pathname,t),{...e,pathname:t}}var L=n(8934),R=n(8940);function N(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];const a=s.map((t=>{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const A=function(e){let{children:t,location:n,previousLocation:a}=e;return(0,r.useLayoutEffect)((()=>{a!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:a}),N("onRouteDidUpdate",{previousLocation:a,location:n}))}),[a,n]),t};function O(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(u.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class P extends r.Component{constructor(e){super(e),this.previousLocation=void 0,this.routeUpdateCleanupCb=void 0,this.previousLocation=null,this.routeUpdateCleanupCb=l.Z.canUseDOM?N("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=N("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),O(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return r.createElement(A,{previousLocation:this.previousLocation,location:t},r.createElement(c.AW,{location:t,render:()=>e}))}}const I=P,D="docusaurus-base-url-issue-banner-container",M="docusaurus-base-url-issue-banner",F="docusaurus-base-url-issue-banner-suggestion-container",j="__DOCUSAURUS_INSERT_BASEURL_BANNER";function B(e){return`\nwindow['${j}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${j}'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('${D}');\n if (!bannerContainer) {\n return;\n }\n var bannerHtml = ${JSON.stringify(function(e){return`\n<div id="${M}" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">${e}</span> ${"/"===e?" (default value)":""}</p>\n <p>We suggest trying baseUrl = <span id="${F}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n var suggestionContainer = document.getElementById('${F}');\n var actualHomePagePath = window.location.pathname;\n var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n ? actualHomePagePath\n : actualHomePagePath + '/';\n suggestionContainer.innerHTML = suggestedBaseUrl;\n}\n`}function z(){const{siteConfig:{baseUrl:e}}=(0,m.Z)();return(0,r.useLayoutEffect)((()=>{window[j]=!1}),[]),r.createElement(r.Fragment,null,!l.Z.canUseDOM&&r.createElement(h.Z,null,r.createElement("script",null,B(e))),r.createElement("div",{id:D}))}function $(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,m.Z)(),{pathname:n}=(0,c.TH)();return t&&n===e?r.createElement(z,null):null}function U(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:a,localeConfigs:o}}=(0,m.Z)(),i=(0,g.Z)(e),{htmlLang:l,direction:s}=o[a];return r.createElement(h.Z,null,r.createElement("html",{lang:l,dir:s}),r.createElement("title",null,t),r.createElement("meta",{property:"og:title",content:t}),r.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&r.createElement("meta",{name:"robots",content:"noindex, nofollow"}),e&&r.createElement("link",{rel:"icon",href:i}))}var q=n(4763);function H(){const e=(0,d.H)(u.Z),t=(0,c.TH)();return r.createElement(q.Z,null,r.createElement(R.M,null,r.createElement(L.t,null,r.createElement(p,null,r.createElement(U,null),r.createElement(C,null),r.createElement($,null),r.createElement(I,{location:_(t)},e)))))}var G=n(6887);const Q=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var Z=n(9670);const V=new Set,W=new Set,K=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,Y={prefetch(e){if(!(e=>!K()&&!W.has(e)&&!V.has(e))(e))return!1;V.add(e);const t=(0,d.f)(u.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(G).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,Z.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Q(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!K()&&!W.has(e))(e)&&(W.add(e),O(e))},X=Object.freeze(Y);if(l.Z.canUseDOM){window.docusaurus=X;const e=a.hydrate;O(window.location.pathname).then((()=>{e(r.createElement(i.B6,null,r.createElement(o.VK,null,r.createElement(H,null))),document.getElementById("__docusaurus"))}))}},8940:(e,t,n)=>{"use strict";n.d(t,{_:()=>c,M:()=>d});var r=n(7294),a=n(6809);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/python-sdk/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/python-sdk/docs","mainDocId":"getting-started/getting-started","docs":[{"id":"api-reference/redirect","path":"/python-sdk/docs/api-reference/","sidebar":"tutorialSidebar"},{"id":"building-applications/async-queries","path":"/python-sdk/docs/building-applications/async-queries","sidebar":"tutorialSidebar"},{"id":"building-applications/building-applications","path":"/python-sdk/docs/building-applications/","sidebar":"tutorialSidebar"},{"id":"building-applications/edge","path":"/python-sdk/docs/building-applications/edge","sidebar":"tutorialSidebar"},{"id":"building-applications/grabbing-images","path":"/python-sdk/docs/building-applications/grabbing-images","sidebar":"tutorialSidebar"},{"id":"building-applications/handling-errors","path":"/python-sdk/docs/building-applications/handling-errors","sidebar":"tutorialSidebar"},{"id":"building-applications/industrial","path":"/python-sdk/docs/building-applications/industrial","sidebar":"tutorialSidebar"},{"id":"building-applications/managing-confidence","path":"/python-sdk/docs/building-applications/managing-confidence","sidebar":"tutorialSidebar"},{"id":"building-applications/sample-applications","path":"/python-sdk/docs/building-applications/sample-applications","sidebar":"tutorialSidebar"},{"id":"building-applications/working-with-detectors","path":"/python-sdk/docs/building-applications/working-with-detectors","sidebar":"tutorialSidebar"},{"id":"getting-started/api-tokens","path":"/python-sdk/docs/getting-started/api-tokens","sidebar":"tutorialSidebar"},{"id":"getting-started/dog-on-couch","path":"/python-sdk/docs/getting-started/dog-on-couch","sidebar":"tutorialSidebar"},{"id":"getting-started/getting-started","path":"/python-sdk/docs/getting-started/","sidebar":"tutorialSidebar"},{"id":"getting-started/retail-analytics","path":"/python-sdk/docs/getting-started/retail-analytics","sidebar":"tutorialSidebar"},{"id":"getting-started/streaming","path":"/python-sdk/docs/getting-started/streaming","sidebar":"tutorialSidebar"},{"id":"getting-started/writing-queries","path":"/python-sdk/docs/getting-started/writing-queries","sidebar":"tutorialSidebar"},{"id":"installation/installation","path":"/python-sdk/docs/installation/","sidebar":"tutorialSidebar"},{"id":"installation/linux","path":"/python-sdk/docs/installation/linux","sidebar":"tutorialSidebar"},{"id":"installation/macos","path":"/python-sdk/docs/installation/macos","sidebar":"tutorialSidebar"},{"id":"installation/monitoring-notification-server","path":"/python-sdk/docs/installation/monitoring-notification-server","sidebar":"tutorialSidebar"},{"id":"installation/nvidia-jetson","path":"/python-sdk/docs/installation/nvidia-jetson","sidebar":"tutorialSidebar"},{"id":"installation/optional-libraries","path":"/python-sdk/docs/installation/optional-libraries","sidebar":"tutorialSidebar"},{"id":"installation/raspberry-pi","path":"/python-sdk/docs/installation/raspberry-pi","sidebar":"tutorialSidebar"},{"id":"installation/windows","path":"/python-sdk/docs/installation/windows","sidebar":"tutorialSidebar"},{"id":"iot/esp32cam","path":"/python-sdk/docs/iot/","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/python-sdk/docs/getting-started/","label":"Getting Started"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var l=n(7529);const s=JSON.parse('{"docusaurusVersion":"2.4.0","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.4.0"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"2.4.0"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.4.0"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.4.0"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.4.0"},"@easyops-cn/docusaurus-search-local":{"type":"package","name":"@easyops-cn/docusaurus-search-local","version":"0.35.0"}}}'),u={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},c=r.createContext(u);function d(e){let{children:t}=e;return r.createElement(c.Provider,{value:u},t)}},4763:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7294),a=n(412),o=n(5742),i=n(8780),l=n(179);function s(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"}},r.createElement("h1",{style:{fontSize:"3rem"}},"This page crashed"),r.createElement("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"}},"Try again"),r.createElement(u,{error:t}))}function u(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{style:{whiteSpace:"pre-wrap"}},n)}function c(e){let{error:t,tryAgain:n}=e;return r.createElement(p,{fallback:()=>r.createElement(s,{error:t,tryAgain:n})},r.createElement(o.Z,null,r.createElement("title",null,"Page Error")),r.createElement(l.Z,null,r.createElement(s,{error:t,tryAgain:n})))}const d=e=>r.createElement(c,e);class p extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??d)(e)}return e??null}}},412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(405);function o(e){return r.createElement(a.ql,e)}},9960:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7462),a=n(7294),o=n(3727),i=n(8780),l=n(2263),s=n(3919),u=n(412);const c=a.createContext({collectLink:()=>{}});var d=n(4996);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:h,isActive:m,"data-noBrokenLinkCheck":g,autoAddBaseUrl:v=!0,...y}=e;const{siteConfig:{trailingSlash:b,baseUrl:w}}=(0,l.Z)(),{withBaseUrl:k}=(0,d.C)(),E=(0,a.useContext)(c),S=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,(()=>S.current));const x=p||f;const C=(0,s.Z)(x),T=x?.replace("pathname://","");let _=void 0!==T?(L=T,v&&(e=>e.startsWith("/"))(L)?k(L):L):void 0;var L;_&&C&&(_=(0,i.applyTrailingSlash)(_,{trailingSlash:b,baseUrl:w}));const R=(0,a.useRef)(!1),N=n?o.OL:o.rU,A=u.Z.canUseIntersectionObserver,O=(0,a.useRef)(),P=()=>{R.current||null==_||(window.docusaurus.preload(_),R.current=!0)};(0,a.useEffect)((()=>(!A&&C&&null!=_&&window.docusaurus.prefetch(_),()=>{A&&O.current&&O.current.disconnect()})),[O,_,A,C]);const I=_?.startsWith("#")??!1,D=!_||!C||I;return D||g||E.collectLink(_),D?a.createElement("a",(0,r.Z)({ref:S,href:_},x&&!C&&{target:"_blank",rel:"noopener noreferrer"},y)):a.createElement(N,(0,r.Z)({},y,{onMouseEnter:P,onTouchStart:P,innerRef:e=>{S.current=e,A&&e&&C&&(O.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(O.current.unobserve(e),O.current.disconnect(),null!=_&&window.docusaurus.prefetch(_))}))})),O.current.observe(e))},to:_},n&&{isActive:m,activeClassName:h}))}const f=a.forwardRef(p)},5999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s,I:()=>l});var r=n(7294);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var o=n(7529);function i(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return o[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return a(i({message:n,id:r}),t)}function s(e){let{children:t,id:n,values:o}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal <Translate> children",t),new Error("The Docusaurus <Translate> component only accept simple string values");const l=i({message:t,id:n});return r.createElement(r.Fragment,null,a(l,o))}},9935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},3919:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>a,b:()=>r})},4996:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>l});var r=n(7294),a=n(2263),o=n(3919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o.b)(n))return n;if(a)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},2263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8940);function o(){return(0,r.useContext)(a._)}},2389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8934);function o(){return(0,r.useContext)(a._)}},9670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,i]=n;const l=a?`${a}.${o}`:o;r(i)?e(i,l):t[l]=i}))}(e),t}},226:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,z:()=>o});var r=n(7294);const a=r.createContext(null);function o(e){let{children:t,value:n}=e;const o=r.useContext(a),i=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:o,value:n})),[o,n]);return r.createElement(a.Provider,{value:i},t)}},143:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>m,gA:()=>p,_r:()=>c,Jo:()=>g,zh:()=>d,yW:()=>h,gB:()=>f});var r=n(6550),a=n(2263),o=n(9935);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const l=e=>e.versions.find((e=>e.isLast));function s(e,t){const n=function(e,t){const n=l(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),a=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const u={},c=()=>i("docusaurus-plugin-content-docs")??u,d=e=>function(e,t,n){void 0===t&&(t=o.m),void 0===n&&(n={});const r=i(e),a=r?.[t];if(!a&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return a}("docusaurus-plugin-content-docs",e,{failfast:!0});function p(e){void 0===e&&(e={});const t=c(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function f(e){return d(e).versions}function h(e){const t=d(e);return l(t)}function m(e){const t=d(e),{pathname:n}=(0,r.TH)();return s(t,n)}function g(e){const t=d(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=l(e);return{latestDocSuggestion:s(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},8320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(4865),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(7410),a=n(6809);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{n(6726)(`./prism-${e}`)})),delete globalThis.Prism}(r.Z)},9471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294);const a={iconExternalLink:"iconExternalLink_nPIU"};function o(e){let{width:t=13.5,height:n=13.5}=e;return r.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:a.iconExternalLink},r.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},179:(e,t,n)=>{"use strict";n.d(t,{Z:()=>Ot});var r=n(7294),a=n(6010),o=n(4763),i=n(1944),l=n(7462),s=n(6550),u=n(5999),c=n(5936);const d="docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,s.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,c.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const h=(0,u.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function m(e){const t=e.children??h,{containerRef:n,onClick:a}=f();return r.createElement("div",{ref:n,role:"region","aria-label":h},r.createElement("a",(0,l.Z)({},e,{href:`#${d}`,onClick:a}),t))}var g=n(5281),v=n(9727);const y={skipToContent:"skipToContent_fXgn"};function b(){return r.createElement(m,{className:y.skipToContent})}var w=n(6668),k=n(9689);function E(e){let{width:t=21,height:n=21,color:a="currentColor",strokeWidth:o=1.2,className:i,...s}=e;return r.createElement("svg",(0,l.Z)({viewBox:"0 0 15 15",width:t,height:n},s),r.createElement("g",{stroke:a,strokeWidth:o},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const S={closeButton:"closeButton_CVFx"};function x(e){return r.createElement("button",(0,l.Z)({type:"button","aria-label":(0,u.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,a.Z)("clean-btn close",S.closeButton,e.className)}),r.createElement(E,{width:14,height:14,strokeWidth:3.1}))}const C={content:"content_knG7"};function T(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return r.createElement("div",(0,l.Z)({},e,{className:(0,a.Z)(C.content,e.className),dangerouslySetInnerHTML:{__html:n}}))}const _={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function L(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:a,textColor:o,isCloseable:i}=e;return r.createElement("div",{className:_.announcementBar,style:{backgroundColor:a,color:o},role:"banner"},i&&r.createElement("div",{className:_.announcementBarPlaceholder}),r.createElement(T,{className:_.announcementBarContent}),i&&r.createElement(x,{onClick:n,className:_.announcementBarClose}))}var R=n(2961),N=n(2466);var A=n(902),O=n(3102);const P=r.createContext(null);function I(e){let{children:t}=e;const n=function(){const e=(0,R.e)(),t=(0,O.HY)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,A.D9)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return r.createElement(P.Provider,{value:n},t)}function D(e){if(e.component){const t=e.component;return r.createElement(t,e.props)}}function M(){const e=(0,r.useContext)(P);if(!e)throw new A.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,O.HY)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:D(o)})),[a,o,t])}function F(e){let{header:t,primaryMenu:n,secondaryMenu:o}=e;const{shown:i}=M();return r.createElement("div",{className:"navbar-sidebar"},t,r.createElement("div",{className:(0,a.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":i})},r.createElement("div",{className:"navbar-sidebar__item menu"},n),r.createElement("div",{className:"navbar-sidebar__item menu"},o)))}var j=n(2949),B=n(2389);function z(e){return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"}))}function $(e){return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"}))}const U={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function q(e){let{className:t,buttonClassName:n,value:o,onChange:i}=e;const l=(0,B.Z)(),s=(0,u.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===o?(0,u.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,u.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return r.createElement("div",{className:(0,a.Z)(U.toggle,t)},r.createElement("button",{className:(0,a.Z)("clean-btn",U.toggleButton,!l&&U.toggleButtonDisabled,n),type:"button",onClick:()=>i("dark"===o?"light":"dark"),disabled:!l,title:s,"aria-label":s,"aria-live":"polite"},r.createElement(z,{className:(0,a.Z)(U.toggleIcon,U.lightToggleIcon)}),r.createElement($,{className:(0,a.Z)(U.toggleIcon,U.darkToggleIcon)})))}const H=r.memo(q),G={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function Q(e){let{className:t}=e;const n=(0,w.L)().navbar.style,a=(0,w.L)().colorMode.disableSwitch,{colorMode:o,setColorMode:i}=(0,j.I)();return a?null:r.createElement(H,{className:t,buttonClassName:"dark"===n?G.darkNavbarColorModeToggle:void 0,value:o,onChange:i})}var Z=n(1327);function V(){return r.createElement(Z.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function W(){const e=(0,R.e)();return r.createElement("button",{type:"button","aria-label":(0,u.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle()},r.createElement(E,{color:"var(--ifm-color-emphasis-600)"}))}function K(){return r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(V,null),r.createElement(Q,{className:"margin-right--md"}),r.createElement(W,null))}var Y=n(9960),X=n(4996),J=n(3919);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(9471);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:a,href:o,label:i,html:s,isDropdownLink:u,prependBaseUrlToHref:c,...d}=e;const p=(0,X.Z)(a),f=(0,X.Z)(t),h=(0,X.Z)(o,{forcePrependBaseUrl:!0}),m=i&&o&&!(0,J.Z)(o),g=s?{dangerouslySetInnerHTML:{__html:s}}:{children:r.createElement(r.Fragment,null,i,m&&r.createElement(te.Z,u&&{width:12,height:12}))};return o?r.createElement(Y.Z,(0,l.Z)({href:c?h:o},d,g)):r.createElement(Y.Z,(0,l.Z)({to:p,isNavLink:!0},(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(f)},d,g))}function re(e){let{className:t,isDropdownItem:n=!1,...o}=e;const i=r.createElement(ne,(0,l.Z)({className:(0,a.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},o));return n?r.createElement("li",null,i):i}function ae(e){let{className:t,isDropdownItem:n,...o}=e;return r.createElement("li",{className:"menu__list-item"},r.createElement(ne,(0,l.Z)({className:(0,a.Z)("menu__link",t)},o)))}function oe(e){let{mobile:t=!1,position:n,...a}=e;const o=t?ae:re;return r.createElement(o,(0,l.Z)({},a,{activeClassName:a.activeClassName??(t?"menu__link--active":"navbar__link--active")}))}var ie=n(6043),le=n(8596),se=n(2263);function ue(e,t){return e.some((e=>function(e,t){return!!(0,le.Mg)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function ce(e){let{items:t,position:n,className:o,onClick:i,...s}=e;const u=(0,r.useRef)(null),[c,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{u.current&&!u.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[u]),r.createElement("div",{ref:u,className:(0,a.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":c})},r.createElement(ne,(0,l.Z)({"aria-haspopup":"true","aria-expanded":c,role:"button",href:s.to?void 0:"#",className:(0,a.Z)("navbar__link",o)},s,{onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!c))}}),s.children??s.label),r.createElement("ul",{className:"dropdown__menu"},t.map(((e,t)=>r.createElement(Ge,(0,l.Z)({isDropdownItem:!0,activeClassName:"dropdown__link--active"},e,{key:t}))))))}function de(e){let{items:t,className:n,position:o,onClick:i,...u}=e;const c=function(){const{siteConfig:{baseUrl:e}}=(0,se.Z)(),{pathname:t}=(0,s.TH)();return t.replace(e,"/")}(),d=ue(t,c),{collapsed:p,toggleCollapsed:f,setCollapsed:h}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&h(!d)}),[c,d,h]),r.createElement("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":p})},r.createElement(ne,(0,l.Z)({role:"button",className:(0,a.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n)},u,{onClick:e=>{e.preventDefault(),f()}}),u.children??u.label),r.createElement(ie.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:p},t.map(((e,t)=>r.createElement(Ge,(0,l.Z)({mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active"},e,{key:t}))))))}function pe(e){let{mobile:t=!1,...n}=e;const a=t?de:ce;return r.createElement(a,n)}var fe=n(4711);function he(e){let{width:t=20,height:n=20,...a}=e;return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0},a),r.createElement("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"}))}const me="iconLanguage_nlXk";var ge=n(1029),ve=n(412),ye=n(373),be=n(143),we=n(22),ke=n(8202),Ee=n(3926),Se=n(1073),xe=n(2539),Ce=n(726);const Te='<svg width="20" height="20" viewBox="0 0 20 20"><path d="M17 6v12c0 .52-.2 1-1 1H4c-.7 0-1-.33-1-1V2c0-.55.42-1 1-1h8l5 5zM14 8h-3.13c-.51 0-.87-.34-.87-.87V4" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linejoin="round"></path></svg>',_e='<svg width="20" height="20" viewBox="0 0 20 20"><path d="M13 13h4-4V8H7v5h6v4-4H7V8H3h4V3v5h6V3v5h4-4v5zm-6 0v4-4H3h4z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg>',Le='<svg width="20" height="20" viewBox="0 0 20 20"><path d="M17 5H3h14zm0 5H3h14zm0 5H3h14z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linejoin="round"></path></svg>',Re='<svg width="20" height="20" viewBox="0 0 20 20"><g stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"><path d="M18 3v4c0 2-2 4-4 4H2"></path><path d="M8 17l-6-6 6-6"></path></g></svg>',Ne='<svg width="40" height="40" viewBox="0 0 20 20" fill="none" fill-rule="evenodd" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><path d="M15.5 4.8c2 3 1.7 7-1 9.7h0l4.3 4.3-4.3-4.3a7.8 7.8 0 01-9.8 1m-2.2-2.2A7.8 7.8 0 0113.2 2.4M2 18L18 2"></path></svg>',Ae='<svg viewBox="0 0 24 54"><g stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"><path d="M8 6v42M20 27H8.3"></path></g></svg>',Oe='<svg viewBox="0 0 24 54"><g stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"><path d="M8 6v21M20 27H8.3"></path></g></svg>',Pe={searchBar:"searchBar_RVTs",dropdownMenu:"dropdownMenu_qbY6",searchBarLeft:"searchBarLeft_MXDe",suggestion:"suggestion_fB_2",cursor:"cursor_eG29",hitTree:"hitTree_kk6K",hitIcon:"hitIcon_a7Zy",hitPath:"hitPath_ieM4",noResultsIcon:"noResultsIcon_EBY5",hitFooter:"hitFooter_E9YW",hitWrapper:"hitWrapper_sAK8",hitTitle:"hitTitle_vyVt",hitAction:"hitAction_NqkB",hideAction:"hideAction_vcyE",noResults:"noResults_l6Q3",searchBarContainer:"searchBarContainer_NW3z",searchBarLoadingRing:"searchBarLoadingRing_YnHq",searchClearButton:"searchClearButton_qk4g",searchIndexLoading:"searchIndexLoading_EJ1f",searchHintContainer:"searchHintContainer_Pkmr",searchHint:"searchHint_iIMx",focused:"focused_OWtg",input:"input_FOTf",hint:"hint_URu1",suggestions:"suggestions_X8XU",dataset:"dataset_QiCy",empty:"empty_eITn"};function Ie(e){let{document:t,type:n,page:r,metadata:a,tokens:o,isInterOfTree:i,isLastOfTree:l}=e;const s=0===n,u=1===n,c=[];i?c.push(Ae):l&&c.push(Oe);const d=c.map((e=>`<span class="${Pe.hitTree}">${e}</span>`)),p=`<span class="${Pe.hitIcon}">${s?Te:u?_e:Le}</span>`,f=[`<span class="${Pe.hitTitle}">${(0,Ce.o)(t.t,(0,Se.m)(a,"t"),o)}</span>`];if(!i&&!l&&ge.H6){const e=r?(r.b??[]).concat(r.t).concat(t.s&&t.s!==r.t?t.s:[]):t.b;f.push(`<span class="${Pe.hitPath}">${(0,Ee.e)(e??[])}</span>`)}else s||f.push(`<span class="${Pe.hitPath}">${(0,xe.C)(r.t||(t.u.startsWith("/docs/api-reference/")?"API Reference":""),o)}</span>`);const h=`<span class="${Pe.hitAction}">${Re}</span>`;return[...d,p,`<span class="${Pe.hitWrapper}">`,...f,"</span>",h].join("")}function De(){return`<span class="${Pe.noResults}"><span class="${Pe.noResultsIcon}">${Ne}</span><span>${(0,u.I)({id:"theme.SearchBar.noResultsText",message:"No results"})}</span></span>`}var Me=n(311);async function Fe(){const e=await Promise.all([n.e(443),n.e(525)]).then(n.t.bind(n,8443,23)),t=e.default;return t.noConflict?t.noConflict():e.noConflict&&e.noConflict(),t}const je="_highlight";const Be=function(e){let{handleSearchBarToggle:t}=e;const{siteConfig:{baseUrl:n}}=(0,se.Z)(),o=(0,be.gA)();let i=n;try{const{preferredVersion:e}=(0,ye.J)(o?.pluginId??ge.gQ);e&&!e.isLast&&(i=e.path+"/")}catch(D){if(ge.l9&&!(D instanceof A.i6))throw D}const l=(0,s.k6)(),c=(0,s.TH)(),d=(0,r.useRef)(null),p=(0,r.useRef)(new Map),f=(0,r.useRef)(!1),[h,m]=(0,r.useState)(!1),[g,v]=(0,r.useState)(!1),[y,b]=(0,r.useState)(""),w=(0,r.useRef)(null),k=(0,r.useRef)(""),[E,S]=(0,r.useState)("");(0,r.useEffect)((()=>{if(!Array.isArray(ge.Kc))return;let e="";if(c.pathname.startsWith(i)){const t=c.pathname.substring(i.length),n=ge.Kc.find((e=>t===e||t.startsWith(`${e}/`)));n&&(e=n)}k.current!==e&&(p.current.delete(e),k.current=e),S(e)}),[c.pathname,i]);const x=!!ge.hG&&Array.isArray(ge.Kc)&&""===E,C=(0,r.useCallback)((async()=>{if(x||p.current.get(E))return;p.current.set(E,"loading"),w.current?.autocomplete.destroy(),m(!0);const[{wrappedIndexes:e,zhDictionary:t},r]=await Promise.all([(0,we.w)(i,E),Fe()]);if(w.current=r(d.current,{hint:!1,autoselect:!0,openOnFocus:!0,cssClasses:{root:(0,a.Z)(Pe.searchBar,{[Pe.searchBarLeft]:"left"===ge.pu}),noPrefix:!0,dropdownMenu:Pe.dropdownMenu,input:Pe.input,hint:Pe.hint,suggestions:Pe.suggestions,suggestion:Pe.suggestion,cursor:Pe.cursor,dataset:Pe.dataset,empty:Pe.empty}},[{source:(0,ke.v)(e,t,ge.qo),templates:{suggestion:Ie,empty:De,footer:e=>{let{query:t,isEmpty:r}=e;if(r&&!E)return;const a=(e=>{let{query:t,isEmpty:r}=e;const a=document.createElement("a"),o=new URLSearchParams,s=(0,u.I)({id:"theme.SearchBar.seeAll",message:"See all results"}),c=(0,u.I)({id:"theme.SearchBar.seeAllOutsideContext",message:"See results outside {context}"},{context:E}),d=(0,u.I)({id:"theme.SearchBar.searchInContext",message:"See all results in {context}"},{context:E});let p;if(o.set("q",t),p=E&&r?c:E?d:s,Array.isArray(ge.Kc)&&!r&&o.set("ctx",E),i!==n){if(!i.startsWith(n))throw new Error(`Version url '${i}' does not start with base url '${n}', this is a bug of \`@easyops-cn/docusaurus-search-local\`, please report it.`);o.set("version",i.substring(n.length))}const f=`${n}search?${o.toString()}`;return a.href=f,a.textContent=p,a.addEventListener("click",(e=>{e.ctrlKey||e.metaKey||(e.preventDefault(),w.current?.autocomplete.close(),l.push(f))})),a})({query:t,isEmpty:r}),o=document.createElement("div");return o.className=Pe.hitFooter,o.appendChild(a),o}}}]).on("autocomplete:selected",(function(e,t){let{document:{u:n,h:r},tokens:a}=t;d.current?.blur();let o=n;if(ge.vc&&a.length>0){const e=new URLSearchParams;for(const t of a)e.append(je,t);o+=`?${e.toString()}`}r&&(o+=r),l.push(o)})).on("autocomplete:closed",(()=>{d.current?.blur()})),p.current.set(E,"done"),m(!1),f.current){const e=d.current;e.value&&w.current?.autocomplete.open(),e.focus()}}),[x,E,i,n,l]);(0,r.useEffect)((()=>{if(!ge.vc)return;const e=ve.Z.canUseDOM?new URLSearchParams(c.search).getAll(je):[];setTimeout((()=>{const t=document.querySelector("article");if(!t)return;const n=new ge.vc(t);n.unmark(),0!==e.length&&n.mark(e),b(e.join(" ")),w.current?.autocomplete.setVal(e.join(" "))}))}),[c.search,c.pathname]);const[T,_]=(0,r.useState)(!1),L=(0,r.useCallback)((()=>{f.current=!0,C(),_(!0),t?.(!0)}),[t,C]),R=(0,r.useCallback)((()=>{_(!1),t?.(!1)}),[t]),N=(0,r.useCallback)((()=>{C()}),[C]),O=(0,r.useCallback)((e=>{b(e.target.value),e.target.value&&v(!0)}),[]),P=!!ve.Z.canUseDOM&&/mac/i.test(navigator.userAgentData?.platform??navigator.platform);(0,r.useEffect)((()=>{if(!ge.AY)return;const e=e=>{!(P?e.metaKey:e.ctrlKey)||"k"!==e.key&&"K"!==e.key||(e.preventDefault(),d.current?.focus(),L())};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}}),[P,L]);const I=(0,r.useCallback)((()=>{const e=new URLSearchParams(c.search);e.delete(je);const t=e.toString(),n=c.pathname+(""!=t?`?${t}`:"")+c.hash;n!=c.pathname+c.search+c.hash&&l.push(n),b(""),w.current?.autocomplete.setVal("")}),[c.pathname,c.search,c.hash,l]);return r.createElement("div",{className:(0,a.Z)("navbar__search",Pe.searchBarContainer,{[Pe.searchIndexLoading]:h&&g,[Pe.focused]:T}),hidden:x},r.createElement("input",{placeholder:(0,u.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),"aria-label":"Search",className:"navbar__search-input",onMouseEnter:N,onFocus:L,onBlur:R,onChange:O,ref:d,value:y}),r.createElement(Me.Z,{className:Pe.searchBarLoadingRing}),ge.AY&&ge.t_&&(""!==y?r.createElement("button",{className:Pe.searchClearButton,onClick:I},"\u2715"):ve.Z.canUseDOM&&r.createElement("div",{className:Pe.searchHintContainer},r.createElement("kbd",{className:Pe.searchHint},P?"\u2318":"ctrl"),r.createElement("kbd",{className:Pe.searchHint},"K"))))},ze={searchBox:"searchBox_ZlJk"};function $e(e){let{children:t,className:n}=e;return r.createElement("div",{className:(0,a.Z)(n,ze.searchBox)},t)}var Ue=n(2802);const qe=e=>e.docs.find((t=>t.id===e.mainDocId));const He={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:a,...o}=e;const{i18n:{currentLocale:i,locales:c,localeConfigs:d}}=(0,se.Z)(),p=(0,fe.l)(),{search:f,hash:h}=(0,s.TH)(),m=[...n,...c.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${h}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...a],g=t?(0,u.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return r.createElement(pe,(0,l.Z)({},o,{mobile:t,label:r.createElement(r.Fragment,null,r.createElement(he,{className:me}),g),items:m}))},search:function(e){let{mobile:t,className:n}=e;return t?null:r.createElement($e,{className:n},r.createElement(Be,null))},dropdown:pe,html:function(e){let{value:t,className:n,mobile:o=!1,isDropdownItem:i=!1}=e;const l=i?"li":"div";return r.createElement(l,{className:(0,a.Z)({navbar__item:!o&&!i,"menu__list-item":o},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,be.Iw)(a),s=(0,Ue.vY)(t,a);return null===s?null:r.createElement(oe,(0,l.Z)({exact:!0},o,{isActive:()=>i?.path===s.path||!!i?.sidebar&&i.sidebar===s.sidebar,label:n??s.id,to:s.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,be.Iw)(a),s=(0,Ue.oz)(t,a).link;if(!s)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return r.createElement(oe,(0,l.Z)({exact:!0},o,{isActive:()=>i?.sidebar===t,label:n??s.label,to:s.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:a,...o}=e;const i=(0,Ue.lO)(a)[0],s=t??i.label,u=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(i).path;return r.createElement(oe,(0,l.Z)({},o,{label:s,to:u}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:a,dropdownItemsBefore:o,dropdownItemsAfter:i,...c}=e;const{search:d,hash:p}=(0,s.TH)(),f=(0,be.Iw)(n),h=(0,be.gB)(n),{savePreferredVersionName:m}=(0,ye.J)(n),g=[...o,...h.map((e=>{const t=f.alternateDocVersions[e.name]??qe(e);return{label:e.label,to:`${t.path}${d}${p}`,isActive:()=>e===f.activeVersion,onClick:()=>m(e.name)}})),...i],v=(0,Ue.lO)(n)[0],y=t&&g.length>1?(0,u.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):v.label,b=t&&g.length>1?void 0:qe(v).path;return g.length<=1?r.createElement(oe,(0,l.Z)({},c,{mobile:t,label:y,to:b,isActive:a?()=>!1:void 0})):r.createElement(pe,(0,l.Z)({},c,{mobile:t,label:y,to:b,items:g,isActive:a?()=>!1:void 0}))}};function Ge(e){let{type:t,...n}=e;const a=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=He[a];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return r.createElement(o,n)}function Qe(){const e=(0,R.e)(),t=(0,w.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map(((t,n)=>r.createElement(Ge,(0,l.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}function Ze(e){return r.createElement("button",(0,l.Z)({},e,{type:"button",className:"clean-btn navbar-sidebar__back"}),r.createElement(u.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"},"\u2190 Back to main menu"))}function Ve(){const e=0===(0,w.L)().navbar.items.length,t=M();return r.createElement(r.Fragment,null,!e&&r.createElement(Ze,{onClick:()=>t.hide()}),t.content)}function We(){const e=(0,R.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?r.createElement(F,{header:r.createElement(K,null),primaryMenu:r.createElement(Qe,null),secondaryMenu:r.createElement(Ve,null)}):null}const Ke={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Ye(e){return r.createElement("div",(0,l.Z)({role:"presentation"},e,{className:(0,a.Z)("navbar-sidebar__backdrop",e.className)}))}function Xe(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.L)(),i=(0,R.e)(),{navbarRef:l,isNavbarVisible:s}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,N.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i<o.current)return void n(!0);if(a.current)return void(a.current=!1);const l=r?.scrollY,s=document.documentElement.scrollHeight-o.current,u=window.innerHeight;l&&i>=l?n(!1):i+u<s&&n(!0)})),(0,c.S)((t=>{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return r.createElement("nav",{ref:l,"aria-label":(0,u.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.Z)("navbar","navbar--fixed-top",n&&[Ke.navbarHideable,!s&&Ke.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown})},t,r.createElement(Ye,{onClick:i.toggle}),r.createElement(We,null))}var Je=n(8780);const et={errorBoundaryError:"errorBoundaryError_a6uf"};function tt(e){return r.createElement("button",(0,l.Z)({type:"button"},e),r.createElement(u.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error"},"Try again"))}function nt(e){let{error:t}=e;const n=(0,Je.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{className:et.errorBoundaryError},n)}class rt extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const at="right";function ot(e){let{width:t=30,height:n=30,className:a,...o}=e;return r.createElement("svg",(0,l.Z)({className:a,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},o),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function it(){const{toggle:e,shown:t}=(0,R.e)();return r.createElement("button",{onClick:e,"aria-label":(0,u.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button"},r.createElement(ot,null))}const lt={colorModeToggle:"colorModeToggle_DEke"};function st(e){let{items:t}=e;return r.createElement(r.Fragment,null,t.map(((e,t)=>r.createElement(rt,{key:t,onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t})},r.createElement(Ge,e)))))}function ut(e){let{left:t,right:n}=e;return r.createElement("div",{className:"navbar__inner"},r.createElement("div",{className:"navbar__items"},t),r.createElement("div",{className:"navbar__items navbar__items--right"},n))}function ct(){const e=(0,R.e)(),t=(0,w.L)().navbar.items,[n,a]=function(e){function t(e){return"left"===(e.position??at)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return r.createElement(ut,{left:r.createElement(r.Fragment,null,!e.disabled&&r.createElement(it,null),r.createElement(V,null),r.createElement(st,{items:n})),right:r.createElement(r.Fragment,null,r.createElement(st,{items:a}),r.createElement(Q,{className:lt.colorModeToggle}),!o&&r.createElement($e,null,r.createElement(Be,null)))})}function dt(){return r.createElement(Xe,null,r.createElement(ct,null))}function pt(e){let{item:t}=e;const{to:n,href:a,label:o,prependBaseUrlToHref:i,...s}=t,u=(0,X.Z)(n),c=(0,X.Z)(a,{forcePrependBaseUrl:!0});return r.createElement(Y.Z,(0,l.Z)({className:"footer__link-item"},a?{href:i?c:a}:{to:u},s),o,a&&!(0,J.Z)(a)&&r.createElement(te.Z,null))}function ft(e){let{item:t}=e;return t.html?r.createElement("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement("li",{key:t.href??t.to,className:"footer__item"},r.createElement(pt,{item:t}))}function ht(e){let{column:t}=e;return r.createElement("div",{className:"col footer__col"},r.createElement("div",{className:"footer__title"},t.title),r.createElement("ul",{className:"footer__items clean-list"},t.items.map(((e,t)=>r.createElement(ft,{key:t,item:e})))))}function mt(e){let{columns:t}=e;return r.createElement("div",{className:"row footer__links"},t.map(((e,t)=>r.createElement(ht,{key:t,column:e}))))}function gt(){return r.createElement("span",{className:"footer__link-separator"},"\xb7")}function vt(e){let{item:t}=e;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement(pt,{item:t})}function yt(e){let{links:t}=e;return r.createElement("div",{className:"footer__links text--center"},r.createElement("div",{className:"footer__links"},t.map(((e,n)=>r.createElement(r.Fragment,{key:n},r.createElement(vt,{item:e}),t.length!==n+1&&r.createElement(gt,null))))))}function bt(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?r.createElement(mt,{columns:t}):r.createElement(yt,{links:t})}var wt=n(941);const kt={footerLogoLink:"footerLogoLink_BH7S"};function Et(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.C)(),o={light:n(t.src),dark:n(t.srcDark??t.src)};return r.createElement(wt.Z,{className:(0,a.Z)("footer__logo",t.className),alt:t.alt,sources:o,width:t.width,height:t.height,style:t.style})}function St(e){let{logo:t}=e;return t.href?r.createElement(Y.Z,{href:t.href,className:kt.footerLogoLink,target:t.target},r.createElement(Et,{logo:t})):r.createElement(Et,{logo:t})}function xt(e){let{copyright:t}=e;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function Ct(e){let{style:t,links:n,logo:o,copyright:i}=e;return r.createElement("footer",{className:(0,a.Z)("footer",{"footer--dark":"dark"===t})},r.createElement("div",{className:"container container-fluid"},n,(o||i)&&r.createElement("div",{className:"footer__bottom text--center"},o&&r.createElement("div",{className:"margin-bottom--sm"},o),i)))}function Tt(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:a,style:o}=e;return r.createElement(Ct,{style:o,links:n&&n.length>0&&r.createElement(bt,{links:n}),logo:a&&r.createElement(St,{logo:a}),copyright:t&&r.createElement(xt,{copyright:t})})}const _t=r.memo(Tt),Lt=(0,A.Qc)([j.S,k.pl,N.OC,ye.L5,i.VC,function(e){let{children:t}=e;return r.createElement(O.n2,null,r.createElement(R.M,null,r.createElement(I,null,t)))}]);function Rt(e){let{children:t}=e;return r.createElement(Lt,null,t)}function Nt(e){let{error:t,tryAgain:n}=e;return r.createElement("main",{className:"container margin-vert--xl"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--6 col--offset-3"},r.createElement("h1",{className:"hero__title"},r.createElement(u.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("div",{className:"margin-vert--lg"},r.createElement(tt,{onClick:n,className:"button button--primary shadow--lw"})),r.createElement("hr",null),r.createElement("div",{className:"margin-vert--md"},r.createElement(nt,{error:t})))))}const At={mainWrapper:"mainWrapper_z2l0"};function Ot(e){const{children:t,noFooter:n,wrapperClassName:l,title:s,description:u}=e;return(0,v.t)(),r.createElement(Rt,null,r.createElement(i.d,{title:s,description:u}),r.createElement(b,null),r.createElement(L,null),r.createElement(dt,null),r.createElement("div",{id:d,className:(0,a.Z)(g.k.wrapper.main,At.mainWrapper,l)},r.createElement(o.Z,{fallback:e=>r.createElement(Nt,e)},t)),!n&&r.createElement(_t,null))}},1327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r=n(7462),a=n(7294),o=n(9960),i=n(4996),l=n(2263),s=n(6668),u=n(941);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,i.Z)(t.src),dark:(0,i.Z)(t.srcDark||t.src)},l=a.createElement(u.Z,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?a.createElement("div",{className:r},l):l}function d(e){const{siteConfig:{title:t}}=(0,l.Z)(),{navbar:{title:n,logo:u}}=(0,s.L)(),{imageClassName:d,titleClassName:p,...f}=e,h=(0,i.Z)(u?.href||"/"),m=n?"":t,g=u?.alt??m;return a.createElement(o.Z,(0,r.Z)({to:h},f,u?.target&&{target:u.target}),u&&a.createElement(c,{logo:u,alt:g,imageClassName:d}),null!=n&&a.createElement("b",{className:p},n))}},197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(5742);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return r.createElement(a.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),o&&r.createElement("meta",{name:"docusaurus_tag",content:o}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),o&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:o}))}},941:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(7462),a=n(7294),o=n(6010),i=n(2389),l=n(2949);const s={themedImage:"themedImage_ToTc","themedImage--light":"themedImage--light_HNdA","themedImage--dark":"themedImage--dark_i4oU"};function u(e){const t=(0,i.Z)(),{colorMode:n}=(0,l.I)(),{sources:u,className:c,alt:d,...p}=e,f=t?"dark"===n?["dark"]:["light"]:["light","dark"];return a.createElement(a.Fragment,null,f.map((e=>a.createElement("img",(0,r.Z)({key:e,src:u[e],alt:d,className:(0,o.Z)(s.themedImage,s[`themedImage--${e}`],c)},p)))))}},6043:(e,t,n)=>{"use strict";n.d(t,{u:()=>l,z:()=>g});var r=n(7462),a=n(7294),o=n(412);const i="ease-in-out";function l(e){let{initialState:t}=e;const[n,r]=(0,a.useState)(t??!1),o=(0,a.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:o}}const s={display:"none",overflow:"hidden",height:"0px"},u={display:"block",overflow:"visible",height:"auto"};function c(e,t){const n=t?s:u;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function d(e){if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return 0;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}function p(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const o=(0,a.useRef)(!1);(0,a.useEffect)((()=>{const e=t.current;function a(){const t=function(){const t=e.scrollHeight;return{transition:`height ${r?.duration??d(t)}ms ${r?.easing??i}`,height:`${t}px`}}();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return c(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(a(),requestAnimationFrame((()=>{e.style.height=s.height,e.style.overflow=s.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{a()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,r])}function f(e){if(!o.Z.canUseDOM)return e?s:u}function h(e){let{as:t="div",collapsed:n,children:r,animation:o,onCollapseTransitionEnd:i,className:l,disableSSRStyle:s}=e;const u=(0,a.useRef)(null);return p({collapsibleRef:u,collapsed:n,animation:o}),a.createElement(t,{ref:u,style:s?void 0:f(n),onTransitionEnd:e=>{"height"===e.propertyName&&(c(u.current,n),i?.(n))},className:l},r)}function m(e){let{collapsed:t,...n}=e;const[o,i]=(0,a.useState)(!t),[l,s]=(0,a.useState)(t);return(0,a.useLayoutEffect)((()=>{t||i(!0)}),[t]),(0,a.useLayoutEffect)((()=>{o&&s(t)}),[o,t]),o?a.createElement(h,(0,r.Z)({},n,{collapsed:l})):null}function g(e){let{lazy:t,...n}=e;const r=t?m:h;return a.createElement(r,n)}},9689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>h,pl:()=>f});var r=n(7294),a=n(2389),o=n(12),i=n(902),l=n(6668);const s=(0,o.WA)("docusaurus.announcement.dismiss"),u=(0,o.WA)("docusaurus.announcement.id"),c=()=>"true"===s.get(),d=e=>s.set(String(e)),p=r.createContext(null);function f(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.L)(),t=(0,a.Z)(),[n,o]=(0,r.useState)((()=>!!t&&c()));(0,r.useEffect)((()=>{o(c())}),[]);const i=(0,r.useCallback)((()=>{d(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&d(!1),!r&&c()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return r.createElement(p.Provider,{value:n},t)}function h(){const e=(0,r.useContext)(p);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},2949:(e,t,n)=>{"use strict";n.d(t,{I:()=>g,S:()=>m});var r=n(7294),a=n(412),o=n(902),i=n(12),l=n(6668);const s=r.createContext(void 0),u="theme",c=(0,i.WA)(u),d={light:"light",dark:"dark"},p=e=>e===d.dark?d.dark:d.light,f=e=>a.Z.canUseDOM?p(document.documentElement.getAttribute("data-theme")):p(e),h=e=>{c.set(p(e))};function m(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[a,o]=(0,r.useState)(f(e));(0,r.useEffect)((()=>{t&&c.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&h(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?d.dark:d.light:e),c.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",p(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=c.get();null!==t&&i(p(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const s=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||s.current?s.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:i,get isDarkTheme(){return a===d.dark},setLightTheme(){i(d.light)},setDarkTheme(){i(d.dark)}})),[a,i])}();return r.createElement(s.Provider,{value:n},t)}function g(){const e=(0,r.useContext)(s);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},373:(e,t,n)=>{"use strict";n.d(t,{J:()=>y,L5:()=>g});var r=n(7294),a=n(143),o=n(9935),i=n(6668),l=n(2802),s=n(902),u=n(12);const c=e=>`docs-preferred-version-${e}`,d={save:(e,t,n)=>{(0,u.WA)(c(e),{persistence:t}).set(n)},read:(e,t)=>(0,u.WA)(c(e),{persistence:t}).get(),clear:(e,t)=>{(0,u.WA)(c(e),{persistence:t}).del()}},p=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const f=r.createContext(null);function h(){const e=(0,a._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,l]=(0,r.useState)((()=>p(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=d.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(d.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){d.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function m(e){let{children:t}=e;const n=h();return r.createElement(f.Provider,{value:n},t)}function g(e){let{children:t}=e;return l.cE?r.createElement(m,null,t):r.createElement(r.Fragment,null,t)}function v(){const e=(0,r.useContext)(f);if(!e)throw new s.i6("DocsPreferredVersionContextProvider");return e}function y(e){void 0===e&&(e=o.m);const t=(0,a.zh)(e),[n,i]=v(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,b:()=>l});var r=n(7294),a=n(902);const o=Symbol("EmptyContext"),i=r.createContext(o);function l(e){let{children:t,name:n,items:a}=e;const o=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return r.createElement(i.Provider,{value:o},t)}function s(){const e=(0,r.useContext)(i);if(e===o)throw new a.i6("DocsSidebarProvider");return e}},2961:(e,t,n)=>{"use strict";n.d(t,{M:()=>p,e:()=>f});var r=n(7294),a=n(3102),o=n(7524),i=n(6550),l=(n(1688),n(902));function s(e){!function(e){const t=(0,i.k6)(),n=(0,l.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}var u=n(6668);const c=r.createContext(void 0);function d(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,u.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[i,l]=(0,r.useState)(!1);s((()=>{if(i)return l(!1),!1}));const c=(0,r.useCallback)((()=>{l((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&l(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:i})),[e,n,c,i])}function p(e){let{children:t}=e;const n=d();return r.createElement(c.Provider,{value:n},t)}function f(){const e=r.useContext(c);if(void 0===e)throw new l.i6("NavbarMobileSidebarProvider");return e}},3102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>l,Zo:()=>s,n2:()=>i});var r=n(7294),a=n(902);const o=r.createContext(null);function i(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function s(e){let{component:t,props:n}=e;const i=(0,r.useContext)(o);if(!i)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,l]=i,s=(0,a.Ql)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},9727:(e,t,n)=>{"use strict";n.d(t,{h:()=>a,t:()=>o});var r=n(7294);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},7524:(e,t,n)=>{"use strict";n.d(t,{i:()=>u});var r=n(7294),a=n(412);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(){return a.Z.canUseDOM?window.innerWidth>i?o.desktop:o.mobile:o.ssr}const s=!1;function u(){const[e,t]=(0,r.useState)((()=>s?"ssr":l()));return(0,r.useEffect)((()=>{function e(){t(l())}const n=s?window.setTimeout(e,1e3):void 0;return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(n)}}),[]),e}},5281:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},2802:(e,t,n)=>{"use strict";n.d(t,{Wl:()=>p,_F:()=>m,cE:()=>d,hI:()=>k,lO:()=>y,vY:()=>w,oz:()=>b,s1:()=>v});var r=n(7294),a=n(6550),o=n(8790),i=n(143),l=n(373),s=n(1116);function u(e){return Array.from(new Set(e))}var c=n(8596);const d=!!i._r;function p(e){if(e.href)return e.href;for(const t of e.items){if("link"===t.type)return t.href;if("category"===t.type){const e=p(t);if(e)return e}}}const f=(e,t)=>void 0!==e&&(0,c.Mg)(e,t),h=(e,t)=>e.some((e=>m(e,t)));function m(e,t){return"link"===e.type?f(e.href,t):"category"===e.type&&(f(e.href,t)||h(e.items,t))}function g(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,c.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,c.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function v(){const e=(0,s.V)(),{pathname:t}=(0,a.TH)(),n=(0,i.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?g({sidebarItems:e.items,pathname:t}):null}function y(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,l.J)(e),a=(0,i.yW)(e);return(0,r.useMemo)((()=>u([t,n,a].filter(Boolean))),[t,n,a])}function b(e,t){const n=y(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${Object.keys(t).join("\n- ")}`);return r[1]}),[e,n])}function w(e,t){const n=y(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${u(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function k(e){let{route:t,versionMetadata:n}=e;const r=(0,a.TH)(),i=t.routes,l=i.find((e=>(0,a.LX)(r.pathname,e)));if(!l)return null;const s=l.sidebar,u=s?n.docsSidebars[s]:void 0;return{docElement:(0,o.H)(i),sidebarName:s,sidebarItems:u}}},1944:(e,t,n)=>{"use strict";n.d(t,{FG:()=>p,d:()=>c,VC:()=>f});var r=n(7294),a=n(6010),o=n(5742),i=n(226);function l(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(4996),u=n(2263);function c(e){let{title:t,description:n,keywords:a,image:i,children:l}=e;const c=function(e){const{siteConfig:t}=(0,u.Z)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,s.C)(),p=i?d(i,{absolute:!0}):void 0;return r.createElement(o.Z,null,t&&r.createElement("title",null,c),t&&r.createElement("meta",{property:"og:title",content:c}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),p&&r.createElement("meta",{property:"og:image",content:p}),p&&r.createElement("meta",{name:"twitter:image",content:p}),l)}const d=r.createContext(void 0);function p(e){let{className:t,children:n}=e;const i=r.useContext(d),l=(0,a.Z)(i,t);return r.createElement(d.Provider,{value:l},r.createElement(o.Z,null,r.createElement("html",{className:l})),n)}function f(e){let{children:t}=e;const n=l(),o=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const i=`plugin-id-${n.plugin.id}`;return r.createElement(p,{className:(0,a.Z)(o,i)},t)}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>i,Qc:()=>u,Ql:()=>s,i6:()=>l,zX:()=>o});var r=n(7294);const a=n(412).Z.canUseDOM?r.useLayoutEffect:r.useEffect;function o(e){const t=(0,r.useRef)(e);return a((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function i(e){const t=(0,r.useRef)();return a((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?<name>\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function s(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function u(e){return t=>{let{children:n}=t;return r.createElement(r.Fragment,null,e.reduceRight(((e,t)=>r.createElement(t,null,e)),n))}}},8596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>l});var r=n(7294),a=n(723),o=n(2263);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,o.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.Z,baseUrl:e})),[e])}},2466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>p,OC:()=>s,RF:()=>d});var r=n(7294),a=n(412),o=n(2389),i=n(902);const l=r.createContext(void 0);function s(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return r.createElement(l.Provider,{value:n},t)}function u(){const e=(0,r.useContext)(l);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const c=()=>a.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function d(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=u(),a=(0,r.useRef)(c()),o=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=c();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function p(){const e=(0,r.useRef)(null),t=(0,o.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&a<e)&&(t=requestAnimationFrame(r),window.scrollTo(0,Math.floor(.85*(a-e))+e))}(),()=>t&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},3320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>r,os:()=>a});n(2263);const r="default";function a(e,t){return`docs-${e}-${t}`}},12:(e,t,n)=>{"use strict";n.d(t,{WA:()=>s});n(7294),n(1688);const r="localStorage";function a(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function o(e){if(void 0===e&&(e=r),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,i||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),i=!0),null}var t}let i=!1;const l={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function s(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=o(t?.persistence);return null===n?l:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),a({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),a({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}},4711:(e,t,n)=>{"use strict";n.d(t,{l:()=>o});var r=n(2263),a=n(6550);function o(){const{siteConfig:{baseUrl:e,url:t},i18n:{defaultLocale:n,currentLocale:o}}=(0,r.Z)(),{pathname:i}=(0,a.TH)(),l=o===n?e:e.replace(`/${o}/`,"/"),s=i.replace(e,"");return{createUrl:function(e){let{locale:r,fullyQualified:a}=e;return`${a?t:""}${function(e){return e===n?`${l}`:`${l}${e}/`}(r)}${s}`}}}},5936:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(7294),a=n(6550),o=n(902);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6668:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(2263);function a(){return(0,r.Z)().siteConfig.themeConfig}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},4143:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},8780:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="post-content";var a=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(4143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},311:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(7294),a=n(6010);const o={loadingRing:"loadingRing_RJI3","loading-ring":"loading-ring_FB5o"};function i(e){let{className:t}=e;return r.createElement("div",{className:(0,a.Z)(o.loadingRing,t)},r.createElement("div",null),r.createElement("div",null),r.createElement("div",null),r.createElement("div",null))}},22:(e,t,n)=>{"use strict";n.d(t,{w:()=>l});var r=n(1336),a=n.n(r),o=n(1029);const i=new Map;function l(e,t){const n=`${e}${t}`;let r=i.get(n);return r||(r=async function(e,t){{const n=`${e}${o.J.replace("{dir}",t?`-${t.replace(/\//g,"-")}`:"")}`;if(new URL(n,location.origin).origin!==location.origin)throw new Error("Unexpected version url");const r=await(await fetch(n)).json(),i=r.map(((e,t)=>{let{documents:n,index:r}=e;return{type:t,documents:n,index:a().Index.load(r)}})),l=r.reduce(((e,t)=>{for(const n of t.index.invertedIndex)/\p{Unified_Ideograph}/u.test(n[0][0])&&e.add(n[0]);return e}),new Set);return{wrappedIndexes:i,zhDictionary:Array.from(l)}}return{wrappedIndexes:[],zhDictionary:[]}}(e,t),i.set(n,r)),r}},8202:(e,t,n)=>{"use strict";n.d(t,{v:()=>s});var r=n(1336),a=n.n(r);var o=n(1029);function i(e){return l(e).concat(l(e.filter((e=>{const t=e[e.length-1];return!t.trailing&&t.maybeTyping})),!0))}function l(e,t){return e.map((e=>({tokens:e.map((e=>e.value)),term:e.map((e=>({value:e.value,presence:a().Query.presence.REQUIRED,wildcard:(t?e.trailing||e.maybeTyping:e.trailing)?a().Query.wildcard.TRAILING:a().Query.wildcard.NONE})))})))}function s(e,t,n){return function(r,l){const s=function(e,t){if(1===t.length&&["ja","jp","th"].includes(t[0]))return a()[t[0]].tokenizer(e).map((e=>e.toString()));let n=/[^-\s]+/g;return t.includes("zh")&&(n=/\w+|\p{Unified_Ideograph}+/gu),e.toLowerCase().match(n)||[]}(r,o.dK);if(0===s.length)return void l([]);const u=function(e,t){const n=function(e,t){const n=[];return function e(r,a){if(0===r.length)return void n.push(a);const o=r[0];if(/\p{Unified_Ideograph}/u.test(o)){const n=function(e,t){const n=[];return function e(r,a){let o=0,i=!1;for(const l of t)if(r.substr(0,l.length)===l){const t={missed:a.missed,term:a.term.concat({value:l})};r.length>l.length?e(r.substr(l.length),t):n.push(t),i=!0}else for(let t=l.length-1;t>o;t-=1){const s=l.substr(0,t);if(r.substr(0,t)===s){o=t;const l={missed:a.missed,term:a.term.concat({value:s,trailing:!0})};r.length>t?e(r.substr(t),l):n.push(l),i=!0;break}}i||(r.length>0?e(r.substr(1),{missed:a.missed+1,term:a.term}):a.term.length>0&&n.push(a))}(e,{missed:0,term:[]}),n.sort(((e,t)=>{const n=e.missed>0?1:0,r=t.missed>0?1:0;return n!==r?n-r:e.term.length-t.term.length})).map((e=>e.term))}(o,t);for(const t of n){const n=a.concat(...t);e(r.slice(1),n)}}else{const t=a.concat({value:o});e(r.slice(1),t)}}(e,[]),n}(e,t);if(0===n.length)return[{tokens:e,term:e.map((e=>({value:e,presence:a().Query.presence.REQUIRED,wildcard:a().Query.wildcard.LEADING|a().Query.wildcard.TRAILING})))}];for(const a of n)a[a.length-1].maybeTyping=!0;const r=[];for(const i of o.dK)if("en"===i)o._k||r.unshift(a().stopWordFilter);else{const e=a()[i];e.stopWordFilter&&r.unshift(e.stopWordFilter)}let l;if(r.length>0){const e=e=>r.reduce(((e,t)=>e.filter((e=>t(e.value)))),e);l=[];const t=[];for(const r of n){const n=e(r);l.push(n),n.length<r.length&&n.length>0&&t.push(n)}n.push(...t)}else l=n.slice();const s=[];for(const a of l)if(a.length>2)for(let e=a.length-1;e>=0;e-=1)s.push(a.slice(0,e).concat(a.slice(e+1)));return i(n).concat(i(s))}(s,t),c=[];e:for(const{term:t,tokens:a}of u)for(const{documents:r,index:o,type:i}of e)if(c.push(...o.query((e=>{for(const n of t)e.term(n.value,{wildcard:n.wildcard,presence:n.presence})})).slice(0,n).filter((e=>!c.some((t=>t.document.i.toString()===e.ref)))).slice(0,n-c.length).map((t=>{const n=r.find((e=>e.i.toString()===t.ref));return{document:n,type:i,page:0!==i&&e[0].documents.find((e=>e.i===n.p)),metadata:t.matchData.metadata,tokens:a,score:t.score}}))),c.length>=n)break e;!function(e){e.forEach(((e,t)=>{e.index=t})),e.sort(((t,n)=>{let r=t.type>0&&t.page?e.findIndex((e=>e.document===t.page)):t.index,a=n.type>0&&n.page?e.findIndex((e=>e.document===n.page)):n.index;return-1===r&&(r=t.index),-1===a&&(a=n.index),r===a?0===t.type?-1:0===n.type?1:t.index-n.index:r-a}))}(c),function(e){e.forEach(((t,n)=>{n>0&&t.page&&e.some((e=>e.document===t.page))&&(n<e.length-1&&e[n+1].page===t.page?t.isInterOfTree=!0:t.isLastOfTree=!0)}))}(c),l(c)}}},3926:(e,t,n)=>{"use strict";function r(e){return e.join(" \u203a ")}n.d(t,{e:()=>r})},1690:(e,t,n)=>{"use strict";function r(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}n.d(t,{X:()=>r})},1073:(e,t,n)=>{"use strict";function r(e,t){const n=[];for(const r of Object.values(e))r[t]&&n.push(...r[t].position);return n.sort(((e,t)=>e[0]-t[0]||t[1]-e[1]))}n.d(t,{m:()=>r})},2539:(e,t,n)=>{"use strict";n.d(t,{C:()=>a});var r=n(1690);function a(e,t,n){const o=[];for(const i of t){const n=e.toLowerCase().indexOf(i);if(n>=0){n>0&&o.push(a(e.substr(0,n),t)),o.push(`<mark>${(0,r.X)(e.substr(n,i.length))}</mark>`);const l=n+i.length;l<e.length&&o.push(a(e.substr(l),t));break}}return 0===o.length?n?`<mark>${(0,r.X)(e)}</mark>`:(0,r.X)(e):o.join("")}},726:(e,t,n)=>{"use strict";n.d(t,{o:()=>s});var r=n(1690),a=n(2539);const o=/\w+|\p{Unified_Ideograph}/u;function i(e){const t=[];let n=0,r=e;for(;r.length>0;){const a=r.match(o);if(!a){t.push(r);break}a.index>0&&t.push(r.substring(0,a.index)),t.push(a[0]),n+=a.index+a[0].length,r=e.substring(n)}return t}var l=n(1029);function s(e,t,n,o){void 0===o&&(o=l.Hk);const{chunkIndex:s,chunks:u}=function(e,t,n){const o=[];let l=0,s=0,u=-1;for(;l<t.length;){const[c,d]=t[l];if(l+=1,!(c<s)){if(c>s){const t=i(e.substring(s,c)).map((e=>({html:(0,r.X)(e),textLength:e.length})));for(const e of t)o.push(e)}-1===u&&(u=o.length),s=c+d,o.push({html:(0,a.C)(e.substring(c,s),n,!0),textLength:d})}}if(s<e.length){const t=i(e.substring(s)).map((e=>({html:(0,r.X)(e),textLength:e.length})));for(const e of t)o.push(e)}return{chunkIndex:u,chunks:o}}(e,t,n),c=u.slice(0,s),d=u[s],p=[d.html],f=u.slice(s+1);let h=d.textLength,m=0,g=0,v=!1,y=!1;for(;h<o;)if((m<=g||0===f.length)&&c.length>0){const e=c.pop();h+e.textLength<=o?(p.unshift(e.html),m+=e.textLength,h+=e.textLength):(v=!0,c.length=0)}else{if(!(f.length>0))break;{const e=f.shift();h+e.textLength<=o?(p.push(e.html),g+=e.textLength,h+=e.textLength):(y=!0,f.length=0)}}return(v||c.length>0)&&p.unshift("\u2026"),(y||f.length>0)&&p.push("\u2026"),p.join("")}},1029:(e,t,n)=>{"use strict";n.d(t,{vc:()=>a(),gQ:()=>h,H6:()=>c,hG:()=>v,l9:()=>m,dK:()=>o,_k:()=>i,pu:()=>f,AY:()=>d,t_:()=>p,Kc:()=>g,J:()=>l,Hk:()=>u,qo:()=>s,pQ:()=>y});n(1336);var r=n(813),a=n.n(r);const o=["en"],i=!1,l="search-index{dir}.json?_=5eccfa04",s=8,u=50,c=!0,d=!0,p=!0,f="right",h=void 0,m=!0,g=null,v=!1,y=!1},6010:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=r(e[t]))&&(a&&(a+=" "),a+=n);else for(t in e)e[t]&&(a&&(a+=" "),a+=t);return a}n.d(t,{Z:()=>a});const a=function(){for(var e,t,n=0,a="";n<arguments.length;)(e=arguments[n++])&&(t=r(e))&&(a&&(a+=" "),a+=t);return a}},9318:(e,t,n)=>{"use strict";n.d(t,{lX:()=>w,q_:()=>T,ob:()=>f,PP:()=>L,Ep:()=>p});var r=n(7462);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r<a;n+=1,r+=1)e[n]=e[r];e.pop()}const i=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],i=t&&t.split("/")||[],l=e&&a(e),s=t&&a(t),u=l||s;if(e&&a(e)?i=r:r.length&&(i.pop(),i=i.concat(r)),!i.length)return"/";if(i.length){var c=i[i.length-1];n="."===c||".."===c||""===c}else n=!1;for(var d=0,p=i.length;p>=0;p--){var f=i[p];"."===f?o(i,p):".."===f?(o(i,p),d++):d&&(o(i,p),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(i[0])||i.unshift("");var h=i.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};var l=n(8776);function s(e){return"/"===e.charAt(0)?e:"/"+e}function u(e){return"/"===e.charAt(0)?e.substr(1):e}function c(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function f(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function h(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach((function(e){return e.apply(void 0,n)}))}}}var m=!("undefined"==typeof window||!window.document||!window.document.createElement);function g(e,t){t(window.confirm(e))}var v="popstate",y="hashchange";function b(){try{return window.history.state||{}}catch(e){return{}}}function w(e){void 0===e&&(e={}),m||(0,l.Z)(!1);var t,n=window.history,a=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,o=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e,u=i.forceRefresh,w=void 0!==u&&u,k=i.getUserConfirmation,E=void 0===k?g:k,S=i.keyLength,x=void 0===S?6:S,C=e.basename?d(s(e.basename)):"";function T(e){var t=e||{},n=t.key,r=t.state,a=window.location,o=a.pathname+a.search+a.hash;return C&&(o=c(o,C)),f(o,r,n)}function _(){return Math.random().toString(36).substr(2,x)}var L=h();function R(e){(0,r.Z)($,e),$.length=n.length,L.notifyListeners($.location,$.action)}function N(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||P(T(e.state))}function A(){P(T(b()))}var O=!1;function P(e){if(O)O=!1,R();else{L.confirmTransitionTo(e,"POP",E,(function(t){t?R({action:"POP",location:e}):function(e){var t=$.location,n=D.indexOf(t.key);-1===n&&(n=0);var r=D.indexOf(e.key);-1===r&&(r=0);var a=n-r;a&&(O=!0,F(a))}(e)}))}}var I=T(b()),D=[I.key];function M(e){return C+p(e)}function F(e){n.go(e)}var j=0;function B(e){1===(j+=e)&&1===e?(window.addEventListener(v,N),o&&window.addEventListener(y,A)):0===j&&(window.removeEventListener(v,N),o&&window.removeEventListener(y,A))}var z=!1;var $={length:n.length,action:"POP",location:I,createHref:M,push:function(e,t){var r="PUSH",o=f(e,t,_(),$.location);L.confirmTransitionTo(o,r,E,(function(e){if(e){var t=M(o),i=o.key,l=o.state;if(a)if(n.pushState({key:i,state:l},null,t),w)window.location.href=t;else{var s=D.indexOf($.location.key),u=D.slice(0,s+1);u.push(o.key),D=u,R({action:r,location:o})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",o=f(e,t,_(),$.location);L.confirmTransitionTo(o,r,E,(function(e){if(e){var t=M(o),i=o.key,l=o.state;if(a)if(n.replaceState({key:i,state:l},null,t),w)window.location.replace(t);else{var s=D.indexOf($.location.key);-1!==s&&(D[s]=o.key),R({action:r,location:o})}else window.location.replace(t)}}))},go:F,goBack:function(){F(-1)},goForward:function(){F(1)},block:function(e){void 0===e&&(e=!1);var t=L.setPrompt(e);return z||(B(1),z=!0),function(){return z&&(z=!1,B(-1)),t()}},listen:function(e){var t=L.appendListener(e);return B(1),function(){B(-1),t()}}};return $}var k="hashchange",E={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+u(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:u,decodePath:s},slash:{encodePath:s,decodePath:s}};function S(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function x(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function C(e){window.location.replace(S(window.location.href)+"#"+e)}function T(e){void 0===e&&(e={}),m||(0,l.Z)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),a=n.getUserConfirmation,o=void 0===a?g:a,i=n.hashType,u=void 0===i?"slash":i,v=e.basename?d(s(e.basename)):"",y=E[u],b=y.encodePath,w=y.decodePath;function T(){var e=w(x());return v&&(e=c(e,v)),f(e)}var _=h();function L(e){(0,r.Z)(z,e),z.length=t.length,_.notifyListeners(z.location,z.action)}var R=!1,N=null;function A(){var e,t,n=x(),r=b(n);if(n!==r)C(r);else{var a=T(),i=z.location;if(!R&&(t=a,(e=i).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(N===p(a))return;N=null,function(e){if(R)R=!1,L();else{var t="POP";_.confirmTransitionTo(e,t,o,(function(n){n?L({action:t,location:e}):function(e){var t=z.location,n=D.lastIndexOf(p(t));-1===n&&(n=0);var r=D.lastIndexOf(p(e));-1===r&&(r=0);var a=n-r;a&&(R=!0,M(a))}(e)}))}}(a)}}var O=x(),P=b(O);O!==P&&C(P);var I=T(),D=[p(I)];function M(e){t.go(e)}var F=0;function j(e){1===(F+=e)&&1===e?window.addEventListener(k,A):0===F&&window.removeEventListener(k,A)}var B=!1;var z={length:t.length,action:"POP",location:I,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=S(window.location.href)),n+"#"+b(v+p(e))},push:function(e,t){var n="PUSH",r=f(e,void 0,void 0,z.location);_.confirmTransitionTo(r,n,o,(function(e){if(e){var t=p(r),a=b(v+t);if(x()!==a){N=t,function(e){window.location.hash=e}(a);var o=D.lastIndexOf(p(z.location)),i=D.slice(0,o+1);i.push(t),D=i,L({action:n,location:r})}else L()}}))},replace:function(e,t){var n="REPLACE",r=f(e,void 0,void 0,z.location);_.confirmTransitionTo(r,n,o,(function(e){if(e){var t=p(r),a=b(v+t);x()!==a&&(N=t,C(a));var o=D.indexOf(p(z.location));-1!==o&&(D[o]=t),L({action:n,location:r})}}))},go:M,goBack:function(){M(-1)},goForward:function(){M(1)},block:function(e){void 0===e&&(e=!1);var t=_.setPrompt(e);return B||(j(1),B=!0),function(){return B&&(B=!1,j(-1)),t()}},listen:function(e){var t=_.appendListener(e);return j(1),function(){j(-1),t()}}};return z}function _(e,t,n){return Math.min(Math.max(e,t),n)}function L(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,a=t.initialEntries,o=void 0===a?["/"]:a,i=t.initialIndex,l=void 0===i?0:i,s=t.keyLength,u=void 0===s?6:s,c=h();function d(e){(0,r.Z)(w,e),w.length=w.entries.length,c.notifyListeners(w.location,w.action)}function m(){return Math.random().toString(36).substr(2,u)}var g=_(l,0,o.length-1),v=o.map((function(e){return f(e,void 0,"string"==typeof e?m():e.key||m())})),y=p;function b(e){var t=_(w.index+e,0,w.entries.length-1),r=w.entries[t];c.confirmTransitionTo(r,"POP",n,(function(e){e?d({action:"POP",location:r,index:t}):d()}))}var w={length:v.length,action:"POP",location:v[g],index:g,entries:v,createHref:y,push:function(e,t){var r="PUSH",a=f(e,t,m(),w.location);c.confirmTransitionTo(a,r,n,(function(e){if(e){var t=w.index+1,n=w.entries.slice(0);n.length>t?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=f(e,t,m(),w.location);c.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:b,goBack:function(){b(-1)},goForward:function(){b(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),c.setPrompt(e)},listen:function(e){return c.appendListener(e)}};return w}},8679:(e,t,n)=>{"use strict";var r=n(9864),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(h){var a=f(n);a&&a!==h&&e(t,a,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),m=s(n),g=0;g<i.length;++g){var v=i[g];if(!(o[v]||r&&r[v]||m&&m[v]||l&&l[v])){var y=p(n,v);try{u(t,v,y)}catch(b){}}}}return t}},1143:e=>{"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,a,o,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},1336:(e,t,n)=>{var r,a;!function(){var o,i,l,s,u,c,d,p,f,h,m,g,v,y,b,w,k,E,S,x,C,T,_,L,R,N,A,O,P,I,D=function(e){var t=new D.Builder;return t.pipeline.add(D.trimmer,D.stopWordFilter,D.stemmer),t.searchPipeline.add(D.stemmer),e.call(t,t),t.build()};D.version="2.3.9",D.utils={},D.utils.warn=(o=this,function(e){o.console&&console.warn&&console.warn(e)}),D.utils.asString=function(e){return null==e?"":e.toString()},D.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),n=Object.keys(e),r=0;r<n.length;r++){var a=n[r],o=e[a];if(Array.isArray(o))t[a]=o.slice();else{if("string"!=typeof o&&"number"!=typeof o&&"boolean"!=typeof o)throw new TypeError("clone is not deep and does not support nested objects");t[a]=o}}return t},D.FieldRef=function(e,t,n){this.docRef=e,this.fieldName=t,this._stringValue=n},D.FieldRef.joiner="/",D.FieldRef.fromString=function(e){var t=e.indexOf(D.FieldRef.joiner);if(-1===t)throw"malformed field ref string";var n=e.slice(0,t),r=e.slice(t+1);return new D.FieldRef(r,n,e)},D.FieldRef.prototype.toString=function(){return null==this._stringValue&&(this._stringValue=this.fieldName+D.FieldRef.joiner+this.docRef),this._stringValue},D.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var t=0;t<this.length;t++)this.elements[e[t]]=!0}else this.length=0},D.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},D.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},D.Set.prototype.contains=function(e){return!!this.elements[e]},D.Set.prototype.intersect=function(e){var t,n,r,a=[];if(e===D.Set.complete)return this;if(e===D.Set.empty)return e;this.length<e.length?(t=this,n=e):(t=e,n=this),r=Object.keys(t.elements);for(var o=0;o<r.length;o++){var i=r[o];i in n.elements&&a.push(i)}return new D.Set(a)},D.Set.prototype.union=function(e){return e===D.Set.complete?D.Set.complete:e===D.Set.empty?this:new D.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},D.idf=function(e,t){var n=0;for(var r in e)"_index"!=r&&(n+=Object.keys(e[r]).length);var a=(t-n+.5)/(n+.5);return Math.log(1+Math.abs(a))},D.Token=function(e,t){this.str=e||"",this.metadata=t||{}},D.Token.prototype.toString=function(){return this.str},D.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},D.Token.prototype.clone=function(e){return e=e||function(e){return e},new D.Token(e(this.str,this.metadata),this.metadata)},D.tokenizer=function(e,t){if(null==e||null==e)return[];if(Array.isArray(e))return e.map((function(e){return new D.Token(D.utils.asString(e).toLowerCase(),D.utils.clone(t))}));for(var n=e.toString().toLowerCase(),r=n.length,a=[],o=0,i=0;o<=r;o++){var l=o-i;if(n.charAt(o).match(D.tokenizer.separator)||o==r){if(l>0){var s=D.utils.clone(t)||{};s.position=[i,l],s.index=a.length,a.push(new D.Token(n.slice(i,o),s))}i=o+1}}return a},D.tokenizer.separator=/[\s\-]+/,D.Pipeline=function(){this._stack=[]},D.Pipeline.registeredFunctions=Object.create(null),D.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&D.utils.warn("Overwriting existing registered function: "+t),e.label=t,D.Pipeline.registeredFunctions[e.label]=e},D.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||D.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},D.Pipeline.load=function(e){var t=new D.Pipeline;return e.forEach((function(e){var n=D.Pipeline.registeredFunctions[e];if(!n)throw new Error("Cannot load unregistered function: "+e);t.add(n)})),t},D.Pipeline.prototype.add=function(){Array.prototype.slice.call(arguments).forEach((function(e){D.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},D.Pipeline.prototype.after=function(e,t){D.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");n+=1,this._stack.splice(n,0,t)},D.Pipeline.prototype.before=function(e,t){D.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");this._stack.splice(n,0,t)},D.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},D.Pipeline.prototype.run=function(e){for(var t=this._stack.length,n=0;n<t;n++){for(var r=this._stack[n],a=[],o=0;o<e.length;o++){var i=r(e[o],o,e);if(null!=i&&""!==i)if(Array.isArray(i))for(var l=0;l<i.length;l++)a.push(i[l]);else a.push(i)}e=a}return e},D.Pipeline.prototype.runString=function(e,t){var n=new D.Token(e,t);return this.run([n]).map((function(e){return e.toString()}))},D.Pipeline.prototype.reset=function(){this._stack=[]},D.Pipeline.prototype.toJSON=function(){return this._stack.map((function(e){return D.Pipeline.warnIfFunctionNotRegistered(e),e.label}))},D.Vector=function(e){this._magnitude=0,this.elements=e||[]},D.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,n=this.elements.length/2,r=n-t,a=Math.floor(r/2),o=this.elements[2*a];r>1&&(o<e&&(t=a),o>e&&(n=a),o!=e);)r=n-t,a=t+Math.floor(r/2),o=this.elements[2*a];return o==e||o>e?2*a:o<e?2*(a+1):void 0},D.Vector.prototype.insert=function(e,t){this.upsert(e,t,(function(){throw"duplicate index"}))},D.Vector.prototype.upsert=function(e,t,n){this._magnitude=0;var r=this.positionForIndex(e);this.elements[r]==e?this.elements[r+1]=n(this.elements[r+1],t):this.elements.splice(r,0,e,t)},D.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,t=this.elements.length,n=1;n<t;n+=2){var r=this.elements[n];e+=r*r}return this._magnitude=Math.sqrt(e)},D.Vector.prototype.dot=function(e){for(var t=0,n=this.elements,r=e.elements,a=n.length,o=r.length,i=0,l=0,s=0,u=0;s<a&&u<o;)(i=n[s])<(l=r[u])?s+=2:i>l?u+=2:i==l&&(t+=n[s+1]*r[u+1],s+=2,u+=2);return t},D.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},D.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,n=0;t<this.elements.length;t+=2,n++)e[n]=this.elements[t];return e},D.Vector.prototype.toJSON=function(){return this.elements},D.stemmer=(i={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},l={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},d="^("+(u="[^aeiou][^aeiouy]*")+")?"+(c=(s="[aeiouy]")+"[aeiou]*")+u+"("+c+")?$",p="^("+u+")?"+c+u+c+u,f="^("+u+")?"+s,h=new RegExp("^("+u+")?"+c+u),m=new RegExp(p),g=new RegExp(d),v=new RegExp(f),y=/^(.+?)(ss|i)es$/,b=/^(.+?)([^s])s$/,w=/^(.+?)eed$/,k=/^(.+?)(ed|ing)$/,E=/.$/,S=/(at|bl|iz)$/,x=new RegExp("([^aeiouylsz])\\1$"),C=new RegExp("^"+u+s+"[^aeiouwxy]$"),T=/^(.+?[^aeiou])y$/,_=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,L=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,R=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,N=/^(.+?)(s|t)(ion)$/,A=/^(.+?)e$/,O=/ll$/,P=new RegExp("^"+u+s+"[^aeiouwxy]$"),I=function(e){var t,n,r,a,o,s,u;if(e.length<3)return e;if("y"==(r=e.substr(0,1))&&(e=r.toUpperCase()+e.substr(1)),o=b,(a=y).test(e)?e=e.replace(a,"$1$2"):o.test(e)&&(e=e.replace(o,"$1$2")),o=k,(a=w).test(e)){var c=a.exec(e);(a=h).test(c[1])&&(a=E,e=e.replace(a,""))}else o.test(e)&&(t=(c=o.exec(e))[1],(o=v).test(t)&&(s=x,u=C,(o=S).test(e=t)?e+="e":s.test(e)?(a=E,e=e.replace(a,"")):u.test(e)&&(e+="e")));return(a=T).test(e)&&(e=(t=(c=a.exec(e))[1])+"i"),(a=_).test(e)&&(t=(c=a.exec(e))[1],n=c[2],(a=h).test(t)&&(e=t+i[n])),(a=L).test(e)&&(t=(c=a.exec(e))[1],n=c[2],(a=h).test(t)&&(e=t+l[n])),o=N,(a=R).test(e)?(t=(c=a.exec(e))[1],(a=m).test(t)&&(e=t)):o.test(e)&&(t=(c=o.exec(e))[1]+c[2],(o=m).test(t)&&(e=t)),(a=A).test(e)&&(t=(c=a.exec(e))[1],o=g,s=P,((a=m).test(t)||o.test(t)&&!s.test(t))&&(e=t)),o=m,(a=O).test(e)&&o.test(e)&&(a=E,e=e.replace(a,"")),"y"==r&&(e=r.toLowerCase()+e.substr(1)),e},function(e){return e.update(I)}),D.Pipeline.registerFunction(D.stemmer,"stemmer"),D.generateStopWordFilter=function(e){var t=e.reduce((function(e,t){return e[t]=t,e}),{});return function(e){if(e&&t[e.toString()]!==e.toString())return e}},D.stopWordFilter=D.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),D.Pipeline.registerFunction(D.stopWordFilter,"stopWordFilter"),D.trimmer=function(e){return e.update((function(e){return e.replace(/^\W+/,"").replace(/\W+$/,"")}))},D.Pipeline.registerFunction(D.trimmer,"trimmer"),D.TokenSet=function(){this.final=!1,this.edges={},this.id=D.TokenSet._nextId,D.TokenSet._nextId+=1},D.TokenSet._nextId=1,D.TokenSet.fromArray=function(e){for(var t=new D.TokenSet.Builder,n=0,r=e.length;n<r;n++)t.insert(e[n]);return t.finish(),t.root},D.TokenSet.fromClause=function(e){return"editDistance"in e?D.TokenSet.fromFuzzyString(e.term,e.editDistance):D.TokenSet.fromString(e.term)},D.TokenSet.fromFuzzyString=function(e,t){for(var n=new D.TokenSet,r=[{node:n,editsRemaining:t,str:e}];r.length;){var a=r.pop();if(a.str.length>0){var o,i=a.str.charAt(0);i in a.node.edges?o=a.node.edges[i]:(o=new D.TokenSet,a.node.edges[i]=o),1==a.str.length&&(o.final=!0),r.push({node:o,editsRemaining:a.editsRemaining,str:a.str.slice(1)})}if(0!=a.editsRemaining){if("*"in a.node.edges)var l=a.node.edges["*"];else{l=new D.TokenSet;a.node.edges["*"]=l}if(0==a.str.length&&(l.final=!0),r.push({node:l,editsRemaining:a.editsRemaining-1,str:a.str}),a.str.length>1&&r.push({node:a.node,editsRemaining:a.editsRemaining-1,str:a.str.slice(1)}),1==a.str.length&&(a.node.final=!0),a.str.length>=1){if("*"in a.node.edges)var s=a.node.edges["*"];else{s=new D.TokenSet;a.node.edges["*"]=s}1==a.str.length&&(s.final=!0),r.push({node:s,editsRemaining:a.editsRemaining-1,str:a.str.slice(1)})}if(a.str.length>1){var u,c=a.str.charAt(0),d=a.str.charAt(1);d in a.node.edges?u=a.node.edges[d]:(u=new D.TokenSet,a.node.edges[d]=u),1==a.str.length&&(u.final=!0),r.push({node:u,editsRemaining:a.editsRemaining-1,str:c+a.str.slice(2)})}}}return n},D.TokenSet.fromString=function(e){for(var t=new D.TokenSet,n=t,r=0,a=e.length;r<a;r++){var o=e[r],i=r==a-1;if("*"==o)t.edges[o]=t,t.final=i;else{var l=new D.TokenSet;l.final=i,t.edges[o]=l,t=l}}return n},D.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:"",node:this}];t.length;){var n=t.pop(),r=Object.keys(n.node.edges),a=r.length;n.node.final&&(n.prefix.charAt(0),e.push(n.prefix));for(var o=0;o<a;o++){var i=r[o];t.push({prefix:n.prefix.concat(i),node:n.node.edges[i]})}}return e},D.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?"1":"0",t=Object.keys(this.edges).sort(),n=t.length,r=0;r<n;r++){var a=t[r];e=e+a+this.edges[a].id}return e},D.TokenSet.prototype.intersect=function(e){for(var t=new D.TokenSet,n=void 0,r=[{qNode:e,output:t,node:this}];r.length;){n=r.pop();for(var a=Object.keys(n.qNode.edges),o=a.length,i=Object.keys(n.node.edges),l=i.length,s=0;s<o;s++)for(var u=a[s],c=0;c<l;c++){var d=i[c];if(d==u||"*"==u){var p=n.node.edges[d],f=n.qNode.edges[u],h=p.final&&f.final,m=void 0;d in n.output.edges?(m=n.output.edges[d]).final=m.final||h:((m=new D.TokenSet).final=h,n.output.edges[d]=m),r.push({qNode:f,output:m,node:p})}}}return t},D.TokenSet.Builder=function(){this.previousWord="",this.root=new D.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},D.TokenSet.Builder.prototype.insert=function(e){var t,n=0;if(e<this.previousWord)throw new Error("Out of order word insertion");for(var r=0;r<e.length&&r<this.previousWord.length&&e[r]==this.previousWord[r];r++)n++;this.minimize(n),t=0==this.uncheckedNodes.length?this.root:this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(r=n;r<e.length;r++){var a=new D.TokenSet,o=e[r];t.edges[o]=a,this.uncheckedNodes.push({parent:t,char:o,child:a}),t=a}t.final=!0,this.previousWord=e},D.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},D.TokenSet.Builder.prototype.minimize=function(e){for(var t=this.uncheckedNodes.length-1;t>=e;t--){var n=this.uncheckedNodes[t],r=n.child.toString();r in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[r]:(n.child._str=r,this.minimizedNodes[r]=n.child),this.uncheckedNodes.pop()}},D.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},D.Index.prototype.search=function(e){return this.query((function(t){new D.QueryParser(e,t).parse()}))},D.Index.prototype.query=function(e){for(var t=new D.Query(this.fields),n=Object.create(null),r=Object.create(null),a=Object.create(null),o=Object.create(null),i=Object.create(null),l=0;l<this.fields.length;l++)r[this.fields[l]]=new D.Vector;e.call(t,t);for(l=0;l<t.clauses.length;l++){var s=t.clauses[l],u=null,c=D.Set.empty;u=s.usePipeline?this.pipeline.runString(s.term,{fields:s.fields}):[s.term];for(var d=0;d<u.length;d++){var p=u[d];s.term=p;var f=D.TokenSet.fromClause(s),h=this.tokenSet.intersect(f).toArray();if(0===h.length&&s.presence===D.Query.presence.REQUIRED){for(var m=0;m<s.fields.length;m++){o[A=s.fields[m]]=D.Set.empty}break}for(var g=0;g<h.length;g++){var v=h[g],y=this.invertedIndex[v],b=y._index;for(m=0;m<s.fields.length;m++){var w=y[A=s.fields[m]],k=Object.keys(w),E=v+"/"+A,S=new D.Set(k);if(s.presence==D.Query.presence.REQUIRED&&(c=c.union(S),void 0===o[A]&&(o[A]=D.Set.complete)),s.presence!=D.Query.presence.PROHIBITED){if(r[A].upsert(b,s.boost,(function(e,t){return e+t})),!a[E]){for(var x=0;x<k.length;x++){var C,T=k[x],_=new D.FieldRef(T,A),L=w[T];void 0===(C=n[_])?n[_]=new D.MatchData(v,A,L):C.add(v,A,L)}a[E]=!0}}else void 0===i[A]&&(i[A]=D.Set.empty),i[A]=i[A].union(S)}}}if(s.presence===D.Query.presence.REQUIRED)for(m=0;m<s.fields.length;m++){o[A=s.fields[m]]=o[A].intersect(c)}}var R=D.Set.complete,N=D.Set.empty;for(l=0;l<this.fields.length;l++){var A;o[A=this.fields[l]]&&(R=R.intersect(o[A])),i[A]&&(N=N.union(i[A]))}var O=Object.keys(n),P=[],I=Object.create(null);if(t.isNegated()){O=Object.keys(this.fieldVectors);for(l=0;l<O.length;l++){_=O[l];var M=D.FieldRef.fromString(_);n[_]=new D.MatchData}}for(l=0;l<O.length;l++){var F=(M=D.FieldRef.fromString(O[l])).docRef;if(R.contains(F)&&!N.contains(F)){var j,B=this.fieldVectors[M],z=r[M.fieldName].similarity(B);if(void 0!==(j=I[F]))j.score+=z,j.matchData.combine(n[M]);else{var $={ref:F,score:z,matchData:n[M]};I[F]=$,P.push($)}}}return P.sort((function(e,t){return t.score-e.score}))},D.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map((function(e){return[e,this.invertedIndex[e]]}),this),t=Object.keys(this.fieldVectors).map((function(e){return[e,this.fieldVectors[e].toJSON()]}),this);return{version:D.version,fields:this.fields,fieldVectors:t,invertedIndex:e,pipeline:this.pipeline.toJSON()}},D.Index.load=function(e){var t={},n={},r=e.fieldVectors,a=Object.create(null),o=e.invertedIndex,i=new D.TokenSet.Builder,l=D.Pipeline.load(e.pipeline);e.version!=D.version&&D.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+D.version+"' does not match serialized index '"+e.version+"'");for(var s=0;s<r.length;s++){var u=(d=r[s])[0],c=d[1];n[u]=new D.Vector(c)}for(s=0;s<o.length;s++){var d,p=(d=o[s])[0],f=d[1];i.insert(p),a[p]=f}return i.finish(),t.fields=e.fields,t.fieldVectors=n,t.invertedIndex=a,t.tokenSet=i.root,t.pipeline=l,new D.Index(t)},D.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=D.tokenizer,this.pipeline=new D.Pipeline,this.searchPipeline=new D.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},D.Builder.prototype.ref=function(e){this._ref=e},D.Builder.prototype.field=function(e,t){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=t||{}},D.Builder.prototype.b=function(e){this._b=e<0?0:e>1?1:e},D.Builder.prototype.k1=function(e){this._k1=e},D.Builder.prototype.add=function(e,t){var n=e[this._ref],r=Object.keys(this._fields);this._documents[n]=t||{},this.documentCount+=1;for(var a=0;a<r.length;a++){var o=r[a],i=this._fields[o].extractor,l=i?i(e):e[o],s=this.tokenizer(l,{fields:[o]}),u=this.pipeline.run(s),c=new D.FieldRef(n,o),d=Object.create(null);this.fieldTermFrequencies[c]=d,this.fieldLengths[c]=0,this.fieldLengths[c]+=u.length;for(var p=0;p<u.length;p++){var f=u[p];if(null==d[f]&&(d[f]=0),d[f]+=1,null==this.invertedIndex[f]){var h=Object.create(null);h._index=this.termIndex,this.termIndex+=1;for(var m=0;m<r.length;m++)h[r[m]]=Object.create(null);this.invertedIndex[f]=h}null==this.invertedIndex[f][o][n]&&(this.invertedIndex[f][o][n]=Object.create(null));for(var g=0;g<this.metadataWhitelist.length;g++){var v=this.metadataWhitelist[g],y=f.metadata[v];null==this.invertedIndex[f][o][n][v]&&(this.invertedIndex[f][o][n][v]=[]),this.invertedIndex[f][o][n][v].push(y)}}}},D.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),t=e.length,n={},r={},a=0;a<t;a++){var o=D.FieldRef.fromString(e[a]),i=o.fieldName;r[i]||(r[i]=0),r[i]+=1,n[i]||(n[i]=0),n[i]+=this.fieldLengths[o]}var l=Object.keys(this._fields);for(a=0;a<l.length;a++){var s=l[a];n[s]=n[s]/r[s]}this.averageFieldLength=n},D.Builder.prototype.createFieldVectors=function(){for(var e={},t=Object.keys(this.fieldTermFrequencies),n=t.length,r=Object.create(null),a=0;a<n;a++){for(var o=D.FieldRef.fromString(t[a]),i=o.fieldName,l=this.fieldLengths[o],s=new D.Vector,u=this.fieldTermFrequencies[o],c=Object.keys(u),d=c.length,p=this._fields[i].boost||1,f=this._documents[o.docRef].boost||1,h=0;h<d;h++){var m,g,v,y=c[h],b=u[y],w=this.invertedIndex[y]._index;void 0===r[y]?(m=D.idf(this.invertedIndex[y],this.documentCount),r[y]=m):m=r[y],g=m*((this._k1+1)*b)/(this._k1*(1-this._b+this._b*(l/this.averageFieldLength[i]))+b),g*=p,g*=f,v=Math.round(1e3*g)/1e3,s.insert(w,v)}e[o]=s}this.fieldVectors=e},D.Builder.prototype.createTokenSet=function(){this.tokenSet=D.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},D.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new D.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},D.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},D.MatchData=function(e,t,n){for(var r=Object.create(null),a=Object.keys(n||{}),o=0;o<a.length;o++){var i=a[o];r[i]=n[i].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=r)},D.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),n=0;n<t.length;n++){var r=t[n],a=Object.keys(e.metadata[r]);null==this.metadata[r]&&(this.metadata[r]=Object.create(null));for(var o=0;o<a.length;o++){var i=a[o],l=Object.keys(e.metadata[r][i]);null==this.metadata[r][i]&&(this.metadata[r][i]=Object.create(null));for(var s=0;s<l.length;s++){var u=l[s];null==this.metadata[r][i][u]?this.metadata[r][i][u]=e.metadata[r][i][u]:this.metadata[r][i][u]=this.metadata[r][i][u].concat(e.metadata[r][i][u])}}}},D.MatchData.prototype.add=function(e,t,n){if(!(e in this.metadata))return this.metadata[e]=Object.create(null),void(this.metadata[e][t]=n);if(t in this.metadata[e])for(var r=Object.keys(n),a=0;a<r.length;a++){var o=r[a];o in this.metadata[e][t]?this.metadata[e][t][o]=this.metadata[e][t][o].concat(n[o]):this.metadata[e][t][o]=n[o]}else this.metadata[e][t]=n},D.Query=function(e){this.clauses=[],this.allFields=e},D.Query.wildcard=new String("*"),D.Query.wildcard.NONE=0,D.Query.wildcard.LEADING=1,D.Query.wildcard.TRAILING=2,D.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},D.Query.prototype.clause=function(e){return"fields"in e||(e.fields=this.allFields),"boost"in e||(e.boost=1),"usePipeline"in e||(e.usePipeline=!0),"wildcard"in e||(e.wildcard=D.Query.wildcard.NONE),e.wildcard&D.Query.wildcard.LEADING&&e.term.charAt(0)!=D.Query.wildcard&&(e.term="*"+e.term),e.wildcard&D.Query.wildcard.TRAILING&&e.term.slice(-1)!=D.Query.wildcard&&(e.term=e.term+"*"),"presence"in e||(e.presence=D.Query.presence.OPTIONAL),this.clauses.push(e),this},D.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=D.Query.presence.PROHIBITED)return!1;return!0},D.Query.prototype.term=function(e,t){if(Array.isArray(e))return e.forEach((function(e){this.term(e,D.utils.clone(t))}),this),this;var n=t||{};return n.term=e.toString(),this.clause(n),this},D.QueryParseError=function(e,t,n){this.name="QueryParseError",this.message=e,this.start=t,this.end=n},D.QueryParseError.prototype=new Error,D.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},D.QueryLexer.prototype.run=function(){for(var e=D.QueryLexer.lexText;e;)e=e(this)},D.QueryLexer.prototype.sliceString=function(){for(var e=[],t=this.start,n=this.pos,r=0;r<this.escapeCharPositions.length;r++)n=this.escapeCharPositions[r],e.push(this.str.slice(t,n)),t=n+1;return e.push(this.str.slice(t,this.pos)),this.escapeCharPositions.length=0,e.join("")},D.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},D.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},D.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return D.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},D.QueryLexer.prototype.width=function(){return this.pos-this.start},D.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},D.QueryLexer.prototype.backup=function(){this.pos-=1},D.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=D.QueryLexer.EOS&&this.backup()},D.QueryLexer.prototype.more=function(){return this.pos<this.length},D.QueryLexer.EOS="EOS",D.QueryLexer.FIELD="FIELD",D.QueryLexer.TERM="TERM",D.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",D.QueryLexer.BOOST="BOOST",D.QueryLexer.PRESENCE="PRESENCE",D.QueryLexer.lexField=function(e){return e.backup(),e.emit(D.QueryLexer.FIELD),e.ignore(),D.QueryLexer.lexText},D.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(D.QueryLexer.TERM)),e.ignore(),e.more())return D.QueryLexer.lexText},D.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(D.QueryLexer.EDIT_DISTANCE),D.QueryLexer.lexText},D.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(D.QueryLexer.BOOST),D.QueryLexer.lexText},D.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(D.QueryLexer.TERM)},D.QueryLexer.termSeparator=D.tokenizer.separator,D.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==D.QueryLexer.EOS)return D.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return D.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(D.QueryLexer.TERM),D.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(D.QueryLexer.TERM),D.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(D.QueryLexer.PRESENCE),D.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(D.QueryLexer.PRESENCE),D.QueryLexer.lexText;if(t.match(D.QueryLexer.termSeparator))return D.QueryLexer.lexTerm}else e.escapeCharacter()}},D.QueryParser=function(e,t){this.lexer=new D.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},D.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=D.QueryParser.parseClause;e;)e=e(this);return this.query},D.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},D.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},D.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},D.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case D.QueryLexer.PRESENCE:return D.QueryParser.parsePresence;case D.QueryLexer.FIELD:return D.QueryParser.parseField;case D.QueryLexer.TERM:return D.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(n+=" with value '"+t.str+"'"),new D.QueryParseError(n,t.start,t.end)}},D.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=D.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=D.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+t.str+"'";throw new D.QueryParseError(n,t.start,t.end)}var r=e.peekLexeme();if(null==r){n="expecting term or field, found nothing";throw new D.QueryParseError(n,t.start,t.end)}switch(r.type){case D.QueryLexer.FIELD:return D.QueryParser.parseField;case D.QueryLexer.TERM:return D.QueryParser.parseTerm;default:n="expecting term or field, found '"+r.type+"'";throw new D.QueryParseError(n,r.start,r.end)}}},D.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var n=e.query.allFields.map((function(e){return"'"+e+"'"})).join(", "),r="unrecognised field '"+t.str+"', possible fields: "+n;throw new D.QueryParseError(r,t.start,t.end)}e.currentClause.fields=[t.str];var a=e.peekLexeme();if(null==a){r="expecting term, found nothing";throw new D.QueryParseError(r,t.start,t.end)}if(a.type===D.QueryLexer.TERM)return D.QueryParser.parseTerm;r="expecting term, found '"+a.type+"'";throw new D.QueryParseError(r,a.start,a.end)}},D.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(null!=n)switch(n.type){case D.QueryLexer.TERM:return e.nextClause(),D.QueryParser.parseTerm;case D.QueryLexer.FIELD:return e.nextClause(),D.QueryParser.parseField;case D.QueryLexer.EDIT_DISTANCE:return D.QueryParser.parseEditDistance;case D.QueryLexer.BOOST:return D.QueryParser.parseBoost;case D.QueryLexer.PRESENCE:return e.nextClause(),D.QueryParser.parsePresence;default:var r="Unexpected lexeme type '"+n.type+"'";throw new D.QueryParseError(r,n.start,n.end)}else e.nextClause()}},D.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="edit distance must be numeric";throw new D.QueryParseError(r,t.start,t.end)}e.currentClause.editDistance=n;var a=e.peekLexeme();if(null!=a)switch(a.type){case D.QueryLexer.TERM:return e.nextClause(),D.QueryParser.parseTerm;case D.QueryLexer.FIELD:return e.nextClause(),D.QueryParser.parseField;case D.QueryLexer.EDIT_DISTANCE:return D.QueryParser.parseEditDistance;case D.QueryLexer.BOOST:return D.QueryParser.parseBoost;case D.QueryLexer.PRESENCE:return e.nextClause(),D.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+a.type+"'";throw new D.QueryParseError(r,a.start,a.end)}else e.nextClause()}},D.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="boost must be numeric";throw new D.QueryParseError(r,t.start,t.end)}e.currentClause.boost=n;var a=e.peekLexeme();if(null!=a)switch(a.type){case D.QueryLexer.TERM:return e.nextClause(),D.QueryParser.parseTerm;case D.QueryLexer.FIELD:return e.nextClause(),D.QueryParser.parseField;case D.QueryLexer.EDIT_DISTANCE:return D.QueryParser.parseEditDistance;case D.QueryLexer.BOOST:return D.QueryParser.parseBoost;case D.QueryLexer.PRESENCE:return e.nextClause(),D.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+a.type+"'";throw new D.QueryParseError(r,a.start,a.end)}else e.nextClause()}},void 0===(a="function"==typeof(r=function(){return D})?r.call(t,n,t,e):r)||(e.exports=a)}()},813:function(e){e.exports=function(){"use strict";var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},n=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},a=function(){function e(n){var r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5e3;t(this,e),this.ctx=n,this.iframes=r,this.exclude=a,this.iframesTimeout=o}return n(e,[{key:"getContexts",value:function(){var e=[];return(void 0!==this.ctx&&this.ctx?NodeList.prototype.isPrototypeOf(this.ctx)?Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?this.ctx:"string"==typeof this.ctx?Array.prototype.slice.call(document.querySelectorAll(this.ctx)):[this.ctx]:[]).forEach((function(t){var n=e.filter((function(e){return e.contains(t)})).length>0;-1!==e.indexOf(t)||n||e.push(t)})),e}},{key:"getIframeContents",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},r=void 0;try{var a=e.contentWindow;if(r=a.document,!a||!r)throw new Error("iframe inaccessible")}catch(o){n()}r&&t(r)}},{key:"isIframeBlank",value:function(e){var t="about:blank",n=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&n!==t&&n}},{key:"observeIframeLoad",value:function(e,t,n){var r=this,a=!1,o=null,i=function i(){if(!a){a=!0,clearTimeout(o);try{r.isIframeBlank(e)||(e.removeEventListener("load",i),r.getIframeContents(e,t,n))}catch(l){n()}}};e.addEventListener("load",i),o=setTimeout(i,this.iframesTimeout)}},{key:"onIframeReady",value:function(e,t,n){try{"complete"===e.contentWindow.document.readyState?this.isIframeBlank(e)?this.observeIframeLoad(e,t,n):this.getIframeContents(e,t,n):this.observeIframeLoad(e,t,n)}catch(r){n()}}},{key:"waitForIframes",value:function(e,t){var n=this,r=0;this.forEachIframe(e,(function(){return!0}),(function(e){r++,n.waitForIframes(e.querySelector("html"),(function(){--r||t()}))}),(function(e){e||t()}))}},{key:"forEachIframe",value:function(t,n,r){var a=this,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},i=t.querySelectorAll("iframe"),l=i.length,s=0;i=Array.prototype.slice.call(i);var u=function(){--l<=0&&o(s)};l||u(),i.forEach((function(t){e.matches(t,a.exclude)?u():a.onIframeReady(t,(function(e){n(t)&&(s++,r(e)),u()}),u)}))}},{key:"createIterator",value:function(e,t,n){return document.createNodeIterator(e,t,n,!1)}},{key:"createInstanceOnIframe",value:function(t){return new e(t.querySelector("html"),this.iframes)}},{key:"compareNodeIframe",value:function(e,t,n){if(e.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_PRECEDING){if(null===t)return!0;if(t.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_FOLLOWING)return!0}return!1}},{key:"getIteratorNode",value:function(e){var t=e.previousNode();return{prevNode:t,node:(null===t||e.nextNode())&&e.nextNode()}}},{key:"checkIframeFilter",value:function(e,t,n,r){var a=!1,o=!1;return r.forEach((function(e,t){e.val===n&&(a=t,o=e.handled)})),this.compareNodeIframe(e,t,n)?(!1!==a||o?!1===a||o||(r[a].handled=!0):r.push({val:n,handled:!0}),!0):(!1===a&&r.push({val:n,handled:!1}),!1)}},{key:"handleOpenIframes",value:function(e,t,n,r){var a=this;e.forEach((function(e){e.handled||a.getIframeContents(e.val,(function(e){a.createInstanceOnIframe(e).forEachNode(t,n,r)}))}))}},{key:"iterateThroughNodes",value:function(e,t,n,r,a){for(var o=this,i=this.createIterator(t,e,r),l=[],s=[],u=void 0,c=void 0,d=function(){var e=o.getIteratorNode(i);return c=e.prevNode,u=e.node};d();)this.iframes&&this.forEachIframe(t,(function(e){return o.checkIframeFilter(u,c,e,l)}),(function(t){o.createInstanceOnIframe(t).forEachNode(e,(function(e){return s.push(e)}),r)})),s.push(u);s.forEach((function(e){n(e)})),this.iframes&&this.handleOpenIframes(l,e,n,r),a()}},{key:"forEachNode",value:function(e,t,n){var r=this,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},o=this.getContexts(),i=o.length;i||a(),o.forEach((function(o){var l=function(){r.iterateThroughNodes(e,o,t,n,(function(){--i<=0&&a()}))};r.iframes?r.waitForIframes(o,l):l()}))}}],[{key:"matches",value:function(e,t){var n="string"==typeof t?[t]:t,r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(r){var a=!1;return n.every((function(t){return!r.call(e,t)||(a=!0,!1)})),a}return!1}}]),e}(),o=function(){function o(e){t(this,o),this.ctx=e,this.ie=!1;var n=window.navigator.userAgent;(n.indexOf("MSIE")>-1||n.indexOf("Trident")>-1)&&(this.ie=!0)}return n(o,[{key:"log",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"debug",r=this.opt.log;this.opt.debug&&"object"===(void 0===r?"undefined":e(r))&&"function"==typeof r[n]&&r[n]("mark.js: "+t)}},{key:"escapeStr",value:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}},{key:"createRegExp",value:function(e){return"disabled"!==this.opt.wildcards&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),"disabled"!==this.opt.wildcards&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e)}},{key:"createSynonymsRegExp",value:function(e){var t=this.opt.synonyms,n=this.opt.caseSensitive?"":"i",r=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(var a in t)if(t.hasOwnProperty(a)){var o=t[a],i="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(a):this.escapeStr(a),l="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(o):this.escapeStr(o);""!==i&&""!==l&&(e=e.replace(new RegExp("("+this.escapeStr(i)+"|"+this.escapeStr(l)+")","gm"+n),r+"("+this.processSynomyms(i)+"|"+this.processSynomyms(l)+")"+r))}return e}},{key:"processSynomyms",value:function(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}},{key:"setupWildcardsRegExp",value:function(e){return(e=e.replace(/(?:\\)*\?/g,(function(e){return"\\"===e.charAt(0)?"?":"\x01"}))).replace(/(?:\\)*\*/g,(function(e){return"\\"===e.charAt(0)?"*":"\x02"}))}},{key:"createWildcardsRegExp",value:function(e){var t="withSpaces"===this.opt.wildcards;return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}},{key:"setupIgnoreJoinersRegExp",value:function(e){return e.replace(/[^(|)\\]/g,(function(e,t,n){var r=n.charAt(t+1);return/[(|)\\]/.test(r)||""===r?e:e+"\0"}))}},{key:"createJoinersRegExp",value:function(e){var t=[],n=this.opt.ignorePunctuation;return Array.isArray(n)&&n.length&&t.push(this.escapeStr(n.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join("["+t.join("")+"]*"):e}},{key:"createDiacriticsRegExp",value:function(e){var t=this.opt.caseSensitive?"":"i",n=this.opt.caseSensitive?["a\xe0\xe1\u1ea3\xe3\u1ea1\u0103\u1eb1\u1eaf\u1eb3\u1eb5\u1eb7\xe2\u1ea7\u1ea5\u1ea9\u1eab\u1ead\xe4\xe5\u0101\u0105","A\xc0\xc1\u1ea2\xc3\u1ea0\u0102\u1eb0\u1eae\u1eb2\u1eb4\u1eb6\xc2\u1ea6\u1ea4\u1ea8\u1eaa\u1eac\xc4\xc5\u0100\u0104","c\xe7\u0107\u010d","C\xc7\u0106\u010c","d\u0111\u010f","D\u0110\u010e","e\xe8\xe9\u1ebb\u1ebd\u1eb9\xea\u1ec1\u1ebf\u1ec3\u1ec5\u1ec7\xeb\u011b\u0113\u0119","E\xc8\xc9\u1eba\u1ebc\u1eb8\xca\u1ec0\u1ebe\u1ec2\u1ec4\u1ec6\xcb\u011a\u0112\u0118","i\xec\xed\u1ec9\u0129\u1ecb\xee\xef\u012b","I\xcc\xcd\u1ec8\u0128\u1eca\xce\xcf\u012a","l\u0142","L\u0141","n\xf1\u0148\u0144","N\xd1\u0147\u0143","o\xf2\xf3\u1ecf\xf5\u1ecd\xf4\u1ed3\u1ed1\u1ed5\u1ed7\u1ed9\u01a1\u1edf\u1ee1\u1edb\u1edd\u1ee3\xf6\xf8\u014d","O\xd2\xd3\u1ece\xd5\u1ecc\xd4\u1ed2\u1ed0\u1ed4\u1ed6\u1ed8\u01a0\u1ede\u1ee0\u1eda\u1edc\u1ee2\xd6\xd8\u014c","r\u0159","R\u0158","s\u0161\u015b\u0219\u015f","S\u0160\u015a\u0218\u015e","t\u0165\u021b\u0163","T\u0164\u021a\u0162","u\xf9\xfa\u1ee7\u0169\u1ee5\u01b0\u1eeb\u1ee9\u1eed\u1eef\u1ef1\xfb\xfc\u016f\u016b","U\xd9\xda\u1ee6\u0168\u1ee4\u01af\u1eea\u1ee8\u1eec\u1eee\u1ef0\xdb\xdc\u016e\u016a","y\xfd\u1ef3\u1ef7\u1ef9\u1ef5\xff","Y\xdd\u1ef2\u1ef6\u1ef8\u1ef4\u0178","z\u017e\u017c\u017a","Z\u017d\u017b\u0179"]:["a\xe0\xe1\u1ea3\xe3\u1ea1\u0103\u1eb1\u1eaf\u1eb3\u1eb5\u1eb7\xe2\u1ea7\u1ea5\u1ea9\u1eab\u1ead\xe4\xe5\u0101\u0105A\xc0\xc1\u1ea2\xc3\u1ea0\u0102\u1eb0\u1eae\u1eb2\u1eb4\u1eb6\xc2\u1ea6\u1ea4\u1ea8\u1eaa\u1eac\xc4\xc5\u0100\u0104","c\xe7\u0107\u010dC\xc7\u0106\u010c","d\u0111\u010fD\u0110\u010e","e\xe8\xe9\u1ebb\u1ebd\u1eb9\xea\u1ec1\u1ebf\u1ec3\u1ec5\u1ec7\xeb\u011b\u0113\u0119E\xc8\xc9\u1eba\u1ebc\u1eb8\xca\u1ec0\u1ebe\u1ec2\u1ec4\u1ec6\xcb\u011a\u0112\u0118","i\xec\xed\u1ec9\u0129\u1ecb\xee\xef\u012bI\xcc\xcd\u1ec8\u0128\u1eca\xce\xcf\u012a","l\u0142L\u0141","n\xf1\u0148\u0144N\xd1\u0147\u0143","o\xf2\xf3\u1ecf\xf5\u1ecd\xf4\u1ed3\u1ed1\u1ed5\u1ed7\u1ed9\u01a1\u1edf\u1ee1\u1edb\u1edd\u1ee3\xf6\xf8\u014dO\xd2\xd3\u1ece\xd5\u1ecc\xd4\u1ed2\u1ed0\u1ed4\u1ed6\u1ed8\u01a0\u1ede\u1ee0\u1eda\u1edc\u1ee2\xd6\xd8\u014c","r\u0159R\u0158","s\u0161\u015b\u0219\u015fS\u0160\u015a\u0218\u015e","t\u0165\u021b\u0163T\u0164\u021a\u0162","u\xf9\xfa\u1ee7\u0169\u1ee5\u01b0\u1eeb\u1ee9\u1eed\u1eef\u1ef1\xfb\xfc\u016f\u016bU\xd9\xda\u1ee6\u0168\u1ee4\u01af\u1eea\u1ee8\u1eec\u1eee\u1ef0\xdb\xdc\u016e\u016a","y\xfd\u1ef3\u1ef7\u1ef9\u1ef5\xffY\xdd\u1ef2\u1ef6\u1ef8\u1ef4\u0178","z\u017e\u017c\u017aZ\u017d\u017b\u0179"],r=[];return e.split("").forEach((function(a){n.every((function(n){if(-1!==n.indexOf(a)){if(r.indexOf(n)>-1)return!1;e=e.replace(new RegExp("["+n+"]","gm"+t),"["+n+"]"),r.push(n)}return!0}))})),e}},{key:"createMergedBlanksRegExp",value:function(e){return e.replace(/[\s]+/gim,"[\\s]+")}},{key:"createAccuracyRegExp",value:function(e){var t=this,n="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\xa1\xbf",r=this.opt.accuracy,a="string"==typeof r?r:r.value,o="string"==typeof r?[]:r.limiters,i="";switch(o.forEach((function(e){i+="|"+t.escapeStr(e)})),a){case"partially":default:return"()("+e+")";case"complementary":return"()([^"+(i="\\s"+(i||this.escapeStr(n)))+"]*"+e+"[^"+i+"]*)";case"exactly":return"(^|\\s"+i+")("+e+")(?=$|\\s"+i+")"}}},{key:"getSeparatedKeywords",value:function(e){var t=this,n=[];return e.forEach((function(e){t.opt.separateWordSearch?e.split(" ").forEach((function(e){e.trim()&&-1===n.indexOf(e)&&n.push(e)})):e.trim()&&-1===n.indexOf(e)&&n.push(e)})),{keywords:n.sort((function(e,t){return t.length-e.length})),length:n.length}}},{key:"isNumeric",value:function(e){return Number(parseFloat(e))==e}},{key:"checkRanges",value:function(e){var t=this;if(!Array.isArray(e)||"[object Object]"!==Object.prototype.toString.call(e[0]))return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];var n=[],r=0;return e.sort((function(e,t){return e.start-t.start})).forEach((function(e){var a=t.callNoMatchOnInvalidRanges(e,r),o=a.start,i=a.end;a.valid&&(e.start=o,e.length=i-o,n.push(e),r=i)})),n}},{key:"callNoMatchOnInvalidRanges",value:function(e,t){var n=void 0,r=void 0,a=!1;return e&&void 0!==e.start?(r=(n=parseInt(e.start,10))+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&r-t>0&&r-n>0?a=!0:(this.log("Ignoring invalid or overlapping range: "+JSON.stringify(e)),this.opt.noMatch(e))):(this.log("Ignoring invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:n,end:r,valid:a}}},{key:"checkWhitespaceRanges",value:function(e,t,n){var r=void 0,a=!0,o=n.length,i=t-o,l=parseInt(e.start,10)-i;return(r=(l=l>o?o:l)+parseInt(e.length,10))>o&&(r=o,this.log("End range automatically set to the max value of "+o)),l<0||r-l<0||l>o||r>o?(a=!1,this.log("Invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)):""===n.substring(l,r).replace(/\s+/g,"")&&(a=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:l,end:r,valid:a}}},{key:"getTextNodes",value:function(e){var t=this,n="",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,(function(e){r.push({start:n.length,end:(n+=e.textContent).length,node:e})}),(function(e){return t.matchesExclude(e.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}),(function(){e({value:n,nodes:r})}))}},{key:"matchesExclude",value:function(e){return a.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}},{key:"wrapRangeInTextNode",value:function(e,t,n){var r=this.opt.element?this.opt.element:"mark",a=e.splitText(t),o=a.splitText(n-t),i=document.createElement(r);return i.setAttribute("data-markjs","true"),this.opt.className&&i.setAttribute("class",this.opt.className),i.textContent=a.textContent,a.parentNode.replaceChild(i,a),o}},{key:"wrapRangeInMappedTextNode",value:function(e,t,n,r,a){var o=this;e.nodes.every((function(i,l){var s=e.nodes[l+1];if(void 0===s||s.start>t){if(!r(i.node))return!1;var u=t-i.start,c=(n>i.end?i.end:n)-i.start,d=e.value.substr(0,i.start),p=e.value.substr(c+i.start);if(i.node=o.wrapRangeInTextNode(i.node,u,c),e.value=d+p,e.nodes.forEach((function(t,n){n>=l&&(e.nodes[n].start>0&&n!==l&&(e.nodes[n].start-=c),e.nodes[n].end-=c)})),n-=c,a(i.node.previousSibling,i.start),!(n>i.end))return!1;t=i.end}return!0}))}},{key:"wrapMatches",value:function(e,t,n,r,a){var o=this,i=0===t?0:t+1;this.getTextNodes((function(t){t.nodes.forEach((function(t){t=t.node;for(var a=void 0;null!==(a=e.exec(t.textContent))&&""!==a[i];)if(n(a[i],t)){var l=a.index;if(0!==i)for(var s=1;s<i;s++)l+=a[s].length;t=o.wrapRangeInTextNode(t,l,l+a[i].length),r(t.previousSibling),e.lastIndex=0}})),a()}))}},{key:"wrapMatchesAcrossElements",value:function(e,t,n,r,a){var o=this,i=0===t?0:t+1;this.getTextNodes((function(t){for(var l=void 0;null!==(l=e.exec(t.value))&&""!==l[i];){var s=l.index;if(0!==i)for(var u=1;u<i;u++)s+=l[u].length;var c=s+l[i].length;o.wrapRangeInMappedTextNode(t,s,c,(function(e){return n(l[i],e)}),(function(t,n){e.lastIndex=n,r(t)}))}a()}))}},{key:"wrapRangeFromIndex",value:function(e,t,n,r){var a=this;this.getTextNodes((function(o){var i=o.value.length;e.forEach((function(e,r){var l=a.checkWhitespaceRanges(e,i,o.value),s=l.start,u=l.end;l.valid&&a.wrapRangeInMappedTextNode(o,s,u,(function(n){return t(n,e,o.value.substring(s,u),r)}),(function(t){n(t,e)}))})),r()}))}},{key:"unwrapMatches",value:function(e){for(var t=e.parentNode,n=document.createDocumentFragment();e.firstChild;)n.appendChild(e.removeChild(e.firstChild));t.replaceChild(n,e),this.ie?this.normalizeTextNode(t):t.normalize()}},{key:"normalizeTextNode",value:function(e){if(e){if(3===e.nodeType)for(;e.nextSibling&&3===e.nextSibling.nodeType;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}},{key:"markRegExp",value:function(e,t){var n=this;this.opt=t,this.log('Searching with expression "'+e+'"');var r=0,a="wrapMatches",o=function(e){r++,n.opt.each(e)};this.opt.acrossElements&&(a="wrapMatchesAcrossElements"),this[a](e,this.opt.ignoreGroups,(function(e,t){return n.opt.filter(t,e,r)}),o,(function(){0===r&&n.opt.noMatch(e),n.opt.done(r)}))}},{key:"mark",value:function(e,t){var n=this;this.opt=t;var r=0,a="wrapMatches",o=this.getSeparatedKeywords("string"==typeof e?[e]:e),i=o.keywords,l=o.length,s=this.opt.caseSensitive?"":"i",u=function e(t){var o=new RegExp(n.createRegExp(t),"gm"+s),u=0;n.log('Searching with expression "'+o+'"'),n[a](o,1,(function(e,a){return n.opt.filter(a,t,r,u)}),(function(e){u++,r++,n.opt.each(e)}),(function(){0===u&&n.opt.noMatch(t),i[l-1]===t?n.opt.done(r):e(i[i.indexOf(t)+1])}))};this.opt.acrossElements&&(a="wrapMatchesAcrossElements"),0===l?this.opt.done(r):u(i[0])}},{key:"markRanges",value:function(e,t){var n=this;this.opt=t;var r=0,a=this.checkRanges(e);a&&a.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(a)),this.wrapRangeFromIndex(a,(function(e,t,r,a){return n.opt.filter(e,t,r,a)}),(function(e,t){r++,n.opt.each(e,t)}),(function(){n.opt.done(r)}))):this.opt.done(r)}},{key:"unmark",value:function(e){var t=this;this.opt=e;var n=this.opt.element?this.opt.element:"*";n+="[data-markjs]",this.opt.className&&(n+="."+this.opt.className),this.log('Removal selector "'+n+'"'),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,(function(e){t.unwrapMatches(e)}),(function(e){var r=a.matches(e,n),o=t.matchesExclude(e);return!r||o?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}),this.opt.done)}},{key:"opt",set:function(e){this._opt=r({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:function(){},noMatch:function(){},filter:function(){return!0},done:function(){},debug:!1,log:window.console},e)},get:function(){return this._opt}},{key:"iterator",get:function(){return new a(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}}]),o}();function i(e){var t=this,n=new o(e);return this.mark=function(e,r){return n.mark(e,r),t},this.markRegExp=function(e,r){return n.markRegExp(e,r),t},this.markRanges=function(e,r){return n.markRanges(e,r),t},this.unmark=function(e){return n.unmark(e),t},this}return i}()},2497:(e,t,n)=>{"use strict";n.r(t)},2295:(e,t,n)=>{"use strict";n.r(t)},4865:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function a(e,t,n){return e<t?t:e>n?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&f(a),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function u(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=p(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},7418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(e,a){for(var o,i,l=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),s=1;s<arguments.length;s++){for(var u in o=Object(arguments[s]))n.call(o,u)&&(l[u]=o[u]);if(t){i=t(o);for(var c=0;c<i.length;c++)r.call(o,i[c])&&(l[i[c]]=o[i[c]])}}return l}},4779:(e,t,n)=>{var r=n(5826);e.exports=f,e.exports.parse=o,e.exports.compile=function(e,t){return l(o(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=p;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,i=0,l="",c=t&&t.delimiter||"/";null!=(n=a.exec(e));){var d=n[0],p=n[1],f=n.index;if(l+=e.slice(i,f),i=f+d.length,p)l+=p[1];else{var h=e[i],m=n[2],g=n[3],v=n[4],y=n[5],b=n[6],w=n[7];l&&(r.push(l),l="");var k=null!=m&&null!=h&&h!==m,E="+"===b||"*"===b,S="?"===b||"*"===b,x=n[2]||c,C=v||y;r.push({name:g||o++,prefix:m||"",delimiter:x,optional:S,repeat:E,partial:k,asterisk:!!w,pattern:C?u(C):w?".*":"[^"+s(x)+"]+?"})}}return i<e.length&&(l+=e.substr(i)),l&&r.push(l),r}function i(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function l(e,t){for(var n=new Array(e.length),a=0;a<e.length;a++)"object"==typeof e[a]&&(n[a]=new RegExp("^(?:"+e[a].pattern+")$",d(t)));return function(t,a){for(var o="",l=t||{},s=(a||{}).pretty?i:encodeURIComponent,u=0;u<e.length;u++){var c=e[u];if("string"!=typeof c){var d,p=l[c.name];if(null==p){if(c.optional){c.partial&&(o+=c.prefix);continue}throw new TypeError('Expected "'+c.name+'" to be defined')}if(r(p)){if(!c.repeat)throw new TypeError('Expected "'+c.name+'" to not repeat, but received `'+JSON.stringify(p)+"`");if(0===p.length){if(c.optional)continue;throw new TypeError('Expected "'+c.name+'" to not be empty')}for(var f=0;f<p.length;f++){if(d=s(p[f]),!n[u].test(d))throw new TypeError('Expected all "'+c.name+'" to match "'+c.pattern+'", but received `'+JSON.stringify(d)+"`");o+=(0===f?c.prefix:c.delimiter)+d}}else{if(d=c.asterisk?encodeURI(p).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):s(p),!n[u].test(d))throw new TypeError('Expected "'+c.name+'" to match "'+c.pattern+'", but received "'+d+'"');o+=c.prefix+d}}else o+=c}return o}}function s(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function u(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function c(e,t){return e.keys=t,e}function d(e){return e&&e.sensitive?"":"i"}function p(e,t,n){r(t)||(n=t||n,t=[]);for(var a=(n=n||{}).strict,o=!1!==n.end,i="",l=0;l<e.length;l++){var u=e[l];if("string"==typeof u)i+=s(u);else{var p=s(u.prefix),f="(?:"+u.pattern+")";t.push(u),u.repeat&&(f+="(?:"+p+f+")*"),i+=f=u.optional?u.partial?p+"("+f+")?":"(?:"+p+"("+f+"))?":p+"("+f+")"}}var h=s(n.delimiter||"/"),m=i.slice(-h.length)===h;return a||(i=(m?i.slice(0,-h.length):i)+"(?:"+h+"(?=$))?"),i+=o?"$":a&&m?"":"(?="+h+"|$)",c(new RegExp("^"+i,d(n)),t)}function f(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return c(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],a=0;a<e.length;a++)r.push(f(e[a],t,n).source);return c(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return p(o(e,n),t,n)}(e,t,n)}},7410:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function e(t,n){var a,o;switch(n=n||{},r.util.type(t)){case"Object":if(o=r.util.objId(t),n[o])return n[o];for(var i in a={},n[o]=a,t)t.hasOwnProperty(i)&&(a[i]=e(t[i],n));return a;case"Array":return o=r.util.objId(t),n[o]?n[o]:(a=[],n[o]=a,t.forEach((function(t,r){a[r]=e(t,n)})),a);default:return t}},getLanguage:function(t){for(;t;){var n=e.exec(t.className);if(n)return n[1].toLowerCase();t=t.parentElement}return"none"},setLanguage:function(t,n){t.className=t.className.replace(RegExp(e,"gi"),""),t.classList.add("language-"+n)},isActive:function(e,t,n){for(var r="no-"+t;e;){var a=e.classList;if(a.contains(t))return!0;if(a.contains(r))return!1;e=e.parentElement}return!!n}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(e,t){var n=r.util.clone(r.languages[e]);for(var a in t)n[a]=t[a];return n},insertBefore:function(e,t,n,a){var o=(a=a||r.languages)[e],i={};for(var l in o)if(o.hasOwnProperty(l)){if(l==t)for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);n.hasOwnProperty(l)||(i[l]=o[l])}var u=a[e];return a[e]=i,r.languages.DFS(r.languages,(function(t,n){n===u&&t!=e&&(this[t]=i)})),i},DFS:function e(t,n,a,o){o=o||{};var i=r.util.objId;for(var l in t)if(t.hasOwnProperty(l)){n.call(t,l,t[l],a||l);var s=t[l],u=r.util.type(s);"Object"!==u||o[i(s)]?"Array"!==u||o[i(s)]||(o[i(s)]=!0,e(s,n,l,o)):(o[i(s)]=!0,e(s,n,null,o))}}},plugins:{},highlight:function(e,t,n){var o={code:e,grammar:t,language:n};return r.hooks.run("before-tokenize",o),o.tokens=r.tokenize(o.code,o.grammar),r.hooks.run("after-tokenize",o),a.stringify(r.util.encode(o.tokens),o.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var a=new l;return s(a,a.head,e),i(e,a,t,a.head,0),function(e){var t=[],n=e.head.next;for(;n!==e.tail;)t.push(n.value),n=n.next;return t}(a)},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var a,o=0;a=n[o++];)a(t)}},Token:a};function a(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function o(e,t,n,r){e.lastIndex=t;var a=e.exec(n);if(a&&r&&a[1]){var o=a[1].length;a.index+=o,a[0]=a[0].slice(o)}return a}function i(e,t,n,l,c,d){for(var p in n)if(n.hasOwnProperty(p)&&n[p]){var f=n[p];f=Array.isArray(f)?f:[f];for(var h=0;h<f.length;++h){if(d&&d.cause==p+","+h)return;var m=f[h],g=m.inside,v=!!m.lookbehind,y=!!m.greedy,b=m.alias;if(y&&!m.pattern.global){var w=m.pattern.toString().match(/[imsuy]*$/)[0];m.pattern=RegExp(m.pattern.source,w+"g")}for(var k=m.pattern||m,E=l.next,S=c;E!==t.tail&&!(d&&S>=d.reach);S+=E.value.length,E=E.next){var x=E.value;if(t.length>e.length)return;if(!(x instanceof a)){var C,T=1;if(y){if(!(C=o(k,S,e,v))||C.index>=e.length)break;var _=C.index,L=C.index+C[0].length,R=S;for(R+=E.value.length;_>=R;)R+=(E=E.next).value.length;if(S=R-=E.value.length,E.value instanceof a)continue;for(var N=E;N!==t.tail&&(R<L||"string"==typeof N.value);N=N.next)T++,R+=N.value.length;T--,x=e.slice(S,R),C.index-=S}else if(!(C=o(k,0,x,v)))continue;_=C.index;var A=C[0],O=x.slice(0,_),P=x.slice(_+A.length),I=S+x.length;d&&I>d.reach&&(d.reach=I);var D=E.prev;if(O&&(D=s(t,D,O),S+=O.length),u(t,D,T),E=s(t,D,new a(p,g?r.tokenize(A,g):A,b,A)),P&&s(t,E,P),T>1){var M={cause:p+","+h,reach:I};i(e,t,n,E.prev,S,M),d&&M.reach>d.reach&&(d.reach=M.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function u(e,t,n){for(var r=t.next,a=0;a<n&&r!==e.tail;a++)r=r.next;t.next=r,r.prev=t,e.length-=a}return a.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var a="";return t.forEach((function(t){a+=e(t,n)})),a}var o={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},i=t.alias;i&&(Array.isArray(i)?Array.prototype.push.apply(o.classes,i):o.classes.push(i)),r.hooks.run("wrap",o);var l="";for(var s in o.attributes)l+=" "+s+'="'+(o.attributes[s]||"").replace(/"/g,""")+'"';return"<"+o.tag+' class="'+o.classes.join(" ")+'"'+l+">"+o.content+"</"+o.tag+">"},r}(),a=r;r.default=r,a.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(a.languages.markup.tag,"addAttribute",{value:function(e,t){a.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:a.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.languages.xml,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i<a.length;i++)o[a[i]]=e.languages.bash[a[i]];e.languages.shell=e.languages.bash}(a),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},a.languages.c=a.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),a.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),a.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},a.languages.c.string],char:a.languages.c.char,comment:a.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:a.languages.c}}}}),a.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete a.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(a),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(a),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},a={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(a),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:a.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:a.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),a.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),a.languages.markup&&(a.languages.markup.tag.addInlined("script","javascript"),a.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),a.languages.js=a.languages.javascript,function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(a),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<value>>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<key>>/g,(function(){return"(?:"+a+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(a),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(/<inner>/g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n<r;n++){var a=t[n];if("code"===a.type){var o=a.content[1],i=a.content[3];if(o&&i&&"code-language"===o.type&&"code-block"===i.type&&"string"==typeof o.content){var l=o.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),s="language-"+(l=(/[a-z][\w-]*/i.exec(l)||[""])[0].toLowerCase());i.alias?"string"==typeof i.alias?i.alias=[i.alias,s]:i.alias.push(s):i.alias=[s]}}else e(a.content)}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",r=0,a=t.classes.length;r<a;r++){var o=t.classes[r],u=/language-(.+)/.exec(o);if(u){n=u[1];break}}var c,d=e.languages[n];if(d)t.content=e.highlight((c=t.content,c.replace(i,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,(function(e,t){var n;if("#"===(t=t.toLowerCase())[0])return n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),s(n);var r=l[t];return r||e}))),d,n);else if(n&&"none"!==n&&e.plugins.autoloader){var p="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random());t.attributes.id=p,e.plugins.autoloader.loadLanguages(n,(function(){var t=document.getElementById(p);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))}))}}}));var i=RegExp(e.languages.markup.tag.pattern.source,"gi"),l={amp:"&",lt:"<",gt:">",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(a),a.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:a.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},a.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n<t.length;){var r=t[n++];if("keyword"===r.type&&"mutation"===r.content){var a=[];if(d(["definition-mutation","punctuation"])&&"("===c(1).content){n+=2;var o=p(/^\($/,/^\)$/);if(-1===o)continue;for(;n<o;n++){var i=c(0);"variable"===i.type&&(f(i,"variable-input"),a.push(i.content))}n=o+1}if(d(["punctuation","property-query"])&&"{"===c(0).content&&(n++,f(c(0),"property-mutation"),a.length>0)){var l=p(/^\{$/,/^\}$/);if(-1===l)continue;for(var s=n;s<l;s++){var u=t[s];"variable"===u.type&&a.indexOf(u.content)>=0&&f(u,"variable-input")}}}}function c(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=c(n+t);if(!r||r.type!==e[n])return!1}return!0}function p(e,r){for(var a=1,o=n;o<t.length;o++){var i=t[o],l=i.content;if("punctuation"===i.type&&"string"==typeof l)if(e.test(l))a++;else if(r.test(l)&&0===--a)return o}return-1}function f(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}})),a.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function s(t,n,r){var a={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(a.code,a.grammar),e.hooks.run("after-tokenize",a),a.tokens}function u(t){var n={};n["interpolation-punctuation"]=a;var o=e.tokenize(t,n);if(3===o.length){var i=[1,1];i.push.apply(i,s(o[1],e.languages.javascript,"javascript")),o.splice.apply(o,i)}return new e.Token("interpolation",o,r.alias,t)}function c(t,n,r){var a=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),i=0,c={},d=s(a.map((function(e){if("string"==typeof e)return e;for(var n,a=e.content;-1!==t.indexOf(n=l(i++,r)););return c[n]=a,n})).join(""),n,r),p=Object.keys(c);return i=0,function e(t){for(var n=0;n<t.length;n++){if(i>=p.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var a=p[i],o="string"==typeof r?r:r.content,l=o.indexOf(a);if(-1!==l){++i;var s=o.substring(0,l),d=u(c[a]),f=o.substring(l+a.length),h=[];if(s&&h.push(s),h.push(d),f){var m=[f];e(m),h.push.apply(h,m)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(h)),n+=h.length-1):r.content=h}}else{var g=r.content;Array.isArray(g)?e(g):e([g])}}}(d),new e.Token(r,d,"language-"+r,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function p(e){return"string"==typeof e?e:Array.isArray(e)?e.map(p).join(""):p(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,a=n.length;r<a;r++){var o=n[r];if("string"!=typeof o){var i=o.content;if(Array.isArray(i))if("template-string"===o.type){var l=i[1];if(3===i.length&&"string"!=typeof l&&"embedded-code"===l.type){var s=p(l),u=l.alias,d=Array.isArray(u)?u[0]:u,f=e.languages[d];if(!f)continue;i[1]=c(s,f,d)}}else t(i);else"string"!=typeof i&&t([i])}}}(t.tokens)}))}(a),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(a),function(e){function t(e,t){return RegExp(e.replace(/<ID>/g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:<ID>(?:\s*,\s*(?:\*\s*as\s+<ID>|\{[^{}]*\}))?|\*\s*as\s+<ID>|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+<ID>)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?<ID>/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r<n.length;r++){var a=n[r],o=e.languages.javascript[a];"RegExp"===e.util.type(o)&&(o=e.languages.javascript[a]={pattern:o});var i=o.inside||{};o.inside=i,i["maybe-class-name"]=/^[A-Z][\s\S]*/}}(a),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,a=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function o(e,t){return e=e.replace(/<S>/g,(function(){return n})).replace(/<BRACES>/g,(function(){return r})).replace(/<SPREAD>/g,(function(){return a})),RegExp(e,t)}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},l=function(t){for(var n=[],r=0;r<t.length;r++){var a=t[r],o=!1;if("string"!=typeof a&&("tag"===a.type&&a.content[0]&&"tag"===a.content[0].type?"</"===a.content[0].content[0].content?n.length>0&&n[n.length-1].tagName===i(a.content[0].content[1])&&n.pop():"/>"===a.content[a.content.length-1].content||n.push({tagName:i(a.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&n.length>0&&0===n[n.length-1].openedBraces){var s=i(a);r<t.length-1&&("string"==typeof t[r+1]||"plain-text"===t[r+1].type)&&(s+=i(t[r+1]),t.splice(r+1,1)),r>0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(s=i(t[r-1])+s,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",s,null,s)}a.content&&"string"!=typeof a.content&&l(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(a),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],a=[];/^\w+$/.test(n)||a.push(/\w+/.exec(n)[0]),"diff"===n&&a.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(a),a.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},a.languages.go=a.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),a.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete a.languages.go["class-name"],function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s<l.length&&!(a>=o.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],p="string"==typeof u?u:u.content,f=t(r,c),h=p.indexOf(f);if(h>-1){++a;var m=p.substring(0,h),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),v=p.substring(h+f.length),y=[];m&&y.push.apply(y,i([m])),y.push(g),v&&y.push.apply(y,i([v])),"string"==typeof u?l.splice.apply(l,[s,1].concat(y)):u.content=y}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(a),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(a),a.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},a.languages.webmanifest=a.languages.json,a.languages.less=a.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},a.languages.objectivec=a.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete a.languages.objectivec["class-name"],a.languages.objc=a.languages.objectivec,a.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},a.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),a.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete a.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(a),a.languages.scss=a.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),a.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),a.languages.scss.atrule.inside.rest=a.languages.scss,function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(a),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(a),a.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/};const o=a},9901:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to <a href="https://webplatform.github.io/docs/">WebPlatform.org documentation</a>. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (<code>.comment</code> can become <code>.namespace--comment</code>) or replace them with your defined ones (like <code>.editor__comment</code>). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the <code>highlightAll</code> and <code>highlightAllUnder</code> methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},2885:(e,t,n)=>{const r=n(9901),a=n(9642),o=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];a(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(6500).resolve(t)],delete Prism.languages[e],n(6500)(t),o.add(e)}))}i.silent=!1,e.exports=i},6726:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=6726},6500:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=6500},9642:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n]]=!0;return t}function r(e){var n={},r=[];function a(r,o){if(!(r in n)){o.push(r);var i=o.indexOf(r);if(i<o.length-1)throw new Error("Circular dependency: "+o.slice(i).join(" -> "));var l={},s=e[r];if(s){function u(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in a(t,o),l[t]=!0,n[t])l[i]=!0}t(s.require,u),t(s.optional,u),t(s.modify,u)}n[r]=l,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),u=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a}))}return n[r]||r}}(s);i=i.map(u),l=(l||[]).map(u);var c=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(c[t]=!0,e(t))}))}));for(var p,f=r(s),h=c;a(h);){for(var m in p={},h){var g=s[m];t(g&&g.modify,(function(e){e in d&&(p[e]=!0)}))}for(var v in d)if(!(v in c))for(var y in f(v))if(y in c){p[v]=!0;break}for(var b in h=p)c[b]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,a){var o=a?a.series:void 0,i=a?a.parallel:e,l={},s={};function u(e){if(e in l)return l[e];s[e]=!0;var a,c=[];for(var d in t(e))d in n&&c.push(d);if(0===c.length)a=r(e);else{var p=i(c.map((function(e){var t=u(e);return delete s[e],t})));o?a=o(p,(function(){return r(e)})):r(e)}return l[e]=a}for(var c in n)u(c);var d=[];for(var p in s)d.push(l[p]);return i(d)}(f,c,t,n)}};return w}}();e.exports=t},2703:(e,t,n)=>{"use strict";var r=n(414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},5697:(e,t,n)=>{e.exports=n(2703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4448:(e,t,n)=>{"use strict";var r=n(7294),a=n(7418),o=n(3840);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!r)throw Error(i(227));var l=new Set,s={};function u(e,t){c(e,t),c(e+"Capture",t)}function c(e,t){for(s[e]=t,e=0;e<t.length;e++)l.add(t[e])}var d=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),p=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,f=Object.prototype.hasOwnProperty,h={},m={};function g(e,t,n,r,a,o,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var v={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){v[e]=new g(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];v[t]=new g(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){v[e]=new g(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){v[e]=new g(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){v[e]=new g(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){v[e]=new g(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){v[e]=new g(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){v[e]=new g(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){v[e]=new g(e,5,!1,e.toLowerCase(),null,!1,!1)}));var y=/[\-:]([a-z])/g;function b(e){return e[1].toUpperCase()}function w(e,t,n,r){var a=v.hasOwnProperty(t)?v[t]:null;(null!==a?0===a.type:!r&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,a,r)&&(n=null),r||null===a?function(e){return!!f.call(m,e)||!f.call(h,e)&&(p.test(e)?m[e]=!0:(h[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):a.mustUseProperty?e[a.propertyName]=null===n?3!==a.type&&"":n:(t=a.attributeName,r=a.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(a=a.type)||4===a&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(y,b);v[t]=new g(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(y,b);v[t]=new g(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(y,b);v[t]=new g(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){v[e]=new g(e,1,!1,e.toLowerCase(),null,!1,!1)})),v.xlinkHref=new g("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){v[e]=new g(e,1,!1,e.toLowerCase(),null,!0,!0)}));var k=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,E=60103,S=60106,x=60107,C=60108,T=60114,_=60109,L=60110,R=60112,N=60113,A=60120,O=60115,P=60116,I=60121,D=60128,M=60129,F=60130,j=60131;if("function"==typeof Symbol&&Symbol.for){var B=Symbol.for;E=B("react.element"),S=B("react.portal"),x=B("react.fragment"),C=B("react.strict_mode"),T=B("react.profiler"),_=B("react.provider"),L=B("react.context"),R=B("react.forward_ref"),N=B("react.suspense"),A=B("react.suspense_list"),O=B("react.memo"),P=B("react.lazy"),I=B("react.block"),B("react.scope"),D=B("react.opaque.id"),M=B("react.debug_trace_mode"),F=B("react.offscreen"),j=B("react.legacy_hidden")}var z,$="function"==typeof Symbol&&Symbol.iterator;function U(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=$&&e[$]||e["@@iterator"])?e:null}function q(e){if(void 0===z)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);z=t&&t[1]||""}return"\n"+z+e}var H=!1;function G(e,t){if(!e||H)return"";H=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(s){var r=s}Reflect.construct(e,[],t)}else{try{t.call()}catch(s){r=s}e.call(t.prototype)}else{try{throw Error()}catch(s){r=s}e()}}catch(s){if(s&&r&&"string"==typeof s.stack){for(var a=s.stack.split("\n"),o=r.stack.split("\n"),i=a.length-1,l=o.length-1;1<=i&&0<=l&&a[i]!==o[l];)l--;for(;1<=i&&0<=l;i--,l--)if(a[i]!==o[l]){if(1!==i||1!==l)do{if(i--,0>--l||a[i]!==o[l])return"\n"+a[i].replace(" at new "," at ")}while(1<=i&&0<=l);break}}}finally{H=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?q(e):""}function Q(e){switch(e.tag){case 5:return q(e.type);case 16:return q("Lazy");case 13:return q("Suspense");case 19:return q("SuspenseList");case 0:case 2:case 15:return e=G(e.type,!1);case 11:return e=G(e.type.render,!1);case 22:return e=G(e.type._render,!1);case 1:return e=G(e.type,!0);default:return""}}function Z(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case x:return"Fragment";case S:return"Portal";case T:return"Profiler";case C:return"StrictMode";case N:return"Suspense";case A:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case L:return(e.displayName||"Context")+".Consumer";case _:return(e._context.displayName||"Context")+".Provider";case R:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case O:return Z(e.type);case I:return Z(e._render);case P:t=e._payload,e=e._init;try{return Z(e(t))}catch(n){}}return null}function V(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function W(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function K(e){e._valueTracker||(e._valueTracker=function(e){var t=W(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==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 Y(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=W(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function X(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function J(e,t){var n=t.checked;return a({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function ee(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=V(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function te(e,t){null!=(t=t.checked)&&w(e,"checked",t,!1)}function ne(e,t){te(e,t);var n=V(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ae(e,t.type,n):t.hasOwnProperty("defaultValue")&&ae(e,t.type,V(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function re(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ae(e,t,n){"number"===t&&X(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function oe(e,t){return e=a({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function ie(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a<n.length;a++)t["$"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty("$"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&r&&(e[n].defaultSelected=!0)}else{for(n=""+V(n),t=null,a=0;a<e.length;a++){if(e[a].value===n)return e[a].selected=!0,void(r&&(e[a].defaultSelected=!0));null!==t||e[a].disabled||(t=e[a])}null!==t&&(t.selected=!0)}}function le(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(i(91));return a({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function se(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(i(92));if(Array.isArray(n)){if(!(1>=n.length))throw Error(i(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:V(n)}}function ue(e,t){var n=V(t.value),r=V(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ce(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var de={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function pe(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function fe(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?pe(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var he,me,ge=(me=function(e,t){if(e.namespaceURI!==de.svg||"innerHTML"in e)e.innerHTML=t;else{for((he=he||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=he.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return me(e,t)}))}:me);function ve(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var ye={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},be=["Webkit","ms","Moz","O"];function we(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||ye.hasOwnProperty(e)&&ye[e]?(""+t).trim():t+"px"}function ke(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),a=we(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,a):e[n]=a}}Object.keys(ye).forEach((function(e){be.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ye[t]=ye[e]}))}));var Ee=a({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Se(e,t){if(t){if(Ee[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(i(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(i(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(i(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(i(62))}}function xe(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function Ce(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Te=null,_e=null,Le=null;function Re(e){if(e=na(e)){if("function"!=typeof Te)throw Error(i(280));var t=e.stateNode;t&&(t=aa(t),Te(e.stateNode,e.type,t))}}function Ne(e){_e?Le?Le.push(e):Le=[e]:_e=e}function Ae(){if(_e){var e=_e,t=Le;if(Le=_e=null,Re(e),t)for(e=0;e<t.length;e++)Re(t[e])}}function Oe(e,t){return e(t)}function Pe(e,t,n,r,a){return e(t,n,r,a)}function Ie(){}var De=Oe,Me=!1,Fe=!1;function je(){null===_e&&null===Le||(Ie(),Ae())}function Be(e,t){var n=e.stateNode;if(null===n)return null;var r=aa(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(i(231,t,typeof n));return n}var ze=!1;if(d)try{var $e={};Object.defineProperty($e,"passive",{get:function(){ze=!0}}),window.addEventListener("test",$e,$e),window.removeEventListener("test",$e,$e)}catch(me){ze=!1}function Ue(e,t,n,r,a,o,i,l,s){var u=Array.prototype.slice.call(arguments,3);try{t.apply(n,u)}catch(c){this.onError(c)}}var qe=!1,He=null,Ge=!1,Qe=null,Ze={onError:function(e){qe=!0,He=e}};function Ve(e,t,n,r,a,o,i,l,s){qe=!1,He=null,Ue.apply(Ze,arguments)}function We(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(1026&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function Ke(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function Ye(e){if(We(e)!==e)throw Error(i(188))}function Xe(e){if(e=function(e){var t=e.alternate;if(!t){if(null===(t=We(e)))throw Error(i(188));return t!==e?null:e}for(var n=e,r=t;;){var a=n.return;if(null===a)break;var o=a.alternate;if(null===o){if(null!==(r=a.return)){n=r;continue}break}if(a.child===o.child){for(o=a.child;o;){if(o===n)return Ye(a),e;if(o===r)return Ye(a),t;o=o.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=o;else{for(var l=!1,s=a.child;s;){if(s===n){l=!0,n=a,r=o;break}if(s===r){l=!0,r=a,n=o;break}s=s.sibling}if(!l){for(s=o.child;s;){if(s===n){l=!0,n=o,r=a;break}if(s===r){l=!0,r=o,n=a;break}s=s.sibling}if(!l)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(3!==n.tag)throw Error(i(188));return n.stateNode.current===n?e:t}(e),!e)return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function Je(e,t){for(var n=e.alternate;null!==t;){if(t===e||t===n)return!0;t=t.return}return!1}var et,tt,nt,rt,at=!1,ot=[],it=null,lt=null,st=null,ut=new Map,ct=new Map,dt=[],pt="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function ft(e,t,n,r,a){return{blockedOn:e,domEventName:t,eventSystemFlags:16|n,nativeEvent:a,targetContainers:[r]}}function ht(e,t){switch(e){case"focusin":case"focusout":it=null;break;case"dragenter":case"dragleave":lt=null;break;case"mouseover":case"mouseout":st=null;break;case"pointerover":case"pointerout":ut.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":ct.delete(t.pointerId)}}function mt(e,t,n,r,a,o){return null===e||e.nativeEvent!==o?(e=ft(t,n,r,a,o),null!==t&&(null!==(t=na(t))&&tt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==a&&-1===t.indexOf(a)&&t.push(a),e)}function gt(e){var t=ta(e.target);if(null!==t){var n=We(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=Ke(n)))return e.blockedOn=t,void rt(e.lanePriority,(function(){o.unstable_runWithPriority(e.priority,(function(){nt(n)}))}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function vt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Xt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=na(n))&&tt(t),e.blockedOn=n,!1;t.shift()}return!0}function yt(e,t,n){vt(e)&&n.delete(t)}function bt(){for(at=!1;0<ot.length;){var e=ot[0];if(null!==e.blockedOn){null!==(e=na(e.blockedOn))&&et(e);break}for(var t=e.targetContainers;0<t.length;){var n=Xt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n){e.blockedOn=n;break}t.shift()}null===e.blockedOn&&ot.shift()}null!==it&&vt(it)&&(it=null),null!==lt&&vt(lt)&&(lt=null),null!==st&&vt(st)&&(st=null),ut.forEach(yt),ct.forEach(yt)}function wt(e,t){e.blockedOn===t&&(e.blockedOn=null,at||(at=!0,o.unstable_scheduleCallback(o.unstable_NormalPriority,bt)))}function kt(e){function t(t){return wt(t,e)}if(0<ot.length){wt(ot[0],e);for(var n=1;n<ot.length;n++){var r=ot[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==it&&wt(it,e),null!==lt&&wt(lt,e),null!==st&&wt(st,e),ut.forEach(t),ct.forEach(t),n=0;n<dt.length;n++)(r=dt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<dt.length&&null===(n=dt[0]).blockedOn;)gt(n),null===n.blockedOn&&dt.shift()}function Et(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var St={animationend:Et("Animation","AnimationEnd"),animationiteration:Et("Animation","AnimationIteration"),animationstart:Et("Animation","AnimationStart"),transitionend:Et("Transition","TransitionEnd")},xt={},Ct={};function Tt(e){if(xt[e])return xt[e];if(!St[e])return e;var t,n=St[e];for(t in n)if(n.hasOwnProperty(t)&&t in Ct)return xt[e]=n[t];return e}d&&(Ct=document.createElement("div").style,"AnimationEvent"in window||(delete St.animationend.animation,delete St.animationiteration.animation,delete St.animationstart.animation),"TransitionEvent"in window||delete St.transitionend.transition);var _t=Tt("animationend"),Lt=Tt("animationiteration"),Rt=Tt("animationstart"),Nt=Tt("transitionend"),At=new Map,Ot=new Map,Pt=["abort","abort",_t,"animationEnd",Lt,"animationIteration",Rt,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata","loadstart","loadStart","lostpointercapture","lostPointerCapture","playing","playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",Nt,"transitionEnd","waiting","waiting"];function It(e,t){for(var n=0;n<e.length;n+=2){var r=e[n],a=e[n+1];a="on"+(a[0].toUpperCase()+a.slice(1)),Ot.set(r,t),At.set(r,a),u(a,[r])}}(0,o.unstable_now)();var Dt=8;function Mt(e){if(0!=(1&e))return Dt=15,1;if(0!=(2&e))return Dt=14,2;if(0!=(4&e))return Dt=13,4;var t=24&e;return 0!==t?(Dt=12,t):0!=(32&e)?(Dt=11,32):0!==(t=192&e)?(Dt=10,t):0!=(256&e)?(Dt=9,256):0!==(t=3584&e)?(Dt=8,t):0!=(4096&e)?(Dt=7,4096):0!==(t=4186112&e)?(Dt=6,t):0!==(t=62914560&e)?(Dt=5,t):67108864&e?(Dt=4,67108864):0!=(134217728&e)?(Dt=3,134217728):0!==(t=805306368&e)?(Dt=2,t):0!=(1073741824&e)?(Dt=1,1073741824):(Dt=8,e)}function Ft(e,t){var n=e.pendingLanes;if(0===n)return Dt=0;var r=0,a=0,o=e.expiredLanes,i=e.suspendedLanes,l=e.pingedLanes;if(0!==o)r=o,a=Dt=15;else if(0!==(o=134217727&n)){var s=o&~i;0!==s?(r=Mt(s),a=Dt):0!==(l&=o)&&(r=Mt(l),a=Dt)}else 0!==(o=n&~i)?(r=Mt(o),a=Dt):0!==l&&(r=Mt(l),a=Dt);if(0===r)return 0;if(r=n&((0>(r=31-qt(r))?0:1<<r)<<1)-1,0!==t&&t!==r&&0==(t&i)){if(Mt(t),a<=Dt)return t;Dt=a}if(0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)a=1<<(n=31-qt(t)),r|=e[n],t&=~a;return r}function jt(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function Bt(e,t){switch(e){case 15:return 1;case 14:return 2;case 12:return 0===(e=zt(24&~t))?Bt(10,t):e;case 10:return 0===(e=zt(192&~t))?Bt(8,t):e;case 8:return 0===(e=zt(3584&~t))&&(0===(e=zt(4186112&~t))&&(e=512)),e;case 2:return 0===(t=zt(805306368&~t))&&(t=268435456),t}throw Error(i(358,e))}function zt(e){return e&-e}function $t(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Ut(e,t,n){e.pendingLanes|=t;var r=t-1;e.suspendedLanes&=r,e.pingedLanes&=r,(e=e.eventTimes)[t=31-qt(t)]=n}var qt=Math.clz32?Math.clz32:function(e){return 0===e?32:31-(Ht(e)/Gt|0)|0},Ht=Math.log,Gt=Math.LN2;var Qt=o.unstable_UserBlockingPriority,Zt=o.unstable_runWithPriority,Vt=!0;function Wt(e,t,n,r){Me||Ie();var a=Yt,o=Me;Me=!0;try{Pe(a,e,t,n,r)}finally{(Me=o)||je()}}function Kt(e,t,n,r){Zt(Qt,Yt.bind(null,e,t,n,r))}function Yt(e,t,n,r){var a;if(Vt)if((a=0==(4&t))&&0<ot.length&&-1<pt.indexOf(e))e=ft(null,e,t,n,r),ot.push(e);else{var o=Xt(e,t,n,r);if(null===o)a&&ht(e,r);else{if(a){if(-1<pt.indexOf(e))return e=ft(o,e,t,n,r),void ot.push(e);if(function(e,t,n,r,a){switch(t){case"focusin":return it=mt(it,e,t,n,r,a),!0;case"dragenter":return lt=mt(lt,e,t,n,r,a),!0;case"mouseover":return st=mt(st,e,t,n,r,a),!0;case"pointerover":var o=a.pointerId;return ut.set(o,mt(ut.get(o)||null,e,t,n,r,a)),!0;case"gotpointercapture":return o=a.pointerId,ct.set(o,mt(ct.get(o)||null,e,t,n,r,a)),!0}return!1}(o,e,t,n,r))return;ht(e,r)}Ir(e,t,r,null,n)}}}function Xt(e,t,n,r){var a=Ce(r);if(null!==(a=ta(a))){var o=We(a);if(null===o)a=null;else{var i=o.tag;if(13===i){if(null!==(a=Ke(o)))return a;a=null}else if(3===i){if(o.stateNode.hydrate)return 3===o.tag?o.stateNode.containerInfo:null;a=null}else o!==a&&(a=null)}}return Ir(e,t,r,a,n),null}var Jt=null,en=null,tn=null;function nn(){if(tn)return tn;var e,t,n=en,r=n.length,a="value"in Jt?Jt.value:Jt.textContent,o=a.length;for(e=0;e<r&&n[e]===a[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===a[o-t];t++);return tn=a.slice(e,1<t?1-t:void 0)}function rn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function an(){return!0}function on(){return!1}function ln(e){function t(t,n,r,a,o){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=a,this.target=o,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(a):a[i]);return this.isDefaultPrevented=(null!=a.defaultPrevented?a.defaultPrevented:!1===a.returnValue)?an:on,this.isPropagationStopped=on,this}return a(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=an)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=an)},persist:function(){},isPersistent:an}),t}var sn,un,cn,dn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},pn=ln(dn),fn=a({},dn,{view:0,detail:0}),hn=ln(fn),mn=a({},fn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:_n,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==cn&&(cn&&"mousemove"===e.type?(sn=e.screenX-cn.screenX,un=e.screenY-cn.screenY):un=sn=0,cn=e),sn)},movementY:function(e){return"movementY"in e?e.movementY:un}}),gn=ln(mn),vn=ln(a({},mn,{dataTransfer:0})),yn=ln(a({},fn,{relatedTarget:0})),bn=ln(a({},dn,{animationName:0,elapsedTime:0,pseudoElement:0})),wn=a({},dn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),kn=ln(wn),En=ln(a({},dn,{data:0})),Sn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},xn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},Cn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Tn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Cn[e])&&!!t[e]}function _n(){return Tn}var Ln=a({},fn,{key:function(e){if(e.key){var t=Sn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=rn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?xn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:_n,charCode:function(e){return"keypress"===e.type?rn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?rn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Rn=ln(Ln),Nn=ln(a({},mn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),An=ln(a({},fn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:_n})),On=ln(a({},dn,{propertyName:0,elapsedTime:0,pseudoElement:0})),Pn=a({},mn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),In=ln(Pn),Dn=[9,13,27,32],Mn=d&&"CompositionEvent"in window,Fn=null;d&&"documentMode"in document&&(Fn=document.documentMode);var jn=d&&"TextEvent"in window&&!Fn,Bn=d&&(!Mn||Fn&&8<Fn&&11>=Fn),zn=String.fromCharCode(32),$n=!1;function Un(e,t){switch(e){case"keyup":return-1!==Dn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function qn(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Hn=!1;var Gn={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 Qn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Gn[e.type]:"textarea"===t}function Zn(e,t,n,r){Ne(r),0<(t=Mr(t,"onChange")).length&&(n=new pn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Vn=null,Wn=null;function Kn(e){Lr(e,0)}function Yn(e){if(Y(ra(e)))return e}function Xn(e,t){if("change"===e)return t}var Jn=!1;if(d){var er;if(d){var tr="oninput"in document;if(!tr){var nr=document.createElement("div");nr.setAttribute("oninput","return;"),tr="function"==typeof nr.oninput}er=tr}else er=!1;Jn=er&&(!document.documentMode||9<document.documentMode)}function rr(){Vn&&(Vn.detachEvent("onpropertychange",ar),Wn=Vn=null)}function ar(e){if("value"===e.propertyName&&Yn(Wn)){var t=[];if(Zn(t,Wn,e,Ce(e)),e=Kn,Me)e(t);else{Me=!0;try{Oe(e,t)}finally{Me=!1,je()}}}}function or(e,t,n){"focusin"===e?(rr(),Wn=n,(Vn=t).attachEvent("onpropertychange",ar)):"focusout"===e&&rr()}function ir(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Yn(Wn)}function lr(e,t){if("click"===e)return Yn(t)}function sr(e,t){if("input"===e||"change"===e)return Yn(t)}var ur="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},cr=Object.prototype.hasOwnProperty;function dr(e,t){if(ur(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++)if(!cr.call(t,n[r])||!ur(e[n[r]],t[n[r]]))return!1;return!0}function pr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function fr(e,t){var n,r=pr(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=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=pr(r)}}function hr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?hr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function mr(){for(var e=window,t=X();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=X((e=t.contentWindow).document)}return t}function gr(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 vr=d&&"documentMode"in document&&11>=document.documentMode,yr=null,br=null,wr=null,kr=!1;function Er(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;kr||null==yr||yr!==X(r)||("selectionStart"in(r=yr)&&gr(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},wr&&dr(wr,r)||(wr=r,0<(r=Mr(br,"onSelect")).length&&(t=new pn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=yr)))}It("cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),It("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),It(Pt,2);for(var Sr="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),xr=0;xr<Sr.length;xr++)Ot.set(Sr[xr],0);c("onMouseEnter",["mouseout","mouseover"]),c("onMouseLeave",["mouseout","mouseover"]),c("onPointerEnter",["pointerout","pointerover"]),c("onPointerLeave",["pointerout","pointerover"]),u("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),u("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),u("onBeforeInput",["compositionend","keypress","textInput","paste"]),u("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Cr="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Tr=new Set("cancel close invalid load scroll toggle".split(" ").concat(Cr));function _r(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,a,o,l,s,u){if(Ve.apply(this,arguments),qe){if(!qe)throw Error(i(198));var c=He;qe=!1,He=null,Ge||(Ge=!0,Qe=c)}}(r,t,void 0,e),e.currentTarget=null}function Lr(e,t){t=0!=(4&t);for(var n=0;n<e.length;n++){var r=e[n],a=r.event;r=r.listeners;e:{var o=void 0;if(t)for(var i=r.length-1;0<=i;i--){var l=r[i],s=l.instance,u=l.currentTarget;if(l=l.listener,s!==o&&a.isPropagationStopped())break e;_r(a,l,u),o=s}else for(i=0;i<r.length;i++){if(s=(l=r[i]).instance,u=l.currentTarget,l=l.listener,s!==o&&a.isPropagationStopped())break e;_r(a,l,u),o=s}}}if(Ge)throw e=Qe,Ge=!1,Qe=null,e}function Rr(e,t){var n=oa(t),r=e+"__bubble";n.has(r)||(Pr(t,e,2,!1),n.add(r))}var Nr="_reactListening"+Math.random().toString(36).slice(2);function Ar(e){e[Nr]||(e[Nr]=!0,l.forEach((function(t){Tr.has(t)||Or(t,!1,e,null),Or(t,!0,e,null)})))}function Or(e,t,n,r){var a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,o=n;if("selectionchange"===e&&9!==n.nodeType&&(o=n.ownerDocument),null!==r&&!t&&Tr.has(e)){if("scroll"!==e)return;a|=2,o=r}var i=oa(o),l=e+"__"+(t?"capture":"bubble");i.has(l)||(t&&(a|=4),Pr(o,e,a,t),i.add(l))}function Pr(e,t,n,r){var a=Ot.get(t);switch(void 0===a?2:a){case 0:a=Wt;break;case 1:a=Kt;break;default:a=Yt}n=a.bind(null,t,n,e),a=void 0,!ze||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(a=!0),r?void 0!==a?e.addEventListener(t,n,{capture:!0,passive:a}):e.addEventListener(t,n,!0):void 0!==a?e.addEventListener(t,n,{passive:a}):e.addEventListener(t,n,!1)}function Ir(e,t,n,r,a){var o=r;if(0==(1&t)&&0==(2&t)&&null!==r)e:for(;;){if(null===r)return;var i=r.tag;if(3===i||4===i){var l=r.stateNode.containerInfo;if(l===a||8===l.nodeType&&l.parentNode===a)break;if(4===i)for(i=r.return;null!==i;){var s=i.tag;if((3===s||4===s)&&((s=i.stateNode.containerInfo)===a||8===s.nodeType&&s.parentNode===a))return;i=i.return}for(;null!==l;){if(null===(i=ta(l)))return;if(5===(s=i.tag)||6===s){r=o=i;continue e}l=l.parentNode}}r=r.return}!function(e,t,n){if(Fe)return e(t,n);Fe=!0;try{return De(e,t,n)}finally{Fe=!1,je()}}((function(){var r=o,a=Ce(n),i=[];e:{var l=At.get(e);if(void 0!==l){var s=pn,u=e;switch(e){case"keypress":if(0===rn(n))break e;case"keydown":case"keyup":s=Rn;break;case"focusin":u="focus",s=yn;break;case"focusout":u="blur",s=yn;break;case"beforeblur":case"afterblur":s=yn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":s=gn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":s=vn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":s=An;break;case _t:case Lt:case Rt:s=bn;break;case Nt:s=On;break;case"scroll":s=hn;break;case"wheel":s=In;break;case"copy":case"cut":case"paste":s=kn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":s=Nn}var c=0!=(4&t),d=!c&&"scroll"===e,p=c?null!==l?l+"Capture":null:l;c=[];for(var f,h=r;null!==h;){var m=(f=h).stateNode;if(5===f.tag&&null!==m&&(f=m,null!==p&&(null!=(m=Be(h,p))&&c.push(Dr(h,m,f)))),d)break;h=h.return}0<c.length&&(l=new s(l,u,null,n,a),i.push({event:l,listeners:c}))}}if(0==(7&t)){if(s="mouseout"===e||"pointerout"===e,(!(l="mouseover"===e||"pointerover"===e)||0!=(16&t)||!(u=n.relatedTarget||n.fromElement)||!ta(u)&&!u[Jr])&&(s||l)&&(l=a.window===a?a:(l=a.ownerDocument)?l.defaultView||l.parentWindow:window,s?(s=r,null!==(u=(u=n.relatedTarget||n.toElement)?ta(u):null)&&(u!==(d=We(u))||5!==u.tag&&6!==u.tag)&&(u=null)):(s=null,u=r),s!==u)){if(c=gn,m="onMouseLeave",p="onMouseEnter",h="mouse","pointerout"!==e&&"pointerover"!==e||(c=Nn,m="onPointerLeave",p="onPointerEnter",h="pointer"),d=null==s?l:ra(s),f=null==u?l:ra(u),(l=new c(m,h+"leave",s,n,a)).target=d,l.relatedTarget=f,m=null,ta(a)===r&&((c=new c(p,h+"enter",u,n,a)).target=f,c.relatedTarget=d,m=c),d=m,s&&u)e:{for(p=u,h=0,f=c=s;f;f=Fr(f))h++;for(f=0,m=p;m;m=Fr(m))f++;for(;0<h-f;)c=Fr(c),h--;for(;0<f-h;)p=Fr(p),f--;for(;h--;){if(c===p||null!==p&&c===p.alternate)break e;c=Fr(c),p=Fr(p)}c=null}else c=null;null!==s&&jr(i,l,s,c,!1),null!==u&&null!==d&&jr(i,d,u,c,!0)}if("select"===(s=(l=r?ra(r):window).nodeName&&l.nodeName.toLowerCase())||"input"===s&&"file"===l.type)var g=Xn;else if(Qn(l))if(Jn)g=sr;else{g=ir;var v=or}else(s=l.nodeName)&&"input"===s.toLowerCase()&&("checkbox"===l.type||"radio"===l.type)&&(g=lr);switch(g&&(g=g(e,r))?Zn(i,g,n,a):(v&&v(e,l,r),"focusout"===e&&(v=l._wrapperState)&&v.controlled&&"number"===l.type&&ae(l,"number",l.value)),v=r?ra(r):window,e){case"focusin":(Qn(v)||"true"===v.contentEditable)&&(yr=v,br=r,wr=null);break;case"focusout":wr=br=yr=null;break;case"mousedown":kr=!0;break;case"contextmenu":case"mouseup":case"dragend":kr=!1,Er(i,n,a);break;case"selectionchange":if(vr)break;case"keydown":case"keyup":Er(i,n,a)}var y;if(Mn)e:{switch(e){case"compositionstart":var b="onCompositionStart";break e;case"compositionend":b="onCompositionEnd";break e;case"compositionupdate":b="onCompositionUpdate";break e}b=void 0}else Hn?Un(e,n)&&(b="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(b="onCompositionStart");b&&(Bn&&"ko"!==n.locale&&(Hn||"onCompositionStart"!==b?"onCompositionEnd"===b&&Hn&&(y=nn()):(en="value"in(Jt=a)?Jt.value:Jt.textContent,Hn=!0)),0<(v=Mr(r,b)).length&&(b=new En(b,e,null,n,a),i.push({event:b,listeners:v}),y?b.data=y:null!==(y=qn(n))&&(b.data=y))),(y=jn?function(e,t){switch(e){case"compositionend":return qn(t);case"keypress":return 32!==t.which?null:($n=!0,zn);case"textInput":return(e=t.data)===zn&&$n?null:e;default:return null}}(e,n):function(e,t){if(Hn)return"compositionend"===e||!Mn&&Un(e,t)?(e=nn(),tn=en=Jt=null,Hn=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Bn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(r=Mr(r,"onBeforeInput")).length&&(a=new En("onBeforeInput","beforeinput",null,n,a),i.push({event:a,listeners:r}),a.data=y))}Lr(i,t)}))}function Dr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Mr(e,t){for(var n=t+"Capture",r=[];null!==e;){var a=e,o=a.stateNode;5===a.tag&&null!==o&&(a=o,null!=(o=Be(e,n))&&r.unshift(Dr(e,o,a)),null!=(o=Be(e,t))&&r.push(Dr(e,o,a))),e=e.return}return r}function Fr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function jr(e,t,n,r,a){for(var o=t._reactName,i=[];null!==n&&n!==r;){var l=n,s=l.alternate,u=l.stateNode;if(null!==s&&s===r)break;5===l.tag&&null!==u&&(l=u,a?null!=(s=Be(n,o))&&i.unshift(Dr(n,s,l)):a||null!=(s=Be(n,o))&&i.push(Dr(n,s,l))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}function Br(){}var zr=null,$r=null;function Ur(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function qr(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var Hr="function"==typeof setTimeout?setTimeout:void 0,Gr="function"==typeof clearTimeout?clearTimeout:void 0;function Qr(e){1===e.nodeType?e.textContent="":9===e.nodeType&&(null!=(e=e.body)&&(e.textContent=""))}function Zr(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function Vr(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var Wr=0;var Kr=Math.random().toString(36).slice(2),Yr="__reactFiber$"+Kr,Xr="__reactProps$"+Kr,Jr="__reactContainer$"+Kr,ea="__reactEvents$"+Kr;function ta(e){var t=e[Yr];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Jr]||n[Yr]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=Vr(e);null!==e;){if(n=e[Yr])return n;e=Vr(e)}return t}n=(e=n).parentNode}return null}function na(e){return!(e=e[Yr]||e[Jr])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function ra(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(i(33))}function aa(e){return e[Xr]||null}function oa(e){var t=e[ea];return void 0===t&&(t=e[ea]=new Set),t}var ia=[],la=-1;function sa(e){return{current:e}}function ua(e){0>la||(e.current=ia[la],ia[la]=null,la--)}function ca(e,t){la++,ia[la]=e.current,e.current=t}var da={},pa=sa(da),fa=sa(!1),ha=da;function ma(e,t){var n=e.type.contextTypes;if(!n)return da;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var a,o={};for(a in n)o[a]=t[a];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function ga(e){return null!=(e=e.childContextTypes)}function va(){ua(fa),ua(pa)}function ya(e,t,n){if(pa.current!==da)throw Error(i(168));ca(pa,t),ca(fa,n)}function ba(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in e))throw Error(i(108,Z(t)||"Unknown",o));return a({},n,r)}function wa(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||da,ha=pa.current,ca(pa,e),ca(fa,fa.current),!0}function ka(e,t,n){var r=e.stateNode;if(!r)throw Error(i(169));n?(e=ba(e,t,ha),r.__reactInternalMemoizedMergedChildContext=e,ua(fa),ua(pa),ca(pa,e)):ua(fa),ca(fa,n)}var Ea=null,Sa=null,xa=o.unstable_runWithPriority,Ca=o.unstable_scheduleCallback,Ta=o.unstable_cancelCallback,_a=o.unstable_shouldYield,La=o.unstable_requestPaint,Ra=o.unstable_now,Na=o.unstable_getCurrentPriorityLevel,Aa=o.unstable_ImmediatePriority,Oa=o.unstable_UserBlockingPriority,Pa=o.unstable_NormalPriority,Ia=o.unstable_LowPriority,Da=o.unstable_IdlePriority,Ma={},Fa=void 0!==La?La:function(){},ja=null,Ba=null,za=!1,$a=Ra(),Ua=1e4>$a?Ra:function(){return Ra()-$a};function qa(){switch(Na()){case Aa:return 99;case Oa:return 98;case Pa:return 97;case Ia:return 96;case Da:return 95;default:throw Error(i(332))}}function Ha(e){switch(e){case 99:return Aa;case 98:return Oa;case 97:return Pa;case 96:return Ia;case 95:return Da;default:throw Error(i(332))}}function Ga(e,t){return e=Ha(e),xa(e,t)}function Qa(e,t,n){return e=Ha(e),Ca(e,t,n)}function Za(){if(null!==Ba){var e=Ba;Ba=null,Ta(e)}Va()}function Va(){if(!za&&null!==ja){za=!0;var e=0;try{var t=ja;Ga(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),ja=null}catch(n){throw null!==ja&&(ja=ja.slice(e+1)),Ca(Aa,Za),n}finally{za=!1}}}var Wa=k.ReactCurrentBatchConfig;function Ka(e,t){if(e&&e.defaultProps){for(var n in t=a({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var Ya=sa(null),Xa=null,Ja=null,eo=null;function to(){eo=Ja=Xa=null}function no(e){var t=Ya.current;ua(Ya),e.type._context._currentValue=t}function ro(e,t){for(;null!==e;){var n=e.alternate;if((e.childLanes&t)===t){if(null===n||(n.childLanes&t)===t)break;n.childLanes|=t}else e.childLanes|=t,null!==n&&(n.childLanes|=t);e=e.return}}function ao(e,t){Xa=e,eo=Ja=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(Mi=!0),e.firstContext=null)}function oo(e,t){if(eo!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(eo=e,t=1073741823),t={context:e,observedBits:t,next:null},null===Ja){if(null===Xa)throw Error(i(308));Ja=t,Xa.dependencies={lanes:0,firstContext:t,responders:null}}else Ja=Ja.next=t;return e._currentValue}var io=!1;function lo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function so(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function uo(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function co(e,t){if(null!==(e=e.updateQueue)){var n=(e=e.shared).pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function po(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var a=null,o=null;if(null!==(n=n.firstBaseUpdate)){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===o?a=o=i:o=o.next=i,n=n.next}while(null!==n);null===o?a=o=t:o=o.next=t}else a=o=t;return n={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:o,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function fo(e,t,n,r){var o=e.updateQueue;io=!1;var i=o.firstBaseUpdate,l=o.lastBaseUpdate,s=o.shared.pending;if(null!==s){o.shared.pending=null;var u=s,c=u.next;u.next=null,null===l?i=c:l.next=c,l=u;var d=e.alternate;if(null!==d){var p=(d=d.updateQueue).lastBaseUpdate;p!==l&&(null===p?d.firstBaseUpdate=c:p.next=c,d.lastBaseUpdate=u)}}if(null!==i){for(p=o.baseState,l=0,d=c=u=null;;){s=i.lane;var f=i.eventTime;if((r&s)===s){null!==d&&(d=d.next={eventTime:f,lane:0,tag:i.tag,payload:i.payload,callback:i.callback,next:null});e:{var h=e,m=i;switch(s=t,f=n,m.tag){case 1:if("function"==typeof(h=m.payload)){p=h.call(f,p,s);break e}p=h;break e;case 3:h.flags=-4097&h.flags|64;case 0:if(null==(s="function"==typeof(h=m.payload)?h.call(f,p,s):h))break e;p=a({},p,s);break e;case 2:io=!0}}null!==i.callback&&(e.flags|=32,null===(s=o.effects)?o.effects=[i]:s.push(i))}else f={eventTime:f,lane:s,tag:i.tag,payload:i.payload,callback:i.callback,next:null},null===d?(c=d=f,u=p):d=d.next=f,l|=s;if(null===(i=i.next)){if(null===(s=o.shared.pending))break;i=s.next,s.next=null,o.lastBaseUpdate=s,o.shared.pending=null}}null===d&&(u=p),o.baseState=u,o.firstBaseUpdate=c,o.lastBaseUpdate=d,$l|=l,e.lanes=l,e.memoizedState=p}}function ho(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],a=r.callback;if(null!==a){if(r.callback=null,r=n,"function"!=typeof a)throw Error(i(191,a));a.call(r)}}}var mo=(new r.Component).refs;function go(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:a({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var vo={isMounted:function(e){return!!(e=e._reactInternals)&&We(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=ps(),a=fs(e),o=uo(r,a);o.payload=t,null!=n&&(o.callback=n),co(e,o),hs(e,a,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=ps(),a=fs(e),o=uo(r,a);o.tag=1,o.payload=t,null!=n&&(o.callback=n),co(e,o),hs(e,a,r)},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=ps(),r=fs(e),a=uo(n,r);a.tag=2,null!=t&&(a.callback=t),co(e,a),hs(e,r,n)}};function yo(e,t,n,r,a,o,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,i):!t.prototype||!t.prototype.isPureReactComponent||(!dr(n,r)||!dr(a,o))}function bo(e,t,n){var r=!1,a=da,o=t.contextType;return"object"==typeof o&&null!==o?o=oo(o):(a=ga(t)?ha:pa.current,o=(r=null!=(r=t.contextTypes))?ma(e,a):da),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=vo,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=a,e.__reactInternalMemoizedMaskedChildContext=o),t}function wo(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&&vo.enqueueReplaceState(t,t.state,null)}function ko(e,t,n,r){var a=e.stateNode;a.props=n,a.state=e.memoizedState,a.refs=mo,lo(e);var o=t.contextType;"object"==typeof o&&null!==o?a.context=oo(o):(o=ga(t)?ha:pa.current,a.context=ma(e,o)),fo(e,n,a,r),a.state=e.memoizedState,"function"==typeof(o=t.getDerivedStateFromProps)&&(go(e,t,o,n),a.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof a.getSnapshotBeforeUpdate||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||(t=a.state,"function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),t!==a.state&&vo.enqueueReplaceState(a,a.state,null),fo(e,n,a,r),a.state=e.memoizedState),"function"==typeof a.componentDidMount&&(e.flags|=4)}var Eo=Array.isArray;function So(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(i(309));var r=n.stateNode}if(!r)throw Error(i(147,e));var a=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===a?t.ref:(t=function(e){var t=r.refs;t===mo&&(t=r.refs={}),null===e?delete t[a]:t[a]=e},t._stringRef=a,t)}if("string"!=typeof e)throw Error(i(284));if(!n._owner)throw Error(i(290,e))}return e}function xo(e,t){if("textarea"!==e.type)throw Error(i(31,"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t))}function Co(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.flags=8}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function a(e,t){return(e=Qs(e,t)).index=0,e.sibling=null,e}function o(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags=2,n):r:(t.flags=2,n):n}function l(t){return e&&null===t.alternate&&(t.flags=2),t}function s(e,t,n,r){return null===t||6!==t.tag?((t=Ks(n,e.mode,r)).return=e,t):((t=a(t,n)).return=e,t)}function u(e,t,n,r){return null!==t&&t.elementType===n.type?((r=a(t,n.props)).ref=So(e,t,n),r.return=e,r):((r=Zs(n.type,n.key,n.props,null,e.mode,r)).ref=So(e,t,n),r.return=e,r)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Ys(n,e.mode,r)).return=e,t):((t=a(t,n.children||[])).return=e,t)}function d(e,t,n,r,o){return null===t||7!==t.tag?((t=Vs(n,e.mode,r,o)).return=e,t):((t=a(t,n)).return=e,t)}function p(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Ks(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case E:return(n=Zs(t.type,t.key,t.props,null,e.mode,n)).ref=So(e,null,t),n.return=e,n;case S:return(t=Ys(t,e.mode,n)).return=e,t}if(Eo(t)||U(t))return(t=Vs(t,e.mode,n,null)).return=e,t;xo(e,t)}return null}function f(e,t,n,r){var a=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==a?null:s(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case E:return n.key===a?n.type===x?d(e,t,n.props.children,r,a):u(e,t,n,r):null;case S:return n.key===a?c(e,t,n,r):null}if(Eo(n)||U(n))return null!==a?null:d(e,t,n,r,null);xo(e,n)}return null}function h(e,t,n,r,a){if("string"==typeof r||"number"==typeof r)return s(t,e=e.get(n)||null,""+r,a);if("object"==typeof r&&null!==r){switch(r.$$typeof){case E:return e=e.get(null===r.key?n:r.key)||null,r.type===x?d(t,e,r.props.children,a,r.key):u(t,e,r,a);case S:return c(t,e=e.get(null===r.key?n:r.key)||null,r,a)}if(Eo(r)||U(r))return d(t,e=e.get(n)||null,r,a,null);xo(t,r)}return null}function m(a,i,l,s){for(var u=null,c=null,d=i,m=i=0,g=null;null!==d&&m<l.length;m++){d.index>m?(g=d,d=null):g=d.sibling;var v=f(a,d,l[m],s);if(null===v){null===d&&(d=g);break}e&&d&&null===v.alternate&&t(a,d),i=o(v,i,m),null===c?u=v:c.sibling=v,c=v,d=g}if(m===l.length)return n(a,d),u;if(null===d){for(;m<l.length;m++)null!==(d=p(a,l[m],s))&&(i=o(d,i,m),null===c?u=d:c.sibling=d,c=d);return u}for(d=r(a,d);m<l.length;m++)null!==(g=h(d,a,m,l[m],s))&&(e&&null!==g.alternate&&d.delete(null===g.key?m:g.key),i=o(g,i,m),null===c?u=g:c.sibling=g,c=g);return e&&d.forEach((function(e){return t(a,e)})),u}function g(a,l,s,u){var c=U(s);if("function"!=typeof c)throw Error(i(150));if(null==(s=c.call(s)))throw Error(i(151));for(var d=c=null,m=l,g=l=0,v=null,y=s.next();null!==m&&!y.done;g++,y=s.next()){m.index>g?(v=m,m=null):v=m.sibling;var b=f(a,m,y.value,u);if(null===b){null===m&&(m=v);break}e&&m&&null===b.alternate&&t(a,m),l=o(b,l,g),null===d?c=b:d.sibling=b,d=b,m=v}if(y.done)return n(a,m),c;if(null===m){for(;!y.done;g++,y=s.next())null!==(y=p(a,y.value,u))&&(l=o(y,l,g),null===d?c=y:d.sibling=y,d=y);return c}for(m=r(a,m);!y.done;g++,y=s.next())null!==(y=h(m,a,g,y.value,u))&&(e&&null!==y.alternate&&m.delete(null===y.key?g:y.key),l=o(y,l,g),null===d?c=y:d.sibling=y,d=y);return e&&m.forEach((function(e){return t(a,e)})),c}return function(e,r,o,s){var u="object"==typeof o&&null!==o&&o.type===x&&null===o.key;u&&(o=o.props.children);var c="object"==typeof o&&null!==o;if(c)switch(o.$$typeof){case E:e:{for(c=o.key,u=r;null!==u;){if(u.key===c){if(7===u.tag){if(o.type===x){n(e,u.sibling),(r=a(u,o.props.children)).return=e,e=r;break e}}else if(u.elementType===o.type){n(e,u.sibling),(r=a(u,o.props)).ref=So(e,u,o),r.return=e,e=r;break e}n(e,u);break}t(e,u),u=u.sibling}o.type===x?((r=Vs(o.props.children,e.mode,s,o.key)).return=e,e=r):((s=Zs(o.type,o.key,o.props,null,e.mode,s)).ref=So(e,r,o),s.return=e,e=s)}return l(e);case S:e:{for(u=o.key;null!==r;){if(r.key===u){if(4===r.tag&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),(r=a(r,o.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Ys(o,e.mode,s)).return=e,e=r}return l(e)}if("string"==typeof o||"number"==typeof o)return o=""+o,null!==r&&6===r.tag?(n(e,r.sibling),(r=a(r,o)).return=e,e=r):(n(e,r),(r=Ks(o,e.mode,s)).return=e,e=r),l(e);if(Eo(o))return m(e,r,o,s);if(U(o))return g(e,r,o,s);if(c&&xo(e,o),void 0===o&&!u)switch(e.tag){case 1:case 22:case 0:case 11:case 15:throw Error(i(152,Z(e.type)||"Component"))}return n(e,r)}}var To=Co(!0),_o=Co(!1),Lo={},Ro=sa(Lo),No=sa(Lo),Ao=sa(Lo);function Oo(e){if(e===Lo)throw Error(i(174));return e}function Po(e,t){switch(ca(Ao,t),ca(No,e),ca(Ro,Lo),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:fe(null,"");break;default:t=fe(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}ua(Ro),ca(Ro,t)}function Io(){ua(Ro),ua(No),ua(Ao)}function Do(e){Oo(Ao.current);var t=Oo(Ro.current),n=fe(t,e.type);t!==n&&(ca(No,e),ca(Ro,n))}function Mo(e){No.current===e&&(ua(Ro),ua(No))}var Fo=sa(0);function jo(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&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}var Bo=null,zo=null,$o=!1;function Uo(e,t){var n=Hs(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.flags=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function qo(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);default:return!1}}function Ho(e){if($o){var t=zo;if(t){var n=t;if(!qo(e,t)){if(!(t=Zr(n.nextSibling))||!qo(e,t))return e.flags=-1025&e.flags|2,$o=!1,void(Bo=e);Uo(Bo,n)}Bo=e,zo=Zr(t.firstChild)}else e.flags=-1025&e.flags|2,$o=!1,Bo=e}}function Go(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;Bo=e}function Qo(e){if(e!==Bo)return!1;if(!$o)return Go(e),$o=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!qr(t,e.memoizedProps))for(t=zo;t;)Uo(e,t),t=Zr(t.nextSibling);if(Go(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(i(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){zo=Zr(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}zo=null}}else zo=Bo?Zr(e.stateNode.nextSibling):null;return!0}function Zo(){zo=Bo=null,$o=!1}var Vo=[];function Wo(){for(var e=0;e<Vo.length;e++)Vo[e]._workInProgressVersionPrimary=null;Vo.length=0}var Ko=k.ReactCurrentDispatcher,Yo=k.ReactCurrentBatchConfig,Xo=0,Jo=null,ei=null,ti=null,ni=!1,ri=!1;function ai(){throw Error(i(321))}function oi(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!ur(e[n],t[n]))return!1;return!0}function ii(e,t,n,r,a,o){if(Xo=o,Jo=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Ko.current=null===e||null===e.memoizedState?Oi:Pi,e=n(r,a),ri){o=0;do{if(ri=!1,!(25>o))throw Error(i(301));o+=1,ti=ei=null,t.updateQueue=null,Ko.current=Ii,e=n(r,a)}while(ri)}if(Ko.current=Ai,t=null!==ei&&null!==ei.next,Xo=0,ti=ei=Jo=null,ni=!1,t)throw Error(i(300));return e}function li(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===ti?Jo.memoizedState=ti=e:ti=ti.next=e,ti}function si(){if(null===ei){var e=Jo.alternate;e=null!==e?e.memoizedState:null}else e=ei.next;var t=null===ti?Jo.memoizedState:ti.next;if(null!==t)ti=t,ei=e;else{if(null===e)throw Error(i(310));e={memoizedState:(ei=e).memoizedState,baseState:ei.baseState,baseQueue:ei.baseQueue,queue:ei.queue,next:null},null===ti?Jo.memoizedState=ti=e:ti=ti.next=e}return ti}function ui(e,t){return"function"==typeof t?t(e):t}function ci(e){var t=si(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=ei,a=r.baseQueue,o=n.pending;if(null!==o){if(null!==a){var l=a.next;a.next=o.next,o.next=l}r.baseQueue=a=o,n.pending=null}if(null!==a){a=a.next,r=r.baseState;var s=l=o=null,u=a;do{var c=u.lane;if((Xo&c)===c)null!==s&&(s=s.next={lane:0,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null}),r=u.eagerReducer===e?u.eagerState:e(r,u.action);else{var d={lane:c,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null};null===s?(l=s=d,o=r):s=s.next=d,Jo.lanes|=c,$l|=c}u=u.next}while(null!==u&&u!==a);null===s?o=r:s.next=l,ur(r,t.memoizedState)||(Mi=!0),t.memoizedState=r,t.baseState=o,t.baseQueue=s,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function di(e){var t=si(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,o=t.memoizedState;if(null!==a){n.pending=null;var l=a=a.next;do{o=e(o,l.action),l=l.next}while(l!==a);ur(o,t.memoizedState)||(Mi=!0),t.memoizedState=o,null===t.baseQueue&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function pi(e,t,n){var r=t._getVersion;r=r(t._source);var a=t._workInProgressVersionPrimary;if(null!==a?e=a===r:(e=e.mutableReadLanes,(e=(Xo&e)===e)&&(t._workInProgressVersionPrimary=r,Vo.push(t))),e)return n(t._source);throw Vo.push(t),Error(i(350))}function fi(e,t,n,r){var a=Pl;if(null===a)throw Error(i(349));var o=t._getVersion,l=o(t._source),s=Ko.current,u=s.useState((function(){return pi(a,t,n)})),c=u[1],d=u[0];u=ti;var p=e.memoizedState,f=p.refs,h=f.getSnapshot,m=p.source;p=p.subscribe;var g=Jo;return e.memoizedState={refs:f,source:t,subscribe:r},s.useEffect((function(){f.getSnapshot=n,f.setSnapshot=c;var e=o(t._source);if(!ur(l,e)){e=n(t._source),ur(d,e)||(c(e),e=fs(g),a.mutableReadLanes|=e&a.pendingLanes),e=a.mutableReadLanes,a.entangledLanes|=e;for(var r=a.entanglements,i=e;0<i;){var s=31-qt(i),u=1<<s;r[s]|=e,i&=~u}}}),[n,t,r]),s.useEffect((function(){return r(t._source,(function(){var e=f.getSnapshot,n=f.setSnapshot;try{n(e(t._source));var r=fs(g);a.mutableReadLanes|=r&a.pendingLanes}catch(o){n((function(){throw o}))}}))}),[t,r]),ur(h,n)&&ur(m,t)&&ur(p,r)||((e={pending:null,dispatch:null,lastRenderedReducer:ui,lastRenderedState:d}).dispatch=c=Ni.bind(null,Jo,e),u.queue=e,u.baseQueue=null,d=pi(a,t,n),u.memoizedState=u.baseState=d),d}function hi(e,t,n){return fi(si(),e,t,n)}function mi(e){var t=li();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:ui,lastRenderedState:e}).dispatch=Ni.bind(null,Jo,e),[t.memoizedState,e]}function gi(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=Jo.updateQueue)?(t={lastEffect:null},Jo.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function vi(e){return e={current:e},li().memoizedState=e}function yi(){return si().memoizedState}function bi(e,t,n,r){var a=li();Jo.flags|=e,a.memoizedState=gi(1|t,n,void 0,void 0===r?null:r)}function wi(e,t,n,r){var a=si();r=void 0===r?null:r;var o=void 0;if(null!==ei){var i=ei.memoizedState;if(o=i.destroy,null!==r&&oi(r,i.deps))return void gi(t,n,o,r)}Jo.flags|=e,a.memoizedState=gi(1|t,n,o,r)}function ki(e,t){return bi(516,4,e,t)}function Ei(e,t){return wi(516,4,e,t)}function Si(e,t){return wi(4,2,e,t)}function xi(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Ci(e,t,n){return n=null!=n?n.concat([e]):null,wi(4,2,xi.bind(null,t,e),n)}function Ti(){}function _i(e,t){var n=si();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&oi(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Li(e,t){var n=si();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&oi(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Ri(e,t){var n=qa();Ga(98>n?98:n,(function(){e(!0)})),Ga(97<n?97:n,(function(){var n=Yo.transition;Yo.transition=1;try{e(!1),t()}finally{Yo.transition=n}}))}function Ni(e,t,n){var r=ps(),a=fs(e),o={lane:a,action:n,eagerReducer:null,eagerState:null,next:null},i=t.pending;if(null===i?o.next=o:(o.next=i.next,i.next=o),t.pending=o,i=e.alternate,e===Jo||null!==i&&i===Jo)ri=ni=!0;else{if(0===e.lanes&&(null===i||0===i.lanes)&&null!==(i=t.lastRenderedReducer))try{var l=t.lastRenderedState,s=i(l,n);if(o.eagerReducer=i,o.eagerState=s,ur(s,l))return}catch(u){}hs(e,a,r)}}var Ai={readContext:oo,useCallback:ai,useContext:ai,useEffect:ai,useImperativeHandle:ai,useLayoutEffect:ai,useMemo:ai,useReducer:ai,useRef:ai,useState:ai,useDebugValue:ai,useDeferredValue:ai,useTransition:ai,useMutableSource:ai,useOpaqueIdentifier:ai,unstable_isNewReconciler:!1},Oi={readContext:oo,useCallback:function(e,t){return li().memoizedState=[e,void 0===t?null:t],e},useContext:oo,useEffect:ki,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,bi(4,2,xi.bind(null,t,e),n)},useLayoutEffect:function(e,t){return bi(4,2,e,t)},useMemo:function(e,t){var n=li();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=li();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={pending:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=Ni.bind(null,Jo,e),[r.memoizedState,e]},useRef:vi,useState:mi,useDebugValue:Ti,useDeferredValue:function(e){var t=mi(e),n=t[0],r=t[1];return ki((function(){var t=Yo.transition;Yo.transition=1;try{r(e)}finally{Yo.transition=t}}),[e]),n},useTransition:function(){var e=mi(!1),t=e[0];return vi(e=Ri.bind(null,e[1])),[e,t]},useMutableSource:function(e,t,n){var r=li();return r.memoizedState={refs:{getSnapshot:t,setSnapshot:null},source:e,subscribe:n},fi(r,e,t,n)},useOpaqueIdentifier:function(){if($o){var e=!1,t=function(e){return{$$typeof:D,toString:e,valueOf:e}}((function(){throw e||(e=!0,n("r:"+(Wr++).toString(36))),Error(i(355))})),n=mi(t)[1];return 0==(2&Jo.mode)&&(Jo.flags|=516,gi(5,(function(){n("r:"+(Wr++).toString(36))}),void 0,null)),t}return mi(t="r:"+(Wr++).toString(36)),t},unstable_isNewReconciler:!1},Pi={readContext:oo,useCallback:_i,useContext:oo,useEffect:Ei,useImperativeHandle:Ci,useLayoutEffect:Si,useMemo:Li,useReducer:ci,useRef:yi,useState:function(){return ci(ui)},useDebugValue:Ti,useDeferredValue:function(e){var t=ci(ui),n=t[0],r=t[1];return Ei((function(){var t=Yo.transition;Yo.transition=1;try{r(e)}finally{Yo.transition=t}}),[e]),n},useTransition:function(){var e=ci(ui)[0];return[yi().current,e]},useMutableSource:hi,useOpaqueIdentifier:function(){return ci(ui)[0]},unstable_isNewReconciler:!1},Ii={readContext:oo,useCallback:_i,useContext:oo,useEffect:Ei,useImperativeHandle:Ci,useLayoutEffect:Si,useMemo:Li,useReducer:di,useRef:yi,useState:function(){return di(ui)},useDebugValue:Ti,useDeferredValue:function(e){var t=di(ui),n=t[0],r=t[1];return Ei((function(){var t=Yo.transition;Yo.transition=1;try{r(e)}finally{Yo.transition=t}}),[e]),n},useTransition:function(){var e=di(ui)[0];return[yi().current,e]},useMutableSource:hi,useOpaqueIdentifier:function(){return di(ui)[0]},unstable_isNewReconciler:!1},Di=k.ReactCurrentOwner,Mi=!1;function Fi(e,t,n,r){t.child=null===e?_o(t,null,n,r):To(t,e.child,n,r)}function ji(e,t,n,r,a){n=n.render;var o=t.ref;return ao(t,a),r=ii(e,t,n,r,o,a),null===e||Mi?(t.flags|=1,Fi(e,t,r,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,ol(e,t,a))}function Bi(e,t,n,r,a,o){if(null===e){var i=n.type;return"function"!=typeof i||Gs(i)||void 0!==i.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Zs(n.type,null,r,t,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=i,zi(e,t,i,r,a,o))}return i=e.child,0==(a&o)&&(a=i.memoizedProps,(n=null!==(n=n.compare)?n:dr)(a,r)&&e.ref===t.ref)?ol(e,t,o):(t.flags|=1,(e=Qs(i,r)).ref=t.ref,e.return=t,t.child=e)}function zi(e,t,n,r,a,o){if(null!==e&&dr(e.memoizedProps,r)&&e.ref===t.ref){if(Mi=!1,0==(o&a))return t.lanes=e.lanes,ol(e,t,o);0!=(16384&e.flags)&&(Mi=!0)}return qi(e,t,n,r,o)}function $i(e,t,n){var r=t.pendingProps,a=r.children,o=null!==e?e.memoizedState:null;if("hidden"===r.mode||"unstable-defer-without-hiding"===r.mode)if(0==(4&t.mode))t.memoizedState={baseLanes:0},Es(t,n);else{if(0==(1073741824&n))return e=null!==o?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e},Es(t,e),null;t.memoizedState={baseLanes:0},Es(t,null!==o?o.baseLanes:n)}else null!==o?(r=o.baseLanes|n,t.memoizedState=null):r=n,Es(t,r);return Fi(e,t,a,n),t.child}function Ui(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=128)}function qi(e,t,n,r,a){var o=ga(n)?ha:pa.current;return o=ma(t,o),ao(t,a),n=ii(e,t,n,r,o,a),null===e||Mi?(t.flags|=1,Fi(e,t,n,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,ol(e,t,a))}function Hi(e,t,n,r,a){if(ga(n)){var o=!0;wa(t)}else o=!1;if(ao(t,a),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),bo(t,n,r),ko(t,n,r,a),r=!0;else if(null===e){var i=t.stateNode,l=t.memoizedProps;i.props=l;var s=i.context,u=n.contextType;"object"==typeof u&&null!==u?u=oo(u):u=ma(t,u=ga(n)?ha:pa.current);var c=n.getDerivedStateFromProps,d="function"==typeof c||"function"==typeof i.getSnapshotBeforeUpdate;d||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==r||s!==u)&&wo(t,i,r,u),io=!1;var p=t.memoizedState;i.state=p,fo(t,r,i,a),s=t.memoizedState,l!==r||p!==s||fa.current||io?("function"==typeof c&&(go(t,n,c,r),s=t.memoizedState),(l=io||yo(t,n,l,r,p,s,u))?(d||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||("function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount()),"function"==typeof i.componentDidMount&&(t.flags|=4)):("function"==typeof i.componentDidMount&&(t.flags|=4),t.memoizedProps=r,t.memoizedState=s),i.props=r,i.state=s,i.context=u,r=l):("function"==typeof i.componentDidMount&&(t.flags|=4),r=!1)}else{i=t.stateNode,so(e,t),l=t.memoizedProps,u=t.type===t.elementType?l:Ka(t.type,l),i.props=u,d=t.pendingProps,p=i.context,"object"==typeof(s=n.contextType)&&null!==s?s=oo(s):s=ma(t,s=ga(n)?ha:pa.current);var f=n.getDerivedStateFromProps;(c="function"==typeof f||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==d||p!==s)&&wo(t,i,r,s),io=!1,p=t.memoizedState,i.state=p,fo(t,r,i,a);var h=t.memoizedState;l!==d||p!==h||fa.current||io?("function"==typeof f&&(go(t,n,f,r),h=t.memoizedState),(u=io||yo(t,n,u,r,p,h,s))?(c||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,h,s),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,h,s)),"function"==typeof i.componentDidUpdate&&(t.flags|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.flags|=256)):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=256),t.memoizedProps=r,t.memoizedState=h),i.props=r,i.state=h,i.context=s,r=u):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=256),r=!1)}return Gi(e,t,n,r,o,a)}function Gi(e,t,n,r,a,o){Ui(e,t);var i=0!=(64&t.flags);if(!r&&!i)return a&&ka(t,n,!1),ol(e,t,o);r=t.stateNode,Di.current=t;var l=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=To(t,e.child,null,o),t.child=To(t,null,l,o)):Fi(e,t,l,o),t.memoizedState=r.state,a&&ka(t,n,!0),t.child}function Qi(e){var t=e.stateNode;t.pendingContext?ya(0,t.pendingContext,t.pendingContext!==t.context):t.context&&ya(0,t.context,!1),Po(e,t.containerInfo)}var Zi,Vi,Wi,Ki,Yi={dehydrated:null,retryLane:0};function Xi(e,t,n){var r,a=t.pendingProps,o=Fo.current,i=!1;return(r=0!=(64&t.flags))||(r=(null===e||null!==e.memoizedState)&&0!=(2&o)),r?(i=!0,t.flags&=-65):null!==e&&null===e.memoizedState||void 0===a.fallback||!0===a.unstable_avoidThisFallback||(o|=1),ca(Fo,1&o),null===e?(void 0!==a.fallback&&Ho(t),e=a.children,o=a.fallback,i?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Yi,e):"number"==typeof a.unstable_expectedLoadTime?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Yi,t.lanes=33554432,e):((n=Ws({mode:"visible",children:e},t.mode,n,null)).return=t,t.child=n)):(e.memoizedState,i?(a=tl(e,t,a.children,a.fallback,n),i=t.child,o=e.child.memoizedState,i.memoizedState=null===o?{baseLanes:n}:{baseLanes:o.baseLanes|n},i.childLanes=e.childLanes&~n,t.memoizedState=Yi,a):(n=el(e,t,a.children,n),t.memoizedState=null,n))}function Ji(e,t,n,r){var a=e.mode,o=e.child;return t={mode:"hidden",children:t},0==(2&a)&&null!==o?(o.childLanes=0,o.pendingProps=t):o=Ws(t,a,0,null),n=Vs(n,a,r,null),o.return=e,n.return=e,o.sibling=n,e.child=o,n}function el(e,t,n,r){var a=e.child;return e=a.sibling,n=Qs(a,{mode:"visible",children:n}),0==(2&t.mode)&&(n.lanes=r),n.return=t,n.sibling=null,null!==e&&(e.nextEffect=null,e.flags=8,t.firstEffect=t.lastEffect=e),t.child=n}function tl(e,t,n,r,a){var o=t.mode,i=e.child;e=i.sibling;var l={mode:"hidden",children:n};return 0==(2&o)&&t.child!==i?((n=t.child).childLanes=0,n.pendingProps=l,null!==(i=n.lastEffect)?(t.firstEffect=n.firstEffect,t.lastEffect=i,i.nextEffect=null):t.firstEffect=t.lastEffect=null):n=Qs(i,l),null!==e?r=Qs(e,r):(r=Vs(r,o,a,null)).flags|=2,r.return=t,n.return=t,n.sibling=r,t.child=n,r}function nl(e,t){e.lanes|=t;var n=e.alternate;null!==n&&(n.lanes|=t),ro(e.return,t)}function rl(e,t,n,r,a,o){var i=e.memoizedState;null===i?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:a,lastEffect:o}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailMode=a,i.lastEffect=o)}function al(e,t,n){var r=t.pendingProps,a=r.revealOrder,o=r.tail;if(Fi(e,t,r.children,n),0!=(2&(r=Fo.current)))r=1&r|2,t.flags|=64;else{if(null!==e&&0!=(64&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&nl(e,n);else if(19===e.tag)nl(e,n);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}if(ca(Fo,r),0==(2&t.mode))t.memoizedState=null;else switch(a){case"forwards":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===jo(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),rl(t,!1,a,n,o,t.lastEffect);break;case"backwards":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===jo(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}rl(t,!0,n,null,o,t.lastEffect);break;case"together":rl(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function ol(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),$l|=t.lanes,0!=(n&t.childLanes)){if(null!==e&&t.child!==e.child)throw Error(i(153));if(null!==t.child){for(n=Qs(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Qs(e,e.pendingProps)).return=t;n.sibling=null}return t.child}return null}function il(e,t){if(!$o)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 ll(e,t,n){var r=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:case 17:return ga(t.type)&&va(),null;case 3:return Io(),ua(fa),ua(pa),Wo(),(r=t.stateNode).pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(Qo(t)?t.flags|=4:r.hydrate||(t.flags|=256)),Vi(t),null;case 5:Mo(t);var o=Oo(Ao.current);if(n=t.type,null!==e&&null!=t.stateNode)Wi(e,t,n,r,o),e.ref!==t.ref&&(t.flags|=128);else{if(!r){if(null===t.stateNode)throw Error(i(166));return null}if(e=Oo(Ro.current),Qo(t)){r=t.stateNode,n=t.type;var l=t.memoizedProps;switch(r[Yr]=t,r[Xr]=l,n){case"dialog":Rr("cancel",r),Rr("close",r);break;case"iframe":case"object":case"embed":Rr("load",r);break;case"video":case"audio":for(e=0;e<Cr.length;e++)Rr(Cr[e],r);break;case"source":Rr("error",r);break;case"img":case"image":case"link":Rr("error",r),Rr("load",r);break;case"details":Rr("toggle",r);break;case"input":ee(r,l),Rr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!l.multiple},Rr("invalid",r);break;case"textarea":se(r,l),Rr("invalid",r)}for(var u in Se(n,l),e=null,l)l.hasOwnProperty(u)&&(o=l[u],"children"===u?"string"==typeof o?r.textContent!==o&&(e=["children",o]):"number"==typeof o&&r.textContent!==""+o&&(e=["children",""+o]):s.hasOwnProperty(u)&&null!=o&&"onScroll"===u&&Rr("scroll",r));switch(n){case"input":K(r),re(r,l,!0);break;case"textarea":K(r),ce(r);break;case"select":case"option":break;default:"function"==typeof l.onClick&&(r.onclick=Br)}r=e,t.updateQueue=r,null!==r&&(t.flags|=4)}else{switch(u=9===o.nodeType?o:o.ownerDocument,e===de.html&&(e=pe(n)),e===de.html?"script"===n?((e=u.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=u.createElement(n,{is:r.is}):(e=u.createElement(n),"select"===n&&(u=e,r.multiple?u.multiple=!0:r.size&&(u.size=r.size))):e=u.createElementNS(e,n),e[Yr]=t,e[Xr]=r,Zi(e,t,!1,!1),t.stateNode=e,u=xe(n,r),n){case"dialog":Rr("cancel",e),Rr("close",e),o=r;break;case"iframe":case"object":case"embed":Rr("load",e),o=r;break;case"video":case"audio":for(o=0;o<Cr.length;o++)Rr(Cr[o],e);o=r;break;case"source":Rr("error",e),o=r;break;case"img":case"image":case"link":Rr("error",e),Rr("load",e),o=r;break;case"details":Rr("toggle",e),o=r;break;case"input":ee(e,r),o=J(e,r),Rr("invalid",e);break;case"option":o=oe(e,r);break;case"select":e._wrapperState={wasMultiple:!!r.multiple},o=a({},r,{value:void 0}),Rr("invalid",e);break;case"textarea":se(e,r),o=le(e,r),Rr("invalid",e);break;default:o=r}Se(n,o);var c=o;for(l in c)if(c.hasOwnProperty(l)){var d=c[l];"style"===l?ke(e,d):"dangerouslySetInnerHTML"===l?null!=(d=d?d.__html:void 0)&&ge(e,d):"children"===l?"string"==typeof d?("textarea"!==n||""!==d)&&ve(e,d):"number"==typeof d&&ve(e,""+d):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(s.hasOwnProperty(l)?null!=d&&"onScroll"===l&&Rr("scroll",e):null!=d&&w(e,l,d,u))}switch(n){case"input":K(e),re(e,r,!1);break;case"textarea":K(e),ce(e);break;case"option":null!=r.value&&e.setAttribute("value",""+V(r.value));break;case"select":e.multiple=!!r.multiple,null!=(l=r.value)?ie(e,!!r.multiple,l,!1):null!=r.defaultValue&&ie(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof o.onClick&&(e.onclick=Br)}Ur(n,r)&&(t.flags|=4)}null!==t.ref&&(t.flags|=128)}return null;case 6:if(e&&null!=t.stateNode)Ki(e,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));n=Oo(Ao.current),Oo(Ro.current),Qo(t)?(r=t.stateNode,n=t.memoizedProps,r[Yr]=t,r.nodeValue!==n&&(t.flags|=4)):((r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[Yr]=t,t.stateNode=r)}return null;case 13:return ua(Fo),r=t.memoizedState,0!=(64&t.flags)?(t.lanes=n,t):(r=null!==r,n=!1,null===e?void 0!==t.memoizedProps.fallback&&Qo(t):n=null!==e.memoizedState,r&&!n&&0!=(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&Fo.current)?0===jl&&(jl=3):(0!==jl&&3!==jl||(jl=4),null===Pl||0==(134217727&$l)&&0==(134217727&Ul)||ys(Pl,Dl))),(r||n)&&(t.flags|=4),null);case 4:return Io(),Vi(t),null===e&&Ar(t.stateNode.containerInfo),null;case 10:return no(t),null;case 19:if(ua(Fo),null===(r=t.memoizedState))return null;if(l=0!=(64&t.flags),null===(u=r.rendering))if(l)il(r,!1);else{if(0!==jl||null!==e&&0!=(64&e.flags))for(e=t.child;null!==e;){if(null!==(u=jo(e))){for(t.flags|=64,il(r,!1),null!==(l=u.updateQueue)&&(t.updateQueue=l,t.flags|=4),null===r.lastEffect&&(t.firstEffect=null),t.lastEffect=r.lastEffect,r=n,n=t.child;null!==n;)e=r,(l=n).flags&=2,l.nextEffect=null,l.firstEffect=null,l.lastEffect=null,null===(u=l.alternate)?(l.childLanes=0,l.lanes=e,l.child=null,l.memoizedProps=null,l.memoizedState=null,l.updateQueue=null,l.dependencies=null,l.stateNode=null):(l.childLanes=u.childLanes,l.lanes=u.lanes,l.child=u.child,l.memoizedProps=u.memoizedProps,l.memoizedState=u.memoizedState,l.updateQueue=u.updateQueue,l.type=u.type,e=u.dependencies,l.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return ca(Fo,1&Fo.current|2),t.child}e=e.sibling}null!==r.tail&&Ua()>Ql&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432)}else{if(!l)if(null!==(e=jo(u))){if(t.flags|=64,l=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),il(r,!0),null===r.tail&&"hidden"===r.tailMode&&!u.alternate&&!$o)return null!==(t=t.lastEffect=r.lastEffect)&&(t.nextEffect=null),null}else 2*Ua()-r.renderingStartTime>Ql&&1073741824!==n&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432);r.isBackwards?(u.sibling=t.child,t.child=u):(null!==(n=r.last)?n.sibling=u:t.child=u,r.last=u)}return null!==r.tail?(n=r.tail,r.rendering=n,r.tail=n.sibling,r.lastEffect=t.lastEffect,r.renderingStartTime=Ua(),n.sibling=null,t=Fo.current,ca(Fo,l?1&t|2:1&t),n):null;case 23:case 24:return Ss(),null!==e&&null!==e.memoizedState!=(null!==t.memoizedState)&&"unstable-defer-without-hiding"!==r.mode&&(t.flags|=4),null}throw Error(i(156,t.tag))}function sl(e){switch(e.tag){case 1:ga(e.type)&&va();var t=e.flags;return 4096&t?(e.flags=-4097&t|64,e):null;case 3:if(Io(),ua(fa),ua(pa),Wo(),0!=(64&(t=e.flags)))throw Error(i(285));return e.flags=-4097&t|64,e;case 5:return Mo(e),null;case 13:return ua(Fo),4096&(t=e.flags)?(e.flags=-4097&t|64,e):null;case 19:return ua(Fo),null;case 4:return Io(),null;case 10:return no(e),null;case 23:case 24:return Ss(),null;default:return null}}function ul(e,t){try{var n="",r=t;do{n+=Q(r),r=r.return}while(r);var a=n}catch(o){a="\nError generating stack: "+o.message+"\n"+o.stack}return{value:e,source:t,stack:a}}function cl(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}Zi=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Vi=function(){},Wi=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,Oo(Ro.current);var i,l=null;switch(n){case"input":o=J(e,o),r=J(e,r),l=[];break;case"option":o=oe(e,o),r=oe(e,r),l=[];break;case"select":o=a({},o,{value:void 0}),r=a({},r,{value:void 0}),l=[];break;case"textarea":o=le(e,o),r=le(e,r),l=[];break;default:"function"!=typeof o.onClick&&"function"==typeof r.onClick&&(e.onclick=Br)}for(d in Se(n,r),n=null,o)if(!r.hasOwnProperty(d)&&o.hasOwnProperty(d)&&null!=o[d])if("style"===d){var u=o[d];for(i in u)u.hasOwnProperty(i)&&(n||(n={}),n[i]="")}else"dangerouslySetInnerHTML"!==d&&"children"!==d&&"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&"autoFocus"!==d&&(s.hasOwnProperty(d)?l||(l=[]):(l=l||[]).push(d,null));for(d in r){var c=r[d];if(u=null!=o?o[d]:void 0,r.hasOwnProperty(d)&&c!==u&&(null!=c||null!=u))if("style"===d)if(u){for(i in u)!u.hasOwnProperty(i)||c&&c.hasOwnProperty(i)||(n||(n={}),n[i]="");for(i in c)c.hasOwnProperty(i)&&u[i]!==c[i]&&(n||(n={}),n[i]=c[i])}else n||(l||(l=[]),l.push(d,n)),n=c;else"dangerouslySetInnerHTML"===d?(c=c?c.__html:void 0,u=u?u.__html:void 0,null!=c&&u!==c&&(l=l||[]).push(d,c)):"children"===d?"string"!=typeof c&&"number"!=typeof c||(l=l||[]).push(d,""+c):"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&(s.hasOwnProperty(d)?(null!=c&&"onScroll"===d&&Rr("scroll",e),l||u===c||(l=[])):"object"==typeof c&&null!==c&&c.$$typeof===D?c.toString():(l=l||[]).push(d,c))}n&&(l=l||[]).push("style",n);var d=l;(t.updateQueue=d)&&(t.flags|=4)}},Ki=function(e,t,n,r){n!==r&&(t.flags|=4)};var dl="function"==typeof WeakMap?WeakMap:Map;function pl(e,t,n){(n=uo(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Kl||(Kl=!0,Yl=r),cl(0,t)},n}function fl(e,t,n){(n=uo(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var a=t.value;n.payload=function(){return cl(0,t),r(a)}}var o=e.stateNode;return null!==o&&"function"==typeof o.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===Xl?Xl=new Set([this]):Xl.add(this),cl(0,t));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}var hl="function"==typeof WeakSet?WeakSet:Set;function ml(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(n){zs(e,n)}else t.current=null}function gl(e,t){switch(t.tag){case 0:case 11:case 15:case 22:case 5:case 6:case 4:case 17:return;case 1:if(256&t.flags&&null!==e){var n=e.memoizedProps,r=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:Ka(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:return void(256&t.flags&&Qr(t.stateNode.containerInfo))}throw Error(i(163))}function vl(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{if(3==(3&e.tag)){var r=e.create;e.destroy=r()}e=e.next}while(e!==t)}if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{var a=e;r=a.next,0!=(4&(a=a.tag))&&0!=(1&a)&&(Fs(n,e),Ms(n,e)),e=r}while(e!==t)}return;case 1:return e=n.stateNode,4&n.flags&&(null===t?e.componentDidMount():(r=n.elementType===n.type?t.memoizedProps:Ka(n.type,t.memoizedProps),e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),void(null!==(t=n.updateQueue)&&ho(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:case 1:e=n.child.stateNode}ho(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.flags&&Ur(n.type,n.memoizedProps)&&e.focus());case 6:case 4:case 12:case 19:case 17:case 20:case 21:case 23:case 24:return;case 13:return void(null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&kt(n)))))}throw Error(i(163))}function yl(e,t){for(var n=e;;){if(5===n.tag){var r=n.stateNode;if(t)"function"==typeof(r=r.style).setProperty?r.setProperty("display","none","important"):r.display="none";else{r=n.stateNode;var a=n.memoizedProps.style;a=null!=a&&a.hasOwnProperty("display")?a.display:null,r.style.display=we("display",a)}}else if(6===n.tag)n.stateNode.nodeValue=t?"":n.memoizedProps;else if((23!==n.tag&&24!==n.tag||null===n.memoizedState||n===e)&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function bl(e,t){if(Sa&&"function"==typeof Sa.onCommitFiberUnmount)try{Sa.onCommitFiberUnmount(Ea,t)}catch(o){}switch(t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var n=e=e.next;do{var r=n,a=r.destroy;if(r=r.tag,void 0!==a)if(0!=(4&r))Fs(t,n);else{r=t;try{a()}catch(o){zs(r,o)}}n=n.next}while(n!==e)}break;case 1:if(ml(t),"function"==typeof(e=t.stateNode).componentWillUnmount)try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(o){zs(t,o)}break;case 5:ml(t);break;case 4:Cl(e,t)}}function wl(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function kl(e){return 5===e.tag||3===e.tag||4===e.tag}function El(e){e:{for(var t=e.return;null!==t;){if(kl(t))break e;t=t.return}throw Error(i(160))}var n=t;switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:case 4:t=t.containerInfo,r=!0;break;default:throw Error(i(161))}16&n.flags&&(ve(t,""),n.flags&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||kl(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.flags)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.flags)){n=n.stateNode;break e}}r?Sl(e,n,t):xl(e,n,t)}function Sl(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Br));else if(4!==r&&null!==(e=e.child))for(Sl(e,t,n),e=e.sibling;null!==e;)Sl(e,t,n),e=e.sibling}function xl(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(xl(e,t,n),e=e.sibling;null!==e;)xl(e,t,n),e=e.sibling}function Cl(e,t){for(var n,r,a=t,o=!1;;){if(!o){o=a.return;e:for(;;){if(null===o)throw Error(i(160));switch(n=o.stateNode,o.tag){case 5:r=!1;break e;case 3:case 4:n=n.containerInfo,r=!0;break e}o=o.return}o=!0}if(5===a.tag||6===a.tag){e:for(var l=e,s=a,u=s;;)if(bl(l,u),null!==u.child&&4!==u.tag)u.child.return=u,u=u.child;else{if(u===s)break e;for(;null===u.sibling;){if(null===u.return||u.return===s)break e;u=u.return}u.sibling.return=u.return,u=u.sibling}r?(l=n,s=a.stateNode,8===l.nodeType?l.parentNode.removeChild(s):l.removeChild(s)):n.removeChild(a.stateNode)}else if(4===a.tag){if(null!==a.child){n=a.stateNode.containerInfo,r=!0,a.child.return=a,a=a.child;continue}}else if(bl(e,a),null!==a.child){a.child.return=a,a=a.child;continue}if(a===t)break;for(;null===a.sibling;){if(null===a.return||a.return===t)return;4===(a=a.return).tag&&(o=!1)}a.sibling.return=a.return,a=a.sibling}}function Tl(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:var n=t.updateQueue;if(null!==(n=null!==n?n.lastEffect:null)){var r=n=n.next;do{3==(3&r.tag)&&(e=r.destroy,r.destroy=void 0,void 0!==e&&e()),r=r.next}while(r!==n)}return;case 1:case 12:case 17:return;case 5:if(null!=(n=t.stateNode)){r=t.memoizedProps;var a=null!==e?e.memoizedProps:r;e=t.type;var o=t.updateQueue;if(t.updateQueue=null,null!==o){for(n[Xr]=r,"input"===e&&"radio"===r.type&&null!=r.name&&te(n,r),xe(e,a),t=xe(e,r),a=0;a<o.length;a+=2){var l=o[a],s=o[a+1];"style"===l?ke(n,s):"dangerouslySetInnerHTML"===l?ge(n,s):"children"===l?ve(n,s):w(n,l,s,t)}switch(e){case"input":ne(n,r);break;case"textarea":ue(n,r);break;case"select":e=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,null!=(o=r.value)?ie(n,!!r.multiple,o,!1):e!==!!r.multiple&&(null!=r.defaultValue?ie(n,!!r.multiple,r.defaultValue,!0):ie(n,!!r.multiple,r.multiple?[]:"",!1))}}}return;case 6:if(null===t.stateNode)throw Error(i(162));return void(t.stateNode.nodeValue=t.memoizedProps);case 3:return void((n=t.stateNode).hydrate&&(n.hydrate=!1,kt(n.containerInfo)));case 13:return null!==t.memoizedState&&(Gl=Ua(),yl(t.child,!0)),void _l(t);case 19:return void _l(t);case 23:case 24:return void yl(t,null!==t.memoizedState)}throw Error(i(163))}function _l(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new hl),t.forEach((function(t){var r=Us.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function Ll(e,t){return null!==e&&(null===(e=e.memoizedState)||null!==e.dehydrated)&&(null!==(t=t.memoizedState)&&null===t.dehydrated)}var Rl=Math.ceil,Nl=k.ReactCurrentDispatcher,Al=k.ReactCurrentOwner,Ol=0,Pl=null,Il=null,Dl=0,Ml=0,Fl=sa(0),jl=0,Bl=null,zl=0,$l=0,Ul=0,ql=0,Hl=null,Gl=0,Ql=1/0;function Zl(){Ql=Ua()+500}var Vl,Wl=null,Kl=!1,Yl=null,Xl=null,Jl=!1,es=null,ts=90,ns=[],rs=[],as=null,os=0,is=null,ls=-1,ss=0,us=0,cs=null,ds=!1;function ps(){return 0!=(48&Ol)?Ua():-1!==ls?ls:ls=Ua()}function fs(e){if(0==(2&(e=e.mode)))return 1;if(0==(4&e))return 99===qa()?1:2;if(0===ss&&(ss=zl),0!==Wa.transition){0!==us&&(us=null!==Hl?Hl.pendingLanes:0),e=ss;var t=4186112&~us;return 0===(t&=-t)&&(0===(t=(e=4186112&~e)&-e)&&(t=8192)),t}return e=qa(),0!=(4&Ol)&&98===e?e=Bt(12,ss):e=Bt(e=function(e){switch(e){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}(e),ss),e}function hs(e,t,n){if(50<os)throw os=0,is=null,Error(i(185));if(null===(e=ms(e,t)))return null;Ut(e,t,n),e===Pl&&(Ul|=t,4===jl&&ys(e,Dl));var r=qa();1===t?0!=(8&Ol)&&0==(48&Ol)?bs(e):(gs(e,n),0===Ol&&(Zl(),Za())):(0==(4&Ol)||98!==r&&99!==r||(null===as?as=new Set([e]):as.add(e)),gs(e,n)),Hl=e}function ms(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}function gs(e,t){for(var n=e.callbackNode,r=e.suspendedLanes,a=e.pingedLanes,o=e.expirationTimes,l=e.pendingLanes;0<l;){var s=31-qt(l),u=1<<s,c=o[s];if(-1===c){if(0==(u&r)||0!=(u&a)){c=t,Mt(u);var d=Dt;o[s]=10<=d?c+250:6<=d?c+5e3:-1}}else c<=t&&(e.expiredLanes|=u);l&=~u}if(r=Ft(e,e===Pl?Dl:0),t=Dt,0===r)null!==n&&(n!==Ma&&Ta(n),e.callbackNode=null,e.callbackPriority=0);else{if(null!==n){if(e.callbackPriority===t)return;n!==Ma&&Ta(n)}15===t?(n=bs.bind(null,e),null===ja?(ja=[n],Ba=Ca(Aa,Va)):ja.push(n),n=Ma):14===t?n=Qa(99,bs.bind(null,e)):(n=function(e){switch(e){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(i(358,e))}}(t),n=Qa(n,vs.bind(null,e))),e.callbackPriority=t,e.callbackNode=n}}function vs(e){if(ls=-1,us=ss=0,0!=(48&Ol))throw Error(i(327));var t=e.callbackNode;if(Ds()&&e.callbackNode!==t)return null;var n=Ft(e,e===Pl?Dl:0);if(0===n)return null;var r=n,a=Ol;Ol|=16;var o=Ts();for(Pl===e&&Dl===r||(Zl(),xs(e,r));;)try{Rs();break}catch(s){Cs(e,s)}if(to(),Nl.current=o,Ol=a,null!==Il?r=0:(Pl=null,Dl=0,r=jl),0!=(zl&Ul))xs(e,0);else if(0!==r){if(2===r&&(Ol|=64,e.hydrate&&(e.hydrate=!1,Qr(e.containerInfo)),0!==(n=jt(e))&&(r=_s(e,n))),1===r)throw t=Bl,xs(e,0),ys(e,n),gs(e,Ua()),t;switch(e.finishedWork=e.current.alternate,e.finishedLanes=n,r){case 0:case 1:throw Error(i(345));case 2:case 5:Os(e);break;case 3:if(ys(e,n),(62914560&n)===n&&10<(r=Gl+500-Ua())){if(0!==Ft(e,0))break;if(((a=e.suspendedLanes)&n)!==n){ps(),e.pingedLanes|=e.suspendedLanes&a;break}e.timeoutHandle=Hr(Os.bind(null,e),r);break}Os(e);break;case 4:if(ys(e,n),(4186112&n)===n)break;for(r=e.eventTimes,a=-1;0<n;){var l=31-qt(n);o=1<<l,(l=r[l])>a&&(a=l),n&=~o}if(n=a,10<(n=(120>(n=Ua()-n)?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Rl(n/1960))-n)){e.timeoutHandle=Hr(Os.bind(null,e),n);break}Os(e);break;default:throw Error(i(329))}}return gs(e,Ua()),e.callbackNode===t?vs.bind(null,e):null}function ys(e,t){for(t&=~ql,t&=~Ul,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-qt(t),r=1<<n;e[n]=-1,t&=~r}}function bs(e){if(0!=(48&Ol))throw Error(i(327));if(Ds(),e===Pl&&0!=(e.expiredLanes&Dl)){var t=Dl,n=_s(e,t);0!=(zl&Ul)&&(n=_s(e,t=Ft(e,t)))}else n=_s(e,t=Ft(e,0));if(0!==e.tag&&2===n&&(Ol|=64,e.hydrate&&(e.hydrate=!1,Qr(e.containerInfo)),0!==(t=jt(e))&&(n=_s(e,t))),1===n)throw n=Bl,xs(e,0),ys(e,t),gs(e,Ua()),n;return e.finishedWork=e.current.alternate,e.finishedLanes=t,Os(e),gs(e,Ua()),null}function ws(e,t){var n=Ol;Ol|=1;try{return e(t)}finally{0===(Ol=n)&&(Zl(),Za())}}function ks(e,t){var n=Ol;Ol&=-2,Ol|=8;try{return e(t)}finally{0===(Ol=n)&&(Zl(),Za())}}function Es(e,t){ca(Fl,Ml),Ml|=t,zl|=t}function Ss(){Ml=Fl.current,ua(Fl)}function xs(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,Gr(n)),null!==Il)for(n=Il.return;null!==n;){var r=n;switch(r.tag){case 1:null!=(r=r.type.childContextTypes)&&va();break;case 3:Io(),ua(fa),ua(pa),Wo();break;case 5:Mo(r);break;case 4:Io();break;case 13:case 19:ua(Fo);break;case 10:no(r);break;case 23:case 24:Ss()}n=n.return}Pl=e,Il=Qs(e.current,null),Dl=Ml=zl=t,jl=0,Bl=null,ql=Ul=$l=0}function Cs(e,t){for(;;){var n=Il;try{if(to(),Ko.current=Ai,ni){for(var r=Jo.memoizedState;null!==r;){var a=r.queue;null!==a&&(a.pending=null),r=r.next}ni=!1}if(Xo=0,ti=ei=Jo=null,ri=!1,Al.current=null,null===n||null===n.return){jl=1,Bl=t,Il=null;break}e:{var o=e,i=n.return,l=n,s=t;if(t=Dl,l.flags|=2048,l.firstEffect=l.lastEffect=null,null!==s&&"object"==typeof s&&"function"==typeof s.then){var u=s;if(0==(2&l.mode)){var c=l.alternate;c?(l.updateQueue=c.updateQueue,l.memoizedState=c.memoizedState,l.lanes=c.lanes):(l.updateQueue=null,l.memoizedState=null)}var d=0!=(1&Fo.current),p=i;do{var f;if(f=13===p.tag){var h=p.memoizedState;if(null!==h)f=null!==h.dehydrated;else{var m=p.memoizedProps;f=void 0!==m.fallback&&(!0!==m.unstable_avoidThisFallback||!d)}}if(f){var g=p.updateQueue;if(null===g){var v=new Set;v.add(u),p.updateQueue=v}else g.add(u);if(0==(2&p.mode)){if(p.flags|=64,l.flags|=16384,l.flags&=-2981,1===l.tag)if(null===l.alternate)l.tag=17;else{var y=uo(-1,1);y.tag=2,co(l,y)}l.lanes|=1;break e}s=void 0,l=t;var b=o.pingCache;if(null===b?(b=o.pingCache=new dl,s=new Set,b.set(u,s)):void 0===(s=b.get(u))&&(s=new Set,b.set(u,s)),!s.has(l)){s.add(l);var w=$s.bind(null,o,u,l);u.then(w,w)}p.flags|=4096,p.lanes=t;break e}p=p.return}while(null!==p);s=Error((Z(l.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.")}5!==jl&&(jl=2),s=ul(s,l),p=i;do{switch(p.tag){case 3:o=s,p.flags|=4096,t&=-t,p.lanes|=t,po(p,pl(0,o,t));break e;case 1:o=s;var k=p.type,E=p.stateNode;if(0==(64&p.flags)&&("function"==typeof k.getDerivedStateFromError||null!==E&&"function"==typeof E.componentDidCatch&&(null===Xl||!Xl.has(E)))){p.flags|=4096,t&=-t,p.lanes|=t,po(p,fl(p,o,t));break e}}p=p.return}while(null!==p)}As(n)}catch(S){t=S,Il===n&&null!==n&&(Il=n=n.return);continue}break}}function Ts(){var e=Nl.current;return Nl.current=Ai,null===e?Ai:e}function _s(e,t){var n=Ol;Ol|=16;var r=Ts();for(Pl===e&&Dl===t||xs(e,t);;)try{Ls();break}catch(a){Cs(e,a)}if(to(),Ol=n,Nl.current=r,null!==Il)throw Error(i(261));return Pl=null,Dl=0,jl}function Ls(){for(;null!==Il;)Ns(Il)}function Rs(){for(;null!==Il&&!_a();)Ns(Il)}function Ns(e){var t=Vl(e.alternate,e,Ml);e.memoizedProps=e.pendingProps,null===t?As(e):Il=t,Al.current=null}function As(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(2048&t.flags)){if(null!==(n=ll(n,t,Ml)))return void(Il=n);if(24!==(n=t).tag&&23!==n.tag||null===n.memoizedState||0!=(1073741824&Ml)||0==(4&n.mode)){for(var r=0,a=n.child;null!==a;)r|=a.lanes|a.childLanes,a=a.sibling;n.childLanes=r}null!==e&&0==(2048&e.flags)&&(null===e.firstEffect&&(e.firstEffect=t.firstEffect),null!==t.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1<t.flags&&(null!==e.lastEffect?e.lastEffect.nextEffect=t:e.firstEffect=t,e.lastEffect=t))}else{if(null!==(n=sl(t)))return n.flags&=2047,void(Il=n);null!==e&&(e.firstEffect=e.lastEffect=null,e.flags|=2048)}if(null!==(t=t.sibling))return void(Il=t);Il=t=e}while(null!==t);0===jl&&(jl=5)}function Os(e){var t=qa();return Ga(99,Ps.bind(null,e,t)),null}function Ps(e,t){do{Ds()}while(null!==es);if(0!=(48&Ol))throw Error(i(327));var n=e.finishedWork;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(i(177));e.callbackNode=null;var r=n.lanes|n.childLanes,a=r,o=e.pendingLanes&~a;e.pendingLanes=a,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=a,e.mutableReadLanes&=a,e.entangledLanes&=a,a=e.entanglements;for(var l=e.eventTimes,s=e.expirationTimes;0<o;){var u=31-qt(o),c=1<<u;a[u]=0,l[u]=-1,s[u]=-1,o&=~c}if(null!==as&&0==(24&r)&&as.has(e)&&as.delete(e),e===Pl&&(Il=Pl=null,Dl=0),1<n.flags?null!==n.lastEffect?(n.lastEffect.nextEffect=n,r=n.firstEffect):r=n:r=n.firstEffect,null!==r){if(a=Ol,Ol|=32,Al.current=null,zr=Vt,gr(l=mr())){if("selectionStart"in l)s={start:l.selectionStart,end:l.selectionEnd};else e:if(s=(s=l.ownerDocument)&&s.defaultView||window,(c=s.getSelection&&s.getSelection())&&0!==c.rangeCount){s=c.anchorNode,o=c.anchorOffset,u=c.focusNode,c=c.focusOffset;try{s.nodeType,u.nodeType}catch(T){s=null;break e}var d=0,p=-1,f=-1,h=0,m=0,g=l,v=null;t:for(;;){for(var y;g!==s||0!==o&&3!==g.nodeType||(p=d+o),g!==u||0!==c&&3!==g.nodeType||(f=d+c),3===g.nodeType&&(d+=g.nodeValue.length),null!==(y=g.firstChild);)v=g,g=y;for(;;){if(g===l)break t;if(v===s&&++h===o&&(p=d),v===u&&++m===c&&(f=d),null!==(y=g.nextSibling))break;v=(g=v).parentNode}g=y}s=-1===p||-1===f?null:{start:p,end:f}}else s=null;s=s||{start:0,end:0}}else s=null;$r={focusedElem:l,selectionRange:s},Vt=!1,cs=null,ds=!1,Wl=r;do{try{Is()}catch(T){if(null===Wl)throw Error(i(330));zs(Wl,T),Wl=Wl.nextEffect}}while(null!==Wl);cs=null,Wl=r;do{try{for(l=e;null!==Wl;){var b=Wl.flags;if(16&b&&ve(Wl.stateNode,""),128&b){var w=Wl.alternate;if(null!==w){var k=w.ref;null!==k&&("function"==typeof k?k(null):k.current=null)}}switch(1038&b){case 2:El(Wl),Wl.flags&=-3;break;case 6:El(Wl),Wl.flags&=-3,Tl(Wl.alternate,Wl);break;case 1024:Wl.flags&=-1025;break;case 1028:Wl.flags&=-1025,Tl(Wl.alternate,Wl);break;case 4:Tl(Wl.alternate,Wl);break;case 8:Cl(l,s=Wl);var E=s.alternate;wl(s),null!==E&&wl(E)}Wl=Wl.nextEffect}}catch(T){if(null===Wl)throw Error(i(330));zs(Wl,T),Wl=Wl.nextEffect}}while(null!==Wl);if(k=$r,w=mr(),b=k.focusedElem,l=k.selectionRange,w!==b&&b&&b.ownerDocument&&hr(b.ownerDocument.documentElement,b)){null!==l&&gr(b)&&(w=l.start,void 0===(k=l.end)&&(k=w),"selectionStart"in b?(b.selectionStart=w,b.selectionEnd=Math.min(k,b.value.length)):(k=(w=b.ownerDocument||document)&&w.defaultView||window).getSelection&&(k=k.getSelection(),s=b.textContent.length,E=Math.min(l.start,s),l=void 0===l.end?E:Math.min(l.end,s),!k.extend&&E>l&&(s=l,l=E,E=s),s=fr(b,E),o=fr(b,l),s&&o&&(1!==k.rangeCount||k.anchorNode!==s.node||k.anchorOffset!==s.offset||k.focusNode!==o.node||k.focusOffset!==o.offset)&&((w=w.createRange()).setStart(s.node,s.offset),k.removeAllRanges(),E>l?(k.addRange(w),k.extend(o.node,o.offset)):(w.setEnd(o.node,o.offset),k.addRange(w))))),w=[];for(k=b;k=k.parentNode;)1===k.nodeType&&w.push({element:k,left:k.scrollLeft,top:k.scrollTop});for("function"==typeof b.focus&&b.focus(),b=0;b<w.length;b++)(k=w[b]).element.scrollLeft=k.left,k.element.scrollTop=k.top}Vt=!!zr,$r=zr=null,e.current=n,Wl=r;do{try{for(b=e;null!==Wl;){var S=Wl.flags;if(36&S&&vl(b,Wl.alternate,Wl),128&S){w=void 0;var x=Wl.ref;if(null!==x){var C=Wl.stateNode;Wl.tag,w=C,"function"==typeof x?x(w):x.current=w}}Wl=Wl.nextEffect}}catch(T){if(null===Wl)throw Error(i(330));zs(Wl,T),Wl=Wl.nextEffect}}while(null!==Wl);Wl=null,Fa(),Ol=a}else e.current=n;if(Jl)Jl=!1,es=e,ts=t;else for(Wl=r;null!==Wl;)t=Wl.nextEffect,Wl.nextEffect=null,8&Wl.flags&&((S=Wl).sibling=null,S.stateNode=null),Wl=t;if(0===(r=e.pendingLanes)&&(Xl=null),1===r?e===is?os++:(os=0,is=e):os=0,n=n.stateNode,Sa&&"function"==typeof Sa.onCommitFiberRoot)try{Sa.onCommitFiberRoot(Ea,n,void 0,64==(64&n.current.flags))}catch(T){}if(gs(e,Ua()),Kl)throw Kl=!1,e=Yl,Yl=null,e;return 0!=(8&Ol)||Za(),null}function Is(){for(;null!==Wl;){var e=Wl.alternate;ds||null===cs||(0!=(8&Wl.flags)?Je(Wl,cs)&&(ds=!0):13===Wl.tag&&Ll(e,Wl)&&Je(Wl,cs)&&(ds=!0));var t=Wl.flags;0!=(256&t)&&gl(e,Wl),0==(512&t)||Jl||(Jl=!0,Qa(97,(function(){return Ds(),null}))),Wl=Wl.nextEffect}}function Ds(){if(90!==ts){var e=97<ts?97:ts;return ts=90,Ga(e,js)}return!1}function Ms(e,t){ns.push(t,e),Jl||(Jl=!0,Qa(97,(function(){return Ds(),null})))}function Fs(e,t){rs.push(t,e),Jl||(Jl=!0,Qa(97,(function(){return Ds(),null})))}function js(){if(null===es)return!1;var e=es;if(es=null,0!=(48&Ol))throw Error(i(331));var t=Ol;Ol|=32;var n=rs;rs=[];for(var r=0;r<n.length;r+=2){var a=n[r],o=n[r+1],l=a.destroy;if(a.destroy=void 0,"function"==typeof l)try{l()}catch(u){if(null===o)throw Error(i(330));zs(o,u)}}for(n=ns,ns=[],r=0;r<n.length;r+=2){a=n[r],o=n[r+1];try{var s=a.create;a.destroy=s()}catch(u){if(null===o)throw Error(i(330));zs(o,u)}}for(s=e.current.firstEffect;null!==s;)e=s.nextEffect,s.nextEffect=null,8&s.flags&&(s.sibling=null,s.stateNode=null),s=e;return Ol=t,Za(),!0}function Bs(e,t,n){co(e,t=pl(0,t=ul(n,t),1)),t=ps(),null!==(e=ms(e,1))&&(Ut(e,1,t),gs(e,t))}function zs(e,t){if(3===e.tag)Bs(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){Bs(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Xl||!Xl.has(r))){var a=fl(n,e=ul(t,e),1);if(co(n,a),a=ps(),null!==(n=ms(n,1)))Ut(n,1,a),gs(n,a);else if("function"==typeof r.componentDidCatch&&(null===Xl||!Xl.has(r)))try{r.componentDidCatch(t,e)}catch(o){}break}}n=n.return}}function $s(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=ps(),e.pingedLanes|=e.suspendedLanes&n,Pl===e&&(Dl&n)===n&&(4===jl||3===jl&&(62914560&Dl)===Dl&&500>Ua()-Gl?xs(e,0):ql|=n),gs(e,t)}function Us(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(0==(2&(t=e.mode))?t=1:0==(4&t)?t=99===qa()?1:2:(0===ss&&(ss=zl),0===(t=zt(62914560&~ss))&&(t=4194304))),n=ps(),null!==(e=ms(e,t))&&(Ut(e,t,n),gs(e,n))}function qs(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.flags=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childLanes=this.lanes=0,this.alternate=null}function Hs(e,t,n,r){return new qs(e,t,n,r)}function Gs(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Qs(e,t){var n=e.alternate;return null===n?((n=Hs(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Zs(e,t,n,r,a,o){var l=2;if(r=e,"function"==typeof e)Gs(e)&&(l=1);else if("string"==typeof e)l=5;else e:switch(e){case x:return Vs(n.children,a,o,t);case M:l=8,a|=16;break;case C:l=8,a|=1;break;case T:return(e=Hs(12,n,t,8|a)).elementType=T,e.type=T,e.lanes=o,e;case N:return(e=Hs(13,n,t,a)).type=N,e.elementType=N,e.lanes=o,e;case A:return(e=Hs(19,n,t,a)).elementType=A,e.lanes=o,e;case F:return Ws(n,a,o,t);case j:return(e=Hs(24,n,t,a)).elementType=j,e.lanes=o,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case _:l=10;break e;case L:l=9;break e;case R:l=11;break e;case O:l=14;break e;case P:l=16,r=null;break e;case I:l=22;break e}throw Error(i(130,null==e?e:typeof e,""))}return(t=Hs(l,n,t,a)).elementType=e,t.type=r,t.lanes=o,t}function Vs(e,t,n,r){return(e=Hs(7,e,r,t)).lanes=n,e}function Ws(e,t,n,r){return(e=Hs(23,e,r,t)).elementType=F,e.lanes=n,e}function Ks(e,t,n){return(e=Hs(6,e,null,t)).lanes=n,e}function Ys(e,t,n){return(t=Hs(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Xs(e,t,n){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=0,this.eventTimes=$t(0),this.expirationTimes=$t(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=$t(0),this.mutableSourceEagerHydrationData=null}function Js(e,t,n,r){var a=t.current,o=ps(),l=fs(a);e:if(n){t:{if(We(n=n._reactInternals)!==n||1!==n.tag)throw Error(i(170));var s=n;do{switch(s.tag){case 3:s=s.stateNode.context;break t;case 1:if(ga(s.type)){s=s.stateNode.__reactInternalMemoizedMergedChildContext;break t}}s=s.return}while(null!==s);throw Error(i(171))}if(1===n.tag){var u=n.type;if(ga(u)){n=ba(n,u,s);break e}}n=s}else n=da;return null===t.context?t.context=n:t.pendingContext=n,(t=uo(o,l)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),co(a,t),hs(a,l,o),l}function eu(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function tu(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function nu(e,t){tu(e,t),(e=e.alternate)&&tu(e,t)}function ru(e,t,n){var r=null!=n&&null!=n.hydrationOptions&&n.hydrationOptions.mutableSources||null;if(n=new Xs(e,t,null!=n&&!0===n.hydrate),t=Hs(3,null,null,2===t?7:1===t?3:0),n.current=t,t.stateNode=n,lo(t),e[Jr]=n.current,Ar(8===e.nodeType?e.parentNode:e),r)for(e=0;e<r.length;e++){var a=(t=r[e])._getVersion;a=a(t._source),null==n.mutableSourceEagerHydrationData?n.mutableSourceEagerHydrationData=[t,a]:n.mutableSourceEagerHydrationData.push(t,a)}this._internalRoot=n}function au(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function ou(e,t,n,r,a){var o=n._reactRootContainer;if(o){var i=o._internalRoot;if("function"==typeof a){var l=a;a=function(){var e=eu(i);l.call(e)}}Js(t,i,e,a)}else{if(o=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new ru(e,0,t?{hydrate:!0}:void 0)}(n,r),i=o._internalRoot,"function"==typeof a){var s=a;a=function(){var e=eu(i);s.call(e)}}ks((function(){Js(t,i,e,a)}))}return eu(i)}function iu(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!au(t))throw Error(i(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:S,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)}Vl=function(e,t,n){var r=t.lanes;if(null!==e)if(e.memoizedProps!==t.pendingProps||fa.current)Mi=!0;else{if(0==(n&r)){switch(Mi=!1,t.tag){case 3:Qi(t),Zo();break;case 5:Do(t);break;case 1:ga(t.type)&&wa(t);break;case 4:Po(t,t.stateNode.containerInfo);break;case 10:r=t.memoizedProps.value;var a=t.type._context;ca(Ya,a._currentValue),a._currentValue=r;break;case 13:if(null!==t.memoizedState)return 0!=(n&t.child.childLanes)?Xi(e,t,n):(ca(Fo,1&Fo.current),null!==(t=ol(e,t,n))?t.sibling:null);ca(Fo,1&Fo.current);break;case 19:if(r=0!=(n&t.childLanes),0!=(64&e.flags)){if(r)return al(e,t,n);t.flags|=64}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null,a.lastEffect=null),ca(Fo,Fo.current),r)break;return null;case 23:case 24:return t.lanes=0,$i(e,t,n)}return ol(e,t,n)}Mi=0!=(16384&e.flags)}else Mi=!1;switch(t.lanes=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=ma(t,pa.current),ao(t,n),a=ii(null,t,r,e,a,n),t.flags|=1,"object"==typeof a&&null!==a&&"function"==typeof a.render&&void 0===a.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,ga(r)){var o=!0;wa(t)}else o=!1;t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null,lo(t);var l=r.getDerivedStateFromProps;"function"==typeof l&&go(t,r,l,e),a.updater=vo,t.stateNode=a,a._reactInternals=t,ko(t,r,e,n),t=Gi(null,t,r,!0,o,n)}else t.tag=0,Fi(null,t,a,n),t=t.child;return t;case 16:a=t.elementType;e:{switch(null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=(o=a._init)(a._payload),t.type=a,o=t.tag=function(e){if("function"==typeof e)return Gs(e)?1:0;if(null!=e){if((e=e.$$typeof)===R)return 11;if(e===O)return 14}return 2}(a),e=Ka(a,e),o){case 0:t=qi(null,t,a,e,n);break e;case 1:t=Hi(null,t,a,e,n);break e;case 11:t=ji(null,t,a,e,n);break e;case 14:t=Bi(null,t,a,Ka(a.type,e),r,n);break e}throw Error(i(306,a,""))}return t;case 0:return r=t.type,a=t.pendingProps,qi(e,t,r,a=t.elementType===r?a:Ka(r,a),n);case 1:return r=t.type,a=t.pendingProps,Hi(e,t,r,a=t.elementType===r?a:Ka(r,a),n);case 3:if(Qi(t),r=t.updateQueue,null===e||null===r)throw Error(i(282));if(r=t.pendingProps,a=null!==(a=t.memoizedState)?a.element:null,so(e,t),fo(t,r,null,n),(r=t.memoizedState.element)===a)Zo(),t=ol(e,t,n);else{if((o=(a=t.stateNode).hydrate)&&(zo=Zr(t.stateNode.containerInfo.firstChild),Bo=t,o=$o=!0),o){if(null!=(e=a.mutableSourceEagerHydrationData))for(a=0;a<e.length;a+=2)(o=e[a])._workInProgressVersionPrimary=e[a+1],Vo.push(o);for(n=_o(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|1024,n=n.sibling}else Fi(e,t,r,n),Zo();t=t.child}return t;case 5:return Do(t),null===e&&Ho(t),r=t.type,a=t.pendingProps,o=null!==e?e.memoizedProps:null,l=a.children,qr(r,a)?l=null:null!==o&&qr(r,o)&&(t.flags|=16),Ui(e,t),Fi(e,t,l,n),t.child;case 6:return null===e&&Ho(t),null;case 13:return Xi(e,t,n);case 4:return Po(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=To(t,null,r,n):Fi(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,ji(e,t,r,a=t.elementType===r?a:Ka(r,a),n);case 7:return Fi(e,t,t.pendingProps,n),t.child;case 8:case 12:return Fi(e,t,t.pendingProps.children,n),t.child;case 10:e:{r=t.type._context,a=t.pendingProps,l=t.memoizedProps,o=a.value;var s=t.type._context;if(ca(Ya,s._currentValue),s._currentValue=o,null!==l)if(s=l.value,0===(o=ur(s,o)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(s,o):1073741823))){if(l.children===a.children&&!fa.current){t=ol(e,t,n);break e}}else for(null!==(s=t.child)&&(s.return=t);null!==s;){var u=s.dependencies;if(null!==u){l=s.child;for(var c=u.firstContext;null!==c;){if(c.context===r&&0!=(c.observedBits&o)){1===s.tag&&((c=uo(-1,n&-n)).tag=2,co(s,c)),s.lanes|=n,null!==(c=s.alternate)&&(c.lanes|=n),ro(s.return,n),u.lanes|=n;break}c=c.next}}else l=10===s.tag&&s.type===t.type?null:s.child;if(null!==l)l.return=s;else for(l=s;null!==l;){if(l===t){l=null;break}if(null!==(s=l.sibling)){s.return=l.return,l=s;break}l=l.return}s=l}Fi(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=(o=t.pendingProps).children,ao(t,n),r=r(a=oo(a,o.unstable_observedBits)),t.flags|=1,Fi(e,t,r,n),t.child;case 14:return o=Ka(a=t.type,t.pendingProps),Bi(e,t,a,o=Ka(a.type,o),r,n);case 15:return zi(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:Ka(r,a),null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),t.tag=1,ga(r)?(e=!0,wa(t)):e=!1,ao(t,n),bo(t,r,a),ko(t,r,a,n),Gi(null,t,r,!0,e,n);case 19:return al(e,t,n);case 23:case 24:return $i(e,t,n)}throw Error(i(156,t.tag))},ru.prototype.render=function(e){Js(e,this._internalRoot,null,null)},ru.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;Js(null,e,null,(function(){t[Jr]=null}))},et=function(e){13===e.tag&&(hs(e,4,ps()),nu(e,4))},tt=function(e){13===e.tag&&(hs(e,67108864,ps()),nu(e,67108864))},nt=function(e){if(13===e.tag){var t=ps(),n=fs(e);hs(e,n,t),nu(e,n)}},rt=function(e,t){return t()},Te=function(e,t,n){switch(t){case"input":if(ne(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=aa(r);if(!a)throw Error(i(90));Y(r),ne(r,a)}}}break;case"textarea":ue(e,n);break;case"select":null!=(t=n.value)&&ie(e,!!n.multiple,t,!1)}},Oe=ws,Pe=function(e,t,n,r,a){var o=Ol;Ol|=4;try{return Ga(98,e.bind(null,t,n,r,a))}finally{0===(Ol=o)&&(Zl(),Za())}},Ie=function(){0==(49&Ol)&&(function(){if(null!==as){var e=as;as=null,e.forEach((function(e){e.expiredLanes|=24&e.pendingLanes,gs(e,Ua())}))}Za()}(),Ds())},De=function(e,t){var n=Ol;Ol|=2;try{return e(t)}finally{0===(Ol=n)&&(Zl(),Za())}};var lu={Events:[na,ra,aa,Ne,Ae,Ds,{current:!1}]},su={findFiberByHostInstance:ta,bundleType:0,version:"17.0.2",rendererPackageName:"react-dom"},uu={bundleType:su.bundleType,version:su.version,rendererPackageName:su.rendererPackageName,rendererConfig:su.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:k.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Xe(e))?null:e.stateNode},findFiberByHostInstance:su.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var cu=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!cu.isDisabled&&cu.supportsFiber)try{Ea=cu.inject(uu),Sa=cu}catch(me){}}t.hydrate=function(e,t,n){if(!au(t))throw Error(i(200));return ou(null,e,t,!0,n)}},3935:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(4448)},9590:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,a="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function o(e,i){if(e===i)return!0;if(e&&i&&"object"==typeof e&&"object"==typeof i){if(e.constructor!==i.constructor)return!1;var l,s,u,c;if(Array.isArray(e)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(!o(e[s],i[s]))return!1;return!0}if(n&&e instanceof Map&&i instanceof Map){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;for(c=e.entries();!(s=c.next()).done;)if(!o(s.value[1],i.get(s.value[0])))return!1;return!0}if(r&&e instanceof Set&&i instanceof Set){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;return!0}if(a&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(i)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(e[s]!==i[s])return!1;return!0}if(e.constructor===RegExp)return e.source===i.source&&e.flags===i.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof i.valueOf)return e.valueOf()===i.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof i.toString)return e.toString()===i.toString();if((l=(u=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(s=l;0!=s--;)if(!Object.prototype.hasOwnProperty.call(i,u[s]))return!1;if(t&&e instanceof Element)return!1;for(s=l;0!=s--;)if(("_owner"!==u[s]&&"__v"!==u[s]&&"__o"!==u[s]||!e.$$typeof)&&!o(e[u[s]],i[u[s]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return o(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},405:(e,t,n)=>{"use strict";n.d(t,{B6:()=>G,ql:()=>J});var r=n(7294),a=n(5697),o=n.n(a),i=n(9590),l=n.n(i),s=n(1143),u=n.n(s),c=n(6774),d=n.n(c);function p(){return p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},p.apply(this,arguments)}function f(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,h(e,t)}function h(e,t){return h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},h(e,t)}function m(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t.indexOf(n=o[r])>=0||(a[n]=e[n]);return a}var g={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},v={rel:["amphtml","canonical","alternate"]},y={type:["application/ld+json"]},b={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},w=Object.keys(g).map((function(e){return g[e]})),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},E=Object.keys(k).reduce((function(e,t){return e[k[t]]=t,e}),{}),S=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},x=function(e){var t=S(e,g.TITLE),n=S(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,(function(){return t}));var r=S(e,"defaultTitle");return t||r||void 0},C=function(e){return S(e,"onChangeClientState")||function(){}},T=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return p({},e,t)}),{})},_=function(e,t){return t.filter((function(e){return void 0!==e[g.BASE]})).map((function(e){return e[g.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),a=0;a<r.length;a+=1){var o=r[a].toLowerCase();if(-1!==e.indexOf(o)&&n[o])return t.concat(n)}return t}),[])},L=function(e,t,n){var r={};return n.filter((function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+e+' should be of type "Array". Instead found type "'+typeof t[e]+'"'),!1)})).map((function(t){return t[e]})).reverse().reduce((function(e,n){var a={};n.filter((function(e){for(var n,o=Object.keys(e),i=0;i<o.length;i+=1){var l=o[i],s=l.toLowerCase();-1===t.indexOf(s)||"rel"===n&&"canonical"===e[n].toLowerCase()||"rel"===s&&"stylesheet"===e[s].toLowerCase()||(n=s),-1===t.indexOf(l)||"innerHTML"!==l&&"cssText"!==l&&"itemprop"!==l||(n=l)}if(!n||!e[n])return!1;var u=e[n].toLowerCase();return r[n]||(r[n]={}),a[n]||(a[n]={}),!r[n][u]&&(a[n][u]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var o=Object.keys(a),i=0;i<o.length;i+=1){var l=o[i],s=p({},r[l],a[l]);r[l]=s}return e}),[]).reverse()},R=function(e,t){if(Array.isArray(e)&&e.length)for(var n=0;n<e.length;n+=1)if(e[n][t])return!0;return!1},N=function(e){return Array.isArray(e)?e.join(""):e},A=function(e,t){return Array.isArray(e)?e.reduce((function(e,n){return function(e,t){for(var n=Object.keys(e),r=0;r<n.length;r+=1)if(t[n[r]]&&t[n[r]].includes(e[n[r]]))return!0;return!1}(n,t)?e.priority.push(n):e.default.push(n),e}),{priority:[],default:[]}):{default:e}},O=function(e,t){var n;return p({},e,((n={})[t]=void 0,n))},P=[g.NOSCRIPT,g.SCRIPT,g.STYLE],I=function(e,t){return void 0===t&&(t=!0),!1===t?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},D=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},M=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce((function(t,n){return t[k[n]||n]=e[n],t}),t)},F=function(e,t){return t.map((function(t,n){var a,o=((a={key:n})["data-rh"]=!0,a);return Object.keys(t).forEach((function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]})),r.createElement(e,o)}))},j=function(e,t,n){switch(e){case g.TITLE:return{toComponent:function(){return n=t.titleAttributes,(a={key:e=t.title})["data-rh"]=!0,o=M(n,a),[r.createElement(g.TITLE,o,e)];var e,n,a,o},toString:function(){return function(e,t,n,r){var a=D(n),o=N(t);return a?"<"+e+' data-rh="true" '+a+">"+I(o,r)+"</"+e+">":"<"+e+' data-rh="true">'+I(o,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return M(t)},toString:function(){return D(t)}};default:return{toComponent:function(){return F(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var a=Object.keys(r).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,t){var a=void 0===r[t]?t:t+'="'+I(r[t],n)+'"';return e?e+" "+a:a}),""),o=r.innerHTML||r.cssText||"",i=-1===P.indexOf(e);return t+"<"+e+' data-rh="true" '+a+(i?"/>":">"+o+"</"+e+">")}),"")}(e,t,n)}}}},B=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,a=e.htmlAttributes,o=e.noscriptTags,i=e.styleTags,l=e.title,s=void 0===l?"":l,u=e.titleAttributes,c=e.linkTags,d=e.metaTags,p=e.scriptTags,f={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var h=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,a=A(e.metaTags,b),o=A(t,v),i=A(n,y);return{priorityMethods:{toComponent:function(){return[].concat(F(g.META,a.priority),F(g.LINK,o.priority),F(g.SCRIPT,i.priority))},toString:function(){return j(g.META,a.priority,r)+" "+j(g.LINK,o.priority,r)+" "+j(g.SCRIPT,i.priority,r)}},metaTags:a.default,linkTags:o.default,scriptTags:i.default}}(e);f=h.priorityMethods,c=h.linkTags,d=h.metaTags,p=h.scriptTags}return{priority:f,base:j(g.BASE,t,r),bodyAttributes:j("bodyAttributes",n,r),htmlAttributes:j("htmlAttributes",a,r),link:j(g.LINK,c,r),meta:j(g.META,d,r),noscript:j(g.NOSCRIPT,o,r),script:j(g.SCRIPT,p,r),style:j(g.STYLE,i,r),title:j(g.TITLE,{title:s,titleAttributes:u},r)}},z=[],$=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?z:n.instances},add:function(e){(n.canUseDOM?z:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?z:n.instances).indexOf(e);(n.canUseDOM?z:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=B({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},U=r.createContext({}),q=o().shape({setHelmet:o().func,helmetInstances:o().shape({get:o().func,add:o().func,remove:o().func})}),H="undefined"!=typeof document,G=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new $(r.props.context,t.canUseDOM),r}return f(t,e),t.prototype.render=function(){return r.createElement(U.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);G.canUseDOM=H,G.propTypes={context:o().shape({helmet:o().shape()}),children:o().node.isRequired},G.defaultProps={context:{}},G.displayName="HelmetProvider";var Q=function(e,t){var n,r=document.head||document.querySelector(g.HEAD),a=r.querySelectorAll(e+"[data-rh]"),o=[].slice.call(a),i=[];return t&&t.length&&t.forEach((function(t){var r=document.createElement(e);for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&("innerHTML"===a?r.innerHTML=t.innerHTML:"cssText"===a?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(a,void 0===t[a]?"":t[a]));r.setAttribute("data-rh","true"),o.some((function(e,t){return n=t,r.isEqualNode(e)}))?o.splice(n,1):i.push(r)})),o.forEach((function(e){return e.parentNode.removeChild(e)})),i.forEach((function(e){return r.appendChild(e)})),{oldTags:o,newTags:i}},Z=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),a=r?r.split(","):[],o=[].concat(a),i=Object.keys(t),l=0;l<i.length;l+=1){var s=i[l],u=t[s]||"";n.getAttribute(s)!==u&&n.setAttribute(s,u),-1===a.indexOf(s)&&a.push(s);var c=o.indexOf(s);-1!==c&&o.splice(c,1)}for(var d=o.length-1;d>=0;d-=1)n.removeAttribute(o[d]);a.length===o.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},V=function(e,t){var n=e.baseTag,r=e.htmlAttributes,a=e.linkTags,o=e.metaTags,i=e.noscriptTags,l=e.onChangeClientState,s=e.scriptTags,u=e.styleTags,c=e.title,d=e.titleAttributes;Z(g.BODY,e.bodyAttributes),Z(g.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=N(e)),Z(g.TITLE,t)}(c,d);var p={baseTag:Q(g.BASE,n),linkTags:Q(g.LINK,a),metaTags:Q(g.META,o),noscriptTags:Q(g.NOSCRIPT,i),scriptTags:Q(g.SCRIPT,s),styleTags:Q(g.STYLE,u)},f={},h={};Object.keys(p).forEach((function(e){var t=p[e],n=t.newTags,r=t.oldTags;n.length&&(f[e]=n),r.length&&(h[e]=p[e].oldTags)})),t&&t(),l(e,f,h)},W=null,K=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).rendered=!1,t}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!d()(e,this.props)},n.componentDidUpdate=function(){this.emitChange()},n.componentWillUnmount=function(){this.props.context.helmetInstances.remove(this),this.emitChange()},n.emitChange=function(){var e,t,n=this.props.context,r=n.setHelmet,a=null,o=(e=n.helmetInstances.get().map((function(e){var t=p({},e.props);return delete t.context,t})),{baseTag:_(["href"],e),bodyAttributes:T("bodyAttributes",e),defer:S(e,"defer"),encode:S(e,"encodeSpecialCharacters"),htmlAttributes:T("htmlAttributes",e),linkTags:L(g.LINK,["rel","href"],e),metaTags:L(g.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:L(g.NOSCRIPT,["innerHTML"],e),onChangeClientState:C(e),scriptTags:L(g.SCRIPT,["src","innerHTML"],e),styleTags:L(g.STYLE,["cssText"],e),title:x(e),titleAttributes:T("titleAttributes",e),prioritizeSeoTags:R(e,"prioritizeSeoTags")});G.canUseDOM?(t=o,W&&cancelAnimationFrame(W),t.defer?W=requestAnimationFrame((function(){V(t,(function(){W=null}))})):(V(t),W=null)):B&&(a=B(o)),r(a)},n.init=function(){this.rendered||(this.rendered=!0,this.props.context.helmetInstances.add(this),this.emitChange())},n.render=function(){return this.init(),null},t}(r.Component);K.propTypes={context:q.isRequired},K.displayName="HelmetDispatcher";var Y=["children"],X=["children"],J=function(e){function t(){return e.apply(this,arguments)||this}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!l()(O(this.props,"helmetData"),O(e,"helmetData"))},n.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case g.SCRIPT:case g.NOSCRIPT:return{innerHTML:t};case g.STYLE:return{cssText:t};default:throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return p({},r,((t={})[n.type]=[].concat(r[n.type]||[],[p({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,a=e.newProps,o=e.newChildProps,i=e.nestedChildren;switch(r.type){case g.TITLE:return p({},a,((t={})[r.type]=i,t.titleAttributes=p({},o),t));case g.BODY:return p({},a,{bodyAttributes:p({},o)});case g.HTML:return p({},a,{htmlAttributes:p({},o)});default:return p({},a,((n={})[r.type]=p({},o),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=p({},t);return Object.keys(e).forEach((function(t){var r;n=p({},n,((r={})[t]=e[t],r))})),n},n.warnOnInvalidChildren=function(e,t){return u()(w.some((function(t){return e.type===t})),"function"==typeof e.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),u()(!t||"string"==typeof t||Array.isArray(t)&&!t.some((function(e){return"string"!=typeof e})),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``}</"+e.type+"> ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,a={};return r.Children.forEach(e,(function(e){if(e&&e.props){var r=e.props,o=r.children,i=m(r,Y),l=Object.keys(i).reduce((function(e,t){return e[E[t]||t]=i[t],e}),{}),s=e.type;switch("symbol"==typeof s?s=s.toString():n.warnOnInvalidChildren(e,o),s){case g.FRAGMENT:t=n.mapChildrenToProps(o,t);break;case g.LINK:case g.META:case g.NOSCRIPT:case g.SCRIPT:case g.STYLE:a=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:a,newChildProps:l,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:o})}}})),this.mapArrayTypeChildrenToProps(a,t)},n.render=function(){var e=this.props,t=e.children,n=m(e,X),a=p({},n),o=n.helmetData;return t&&(a=this.mapChildrenToProps(t,a)),!o||o instanceof $||(o=new $(o.context,o.instances)),o?r.createElement(K,p({},a,{context:o.value,helmetData:void 0})):r.createElement(U.Consumer,null,(function(e){return r.createElement(K,p({},a,{context:e}))}))},t}(r.Component);J.propTypes={base:o().object,bodyAttributes:o().object,children:o().oneOfType([o().arrayOf(o().node),o().node]),defaultTitle:o().string,defer:o().bool,encodeSpecialCharacters:o().bool,htmlAttributes:o().object,link:o().arrayOf(o().object),meta:o().arrayOf(o().object),noscript:o().arrayOf(o().object),onChangeClientState:o().func,script:o().arrayOf(o().object),style:o().arrayOf(o().object),title:o().string,titleAttributes:o().object,titleTemplate:o().string,prioritizeSeoTags:o().bool,helmetData:o().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},9921:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,a=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,l=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,p=n?Symbol.for("react.forward_ref"):60112,f=n?Symbol.for("react.suspense"):60113,h=n?Symbol.for("react.suspense_list"):60120,m=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,v=n?Symbol.for("react.block"):60121,y=n?Symbol.for("react.fundamental"):60117,b=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function k(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case d:case o:case l:case i:case f:return e;default:switch(e=e&&e.$$typeof){case u:case p:case g:case m:case s:return e;default:return t}}case a:return t}}}function E(e){return k(e)===d}t.AsyncMode=c,t.ConcurrentMode=d,t.ContextConsumer=u,t.ContextProvider=s,t.Element=r,t.ForwardRef=p,t.Fragment=o,t.Lazy=g,t.Memo=m,t.Portal=a,t.Profiler=l,t.StrictMode=i,t.Suspense=f,t.isAsyncMode=function(e){return E(e)||k(e)===c},t.isConcurrentMode=E,t.isContextConsumer=function(e){return k(e)===u},t.isContextProvider=function(e){return k(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return k(e)===p},t.isFragment=function(e){return k(e)===o},t.isLazy=function(e){return k(e)===g},t.isMemo=function(e){return k(e)===m},t.isPortal=function(e){return k(e)===a},t.isProfiler=function(e){return k(e)===l},t.isStrictMode=function(e){return k(e)===i},t.isSuspense=function(e){return k(e)===f},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===d||e===l||e===i||e===f||e===h||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===m||e.$$typeof===s||e.$$typeof===u||e.$$typeof===p||e.$$typeof===y||e.$$typeof===b||e.$$typeof===w||e.$$typeof===v)},t.typeOf=k},9864:(e,t,n)=>{"use strict";e.exports=n(9921)},8356:(e,t,n)=>{"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}var l=n(7294),s=n(5697),u=[],c=[];function d(e){var t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then((function(e){return n.loading=!1,n.loaded=e,e})).catch((function(e){throw n.loading=!1,n.error=e,e})),n}function p(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach((function(r){var a=d(e[r]);a.loading?t.loading=!0:(t.loaded[r]=a.loaded,t.error=a.error),n.push(a.promise),a.promise.then((function(e){t.loaded[r]=e})).catch((function(e){t.error=e}))}))}catch(r){t.error=r}return t.promise=Promise.all(n).then((function(e){return t.loading=!1,e})).catch((function(e){throw t.loading=!1,e})),t}function f(e,t){return l.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function h(e,t){var d,p;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var h=i({loader:null,loading:null,delay:200,timeout:null,render:f,webpack:null,modules:null},t),m=null;function g(){return m||(m=e(h.loader)),m.promise}return u.push(g),"function"==typeof h.webpack&&c.push((function(){if((0,h.webpack)().every((function(e){return void 0!==e&&void 0!==n.m[e]})))return g()})),p=d=function(t){function n(n){var r;return o(a(a(r=t.call(this,n)||this)),"retry",(function(){r.setState({error:null,loading:!0,timedOut:!1}),m=e(h.loader),r._loadModule()})),g(),r.state={error:m.error,pastDelay:!1,timedOut:!1,loading:m.loading,loaded:m.loaded},r}r(n,t),n.preload=function(){return g()};var i=n.prototype;return i.UNSAFE_componentWillMount=function(){this._loadModule()},i.componentDidMount=function(){this._mounted=!0},i._loadModule=function(){var e=this;if(this.context.loadable&&Array.isArray(h.modules)&&h.modules.forEach((function(t){e.context.loadable.report(t)})),m.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof h.delay&&(0===h.delay?this.setState({pastDelay:!0}):this._delay=setTimeout((function(){t({pastDelay:!0})}),h.delay)),"number"==typeof h.timeout&&(this._timeout=setTimeout((function(){t({timedOut:!0})}),h.timeout));var n=function(){t({error:m.error,loaded:m.loaded,loading:m.loading}),e._clearTimeouts()};m.promise.then((function(){return n(),null})).catch((function(e){return n(),null}))}},i.componentWillUnmount=function(){this._mounted=!1,this._clearTimeouts()},i._clearTimeouts=function(){clearTimeout(this._delay),clearTimeout(this._timeout)},i.render=function(){return this.state.loading||this.state.error?l.createElement(h.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?h.render(this.state.loaded,this.props):null},n}(l.Component),o(d,"contextTypes",{loadable:s.shape({report:s.func.isRequired})}),p}function m(e){return h(d,e)}m.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return h(p,e)};var g=function(e){function t(){return e.apply(this,arguments)||this}r(t,e);var n=t.prototype;return n.getChildContext=function(){return{loadable:{report:this.props.report}}},n.render=function(){return l.Children.only(this.props.children)},t}(l.Component);function v(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then((function(){if(e.length)return v(e)}))}o(g,"propTypes",{report:s.func.isRequired}),o(g,"childContextTypes",{loadable:s.shape({report:s.func.isRequired}).isRequired}),m.Capture=g,m.preloadAll=function(){return new Promise((function(e,t){v(u).then(e,t)}))},m.preloadReady=function(){return new Promise((function(e,t){v(c).then(e,e)}))},e.exports=m},8790:(e,t,n)=>{"use strict";n.d(t,{H:()=>l,f:()=>i});var r=n(6550),a=n(7462),o=n(7294);function i(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var a=e.path?(0,r.LX)(t,e):n.length?n[n.length-1].match:r.F0.computeRootMatch(t);return a&&(n.push({route:e,match:a}),e.routes&&i(e.routes,t,n)),a})),n}function l(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?o.createElement(r.rs,n,e.map((function(e,n){return o.createElement(r.AW,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,a.Z)({},n,{},t,{route:e})):o.createElement(e.component,(0,a.Z)({},n,t,{route:e}))}})}))):null}},3727:(e,t,n)=>{"use strict";n.d(t,{OL:()=>b,VK:()=>c,rU:()=>g});var r=n(6550),a=n(5068),o=n(7294),i=n(9318),l=n(7462),s=n(3366),u=n(8776),c=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.lX)(t.props),t}return(0,a.Z)(t,e),t.prototype.render=function(){return o.createElement(r.F0,{history:this.history,children:this.props.children})},t}(o.Component);o.Component;var d=function(e,t){return"function"==typeof e?e(t):e},p=function(e,t){return"string"==typeof e?(0,i.ob)(e,null,null,t):e},f=function(e){return e},h=o.forwardRef;void 0===h&&(h=f);var m=h((function(e,t){var n=e.innerRef,r=e.navigate,a=e.onClick,i=(0,s.Z)(e,["innerRef","navigate","onClick"]),u=i.target,c=(0,l.Z)({},i,{onClick:function(e){try{a&&a(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||u&&"_self"!==u||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return c.ref=f!==h&&t||n,o.createElement("a",c)}));var g=h((function(e,t){var n=e.component,a=void 0===n?m:n,c=e.replace,g=e.to,v=e.innerRef,y=(0,s.Z)(e,["component","replace","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=e.history,r=p(d(g,e.location),e.location),s=r?n.createHref(r):"",m=(0,l.Z)({},y,{href:s,navigate:function(){var t=d(g,e.location),r=(0,i.Ep)(e.location)===(0,i.Ep)(p(t));(c||r?n.replace:n.push)(t)}});return f!==h?m.ref=t||v:m.innerRef=v,o.createElement(a,m)}))})),v=function(e){return e},y=o.forwardRef;void 0===y&&(y=v);var b=y((function(e,t){var n=e["aria-current"],a=void 0===n?"page":n,i=e.activeClassName,c=void 0===i?"active":i,f=e.activeStyle,h=e.className,m=e.exact,b=e.isActive,w=e.location,k=e.sensitive,E=e.strict,S=e.style,x=e.to,C=e.innerRef,T=(0,s.Z)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=w||e.location,i=p(d(x,n),n),s=i.pathname,_=s&&s.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),L=_?(0,r.LX)(n.pathname,{path:_,exact:m,sensitive:k,strict:E}):null,R=!!(b?b(L,n):L),N="function"==typeof h?h(R):h,A="function"==typeof S?S(R):S;R&&(N=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((function(e){return e})).join(" ")}(N,c),A=(0,l.Z)({},A,f));var O=(0,l.Z)({"aria-current":R&&a||null,className:N,style:A,to:i},T);return v!==y?O.ref=t||C:O.innerRef=C,o.createElement(g,O)}))}))},6550:(e,t,n)=>{"use strict";n.d(t,{AW:()=>x,F0:()=>b,LX:()=>S,TH:()=>P,k6:()=>O,rs:()=>N,s6:()=>y});var r=n(5068),a=n(7294),o=n(5697),i=n.n(o),l=n(9318),s=n(8776),u=n(7462),c=n(4779),d=n.n(c),p=(n(9864),n(3366)),f=(n(8679),1073741823),h="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};var m=a.createContext||function(e,t){var n,o,l="__create-react-context-"+function(){var e="__global_unique_id__";return h[e]=(h[e]||0)+1}()+"__",s=function(e){function n(){for(var t,n,r,a=arguments.length,o=new Array(a),i=0;i<a;i++)o[i]=arguments[i];return(t=e.call.apply(e,[this].concat(o))||this).emitter=(n=t.props.value,r=[],{on:function(e){r.push(e)},off:function(e){r=r.filter((function(t){return t!==e}))},get:function(){return n},set:function(e,t){n=e,r.forEach((function(e){return e(n,t)}))}}),t}(0,r.Z)(n,e);var a=n.prototype;return a.getChildContext=function(){var e;return(e={})[l]=this.emitter,e},a.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,a=e.value;((o=r)===(i=a)?0!==o||1/o==1/i:o!=o&&i!=i)?n=0:(n="function"==typeof t?t(r,a):f,0!==(n|=0)&&this.emitter.set(e.value,n))}var o,i},a.render=function(){return this.props.children},n}(a.Component);s.childContextTypes=((n={})[l]=i().object.isRequired,n);var u=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(e=t.call.apply(t,[this].concat(r))||this).observedBits=void 0,e.state={value:e.getValue()},e.onUpdate=function(t,n){0!=((0|e.observedBits)&n)&&e.setState({value:e.getValue()})},e}(0,r.Z)(n,t);var a=n.prototype;return a.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?f:t},a.componentDidMount=function(){this.context[l]&&this.context[l].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?f:e},a.componentWillUnmount=function(){this.context[l]&&this.context[l].off(this.onUpdate)},a.getValue=function(){return this.context[l]?this.context[l].get():e},a.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(a.Component);return u.contextTypes=((o={})[l]=i().object,o),{Provider:s,Consumer:u}},g=function(e){var t=m();return t.displayName=e,t},v=g("Router-History"),y=g("Router"),b=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._pendingLocation=e}))),n}(0,r.Z)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){var e=this;this._isMounted=!0,this.unlisten&&this.unlisten(),this.props.staticContext||(this.unlisten=this.props.history.listen((function(t){e._isMounted&&e.setState({location:t})}))),this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return a.createElement(y.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},a.createElement(v.Provider,{children:this.props.children||null,value:this.props.history}))},t}(a.Component);a.Component;a.Component;var w={},k=1e4,E=0;function S(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,a=n.exact,o=void 0!==a&&a,i=n.strict,l=void 0!==i&&i,s=n.sensitive,u=void 0!==s&&s;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=w[n]||(w[n]={});if(r[e])return r[e];var a=[],o={regexp:d()(e,a,t),keys:a};return E<k&&(r[e]=o,E++),o}(n,{end:o,strict:l,sensitive:u}),a=r.regexp,i=r.keys,s=a.exec(e);if(!s)return null;var c=s[0],p=s.slice(1),f=e===c;return o&&!f?null:{path:n,url:"/"===n&&""===c?"/":c,isExact:f,params:i.reduce((function(e,t,n){return e[t.name]=p[n],e}),{})}}),null)}var x=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(y.Consumer,null,(function(t){t||(0,s.Z)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?S(n.pathname,e.props):t.match,o=(0,u.Z)({},t,{location:n,match:r}),i=e.props,l=i.children,c=i.component,d=i.render;return Array.isArray(l)&&function(e){return 0===a.Children.count(e)}(l)&&(l=null),a.createElement(y.Provider,{value:o},o.match?l?"function"==typeof l?l(o):l:c?a.createElement(c,o):d?d(o):null:"function"==typeof l?l(o):null)}))},t}(a.Component);function C(e){return"/"===e.charAt(0)?e:"/"+e}function T(e,t){if(!e)return t;var n=C(e);return 0!==t.pathname.indexOf(n)?t:(0,u.Z)({},t,{pathname:t.pathname.substr(n.length)})}function _(e){return"string"==typeof e?e:(0,l.Ep)(e)}function L(e){return function(){(0,s.Z)(!1)}}function R(){}a.Component;var N=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(y.Consumer,null,(function(t){t||(0,s.Z)(!1);var n,r,o=e.props.location||t.location;return a.Children.forEach(e.props.children,(function(e){if(null==r&&a.isValidElement(e)){n=e;var i=e.props.path||e.props.from;r=i?S(o.pathname,(0,u.Z)({},e.props,{path:i})):t.match}})),r?a.cloneElement(n,{location:o,computedMatch:r}):null}))},t}(a.Component);var A=a.useContext;function O(){return A(v)}function P(){return A(y).location}},2408:(e,t,n)=>{"use strict";var r=n(7418),a=60103,o=60106;t.Fragment=60107,t.StrictMode=60108,t.Profiler=60114;var i=60109,l=60110,s=60112;t.Suspense=60113;var u=60115,c=60116;if("function"==typeof Symbol&&Symbol.for){var d=Symbol.for;a=d("react.element"),o=d("react.portal"),t.Fragment=d("react.fragment"),t.StrictMode=d("react.strict_mode"),t.Profiler=d("react.profiler"),i=d("react.provider"),l=d("react.context"),s=d("react.forward_ref"),t.Suspense=d("react.suspense"),u=d("react.memo"),c=d("react.lazy")}var p="function"==typeof Symbol&&Symbol.iterator;function f(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},m={};function g(e,t,n){this.props=e,this.context=t,this.refs=m,this.updater=n||h}function v(){}function y(e,t,n){this.props=e,this.context=t,this.refs=m,this.updater=n||h}g.prototype.isReactComponent={},g.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(f(85));this.updater.enqueueSetState(this,e,t,"setState")},g.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},v.prototype=g.prototype;var b=y.prototype=new v;b.constructor=y,r(b,g.prototype),b.isPureReactComponent=!0;var w={current:null},k=Object.prototype.hasOwnProperty,E={key:!0,ref:!0,__self:!0,__source:!0};function S(e,t,n){var r,o={},i=null,l=null;if(null!=t)for(r in void 0!==t.ref&&(l=t.ref),void 0!==t.key&&(i=""+t.key),t)k.call(t,r)&&!E.hasOwnProperty(r)&&(o[r]=t[r]);var s=arguments.length-2;if(1===s)o.children=n;else if(1<s){for(var u=Array(s),c=0;c<s;c++)u[c]=arguments[c+2];o.children=u}if(e&&e.defaultProps)for(r in s=e.defaultProps)void 0===o[r]&&(o[r]=s[r]);return{$$typeof:a,type:e,key:i,ref:l,props:o,_owner:w.current}}function x(e){return"object"==typeof e&&null!==e&&e.$$typeof===a}var C=/\/+/g;function T(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function _(e,t,n,r,i){var l=typeof e;"undefined"!==l&&"boolean"!==l||(e=null);var s=!1;if(null===e)s=!0;else switch(l){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case a:case o:s=!0}}if(s)return i=i(s=e),e=""===r?"."+T(s,0):r,Array.isArray(i)?(n="",null!=e&&(n=e.replace(C,"$&/")+"/"),_(i,t,n,"",(function(e){return e}))):null!=i&&(x(i)&&(i=function(e,t){return{$$typeof:a,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(i,n+(!i.key||s&&s.key===i.key?"":(""+i.key).replace(C,"$&/")+"/")+e)),t.push(i)),1;if(s=0,r=""===r?".":r+":",Array.isArray(e))for(var u=0;u<e.length;u++){var c=r+T(l=e[u],u);s+=_(l,t,n,c,i)}else if(c=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=p&&e[p]||e["@@iterator"])?e:null}(e),"function"==typeof c)for(e=c.call(e),u=0;!(l=e.next()).done;)s+=_(l=l.value,t,n,c=r+T(l,u++),i);else if("object"===l)throw t=""+e,Error(f(31,"[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t));return s}function L(e,t,n){if(null==e)return e;var r=[],a=0;return _(e,r,"","",(function(e){return t.call(n,e,a++)})),r}function R(e){if(-1===e._status){var t=e._result;t=t(),e._status=0,e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}if(1===e._status)return e._result;throw e._result}var N={current:null};function A(){var e=N.current;if(null===e)throw Error(f(321));return e}var O={ReactCurrentDispatcher:N,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:w,IsSomeRendererActing:{current:!1},assign:r};t.Children={map:L,forEach:function(e,t,n){L(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return L(e,(function(){t++})),t},toArray:function(e){return L(e,(function(e){return e}))||[]},only:function(e){if(!x(e))throw Error(f(143));return e}},t.Component=g,t.PureComponent=y,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=O,t.cloneElement=function(e,t,n){if(null==e)throw Error(f(267,e));var o=r({},e.props),i=e.key,l=e.ref,s=e._owner;if(null!=t){if(void 0!==t.ref&&(l=t.ref,s=w.current),void 0!==t.key&&(i=""+t.key),e.type&&e.type.defaultProps)var u=e.type.defaultProps;for(c in t)k.call(t,c)&&!E.hasOwnProperty(c)&&(o[c]=void 0===t[c]&&void 0!==u?u[c]:t[c])}var c=arguments.length-2;if(1===c)o.children=n;else if(1<c){u=Array(c);for(var d=0;d<c;d++)u[d]=arguments[d+2];o.children=u}return{$$typeof:a,type:e.type,key:i,ref:l,props:o,_owner:s}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:l,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:i,_context:e},e.Consumer=e},t.createElement=S,t.createFactory=function(e){var t=S.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:s,render:e}},t.isValidElement=x,t.lazy=function(e){return{$$typeof:c,_payload:{_status:-1,_result:e},_init:R}},t.memo=function(e,t){return{$$typeof:u,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return A().useCallback(e,t)},t.useContext=function(e,t){return A().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return A().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return A().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return A().useLayoutEffect(e,t)},t.useMemo=function(e,t){return A().useMemo(e,t)},t.useReducer=function(e,t,n){return A().useReducer(e,t,n)},t.useRef=function(e){return A().useRef(e)},t.useState=function(e){return A().useState(e)},t.version="17.0.2"},7294:(e,t,n)=>{"use strict";e.exports=n(2408)},53:(e,t)=>{"use strict";var n,r,a,o;if("object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var l=Date,s=l.now();t.unstable_now=function(){return l.now()-s}}if("undefined"==typeof window||"function"!=typeof MessageChannel){var u=null,c=null,d=function(){if(null!==u)try{var e=t.unstable_now();u(!0,e),u=null}catch(n){throw setTimeout(d,0),n}};n=function(e){null!==u?setTimeout(n,0,e):(u=e,setTimeout(d,0))},r=function(e,t){c=setTimeout(e,t)},a=function(){clearTimeout(c)},t.unstable_shouldYield=function(){return!1},o=t.unstable_forceFrameRate=function(){}}else{var p=window.setTimeout,f=window.clearTimeout;if("undefined"!=typeof console){var h=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),"function"!=typeof h&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var m=!1,g=null,v=-1,y=5,b=0;t.unstable_shouldYield=function(){return t.unstable_now()>=b},o=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):y=0<e?Math.floor(1e3/e):5};var w=new MessageChannel,k=w.port2;w.port1.onmessage=function(){if(null!==g){var e=t.unstable_now();b=e+y;try{g(!0,e)?k.postMessage(null):(m=!1,g=null)}catch(n){throw k.postMessage(null),n}}else m=!1},n=function(e){g=e,m||(m=!0,k.postMessage(null))},r=function(e,n){v=p((function(){e(t.unstable_now())}),n)},a=function(){f(v),v=-1}}function E(e,t){var n=e.length;e.push(t);e:for(;;){var r=n-1>>>1,a=e[r];if(!(void 0!==a&&0<C(a,t)))break e;e[r]=t,e[n]=a,n=r}}function S(e){return void 0===(e=e[0])?null:e}function x(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length;r<a;){var o=2*(r+1)-1,i=e[o],l=o+1,s=e[l];if(void 0!==i&&0>C(i,n))void 0!==s&&0>C(s,i)?(e[r]=s,e[l]=n,r=l):(e[r]=i,e[o]=n,r=o);else{if(!(void 0!==s&&0>C(s,n)))break e;e[r]=s,e[l]=n,r=l}}}return t}return null}function C(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var T=[],_=[],L=1,R=null,N=3,A=!1,O=!1,P=!1;function I(e){for(var t=S(_);null!==t;){if(null===t.callback)x(_);else{if(!(t.startTime<=e))break;x(_),t.sortIndex=t.expirationTime,E(T,t)}t=S(_)}}function D(e){if(P=!1,I(e),!O)if(null!==S(T))O=!0,n(M);else{var t=S(_);null!==t&&r(D,t.startTime-e)}}function M(e,n){O=!1,P&&(P=!1,a()),A=!0;var o=N;try{for(I(n),R=S(T);null!==R&&(!(R.expirationTime>n)||e&&!t.unstable_shouldYield());){var i=R.callback;if("function"==typeof i){R.callback=null,N=R.priorityLevel;var l=i(R.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?R.callback=l:R===S(T)&&x(T),I(n)}else x(T);R=S(T)}if(null!==R)var s=!0;else{var u=S(_);null!==u&&r(D,u.startTime-n),s=!1}return s}finally{R=null,N=o,A=!1}}var F=o;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){O||A||(O=!0,n(M))},t.unstable_getCurrentPriorityLevel=function(){return N},t.unstable_getFirstCallbackNode=function(){return S(T)},t.unstable_next=function(e){switch(N){case 1:case 2:case 3:var t=3;break;default:t=N}var n=N;N=t;try{return e()}finally{N=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=F,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=N;N=e;try{return t()}finally{N=n}},t.unstable_scheduleCallback=function(e,o,i){var l=t.unstable_now();switch("object"==typeof i&&null!==i?i="number"==typeof(i=i.delay)&&0<i?l+i:l:i=l,e){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return e={id:L++,callback:o,priorityLevel:e,startTime:i,expirationTime:s=i+s,sortIndex:-1},i>l?(e.sortIndex=i,E(_,e),null===S(T)&&e===S(_)&&(P?a():P=!0,r(D,i-l))):(e.sortIndex=s,E(T,e),O||A||(O=!0,n(M))),e},t.unstable_wrapCallback=function(e){var t=N;return function(){var n=N;N=t;try{return e.apply(this,arguments)}finally{N=n}}}},3840:(e,t,n)=>{"use strict";e.exports=n(53)},6774:e=>{e.exports=function(e,t,n,r){var a=n?n.call(r,e,t):void 0;if(void 0!==a)return!!a;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),s=0;s<o.length;s++){var u=o[s];if(!l(u))return!1;var c=e[u],d=t[u];if(!1===(a=n?n.call(r,c,d,u):void 0)||void 0===a&&c!==d)return!1}return!0}},3250:(e,t,n)=>{"use strict";var r=n(7294);var a="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=r.useState,i=r.useEffect,l=r.useLayoutEffect,s=r.useDebugValue;function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!a(e,n)}catch(r){return!0}}var c="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),r=o({inst:{value:n,getSnapshot:t}}),a=r[0].inst,c=r[1];return l((function(){a.value=n,a.getSnapshot=t,u(a)&&c({inst:a})}),[e,n,t]),i((function(){return u(a)&&c({inst:a}),e((function(){u(a)&&c({inst:a})}))}),[e]),s(n),n};void 0!==r.useSyncExternalStore&&r.useSyncExternalStore},1688:(e,t,n)=>{"use strict";n(3250)},6809:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={title:"Groundlight",tagline:"Computer Vision powered by Natural Language",favicon:"img/favicon.ico",url:"https://www.groundlight.ai",baseUrl:"/python-sdk/",organizationName:"groundlight",projectName:"python-sdk",deploymentBranch:"gh-pages",trailingSlash:!1,onBrokenLinks:"throw",onBrokenMarkdownLinks:"throw",i18n:{defaultLocale:"en",locales:["en"],path:"i18n",localeConfigs:{}},presets:[["classic",{docs:{sidebarPath:"/home/runner/work/python-sdk/python-sdk/docs/sidebars.js",editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/"},theme:{customCss:"/home/runner/work/python-sdk/python-sdk/docs/src/css/custom.css"}}]],themes:[["/home/runner/work/python-sdk/python-sdk/docs/node_modules/@easyops-cn/docusaurus-search-local/dist/server/server/index.js",{hashed:!0,highlightSearchTermsOnTargetPage:!0,explicitSearchResultPath:!0,removeDefaultStemmer:!0}]],themeConfig:{image:"img/docusaurus-social-card.jpg",navbar:{title:"Groundlight",logo:{alt:"Groundlight Logo",src:"img/favicon-32x32.png",href:"https://code.groundlight.ai/"},items:[{type:"docSidebar",sidebarId:"tutorialSidebar",position:"left",label:"Docs"},{to:"/docs/building-applications",label:"Applications",position:"left"},{href:"pathname:///python-sdk/api-reference-docs/",label:"API Reference",position:"left"},{href:"https://github.com/groundlight/python-sdk",label:"GitHub",position:"right"}],hideOnScroll:!1},footer:{style:"dark",links:[{title:"Documentation",items:[{label:"Getting Started",to:"/docs/getting-started"},{label:"Building Applications",to:"/docs/building-applications"},{label:"Installation",to:"/docs/installation"}]},{title:"Company",items:[{label:"About",href:"https://www.groundlight.ai/"},{label:"Team",href:"https://www.groundlight.ai/team"},{label:"Careers",href:"https://www.groundlight.ai/careers"},{label:"Sign In",href:"https://app.groundlight.ai/"}]},{title:"Code",items:[{label:"Github",href:"https://github.com/groundlight/"},{label:"Python SDK",href:"https://pypi.org/project/groundlight/"},{label:"Video streaming",href:"https://github.com/groundlight/stream"},{label:"Arduino",href:"https://github.com/groundlight/esp32cam"}]}],copyright:"Copyright \xa9 2023 Groundlight AI."},prism:{theme:{plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},darkTheme:{plain:{color:"#9CDCFE",backgroundColor:"#1E1E1E"},styles:[{types:["prolog"],style:{color:"rgb(0, 0, 128)"}},{types:["comment"],style:{color:"rgb(106, 153, 85)"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"rgb(86, 156, 214)"}},{types:["number","inserted"],style:{color:"rgb(181, 206, 168)"}},{types:["constant"],style:{color:"rgb(100, 102, 149)"}},{types:["attr-name","variable"],style:{color:"rgb(156, 220, 254)"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"rgb(206, 145, 120)"}},{types:["selector"],style:{color:"rgb(215, 186, 125)"}},{types:["tag"],style:{color:"rgb(78, 201, 176)"}},{types:["tag"],languages:["markup"],style:{color:"rgb(86, 156, 214)"}},{types:["punctuation","operator"],style:{color:"rgb(212, 212, 212)"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"rgb(220, 220, 170)"}},{types:["class-name"],style:{color:"rgb(78, 201, 176)"}},{types:["char"],style:{color:"rgb(209, 105, 105)"}}]},additionalLanguages:[],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},colorMode:{defaultMode:"light",disableSwitch:!1,respectPrefersColorScheme:!1},docs:{versionPersistence:"localStorage",sidebar:{hideable:!1,autoCollapseCategories:!1}},metadata:[],tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},baseUrlIssueBanner:!0,onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},plugins:[],scripts:[],headTags:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1,markdown:{mermaid:!1}}},7462:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(this,arguments)}n.d(t,{Z:()=>r})},5068:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function a(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{Z:()=>a})},3366:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}n.d(t,{Z:()=>r})},8776:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=!0,a="Invariant failed";function o(e,t){if(!e){if(r)throw new Error(a);var n="function"==typeof t?t():t,o=n?"".concat(a,": ").concat(n):a;throw new Error(o)}}},7529:e=>{"use strict";e.exports={}},6887:e=>{"use strict";e.exports=JSON.parse('{"/python-sdk/markdown-page-6f0":{"__comp":"1f391b9e","__context":{"plugin":"8c4006d9"},"content":"393be207"},"/python-sdk/search-619":{"__comp":"1a4e3797","__context":{"plugin":"6662e7aa"}},"/python-sdk/docs-03b":{"__comp":"1be78505","__context":{"plugin":"4a1ffe74"},"versionMetadata":"935f2afb"},"/python-sdk/docs/api-reference-092":{"__comp":"17896441","content":"4178ee1d"},"/python-sdk/docs/building-applications-753":{"__comp":"17896441","content":"530c8fc0"},"/python-sdk/docs/building-applications/async-queries-e2f":{"__comp":"17896441","content":"cb33c72e"},"/python-sdk/docs/building-applications/edge-859":{"__comp":"17896441","content":"8c48aa69"},"/python-sdk/docs/building-applications/grabbing-images-ccc":{"__comp":"17896441","content":"004649c5"},"/python-sdk/docs/building-applications/handling-errors-b6f":{"__comp":"17896441","content":"efd4b15a"},"/python-sdk/docs/building-applications/industrial-39d":{"__comp":"17896441","content":"1b28ffce"},"/python-sdk/docs/building-applications/managing-confidence-c5f":{"__comp":"17896441","content":"5747eae1"},"/python-sdk/docs/building-applications/sample-applications-aef":{"__comp":"17896441","content":"37fce620"},"/python-sdk/docs/building-applications/working-with-detectors-711":{"__comp":"17896441","content":"0fd99c0f"},"/python-sdk/docs/getting-started-23b":{"__comp":"17896441","content":"325ecf53"},"/python-sdk/docs/getting-started/api-tokens-48d":{"__comp":"17896441","content":"c5b38f9e"},"/python-sdk/docs/getting-started/dog-on-couch-7b3":{"__comp":"17896441","content":"ddfecd50"},"/python-sdk/docs/getting-started/retail-analytics-4ae":{"__comp":"17896441","content":"14fdb7e5"},"/python-sdk/docs/getting-started/streaming-23e":{"__comp":"17896441","content":"7aefb68d"},"/python-sdk/docs/getting-started/writing-queries-35e":{"__comp":"17896441","content":"fc921a7a"},"/python-sdk/docs/installation-905":{"__comp":"17896441","content":"1e924268"},"/python-sdk/docs/installation/linux-027":{"__comp":"17896441","content":"86aa3e00"},"/python-sdk/docs/installation/macos-ce1":{"__comp":"17896441","content":"8091dcef"},"/python-sdk/docs/installation/monitoring-notification-server-1fb":{"__comp":"17896441","content":"ad6b0f9d"},"/python-sdk/docs/installation/nvidia-jetson-c38":{"__comp":"17896441","content":"f705f88e"},"/python-sdk/docs/installation/optional-libraries-82b":{"__comp":"17896441","content":"8557125a"},"/python-sdk/docs/installation/raspberry-pi-4e4":{"__comp":"17896441","content":"0b4c8eac"},"/python-sdk/docs/installation/windows-9e5":{"__comp":"17896441","content":"d5ec6805"},"/python-sdk/docs/iot-9e2":{"__comp":"17896441","content":"0cd01ddf"},"/python-sdk/-978":{"__comp":"1df93b7f","__context":{"plugin":"8c4006d9"},"config":"5e9f5e1a"}}')}},e=>{e.O(0,[532],(()=>{return t=9383,e(e.s=t);var t}));e.O()}]); \ No newline at end of file diff --git a/assets/js/main.9b28fa51.js b/assets/js/main.9b28fa51.js new file mode 100644 index 00000000..6ae06678 --- /dev/null +++ b/assets/js/main.9b28fa51.js @@ -0,0 +1,2 @@ +/*! For license information please see main.9b28fa51.js.LICENSE.txt */ +(self.webpackChunkweb=self.webpackChunkweb||[]).push([[179],{723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});n(7294);var r=n(8356),o=n.n(r),a=n(6887);const i={"004649c5":[()=>n.e(342).then(n.bind(n,7867)),"@site/docs/building-applications/2-grabbing-images.md",7867],"0b4c8eac":[()=>n.e(67).then(n.bind(n,7495)),"@site/docs/installation/4-raspberry-pi.md",7495],"0cd01ddf":[()=>n.e(240).then(n.bind(n,4919)),"@site/docs/iot/iot.md",4919],"0fd99c0f":[()=>n.e(136).then(n.bind(n,5917)),"@site/docs/building-applications/3-working-with-detectors.md",5917],"14fdb7e5":[()=>n.e(355).then(n.bind(n,1110)),"@site/docs/getting-started/3-retail-analytics.md",1110],17896441:[()=>Promise.all([n.e(532),n.e(284),n.e(918)]).then(n.bind(n,3147)),"@theme/DocItem",3147],"1a4e3797":[()=>Promise.all([n.e(532),n.e(920)]).then(n.bind(n,2027)),"@theme/SearchPage",2027],"1b28ffce":[()=>n.e(518).then(n.bind(n,1235)),"@site/docs/building-applications/8-industrial.md",1235],"1df93b7f":[()=>Promise.all([n.e(532),n.e(237)]).then(n.bind(n,8391)),"@site/src/pages/index.tsx",8391],"1e924268":[()=>n.e(614).then(n.bind(n,4953)),"@site/docs/installation/installation.md",4953],"1f391b9e":[()=>Promise.all([n.e(532),n.e(284),n.e(85)]).then(n.bind(n,3967)),"@theme/MDXPage",3967],"325ecf53":[()=>n.e(45).then(n.bind(n,9138)),"@site/docs/getting-started/getting-started.mdx",9138],"37fce620":[()=>n.e(871).then(n.bind(n,4134)),"@site/docs/building-applications/1-sample-applications.md",4134],"393be207":[()=>n.e(414).then(n.bind(n,1181)),"@site/src/pages/markdown-page.md",1181],"4178ee1d":[()=>n.e(859).then(n.bind(n,5132)),"@site/docs/api-reference/api-reference.md",5132],"4a1ffe74":[()=>n.e(955).then(n.t.bind(n,3769,19)),"/home/runner/work/python-sdk/python-sdk/docs/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],"530c8fc0":[()=>n.e(642).then(n.bind(n,1441)),"@site/docs/building-applications/building-applications.md",1441],"5747eae1":[()=>n.e(571).then(n.bind(n,4373)),"@site/docs/building-applications/4-managing-confidence.md",4373],"5e95c892":[()=>n.e(661).then(n.bind(n,1388)),"@theme/DocsRoot",1388],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,6809)),"@generated/docusaurus.config",6809],"6662e7aa":[()=>n.e(352).then(n.t.bind(n,2776,19)),"/home/runner/work/python-sdk/python-sdk/docs/.docusaurus/@easyops-cn/docusaurus-search-local/default/plugin-route-context-module-100.json",2776],"7aefb68d":[()=>n.e(201).then(n.bind(n,8523)),"@site/docs/getting-started/5-streaming.md",8523],"8091dcef":[()=>n.e(100).then(n.bind(n,8636)),"@site/docs/installation/2-macos.md",8636],"8557125a":[()=>n.e(729).then(n.bind(n,3424)),"@site/docs/installation/6-optional-libraries.md",3424],"86aa3e00":[()=>n.e(605).then(n.bind(n,9121)),"@site/docs/installation/1-linux.md",9121],"8c4006d9":[()=>n.e(894).then(n.t.bind(n,5745,19)),"/home/runner/work/python-sdk/python-sdk/docs/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",5745],"8c48aa69":[()=>n.e(502).then(n.bind(n,7724)),"@site/docs/building-applications/7-edge.md",7724],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],a7bd4aaa:[()=>n.e(23).then(n.bind(n,5375)),"@theme/DocVersionRoot",5375],a94703ab:[()=>Promise.all([n.e(532),n.e(368)]).then(n.bind(n,499)),"@theme/DocRoot",499],ad6b0f9d:[()=>n.e(168).then(n.bind(n,7078)),"@site/docs/installation/7-monitoring-notification-server.md",7078],c5b38f9e:[()=>n.e(863).then(n.bind(n,4725)),"@site/docs/getting-started/1-api-tokens.md",4725],cb33c72e:[()=>n.e(855).then(n.bind(n,3574)),"@site/docs/building-applications/6-async-queries.md",3574],d5ec6805:[()=>n.e(986).then(n.bind(n,6901)),"@site/docs/installation/3-windows.md",6901],ddfecd50:[()=>n.e(609).then(n.bind(n,1178)),"@site/docs/getting-started/4-dog-on-couch.md",1178],efd4b15a:[()=>n.e(891).then(n.bind(n,6556)),"@site/docs/building-applications/5-handling-errors.md",6556],f705f88e:[()=>n.e(537).then(n.bind(n,4440)),"@site/docs/installation/5-nvidia-jetson.md",4440],fc921a7a:[()=>n.e(124).then(n.bind(n,7185)),"@site/docs/getting-started/2-writing-queries.md",7185]};var s=n(5893);function l(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,s.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,s.jsx)("p",{children:String(t)}),(0,s.jsx)("div",{children:(0,s.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,s.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,s.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,s.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,s.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,s.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,s.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,s.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,s.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,s.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var u=n(9670),c=n(226);function d(e,t){if("*"===e)return o()({loading:l,loader:()=>n.e(980).then(n.bind(n,5980)),modules:["@theme/NotFound"],webpack:()=>[5980],render(e,t){const n=e.default;return(0,s.jsx)(c.z,{value:{plugin:{name:"native",id:"default"}},children:(0,s.jsx)(n,{...t})})}});const r=a[`${e}-${t}`],d={},p=[],f=[],h=(0,u.Z)(r);return Object.entries(h).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],p.push(r[1]),f.push(r[2]))})),o().Map({loading:l,loader:d,modules:p,webpack:()=>f,render(t,n){const o=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let i=o;const s=n.split(".");s.slice(0,-1).forEach((e=>{i=i[e]})),i[s[s.length-1]]=a}));const a=o.__comp;delete o.__comp;const i=o.__context;return delete o.__context,(0,s.jsx)(c.z,{value:i,children:(0,s.jsx)(a,{...o,...n})})}})}const p=[{path:"/python-sdk/markdown-page",component:d("/python-sdk/markdown-page","6f0"),exact:!0},{path:"/python-sdk/search",component:d("/python-sdk/search","619"),exact:!0},{path:"/python-sdk/docs",component:d("/python-sdk/docs","175"),routes:[{path:"/python-sdk/docs",component:d("/python-sdk/docs","679"),routes:[{path:"/python-sdk/docs",component:d("/python-sdk/docs","cc2"),routes:[{path:"/python-sdk/docs/api-reference",component:d("/python-sdk/docs/api-reference","092"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/building-applications",component:d("/python-sdk/docs/building-applications","753"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/building-applications/async-queries",component:d("/python-sdk/docs/building-applications/async-queries","e2f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/building-applications/edge",component:d("/python-sdk/docs/building-applications/edge","859"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/building-applications/grabbing-images",component:d("/python-sdk/docs/building-applications/grabbing-images","ccc"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/building-applications/handling-errors",component:d("/python-sdk/docs/building-applications/handling-errors","b6f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/building-applications/industrial",component:d("/python-sdk/docs/building-applications/industrial","39d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/building-applications/managing-confidence",component:d("/python-sdk/docs/building-applications/managing-confidence","c5f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/building-applications/sample-applications",component:d("/python-sdk/docs/building-applications/sample-applications","aef"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/building-applications/working-with-detectors",component:d("/python-sdk/docs/building-applications/working-with-detectors","711"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/getting-started",component:d("/python-sdk/docs/getting-started","23b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/getting-started/api-tokens",component:d("/python-sdk/docs/getting-started/api-tokens","48d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/getting-started/dog-on-couch",component:d("/python-sdk/docs/getting-started/dog-on-couch","7b3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/getting-started/retail-analytics",component:d("/python-sdk/docs/getting-started/retail-analytics","4ae"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/getting-started/streaming",component:d("/python-sdk/docs/getting-started/streaming","23e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/getting-started/writing-queries",component:d("/python-sdk/docs/getting-started/writing-queries","35e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/installation",component:d("/python-sdk/docs/installation","905"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/installation/linux",component:d("/python-sdk/docs/installation/linux","027"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/installation/macos",component:d("/python-sdk/docs/installation/macos","ce1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/installation/monitoring-notification-server",component:d("/python-sdk/docs/installation/monitoring-notification-server","1fb"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/installation/nvidia-jetson",component:d("/python-sdk/docs/installation/nvidia-jetson","c38"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/installation/optional-libraries",component:d("/python-sdk/docs/installation/optional-libraries","82b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/installation/raspberry-pi",component:d("/python-sdk/docs/installation/raspberry-pi","4e4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/installation/windows",component:d("/python-sdk/docs/installation/windows","9e5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/python-sdk/docs/iot",component:d("/python-sdk/docs/iot","9e2"),exact:!0,sidebar:"tutorialSidebar"}]}]}]},{path:"/python-sdk/",component:d("/python-sdk/","978"),exact:!0},{path:"*",component:d("*")}]},8934:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,t:()=>i});var r=n(7294),o=n(5893);const a=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,o.jsx)(a.Provider,{value:n,children:t})}},2712:(e,t,n)=>{"use strict";var r=n(7294),o=n(745),a=n(3727),i=n(405),s=n(412);const l=[n(2497),n(8423),n(703),n(2295)];var u=n(723),c=n(6550),d=n(8790),p=n(5893);function f(e){let{children:t}=e;return(0,p.jsx)(p.Fragment,{children:t})}var h=n(5742),g=n(2263),m=n(4996),y=n(6668),b=n(1944),v=n(4711),w=n(9727),k=n(3320),x=n(8780),S=n(3510);function E(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,g.Z)(),r=(0,v.l)(),o=n[e].htmlLang,a=e=>e.replace("-","_");return(0,p.jsxs)(h.Z,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,p.jsx)("meta",{property:"og:locale",content:a(o)}),Object.values(n).filter((e=>o!==e.htmlLang)).map((e=>(0,p.jsx)("meta",{property:"og:locale:alternate",content:a(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function C(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,g.Z)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,g.Z)(),{pathname:r}=(0,c.TH)();return e+(0,x.applyTrailingSlash)((0,m.Z)(r),{trailingSlash:n,baseUrl:t})}(),o=t?`${n}${t}`:r;return(0,p.jsxs)(h.Z,{children:[(0,p.jsx)("meta",{property:"og:url",content:o}),(0,p.jsx)("link",{rel:"canonical",href:o})]})}function T(){const{i18n:{currentLocale:e}}=(0,g.Z)(),{metadata:t,image:n}=(0,y.L)();return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(h.Z,{children:[(0,p.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,p.jsx)("body",{className:w.h})]}),n&&(0,p.jsx)(b.d,{image:n}),(0,p.jsx)(C,{}),(0,p.jsx)(E,{}),(0,p.jsx)(S.Z,{tag:k.HX,locale:e}),(0,p.jsx)(h.Z,{children:t.map(((e,t)=>(0,p.jsx)("meta",{...e},t)))})]})}const _=new Map;function L(e){if(_.has(e.pathname))return{...e,pathname:_.get(e.pathname)};if((0,d.f)(u.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return _.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return _.set(e.pathname,t),{...e,pathname:t}}var R=n(8934),j=n(8940),N=n(469);function A(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];const o=l.map((t=>{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>o.forEach((e=>e?.()))}const P=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,N.Z)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,o=t.hash===n.hash,a=t.search===n.search;if(r&&o&&!a)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:r}),A("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function O(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(u.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class I extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=s.Z.canUseDOM?A("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=A("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),O(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,p.jsx)(P,{previousLocation:this.previousLocation,location:t,children:(0,p.jsx)(c.AW,{location:t,render:()=>e})})}}const D=I,F="__docusaurus-base-url-issue-banner-container",M="__docusaurus-base-url-issue-banner",z="__docusaurus-base-url-issue-banner-suggestion-container";function B(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '${F}';\n var bannerHtml = ${JSON.stringify(function(e){return`\n<div id="${M}" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">${e}</span> ${"/"===e?" (default value)":""}</p>\n <p>We suggest trying baseUrl = <span id="${z}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n document.body.prepend(bannerContainer);\n var suggestionContainer = document.getElementById('${z}');\n var actualHomePagePath = window.location.pathname;\n var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n ? actualHomePagePath\n : actualHomePagePath + '/';\n suggestionContainer.innerHTML = suggestedBaseUrl;\n}\n`}function $(){const{siteConfig:{baseUrl:e}}=(0,g.Z)();return(0,p.jsx)(p.Fragment,{children:!s.Z.canUseDOM&&(0,p.jsx)(h.Z,{children:(0,p.jsx)("script",{children:B(e)})})})}function U(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,g.Z)(),{pathname:n}=(0,c.TH)();return t&&n===e?(0,p.jsx)($,{}):null}function q(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:r,localeConfigs:o}}=(0,g.Z)(),a=(0,m.Z)(e),{htmlLang:i,direction:s}=o[r];return(0,p.jsxs)(h.Z,{children:[(0,p.jsx)("html",{lang:i,dir:s}),(0,p.jsx)("title",{children:t}),(0,p.jsx)("meta",{property:"og:title",content:t}),(0,p.jsx)("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&(0,p.jsx)("meta",{name:"robots",content:"noindex, nofollow"}),e&&(0,p.jsx)("link",{rel:"icon",href:a})]})}var H=n(4763),Q=n(2389);function Z(){const e=(0,Q.Z)();return(0,p.jsx)(h.Z,{children:(0,p.jsx)("html",{"data-has-hydrated":e})})}function V(){const e=(0,d.H)(u.Z),t=(0,c.TH)();return(0,p.jsx)(H.Z,{children:(0,p.jsx)(j.M,{children:(0,p.jsxs)(R.t,{children:[(0,p.jsxs)(f,{children:[(0,p.jsx)(q,{}),(0,p.jsx)(T,{}),(0,p.jsx)(U,{}),(0,p.jsx)(D,{location:L(t),children:e})]}),(0,p.jsx)(Z,{})]})})})}var W=n(6887);const G=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const o=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;o?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var K=n(9670);const Y=new Set,X=new Set,J=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ee={prefetch(e){if(!(e=>!J()&&!X.has(e)&&!Y.has(e))(e))return!1;Y.add(e);const t=(0,d.f)(u.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(W).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,K.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?G(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!J()&&!X.has(e))(e)&&(X.add(e),O(e))},te=Object.freeze(ee),ne=Boolean(!0);if(s.Z.canUseDOM){window.docusaurus=te;const e=document.getElementById("__docusaurus"),t=(0,p.jsx)(i.B6,{children:(0,p.jsx)(a.VK,{children:(0,p.jsx)(V,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},s=()=>{if(ne)r.startTransition((()=>{o.hydrateRoot(e,t,{onRecoverableError:n})}));else{const a=o.createRoot(e,{onRecoverableError:n});r.startTransition((()=>{a.render(t)}))}};O(window.location.pathname).then(s)}},8940:(e,t,n)=>{"use strict";n.d(t,{_:()=>d,M:()=>p});var r=n(7294),o=n(6809);const a=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/python-sdk/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/python-sdk/docs","mainDocId":"getting-started/getting-started","docs":[{"id":"api-reference/redirect","path":"/python-sdk/docs/api-reference/","sidebar":"tutorialSidebar"},{"id":"building-applications/async-queries","path":"/python-sdk/docs/building-applications/async-queries","sidebar":"tutorialSidebar"},{"id":"building-applications/building-applications","path":"/python-sdk/docs/building-applications/","sidebar":"tutorialSidebar"},{"id":"building-applications/edge","path":"/python-sdk/docs/building-applications/edge","sidebar":"tutorialSidebar"},{"id":"building-applications/grabbing-images","path":"/python-sdk/docs/building-applications/grabbing-images","sidebar":"tutorialSidebar"},{"id":"building-applications/handling-errors","path":"/python-sdk/docs/building-applications/handling-errors","sidebar":"tutorialSidebar"},{"id":"building-applications/industrial","path":"/python-sdk/docs/building-applications/industrial","sidebar":"tutorialSidebar"},{"id":"building-applications/managing-confidence","path":"/python-sdk/docs/building-applications/managing-confidence","sidebar":"tutorialSidebar"},{"id":"building-applications/sample-applications","path":"/python-sdk/docs/building-applications/sample-applications","sidebar":"tutorialSidebar"},{"id":"building-applications/working-with-detectors","path":"/python-sdk/docs/building-applications/working-with-detectors","sidebar":"tutorialSidebar"},{"id":"getting-started/api-tokens","path":"/python-sdk/docs/getting-started/api-tokens","sidebar":"tutorialSidebar"},{"id":"getting-started/dog-on-couch","path":"/python-sdk/docs/getting-started/dog-on-couch","sidebar":"tutorialSidebar"},{"id":"getting-started/getting-started","path":"/python-sdk/docs/getting-started/","sidebar":"tutorialSidebar"},{"id":"getting-started/retail-analytics","path":"/python-sdk/docs/getting-started/retail-analytics","sidebar":"tutorialSidebar"},{"id":"getting-started/streaming","path":"/python-sdk/docs/getting-started/streaming","sidebar":"tutorialSidebar"},{"id":"getting-started/writing-queries","path":"/python-sdk/docs/getting-started/writing-queries","sidebar":"tutorialSidebar"},{"id":"installation/installation","path":"/python-sdk/docs/installation/","sidebar":"tutorialSidebar"},{"id":"installation/linux","path":"/python-sdk/docs/installation/linux","sidebar":"tutorialSidebar"},{"id":"installation/macos","path":"/python-sdk/docs/installation/macos","sidebar":"tutorialSidebar"},{"id":"installation/monitoring-notification-server","path":"/python-sdk/docs/installation/monitoring-notification-server","sidebar":"tutorialSidebar"},{"id":"installation/nvidia-jetson","path":"/python-sdk/docs/installation/nvidia-jetson","sidebar":"tutorialSidebar"},{"id":"installation/optional-libraries","path":"/python-sdk/docs/installation/optional-libraries","sidebar":"tutorialSidebar"},{"id":"installation/raspberry-pi","path":"/python-sdk/docs/installation/raspberry-pi","sidebar":"tutorialSidebar"},{"id":"installation/windows","path":"/python-sdk/docs/installation/windows","sidebar":"tutorialSidebar"},{"id":"iot/esp32cam","path":"/python-sdk/docs/iot/","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/python-sdk/docs/getting-started/","label":"Getting Started"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var s=n(7529);const l=JSON.parse('{"docusaurusVersion":"3.0.0","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.0.0"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"3.0.0"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.0.0"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.0.0"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.0.0"},"@easyops-cn/docusaurus-search-local":{"type":"package","name":"@easyops-cn/docusaurus-search-local","version":"0.38.0"}}}');var u=n(5893);const c={siteConfig:o.default,siteMetadata:l,globalData:a,i18n:i,codeTranslations:s},d=r.createContext(c);function p(e){let{children:t}=e;return(0,u.jsx)(d.Provider,{value:c,children:t})}},4763:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7294),o=n(412),a=n(5742),i=n(8780),s=n(2758),l=n(5893);function u(e){let{error:t,tryAgain:n}=e;return(0,l.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,l.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,l.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,l.jsx)(c,{error:t})]})}function c(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,l.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function d(e){let{error:t,tryAgain:n}=e;return(0,l.jsxs)(f,{fallback:()=>(0,l.jsx)(u,{error:t,tryAgain:n}),children:[(0,l.jsx)(a.Z,{children:(0,l.jsx)("title",{children:"Page Error"})}),(0,l.jsx)(s.Z,{children:(0,l.jsx)(u,{error:t,tryAgain:n})})]})}const p=e=>(0,l.jsx)(d,{...e});class f extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){o.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??p)(e)}return e??null}}},412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,o={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});n(7294);var r=n(405),o=n(5893);function a(e){return(0,o.jsx)(r.ql,{...e})}},9960:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7294),o=n(3727),a=n(8780),i=n(2263),s=n(3919),l=n(412),u=n(5893);const c=r.createContext({collectLink:()=>{}});var d=n(4996);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:h,isActive:g,"data-noBrokenLinkCheck":m,autoAddBaseUrl:y=!0,...b}=e;const{siteConfig:{trailingSlash:v,baseUrl:w}}=(0,i.Z)(),{withBaseUrl:k}=(0,d.C)(),x=(0,r.useContext)(c),S=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>S.current));const E=p||f;const C=(0,s.Z)(E),T=E?.replace("pathname://","");let _=void 0!==T?(L=T,y&&(e=>e.startsWith("/"))(L)?k(L):L):void 0;var L;_&&C&&(_=(0,a.applyTrailingSlash)(_,{trailingSlash:v,baseUrl:w}));const R=(0,r.useRef)(!1),j=n?o.OL:o.rU,N=l.Z.canUseIntersectionObserver,A=(0,r.useRef)(),P=()=>{R.current||null==_||(window.docusaurus.preload(_),R.current=!0)};(0,r.useEffect)((()=>(!N&&C&&null!=_&&window.docusaurus.prefetch(_),()=>{N&&A.current&&A.current.disconnect()})),[A,_,N,C]);const O=_?.startsWith("#")??!1,I=!_||!C||O;return I||m||x.collectLink(_),I?(0,u.jsx)("a",{ref:S,href:_,...E&&!C&&{target:"_blank",rel:"noopener noreferrer"},...b}):(0,u.jsx)(j,{...b,onMouseEnter:P,onTouchStart:P,innerRef:e=>{S.current=e,N&&e&&C&&(A.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(A.current.unobserve(e),A.current.disconnect(),null!=_&&window.docusaurus.prefetch(_))}))})),A.current.observe(e))},to:_,...n&&{isActive:g,activeClassName:h}})}const f=r.forwardRef(p)},5999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u,I:()=>l});var r=n(7294),o=n(5893);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var i=n(7529);function s(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return i[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return a(s({message:n,id:r}),t)}function u(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal <Translate> children",t),new Error("The Docusaurus <Translate> component only accept simple string values");const i=s({message:t,id:n});return(0,o.jsx)(o.Fragment,{children:a(i,r)})}},9935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},3919:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function o(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>o,b:()=>r})},4996:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>s});var r=n(7294),o=n(2263),a=n(3919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,o.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:o=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,a.b)(n))return n;if(o)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const s=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+s:s}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function s(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},2263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294),o=n(8940);function a(){return(0,r.useContext)(o._)}},2389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294),o=n(8934);function a(){return(0,r.useContext)(o._)}},469:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294);const o=n(412).Z.canUseDOM?r.useLayoutEffect:r.useEffect},9670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function o(e){const t={};return function e(n,o){Object.entries(n).forEach((n=>{let[a,i]=n;const s=o?`${o}.${a}`:a;r(i)?e(i,s):t[s]=i}))}(e),t}},226:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,z:()=>i});var r=n(7294),o=n(5893);const a=r.createContext(null);function i(e){let{children:t,value:n}=e;const i=r.useContext(a),s=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:i,value:n})),[i,n]);return(0,o.jsx)(a.Provider,{value:s,children:t})}},143:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>g,gA:()=>p,_r:()=>c,Jo:()=>m,zh:()=>d,yW:()=>h,gB:()=>f});var r=n(6550),o=n(2263),a=n(9935);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,o.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const s=e=>e.versions.find((e=>e.isLast));function l(e,t){const n=function(e,t){const n=s(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),o=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:o,alternateDocVersions:o?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(o.id):{}}}const u={},c=()=>i("docusaurus-plugin-content-docs")??u,d=e=>function(e,t,n){void 0===t&&(t=a.m),void 0===n&&(n={});const r=i(e),o=r?.[t];if(!o&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return o}("docusaurus-plugin-content-docs",e,{failfast:!0});function p(e){void 0===e&&(e={});const t=c(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const o=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),a=o?{pluginId:o[0],pluginData:o[1]}:void 0;if(!a&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return a}(t,n,e)}function f(e){return d(e).versions}function h(e){const t=d(e);return s(t)}function g(e){const t=d(e),{pathname:n}=(0,r.TH)();return l(t,n)}function m(e){const t=d(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=s(e);return{latestDocSuggestion:l(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},703:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});var r=n(4865),o=n.n(r);o().configure({showSpinner:!1});const a={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{o().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){o().done()}}},8423:(e,t,n)=>{"use strict";n.r(t);var r=n(4965),o=n(6809);!function(e){const{themeConfig:{prism:t}}=o.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(6854),n(6726)(`./prism-${e}`)})),delete globalThis.Prism}(r.p1)},2757:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});n(7294);var r=n(6010),o=n(5999),a=n(6668),i=n(9960);const s={anchorWithStickyNavbar:"anchorWithStickyNavbar_FNw8",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_JmiO"};var l=n(5893);function u(e){let{as:t,id:n,...u}=e;const{navbar:{hideOnScroll:c}}=(0,a.L)();if("h1"===t||!n)return(0,l.jsx)(t,{...u,id:void 0});const d=(0,o.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof u.children?u.children:n});return(0,l.jsxs)(t,{...u,className:(0,r.Z)("anchor",c?s.anchorWithHideOnScrollNavbar:s.anchorWithStickyNavbar,u.className),id:n,children:[u.children,(0,l.jsx)(i.Z,{className:"hash-link",to:`#${n}`,"aria-label":d,title:d,children:"\u200b"})]})}},2339:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});n(7294);const r={iconExternalLink:"iconExternalLink_T11m"};var o=n(5893);function a(e){let{width:t=13.5,height:n=13.5}=e;return(0,o.jsx)("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,o.jsx)("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"})})}},2758:(e,t,n)=>{"use strict";n.d(t,{Z:()=>At});var r=n(7294),o=n(6010),a=n(4763),i=n(1944),s=n(6550),l=n(5999),u=n(5936),c=n(5893);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,s.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,u.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const h=(0,l.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function g(e){const t=e.children??h,{containerRef:n,onClick:r}=f();return(0,c.jsx)("div",{ref:n,role:"region","aria-label":h,children:(0,c.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var m=n(5281),y=n(9727);const b={skipToContent:"skipToContent_gu5v"};function v(){return(0,c.jsx)(g,{className:b.skipToContent})}var w=n(6668),k=n(9689);function x(e){let{width:t=21,height:n=21,color:r="currentColor",strokeWidth:o=1.2,className:a,...i}=e;return(0,c.jsx)("svg",{viewBox:"0 0 15 15",width:t,height:n,...i,children:(0,c.jsx)("g",{stroke:r,strokeWidth:o,children:(0,c.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const S={closeButton:"closeButton_VBLd"};function E(e){return(0,c.jsx)("button",{type:"button","aria-label":(0,l.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,o.Z)("clean-btn close",S.closeButton,e.className),children:(0,c.jsx)(x,{width:14,height:14,strokeWidth:3.1})})}const C={content:"content_M4QP"};function T(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return(0,c.jsx)("div",{...e,className:(0,o.Z)(C.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const _={announcementBar:"announcementBar_w47h",announcementBarPlaceholder:"announcementBarPlaceholder_VCrL",announcementBarClose:"announcementBarClose_X3y7",announcementBarContent:"announcementBarContent_JsD6"};function L(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:r,textColor:o,isCloseable:a}=e;return(0,c.jsxs)("div",{className:_.announcementBar,style:{backgroundColor:r,color:o},role:"banner",children:[a&&(0,c.jsx)("div",{className:_.announcementBarPlaceholder}),(0,c.jsx)(T,{className:_.announcementBarContent}),a&&(0,c.jsx)(E,{onClick:n,className:_.announcementBarClose})]})}var R=n(2961),j=n(2466);var N=n(902),A=n(3102);const P=r.createContext(null);function O(e){let{children:t}=e;const n=function(){const e=(0,R.e)(),t=(0,A.HY)(),[n,o]=(0,r.useState)(!1),a=null!==t.component,i=(0,N.D9)(a);return(0,r.useEffect)((()=>{a&&!i&&o(!0)}),[a,i]),(0,r.useEffect)((()=>{a?e.shown||o(!0):o(!1)}),[e.shown,a]),(0,r.useMemo)((()=>[n,o]),[n])}();return(0,c.jsx)(P.Provider,{value:n,children:t})}function I(e){if(e.component){const t=e.component;return(0,c.jsx)(t,{...e.props})}}function D(){const e=(0,r.useContext)(P);if(!e)throw new N.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,o=(0,r.useCallback)((()=>n(!1)),[n]),a=(0,A.HY)();return(0,r.useMemo)((()=>({shown:t,hide:o,content:I(a)})),[o,a,t])}function F(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:a}=D();return(0,c.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,c.jsxs)("div",{className:(0,o.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":a}),children:[(0,c.jsx)("div",{className:"navbar-sidebar__item menu",children:n}),(0,c.jsx)("div",{className:"navbar-sidebar__item menu",children:r})]})]})}var M=n(2949),z=n(2389);function B(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function $(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}const U={toggle:"toggle_kWbt",toggleButton:"toggleButton_fOL9",darkToggleIcon:"darkToggleIcon_DFgp",lightToggleIcon:"lightToggleIcon_DCeJ",toggleButtonDisabled:"toggleButtonDisabled_STpu"};function q(e){let{className:t,buttonClassName:n,value:r,onChange:a}=e;const i=(0,z.Z)(),s=(0,l.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===r?(0,l.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,l.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return(0,c.jsx)("div",{className:(0,o.Z)(U.toggle,t),children:(0,c.jsxs)("button",{className:(0,o.Z)("clean-btn",U.toggleButton,!i&&U.toggleButtonDisabled,n),type:"button",onClick:()=>a("dark"===r?"light":"dark"),disabled:!i,title:s,"aria-label":s,"aria-live":"polite",children:[(0,c.jsx)(B,{className:(0,o.Z)(U.toggleIcon,U.lightToggleIcon)}),(0,c.jsx)($,{className:(0,o.Z)(U.toggleIcon,U.darkToggleIcon)})]})})}const H=r.memo(q),Q={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_e68Z"};function Z(e){let{className:t}=e;const n=(0,w.L)().navbar.style,r=(0,w.L)().colorMode.disableSwitch,{colorMode:o,setColorMode:a}=(0,M.I)();return r?null:(0,c.jsx)(H,{className:t,buttonClassName:"dark"===n?Q.darkNavbarColorModeToggle:void 0,value:o,onChange:a})}var V=n(5012);function W(){return(0,c.jsx)(V.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function G(){const e=(0,R.e)();return(0,c.jsx)("button",{type:"button","aria-label":(0,l.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,c.jsx)(x,{color:"var(--ifm-color-emphasis-600)"})})}function K(){return(0,c.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,c.jsx)(W,{}),(0,c.jsx)(Z,{className:"margin-right--md"}),(0,c.jsx)(G,{})]})}var Y=n(9960),X=n(4996),J=n(3919);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(2339);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:o,label:a,html:i,isDropdownLink:s,prependBaseUrlToHref:l,...u}=e;const d=(0,X.Z)(r),p=(0,X.Z)(t),f=(0,X.Z)(o,{forcePrependBaseUrl:!0}),h=a&&o&&!(0,J.Z)(o),g=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,c.jsxs)(c.Fragment,{children:[a,h&&(0,c.jsx)(te.Z,{...s&&{width:12,height:12}})]})};return o?(0,c.jsx)(Y.Z,{href:l?f:o,...u,...g}):(0,c.jsx)(Y.Z,{to:d,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(p)},...u,...g})}function re(e){let{className:t,isDropdownItem:n=!1,...r}=e;const a=(0,c.jsx)(ne,{className:(0,o.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n,...r});return n?(0,c.jsx)("li",{children:a}):a}function oe(e){let{className:t,isDropdownItem:n,...r}=e;return(0,c.jsx)("li",{className:"menu__list-item",children:(0,c.jsx)(ne,{className:(0,o.Z)("menu__link",t),...r})})}function ae(e){let{mobile:t=!1,position:n,...r}=e;const o=t?oe:re;return(0,c.jsx)(o,{...r,activeClassName:r.activeClassName??(t?"menu__link--active":"navbar__link--active")})}var ie=n(6043),se=n(8596),le=n(2263);function ue(e,t){return e.some((e=>function(e,t){return!!(0,se.Mg)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function ce(e){let{items:t,position:n,className:a,onClick:i,...s}=e;const l=(0,r.useRef)(null),[u,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{l.current&&!l.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[l]),(0,c.jsxs)("div",{ref:l,className:(0,o.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":u}),children:[(0,c.jsx)(ne,{"aria-haspopup":"true","aria-expanded":u,role:"button",href:s.to?void 0:"#",className:(0,o.Z)("navbar__link",a),...s,onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!u))},children:s.children??s.label}),(0,c.jsx)("ul",{className:"dropdown__menu",children:t.map(((e,t)=>(0,r.createElement)(He,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))})]})}function de(e){let{items:t,className:n,position:a,onClick:i,...l}=e;const u=function(){const{siteConfig:{baseUrl:e}}=(0,le.Z)(),{pathname:t}=(0,s.TH)();return t.replace(e,"/")}(),d=ue(t,u),{collapsed:p,toggleCollapsed:f,setCollapsed:h}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&h(!d)}),[u,d,h]),(0,c.jsxs)("li",{className:(0,o.Z)("menu__list-item",{"menu__list-item--collapsed":p}),children:[(0,c.jsx)(ne,{role:"button",className:(0,o.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n),...l,onClick:e=>{e.preventDefault(),f()},children:l.children??l.label}),(0,c.jsx)(ie.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:p,children:t.map(((e,t)=>(0,r.createElement)(He,{mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active",...e,key:t})))})]})}function pe(e){let{mobile:t=!1,...n}=e;const r=t?de:ce;return(0,c.jsx)(r,{...n})}var fe=n(4711);function he(e){let{width:t=20,height:n=20,...r}=e;return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0,...r,children:(0,c.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const ge="iconLanguage_Ax7J";var me=n(1029),ye=n(373),be=n(143),ve=n(22),we=n(8202),ke=n(3926),xe=n(1073),Se=n(2539),Ee=n(726);const Ce='<svg width="20" height="20" viewBox="0 0 20 20"><path d="M17 6v12c0 .52-.2 1-1 1H4c-.7 0-1-.33-1-1V2c0-.55.42-1 1-1h8l5 5zM14 8h-3.13c-.51 0-.87-.34-.87-.87V4" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linejoin="round"></path></svg>',Te='<svg width="20" height="20" viewBox="0 0 20 20"><path d="M13 13h4-4V8H7v5h6v4-4H7V8H3h4V3v5h6V3v5h4-4v5zm-6 0v4-4H3h4z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg>',_e='<svg width="20" height="20" viewBox="0 0 20 20"><path d="M17 5H3h14zm0 5H3h14zm0 5H3h14z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linejoin="round"></path></svg>',Le='<svg width="20" height="20" viewBox="0 0 20 20"><g stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"><path d="M18 3v4c0 2-2 4-4 4H2"></path><path d="M8 17l-6-6 6-6"></path></g></svg>',Re='<svg width="40" height="40" viewBox="0 0 20 20" fill="none" fill-rule="evenodd" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><path d="M15.5 4.8c2 3 1.7 7-1 9.7h0l4.3 4.3-4.3-4.3a7.8 7.8 0 01-9.8 1m-2.2-2.2A7.8 7.8 0 0113.2 2.4M2 18L18 2"></path></svg>',je='<svg viewBox="0 0 24 54"><g stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"><path d="M8 6v42M20 27H8.3"></path></g></svg>',Ne='<svg viewBox="0 0 24 54"><g stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"><path d="M8 6v21M20 27H8.3"></path></g></svg>',Ae={searchBar:"searchBar_RVTs",dropdownMenu:"dropdownMenu_qbY6",searchBarLeft:"searchBarLeft_MXDe",suggestion:"suggestion_fB_2",cursor:"cursor_eG29",hitTree:"hitTree_kk6K",hitIcon:"hitIcon_a7Zy",hitPath:"hitPath_ieM4",noResultsIcon:"noResultsIcon_EBY5",hitFooter:"hitFooter_E9YW",hitWrapper:"hitWrapper_sAK8",hitTitle:"hitTitle_vyVt",hitAction:"hitAction_NqkB",hideAction:"hideAction_vcyE",noResults:"noResults_l6Q3",searchBarContainer:"searchBarContainer_NW3z",searchBarLoadingRing:"searchBarLoadingRing_YnHq",searchClearButton:"searchClearButton_qk4g",searchIndexLoading:"searchIndexLoading_EJ1f",searchHintContainer:"searchHintContainer_Pkmr",searchHint:"searchHint_iIMx",focused:"focused_OWtg",input:"input_FOTf",hint:"hint_URu1",suggestions:"suggestions_X8XU",dataset:"dataset_QiCy",empty:"empty_eITn"};function Pe(e){let{document:t,type:n,page:r,metadata:o,tokens:a,isInterOfTree:i,isLastOfTree:s}=e;const l=0===n,u=1===n,c=[];i?c.push(je):s&&c.push(Ne);const d=c.map((e=>`<span class="${Ae.hitTree}">${e}</span>`)),p=`<span class="${Ae.hitIcon}">${l?Ce:u?Te:_e}</span>`,f=[`<span class="${Ae.hitTitle}">${(0,Ee.o)(t.t,(0,xe.m)(o,"t"),a)}</span>`];if(!i&&!s&&me.H6){const e=r?(r.b??[]).concat(r.t).concat(t.s&&t.s!==r.t?t.s:[]):t.b;f.push(`<span class="${Ae.hitPath}">${(0,ke.e)(e??[])}</span>`)}else l||f.push(`<span class="${Ae.hitPath}">${(0,Se.C)(r.t||(t.u.startsWith("/docs/api-reference/")?"API Reference":""),a)}</span>`);const h=`<span class="${Ae.hitAction}">${Le}</span>`;return[...d,p,`<span class="${Ae.hitWrapper}">`,...f,"</span>",h].join("")}function Oe(){return`<span class="${Ae.noResults}"><span class="${Ae.noResultsIcon}">${Re}</span><span>${(0,l.I)({id:"theme.SearchBar.noResultsText",message:"No results"})}</span></span>`}var Ie=n(311);async function De(){const e=await Promise.all([n.e(443),n.e(525)]).then(n.t.bind(n,8443,23)),t=e.default;return t.noConflict?t.noConflict():e.noConflict&&e.noConflict(),t}const Fe="_highlight";const Me=function(e){let{handleSearchBarToggle:t}=e;const n=(0,z.Z)(),{siteConfig:{baseUrl:a}}=(0,le.Z)(),i=(0,be.gA)();let u=a;try{const{preferredVersion:e}=(0,ye.J)(i?.pluginId??me.gQ);e&&!e.isLast&&(u=e.path+"/")}catch(F){if(me.l9&&!(F instanceof N.i6))throw F}const d=(0,s.k6)(),p=(0,s.TH)(),f=(0,r.useRef)(null),h=(0,r.useRef)(new Map),g=(0,r.useRef)(!1),[m,y]=(0,r.useState)(!1),[b,v]=(0,r.useState)(!1),[w,k]=(0,r.useState)(""),x=(0,r.useRef)(null),S=(0,r.useRef)(""),[E,C]=(0,r.useState)("");(0,r.useEffect)((()=>{if(!Array.isArray(me.Kc))return;let e="";if(p.pathname.startsWith(u)){const t=p.pathname.substring(u.length),n=me.Kc.find((e=>t===e||t.startsWith(`${e}/`)));n&&(e=n)}S.current!==e&&(h.current.delete(e),S.current=e),C(e)}),[p.pathname,u]);const T=!!me.hG&&Array.isArray(me.Kc)&&""===E,_=(0,r.useCallback)((async()=>{if(T||h.current.get(E))return;h.current.set(E,"loading"),x.current?.autocomplete.destroy(),y(!0);const[{wrappedIndexes:e,zhDictionary:t},n]=await Promise.all([(0,ve.w)(u,E),De()]);if(x.current=n(f.current,{hint:!1,autoselect:!0,openOnFocus:!0,cssClasses:{root:(0,o.Z)(Ae.searchBar,{[Ae.searchBarLeft]:"left"===me.pu}),noPrefix:!0,dropdownMenu:Ae.dropdownMenu,input:Ae.input,hint:Ae.hint,suggestions:Ae.suggestions,suggestion:Ae.suggestion,cursor:Ae.cursor,dataset:Ae.dataset,empty:Ae.empty}},[{source:(0,we.v)(e,t,me.qo),templates:{suggestion:Pe,empty:Oe,footer:e=>{let{query:t,isEmpty:n}=e;if(n&&!E)return;const r=(e=>{let{query:t,isEmpty:n}=e;const r=document.createElement("a"),o=new URLSearchParams,i=(0,l.I)({id:"theme.SearchBar.seeAll",message:"See all results"}),s=(0,l.I)({id:"theme.SearchBar.seeAllOutsideContext",message:"See results outside {context}"},{context:E}),c=(0,l.I)({id:"theme.SearchBar.searchInContext",message:"See all results in {context}"},{context:E});let p;if(o.set("q",t),p=E&&n?s:E?c:i,Array.isArray(me.Kc)&&!n&&o.set("ctx",E),u!==a){if(!u.startsWith(a))throw new Error(`Version url '${u}' does not start with base url '${a}', this is a bug of \`@easyops-cn/docusaurus-search-local\`, please report it.`);o.set("version",u.substring(a.length))}const f=`${a}search?${o.toString()}`;return r.href=f,r.textContent=p,r.addEventListener("click",(e=>{e.ctrlKey||e.metaKey||(e.preventDefault(),x.current?.autocomplete.close(),d.push(f))})),r})({query:t,isEmpty:n}),o=document.createElement("div");return o.className=Ae.hitFooter,o.appendChild(r),o}}}]).on("autocomplete:selected",(function(e,t){let{document:{u:n,h:r},tokens:o}=t;f.current?.blur();let a=n;if(me.vc&&o.length>0){const e=new URLSearchParams;for(const t of o)e.append(Fe,t);a+=`?${e.toString()}`}r&&(a+=r),d.push(a)})).on("autocomplete:closed",(()=>{f.current?.blur()})),h.current.set(E,"done"),y(!1),g.current){const e=f.current;e.value&&x.current?.autocomplete.open(),e.focus()}}),[T,E,u,a,d]);(0,r.useEffect)((()=>{if(!me.vc)return;const e=n?new URLSearchParams(p.search).getAll(Fe):[];setTimeout((()=>{const t=document.querySelector("article");if(!t)return;const n=new me.vc(t);n.unmark(),0!==e.length&&n.mark(e),k(e.join(" ")),x.current?.autocomplete.setVal(e.join(" "))}))}),[n,p.search,p.pathname]);const[L,R]=(0,r.useState)(!1),j=(0,r.useCallback)((()=>{g.current=!0,_(),R(!0),t?.(!0)}),[t,_]),A=(0,r.useCallback)((()=>{R(!1),t?.(!1)}),[t]),P=(0,r.useCallback)((()=>{_()}),[_]),O=(0,r.useCallback)((e=>{k(e.target.value),e.target.value&&v(!0)}),[]),I=!!n&&/mac/i.test(navigator.userAgentData?.platform??navigator.platform);(0,r.useEffect)((()=>{if(!me.AY)return;const e=e=>{!(I?e.metaKey:e.ctrlKey)||"k"!==e.key&&"K"!==e.key||(e.preventDefault(),f.current?.focus(),j())};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}}),[I,j]);const D=(0,r.useCallback)((()=>{const e=new URLSearchParams(p.search);e.delete(Fe);const t=e.toString(),n=p.pathname+(""!=t?`?${t}`:"")+p.hash;n!=p.pathname+p.search+p.hash&&d.push(n),k(""),x.current?.autocomplete.setVal("")}),[p.pathname,p.search,p.hash,d]);return(0,c.jsxs)("div",{className:(0,o.Z)("navbar__search",Ae.searchBarContainer,{[Ae.searchIndexLoading]:m&&b,[Ae.focused]:L}),hidden:T,children:[(0,c.jsx)("input",{placeholder:(0,l.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),"aria-label":"Search",className:"navbar__search-input",onMouseEnter:P,onFocus:j,onBlur:A,onChange:O,ref:f,value:w}),(0,c.jsx)(Ie.Z,{className:Ae.searchBarLoadingRing}),me.AY&&me.t_&&(""!==w?(0,c.jsx)("button",{className:Ae.searchClearButton,onClick:D,children:"\u2715"}):n&&(0,c.jsxs)("div",{className:Ae.searchHintContainer,children:[(0,c.jsx)("kbd",{className:Ae.searchHint,children:I?"\u2318":"ctrl"}),(0,c.jsx)("kbd",{className:Ae.searchHint,children:"K"})]}))]})},ze={navbarSearchContainer:"navbarSearchContainer_IP3a"};function Be(e){let{children:t,className:n}=e;return(0,c.jsx)("div",{className:(0,o.Z)(n,ze.navbarSearchContainer),children:t})}var $e=n(2802);const Ue=e=>e.docs.find((t=>t.id===e.mainDocId));const qe={default:ae,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,queryString:o="",...a}=e;const{i18n:{currentLocale:i,locales:u,localeConfigs:d}}=(0,le.Z)(),p=(0,fe.l)(),{search:f,hash:h}=(0,s.TH)(),g=[...n,...u.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${h}${o}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...r],m=t?(0,l.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return(0,c.jsx)(pe,{...a,mobile:t,label:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(he,{className:ge}),m]}),items:g})},search:function(e){let{mobile:t,className:n}=e;return t?null:(0,c.jsx)(Be,{className:n,children:(0,c.jsx)(Me,{})})},dropdown:pe,html:function(e){let{value:t,className:n,mobile:r=!1,isDropdownItem:a=!1}=e;const i=a?"li":"div";return(0,c.jsx)(i,{className:(0,o.Z)({navbar__item:!r&&!a,"menu__list-item":r},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:r,...o}=e;const{activeDoc:a}=(0,be.Iw)(r),i=(0,$e.vY)(t,r),s=a?.path===i?.path;return null===i||i.unlisted&&!s?null:(0,c.jsx)(ae,{exact:!0,...o,isActive:()=>s||!!a?.sidebar&&a.sidebar===i.sidebar,label:n??i.id,to:i.path})},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:r,...o}=e;const{activeDoc:a}=(0,be.Iw)(r),i=(0,$e.oz)(t,r).link;if(!i)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return(0,c.jsx)(ae,{exact:!0,...o,isActive:()=>a?.sidebar===t,label:n??i.label,to:i.path})},docsVersion:function(e){let{label:t,to:n,docsPluginId:r,...o}=e;const a=(0,$e.lO)(r)[0],i=t??a.label,s=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(a).path;return(0,c.jsx)(ae,{...o,label:i,to:s})},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:r,dropdownItemsBefore:o,dropdownItemsAfter:a,...i}=e;const{search:u,hash:d}=(0,s.TH)(),p=(0,be.Iw)(n),f=(0,be.gB)(n),{savePreferredVersionName:h}=(0,ye.J)(n),g=[...o,...f.map((e=>{const t=p.alternateDocVersions[e.name]??Ue(e);return{label:e.label,to:`${t.path}${u}${d}`,isActive:()=>e===p.activeVersion,onClick:()=>h(e.name)}})),...a],m=(0,$e.lO)(n)[0],y=t&&g.length>1?(0,l.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):m.label,b=t&&g.length>1?void 0:Ue(m).path;return g.length<=1?(0,c.jsx)(ae,{...i,mobile:t,label:y,to:b,isActive:r?()=>!1:void 0}):(0,c.jsx)(pe,{...i,mobile:t,label:y,to:b,items:g,isActive:r?()=>!1:void 0})}};function He(e){let{type:t,...n}=e;const r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=qe[r];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return(0,c.jsx)(o,{...n})}function Qe(){const e=(0,R.e)(),t=(0,w.L)().navbar.items;return(0,c.jsx)("ul",{className:"menu__list",children:t.map(((t,n)=>(0,r.createElement)(He,{mobile:!0,...t,onClick:()=>e.toggle(),key:n})))})}function Ze(e){return(0,c.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,c.jsx)(l.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function Ve(){const e=0===(0,w.L)().navbar.items.length,t=D();return(0,c.jsxs)(c.Fragment,{children:[!e&&(0,c.jsx)(Ze,{onClick:()=>t.hide()}),t.content]})}function We(){const e=(0,R.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?(0,c.jsx)(F,{header:(0,c.jsx)(K,{}),primaryMenu:(0,c.jsx)(Qe,{}),secondaryMenu:(0,c.jsx)(Ve,{})}):null}const Ge={navbarHideable:"navbarHideable_GXDz",navbarHidden:"navbarHidden_WAp3"};function Ke(e){return(0,c.jsx)("div",{role:"presentation",...e,className:(0,o.Z)("navbar-sidebar__backdrop",e.className)})}function Ye(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:a}}=(0,w.L)(),i=(0,R.e)(),{navbarRef:s,isNavbarVisible:d}=function(e){const[t,n]=(0,r.useState)(e),o=(0,r.useRef)(!1),a=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(a.current=e.getBoundingClientRect().height)}),[]);return(0,j.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i<a.current)return void n(!0);if(o.current)return void(o.current=!1);const s=r?.scrollY,l=document.documentElement.scrollHeight-a.current,u=window.innerHeight;s&&i>=s?n(!1):i+u<l&&n(!0)})),(0,u.S)((t=>{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return o.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return(0,c.jsxs)("nav",{ref:s,"aria-label":(0,l.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,o.Z)("navbar","navbar--fixed-top",n&&[Ge.navbarHideable,!d&&Ge.navbarHidden],{"navbar--dark":"dark"===a,"navbar--primary":"primary"===a,"navbar-sidebar--show":i.shown}),children:[t,(0,c.jsx)(Ke,{onClick:i.toggle}),(0,c.jsx)(We,{})]})}var Xe=n(8780);const Je={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};function et(e){return(0,c.jsx)("button",{type:"button",...e,children:(0,c.jsx)(l.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function tt(e){let{error:t}=e;const n=(0,Xe.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,c.jsx)("p",{className:Je.errorBoundaryError,children:n})}class nt extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const rt="right";function ot(e){let{width:t=30,height:n=30,className:r,...o}=e;return(0,c.jsx)("svg",{className:r,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true",...o,children:(0,c.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function at(){const{toggle:e,shown:t}=(0,R.e)();return(0,c.jsx)("button",{onClick:e,"aria-label":(0,l.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button",children:(0,c.jsx)(ot,{})})}const it={colorModeToggle:"colorModeToggle_GwZs"};function st(e){let{items:t}=e;return(0,c.jsx)(c.Fragment,{children:t.map(((e,t)=>(0,c.jsx)(nt,{onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t}),children:(0,c.jsx)(He,{...e})},t)))})}function lt(e){let{left:t,right:n}=e;return(0,c.jsxs)("div",{className:"navbar__inner",children:[(0,c.jsx)("div",{className:"navbar__items",children:t}),(0,c.jsx)("div",{className:"navbar__items navbar__items--right",children:n})]})}function ut(){const e=(0,R.e)(),t=(0,w.L)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??rt)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return(0,c.jsx)(lt,{left:(0,c.jsxs)(c.Fragment,{children:[!e.disabled&&(0,c.jsx)(at,{}),(0,c.jsx)(W,{}),(0,c.jsx)(st,{items:n})]}),right:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(st,{items:r}),(0,c.jsx)(Z,{className:it.colorModeToggle}),!o&&(0,c.jsx)(Be,{children:(0,c.jsx)(Me,{})})]})})}function ct(){return(0,c.jsx)(Ye,{children:(0,c.jsx)(ut,{})})}function dt(e){let{item:t}=e;const{to:n,href:r,label:o,prependBaseUrlToHref:a,...i}=t,s=(0,X.Z)(n),l=(0,X.Z)(r,{forcePrependBaseUrl:!0});return(0,c.jsxs)(Y.Z,{className:"footer__link-item",...r?{href:a?l:r}:{to:s},...i,children:[o,r&&!(0,J.Z)(r)&&(0,c.jsx)(te.Z,{})]})}function pt(e){let{item:t}=e;return t.html?(0,c.jsx)("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):(0,c.jsx)("li",{className:"footer__item",children:(0,c.jsx)(dt,{item:t})},t.href??t.to)}function ft(e){let{column:t}=e;return(0,c.jsxs)("div",{className:"col footer__col",children:[(0,c.jsx)("div",{className:"footer__title",children:t.title}),(0,c.jsx)("ul",{className:"footer__items clean-list",children:t.items.map(((e,t)=>(0,c.jsx)(pt,{item:e},t)))})]})}function ht(e){let{columns:t}=e;return(0,c.jsx)("div",{className:"row footer__links",children:t.map(((e,t)=>(0,c.jsx)(ft,{column:e},t)))})}function gt(){return(0,c.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function mt(e){let{item:t}=e;return t.html?(0,c.jsx)("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):(0,c.jsx)(dt,{item:t})}function yt(e){let{links:t}=e;return(0,c.jsx)("div",{className:"footer__links text--center",children:(0,c.jsx)("div",{className:"footer__links",children:t.map(((e,n)=>(0,c.jsxs)(r.Fragment,{children:[(0,c.jsx)(mt,{item:e}),t.length!==n+1&&(0,c.jsx)(gt,{})]},n)))})})}function bt(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?(0,c.jsx)(ht,{columns:t}):(0,c.jsx)(yt,{links:t})}var vt=n(7030);const wt={footerLogoLink:"footerLogoLink_uIzf"};function kt(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.C)(),r={light:n(t.src),dark:n(t.srcDark??t.src)};return(0,c.jsx)(vt.Z,{className:(0,o.Z)("footer__logo",t.className),alt:t.alt,sources:r,width:t.width,height:t.height,style:t.style})}function xt(e){let{logo:t}=e;return t.href?(0,c.jsx)(Y.Z,{href:t.href,className:wt.footerLogoLink,target:t.target,children:(0,c.jsx)(kt,{logo:t})}):(0,c.jsx)(kt,{logo:t})}function St(e){let{copyright:t}=e;return(0,c.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function Et(e){let{style:t,links:n,logo:r,copyright:a}=e;return(0,c.jsx)("footer",{className:(0,o.Z)("footer",{"footer--dark":"dark"===t}),children:(0,c.jsxs)("div",{className:"container container-fluid",children:[n,(r||a)&&(0,c.jsxs)("div",{className:"footer__bottom text--center",children:[r&&(0,c.jsx)("div",{className:"margin-bottom--sm",children:r}),a]})]})})}function Ct(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:r,style:o}=e;return(0,c.jsx)(Et,{style:o,links:n&&n.length>0&&(0,c.jsx)(bt,{links:n}),logo:r&&(0,c.jsx)(xt,{logo:r}),copyright:t&&(0,c.jsx)(St,{copyright:t})})}const Tt=r.memo(Ct),_t=(0,N.Qc)([M.S,k.pl,j.OC,ye.L5,i.VC,function(e){let{children:t}=e;return(0,c.jsx)(A.n2,{children:(0,c.jsx)(R.M,{children:(0,c.jsx)(O,{children:t})})})}]);function Lt(e){let{children:t}=e;return(0,c.jsx)(_t,{children:t})}var Rt=n(2757);function jt(e){let{error:t,tryAgain:n}=e;return(0,c.jsx)("main",{className:"container margin-vert--xl",children:(0,c.jsx)("div",{className:"row",children:(0,c.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,c.jsx)(Rt.Z,{as:"h1",className:"hero__title",children:(0,c.jsx)(l.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,c.jsx)("div",{className:"margin-vert--lg",children:(0,c.jsx)(et,{onClick:n,className:"button button--primary shadow--lw"})}),(0,c.jsx)("hr",{}),(0,c.jsx)("div",{className:"margin-vert--md",children:(0,c.jsx)(tt,{error:t})})]})})})}const Nt={mainWrapper:"mainWrapper_IbdI"};function At(e){const{children:t,noFooter:n,wrapperClassName:r,title:s,description:l}=e;return(0,y.t)(),(0,c.jsxs)(Lt,{children:[(0,c.jsx)(i.d,{title:s,description:l}),(0,c.jsx)(v,{}),(0,c.jsx)(L,{}),(0,c.jsx)(ct,{}),(0,c.jsx)("div",{id:d,className:(0,o.Z)(m.k.wrapper.main,Nt.mainWrapper,r),children:(0,c.jsx)(a.Z,{fallback:e=>(0,c.jsx)(jt,{...e}),children:t})}),!n&&(0,c.jsx)(Tt,{})]})}},5012:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});n(7294);var r=n(9960),o=n(4996),a=n(2263),i=n(6668),s=n(7030),l=n(5893);function u(e){let{logo:t,alt:n,imageClassName:r}=e;const a={light:(0,o.Z)(t.src),dark:(0,o.Z)(t.srcDark||t.src)},i=(0,l.jsx)(s.Z,{className:t.className,sources:a,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,l.jsx)("div",{className:r,children:i}):i}function c(e){const{siteConfig:{title:t}}=(0,a.Z)(),{navbar:{title:n,logo:s}}=(0,i.L)(),{imageClassName:c,titleClassName:d,...p}=e,f=(0,o.Z)(s?.href||"/"),h=n?"":t,g=s?.alt??h;return(0,l.jsxs)(r.Z,{to:f,...p,...s?.target&&{target:s.target},children:[s&&(0,l.jsx)(u,{logo:s,alt:g,imageClassName:c}),null!=n&&(0,l.jsx)("b",{className:d,children:n})]})}},3510:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});n(7294);var r=n(5742),o=n(5893);function a(e){let{locale:t,version:n,tag:a}=e;const i=t;return(0,o.jsxs)(r.Z,{children:[t&&(0,o.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,o.jsx)("meta",{name:"docusaurus_version",content:n}),a&&(0,o.jsx)("meta",{name:"docusaurus_tag",content:a}),i&&(0,o.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,o.jsx)("meta",{name:"docsearch:version",content:n}),a&&(0,o.jsx)("meta",{name:"docsearch:docusaurus_tag",content:a})]})}},7030:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7294),o=n(6010),a=n(2389),i=n(2949);const s={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var l=n(5893);function u(e){let{className:t,children:n}=e;const u=(0,a.Z)(),{colorMode:c}=(0,i.I)();return(0,l.jsx)(l.Fragment,{children:(u?"dark"===c?["dark"]:["light"]:["light","dark"]).map((e=>{const a=n({theme:e,className:(0,o.Z)(t,s.themedComponent,s[`themedComponent--${e}`])});return(0,l.jsx)(r.Fragment,{children:a},e)}))})}function c(e){const{sources:t,className:n,alt:r,...o}=e;return(0,l.jsx)(u,{className:n,children:e=>{let{theme:n,className:a}=e;return(0,l.jsx)("img",{src:t[n],alt:r,className:a,...o})}})}},6043:(e,t,n)=>{"use strict";n.d(t,{u:()=>u,z:()=>y});var r=n(7294),o=n(412),a=n(469),i=n(1442),s=n(5893);const l="ease-in-out";function u(e){let{initialState:t}=e;const[n,o]=(0,r.useState)(t??!1),a=(0,r.useCallback)((()=>{o((e=>!e))}),[]);return{collapsed:n,setCollapsed:o,toggleCollapsed:a}}const c={display:"none",overflow:"hidden",height:"0px"},d={display:"block",overflow:"visible",height:"auto"};function p(e,t){const n=t?c:d;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f(e){let{collapsibleRef:t,collapsed:n,animation:o}=e;const a=(0,r.useRef)(!1);(0,r.useEffect)((()=>{const e=t.current;function r(){const t=e.scrollHeight,n=o?.duration??function(e){if((0,i.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${o?.easing??l}`,height:`${t}px`}}function s(){const t=r();e.style.transition=t.transition,e.style.height=t.height}if(!a.current)return p(e,n),void(a.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(s(),requestAnimationFrame((()=>{e.style.height=c.height,e.style.overflow=c.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{s()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,o])}function h(e){if(!o.Z.canUseDOM)return e?c:d}function g(e){let{as:t="div",collapsed:n,children:o,animation:a,onCollapseTransitionEnd:i,className:l,disableSSRStyle:u}=e;const c=(0,r.useRef)(null);return f({collapsibleRef:c,collapsed:n,animation:a}),(0,s.jsx)(t,{ref:c,style:u?void 0:h(n),onTransitionEnd:e=>{"height"===e.propertyName&&(p(c.current,n),i?.(n))},className:l,children:o})}function m(e){let{collapsed:t,...n}=e;const[o,i]=(0,r.useState)(!t),[l,u]=(0,r.useState)(t);return(0,a.Z)((()=>{t||i(!0)}),[t]),(0,a.Z)((()=>{o&&u(t)}),[o,t]),o?(0,s.jsx)(g,{...n,collapsed:l}):null}function y(e){let{lazy:t,...n}=e;const r=t?m:g;return(0,s.jsx)(r,{...n})}},9689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>g,pl:()=>h});var r=n(7294),o=n(2389),a=n(12),i=n(902),s=n(6668),l=n(5893);const u=(0,a.WA)("docusaurus.announcement.dismiss"),c=(0,a.WA)("docusaurus.announcement.id"),d=()=>"true"===u.get(),p=e=>u.set(String(e)),f=r.createContext(null);function h(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,s.L)(),t=(0,o.Z)(),[n,a]=(0,r.useState)((()=>!!t&&d()));(0,r.useEffect)((()=>{a(d())}),[]);const i=(0,r.useCallback)((()=>{p(!0),a(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=c.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;c.set(t),r&&p(!1),!r&&d()||a(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return(0,l.jsx)(f.Provider,{value:n,children:t})}function g(){const e=(0,r.useContext)(f);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},2949:(e,t,n)=>{"use strict";n.d(t,{I:()=>y,S:()=>m});var r=n(7294),o=n(412),a=n(902),i=n(12),s=n(6668),l=n(5893);const u=r.createContext(void 0),c="theme",d=(0,i.WA)(c),p={light:"light",dark:"dark"},f=e=>e===p.dark?p.dark:p.light,h=e=>o.Z.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),g=e=>{d.set(f(e))};function m(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,s.L)(),[o,a]=(0,r.useState)(h(e));(0,r.useEffect)((()=>{t&&d.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:o=!0}=r;t?(a(t),o&&g(t)):(a(n?window.matchMedia("(prefers-color-scheme: dark)").matches?p.dark:p.light:e),d.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(o))}),[o]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==c)return;const t=d.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const l=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||l.current?l.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:o,setColorMode:i,get isDarkTheme(){return o===p.dark},setLightTheme(){i(p.light)},setDarkTheme(){i(p.dark)}})),[o,i])}();return(0,l.jsx)(u.Provider,{value:n,children:t})}function y(){const e=(0,r.useContext)(u);if(null==e)throw new a.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},373:(e,t,n)=>{"use strict";n.d(t,{J:()=>v,L5:()=>y});var r=n(7294),o=n(143),a=n(9935),i=n(6668),s=n(2802),l=n(902),u=n(12),c=n(5893);const d=e=>`docs-preferred-version-${e}`,p={save:(e,t,n)=>{(0,u.WA)(d(e),{persistence:t}).set(n)},read:(e,t)=>(0,u.WA)(d(e),{persistence:t}).get(),clear:(e,t)=>{(0,u.WA)(d(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const h=r.createContext(null);function g(){const e=(0,o._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[a,s]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{s(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function o(e){const t=p.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(p.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,o(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[a,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){p.save(e,t,n),s((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function m(e){let{children:t}=e;const n=g();return(0,c.jsx)(h.Provider,{value:n,children:t})}function y(e){let{children:t}=e;return s.cE?(0,c.jsx)(m,{children:t}):(0,c.jsx)(c.Fragment,{children:t})}function b(){const e=(0,r.useContext)(h);if(!e)throw new l.i6("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=a.m);const t=(0,o.zh)(e),[n,i]=b(),{preferredVersionName:s}=n[e];return{preferredVersion:t.versions.find((e=>e.name===s))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>u,b:()=>l});var r=n(7294),o=n(902),a=n(5893);const i=Symbol("EmptyContext"),s=r.createContext(i);function l(e){let{children:t,name:n,items:o}=e;const i=(0,r.useMemo)((()=>n&&o?{name:n,items:o}:null),[n,o]);return(0,a.jsx)(s.Provider,{value:i,children:t})}function u(){const e=(0,r.useContext)(s);if(e===i)throw new o.i6("DocsSidebarProvider");return e}},4477:(e,t,n)=>{"use strict";n.d(t,{E:()=>l,q:()=>s});var r=n(7294),o=n(902),a=n(5893);const i=r.createContext(null);function s(e){let{children:t,version:n}=e;return(0,a.jsx)(i.Provider,{value:n,children:t})}function l(){const e=(0,r.useContext)(i);if(null===e)throw new o.i6("DocsVersionProvider");return e}},2961:(e,t,n)=>{"use strict";n.d(t,{M:()=>f,e:()=>h});var r=n(7294),o=n(3102),a=n(7524),i=n(6550),s=n(902);function l(e){!function(e){const t=(0,i.k6)(),n=(0,s.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}var u=n(6668),c=n(5893);const d=r.createContext(void 0);function p(){const e=function(){const e=(0,o.HY)(),{items:t}=(0,u.L)().navbar;return 0===t.length&&!e.component}(),t=(0,a.i)(),n=!e&&"mobile"===t,[i,s]=(0,r.useState)(!1);l((()=>{if(i)return s(!1),!1}));const c=(0,r.useCallback)((()=>{s((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&s(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:i})),[e,n,c,i])}function f(e){let{children:t}=e;const n=p();return(0,c.jsx)(d.Provider,{value:n,children:t})}function h(){const e=r.useContext(d);if(void 0===e)throw new s.i6("NavbarMobileSidebarProvider");return e}},3102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>l,Zo:()=>u,n2:()=>s});var r=n(7294),o=n(902),a=n(5893);const i=r.createContext(null);function s(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return(0,a.jsx)(i.Provider,{value:n,children:t})}function l(){const e=(0,r.useContext)(i);if(!e)throw new o.i6("NavbarSecondaryMenuContentProvider");return e[0]}function u(e){let{component:t,props:n}=e;const a=(0,r.useContext)(i);if(!a)throw new o.i6("NavbarSecondaryMenuContentProvider");const[,s]=a,l=(0,o.Ql)(n);return(0,r.useEffect)((()=>{s({component:t,props:l})}),[s,t,l]),(0,r.useEffect)((()=>()=>s({component:null,props:null})),[s]),null}},9727:(e,t,n)=>{"use strict";n.d(t,{h:()=>o,t:()=>a});var r=n(7294);const o="navigation-with-keyboard";function a(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(o),"mousedown"===e.type&&document.body.classList.remove(o)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(o),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},7524:(e,t,n)=>{"use strict";n.d(t,{i:()=>s});var r=n(7294),o=n(412);const a={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function s(){const[e,t]=(0,r.useState)((()=>"ssr"));return(0,r.useEffect)((()=>{function e(){t(function(){if(!o.Z.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>i?a.desktop:a.mobile}())}return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[]),e}},5281:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},1442:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>r})},2802:(e,t,n)=>{"use strict";n.d(t,{LM:()=>f,_F:()=>m,cE:()=>p,SN:()=>E,lO:()=>k,vY:()=>S,oz:()=>x,s1:()=>w,f:()=>b});var r=n(7294),o=n(6550),a=n(8790),i=n(143),s=n(373),l=n(4477),u=n(1116);function c(e){return Array.from(new Set(e))}var d=n(8596);const p=!!i._r;function f(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=f(t);if(e)return e}}(e):void 0:e.href}const h=(e,t)=>void 0!==e&&(0,d.Mg)(e,t),g=(e,t)=>e.some((e=>m(e,t)));function m(e,t){return"link"===e.type?h(e.href,t):"category"===e.type&&(h(e.href,t)||g(e.items,t))}function y(e,t){switch(e.type){case"category":return m(e,t)||e.items.some((e=>y(e,t)));case"link":return!e.unlisted||m(e,t);default:return!1}}function b(e,t){return(0,r.useMemo)((()=>e.filter((e=>y(e,t)))),[e,t])}function v(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const o=[];return function e(t){for(const a of t)if("category"===a.type&&((0,d.Mg)(a.href,n)||e(a.items))||"link"===a.type&&(0,d.Mg)(a.href,n)){return r&&"category"!==a.type||o.unshift(a),!0}return!1}(t),o}function w(){const e=(0,u.V)(),{pathname:t}=(0,o.TH)(),n=(0,i.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?v({sidebarItems:e.items,pathname:t}):null}function k(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,s.J)(e),o=(0,i.yW)(e);return(0,r.useMemo)((()=>c([t,n,o].filter(Boolean))),[t,n,o])}function x(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function S(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${c(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function E(e){let{route:t}=e;const n=(0,o.TH)(),r=(0,l.E)(),i=t.routes,s=i.find((e=>(0,o.LX)(n.pathname,e)));if(!s)return null;const u=s.sidebar,c=u?r.docsSidebars[u]:void 0;return{docElement:(0,a.H)(i),sidebarName:u,sidebarItems:c}}},1944:(e,t,n)=>{"use strict";n.d(t,{FG:()=>f,d:()=>d,VC:()=>h});var r=n(7294),o=n(6010),a=n(5742),i=n(226);function s(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var l=n(4996),u=n(2263);var c=n(5893);function d(e){let{title:t,description:n,keywords:r,image:o,children:i}=e;const s=function(e){const{siteConfig:t}=(0,u.Z)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,l.C)(),p=o?d(o,{absolute:!0}):void 0;return(0,c.jsxs)(a.Z,{children:[t&&(0,c.jsx)("title",{children:s}),t&&(0,c.jsx)("meta",{property:"og:title",content:s}),n&&(0,c.jsx)("meta",{name:"description",content:n}),n&&(0,c.jsx)("meta",{property:"og:description",content:n}),r&&(0,c.jsx)("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),p&&(0,c.jsx)("meta",{property:"og:image",content:p}),p&&(0,c.jsx)("meta",{name:"twitter:image",content:p}),i]})}const p=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(p),s=(0,o.Z)(i,t);return(0,c.jsxs)(p.Provider,{value:s,children:[(0,c.jsx)(a.Z,{children:(0,c.jsx)("html",{className:s})}),n]})}function h(e){let{children:t}=e;const n=s(),r=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const a=`plugin-id-${n.plugin.id}`;return(0,c.jsx)(f,{className:(0,o.Z)(r,a),children:t})}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>s,Qc:()=>c,Ql:()=>u,i6:()=>l,zX:()=>i});var r=n(7294),o=n(469),a=n(5893);function i(e){const t=(0,r.useRef)(e);return(0,o.Z)((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function s(e){const t=(0,r.useRef)();return(0,o.Z)((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?<name>\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function u(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function c(e){return t=>{let{children:n}=t;return(0,a.jsx)(a.Fragment,{children:e.reduceRight(((e,t)=>(0,a.jsx)(t,{children:e})),n)})}}},8596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>s});var r=n(7294),o=n(723),a=n(2263);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function s(){const{baseUrl:e}=(0,a.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function o(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(o).flatMap((e=>e.routes??[])))}(n)}({routes:o.Z,baseUrl:e})),[e])}},2466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>f,OC:()=>u,RF:()=>p});var r=n(7294),o=n(412),a=n(2389),i=(n(469),n(902)),s=n(5893);const l=r.createContext(void 0);function u(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return(0,s.jsx)(l.Provider,{value:n,children:t})}function c(){const e=(0,r.useContext)(l);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const d=()=>o.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function p(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=c(),o=(0,r.useRef)(d()),a=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=d();a(e,o.current),o.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[a,n,...t])}function f(){const e=(0,r.useRef)(null),t=(0,a.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const o=document.documentElement.scrollTop;(n&&o>e||!n&&o<e)&&(t=requestAnimationFrame(r),window.scrollTo(0,Math.floor(.85*(o-e))+e))}(),()=>t&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},3320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>r,os:()=>o});n(2263);const r="default";function o(e,t){return`docs-${e}-${t}`}},12:(e,t,n)=>{"use strict";n.d(t,{WA:()=>l});n(7294);const r="localStorage";function o(e){let{key:t,oldValue:n,newValue:r,storage:o}=e;if(n===r)return;const a=document.createEvent("StorageEvent");a.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,o),window.dispatchEvent(a)}function a(e){if(void 0===e&&(e=r),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,i||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),i=!0),null}var t}let i=!1;const s={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function l(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=a(t?.persistence);return null===n?s:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),o({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),o({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}},4711:(e,t,n)=>{"use strict";n.d(t,{l:()=>i});var r=n(2263),o=n(6550),a=n(8780);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:s}}=(0,r.Z)(),{pathname:l}=(0,o.TH)(),u=(0,a.applyTrailingSlash)(l,{trailingSlash:n,baseUrl:e}),c=s===i?e:e.replace(`/${s}/`,"/"),d=u.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${c}`:`${c}${e}/`}(n)}${d}`}}}},5936:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(7294),o=n(6550),a=n(902);function i(e){const t=(0,o.TH)(),n=(0,a.D9)(t),i=(0,a.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6668:(e,t,n)=>{"use strict";n.d(t,{L:()=>o});var r=n(2263);function o(){return(0,r.Z)().siteConfig.themeConfig}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[o]=e.split(/[#?]/),a="/"===o||o===r?o:(i=o,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(o,a)}},4143:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},8780:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var o=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(o).default}});var a=n(4143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return a.getErrorCausalChain}})},311:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});n(7294);var r=n(6010);const o={loadingRing:"loadingRing_RJI3","loading-ring":"loading-ring_FB5o"};var a=n(5893);function i(e){let{className:t}=e;return(0,a.jsxs)("div",{className:(0,r.Z)(o.loadingRing,t),children:[(0,a.jsx)("div",{}),(0,a.jsx)("div",{}),(0,a.jsx)("div",{}),(0,a.jsx)("div",{})]})}},22:(e,t,n)=>{"use strict";n.d(t,{w:()=>s});var r=n(1336),o=n.n(r),a=n(1029);const i=new Map;function s(e,t){const n=`${e}${t}`;let r=i.get(n);return r||(r=async function(e,t){{const n=`${e}${a.J.replace("{dir}",t?`-${t.replace(/\//g,"-")}`:"")}`;if(new URL(n,location.origin).origin!==location.origin)throw new Error("Unexpected version url");const r=await(await fetch(n)).json(),i=r.map(((e,t)=>{let{documents:n,index:r}=e;return{type:t,documents:n,index:o().Index.load(r)}})),s=r.reduce(((e,t)=>{for(const n of t.index.invertedIndex)/\p{Unified_Ideograph}/u.test(n[0][0])&&e.add(n[0]);return e}),new Set);return{wrappedIndexes:i,zhDictionary:Array.from(s)}}return{wrappedIndexes:[],zhDictionary:[]}}(e,t),i.set(n,r)),r}},8202:(e,t,n)=>{"use strict";n.d(t,{v:()=>l});var r=n(1336),o=n.n(r);var a=n(1029);function i(e){return s(e).concat(s(e.filter((e=>{const t=e[e.length-1];return!t.trailing&&t.maybeTyping})),!0))}function s(e,t){return e.map((e=>({tokens:e.map((e=>e.value)),term:e.map((e=>({value:e.value,presence:o().Query.presence.REQUIRED,wildcard:(t?e.trailing||e.maybeTyping:e.trailing)?o().Query.wildcard.TRAILING:o().Query.wildcard.NONE})))})))}function l(e,t,n){return function(r,s){const l=function(e,t){if(1===t.length&&["ja","jp","th"].includes(t[0]))return o()[t[0]].tokenizer(e).map((e=>e.toString()));let n=/[^-\s]+/g;return t.includes("zh")&&(n=/\w+|\p{Unified_Ideograph}+/gu),e.toLowerCase().match(n)||[]}(r,a.dK);if(0===l.length)return void s([]);const u=function(e,t){const n=function(e,t){const n=[];return function e(r,o){if(0===r.length)return void n.push(o);const a=r[0];if(/\p{Unified_Ideograph}/u.test(a)){const n=function(e,t){const n=[];return function e(r,o){let a=0,i=!1;for(const s of t)if(r.substr(0,s.length)===s){const t={missed:o.missed,term:o.term.concat({value:s})};r.length>s.length?e(r.substr(s.length),t):n.push(t),i=!0}else for(let t=s.length-1;t>a;t-=1){const l=s.substr(0,t);if(r.substr(0,t)===l){a=t;const s={missed:o.missed,term:o.term.concat({value:l,trailing:!0})};r.length>t?e(r.substr(t),s):n.push(s),i=!0;break}}i||(r.length>0?e(r.substr(1),{missed:o.missed+1,term:o.term}):o.term.length>0&&n.push(o))}(e,{missed:0,term:[]}),n.sort(((e,t)=>{const n=e.missed>0?1:0,r=t.missed>0?1:0;return n!==r?n-r:e.term.length-t.term.length})).map((e=>e.term))}(a,t);for(const t of n){const n=o.concat(...t);e(r.slice(1),n)}}else{const t=o.concat({value:a});e(r.slice(1),t)}}(e,[]),n}(e,t);if(0===n.length)return[{tokens:e,term:e.map((e=>({value:e,presence:o().Query.presence.REQUIRED,wildcard:o().Query.wildcard.LEADING|o().Query.wildcard.TRAILING})))}];for(const o of n)o[o.length-1].maybeTyping=!0;const r=[];for(const i of a.dK)if("en"===i)a._k||r.unshift(o().stopWordFilter);else{const e=o()[i];e.stopWordFilter&&r.unshift(e.stopWordFilter)}let s;if(r.length>0){const e=e=>r.reduce(((e,t)=>e.filter((e=>t(e.value)))),e);s=[];const t=[];for(const r of n){const n=e(r);s.push(n),n.length<r.length&&n.length>0&&t.push(n)}n.push(...t)}else s=n.slice();const l=[];for(const o of s)if(o.length>2)for(let e=o.length-1;e>=0;e-=1)l.push(o.slice(0,e).concat(o.slice(e+1)));return i(n).concat(i(l))}(l,t),c=[];e:for(const{term:t,tokens:o}of u)for(const{documents:r,index:a,type:i}of e)if(c.push(...a.query((e=>{for(const n of t)e.term(n.value,{wildcard:n.wildcard,presence:n.presence})})).slice(0,n).filter((e=>!c.some((t=>t.document.i.toString()===e.ref)))).slice(0,n-c.length).map((t=>{const n=r.find((e=>e.i.toString()===t.ref));return{document:n,type:i,page:0!==i&&e[0].documents.find((e=>e.i===n.p)),metadata:t.matchData.metadata,tokens:o,score:t.score}}))),c.length>=n)break e;!function(e){e.forEach(((e,t)=>{e.index=t})),e.sort(((t,n)=>{let r=t.type>0&&t.page?e.findIndex((e=>e.document===t.page)):t.index,o=n.type>0&&n.page?e.findIndex((e=>e.document===n.page)):n.index;return-1===r&&(r=t.index),-1===o&&(o=n.index),r===o?0===t.type?-1:0===n.type?1:t.index-n.index:r-o}))}(c),function(e){e.forEach(((t,n)=>{n>0&&t.page&&e.some((e=>e.document===t.page))&&(n<e.length-1&&e[n+1].page===t.page?t.isInterOfTree=!0:t.isLastOfTree=!0)}))}(c),s(c)}}},3926:(e,t,n)=>{"use strict";function r(e){return e.join(" \u203a ")}n.d(t,{e:()=>r})},1690:(e,t,n)=>{"use strict";function r(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}n.d(t,{X:()=>r})},1073:(e,t,n)=>{"use strict";function r(e,t){const n=[];for(const r of Object.values(e))r[t]&&n.push(...r[t].position);return n.sort(((e,t)=>e[0]-t[0]||t[1]-e[1]))}n.d(t,{m:()=>r})},2539:(e,t,n)=>{"use strict";n.d(t,{C:()=>o});var r=n(1690);function o(e,t,n){const a=[];for(const i of t){const n=e.toLowerCase().indexOf(i);if(n>=0){n>0&&a.push(o(e.substr(0,n),t)),a.push(`<mark>${(0,r.X)(e.substr(n,i.length))}</mark>`);const s=n+i.length;s<e.length&&a.push(o(e.substr(s),t));break}}return 0===a.length?n?`<mark>${(0,r.X)(e)}</mark>`:(0,r.X)(e):a.join("")}},726:(e,t,n)=>{"use strict";n.d(t,{o:()=>l});var r=n(1690),o=n(2539);const a=/\w+|\p{Unified_Ideograph}/u;function i(e){const t=[];let n=0,r=e;for(;r.length>0;){const o=r.match(a);if(!o){t.push(r);break}o.index>0&&t.push(r.substring(0,o.index)),t.push(o[0]),n+=o.index+o[0].length,r=e.substring(n)}return t}var s=n(1029);function l(e,t,n,a){void 0===a&&(a=s.Hk);const{chunkIndex:l,chunks:u}=function(e,t,n){const a=[];let s=0,l=0,u=-1;for(;s<t.length;){const[c,d]=t[s];if(s+=1,!(c<l)){if(c>l){const t=i(e.substring(l,c)).map((e=>({html:(0,r.X)(e),textLength:e.length})));for(const e of t)a.push(e)}-1===u&&(u=a.length),l=c+d,a.push({html:(0,o.C)(e.substring(c,l),n,!0),textLength:d})}}if(l<e.length){const t=i(e.substring(l)).map((e=>({html:(0,r.X)(e),textLength:e.length})));for(const e of t)a.push(e)}return{chunkIndex:u,chunks:a}}(e,t,n),c=u.slice(0,l),d=u[l],p=[d.html],f=u.slice(l+1);let h=d.textLength,g=0,m=0,y=!1,b=!1;for(;h<a;)if((g<=m||0===f.length)&&c.length>0){const e=c.pop();h+e.textLength<=a?(p.unshift(e.html),g+=e.textLength,h+=e.textLength):(y=!0,c.length=0)}else{if(!(f.length>0))break;{const e=f.shift();h+e.textLength<=a?(p.push(e.html),m+=e.textLength,h+=e.textLength):(b=!0,f.length=0)}}return(y||c.length>0)&&p.unshift("\u2026"),(b||f.length>0)&&p.push("\u2026"),p.join("")}},1029:(e,t,n)=>{"use strict";n.d(t,{vc:()=>o(),gQ:()=>h,H6:()=>c,hG:()=>y,l9:()=>g,dK:()=>a,_k:()=>i,pu:()=>f,AY:()=>d,t_:()=>p,Kc:()=>m,J:()=>s,Hk:()=>u,qo:()=>l,pQ:()=>b});n(1336);var r=n(813),o=n.n(r);const a=["en"],i=!1,s="search-index{dir}.json?_=b57f8136",l=8,u=50,c=!0,d=!0,p=!0,f="right",h=void 0,g=!0,m=null,y=!1,b=!1},6010:(e,t,n)=>{"use strict";function r(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=r(e[t]))&&(o&&(o+=" "),o+=n);else for(t in e)e[t]&&(o&&(o+=" "),o+=t);return o}n.d(t,{Z:()=>o});const o=function(){for(var e,t,n=0,o="";n<arguments.length;)(e=arguments[n++])&&(t=r(e))&&(o&&(o+=" "),o+=t);return o}},9318:(e,t,n)=>{"use strict";n.d(t,{lX:()=>w,q_:()=>T,ob:()=>f,PP:()=>L,Ep:()=>p});var r=n(7462);function o(e){return"/"===e.charAt(0)}function a(e,t){for(var n=t,r=n+1,o=e.length;r<o;n+=1,r+=1)e[n]=e[r];e.pop()}const i=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],i=t&&t.split("/")||[],s=e&&o(e),l=t&&o(t),u=s||l;if(e&&o(e)?i=r:r.length&&(i.pop(),i=i.concat(r)),!i.length)return"/";if(i.length){var c=i[i.length-1];n="."===c||".."===c||""===c}else n=!1;for(var d=0,p=i.length;p>=0;p--){var f=i[p];"."===f?a(i,p):".."===f?(a(i,p),d++):d&&(a(i,p),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&o(i[0])||i.unshift("");var h=i.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};var s=n(8776);function l(e){return"/"===e.charAt(0)?e:"/"+e}function u(e){return"/"===e.charAt(0)?e.substr(1):e}function c(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function f(e,t,n,o){var a;"string"==typeof e?(a=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var a=t.indexOf("?");return-1!==a&&(n=t.substr(a),t=t.substr(0,a)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),a.state=t):(void 0===(a=(0,r.Z)({},e)).pathname&&(a.pathname=""),a.search?"?"!==a.search.charAt(0)&&(a.search="?"+a.search):a.search="",a.hash?"#"!==a.hash.charAt(0)&&(a.hash="#"+a.hash):a.hash="",void 0!==t&&void 0===a.state&&(a.state=t));try{a.pathname=decodeURI(a.pathname)}catch(s){throw s instanceof URIError?new URIError('Pathname "'+a.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):s}return n&&(a.key=n),o?a.pathname?"/"!==a.pathname.charAt(0)&&(a.pathname=i(a.pathname,o.pathname)):a.pathname=o.pathname:a.pathname||(a.pathname="/"),a}function h(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var a="function"==typeof e?e(t,n):e;"string"==typeof a?"function"==typeof r?r(a,o):o(!0):o(!1!==a)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach((function(e){return e.apply(void 0,n)}))}}}var g=!("undefined"==typeof window||!window.document||!window.document.createElement);function m(e,t){t(window.confirm(e))}var y="popstate",b="hashchange";function v(){try{return window.history.state||{}}catch(e){return{}}}function w(e){void 0===e&&(e={}),g||(0,s.Z)(!1);var t,n=window.history,o=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,a=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e,u=i.forceRefresh,w=void 0!==u&&u,k=i.getUserConfirmation,x=void 0===k?m:k,S=i.keyLength,E=void 0===S?6:S,C=e.basename?d(l(e.basename)):"";function T(e){var t=e||{},n=t.key,r=t.state,o=window.location,a=o.pathname+o.search+o.hash;return C&&(a=c(a,C)),f(a,r,n)}function _(){return Math.random().toString(36).substr(2,E)}var L=h();function R(e){(0,r.Z)($,e),$.length=n.length,L.notifyListeners($.location,$.action)}function j(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||P(T(e.state))}function N(){P(T(v()))}var A=!1;function P(e){if(A)A=!1,R();else{L.confirmTransitionTo(e,"POP",x,(function(t){t?R({action:"POP",location:e}):function(e){var t=$.location,n=I.indexOf(t.key);-1===n&&(n=0);var r=I.indexOf(e.key);-1===r&&(r=0);var o=n-r;o&&(A=!0,F(o))}(e)}))}}var O=T(v()),I=[O.key];function D(e){return C+p(e)}function F(e){n.go(e)}var M=0;function z(e){1===(M+=e)&&1===e?(window.addEventListener(y,j),a&&window.addEventListener(b,N)):0===M&&(window.removeEventListener(y,j),a&&window.removeEventListener(b,N))}var B=!1;var $={length:n.length,action:"POP",location:O,createHref:D,push:function(e,t){var r="PUSH",a=f(e,t,_(),$.location);L.confirmTransitionTo(a,r,x,(function(e){if(e){var t=D(a),i=a.key,s=a.state;if(o)if(n.pushState({key:i,state:s},null,t),w)window.location.href=t;else{var l=I.indexOf($.location.key),u=I.slice(0,l+1);u.push(a.key),I=u,R({action:r,location:a})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",a=f(e,t,_(),$.location);L.confirmTransitionTo(a,r,x,(function(e){if(e){var t=D(a),i=a.key,s=a.state;if(o)if(n.replaceState({key:i,state:s},null,t),w)window.location.replace(t);else{var l=I.indexOf($.location.key);-1!==l&&(I[l]=a.key),R({action:r,location:a})}else window.location.replace(t)}}))},go:F,goBack:function(){F(-1)},goForward:function(){F(1)},block:function(e){void 0===e&&(e=!1);var t=L.setPrompt(e);return B||(z(1),B=!0),function(){return B&&(B=!1,z(-1)),t()}},listen:function(e){var t=L.appendListener(e);return z(1),function(){z(-1),t()}}};return $}var k="hashchange",x={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+u(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:u,decodePath:l},slash:{encodePath:l,decodePath:l}};function S(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function E(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function C(e){window.location.replace(S(window.location.href)+"#"+e)}function T(e){void 0===e&&(e={}),g||(0,s.Z)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),o=n.getUserConfirmation,a=void 0===o?m:o,i=n.hashType,u=void 0===i?"slash":i,y=e.basename?d(l(e.basename)):"",b=x[u],v=b.encodePath,w=b.decodePath;function T(){var e=w(E());return y&&(e=c(e,y)),f(e)}var _=h();function L(e){(0,r.Z)(B,e),B.length=t.length,_.notifyListeners(B.location,B.action)}var R=!1,j=null;function N(){var e,t,n=E(),r=v(n);if(n!==r)C(r);else{var o=T(),i=B.location;if(!R&&(t=o,(e=i).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(j===p(o))return;j=null,function(e){if(R)R=!1,L();else{var t="POP";_.confirmTransitionTo(e,t,a,(function(n){n?L({action:t,location:e}):function(e){var t=B.location,n=I.lastIndexOf(p(t));-1===n&&(n=0);var r=I.lastIndexOf(p(e));-1===r&&(r=0);var o=n-r;o&&(R=!0,D(o))}(e)}))}}(o)}}var A=E(),P=v(A);A!==P&&C(P);var O=T(),I=[p(O)];function D(e){t.go(e)}var F=0;function M(e){1===(F+=e)&&1===e?window.addEventListener(k,N):0===F&&window.removeEventListener(k,N)}var z=!1;var B={length:t.length,action:"POP",location:O,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=S(window.location.href)),n+"#"+v(y+p(e))},push:function(e,t){var n="PUSH",r=f(e,void 0,void 0,B.location);_.confirmTransitionTo(r,n,a,(function(e){if(e){var t=p(r),o=v(y+t);if(E()!==o){j=t,function(e){window.location.hash=e}(o);var a=I.lastIndexOf(p(B.location)),i=I.slice(0,a+1);i.push(t),I=i,L({action:n,location:r})}else L()}}))},replace:function(e,t){var n="REPLACE",r=f(e,void 0,void 0,B.location);_.confirmTransitionTo(r,n,a,(function(e){if(e){var t=p(r),o=v(y+t);E()!==o&&(j=t,C(o));var a=I.indexOf(p(B.location));-1!==a&&(I[a]=t),L({action:n,location:r})}}))},go:D,goBack:function(){D(-1)},goForward:function(){D(1)},block:function(e){void 0===e&&(e=!1);var t=_.setPrompt(e);return z||(M(1),z=!0),function(){return z&&(z=!1,M(-1)),t()}},listen:function(e){var t=_.appendListener(e);return M(1),function(){M(-1),t()}}};return B}function _(e,t,n){return Math.min(Math.max(e,t),n)}function L(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,o=t.initialEntries,a=void 0===o?["/"]:o,i=t.initialIndex,s=void 0===i?0:i,l=t.keyLength,u=void 0===l?6:l,c=h();function d(e){(0,r.Z)(w,e),w.length=w.entries.length,c.notifyListeners(w.location,w.action)}function g(){return Math.random().toString(36).substr(2,u)}var m=_(s,0,a.length-1),y=a.map((function(e){return f(e,void 0,"string"==typeof e?g():e.key||g())})),b=p;function v(e){var t=_(w.index+e,0,w.entries.length-1),r=w.entries[t];c.confirmTransitionTo(r,"POP",n,(function(e){e?d({action:"POP",location:r,index:t}):d()}))}var w={length:y.length,action:"POP",location:y[m],index:m,entries:y,createHref:b,push:function(e,t){var r="PUSH",o=f(e,t,g(),w.location);c.confirmTransitionTo(o,r,n,(function(e){if(e){var t=w.index+1,n=w.entries.slice(0);n.length>t?n.splice(t,n.length-t,o):n.push(o),d({action:r,location:o,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",o=f(e,t,g(),w.location);c.confirmTransitionTo(o,r,n,(function(e){e&&(w.entries[w.index]=o,d({action:r,location:o}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),c.setPrompt(e)},listen:function(e){return c.appendListener(e)}};return w}},8679:(e,t,n)=>{"use strict";var r=n(9864),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return r.isMemo(e)?i:s[e.$$typeof]||o}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(h){var o=f(n);o&&o!==h&&e(t,o,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var s=l(t),g=l(n),m=0;m<i.length;++m){var y=i[m];if(!(a[y]||r&&r[y]||g&&g[y]||s&&s[y])){var b=p(n,y);try{u(t,y,b)}catch(v){}}}}return t}},1143:e=>{"use strict";e.exports=function(e,t,n,r,o,a,i,s){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,o,a,i,s],c=0;(l=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw l.framesToPop=1,l}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},1336:(e,t,n)=>{var r,o;!function(){var a,i,s,l,u,c,d,p,f,h,g,m,y,b,v,w,k,x,S,E,C,T,_,L,R,j,N,A,P,O,I=function(e){var t=new I.Builder;return t.pipeline.add(I.trimmer,I.stopWordFilter,I.stemmer),t.searchPipeline.add(I.stemmer),e.call(t,t),t.build()};I.version="2.3.9",I.utils={},I.utils.warn=(a=this,function(e){a.console&&console.warn&&console.warn(e)}),I.utils.asString=function(e){return null==e?"":e.toString()},I.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),n=Object.keys(e),r=0;r<n.length;r++){var o=n[r],a=e[o];if(Array.isArray(a))t[o]=a.slice();else{if("string"!=typeof a&&"number"!=typeof a&&"boolean"!=typeof a)throw new TypeError("clone is not deep and does not support nested objects");t[o]=a}}return t},I.FieldRef=function(e,t,n){this.docRef=e,this.fieldName=t,this._stringValue=n},I.FieldRef.joiner="/",I.FieldRef.fromString=function(e){var t=e.indexOf(I.FieldRef.joiner);if(-1===t)throw"malformed field ref string";var n=e.slice(0,t),r=e.slice(t+1);return new I.FieldRef(r,n,e)},I.FieldRef.prototype.toString=function(){return null==this._stringValue&&(this._stringValue=this.fieldName+I.FieldRef.joiner+this.docRef),this._stringValue},I.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var t=0;t<this.length;t++)this.elements[e[t]]=!0}else this.length=0},I.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},I.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},I.Set.prototype.contains=function(e){return!!this.elements[e]},I.Set.prototype.intersect=function(e){var t,n,r,o=[];if(e===I.Set.complete)return this;if(e===I.Set.empty)return e;this.length<e.length?(t=this,n=e):(t=e,n=this),r=Object.keys(t.elements);for(var a=0;a<r.length;a++){var i=r[a];i in n.elements&&o.push(i)}return new I.Set(o)},I.Set.prototype.union=function(e){return e===I.Set.complete?I.Set.complete:e===I.Set.empty?this:new I.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},I.idf=function(e,t){var n=0;for(var r in e)"_index"!=r&&(n+=Object.keys(e[r]).length);var o=(t-n+.5)/(n+.5);return Math.log(1+Math.abs(o))},I.Token=function(e,t){this.str=e||"",this.metadata=t||{}},I.Token.prototype.toString=function(){return this.str},I.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},I.Token.prototype.clone=function(e){return e=e||function(e){return e},new I.Token(e(this.str,this.metadata),this.metadata)},I.tokenizer=function(e,t){if(null==e||null==e)return[];if(Array.isArray(e))return e.map((function(e){return new I.Token(I.utils.asString(e).toLowerCase(),I.utils.clone(t))}));for(var n=e.toString().toLowerCase(),r=n.length,o=[],a=0,i=0;a<=r;a++){var s=a-i;if(n.charAt(a).match(I.tokenizer.separator)||a==r){if(s>0){var l=I.utils.clone(t)||{};l.position=[i,s],l.index=o.length,o.push(new I.Token(n.slice(i,a),l))}i=a+1}}return o},I.tokenizer.separator=/[\s\-]+/,I.Pipeline=function(){this._stack=[]},I.Pipeline.registeredFunctions=Object.create(null),I.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&I.utils.warn("Overwriting existing registered function: "+t),e.label=t,I.Pipeline.registeredFunctions[e.label]=e},I.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||I.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},I.Pipeline.load=function(e){var t=new I.Pipeline;return e.forEach((function(e){var n=I.Pipeline.registeredFunctions[e];if(!n)throw new Error("Cannot load unregistered function: "+e);t.add(n)})),t},I.Pipeline.prototype.add=function(){Array.prototype.slice.call(arguments).forEach((function(e){I.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},I.Pipeline.prototype.after=function(e,t){I.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");n+=1,this._stack.splice(n,0,t)},I.Pipeline.prototype.before=function(e,t){I.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");this._stack.splice(n,0,t)},I.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},I.Pipeline.prototype.run=function(e){for(var t=this._stack.length,n=0;n<t;n++){for(var r=this._stack[n],o=[],a=0;a<e.length;a++){var i=r(e[a],a,e);if(null!=i&&""!==i)if(Array.isArray(i))for(var s=0;s<i.length;s++)o.push(i[s]);else o.push(i)}e=o}return e},I.Pipeline.prototype.runString=function(e,t){var n=new I.Token(e,t);return this.run([n]).map((function(e){return e.toString()}))},I.Pipeline.prototype.reset=function(){this._stack=[]},I.Pipeline.prototype.toJSON=function(){return this._stack.map((function(e){return I.Pipeline.warnIfFunctionNotRegistered(e),e.label}))},I.Vector=function(e){this._magnitude=0,this.elements=e||[]},I.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,n=this.elements.length/2,r=n-t,o=Math.floor(r/2),a=this.elements[2*o];r>1&&(a<e&&(t=o),a>e&&(n=o),a!=e);)r=n-t,o=t+Math.floor(r/2),a=this.elements[2*o];return a==e||a>e?2*o:a<e?2*(o+1):void 0},I.Vector.prototype.insert=function(e,t){this.upsert(e,t,(function(){throw"duplicate index"}))},I.Vector.prototype.upsert=function(e,t,n){this._magnitude=0;var r=this.positionForIndex(e);this.elements[r]==e?this.elements[r+1]=n(this.elements[r+1],t):this.elements.splice(r,0,e,t)},I.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,t=this.elements.length,n=1;n<t;n+=2){var r=this.elements[n];e+=r*r}return this._magnitude=Math.sqrt(e)},I.Vector.prototype.dot=function(e){for(var t=0,n=this.elements,r=e.elements,o=n.length,a=r.length,i=0,s=0,l=0,u=0;l<o&&u<a;)(i=n[l])<(s=r[u])?l+=2:i>s?u+=2:i==s&&(t+=n[l+1]*r[u+1],l+=2,u+=2);return t},I.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},I.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,n=0;t<this.elements.length;t+=2,n++)e[n]=this.elements[t];return e},I.Vector.prototype.toJSON=function(){return this.elements},I.stemmer=(i={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},s={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},d="^("+(u="[^aeiou][^aeiouy]*")+")?"+(c=(l="[aeiouy]")+"[aeiou]*")+u+"("+c+")?$",p="^("+u+")?"+c+u+c+u,f="^("+u+")?"+l,h=new RegExp("^("+u+")?"+c+u),g=new RegExp(p),m=new RegExp(d),y=new RegExp(f),b=/^(.+?)(ss|i)es$/,v=/^(.+?)([^s])s$/,w=/^(.+?)eed$/,k=/^(.+?)(ed|ing)$/,x=/.$/,S=/(at|bl|iz)$/,E=new RegExp("([^aeiouylsz])\\1$"),C=new RegExp("^"+u+l+"[^aeiouwxy]$"),T=/^(.+?[^aeiou])y$/,_=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,L=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,R=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,j=/^(.+?)(s|t)(ion)$/,N=/^(.+?)e$/,A=/ll$/,P=new RegExp("^"+u+l+"[^aeiouwxy]$"),O=function(e){var t,n,r,o,a,l,u;if(e.length<3)return e;if("y"==(r=e.substr(0,1))&&(e=r.toUpperCase()+e.substr(1)),a=v,(o=b).test(e)?e=e.replace(o,"$1$2"):a.test(e)&&(e=e.replace(a,"$1$2")),a=k,(o=w).test(e)){var c=o.exec(e);(o=h).test(c[1])&&(o=x,e=e.replace(o,""))}else a.test(e)&&(t=(c=a.exec(e))[1],(a=y).test(t)&&(l=E,u=C,(a=S).test(e=t)?e+="e":l.test(e)?(o=x,e=e.replace(o,"")):u.test(e)&&(e+="e")));return(o=T).test(e)&&(e=(t=(c=o.exec(e))[1])+"i"),(o=_).test(e)&&(t=(c=o.exec(e))[1],n=c[2],(o=h).test(t)&&(e=t+i[n])),(o=L).test(e)&&(t=(c=o.exec(e))[1],n=c[2],(o=h).test(t)&&(e=t+s[n])),a=j,(o=R).test(e)?(t=(c=o.exec(e))[1],(o=g).test(t)&&(e=t)):a.test(e)&&(t=(c=a.exec(e))[1]+c[2],(a=g).test(t)&&(e=t)),(o=N).test(e)&&(t=(c=o.exec(e))[1],a=m,l=P,((o=g).test(t)||a.test(t)&&!l.test(t))&&(e=t)),a=g,(o=A).test(e)&&a.test(e)&&(o=x,e=e.replace(o,"")),"y"==r&&(e=r.toLowerCase()+e.substr(1)),e},function(e){return e.update(O)}),I.Pipeline.registerFunction(I.stemmer,"stemmer"),I.generateStopWordFilter=function(e){var t=e.reduce((function(e,t){return e[t]=t,e}),{});return function(e){if(e&&t[e.toString()]!==e.toString())return e}},I.stopWordFilter=I.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),I.Pipeline.registerFunction(I.stopWordFilter,"stopWordFilter"),I.trimmer=function(e){return e.update((function(e){return e.replace(/^\W+/,"").replace(/\W+$/,"")}))},I.Pipeline.registerFunction(I.trimmer,"trimmer"),I.TokenSet=function(){this.final=!1,this.edges={},this.id=I.TokenSet._nextId,I.TokenSet._nextId+=1},I.TokenSet._nextId=1,I.TokenSet.fromArray=function(e){for(var t=new I.TokenSet.Builder,n=0,r=e.length;n<r;n++)t.insert(e[n]);return t.finish(),t.root},I.TokenSet.fromClause=function(e){return"editDistance"in e?I.TokenSet.fromFuzzyString(e.term,e.editDistance):I.TokenSet.fromString(e.term)},I.TokenSet.fromFuzzyString=function(e,t){for(var n=new I.TokenSet,r=[{node:n,editsRemaining:t,str:e}];r.length;){var o=r.pop();if(o.str.length>0){var a,i=o.str.charAt(0);i in o.node.edges?a=o.node.edges[i]:(a=new I.TokenSet,o.node.edges[i]=a),1==o.str.length&&(a.final=!0),r.push({node:a,editsRemaining:o.editsRemaining,str:o.str.slice(1)})}if(0!=o.editsRemaining){if("*"in o.node.edges)var s=o.node.edges["*"];else{s=new I.TokenSet;o.node.edges["*"]=s}if(0==o.str.length&&(s.final=!0),r.push({node:s,editsRemaining:o.editsRemaining-1,str:o.str}),o.str.length>1&&r.push({node:o.node,editsRemaining:o.editsRemaining-1,str:o.str.slice(1)}),1==o.str.length&&(o.node.final=!0),o.str.length>=1){if("*"in o.node.edges)var l=o.node.edges["*"];else{l=new I.TokenSet;o.node.edges["*"]=l}1==o.str.length&&(l.final=!0),r.push({node:l,editsRemaining:o.editsRemaining-1,str:o.str.slice(1)})}if(o.str.length>1){var u,c=o.str.charAt(0),d=o.str.charAt(1);d in o.node.edges?u=o.node.edges[d]:(u=new I.TokenSet,o.node.edges[d]=u),1==o.str.length&&(u.final=!0),r.push({node:u,editsRemaining:o.editsRemaining-1,str:c+o.str.slice(2)})}}}return n},I.TokenSet.fromString=function(e){for(var t=new I.TokenSet,n=t,r=0,o=e.length;r<o;r++){var a=e[r],i=r==o-1;if("*"==a)t.edges[a]=t,t.final=i;else{var s=new I.TokenSet;s.final=i,t.edges[a]=s,t=s}}return n},I.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:"",node:this}];t.length;){var n=t.pop(),r=Object.keys(n.node.edges),o=r.length;n.node.final&&(n.prefix.charAt(0),e.push(n.prefix));for(var a=0;a<o;a++){var i=r[a];t.push({prefix:n.prefix.concat(i),node:n.node.edges[i]})}}return e},I.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?"1":"0",t=Object.keys(this.edges).sort(),n=t.length,r=0;r<n;r++){var o=t[r];e=e+o+this.edges[o].id}return e},I.TokenSet.prototype.intersect=function(e){for(var t=new I.TokenSet,n=void 0,r=[{qNode:e,output:t,node:this}];r.length;){n=r.pop();for(var o=Object.keys(n.qNode.edges),a=o.length,i=Object.keys(n.node.edges),s=i.length,l=0;l<a;l++)for(var u=o[l],c=0;c<s;c++){var d=i[c];if(d==u||"*"==u){var p=n.node.edges[d],f=n.qNode.edges[u],h=p.final&&f.final,g=void 0;d in n.output.edges?(g=n.output.edges[d]).final=g.final||h:((g=new I.TokenSet).final=h,n.output.edges[d]=g),r.push({qNode:f,output:g,node:p})}}}return t},I.TokenSet.Builder=function(){this.previousWord="",this.root=new I.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},I.TokenSet.Builder.prototype.insert=function(e){var t,n=0;if(e<this.previousWord)throw new Error("Out of order word insertion");for(var r=0;r<e.length&&r<this.previousWord.length&&e[r]==this.previousWord[r];r++)n++;this.minimize(n),t=0==this.uncheckedNodes.length?this.root:this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(r=n;r<e.length;r++){var o=new I.TokenSet,a=e[r];t.edges[a]=o,this.uncheckedNodes.push({parent:t,char:a,child:o}),t=o}t.final=!0,this.previousWord=e},I.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},I.TokenSet.Builder.prototype.minimize=function(e){for(var t=this.uncheckedNodes.length-1;t>=e;t--){var n=this.uncheckedNodes[t],r=n.child.toString();r in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[r]:(n.child._str=r,this.minimizedNodes[r]=n.child),this.uncheckedNodes.pop()}},I.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},I.Index.prototype.search=function(e){return this.query((function(t){new I.QueryParser(e,t).parse()}))},I.Index.prototype.query=function(e){for(var t=new I.Query(this.fields),n=Object.create(null),r=Object.create(null),o=Object.create(null),a=Object.create(null),i=Object.create(null),s=0;s<this.fields.length;s++)r[this.fields[s]]=new I.Vector;e.call(t,t);for(s=0;s<t.clauses.length;s++){var l=t.clauses[s],u=null,c=I.Set.empty;u=l.usePipeline?this.pipeline.runString(l.term,{fields:l.fields}):[l.term];for(var d=0;d<u.length;d++){var p=u[d];l.term=p;var f=I.TokenSet.fromClause(l),h=this.tokenSet.intersect(f).toArray();if(0===h.length&&l.presence===I.Query.presence.REQUIRED){for(var g=0;g<l.fields.length;g++){a[N=l.fields[g]]=I.Set.empty}break}for(var m=0;m<h.length;m++){var y=h[m],b=this.invertedIndex[y],v=b._index;for(g=0;g<l.fields.length;g++){var w=b[N=l.fields[g]],k=Object.keys(w),x=y+"/"+N,S=new I.Set(k);if(l.presence==I.Query.presence.REQUIRED&&(c=c.union(S),void 0===a[N]&&(a[N]=I.Set.complete)),l.presence!=I.Query.presence.PROHIBITED){if(r[N].upsert(v,l.boost,(function(e,t){return e+t})),!o[x]){for(var E=0;E<k.length;E++){var C,T=k[E],_=new I.FieldRef(T,N),L=w[T];void 0===(C=n[_])?n[_]=new I.MatchData(y,N,L):C.add(y,N,L)}o[x]=!0}}else void 0===i[N]&&(i[N]=I.Set.empty),i[N]=i[N].union(S)}}}if(l.presence===I.Query.presence.REQUIRED)for(g=0;g<l.fields.length;g++){a[N=l.fields[g]]=a[N].intersect(c)}}var R=I.Set.complete,j=I.Set.empty;for(s=0;s<this.fields.length;s++){var N;a[N=this.fields[s]]&&(R=R.intersect(a[N])),i[N]&&(j=j.union(i[N]))}var A=Object.keys(n),P=[],O=Object.create(null);if(t.isNegated()){A=Object.keys(this.fieldVectors);for(s=0;s<A.length;s++){_=A[s];var D=I.FieldRef.fromString(_);n[_]=new I.MatchData}}for(s=0;s<A.length;s++){var F=(D=I.FieldRef.fromString(A[s])).docRef;if(R.contains(F)&&!j.contains(F)){var M,z=this.fieldVectors[D],B=r[D.fieldName].similarity(z);if(void 0!==(M=O[F]))M.score+=B,M.matchData.combine(n[D]);else{var $={ref:F,score:B,matchData:n[D]};O[F]=$,P.push($)}}}return P.sort((function(e,t){return t.score-e.score}))},I.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map((function(e){return[e,this.invertedIndex[e]]}),this),t=Object.keys(this.fieldVectors).map((function(e){return[e,this.fieldVectors[e].toJSON()]}),this);return{version:I.version,fields:this.fields,fieldVectors:t,invertedIndex:e,pipeline:this.pipeline.toJSON()}},I.Index.load=function(e){var t={},n={},r=e.fieldVectors,o=Object.create(null),a=e.invertedIndex,i=new I.TokenSet.Builder,s=I.Pipeline.load(e.pipeline);e.version!=I.version&&I.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+I.version+"' does not match serialized index '"+e.version+"'");for(var l=0;l<r.length;l++){var u=(d=r[l])[0],c=d[1];n[u]=new I.Vector(c)}for(l=0;l<a.length;l++){var d,p=(d=a[l])[0],f=d[1];i.insert(p),o[p]=f}return i.finish(),t.fields=e.fields,t.fieldVectors=n,t.invertedIndex=o,t.tokenSet=i.root,t.pipeline=s,new I.Index(t)},I.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=I.tokenizer,this.pipeline=new I.Pipeline,this.searchPipeline=new I.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},I.Builder.prototype.ref=function(e){this._ref=e},I.Builder.prototype.field=function(e,t){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=t||{}},I.Builder.prototype.b=function(e){this._b=e<0?0:e>1?1:e},I.Builder.prototype.k1=function(e){this._k1=e},I.Builder.prototype.add=function(e,t){var n=e[this._ref],r=Object.keys(this._fields);this._documents[n]=t||{},this.documentCount+=1;for(var o=0;o<r.length;o++){var a=r[o],i=this._fields[a].extractor,s=i?i(e):e[a],l=this.tokenizer(s,{fields:[a]}),u=this.pipeline.run(l),c=new I.FieldRef(n,a),d=Object.create(null);this.fieldTermFrequencies[c]=d,this.fieldLengths[c]=0,this.fieldLengths[c]+=u.length;for(var p=0;p<u.length;p++){var f=u[p];if(null==d[f]&&(d[f]=0),d[f]+=1,null==this.invertedIndex[f]){var h=Object.create(null);h._index=this.termIndex,this.termIndex+=1;for(var g=0;g<r.length;g++)h[r[g]]=Object.create(null);this.invertedIndex[f]=h}null==this.invertedIndex[f][a][n]&&(this.invertedIndex[f][a][n]=Object.create(null));for(var m=0;m<this.metadataWhitelist.length;m++){var y=this.metadataWhitelist[m],b=f.metadata[y];null==this.invertedIndex[f][a][n][y]&&(this.invertedIndex[f][a][n][y]=[]),this.invertedIndex[f][a][n][y].push(b)}}}},I.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),t=e.length,n={},r={},o=0;o<t;o++){var a=I.FieldRef.fromString(e[o]),i=a.fieldName;r[i]||(r[i]=0),r[i]+=1,n[i]||(n[i]=0),n[i]+=this.fieldLengths[a]}var s=Object.keys(this._fields);for(o=0;o<s.length;o++){var l=s[o];n[l]=n[l]/r[l]}this.averageFieldLength=n},I.Builder.prototype.createFieldVectors=function(){for(var e={},t=Object.keys(this.fieldTermFrequencies),n=t.length,r=Object.create(null),o=0;o<n;o++){for(var a=I.FieldRef.fromString(t[o]),i=a.fieldName,s=this.fieldLengths[a],l=new I.Vector,u=this.fieldTermFrequencies[a],c=Object.keys(u),d=c.length,p=this._fields[i].boost||1,f=this._documents[a.docRef].boost||1,h=0;h<d;h++){var g,m,y,b=c[h],v=u[b],w=this.invertedIndex[b]._index;void 0===r[b]?(g=I.idf(this.invertedIndex[b],this.documentCount),r[b]=g):g=r[b],m=g*((this._k1+1)*v)/(this._k1*(1-this._b+this._b*(s/this.averageFieldLength[i]))+v),m*=p,m*=f,y=Math.round(1e3*m)/1e3,l.insert(w,y)}e[a]=l}this.fieldVectors=e},I.Builder.prototype.createTokenSet=function(){this.tokenSet=I.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},I.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new I.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},I.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},I.MatchData=function(e,t,n){for(var r=Object.create(null),o=Object.keys(n||{}),a=0;a<o.length;a++){var i=o[a];r[i]=n[i].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=r)},I.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),n=0;n<t.length;n++){var r=t[n],o=Object.keys(e.metadata[r]);null==this.metadata[r]&&(this.metadata[r]=Object.create(null));for(var a=0;a<o.length;a++){var i=o[a],s=Object.keys(e.metadata[r][i]);null==this.metadata[r][i]&&(this.metadata[r][i]=Object.create(null));for(var l=0;l<s.length;l++){var u=s[l];null==this.metadata[r][i][u]?this.metadata[r][i][u]=e.metadata[r][i][u]:this.metadata[r][i][u]=this.metadata[r][i][u].concat(e.metadata[r][i][u])}}}},I.MatchData.prototype.add=function(e,t,n){if(!(e in this.metadata))return this.metadata[e]=Object.create(null),void(this.metadata[e][t]=n);if(t in this.metadata[e])for(var r=Object.keys(n),o=0;o<r.length;o++){var a=r[o];a in this.metadata[e][t]?this.metadata[e][t][a]=this.metadata[e][t][a].concat(n[a]):this.metadata[e][t][a]=n[a]}else this.metadata[e][t]=n},I.Query=function(e){this.clauses=[],this.allFields=e},I.Query.wildcard=new String("*"),I.Query.wildcard.NONE=0,I.Query.wildcard.LEADING=1,I.Query.wildcard.TRAILING=2,I.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},I.Query.prototype.clause=function(e){return"fields"in e||(e.fields=this.allFields),"boost"in e||(e.boost=1),"usePipeline"in e||(e.usePipeline=!0),"wildcard"in e||(e.wildcard=I.Query.wildcard.NONE),e.wildcard&I.Query.wildcard.LEADING&&e.term.charAt(0)!=I.Query.wildcard&&(e.term="*"+e.term),e.wildcard&I.Query.wildcard.TRAILING&&e.term.slice(-1)!=I.Query.wildcard&&(e.term=e.term+"*"),"presence"in e||(e.presence=I.Query.presence.OPTIONAL),this.clauses.push(e),this},I.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=I.Query.presence.PROHIBITED)return!1;return!0},I.Query.prototype.term=function(e,t){if(Array.isArray(e))return e.forEach((function(e){this.term(e,I.utils.clone(t))}),this),this;var n=t||{};return n.term=e.toString(),this.clause(n),this},I.QueryParseError=function(e,t,n){this.name="QueryParseError",this.message=e,this.start=t,this.end=n},I.QueryParseError.prototype=new Error,I.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},I.QueryLexer.prototype.run=function(){for(var e=I.QueryLexer.lexText;e;)e=e(this)},I.QueryLexer.prototype.sliceString=function(){for(var e=[],t=this.start,n=this.pos,r=0;r<this.escapeCharPositions.length;r++)n=this.escapeCharPositions[r],e.push(this.str.slice(t,n)),t=n+1;return e.push(this.str.slice(t,this.pos)),this.escapeCharPositions.length=0,e.join("")},I.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},I.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},I.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return I.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},I.QueryLexer.prototype.width=function(){return this.pos-this.start},I.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},I.QueryLexer.prototype.backup=function(){this.pos-=1},I.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=I.QueryLexer.EOS&&this.backup()},I.QueryLexer.prototype.more=function(){return this.pos<this.length},I.QueryLexer.EOS="EOS",I.QueryLexer.FIELD="FIELD",I.QueryLexer.TERM="TERM",I.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",I.QueryLexer.BOOST="BOOST",I.QueryLexer.PRESENCE="PRESENCE",I.QueryLexer.lexField=function(e){return e.backup(),e.emit(I.QueryLexer.FIELD),e.ignore(),I.QueryLexer.lexText},I.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(I.QueryLexer.TERM)),e.ignore(),e.more())return I.QueryLexer.lexText},I.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(I.QueryLexer.EDIT_DISTANCE),I.QueryLexer.lexText},I.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(I.QueryLexer.BOOST),I.QueryLexer.lexText},I.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(I.QueryLexer.TERM)},I.QueryLexer.termSeparator=I.tokenizer.separator,I.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==I.QueryLexer.EOS)return I.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return I.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(I.QueryLexer.TERM),I.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(I.QueryLexer.TERM),I.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(I.QueryLexer.PRESENCE),I.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(I.QueryLexer.PRESENCE),I.QueryLexer.lexText;if(t.match(I.QueryLexer.termSeparator))return I.QueryLexer.lexTerm}else e.escapeCharacter()}},I.QueryParser=function(e,t){this.lexer=new I.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},I.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=I.QueryParser.parseClause;e;)e=e(this);return this.query},I.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},I.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},I.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},I.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case I.QueryLexer.PRESENCE:return I.QueryParser.parsePresence;case I.QueryLexer.FIELD:return I.QueryParser.parseField;case I.QueryLexer.TERM:return I.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(n+=" with value '"+t.str+"'"),new I.QueryParseError(n,t.start,t.end)}},I.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=I.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=I.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+t.str+"'";throw new I.QueryParseError(n,t.start,t.end)}var r=e.peekLexeme();if(null==r){n="expecting term or field, found nothing";throw new I.QueryParseError(n,t.start,t.end)}switch(r.type){case I.QueryLexer.FIELD:return I.QueryParser.parseField;case I.QueryLexer.TERM:return I.QueryParser.parseTerm;default:n="expecting term or field, found '"+r.type+"'";throw new I.QueryParseError(n,r.start,r.end)}}},I.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var n=e.query.allFields.map((function(e){return"'"+e+"'"})).join(", "),r="unrecognised field '"+t.str+"', possible fields: "+n;throw new I.QueryParseError(r,t.start,t.end)}e.currentClause.fields=[t.str];var o=e.peekLexeme();if(null==o){r="expecting term, found nothing";throw new I.QueryParseError(r,t.start,t.end)}if(o.type===I.QueryLexer.TERM)return I.QueryParser.parseTerm;r="expecting term, found '"+o.type+"'";throw new I.QueryParseError(r,o.start,o.end)}},I.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(null!=n)switch(n.type){case I.QueryLexer.TERM:return e.nextClause(),I.QueryParser.parseTerm;case I.QueryLexer.FIELD:return e.nextClause(),I.QueryParser.parseField;case I.QueryLexer.EDIT_DISTANCE:return I.QueryParser.parseEditDistance;case I.QueryLexer.BOOST:return I.QueryParser.parseBoost;case I.QueryLexer.PRESENCE:return e.nextClause(),I.QueryParser.parsePresence;default:var r="Unexpected lexeme type '"+n.type+"'";throw new I.QueryParseError(r,n.start,n.end)}else e.nextClause()}},I.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="edit distance must be numeric";throw new I.QueryParseError(r,t.start,t.end)}e.currentClause.editDistance=n;var o=e.peekLexeme();if(null!=o)switch(o.type){case I.QueryLexer.TERM:return e.nextClause(),I.QueryParser.parseTerm;case I.QueryLexer.FIELD:return e.nextClause(),I.QueryParser.parseField;case I.QueryLexer.EDIT_DISTANCE:return I.QueryParser.parseEditDistance;case I.QueryLexer.BOOST:return I.QueryParser.parseBoost;case I.QueryLexer.PRESENCE:return e.nextClause(),I.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+o.type+"'";throw new I.QueryParseError(r,o.start,o.end)}else e.nextClause()}},I.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="boost must be numeric";throw new I.QueryParseError(r,t.start,t.end)}e.currentClause.boost=n;var o=e.peekLexeme();if(null!=o)switch(o.type){case I.QueryLexer.TERM:return e.nextClause(),I.QueryParser.parseTerm;case I.QueryLexer.FIELD:return e.nextClause(),I.QueryParser.parseField;case I.QueryLexer.EDIT_DISTANCE:return I.QueryParser.parseEditDistance;case I.QueryLexer.BOOST:return I.QueryParser.parseBoost;case I.QueryLexer.PRESENCE:return e.nextClause(),I.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+o.type+"'";throw new I.QueryParseError(r,o.start,o.end)}else e.nextClause()}},void 0===(o="function"==typeof(r=function(){return I})?r.call(t,n,t,e):r)||(e.exports=o)}()},813:function(e){e.exports=function(){"use strict";var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},n=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},o=function(){function e(n){var r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5e3;t(this,e),this.ctx=n,this.iframes=r,this.exclude=o,this.iframesTimeout=a}return n(e,[{key:"getContexts",value:function(){var e=[];return(void 0!==this.ctx&&this.ctx?NodeList.prototype.isPrototypeOf(this.ctx)?Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?this.ctx:"string"==typeof this.ctx?Array.prototype.slice.call(document.querySelectorAll(this.ctx)):[this.ctx]:[]).forEach((function(t){var n=e.filter((function(e){return e.contains(t)})).length>0;-1!==e.indexOf(t)||n||e.push(t)})),e}},{key:"getIframeContents",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},r=void 0;try{var o=e.contentWindow;if(r=o.document,!o||!r)throw new Error("iframe inaccessible")}catch(a){n()}r&&t(r)}},{key:"isIframeBlank",value:function(e){var t="about:blank",n=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&n!==t&&n}},{key:"observeIframeLoad",value:function(e,t,n){var r=this,o=!1,a=null,i=function i(){if(!o){o=!0,clearTimeout(a);try{r.isIframeBlank(e)||(e.removeEventListener("load",i),r.getIframeContents(e,t,n))}catch(s){n()}}};e.addEventListener("load",i),a=setTimeout(i,this.iframesTimeout)}},{key:"onIframeReady",value:function(e,t,n){try{"complete"===e.contentWindow.document.readyState?this.isIframeBlank(e)?this.observeIframeLoad(e,t,n):this.getIframeContents(e,t,n):this.observeIframeLoad(e,t,n)}catch(r){n()}}},{key:"waitForIframes",value:function(e,t){var n=this,r=0;this.forEachIframe(e,(function(){return!0}),(function(e){r++,n.waitForIframes(e.querySelector("html"),(function(){--r||t()}))}),(function(e){e||t()}))}},{key:"forEachIframe",value:function(t,n,r){var o=this,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},i=t.querySelectorAll("iframe"),s=i.length,l=0;i=Array.prototype.slice.call(i);var u=function(){--s<=0&&a(l)};s||u(),i.forEach((function(t){e.matches(t,o.exclude)?u():o.onIframeReady(t,(function(e){n(t)&&(l++,r(e)),u()}),u)}))}},{key:"createIterator",value:function(e,t,n){return document.createNodeIterator(e,t,n,!1)}},{key:"createInstanceOnIframe",value:function(t){return new e(t.querySelector("html"),this.iframes)}},{key:"compareNodeIframe",value:function(e,t,n){if(e.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_PRECEDING){if(null===t)return!0;if(t.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_FOLLOWING)return!0}return!1}},{key:"getIteratorNode",value:function(e){var t=e.previousNode();return{prevNode:t,node:(null===t||e.nextNode())&&e.nextNode()}}},{key:"checkIframeFilter",value:function(e,t,n,r){var o=!1,a=!1;return r.forEach((function(e,t){e.val===n&&(o=t,a=e.handled)})),this.compareNodeIframe(e,t,n)?(!1!==o||a?!1===o||a||(r[o].handled=!0):r.push({val:n,handled:!0}),!0):(!1===o&&r.push({val:n,handled:!1}),!1)}},{key:"handleOpenIframes",value:function(e,t,n,r){var o=this;e.forEach((function(e){e.handled||o.getIframeContents(e.val,(function(e){o.createInstanceOnIframe(e).forEachNode(t,n,r)}))}))}},{key:"iterateThroughNodes",value:function(e,t,n,r,o){for(var a=this,i=this.createIterator(t,e,r),s=[],l=[],u=void 0,c=void 0,d=function(){var e=a.getIteratorNode(i);return c=e.prevNode,u=e.node};d();)this.iframes&&this.forEachIframe(t,(function(e){return a.checkIframeFilter(u,c,e,s)}),(function(t){a.createInstanceOnIframe(t).forEachNode(e,(function(e){return l.push(e)}),r)})),l.push(u);l.forEach((function(e){n(e)})),this.iframes&&this.handleOpenIframes(s,e,n,r),o()}},{key:"forEachNode",value:function(e,t,n){var r=this,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},a=this.getContexts(),i=a.length;i||o(),a.forEach((function(a){var s=function(){r.iterateThroughNodes(e,a,t,n,(function(){--i<=0&&o()}))};r.iframes?r.waitForIframes(a,s):s()}))}}],[{key:"matches",value:function(e,t){var n="string"==typeof t?[t]:t,r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(r){var o=!1;return n.every((function(t){return!r.call(e,t)||(o=!0,!1)})),o}return!1}}]),e}(),a=function(){function a(e){t(this,a),this.ctx=e,this.ie=!1;var n=window.navigator.userAgent;(n.indexOf("MSIE")>-1||n.indexOf("Trident")>-1)&&(this.ie=!0)}return n(a,[{key:"log",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"debug",r=this.opt.log;this.opt.debug&&"object"===(void 0===r?"undefined":e(r))&&"function"==typeof r[n]&&r[n]("mark.js: "+t)}},{key:"escapeStr",value:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}},{key:"createRegExp",value:function(e){return"disabled"!==this.opt.wildcards&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),"disabled"!==this.opt.wildcards&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e)}},{key:"createSynonymsRegExp",value:function(e){var t=this.opt.synonyms,n=this.opt.caseSensitive?"":"i",r=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(var o in t)if(t.hasOwnProperty(o)){var a=t[o],i="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(o):this.escapeStr(o),s="disabled"!==this.opt.wildcards?this.setupWildcardsRegExp(a):this.escapeStr(a);""!==i&&""!==s&&(e=e.replace(new RegExp("("+this.escapeStr(i)+"|"+this.escapeStr(s)+")","gm"+n),r+"("+this.processSynomyms(i)+"|"+this.processSynomyms(s)+")"+r))}return e}},{key:"processSynomyms",value:function(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}},{key:"setupWildcardsRegExp",value:function(e){return(e=e.replace(/(?:\\)*\?/g,(function(e){return"\\"===e.charAt(0)?"?":"\x01"}))).replace(/(?:\\)*\*/g,(function(e){return"\\"===e.charAt(0)?"*":"\x02"}))}},{key:"createWildcardsRegExp",value:function(e){var t="withSpaces"===this.opt.wildcards;return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}},{key:"setupIgnoreJoinersRegExp",value:function(e){return e.replace(/[^(|)\\]/g,(function(e,t,n){var r=n.charAt(t+1);return/[(|)\\]/.test(r)||""===r?e:e+"\0"}))}},{key:"createJoinersRegExp",value:function(e){var t=[],n=this.opt.ignorePunctuation;return Array.isArray(n)&&n.length&&t.push(this.escapeStr(n.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join("["+t.join("")+"]*"):e}},{key:"createDiacriticsRegExp",value:function(e){var t=this.opt.caseSensitive?"":"i",n=this.opt.caseSensitive?["a\xe0\xe1\u1ea3\xe3\u1ea1\u0103\u1eb1\u1eaf\u1eb3\u1eb5\u1eb7\xe2\u1ea7\u1ea5\u1ea9\u1eab\u1ead\xe4\xe5\u0101\u0105","A\xc0\xc1\u1ea2\xc3\u1ea0\u0102\u1eb0\u1eae\u1eb2\u1eb4\u1eb6\xc2\u1ea6\u1ea4\u1ea8\u1eaa\u1eac\xc4\xc5\u0100\u0104","c\xe7\u0107\u010d","C\xc7\u0106\u010c","d\u0111\u010f","D\u0110\u010e","e\xe8\xe9\u1ebb\u1ebd\u1eb9\xea\u1ec1\u1ebf\u1ec3\u1ec5\u1ec7\xeb\u011b\u0113\u0119","E\xc8\xc9\u1eba\u1ebc\u1eb8\xca\u1ec0\u1ebe\u1ec2\u1ec4\u1ec6\xcb\u011a\u0112\u0118","i\xec\xed\u1ec9\u0129\u1ecb\xee\xef\u012b","I\xcc\xcd\u1ec8\u0128\u1eca\xce\xcf\u012a","l\u0142","L\u0141","n\xf1\u0148\u0144","N\xd1\u0147\u0143","o\xf2\xf3\u1ecf\xf5\u1ecd\xf4\u1ed3\u1ed1\u1ed5\u1ed7\u1ed9\u01a1\u1edf\u1ee1\u1edb\u1edd\u1ee3\xf6\xf8\u014d","O\xd2\xd3\u1ece\xd5\u1ecc\xd4\u1ed2\u1ed0\u1ed4\u1ed6\u1ed8\u01a0\u1ede\u1ee0\u1eda\u1edc\u1ee2\xd6\xd8\u014c","r\u0159","R\u0158","s\u0161\u015b\u0219\u015f","S\u0160\u015a\u0218\u015e","t\u0165\u021b\u0163","T\u0164\u021a\u0162","u\xf9\xfa\u1ee7\u0169\u1ee5\u01b0\u1eeb\u1ee9\u1eed\u1eef\u1ef1\xfb\xfc\u016f\u016b","U\xd9\xda\u1ee6\u0168\u1ee4\u01af\u1eea\u1ee8\u1eec\u1eee\u1ef0\xdb\xdc\u016e\u016a","y\xfd\u1ef3\u1ef7\u1ef9\u1ef5\xff","Y\xdd\u1ef2\u1ef6\u1ef8\u1ef4\u0178","z\u017e\u017c\u017a","Z\u017d\u017b\u0179"]:["a\xe0\xe1\u1ea3\xe3\u1ea1\u0103\u1eb1\u1eaf\u1eb3\u1eb5\u1eb7\xe2\u1ea7\u1ea5\u1ea9\u1eab\u1ead\xe4\xe5\u0101\u0105A\xc0\xc1\u1ea2\xc3\u1ea0\u0102\u1eb0\u1eae\u1eb2\u1eb4\u1eb6\xc2\u1ea6\u1ea4\u1ea8\u1eaa\u1eac\xc4\xc5\u0100\u0104","c\xe7\u0107\u010dC\xc7\u0106\u010c","d\u0111\u010fD\u0110\u010e","e\xe8\xe9\u1ebb\u1ebd\u1eb9\xea\u1ec1\u1ebf\u1ec3\u1ec5\u1ec7\xeb\u011b\u0113\u0119E\xc8\xc9\u1eba\u1ebc\u1eb8\xca\u1ec0\u1ebe\u1ec2\u1ec4\u1ec6\xcb\u011a\u0112\u0118","i\xec\xed\u1ec9\u0129\u1ecb\xee\xef\u012bI\xcc\xcd\u1ec8\u0128\u1eca\xce\xcf\u012a","l\u0142L\u0141","n\xf1\u0148\u0144N\xd1\u0147\u0143","o\xf2\xf3\u1ecf\xf5\u1ecd\xf4\u1ed3\u1ed1\u1ed5\u1ed7\u1ed9\u01a1\u1edf\u1ee1\u1edb\u1edd\u1ee3\xf6\xf8\u014dO\xd2\xd3\u1ece\xd5\u1ecc\xd4\u1ed2\u1ed0\u1ed4\u1ed6\u1ed8\u01a0\u1ede\u1ee0\u1eda\u1edc\u1ee2\xd6\xd8\u014c","r\u0159R\u0158","s\u0161\u015b\u0219\u015fS\u0160\u015a\u0218\u015e","t\u0165\u021b\u0163T\u0164\u021a\u0162","u\xf9\xfa\u1ee7\u0169\u1ee5\u01b0\u1eeb\u1ee9\u1eed\u1eef\u1ef1\xfb\xfc\u016f\u016bU\xd9\xda\u1ee6\u0168\u1ee4\u01af\u1eea\u1ee8\u1eec\u1eee\u1ef0\xdb\xdc\u016e\u016a","y\xfd\u1ef3\u1ef7\u1ef9\u1ef5\xffY\xdd\u1ef2\u1ef6\u1ef8\u1ef4\u0178","z\u017e\u017c\u017aZ\u017d\u017b\u0179"],r=[];return e.split("").forEach((function(o){n.every((function(n){if(-1!==n.indexOf(o)){if(r.indexOf(n)>-1)return!1;e=e.replace(new RegExp("["+n+"]","gm"+t),"["+n+"]"),r.push(n)}return!0}))})),e}},{key:"createMergedBlanksRegExp",value:function(e){return e.replace(/[\s]+/gim,"[\\s]+")}},{key:"createAccuracyRegExp",value:function(e){var t=this,n="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\xa1\xbf",r=this.opt.accuracy,o="string"==typeof r?r:r.value,a="string"==typeof r?[]:r.limiters,i="";switch(a.forEach((function(e){i+="|"+t.escapeStr(e)})),o){case"partially":default:return"()("+e+")";case"complementary":return"()([^"+(i="\\s"+(i||this.escapeStr(n)))+"]*"+e+"[^"+i+"]*)";case"exactly":return"(^|\\s"+i+")("+e+")(?=$|\\s"+i+")"}}},{key:"getSeparatedKeywords",value:function(e){var t=this,n=[];return e.forEach((function(e){t.opt.separateWordSearch?e.split(" ").forEach((function(e){e.trim()&&-1===n.indexOf(e)&&n.push(e)})):e.trim()&&-1===n.indexOf(e)&&n.push(e)})),{keywords:n.sort((function(e,t){return t.length-e.length})),length:n.length}}},{key:"isNumeric",value:function(e){return Number(parseFloat(e))==e}},{key:"checkRanges",value:function(e){var t=this;if(!Array.isArray(e)||"[object Object]"!==Object.prototype.toString.call(e[0]))return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];var n=[],r=0;return e.sort((function(e,t){return e.start-t.start})).forEach((function(e){var o=t.callNoMatchOnInvalidRanges(e,r),a=o.start,i=o.end;o.valid&&(e.start=a,e.length=i-a,n.push(e),r=i)})),n}},{key:"callNoMatchOnInvalidRanges",value:function(e,t){var n=void 0,r=void 0,o=!1;return e&&void 0!==e.start?(r=(n=parseInt(e.start,10))+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&r-t>0&&r-n>0?o=!0:(this.log("Ignoring invalid or overlapping range: "+JSON.stringify(e)),this.opt.noMatch(e))):(this.log("Ignoring invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:n,end:r,valid:o}}},{key:"checkWhitespaceRanges",value:function(e,t,n){var r=void 0,o=!0,a=n.length,i=t-a,s=parseInt(e.start,10)-i;return(r=(s=s>a?a:s)+parseInt(e.length,10))>a&&(r=a,this.log("End range automatically set to the max value of "+a)),s<0||r-s<0||s>a||r>a?(o=!1,this.log("Invalid range: "+JSON.stringify(e)),this.opt.noMatch(e)):""===n.substring(s,r).replace(/\s+/g,"")&&(o=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:s,end:r,valid:o}}},{key:"getTextNodes",value:function(e){var t=this,n="",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,(function(e){r.push({start:n.length,end:(n+=e.textContent).length,node:e})}),(function(e){return t.matchesExclude(e.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}),(function(){e({value:n,nodes:r})}))}},{key:"matchesExclude",value:function(e){return o.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}},{key:"wrapRangeInTextNode",value:function(e,t,n){var r=this.opt.element?this.opt.element:"mark",o=e.splitText(t),a=o.splitText(n-t),i=document.createElement(r);return i.setAttribute("data-markjs","true"),this.opt.className&&i.setAttribute("class",this.opt.className),i.textContent=o.textContent,o.parentNode.replaceChild(i,o),a}},{key:"wrapRangeInMappedTextNode",value:function(e,t,n,r,o){var a=this;e.nodes.every((function(i,s){var l=e.nodes[s+1];if(void 0===l||l.start>t){if(!r(i.node))return!1;var u=t-i.start,c=(n>i.end?i.end:n)-i.start,d=e.value.substr(0,i.start),p=e.value.substr(c+i.start);if(i.node=a.wrapRangeInTextNode(i.node,u,c),e.value=d+p,e.nodes.forEach((function(t,n){n>=s&&(e.nodes[n].start>0&&n!==s&&(e.nodes[n].start-=c),e.nodes[n].end-=c)})),n-=c,o(i.node.previousSibling,i.start),!(n>i.end))return!1;t=i.end}return!0}))}},{key:"wrapMatches",value:function(e,t,n,r,o){var a=this,i=0===t?0:t+1;this.getTextNodes((function(t){t.nodes.forEach((function(t){t=t.node;for(var o=void 0;null!==(o=e.exec(t.textContent))&&""!==o[i];)if(n(o[i],t)){var s=o.index;if(0!==i)for(var l=1;l<i;l++)s+=o[l].length;t=a.wrapRangeInTextNode(t,s,s+o[i].length),r(t.previousSibling),e.lastIndex=0}})),o()}))}},{key:"wrapMatchesAcrossElements",value:function(e,t,n,r,o){var a=this,i=0===t?0:t+1;this.getTextNodes((function(t){for(var s=void 0;null!==(s=e.exec(t.value))&&""!==s[i];){var l=s.index;if(0!==i)for(var u=1;u<i;u++)l+=s[u].length;var c=l+s[i].length;a.wrapRangeInMappedTextNode(t,l,c,(function(e){return n(s[i],e)}),(function(t,n){e.lastIndex=n,r(t)}))}o()}))}},{key:"wrapRangeFromIndex",value:function(e,t,n,r){var o=this;this.getTextNodes((function(a){var i=a.value.length;e.forEach((function(e,r){var s=o.checkWhitespaceRanges(e,i,a.value),l=s.start,u=s.end;s.valid&&o.wrapRangeInMappedTextNode(a,l,u,(function(n){return t(n,e,a.value.substring(l,u),r)}),(function(t){n(t,e)}))})),r()}))}},{key:"unwrapMatches",value:function(e){for(var t=e.parentNode,n=document.createDocumentFragment();e.firstChild;)n.appendChild(e.removeChild(e.firstChild));t.replaceChild(n,e),this.ie?this.normalizeTextNode(t):t.normalize()}},{key:"normalizeTextNode",value:function(e){if(e){if(3===e.nodeType)for(;e.nextSibling&&3===e.nextSibling.nodeType;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}},{key:"markRegExp",value:function(e,t){var n=this;this.opt=t,this.log('Searching with expression "'+e+'"');var r=0,o="wrapMatches",a=function(e){r++,n.opt.each(e)};this.opt.acrossElements&&(o="wrapMatchesAcrossElements"),this[o](e,this.opt.ignoreGroups,(function(e,t){return n.opt.filter(t,e,r)}),a,(function(){0===r&&n.opt.noMatch(e),n.opt.done(r)}))}},{key:"mark",value:function(e,t){var n=this;this.opt=t;var r=0,o="wrapMatches",a=this.getSeparatedKeywords("string"==typeof e?[e]:e),i=a.keywords,s=a.length,l=this.opt.caseSensitive?"":"i",u=function e(t){var a=new RegExp(n.createRegExp(t),"gm"+l),u=0;n.log('Searching with expression "'+a+'"'),n[o](a,1,(function(e,o){return n.opt.filter(o,t,r,u)}),(function(e){u++,r++,n.opt.each(e)}),(function(){0===u&&n.opt.noMatch(t),i[s-1]===t?n.opt.done(r):e(i[i.indexOf(t)+1])}))};this.opt.acrossElements&&(o="wrapMatchesAcrossElements"),0===s?this.opt.done(r):u(i[0])}},{key:"markRanges",value:function(e,t){var n=this;this.opt=t;var r=0,o=this.checkRanges(e);o&&o.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(o)),this.wrapRangeFromIndex(o,(function(e,t,r,o){return n.opt.filter(e,t,r,o)}),(function(e,t){r++,n.opt.each(e,t)}),(function(){n.opt.done(r)}))):this.opt.done(r)}},{key:"unmark",value:function(e){var t=this;this.opt=e;var n=this.opt.element?this.opt.element:"*";n+="[data-markjs]",this.opt.className&&(n+="."+this.opt.className),this.log('Removal selector "'+n+'"'),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,(function(e){t.unwrapMatches(e)}),(function(e){var r=o.matches(e,n),a=t.matchesExclude(e);return!r||a?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}),this.opt.done)}},{key:"opt",set:function(e){this._opt=r({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:function(){},noMatch:function(){},filter:function(){return!0},done:function(){},debug:!1,log:window.console},e)},get:function(){return this._opt}},{key:"iterator",get:function(){return new o(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}}]),a}();function i(e){var t=this,n=new a(e);return this.mark=function(e,r){return n.mark(e,r),t},this.markRegExp=function(e,r){return n.markRegExp(e,r),t},this.markRanges=function(e,r){return n.markRanges(e,r),t},this.unmark=function(e){return n.unmark(e),t},this}return i}()},2497:(e,t,n)=>{"use strict";n.r(t)},2295:(e,t,n)=>{"use strict";n.r(t)},4865:function(e,t,n){var r,o;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function o(e,t,n){return e<t?t:e>n?n:e}function a(e){return 100*(-1+e)}function i(e,t,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+a(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+a(e)+"%,0)"}:{"margin-left":a(e)+"%"}).transition="all "+t+"ms "+n,o}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=o(e,r.minimum,1),n.status=1===e?null:e;var a=n.render(!t),u=a.querySelector(r.barSelector),c=r.speed,d=r.easing;return a.offsetWidth,s((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),l(u,i(e,c,d)),1===e?(l(a,{transition:"none",opacity:1}),a.offsetWidth,setTimeout((function(){l(a,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*o(Math.random()*t,.1,.95)),t=o(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var o,i=t.querySelector(r.barSelector),s=e?"-100":a(n.status||0),u=document.querySelector(r.parent);return l(i,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),r.showSpinner||(o=t.querySelector(r.spinnerSelector))&&f(o),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var s=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),l=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,o=e.length,a=t.charAt(0).toUpperCase()+t.slice(1);o--;)if((r=e[o]+a)in n)return r;return t}function o(e){return e=n(e),t[e]||(t[e]=r(e))}function a(e,t,n){t=o(t),e.style[t]=n}return function(e,t){var n,r,o=arguments;if(2==o.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&a(e,n,r);else a(e,o[1],o[2])}}();function u(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=p(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(o="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=o)},4779:(e,t,n)=>{var r=n(5826);e.exports=f,e.exports.parse=a,e.exports.compile=function(e,t){return s(a(e,t),t)},e.exports.tokensToFunction=s,e.exports.tokensToRegExp=p;var o=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function a(e,t){for(var n,r=[],a=0,i=0,s="",c=t&&t.delimiter||"/";null!=(n=o.exec(e));){var d=n[0],p=n[1],f=n.index;if(s+=e.slice(i,f),i=f+d.length,p)s+=p[1];else{var h=e[i],g=n[2],m=n[3],y=n[4],b=n[5],v=n[6],w=n[7];s&&(r.push(s),s="");var k=null!=g&&null!=h&&h!==g,x="+"===v||"*"===v,S="?"===v||"*"===v,E=n[2]||c,C=y||b;r.push({name:m||a++,prefix:g||"",delimiter:E,optional:S,repeat:x,partial:k,asterisk:!!w,pattern:C?u(C):w?".*":"[^"+l(E)+"]+?"})}}return i<e.length&&(s+=e.substr(i)),s&&r.push(s),r}function i(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function s(e,t){for(var n=new Array(e.length),o=0;o<e.length;o++)"object"==typeof e[o]&&(n[o]=new RegExp("^(?:"+e[o].pattern+")$",d(t)));return function(t,o){for(var a="",s=t||{},l=(o||{}).pretty?i:encodeURIComponent,u=0;u<e.length;u++){var c=e[u];if("string"!=typeof c){var d,p=s[c.name];if(null==p){if(c.optional){c.partial&&(a+=c.prefix);continue}throw new TypeError('Expected "'+c.name+'" to be defined')}if(r(p)){if(!c.repeat)throw new TypeError('Expected "'+c.name+'" to not repeat, but received `'+JSON.stringify(p)+"`");if(0===p.length){if(c.optional)continue;throw new TypeError('Expected "'+c.name+'" to not be empty')}for(var f=0;f<p.length;f++){if(d=l(p[f]),!n[u].test(d))throw new TypeError('Expected all "'+c.name+'" to match "'+c.pattern+'", but received `'+JSON.stringify(d)+"`");a+=(0===f?c.prefix:c.delimiter)+d}}else{if(d=c.asterisk?encodeURI(p).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):l(p),!n[u].test(d))throw new TypeError('Expected "'+c.name+'" to match "'+c.pattern+'", but received "'+d+'"');a+=c.prefix+d}}else a+=c}return a}}function l(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function u(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function c(e,t){return e.keys=t,e}function d(e){return e&&e.sensitive?"":"i"}function p(e,t,n){r(t)||(n=t||n,t=[]);for(var o=(n=n||{}).strict,a=!1!==n.end,i="",s=0;s<e.length;s++){var u=e[s];if("string"==typeof u)i+=l(u);else{var p=l(u.prefix),f="(?:"+u.pattern+")";t.push(u),u.repeat&&(f+="(?:"+p+f+")*"),i+=f=u.optional?u.partial?p+"("+f+")?":"(?:"+p+"("+f+"))?":p+"("+f+")"}}var h=l(n.delimiter||"/"),g=i.slice(-h.length)===h;return o||(i=(g?i.slice(0,-h.length):i)+"(?:"+h+"(?=$))?"),i+=a?"$":o&&g?"":"(?="+h+"|$)",c(new RegExp("^"+i,d(n)),t)}function f(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return c(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],o=0;o<e.length;o++)r.push(f(e[o],t,n).source);return c(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return p(a(e,n),t,n)}(e,t,n)}},9901:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to <a href="https://webplatform.github.io/docs/">WebPlatform.org documentation</a>. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (<code>.comment</code> can become <code>.namespace--comment</code>) or replace them with your defined ones (like <code>.editor__comment</code>). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the <code>highlightAll</code> and <code>highlightAllUnder</code> methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},2885:(e,t,n)=>{const r=n(9901),o=n(9642),a=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...a,...Object.keys(Prism.languages)];o(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(6500).resolve(t)],delete Prism.languages[e],n(6500)(t),a.add(e)}))}i.silent=!1,e.exports=i},6854:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,o,a){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(o,(function(e){if("function"==typeof a&&!a(e))return e;for(var o,s=i.length;-1!==n.code.indexOf(o=t(r,s));)++s;return i[s]=e,o})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var o=0,a=Object.keys(n.tokenStack);!function i(s){for(var l=0;l<s.length&&!(o>=a.length);l++){var u=s[l];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=a[o],d=n.tokenStack[c],p="string"==typeof u?u:u.content,f=t(r,c),h=p.indexOf(f);if(h>-1){++o;var g=p.substring(0,h),m=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),y=p.substring(h+f.length),b=[];g&&b.push.apply(b,i([g])),b.push(m),y&&b.push.apply(b,i([y])),"string"==typeof u?s.splice.apply(s,[l,1].concat(b)):u.content=b}}else u.content&&i(u.content)}return s}(n.tokens)}}}})}(Prism)},6726:(e,t,n)=>{var r={"./":2885};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=6726},6500:(e,t,n)=>{var r={"./":2885};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=6500},9642:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n]]=!0;return t}function r(e){var n={},r=[];function o(r,a){if(!(r in n)){a.push(r);var i=a.indexOf(r);if(i<a.length-1)throw new Error("Circular dependency: "+a.slice(i).join(" -> "));var s={},l=e[r];if(l){function u(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in s))for(var i in o(t,a),s[t]=!0,n[t])s[i]=!0}t(l.require,u),t(l.optional,u),t(l.modify,u)}n[r]=s,a.pop()}}return function(e){var t=n[e];return t||(o(e,r),t=n[e]),t}}function o(e){for(var t in e)return!0;return!1}return function(a,i,s){var l=function(e){var t={};for(var n in e){var r=e[n];for(var o in r)if("meta"!=o){var a=r[o];t[o]="string"==typeof a?{title:a}:a}}return t}(a),u=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var o in n={},e){var a=e[o];t(a&&a.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+o+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+o+" because it is a component.");n[t]=o}))}return n[r]||r}}(l);i=i.map(u),s=(s||[]).map(u);var c=n(i),d=n(s);i.forEach((function e(n){var r=l[n];t(r&&r.require,(function(t){t in d||(c[t]=!0,e(t))}))}));for(var p,f=r(l),h=c;o(h);){for(var g in p={},h){var m=l[g];t(m&&m.modify,(function(e){e in d&&(p[e]=!0)}))}for(var y in d)if(!(y in c))for(var b in f(y))if(b in c){p[y]=!0;break}for(var v in h=p)c[v]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,o){var a=o?o.series:void 0,i=o?o.parallel:e,s={},l={};function u(e){if(e in s)return s[e];l[e]=!0;var o,c=[];for(var d in t(e))d in n&&c.push(d);if(0===c.length)o=r(e);else{var p=i(c.map((function(e){var t=u(e);return delete l[e],t})));a?o=a(p,(function(){return r(e)})):r(e)}return s[e]=o}for(var c in n)u(c);var d=[];for(var p in l)d.push(s[p]);return i(d)}(f,c,t,n)}};return w}}();e.exports=t},2703:(e,t,n)=>{"use strict";var r=n(414);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},5697:(e,t,n)=>{e.exports=n(2703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4448:(e,t,n)=>{"use strict";var r=n(7294),o=n(3840);function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var i=new Set,s={};function l(e,t){u(e,t),u(e+"Capture",t)}function u(e,t){for(s[e]=t,e=0;e<t.length;e++)i.add(t[e])}var c=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),d=Object.prototype.hasOwnProperty,p=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,f={},h={};function g(e,t,n,r,o,a,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=a,this.removeEmptyString=i}var m={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){m[e]=new g(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];m[t]=new g(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){m[e]=new g(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){m[e]=new g(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){m[e]=new g(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){m[e]=new g(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){m[e]=new g(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){m[e]=new g(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){m[e]=new g(e,5,!1,e.toLowerCase(),null,!1,!1)}));var y=/[\-:]([a-z])/g;function b(e){return e[1].toUpperCase()}function v(e,t,n,r){var o=m.hasOwnProperty(t)?m[t]:null;(null!==o?0!==o.type:r||!(2<t.length)||"o"!==t[0]&&"O"!==t[0]||"n"!==t[1]&&"N"!==t[1])&&(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,o,r)&&(n=null),r||null===o?function(e){return!!d.call(h,e)||!d.call(f,e)&&(p.test(e)?h[e]=!0:(f[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):o.mustUseProperty?e[o.propertyName]=null===n?3!==o.type&&"":n:(t=o.attributeName,r=o.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(o=o.type)||4===o&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(y,b);m[t]=new g(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(y,b);m[t]=new g(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(y,b);m[t]=new g(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){m[e]=new g(e,1,!1,e.toLowerCase(),null,!1,!1)})),m.xlinkHref=new g("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){m[e]=new g(e,1,!1,e.toLowerCase(),null,!0,!0)}));var w=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,k=Symbol.for("react.element"),x=Symbol.for("react.portal"),S=Symbol.for("react.fragment"),E=Symbol.for("react.strict_mode"),C=Symbol.for("react.profiler"),T=Symbol.for("react.provider"),_=Symbol.for("react.context"),L=Symbol.for("react.forward_ref"),R=Symbol.for("react.suspense"),j=Symbol.for("react.suspense_list"),N=Symbol.for("react.memo"),A=Symbol.for("react.lazy");Symbol.for("react.scope"),Symbol.for("react.debug_trace_mode");var P=Symbol.for("react.offscreen");Symbol.for("react.legacy_hidden"),Symbol.for("react.cache"),Symbol.for("react.tracing_marker");var O=Symbol.iterator;function I(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=O&&e[O]||e["@@iterator"])?e:null}var D,F=Object.assign;function M(e){if(void 0===D)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);D=t&&t[1]||""}return"\n"+D+e}var z=!1;function B(e,t){if(!e||z)return"";z=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(u){var r=u}Reflect.construct(e,[],t)}else{try{t.call()}catch(u){r=u}e.call(t.prototype)}else{try{throw Error()}catch(u){r=u}e()}}catch(u){if(u&&r&&"string"==typeof u.stack){for(var o=u.stack.split("\n"),a=r.stack.split("\n"),i=o.length-1,s=a.length-1;1<=i&&0<=s&&o[i]!==a[s];)s--;for(;1<=i&&0<=s;i--,s--)if(o[i]!==a[s]){if(1!==i||1!==s)do{if(i--,0>--s||o[i]!==a[s]){var l="\n"+o[i].replace(" at new "," at ");return e.displayName&&l.includes("<anonymous>")&&(l=l.replace("<anonymous>",e.displayName)),l}}while(1<=i&&0<=s);break}}}finally{z=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?M(e):""}function $(e){switch(e.tag){case 5:return M(e.type);case 16:return M("Lazy");case 13:return M("Suspense");case 19:return M("SuspenseList");case 0:case 2:case 15:return e=B(e.type,!1);case 11:return e=B(e.type.render,!1);case 1:return e=B(e.type,!0);default:return""}}function U(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case S:return"Fragment";case x:return"Portal";case C:return"Profiler";case E:return"StrictMode";case R:return"Suspense";case j:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case _:return(e.displayName||"Context")+".Consumer";case T:return(e._context.displayName||"Context")+".Provider";case L:var t=e.render;return(e=e.displayName)||(e=""!==(e=t.displayName||t.name||"")?"ForwardRef("+e+")":"ForwardRef"),e;case N:return null!==(t=e.displayName||null)?t:U(e.type)||"Memo";case A:t=e._payload,e=e._init;try{return U(e(t))}catch(n){}}return null}function q(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=(e=t.render).displayName||e.name||"",t.displayName||(""!==e?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return U(t);case 8:return t===E?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if("function"==typeof t)return t.displayName||t.name||null;if("string"==typeof t)return t}return null}function H(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function Q(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function Z(e){e._valueTracker||(e._valueTracker=function(e){var t=Q(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var o=n.get,a=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(e){r=""+e,a.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 V(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Q(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function W(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function G(e,t){var n=t.checked;return F({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function K(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=H(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function Y(e,t){null!=(t=t.checked)&&v(e,"checked",t,!1)}function X(e,t){Y(e,t);var n=H(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ee(e,t.type,n):t.hasOwnProperty("defaultValue")&&ee(e,t.type,H(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function J(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ee(e,t,n){"number"===t&&W(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var te=Array.isArray;function ne(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o<n.length;o++)t["$"+n[o]]=!0;for(n=0;n<e.length;n++)o=t.hasOwnProperty("$"+e[n].value),e[n].selected!==o&&(e[n].selected=o),o&&r&&(e[n].defaultSelected=!0)}else{for(n=""+H(n),t=null,o=0;o<e.length;o++){if(e[o].value===n)return e[o].selected=!0,void(r&&(e[o].defaultSelected=!0));null!==t||e[o].disabled||(t=e[o])}null!==t&&(t.selected=!0)}}function re(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(a(91));return F({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function oe(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(a(92));if(te(n)){if(1<n.length)throw Error(a(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:H(n)}}function ae(e,t){var n=H(t.value),r=H(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ie(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}function se(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function le(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?se(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var ue,ce,de=(ce=function(e,t){if("http://www.w3.org/2000/svg"!==e.namespaceURI||"innerHTML"in e)e.innerHTML=t;else{for((ue=ue||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=ue.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return ce(e,t)}))}:ce);function pe(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var fe={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},he=["Webkit","ms","Moz","O"];function ge(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||fe.hasOwnProperty(e)&&fe[e]?(""+t).trim():t+"px"}function me(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),o=ge(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}Object.keys(fe).forEach((function(e){he.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),fe[t]=fe[e]}))}));var ye=F({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function be(e,t){if(t){if(ye[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(a(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(a(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(a(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(a(62))}}function ve(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var we=null;function ke(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var xe=null,Se=null,Ee=null;function Ce(e){if(e=wo(e)){if("function"!=typeof xe)throw Error(a(280));var t=e.stateNode;t&&(t=xo(t),xe(e.stateNode,e.type,t))}}function Te(e){Se?Ee?Ee.push(e):Ee=[e]:Se=e}function _e(){if(Se){var e=Se,t=Ee;if(Ee=Se=null,Ce(e),t)for(e=0;e<t.length;e++)Ce(t[e])}}function Le(e,t){return e(t)}function Re(){}var je=!1;function Ne(e,t,n){if(je)return e(t,n);je=!0;try{return Le(e,t,n)}finally{je=!1,(null!==Se||null!==Ee)&&(Re(),_e())}}function Ae(e,t){var n=e.stateNode;if(null===n)return null;var r=xo(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(a(231,t,typeof n));return n}var Pe=!1;if(c)try{var Oe={};Object.defineProperty(Oe,"passive",{get:function(){Pe=!0}}),window.addEventListener("test",Oe,Oe),window.removeEventListener("test",Oe,Oe)}catch(ce){Pe=!1}function Ie(e,t,n,r,o,a,i,s,l){var u=Array.prototype.slice.call(arguments,3);try{t.apply(n,u)}catch(c){this.onError(c)}}var De=!1,Fe=null,Me=!1,ze=null,Be={onError:function(e){De=!0,Fe=e}};function $e(e,t,n,r,o,a,i,s,l){De=!1,Fe=null,Ie.apply(Be,arguments)}function Ue(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(4098&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function qe(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function He(e){if(Ue(e)!==e)throw Error(a(188))}function Qe(e){return null!==(e=function(e){var t=e.alternate;if(!t){if(null===(t=Ue(e)))throw Error(a(188));return t!==e?null:e}for(var n=e,r=t;;){var o=n.return;if(null===o)break;var i=o.alternate;if(null===i){if(null!==(r=o.return)){n=r;continue}break}if(o.child===i.child){for(i=o.child;i;){if(i===n)return He(o),e;if(i===r)return He(o),t;i=i.sibling}throw Error(a(188))}if(n.return!==r.return)n=o,r=i;else{for(var s=!1,l=o.child;l;){if(l===n){s=!0,n=o,r=i;break}if(l===r){s=!0,r=o,n=i;break}l=l.sibling}if(!s){for(l=i.child;l;){if(l===n){s=!0,n=i,r=o;break}if(l===r){s=!0,r=i,n=o;break}l=l.sibling}if(!s)throw Error(a(189))}}if(n.alternate!==r)throw Error(a(190))}if(3!==n.tag)throw Error(a(188));return n.stateNode.current===n?e:t}(e))?Ze(e):null}function Ze(e){if(5===e.tag||6===e.tag)return e;for(e=e.child;null!==e;){var t=Ze(e);if(null!==t)return t;e=e.sibling}return null}var Ve=o.unstable_scheduleCallback,We=o.unstable_cancelCallback,Ge=o.unstable_shouldYield,Ke=o.unstable_requestPaint,Ye=o.unstable_now,Xe=o.unstable_getCurrentPriorityLevel,Je=o.unstable_ImmediatePriority,et=o.unstable_UserBlockingPriority,tt=o.unstable_NormalPriority,nt=o.unstable_LowPriority,rt=o.unstable_IdlePriority,ot=null,at=null;var it=Math.clz32?Math.clz32:function(e){return e>>>=0,0===e?32:31-(st(e)/lt|0)|0},st=Math.log,lt=Math.LN2;var ut=64,ct=4194304;function dt(e){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: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 4194240&e;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&e;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function pt(e,t){var n=e.pendingLanes;if(0===n)return 0;var r=0,o=e.suspendedLanes,a=e.pingedLanes,i=268435455&n;if(0!==i){var s=i&~o;0!==s?r=dt(s):0!==(a&=i)&&(r=dt(a))}else 0!==(i=n&~o)?r=dt(i):0!==a&&(r=dt(a));if(0===r)return 0;if(0!==t&&t!==r&&0==(t&o)&&((o=r&-r)>=(a=t&-t)||16===o&&0!=(4194240&a)))return t;if(0!=(4&r)&&(r|=16&n),0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)o=1<<(n=31-it(t)),r|=e[n],t&=~o;return r}function ft(e,t){switch(e){case 1:case 2:case 4:return t+250;case 8:case 16:case 32:case 64: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 ht(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function gt(){var e=ut;return 0==(4194240&(ut<<=1))&&(ut=64),e}function mt(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function yt(e,t,n){e.pendingLanes|=t,536870912!==t&&(e.suspendedLanes=0,e.pingedLanes=0),(e=e.eventTimes)[t=31-it(t)]=n}function bt(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-it(n),o=1<<r;o&t|e[r]&t&&(e[r]|=t),n&=~o}}var vt=0;function wt(e){return 1<(e&=-e)?4<e?0!=(268435455&e)?16:536870912:4:1}var kt,xt,St,Et,Ct,Tt=!1,_t=[],Lt=null,Rt=null,jt=null,Nt=new Map,At=new Map,Pt=[],Ot="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function It(e,t){switch(e){case"focusin":case"focusout":Lt=null;break;case"dragenter":case"dragleave":Rt=null;break;case"mouseover":case"mouseout":jt=null;break;case"pointerover":case"pointerout":Nt.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":At.delete(t.pointerId)}}function Dt(e,t,n,r,o,a){return null===e||e.nativeEvent!==a?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:a,targetContainers:[o]},null!==t&&(null!==(t=wo(t))&&xt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==o&&-1===t.indexOf(o)&&t.push(o),e)}function Ft(e){var t=vo(e.target);if(null!==t){var n=Ue(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=qe(n)))return e.blockedOn=t,void Ct(e.priority,(function(){St(n)}))}else if(3===t&&n.stateNode.current.memoizedState.isDehydrated)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function Mt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Gt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=wo(n))&&xt(t),e.blockedOn=n,!1;var r=new(n=e.nativeEvent).constructor(n.type,n);we=r,n.target.dispatchEvent(r),we=null,t.shift()}return!0}function zt(e,t,n){Mt(e)&&n.delete(t)}function Bt(){Tt=!1,null!==Lt&&Mt(Lt)&&(Lt=null),null!==Rt&&Mt(Rt)&&(Rt=null),null!==jt&&Mt(jt)&&(jt=null),Nt.forEach(zt),At.forEach(zt)}function $t(e,t){e.blockedOn===t&&(e.blockedOn=null,Tt||(Tt=!0,o.unstable_scheduleCallback(o.unstable_NormalPriority,Bt)))}function Ut(e){function t(t){return $t(t,e)}if(0<_t.length){$t(_t[0],e);for(var n=1;n<_t.length;n++){var r=_t[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==Lt&&$t(Lt,e),null!==Rt&&$t(Rt,e),null!==jt&&$t(jt,e),Nt.forEach(t),At.forEach(t),n=0;n<Pt.length;n++)(r=Pt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<Pt.length&&null===(n=Pt[0]).blockedOn;)Ft(n),null===n.blockedOn&&Pt.shift()}var qt=w.ReactCurrentBatchConfig,Ht=!0;function Qt(e,t,n,r){var o=vt,a=qt.transition;qt.transition=null;try{vt=1,Vt(e,t,n,r)}finally{vt=o,qt.transition=a}}function Zt(e,t,n,r){var o=vt,a=qt.transition;qt.transition=null;try{vt=4,Vt(e,t,n,r)}finally{vt=o,qt.transition=a}}function Vt(e,t,n,r){if(Ht){var o=Gt(e,t,n,r);if(null===o)Hr(e,t,r,Wt,n),It(e,r);else if(function(e,t,n,r,o){switch(t){case"focusin":return Lt=Dt(Lt,e,t,n,r,o),!0;case"dragenter":return Rt=Dt(Rt,e,t,n,r,o),!0;case"mouseover":return jt=Dt(jt,e,t,n,r,o),!0;case"pointerover":var a=o.pointerId;return Nt.set(a,Dt(Nt.get(a)||null,e,t,n,r,o)),!0;case"gotpointercapture":return a=o.pointerId,At.set(a,Dt(At.get(a)||null,e,t,n,r,o)),!0}return!1}(o,e,t,n,r))r.stopPropagation();else if(It(e,r),4&t&&-1<Ot.indexOf(e)){for(;null!==o;){var a=wo(o);if(null!==a&&kt(a),null===(a=Gt(e,t,n,r))&&Hr(e,t,r,Wt,n),a===o)break;o=a}null!==o&&r.stopPropagation()}else Hr(e,t,r,null,n)}}var Wt=null;function Gt(e,t,n,r){if(Wt=null,null!==(e=vo(e=ke(r))))if(null===(t=Ue(e)))e=null;else if(13===(n=t.tag)){if(null!==(e=qe(t)))return e;e=null}else if(3===n){if(t.stateNode.current.memoizedState.isDehydrated)return 3===t.tag?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null);return Wt=e,null}function Kt(e){switch(e){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(Xe()){case Je:return 1;case et:return 4;case tt:case nt:return 16;case rt:return 536870912;default:return 16}default:return 16}}var Yt=null,Xt=null,Jt=null;function en(){if(Jt)return Jt;var e,t,n=Xt,r=n.length,o="value"in Yt?Yt.value:Yt.textContent,a=o.length;for(e=0;e<r&&n[e]===o[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===o[a-t];t++);return Jt=o.slice(e,1<t?1-t:void 0)}function tn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function nn(){return!0}function rn(){return!1}function on(e){function t(t,n,r,o,a){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=o,this.target=a,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(o):o[i]);return this.isDefaultPrevented=(null!=o.defaultPrevented?o.defaultPrevented:!1===o.returnValue)?nn:rn,this.isPropagationStopped=rn,this}return F(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=nn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=nn)},persist:function(){},isPersistent:nn}),t}var an,sn,ln,un={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},cn=on(un),dn=F({},un,{view:0,detail:0}),pn=on(dn),fn=F({},dn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Cn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==ln&&(ln&&"mousemove"===e.type?(an=e.screenX-ln.screenX,sn=e.screenY-ln.screenY):sn=an=0,ln=e),an)},movementY:function(e){return"movementY"in e?e.movementY:sn}}),hn=on(fn),gn=on(F({},fn,{dataTransfer:0})),mn=on(F({},dn,{relatedTarget:0})),yn=on(F({},un,{animationName:0,elapsedTime:0,pseudoElement:0})),bn=F({},un,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),vn=on(bn),wn=on(F({},un,{data:0})),kn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},xn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},Sn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function En(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Sn[e])&&!!t[e]}function Cn(){return En}var Tn=F({},dn,{key:function(e){if(e.key){var t=kn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=tn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?xn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Cn,charCode:function(e){return"keypress"===e.type?tn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?tn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),_n=on(Tn),Ln=on(F({},fn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Rn=on(F({},dn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Cn})),jn=on(F({},un,{propertyName:0,elapsedTime:0,pseudoElement:0})),Nn=F({},fn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),An=on(Nn),Pn=[9,13,27,32],On=c&&"CompositionEvent"in window,In=null;c&&"documentMode"in document&&(In=document.documentMode);var Dn=c&&"TextEvent"in window&&!In,Fn=c&&(!On||In&&8<In&&11>=In),Mn=String.fromCharCode(32),zn=!1;function Bn(e,t){switch(e){case"keyup":return-1!==Pn.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 Un=!1;var qn={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 Hn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!qn[e.type]:"textarea"===t}function Qn(e,t,n,r){Te(r),0<(t=Zr(t,"onChange")).length&&(n=new cn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Zn=null,Vn=null;function Wn(e){Mr(e,0)}function Gn(e){if(V(ko(e)))return e}function Kn(e,t){if("change"===e)return t}var Yn=!1;if(c){var Xn;if(c){var Jn="oninput"in document;if(!Jn){var er=document.createElement("div");er.setAttribute("oninput","return;"),Jn="function"==typeof er.oninput}Xn=Jn}else Xn=!1;Yn=Xn&&(!document.documentMode||9<document.documentMode)}function tr(){Zn&&(Zn.detachEvent("onpropertychange",nr),Vn=Zn=null)}function nr(e){if("value"===e.propertyName&&Gn(Vn)){var t=[];Qn(t,Vn,e,ke(e)),Ne(Wn,t)}}function rr(e,t,n){"focusin"===e?(tr(),Vn=n,(Zn=t).attachEvent("onpropertychange",nr)):"focusout"===e&&tr()}function or(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Gn(Vn)}function ar(e,t){if("click"===e)return Gn(t)}function ir(e,t){if("input"===e||"change"===e)return Gn(t)}var sr="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t};function lr(e,t){if(sr(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var o=n[r];if(!d.call(t,o)||!sr(e[o],t[o]))return!1}return!0}function ur(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function cr(e,t){var n,r=ur(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=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=ur(r)}}function dr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?dr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function pr(){for(var e=window,t=W();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=W((e=t.contentWindow).document)}return t}function fr(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)}function hr(e){var t=pr(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&dr(n.ownerDocument.documentElement,n)){if(null!==r&&fr(n))if(t=r.start,void 0===(e=r.end)&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if((e=(t=n.ownerDocument||document)&&t.defaultView||window).getSelection){e=e.getSelection();var o=n.textContent.length,a=Math.min(r.start,o);r=void 0===r.end?a:Math.min(r.end,o),!e.extend&&a>r&&(o=r,r=a,a=o),o=cr(n,a);var i=cr(n,r);o&&i&&(1!==e.rangeCount||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&((t=t.createRange()).setStart(o.node,o.offset),e.removeAllRanges(),a>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}for(t=[],e=n;e=e.parentNode;)1===e.nodeType&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for("function"==typeof n.focus&&n.focus(),n=0;n<t.length;n++)(e=t[n]).element.scrollLeft=e.left,e.element.scrollTop=e.top}}var gr=c&&"documentMode"in document&&11>=document.documentMode,mr=null,yr=null,br=null,vr=!1;function wr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;vr||null==mr||mr!==W(r)||("selectionStart"in(r=mr)&&fr(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},br&&lr(br,r)||(br=r,0<(r=Zr(yr,"onSelect")).length&&(t=new cn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=mr)))}function kr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var xr={animationend:kr("Animation","AnimationEnd"),animationiteration:kr("Animation","AnimationIteration"),animationstart:kr("Animation","AnimationStart"),transitionend:kr("Transition","TransitionEnd")},Sr={},Er={};function Cr(e){if(Sr[e])return Sr[e];if(!xr[e])return e;var t,n=xr[e];for(t in n)if(n.hasOwnProperty(t)&&t in Er)return Sr[e]=n[t];return e}c&&(Er=document.createElement("div").style,"AnimationEvent"in window||(delete xr.animationend.animation,delete xr.animationiteration.animation,delete xr.animationstart.animation),"TransitionEvent"in window||delete xr.transitionend.transition);var Tr=Cr("animationend"),_r=Cr("animationiteration"),Lr=Cr("animationstart"),Rr=Cr("transitionend"),jr=new Map,Nr="abort auxClick 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 Ar(e,t){jr.set(e,t),l(t,[e])}for(var Pr=0;Pr<Nr.length;Pr++){var Or=Nr[Pr];Ar(Or.toLowerCase(),"on"+(Or[0].toUpperCase()+Or.slice(1)))}Ar(Tr,"onAnimationEnd"),Ar(_r,"onAnimationIteration"),Ar(Lr,"onAnimationStart"),Ar("dblclick","onDoubleClick"),Ar("focusin","onFocus"),Ar("focusout","onBlur"),Ar(Rr,"onTransitionEnd"),u("onMouseEnter",["mouseout","mouseover"]),u("onMouseLeave",["mouseout","mouseover"]),u("onPointerEnter",["pointerout","pointerover"]),u("onPointerLeave",["pointerout","pointerover"]),l("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),l("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),l("onBeforeInput",["compositionend","keypress","textInput","paste"]),l("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),l("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),l("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Ir="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Dr=new Set("cancel close invalid load scroll toggle".split(" ").concat(Ir));function Fr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,o,i,s,l,u){if($e.apply(this,arguments),De){if(!De)throw Error(a(198));var c=Fe;De=!1,Fe=null,Me||(Me=!0,ze=c)}}(r,t,void 0,e),e.currentTarget=null}function Mr(e,t){t=0!=(4&t);for(var n=0;n<e.length;n++){var r=e[n],o=r.event;r=r.listeners;e:{var a=void 0;if(t)for(var i=r.length-1;0<=i;i--){var s=r[i],l=s.instance,u=s.currentTarget;if(s=s.listener,l!==a&&o.isPropagationStopped())break e;Fr(o,s,u),a=l}else for(i=0;i<r.length;i++){if(l=(s=r[i]).instance,u=s.currentTarget,s=s.listener,l!==a&&o.isPropagationStopped())break e;Fr(o,s,u),a=l}}}if(Me)throw e=ze,Me=!1,ze=null,e}function zr(e,t){var n=t[mo];void 0===n&&(n=t[mo]=new Set);var r=e+"__bubble";n.has(r)||(qr(t,e,2,!1),n.add(r))}function Br(e,t,n){var r=0;t&&(r|=4),qr(n,e,r,t)}var $r="_reactListening"+Math.random().toString(36).slice(2);function Ur(e){if(!e[$r]){e[$r]=!0,i.forEach((function(t){"selectionchange"!==t&&(Dr.has(t)||Br(t,!1,e),Br(t,!0,e))}));var t=9===e.nodeType?e:e.ownerDocument;null===t||t[$r]||(t[$r]=!0,Br("selectionchange",!1,t))}}function qr(e,t,n,r){switch(Kt(t)){case 1:var o=Qt;break;case 4:o=Zt;break;default:o=Vt}n=o.bind(null,t,n,e),o=void 0,!Pe||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(o=!0),r?void 0!==o?e.addEventListener(t,n,{capture:!0,passive:o}):e.addEventListener(t,n,!0):void 0!==o?e.addEventListener(t,n,{passive:o}):e.addEventListener(t,n,!1)}function Hr(e,t,n,r,o){var a=r;if(0==(1&t)&&0==(2&t)&&null!==r)e:for(;;){if(null===r)return;var i=r.tag;if(3===i||4===i){var s=r.stateNode.containerInfo;if(s===o||8===s.nodeType&&s.parentNode===o)break;if(4===i)for(i=r.return;null!==i;){var l=i.tag;if((3===l||4===l)&&((l=i.stateNode.containerInfo)===o||8===l.nodeType&&l.parentNode===o))return;i=i.return}for(;null!==s;){if(null===(i=vo(s)))return;if(5===(l=i.tag)||6===l){r=a=i;continue e}s=s.parentNode}}r=r.return}Ne((function(){var r=a,o=ke(n),i=[];e:{var s=jr.get(e);if(void 0!==s){var l=cn,u=e;switch(e){case"keypress":if(0===tn(n))break e;case"keydown":case"keyup":l=_n;break;case"focusin":u="focus",l=mn;break;case"focusout":u="blur",l=mn;break;case"beforeblur":case"afterblur":l=mn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":l=hn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":l=gn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":l=Rn;break;case Tr:case _r:case Lr:l=yn;break;case Rr:l=jn;break;case"scroll":l=pn;break;case"wheel":l=An;break;case"copy":case"cut":case"paste":l=vn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":l=Ln}var c=0!=(4&t),d=!c&&"scroll"===e,p=c?null!==s?s+"Capture":null:s;c=[];for(var f,h=r;null!==h;){var g=(f=h).stateNode;if(5===f.tag&&null!==g&&(f=g,null!==p&&(null!=(g=Ae(h,p))&&c.push(Qr(h,g,f)))),d)break;h=h.return}0<c.length&&(s=new l(s,u,null,n,o),i.push({event:s,listeners:c}))}}if(0==(7&t)){if(l="mouseout"===e||"pointerout"===e,(!(s="mouseover"===e||"pointerover"===e)||n===we||!(u=n.relatedTarget||n.fromElement)||!vo(u)&&!u[go])&&(l||s)&&(s=o.window===o?o:(s=o.ownerDocument)?s.defaultView||s.parentWindow:window,l?(l=r,null!==(u=(u=n.relatedTarget||n.toElement)?vo(u):null)&&(u!==(d=Ue(u))||5!==u.tag&&6!==u.tag)&&(u=null)):(l=null,u=r),l!==u)){if(c=hn,g="onMouseLeave",p="onMouseEnter",h="mouse","pointerout"!==e&&"pointerover"!==e||(c=Ln,g="onPointerLeave",p="onPointerEnter",h="pointer"),d=null==l?s:ko(l),f=null==u?s:ko(u),(s=new c(g,h+"leave",l,n,o)).target=d,s.relatedTarget=f,g=null,vo(o)===r&&((c=new c(p,h+"enter",u,n,o)).target=f,c.relatedTarget=d,g=c),d=g,l&&u)e:{for(p=u,h=0,f=c=l;f;f=Vr(f))h++;for(f=0,g=p;g;g=Vr(g))f++;for(;0<h-f;)c=Vr(c),h--;for(;0<f-h;)p=Vr(p),f--;for(;h--;){if(c===p||null!==p&&c===p.alternate)break e;c=Vr(c),p=Vr(p)}c=null}else c=null;null!==l&&Wr(i,s,l,c,!1),null!==u&&null!==d&&Wr(i,d,u,c,!0)}if("select"===(l=(s=r?ko(r):window).nodeName&&s.nodeName.toLowerCase())||"input"===l&&"file"===s.type)var m=Kn;else if(Hn(s))if(Yn)m=ir;else{m=or;var y=rr}else(l=s.nodeName)&&"input"===l.toLowerCase()&&("checkbox"===s.type||"radio"===s.type)&&(m=ar);switch(m&&(m=m(e,r))?Qn(i,m,n,o):(y&&y(e,s,r),"focusout"===e&&(y=s._wrapperState)&&y.controlled&&"number"===s.type&&ee(s,"number",s.value)),y=r?ko(r):window,e){case"focusin":(Hn(y)||"true"===y.contentEditable)&&(mr=y,yr=r,br=null);break;case"focusout":br=yr=mr=null;break;case"mousedown":vr=!0;break;case"contextmenu":case"mouseup":case"dragend":vr=!1,wr(i,n,o);break;case"selectionchange":if(gr)break;case"keydown":case"keyup":wr(i,n,o)}var b;if(On)e:{switch(e){case"compositionstart":var v="onCompositionStart";break e;case"compositionend":v="onCompositionEnd";break e;case"compositionupdate":v="onCompositionUpdate";break e}v=void 0}else Un?Bn(e,n)&&(v="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(v="onCompositionStart");v&&(Fn&&"ko"!==n.locale&&(Un||"onCompositionStart"!==v?"onCompositionEnd"===v&&Un&&(b=en()):(Xt="value"in(Yt=o)?Yt.value:Yt.textContent,Un=!0)),0<(y=Zr(r,v)).length&&(v=new wn(v,e,null,n,o),i.push({event:v,listeners:y}),b?v.data=b:null!==(b=$n(n))&&(v.data=b))),(b=Dn?function(e,t){switch(e){case"compositionend":return $n(t);case"keypress":return 32!==t.which?null:(zn=!0,Mn);case"textInput":return(e=t.data)===Mn&&zn?null:e;default:return null}}(e,n):function(e,t){if(Un)return"compositionend"===e||!On&&Bn(e,t)?(e=en(),Jt=Xt=Yt=null,Un=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Fn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(r=Zr(r,"onBeforeInput")).length&&(o=new wn("onBeforeInput","beforeinput",null,n,o),i.push({event:o,listeners:r}),o.data=b))}Mr(i,t)}))}function Qr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Zr(e,t){for(var n=t+"Capture",r=[];null!==e;){var o=e,a=o.stateNode;5===o.tag&&null!==a&&(o=a,null!=(a=Ae(e,n))&&r.unshift(Qr(e,a,o)),null!=(a=Ae(e,t))&&r.push(Qr(e,a,o))),e=e.return}return r}function Vr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Wr(e,t,n,r,o){for(var a=t._reactName,i=[];null!==n&&n!==r;){var s=n,l=s.alternate,u=s.stateNode;if(null!==l&&l===r)break;5===s.tag&&null!==u&&(s=u,o?null!=(l=Ae(n,a))&&i.unshift(Qr(n,l,s)):o||null!=(l=Ae(n,a))&&i.push(Qr(n,l,s))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}var Gr=/\r\n?/g,Kr=/\u0000|\uFFFD/g;function Yr(e){return("string"==typeof e?e:""+e).replace(Gr,"\n").replace(Kr,"")}function Xr(e,t,n){if(t=Yr(t),Yr(e)!==t&&n)throw Error(a(425))}function Jr(){}var eo=null,to=null;function no(e,t){return"textarea"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var ro="function"==typeof setTimeout?setTimeout:void 0,oo="function"==typeof clearTimeout?clearTimeout:void 0,ao="function"==typeof Promise?Promise:void 0,io="function"==typeof queueMicrotask?queueMicrotask:void 0!==ao?function(e){return ao.resolve(null).then(e).catch(so)}:ro;function so(e){setTimeout((function(){throw e}))}function lo(e,t){var n=t,r=0;do{var o=n.nextSibling;if(e.removeChild(n),o&&8===o.nodeType)if("/$"===(n=o.data)){if(0===r)return e.removeChild(o),void Ut(t);r--}else"$"!==n&&"$?"!==n&&"$!"!==n||r++;n=o}while(n);Ut(t)}function uo(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break;if(8===t){if("$"===(t=e.data)||"$!"===t||"$?"===t)break;if("/$"===t)return null}}return e}function co(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var po=Math.random().toString(36).slice(2),fo="__reactFiber$"+po,ho="__reactProps$"+po,go="__reactContainer$"+po,mo="__reactEvents$"+po,yo="__reactListeners$"+po,bo="__reactHandles$"+po;function vo(e){var t=e[fo];if(t)return t;for(var n=e.parentNode;n;){if(t=n[go]||n[fo]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=co(e);null!==e;){if(n=e[fo])return n;e=co(e)}return t}n=(e=n).parentNode}return null}function wo(e){return!(e=e[fo]||e[go])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function ko(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(a(33))}function xo(e){return e[ho]||null}var So=[],Eo=-1;function Co(e){return{current:e}}function To(e){0>Eo||(e.current=So[Eo],So[Eo]=null,Eo--)}function _o(e,t){Eo++,So[Eo]=e.current,e.current=t}var Lo={},Ro=Co(Lo),jo=Co(!1),No=Lo;function Ao(e,t){var n=e.type.contextTypes;if(!n)return Lo;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o,a={};for(o in n)a[o]=t[o];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=a),a}function Po(e){return null!=(e=e.childContextTypes)}function Oo(){To(jo),To(Ro)}function Io(e,t,n){if(Ro.current!==Lo)throw Error(a(168));_o(Ro,t),_o(jo,n)}function Do(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in t))throw Error(a(108,q(e)||"Unknown",o));return F({},n,r)}function Fo(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Lo,No=Ro.current,_o(Ro,e),_o(jo,jo.current),!0}function Mo(e,t,n){var r=e.stateNode;if(!r)throw Error(a(169));n?(e=Do(e,t,No),r.__reactInternalMemoizedMergedChildContext=e,To(jo),To(Ro),_o(Ro,e)):To(jo),_o(jo,n)}var zo=null,Bo=!1,$o=!1;function Uo(e){null===zo?zo=[e]:zo.push(e)}function qo(){if(!$o&&null!==zo){$o=!0;var e=0,t=vt;try{var n=zo;for(vt=1;e<n.length;e++){var r=n[e];do{r=r(!0)}while(null!==r)}zo=null,Bo=!1}catch(o){throw null!==zo&&(zo=zo.slice(e+1)),Ve(Je,qo),o}finally{vt=t,$o=!1}}return null}var Ho=[],Qo=0,Zo=null,Vo=0,Wo=[],Go=0,Ko=null,Yo=1,Xo="";function Jo(e,t){Ho[Qo++]=Vo,Ho[Qo++]=Zo,Zo=e,Vo=t}function ea(e,t,n){Wo[Go++]=Yo,Wo[Go++]=Xo,Wo[Go++]=Ko,Ko=e;var r=Yo;e=Xo;var o=32-it(r)-1;r&=~(1<<o),n+=1;var a=32-it(t)+o;if(30<a){var i=o-o%5;a=(r&(1<<i)-1).toString(32),r>>=i,o-=i,Yo=1<<32-it(t)+o|n<<o|r,Xo=a+e}else Yo=1<<a|n<<o|r,Xo=e}function ta(e){null!==e.return&&(Jo(e,1),ea(e,1,0))}function na(e){for(;e===Zo;)Zo=Ho[--Qo],Ho[Qo]=null,Vo=Ho[--Qo],Ho[Qo]=null;for(;e===Ko;)Ko=Wo[--Go],Wo[Go]=null,Xo=Wo[--Go],Wo[Go]=null,Yo=Wo[--Go],Wo[Go]=null}var ra=null,oa=null,aa=!1,ia=null;function sa(e,t){var n=Au(5,null,null,0);n.elementType="DELETED",n.stateNode=t,n.return=e,null===(t=e.deletions)?(e.deletions=[n],e.flags|=16):t.push(n)}function la(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,ra=e,oa=uo(t.firstChild),!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,ra=e,oa=null,!0);case 13:return null!==(t=8!==t.nodeType?null:t)&&(n=null!==Ko?{id:Yo,overflow:Xo}:null,e.memoizedState={dehydrated:t,treeContext:n,retryLane:1073741824},(n=Au(18,null,null,0)).stateNode=t,n.return=e,e.child=n,ra=e,oa=null,!0);default:return!1}}function ua(e){return 0!=(1&e.mode)&&0==(128&e.flags)}function ca(e){if(aa){var t=oa;if(t){var n=t;if(!la(e,t)){if(ua(e))throw Error(a(418));t=uo(n.nextSibling);var r=ra;t&&la(e,t)?sa(r,n):(e.flags=-4097&e.flags|2,aa=!1,ra=e)}}else{if(ua(e))throw Error(a(418));e.flags=-4097&e.flags|2,aa=!1,ra=e}}}function da(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;ra=e}function pa(e){if(e!==ra)return!1;if(!aa)return da(e),aa=!0,!1;var t;if((t=3!==e.tag)&&!(t=5!==e.tag)&&(t="head"!==(t=e.type)&&"body"!==t&&!no(e.type,e.memoizedProps)),t&&(t=oa)){if(ua(e))throw fa(),Error(a(418));for(;t;)sa(e,t),t=uo(t.nextSibling)}if(da(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(a(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){oa=uo(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}oa=null}}else oa=ra?uo(e.stateNode.nextSibling):null;return!0}function fa(){for(var e=oa;e;)e=uo(e.nextSibling)}function ha(){oa=ra=null,aa=!1}function ga(e){null===ia?ia=[e]:ia.push(e)}var ma=w.ReactCurrentBatchConfig;function ya(e,t){if(e&&e.defaultProps){for(var n in t=F({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var ba=Co(null),va=null,wa=null,ka=null;function xa(){ka=wa=va=null}function Sa(e){var t=ba.current;To(ba),e._currentValue=t}function Ea(e,t,n){for(;null!==e;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,null!==r&&(r.childLanes|=t)):null!==r&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function Ca(e,t){va=e,ka=wa=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(ws=!0),e.firstContext=null)}function Ta(e){var t=e._currentValue;if(ka!==e)if(e={context:e,memoizedValue:t,next:null},null===wa){if(null===va)throw Error(a(308));wa=e,va.dependencies={lanes:0,firstContext:e}}else wa=wa.next=e;return t}var _a=null;function La(e){null===_a?_a=[e]:_a.push(e)}function Ra(e,t,n,r){var o=t.interleaved;return null===o?(n.next=n,La(t)):(n.next=o.next,o.next=n),t.interleaved=n,ja(e,r)}function ja(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}var Na=!1;function Aa(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Pa(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Oa(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Ia(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,0!=(2&Rl)){var o=r.pending;return null===o?t.next=t:(t.next=o.next,o.next=t),r.pending=t,ja(e,n)}return null===(o=r.interleaved)?(t.next=t,La(r)):(t.next=o.next,o.next=t),r.interleaved=t,ja(e,n)}function Da(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,0!=(4194240&n))){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,bt(e,n)}}function Fa(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var o=null,a=null;if(null!==(n=n.firstBaseUpdate)){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===a?o=a=i:a=a.next=i,n=n.next}while(null!==n);null===a?o=a=t:a=a.next=t}else o=a=t;return n={baseState:r.baseState,firstBaseUpdate:o,lastBaseUpdate:a,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Ma(e,t,n,r){var o=e.updateQueue;Na=!1;var a=o.firstBaseUpdate,i=o.lastBaseUpdate,s=o.shared.pending;if(null!==s){o.shared.pending=null;var l=s,u=l.next;l.next=null,null===i?a=u:i.next=u,i=l;var c=e.alternate;null!==c&&((s=(c=c.updateQueue).lastBaseUpdate)!==i&&(null===s?c.firstBaseUpdate=u:s.next=u,c.lastBaseUpdate=l))}if(null!==a){var d=o.baseState;for(i=0,c=u=l=null,s=a;;){var p=s.lane,f=s.eventTime;if((r&p)===p){null!==c&&(c=c.next={eventTime:f,lane:0,tag:s.tag,payload:s.payload,callback:s.callback,next:null});e:{var h=e,g=s;switch(p=t,f=n,g.tag){case 1:if("function"==typeof(h=g.payload)){d=h.call(f,d,p);break e}d=h;break e;case 3:h.flags=-65537&h.flags|128;case 0:if(null==(p="function"==typeof(h=g.payload)?h.call(f,d,p):h))break e;d=F({},d,p);break e;case 2:Na=!0}}null!==s.callback&&0!==s.lane&&(e.flags|=64,null===(p=o.effects)?o.effects=[s]:p.push(s))}else f={eventTime:f,lane:p,tag:s.tag,payload:s.payload,callback:s.callback,next:null},null===c?(u=c=f,l=d):c=c.next=f,i|=p;if(null===(s=s.next)){if(null===(s=o.shared.pending))break;s=(p=s).next,p.next=null,o.lastBaseUpdate=p,o.shared.pending=null}}if(null===c&&(l=d),o.baseState=l,o.firstBaseUpdate=u,o.lastBaseUpdate=c,null!==(t=o.shared.interleaved)){o=t;do{i|=o.lane,o=o.next}while(o!==t)}else null===a&&(o.shared.lanes=0);Fl|=i,e.lanes=i,e.memoizedState=d}}function za(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],o=r.callback;if(null!==o){if(r.callback=null,r=n,"function"!=typeof o)throw Error(a(191,o));o.call(r)}}}var Ba=(new r.Component).refs;function $a(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:F({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var Ua={isMounted:function(e){return!!(e=e._reactInternals)&&Ue(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=tu(),o=nu(e),a=Oa(r,o);a.payload=t,null!=n&&(a.callback=n),null!==(t=Ia(e,a,o))&&(ru(t,e,o,r),Da(t,e,o))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=tu(),o=nu(e),a=Oa(r,o);a.tag=1,a.payload=t,null!=n&&(a.callback=n),null!==(t=Ia(e,a,o))&&(ru(t,e,o,r),Da(t,e,o))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=tu(),r=nu(e),o=Oa(n,r);o.tag=2,null!=t&&(o.callback=t),null!==(t=Ia(e,o,r))&&(ru(t,e,r,n),Da(t,e,r))}};function qa(e,t,n,r,o,a,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,a,i):!t.prototype||!t.prototype.isPureReactComponent||(!lr(n,r)||!lr(o,a))}function Ha(e,t,n){var r=!1,o=Lo,a=t.contextType;return"object"==typeof a&&null!==a?a=Ta(a):(o=Po(t)?No:Ro.current,a=(r=null!=(r=t.contextTypes))?Ao(e,o):Lo),t=new t(n,a),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=Ua,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=o,e.__reactInternalMemoizedMaskedChildContext=a),t}function Qa(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&&Ua.enqueueReplaceState(t,t.state,null)}function Za(e,t,n,r){var o=e.stateNode;o.props=n,o.state=e.memoizedState,o.refs=Ba,Aa(e);var a=t.contextType;"object"==typeof a&&null!==a?o.context=Ta(a):(a=Po(t)?No:Ro.current,o.context=Ao(e,a)),o.state=e.memoizedState,"function"==typeof(a=t.getDerivedStateFromProps)&&($a(e,t,a,n),o.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof o.getSnapshotBeforeUpdate||"function"!=typeof o.UNSAFE_componentWillMount&&"function"!=typeof o.componentWillMount||(t=o.state,"function"==typeof o.componentWillMount&&o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount(),t!==o.state&&Ua.enqueueReplaceState(o,o.state,null),Ma(e,n,o,r),o.state=e.memoizedState),"function"==typeof o.componentDidMount&&(e.flags|=4194308)}function Va(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(a(309));var r=n.stateNode}if(!r)throw Error(a(147,e));var o=r,i=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===i?t.ref:(t=function(e){var t=o.refs;t===Ba&&(t=o.refs={}),null===e?delete t[i]:t[i]=e},t._stringRef=i,t)}if("string"!=typeof e)throw Error(a(284));if(!n._owner)throw Error(a(290,e))}return e}function Wa(e,t){throw e=Object.prototype.toString.call(t),Error(a(31,"[object Object]"===e?"object with keys {"+Object.keys(t).join(", ")+"}":e))}function Ga(e){return(0,e._init)(e._payload)}function Ka(e){function t(t,n){if(e){var r=t.deletions;null===r?(t.deletions=[n],t.flags|=16):r.push(n)}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function o(e,t){return(e=Ou(e,t)).index=0,e.sibling=null,e}function i(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags|=2,n):r:(t.flags|=2,n):(t.flags|=1048576,n)}function s(t){return e&&null===t.alternate&&(t.flags|=2),t}function l(e,t,n,r){return null===t||6!==t.tag?((t=Mu(n,e.mode,r)).return=e,t):((t=o(t,n)).return=e,t)}function u(e,t,n,r){var a=n.type;return a===S?d(e,t,n.props.children,r,n.key):null!==t&&(t.elementType===a||"object"==typeof a&&null!==a&&a.$$typeof===A&&Ga(a)===t.type)?((r=o(t,n.props)).ref=Va(e,t,n),r.return=e,r):((r=Iu(n.type,n.key,n.props,null,e.mode,r)).ref=Va(e,t,n),r.return=e,r)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=zu(n,e.mode,r)).return=e,t):((t=o(t,n.children||[])).return=e,t)}function d(e,t,n,r,a){return null===t||7!==t.tag?((t=Du(n,e.mode,r,a)).return=e,t):((t=o(t,n)).return=e,t)}function p(e,t,n){if("string"==typeof t&&""!==t||"number"==typeof t)return(t=Mu(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case k:return(n=Iu(t.type,t.key,t.props,null,e.mode,n)).ref=Va(e,null,t),n.return=e,n;case x:return(t=zu(t,e.mode,n)).return=e,t;case A:return p(e,(0,t._init)(t._payload),n)}if(te(t)||I(t))return(t=Du(t,e.mode,n,null)).return=e,t;Wa(e,t)}return null}function f(e,t,n,r){var o=null!==t?t.key:null;if("string"==typeof n&&""!==n||"number"==typeof n)return null!==o?null:l(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case k:return n.key===o?u(e,t,n,r):null;case x:return n.key===o?c(e,t,n,r):null;case A:return f(e,t,(o=n._init)(n._payload),r)}if(te(n)||I(n))return null!==o?null:d(e,t,n,r,null);Wa(e,n)}return null}function h(e,t,n,r,o){if("string"==typeof r&&""!==r||"number"==typeof r)return l(t,e=e.get(n)||null,""+r,o);if("object"==typeof r&&null!==r){switch(r.$$typeof){case k:return u(t,e=e.get(null===r.key?n:r.key)||null,r,o);case x:return c(t,e=e.get(null===r.key?n:r.key)||null,r,o);case A:return h(e,t,n,(0,r._init)(r._payload),o)}if(te(r)||I(r))return d(t,e=e.get(n)||null,r,o,null);Wa(t,r)}return null}function g(o,a,s,l){for(var u=null,c=null,d=a,g=a=0,m=null;null!==d&&g<s.length;g++){d.index>g?(m=d,d=null):m=d.sibling;var y=f(o,d,s[g],l);if(null===y){null===d&&(d=m);break}e&&d&&null===y.alternate&&t(o,d),a=i(y,a,g),null===c?u=y:c.sibling=y,c=y,d=m}if(g===s.length)return n(o,d),aa&&Jo(o,g),u;if(null===d){for(;g<s.length;g++)null!==(d=p(o,s[g],l))&&(a=i(d,a,g),null===c?u=d:c.sibling=d,c=d);return aa&&Jo(o,g),u}for(d=r(o,d);g<s.length;g++)null!==(m=h(d,o,g,s[g],l))&&(e&&null!==m.alternate&&d.delete(null===m.key?g:m.key),a=i(m,a,g),null===c?u=m:c.sibling=m,c=m);return e&&d.forEach((function(e){return t(o,e)})),aa&&Jo(o,g),u}function m(o,s,l,u){var c=I(l);if("function"!=typeof c)throw Error(a(150));if(null==(l=c.call(l)))throw Error(a(151));for(var d=c=null,g=s,m=s=0,y=null,b=l.next();null!==g&&!b.done;m++,b=l.next()){g.index>m?(y=g,g=null):y=g.sibling;var v=f(o,g,b.value,u);if(null===v){null===g&&(g=y);break}e&&g&&null===v.alternate&&t(o,g),s=i(v,s,m),null===d?c=v:d.sibling=v,d=v,g=y}if(b.done)return n(o,g),aa&&Jo(o,m),c;if(null===g){for(;!b.done;m++,b=l.next())null!==(b=p(o,b.value,u))&&(s=i(b,s,m),null===d?c=b:d.sibling=b,d=b);return aa&&Jo(o,m),c}for(g=r(o,g);!b.done;m++,b=l.next())null!==(b=h(g,o,m,b.value,u))&&(e&&null!==b.alternate&&g.delete(null===b.key?m:b.key),s=i(b,s,m),null===d?c=b:d.sibling=b,d=b);return e&&g.forEach((function(e){return t(o,e)})),aa&&Jo(o,m),c}return function e(r,a,i,l){if("object"==typeof i&&null!==i&&i.type===S&&null===i.key&&(i=i.props.children),"object"==typeof i&&null!==i){switch(i.$$typeof){case k:e:{for(var u=i.key,c=a;null!==c;){if(c.key===u){if((u=i.type)===S){if(7===c.tag){n(r,c.sibling),(a=o(c,i.props.children)).return=r,r=a;break e}}else if(c.elementType===u||"object"==typeof u&&null!==u&&u.$$typeof===A&&Ga(u)===c.type){n(r,c.sibling),(a=o(c,i.props)).ref=Va(r,c,i),a.return=r,r=a;break e}n(r,c);break}t(r,c),c=c.sibling}i.type===S?((a=Du(i.props.children,r.mode,l,i.key)).return=r,r=a):((l=Iu(i.type,i.key,i.props,null,r.mode,l)).ref=Va(r,a,i),l.return=r,r=l)}return s(r);case x:e:{for(c=i.key;null!==a;){if(a.key===c){if(4===a.tag&&a.stateNode.containerInfo===i.containerInfo&&a.stateNode.implementation===i.implementation){n(r,a.sibling),(a=o(a,i.children||[])).return=r,r=a;break e}n(r,a);break}t(r,a),a=a.sibling}(a=zu(i,r.mode,l)).return=r,r=a}return s(r);case A:return e(r,a,(c=i._init)(i._payload),l)}if(te(i))return g(r,a,i,l);if(I(i))return m(r,a,i,l);Wa(r,i)}return"string"==typeof i&&""!==i||"number"==typeof i?(i=""+i,null!==a&&6===a.tag?(n(r,a.sibling),(a=o(a,i)).return=r,r=a):(n(r,a),(a=Mu(i,r.mode,l)).return=r,r=a),s(r)):n(r,a)}}var Ya=Ka(!0),Xa=Ka(!1),Ja={},ei=Co(Ja),ti=Co(Ja),ni=Co(Ja);function ri(e){if(e===Ja)throw Error(a(174));return e}function oi(e,t){switch(_o(ni,t),_o(ti,e),_o(ei,Ja),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:le(null,"");break;default:t=le(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}To(ei),_o(ei,t)}function ai(){To(ei),To(ti),To(ni)}function ii(e){ri(ni.current);var t=ri(ei.current),n=le(t,e.type);t!==n&&(_o(ti,e),_o(ei,n))}function si(e){ti.current===e&&(To(ei),To(ti))}var li=Co(0);function ui(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))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}var ci=[];function di(){for(var e=0;e<ci.length;e++)ci[e]._workInProgressVersionPrimary=null;ci.length=0}var pi=w.ReactCurrentDispatcher,fi=w.ReactCurrentBatchConfig,hi=0,gi=null,mi=null,yi=null,bi=!1,vi=!1,wi=0,ki=0;function xi(){throw Error(a(321))}function Si(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!sr(e[n],t[n]))return!1;return!0}function Ei(e,t,n,r,o,i){if(hi=i,gi=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,pi.current=null===e||null===e.memoizedState?ss:ls,e=n(r,o),vi){i=0;do{if(vi=!1,wi=0,25<=i)throw Error(a(301));i+=1,yi=mi=null,t.updateQueue=null,pi.current=us,e=n(r,o)}while(vi)}if(pi.current=is,t=null!==mi&&null!==mi.next,hi=0,yi=mi=gi=null,bi=!1,t)throw Error(a(300));return e}function Ci(){var e=0!==wi;return wi=0,e}function Ti(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===yi?gi.memoizedState=yi=e:yi=yi.next=e,yi}function _i(){if(null===mi){var e=gi.alternate;e=null!==e?e.memoizedState:null}else e=mi.next;var t=null===yi?gi.memoizedState:yi.next;if(null!==t)yi=t,mi=e;else{if(null===e)throw Error(a(310));e={memoizedState:(mi=e).memoizedState,baseState:mi.baseState,baseQueue:mi.baseQueue,queue:mi.queue,next:null},null===yi?gi.memoizedState=yi=e:yi=yi.next=e}return yi}function Li(e,t){return"function"==typeof t?t(e):t}function Ri(e){var t=_i(),n=t.queue;if(null===n)throw Error(a(311));n.lastRenderedReducer=e;var r=mi,o=r.baseQueue,i=n.pending;if(null!==i){if(null!==o){var s=o.next;o.next=i.next,i.next=s}r.baseQueue=o=i,n.pending=null}if(null!==o){i=o.next,r=r.baseState;var l=s=null,u=null,c=i;do{var d=c.lane;if((hi&d)===d)null!==u&&(u=u.next={lane:0,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null}),r=c.hasEagerState?c.eagerState:e(r,c.action);else{var p={lane:d,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null};null===u?(l=u=p,s=r):u=u.next=p,gi.lanes|=d,Fl|=d}c=c.next}while(null!==c&&c!==i);null===u?s=r:u.next=l,sr(r,t.memoizedState)||(ws=!0),t.memoizedState=r,t.baseState=s,t.baseQueue=u,n.lastRenderedState=r}if(null!==(e=n.interleaved)){o=e;do{i=o.lane,gi.lanes|=i,Fl|=i,o=o.next}while(o!==e)}else null===o&&(n.lanes=0);return[t.memoizedState,n.dispatch]}function ji(e){var t=_i(),n=t.queue;if(null===n)throw Error(a(311));n.lastRenderedReducer=e;var r=n.dispatch,o=n.pending,i=t.memoizedState;if(null!==o){n.pending=null;var s=o=o.next;do{i=e(i,s.action),s=s.next}while(s!==o);sr(i,t.memoizedState)||(ws=!0),t.memoizedState=i,null===t.baseQueue&&(t.baseState=i),n.lastRenderedState=i}return[i,r]}function Ni(){}function Ai(e,t){var n=gi,r=_i(),o=t(),i=!sr(r.memoizedState,o);if(i&&(r.memoizedState=o,ws=!0),r=r.queue,Hi(Ii.bind(null,n,r,e),[e]),r.getSnapshot!==t||i||null!==yi&&1&yi.memoizedState.tag){if(n.flags|=2048,zi(9,Oi.bind(null,n,r,o,t),void 0,null),null===jl)throw Error(a(349));0!=(30&hi)||Pi(n,t,o)}return o}function Pi(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},null===(t=gi.updateQueue)?(t={lastEffect:null,stores:null},gi.updateQueue=t,t.stores=[e]):null===(n=t.stores)?t.stores=[e]:n.push(e)}function Oi(e,t,n,r){t.value=n,t.getSnapshot=r,Di(t)&&Fi(e)}function Ii(e,t,n){return n((function(){Di(t)&&Fi(e)}))}function Di(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!sr(e,n)}catch(r){return!0}}function Fi(e){var t=ja(e,1);null!==t&&ru(t,e,1,-1)}function Mi(e){var t=Ti();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Li,lastRenderedState:e},t.queue=e,e=e.dispatch=ns.bind(null,gi,e),[t.memoizedState,e]}function zi(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=gi.updateQueue)?(t={lastEffect:null,stores:null},gi.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function Bi(){return _i().memoizedState}function $i(e,t,n,r){var o=Ti();gi.flags|=e,o.memoizedState=zi(1|t,n,void 0,void 0===r?null:r)}function Ui(e,t,n,r){var o=_i();r=void 0===r?null:r;var a=void 0;if(null!==mi){var i=mi.memoizedState;if(a=i.destroy,null!==r&&Si(r,i.deps))return void(o.memoizedState=zi(t,n,a,r))}gi.flags|=e,o.memoizedState=zi(1|t,n,a,r)}function qi(e,t){return $i(8390656,8,e,t)}function Hi(e,t){return Ui(2048,8,e,t)}function Qi(e,t){return Ui(4,2,e,t)}function Zi(e,t){return Ui(4,4,e,t)}function Vi(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Wi(e,t,n){return n=null!=n?n.concat([e]):null,Ui(4,4,Vi.bind(null,t,e),n)}function Gi(){}function Ki(e,t){var n=_i();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&Si(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Yi(e,t){var n=_i();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&Si(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Xi(e,t,n){return 0==(21&hi)?(e.baseState&&(e.baseState=!1,ws=!0),e.memoizedState=n):(sr(n,t)||(n=gt(),gi.lanes|=n,Fl|=n,e.baseState=!0),t)}function Ji(e,t){var n=vt;vt=0!==n&&4>n?n:4,e(!0);var r=fi.transition;fi.transition={};try{e(!1),t()}finally{vt=n,fi.transition=r}}function es(){return _i().memoizedState}function ts(e,t,n){var r=nu(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},rs(e))os(t,n);else if(null!==(n=Ra(e,t,n,r))){ru(n,e,r,tu()),as(n,t,r)}}function ns(e,t,n){var r=nu(e),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(rs(e))os(t,o);else{var a=e.alternate;if(0===e.lanes&&(null===a||0===a.lanes)&&null!==(a=t.lastRenderedReducer))try{var i=t.lastRenderedState,s=a(i,n);if(o.hasEagerState=!0,o.eagerState=s,sr(s,i)){var l=t.interleaved;return null===l?(o.next=o,La(t)):(o.next=l.next,l.next=o),void(t.interleaved=o)}}catch(u){}null!==(n=Ra(e,t,o,r))&&(ru(n,e,r,o=tu()),as(n,t,r))}}function rs(e){var t=e.alternate;return e===gi||null!==t&&t===gi}function os(e,t){vi=bi=!0;var n=e.pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function as(e,t,n){if(0!=(4194240&n)){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,bt(e,n)}}var is={readContext:Ta,useCallback:xi,useContext:xi,useEffect:xi,useImperativeHandle:xi,useInsertionEffect:xi,useLayoutEffect:xi,useMemo:xi,useReducer:xi,useRef:xi,useState:xi,useDebugValue:xi,useDeferredValue:xi,useTransition:xi,useMutableSource:xi,useSyncExternalStore:xi,useId:xi,unstable_isNewReconciler:!1},ss={readContext:Ta,useCallback:function(e,t){return Ti().memoizedState=[e,void 0===t?null:t],e},useContext:Ta,useEffect:qi,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,$i(4194308,4,Vi.bind(null,t,e),n)},useLayoutEffect:function(e,t){return $i(4194308,4,e,t)},useInsertionEffect:function(e,t){return $i(4,2,e,t)},useMemo:function(e,t){var n=Ti();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Ti();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=ts.bind(null,gi,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},Ti().memoizedState=e},useState:Mi,useDebugValue:Gi,useDeferredValue:function(e){return Ti().memoizedState=e},useTransition:function(){var e=Mi(!1),t=e[0];return e=Ji.bind(null,e[1]),Ti().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=gi,o=Ti();if(aa){if(void 0===n)throw Error(a(407));n=n()}else{if(n=t(),null===jl)throw Error(a(349));0!=(30&hi)||Pi(r,t,n)}o.memoizedState=n;var i={value:n,getSnapshot:t};return o.queue=i,qi(Ii.bind(null,r,i,e),[e]),r.flags|=2048,zi(9,Oi.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=Ti(),t=jl.identifierPrefix;if(aa){var n=Xo;t=":"+t+"R"+(n=(Yo&~(1<<32-it(Yo)-1)).toString(32)+n),0<(n=wi++)&&(t+="H"+n.toString(32)),t+=":"}else t=":"+t+"r"+(n=ki++).toString(32)+":";return e.memoizedState=t},unstable_isNewReconciler:!1},ls={readContext:Ta,useCallback:Ki,useContext:Ta,useEffect:Hi,useImperativeHandle:Wi,useInsertionEffect:Qi,useLayoutEffect:Zi,useMemo:Yi,useReducer:Ri,useRef:Bi,useState:function(){return Ri(Li)},useDebugValue:Gi,useDeferredValue:function(e){return Xi(_i(),mi.memoizedState,e)},useTransition:function(){return[Ri(Li)[0],_i().memoizedState]},useMutableSource:Ni,useSyncExternalStore:Ai,useId:es,unstable_isNewReconciler:!1},us={readContext:Ta,useCallback:Ki,useContext:Ta,useEffect:Hi,useImperativeHandle:Wi,useInsertionEffect:Qi,useLayoutEffect:Zi,useMemo:Yi,useReducer:ji,useRef:Bi,useState:function(){return ji(Li)},useDebugValue:Gi,useDeferredValue:function(e){var t=_i();return null===mi?t.memoizedState=e:Xi(t,mi.memoizedState,e)},useTransition:function(){return[ji(Li)[0],_i().memoizedState]},useMutableSource:Ni,useSyncExternalStore:Ai,useId:es,unstable_isNewReconciler:!1};function cs(e,t){try{var n="",r=t;do{n+=$(r),r=r.return}while(r);var o=n}catch(a){o="\nError generating stack: "+a.message+"\n"+a.stack}return{value:e,source:t,stack:o,digest:null}}function ds(e,t,n){return{value:e,source:null,stack:null!=n?n:null,digest:null!=t?t:null}}function ps(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}var fs="function"==typeof WeakMap?WeakMap:Map;function hs(e,t,n){(n=Oa(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Ql||(Ql=!0,Zl=r),ps(0,t)},n}function gs(e,t,n){(n=Oa(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var o=t.value;n.payload=function(){return r(o)},n.callback=function(){ps(0,t)}}var a=e.stateNode;return null!==a&&"function"==typeof a.componentDidCatch&&(n.callback=function(){ps(0,t),"function"!=typeof r&&(null===Vl?Vl=new Set([this]):Vl.add(this));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}function ms(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new fs;var o=new Set;r.set(t,o)}else void 0===(o=r.get(t))&&(o=new Set,r.set(t,o));o.has(n)||(o.add(n),e=Tu.bind(null,e,t,n),t.then(e,e))}function ys(e){do{var t;if((t=13===e.tag)&&(t=null===(t=e.memoizedState)||null!==t.dehydrated),t)return e;e=e.return}while(null!==e);return null}function bs(e,t,n,r,o){return 0==(1&e.mode)?(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,1===n.tag&&(null===n.alternate?n.tag=17:((t=Oa(-1,1)).tag=2,Ia(n,t,1))),n.lanes|=1),e):(e.flags|=65536,e.lanes=o,e)}var vs=w.ReactCurrentOwner,ws=!1;function ks(e,t,n,r){t.child=null===e?Xa(t,null,n,r):Ya(t,e.child,n,r)}function xs(e,t,n,r,o){n=n.render;var a=t.ref;return Ca(t,o),r=Ei(e,t,n,r,a,o),n=Ci(),null===e||ws?(aa&&n&&ta(t),t.flags|=1,ks(e,t,r,o),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,Qs(e,t,o))}function Ss(e,t,n,r,o){if(null===e){var a=n.type;return"function"!=typeof a||Pu(a)||void 0!==a.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Iu(n.type,null,r,t,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=a,Es(e,t,a,r,o))}if(a=e.child,0==(e.lanes&o)){var i=a.memoizedProps;if((n=null!==(n=n.compare)?n:lr)(i,r)&&e.ref===t.ref)return Qs(e,t,o)}return t.flags|=1,(e=Ou(a,r)).ref=t.ref,e.return=t,t.child=e}function Es(e,t,n,r,o){if(null!==e){var a=e.memoizedProps;if(lr(a,r)&&e.ref===t.ref){if(ws=!1,t.pendingProps=r=a,0==(e.lanes&o))return t.lanes=e.lanes,Qs(e,t,o);0!=(131072&e.flags)&&(ws=!0)}}return _s(e,t,n,r,o)}function Cs(e,t,n){var r=t.pendingProps,o=r.children,a=null!==e?e.memoizedState:null;if("hidden"===r.mode)if(0==(1&t.mode))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},_o(Ol,Pl),Pl|=n;else{if(0==(1073741824&n))return e=null!==a?a.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,_o(Ol,Pl),Pl|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=null!==a?a.baseLanes:n,_o(Ol,Pl),Pl|=r}else null!==a?(r=a.baseLanes|n,t.memoizedState=null):r=n,_o(Ol,Pl),Pl|=r;return ks(e,t,o,n),t.child}function Ts(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function _s(e,t,n,r,o){var a=Po(n)?No:Ro.current;return a=Ao(t,a),Ca(t,o),n=Ei(e,t,n,r,a,o),r=Ci(),null===e||ws?(aa&&r&&ta(t),t.flags|=1,ks(e,t,n,o),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,Qs(e,t,o))}function Ls(e,t,n,r,o){if(Po(n)){var a=!0;Fo(t)}else a=!1;if(Ca(t,o),null===t.stateNode)Hs(e,t),Ha(t,n,r),Za(t,n,r,o),r=!0;else if(null===e){var i=t.stateNode,s=t.memoizedProps;i.props=s;var l=i.context,u=n.contextType;"object"==typeof u&&null!==u?u=Ta(u):u=Ao(t,u=Po(n)?No:Ro.current);var c=n.getDerivedStateFromProps,d="function"==typeof c||"function"==typeof i.getSnapshotBeforeUpdate;d||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(s!==r||l!==u)&&Qa(t,i,r,u),Na=!1;var p=t.memoizedState;i.state=p,Ma(t,r,i,o),l=t.memoizedState,s!==r||p!==l||jo.current||Na?("function"==typeof c&&($a(t,n,c,r),l=t.memoizedState),(s=Na||qa(t,n,s,r,p,l,u))?(d||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||("function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount()),"function"==typeof i.componentDidMount&&(t.flags|=4194308)):("function"==typeof i.componentDidMount&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=l),i.props=r,i.state=l,i.context=u,r=s):("function"==typeof i.componentDidMount&&(t.flags|=4194308),r=!1)}else{i=t.stateNode,Pa(e,t),s=t.memoizedProps,u=t.type===t.elementType?s:ya(t.type,s),i.props=u,d=t.pendingProps,p=i.context,"object"==typeof(l=n.contextType)&&null!==l?l=Ta(l):l=Ao(t,l=Po(n)?No:Ro.current);var f=n.getDerivedStateFromProps;(c="function"==typeof f||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(s!==d||p!==l)&&Qa(t,i,r,l),Na=!1,p=t.memoizedState,i.state=p,Ma(t,r,i,o);var h=t.memoizedState;s!==d||p!==h||jo.current||Na?("function"==typeof f&&($a(t,n,f,r),h=t.memoizedState),(u=Na||qa(t,n,u,r,p,h,l)||!1)?(c||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,h,l),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,h,l)),"function"==typeof i.componentDidUpdate&&(t.flags|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.flags|=1024)):("function"!=typeof i.componentDidUpdate||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=h),i.props=r,i.state=h,i.context=l,r=u):("function"!=typeof i.componentDidUpdate||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||s===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),r=!1)}return Rs(e,t,n,r,a,o)}function Rs(e,t,n,r,o,a){Ts(e,t);var i=0!=(128&t.flags);if(!r&&!i)return o&&Mo(t,n,!1),Qs(e,t,a);r=t.stateNode,vs.current=t;var s=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=Ya(t,e.child,null,a),t.child=Ya(t,null,s,a)):ks(e,t,s,a),t.memoizedState=r.state,o&&Mo(t,n,!0),t.child}function js(e){var t=e.stateNode;t.pendingContext?Io(0,t.pendingContext,t.pendingContext!==t.context):t.context&&Io(0,t.context,!1),oi(e,t.containerInfo)}function Ns(e,t,n,r,o){return ha(),ga(o),t.flags|=256,ks(e,t,n,r),t.child}var As,Ps,Os,Is,Ds={dehydrated:null,treeContext:null,retryLane:0};function Fs(e){return{baseLanes:e,cachePool:null,transitions:null}}function Ms(e,t,n){var r,o=t.pendingProps,i=li.current,s=!1,l=0!=(128&t.flags);if((r=l)||(r=(null===e||null!==e.memoizedState)&&0!=(2&i)),r?(s=!0,t.flags&=-129):null!==e&&null===e.memoizedState||(i|=1),_o(li,1&i),null===e)return ca(t),null!==(e=t.memoizedState)&&null!==(e=e.dehydrated)?(0==(1&t.mode)?t.lanes=1:"$!"===e.data?t.lanes=8:t.lanes=1073741824,null):(l=o.children,e=o.fallback,s?(o=t.mode,s=t.child,l={mode:"hidden",children:l},0==(1&o)&&null!==s?(s.childLanes=0,s.pendingProps=l):s=Fu(l,o,0,null),e=Du(e,o,n,null),s.return=t,e.return=t,s.sibling=e,t.child=s,t.child.memoizedState=Fs(n),t.memoizedState=Ds,e):zs(t,l));if(null!==(i=e.memoizedState)&&null!==(r=i.dehydrated))return function(e,t,n,r,o,i,s){if(n)return 256&t.flags?(t.flags&=-257,Bs(e,t,s,r=ds(Error(a(422))))):null!==t.memoizedState?(t.child=e.child,t.flags|=128,null):(i=r.fallback,o=t.mode,r=Fu({mode:"visible",children:r.children},o,0,null),(i=Du(i,o,s,null)).flags|=2,r.return=t,i.return=t,r.sibling=i,t.child=r,0!=(1&t.mode)&&Ya(t,e.child,null,s),t.child.memoizedState=Fs(s),t.memoizedState=Ds,i);if(0==(1&t.mode))return Bs(e,t,s,null);if("$!"===o.data){if(r=o.nextSibling&&o.nextSibling.dataset)var l=r.dgst;return r=l,Bs(e,t,s,r=ds(i=Error(a(419)),r,void 0))}if(l=0!=(s&e.childLanes),ws||l){if(null!==(r=jl)){switch(s&-s){case 4:o=2;break;case 16:o=8;break;case 64: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:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:o=32;break;case 536870912:o=268435456;break;default:o=0}0!==(o=0!=(o&(r.suspendedLanes|s))?0:o)&&o!==i.retryLane&&(i.retryLane=o,ja(e,o),ru(r,e,o,-1))}return mu(),Bs(e,t,s,r=ds(Error(a(421))))}return"$?"===o.data?(t.flags|=128,t.child=e.child,t=Lu.bind(null,e),o._reactRetry=t,null):(e=i.treeContext,oa=uo(o.nextSibling),ra=t,aa=!0,ia=null,null!==e&&(Wo[Go++]=Yo,Wo[Go++]=Xo,Wo[Go++]=Ko,Yo=e.id,Xo=e.overflow,Ko=t),t=zs(t,r.children),t.flags|=4096,t)}(e,t,l,o,r,i,n);if(s){s=o.fallback,l=t.mode,r=(i=e.child).sibling;var u={mode:"hidden",children:o.children};return 0==(1&l)&&t.child!==i?((o=t.child).childLanes=0,o.pendingProps=u,t.deletions=null):(o=Ou(i,u)).subtreeFlags=14680064&i.subtreeFlags,null!==r?s=Ou(r,s):(s=Du(s,l,n,null)).flags|=2,s.return=t,o.return=t,o.sibling=s,t.child=o,o=s,s=t.child,l=null===(l=e.child.memoizedState)?Fs(n):{baseLanes:l.baseLanes|n,cachePool:null,transitions:l.transitions},s.memoizedState=l,s.childLanes=e.childLanes&~n,t.memoizedState=Ds,o}return e=(s=e.child).sibling,o=Ou(s,{mode:"visible",children:o.children}),0==(1&t.mode)&&(o.lanes=n),o.return=t,o.sibling=null,null!==e&&(null===(n=t.deletions)?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=o,t.memoizedState=null,o}function zs(e,t){return(t=Fu({mode:"visible",children:t},e.mode,0,null)).return=e,e.child=t}function Bs(e,t,n,r){return null!==r&&ga(r),Ya(t,e.child,null,n),(e=zs(t,t.pendingProps.children)).flags|=2,t.memoizedState=null,e}function $s(e,t,n){e.lanes|=t;var r=e.alternate;null!==r&&(r.lanes|=t),Ea(e.return,t,n)}function Us(e,t,n,r,o){var a=e.memoizedState;null===a?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:o}:(a.isBackwards=t,a.rendering=null,a.renderingStartTime=0,a.last=r,a.tail=n,a.tailMode=o)}function qs(e,t,n){var r=t.pendingProps,o=r.revealOrder,a=r.tail;if(ks(e,t,r.children,n),0!=(2&(r=li.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&&$s(e,n,t);else if(19===e.tag)$s(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}if(_o(li,r),0==(1&t.mode))t.memoizedState=null;else switch(o){case"forwards":for(n=t.child,o=null;null!==n;)null!==(e=n.alternate)&&null===ui(e)&&(o=n),n=n.sibling;null===(n=o)?(o=t.child,t.child=null):(o=n.sibling,n.sibling=null),Us(t,!1,o,n,a);break;case"backwards":for(n=null,o=t.child,t.child=null;null!==o;){if(null!==(e=o.alternate)&&null===ui(e)){t.child=o;break}e=o.sibling,o.sibling=n,n=o,o=e}Us(t,!0,n,null,a);break;case"together":Us(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function Hs(e,t){0==(1&t.mode)&&null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2)}function Qs(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Fl|=t.lanes,0==(n&t.childLanes))return null;if(null!==e&&t.child!==e.child)throw Error(a(153));if(null!==t.child){for(n=Ou(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Ou(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function Zs(e,t){if(!aa)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 Vs(e){var t=null!==e.alternate&&e.alternate.child===e.child,n=0,r=0;if(t)for(var o=e.child;null!==o;)n|=o.lanes|o.childLanes,r|=14680064&o.subtreeFlags,r|=14680064&o.flags,o.return=e,o=o.sibling;else for(o=e.child;null!==o;)n|=o.lanes|o.childLanes,r|=o.subtreeFlags,r|=o.flags,o.return=e,o=o.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function Ws(e,t,n){var r=t.pendingProps;switch(na(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Vs(t),null;case 1:case 17:return Po(t.type)&&Oo(),Vs(t),null;case 3:return r=t.stateNode,ai(),To(jo),To(Ro),di(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(pa(t)?t.flags|=4:null===e||e.memoizedState.isDehydrated&&0==(256&t.flags)||(t.flags|=1024,null!==ia&&(su(ia),ia=null))),Ps(e,t),Vs(t),null;case 5:si(t);var o=ri(ni.current);if(n=t.type,null!==e&&null!=t.stateNode)Os(e,t,n,r,o),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(null===t.stateNode)throw Error(a(166));return Vs(t),null}if(e=ri(ei.current),pa(t)){r=t.stateNode,n=t.type;var i=t.memoizedProps;switch(r[fo]=t,r[ho]=i,e=0!=(1&t.mode),n){case"dialog":zr("cancel",r),zr("close",r);break;case"iframe":case"object":case"embed":zr("load",r);break;case"video":case"audio":for(o=0;o<Ir.length;o++)zr(Ir[o],r);break;case"source":zr("error",r);break;case"img":case"image":case"link":zr("error",r),zr("load",r);break;case"details":zr("toggle",r);break;case"input":K(r,i),zr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!i.multiple},zr("invalid",r);break;case"textarea":oe(r,i),zr("invalid",r)}for(var l in be(n,i),o=null,i)if(i.hasOwnProperty(l)){var u=i[l];"children"===l?"string"==typeof u?r.textContent!==u&&(!0!==i.suppressHydrationWarning&&Xr(r.textContent,u,e),o=["children",u]):"number"==typeof u&&r.textContent!==""+u&&(!0!==i.suppressHydrationWarning&&Xr(r.textContent,u,e),o=["children",""+u]):s.hasOwnProperty(l)&&null!=u&&"onScroll"===l&&zr("scroll",r)}switch(n){case"input":Z(r),J(r,i,!0);break;case"textarea":Z(r),ie(r);break;case"select":case"option":break;default:"function"==typeof i.onClick&&(r.onclick=Jr)}r=o,t.updateQueue=r,null!==r&&(t.flags|=4)}else{l=9===o.nodeType?o:o.ownerDocument,"http://www.w3.org/1999/xhtml"===e&&(e=se(n)),"http://www.w3.org/1999/xhtml"===e?"script"===n?((e=l.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=l.createElement(n,{is:r.is}):(e=l.createElement(n),"select"===n&&(l=e,r.multiple?l.multiple=!0:r.size&&(l.size=r.size))):e=l.createElementNS(e,n),e[fo]=t,e[ho]=r,As(e,t,!1,!1),t.stateNode=e;e:{switch(l=ve(n,r),n){case"dialog":zr("cancel",e),zr("close",e),o=r;break;case"iframe":case"object":case"embed":zr("load",e),o=r;break;case"video":case"audio":for(o=0;o<Ir.length;o++)zr(Ir[o],e);o=r;break;case"source":zr("error",e),o=r;break;case"img":case"image":case"link":zr("error",e),zr("load",e),o=r;break;case"details":zr("toggle",e),o=r;break;case"input":K(e,r),o=G(e,r),zr("invalid",e);break;case"option":default:o=r;break;case"select":e._wrapperState={wasMultiple:!!r.multiple},o=F({},r,{value:void 0}),zr("invalid",e);break;case"textarea":oe(e,r),o=re(e,r),zr("invalid",e)}for(i in be(n,o),u=o)if(u.hasOwnProperty(i)){var c=u[i];"style"===i?me(e,c):"dangerouslySetInnerHTML"===i?null!=(c=c?c.__html:void 0)&&de(e,c):"children"===i?"string"==typeof c?("textarea"!==n||""!==c)&&pe(e,c):"number"==typeof c&&pe(e,""+c):"suppressContentEditableWarning"!==i&&"suppressHydrationWarning"!==i&&"autoFocus"!==i&&(s.hasOwnProperty(i)?null!=c&&"onScroll"===i&&zr("scroll",e):null!=c&&v(e,i,c,l))}switch(n){case"input":Z(e),J(e,r,!1);break;case"textarea":Z(e),ie(e);break;case"option":null!=r.value&&e.setAttribute("value",""+H(r.value));break;case"select":e.multiple=!!r.multiple,null!=(i=r.value)?ne(e,!!r.multiple,i,!1):null!=r.defaultValue&&ne(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof o.onClick&&(e.onclick=Jr)}switch(n){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}}r&&(t.flags|=4)}null!==t.ref&&(t.flags|=512,t.flags|=2097152)}return Vs(t),null;case 6:if(e&&null!=t.stateNode)Is(e,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(a(166));if(n=ri(ni.current),ri(ei.current),pa(t)){if(r=t.stateNode,n=t.memoizedProps,r[fo]=t,(i=r.nodeValue!==n)&&null!==(e=ra))switch(e.tag){case 3:Xr(r.nodeValue,n,0!=(1&e.mode));break;case 5:!0!==e.memoizedProps.suppressHydrationWarning&&Xr(r.nodeValue,n,0!=(1&e.mode))}i&&(t.flags|=4)}else(r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[fo]=t,t.stateNode=r}return Vs(t),null;case 13:if(To(li),r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(aa&&null!==oa&&0!=(1&t.mode)&&0==(128&t.flags))fa(),ha(),t.flags|=98560,i=!1;else if(i=pa(t),null!==r&&null!==r.dehydrated){if(null===e){if(!i)throw Error(a(318));if(!(i=null!==(i=t.memoizedState)?i.dehydrated:null))throw Error(a(317));i[fo]=t}else ha(),0==(128&t.flags)&&(t.memoizedState=null),t.flags|=4;Vs(t),i=!1}else null!==ia&&(su(ia),ia=null),i=!0;if(!i)return 65536&t.flags?t:null}return 0!=(128&t.flags)?(t.lanes=n,t):((r=null!==r)!==(null!==e&&null!==e.memoizedState)&&r&&(t.child.flags|=8192,0!=(1&t.mode)&&(null===e||0!=(1&li.current)?0===Il&&(Il=3):mu())),null!==t.updateQueue&&(t.flags|=4),Vs(t),null);case 4:return ai(),Ps(e,t),null===e&&Ur(t.stateNode.containerInfo),Vs(t),null;case 10:return Sa(t.type._context),Vs(t),null;case 19:if(To(li),null===(i=t.memoizedState))return Vs(t),null;if(r=0!=(128&t.flags),null===(l=i.rendering))if(r)Zs(i,!1);else{if(0!==Il||null!==e&&0!=(128&e.flags))for(e=t.child;null!==e;){if(null!==(l=ui(e))){for(t.flags|=128,Zs(i,!1),null!==(r=l.updateQueue)&&(t.updateQueue=r,t.flags|=4),t.subtreeFlags=0,r=n,n=t.child;null!==n;)e=r,(i=n).flags&=14680066,null===(l=i.alternate)?(i.childLanes=0,i.lanes=e,i.child=null,i.subtreeFlags=0,i.memoizedProps=null,i.memoizedState=null,i.updateQueue=null,i.dependencies=null,i.stateNode=null):(i.childLanes=l.childLanes,i.lanes=l.lanes,i.child=l.child,i.subtreeFlags=0,i.deletions=null,i.memoizedProps=l.memoizedProps,i.memoizedState=l.memoizedState,i.updateQueue=l.updateQueue,i.type=l.type,e=l.dependencies,i.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return _o(li,1&li.current|2),t.child}e=e.sibling}null!==i.tail&&Ye()>ql&&(t.flags|=128,r=!0,Zs(i,!1),t.lanes=4194304)}else{if(!r)if(null!==(e=ui(l))){if(t.flags|=128,r=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),Zs(i,!0),null===i.tail&&"hidden"===i.tailMode&&!l.alternate&&!aa)return Vs(t),null}else 2*Ye()-i.renderingStartTime>ql&&1073741824!==n&&(t.flags|=128,r=!0,Zs(i,!1),t.lanes=4194304);i.isBackwards?(l.sibling=t.child,t.child=l):(null!==(n=i.last)?n.sibling=l:t.child=l,i.last=l)}return null!==i.tail?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=Ye(),t.sibling=null,n=li.current,_o(li,r?1&n|2:1&n),t):(Vs(t),null);case 22:case 23:return pu(),r=null!==t.memoizedState,null!==e&&null!==e.memoizedState!==r&&(t.flags|=8192),r&&0!=(1&t.mode)?0!=(1073741824&Pl)&&(Vs(t),6&t.subtreeFlags&&(t.flags|=8192)):Vs(t),null;case 24:case 25:return null}throw Error(a(156,t.tag))}function Gs(e,t){switch(na(t),t.tag){case 1:return Po(t.type)&&Oo(),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return ai(),To(jo),To(Ro),di(),0!=(65536&(e=t.flags))&&0==(128&e)?(t.flags=-65537&e|128,t):null;case 5:return si(t),null;case 13:if(To(li),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(a(340));ha()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return To(li),null;case 4:return ai(),null;case 10:return Sa(t.type._context),null;case 22:case 23:return pu(),null;default:return null}}As=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Ps=function(){},Os=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,ri(ei.current);var a,i=null;switch(n){case"input":o=G(e,o),r=G(e,r),i=[];break;case"select":o=F({},o,{value:void 0}),r=F({},r,{value:void 0}),i=[];break;case"textarea":o=re(e,o),r=re(e,r),i=[];break;default:"function"!=typeof o.onClick&&"function"==typeof r.onClick&&(e.onclick=Jr)}for(c in be(n,r),n=null,o)if(!r.hasOwnProperty(c)&&o.hasOwnProperty(c)&&null!=o[c])if("style"===c){var l=o[c];for(a in l)l.hasOwnProperty(a)&&(n||(n={}),n[a]="")}else"dangerouslySetInnerHTML"!==c&&"children"!==c&&"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&"autoFocus"!==c&&(s.hasOwnProperty(c)?i||(i=[]):(i=i||[]).push(c,null));for(c in r){var u=r[c];if(l=null!=o?o[c]:void 0,r.hasOwnProperty(c)&&u!==l&&(null!=u||null!=l))if("style"===c)if(l){for(a in l)!l.hasOwnProperty(a)||u&&u.hasOwnProperty(a)||(n||(n={}),n[a]="");for(a in u)u.hasOwnProperty(a)&&l[a]!==u[a]&&(n||(n={}),n[a]=u[a])}else n||(i||(i=[]),i.push(c,n)),n=u;else"dangerouslySetInnerHTML"===c?(u=u?u.__html:void 0,l=l?l.__html:void 0,null!=u&&l!==u&&(i=i||[]).push(c,u)):"children"===c?"string"!=typeof u&&"number"!=typeof u||(i=i||[]).push(c,""+u):"suppressContentEditableWarning"!==c&&"suppressHydrationWarning"!==c&&(s.hasOwnProperty(c)?(null!=u&&"onScroll"===c&&zr("scroll",e),i||l===u||(i=[])):(i=i||[]).push(c,u))}n&&(i=i||[]).push("style",n);var c=i;(t.updateQueue=c)&&(t.flags|=4)}},Is=function(e,t,n,r){n!==r&&(t.flags|=4)};var Ks=!1,Ys=!1,Xs="function"==typeof WeakSet?WeakSet:Set,Js=null;function el(e,t){var n=e.ref;if(null!==n)if("function"==typeof n)try{n(null)}catch(r){Cu(e,t,r)}else n.current=null}function tl(e,t,n){try{n()}catch(r){Cu(e,t,r)}}var nl=!1;function rl(e,t,n){var r=t.updateQueue;if(null!==(r=null!==r?r.lastEffect:null)){var o=r=r.next;do{if((o.tag&e)===e){var a=o.destroy;o.destroy=void 0,void 0!==a&&tl(t,n,a)}o=o.next}while(o!==r)}}function ol(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function al(e){var t=e.ref;if(null!==t){var n=e.stateNode;e.tag,e=n,"function"==typeof t?t(e):t.current=e}}function il(e){var t=e.alternate;null!==t&&(e.alternate=null,il(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&(null!==(t=e.stateNode)&&(delete t[fo],delete t[ho],delete t[mo],delete t[yo],delete t[bo])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function sl(e){return 5===e.tag||3===e.tag||4===e.tag}function ll(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||sl(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function ul(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Jr));else if(4!==r&&null!==(e=e.child))for(ul(e,t,n),e=e.sibling;null!==e;)ul(e,t,n),e=e.sibling}function cl(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(cl(e,t,n),e=e.sibling;null!==e;)cl(e,t,n),e=e.sibling}var dl=null,pl=!1;function fl(e,t,n){for(n=n.child;null!==n;)hl(e,t,n),n=n.sibling}function hl(e,t,n){if(at&&"function"==typeof at.onCommitFiberUnmount)try{at.onCommitFiberUnmount(ot,n)}catch(s){}switch(n.tag){case 5:Ys||el(n,t);case 6:var r=dl,o=pl;dl=null,fl(e,t,n),pl=o,null!==(dl=r)&&(pl?(e=dl,n=n.stateNode,8===e.nodeType?e.parentNode.removeChild(n):e.removeChild(n)):dl.removeChild(n.stateNode));break;case 18:null!==dl&&(pl?(e=dl,n=n.stateNode,8===e.nodeType?lo(e.parentNode,n):1===e.nodeType&&lo(e,n),Ut(e)):lo(dl,n.stateNode));break;case 4:r=dl,o=pl,dl=n.stateNode.containerInfo,pl=!0,fl(e,t,n),dl=r,pl=o;break;case 0:case 11:case 14:case 15:if(!Ys&&(null!==(r=n.updateQueue)&&null!==(r=r.lastEffect))){o=r=r.next;do{var a=o,i=a.destroy;a=a.tag,void 0!==i&&(0!=(2&a)||0!=(4&a))&&tl(n,t,i),o=o.next}while(o!==r)}fl(e,t,n);break;case 1:if(!Ys&&(el(n,t),"function"==typeof(r=n.stateNode).componentWillUnmount))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(s){Cu(n,t,s)}fl(e,t,n);break;case 21:fl(e,t,n);break;case 22:1&n.mode?(Ys=(r=Ys)||null!==n.memoizedState,fl(e,t,n),Ys=r):fl(e,t,n);break;default:fl(e,t,n)}}function gl(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new Xs),t.forEach((function(t){var r=Ru.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function ml(e,t){var n=t.deletions;if(null!==n)for(var r=0;r<n.length;r++){var o=n[r];try{var i=e,s=t,l=s;e:for(;null!==l;){switch(l.tag){case 5:dl=l.stateNode,pl=!1;break e;case 3:case 4:dl=l.stateNode.containerInfo,pl=!0;break e}l=l.return}if(null===dl)throw Error(a(160));hl(i,s,o),dl=null,pl=!1;var u=o.alternate;null!==u&&(u.return=null),o.return=null}catch(c){Cu(o,t,c)}}if(12854&t.subtreeFlags)for(t=t.child;null!==t;)yl(t,e),t=t.sibling}function yl(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(ml(t,e),bl(e),4&r){try{rl(3,e,e.return),ol(3,e)}catch(m){Cu(e,e.return,m)}try{rl(5,e,e.return)}catch(m){Cu(e,e.return,m)}}break;case 1:ml(t,e),bl(e),512&r&&null!==n&&el(n,n.return);break;case 5:if(ml(t,e),bl(e),512&r&&null!==n&&el(n,n.return),32&e.flags){var o=e.stateNode;try{pe(o,"")}catch(m){Cu(e,e.return,m)}}if(4&r&&null!=(o=e.stateNode)){var i=e.memoizedProps,s=null!==n?n.memoizedProps:i,l=e.type,u=e.updateQueue;if(e.updateQueue=null,null!==u)try{"input"===l&&"radio"===i.type&&null!=i.name&&Y(o,i),ve(l,s);var c=ve(l,i);for(s=0;s<u.length;s+=2){var d=u[s],p=u[s+1];"style"===d?me(o,p):"dangerouslySetInnerHTML"===d?de(o,p):"children"===d?pe(o,p):v(o,d,p,c)}switch(l){case"input":X(o,i);break;case"textarea":ae(o,i);break;case"select":var f=o._wrapperState.wasMultiple;o._wrapperState.wasMultiple=!!i.multiple;var h=i.value;null!=h?ne(o,!!i.multiple,h,!1):f!==!!i.multiple&&(null!=i.defaultValue?ne(o,!!i.multiple,i.defaultValue,!0):ne(o,!!i.multiple,i.multiple?[]:"",!1))}o[ho]=i}catch(m){Cu(e,e.return,m)}}break;case 6:if(ml(t,e),bl(e),4&r){if(null===e.stateNode)throw Error(a(162));o=e.stateNode,i=e.memoizedProps;try{o.nodeValue=i}catch(m){Cu(e,e.return,m)}}break;case 3:if(ml(t,e),bl(e),4&r&&null!==n&&n.memoizedState.isDehydrated)try{Ut(t.containerInfo)}catch(m){Cu(e,e.return,m)}break;case 4:default:ml(t,e),bl(e);break;case 13:ml(t,e),bl(e),8192&(o=e.child).flags&&(i=null!==o.memoizedState,o.stateNode.isHidden=i,!i||null!==o.alternate&&null!==o.alternate.memoizedState||(Ul=Ye())),4&r&&gl(e);break;case 22:if(d=null!==n&&null!==n.memoizedState,1&e.mode?(Ys=(c=Ys)||d,ml(t,e),Ys=c):ml(t,e),bl(e),8192&r){if(c=null!==e.memoizedState,(e.stateNode.isHidden=c)&&!d&&0!=(1&e.mode))for(Js=e,d=e.child;null!==d;){for(p=Js=d;null!==Js;){switch(h=(f=Js).child,f.tag){case 0:case 11:case 14:case 15:rl(4,f,f.return);break;case 1:el(f,f.return);var g=f.stateNode;if("function"==typeof g.componentWillUnmount){r=f,n=f.return;try{t=r,g.props=t.memoizedProps,g.state=t.memoizedState,g.componentWillUnmount()}catch(m){Cu(r,n,m)}}break;case 5:el(f,f.return);break;case 22:if(null!==f.memoizedState){xl(p);continue}}null!==h?(h.return=f,Js=h):xl(p)}d=d.sibling}e:for(d=null,p=e;;){if(5===p.tag){if(null===d){d=p;try{o=p.stateNode,c?"function"==typeof(i=o.style).setProperty?i.setProperty("display","none","important"):i.display="none":(l=p.stateNode,s=null!=(u=p.memoizedProps.style)&&u.hasOwnProperty("display")?u.display:null,l.style.display=ge("display",s))}catch(m){Cu(e,e.return,m)}}}else if(6===p.tag){if(null===d)try{p.stateNode.nodeValue=c?"":p.memoizedProps}catch(m){Cu(e,e.return,m)}}else if((22!==p.tag&&23!==p.tag||null===p.memoizedState||p===e)&&null!==p.child){p.child.return=p,p=p.child;continue}if(p===e)break e;for(;null===p.sibling;){if(null===p.return||p.return===e)break e;d===p&&(d=null),p=p.return}d===p&&(d=null),p.sibling.return=p.return,p=p.sibling}}break;case 19:ml(t,e),bl(e),4&r&&gl(e);case 21:}}function bl(e){var t=e.flags;if(2&t){try{e:{for(var n=e.return;null!==n;){if(sl(n)){var r=n;break e}n=n.return}throw Error(a(160))}switch(r.tag){case 5:var o=r.stateNode;32&r.flags&&(pe(o,""),r.flags&=-33),cl(e,ll(e),o);break;case 3:case 4:var i=r.stateNode.containerInfo;ul(e,ll(e),i);break;default:throw Error(a(161))}}catch(s){Cu(e,e.return,s)}e.flags&=-3}4096&t&&(e.flags&=-4097)}function vl(e,t,n){Js=e,wl(e,t,n)}function wl(e,t,n){for(var r=0!=(1&e.mode);null!==Js;){var o=Js,a=o.child;if(22===o.tag&&r){var i=null!==o.memoizedState||Ks;if(!i){var s=o.alternate,l=null!==s&&null!==s.memoizedState||Ys;s=Ks;var u=Ys;if(Ks=i,(Ys=l)&&!u)for(Js=o;null!==Js;)l=(i=Js).child,22===i.tag&&null!==i.memoizedState?Sl(o):null!==l?(l.return=i,Js=l):Sl(o);for(;null!==a;)Js=a,wl(a,t,n),a=a.sibling;Js=o,Ks=s,Ys=u}kl(e)}else 0!=(8772&o.subtreeFlags)&&null!==a?(a.return=o,Js=a):kl(e)}}function kl(e){for(;null!==Js;){var t=Js;if(0!=(8772&t.flags)){var n=t.alternate;try{if(0!=(8772&t.flags))switch(t.tag){case 0:case 11:case 15:Ys||ol(5,t);break;case 1:var r=t.stateNode;if(4&t.flags&&!Ys)if(null===n)r.componentDidMount();else{var o=t.elementType===t.type?n.memoizedProps:ya(t.type,n.memoizedProps);r.componentDidUpdate(o,n.memoizedState,r.__reactInternalSnapshotBeforeUpdate)}var i=t.updateQueue;null!==i&&za(t,i,r);break;case 3:var s=t.updateQueue;if(null!==s){if(n=null,null!==t.child)switch(t.child.tag){case 5:case 1:n=t.child.stateNode}za(t,s,n)}break;case 5:var l=t.stateNode;if(null===n&&4&t.flags){n=l;var u=t.memoizedProps;switch(t.type){case"button":case"input":case"select":case"textarea":u.autoFocus&&n.focus();break;case"img":u.src&&(n.src=u.src)}}break;case 6:case 4:case 12:case 19:case 17:case 21:case 22:case 23:case 25:break;case 13:if(null===t.memoizedState){var c=t.alternate;if(null!==c){var d=c.memoizedState;if(null!==d){var p=d.dehydrated;null!==p&&Ut(p)}}}break;default:throw Error(a(163))}Ys||512&t.flags&&al(t)}catch(f){Cu(t,t.return,f)}}if(t===e){Js=null;break}if(null!==(n=t.sibling)){n.return=t.return,Js=n;break}Js=t.return}}function xl(e){for(;null!==Js;){var t=Js;if(t===e){Js=null;break}var n=t.sibling;if(null!==n){n.return=t.return,Js=n;break}Js=t.return}}function Sl(e){for(;null!==Js;){var t=Js;try{switch(t.tag){case 0:case 11:case 15:var n=t.return;try{ol(4,t)}catch(l){Cu(t,n,l)}break;case 1:var r=t.stateNode;if("function"==typeof r.componentDidMount){var o=t.return;try{r.componentDidMount()}catch(l){Cu(t,o,l)}}var a=t.return;try{al(t)}catch(l){Cu(t,a,l)}break;case 5:var i=t.return;try{al(t)}catch(l){Cu(t,i,l)}}}catch(l){Cu(t,t.return,l)}if(t===e){Js=null;break}var s=t.sibling;if(null!==s){s.return=t.return,Js=s;break}Js=t.return}}var El,Cl=Math.ceil,Tl=w.ReactCurrentDispatcher,_l=w.ReactCurrentOwner,Ll=w.ReactCurrentBatchConfig,Rl=0,jl=null,Nl=null,Al=0,Pl=0,Ol=Co(0),Il=0,Dl=null,Fl=0,Ml=0,zl=0,Bl=null,$l=null,Ul=0,ql=1/0,Hl=null,Ql=!1,Zl=null,Vl=null,Wl=!1,Gl=null,Kl=0,Yl=0,Xl=null,Jl=-1,eu=0;function tu(){return 0!=(6&Rl)?Ye():-1!==Jl?Jl:Jl=Ye()}function nu(e){return 0==(1&e.mode)?1:0!=(2&Rl)&&0!==Al?Al&-Al:null!==ma.transition?(0===eu&&(eu=gt()),eu):0!==(e=vt)?e:e=void 0===(e=window.event)?16:Kt(e.type)}function ru(e,t,n,r){if(50<Yl)throw Yl=0,Xl=null,Error(a(185));yt(e,n,r),0!=(2&Rl)&&e===jl||(e===jl&&(0==(2&Rl)&&(Ml|=n),4===Il&&lu(e,Al)),ou(e,r),1===n&&0===Rl&&0==(1&t.mode)&&(ql=Ye()+500,Bo&&qo()))}function ou(e,t){var n=e.callbackNode;!function(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,o=e.expirationTimes,a=e.pendingLanes;0<a;){var i=31-it(a),s=1<<i,l=o[i];-1===l?0!=(s&n)&&0==(s&r)||(o[i]=ft(s,t)):l<=t&&(e.expiredLanes|=s),a&=~s}}(e,t);var r=pt(e,e===jl?Al:0);if(0===r)null!==n&&We(n),e.callbackNode=null,e.callbackPriority=0;else if(t=r&-r,e.callbackPriority!==t){if(null!=n&&We(n),1===t)0===e.tag?function(e){Bo=!0,Uo(e)}(uu.bind(null,e)):Uo(uu.bind(null,e)),io((function(){0==(6&Rl)&&qo()})),n=null;else{switch(wt(r)){case 1:n=Je;break;case 4:n=et;break;case 16:default:n=tt;break;case 536870912:n=rt}n=ju(n,au.bind(null,e))}e.callbackPriority=t,e.callbackNode=n}}function au(e,t){if(Jl=-1,eu=0,0!=(6&Rl))throw Error(a(327));var n=e.callbackNode;if(Su()&&e.callbackNode!==n)return null;var r=pt(e,e===jl?Al:0);if(0===r)return null;if(0!=(30&r)||0!=(r&e.expiredLanes)||t)t=yu(e,r);else{t=r;var o=Rl;Rl|=2;var i=gu();for(jl===e&&Al===t||(Hl=null,ql=Ye()+500,fu(e,t));;)try{vu();break}catch(l){hu(e,l)}xa(),Tl.current=i,Rl=o,null!==Nl?t=0:(jl=null,Al=0,t=Il)}if(0!==t){if(2===t&&(0!==(o=ht(e))&&(r=o,t=iu(e,o))),1===t)throw n=Dl,fu(e,0),lu(e,r),ou(e,Ye()),n;if(6===t)lu(e,r);else{if(o=e.current.alternate,0==(30&r)&&!function(e){for(var t=e;;){if(16384&t.flags){var n=t.updateQueue;if(null!==n&&null!==(n=n.stores))for(var r=0;r<n.length;r++){var o=n[r],a=o.getSnapshot;o=o.value;try{if(!sr(a(),o))return!1}catch(s){return!1}}}if(n=t.child,16384&t.subtreeFlags&&null!==n)n.return=t,t=n;else{if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}(o)&&(2===(t=yu(e,r))&&(0!==(i=ht(e))&&(r=i,t=iu(e,i))),1===t))throw n=Dl,fu(e,0),lu(e,r),ou(e,Ye()),n;switch(e.finishedWork=o,e.finishedLanes=r,t){case 0:case 1:throw Error(a(345));case 2:case 5:xu(e,$l,Hl);break;case 3:if(lu(e,r),(130023424&r)===r&&10<(t=Ul+500-Ye())){if(0!==pt(e,0))break;if(((o=e.suspendedLanes)&r)!==r){tu(),e.pingedLanes|=e.suspendedLanes&o;break}e.timeoutHandle=ro(xu.bind(null,e,$l,Hl),t);break}xu(e,$l,Hl);break;case 4:if(lu(e,r),(4194240&r)===r)break;for(t=e.eventTimes,o=-1;0<r;){var s=31-it(r);i=1<<s,(s=t[s])>o&&(o=s),r&=~i}if(r=o,10<(r=(120>(r=Ye()-r)?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Cl(r/1960))-r)){e.timeoutHandle=ro(xu.bind(null,e,$l,Hl),r);break}xu(e,$l,Hl);break;default:throw Error(a(329))}}}return ou(e,Ye()),e.callbackNode===n?au.bind(null,e):null}function iu(e,t){var n=Bl;return e.current.memoizedState.isDehydrated&&(fu(e,t).flags|=256),2!==(e=yu(e,t))&&(t=$l,$l=n,null!==t&&su(t)),e}function su(e){null===$l?$l=e:$l.push.apply($l,e)}function lu(e,t){for(t&=~zl,t&=~Ml,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-it(t),r=1<<n;e[n]=-1,t&=~r}}function uu(e){if(0!=(6&Rl))throw Error(a(327));Su();var t=pt(e,0);if(0==(1&t))return ou(e,Ye()),null;var n=yu(e,t);if(0!==e.tag&&2===n){var r=ht(e);0!==r&&(t=r,n=iu(e,r))}if(1===n)throw n=Dl,fu(e,0),lu(e,t),ou(e,Ye()),n;if(6===n)throw Error(a(345));return e.finishedWork=e.current.alternate,e.finishedLanes=t,xu(e,$l,Hl),ou(e,Ye()),null}function cu(e,t){var n=Rl;Rl|=1;try{return e(t)}finally{0===(Rl=n)&&(ql=Ye()+500,Bo&&qo())}}function du(e){null!==Gl&&0===Gl.tag&&0==(6&Rl)&&Su();var t=Rl;Rl|=1;var n=Ll.transition,r=vt;try{if(Ll.transition=null,vt=1,e)return e()}finally{vt=r,Ll.transition=n,0==(6&(Rl=t))&&qo()}}function pu(){Pl=Ol.current,To(Ol)}function fu(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,oo(n)),null!==Nl)for(n=Nl.return;null!==n;){var r=n;switch(na(r),r.tag){case 1:null!=(r=r.type.childContextTypes)&&Oo();break;case 3:ai(),To(jo),To(Ro),di();break;case 5:si(r);break;case 4:ai();break;case 13:case 19:To(li);break;case 10:Sa(r.type._context);break;case 22:case 23:pu()}n=n.return}if(jl=e,Nl=e=Ou(e.current,null),Al=Pl=t,Il=0,Dl=null,zl=Ml=Fl=0,$l=Bl=null,null!==_a){for(t=0;t<_a.length;t++)if(null!==(r=(n=_a[t]).interleaved)){n.interleaved=null;var o=r.next,a=n.pending;if(null!==a){var i=a.next;a.next=o,r.next=i}n.pending=r}_a=null}return e}function hu(e,t){for(;;){var n=Nl;try{if(xa(),pi.current=is,bi){for(var r=gi.memoizedState;null!==r;){var o=r.queue;null!==o&&(o.pending=null),r=r.next}bi=!1}if(hi=0,yi=mi=gi=null,vi=!1,wi=0,_l.current=null,null===n||null===n.return){Il=1,Dl=t,Nl=null;break}e:{var i=e,s=n.return,l=n,u=t;if(t=Al,l.flags|=32768,null!==u&&"object"==typeof u&&"function"==typeof u.then){var c=u,d=l,p=d.tag;if(0==(1&d.mode)&&(0===p||11===p||15===p)){var f=d.alternate;f?(d.updateQueue=f.updateQueue,d.memoizedState=f.memoizedState,d.lanes=f.lanes):(d.updateQueue=null,d.memoizedState=null)}var h=ys(s);if(null!==h){h.flags&=-257,bs(h,s,l,0,t),1&h.mode&&ms(i,c,t),u=c;var g=(t=h).updateQueue;if(null===g){var m=new Set;m.add(u),t.updateQueue=m}else g.add(u);break e}if(0==(1&t)){ms(i,c,t),mu();break e}u=Error(a(426))}else if(aa&&1&l.mode){var y=ys(s);if(null!==y){0==(65536&y.flags)&&(y.flags|=256),bs(y,s,l,0,t),ga(cs(u,l));break e}}i=u=cs(u,l),4!==Il&&(Il=2),null===Bl?Bl=[i]:Bl.push(i),i=s;do{switch(i.tag){case 3:i.flags|=65536,t&=-t,i.lanes|=t,Fa(i,hs(0,u,t));break e;case 1:l=u;var b=i.type,v=i.stateNode;if(0==(128&i.flags)&&("function"==typeof b.getDerivedStateFromError||null!==v&&"function"==typeof v.componentDidCatch&&(null===Vl||!Vl.has(v)))){i.flags|=65536,t&=-t,i.lanes|=t,Fa(i,gs(i,l,t));break e}}i=i.return}while(null!==i)}ku(n)}catch(w){t=w,Nl===n&&null!==n&&(Nl=n=n.return);continue}break}}function gu(){var e=Tl.current;return Tl.current=is,null===e?is:e}function mu(){0!==Il&&3!==Il&&2!==Il||(Il=4),null===jl||0==(268435455&Fl)&&0==(268435455&Ml)||lu(jl,Al)}function yu(e,t){var n=Rl;Rl|=2;var r=gu();for(jl===e&&Al===t||(Hl=null,fu(e,t));;)try{bu();break}catch(o){hu(e,o)}if(xa(),Rl=n,Tl.current=r,null!==Nl)throw Error(a(261));return jl=null,Al=0,Il}function bu(){for(;null!==Nl;)wu(Nl)}function vu(){for(;null!==Nl&&!Ge();)wu(Nl)}function wu(e){var t=El(e.alternate,e,Pl);e.memoizedProps=e.pendingProps,null===t?ku(e):Nl=t,_l.current=null}function ku(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(32768&t.flags)){if(null!==(n=Ws(n,t,Pl)))return void(Nl=n)}else{if(null!==(n=Gs(n,t)))return n.flags&=32767,void(Nl=n);if(null===e)return Il=6,void(Nl=null);e.flags|=32768,e.subtreeFlags=0,e.deletions=null}if(null!==(t=t.sibling))return void(Nl=t);Nl=t=e}while(null!==t);0===Il&&(Il=5)}function xu(e,t,n){var r=vt,o=Ll.transition;try{Ll.transition=null,vt=1,function(e,t,n,r){do{Su()}while(null!==Gl);if(0!=(6&Rl))throw Error(a(327));n=e.finishedWork;var o=e.finishedLanes;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(a(177));e.callbackNode=null,e.callbackPriority=0;var i=n.lanes|n.childLanes;if(function(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0<n;){var o=31-it(n),a=1<<o;t[o]=0,r[o]=-1,e[o]=-1,n&=~a}}(e,i),e===jl&&(Nl=jl=null,Al=0),0==(2064&n.subtreeFlags)&&0==(2064&n.flags)||Wl||(Wl=!0,ju(tt,(function(){return Su(),null}))),i=0!=(15990&n.flags),0!=(15990&n.subtreeFlags)||i){i=Ll.transition,Ll.transition=null;var s=vt;vt=1;var l=Rl;Rl|=4,_l.current=null,function(e,t){if(eo=Ht,fr(e=pr())){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{var r=(n=(n=e.ownerDocument)&&n.defaultView||window).getSelection&&n.getSelection();if(r&&0!==r.rangeCount){n=r.anchorNode;var o=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch(k){n=null;break e}var s=0,l=-1,u=-1,c=0,d=0,p=e,f=null;t:for(;;){for(var h;p!==n||0!==o&&3!==p.nodeType||(l=s+o),p!==i||0!==r&&3!==p.nodeType||(u=s+r),3===p.nodeType&&(s+=p.nodeValue.length),null!==(h=p.firstChild);)f=p,p=h;for(;;){if(p===e)break t;if(f===n&&++c===o&&(l=s),f===i&&++d===r&&(u=s),null!==(h=p.nextSibling))break;f=(p=f).parentNode}p=h}n=-1===l||-1===u?null:{start:l,end:u}}else n=null}n=n||{start:0,end:0}}else n=null;for(to={focusedElem:e,selectionRange:n},Ht=!1,Js=t;null!==Js;)if(e=(t=Js).child,0!=(1028&t.subtreeFlags)&&null!==e)e.return=t,Js=e;else for(;null!==Js;){t=Js;try{var g=t.alternate;if(0!=(1024&t.flags))switch(t.tag){case 0:case 11:case 15:case 5:case 6:case 4:case 17:break;case 1:if(null!==g){var m=g.memoizedProps,y=g.memoizedState,b=t.stateNode,v=b.getSnapshotBeforeUpdate(t.elementType===t.type?m:ya(t.type,m),y);b.__reactInternalSnapshotBeforeUpdate=v}break;case 3:var w=t.stateNode.containerInfo;1===w.nodeType?w.textContent="":9===w.nodeType&&w.documentElement&&w.removeChild(w.documentElement);break;default:throw Error(a(163))}}catch(k){Cu(t,t.return,k)}if(null!==(e=t.sibling)){e.return=t.return,Js=e;break}Js=t.return}g=nl,nl=!1}(e,n),yl(n,e),hr(to),Ht=!!eo,to=eo=null,e.current=n,vl(n,e,o),Ke(),Rl=l,vt=s,Ll.transition=i}else e.current=n;if(Wl&&(Wl=!1,Gl=e,Kl=o),i=e.pendingLanes,0===i&&(Vl=null),function(e){if(at&&"function"==typeof at.onCommitFiberRoot)try{at.onCommitFiberRoot(ot,e,void 0,128==(128&e.current.flags))}catch(t){}}(n.stateNode),ou(e,Ye()),null!==t)for(r=e.onRecoverableError,n=0;n<t.length;n++)o=t[n],r(o.value,{componentStack:o.stack,digest:o.digest});if(Ql)throw Ql=!1,e=Zl,Zl=null,e;0!=(1&Kl)&&0!==e.tag&&Su(),i=e.pendingLanes,0!=(1&i)?e===Xl?Yl++:(Yl=0,Xl=e):Yl=0,qo()}(e,t,n,r)}finally{Ll.transition=o,vt=r}return null}function Su(){if(null!==Gl){var e=wt(Kl),t=Ll.transition,n=vt;try{if(Ll.transition=null,vt=16>e?16:e,null===Gl)var r=!1;else{if(e=Gl,Gl=null,Kl=0,0!=(6&Rl))throw Error(a(331));var o=Rl;for(Rl|=4,Js=e.current;null!==Js;){var i=Js,s=i.child;if(0!=(16&Js.flags)){var l=i.deletions;if(null!==l){for(var u=0;u<l.length;u++){var c=l[u];for(Js=c;null!==Js;){var d=Js;switch(d.tag){case 0:case 11:case 15:rl(8,d,i)}var p=d.child;if(null!==p)p.return=d,Js=p;else for(;null!==Js;){var f=(d=Js).sibling,h=d.return;if(il(d),d===c){Js=null;break}if(null!==f){f.return=h,Js=f;break}Js=h}}}var g=i.alternate;if(null!==g){var m=g.child;if(null!==m){g.child=null;do{var y=m.sibling;m.sibling=null,m=y}while(null!==m)}}Js=i}}if(0!=(2064&i.subtreeFlags)&&null!==s)s.return=i,Js=s;else e:for(;null!==Js;){if(0!=(2048&(i=Js).flags))switch(i.tag){case 0:case 11:case 15:rl(9,i,i.return)}var b=i.sibling;if(null!==b){b.return=i.return,Js=b;break e}Js=i.return}}var v=e.current;for(Js=v;null!==Js;){var w=(s=Js).child;if(0!=(2064&s.subtreeFlags)&&null!==w)w.return=s,Js=w;else e:for(s=v;null!==Js;){if(0!=(2048&(l=Js).flags))try{switch(l.tag){case 0:case 11:case 15:ol(9,l)}}catch(x){Cu(l,l.return,x)}if(l===s){Js=null;break e}var k=l.sibling;if(null!==k){k.return=l.return,Js=k;break e}Js=l.return}}if(Rl=o,qo(),at&&"function"==typeof at.onPostCommitFiberRoot)try{at.onPostCommitFiberRoot(ot,e)}catch(x){}r=!0}return r}finally{vt=n,Ll.transition=t}}return!1}function Eu(e,t,n){e=Ia(e,t=hs(0,t=cs(n,t),1),1),t=tu(),null!==e&&(yt(e,1,t),ou(e,t))}function Cu(e,t,n){if(3===e.tag)Eu(e,e,n);else for(;null!==t;){if(3===t.tag){Eu(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Vl||!Vl.has(r))){t=Ia(t,e=gs(t,e=cs(n,e),1),1),e=tu(),null!==t&&(yt(t,1,e),ou(t,e));break}}t=t.return}}function Tu(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=tu(),e.pingedLanes|=e.suspendedLanes&n,jl===e&&(Al&n)===n&&(4===Il||3===Il&&(130023424&Al)===Al&&500>Ye()-Ul?fu(e,0):zl|=n),ou(e,t)}function _u(e,t){0===t&&(0==(1&e.mode)?t=1:(t=ct,0==(130023424&(ct<<=1))&&(ct=4194304)));var n=tu();null!==(e=ja(e,t))&&(yt(e,t,n),ou(e,n))}function Lu(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),_u(e,n)}function Ru(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,o=e.memoizedState;null!==o&&(n=o.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(a(314))}null!==r&&r.delete(t),_u(e,n)}function ju(e,t){return Ve(e,t)}function Nu(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Au(e,t,n,r){return new Nu(e,t,n,r)}function Pu(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Ou(e,t){var n=e.alternate;return null===n?((n=Au(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=14680064&e.flags,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Iu(e,t,n,r,o,i){var s=2;if(r=e,"function"==typeof e)Pu(e)&&(s=1);else if("string"==typeof e)s=5;else e:switch(e){case S:return Du(n.children,o,i,t);case E:s=8,o|=8;break;case C:return(e=Au(12,n,t,2|o)).elementType=C,e.lanes=i,e;case R:return(e=Au(13,n,t,o)).elementType=R,e.lanes=i,e;case j:return(e=Au(19,n,t,o)).elementType=j,e.lanes=i,e;case P:return Fu(n,o,i,t);default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case T:s=10;break e;case _:s=9;break e;case L:s=11;break e;case N:s=14;break e;case A:s=16,r=null;break e}throw Error(a(130,null==e?e:typeof e,""))}return(t=Au(s,n,t,o)).elementType=e,t.type=r,t.lanes=i,t}function Du(e,t,n,r){return(e=Au(7,e,r,t)).lanes=n,e}function Fu(e,t,n,r){return(e=Au(22,e,r,t)).elementType=P,e.lanes=n,e.stateNode={isHidden:!1},e}function Mu(e,t,n){return(e=Au(6,e,null,t)).lanes=n,e}function zu(e,t,n){return(t=Au(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Bu(e,t,n,r,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=mt(0),this.expirationTimes=mt(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=mt(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function $u(e,t,n,r,o,a,i,s,l){return e=new Bu(e,t,n,s,l),1===t?(t=1,!0===a&&(t|=8)):t=0,a=Au(3,null,null,t),e.current=a,a.stateNode=e,a.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Aa(a),e}function Uu(e){if(!e)return Lo;e:{if(Ue(e=e._reactInternals)!==e||1!==e.tag)throw Error(a(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break e;case 1:if(Po(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(null!==t);throw Error(a(171))}if(1===e.tag){var n=e.type;if(Po(n))return Do(e,n,t)}return t}function qu(e,t,n,r,o,a,i,s,l){return(e=$u(n,r,!0,e,0,a,0,s,l)).context=Uu(null),n=e.current,(a=Oa(r=tu(),o=nu(n))).callback=null!=t?t:null,Ia(n,a,o),e.current.lanes=o,yt(e,o,r),ou(e,r),e}function Hu(e,t,n,r){var o=t.current,a=tu(),i=nu(o);return n=Uu(n),null===t.context?t.context=n:t.pendingContext=n,(t=Oa(a,i)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),null!==(e=Ia(o,t,i))&&(ru(e,o,i,a),Da(e,o,i)),i}function Qu(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function Zu(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function Vu(e,t){Zu(e,t),(e=e.alternate)&&Zu(e,t)}El=function(e,t,n){if(null!==e)if(e.memoizedProps!==t.pendingProps||jo.current)ws=!0;else{if(0==(e.lanes&n)&&0==(128&t.flags))return ws=!1,function(e,t,n){switch(t.tag){case 3:js(t),ha();break;case 5:ii(t);break;case 1:Po(t.type)&&Fo(t);break;case 4:oi(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,o=t.memoizedProps.value;_o(ba,r._currentValue),r._currentValue=o;break;case 13:if(null!==(r=t.memoizedState))return null!==r.dehydrated?(_o(li,1&li.current),t.flags|=128,null):0!=(n&t.child.childLanes)?Ms(e,t,n):(_o(li,1&li.current),null!==(e=Qs(e,t,n))?e.sibling:null);_o(li,1&li.current);break;case 19:if(r=0!=(n&t.childLanes),0!=(128&e.flags)){if(r)return qs(e,t,n);t.flags|=128}if(null!==(o=t.memoizedState)&&(o.rendering=null,o.tail=null,o.lastEffect=null),_o(li,li.current),r)break;return null;case 22:case 23:return t.lanes=0,Cs(e,t,n)}return Qs(e,t,n)}(e,t,n);ws=0!=(131072&e.flags)}else ws=!1,aa&&0!=(1048576&t.flags)&&ea(t,Vo,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Hs(e,t),e=t.pendingProps;var o=Ao(t,Ro.current);Ca(t,n),o=Ei(null,t,r,e,o,n);var i=Ci();return t.flags|=1,"object"==typeof o&&null!==o&&"function"==typeof o.render&&void 0===o.$$typeof?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Po(r)?(i=!0,Fo(t)):i=!1,t.memoizedState=null!==o.state&&void 0!==o.state?o.state:null,Aa(t),o.updater=Ua,t.stateNode=o,o._reactInternals=t,Za(t,r,e,n),t=Rs(null,t,r,!0,i,n)):(t.tag=0,aa&&i&&ta(t),ks(null,t,o,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Hs(e,t),e=t.pendingProps,r=(o=r._init)(r._payload),t.type=r,o=t.tag=function(e){if("function"==typeof e)return Pu(e)?1:0;if(null!=e){if((e=e.$$typeof)===L)return 11;if(e===N)return 14}return 2}(r),e=ya(r,e),o){case 0:t=_s(null,t,r,e,n);break e;case 1:t=Ls(null,t,r,e,n);break e;case 11:t=xs(null,t,r,e,n);break e;case 14:t=Ss(null,t,r,ya(r.type,e),n);break e}throw Error(a(306,r,""))}return t;case 0:return r=t.type,o=t.pendingProps,_s(e,t,r,o=t.elementType===r?o:ya(r,o),n);case 1:return r=t.type,o=t.pendingProps,Ls(e,t,r,o=t.elementType===r?o:ya(r,o),n);case 3:e:{if(js(t),null===e)throw Error(a(387));r=t.pendingProps,o=(i=t.memoizedState).element,Pa(e,t),Ma(t,r,null,n);var s=t.memoizedState;if(r=s.element,i.isDehydrated){if(i={element:r,isDehydrated:!1,cache:s.cache,pendingSuspenseBoundaries:s.pendingSuspenseBoundaries,transitions:s.transitions},t.updateQueue.baseState=i,t.memoizedState=i,256&t.flags){t=Ns(e,t,r,n,o=cs(Error(a(423)),t));break e}if(r!==o){t=Ns(e,t,r,n,o=cs(Error(a(424)),t));break e}for(oa=uo(t.stateNode.containerInfo.firstChild),ra=t,aa=!0,ia=null,n=Xa(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|4096,n=n.sibling}else{if(ha(),r===o){t=Qs(e,t,n);break e}ks(e,t,r,n)}t=t.child}return t;case 5:return ii(t),null===e&&ca(t),r=t.type,o=t.pendingProps,i=null!==e?e.memoizedProps:null,s=o.children,no(r,o)?s=null:null!==i&&no(r,i)&&(t.flags|=32),Ts(e,t),ks(e,t,s,n),t.child;case 6:return null===e&&ca(t),null;case 13:return Ms(e,t,n);case 4:return oi(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Ya(t,null,r,n):ks(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,xs(e,t,r,o=t.elementType===r?o:ya(r,o),n);case 7:return ks(e,t,t.pendingProps,n),t.child;case 8:case 12:return ks(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,o=t.pendingProps,i=t.memoizedProps,s=o.value,_o(ba,r._currentValue),r._currentValue=s,null!==i)if(sr(i.value,s)){if(i.children===o.children&&!jo.current){t=Qs(e,t,n);break e}}else for(null!==(i=t.child)&&(i.return=t);null!==i;){var l=i.dependencies;if(null!==l){s=i.child;for(var u=l.firstContext;null!==u;){if(u.context===r){if(1===i.tag){(u=Oa(-1,n&-n)).tag=2;var c=i.updateQueue;if(null!==c){var d=(c=c.shared).pending;null===d?u.next=u:(u.next=d.next,d.next=u),c.pending=u}}i.lanes|=n,null!==(u=i.alternate)&&(u.lanes|=n),Ea(i.return,n,t),l.lanes|=n;break}u=u.next}}else if(10===i.tag)s=i.type===t.type?null:i.child;else if(18===i.tag){if(null===(s=i.return))throw Error(a(341));s.lanes|=n,null!==(l=s.alternate)&&(l.lanes|=n),Ea(s,n,t),s=i.sibling}else s=i.child;if(null!==s)s.return=i;else for(s=i;null!==s;){if(s===t){s=null;break}if(null!==(i=s.sibling)){i.return=s.return,s=i;break}s=s.return}i=s}ks(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=t.pendingProps.children,Ca(t,n),r=r(o=Ta(o)),t.flags|=1,ks(e,t,r,n),t.child;case 14:return o=ya(r=t.type,t.pendingProps),Ss(e,t,r,o=ya(r.type,o),n);case 15:return Es(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:ya(r,o),Hs(e,t),t.tag=1,Po(r)?(e=!0,Fo(t)):e=!1,Ca(t,n),Ha(t,r,o),Za(t,r,o,n),Rs(null,t,r,!0,e,n);case 19:return qs(e,t,n);case 22:return Cs(e,t,n)}throw Error(a(156,t.tag))};var Wu="function"==typeof reportError?reportError:function(e){console.error(e)};function Gu(e){this._internalRoot=e}function Ku(e){this._internalRoot=e}function Yu(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType)}function Xu(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function Ju(){}function ec(e,t,n,r,o){var a=n._reactRootContainer;if(a){var i=a;if("function"==typeof o){var s=o;o=function(){var e=Qu(i);s.call(e)}}Hu(t,i,e,o)}else i=function(e,t,n,r,o){if(o){if("function"==typeof r){var a=r;r=function(){var e=Qu(i);a.call(e)}}var i=qu(t,r,e,0,null,!1,0,"",Ju);return e._reactRootContainer=i,e[go]=i.current,Ur(8===e.nodeType?e.parentNode:e),du(),i}for(;o=e.lastChild;)e.removeChild(o);if("function"==typeof r){var s=r;r=function(){var e=Qu(l);s.call(e)}}var l=$u(e,0,!1,null,0,!1,0,"",Ju);return e._reactRootContainer=l,e[go]=l.current,Ur(8===e.nodeType?e.parentNode:e),du((function(){Hu(t,l,n,r)})),l}(n,t,e,o,r);return Qu(i)}Ku.prototype.render=Gu.prototype.render=function(e){var t=this._internalRoot;if(null===t)throw Error(a(409));Hu(e,t,null,null)},Ku.prototype.unmount=Gu.prototype.unmount=function(){var e=this._internalRoot;if(null!==e){this._internalRoot=null;var t=e.containerInfo;du((function(){Hu(null,e,null,null)})),t[go]=null}},Ku.prototype.unstable_scheduleHydration=function(e){if(e){var t=Et();e={blockedOn:null,target:e,priority:t};for(var n=0;n<Pt.length&&0!==t&&t<Pt[n].priority;n++);Pt.splice(n,0,e),0===n&&Ft(e)}},kt=function(e){switch(e.tag){case 3:var t=e.stateNode;if(t.current.memoizedState.isDehydrated){var n=dt(t.pendingLanes);0!==n&&(bt(t,1|n),ou(t,Ye()),0==(6&Rl)&&(ql=Ye()+500,qo()))}break;case 13:du((function(){var t=ja(e,1);if(null!==t){var n=tu();ru(t,e,1,n)}})),Vu(e,1)}},xt=function(e){if(13===e.tag){var t=ja(e,134217728);if(null!==t)ru(t,e,134217728,tu());Vu(e,134217728)}},St=function(e){if(13===e.tag){var t=nu(e),n=ja(e,t);if(null!==n)ru(n,e,t,tu());Vu(e,t)}},Et=function(){return vt},Ct=function(e,t){var n=vt;try{return vt=e,t()}finally{vt=n}},xe=function(e,t,n){switch(t){case"input":if(X(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var o=xo(r);if(!o)throw Error(a(90));V(r),X(r,o)}}}break;case"textarea":ae(e,n);break;case"select":null!=(t=n.value)&&ne(e,!!n.multiple,t,!1)}},Le=cu,Re=du;var tc={usingClientEntryPoint:!1,Events:[wo,ko,xo,Te,_e,cu]},nc={findFiberByHostInstance:vo,bundleType:0,version:"18.2.0",rendererPackageName:"react-dom"},rc={bundleType:nc.bundleType,version:nc.version,rendererPackageName:nc.rendererPackageName,rendererConfig:nc.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:w.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Qe(e))?null:e.stateNode},findFiberByHostInstance:nc.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.2.0-next-9e3b772b8-20220608"};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var oc=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!oc.isDisabled&&oc.supportsFiber)try{ot=oc.inject(rc),at=oc}catch(ce){}}t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=tc,t.createPortal=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Yu(t))throw Error(a(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:x,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)},t.createRoot=function(e,t){if(!Yu(e))throw Error(a(299));var n=!1,r="",o=Wu;return null!=t&&(!0===t.unstable_strictMode&&(n=!0),void 0!==t.identifierPrefix&&(r=t.identifierPrefix),void 0!==t.onRecoverableError&&(o=t.onRecoverableError)),t=$u(e,1,!1,null,0,n,0,r,o),e[go]=t.current,Ur(8===e.nodeType?e.parentNode:e),new Gu(t)},t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternals;if(void 0===t){if("function"==typeof e.render)throw Error(a(188));throw e=Object.keys(e).join(","),Error(a(268,e))}return e=null===(e=Qe(t))?null:e.stateNode},t.flushSync=function(e){return du(e)},t.hydrate=function(e,t,n){if(!Xu(t))throw Error(a(200));return ec(null,e,t,!0,n)},t.hydrateRoot=function(e,t,n){if(!Yu(e))throw Error(a(405));var r=null!=n&&n.hydratedSources||null,o=!1,i="",s=Wu;if(null!=n&&(!0===n.unstable_strictMode&&(o=!0),void 0!==n.identifierPrefix&&(i=n.identifierPrefix),void 0!==n.onRecoverableError&&(s=n.onRecoverableError)),t=qu(t,null,e,1,null!=n?n:null,o,0,i,s),e[go]=t.current,Ur(e),r)for(e=0;e<r.length;e++)o=(o=(n=r[e])._getVersion)(n._source),null==t.mutableSourceEagerHydrationData?t.mutableSourceEagerHydrationData=[n,o]:t.mutableSourceEagerHydrationData.push(n,o);return new Ku(t)},t.render=function(e,t,n){if(!Xu(t))throw Error(a(200));return ec(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!Xu(e))throw Error(a(40));return!!e._reactRootContainer&&(du((function(){ec(null,null,e,!1,(function(){e._reactRootContainer=null,e[go]=null}))})),!0)},t.unstable_batchedUpdates=cu,t.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!Xu(n))throw Error(a(200));if(null==e||void 0===e._reactInternals)throw Error(a(38));return ec(e,t,n,!1,r)},t.version="18.2.0-next-9e3b772b8-20220608"},745:(e,t,n)=>{"use strict";var r=n(3935);t.createRoot=r.createRoot,t.hydrateRoot=r.hydrateRoot},3935:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(4448)},9590:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,o="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function a(e,i){if(e===i)return!0;if(e&&i&&"object"==typeof e&&"object"==typeof i){if(e.constructor!==i.constructor)return!1;var s,l,u,c;if(Array.isArray(e)){if((s=e.length)!=i.length)return!1;for(l=s;0!=l--;)if(!a(e[l],i[l]))return!1;return!0}if(n&&e instanceof Map&&i instanceof Map){if(e.size!==i.size)return!1;for(c=e.entries();!(l=c.next()).done;)if(!i.has(l.value[0]))return!1;for(c=e.entries();!(l=c.next()).done;)if(!a(l.value[1],i.get(l.value[0])))return!1;return!0}if(r&&e instanceof Set&&i instanceof Set){if(e.size!==i.size)return!1;for(c=e.entries();!(l=c.next()).done;)if(!i.has(l.value[0]))return!1;return!0}if(o&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(i)){if((s=e.length)!=i.length)return!1;for(l=s;0!=l--;)if(e[l]!==i[l])return!1;return!0}if(e.constructor===RegExp)return e.source===i.source&&e.flags===i.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof i.valueOf)return e.valueOf()===i.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof i.toString)return e.toString()===i.toString();if((s=(u=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(l=s;0!=l--;)if(!Object.prototype.hasOwnProperty.call(i,u[l]))return!1;if(t&&e instanceof Element)return!1;for(l=s;0!=l--;)if(("_owner"!==u[l]&&"__v"!==u[l]&&"__o"!==u[l]||!e.$$typeof)&&!a(e[u[l]],i[u[l]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return a(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},405:(e,t,n)=>{"use strict";n.d(t,{B6:()=>Q,ql:()=>J});var r=n(7294),o=n(5697),a=n.n(o),i=n(9590),s=n.n(i),l=n(1143),u=n.n(l),c=n(6774),d=n.n(c);function p(){return p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},p.apply(this,arguments)}function f(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,h(e,t)}function h(e,t){return h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},h(e,t)}function g(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)t.indexOf(n=a[r])>=0||(o[n]=e[n]);return o}var m={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},y={rel:["amphtml","canonical","alternate"]},b={type:["application/ld+json"]},v={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},w=Object.keys(m).map((function(e){return m[e]})),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},x=Object.keys(k).reduce((function(e,t){return e[k[t]]=t,e}),{}),S=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},E=function(e){var t=S(e,m.TITLE),n=S(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,(function(){return t}));var r=S(e,"defaultTitle");return t||r||void 0},C=function(e){return S(e,"onChangeClientState")||function(){}},T=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return p({},e,t)}),{})},_=function(e,t){return t.filter((function(e){return void 0!==e[m.BASE]})).map((function(e){return e[m.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),o=0;o<r.length;o+=1){var a=r[o].toLowerCase();if(-1!==e.indexOf(a)&&n[a])return t.concat(n)}return t}),[])},L=function(e,t,n){var r={};return n.filter((function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+e+' should be of type "Array". Instead found type "'+typeof t[e]+'"'),!1)})).map((function(t){return t[e]})).reverse().reduce((function(e,n){var o={};n.filter((function(e){for(var n,a=Object.keys(e),i=0;i<a.length;i+=1){var s=a[i],l=s.toLowerCase();-1===t.indexOf(l)||"rel"===n&&"canonical"===e[n].toLowerCase()||"rel"===l&&"stylesheet"===e[l].toLowerCase()||(n=l),-1===t.indexOf(s)||"innerHTML"!==s&&"cssText"!==s&&"itemprop"!==s||(n=s)}if(!n||!e[n])return!1;var u=e[n].toLowerCase();return r[n]||(r[n]={}),o[n]||(o[n]={}),!r[n][u]&&(o[n][u]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var a=Object.keys(o),i=0;i<a.length;i+=1){var s=a[i],l=p({},r[s],o[s]);r[s]=l}return e}),[]).reverse()},R=function(e,t){if(Array.isArray(e)&&e.length)for(var n=0;n<e.length;n+=1)if(e[n][t])return!0;return!1},j=function(e){return Array.isArray(e)?e.join(""):e},N=function(e,t){return Array.isArray(e)?e.reduce((function(e,n){return function(e,t){for(var n=Object.keys(e),r=0;r<n.length;r+=1)if(t[n[r]]&&t[n[r]].includes(e[n[r]]))return!0;return!1}(n,t)?e.priority.push(n):e.default.push(n),e}),{priority:[],default:[]}):{default:e}},A=function(e,t){var n;return p({},e,((n={})[t]=void 0,n))},P=[m.NOSCRIPT,m.SCRIPT,m.STYLE],O=function(e,t){return void 0===t&&(t=!0),!1===t?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},I=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},D=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce((function(t,n){return t[k[n]||n]=e[n],t}),t)},F=function(e,t){return t.map((function(t,n){var o,a=((o={key:n})["data-rh"]=!0,o);return Object.keys(t).forEach((function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?a.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:a[n]=t[e]})),r.createElement(e,a)}))},M=function(e,t,n){switch(e){case m.TITLE:return{toComponent:function(){return n=t.titleAttributes,(o={key:e=t.title})["data-rh"]=!0,a=D(n,o),[r.createElement(m.TITLE,a,e)];var e,n,o,a},toString:function(){return function(e,t,n,r){var o=I(n),a=j(t);return o?"<"+e+' data-rh="true" '+o+">"+O(a,r)+"</"+e+">":"<"+e+' data-rh="true">'+O(a,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return D(t)},toString:function(){return I(t)}};default:return{toComponent:function(){return F(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var o=Object.keys(r).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,t){var o=void 0===r[t]?t:t+'="'+O(r[t],n)+'"';return e?e+" "+o:o}),""),a=r.innerHTML||r.cssText||"",i=-1===P.indexOf(e);return t+"<"+e+' data-rh="true" '+o+(i?"/>":">"+a+"</"+e+">")}),"")}(e,t,n)}}}},z=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,o=e.htmlAttributes,a=e.noscriptTags,i=e.styleTags,s=e.title,l=void 0===s?"":s,u=e.titleAttributes,c=e.linkTags,d=e.metaTags,p=e.scriptTags,f={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var h=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,o=N(e.metaTags,v),a=N(t,y),i=N(n,b);return{priorityMethods:{toComponent:function(){return[].concat(F(m.META,o.priority),F(m.LINK,a.priority),F(m.SCRIPT,i.priority))},toString:function(){return M(m.META,o.priority,r)+" "+M(m.LINK,a.priority,r)+" "+M(m.SCRIPT,i.priority,r)}},metaTags:o.default,linkTags:a.default,scriptTags:i.default}}(e);f=h.priorityMethods,c=h.linkTags,d=h.metaTags,p=h.scriptTags}return{priority:f,base:M(m.BASE,t,r),bodyAttributes:M("bodyAttributes",n,r),htmlAttributes:M("htmlAttributes",o,r),link:M(m.LINK,c,r),meta:M(m.META,d,r),noscript:M(m.NOSCRIPT,a,r),script:M(m.SCRIPT,p,r),style:M(m.STYLE,i,r),title:M(m.TITLE,{title:l,titleAttributes:u},r)}},B=[],$=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?B:n.instances},add:function(e){(n.canUseDOM?B:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?B:n.instances).indexOf(e);(n.canUseDOM?B:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=z({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},U=r.createContext({}),q=a().shape({setHelmet:a().func,helmetInstances:a().shape({get:a().func,add:a().func,remove:a().func})}),H="undefined"!=typeof document,Q=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new $(r.props.context,t.canUseDOM),r}return f(t,e),t.prototype.render=function(){return r.createElement(U.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);Q.canUseDOM=H,Q.propTypes={context:a().shape({helmet:a().shape()}),children:a().node.isRequired},Q.defaultProps={context:{}},Q.displayName="HelmetProvider";var Z=function(e,t){var n,r=document.head||document.querySelector(m.HEAD),o=r.querySelectorAll(e+"[data-rh]"),a=[].slice.call(o),i=[];return t&&t.length&&t.forEach((function(t){var r=document.createElement(e);for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&("innerHTML"===o?r.innerHTML=t.innerHTML:"cssText"===o?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(o,void 0===t[o]?"":t[o]));r.setAttribute("data-rh","true"),a.some((function(e,t){return n=t,r.isEqualNode(e)}))?a.splice(n,1):i.push(r)})),a.forEach((function(e){return e.parentNode.removeChild(e)})),i.forEach((function(e){return r.appendChild(e)})),{oldTags:a,newTags:i}},V=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),o=r?r.split(","):[],a=[].concat(o),i=Object.keys(t),s=0;s<i.length;s+=1){var l=i[s],u=t[l]||"";n.getAttribute(l)!==u&&n.setAttribute(l,u),-1===o.indexOf(l)&&o.push(l);var c=a.indexOf(l);-1!==c&&a.splice(c,1)}for(var d=a.length-1;d>=0;d-=1)n.removeAttribute(a[d]);o.length===a.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},W=function(e,t){var n=e.baseTag,r=e.htmlAttributes,o=e.linkTags,a=e.metaTags,i=e.noscriptTags,s=e.onChangeClientState,l=e.scriptTags,u=e.styleTags,c=e.title,d=e.titleAttributes;V(m.BODY,e.bodyAttributes),V(m.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=j(e)),V(m.TITLE,t)}(c,d);var p={baseTag:Z(m.BASE,n),linkTags:Z(m.LINK,o),metaTags:Z(m.META,a),noscriptTags:Z(m.NOSCRIPT,i),scriptTags:Z(m.SCRIPT,l),styleTags:Z(m.STYLE,u)},f={},h={};Object.keys(p).forEach((function(e){var t=p[e],n=t.newTags,r=t.oldTags;n.length&&(f[e]=n),r.length&&(h[e]=p[e].oldTags)})),t&&t(),s(e,f,h)},G=null,K=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(t=e.call.apply(e,[this].concat(r))||this).rendered=!1,t}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!d()(e,this.props)},n.componentDidUpdate=function(){this.emitChange()},n.componentWillUnmount=function(){this.props.context.helmetInstances.remove(this),this.emitChange()},n.emitChange=function(){var e,t,n=this.props.context,r=n.setHelmet,o=null,a=(e=n.helmetInstances.get().map((function(e){var t=p({},e.props);return delete t.context,t})),{baseTag:_(["href"],e),bodyAttributes:T("bodyAttributes",e),defer:S(e,"defer"),encode:S(e,"encodeSpecialCharacters"),htmlAttributes:T("htmlAttributes",e),linkTags:L(m.LINK,["rel","href"],e),metaTags:L(m.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:L(m.NOSCRIPT,["innerHTML"],e),onChangeClientState:C(e),scriptTags:L(m.SCRIPT,["src","innerHTML"],e),styleTags:L(m.STYLE,["cssText"],e),title:E(e),titleAttributes:T("titleAttributes",e),prioritizeSeoTags:R(e,"prioritizeSeoTags")});Q.canUseDOM?(t=a,G&&cancelAnimationFrame(G),t.defer?G=requestAnimationFrame((function(){W(t,(function(){G=null}))})):(W(t),G=null)):z&&(o=z(a)),r(o)},n.init=function(){this.rendered||(this.rendered=!0,this.props.context.helmetInstances.add(this),this.emitChange())},n.render=function(){return this.init(),null},t}(r.Component);K.propTypes={context:q.isRequired},K.displayName="HelmetDispatcher";var Y=["children"],X=["children"],J=function(e){function t(){return e.apply(this,arguments)||this}f(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!s()(A(this.props,"helmetData"),A(e,"helmetData"))},n.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case m.SCRIPT:case m.NOSCRIPT:return{innerHTML:t};case m.STYLE:return{cssText:t};default:throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return p({},r,((t={})[n.type]=[].concat(r[n.type]||[],[p({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,o=e.newProps,a=e.newChildProps,i=e.nestedChildren;switch(r.type){case m.TITLE:return p({},o,((t={})[r.type]=i,t.titleAttributes=p({},a),t));case m.BODY:return p({},o,{bodyAttributes:p({},a)});case m.HTML:return p({},o,{htmlAttributes:p({},a)});default:return p({},o,((n={})[r.type]=p({},a),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=p({},t);return Object.keys(e).forEach((function(t){var r;n=p({},n,((r={})[t]=e[t],r))})),n},n.warnOnInvalidChildren=function(e,t){return u()(w.some((function(t){return e.type===t})),"function"==typeof e.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),u()(!t||"string"==typeof t||Array.isArray(t)&&!t.some((function(e){return"string"!=typeof e})),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``}</"+e.type+"> ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,o={};return r.Children.forEach(e,(function(e){if(e&&e.props){var r=e.props,a=r.children,i=g(r,Y),s=Object.keys(i).reduce((function(e,t){return e[x[t]||t]=i[t],e}),{}),l=e.type;switch("symbol"==typeof l?l=l.toString():n.warnOnInvalidChildren(e,a),l){case m.FRAGMENT:t=n.mapChildrenToProps(a,t);break;case m.LINK:case m.META:case m.NOSCRIPT:case m.SCRIPT:case m.STYLE:o=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:o,newChildProps:s,nestedChildren:a});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:s,nestedChildren:a})}}})),this.mapArrayTypeChildrenToProps(o,t)},n.render=function(){var e=this.props,t=e.children,n=g(e,X),o=p({},n),a=n.helmetData;return t&&(o=this.mapChildrenToProps(t,o)),!a||a instanceof $||(a=new $(a.context,a.instances)),a?r.createElement(K,p({},o,{context:a.value,helmetData:void 0})):r.createElement(U.Consumer,null,(function(e){return r.createElement(K,p({},o,{context:e}))}))},t}(r.Component);J.propTypes={base:a().object,bodyAttributes:a().object,children:a().oneOfType([a().arrayOf(a().node),a().node]),defaultTitle:a().string,defer:a().bool,encodeSpecialCharacters:a().bool,htmlAttributes:a().object,link:a().arrayOf(a().object),meta:a().arrayOf(a().object),noscript:a().arrayOf(a().object),onChangeClientState:a().func,script:a().arrayOf(a().object),style:a().arrayOf(a().object),title:a().string,titleAttributes:a().object,titleTemplate:a().string,prioritizeSeoTags:a().bool,helmetData:a().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},9921:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,o=n?Symbol.for("react.portal"):60106,a=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,s=n?Symbol.for("react.profiler"):60114,l=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,p=n?Symbol.for("react.forward_ref"):60112,f=n?Symbol.for("react.suspense"):60113,h=n?Symbol.for("react.suspense_list"):60120,g=n?Symbol.for("react.memo"):60115,m=n?Symbol.for("react.lazy"):60116,y=n?Symbol.for("react.block"):60121,b=n?Symbol.for("react.fundamental"):60117,v=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function k(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case d:case a:case s:case i:case f:return e;default:switch(e=e&&e.$$typeof){case u:case p:case m:case g:case l:return e;default:return t}}case o:return t}}}function x(e){return k(e)===d}t.AsyncMode=c,t.ConcurrentMode=d,t.ContextConsumer=u,t.ContextProvider=l,t.Element=r,t.ForwardRef=p,t.Fragment=a,t.Lazy=m,t.Memo=g,t.Portal=o,t.Profiler=s,t.StrictMode=i,t.Suspense=f,t.isAsyncMode=function(e){return x(e)||k(e)===c},t.isConcurrentMode=x,t.isContextConsumer=function(e){return k(e)===u},t.isContextProvider=function(e){return k(e)===l},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return k(e)===p},t.isFragment=function(e){return k(e)===a},t.isLazy=function(e){return k(e)===m},t.isMemo=function(e){return k(e)===g},t.isPortal=function(e){return k(e)===o},t.isProfiler=function(e){return k(e)===s},t.isStrictMode=function(e){return k(e)===i},t.isSuspense=function(e){return k(e)===f},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===d||e===s||e===i||e===f||e===h||"object"==typeof e&&null!==e&&(e.$$typeof===m||e.$$typeof===g||e.$$typeof===l||e.$$typeof===u||e.$$typeof===p||e.$$typeof===b||e.$$typeof===v||e.$$typeof===w||e.$$typeof===y)},t.typeOf=k},9864:(e,t,n)=>{"use strict";e.exports=n(9921)},8356:(e,t,n)=>{"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function o(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}var s=n(7294),l=n(5697),u=[],c=[];function d(e){var t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then((function(e){return n.loading=!1,n.loaded=e,e})).catch((function(e){throw n.loading=!1,n.error=e,e})),n}function p(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach((function(r){var o=d(e[r]);o.loading?t.loading=!0:(t.loaded[r]=o.loaded,t.error=o.error),n.push(o.promise),o.promise.then((function(e){t.loaded[r]=e})).catch((function(e){t.error=e}))}))}catch(r){t.error=r}return t.promise=Promise.all(n).then((function(e){return t.loading=!1,e})).catch((function(e){throw t.loading=!1,e})),t}function f(e,t){return s.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function h(e,t){var d,p;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var h=i({loader:null,loading:null,delay:200,timeout:null,render:f,webpack:null,modules:null},t),g=null;function m(){return g||(g=e(h.loader)),g.promise}return u.push(m),"function"==typeof h.webpack&&c.push((function(){if((0,h.webpack)().every((function(e){return void 0!==e&&void 0!==n.m[e]})))return m()})),p=d=function(t){function n(n){var r;return a(o(o(r=t.call(this,n)||this)),"retry",(function(){r.setState({error:null,loading:!0,timedOut:!1}),g=e(h.loader),r._loadModule()})),m(),r.state={error:g.error,pastDelay:!1,timedOut:!1,loading:g.loading,loaded:g.loaded},r}r(n,t),n.preload=function(){return m()};var i=n.prototype;return i.UNSAFE_componentWillMount=function(){this._loadModule()},i.componentDidMount=function(){this._mounted=!0},i._loadModule=function(){var e=this;if(this.context.loadable&&Array.isArray(h.modules)&&h.modules.forEach((function(t){e.context.loadable.report(t)})),g.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof h.delay&&(0===h.delay?this.setState({pastDelay:!0}):this._delay=setTimeout((function(){t({pastDelay:!0})}),h.delay)),"number"==typeof h.timeout&&(this._timeout=setTimeout((function(){t({timedOut:!0})}),h.timeout));var n=function(){t({error:g.error,loaded:g.loaded,loading:g.loading}),e._clearTimeouts()};g.promise.then((function(){return n(),null})).catch((function(e){return n(),null}))}},i.componentWillUnmount=function(){this._mounted=!1,this._clearTimeouts()},i._clearTimeouts=function(){clearTimeout(this._delay),clearTimeout(this._timeout)},i.render=function(){return this.state.loading||this.state.error?s.createElement(h.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?h.render(this.state.loaded,this.props):null},n}(s.Component),a(d,"contextTypes",{loadable:l.shape({report:l.func.isRequired})}),p}function g(e){return h(d,e)}g.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return h(p,e)};var m=function(e){function t(){return e.apply(this,arguments)||this}r(t,e);var n=t.prototype;return n.getChildContext=function(){return{loadable:{report:this.props.report}}},n.render=function(){return s.Children.only(this.props.children)},t}(s.Component);function y(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then((function(){if(e.length)return y(e)}))}a(m,"propTypes",{report:l.func.isRequired}),a(m,"childContextTypes",{loadable:l.shape({report:l.func.isRequired}).isRequired}),g.Capture=m,g.preloadAll=function(){return new Promise((function(e,t){y(u).then(e,t)}))},g.preloadReady=function(){return new Promise((function(e,t){y(c).then(e,e)}))},e.exports=g},8790:(e,t,n)=>{"use strict";n.d(t,{H:()=>s,f:()=>i});var r=n(6550),o=n(7462),a=n(7294);function i(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var o=e.path?(0,r.LX)(t,e):n.length?n[n.length-1].match:r.F0.computeRootMatch(t);return o&&(n.push({route:e,match:o}),e.routes&&i(e.routes,t,n)),o})),n}function s(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?a.createElement(r.rs,n,e.map((function(e,n){return a.createElement(r.AW,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,o.Z)({},n,{},t,{route:e})):a.createElement(e.component,(0,o.Z)({},n,t,{route:e}))}})}))):null}},3727:(e,t,n)=>{"use strict";n.d(t,{OL:()=>v,VK:()=>c,rU:()=>m});var r=n(6550),o=n(5068),a=n(7294),i=n(9318),s=n(7462),l=n(3366),u=n(8776),c=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.lX)(t.props),t}return(0,o.Z)(t,e),t.prototype.render=function(){return a.createElement(r.F0,{history:this.history,children:this.props.children})},t}(a.Component);a.Component;var d=function(e,t){return"function"==typeof e?e(t):e},p=function(e,t){return"string"==typeof e?(0,i.ob)(e,null,null,t):e},f=function(e){return e},h=a.forwardRef;void 0===h&&(h=f);var g=h((function(e,t){var n=e.innerRef,r=e.navigate,o=e.onClick,i=(0,l.Z)(e,["innerRef","navigate","onClick"]),u=i.target,c=(0,s.Z)({},i,{onClick:function(e){try{o&&o(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||u&&"_self"!==u||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return c.ref=f!==h&&t||n,a.createElement("a",c)}));var m=h((function(e,t){var n=e.component,o=void 0===n?g:n,c=e.replace,m=e.to,y=e.innerRef,b=(0,l.Z)(e,["component","replace","to","innerRef"]);return a.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=e.history,r=p(d(m,e.location),e.location),l=r?n.createHref(r):"",g=(0,s.Z)({},b,{href:l,navigate:function(){var t=d(m,e.location),r=(0,i.Ep)(e.location)===(0,i.Ep)(p(t));(c||r?n.replace:n.push)(t)}});return f!==h?g.ref=t||y:g.innerRef=y,a.createElement(o,g)}))})),y=function(e){return e},b=a.forwardRef;void 0===b&&(b=y);var v=b((function(e,t){var n=e["aria-current"],o=void 0===n?"page":n,i=e.activeClassName,c=void 0===i?"active":i,f=e.activeStyle,h=e.className,g=e.exact,v=e.isActive,w=e.location,k=e.sensitive,x=e.strict,S=e.style,E=e.to,C=e.innerRef,T=(0,l.Z)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return a.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=w||e.location,i=p(d(E,n),n),l=i.pathname,_=l&&l.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),L=_?(0,r.LX)(n.pathname,{path:_,exact:g,sensitive:k,strict:x}):null,R=!!(v?v(L,n):L),j="function"==typeof h?h(R):h,N="function"==typeof S?S(R):S;R&&(j=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((function(e){return e})).join(" ")}(j,c),N=(0,s.Z)({},N,f));var A=(0,s.Z)({"aria-current":R&&o||null,className:j,style:N,to:i},T);return y!==b?A.ref=t||C:A.innerRef=C,a.createElement(m,A)}))}))},6550:(e,t,n)=>{"use strict";n.d(t,{AW:()=>E,F0:()=>v,LX:()=>S,TH:()=>P,k6:()=>A,rs:()=>j,s6:()=>b});var r=n(5068),o=n(7294),a=n(5697),i=n.n(a),s=n(9318),l=n(8776),u=n(7462),c=n(4779),d=n.n(c),p=(n(9864),n(3366)),f=(n(8679),1073741823),h="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};var g=o.createContext||function(e,t){var n,a,s="__create-react-context-"+function(){var e="__global_unique_id__";return h[e]=(h[e]||0)+1}()+"__",l=function(e){function n(){for(var t,n,r,o=arguments.length,a=new Array(o),i=0;i<o;i++)a[i]=arguments[i];return(t=e.call.apply(e,[this].concat(a))||this).emitter=(n=t.props.value,r=[],{on:function(e){r.push(e)},off:function(e){r=r.filter((function(t){return t!==e}))},get:function(){return n},set:function(e,t){n=e,r.forEach((function(e){return e(n,t)}))}}),t}(0,r.Z)(n,e);var o=n.prototype;return o.getChildContext=function(){var e;return(e={})[s]=this.emitter,e},o.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,o=e.value;((a=r)===(i=o)?0!==a||1/a==1/i:a!=a&&i!=i)?n=0:(n="function"==typeof t?t(r,o):f,0!==(n|=0)&&this.emitter.set(e.value,n))}var a,i},o.render=function(){return this.props.children},n}(o.Component);l.childContextTypes=((n={})[s]=i().object.isRequired,n);var u=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),o=0;o<n;o++)r[o]=arguments[o];return(e=t.call.apply(t,[this].concat(r))||this).observedBits=void 0,e.state={value:e.getValue()},e.onUpdate=function(t,n){0!=((0|e.observedBits)&n)&&e.setState({value:e.getValue()})},e}(0,r.Z)(n,t);var o=n.prototype;return o.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?f:t},o.componentDidMount=function(){this.context[s]&&this.context[s].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?f:e},o.componentWillUnmount=function(){this.context[s]&&this.context[s].off(this.onUpdate)},o.getValue=function(){return this.context[s]?this.context[s].get():e},o.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(o.Component);return u.contextTypes=((a={})[s]=i().object,a),{Provider:l,Consumer:u}},m=function(e){var t=g();return t.displayName=e,t},y=m("Router-History"),b=m("Router"),v=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._pendingLocation=e}))),n}(0,r.Z)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){var e=this;this._isMounted=!0,this.unlisten&&this.unlisten(),this.props.staticContext||(this.unlisten=this.props.history.listen((function(t){e._isMounted&&e.setState({location:t})}))),this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return o.createElement(b.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},o.createElement(y.Provider,{children:this.props.children||null,value:this.props.history}))},t}(o.Component);o.Component;o.Component;var w={},k=1e4,x=0;function S(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,o=n.exact,a=void 0!==o&&o,i=n.strict,s=void 0!==i&&i,l=n.sensitive,u=void 0!==l&&l;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=w[n]||(w[n]={});if(r[e])return r[e];var o=[],a={regexp:d()(e,o,t),keys:o};return x<k&&(r[e]=a,x++),a}(n,{end:a,strict:s,sensitive:u}),o=r.regexp,i=r.keys,l=o.exec(e);if(!l)return null;var c=l[0],p=l.slice(1),f=e===c;return a&&!f?null:{path:n,url:"/"===n&&""===c?"/":c,isExact:f,params:i.reduce((function(e,t,n){return e[t.name]=p[n],e}),{})}}),null)}var E=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return o.createElement(b.Consumer,null,(function(t){t||(0,l.Z)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?S(n.pathname,e.props):t.match,a=(0,u.Z)({},t,{location:n,match:r}),i=e.props,s=i.children,c=i.component,d=i.render;return Array.isArray(s)&&function(e){return 0===o.Children.count(e)}(s)&&(s=null),o.createElement(b.Provider,{value:a},a.match?s?"function"==typeof s?s(a):s:c?o.createElement(c,a):d?d(a):null:"function"==typeof s?s(a):null)}))},t}(o.Component);function C(e){return"/"===e.charAt(0)?e:"/"+e}function T(e,t){if(!e)return t;var n=C(e);return 0!==t.pathname.indexOf(n)?t:(0,u.Z)({},t,{pathname:t.pathname.substr(n.length)})}function _(e){return"string"==typeof e?e:(0,s.Ep)(e)}function L(e){return function(){(0,l.Z)(!1)}}function R(){}o.Component;var j=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return o.createElement(b.Consumer,null,(function(t){t||(0,l.Z)(!1);var n,r,a=e.props.location||t.location;return o.Children.forEach(e.props.children,(function(e){if(null==r&&o.isValidElement(e)){n=e;var i=e.props.path||e.props.from;r=i?S(a.pathname,(0,u.Z)({},e.props,{path:i})):t.match}})),r?o.cloneElement(n,{location:a,computedMatch:r}):null}))},t}(o.Component);var N=o.useContext;function A(){return N(y)}function P(){return N(b).location}},5251:(e,t,n)=>{"use strict";var r=n(7294),o=Symbol.for("react.element"),a=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,s=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,l={key:!0,ref:!0,__self:!0,__source:!0};function u(e,t,n){var r,a={},u=null,c=null;for(r in void 0!==n&&(u=""+n),void 0!==t.key&&(u=""+t.key),void 0!==t.ref&&(c=t.ref),t)i.call(t,r)&&!l.hasOwnProperty(r)&&(a[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===a[r]&&(a[r]=t[r]);return{$$typeof:o,type:e,key:u,ref:c,props:a,_owner:s.current}}t.Fragment=a,t.jsx=u,t.jsxs=u},2408:(e,t)=>{"use strict";var n=Symbol.for("react.element"),r=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),s=Symbol.for("react.provider"),l=Symbol.for("react.context"),u=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),f=Symbol.iterator;var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,m={};function y(e,t,n){this.props=e,this.context=t,this.refs=m,this.updater=n||h}function b(){}function v(e,t,n){this.props=e,this.context=t,this.refs=m,this.updater=n||h}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},b.prototype=y.prototype;var w=v.prototype=new b;w.constructor=v,g(w,y.prototype),w.isPureReactComponent=!0;var k=Array.isArray,x=Object.prototype.hasOwnProperty,S={current:null},E={key:!0,ref:!0,__self:!0,__source:!0};function C(e,t,r){var o,a={},i=null,s=null;if(null!=t)for(o in void 0!==t.ref&&(s=t.ref),void 0!==t.key&&(i=""+t.key),t)x.call(t,o)&&!E.hasOwnProperty(o)&&(a[o]=t[o]);var l=arguments.length-2;if(1===l)a.children=r;else if(1<l){for(var u=Array(l),c=0;c<l;c++)u[c]=arguments[c+2];a.children=u}if(e&&e.defaultProps)for(o in l=e.defaultProps)void 0===a[o]&&(a[o]=l[o]);return{$$typeof:n,type:e,key:i,ref:s,props:a,_owner:S.current}}function T(e){return"object"==typeof e&&null!==e&&e.$$typeof===n}var _=/\/+/g;function L(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function R(e,t,o,a,i){var s=typeof e;"undefined"!==s&&"boolean"!==s||(e=null);var l=!1;if(null===e)l=!0;else switch(s){case"string":case"number":l=!0;break;case"object":switch(e.$$typeof){case n:case r:l=!0}}if(l)return i=i(l=e),e=""===a?"."+L(l,0):a,k(i)?(o="",null!=e&&(o=e.replace(_,"$&/")+"/"),R(i,t,o,"",(function(e){return e}))):null!=i&&(T(i)&&(i=function(e,t){return{$$typeof:n,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(i,o+(!i.key||l&&l.key===i.key?"":(""+i.key).replace(_,"$&/")+"/")+e)),t.push(i)),1;if(l=0,a=""===a?".":a+":",k(e))for(var u=0;u<e.length;u++){var c=a+L(s=e[u],u);l+=R(s,t,o,c,i)}else if(c=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=f&&e[f]||e["@@iterator"])?e:null}(e),"function"==typeof c)for(e=c.call(e),u=0;!(s=e.next()).done;)l+=R(s=s.value,t,o,c=a+L(s,u++),i);else if("object"===s)throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return l}function j(e,t,n){if(null==e)return e;var r=[],o=0;return R(e,r,"","",(function(e){return t.call(n,e,o++)})),r}function N(e){if(-1===e._status){var t=e._result;(t=t()).then((function(t){0!==e._status&&-1!==e._status||(e._status=1,e._result=t)}),(function(t){0!==e._status&&-1!==e._status||(e._status=2,e._result=t)})),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var A={current:null},P={transition:null},O={ReactCurrentDispatcher:A,ReactCurrentBatchConfig:P,ReactCurrentOwner:S};t.Children={map:j,forEach:function(e,t,n){j(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return j(e,(function(){t++})),t},toArray:function(e){return j(e,(function(e){return e}))||[]},only:function(e){if(!T(e))throw Error("React.Children.only expected to receive a single React element child.");return e}},t.Component=y,t.Fragment=o,t.Profiler=i,t.PureComponent=v,t.StrictMode=a,t.Suspense=c,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=O,t.cloneElement=function(e,t,r){if(null==e)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var o=g({},e.props),a=e.key,i=e.ref,s=e._owner;if(null!=t){if(void 0!==t.ref&&(i=t.ref,s=S.current),void 0!==t.key&&(a=""+t.key),e.type&&e.type.defaultProps)var l=e.type.defaultProps;for(u in t)x.call(t,u)&&!E.hasOwnProperty(u)&&(o[u]=void 0===t[u]&&void 0!==l?l[u]:t[u])}var u=arguments.length-2;if(1===u)o.children=r;else if(1<u){l=Array(u);for(var c=0;c<u;c++)l[c]=arguments[c+2];o.children=l}return{$$typeof:n,type:e.type,key:a,ref:i,props:o,_owner:s}},t.createContext=function(e){return(e={$$typeof:l,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null}).Provider={$$typeof:s,_context:e},e.Consumer=e},t.createElement=C,t.createFactory=function(e){var t=C.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:u,render:e}},t.isValidElement=T,t.lazy=function(e){return{$$typeof:p,_payload:{_status:-1,_result:e},_init:N}},t.memo=function(e,t){return{$$typeof:d,type:e,compare:void 0===t?null:t}},t.startTransition=function(e){var t=P.transition;P.transition={};try{e()}finally{P.transition=t}},t.unstable_act=function(){throw Error("act(...) is not supported in production builds of React.")},t.useCallback=function(e,t){return A.current.useCallback(e,t)},t.useContext=function(e){return A.current.useContext(e)},t.useDebugValue=function(){},t.useDeferredValue=function(e){return A.current.useDeferredValue(e)},t.useEffect=function(e,t){return A.current.useEffect(e,t)},t.useId=function(){return A.current.useId()},t.useImperativeHandle=function(e,t,n){return A.current.useImperativeHandle(e,t,n)},t.useInsertionEffect=function(e,t){return A.current.useInsertionEffect(e,t)},t.useLayoutEffect=function(e,t){return A.current.useLayoutEffect(e,t)},t.useMemo=function(e,t){return A.current.useMemo(e,t)},t.useReducer=function(e,t,n){return A.current.useReducer(e,t,n)},t.useRef=function(e){return A.current.useRef(e)},t.useState=function(e){return A.current.useState(e)},t.useSyncExternalStore=function(e,t,n){return A.current.useSyncExternalStore(e,t,n)},t.useTransition=function(){return A.current.useTransition()},t.version="18.2.0"},7294:(e,t,n)=>{"use strict";e.exports=n(2408)},5893:(e,t,n)=>{"use strict";e.exports=n(5251)},53:(e,t)=>{"use strict";function n(e,t){var n=e.length;e.push(t);e:for(;0<n;){var r=n-1>>>1,o=e[r];if(!(0<a(o,t)))break e;e[r]=t,e[n]=o,n=r}}function r(e){return 0===e.length?null:e[0]}function o(e){if(0===e.length)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,o=e.length,i=o>>>1;r<i;){var s=2*(r+1)-1,l=e[s],u=s+1,c=e[u];if(0>a(l,n))u<o&&0>a(c,l)?(e[r]=c,e[u]=n,r=u):(e[r]=l,e[s]=n,r=s);else{if(!(u<o&&0>a(c,n)))break e;e[r]=c,e[u]=n,r=u}}}return t}function a(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if("object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var s=Date,l=s.now();t.unstable_now=function(){return s.now()-l}}var u=[],c=[],d=1,p=null,f=3,h=!1,g=!1,m=!1,y="function"==typeof setTimeout?setTimeout:null,b="function"==typeof clearTimeout?clearTimeout:null,v="undefined"!=typeof setImmediate?setImmediate:null;function w(e){for(var t=r(c);null!==t;){if(null===t.callback)o(c);else{if(!(t.startTime<=e))break;o(c),t.sortIndex=t.expirationTime,n(u,t)}t=r(c)}}function k(e){if(m=!1,w(e),!g)if(null!==r(u))g=!0,P(x);else{var t=r(c);null!==t&&O(k,t.startTime-e)}}function x(e,n){g=!1,m&&(m=!1,b(T),T=-1),h=!0;var a=f;try{for(w(n),p=r(u);null!==p&&(!(p.expirationTime>n)||e&&!R());){var i=p.callback;if("function"==typeof i){p.callback=null,f=p.priorityLevel;var s=i(p.expirationTime<=n);n=t.unstable_now(),"function"==typeof s?p.callback=s:p===r(u)&&o(u),w(n)}else o(u);p=r(u)}if(null!==p)var l=!0;else{var d=r(c);null!==d&&O(k,d.startTime-n),l=!1}return l}finally{p=null,f=a,h=!1}}"undefined"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var S,E=!1,C=null,T=-1,_=5,L=-1;function R(){return!(t.unstable_now()-L<_)}function j(){if(null!==C){var e=t.unstable_now();L=e;var n=!0;try{n=C(!0,e)}finally{n?S():(E=!1,C=null)}}else E=!1}if("function"==typeof v)S=function(){v(j)};else if("undefined"!=typeof MessageChannel){var N=new MessageChannel,A=N.port2;N.port1.onmessage=j,S=function(){A.postMessage(null)}}else S=function(){y(j,0)};function P(e){C=e,E||(E=!0,S())}function O(e,n){T=y((function(){e(t.unstable_now())}),n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){g||h||(g=!0,P(x))},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):_=0<e?Math.floor(1e3/e):5},t.unstable_getCurrentPriorityLevel=function(){return f},t.unstable_getFirstCallbackNode=function(){return r(u)},t.unstable_next=function(e){switch(f){case 1:case 2:case 3:var t=3;break;default:t=f}var n=f;f=t;try{return e()}finally{f=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=function(){},t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=f;f=e;try{return t()}finally{f=n}},t.unstable_scheduleCallback=function(e,o,a){var i=t.unstable_now();switch("object"==typeof a&&null!==a?a="number"==typeof(a=a.delay)&&0<a?i+a:i:a=i,e){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return e={id:d++,callback:o,priorityLevel:e,startTime:a,expirationTime:s=a+s,sortIndex:-1},a>i?(e.sortIndex=a,n(c,e),null===r(u)&&e===r(c)&&(m?(b(T),T=-1):m=!0,O(k,a-i))):(e.sortIndex=s,n(u,e),g||h||(g=!0,P(x))),e},t.unstable_shouldYield=R,t.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}},3840:(e,t,n)=>{"use strict";e.exports=n(53)},6774:e=>{e.exports=function(e,t,n,r){var o=n?n.call(r,e,t):void 0;if(void 0!==o)return!!o;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var a=Object.keys(e),i=Object.keys(t);if(a.length!==i.length)return!1;for(var s=Object.prototype.hasOwnProperty.bind(t),l=0;l<a.length;l++){var u=a[l];if(!s(u))return!1;var c=e[u],d=t[u];if(!1===(o=n?n.call(r,c,d,u):void 0)||void 0===o&&c!==d)return!1}return!0}},6809:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={title:"Groundlight",tagline:"Computer Vision powered by Natural Language",favicon:"img/favicon.ico",url:"https://www.groundlight.ai",baseUrl:"/python-sdk/",organizationName:"groundlight",projectName:"python-sdk",deploymentBranch:"gh-pages",trailingSlash:!1,onBrokenLinks:"throw",onBrokenMarkdownLinks:"throw",i18n:{defaultLocale:"en",locales:["en"],path:"i18n",localeConfigs:{}},presets:[["classic",{docs:{sidebarPath:"/home/runner/work/python-sdk/python-sdk/docs/sidebars.js",editUrl:"https://github.com/groundlight/python-sdk/tree/main/docs/"},theme:{customCss:"/home/runner/work/python-sdk/python-sdk/docs/src/css/custom.css"}}]],themes:[["/home/runner/work/python-sdk/python-sdk/docs/node_modules/@easyops-cn/docusaurus-search-local/dist/server/server/index.js",{hashed:!0,highlightSearchTermsOnTargetPage:!0,explicitSearchResultPath:!0,removeDefaultStemmer:!0}]],themeConfig:{image:"img/docusaurus-social-card.jpg",navbar:{title:"Groundlight",logo:{alt:"Groundlight Logo",src:"img/favicon-32x32.png",href:"https://code.groundlight.ai/"},items:[{type:"docSidebar",sidebarId:"tutorialSidebar",position:"left",label:"Docs"},{to:"/docs/building-applications",label:"Applications",position:"left"},{href:"pathname:///python-sdk/api-reference-docs/",label:"API Reference",position:"left"},{href:"https://github.com/groundlight/python-sdk",label:"GitHub",position:"right"}],hideOnScroll:!1},footer:{style:"dark",links:[{title:"Documentation",items:[{label:"Getting Started",to:"/docs/getting-started"},{label:"Building Applications",to:"/docs/building-applications"},{label:"Installation",to:"/docs/installation"}]},{title:"Company",items:[{label:"About",href:"https://www.groundlight.ai/"},{label:"Team",href:"https://www.groundlight.ai/team"},{label:"Careers",href:"https://www.groundlight.ai/careers"},{label:"Sign In",href:"https://app.groundlight.ai/"}]},{title:"Code",items:[{label:"Github",href:"https://github.com/groundlight/"},{label:"Python SDK",href:"https://pypi.org/project/groundlight/"},{label:"Video streaming",href:"https://github.com/groundlight/stream"},{label:"Arduino",href:"https://github.com/groundlight/esp32cam"}]}],copyright:"Copyright \xa9 2023 Groundlight AI."},prism:{theme:{plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},darkTheme:{plain:{color:"#9CDCFE",backgroundColor:"#1E1E1E"},styles:[{types:["prolog"],style:{color:"rgb(0, 0, 128)"}},{types:["comment"],style:{color:"rgb(106, 153, 85)"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"rgb(86, 156, 214)"}},{types:["number","inserted"],style:{color:"rgb(181, 206, 168)"}},{types:["constant"],style:{color:"rgb(100, 102, 149)"}},{types:["attr-name","variable"],style:{color:"rgb(156, 220, 254)"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"rgb(206, 145, 120)"}},{types:["selector"],style:{color:"rgb(215, 186, 125)"}},{types:["tag"],style:{color:"rgb(78, 201, 176)"}},{types:["tag"],languages:["markup"],style:{color:"rgb(86, 156, 214)"}},{types:["punctuation","operator"],style:{color:"rgb(212, 212, 212)"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"rgb(220, 220, 170)"}},{types:["class-name"],style:{color:"rgb(78, 201, 176)"}},{types:["char"],style:{color:"rgb(209, 105, 105)"}}]},additionalLanguages:[],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},colorMode:{defaultMode:"light",disableSwitch:!1,respectPrefersColorScheme:!1},docs:{versionPersistence:"localStorage",sidebar:{hideable:!1,autoCollapseCategories:!1}},metadata:[],tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},baseUrlIssueBanner:!0,onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},plugins:[],scripts:[],headTags:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1,markdown:{format:"mdx",mermaid:!1,mdx1Compat:{comments:!0,admonitions:!0,headingIds:!0}}}},7462:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(this,arguments)}n.d(t,{Z:()=>r})},5068:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function o(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{Z:()=>o})},3366:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}n.d(t,{Z:()=>r})},4965:(e,t,n)=>{"use strict";n.d(t,{y$:()=>J,p1:()=>T});var r=n(7294);function o(e){var t,n,r="";if("string"==typeof e||"number"==typeof e)r+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=o(e[t]))&&(r&&(r+=" "),r+=n);else for(t in e)e[t]&&(r&&(r+=" "),r+=t);return r}const a=function(){for(var e,t,n=0,r="";n<arguments.length;)(e=arguments[n++])&&(t=o(e))&&(r&&(r+=" "),r+=t);return r};var i,s,l,u,c,d=Object.create,p=Object.defineProperty,f=Object.defineProperties,h=Object.getOwnPropertyDescriptor,g=Object.getOwnPropertyDescriptors,m=Object.getOwnPropertyNames,y=Object.getOwnPropertySymbols,b=Object.getPrototypeOf,v=Object.prototype.hasOwnProperty,w=Object.prototype.propertyIsEnumerable,k=(e,t,n)=>t in e?p(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,x=(e,t)=>{for(var n in t||(t={}))v.call(t,n)&&k(e,n,t[n]);if(y)for(var n of y(t))w.call(t,n)&&k(e,n,t[n]);return e},S=(e,t)=>f(e,g(t)),E=(e,t)=>{var n={};for(var r in e)v.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&y)for(var r of y(e))t.indexOf(r)<0&&w.call(e,r)&&(n[r]=e[r]);return n},C=(i={"../../node_modules/.pnpm/prismjs@1.29.0_patch_hash=vrxx3pzkik6jpmgpayxfjunetu/node_modules/prismjs/prism.js"(e,t){var n=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof o?new o(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function e(t,n){var o,a;switch(n=n||{},r.util.type(t)){case"Object":if(a=r.util.objId(t),n[a])return n[a];for(var i in o={},n[a]=o,t)t.hasOwnProperty(i)&&(o[i]=e(t[i],n));return o;case"Array":return a=r.util.objId(t),n[a]?n[a]:(o=[],n[a]=o,t.forEach((function(t,r){o[r]=e(t,n)})),o);default:return t}},getLanguage:function(t){for(;t;){var n=e.exec(t.className);if(n)return n[1].toLowerCase();t=t.parentElement}return"none"},setLanguage:function(t,n){t.className=t.className.replace(RegExp(e,"gi"),""),t.classList.add("language-"+n)},isActive:function(e,t,n){for(var r="no-"+t;e;){var o=e.classList;if(o.contains(t))return!0;if(o.contains(r))return!1;e=e.parentElement}return!!n}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(e,t){var n=r.util.clone(r.languages[e]);for(var o in t)n[o]=t[o];return n},insertBefore:function(e,t,n,o){var a=(o=o||r.languages)[e],i={};for(var s in a)if(a.hasOwnProperty(s)){if(s==t)for(var l in n)n.hasOwnProperty(l)&&(i[l]=n[l]);n.hasOwnProperty(s)||(i[s]=a[s])}var u=o[e];return o[e]=i,r.languages.DFS(r.languages,(function(t,n){n===u&&t!=e&&(this[t]=i)})),i},DFS:function e(t,n,o,a){a=a||{};var i=r.util.objId;for(var s in t)if(t.hasOwnProperty(s)){n.call(t,s,t[s],o||s);var l=t[s],u=r.util.type(l);"Object"!==u||a[i(l)]?"Array"!==u||a[i(l)]||(a[i(l)]=!0,e(l,n,s,a)):(a[i(l)]=!0,e(l,n,null,a))}}},plugins:{},highlight:function(e,t,n){var a={code:e,grammar:t,language:n};if(r.hooks.run("before-tokenize",a),!a.grammar)throw new Error('The language "'+a.language+'" has no grammar.');return a.tokens=r.tokenize(a.code,a.grammar),r.hooks.run("after-tokenize",a),o.stringify(r.util.encode(a.tokens),a.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var o=new s;return l(o,o.head,e),i(e,o,t,o.head,0),function(e){for(var t=[],n=e.head.next;n!==e.tail;)t.push(n.value),n=n.next;return t}(o)},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var o,a=0;o=n[a++];)o(t)}},Token:o};function o(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function a(e,t,n,r){e.lastIndex=t;var o=e.exec(n);if(o&&r&&o[1]){var a=o[1].length;o.index+=a,o[0]=o[0].slice(a)}return o}function i(e,t,n,s,c,d){for(var p in n)if(n.hasOwnProperty(p)&&n[p]){var f=n[p];f=Array.isArray(f)?f:[f];for(var h=0;h<f.length;++h){if(d&&d.cause==p+","+h)return;var g=f[h],m=g.inside,y=!!g.lookbehind,b=!!g.greedy,v=g.alias;if(b&&!g.pattern.global){var w=g.pattern.toString().match(/[imsuy]*$/)[0];g.pattern=RegExp(g.pattern.source,w+"g")}for(var k=g.pattern||g,x=s.next,S=c;x!==t.tail&&!(d&&S>=d.reach);S+=x.value.length,x=x.next){var E=x.value;if(t.length>e.length)return;if(!(E instanceof o)){var C,T=1;if(b){if(!(C=a(k,S,e,y))||C.index>=e.length)break;var _=C.index,L=C.index+C[0].length,R=S;for(R+=x.value.length;_>=R;)R+=(x=x.next).value.length;if(S=R-=x.value.length,x.value instanceof o)continue;for(var j=x;j!==t.tail&&(R<L||"string"==typeof j.value);j=j.next)T++,R+=j.value.length;T--,E=e.slice(S,R),C.index-=S}else if(!(C=a(k,0,E,y)))continue;_=C.index;var N=C[0],A=E.slice(0,_),P=E.slice(_+N.length),O=S+E.length;d&&O>d.reach&&(d.reach=O);var I=x.prev;if(A&&(I=l(t,I,A),S+=A.length),u(t,I,T),x=l(t,I,new o(p,m?r.tokenize(N,m):N,v,N)),P&&l(t,x,P),T>1){var D={cause:p+","+h,reach:O};i(e,t,n,x.prev,S,D),d&&D.reach>d.reach&&(d.reach=D.reach)}}}}}}function s(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function l(e,t,n){var r=t.next,o={value:n,prev:t,next:r};return t.next=o,r.prev=o,e.length++,o}function u(e,t,n){for(var r=t.next,o=0;o<n&&r!==e.tail;o++)r=r.next;t.next=r,r.prev=t,e.length-=o}return o.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var o="";return t.forEach((function(t){o+=e(t,n)})),o}var a={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},i=t.alias;i&&(Array.isArray(i)?Array.prototype.push.apply(a.classes,i):a.classes.push(i)),r.hooks.run("wrap",a);var s="";for(var l in a.attributes)s+=" "+l+'="'+(a.attributes[l]||"").replace(/"/g,""")+'"';return"<"+a.tag+' class="'+a.classes.join(" ")+'"'+s+">"+a.content+"</"+a.tag+">"},r}();t.exports=n,n.default=n}},function(){return s||(0,i[m(i)[0]])((s={exports:{}}).exports,s),s.exports}),T=((e,t,n)=>(n=null!=e?d(b(e)):{},((e,t,n,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let o of m(t))v.call(e,o)||o===n||p(e,o,{get:()=>t[o],enumerable:!(r=h(t,o))||r.enumerable});return e})(!t&&e&&e.__esModule?n:p(n,"default",{value:e,enumerable:!0}),e)))(C());T.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},T.languages.markup.tag.inside["attr-value"].inside.entity=T.languages.markup.entity,T.languages.markup.doctype.inside["internal-subset"].inside=T.languages.markup,T.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(T.languages.markup.tag,"addInlined",{value:function(e,t){var n;(t=((n=((n={})["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:T.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i,{"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}}))["language-"+t]={pattern:/[\s\S]+/,inside:T.languages[t]},{}))[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:n},T.languages.insertBefore("markup","cdata",t)}}),Object.defineProperty(T.languages.markup.tag,"addAttribute",{value:function(e,t){T.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:T.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),T.languages.html=T.languages.markup,T.languages.mathml=T.languages.markup,T.languages.svg=T.languages.markup,T.languages.xml=T.languages.extend("markup",{}),T.languages.ssml=T.languages.xml,T.languages.atom=T.languages.xml,T.languages.rss=T.languages.xml,function(e){var t={pattern:/\\[\\(){}[\]^$+*?|.]/,alias:"escape"},n=/\\(?:x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]+\}|0[0-7]{0,2}|[123][0-7]{2}|c[a-zA-Z]|.)/,r="(?:[^\\\\-]|"+n.source+")",o=(r=RegExp(r+"-"+r),{pattern:/(<|')[^<>']+(?=[>']$)/,lookbehind:!0,alias:"variable"});e.languages.regex={"char-class":{pattern:/((?:^|[^\\])(?:\\\\)*)\[(?:[^\\\]]|\\[\s\S])*\]/,lookbehind:!0,inside:{"char-class-negation":{pattern:/(^\[)\^/,lookbehind:!0,alias:"operator"},"char-class-punctuation":{pattern:/^\[|\]$/,alias:"punctuation"},range:{pattern:r,inside:{escape:n,"range-punctuation":{pattern:/-/,alias:"operator"}}},"special-escape":t,"char-set":{pattern:/\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},escape:n}},"special-escape":t,"char-set":{pattern:/\.|\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},backreference:[{pattern:/\\(?![123][0-7]{2})[1-9]/,alias:"keyword"},{pattern:/\\k<[^<>']+>/,alias:"keyword",inside:{"group-name":o}}],anchor:{pattern:/[$^]|\\[ABbGZz]/,alias:"function"},escape:n,group:[{pattern:/\((?:\?(?:<[^<>']+>|'[^<>']+'|[>:]|<?[=!]|[idmnsuxU]+(?:-[idmnsuxU]+)?:?))?/,alias:"punctuation",inside:{"group-name":o}},{pattern:/\)/,alias:"punctuation"}],quantifier:{pattern:/(?:[+*?]|\{\d+(?:,\d*)?\})[?+]?/,alias:"number"},alternation:{pattern:/\|/,alias:"keyword"}}}(T),T.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},T.languages.javascript=T.languages.extend("clike",{"class-name":[T.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),T.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,T.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:T.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:T.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:T.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:T.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:T.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),T.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:T.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),T.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),T.languages.markup&&(T.languages.markup.tag.addInlined("script","javascript"),T.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),T.languages.js=T.languages.javascript,T.languages.actionscript=T.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|dynamic|each|else|extends|final|finally|for|function|get|if|implements|import|in|include|instanceof|interface|internal|is|namespace|native|new|null|override|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|use|var|void|while|with)\b/,operator:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<<?|>>?>?|[!=]=?)=?|[~?@]/}),T.languages.actionscript["class-name"].alias="function",delete T.languages.actionscript.parameter,delete T.languages.actionscript["literal-property"],T.languages.markup&&T.languages.insertBefore("actionscript","string",{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:T.languages.markup}}),u=/#(?!\{).+/,c={pattern:/#\{[^}]+\}/,alias:"variable"},(l=T).languages.coffeescript=l.languages.extend("javascript",{comment:u,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:c}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),l.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:u,interpolation:c}}}),l.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:l.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:c}}]}),l.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete l.languages.coffeescript["template-string"],l.languages.coffee=l.languages.coffeescript,function(e){var t=e.languages.javadoclike={parameter:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*@(?:arg|arguments|param)\s+)\w+/m,lookbehind:!0},keyword:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m,lookbehind:!0},punctuation:/[{}]/};Object.defineProperty(t,"addSupport",{value:function(t,n){(t="string"==typeof t?[t]:t).forEach((function(t){var r=function(e){e.inside||(e.inside={}),e.inside.rest=n},o="doc-comment";if(a=e.languages[t]){var a,i=a[o];if((i=i||(a=e.languages.insertBefore(t,"comment",{"doc-comment":{pattern:/(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/,lookbehind:!0,alias:"comment"}}))[o])instanceof RegExp&&(i=a[o]={pattern:i}),Array.isArray(i))for(var s=0,l=i.length;s<l;s++)i[s]instanceof RegExp&&(i[s]={pattern:i[s]}),r(i[s]);else r(i)}}))}}),t.addSupport(["java","javascript","php"],t)}(T),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;(t=(e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+t.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css,e.languages.markup))&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(T),function(e){var t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,n=(t=(e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+t.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[t,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}}),{pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0}),{pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0});e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|RebeccaPurple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,number:n})}(T),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",o=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),a=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<value>>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<key>>/g,(function(){return"(?:"+o+"|"+a+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(a),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(T),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(/<inner>/g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,o=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),a=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source,i=(e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+o+a+"(?:"+o+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+o+a+")(?:"+o+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+o+")"+a+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+o+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n<r;n++){var o,a=t[n];"code"!==a.type?e(a.content):(o=a.content[1],a=a.content[3],o&&a&&"code-language"===o.type&&"code-block"===a.type&&"string"==typeof o.content&&(o=o.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),o="language-"+(o=(/[a-z][\w-]*/i.exec(o)||[""])[0].toLowerCase()),a.alias?"string"==typeof a.alias?a.alias=[a.alias,o]:a.alias.push(o):a.alias=[o]))}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",r=0,o=t.classes.length;r<o;r++){var a=t.classes[r];if(a=/language-(.+)/.exec(a)){n=a[1];break}}var u,c=e.languages[n];c?t.content=e.highlight(t.content.replace(i,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,(function(e,t){var n;return"#"===(t=t.toLowerCase())[0]?(n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),l(n)):s[t]||e})),c,n):n&&"none"!==n&&e.plugins.autoloader&&(u="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random()),t.attributes.id=u,e.plugins.autoloader.loadLanguages(n,(function(){var t=document.getElementById(u);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))})))}})),RegExp(e.languages.markup.tag.pattern.source,"gi")),s={amp:"&",lt:"<",gt:">",quot:'"'},l=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(T),T.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:T.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},T.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n<t.length;){var r=t[n++];if("keyword"===r.type&&"mutation"===r.content){var o=[];if(d(["definition-mutation","punctuation"])&&"("===c(1).content){n+=2;var a=p(/^\($/,/^\)$/);if(-1===a)continue;for(;n<a;n++){var i=c(0);"variable"===i.type&&(f(i,"variable-input"),o.push(i.content))}n=a+1}if(d(["punctuation","property-query"])&&"{"===c(0).content&&(n++,f(c(0),"property-mutation"),0<o.length)){var s=p(/^\{$/,/^\}$/);if(-1!==s)for(var l=n;l<s;l++){var u=t[l];"variable"===u.type&&0<=o.indexOf(u.content)&&f(u,"variable-input")}}}}function c(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=c(n+t);if(!r||r.type!==e[n])return}return 1}function p(e,r){for(var o=1,a=n;a<t.length;a++){var i=t[a],s=i.content;if("punctuation"===i.type&&"string"==typeof s)if(e.test(s))o++;else if(r.test(s)&&0==--o)return a}return-1}function f(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}})),T.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,o=r.inside["interpolation-punctuation"],a=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function s(t,n,r){return t={code:t,grammar:n,language:r},e.hooks.run("before-tokenize",t),t.tokens=e.tokenize(t.code,t.grammar),e.hooks.run("after-tokenize",t),t.tokens}function l(t,n,i){var l=e.tokenize(t,{interpolation:{pattern:RegExp(a),lookbehind:!0}}),u=0,c={},d=(l=s(l.map((function(e){if("string"==typeof e)return e;var n,r;for(e=e.content;-1!==t.indexOf((r=u++,n="___"+i.toUpperCase()+"_"+r+"___")););return c[n]=e,n})).join(""),n,i),Object.keys(c));return u=0,function t(n){for(var a=0;a<n.length;a++){if(u>=d.length)return;var i,l,p,f,h,g,m,y=n[a];"string"==typeof y||"string"==typeof y.content?(i=d[u],-1!==(m=(g="string"==typeof y?y:y.content).indexOf(i))&&(++u,l=g.substring(0,m),h=c[i],p=void 0,(f={})["interpolation-punctuation"]=o,3===(f=e.tokenize(h,f)).length&&((p=[1,1]).push.apply(p,s(f[1],e.languages.javascript,"javascript")),f.splice.apply(f,p)),p=new e.Token("interpolation",f,r.alias,h),f=g.substring(m+i.length),h=[],l&&h.push(l),h.push(p),f&&(t(g=[f]),h.push.apply(h,g)),"string"==typeof y?(n.splice.apply(n,[a,1].concat(h)),a+=h.length-1):y.content=h)):(m=y.content,Array.isArray(m)?t(m):t([m]))}}(l),new e.Token(i,l,"language-"+i,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var u={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function c(e){return"string"==typeof e?e:Array.isArray(e)?e.map(c).join(""):c(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in u&&function t(n){for(var r=0,o=n.length;r<o;r++){var a,i,s,u=n[r];"string"!=typeof u&&(a=u.content,Array.isArray(a)?"template-string"===u.type?(u=a[1],3===a.length&&"string"!=typeof u&&"embedded-code"===u.type&&(i=c(u),u=u.alias,u=Array.isArray(u)?u[0]:u,s=e.languages[u])&&(a[1]=l(i,s,u))):t(a):"string"!=typeof a&&t([a]))}}(t.tokens)}))}(T),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(T),function(e){var t=e.languages.javascript,n=/\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/.source,r="(@(?:arg|argument|param|property)\\s+(?:"+n+"\\s+)?)";e.languages.jsdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp(r+/(?:(?!\s)[$\w\xA0-\uFFFF.])+(?=\s|$)/.source),lookbehind:!0,inside:{punctuation:/\./}}}),e.languages.insertBefore("jsdoc","keyword",{"optional-parameter":{pattern:RegExp(r+/\[(?:(?!\s)[$\w\xA0-\uFFFF.])+(?:=[^[\]]+)?\](?=\s|$)/.source),lookbehind:!0,inside:{parameter:{pattern:/(^\[)[$\w\xA0-\uFFFF\.]+/,lookbehind:!0,inside:{punctuation:/\./}},code:{pattern:/(=)[\s\S]*(?=\]$)/,lookbehind:!0,inside:t,alias:"language-javascript"},punctuation:/[=[\]]/}},"class-name":[{pattern:RegExp(/(@(?:augments|class|extends|interface|memberof!?|template|this|typedef)\s+(?:<TYPE>\s+)?)[A-Z]\w*(?:\.[A-Z]\w*)*/.source.replace(/<TYPE>/g,(function(){return n}))),lookbehind:!0,inside:{punctuation:/\./}},{pattern:RegExp("(@[a-z]+\\s+)"+n),lookbehind:!0,inside:{string:t.string,number:t.number,boolean:t.boolean,keyword:e.languages.typescript.keyword,operator:/=>|\.\.\.|[&|?:*]/,punctuation:/[.,;=<>{}()[\]]/}}],example:{pattern:/(@example\s+(?!\s))(?:[^@\s]|\s+(?!\s))+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/,lookbehind:!0,inside:{code:{pattern:/^([\t ]*(?:\*\s*)?)\S.*$/m,lookbehind:!0,inside:t,alias:"language-javascript"}}}}),e.languages.javadoclike.addSupport("javascript",e.languages.jsdoc)}(T),function(e){e.languages.flow=e.languages.extend("javascript",{}),e.languages.insertBefore("flow","keyword",{type:[{pattern:/\b(?:[Bb]oolean|Function|[Nn]umber|[Ss]tring|[Ss]ymbol|any|mixed|null|void)\b/,alias:"class-name"}]}),e.languages.flow["function-variable"].pattern=/(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=\s*(?:function\b|(?:\([^()]*\)(?:\s*:\s*\w+)?|(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/i,delete e.languages.flow.parameter,e.languages.insertBefore("flow","operator",{"flow-punctuation":{pattern:/\{\||\|\}/,alias:"punctuation"}}),Array.isArray(e.languages.flow.keyword)||(e.languages.flow.keyword=[e.languages.flow.keyword]),e.languages.flow.keyword.unshift({pattern:/(^|[^$]\b)(?:Class|declare|opaque|type)\b(?!\$)/,lookbehind:!0},{pattern:/(^|[^$]\B)\$(?:Diff|Enum|Exact|Keys|ObjMap|PropertyType|Record|Shape|Subtype|Supertype|await)\b(?!\$)/,lookbehind:!0})}(T),T.languages.n4js=T.languages.extend("javascript",{keyword:/\b(?:Array|any|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/}),T.languages.insertBefore("n4js","constant",{annotation:{pattern:/@+\w+/,alias:"operator"}}),T.languages.n4jsd=T.languages.n4js,function(e){function t(e,t){return RegExp(e.replace(/<ID>/g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:<ID>(?:\s*,\s*(?:\*\s*as\s+<ID>|\{[^{}]*\}))?|\*\s*as\s+<ID>|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+<ID>)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?<ID>/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r<n.length;r++){var o=n[r],a=e.languages.javascript[o];o=(a="RegExp"===e.util.type(a)?e.languages.javascript[o]={pattern:a}:a).inside||{};(a.inside=o)["maybe-class-name"]=/^[A-Z][\s\S]*/}}(T),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,o=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function a(e,t){return e=e.replace(/<S>/g,(function(){return n})).replace(/<BRACES>/g,(function(){return r})).replace(/<SPREAD>/g,(function(){return o})),RegExp(e,t)}function i(t){for(var n=[],r=0;r<t.length;r++){var o=t[r],a=!1;"string"!=typeof o&&("tag"===o.type&&o.content[0]&&"tag"===o.content[0].type?"</"===o.content[0].content[0].content?0<n.length&&n[n.length-1].tagName===s(o.content[0].content[1])&&n.pop():"/>"!==o.content[o.content.length-1].content&&n.push({tagName:s(o.content[0].content[1]),openedBraces:0}):0<n.length&&"punctuation"===o.type&&"{"===o.content?n[n.length-1].openedBraces++:0<n.length&&0<n[n.length-1].openedBraces&&"punctuation"===o.type&&"}"===o.content?n[n.length-1].openedBraces--:a=!0),(a||"string"==typeof o)&&0<n.length&&0===n[n.length-1].openedBraces&&(a=s(o),r<t.length-1&&("string"==typeof t[r+1]||"plain-text"===t[r+1].type)&&(a+=s(t[r+1]),t.splice(r+1,1)),0<r&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(a=s(t[r-1])+a,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",a,null,a)),o.content&&"string"!=typeof o.content&&i(o.content)}}o=a(o).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=a(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:a(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:a(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var s=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(s).join(""):""};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||i(e.tokens)}))}(T),function(e){var t=e.util.clone(e.languages.typescript);(t=(e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"],e.languages.tsx.tag)).pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+t.pattern.source+")",t.pattern.flags),t.lookbehind=!0}(T),T.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp(/(^|[^"#])/.source+"(?:"+/"(?:\\(?:\((?:[^()]|\([^()]*\))*\)|\r\n|[^(])|[^\\\r\n"])*"/.source+"|"+/"""(?:\\(?:\((?:[^()]|\([^()]*\))*\)|[^(])|[^\\"]|"(?!""))*"""/.source+")"+/(?!["#])/.source),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp(/(^|[^"#])(#+)/.source+"(?:"+/"(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|\r\n|[^#])|[^\\\r\n])*?"/.source+"|"+/"""(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|[^#])|[^\\])*?"""/.source+")\\2"),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp(/#/.source+"(?:"+/(?:elseif|if)\b/.source+"(?:[ \t]*"+/(?:![ \t]*)?(?:\b\w+\b(?:[ \t]*\((?:[^()]|\([^()]*\))*\))?|\((?:[^()]|\([^()]*\))*\))(?:[ \t]*(?:&&|\|\|))?/.source+")+|"+/(?:else|endif)\b/.source+")"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:false|true)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:false|true)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},T.languages.swift["string-literal"].forEach((function(e){e.inside.interpolation.inside=T.languages.swift})),function(e){e.languages.kotlin=e.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete e.languages.kotlin["class-name"];var t={"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:"punctuation"},expression:{pattern:/[\s\S]+/,inside:e.languages.kotlin}};e.languages.insertBefore("kotlin","string",{"string-literal":[{pattern:/"""(?:[^$]|\$(?:(?!\{)|\{[^{}]*\}))*?"""/,alias:"multiline",inside:{interpolation:{pattern:/\$(?:[a-z_]\w*|\{[^{}]*\})/i,inside:t},string:/[\s\S]+/}},{pattern:/"(?:[^"\\\r\n$]|\\.|\$(?:(?!\{)|\{[^{}]*\}))*"/,alias:"singleline",inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:[a-z_]\w*|\{[^{}]*\})/i,lookbehind:!0,inside:t},string:/[\s\S]+/}}],char:{pattern:/'(?:[^'\\\r\n]|\\(?:.|u[a-fA-F0-9]{0,4}))'/,greedy:!0}}),delete e.languages.kotlin.string,e.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),e.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}}),e.languages.kt=e.languages.kotlin,e.languages.kts=e.languages.kotlin}(T),T.languages.c=T.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),T.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),T.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},T.languages.c.string],char:T.languages.c.char,comment:T.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:T.languages.c}}}}),T.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete T.languages.c.boolean,T.languages.objectivec=T.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete T.languages.objectivec["class-name"],T.languages.objc=T.languages.objectivec,T.languages.reason=T.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),T.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete T.languages.reason.function,function(e){for(var t=/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|<self>)*\*\//.source,n=0;n<2;n++)t=t.replace(/<self>/g,(function(){return t}));t=t.replace(/<self>/g,(function(){return/[^\s\S]/.source})),e.languages.rust={comment:[{pattern:RegExp(/(^|[^\\])/.source+t),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|trait|type|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<<?=?|>>?=?|[@?]/},e.languages.rust["closure-params"].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string}(T),T.languages.go=T.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),T.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete T.languages.go["class-name"],function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(T),T.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},T.languages.python["string-interpolation"].inside.interpolation.inside.rest=T.languages.python,T.languages.py=T.languages.python;((e,t)=>{for(var n in t)p(e,n,{get:t[n],enumerable:!0})})({},{dracula:()=>_,duotoneDark:()=>L,duotoneLight:()=>R,github:()=>j,jettwaveDark:()=>q,jettwaveLight:()=>H,nightOwl:()=>N,nightOwlLight:()=>A,oceanicNext:()=>I,okaidia:()=>D,oneDark:()=>Q,oneLight:()=>Z,palenight:()=>F,shadesOfPurple:()=>M,synthwave84:()=>z,ultramin:()=>B,vsDark:()=>$,vsLight:()=>U});var _={plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},L={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]},R={plain:{backgroundColor:"#faf8f5",color:"#728fcb"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#b6ad9a"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#063289"}},{types:["property","function"],style:{color:"#b29762"}},{types:["tag-id","selector","atrule-id"],style:{color:"#2d2006"}},{types:["attr-name"],style:{color:"#896724"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule"],style:{color:"#728fcb"}},{types:["placeholder","variable"],style:{color:"#93abdc"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#896724"}}]},j={plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},N={plain:{color:"#d6deeb",backgroundColor:"#011627"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(99, 119, 119)",fontStyle:"italic"}},{types:["string","url"],style:{color:"rgb(173, 219, 103)"}},{types:["variable"],style:{color:"rgb(214, 222, 235)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation"],style:{color:"rgb(199, 146, 234)"}},{types:["selector","doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(255, 203, 139)"}},{types:["tag","operator","keyword"],style:{color:"rgb(127, 219, 202)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["property"],style:{color:"rgb(128, 203, 196)"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}}]},A={plain:{color:"#403f53",backgroundColor:"#FBFBFB"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(72, 118, 214)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(152, 159, 177)",fontStyle:"italic"}},{types:["string","builtin","char","constant","url"],style:{color:"rgb(72, 118, 214)"}},{types:["variable"],style:{color:"rgb(201, 103, 101)"}},{types:["number"],style:{color:"rgb(170, 9, 130)"}},{types:["punctuation"],style:{color:"rgb(153, 76, 195)"}},{types:["function","selector","doctype"],style:{color:"rgb(153, 76, 195)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(17, 17, 17)"}},{types:["tag"],style:{color:"rgb(153, 76, 195)"}},{types:["operator","property","keyword","namespace"],style:{color:"rgb(12, 150, 155)"}},{types:["boolean"],style:{color:"rgb(188, 84, 84)"}}]},P="#c5a5c5",O="#8dc891",I={plain:{backgroundColor:"#282c34",color:"#ffffff"},styles:[{types:["attr-name"],style:{color:P}},{types:["attr-value"],style:{color:O}},{types:["comment","block-comment","prolog","doctype","cdata","shebang"],style:{color:"#999999"}},{types:["property","number","function-name","constant","symbol","deleted"],style:{color:"#5a9bcf"}},{types:["boolean"],style:{color:"#ff8b50"}},{types:["tag"],style:{color:"#fc929e"}},{types:["string"],style:{color:O}},{types:["punctuation"],style:{color:O}},{types:["selector","char","builtin","inserted"],style:{color:"#D8DEE9"}},{types:["function"],style:{color:"#79b6f2"}},{types:["operator","entity","url","variable"],style:{color:"#d7deea"}},{types:["keyword"],style:{color:P}},{types:["atrule","class-name"],style:{color:"#FAC863"}},{types:["important"],style:{fontWeight:"400"}},{types:["bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}}]},D={plain:{color:"#f8f8f2",backgroundColor:"#272822"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"#f92672",fontStyle:"italic"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"#8292a2",fontStyle:"italic"}},{types:["string","url"],style:{color:"#a6e22e"}},{types:["variable"],style:{color:"#f8f8f2"}},{types:["number"],style:{color:"#ae81ff"}},{types:["builtin","char","constant","function","class-name"],style:{color:"#e6db74"}},{types:["punctuation"],style:{color:"#f8f8f2"}},{types:["selector","doctype"],style:{color:"#a6e22e",fontStyle:"italic"}},{types:["tag","operator","keyword"],style:{color:"#66d9ef"}},{types:["boolean"],style:{color:"#ae81ff"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)",opacity:.7}},{types:["tag","property"],style:{color:"#f92672"}},{types:["attr-name"],style:{color:"#a6e22e !important"}},{types:["doctype"],style:{color:"#8292a2"}},{types:["rule"],style:{color:"#e6db74"}}]},F={plain:{color:"#bfc7d5",backgroundColor:"#292d3e"},styles:[{types:["comment"],style:{color:"rgb(105, 112, 152)",fontStyle:"italic"}},{types:["string","inserted"],style:{color:"rgb(195, 232, 141)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation","selector"],style:{color:"rgb(199, 146, 234)"}},{types:["variable"],style:{color:"rgb(191, 199, 213)"}},{types:["class-name","attr-name"],style:{color:"rgb(255, 203, 107)"}},{types:["tag","deleted"],style:{color:"rgb(255, 85, 114)"}},{types:["operator"],style:{color:"rgb(137, 221, 255)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["keyword"],style:{fontStyle:"italic"}},{types:["doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}},{types:["url"],style:{color:"rgb(221, 221, 221)"}}]},M={plain:{color:"#9EFEFF",backgroundColor:"#2D2A55"},styles:[{types:["changed"],style:{color:"rgb(255, 238, 128)"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)"}},{types:["comment"],style:{color:"rgb(179, 98, 255)",fontStyle:"italic"}},{types:["punctuation"],style:{color:"rgb(255, 255, 255)"}},{types:["constant"],style:{color:"rgb(255, 98, 140)"}},{types:["string","url"],style:{color:"rgb(165, 255, 144)"}},{types:["variable"],style:{color:"rgb(255, 238, 128)"}},{types:["number","boolean"],style:{color:"rgb(255, 98, 140)"}},{types:["attr-name"],style:{color:"rgb(255, 180, 84)"}},{types:["keyword","operator","property","namespace","tag","selector","doctype"],style:{color:"rgb(255, 157, 0)"}},{types:["builtin","char","constant","function","class-name"],style:{color:"rgb(250, 208, 0)"}}]},z={plain:{backgroundColor:"linear-gradient(to bottom, #2a2139 75%, #34294f)",backgroundImage:"#34294f",color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"},styles:[{types:["comment","block-comment","prolog","doctype","cdata"],style:{color:"#495495",fontStyle:"italic"}},{types:["punctuation"],style:{color:"#ccc"}},{types:["tag","attr-name","namespace","number","unit","hexcode","deleted"],style:{color:"#e2777a"}},{types:["property","selector"],style:{color:"#72f1b8",textShadow:"0 0 2px #100c0f, 0 0 10px #257c5575, 0 0 35px #21272475"}},{types:["function-name"],style:{color:"#6196cc"}},{types:["boolean","selector-id","function"],style:{color:"#fdfdfd",textShadow:"0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975"}},{types:["class-name","maybe-class-name","builtin"],style:{color:"#fff5f6",textShadow:"0 0 2px #000, 0 0 10px #fc1f2c75, 0 0 5px #fc1f2c75, 0 0 25px #fc1f2c75"}},{types:["constant","symbol"],style:{color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"}},{types:["important","atrule","keyword","selector-class"],style:{color:"#f4eee4",textShadow:"0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575"}},{types:["string","char","attr-value","regex","variable"],style:{color:"#f87c32"}},{types:["parameter"],style:{fontStyle:"italic"}},{types:["entity","url"],style:{color:"#67cdcc"}},{types:["operator"],style:{color:"ffffffee"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["entity"],style:{cursor:"help"}},{types:["inserted"],style:{color:"green"}}]},B={plain:{color:"#282a2e",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(197, 200, 198)"}},{types:["string","number","builtin","variable"],style:{color:"rgb(150, 152, 150)"}},{types:["class-name","function","tag","attr-name"],style:{color:"rgb(40, 42, 46)"}}]},$={plain:{color:"#9CDCFE",backgroundColor:"#1E1E1E"},styles:[{types:["prolog"],style:{color:"rgb(0, 0, 128)"}},{types:["comment"],style:{color:"rgb(106, 153, 85)"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"rgb(86, 156, 214)"}},{types:["number","inserted"],style:{color:"rgb(181, 206, 168)"}},{types:["constant"],style:{color:"rgb(100, 102, 149)"}},{types:["attr-name","variable"],style:{color:"rgb(156, 220, 254)"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"rgb(206, 145, 120)"}},{types:["selector"],style:{color:"rgb(215, 186, 125)"}},{types:["tag"],style:{color:"rgb(78, 201, 176)"}},{types:["tag"],languages:["markup"],style:{color:"rgb(86, 156, 214)"}},{types:["punctuation","operator"],style:{color:"rgb(212, 212, 212)"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"rgb(220, 220, 170)"}},{types:["class-name"],style:{color:"rgb(78, 201, 176)"}},{types:["char"],style:{color:"rgb(209, 105, 105)"}}]},U={plain:{color:"#000000",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(0, 128, 0)"}},{types:["builtin"],style:{color:"rgb(0, 112, 193)"}},{types:["number","variable","inserted"],style:{color:"rgb(9, 134, 88)"}},{types:["operator"],style:{color:"rgb(0, 0, 0)"}},{types:["constant","char"],style:{color:"rgb(129, 31, 63)"}},{types:["tag"],style:{color:"rgb(128, 0, 0)"}},{types:["attr-name"],style:{color:"rgb(255, 0, 0)"}},{types:["deleted","string"],style:{color:"rgb(163, 21, 21)"}},{types:["changed","punctuation"],style:{color:"rgb(4, 81, 165)"}},{types:["function","keyword"],style:{color:"rgb(0, 0, 255)"}},{types:["class-name"],style:{color:"rgb(38, 127, 153)"}}]},q={plain:{color:"#f8fafc",backgroundColor:"#011627"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#569CD6"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#f8fafc"}},{types:["attr-name","variable"],style:{color:"#9CDCFE"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#cbd5e1"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#D4D4D4"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#7dd3fc"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},H={plain:{color:"#0f172a",backgroundColor:"#f1f5f9"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#0c4a6e"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#0f172a"}},{types:["attr-name","variable"],style:{color:"#0c4a6e"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#64748b"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#475569"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#0e7490"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},Q={plain:{backgroundColor:"hsl(220, 13%, 18%)",color:"hsl(220, 14%, 71%)",textShadow:"0 1px rgba(0, 0, 0, 0.3)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(220, 10%, 40%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(220, 14%, 71%)"}},{types:["attr-name","class-name","maybe-class-name","boolean","constant","number","atrule"],style:{color:"hsl(29, 54%, 61%)"}},{types:["keyword"],style:{color:"hsl(286, 60%, 67%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(355, 65%, 65%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value"],style:{color:"hsl(95, 38%, 62%)"}},{types:["variable","operator","function"],style:{color:"hsl(207, 82%, 66%)"}},{types:["url"],style:{color:"hsl(187, 47%, 55%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(220, 14%, 71%)"}}]},Z={plain:{backgroundColor:"hsl(230, 1%, 98%)",color:"hsl(230, 8%, 24%)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(230, 4%, 64%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(230, 8%, 24%)"}},{types:["attr-name","class-name","boolean","constant","number","atrule"],style:{color:"hsl(35, 99%, 36%)"}},{types:["keyword"],style:{color:"hsl(301, 63%, 40%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(5, 74%, 59%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value","punctuation"],style:{color:"hsl(119, 34%, 47%)"}},{types:["variable","operator","function"],style:{color:"hsl(221, 87%, 60%)"}},{types:["url"],style:{color:"hsl(198, 99%, 37%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(230, 8%, 24%)"}}]},V=(e,t)=>{const{plain:n}=e,r=e.styles.reduce(((e,n)=>{const{languages:r,style:o}=n;return r&&!r.includes(t)||n.types.forEach((t=>{const n=x(x({},e[t]),o);e[t]=n})),e}),{});return r.root=n,r.plain=S(x({},n),{backgroundColor:void 0}),r},W=/\r\n|\r|\n/,G=e=>{0===e.length?e.push({types:["plain"],content:"\n",empty:!0}):1===e.length&&""===e[0].content&&(e[0].content="\n",e[0].empty=!0)},K=(e,t)=>{const n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)},Y=e=>{const t=[[]],n=[e],r=[0],o=[e.length];let a=0,i=0,s=[];const l=[s];for(;i>-1;){for(;(a=r[i]++)<o[i];){let e,u=t[i];const c=n[i][a];if("string"==typeof c?(u=i>0?u:["plain"],e=c):(u=K(u,c.type),c.alias&&(u=K(u,c.alias)),e=c.content),"string"!=typeof e){i++,t.push(u),n.push(e),r.push(0),o.push(e.length);continue}const d=e.split(W),p=d.length;s.push({types:u,content:d[0]});for(let t=1;t<p;t++)G(s),l.push(s=[]),s.push({types:u,content:d[t]})}i--,t.pop(),n.pop(),r.pop(),o.pop()}return G(s),l},X=({children:e,language:t,code:n,theme:o,prism:i})=>{const s=t.toLowerCase(),l=((e,t)=>{const[n,o]=(0,r.useState)(V(t,e)),a=(0,r.useRef)(),i=(0,r.useRef)();return(0,r.useEffect)((()=>{t===a.current&&e===i.current||(a.current=t,i.current=e,o(V(t,e)))}),[e,t]),n})(s,o),u=(e=>(0,r.useCallback)((t=>{var n=t,{className:r,style:o,line:i}=n,s=E(n,["className","style","line"]);const l=S(x({},s),{className:a("token-line",r)});return"object"==typeof e&&"plain"in e&&(l.style=e.plain),"object"==typeof o&&(l.style=x(x({},l.style||{}),o)),l}),[e]))(l),c=(e=>{const t=(0,r.useCallback)((({types:t,empty:n})=>{if(null!=e)return 1===t.length&&"plain"===t[0]?null!=n?{display:"inline-block"}:void 0:1===t.length&&null!=n?e[t[0]]:Object.assign(null!=n?{display:"inline-block"}:{},...t.map((t=>e[t])))}),[e]);return(0,r.useCallback)((e=>{var n=e,{token:r,className:o,style:i}=n,s=E(n,["token","className","style"]);const l=S(x({},s),{className:a("token",...r.types,o),children:r.content,style:t(r)});return null!=i&&(l.style=x(x({},l.style||{}),i)),l}),[t])})(l),d=(({prism:e,code:t,grammar:n,language:o})=>{const a=(0,r.useRef)(e);return(0,r.useMemo)((()=>{if(null==n)return Y([t]);const e={code:t,grammar:n,language:o,tokens:[]};return a.current.hooks.run("before-tokenize",e),e.tokens=a.current.tokenize(t,n),a.current.hooks.run("after-tokenize",e),Y(e.tokens)}),[t,n,o])})({prism:i,language:s,code:n,grammar:i.languages[s]});return e({tokens:d,className:`prism-code language-${s}`,style:null!=l?l.root:{},getLineProps:u,getTokenProps:c})},J=e=>(0,r.createElement)(X,S(x({},e),{prism:e.prism||T,theme:e.theme||$,code:e.code,language:e.language}))},8776:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=!0,o="Invariant failed";function a(e,t){if(!e){if(r)throw new Error(o);var n="function"==typeof t?t():t,a=n?"".concat(o,": ").concat(n):o;throw new Error(a)}}},7529:e=>{"use strict";e.exports={}},6887:e=>{"use strict";e.exports=JSON.parse('{"/python-sdk/markdown-page-6f0":{"__comp":"1f391b9e","__context":{"plugin":"8c4006d9"},"content":"393be207"},"/python-sdk/search-619":{"__comp":"1a4e3797","__context":{"plugin":"6662e7aa"}},"/python-sdk/docs-175":{"__comp":"5e95c892","__context":{"plugin":"4a1ffe74"}},"/python-sdk/docs-679":{"__comp":"a7bd4aaa","version":"935f2afb"},"/python-sdk/docs-cc2":{"__comp":"a94703ab"},"/python-sdk/docs/api-reference-092":{"__comp":"17896441","content":"4178ee1d"},"/python-sdk/docs/building-applications-753":{"__comp":"17896441","content":"530c8fc0"},"/python-sdk/docs/building-applications/async-queries-e2f":{"__comp":"17896441","content":"cb33c72e"},"/python-sdk/docs/building-applications/edge-859":{"__comp":"17896441","content":"8c48aa69"},"/python-sdk/docs/building-applications/grabbing-images-ccc":{"__comp":"17896441","content":"004649c5"},"/python-sdk/docs/building-applications/handling-errors-b6f":{"__comp":"17896441","content":"efd4b15a"},"/python-sdk/docs/building-applications/industrial-39d":{"__comp":"17896441","content":"1b28ffce"},"/python-sdk/docs/building-applications/managing-confidence-c5f":{"__comp":"17896441","content":"5747eae1"},"/python-sdk/docs/building-applications/sample-applications-aef":{"__comp":"17896441","content":"37fce620"},"/python-sdk/docs/building-applications/working-with-detectors-711":{"__comp":"17896441","content":"0fd99c0f"},"/python-sdk/docs/getting-started-23b":{"__comp":"17896441","content":"325ecf53"},"/python-sdk/docs/getting-started/api-tokens-48d":{"__comp":"17896441","content":"c5b38f9e"},"/python-sdk/docs/getting-started/dog-on-couch-7b3":{"__comp":"17896441","content":"ddfecd50"},"/python-sdk/docs/getting-started/retail-analytics-4ae":{"__comp":"17896441","content":"14fdb7e5"},"/python-sdk/docs/getting-started/streaming-23e":{"__comp":"17896441","content":"7aefb68d"},"/python-sdk/docs/getting-started/writing-queries-35e":{"__comp":"17896441","content":"fc921a7a"},"/python-sdk/docs/installation-905":{"__comp":"17896441","content":"1e924268"},"/python-sdk/docs/installation/linux-027":{"__comp":"17896441","content":"86aa3e00"},"/python-sdk/docs/installation/macos-ce1":{"__comp":"17896441","content":"8091dcef"},"/python-sdk/docs/installation/monitoring-notification-server-1fb":{"__comp":"17896441","content":"ad6b0f9d"},"/python-sdk/docs/installation/nvidia-jetson-c38":{"__comp":"17896441","content":"f705f88e"},"/python-sdk/docs/installation/optional-libraries-82b":{"__comp":"17896441","content":"8557125a"},"/python-sdk/docs/installation/raspberry-pi-4e4":{"__comp":"17896441","content":"0b4c8eac"},"/python-sdk/docs/installation/windows-9e5":{"__comp":"17896441","content":"d5ec6805"},"/python-sdk/docs/iot-9e2":{"__comp":"17896441","content":"0cd01ddf"},"/python-sdk/-978":{"__comp":"1df93b7f","__context":{"plugin":"8c4006d9"},"config":"5e9f5e1a"}}')}},e=>{e.O(0,[532],(()=>{return t=2712,e(e.s=t);var t}));e.O()}]); \ No newline at end of file diff --git a/assets/js/main.5bb0703e.js.LICENSE.txt b/assets/js/main.9b28fa51.js.LICENSE.txt similarity index 86% rename from assets/js/main.5bb0703e.js.LICENSE.txt rename to assets/js/main.9b28fa51.js.LICENSE.txt index fbc06351..3a6ccc50 100644 --- a/assets/js/main.5bb0703e.js.LICENSE.txt +++ b/assets/js/main.9b28fa51.js.LICENSE.txt @@ -1,9 +1,3 @@ -/* -object-assign -(c) Sindre Sorhus -@license MIT -*/ - /* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress * @license MIT */ @@ -63,6 +57,19 @@ object-assign * Copyright (C) 2020 Oliver Nightingale */ +/*! Bundled license information: + +prismjs/prism.js: + (** + * Prism: Lightweight, robust, elegant syntax highlighting + * + * @license MIT <https://opensource.org/licenses/MIT> + * @author Lea Verou <https://lea.verou.me> + * @namespace + * @public + *) +*/ + /*!*************************************************** * mark.js v8.11.1 * https://markjs.io/ @@ -72,7 +79,7 @@ object-assign /** * @license React - * use-sync-external-store-shim.production.min.js + * react-dom.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * @@ -81,22 +88,8 @@ object-assign */ /** - * Prism: Lightweight, robust, elegant syntax highlighting - * - * @license MIT <https://opensource.org/licenses/MIT> - * @author Lea Verou <https://lea.verou.me> - * @namespace - * @public - */ - -/** - * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 - * Copyright (C) 2020 Oliver Nightingale - * @license MIT - */ - -/** @license React v0.20.2 - * scheduler.production.min.js + * @license React + * react-jsx-runtime.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * @@ -104,8 +97,9 @@ object-assign * LICENSE file in the root directory of this source tree. */ -/** @license React v16.13.1 - * react-is.production.min.js +/** + * @license React + * react.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * @@ -113,8 +107,9 @@ object-assign * LICENSE file in the root directory of this source tree. */ -/** @license React v17.0.2 - * react-dom.production.min.js +/** + * @license React + * scheduler.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * @@ -122,8 +117,14 @@ object-assign * LICENSE file in the root directory of this source tree. */ -/** @license React v17.0.2 - * react.production.min.js +/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + */ + +/** @license React v16.13.1 + * react-is.production.min.js * * Copyright (c) Facebook, Inc. and its affiliates. * diff --git a/assets/js/runtime~main.540035c8.js b/assets/js/runtime~main.540035c8.js new file mode 100644 index 00000000..b2c2643c --- /dev/null +++ b/assets/js/runtime~main.540035c8.js @@ -0,0 +1 @@ +(()=>{"use strict";var e,a,t,r,f,d={},c={};function o(e){var a=c[e];if(void 0!==a)return a.exports;var t=c[e]={id:e,loaded:!1,exports:{}};return d[e].call(t.exports,t,t.exports,o),t.loaded=!0,t.exports}o.m=d,o.c=c,e=[],o.O=(a,t,r,f)=>{if(!t){var d=1/0;for(i=0;i<e.length;i++){t=e[i][0],r=e[i][1],f=e[i][2];for(var c=!0,n=0;n<t.length;n++)(!1&f||d>=f)&&Object.keys(o.O).every((e=>o.O[e](t[n])))?t.splice(n--,1):(c=!1,f<d&&(d=f));if(c){e.splice(i--,1);var b=r();void 0!==b&&(a=b)}}return a}f=f||0;for(var i=e.length;i>0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[t,r,f]},o.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return o.d(a,{a:a}),a},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var f=Object.create(null);o.r(f);var d={};a=a||[null,t({}),t([]),t(t)];for(var c=2&r&&e;"object"==typeof c&&!~a.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((a=>d[a]=()=>e[a]));return d.default=()=>e,o.d(f,d),f},o.d=(e,a)=>{for(var t in a)o.o(a,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((a,t)=>(o.f[t](e,a),a)),[])),o.u=e=>"assets/js/"+({23:"a7bd4aaa",45:"325ecf53",53:"935f2afb",67:"0b4c8eac",85:"1f391b9e",100:"8091dcef",124:"fc921a7a",136:"0fd99c0f",168:"ad6b0f9d",201:"7aefb68d",237:"1df93b7f",240:"0cd01ddf",342:"004649c5",352:"6662e7aa",355:"14fdb7e5",368:"a94703ab",414:"393be207",502:"8c48aa69",518:"1b28ffce",537:"f705f88e",571:"5747eae1",605:"86aa3e00",609:"ddfecd50",614:"1e924268",642:"530c8fc0",661:"5e95c892",729:"8557125a",855:"cb33c72e",859:"4178ee1d",863:"c5b38f9e",871:"37fce620",891:"efd4b15a",894:"8c4006d9",918:"17896441",920:"1a4e3797",955:"4a1ffe74",986:"d5ec6805"}[e]||e)+"."+{23:"dd95f2fb",45:"9ab02dd2",53:"b0089de4",67:"8fcac91c",85:"e16d9857",100:"0b734536",124:"37e48ff7",136:"123688df",168:"7e5f9452",201:"17804779",237:"475f2fb4",240:"65917e73",284:"999940bb",342:"9aef1b73",352:"95d4896c",355:"320aeedf",368:"bb26b4e6",414:"6cc91a39",443:"01797fc6",502:"3390a80a",518:"b1d4e132",525:"517f3544",537:"7799550b",571:"52da54fc",605:"e5303d3b",609:"88cc0d86",614:"4346dd20",642:"5f0baf5d",661:"c877d3a2",729:"78a37434",855:"cd82f444",859:"012fbe89",863:"c65ff62c",871:"82bfcbec",891:"2d7c06d8",894:"ff975445",918:"0ede9f27",920:"62dd5461",955:"3fb8d429",980:"85f24b27",986:"490085e6"}[e]+".js",o.miniCssF=e=>{},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),r={},f="web:",o.l=(e,a,t,d)=>{if(r[e])r[e].push(a);else{var c,n;if(void 0!==t)for(var b=document.getElementsByTagName("script"),i=0;i<b.length;i++){var u=b[i];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==f+t){c=u;break}}c||(n=!0,(c=document.createElement("script")).charset="utf-8",c.timeout=120,o.nc&&c.setAttribute("nonce",o.nc),c.setAttribute("data-webpack",f+t),c.src=e),r[e]=[a];var l=(a,t)=>{c.onerror=c.onload=null,clearTimeout(s);var f=r[e];if(delete r[e],c.parentNode&&c.parentNode.removeChild(c),f&&f.forEach((e=>e(t))),a)return a(t)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),n&&document.head.appendChild(c)}},o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.p="/python-sdk/",o.gca=function(e){return e={17896441:"918",a7bd4aaa:"23","325ecf53":"45","935f2afb":"53","0b4c8eac":"67","1f391b9e":"85","8091dcef":"100",fc921a7a:"124","0fd99c0f":"136",ad6b0f9d:"168","7aefb68d":"201","1df93b7f":"237","0cd01ddf":"240","004649c5":"342","6662e7aa":"352","14fdb7e5":"355",a94703ab:"368","393be207":"414","8c48aa69":"502","1b28ffce":"518",f705f88e:"537","5747eae1":"571","86aa3e00":"605",ddfecd50:"609","1e924268":"614","530c8fc0":"642","5e95c892":"661","8557125a":"729",cb33c72e:"855","4178ee1d":"859",c5b38f9e:"863","37fce620":"871",efd4b15a:"891","8c4006d9":"894","1a4e3797":"920","4a1ffe74":"955",d5ec6805:"986"}[e]||e,o.p+o.u(e)},(()=>{var e={303:0,532:0};o.f.j=(a,t)=>{var r=o.o(e,a)?e[a]:void 0;if(0!==r)if(r)t.push(r[2]);else if(/^(303|532)$/.test(a))e[a]=0;else{var f=new Promise(((t,f)=>r=e[a]=[t,f]));t.push(r[2]=f);var d=o.p+o.u(a),c=new Error;o.l(d,(t=>{if(o.o(e,a)&&(0!==(r=e[a])&&(e[a]=void 0),r)){var f=t&&("load"===t.type?"missing":t.type),d=t&&t.target&&t.target.src;c.message="Loading chunk "+a+" failed.\n("+f+": "+d+")",c.name="ChunkLoadError",c.type=f,c.request=d,r[1](c)}}),"chunk-"+a,a)}},o.O.j=a=>0===e[a];var a=(a,t)=>{var r,f,d=t[0],c=t[1],n=t[2],b=0;if(d.some((a=>0!==e[a]))){for(r in c)o.o(c,r)&&(o.m[r]=c[r]);if(n)var i=n(o)}for(a&&a(t);b<d.length;b++)f=d[b],o.o(e,f)&&e[f]&&e[f][0](),e[f]=0;return o.O(i)},t=self.webpackChunkweb=self.webpackChunkweb||[];t.forEach(a.bind(null,0)),t.push=a.bind(null,t.push.bind(t))})()})(); \ No newline at end of file diff --git a/assets/js/runtime~main.927e64bc.js b/assets/js/runtime~main.927e64bc.js deleted file mode 100644 index 60c5c2c9..00000000 --- a/assets/js/runtime~main.927e64bc.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var e,t,a,r,f,c={},d={};function o(e){var t=d[e];if(void 0!==t)return t.exports;var a=d[e]={id:e,loaded:!1,exports:{}};return c[e].call(a.exports,a,a.exports,o),a.loaded=!0,a.exports}o.m=c,o.c=d,e=[],o.O=(t,a,r,f)=>{if(!a){var c=1/0;for(i=0;i<e.length;i++){a=e[i][0],r=e[i][1],f=e[i][2];for(var d=!0,n=0;n<a.length;n++)(!1&f||c>=f)&&Object.keys(o.O).every((e=>o.O[e](a[n])))?a.splice(n--,1):(d=!1,f<c&&(c=f));if(d){e.splice(i--,1);var b=r();void 0!==b&&(t=b)}}return t}f=f||0;for(var i=e.length;i>0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[a,r,f]},o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},a=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var f=Object.create(null);o.r(f);var c={};t=t||[null,a({}),a([]),a(a)];for(var d=2&r&&e;"object"==typeof d&&!~t.indexOf(d);d=a(d))Object.getOwnPropertyNames(d).forEach((t=>c[t]=()=>e[t]));return c.default=()=>e,o.d(f,c),f},o.d=(e,t)=>{for(var a in t)o.o(t,a)&&!o.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((t,a)=>(o.f[a](e,t),t)),[])),o.u=e=>"assets/js/"+({45:"325ecf53",53:"935f2afb",67:"0b4c8eac",85:"1f391b9e",100:"8091dcef",124:"fc921a7a",136:"0fd99c0f",168:"ad6b0f9d",201:"7aefb68d",237:"1df93b7f",240:"0cd01ddf",342:"004649c5",352:"6662e7aa",355:"14fdb7e5",414:"393be207",502:"8c48aa69",514:"1be78505",518:"1b28ffce",537:"f705f88e",571:"5747eae1",605:"86aa3e00",609:"ddfecd50",614:"1e924268",642:"530c8fc0",729:"8557125a",855:"cb33c72e",859:"4178ee1d",863:"c5b38f9e",871:"37fce620",891:"efd4b15a",894:"8c4006d9",918:"17896441",920:"1a4e3797",955:"4a1ffe74",986:"d5ec6805"}[e]||e)+"."+{45:"a901f46b",53:"421dec64",67:"4fbaf820",85:"a6e25ab3",100:"27a3f13a",124:"f2b08d78",136:"3b605a77",168:"111346bd",201:"6eb5ec2f",237:"3923a086",240:"271ec697",272:"4a9157ad",342:"46c6f850",352:"95d4896c",355:"4fcd5332",414:"a9b4b4c5",443:"01797fc6",502:"7a2eb4e0",514:"b7ce2bd9",518:"14f50206",525:"517f3544",537:"3d4f3b5d",571:"78b4d94a",605:"3629c340",609:"fa9adc48",614:"dee40c58",642:"aa2ba198",729:"de554df6",855:"9272a0ab",859:"70661d3b",863:"561ea795",871:"13652601",891:"d1dfa5ea",894:"ff975445",918:"ac333cde",920:"9085b72e",955:"3fb8d429",972:"a0881fc8",986:"08208ce0"}[e]+".js",o.miniCssF=e=>{},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r={},f="web:",o.l=(e,t,a,c)=>{if(r[e])r[e].push(t);else{var d,n;if(void 0!==a)for(var b=document.getElementsByTagName("script"),i=0;i<b.length;i++){var u=b[i];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==f+a){d=u;break}}d||(n=!0,(d=document.createElement("script")).charset="utf-8",d.timeout=120,o.nc&&d.setAttribute("nonce",o.nc),d.setAttribute("data-webpack",f+a),d.src=e),r[e]=[t];var l=(t,a)=>{d.onerror=d.onload=null,clearTimeout(s);var f=r[e];if(delete r[e],d.parentNode&&d.parentNode.removeChild(d),f&&f.forEach((e=>e(a))),t)return t(a)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=l.bind(null,d.onerror),d.onload=l.bind(null,d.onload),n&&document.head.appendChild(d)}},o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.p="/python-sdk/",o.gca=function(e){return e={17896441:"918","325ecf53":"45","935f2afb":"53","0b4c8eac":"67","1f391b9e":"85","8091dcef":"100",fc921a7a:"124","0fd99c0f":"136",ad6b0f9d:"168","7aefb68d":"201","1df93b7f":"237","0cd01ddf":"240","004649c5":"342","6662e7aa":"352","14fdb7e5":"355","393be207":"414","8c48aa69":"502","1be78505":"514","1b28ffce":"518",f705f88e:"537","5747eae1":"571","86aa3e00":"605",ddfecd50:"609","1e924268":"614","530c8fc0":"642","8557125a":"729",cb33c72e:"855","4178ee1d":"859",c5b38f9e:"863","37fce620":"871",efd4b15a:"891","8c4006d9":"894","1a4e3797":"920","4a1ffe74":"955",d5ec6805:"986"}[e]||e,o.p+o.u(e)},(()=>{var e={303:0,532:0};o.f.j=(t,a)=>{var r=o.o(e,t)?e[t]:void 0;if(0!==r)if(r)a.push(r[2]);else if(/^(303|532)$/.test(t))e[t]=0;else{var f=new Promise(((a,f)=>r=e[t]=[a,f]));a.push(r[2]=f);var c=o.p+o.u(t),d=new Error;o.l(c,(a=>{if(o.o(e,t)&&(0!==(r=e[t])&&(e[t]=void 0),r)){var f=a&&("load"===a.type?"missing":a.type),c=a&&a.target&&a.target.src;d.message="Loading chunk "+t+" failed.\n("+f+": "+c+")",d.name="ChunkLoadError",d.type=f,d.request=c,r[1](d)}}),"chunk-"+t,t)}},o.O.j=t=>0===e[t];var t=(t,a)=>{var r,f,c=a[0],d=a[1],n=a[2],b=0;if(c.some((t=>0!==e[t]))){for(r in d)o.o(d,r)&&(o.m[r]=d[r]);if(n)var i=n(o)}for(t&&t(a);b<c.length;b++)f=c[b],o.o(e,f)&&e[f]&&e[f][0](),e[f]=0;return o.O(i)},a=self.webpackChunkweb=self.webpackChunkweb||[];a.forEach(t.bind(null,0)),a.push=t.bind(null,a.push.bind(a))})()})(); \ No newline at end of file diff --git a/docs/api-reference.html b/docs/api-reference.html index c8e4e715..007add02 100644 --- a/docs/api-reference.html +++ b/docs/api-reference.html @@ -1,16 +1,13 @@ <!doctype html> -<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-api-reference/redirect"> +<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-api-reference/redirect" data-has-hydrated="false"> <head> <meta charset="UTF-8"> -<meta name="generator" content="Docusaurus v2.4.0"> -<title data-rh="true">API Reference | Groundlight - - + +API Reference | Groundlight + + - - - + \ No newline at end of file diff --git a/docs/building-applications.html b/docs/building-applications.html index 656d0828..a20786af 100644 --- a/docs/building-applications.html +++ b/docs/building-applications.html @@ -1,16 +1,31 @@ - + - -Building Applications | Groundlight - - + +Building Applications | Groundlight + + -
-

Building Applications

Groundlight provides a powerful "computer vision powered by natural language" system that enables you to build visual applications with minimal code. With Groundlight, you can quickly create applications for various use cases, from simple object detection to complex visual analysis.

In this page, we'll introduce you to some sample applications built using Groundlight and provide links to more detailed guides on various topics.

Sample Applications

Further Reading

For more in-depth guides on various aspects of building applications with Groundlight, check out the following pages:

  • Grabbing images: Understand the intricacies of how to submit images from various input sources to Groundlight.
  • Working with detectors: Learn how to create, configure, and use detectors in your Groundlight-powered applications.
  • Confidence levels: Master how to control the trade-off of latency against accuracy by configuring the desired confidence level for your detectors.
  • Handling server errors: Understand how to handle and troubleshoot HTTP errors that may occur while using Groundlight.
  • Asynchronous queries: Groundlight makes it easy to submit asynchronous queries. Learn how to submit queries asynchronously and retrieve the results later.
  • Using Groundlight on the edge: Discover how to deploy Groundlight in edge computing environments for improved performance and reduced latency.
  • Industrial applications: Learn how to apply modern natural-language-based computer vision to your industrial and manufacturing applications.

By exploring these resources and sample applications, you'll be well on your way to building powerful visual applications using Groundlight's computer vision and natural language capabilities.

- - +

Building Applications

+

Groundlight provides a powerful "computer vision powered by natural language" system that enables you to build visual applications with minimal code. With Groundlight, you can quickly create applications for various use cases, from simple object detection to complex visual analysis.

+

In this page, we'll introduce you to some sample applications built using Groundlight and provide links to more detailed guides on various topics.

+

Sample Applications

+
    +
  • Sample Applications: Find repositories with examples of applications built with Groundlight
  • +
+

Further Reading

+

For more in-depth guides on various aspects of building applications with Groundlight, check out the following pages:

+
    +
  • Grabbing images: Understand the intricacies of how to submit images from various input sources to Groundlight.
  • +
  • Working with detectors: Learn how to create, configure, and use detectors in your Groundlight-powered applications.
  • +
  • Confidence levels: Master how to control the trade-off of latency against accuracy by configuring the desired confidence level for your detectors.
  • +
  • Handling server errors: Understand how to handle and troubleshoot HTTP errors that may occur while using Groundlight.
  • +
  • Asynchronous queries: Groundlight makes it easy to submit asynchronous queries. Learn how to submit queries asynchronously and retrieve the results later.
  • +
  • Using Groundlight on the edge: Discover how to deploy Groundlight in edge computing environments for improved performance and reduced latency.
  • +
  • Industrial applications: Learn how to apply modern natural-language-based computer vision to your industrial and manufacturing applications.
  • +
+

By exploring these resources and sample applications, you'll be well on your way to building powerful visual applications using Groundlight's computer vision and natural language capabilities.

\ No newline at end of file diff --git a/docs/building-applications/async-queries.html b/docs/building-applications/async-queries.html index 65a28099..780e7a89 100644 --- a/docs/building-applications/async-queries.html +++ b/docs/building-applications/async-queries.html @@ -1,16 +1,23 @@ - + - -Asynchronous Queries | Groundlight - - + +Asynchronous Queries | Groundlight + + -
-

Asynchronous Queries

Groundlight provides a simple interface for submitting asynchronous queries. This is useful for times in which the thread or process or machine submitting image queries is not the same thread or machine that will be retrieving and using the results. For example, you might have a forward deployed robot or camera that submits image queries to Groundlight, and a separate server that retrieves the results and takes action based on them. We will refer to these two machines as the submitting machine and the retrieving machine.

Setup Submitting Machine

On the submitting machine, you will need to install the Groundlight Python SDK. Then you can submit image queries asynchronously using the ask_async interface (read the full documentation here). ask_async submits your query and returns as soon as the query is submitted. It does not wait for an answer to be available prior to returning to minimize the time your program spends interacting with Groundlight. As a result, the ImageQuery object ask_async returns lacks a result (the result field will be None). This is acceptable for this use case as the submitting machine is not interested in the result. Instead, the submitting machine just needs to communicate the ImageQuery.ids to the retrieving machine - this might be done via a database, a message queue, or some other mechanism. For this example, we assume you are using a database where you save the ImageQuery.id to it via db.save(image_query.id).

from groundlight import Groundlight
import cv2
from time import sleep

detector = gl.get_or_create_detector(name="your_detector_name", query="your_query")

cam = cv2.VideoCapture(0) # Initialize camera (0 is the default index)

while True:
_, image = cam.read() # Capture one frame from the camera
image_query = gl.ask_async(detector=detector, image=image) # Submit the frame to Groundlight
db.save(image_query.id) # Save the image_query.id to a database for the retrieving machine to use
sleep(10) # Sleep for 10 seconds before submitting the next query

cam.release() # Release the camera

Setup Retrieving Machine

On the retrieving machine you will need to install the Groundlight Python SDK. Then you can retrieve the results of the image queries submitted by another machine using get_image_query. The retrieving machine can then use the ImageQuery.result to take action based on the result for whatever application you are building. For this example, we assume your application looks up the next image query to process from a database via db.get_next_image_query_id() and that this function returns None once all ImageQuerys are processed.

from groundlight import Groundlight

detector = gl.get_or_create_detector(name="your_detector_name", query="your_query")

image_query_id = db.get_next_image_query_id()

while image_query_id is not None:
image_query = gl.get_image_query(id=image_query_id) # retrieve the image query from Groundlight
result = image_query.result

# take action based on the result of the image query
if result.label == 'YES':
pass # TODO: do something based on your application
elif result.label == 'NO':
pass # TODO: do something based on your application
elif result.label == 'UNCLEAR':
pass # TODO: do something based on your application

# update image_query_id for next iteration of the loop
image_query_id = db.get_next_image_query_id()

Important Considerations

When you submit an image query asynchronously, ML prediction on your query is not instant. So attempting to retrieve the result immediately after submitting an async query will likely result in an UNCLEAR result as Groundlight is still processing your query. Instead, if your code needs a result synchronously we recommend using one of our methods with a polling mechanism to retrieve the result. You can see all of the interfaces available in the documentation here.

from groundlight import Groundlight
from PIL import Image

detector = gl.get_or_create_detector(name="your_detector_name", query="your_query")
image = Image.open("/path/to/your/image.jpg")
image_query = gl.ask_async(detector=detector, image=image) # Submit async query to Groundlight
result = image_query.result # This will always be 'None' as you asked asynchronously

image_query = gl.get_image_query(id=image_query.id) # Immediately retrieve the image query from Groundlight
result = image_query.result # This will likely be 'UNCLEAR' as Groundlight is still processing your query

image_query = gl.wait_for_confident_result(id=image_query.id) # Poll for a confident result from Groundlight
result = image_query.result
- - +

Asynchronous Queries

+

Groundlight provides a simple interface for submitting asynchronous queries. This is useful for times in which the thread or process or machine submitting image queries is not the same thread or machine that will be retrieving and using the results. For example, you might have a forward deployed robot or camera that submits image queries to Groundlight, and a separate server that retrieves the results and takes action based on them. We will refer to these two machines as the submitting machine and the retrieving machine.

+

Setup Submitting Machine

+

On the submitting machine, you will need to install the Groundlight Python SDK. Then you can submit image queries asynchronously using the ask_async interface (read the full documentation here). ask_async submits your query and returns as soon as the query is submitted. It does not wait for an answer to be available prior to returning to minimize the time your program spends interacting with Groundlight. As a result, the ImageQuery object ask_async returns lacks a result (the result field will be None). This is acceptable for this use case as the submitting machine is not interested in the result. Instead, the submitting machine just needs to communicate the ImageQuery.ids to the retrieving machine - this might be done via a database, a message queue, or some other mechanism. For this example, we assume you are using a database where you save the ImageQuery.id to it via db.save(image_query.id).

+
from groundlight import Groundlight
import cv2
from time import sleep

detector = gl.get_or_create_detector(name="your_detector_name", query="your_query")

cam = cv2.VideoCapture(0) # Initialize camera (0 is the default index)

while True:
_, image = cam.read() # Capture one frame from the camera
image_query = gl.ask_async(detector=detector, image=image) # Submit the frame to Groundlight
db.save(image_query.id) # Save the image_query.id to a database for the retrieving machine to use
sleep(10) # Sleep for 10 seconds before submitting the next query

cam.release() # Release the camera

+

Setup Retrieving Machine

+

On the retrieving machine you will need to install the Groundlight Python SDK. Then you can retrieve the results of the image queries submitted by another machine using get_image_query. The retrieving machine can then use the ImageQuery.result to take action based on the result for whatever application you are building. For this example, we assume your application looks up the next image query to process from a database via db.get_next_image_query_id() and that this function returns None once all ImageQuerys are processed.

+
from groundlight import Groundlight

detector = gl.get_or_create_detector(name="your_detector_name", query="your_query")

image_query_id = db.get_next_image_query_id()

while image_query_id is not None:
image_query = gl.get_image_query(id=image_query_id) # retrieve the image query from Groundlight
result = image_query.result

# take action based on the result of the image query
if result.label == 'YES':
pass # TODO: do something based on your application
elif result.label == 'NO':
pass # TODO: do something based on your application
elif result.label == 'UNCLEAR':
pass # TODO: do something based on your application

# update image_query_id for next iteration of the loop
image_query_id = db.get_next_image_query_id()
+

Important Considerations

+

When you submit an image query asynchronously, ML prediction on your query is not instant. So attempting to retrieve the result immediately after submitting an async query will likely result in an UNCLEAR result as Groundlight is still processing your query. Instead, if your code needs a result synchronously we recommend using one of our methods with a polling mechanism to retrieve the result. You can see all of the interfaces available in the documentation here.

+
from groundlight import Groundlight
from PIL import Image

detector = gl.get_or_create_detector(name="your_detector_name", query="your_query")
image = Image.open("/path/to/your/image.jpg")
image_query = gl.ask_async(detector=detector, image=image) # Submit async query to Groundlight
result = image_query.result # This will always be 'None' as you asked asynchronously

image_query = gl.get_image_query(id=image_query.id) # Immediately retrieve the image query from Groundlight
result = image_query.result # This will likely be 'UNCLEAR' as Groundlight is still processing your query

image_query = gl.wait_for_confident_result(id=image_query.id) # Poll for a confident result from Groundlight
result = image_query.result
\ No newline at end of file diff --git a/docs/building-applications/edge.html b/docs/building-applications/edge.html index 60e519fd..a57fb3f0 100644 --- a/docs/building-applications/edge.html +++ b/docs/building-applications/edge.html @@ -1,21 +1,27 @@ - + - -Using Groundlight on the Edge | Groundlight - - + +Using Groundlight on the Edge | Groundlight + + -
-

Using Groundlight on the Edge

If your account has access to edge models, you can download and install them to your edge devices.
-This allows you to run your model evaluations on the edge, reducing latency, cost, network bandwidth, and energy.

How the Edge Endpoint works

The Edge Endpoint runs as a set of docker containers on an "edge device". This edge device can be an NVIDIA Jetson device, rack-mounted server, or even a Raspberry Pi. The Edge Endpoint is responsible for downloading and running the models, -and for communicating with the Groundlight cloud service.

To use the edge endpoint, simply configure the Groundlight SDK to use the edge endpoint's URL instead of the cloud endpoint. +

Using Groundlight on the Edge

+

If your account has access to edge models, you can download and install them to your edge devices.
+This allows you to run your model evaluations on the edge, reducing latency, cost, network bandwidth, and energy.

+

How the Edge Endpoint works

+

The Edge Endpoint runs as a set of docker containers on an "edge device". This edge device can be an NVIDIA Jetson device, rack-mounted server, or even a Raspberry Pi. The Edge Endpoint is responsible for downloading and running the models, +and for communicating with the Groundlight cloud service.

+

To use the edge endpoint, simply configure the Groundlight SDK to use the edge endpoint's URL instead of the cloud endpoint. All application logic will work seamlessly and unchanged with the Groundlight Edge Endpoint, except some ML answers will return much faster locally. The only visible difference is that image queries answered at the edge endpoint will have the prefix iqe_ instead of iq_ for image queries answered in the cloud. iqe_ stands for "image query edge". Edge-originated -image queries will not appear in the cloud dashboard.

Configuring the Edge Endpoint

To configure the Groundlight SDK to use the edge endpoint, you can either pass the endpoint URL to the Groundlight constructor like:

from groundlight import Groundlight
gl = Groundlight(endpoint="http://localhost:6717")

or by setting the GROUNDLIGHT_ENDPOINT environment variable like:

export GROUNDLIGHT_ENDPOINT=http://localhost:6717
python your_app.py
- - +image queries will not appear in the cloud dashboard.

+

Configuring the Edge Endpoint

+

To configure the Groundlight SDK to use the edge endpoint, you can either pass the endpoint URL to the Groundlight constructor like:

+
from groundlight import Groundlight
gl = Groundlight(endpoint="http://localhost:6717")
+

or by setting the GROUNDLIGHT_ENDPOINT environment variable like:

+
export GROUNDLIGHT_ENDPOINT=http://localhost:6717
python your_app.py
\ No newline at end of file diff --git a/docs/building-applications/grabbing-images.html b/docs/building-applications/grabbing-images.html index e75d4d52..4f155370 100644 --- a/docs/building-applications/grabbing-images.html +++ b/docs/building-applications/grabbing-images.html @@ -1,27 +1,50 @@ - + - -Grabbing Images | Groundlight - - + +Grabbing Images | Groundlight + + -
-

Grabbing Images

Groundlight's SDK accepts images in many popular formats, including PIL, OpenCV, and numpy arrays.

PIL

The Groundlight SDK can accept PIL images directly in submit_image_query. Here's an example:

from groundlight import Groundlight
from PIL import Image

gl = Groundlight()
det = gl.get_or_create_detector(name="path-clear", query="Is the path clear?")
pil_img = Image.open("./docs/static/img/doorway.jpg")
gl.submit_image_query(det, pil_img)

OpenCV

OpenCV is a popular image processing library, with many utilities for working with images. +

Grabbing Images

+

Groundlight's SDK accepts images in many popular formats, including PIL, OpenCV, and numpy arrays.

+

PIL

+

The Groundlight SDK can accept PIL images directly in submit_image_query. Here's an example:

+
from groundlight import Groundlight
from PIL import Image

gl = Groundlight()
det = gl.get_or_create_detector(name="path-clear", query="Is the path clear?")
pil_img = Image.open("./docs/static/img/doorway.jpg")
gl.submit_image_query(det, pil_img)
+

OpenCV

+

OpenCV is a popular image processing library, with many utilities for working with images. OpenCV images are stored as numpy arrays. (Note they are stored in BGR order, not RGB order, but as of Groundlight SDK v0.8 this is the expected order.) -OpenCV's images can be send directly to submit_image_query as follows:

import cv2

cam = cv2.VideoCapture(0) # Initialize camera (0 is the default index)

_, frame = cam.read() # Capture one frame
gl.submit_image_query(detector, frame) # Send the frame to Groundlight
cam.release() # Release the camera

Numpy

The Groundlight SDK can accept images as numpy arrays. They should be in the standard HWN format in BGR color order, matching OpenCV standards. -Pixel values should be from 0-255 (not 0.0-1.0 as floats). So uint8 data type is preferable since it saves memory.

Here's sample code to create an 800x600 random image in numpy:

import numpy as np

np_img = np.random.uniform(low=0, high=255, size=(600, 800, 3)).astype(np.uint8)
# Note: channel order is interpretted as BGR not RGB
gl.submit_image_query(detector, np_img)

Channel order: BGR vs RGB

Groundlight expects images in BGR order, because this is standard for OpenCV, which uses numpy arrays as image storage. +OpenCV's images can be send directly to submit_image_query as follows:

+
import cv2

cam = cv2.VideoCapture(0) # Initialize camera (0 is the default index)

_, frame = cam.read() # Capture one frame
gl.submit_image_query(detector, frame) # Send the frame to Groundlight
cam.release() # Release the camera
+

Numpy

+

The Groundlight SDK can accept images as numpy arrays. They should be in the standard HWN format in BGR color order, matching OpenCV standards. +Pixel values should be from 0-255 (not 0.0-1.0 as floats). So uint8 data type is preferable since it saves memory.

+

Here's sample code to create an 800x600 random image in numpy:

+
import numpy as np

np_img = np.random.uniform(low=0, high=255, size=(600, 800, 3)).astype(np.uint8)
# Note: channel order is interpretted as BGR not RGB
gl.submit_image_query(detector, np_img)
+

Channel order: BGR vs RGB

+

Groundlight expects images in BGR order, because this is standard for OpenCV, which uses numpy arrays as image storage. (OpenCV uses BGR because it was originally developed decades ago for compatibility with the BGR color format used by many cameras and image processing hardware at the time of its creation.) Most other image libraries use RGB order, so if you are using images as numpy arrays which did not originate from OpenCV you likely need to reverse the channel order before sending the images to Groundlight. -Note this change was made in v0.8 of the Groundlight SDK - in previous versions, RGB order was expected.

If you have an RGB array, you must reverse the channel order before sending it to Groundlight, like:

# Convert numpy image in RGB channel order to BGR order
bgr_img = rgb_img[:, :, ::-1]

The difference can be surprisingly subtle when red and blue get swapped. Often images just look a little off, but sometimes they look very wrong.

Here's an example of a natural-scene image where you might think the color balance is just off: -Correct color order -Swapped color channels

In industrial settings, the difference can be almost impossible to detect without prior knowledge of the scene: -Correct color order -Swapped color channels

Framegrab

For a unified interface to many different kinds of image sources, see the framegrab library. -Framegrab is still an early work in progress, but has many useful features for working with cameras and other image sources. Framegrab provides a single interface for many different kinds of image sources, including:

  • USB cameras
  • IP cameras
  • Video files
  • Image files
- - +Note this change was made in v0.8 of the Groundlight SDK - in previous versions, RGB order was expected.

+

If you have an RGB array, you must reverse the channel order before sending it to Groundlight, like:

+
# Convert numpy image in RGB channel order to BGR order
bgr_img = rgb_img[:, :, ::-1]
+

The difference can be surprisingly subtle when red and blue get swapped. Often images just look a little off, but sometimes they look very wrong.

+

Here's an example of a natural-scene image where you might think the color balance is just off: +Correct color order +Swapped color channels

+

In industrial settings, the difference can be almost impossible to detect without prior knowledge of the scene: +Correct color order +Swapped color channels

+

Framegrab

+

For a unified interface to many different kinds of image sources, see the framegrab library. +Framegrab is still an early work in progress, but has many useful features for working with cameras and other image sources. Framegrab provides a single interface for many different kinds of image sources, including:

+
    +
  • USB cameras
  • +
  • IP cameras
  • +
  • Video files
  • +
  • Image files
  • +
\ No newline at end of file diff --git a/docs/building-applications/handling-errors.html b/docs/building-applications/handling-errors.html index 440286d9..b6545ee8 100644 --- a/docs/building-applications/handling-errors.html +++ b/docs/building-applications/handling-errors.html @@ -1,16 +1,32 @@ - + - -Handling Server Errors | Groundlight - - + +Handling Server Errors | Groundlight + + -
-

Handling Server Errors

When building applications with the Groundlight SDK, you may encounter server errors during API calls. This page covers how to handle such errors and build robust code that can gracefully handle exceptions.

Handling ApiException

If there is an HTTP error during an API call, the SDK will raise an ApiException. You can access different metadata from that exception:

import traceback
from groundlight import ApiException, Groundlight

gl = Groundlight()
try:
d = gl.get_or_create_detector(
"Road Checker",
"Is the site access road blocked?")
iq = gl.submit_image_query(d, get_image(), wait=60)
except ApiException as e:
# Print a traceback for debugging
traceback.print_exc()

# e.reason contains a textual description of the error
print(f"Error reason: {e.reason}")

# e.status contains the HTTP status code
print(f"HTTP status code: {e.status}")

# Common HTTP status codes:
# 400 Bad Request: The request was invalid or malformed
# 401 Unauthorized: Your GROUNDLIGHT_API_TOKEN is missing or invalid
# 403 Forbidden: The request is not allowed due to insufficient permissions
# 404 Not Found: The requested resource was not found
# 429 Too Many Requests: The rate limit for the API has been exceeded
# 500 Internal Server Error: An error occurred on the server side

Best Practices for Handling Exceptions

When working with the Groundlight SDK, follow these best practices to handle exceptions and build robust code:

Catch Specific Exceptions

Catch only the specific exceptions that you expect to be raised, such as ApiException. Avoid catching broad exceptions like Exception, as it may make debugging difficult and obscure other unrelated issues.

Use Custom Exception Classes

Consider creating custom exception classes for your application-specific errors. This can help you differentiate between errors originating from the Groundlight SDK and those from your application.

Log Exceptions

Log exceptions with appropriate log levels (e.g., error, warning, etc.) and include relevant context information. This will help you debug issues more effectively and monitor the health of your application.

Implement Retry Logic

When handling exceptions, implement retry logic with exponential backoff for transient errors, such as network issues or rate-limiting. This can help your application recover from temporary issues without manual intervention.

Handle Exceptions Gracefully

In addition to logging exceptions, handle them gracefully to ensure that your application remains functional despite errors. This might include displaying an error message to users or falling back to a default behavior.

Test Your Error Handling

Write tests to ensure that your error handling works as expected. This can help you catch issues early and ensure that your application can handle errors gracefully in production.

By following these best practices, you can create robust and resilient applications that can handle server errors and other exceptions when using the Groundlight SDK.

- - +

Handling Server Errors

+

When building applications with the Groundlight SDK, you may encounter server errors during API calls. This page covers how to handle such errors and build robust code that can gracefully handle exceptions.

+

Handling ApiException

+

If there is an HTTP error during an API call, the SDK will raise an ApiException. You can access different metadata from that exception:

+
import traceback
from groundlight import ApiException, Groundlight

gl = Groundlight()
try:
d = gl.get_or_create_detector(
"Road Checker",
"Is the site access road blocked?")
iq = gl.submit_image_query(d, get_image(), wait=60)
except ApiException as e:
# Print a traceback for debugging
traceback.print_exc()

# e.reason contains a textual description of the error
print(f"Error reason: {e.reason}")

# e.status contains the HTTP status code
print(f"HTTP status code: {e.status}")

# Common HTTP status codes:
# 400 Bad Request: The request was invalid or malformed
# 401 Unauthorized: Your GROUNDLIGHT_API_TOKEN is missing or invalid
# 403 Forbidden: The request is not allowed due to insufficient permissions
# 404 Not Found: The requested resource was not found
# 429 Too Many Requests: The rate limit for the API has been exceeded
# 500 Internal Server Error: An error occurred on the server side
+

Best Practices for Handling Exceptions

+

When working with the Groundlight SDK, follow these best practices to handle exceptions and build robust code:

+

Catch Specific Exceptions

+

Catch only the specific exceptions that you expect to be raised, such as ApiException. Avoid catching broad exceptions like Exception, as it may make debugging difficult and obscure other unrelated issues.

+

Use Custom Exception Classes

+

Consider creating custom exception classes for your application-specific errors. This can help you differentiate between errors originating from the Groundlight SDK and those from your application.

+

Log Exceptions

+

Log exceptions with appropriate log levels (e.g., error, warning, etc.) and include relevant context information. This will help you debug issues more effectively and monitor the health of your application.

+

Implement Retry Logic

+

When handling exceptions, implement retry logic with exponential backoff for transient errors, such as network issues or rate-limiting. This can help your application recover from temporary issues without manual intervention.

+

Handle Exceptions Gracefully

+

In addition to logging exceptions, handle them gracefully to ensure that your application remains functional despite errors. This might include displaying an error message to users or falling back to a default behavior.

+

Test Your Error Handling

+

Write tests to ensure that your error handling works as expected. This can help you catch issues early and ensure that your application can handle errors gracefully in production.

+

By following these best practices, you can create robust and resilient applications that can handle server errors and other exceptions when using the Groundlight SDK.

\ No newline at end of file diff --git a/docs/building-applications/industrial.html b/docs/building-applications/industrial.html index d120e857..9ccf2034 100644 --- a/docs/building-applications/industrial.html +++ b/docs/building-applications/industrial.html @@ -1,16 +1,24 @@ - + - -Industrial and Manufacturing Applications | Groundlight - - + +Industrial and Manufacturing Applications | Groundlight + + -
-

Industrial and Manufacturing Applications

Modern natural language-based computer vision is transforming industrial and manufacturing applications by enabling more intuitive interaction with automation systems. Groundlight offers cutting-edge computer vision technology that can be seamlessly integrated into various industrial processes, enhancing efficiency, productivity, and quality control.

Machine Tending

Groundlight's computer vision technology can assist in automating machine-tending tasks, such as loading and unloading materials in CNC machines, milling centers, or injection molding equipment. By enabling robots to recognize parts and tools using natural language, complex machine-tending tasks become more accessible and efficient.

Process Automation

Integrating Groundlight's computer vision into your process automation systems can help identify bottlenecks, optimize workflows, and reduce manual intervention. Our technology can work hand-in-hand with robotic systems to perform tasks like sorting, assembly, all while interpreting natural language commands to streamline operations.

Quality Control

Groundlight's computer vision technology can play a vital role in ensuring the highest quality standards in your manufacturing processes. By identifying defects or irregularities in products, our computer vision system can help maintain strict quality control, reducing the need for manual inspections and increasing overall product quality.

Integration with Cobots and CNC Machines

Groundlight's computer vision technology can be easily integrated with popular cobot robotic arms, such as Universal Robots, to enhance their capabilities and improve collaboration between humans and robots. Additionally, our technology can be integrated into existing CNC machines or other devices using the Modbus interface, allowing for seamless communication and control within your manufacturing environment.

Contact Sales

To learn more about how Groundlight's natural language computer vision technology can revolutionize your industrial and manufacturing processes, please reach out to us at info@groundlight.ai.

- - +

Industrial and Manufacturing Applications

+

Modern natural language-based computer vision is transforming industrial and manufacturing applications by enabling more intuitive interaction with automation systems. Groundlight offers cutting-edge computer vision technology that can be seamlessly integrated into various industrial processes, enhancing efficiency, productivity, and quality control.

+

Machine Tending

+

Groundlight's computer vision technology can assist in automating machine-tending tasks, such as loading and unloading materials in CNC machines, milling centers, or injection molding equipment. By enabling robots to recognize parts and tools using natural language, complex machine-tending tasks become more accessible and efficient.

+

Process Automation

+

Integrating Groundlight's computer vision into your process automation systems can help identify bottlenecks, optimize workflows, and reduce manual intervention. Our technology can work hand-in-hand with robotic systems to perform tasks like sorting, assembly, all while interpreting natural language commands to streamline operations.

+

Quality Control

+

Groundlight's computer vision technology can play a vital role in ensuring the highest quality standards in your manufacturing processes. By identifying defects or irregularities in products, our computer vision system can help maintain strict quality control, reducing the need for manual inspections and increasing overall product quality.

+

Integration with Cobots and CNC Machines

+

Groundlight's computer vision technology can be easily integrated with popular cobot robotic arms, such as Universal Robots, to enhance their capabilities and improve collaboration between humans and robots. Additionally, our technology can be integrated into existing CNC machines or other devices using the Modbus interface, allowing for seamless communication and control within your manufacturing environment.

+

Contact Sales

+

To learn more about how Groundlight's natural language computer vision technology can revolutionize your industrial and manufacturing processes, please reach out to us at info@groundlight.ai.

\ No newline at end of file diff --git a/docs/building-applications/managing-confidence.html b/docs/building-applications/managing-confidence.html index b1afeee4..f08d57b8 100644 --- a/docs/building-applications/managing-confidence.html +++ b/docs/building-applications/managing-confidence.html @@ -1,18 +1,24 @@ - + - -Confidence Levels | Groundlight - - + +Confidence Levels | Groundlight + + -
-

Confidence Levels

Groundlight gives you a simple way to control the trade-off of latency against accuracy. The longer you can wait for an answer to your image query, the better accuracy you can get. In particular, if the ML models are unsure of the best response, they will escalate the image query to more intensive analysis with more complex models and real-time human monitors as needed. Your code can easily wait for this delayed response. Either way, these new results are automatically trained into your models so your next queries will get better results faster.

The desired confidence level is set as the escalation threshold on your detector. This determines the minimum confidence score for the ML system to provide before the image query is escalated.

For example, say you want to set your desired confidence level to 0.95, but that you're willing to wait up to 60 seconds to get a confident response.

from groundlight import Groundlight
from PIL import Image
import requests

gl = Groundlight()
image_url = "https://www.photos-public-domain.com/wp-content/uploads/2010/11/over_flowing_garbage_can.jpg"
image = Image.open(requests.get(image_url, stream=True).raw)

d = gl.get_or_create_detector(name="trash", query="Is the trash can full?", confidence_threshold=0.95)

# This will wait until either 60 seconds have passed or the confidence reaches 0.95
image_query = gl.submit_image_query(detector=d, image=image, wait=60)

print(f"The answer is {image_query.result}")
tip

Tuning confidence lets you balance accuracy against latency. +

Confidence Levels

+

Groundlight gives you a simple way to control the trade-off of latency against accuracy. The longer you can wait for an answer to your image query, the better accuracy you can get. In particular, if the ML models are unsure of the best response, they will escalate the image query to more intensive analysis with more complex models and real-time human monitors as needed. Your code can easily wait for this delayed response. Either way, these new results are automatically trained into your models so your next queries will get better results faster.

+

The desired confidence level is set as the escalation threshold on your detector. This determines the minimum confidence score for the ML system to provide before the image query is escalated.

+

For example, say you want to set your desired confidence level to 0.95, but that you're willing to wait up to 60 seconds to get a confident response.

+
from groundlight import Groundlight
from PIL import Image
import requests

gl = Groundlight()
image_url = "https://www.photos-public-domain.com/wp-content/uploads/2010/11/over_flowing_garbage_can.jpg"
image = Image.open(requests.get(image_url, stream=True).raw)

d = gl.get_or_create_detector(name="trash", query="Is the trash can full?", confidence_threshold=0.95)

# This will wait until either 60 seconds have passed or the confidence reaches 0.95
image_query = gl.submit_image_query(detector=d, image=image, wait=60)

print(f"The answer is {image_query.result}")
+
tip

Tuning confidence lets you balance accuracy against latency. Higher confidence will get higher accuracy, but will generally require higher latency. -Higher confidence also requires more labels, which increases labor costs.

Or if you want to execute submit_image_query as fast as possible, set wait=0. You will either get the ML results or a placeholder response if the ML model hasn't finished executing. Image queries which are below the desired confidence level will still be escalated for further analysis, and the results are incorporated as training data to improve your ML model, but your code will not wait for that to happen.

image_query = gl.submit_image_query(detector=d, image=image, wait=0)

If the returned result was generated from an ML model, you can see the confidence score returned for the image query:

print(f"The confidence is {image_query.result.confidence}")
- - +Higher confidence also requires more labels, which increases labor costs.

+

Or if you want to execute submit_image_query as fast as possible, set wait=0. You will either get the ML results or a placeholder response if the ML model hasn't finished executing. Image queries which are below the desired confidence level will still be escalated for further analysis, and the results are incorporated as training data to improve your ML model, but your code will not wait for that to happen.

+
image_query = gl.submit_image_query(detector=d, image=image, wait=0)
+

If the returned result was generated from an ML model, you can see the confidence score returned for the image query:

+
print(f"The confidence is {image_query.result.confidence}")
\ No newline at end of file diff --git a/docs/building-applications/sample-applications.html b/docs/building-applications/sample-applications.html index f32f68fe..b7099498 100644 --- a/docs/building-applications/sample-applications.html +++ b/docs/building-applications/sample-applications.html @@ -1,16 +1,26 @@ - + - -Sample Applications | Groundlight - - + +Sample Applications | Groundlight + + -
-

Sample Applications

Explore these GitHub repositories to see examples of Groundlight-powered applications:

Groundlight Stream Processor

Repository: https://github.com/groundlight/stream

The Groundlight Stream Processor is an easy-to-use Docker container for analyzing RTSP streams or common USB-based cameras. You can run it with a single Docker command, such as:

docker run stream:local --help

Arduino ESP32 Camera Sample App

Repository: https://github.com/groundlight/esp32cam

This sample application allows you to build a working AI vision detector using an inexpensive WiFi camera. With a cost of under $10, you can create a powerful and affordable AI vision system.

Raspberry Pi

Repository: https://github.com/groundlight/raspberry-pi-door-lock

This sample application demonstrates how to set up a Raspberry Pi-based door lock system. The application monitors a door and sends a notification if the door is observed to be unlocked during non-standard business hours.

Industrial and Manufacturing Applications

Groundlight can be used to apply modern natural-language-based computer vision to industrial and manufacturing applications.

- - +

Sample Applications

+

Explore these GitHub repositories to see examples of Groundlight-powered applications:

+

Groundlight Stream Processor

+

Repository: https://github.com/groundlight/stream

+

The Groundlight Stream Processor is an easy-to-use Docker container for analyzing RTSP streams or common USB-based cameras. You can run it with a single Docker command, such as:

+
docker run stream:local --help
+

Arduino ESP32 Camera Sample App

+

Repository: https://github.com/groundlight/esp32cam

+

This sample application allows you to build a working AI vision detector using an inexpensive WiFi camera. With a cost of under $10, you can create a powerful and affordable AI vision system.

+

Raspberry Pi

+

Repository: https://github.com/groundlight/raspberry-pi-door-lock

+

This sample application demonstrates how to set up a Raspberry Pi-based door lock system. The application monitors a door and sends a notification if the door is observed to be unlocked during non-standard business hours.

+

Industrial and Manufacturing Applications

+

Groundlight can be used to apply modern natural-language-based computer vision to industrial and manufacturing applications.

\ No newline at end of file diff --git a/docs/building-applications/working-with-detectors.html b/docs/building-applications/working-with-detectors.html index 1d3a3d6a..eef28db4 100644 --- a/docs/building-applications/working-with-detectors.html +++ b/docs/building-applications/working-with-detectors.html @@ -1,16 +1,29 @@ - + - -Working with Detectors | Groundlight - - + +Working with Detectors | Groundlight + + -
-

Working with Detectors

Explicitly create a new detector

Typically you'll use the get_or_create_detector(name: str, query: str) method to find an existing detector you've already created with the same name, or create a new one if it doesn't exists. But if you'd like to force creating a new detector you can also use the create_detector(name: str, query: str) method

from groundlight import Groundlight

gl = Groundlight()
detector = gl.create_detector(name="your_detector_name", query="is this what we want to see?")

Retrieve an existing detector

from groundlight import Groundlight

gl = Groundlight()
detector = gl.get_detector(id="YOUR_DETECTOR_ID")

List your detectors

from groundlight import Groundlight

gl = Groundlight()
# Defaults to 10 results per page
detectors = gl.list_detectors()

# Pagination: 1st page of 5 results per page
detectors = gl.list_detectors(page=1, page_size=5)

Retrieve an image query

In practice, you may want to check for a new result on your query. For example, after a cloud reviewer labels your query. For example, you can use the image_query.id after the above submit_image_query() call.

from groundlight import Groundlight

gl = Groundlight()
image_query = gl.get_image_query(id="iq_YOUR_IMAGE_QUERY_ID")

List your previous image queries

from groundlight import Groundlight

gl = Groundlight()
# Defaults to 10 results per page
image_queries = gl.list_image_queries()

# Pagination: 1st page of 5 results per page
image_queries = gl.list_image_queries(page=1, page_size=5)

Adding labels to existing image queries

Groundlight lets you start using models by making queries against your very first image, but there are a few situations where you might either have an existing dataset, or you'd like to handle the escalation response programatically in your own code but still include the label to get better responses in the future. With your image_query from either submit_image_query() or get_image_query() you can add the label directly. Note that if the query is already in the escalation queue due to low ML confidence or audit thresholds, it may also receive labels from another source.

from groundlight import Groundlight
from PIL import Image
import requests

gl = Groundlight()
d = gl.get_or_create_detector(name="doorway", query="Is the doorway open?")
image_url= "https://images.selfstorage.com/large-compress/2174925f24362c479b2.jpg"
image = Image.open(requests.get(image_url, stream=True).raw)
image_query = gl.submit_image_query(detector=d, image=image)
gl.add_label(image_query, 'YES') # or 'NO'

The only valid labels at this time are 'YES' and 'NO'.

- - +

Working with Detectors

+

Explicitly create a new detector

+

Typically you'll use the get_or_create_detector(name: str, query: str) method to find an existing detector you've already created with the same name, or create a new one if it doesn't exists. But if you'd like to force creating a new detector you can also use the create_detector(name: str, query: str) method

+
from groundlight import Groundlight

gl = Groundlight()
detector = gl.create_detector(name="your_detector_name", query="is this what we want to see?")
+

Retrieve an existing detector

+
from groundlight import Groundlight

gl = Groundlight()
detector = gl.get_detector(id="YOUR_DETECTOR_ID")
+

List your detectors

+
from groundlight import Groundlight

gl = Groundlight()
# Defaults to 10 results per page
detectors = gl.list_detectors()

# Pagination: 1st page of 5 results per page
detectors = gl.list_detectors(page=1, page_size=5)
+

Retrieve an image query

+

In practice, you may want to check for a new result on your query. For example, after a cloud reviewer labels your query. For example, you can use the image_query.id after the above submit_image_query() call.

+
from groundlight import Groundlight

gl = Groundlight()
image_query = gl.get_image_query(id="iq_YOUR_IMAGE_QUERY_ID")
+

List your previous image queries

+
from groundlight import Groundlight

gl = Groundlight()
# Defaults to 10 results per page
image_queries = gl.list_image_queries()

# Pagination: 1st page of 5 results per page
image_queries = gl.list_image_queries(page=1, page_size=5)
+

Adding labels to existing image queries

+

Groundlight lets you start using models by making queries against your very first image, but there are a few situations where you might either have an existing dataset, or you'd like to handle the escalation response programatically in your own code but still include the label to get better responses in the future. With your image_query from either submit_image_query() or get_image_query() you can add the label directly. Note that if the query is already in the escalation queue due to low ML confidence or audit thresholds, it may also receive labels from another source.

+
from groundlight import Groundlight
from PIL import Image
import requests

gl = Groundlight()
d = gl.get_or_create_detector(name="doorway", query="Is the doorway open?")
image_url= "https://images.selfstorage.com/large-compress/2174925f24362c479b2.jpg"
image = Image.open(requests.get(image_url, stream=True).raw)
image_query = gl.submit_image_query(detector=d, image=image)
gl.add_label(image_query, 'YES') # or 'NO'
+

The only valid labels at this time are 'YES' and 'NO'.

\ No newline at end of file diff --git a/docs/getting-started.html b/docs/getting-started.html index 93671159..d653e96c 100644 --- a/docs/getting-started.html +++ b/docs/getting-started.html @@ -1,18 +1,43 @@ - + - -Getting Started | Groundlight - - + +Getting Started | Groundlight + + -
-

Getting Started

Computer Vision powered by Natural Language

Build a working computer vision system in just a few lines of python:

from groundlight import Groundlight

gl = Groundlight()
det = gl.get_or_create_detector(name="doorway", query="Is the doorway open?")
img = "./docs/static/img/doorway.jpg" # Image can be a file or a Python object
image_query = gl.submit_image_query(detector=det, image=img)
print(f"The answer is {image_query.result}")

Note: The SDK is currently in "beta" phase. Interfaces are subject to change in future versions. We will follow semver semantics for breaking changes.

How does it work?

Your images are first analyzed by machine learning (ML) models which are automatically trained on your data. If those models have high enough confidence, that's your answer. But if the models are unsure, then the images are progressively escalated to more resource-intensive analysis methods up to real-time human review. So what you get is a computer vision system that starts working right away without even needing to first gather and label a dataset. At first it will operate with high latency, because people need to review the image queries. But over time, the ML systems will learn and improve so queries come back faster with higher confidence.

Escalation Technology

Groundlight's Escalation Technology combines the power of generative AI using our Visual LLM, along with the speed of edge computing, and the reliability of real-time human oversight.

diagram showing escalation technology

Building a simple visual application

  1. Install the groundlight SDK. Requires python version 3.7 or higher. See prerequisites.

    pip3 install groundlight
  2. Head over to the groundlight web +

    Getting Started

    +

    Computer Vision powered by Natural Language

    +

    Build a working computer vision system in just a few lines of python:

    +
    from groundlight import Groundlight

    gl = Groundlight()
    det = gl.get_or_create_detector(name="doorway", query="Is the doorway open?")
    img = "./docs/static/img/doorway.jpg" # Image can be a file or a Python object
    image_query = gl.submit_image_query(detector=det, image=img)
    print(f"The answer is {image_query.result}")
    +

    Note: The SDK is currently in "beta" phase. Interfaces are subject to change in future versions. We will follow semver semantics for breaking changes.

    +

    How does it work?

    +

    Your images are first analyzed by machine learning (ML) models which are automatically trained on your data. If those models have high enough confidence, that's your answer. But if the models are unsure, then the images are progressively escalated to more resource-intensive analysis methods up to real-time human review. So what you get is a computer vision system that starts working right away without even needing to first gather and label a dataset. At first it will operate with high latency, because people need to review the image queries. But over time, the ML systems will learn and improve so queries come back faster with higher confidence.

    +

    Escalation Technology

    +

    Groundlight's Escalation Technology combines the power of generative AI using our Visual LLM, along with the speed of edge computing, and the reliability of real-time human oversight.

    +

    diagram showing escalation technology

    +

    Building a simple visual application

    +
      +
    1. +

      Install the groundlight SDK. Requires python version 3.7 or higher. See prerequisites.

      +
      pip3 install groundlight
      +
    2. +
    3. +

      Head over to the groundlight web app to create an API token. You will -need to set the GROUNDLIGHT_API_TOKEN environment variable to access the API.

      export GROUNDLIGHT_API_TOKEN=api_2GdXMflhJi6L_example
    4. Create a python script.

      ask.py
      from groundlight import Groundlight

      gl = Groundlight()
      det = gl.get_or_create_detector(name="doorway", query="Is the doorway open?")
      img = "./docs/static/img/doorway.jpg" # Image can be a file or a Python object
      image_query = gl.submit_image_query(detector=det, image=img)
      print(f"The answer is {image_query.result}")
    5. Run it!

      python ask.py
    - - +need to set the GROUNDLIGHT_API_TOKEN environment variable to access the API.

    +
    export GROUNDLIGHT_API_TOKEN=api_2GdXMflhJi6L_example
    +
  3. +
  4. +

    Create a python script.

    +
    ask.py
    from groundlight import Groundlight

    gl = Groundlight()
    det = gl.get_or_create_detector(name="doorway", query="Is the doorway open?")
    img = "./docs/static/img/doorway.jpg" # Image can be a file or a Python object
    image_query = gl.submit_image_query(detector=det, image=img)
    print(f"The answer is {image_query.result}")
    +
  5. +
  6. +

    Run it!

    +
    python ask.py
    +
  7. +
\ No newline at end of file diff --git a/docs/getting-started/api-tokens.html b/docs/getting-started/api-tokens.html index 4b7a3549..39e1c65b 100644 --- a/docs/getting-started/api-tokens.html +++ b/docs/getting-started/api-tokens.html @@ -1,16 +1,59 @@ - + - -API Tokens | Groundlight - - + +API Tokens | Groundlight + + -
-

API Tokens

About API Tokens

To use the Groundlight SDK or API, you need a security token which we call an "API Token." These authenticate you to Groundlight and authorize your code to use services in your account.

API tokens look like api_2GdXMflhJ... and consist of a ksuid (a kind of sortable UUID) followed by a secret string.

Handling API Tokens

You should treat API tokens like passwords. Never check them directly into your code or share them. Please use best security practices with your API tokens, because if anybody gets your API token, they have nearly full control over your Groundlight account.

Here are some best practices for handling API tokens:

  • Store API tokens in a secure location, such as an encrypted vault.
  • Use environment variables to store API tokens, rather than hardcoding them in your application.
  • Limit the number of people who have access to API tokens.
  • Rotate API tokens regularly and revoke old ones when they are no longer needed.

Using API Tokens with the SDK

There are a couple of ways the SDK can find your API token:

  1. Environment variable (recommended): As a best practice, we recommend storing API tokens in the environment variable GROUNDLIGHT_API_TOKEN. This helps avoid accidentally committing the token to your code repository. The SDK will automatically look for the API token there, so you don't have to put it in your code at all.
from groundlight import Groundlight

# looks for API token in environment variable GROUNDLIGHT_API_TOKEN
gl = Groundlight()
  1. Constructor argument: Alternatively, you can pass the API token directly to the Groundlight constructor. However, be cautious not to commit this code to your repository.
from groundlight import Groundlight

token = get_token_from_secure_location()
gl = Groundlight(api_token=token)

Creating and Revoking API Tokens

You can manage your API tokens from the Groundlight website at https://app.groundlight.ai/reef/my-account/api-tokens.

Creating API Tokens

  1. Log in to your Groundlight account and navigate to the API tokens page.
  2. Click the "Create New API Token" button.
  3. Give the new token a descriptive name, so you can easily identify it later.
  4. Click "Create Token."
  5. Copy the generated token and store it securely, as you won't be able to see it again. Groundlight does not store a copy of your API tokens.

Viewing and Revoking API Tokens

On the API tokens page, you can see a list of your current tokens, along with the following information:

  • Token Name: The descriptive name you assigned when creating the token
  • Snippet (prefix): A short, unique identifier for each token
  • Last used: The date and time the token was last used

To revoke an API token

  1. Locate the token you want to revoke in the list.
  2. Click the "Delete" button next to the token.
  3. Confirm that you want to revoke the token.

Note: Revoking an API token will immediately invalidate it and prevent any applications using it from accessing your Groundlight account. Be sure to update your applications with a new token before revoking an old one.

- - +

API Tokens

+

About API Tokens

+

To use the Groundlight SDK or API, you need a security token which we call an "API Token." These authenticate you to Groundlight and authorize your code to use services in your account.

+

API tokens look like api_2GdXMflhJ... and consist of a ksuid (a kind of sortable UUID) followed by a secret string.

+

Handling API Tokens

+

You should treat API tokens like passwords. Never check them directly into your code or share them. Please use best security practices with your API tokens, because if anybody gets your API token, they have nearly full control over your Groundlight account.

+

Here are some best practices for handling API tokens:

+
    +
  • Store API tokens in a secure location, such as an encrypted vault.
  • +
  • Use environment variables to store API tokens, rather than hardcoding them in your application.
  • +
  • Limit the number of people who have access to API tokens.
  • +
  • Rotate API tokens regularly and revoke old ones when they are no longer needed.
  • +
+

Using API Tokens with the SDK

+

There are a couple of ways the SDK can find your API token:

+
    +
  1. Environment variable (recommended): As a best practice, we recommend storing API tokens in the environment variable GROUNDLIGHT_API_TOKEN. This helps avoid accidentally committing the token to your code repository. The SDK will automatically look for the API token there, so you don't have to put it in your code at all.
  2. +
+
from groundlight import Groundlight

# looks for API token in environment variable GROUNDLIGHT_API_TOKEN
gl = Groundlight()
+
    +
  1. Constructor argument: Alternatively, you can pass the API token directly to the Groundlight constructor. However, be cautious not to commit this code to your repository.
  2. +
+
from groundlight import Groundlight

token = get_token_from_secure_location()
gl = Groundlight(api_token=token)
+

Creating and Revoking API Tokens

+

You can manage your API tokens from the Groundlight website at https://app.groundlight.ai/reef/my-account/api-tokens.

+

Creating API Tokens

+
    +
  1. Log in to your Groundlight account and navigate to the API tokens page.
  2. +
  3. Click the "Create New API Token" button.
  4. +
  5. Give the new token a descriptive name, so you can easily identify it later.
  6. +
  7. Click "Create Token."
  8. +
  9. Copy the generated token and store it securely, as you won't be able to see it again. Groundlight does not store a copy of your API tokens.
  10. +
+

Viewing and Revoking API Tokens

+

On the API tokens page, you can see a list of your current tokens, along with the following information:

+
    +
  • Token Name: The descriptive name you assigned when creating the token
  • +
  • Snippet (prefix): A short, unique identifier for each token
  • +
  • Last used: The date and time the token was last used
  • +
+

To revoke an API token

+
    +
  1. Locate the token you want to revoke in the list.
  2. +
  3. Click the "Delete" button next to the token.
  4. +
  5. Confirm that you want to revoke the token.
  6. +
+

Note: Revoking an API token will immediately invalidate it and prevent any applications using it from accessing your Groundlight account. Be sure to update your applications with a new token before revoking an old one.

\ No newline at end of file diff --git a/docs/getting-started/dog-on-couch.html b/docs/getting-started/dog-on-couch.html index d55fef58..8752d638 100644 --- a/docs/getting-started/dog-on-couch.html +++ b/docs/getting-started/dog-on-couch.html @@ -1,16 +1,49 @@ - + - -A Fun Example: Dog-on-Couch Detector | Groundlight - - + +A Fun Example: Dog-on-Couch Detector | Groundlight + + -
-

A Fun Example: Dog-on-Couch Detector

Here is a whimsical example of how you could use Groundlight in your home to keep your dog off the couch. This document will guide you through creating a complete application. If the dog is detected on the couch, the application will play a pre-recorded sound over the computer's speakers, instructing the dog to get off the couch. Be sure to record your own voice so that your dog pays attention to you.

Requirements

  • Groundlight SDK with Python 3.7 or higher
  • A supported USB or network-connected camera
  • A pre-recorded sound file (e.g., get_off_couch.mp3)
  • A couch and a dog are recommended for proper end-to-end testing.

Installation

Ensure you have Python 3.7 or higher installed, and then install the Groundlight SDK and OpenCV library:

pip install groundlight opencv-python pillow pyaudio

Creating the Application

  1. First, log in to the Groundlight application and get an API Token.

  2. Next, we'll write the Python script for the application. Import the required libraries:

import time
import cv2
from groundlight import Groundlight
from PIL import Image
import pyaudio
import wave
  1. Define a function to capture an image from the camera using OpenCV:
def capture_image():
cap = cv2.VideoCapture(0)

ret, frame = cap.read()
cap.release()

if ret:
# Convert to PIL image
return Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
else:
return None
  1. Define a function to play the pre-recorded sound:
def play_sound(file_path):
CHUNK = 1024
wf = wave.open(file_path, 'rb')

p = pyaudio.PyAudio()

stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
channels=wf.getnchannels(),
rate=wf.getframerate(),
output=True)

data = wf.readframes(CHUNK)

while data:
stream.write(data)
data = wf.readframes(CHUNK)

stream.stop_stream()
stream.close()

p.terminate()
  1. Write the main application loop:
gl = Groundlight()

detector = gl.get_detector("Dog on Couch Detector")

while True:
image = capture_image()
if image:
try:
iq = gl.submit_image_query(image=image, detector=detector, wait=60)
answer = iq.result.label
if answer == "YES":
print("Dog detected on the couch!")
play_sound("get_off_couch.mp3")
except Exception as e:
print(f"Error submitting image query: {e}")
else:
print("Failed to capture image")

# Sleep for a minute before checking again
time.sleep(60)

This application captures an image using the capture_image function, then submits it to the Groundlight API for analysis. If the dog is detected on the couch, it plays the pre-recorded sound using the play_sound function.

Save the script as dog_on_couch_detector.py and run it:

python dog_on_couch_detector.py
- - +

A Fun Example: Dog-on-Couch Detector

+

Here is a whimsical example of how you could use Groundlight in your home to keep your dog off the couch. This document will guide you through creating a complete application. If the dog is detected on the couch, the application will play a pre-recorded sound over the computer's speakers, instructing the dog to get off the couch. Be sure to record your own voice so that your dog pays attention to you.

+

Requirements

+
    +
  • Groundlight SDK with Python 3.7 or higher
  • +
  • A supported USB or network-connected camera
  • +
  • A pre-recorded sound file (e.g., get_off_couch.mp3)
  • +
  • A couch and a dog are recommended for proper end-to-end testing.
  • +
+

Installation

+

Ensure you have Python 3.7 or higher installed, and then install the Groundlight SDK and OpenCV library:

+
pip install groundlight opencv-python pillow pyaudio
+

Creating the Application

+
    +
  1. +

    First, log in to the Groundlight application and get an API Token.

    +
  2. +
  3. +

    Next, we'll write the Python script for the application. Import the required libraries:

    +
  4. +
+
import time
import cv2
from groundlight import Groundlight
from PIL import Image
import pyaudio
import wave
+
    +
  1. Define a function to capture an image from the camera using OpenCV:
  2. +
+
def capture_image():
cap = cv2.VideoCapture(0)

ret, frame = cap.read()
cap.release()

if ret:
# Convert to PIL image
return Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
else:
return None
+
    +
  1. Define a function to play the pre-recorded sound:
  2. +
+
def play_sound(file_path):
CHUNK = 1024
wf = wave.open(file_path, 'rb')

p = pyaudio.PyAudio()

stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
channels=wf.getnchannels(),
rate=wf.getframerate(),
output=True)

data = wf.readframes(CHUNK)

while data:
stream.write(data)
data = wf.readframes(CHUNK)

stream.stop_stream()
stream.close()

p.terminate()
+
    +
  1. Write the main application loop:
  2. +
+
gl = Groundlight()

detector = gl.get_detector("Dog on Couch Detector")

while True:
image = capture_image()
if image:
try:
iq = gl.submit_image_query(image=image, detector=detector, wait=60)
answer = iq.result.label
if answer == "YES":
print("Dog detected on the couch!")
play_sound("get_off_couch.mp3")
except Exception as e:
print(f"Error submitting image query: {e}")
else:
print("Failed to capture image")

# Sleep for a minute before checking again
time.sleep(60)
+

This application captures an image using the capture_image function, then submits it to the Groundlight API for analysis. If the dog is detected on the couch, it plays the pre-recorded sound using the play_sound function.

+

Save the script as dog_on_couch_detector.py and run it:

+
python dog_on_couch_detector.py
\ No newline at end of file diff --git a/docs/getting-started/retail-analytics.html b/docs/getting-started/retail-analytics.html index 9d42b2a2..2c1658e0 100644 --- a/docs/getting-started/retail-analytics.html +++ b/docs/getting-started/retail-analytics.html @@ -1,16 +1,69 @@ - + - -A Serious Example: Retail Analytics | Groundlight - - + +A Serious Example: Retail Analytics | Groundlight + + -
-

A Serious Example: Retail Analytics

Tracking utilization of a customer service counter

This example demonstrates the application of Groundlight to a retail analytics solution, which monitors the usage of a service counter by customers throughout the day. The application creates a detector to identify when the service desk is being utilized by a customer. It checks the detector every minute, and once an hour, it prints out a summary of the percentage of time that the service counter is in use. At the end of the day, it emails the daily log.

This retail analytics application can be beneficial in various ways:

  1. Staff allocation and scheduling: By analyzing the usage patterns of the service counter, store managers can optimize staff allocation and scheduling, ensuring that enough employees are available during peak hours and reducing wait times for customers.

  2. Identifying trends: The application can help identify trends in customer behavior, such as busier times of the day or specific days of the week with higher traffic. This information can be used to plan targeted marketing campaigns or promotions to increase sales and customer engagement.

  3. Improving store layout: Understanding when and how often customers use the service counter can provide insights into the effectiveness of the store's layout. Retailers can use this information to make data-driven decisions about rearranging the store layout to encourage customers to visit the service counter or explore other areas of the store.

  4. Customer satisfaction: By monitoring the usage of the service counter and proactively addressing long wait times or crowded areas, retailers can improve customer satisfaction and loyalty. A positive customer experience can lead to increased sales and return visits.

To implement this retail analytics solution, a store would need to install a supported camera near the service counter, ensuring a clear view of the area. The camera would then be connected to a computer running the Groundlight-based application. Store managers would receive hourly summaries of the service counter usage and a daily log via email, enabling them to make informed decisions to improve store operations and customer experience.

Requirements

  • Groundlight SDK with Python 3.7 or higher
  • A supported USB or network-connected camera
  • An email account with SMTP access to send the daily log

Installation

Ensure you have Python 3.7 or higher installed, and then install the Groundlight SDK, OpenCV library, and other required libraries:

pip install groundlight opencv-python pillow

Creating the Application

  1. First, log in to the Groundlight application and get an API Token.

  2. Next, we'll write the Python script for the application. Import the required libraries:

import time
import cv2
import smtplib
from groundlight import Groundlight
from PIL import Image
from datetime import datetime, timedelta
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
  1. Define a function to capture an image from the camera using OpenCV:
def capture_image():
cap = cv2.VideoCapture(0)

ret, frame = cap.read()
cap.release()

if ret:
# Convert to PIL image
return Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
else:
return None
  1. Define a function to send the daily log via email. You will need to customize this for your particular network environment.
def send_email(sender, receiver, subject, body):
msg = MIMEMultipart()
msg['From'] = sender
msg['To'] = receiver
msg['Subject'] = subject
msg.attach(MIMEText(body, 'plain'))

server = smtplib.SMTP('smtp.example.com', 587)
server.starttls()
server.login(sender, "your-password")
text = msg.as_string()
server.sendmail(sender, receiver, text)
server.quit()
  1. Define when your business's operating hours are:
START_OF_BUSINESS = 9  # e.g. 9am
END_OF_BUSINESS = 17 # e.g. 5pm

def is_within_business_hours():
current_hour = datetime.now().hour
return START_OF_BUSINESS <= current_hour < END_OF_BUSINESS

  1. Write the main application loop:
gl = Groundlight()

detector = gl.get_or_create_detector(
name="counter-in-use",
query="Is there a customer at the service counter?",
# We can get away with relatively low confidence since we're aggregating
confidence_threshold=0.8)

DELAY = 60

log = []
daily_log = []
next_hourly_start = datetime.now().replace(minute=0, second=0, microsecond=0) + timedelta(hours=1)

while True:
if not is_within_business_hours():
time.sleep(DELAY)
continue

image = capture_image()
if not image:
print("Failed to capture image")
time.sleep(DELAY)
continue

try:
iq = gl.submit_image_query(image=image, detector=detector, wait=60)
except Exception as e:
print(f"Error submitting image query: {e}")
time.sleep(DELAY)
continue

answer = iq.result.label
log.append(answer)

if datetime.now() >= next_hourly_start:
next_hourly_start += timedelta(hours=1)

percent_in_use = (log.count("YES") / len(log)) * 100
current_time = datetime.now().replace(hour=START_OF_BUSINESS, minute=0, second=0)
formatted_time = current_time.strftime("%I%p") # like 3pm
msg = f"Hourly summary for {formatted_time}: {percent_in_use:.0f}% counter in use"
print(msg)
daily_log.append(msg)
log = []

current_hour = datetime.now().hour
if current_hour == END_OF_BUSINESS and not daily_log == []:
daily_summary = "Daily summary:\n"
for msg in daily_log:
daily_summary += f"{msg}\n"

print(daily_summary)
send_email(sender="counterbot@example.com",
receiver="manager@example.com",
subject="Daily Service Counter Usage Log",
body=daily_summary)
daily_log = []

time.sleep(DELAY)

This application captures an image using the capture_image function, then submits it to the Groundlight API for analysis. If a customer is detected at the counter, it logs the event. Every hour, it prints a summary of the counter's usage percentage, and at the end of the day, it emails the daily log using the send_email function.

Save the script as service_counter_monitor.py and run it:

python service_counter_monitor.py
- - +

A Serious Example: Retail Analytics

+

Tracking utilization of a customer service counter

+

This example demonstrates the application of Groundlight to a retail analytics solution, which monitors the usage of a service counter by customers throughout the day. The application creates a detector to identify when the service desk is being utilized by a customer. It checks the detector every minute, and once an hour, it prints out a summary of the percentage of time that the service counter is in use. At the end of the day, it emails the daily log.

+

This retail analytics application can be beneficial in various ways:

+
    +
  1. +

    Staff allocation and scheduling: By analyzing the usage patterns of the service counter, store managers can optimize staff allocation and scheduling, ensuring that enough employees are available during peak hours and reducing wait times for customers.

    +
  2. +
  3. +

    Identifying trends: The application can help identify trends in customer behavior, such as busier times of the day or specific days of the week with higher traffic. This information can be used to plan targeted marketing campaigns or promotions to increase sales and customer engagement.

    +
  4. +
  5. +

    Improving store layout: Understanding when and how often customers use the service counter can provide insights into the effectiveness of the store's layout. Retailers can use this information to make data-driven decisions about rearranging the store layout to encourage customers to visit the service counter or explore other areas of the store.

    +
  6. +
  7. +

    Customer satisfaction: By monitoring the usage of the service counter and proactively addressing long wait times or crowded areas, retailers can improve customer satisfaction and loyalty. A positive customer experience can lead to increased sales and return visits.

    +
  8. +
+

To implement this retail analytics solution, a store would need to install a supported camera near the service counter, ensuring a clear view of the area. The camera would then be connected to a computer running the Groundlight-based application. Store managers would receive hourly summaries of the service counter usage and a daily log via email, enabling them to make informed decisions to improve store operations and customer experience.

+

Requirements

+
    +
  • Groundlight SDK with Python 3.7 or higher
  • +
  • A supported USB or network-connected camera
  • +
  • An email account with SMTP access to send the daily log
  • +
+

Installation

+

Ensure you have Python 3.7 or higher installed, and then install the Groundlight SDK, OpenCV library, and other required libraries:

+
pip install groundlight opencv-python pillow
+

Creating the Application

+
    +
  1. +

    First, log in to the Groundlight application and get an API Token.

    +
  2. +
  3. +

    Next, we'll write the Python script for the application. Import the required libraries:

    +
  4. +
+
import time
import cv2
import smtplib
from groundlight import Groundlight
from PIL import Image
from datetime import datetime, timedelta
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
+
    +
  1. Define a function to capture an image from the camera using OpenCV:
  2. +
+
def capture_image():
cap = cv2.VideoCapture(0)

ret, frame = cap.read()
cap.release()

if ret:
# Convert to PIL image
return Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
else:
return None
+
    +
  1. Define a function to send the daily log via email. You will need to customize this for your particular network environment.
  2. +
+
def send_email(sender, receiver, subject, body):
msg = MIMEMultipart()
msg['From'] = sender
msg['To'] = receiver
msg['Subject'] = subject
msg.attach(MIMEText(body, 'plain'))

server = smtplib.SMTP('smtp.example.com', 587)
server.starttls()
server.login(sender, "your-password")
text = msg.as_string()
server.sendmail(sender, receiver, text)
server.quit()
+
    +
  1. Define when your business's operating hours are:
  2. +
+
START_OF_BUSINESS = 9  # e.g. 9am
END_OF_BUSINESS = 17 # e.g. 5pm

def is_within_business_hours():
current_hour = datetime.now().hour
return START_OF_BUSINESS <= current_hour < END_OF_BUSINESS

+
    +
  1. Write the main application loop:
  2. +
+
gl = Groundlight()

detector = gl.get_or_create_detector(
name="counter-in-use",
query="Is there a customer at the service counter?",
# We can get away with relatively low confidence since we're aggregating
confidence_threshold=0.8)

DELAY = 60

log = []
daily_log = []
next_hourly_start = datetime.now().replace(minute=0, second=0, microsecond=0) + timedelta(hours=1)

while True:
if not is_within_business_hours():
time.sleep(DELAY)
continue

image = capture_image()
if not image:
print("Failed to capture image")
time.sleep(DELAY)
continue

try:
iq = gl.submit_image_query(image=image, detector=detector, wait=60)
except Exception as e:
print(f"Error submitting image query: {e}")
time.sleep(DELAY)
continue

answer = iq.result.label
log.append(answer)

if datetime.now() >= next_hourly_start:
next_hourly_start += timedelta(hours=1)

percent_in_use = (log.count("YES") / len(log)) * 100
current_time = datetime.now().replace(hour=START_OF_BUSINESS, minute=0, second=0)
formatted_time = current_time.strftime("%I%p") # like 3pm
msg = f"Hourly summary for {formatted_time}: {percent_in_use:.0f}% counter in use"
print(msg)
daily_log.append(msg)
log = []

current_hour = datetime.now().hour
if current_hour == END_OF_BUSINESS and not daily_log == []:
daily_summary = "Daily summary:\n"
for msg in daily_log:
daily_summary += f"{msg}\n"

print(daily_summary)
send_email(sender="counterbot@example.com",
receiver="manager@example.com",
subject="Daily Service Counter Usage Log",
body=daily_summary)
daily_log = []

time.sleep(DELAY)
+

This application captures an image using the capture_image function, then submits it to the Groundlight API for analysis. If a customer is detected at the counter, it logs the event. Every hour, it prints a summary of the counter's usage percentage, and at the end of the day, it emails the daily log using the send_email function.

+

Save the script as service_counter_monitor.py and run it:

+
python service_counter_monitor.py
\ No newline at end of file diff --git a/docs/getting-started/streaming.html b/docs/getting-started/streaming.html index 91bb660f..83cf7b94 100644 --- a/docs/getting-started/streaming.html +++ b/docs/getting-started/streaming.html @@ -1,16 +1,41 @@ - + - -A Quick Example: Live Stream Alert | Groundlight - - + +A Quick Example: Live Stream Alert | Groundlight + + -
-

A Quick Example: Live Stream Alert

A quick example to get used to setting up detectors and asking good questions: set up a monitor on a live stream.

Requirements

  • Groundlight SDK with Python 3.7 or higher
  • The video ID of a YouTube live stream you'd like to monitor

Installation

Ensure you have Python 3.7 or higher installed, and then install the Groundlight SDK and OpenCV library:

pip install groundlight pillow ffmpeg yt-dlp typer

Creating the Application

  1. Save this command as a shell script get_latest_frame.sh:
#!/bin/bash

ffmpeg -i "$(yt-dlp -g $1 | head -n 1)" -vframes 1 last.jpg -y

This will download the most recent frame from a YouTube live stream and save it to a local file last.jpg.

  1. Log in to the Groundlight application and get an API Token.

  2. Next, we'll write the Python script for the application.

import os
import subprocess
import typer
from groundlight import Groundlight
from PIL import Image


def main(*, video_id: str = None, detector_name: str = None, query: str = None, confidence: float = 0.75, wait: int = 60):
"""
Run the script to get the stream's last frame as a subprocess, and submit result as an image query to a Groundlight detector
:param video_id: Video ID of the YouTube live stream (the URLs have the form https://www.youtube.com/watch?v=<VIDEO_ID>)
:param detector_name: Name for your Groundlight detector
:param query: Question you want to ask of the stream (we will alert on the answer of NO)
"""
gl = Groundlight()
detector = gl.create_detector(name=detector_name, query=query, confidence_threshold=confidence)

while True:
p = subprocess.run(["./get_latest_frame.sh", video_id])
if p.returncode != 0:
raise RuntimeError(f"Could not get image from video ID: {video_id}. Process exited with return code {p.returncode}.")

image = Image.open("last.jpg").convert("RGB")
response = gl.submit_image_query(detector=detector, image=image, wait=wait)

if response.result.label == "NO":
os.system("say 'Alert!'") # this may not work on all operating systems


if __name__ == "__main__":
typer.run(main)

  1. Save the script as streaming_alert.py in the same directory as get_latest_frame.sh above and run it:
python streaming_alert.py <VIDEO_ID> --detector_name <DETECTOR_NAME> --query <QUERY IN QUOTATION MARKS>
- - +

A Quick Example: Live Stream Alert

+

A quick example to get used to setting up detectors and asking good questions: set up a monitor on a live stream.

+

Requirements

+
    +
  • Groundlight SDK with Python 3.7 or higher
  • +
  • The video ID of a YouTube live stream you'd like to monitor
  • +
+

Installation

+

Ensure you have Python 3.7 or higher installed, and then install the Groundlight SDK and OpenCV library:

+
pip install groundlight pillow ffmpeg yt-dlp typer
+

Creating the Application

+
    +
  1. Save this command as a shell script get_latest_frame.sh:
  2. +
+
#!/bin/bash

ffmpeg -i "$(yt-dlp -g $1 | head -n 1)" -vframes 1 last.jpg -y
+

This will download the most recent frame from a YouTube live stream and save it to a local file last.jpg.

+
    +
  1. +

    Log in to the Groundlight application and get an API Token.

    +
  2. +
  3. +

    Next, we'll write the Python script for the application.

    +
  4. +
+
import os
import subprocess
import typer
from groundlight import Groundlight
from PIL import Image


def main(*, video_id: str = None, detector_name: str = None, query: str = None, confidence: float = 0.75, wait: int = 60):
"""
Run the script to get the stream's last frame as a subprocess, and submit result as an image query to a Groundlight detector
:param video_id: Video ID of the YouTube live stream (the URLs have the form https://www.youtube.com/watch?v=<VIDEO_ID>)
:param detector_name: Name for your Groundlight detector
:param query: Question you want to ask of the stream (we will alert on the answer of NO)
"""
gl = Groundlight()
detector = gl.create_detector(name=detector_name, query=query, confidence_threshold=confidence)

while True:
p = subprocess.run(["./get_latest_frame.sh", video_id])
if p.returncode != 0:
raise RuntimeError(f"Could not get image from video ID: {video_id}. Process exited with return code {p.returncode}.")

image = Image.open("last.jpg").convert("RGB")
response = gl.submit_image_query(detector=detector, image=image, wait=wait)

if response.result.label == "NO":
os.system("say 'Alert!'") # this may not work on all operating systems


if __name__ == "__main__":
typer.run(main)

+
    +
  1. Save the script as streaming_alert.py in the same directory as get_latest_frame.sh above and run it:
  2. +
+
python streaming_alert.py <VIDEO_ID> --detector_name <DETECTOR_NAME> --query <QUERY IN QUOTATION MARKS>
\ No newline at end of file diff --git a/docs/getting-started/writing-queries.html b/docs/getting-started/writing-queries.html index a2b26047..624a1140 100644 --- a/docs/getting-started/writing-queries.html +++ b/docs/getting-started/writing-queries.html @@ -1,26 +1,41 @@ - + - -Writing Queries | Groundlight - - + +Writing Queries | Groundlight + + -
-

Writing Queries

Introduction

With Groundlight's detectors, you can ask binary questions about images i.e., the answer +

Writing Queries

+

Introduction

+

With Groundlight's detectors, you can ask binary questions about images — i.e., the answer should be unambiguously "YES" or "NO". If you ask an ambiguous question, you may receive an "UNSURE" -response.

detector = gl.get_or_create_detector(
name="Conveyor belt boxes",
query="Are there any cardboard boxes on the conveyor belt?"
)
image_query = gl.submit_image_query(detector=detector, image=some_image)

# The SDK can return "YES" or "NO" (or "UNSURE")
print(f"The answer is {image_query.result.label}")

So, what makes a good question? Let's look at a few good ✅, moderate 🟡, and bad ❌ examples!

Examples

✅ Are there any cardboard boxes on the conveyor belt?

This question is binary and can be answered unambiguously with a simple "YES" or "NO" based on the -image content.

🟡 Is the trash can full?

This question is okay, but it could be rephrased to be more specific. For example, "Is the black -trash can more than 80% full?"

tip

With Groundlight, your questions may be routed to a machine learning model or a human reviewer. One +response.

+
detector = gl.get_or_create_detector(
name="Conveyor belt boxes",
query="Are there any cardboard boxes on the conveyor belt?"
)
image_query = gl.submit_image_query(detector=detector, image=some_image)

# The SDK can return "YES" or "NO" (or "UNSURE")
print(f"The answer is {image_query.result.label}")
+

So, what makes a good question? Let's look at a few good ✅, moderate 🟡, and bad ❌ examples!

+

Examples

+

✅ Are there any cardboard boxes on the conveyor belt?

+

This question is binary and can be answered unambiguously with a simple "YES" or "NO" based on the +image content.

+

🟡 Is the trash can full?

+

This question is okay, but it could be rephrased to be more specific. For example, "Is the black +trash can more than 80% full?"

+
tip

With Groundlight, your questions may be routed to a machine learning model or a human reviewer. One way to improve your questions is to think, "If I saw this question for the first time, would I know -precisely what the person was trying to convey?"

✅ Is the garage door completely closed?

The query is very specific about what "YES" means. According to this query, any slight / partial -opening would be considered "NO".

🟡 Is the weather nice out?

This question is somewhat ambiguous. Different people may have different opinions on what -is nice weather. Instead, you might ask "Can you see any clouds in the sky?"

❌ Where is the thing?

This is not a binary question "YES" and "NO" don't make sense in this context. Also, it's -not clear what the "thing" refers to.

🟡 Is the factory floor clean and organized?

While this question is binary, "cleanliness" can be somewhat subjective. An improved version could -be: "Are there any visible spills or clutter on the factory floor?"

- - +precisely what the person was trying to convey?"

+

✅ Is the garage door completely closed?

+

The query is very specific about what "YES" means. According to this query, any slight / partial +opening would be considered "NO".

+

🟡 Is the weather nice out?

+

This question is somewhat ambiguous. Different people may have different opinions on what +is nice weather. Instead, you might ask "Can you see any clouds in the sky?"

+

❌ Where is the thing?

+

This is not a binary question — "YES" and "NO" don't make sense in this context. Also, it's +not clear what the "thing" refers to.

+

🟡 Is the factory floor clean and organized?

+

While this question is binary, "cleanliness" can be somewhat subjective. An improved version could +be: "Are there any visible spills or clutter on the factory floor?"

\ No newline at end of file diff --git a/docs/installation.html b/docs/installation.html index 4acd5ff6..bb4a4666 100644 --- a/docs/installation.html +++ b/docs/installation.html @@ -1,16 +1,26 @@ - + - -Installation | Groundlight - - + +Installation | Groundlight + + -
-

Installation

Welcome to the Groundlight SDK installation guide. In this guide, you'll find step-by-step instructions on how to install and set up the Groundlight SDK on various platforms.

Platform-specific Installation Guides

Choose your platform from the list below and follow the instructions in the corresponding guide:

After completing the installation process for your platform, you'll be ready to start building visual applications using the Groundlight SDK.

- - +

Installation

+

Welcome to the Groundlight SDK installation guide. In this guide, you'll find step-by-step instructions on how to install and set up the Groundlight SDK on various platforms.

+

Platform-specific Installation Guides

+

Choose your platform from the list below and follow the instructions in the corresponding guide:

+ +

After completing the installation process for your platform, you'll be ready to start building visual applications using the Groundlight SDK.

\ No newline at end of file diff --git a/docs/installation/linux.html b/docs/installation/linux.html index 41e799a6..bf8a86d6 100644 --- a/docs/installation/linux.html +++ b/docs/installation/linux.html @@ -1,16 +1,64 @@ - + - -Installing on Linux | Groundlight - - + +Installing on Linux | Groundlight + + -
-

Installing on Linux

This guide will help you install the Groundlight SDK on Linux. The Groundlight SDK requires Python 3.7 or higher.

Prerequisites

Ensure that you have the following installed on your system:

  • Python 3.7 or higher
  • pip (Python package installer)

Basic Installation

Assuming you have Python 3.7 or higher installed on your system, you can proceed with the following steps to install or upgrade the Groundlight SDK:

Installing Groundlight SDK

To install the Groundlight SDK using pip, run the following command in your terminal:

pip install groundlight

If you're also using python2 on your system, you might need to use pip3 instead:

pip3 install groundlight

The Groundlight SDK is now installed and ready for use.

Checking Groundlight SDK Version

To check if the Groundlight SDK is installed and to display its version, you can use the following Python one-liner:

python -c "import groundlight; print(groundlight.__version__)"

Upgrading Groundlight SDK

If you need to upgrade the Groundlight SDK to the latest version, use the following pip command:

pip install --upgrade groundlight

Or, if you're using pip3:

pip3 install --upgrade groundlight

After upgrading, you can use the Python one-liner mentioned in the "Checking Groundlight SDK Version" section to verify that the latest version is now installed.

Getting the right Python Version

To check your installed Python version, open a terminal and run:

python --version

If you see a version number starting with "3.7" or higher (e.g., "3.7.5" or "3.9.0"), you're good to go. If not, you might need to upgrade Python on your system.

Upgrading Python on Linux

Use your distribution's package manager to install the latest Python version:

  • For Ubuntu or Debian-based systems:

    sudo apt update
    sudo apt install python3

    (For Ubuntu 18.04 see note below.)

  • For Fedora-based systems:

    sudo dnf install python3
  • For Arch Linux:

    sudo pacman -S python

After upgrading, verify the Python version by running python --version or python3 --version, as described earlier.

Special note about Ubuntu 18.04

Ubuntu 18.04 still uses python 3.6 by default, which is end-of-life. We generally recommend using python 3.10. If you know how to install py3.10, please go ahead. But the easiest version of python 3 to use with Ubuntu 18.04 is python 3.8, which can be installed as follows without adding any extra repositories:

# Prepare Ubuntu to install things
sudo apt-get update
# Install the basics
sudo apt-get install -y python3.8 python3.8-distutils curl
# Configure `python3` to run python3.8 by default
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 10
# Download and install pip3.8
curl https://bootstrap.pypa.io/get-pip.py > /tmp/get-pip.py
sudo python3.8 /tmp/get-pip.py
# Configure `pip3` to run pip3.8
sudo update-alternatives --install /usr/bin/pip3 pip3 $(which pip3.8) 10
# Now we can install Groundlight!
pip3 install groundlight

Ready to go!

You're now ready to start using the Groundlight SDK in your projects. For more information on using the SDK, refer to the API Tokens and Building Applications documentation pages.

- - +

Installing on Linux

+

This guide will help you install the Groundlight SDK on Linux. The Groundlight SDK requires Python 3.7 or higher.

+

Prerequisites

+

Ensure that you have the following installed on your system:

+
    +
  • Python 3.7 or higher
  • +
  • pip (Python package installer)
  • +
+

Basic Installation

+

Assuming you have Python 3.7 or higher installed on your system, you can proceed with the following steps to install or upgrade the Groundlight SDK:

+

Installing Groundlight SDK

+

To install the Groundlight SDK using pip, run the following command in your terminal:

+
pip install groundlight
+

If you're also using python2 on your system, you might need to use pip3 instead:

+
pip3 install groundlight
+

The Groundlight SDK is now installed and ready for use.

+

Checking Groundlight SDK Version

+

To check if the Groundlight SDK is installed and to display its version, you can use the following Python one-liner:

+
python -c "import groundlight; print(groundlight.__version__)"
+

Upgrading Groundlight SDK

+

If you need to upgrade the Groundlight SDK to the latest version, use the following pip command:

+
pip install --upgrade groundlight
+

Or, if you're using pip3:

+
pip3 install --upgrade groundlight
+

After upgrading, you can use the Python one-liner mentioned in the "Checking Groundlight SDK Version" section to verify that the latest version is now installed.

+

Getting the right Python Version

+

To check your installed Python version, open a terminal and run:

+
python --version
+

If you see a version number starting with "3.7" or higher (e.g., "3.7.5" or "3.9.0"), you're good to go. If not, you might need to upgrade Python on your system.

+

Upgrading Python on Linux

+

Use your distribution's package manager to install the latest Python version:

+
    +
  • +

    For Ubuntu or Debian-based systems:

    +
    sudo apt update
    sudo apt install python3
    +

    (For Ubuntu 18.04 see note below.)

    +
  • +
  • +

    For Fedora-based systems:

    +
    sudo dnf install python3
    +
  • +
  • +

    For Arch Linux:

    +
    sudo pacman -S python
    +
  • +
+

After upgrading, verify the Python version by running python --version or python3 --version, as described earlier.

+

Special note about Ubuntu 18.04

+

Ubuntu 18.04 still uses python 3.6 by default, which is end-of-life. We generally recommend using python 3.10. If you know how to install py3.10, please go ahead. But the easiest version of python 3 to use with Ubuntu 18.04 is python 3.8, which can be installed as follows without adding any extra repositories:

+
# Prepare Ubuntu to install things
sudo apt-get update
# Install the basics
sudo apt-get install -y python3.8 python3.8-distutils curl
# Configure `python3` to run python3.8 by default
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 10
# Download and install pip3.8
curl https://bootstrap.pypa.io/get-pip.py > /tmp/get-pip.py
sudo python3.8 /tmp/get-pip.py
# Configure `pip3` to run pip3.8
sudo update-alternatives --install /usr/bin/pip3 pip3 $(which pip3.8) 10
# Now we can install Groundlight!
pip3 install groundlight
+

Ready to go!

+

You're now ready to start using the Groundlight SDK in your projects. For more information on using the SDK, refer to the API Tokens and Building Applications documentation pages.

\ No newline at end of file diff --git a/docs/installation/macos.html b/docs/installation/macos.html index f0f6165c..3c5150d8 100644 --- a/docs/installation/macos.html +++ b/docs/installation/macos.html @@ -1,16 +1,47 @@ - + - -Installing on macOS | Groundlight - - + +Installing on macOS | Groundlight + + -
-

Installing on macOS

This guide will help you install the Groundlight SDK on macOS. The Groundlight SDK requires Python 3.7 or higher.

Prerequisites

Ensure that you have the following installed on your system:

  • Python 3.7 or higher
  • pip (Python package installer)

Basic Installation

Assuming you have Python 3.7 or higher installed on your system, you can proceed with the following steps to install or upgrade the Groundlight SDK:

Installing Groundlight SDK

To install the Groundlight SDK using pip, run the following command in your terminal:

pip install groundlight

If you're also using python2 on your system, you might need to use pip3 instead:

pip3 install groundlight

The Groundlight SDK is now installed and ready for use.

Checking Groundlight SDK Version

To check if the Groundlight SDK is installed and to display its version, you can use the following Python one-liner:

python -c "import groundlight; print(groundlight.__version__)"

Upgrading Groundlight SDK

If you need to upgrade the Groundlight SDK to the latest version, use the following pip command:

pip install --upgrade groundlight

Or, if you're using pip3:

pip3 install --upgrade groundlight

After upgrading, you can use the Python one-liner mentioned in the "Checking Groundlight SDK Version" section to verify that the latest version is now installed.

Getting the right Python Version

To check your installed Python version, open a terminal and run:

python --version

If you see a version number starting with "3.7" or higher (e.g., "3.7.5" or "3.9.0"), you're good to go. If not, you might need to upgrade Python on your system.

Upgrading Python on MacOS

Download the latest Python installer from the official Python website and run it, or use Homebrew to install Python:

brew install python

After upgrading, verify the Python version by running python --version or python3 --version, as described earlier.

Ready to go!

You're now ready to start using the Groundlight SDK in your projects. For more information on using the SDK, refer to the API Tokens and Building Applications documentation pages.

- - +

Installing on macOS

+

This guide will help you install the Groundlight SDK on macOS. The Groundlight SDK requires Python 3.7 or higher.

+

Prerequisites

+

Ensure that you have the following installed on your system:

+
    +
  • Python 3.7 or higher
  • +
  • pip (Python package installer)
  • +
+

Basic Installation

+

Assuming you have Python 3.7 or higher installed on your system, you can proceed with the following steps to install or upgrade the Groundlight SDK:

+

Installing Groundlight SDK

+

To install the Groundlight SDK using pip, run the following command in your terminal:

+
pip install groundlight
+

If you're also using python2 on your system, you might need to use pip3 instead:

+
pip3 install groundlight
+

The Groundlight SDK is now installed and ready for use.

+

Checking Groundlight SDK Version

+

To check if the Groundlight SDK is installed and to display its version, you can use the following Python one-liner:

+
python -c "import groundlight; print(groundlight.__version__)"
+

Upgrading Groundlight SDK

+

If you need to upgrade the Groundlight SDK to the latest version, use the following pip command:

+
pip install --upgrade groundlight
+

Or, if you're using pip3:

+
pip3 install --upgrade groundlight
+

After upgrading, you can use the Python one-liner mentioned in the "Checking Groundlight SDK Version" section to verify that the latest version is now installed.

+

Getting the right Python Version

+

To check your installed Python version, open a terminal and run:

+
python --version
+

If you see a version number starting with "3.7" or higher (e.g., "3.7.5" or "3.9.0"), you're good to go. If not, you might need to upgrade Python on your system.

+

Upgrading Python on MacOS

+

Download the latest Python installer from the official Python website and run it, or use Homebrew to install Python:

+
brew install python
+

After upgrading, verify the Python version by running python --version or python3 --version, as described earlier.

+

Ready to go!

+

You're now ready to start using the Groundlight SDK in your projects. For more information on using the SDK, refer to the API Tokens and Building Applications documentation pages.

\ No newline at end of file diff --git a/docs/installation/monitoring-notification-server.html b/docs/installation/monitoring-notification-server.html index afdf24ce..500f278c 100644 --- a/docs/installation/monitoring-notification-server.html +++ b/docs/installation/monitoring-notification-server.html @@ -1,16 +1,34 @@ - + - -Monitoring Notification Server | Groundlight - - + +Monitoring Notification Server | Groundlight + + -
-

Monitoring Notification Server

This is the easiest way to deploy your Groundlight detectors on a linux computer. All configuration is done through a web user interface, and no code development is required.

Prerequisites

  1. Internet connected linux computer
  2. Video source (USB camera or RTSP stream)
  3. Groundlight API Key (available from groundlight.ai)

Deployment

  1. Install Docker on your computer. See Docker's installation instructions.
  2. Create a new file called docker-compose.yml in your project directory. Copy the following into it:
services:
frontend:
image: docker.io/groundlight/monitoring-notification-server-frontend:latest
ports:
- "3000:3000"
depends_on:
- backend
backend:
image: docker.io/groundlight/monitoring-notification-server-backend:latest
ports:
- "8000:8000"
devices:
- /dev/video0:/dev/video0
- /dev/video1:/dev/video1
- /dev/video2:/dev/video2
- /dev/video3:/dev/video3
privileged: true
volumes:
- /dev/bus/usb:/dev/bus/usb
  1. Run the following command in your project directory:
docker-compose up
  1. If installed locally, open http://localhost:3000 in your browser. If installed on a remote device, replace localhost with the IP address of your device. You should see the following page:

Screenshot of the Groundlight Monitoring Notification Server

- - +

Monitoring Notification Server

+

This is the easiest way to deploy your Groundlight detectors on a linux computer. All configuration is done through a web user interface, and no code development is required.

+

Prerequisites

+
    +
  1. Internet connected linux computer
  2. +
  3. Video source (USB camera or RTSP stream)
  4. +
  5. Groundlight API Key (available from groundlight.ai)
  6. +
+

Deployment

+
    +
  1. Install Docker on your computer. See Docker's installation instructions.
  2. +
  3. Create a new file called docker-compose.yml in your project directory. Copy the following into it:
  4. +
+
services:
frontend:
image: docker.io/groundlight/monitoring-notification-server-frontend:latest
ports:
- "3000:3000"
depends_on:
- backend
backend:
image: docker.io/groundlight/monitoring-notification-server-backend:latest
ports:
- "8000:8000"
devices:
- /dev/video0:/dev/video0
- /dev/video1:/dev/video1
- /dev/video2:/dev/video2
- /dev/video3:/dev/video3
privileged: true
volumes:
- /dev/bus/usb:/dev/bus/usb
+
    +
  1. Run the following command in your project directory:
  2. +
+
docker-compose up
+
    +
  1. If installed locally, open http://localhost:3000 in your browser. If installed on a remote device, replace localhost with the IP address of your device. You should see the following page:
  2. +
+

Screenshot of the Groundlight Monitoring Notification Server

\ No newline at end of file diff --git a/docs/installation/nvidia-jetson.html b/docs/installation/nvidia-jetson.html index d81ad333..0a9549cd 100644 --- a/docs/installation/nvidia-jetson.html +++ b/docs/installation/nvidia-jetson.html @@ -1,16 +1,34 @@ - + - -Installing on NVIDIA Jetson | Groundlight - - + +Installing on NVIDIA Jetson | Groundlight + + -
-

Installing on NVIDIA Jetson

This guide will help you install the Groundlight SDK on NVIDIA Jetson devices. The Groundlight SDK requires Python 3.7 or higher.

Prerequisites

Ensure that you have the following installed on your NVIDIA Jetson:

  • Python 3.7 or higher
  • pip (Python package installer)

Basic Installation

Assuming you have Python 3.7 or higher installed on your NVIDIA Jetson, you can proceed with the following steps to install or upgrade the Groundlight SDK:

Installing Groundlight SDK

To install the Groundlight SDK using pip, run the following command in your terminal:

pip3 install groundlight

An ARM-compatible version will automatically get installed. The Groundlight SDK is now installed and ready for use.

Using RTSP Streams

If you have docker installed on your NVIDIA Jetson, you can even just run

docker run groundlight/stream

as we publish an ARM version of our streaming application to Docker Hub.

Sample application

For a complete end-to-end example of running on an NVIDIA Jetson, see this GitHub repo.

Ready to go!

You're now ready to start using the Groundlight SDK in your projects. For more information on using the SDK, refer to the API Tokens and [Building Applications

- - +

Installing on NVIDIA Jetson

+

This guide will help you install the Groundlight SDK on NVIDIA Jetson devices. The Groundlight SDK requires Python 3.7 or higher.

+

Prerequisites

+

Ensure that you have the following installed on your NVIDIA Jetson:

+
    +
  • Python 3.7 or higher
  • +
  • pip (Python package installer)
  • +
+

Basic Installation

+

Assuming you have Python 3.7 or higher installed on your NVIDIA Jetson, you can proceed with the following steps to install or upgrade the Groundlight SDK:

+

Installing Groundlight SDK

+

To install the Groundlight SDK using pip, run the following command in your terminal:

+
pip3 install groundlight
+

An ARM-compatible version will automatically get installed. The Groundlight SDK is now installed and ready for use.

+

Using RTSP Streams

+

If you have docker installed on your NVIDIA Jetson, you can even just run

+
docker run groundlight/stream
+

as we publish an ARM version of our streaming application to Docker Hub.

+

Sample application

+

For a complete end-to-end example of running on an NVIDIA Jetson, see this GitHub repo.

+

Ready to go!

+

You're now ready to start using the Groundlight SDK in your projects. For more information on using the SDK, refer to the API Tokens and [Building Applications

\ No newline at end of file diff --git a/docs/installation/optional-libraries.html b/docs/installation/optional-libraries.html index 2b8a8a07..b933363e 100644 --- a/docs/installation/optional-libraries.html +++ b/docs/installation/optional-libraries.html @@ -1,20 +1,29 @@ - + - -Optional libraries | Groundlight - - + +Optional libraries | Groundlight + + -
-

Optional libraries

Smaller is better!

The Groundlight SDK is optimized to run on small edge devices. As such, you can use the Groundlight SDK without -installing large libraries like numpy or OpenCV.

But if you're already installing them, we'll use them. Our SDK detects if these libraries are installed +

Optional libraries

+

Smaller is better!

+

The Groundlight SDK is optimized to run on small edge devices. As such, you can use the Groundlight SDK without +installing large libraries like numpy or OpenCV.

+

But if you're already installing them, we'll use them. Our SDK detects if these libraries are installed and will make use of them if they're present. If not, we'll gracefully degrade, and tell you what's -wrong if you try to use these features.

PIL - optional but default installed

The PIL library offers a bunch of standard utilities for working with images in python. The Groundlight SDK can work without PIL.

Because PIL is not very large, and is quite useful, we install it by default with the normal build of the Groundlight SDK. So when you

pip3 install groundlight

it comes with the pillow version of the PIL library already installed.

Working without PIL

If you are extremely space constrained, you can install the Groundlight SDK from source without PIL and it will work properly, but with reduced functionality. -Specifically, you will need to convert your images into JPEG format yourself. The SDK normally relies on PIL to do JPEG compression (which is a non-trivial algorithm), and the API requires images to be in JPEG format. However on space-constrained platforms, sometimes this conversion is done in hardware, and so we don't want to force you to install PIL if you don't need it.

Numpy, OpenCV - fully optional

These commonly-used libraries are not installed by default, because they are quite large, and their installation can often cause conflicts with other dependent libraries. If you want to use them, install them directly.

- - +wrong if you try to use these features.

+

PIL - optional but default installed

+

The PIL library offers a bunch of standard utilities for working with images in python. The Groundlight SDK can work without PIL.

+

Because PIL is not very large, and is quite useful, we install it by default with the normal build of the Groundlight SDK. So when you

+
pip3 install groundlight
+

it comes with the pillow version of the PIL library already installed.

+

Working without PIL

+

If you are extremely space constrained, you can install the Groundlight SDK from source without PIL and it will work properly, but with reduced functionality. +Specifically, you will need to convert your images into JPEG format yourself. The SDK normally relies on PIL to do JPEG compression (which is a non-trivial algorithm), and the API requires images to be in JPEG format. However on space-constrained platforms, sometimes this conversion is done in hardware, and so we don't want to force you to install PIL if you don't need it.

+

Numpy, OpenCV - fully optional

+

These commonly-used libraries are not installed by default, because they are quite large, and their installation can often cause conflicts with other dependent libraries. If you want to use them, install them directly.

\ No newline at end of file diff --git a/docs/installation/raspberry-pi.html b/docs/installation/raspberry-pi.html index 0156fc5f..368f5069 100644 --- a/docs/installation/raspberry-pi.html +++ b/docs/installation/raspberry-pi.html @@ -1,16 +1,34 @@ - + - -Installing on Raspberry Pi | Groundlight - - + +Installing on Raspberry Pi | Groundlight + + -
-

Installing on Raspberry Pi

This guide will help you install the Groundlight SDK on Raspberry Pi. The Groundlight SDK requires Python 3.7 or higher.

Prerequisites

Ensure that you have the following installed on your Raspberry Pi:

  • Python 3.7 or higher
  • pip (Python package installer)

Basic Installation

Assuming you have Python 3.7 or higher installed on your Raspberry Pi, you can proceed with the following steps to install or upgrade the Groundlight SDK:

Installing Groundlight SDK

To install the Groundlight SDK using pip, run the following command in your terminal:

pip3 install groundlight

An ARM-compatible version will automatically get installed. The Groundlight SDK is now installed and ready for use.

Using RTSP Streams

If you have docker installed on your Raspberry Pi, you can even just run

docker run groundlight/stream

as we publish an ARM version of our streaming application to Docker Hub.

Sample application

For a complete end-to-end example of running on a Raspberry Pi, see this GitHub repo.

Ready to go!

You're now ready to start using the Groundlight SDK in your projects. For more information on using the SDK, refer to the API Tokens and Building Applications documentation pages.

- - +

Installing on Raspberry Pi

+

This guide will help you install the Groundlight SDK on Raspberry Pi. The Groundlight SDK requires Python 3.7 or higher.

+

Prerequisites

+

Ensure that you have the following installed on your Raspberry Pi:

+
    +
  • Python 3.7 or higher
  • +
  • pip (Python package installer)
  • +
+

Basic Installation

+

Assuming you have Python 3.7 or higher installed on your Raspberry Pi, you can proceed with the following steps to install or upgrade the Groundlight SDK:

+

Installing Groundlight SDK

+

To install the Groundlight SDK using pip, run the following command in your terminal:

+
pip3 install groundlight
+

An ARM-compatible version will automatically get installed. The Groundlight SDK is now installed and ready for use.

+

Using RTSP Streams

+

If you have docker installed on your Raspberry Pi, you can even just run

+
docker run groundlight/stream
+

as we publish an ARM version of our streaming application to Docker Hub.

+

Sample application

+

For a complete end-to-end example of running on a Raspberry Pi, see this GitHub repo.

+

Ready to go!

+

You're now ready to start using the Groundlight SDK in your projects. For more information on using the SDK, refer to the API Tokens and Building Applications documentation pages.

\ No newline at end of file diff --git a/docs/installation/windows.html b/docs/installation/windows.html index 3199c5d8..f1fce75d 100644 --- a/docs/installation/windows.html +++ b/docs/installation/windows.html @@ -1,16 +1,46 @@ - + - -Installing on Windows | Groundlight - - + +Installing on Windows | Groundlight + + -
-

Installing on Windows

This guide will help you install the Groundlight SDK on Windows. The Groundlight SDK requires Python 3.7 or higher.

Prerequisites

Ensure that you have the following installed on your system:

  • Python 3.7 or higher
  • pip (Python package installer)

Basic Installation

Assuming you have Python 3.7 or higher installed on your system, you can proceed with the following steps to install or upgrade the Groundlight SDK:

Installing Groundlight SDK

To install the Groundlight SDK using pip, run the following command in your Command Prompt:

pip install groundlight

If you're also using python2 on your system, you might need to use pip3 instead:

pip3 install groundlight

The Groundlight SDK is now installed and ready for use.

Checking Groundlight SDK Version

To check if the Groundlight SDK is installed and to display its version, you can use the following Python one-liner:

python -c "import groundlight; print(groundlight.__version__)"

Upgrading Groundlight SDK

If you need to upgrade the Groundlight SDK to the latest version, use the following pip command:

pip install --upgrade groundlight

Or, if you're using pip3:

pip3 install --upgrade groundlight

After upgrading, you can use the Python one-liner mentioned in the "Checking Groundlight SDK Version" section to verify that the latest version is now installed.

Getting the right Python Version

To check your installed Python version, open a Command Prompt and run:

python --version

If you see a version number starting with "3.7" or higher (e.g., "3.7.5" or "3.9.0"), you're good to go. If not, you might need to upgrade Python on your system.

Upgrading Python on Windows

Download the latest Python installer from the official Python website and run it.

After upgrading, verify the Python version by running python --version or python3 --version, as described earlier.

Ready to go!

You're now ready to start using the Groundlight SDK in your projects. For more information on using the SDK, refer to the API Tokens and Building Applications documentation pages.

- - +

Installing on Windows

+

This guide will help you install the Groundlight SDK on Windows. The Groundlight SDK requires Python 3.7 or higher.

+

Prerequisites

+

Ensure that you have the following installed on your system:

+
    +
  • Python 3.7 or higher
  • +
  • pip (Python package installer)
  • +
+

Basic Installation

+

Assuming you have Python 3.7 or higher installed on your system, you can proceed with the following steps to install or upgrade the Groundlight SDK:

+

Installing Groundlight SDK

+

To install the Groundlight SDK using pip, run the following command in your Command Prompt:

+
pip install groundlight
+

If you're also using python2 on your system, you might need to use pip3 instead:

+
pip3 install groundlight
+

The Groundlight SDK is now installed and ready for use.

+

Checking Groundlight SDK Version

+

To check if the Groundlight SDK is installed and to display its version, you can use the following Python one-liner:

+
python -c "import groundlight; print(groundlight.__version__)"
+

Upgrading Groundlight SDK

+

If you need to upgrade the Groundlight SDK to the latest version, use the following pip command:

+
pip install --upgrade groundlight
+

Or, if you're using pip3:

+
pip3 install --upgrade groundlight
+

After upgrading, you can use the Python one-liner mentioned in the "Checking Groundlight SDK Version" section to verify that the latest version is now installed.

+

Getting the right Python Version

+

To check your installed Python version, open a Command Prompt and run:

+
python --version
+

If you see a version number starting with "3.7" or higher (e.g., "3.7.5" or "3.9.0"), you're good to go. If not, you might need to upgrade Python on your system.

+

Upgrading Python on Windows

+

Download the latest Python installer from the official Python website and run it.

+

After upgrading, verify the Python version by running python --version or python3 --version, as described earlier.

+

Ready to go!

+

You're now ready to start using the Groundlight SDK in your projects. For more information on using the SDK, refer to the API Tokens and Building Applications documentation pages.

\ No newline at end of file diff --git a/docs/iot.html b/docs/iot.html index 48581a0f..dedb4bc3 100644 --- a/docs/iot.html +++ b/docs/iot.html @@ -1,16 +1,46 @@ - + - -Setting up an ESP32 Camera Board | Groundlight - - + +Setting up an ESP32 Camera Board | Groundlight + + -
-

No-Code IoT Deployment

Groundlight supplies a tool for no-code deployment of a detector to an ESP32 Camera board. You can find it at https://iot.groundlight.ai/espcam.

Easy Deployment

This tool is designed to make it as easy as possible to deploy your Groundlight detector on an ESP32 Camera Board. You can deploy your detector in just a few clicks.

  1. Go to https://iot.groundlight.ai/espcam
  2. Plug your ESP32 Camera Board into your computer with a USB cable.
  3. Click through the steps to upload your detector to your ESP32 Camera Board.
  4. When prompted, allow your browser access to the serial port, so that it can program the device.
Dialog box in browser asking for serial port access

If you don't see a prompt like this, try using a current version of Chrome or another browser that supports Web Serial.

Notification Options

The tool supports the following notification options for your deployed detector:

  • Email
  • SMS (With Twilio)
  • Slack

Multiple Supported Boards

Tested with the following boards. Many other ESP32 boards should work as well, but may require building the firmware from source and changing the IO pin definitions.

Example bannerExample bannerExample bannerExample banner

Source Code

The source code is written as an Arduino-based PlatformIO project for ESP32, and is available on GitHub at https://github.com/groundlight/esp32cam

If you need assistance or have questions about integrating Groundlight with Arduino, please consider opening an issue on the GitHub repository or reaching out to our support team.

- - +

No-Code IoT Deployment

+

Groundlight supplies a tool for no-code deployment of a detector to an ESP32 Camera board. You can find it at https://iot.groundlight.ai/espcam.

+

Easy Deployment

+

This tool is designed to make it as easy as possible to deploy your Groundlight detector on an ESP32 Camera Board. You can deploy your detector in just a few clicks.

+
    +
  1. Go to https://iot.groundlight.ai/espcam
  2. +
  3. Plug your ESP32 Camera Board into your computer with a USB cable.
  4. +
  5. Click through the steps to upload your detector to your ESP32 Camera Board.
  6. +
  7. When prompted, allow your browser access to the serial port, so that it can program the device.
  8. +
+Dialog box in browser asking for serial port access +

If you don't see a prompt like this, try using a current version of Chrome or another browser that supports Web Serial.

+

Notification Options

+

The tool supports the following notification options for your deployed detector:

+
    +
  • Email
  • +
  • SMS (With Twilio)
  • +
  • Slack
  • +
+

Multiple Supported Boards

+

Tested with the following boards. Many other ESP32 boards should work as well, but may require building the firmware from source and changing the IO pin definitions.

+ +Example banner +Example banner +Example banner +Example banner +

Source Code

+

The source code is written as an Arduino-based PlatformIO project for ESP32, and is available on GitHub at https://github.com/groundlight/esp32cam

+

If you need assistance or have questions about integrating Groundlight with Arduino, please consider opening an issue on the GitHub repository or reaching out to our support team.

\ No newline at end of file diff --git a/index.html b/index.html index 470792f4..24ca204b 100644 --- a/index.html +++ b/index.html @@ -1,16 +1,13 @@ - + - -Groundlight | Groundlight - - + +Groundlight | Groundlight + + -
-

Groundlight

Computer Vision powered by Natural Language

Instant Models

Groundlight's Visual LLM creates computer vision models from English instructions instead of a dataset. This reduces the time to get an AI-driven solution off the ground. Did we mention you don't need a dataset?

Human Reliability

Groundlight's models are allowed to say they're "Unsure" and can escalate to a larger model or human expert for assistance. By knowing what they know, Groundlight's models act more robust, combining the speed of AI with the reliability of human oversight.

Seamless MLOps

Because Groundlight starts with humans-in-the-loop (HITL), continuous monitoring and auditing are automatic. Any data drift is automatically detected and corrected for. So you know your visual applications won't fall behind as the world around them inevitably changes.

- - +

Groundlight

Computer Vision powered by Natural Language

Instant Models

Groundlight's Visual LLM creates computer vision models from English instructions instead of a dataset. This reduces the time to get an AI-driven solution off the ground. Did we mention you don't need a dataset?

Human Reliability

Groundlight's models are allowed to say they're "Unsure" and can escalate to a larger model or human expert for assistance. By knowing what they know, Groundlight's models act more robust, combining the speed of AI with the reliability of human oversight.

Seamless MLOps

Because Groundlight starts with humans-in-the-loop (HITL), continuous monitoring and auditing are automatic. Any data drift is automatically detected and corrected for. So you know your visual applications won't fall behind as the world around them inevitably changes.

\ No newline at end of file diff --git a/markdown-page.html b/markdown-page.html index aa2b7319..bb1f1b9e 100644 --- a/markdown-page.html +++ b/markdown-page.html @@ -1,16 +1,14 @@ - + - -Markdown page example | Groundlight - - + +Markdown page example | Groundlight + + -
-

Markdown page example

You don't need React to write simple standalone pages.

- - +

Markdown page example

+

You don't need React to write simple standalone pages.

\ No newline at end of file diff --git a/search-index.json b/search-index.json index 99f2a77d..94bd7037 100644 --- a/search-index.json +++ b/search-index.json @@ -1 +1 @@ -[{"documents":[{"i":1,"t":"","u":"/python-sdk/docs/api-reference","b":["Docs"]},{"i":2,"t":"Building Applications","u":"/python-sdk/docs/building-applications","b":["Docs","Building Applications"]},{"i":8,"t":"Asynchronous Queries","u":"/python-sdk/docs/building-applications/async-queries","b":["Docs","Building Applications"]},{"i":16,"t":"Using Groundlight on the Edge","u":"/python-sdk/docs/building-applications/edge","b":["Docs","Building Applications"]},{"i":22,"t":"Industrial and Manufacturing Applications","u":"/python-sdk/docs/building-applications/industrial","b":["Docs","Building Applications"]},{"i":34,"t":"Grabbing Images","u":"/python-sdk/docs/building-applications/grabbing-images","b":["Docs","Building Applications"]},{"i":46,"t":"Sample Applications","u":"/python-sdk/docs/building-applications/sample-applications","b":["Docs","Building Applications"]},{"i":56,"t":"Getting Started","u":"/python-sdk/docs/getting-started","b":["Docs","Getting Started"]},{"i":65,"t":"Confidence Levels","u":"/python-sdk/docs/building-applications/managing-confidence","b":["Docs","Building Applications"]},{"i":67,"t":"Working with Detectors","u":"/python-sdk/docs/building-applications/working-with-detectors","b":["Docs","Building Applications"]},{"i":80,"t":"Handling Server Errors","u":"/python-sdk/docs/building-applications/handling-errors","b":["Docs","Building Applications"]},{"i":98,"t":"API Tokens","u":"/python-sdk/docs/getting-started/api-tokens","b":["Docs","Getting Started"]},{"i":113,"t":"A Quick Example: Live Stream Alert","u":"/python-sdk/docs/getting-started/streaming","b":["Docs","Getting Started"]},{"i":121,"t":"A Serious Example: Retail Analytics","u":"/python-sdk/docs/getting-started/retail-analytics","b":["Docs","Getting Started"]},{"i":130,"t":"A Fun Example: Dog-on-Couch Detector","u":"/python-sdk/docs/getting-started/dog-on-couch","b":["Docs","Getting Started"]},{"i":138,"t":"Writing Queries","u":"/python-sdk/docs/getting-started/writing-queries","b":["Docs","Getting Started"]},{"i":154,"t":"Installation","u":"/python-sdk/docs/installation","b":["Docs","Installation"]},{"i":158,"t":"Installing on Linux","u":"/python-sdk/docs/installation/linux","b":["Docs","Installation"]},{"i":178,"t":"Monitoring Notification Server","u":"/python-sdk/docs/installation/monitoring-notification-server","b":["Docs","Installation"]},{"i":184,"t":"Installing on macOS","u":"/python-sdk/docs/installation/macos","b":["Docs","Installation"]},{"i":202,"t":"Installing on Raspberry Pi","u":"/python-sdk/docs/installation/raspberry-pi","b":["Docs","Installation"]},{"i":216,"t":"Installing on NVIDIA Jetson","u":"/python-sdk/docs/installation/nvidia-jetson","b":["Docs","Installation"]},{"i":230,"t":"Installing on Windows","u":"/python-sdk/docs/installation/windows","b":["Docs","Installation"]},{"i":248,"t":"No-Code IoT Deployment","u":"/python-sdk/docs/iot","b":["Docs"]},{"i":258,"t":"Optional libraries","u":"/python-sdk/docs/installation/optional-libraries","b":["Docs","Installation"]}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/1",[]],["t/2",[0,3.098,1,2.178]],["t/8",[2,3.098,3,2.543]],["t/16",[4,2.627,5,2.627,6,2.627]],["t/22",[1,1.847,7,2.627,8,2.627]],["t/34",[9,3.098,10,3.098]],["t/46",[1,2.178,11,3.098]],["t/56",[12,3.098,13,3.098]],["t/65",[14,3.098,15,3.098]],["t/67",[16,3.098,17,3.098]],["t/80",[18,2.627,19,2.157,20,2.627]],["t/98",[21,3.098,22,3.098]],["t/113",[23,2.015,24,1.417,25,2.015,26,2.015,27,2.015]],["t/121",[24,1.603,28,2.281,29,2.281,30,2.281]],["t/130",[24,1.417,31,2.015,32,2.015,33,2.015,34,2.015]],["t/138",[3,2.543,35,3.098]],["t/154",[36,3.774]],["t/158",[37,1.687,38,3.098]],["t/178",[19,2.157,39,2.627,40,2.627]],["t/184",[37,1.687,41,3.098]],["t/202",[37,1.431,42,2.627,43,2.627]],["t/216",[37,1.431,44,2.627,45,2.627]],["t/230",[37,1.687,46,3.098]],["t/248",[47,2.627,48,2.627,49,2.627]],["t/258",[50,3.098,51,3.098]]],"invertedIndex":[["alert",{"_index":27,"t":{"113":{"position":[[29,5]]}}}],["analytics",{"_index":30,"t":{"121":{"position":[[26,9]]}}}],["api",{"_index":21,"t":{"98":{"position":[[0,3]]}}}],["applications",{"_index":1,"t":{"2":{"position":[[9,12]]},"22":{"position":[[29,12]]},"46":{"position":[[7,12]]}}}],["asynchronous",{"_index":2,"t":{"8":{"position":[[0,12]]}}}],["building",{"_index":0,"t":{"2":{"position":[[0,8]]}}}],["code",{"_index":47,"t":{"248":{"position":[[3,4]]}}}],["confidence",{"_index":14,"t":{"65":{"position":[[0,10]]}}}],["couch",{"_index":33,"t":{"130":{"position":[[22,5]]}}}],["deployment",{"_index":49,"t":{"248":{"position":[[12,10]]}}}],["detector",{"_index":34,"t":{"130":{"position":[[28,8]]}}}],["detectors",{"_index":17,"t":{"67":{"position":[[13,9]]}}}],["dog",{"_index":32,"t":{"130":{"position":[[15,3]]}}}],["edge",{"_index":6,"t":{"16":{"position":[[25,4]]}}}],["errors",{"_index":20,"t":{"80":{"position":[[16,6]]}}}],["example",{"_index":24,"t":{"113":{"position":[[8,8]]},"121":{"position":[[10,8]]},"130":{"position":[[6,8]]}}}],["fun",{"_index":31,"t":{"130":{"position":[[2,3]]}}}],["getting",{"_index":12,"t":{"56":{"position":[[0,7]]}}}],["grabbing",{"_index":9,"t":{"34":{"position":[[0,8]]}}}],["groundlight",{"_index":5,"t":{"16":{"position":[[6,11]]}}}],["handling",{"_index":18,"t":{"80":{"position":[[0,8]]}}}],["images",{"_index":10,"t":{"34":{"position":[[9,6]]}}}],["industrial",{"_index":7,"t":{"22":{"position":[[0,10]]}}}],["installation",{"_index":36,"t":{"154":{"position":[[0,12]]}}}],["installing",{"_index":37,"t":{"158":{"position":[[0,10]]},"184":{"position":[[0,10]]},"202":{"position":[[0,10]]},"216":{"position":[[0,10]]},"230":{"position":[[0,10]]}}}],["iot",{"_index":48,"t":{"248":{"position":[[8,3]]}}}],["jetson",{"_index":45,"t":{"216":{"position":[[21,6]]}}}],["levels",{"_index":15,"t":{"65":{"position":[[11,6]]}}}],["libraries",{"_index":51,"t":{"258":{"position":[[9,9]]}}}],["linux",{"_index":38,"t":{"158":{"position":[[14,5]]}}}],["live",{"_index":25,"t":{"113":{"position":[[17,4]]}}}],["macos",{"_index":41,"t":{"184":{"position":[[14,5]]}}}],["manufacturing",{"_index":8,"t":{"22":{"position":[[15,13]]}}}],["monitoring",{"_index":39,"t":{"178":{"position":[[0,10]]}}}],["notification",{"_index":40,"t":{"178":{"position":[[11,12]]}}}],["nvidia",{"_index":44,"t":{"216":{"position":[[14,6]]}}}],["optional",{"_index":50,"t":{"258":{"position":[[0,8]]}}}],["pi",{"_index":43,"t":{"202":{"position":[[24,2]]}}}],["queries",{"_index":3,"t":{"8":{"position":[[13,7]]},"138":{"position":[[8,7]]}}}],["quick",{"_index":23,"t":{"113":{"position":[[2,5]]}}}],["raspberry",{"_index":42,"t":{"202":{"position":[[14,9]]}}}],["retail",{"_index":29,"t":{"121":{"position":[[19,6]]}}}],["sample",{"_index":11,"t":{"46":{"position":[[0,6]]}}}],["serious",{"_index":28,"t":{"121":{"position":[[2,7]]}}}],["server",{"_index":19,"t":{"80":{"position":[[9,6]]},"178":{"position":[[24,6]]}}}],["started",{"_index":13,"t":{"56":{"position":[[8,7]]}}}],["stream",{"_index":26,"t":{"113":{"position":[[22,6]]}}}],["tokens",{"_index":22,"t":{"98":{"position":[[4,6]]}}}],["using",{"_index":4,"t":{"16":{"position":[[0,5]]}}}],["windows",{"_index":46,"t":{"230":{"position":[[14,7]]}}}],["working",{"_index":16,"t":{"67":{"position":[[0,7]]}}}],["writing",{"_index":35,"t":{"138":{"position":[[0,7]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":4,"t":"Sample Applications","u":"/python-sdk/docs/building-applications","h":"#sample-applications","p":2},{"i":6,"t":"Further Reading","u":"/python-sdk/docs/building-applications","h":"#further-reading","p":2},{"i":10,"t":"Setup Submitting Machine","u":"/python-sdk/docs/building-applications/async-queries","h":"#setup-submitting-machine","p":8},{"i":12,"t":"Setup Retrieving Machine","u":"/python-sdk/docs/building-applications/async-queries","h":"#setup-retrieving-machine","p":8},{"i":14,"t":"Important Considerations","u":"/python-sdk/docs/building-applications/async-queries","h":"#important-considerations","p":8},{"i":18,"t":"How the Edge Endpoint works","u":"/python-sdk/docs/building-applications/edge","h":"#how-the-edge-endpoint-works","p":16},{"i":20,"t":"Configuring the Edge Endpoint","u":"/python-sdk/docs/building-applications/edge","h":"#configuring-the-edge-endpoint","p":16},{"i":24,"t":"Machine Tending","u":"/python-sdk/docs/building-applications/industrial","h":"#machine-tending","p":22},{"i":26,"t":"Process Automation","u":"/python-sdk/docs/building-applications/industrial","h":"#process-automation","p":22},{"i":28,"t":"Quality Control","u":"/python-sdk/docs/building-applications/industrial","h":"#quality-control","p":22},{"i":30,"t":"Integration with Cobots and CNC Machines","u":"/python-sdk/docs/building-applications/industrial","h":"#integration-with-cobots-and-cnc-machines","p":22},{"i":32,"t":"Contact Sales","u":"/python-sdk/docs/building-applications/industrial","h":"","p":22},{"i":36,"t":"PIL","u":"/python-sdk/docs/building-applications/grabbing-images","h":"#pil","p":34},{"i":38,"t":"OpenCV","u":"/python-sdk/docs/building-applications/grabbing-images","h":"#opencv","p":34},{"i":40,"t":"Numpy","u":"/python-sdk/docs/building-applications/grabbing-images","h":"#numpy","p":34},{"i":42,"t":"Channel order: BGR vs RGB","u":"/python-sdk/docs/building-applications/grabbing-images","h":"#channel-order-bgr-vs-rgb","p":34},{"i":44,"t":"Framegrab","u":"/python-sdk/docs/building-applications/grabbing-images","h":"#framegrab","p":34},{"i":48,"t":"Groundlight Stream Processor","u":"/python-sdk/docs/building-applications/sample-applications","h":"#groundlight-stream-processor","p":46},{"i":50,"t":"Arduino ESP32 Camera Sample App","u":"/python-sdk/docs/building-applications/sample-applications","h":"#arduino-esp32-camera-sample-app","p":46},{"i":52,"t":"Raspberry Pi","u":"/python-sdk/docs/building-applications/sample-applications","h":"#raspberry-pi","p":46},{"i":54,"t":"Industrial and Manufacturing Applications","u":"/python-sdk/docs/building-applications/sample-applications","h":"#industrial-and-manufacturing-applications","p":46},{"i":57,"t":"Computer Vision powered by Natural Language","u":"/python-sdk/docs/getting-started","h":"#computer-vision-powered-by-natural-language","p":56},{"i":59,"t":"How does it work?","u":"/python-sdk/docs/getting-started","h":"#how-does-it-work","p":56},{"i":61,"t":"Escalation Technology","u":"/python-sdk/docs/getting-started","h":"#escalation-technology","p":56},{"i":63,"t":"Building a simple visual application","u":"/python-sdk/docs/getting-started","h":"#building-a-simple-visual-application","p":56},{"i":68,"t":"Explicitly create a new detector","u":"/python-sdk/docs/building-applications/working-with-detectors","h":"#explicitly-create-a-new-detector","p":67},{"i":70,"t":"Retrieve an existing detector","u":"/python-sdk/docs/building-applications/working-with-detectors","h":"#retrieve-an-existing-detector","p":67},{"i":72,"t":"List your detectors","u":"/python-sdk/docs/building-applications/working-with-detectors","h":"#list-your-detectors","p":67},{"i":74,"t":"Retrieve an image query","u":"/python-sdk/docs/building-applications/working-with-detectors","h":"#retrieve-an-image-query","p":67},{"i":76,"t":"List your previous image queries","u":"/python-sdk/docs/building-applications/working-with-detectors","h":"#list-your-previous-image-queries","p":67},{"i":78,"t":"Adding labels to existing image queries","u":"/python-sdk/docs/building-applications/working-with-detectors","h":"#adding-labels-to-existing-image-queries","p":67},{"i":82,"t":"Handling ApiException","u":"/python-sdk/docs/building-applications/handling-errors","h":"#handling-apiexception","p":80},{"i":84,"t":"Best Practices for Handling Exceptions","u":"/python-sdk/docs/building-applications/handling-errors","h":"#best-practices-for-handling-exceptions","p":80},{"i":86,"t":"Catch Specific Exceptions","u":"/python-sdk/docs/building-applications/handling-errors","h":"#catch-specific-exceptions","p":80},{"i":88,"t":"Use Custom Exception Classes","u":"/python-sdk/docs/building-applications/handling-errors","h":"#use-custom-exception-classes","p":80},{"i":90,"t":"Log Exceptions","u":"/python-sdk/docs/building-applications/handling-errors","h":"#log-exceptions","p":80},{"i":92,"t":"Implement Retry Logic","u":"/python-sdk/docs/building-applications/handling-errors","h":"#implement-retry-logic","p":80},{"i":94,"t":"Handle Exceptions Gracefully","u":"/python-sdk/docs/building-applications/handling-errors","h":"#handle-exceptions-gracefully","p":80},{"i":96,"t":"Test Your Error Handling","u":"/python-sdk/docs/building-applications/handling-errors","h":"#test-your-error-handling","p":80},{"i":99,"t":"About API Tokens","u":"/python-sdk/docs/getting-started/api-tokens","h":"#about-api-tokens","p":98},{"i":101,"t":"Handling API Tokens","u":"/python-sdk/docs/getting-started/api-tokens","h":"#handling-api-tokens","p":98},{"i":103,"t":"Using API Tokens with the SDK","u":"/python-sdk/docs/getting-started/api-tokens","h":"#using-api-tokens-with-the-sdk","p":98},{"i":105,"t":"Creating and Revoking API Tokens","u":"/python-sdk/docs/getting-started/api-tokens","h":"#creating-and-revoking-api-tokens","p":98},{"i":107,"t":"Creating API Tokens","u":"/python-sdk/docs/getting-started/api-tokens","h":"#creating-api-tokens","p":98},{"i":109,"t":"Viewing and Revoking API Tokens","u":"/python-sdk/docs/getting-started/api-tokens","h":"#viewing-and-revoking-api-tokens","p":98},{"i":111,"t":"To revoke an API token","u":"/python-sdk/docs/getting-started/api-tokens","h":"#to-revoke-an-api-token","p":98},{"i":115,"t":"Requirements","u":"/python-sdk/docs/getting-started/streaming","h":"#requirements","p":113},{"i":117,"t":"Installation","u":"/python-sdk/docs/getting-started/streaming","h":"#installation","p":113},{"i":119,"t":"Creating the Application","u":"/python-sdk/docs/getting-started/streaming","h":"#creating-the-application","p":113},{"i":122,"t":"Tracking utilization of a customer service counter","u":"/python-sdk/docs/getting-started/retail-analytics","h":"#tracking-utilization-of-a-customer-service-counter","p":121},{"i":124,"t":"Requirements","u":"/python-sdk/docs/getting-started/retail-analytics","h":"#requirements","p":121},{"i":126,"t":"Installation","u":"/python-sdk/docs/getting-started/retail-analytics","h":"#installation","p":121},{"i":128,"t":"Creating the Application","u":"/python-sdk/docs/getting-started/retail-analytics","h":"#creating-the-application","p":121},{"i":132,"t":"Requirements","u":"/python-sdk/docs/getting-started/dog-on-couch","h":"#requirements","p":130},{"i":134,"t":"Installation","u":"/python-sdk/docs/getting-started/dog-on-couch","h":"#installation","p":130},{"i":136,"t":"Creating the Application","u":"/python-sdk/docs/getting-started/dog-on-couch","h":"#creating-the-application","p":130},{"i":139,"t":"Introduction","u":"/python-sdk/docs/getting-started/writing-queries","h":"#introduction","p":138},{"i":141,"t":"Examples","u":"/python-sdk/docs/getting-started/writing-queries","h":"#examples","p":138},{"i":142,"t":"✅ Are there any cardboard boxes on the conveyor belt?","u":"/python-sdk/docs/getting-started/writing-queries","h":"#-are-there-any-cardboard-boxes-on-the-conveyor-belt","p":138},{"i":144,"t":"🟡 Is the trash can full?","u":"/python-sdk/docs/getting-started/writing-queries","h":"#-is-the-trash-can-full","p":138},{"i":146,"t":"✅ Is the garage door completely closed?","u":"/python-sdk/docs/getting-started/writing-queries","h":"#-is-the-garage-door-completely-closed","p":138},{"i":148,"t":"🟡 Is the weather nice out?","u":"/python-sdk/docs/getting-started/writing-queries","h":"#-is-the-weather-nice-out","p":138},{"i":150,"t":"❌ Where is the thing?","u":"/python-sdk/docs/getting-started/writing-queries","h":"#-where-is-the-thing","p":138},{"i":152,"t":"🟡 Is the factory floor clean and organized?","u":"/python-sdk/docs/getting-started/writing-queries","h":"#-is-the-factory-floor-clean-and-organized","p":138},{"i":156,"t":"Platform-specific Installation Guides","u":"/python-sdk/docs/installation","h":"#platform-specific-installation-guides","p":154},{"i":160,"t":"Prerequisites","u":"/python-sdk/docs/installation/linux","h":"#prerequisites","p":158},{"i":162,"t":"Basic Installation","u":"/python-sdk/docs/installation/linux","h":"#basic-installation","p":158},{"i":164,"t":"Installing Groundlight SDK","u":"/python-sdk/docs/installation/linux","h":"#installing-groundlight-sdk","p":158},{"i":166,"t":"Checking Groundlight SDK Version","u":"/python-sdk/docs/installation/linux","h":"#checking-groundlight-sdk-version","p":158},{"i":168,"t":"Upgrading Groundlight SDK","u":"/python-sdk/docs/installation/linux","h":"#upgrading-groundlight-sdk","p":158},{"i":170,"t":"Getting the right Python Version","u":"/python-sdk/docs/installation/linux","h":"#getting-the-right-python-version","p":158},{"i":172,"t":"Upgrading Python on Linux","u":"/python-sdk/docs/installation/linux","h":"#upgrading-python-on-linux","p":158},{"i":174,"t":"Special note about Ubuntu 18.04","u":"/python-sdk/docs/installation/linux","h":"#special-note-about-ubuntu-1804","p":158},{"i":176,"t":"Ready to go!","u":"/python-sdk/docs/installation/linux","h":"#ready-to-go","p":158},{"i":180,"t":"Prerequisites","u":"/python-sdk/docs/installation/monitoring-notification-server","h":"#prerequisites","p":178},{"i":182,"t":"Deployment","u":"/python-sdk/docs/installation/monitoring-notification-server","h":"#deployment","p":178},{"i":186,"t":"Prerequisites","u":"/python-sdk/docs/installation/macos","h":"#prerequisites","p":184},{"i":188,"t":"Basic Installation","u":"/python-sdk/docs/installation/macos","h":"#basic-installation","p":184},{"i":190,"t":"Installing Groundlight SDK","u":"/python-sdk/docs/installation/macos","h":"#installing-groundlight-sdk","p":184},{"i":192,"t":"Checking Groundlight SDK Version","u":"/python-sdk/docs/installation/macos","h":"#checking-groundlight-sdk-version","p":184},{"i":194,"t":"Upgrading Groundlight SDK","u":"/python-sdk/docs/installation/macos","h":"#upgrading-groundlight-sdk","p":184},{"i":196,"t":"Getting the right Python Version","u":"/python-sdk/docs/installation/macos","h":"#getting-the-right-python-version","p":184},{"i":198,"t":"Upgrading Python on MacOS","u":"/python-sdk/docs/installation/macos","h":"#upgrading-python-on-macos","p":184},{"i":200,"t":"Ready to go!","u":"/python-sdk/docs/installation/macos","h":"#ready-to-go","p":184},{"i":204,"t":"Prerequisites","u":"/python-sdk/docs/installation/raspberry-pi","h":"#prerequisites","p":202},{"i":206,"t":"Basic Installation","u":"/python-sdk/docs/installation/raspberry-pi","h":"#basic-installation","p":202},{"i":208,"t":"Installing Groundlight SDK","u":"/python-sdk/docs/installation/raspberry-pi","h":"#installing-groundlight-sdk","p":202},{"i":210,"t":"Using RTSP Streams","u":"/python-sdk/docs/installation/raspberry-pi","h":"#using-rtsp-streams","p":202},{"i":212,"t":"Sample application","u":"/python-sdk/docs/installation/raspberry-pi","h":"#sample-application","p":202},{"i":214,"t":"Ready to go!","u":"/python-sdk/docs/installation/raspberry-pi","h":"#ready-to-go","p":202},{"i":218,"t":"Prerequisites","u":"/python-sdk/docs/installation/nvidia-jetson","h":"#prerequisites","p":216},{"i":220,"t":"Basic Installation","u":"/python-sdk/docs/installation/nvidia-jetson","h":"#basic-installation","p":216},{"i":222,"t":"Installing Groundlight SDK","u":"/python-sdk/docs/installation/nvidia-jetson","h":"#installing-groundlight-sdk","p":216},{"i":224,"t":"Using RTSP Streams","u":"/python-sdk/docs/installation/nvidia-jetson","h":"#using-rtsp-streams","p":216},{"i":226,"t":"Sample application","u":"/python-sdk/docs/installation/nvidia-jetson","h":"#sample-application","p":216},{"i":228,"t":"Ready to go!","u":"/python-sdk/docs/installation/nvidia-jetson","h":"#ready-to-go","p":216},{"i":232,"t":"Prerequisites","u":"/python-sdk/docs/installation/windows","h":"#prerequisites","p":230},{"i":234,"t":"Basic Installation","u":"/python-sdk/docs/installation/windows","h":"#basic-installation","p":230},{"i":236,"t":"Installing Groundlight SDK","u":"/python-sdk/docs/installation/windows","h":"#installing-groundlight-sdk","p":230},{"i":238,"t":"Checking Groundlight SDK Version","u":"/python-sdk/docs/installation/windows","h":"#checking-groundlight-sdk-version","p":230},{"i":240,"t":"Upgrading Groundlight SDK","u":"/python-sdk/docs/installation/windows","h":"#upgrading-groundlight-sdk","p":230},{"i":242,"t":"Getting the right Python Version","u":"/python-sdk/docs/installation/windows","h":"#getting-the-right-python-version","p":230},{"i":244,"t":"Upgrading Python on Windows","u":"/python-sdk/docs/installation/windows","h":"#upgrading-python-on-windows","p":230},{"i":246,"t":"Ready to go!","u":"/python-sdk/docs/installation/windows","h":"#ready-to-go","p":230},{"i":250,"t":"Easy Deployment","u":"/python-sdk/docs/iot","h":"#easy-deployment","p":248},{"i":252,"t":"Notification Options","u":"/python-sdk/docs/iot","h":"#notification-options","p":248},{"i":254,"t":"Multiple Supported Boards","u":"/python-sdk/docs/iot","h":"#multiple-supported-boards","p":248},{"i":256,"t":"Source Code","u":"/python-sdk/docs/iot","h":"#source-code","p":248},{"i":259,"t":"Smaller is better!","u":"/python-sdk/docs/installation/optional-libraries","h":"#smaller-is-better","p":258},{"i":261,"t":"PIL - optional but default installed","u":"/python-sdk/docs/installation/optional-libraries","h":"#pil---optional-but-default-installed","p":258},{"i":263,"t":"Working without PIL","u":"/python-sdk/docs/installation/optional-libraries","h":"#working-without-pil","p":258},{"i":265,"t":"Numpy, OpenCV - fully optional","u":"/python-sdk/docs/installation/optional-libraries","h":"#numpy-opencv---fully-optional","p":258}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/4",[0,3.592,1,4.247]],["t/6",[2,4.816,3,4.816]],["t/10",[4,3.627,5,4.114,6,3.307]],["t/12",[4,3.627,6,3.307,7,4.114]],["t/14",[8,4.816,9,4.816]],["t/18",[10,3.627,11,3.627,12,4.114]],["t/20",[10,3.627,11,3.627,13,4.114]],["t/24",[6,3.872,14,4.816]],["t/26",[15,4.816,16,4.816]],["t/28",[17,4.816,18,4.816]],["t/30",[19,3.59,20,3.59,21,3.59,22,3.59]],["t/32",[23,4.816,24,4.816]],["t/36",[25,4.669]],["t/38",[26,5.121]],["t/40",[27,5.121]],["t/42",[28,3.185,29,3.185,30,3.185,31,3.185,32,3.185]],["t/44",[33,5.808]],["t/48",[34,2.096,35,4.114,36,4.114]],["t/50",[0,2.375,37,3.185,38,3.185,39,3.185,40,3.185]],["t/52",[41,4.816,42,4.816]],["t/54",[1,3.627,43,4.114,44,4.114]],["t/57",[45,3.185,46,3.185,47,3.185,48,3.185,49,3.185]],["t/59",[50,5.808]],["t/61",[51,4.816,52,4.816]],["t/63",[53,3.59,54,3.59,55,3.59,56,2.372]],["t/68",[57,3.59,58,3.59,59,3.59,60,3.166]],["t/70",[60,3.627,61,3.627,62,3.627]],["t/72",[63,4.247,64,4.816]],["t/74",[61,3.627,65,3.307,66,4.114]],["t/76",[63,3.166,65,2.886,67,3.59,68,3.166]],["t/78",[62,2.808,65,2.56,68,2.808,69,3.185,70,3.185]],["t/82",[71,3.592,72,4.816]],["t/84",[71,2.677,73,3.59,74,3.59,75,2.677]],["t/86",[75,3.068,76,4.114,77,3.627]],["t/88",[78,3.59,79,3.59,80,3.59,81,3.59]],["t/90",[75,3.592,82,4.816]],["t/92",[83,4.114,84,4.114,85,4.114]],["t/94",[75,3.068,86,4.114,87,4.114]],["t/96",[71,3.068,88,4.114,89,4.114]],["t/99",[90,3.023,91,3.182]],["t/101",[71,3.068,90,2.582,91,2.718]],["t/103",[90,2.253,91,2.372,92,2.886,93,1.829]],["t/105",[90,2.253,91,2.372,94,2.511,95,3.166]],["t/107",[90,2.582,91,2.718,94,2.877]],["t/109",[90,2.253,91,2.372,95,3.166,96,3.59]],["t/111",[90,2.582,97,4.114,98,4.114]],["t/115",[99,4.669]],["t/117",[100,3.327]],["t/119",[56,3.182,94,3.368]],["t/122",[101,3.185,102,3.185,103,3.185,104,3.185,105,3.185]],["t/124",[99,4.669]],["t/126",[100,3.327]],["t/128",[56,3.182,94,3.368]],["t/132",[99,4.669]],["t/134",[100,3.327]],["t/136",[56,3.182,94,3.368]],["t/139",[106,5.808]],["t/141",[107,5.808]],["t/142",[108,2.104,109,3.185,110,3.185,111,3.185,112,3.185]],["t/144",[108,2.718,113,4.114,114,4.114]],["t/146",[108,2.104,115,3.185,116,3.185,117,3.185,118,3.185]],["t/148",[108,2.372,119,3.59,120,3.59,121,3.59]],["t/150",[108,3.182,122,4.816]],["t/152",[108,2.104,123,3.185,124,3.185,125,3.185,126,3.185]],["t/156",[77,3.166,100,2.057,127,3.59,128,3.59]],["t/160",[129,3.837]],["t/162",[100,2.759,130,3.368]],["t/164",[34,2.096,93,2.096,131,2.877]],["t/166",[34,1.829,93,1.829,132,2.886,133,2.372]],["t/168",[34,2.096,93,2.096,134,2.718]],["t/170",[133,2.372,135,2.886,136,2.886,137,2.372]],["t/172",[134,2.718,137,2.718,138,4.114]],["t/174",[139,3.59,140,3.59,141,3.59,142,3.59]],["t/176",[143,3.368,144,3.368]],["t/180",[129,3.837]],["t/182",[145,5.121]],["t/186",[129,3.837]],["t/188",[100,2.759,130,3.368]],["t/190",[34,2.096,93,2.096,131,2.877]],["t/192",[34,1.829,93,1.829,132,2.886,133,2.372]],["t/194",[34,2.096,93,2.096,134,2.718]],["t/196",[133,2.372,135,2.886,136,2.886,137,2.372]],["t/198",[134,2.718,137,2.718,146,4.114]],["t/200",[143,3.368,144,3.368]],["t/204",[129,3.837]],["t/206",[100,2.759,130,3.368]],["t/208",[34,2.096,93,2.096,131,2.877]],["t/210",[92,3.307,147,3.627,148,3.627]],["t/212",[0,3.592,56,3.182]],["t/214",[143,3.368,144,3.368]],["t/218",[129,3.837]],["t/220",[100,2.759,130,3.368]],["t/222",[34,2.096,93,2.096,131,2.877]],["t/224",[92,3.307,147,3.627,148,3.627]],["t/226",[0,3.592,56,3.182]],["t/228",[143,3.368,144,3.368]],["t/232",[129,3.837]],["t/234",[100,2.759,130,3.368]],["t/236",[34,2.096,93,2.096,131,2.877]],["t/238",[34,1.829,93,1.829,132,2.886,133,2.372]],["t/240",[34,2.096,93,2.096,134,2.718]],["t/242",[133,2.372,135,2.886,136,2.886,137,2.372]],["t/244",[134,2.718,137,2.718,149,4.114]],["t/246",[143,3.368,144,3.368]],["t/250",[145,4.247,150,4.816]],["t/252",[151,4.816,152,4.816]],["t/254",[153,4.114,154,4.114,155,4.114]],["t/256",[156,4.816,157,4.816]],["t/259",[158,4.816,159,4.816]],["t/261",[25,2.886,160,3.166,161,3.59,162,3.59]],["t/263",[25,3.307,163,4.114,164,4.114]],["t/265",[26,3.166,27,3.166,160,3.166,165,3.59]]],"invertedIndex":[["",{"_index":108,"t":{"142":{"position":[[0,1]]},"144":{"position":[[0,2]]},"146":{"position":[[0,1]]},"148":{"position":[[0,2]]},"150":{"position":[[0,1]]},"152":{"position":[[0,2]]}}}],["18.04",{"_index":142,"t":{"174":{"position":[[26,5]]}}}],["adding",{"_index":69,"t":{"78":{"position":[[0,6]]}}}],["api",{"_index":90,"t":{"99":{"position":[[6,3]]},"101":{"position":[[9,3]]},"103":{"position":[[6,3]]},"105":{"position":[[22,3]]},"107":{"position":[[9,3]]},"109":{"position":[[21,3]]},"111":{"position":[[13,3]]}}}],["apiexception",{"_index":72,"t":{"82":{"position":[[9,12]]}}}],["app",{"_index":40,"t":{"50":{"position":[[28,3]]}}}],["application",{"_index":56,"t":{"63":{"position":[[25,11]]},"119":{"position":[[13,11]]},"128":{"position":[[13,11]]},"136":{"position":[[13,11]]},"212":{"position":[[7,11]]},"226":{"position":[[7,11]]}}}],["applications",{"_index":1,"t":{"4":{"position":[[7,12]]},"54":{"position":[[29,12]]}}}],["arduino",{"_index":37,"t":{"50":{"position":[[0,7]]}}}],["automation",{"_index":16,"t":{"26":{"position":[[8,10]]}}}],["basic",{"_index":130,"t":{"162":{"position":[[0,5]]},"188":{"position":[[0,5]]},"206":{"position":[[0,5]]},"220":{"position":[[0,5]]},"234":{"position":[[0,5]]}}}],["belt",{"_index":112,"t":{"142":{"position":[[48,5]]}}}],["best",{"_index":73,"t":{"84":{"position":[[0,4]]}}}],["better",{"_index":159,"t":{"259":{"position":[[11,7]]}}}],["bgr",{"_index":30,"t":{"42":{"position":[[15,3]]}}}],["boards",{"_index":155,"t":{"254":{"position":[[19,6]]}}}],["boxes",{"_index":110,"t":{"142":{"position":[[26,5]]}}}],["building",{"_index":53,"t":{"63":{"position":[[0,8]]}}}],["camera",{"_index":39,"t":{"50":{"position":[[14,6]]}}}],["cardboard",{"_index":109,"t":{"142":{"position":[[16,9]]}}}],["catch",{"_index":76,"t":{"86":{"position":[[0,5]]}}}],["channel",{"_index":28,"t":{"42":{"position":[[0,7]]}}}],["checking",{"_index":132,"t":{"166":{"position":[[0,8]]},"192":{"position":[[0,8]]},"238":{"position":[[0,8]]}}}],["classes",{"_index":81,"t":{"88":{"position":[[21,7]]}}}],["clean",{"_index":125,"t":{"152":{"position":[[24,5]]}}}],["closed",{"_index":118,"t":{"146":{"position":[[32,7]]}}}],["cnc",{"_index":21,"t":{"30":{"position":[[28,3]]}}}],["cobots",{"_index":20,"t":{"30":{"position":[[17,6]]}}}],["code",{"_index":157,"t":{"256":{"position":[[7,4]]}}}],["completely",{"_index":117,"t":{"146":{"position":[[21,10]]}}}],["computer",{"_index":45,"t":{"57":{"position":[[0,8]]}}}],["configuring",{"_index":13,"t":{"20":{"position":[[0,11]]}}}],["considerations",{"_index":9,"t":{"14":{"position":[[10,14]]}}}],["contact",{"_index":23,"t":{"32":{"position":[[0,7]]}}}],["control",{"_index":18,"t":{"28":{"position":[[8,7]]}}}],["conveyor",{"_index":111,"t":{"142":{"position":[[39,8]]}}}],["counter",{"_index":105,"t":{"122":{"position":[[43,7]]}}}],["create",{"_index":58,"t":{"68":{"position":[[11,6]]}}}],["creating",{"_index":94,"t":{"105":{"position":[[0,8]]},"107":{"position":[[0,8]]},"119":{"position":[[0,8]]},"128":{"position":[[0,8]]},"136":{"position":[[0,8]]}}}],["custom",{"_index":79,"t":{"88":{"position":[[4,6]]}}}],["customer",{"_index":103,"t":{"122":{"position":[[26,8]]}}}],["default",{"_index":161,"t":{"261":{"position":[[19,7]]}}}],["deployment",{"_index":145,"t":{"182":{"position":[[0,10]]},"250":{"position":[[5,10]]}}}],["detector",{"_index":60,"t":{"68":{"position":[[24,8]]},"70":{"position":[[21,8]]}}}],["detectors",{"_index":64,"t":{"72":{"position":[[10,9]]}}}],["door",{"_index":116,"t":{"146":{"position":[[16,4]]}}}],["easy",{"_index":150,"t":{"250":{"position":[[0,4]]}}}],["edge",{"_index":10,"t":{"18":{"position":[[8,4]]},"20":{"position":[[16,4]]}}}],["endpoint",{"_index":11,"t":{"18":{"position":[[13,8]]},"20":{"position":[[21,8]]}}}],["error",{"_index":89,"t":{"96":{"position":[[10,5]]}}}],["escalation",{"_index":51,"t":{"61":{"position":[[0,10]]}}}],["esp32",{"_index":38,"t":{"50":{"position":[[8,5]]}}}],["examples",{"_index":107,"t":{"141":{"position":[[0,8]]}}}],["exception",{"_index":80,"t":{"88":{"position":[[11,9]]}}}],["exceptions",{"_index":75,"t":{"84":{"position":[[28,10]]},"86":{"position":[[15,10]]},"90":{"position":[[4,10]]},"94":{"position":[[7,10]]}}}],["existing",{"_index":62,"t":{"70":{"position":[[12,8]]},"78":{"position":[[17,8]]}}}],["explicitly",{"_index":57,"t":{"68":{"position":[[0,10]]}}}],["factory",{"_index":123,"t":{"152":{"position":[[10,7]]}}}],["floor",{"_index":124,"t":{"152":{"position":[[18,5]]}}}],["framegrab",{"_index":33,"t":{"44":{"position":[[0,9]]}}}],["full",{"_index":114,"t":{"144":{"position":[[20,5]]}}}],["fully",{"_index":165,"t":{"265":{"position":[[16,5]]}}}],["further",{"_index":2,"t":{"6":{"position":[[0,7]]}}}],["garage",{"_index":115,"t":{"146":{"position":[[9,6]]}}}],["getting",{"_index":135,"t":{"170":{"position":[[0,7]]},"196":{"position":[[0,7]]},"242":{"position":[[0,7]]}}}],["go",{"_index":144,"t":{"176":{"position":[[9,3]]},"200":{"position":[[9,3]]},"214":{"position":[[9,3]]},"228":{"position":[[9,3]]},"246":{"position":[[9,3]]}}}],["gracefully",{"_index":87,"t":{"94":{"position":[[18,10]]}}}],["groundlight",{"_index":34,"t":{"48":{"position":[[0,11]]},"164":{"position":[[11,11]]},"166":{"position":[[9,11]]},"168":{"position":[[10,11]]},"190":{"position":[[11,11]]},"192":{"position":[[9,11]]},"194":{"position":[[10,11]]},"208":{"position":[[11,11]]},"222":{"position":[[11,11]]},"236":{"position":[[11,11]]},"238":{"position":[[9,11]]},"240":{"position":[[10,11]]}}}],["guides",{"_index":128,"t":{"156":{"position":[[31,6]]}}}],["handle",{"_index":86,"t":{"94":{"position":[[0,6]]}}}],["handling",{"_index":71,"t":{"82":{"position":[[0,8]]},"84":{"position":[[19,8]]},"96":{"position":[[16,8]]},"101":{"position":[[0,8]]}}}],["image",{"_index":65,"t":{"74":{"position":[[12,5]]},"76":{"position":[[19,5]]},"78":{"position":[[26,5]]}}}],["implement",{"_index":83,"t":{"92":{"position":[[0,9]]}}}],["important",{"_index":8,"t":{"14":{"position":[[0,9]]}}}],["industrial",{"_index":43,"t":{"54":{"position":[[0,10]]}}}],["installation",{"_index":100,"t":{"117":{"position":[[0,12]]},"126":{"position":[[0,12]]},"134":{"position":[[0,12]]},"156":{"position":[[18,12]]},"162":{"position":[[6,12]]},"188":{"position":[[6,12]]},"206":{"position":[[6,12]]},"220":{"position":[[6,12]]},"234":{"position":[[6,12]]}}}],["installed",{"_index":162,"t":{"261":{"position":[[27,9]]}}}],["installing",{"_index":131,"t":{"164":{"position":[[0,10]]},"190":{"position":[[0,10]]},"208":{"position":[[0,10]]},"222":{"position":[[0,10]]},"236":{"position":[[0,10]]}}}],["integration",{"_index":19,"t":{"30":{"position":[[0,11]]}}}],["introduction",{"_index":106,"t":{"139":{"position":[[0,12]]}}}],["labels",{"_index":70,"t":{"78":{"position":[[7,6]]}}}],["language",{"_index":49,"t":{"57":{"position":[[35,8]]}}}],["linux",{"_index":138,"t":{"172":{"position":[[20,5]]}}}],["list",{"_index":63,"t":{"72":{"position":[[0,4]]},"76":{"position":[[0,4]]}}}],["log",{"_index":82,"t":{"90":{"position":[[0,3]]}}}],["logic",{"_index":85,"t":{"92":{"position":[[16,5]]}}}],["machine",{"_index":6,"t":{"10":{"position":[[17,7]]},"12":{"position":[[17,7]]},"24":{"position":[[0,7]]}}}],["machines",{"_index":22,"t":{"30":{"position":[[32,8]]}}}],["macos",{"_index":146,"t":{"198":{"position":[[20,5]]}}}],["manufacturing",{"_index":44,"t":{"54":{"position":[[15,13]]}}}],["multiple",{"_index":153,"t":{"254":{"position":[[0,8]]}}}],["natural",{"_index":48,"t":{"57":{"position":[[27,7]]}}}],["new",{"_index":59,"t":{"68":{"position":[[20,3]]}}}],["nice",{"_index":120,"t":{"148":{"position":[[18,4]]}}}],["note",{"_index":140,"t":{"174":{"position":[[8,4]]}}}],["notification",{"_index":151,"t":{"252":{"position":[[0,12]]}}}],["numpy",{"_index":27,"t":{"40":{"position":[[0,5]]},"265":{"position":[[0,6]]}}}],["opencv",{"_index":26,"t":{"38":{"position":[[0,6]]},"265":{"position":[[7,6]]}}}],["optional",{"_index":160,"t":{"261":{"position":[[6,8]]},"265":{"position":[[22,8]]}}}],["options",{"_index":152,"t":{"252":{"position":[[13,7]]}}}],["order",{"_index":29,"t":{"42":{"position":[[8,6]]}}}],["organized",{"_index":126,"t":{"152":{"position":[[34,10]]}}}],["out",{"_index":121,"t":{"148":{"position":[[23,4]]}}}],["pi",{"_index":42,"t":{"52":{"position":[[10,2]]}}}],["pil",{"_index":25,"t":{"36":{"position":[[0,3]]},"261":{"position":[[0,3]]},"263":{"position":[[16,3]]}}}],["platform",{"_index":127,"t":{"156":{"position":[[0,8]]}}}],["powered",{"_index":47,"t":{"57":{"position":[[16,7]]}}}],["practices",{"_index":74,"t":{"84":{"position":[[5,9]]}}}],["prerequisites",{"_index":129,"t":{"160":{"position":[[0,13]]},"180":{"position":[[0,13]]},"186":{"position":[[0,13]]},"204":{"position":[[0,13]]},"218":{"position":[[0,13]]},"232":{"position":[[0,13]]}}}],["previous",{"_index":67,"t":{"76":{"position":[[10,8]]}}}],["process",{"_index":15,"t":{"26":{"position":[[0,7]]}}}],["processor",{"_index":36,"t":{"48":{"position":[[19,9]]}}}],["python",{"_index":137,"t":{"170":{"position":[[18,6]]},"172":{"position":[[10,6]]},"196":{"position":[[18,6]]},"198":{"position":[[10,6]]},"242":{"position":[[18,6]]},"244":{"position":[[10,6]]}}}],["quality",{"_index":17,"t":{"28":{"position":[[0,7]]}}}],["queries",{"_index":68,"t":{"76":{"position":[[25,7]]},"78":{"position":[[32,7]]}}}],["query",{"_index":66,"t":{"74":{"position":[[18,5]]}}}],["raspberry",{"_index":41,"t":{"52":{"position":[[0,9]]}}}],["reading",{"_index":3,"t":{"6":{"position":[[8,7]]}}}],["ready",{"_index":143,"t":{"176":{"position":[[0,5]]},"200":{"position":[[0,5]]},"214":{"position":[[0,5]]},"228":{"position":[[0,5]]},"246":{"position":[[0,5]]}}}],["requirements",{"_index":99,"t":{"115":{"position":[[0,12]]},"124":{"position":[[0,12]]},"132":{"position":[[0,12]]}}}],["retrieve",{"_index":61,"t":{"70":{"position":[[0,8]]},"74":{"position":[[0,8]]}}}],["retrieving",{"_index":7,"t":{"12":{"position":[[6,10]]}}}],["retry",{"_index":84,"t":{"92":{"position":[[10,5]]}}}],["revoke",{"_index":97,"t":{"111":{"position":[[3,6]]}}}],["revoking",{"_index":95,"t":{"105":{"position":[[13,8]]},"109":{"position":[[12,8]]}}}],["rgb",{"_index":32,"t":{"42":{"position":[[22,3]]}}}],["right",{"_index":136,"t":{"170":{"position":[[12,5]]},"196":{"position":[[12,5]]},"242":{"position":[[12,5]]}}}],["rtsp",{"_index":147,"t":{"210":{"position":[[6,4]]},"224":{"position":[[6,4]]}}}],["sales",{"_index":24,"t":{"32":{"position":[[8,5]]}}}],["sample",{"_index":0,"t":{"4":{"position":[[0,6]]},"50":{"position":[[21,6]]},"212":{"position":[[0,6]]},"226":{"position":[[0,6]]}}}],["sdk",{"_index":93,"t":{"103":{"position":[[26,3]]},"164":{"position":[[23,3]]},"166":{"position":[[21,3]]},"168":{"position":[[22,3]]},"190":{"position":[[23,3]]},"192":{"position":[[21,3]]},"194":{"position":[[22,3]]},"208":{"position":[[23,3]]},"222":{"position":[[23,3]]},"236":{"position":[[23,3]]},"238":{"position":[[21,3]]},"240":{"position":[[22,3]]}}}],["service",{"_index":104,"t":{"122":{"position":[[35,7]]}}}],["setup",{"_index":4,"t":{"10":{"position":[[0,5]]},"12":{"position":[[0,5]]}}}],["simple",{"_index":54,"t":{"63":{"position":[[11,6]]}}}],["smaller",{"_index":158,"t":{"259":{"position":[[0,7]]}}}],["source",{"_index":156,"t":{"256":{"position":[[0,6]]}}}],["special",{"_index":139,"t":{"174":{"position":[[0,7]]}}}],["specific",{"_index":77,"t":{"86":{"position":[[6,8]]},"156":{"position":[[9,8]]}}}],["stream",{"_index":35,"t":{"48":{"position":[[12,6]]}}}],["streams",{"_index":148,"t":{"210":{"position":[[11,7]]},"224":{"position":[[11,7]]}}}],["submitting",{"_index":5,"t":{"10":{"position":[[6,10]]}}}],["supported",{"_index":154,"t":{"254":{"position":[[9,9]]}}}],["technology",{"_index":52,"t":{"61":{"position":[[11,10]]}}}],["tending",{"_index":14,"t":{"24":{"position":[[8,7]]}}}],["test",{"_index":88,"t":{"96":{"position":[[0,4]]}}}],["thing",{"_index":122,"t":{"150":{"position":[[15,6]]}}}],["token",{"_index":98,"t":{"111":{"position":[[17,5]]}}}],["tokens",{"_index":91,"t":{"99":{"position":[[10,6]]},"101":{"position":[[13,6]]},"103":{"position":[[10,6]]},"105":{"position":[[26,6]]},"107":{"position":[[13,6]]},"109":{"position":[[25,6]]}}}],["tracking",{"_index":101,"t":{"122":{"position":[[0,8]]}}}],["trash",{"_index":113,"t":{"144":{"position":[[10,5]]}}}],["ubuntu",{"_index":141,"t":{"174":{"position":[[19,6]]}}}],["upgrading",{"_index":134,"t":{"168":{"position":[[0,9]]},"172":{"position":[[0,9]]},"194":{"position":[[0,9]]},"198":{"position":[[0,9]]},"240":{"position":[[0,9]]},"244":{"position":[[0,9]]}}}],["use",{"_index":78,"t":{"88":{"position":[[0,3]]}}}],["using",{"_index":92,"t":{"103":{"position":[[0,5]]},"210":{"position":[[0,5]]},"224":{"position":[[0,5]]}}}],["utilization",{"_index":102,"t":{"122":{"position":[[9,11]]}}}],["version",{"_index":133,"t":{"166":{"position":[[25,7]]},"170":{"position":[[25,7]]},"192":{"position":[[25,7]]},"196":{"position":[[25,7]]},"238":{"position":[[25,7]]},"242":{"position":[[25,7]]}}}],["viewing",{"_index":96,"t":{"109":{"position":[[0,7]]}}}],["vision",{"_index":46,"t":{"57":{"position":[[9,6]]}}}],["visual",{"_index":55,"t":{"63":{"position":[[18,6]]}}}],["vs",{"_index":31,"t":{"42":{"position":[[19,2]]}}}],["weather",{"_index":119,"t":{"148":{"position":[[10,7]]}}}],["windows",{"_index":149,"t":{"244":{"position":[[20,7]]}}}],["without",{"_index":164,"t":{"263":{"position":[[8,7]]}}}],["work",{"_index":50,"t":{"59":{"position":[[12,5]]}}}],["working",{"_index":163,"t":{"263":{"position":[[0,7]]}}}],["works",{"_index":12,"t":{"18":{"position":[[22,5]]}}}]],"pipeline":["stemmer"]}},{"documents":[{"i":3,"t":"Groundlight provides a powerful \"computer vision powered by natural language\" system that enables you to build visual applications with minimal code. With Groundlight, you can quickly create applications for various use cases, from simple object detection to complex visual analysis. In this page, we'll introduce you to some sample applications built using Groundlight and provide links to more detailed guides on various topics.","s":"Building Applications","u":"/python-sdk/docs/building-applications","h":"","p":2},{"i":5,"t":"Sample Applications: Find repositories with examples of applications built with Groundlight","s":"Sample Applications","u":"/python-sdk/docs/building-applications","h":"#sample-applications","p":2},{"i":7,"t":"For more in-depth guides on various aspects of building applications with Groundlight, check out the following pages: Grabbing images: Understand the intricacies of how to submit images from various input sources to Groundlight. Working with detectors: Learn how to create, configure, and use detectors in your Groundlight-powered applications. Confidence levels: Master how to control the trade-off of latency against accuracy by configuring the desired confidence level for your detectors. Handling server errors: Understand how to handle and troubleshoot HTTP errors that may occur while using Groundlight. Asynchronous queries: Groundlight makes it easy to submit asynchronous queries. Learn how to submit queries asynchronously and retrieve the results later. Using Groundlight on the edge: Discover how to deploy Groundlight in edge computing environments for improved performance and reduced latency. Industrial applications: Learn how to apply modern natural-language-based computer vision to your industrial and manufacturing applications. By exploring these resources and sample applications, you'll be well on your way to building powerful visual applications using Groundlight's computer vision and natural language capabilities.","s":"Further Reading","u":"/python-sdk/docs/building-applications","h":"#further-reading","p":2},{"i":9,"t":"Groundlight provides a simple interface for submitting asynchronous queries. This is useful for times in which the thread or process or machine submitting image queries is not the same thread or machine that will be retrieving and using the results. For example, you might have a forward deployed robot or camera that submits image queries to Groundlight, and a separate server that retrieves the results and takes action based on them. We will refer to these two machines as the submitting machine and the retrieving machine.","s":"Asynchronous Queries","u":"/python-sdk/docs/building-applications/async-queries","h":"","p":8},{"i":11,"t":"On the submitting machine, you will need to install the Groundlight Python SDK. Then you can submit image queries asynchronously using the ask_async interface (read the full documentation here). ask_async submits your query and returns as soon as the query is submitted. It does not wait for an answer to be available prior to returning to minimize the time your program spends interacting with Groundlight. As a result, the ImageQuery object ask_async returns lacks a result (the result field will be None). This is acceptable for this use case as the submitting machine is not interested in the result. Instead, the submitting machine just needs to communicate the ImageQuery.ids to the retrieving machine - this might be done via a database, a message queue, or some other mechanism. For this example, we assume you are using a database where you save the ImageQuery.id to it via db.save(image_query.id). from groundlight import Groundlight import cv2 from time import sleep detector = gl.get_or_create_detector(name=\"your_detector_name\", query=\"your_query\") cam = cv2.VideoCapture(0) # Initialize camera (0 is the default index) while True: _, image = cam.read() # Capture one frame from the camera image_query = gl.ask_async(detector=detector, image=image) # Submit the frame to Groundlight db.save(image_query.id) # Save the image_query.id to a database for the retrieving machine to use sleep(10) # Sleep for 10 seconds before submitting the next query cam.release() # Release the camera","s":"Setup Submitting Machine","u":"/python-sdk/docs/building-applications/async-queries","h":"#setup-submitting-machine","p":8},{"i":13,"t":"On the retrieving machine you will need to install the Groundlight Python SDK. Then you can retrieve the results of the image queries submitted by another machine using get_image_query. The retrieving machine can then use the ImageQuery.result to take action based on the result for whatever application you are building. For this example, we assume your application looks up the next image query to process from a database via db.get_next_image_query_id() and that this function returns None once all ImageQuerys are processed. from groundlight import Groundlight detector = gl.get_or_create_detector(name=\"your_detector_name\", query=\"your_query\") image_query_id = db.get_next_image_query_id() while image_query_id is not None: image_query = gl.get_image_query(id=image_query_id) # retrieve the image query from Groundlight result = image_query.result # take action based on the result of the image query if result.label == 'YES': pass # TODO: do something based on your application elif result.label == 'NO': pass # TODO: do something based on your application elif result.label == 'UNCLEAR': pass # TODO: do something based on your application # update image_query_id for next iteration of the loop image_query_id = db.get_next_image_query_id()","s":"Setup Retrieving Machine","u":"/python-sdk/docs/building-applications/async-queries","h":"#setup-retrieving-machine","p":8},{"i":15,"t":"When you submit an image query asynchronously, ML prediction on your query is not instant. So attempting to retrieve the result immediately after submitting an async query will likely result in an UNCLEAR result as Groundlight is still processing your query. Instead, if your code needs a result synchronously we recommend using one of our methods with a polling mechanism to retrieve the result. You can see all of the interfaces available in the documentation here. from groundlight import Groundlight from PIL import Image detector = gl.get_or_create_detector(name=\"your_detector_name\", query=\"your_query\") image = Image.open(\"/path/to/your/image.jpg\") image_query = gl.ask_async(detector=detector, image=image) # Submit async query to Groundlight result = image_query.result # This will always be 'None' as you asked asynchronously image_query = gl.get_image_query(id=image_query.id) # Immediately retrieve the image query from Groundlight result = image_query.result # This will likely be 'UNCLEAR' as Groundlight is still processing your query image_query = gl.wait_for_confident_result(id=image_query.id) # Poll for a confident result from Groundlight result = image_query.result","s":"Important Considerations","u":"/python-sdk/docs/building-applications/async-queries","h":"#important-considerations","p":8},{"i":17,"t":"If your account has access to edge models, you can download and install them to your edge devices. This allows you to run your model evaluations on the edge, reducing latency, cost, network bandwidth, and energy.","s":"Using Groundlight on the Edge","u":"/python-sdk/docs/building-applications/edge","h":"","p":16},{"i":19,"t":"The Edge Endpoint runs as a set of docker containers on an \"edge device\". This edge device can be an NVIDIA Jetson device, rack-mounted server, or even a Raspberry Pi. The Edge Endpoint is responsible for downloading and running the models, and for communicating with the Groundlight cloud service. To use the edge endpoint, simply configure the Groundlight SDK to use the edge endpoint's URL instead of the cloud endpoint. All application logic will work seamlessly and unchanged with the Groundlight Edge Endpoint, except some ML answers will return much faster locally. The only visible difference is that image queries answered at the edge endpoint will have the prefix iqe_ instead of iq_ for image queries answered in the cloud. iqe_ stands for \"image query edge\". Edge-originated image queries will not appear in the cloud dashboard.","s":"How the Edge Endpoint works","u":"/python-sdk/docs/building-applications/edge","h":"#how-the-edge-endpoint-works","p":16},{"i":21,"t":"To configure the Groundlight SDK to use the edge endpoint, you can either pass the endpoint URL to the Groundlight constructor like: from groundlight import Groundlight gl = Groundlight(endpoint=\"http://localhost:6717\") or by setting the GROUNDLIGHT_ENDPOINT environment variable like: export GROUNDLIGHT_ENDPOINT=http://localhost:6717 python your_app.py","s":"Configuring the Edge Endpoint","u":"/python-sdk/docs/building-applications/edge","h":"#configuring-the-edge-endpoint","p":16},{"i":23,"t":"Modern natural language-based computer vision is transforming industrial and manufacturing applications by enabling more intuitive interaction with automation systems. Groundlight offers cutting-edge computer vision technology that can be seamlessly integrated into various industrial processes, enhancing efficiency, productivity, and quality control.","s":"Industrial and Manufacturing Applications","u":"/python-sdk/docs/building-applications/industrial","h":"","p":22},{"i":25,"t":"Groundlight's computer vision technology can assist in automating machine-tending tasks, such as loading and unloading materials in CNC machines, milling centers, or injection molding equipment. By enabling robots to recognize parts and tools using natural language, complex machine-tending tasks become more accessible and efficient.","s":"Machine Tending","u":"/python-sdk/docs/building-applications/industrial","h":"#machine-tending","p":22},{"i":27,"t":"Integrating Groundlight's computer vision into your process automation systems can help identify bottlenecks, optimize workflows, and reduce manual intervention. Our technology can work hand-in-hand with robotic systems to perform tasks like sorting, assembly, all while interpreting natural language commands to streamline operations.","s":"Process Automation","u":"/python-sdk/docs/building-applications/industrial","h":"#process-automation","p":22},{"i":29,"t":"Groundlight's computer vision technology can play a vital role in ensuring the highest quality standards in your manufacturing processes. By identifying defects or irregularities in products, our computer vision system can help maintain strict quality control, reducing the need for manual inspections and increasing overall product quality.","s":"Quality Control","u":"/python-sdk/docs/building-applications/industrial","h":"#quality-control","p":22},{"i":31,"t":"Groundlight's computer vision technology can be easily integrated with popular cobot robotic arms, such as Universal Robots, to enhance their capabilities and improve collaboration between humans and robots. Additionally, our technology can be integrated into existing CNC machines or other devices using the Modbus interface, allowing for seamless communication and control within your manufacturing environment.","s":"Integration with Cobots and CNC Machines","u":"/python-sdk/docs/building-applications/industrial","h":"#integration-with-cobots-and-cnc-machines","p":22},{"i":33,"t":"To learn more about how Groundlight's natural language computer vision technology can revolutionize your industrial and manufacturing processes, please reach out to us at info@groundlight.ai.","s":"Contact Sales","u":"/python-sdk/docs/building-applications/industrial","h":"","p":22},{"i":35,"t":"Groundlight's SDK accepts images in many popular formats, including PIL, OpenCV, and numpy arrays.","s":"Grabbing Images","u":"/python-sdk/docs/building-applications/grabbing-images","h":"","p":34},{"i":37,"t":"The Groundlight SDK can accept PIL images directly in submit_image_query. Here's an example: from groundlight import Groundlight from PIL import Image gl = Groundlight() det = gl.get_or_create_detector(name=\"path-clear\", query=\"Is the path clear?\") pil_img = Image.open(\"./docs/static/img/doorway.jpg\") gl.submit_image_query(det, pil_img)","s":"PIL","u":"/python-sdk/docs/building-applications/grabbing-images","h":"#pil","p":34},{"i":39,"t":"OpenCV is a popular image processing library, with many utilities for working with images. OpenCV images are stored as numpy arrays. (Note they are stored in BGR order, not RGB order, but as of Groundlight SDK v0.8 this is the expected order.) OpenCV's images can be send directly to submit_image_query as follows: import cv2 cam = cv2.VideoCapture(0) # Initialize camera (0 is the default index) _, frame = cam.read() # Capture one frame gl.submit_image_query(detector, frame) # Send the frame to Groundlight cam.release() # Release the camera","s":"OpenCV","u":"/python-sdk/docs/building-applications/grabbing-images","h":"#opencv","p":34},{"i":41,"t":"The Groundlight SDK can accept images as numpy arrays. They should be in the standard HWN format in BGR color order, matching OpenCV standards. Pixel values should be from 0-255 (not 0.0-1.0 as floats). So uint8 data type is preferable since it saves memory. Here's sample code to create an 800x600 random image in numpy: import numpy as np np_img = np.random.uniform(low=0, high=255, size=(600, 800, 3)).astype(np.uint8) # Note: channel order is interpretted as BGR not RGB gl.submit_image_query(detector, np_img)","s":"Numpy","u":"/python-sdk/docs/building-applications/grabbing-images","h":"#numpy","p":34},{"i":43,"t":"Groundlight expects images in BGR order, because this is standard for OpenCV, which uses numpy arrays as image storage. (OpenCV uses BGR because it was originally developed decades ago for compatibility with the BGR color format used by many cameras and image processing hardware at the time of its creation.) Most other image libraries use RGB order, so if you are using images as numpy arrays which did not originate from OpenCV you likely need to reverse the channel order before sending the images to Groundlight. Note this change was made in v0.8 of the Groundlight SDK - in previous versions, RGB order was expected. If you have an RGB array, you must reverse the channel order before sending it to Groundlight, like: # Convert numpy image in RGB channel order to BGR order bgr_img = rgb_img[:, :, ::-1] The difference can be surprisingly subtle when red and blue get swapped. Often images just look a little off, but sometimes they look very wrong. Here's an example of a natural-scene image where you might think the color balance is just off: In industrial settings, the difference can be almost impossible to detect without prior knowledge of the scene:","s":"Channel order: BGR vs RGB","u":"/python-sdk/docs/building-applications/grabbing-images","h":"#channel-order-bgr-vs-rgb","p":34},{"i":45,"t":"For a unified interface to many different kinds of image sources, see the framegrab library. Framegrab is still an early work in progress, but has many useful features for working with cameras and other image sources. Framegrab provides a single interface for many different kinds of image sources, including: USB cameras IP cameras Video files Image files","s":"Framegrab","u":"/python-sdk/docs/building-applications/grabbing-images","h":"#framegrab","p":34},{"i":47,"t":"Explore these GitHub repositories to see examples of Groundlight-powered applications:","s":"Sample Applications","u":"/python-sdk/docs/building-applications/sample-applications","h":"","p":46},{"i":49,"t":"Repository: https://github.com/groundlight/stream The Groundlight Stream Processor is an easy-to-use Docker container for analyzing RTSP streams or common USB-based cameras. You can run it with a single Docker command, such as: docker run stream:local --help","s":"Groundlight Stream Processor","u":"/python-sdk/docs/building-applications/sample-applications","h":"#groundlight-stream-processor","p":46},{"i":51,"t":"Repository: https://github.com/groundlight/esp32cam This sample application allows you to build a working AI vision detector using an inexpensive WiFi camera. With a cost of under $10, you can create a powerful and affordable AI vision system.","s":"Arduino ESP32 Camera Sample App","u":"/python-sdk/docs/building-applications/sample-applications","h":"#arduino-esp32-camera-sample-app","p":46},{"i":53,"t":"Repository: https://github.com/groundlight/raspberry-pi-door-lock This sample application demonstrates how to set up a Raspberry Pi-based door lock system. The application monitors a door and sends a notification if the door is observed to be unlocked during non-standard business hours.","s":"Raspberry Pi","u":"/python-sdk/docs/building-applications/sample-applications","h":"#raspberry-pi","p":46},{"i":55,"t":"Groundlight can be used to apply modern natural-language-based computer vision to industrial and manufacturing applications.","s":"Industrial and Manufacturing Applications","u":"/python-sdk/docs/building-applications/sample-applications","h":"#industrial-and-manufacturing-applications","p":46},{"i":58,"t":"Build a working computer vision system in just a few lines of python: from groundlight import Groundlight gl = Groundlight() det = gl.get_or_create_detector(name=\"doorway\", query=\"Is the doorway open?\") img = \"./docs/static/img/doorway.jpg\" # Image can be a file or a Python object image_query = gl.submit_image_query(detector=det, image=img) print(f\"The answer is {image_query.result}\") Note: The SDK is currently in \"beta\" phase. Interfaces are subject to change in future versions. We will follow semver semantics for breaking changes.","s":"Computer Vision powered by Natural Language","u":"/python-sdk/docs/getting-started","h":"#computer-vision-powered-by-natural-language","p":56},{"i":60,"t":"Your images are first analyzed by machine learning (ML) models which are automatically trained on your data. If those models have high enough confidence, that's your answer. But if the models are unsure, then the images are progressively escalated to more resource-intensive analysis methods up to real-time human review. So what you get is a computer vision system that starts working right away without even needing to first gather and label a dataset. At first it will operate with high latency, because people need to review the image queries. But over time, the ML systems will learn and improve so queries come back faster with higher confidence.","s":"How does it work?","u":"/python-sdk/docs/getting-started","h":"#how-does-it-work","p":56},{"i":62,"t":"Groundlight's Escalation Technology combines the power of generative AI using our Visual LLM, along with the speed of edge computing, and the reliability of real-time human oversight.","s":"Escalation Technology","u":"/python-sdk/docs/getting-started","h":"#escalation-technology","p":56},{"i":64,"t":"Install the groundlight SDK. Requires python version 3.7 or higher. See prerequisites. pip3 install groundlight Head over to the groundlight web app to create an API token. You will need to set the GROUNDLIGHT_API_TOKEN environment variable to access the API. export GROUNDLIGHT_API_TOKEN=api_2GdXMflhJi6L_example Create a python script. ask.py from groundlight import Groundlight gl = Groundlight() det = gl.get_or_create_detector(name=\"doorway\", query=\"Is the doorway open?\") img = \"./docs/static/img/doorway.jpg\" # Image can be a file or a Python object image_query = gl.submit_image_query(detector=det, image=img) print(f\"The answer is {image_query.result}\") Run it! python ask.py","s":"Building a simple visual application","u":"/python-sdk/docs/getting-started","h":"#building-a-simple-visual-application","p":56},{"i":66,"t":"Groundlight gives you a simple way to control the trade-off of latency against accuracy. The longer you can wait for an answer to your image query, the better accuracy you can get. In particular, if the ML models are unsure of the best response, they will escalate the image query to more intensive analysis with more complex models and real-time human monitors as needed. Your code can easily wait for this delayed response. Either way, these new results are automatically trained into your models so your next queries will get better results faster. The desired confidence level is set as the escalation threshold on your detector. This determines the minimum confidence score for the ML system to provide before the image query is escalated. For example, say you want to set your desired confidence level to 0.95, but that you're willing to wait up to 60 seconds to get a confident response. from groundlight import Groundlight from PIL import Image import requests gl = Groundlight() image_url = \"https://www.photos-public-domain.com/wp-content/uploads/2010/11/over_flowing_garbage_can.jpg\" image = Image.open(requests.get(image_url, stream=True).raw) d = gl.get_or_create_detector(name=\"trash\", query=\"Is the trash can full?\", confidence_threshold=0.95) # This will wait until either 60 seconds have passed or the confidence reaches 0.95 image_query = gl.submit_image_query(detector=d, image=image, wait=60) print(f\"The answer is {image_query.result}\") tip Tuning confidence lets you balance accuracy against latency. Higher confidence will get higher accuracy, but will generally require higher latency. Higher confidence also requires more labels, which increases labor costs. Or if you want to execute submit_image_query as fast as possible, set wait=0. You will either get the ML results or a placeholder response if the ML model hasn't finished executing. Image queries which are below the desired confidence level will still be escalated for further analysis, and the results are incorporated as training data to improve your ML model, but your code will not wait for that to happen. image_query = gl.submit_image_query(detector=d, image=image, wait=0) If the returned result was generated from an ML model, you can see the confidence score returned for the image query: print(f\"The confidence is {image_query.result.confidence}\")","s":"Confidence Levels","u":"/python-sdk/docs/building-applications/managing-confidence","h":"","p":65},{"i":69,"t":"Typically you'll use the get_or_create_detector(name: str, query: str) method to find an existing detector you've already created with the same name, or create a new one if it doesn't exists. But if you'd like to force creating a new detector you can also use the create_detector(name: str, query: str) method from groundlight import Groundlight gl = Groundlight() detector = gl.create_detector(name=\"your_detector_name\", query=\"is this what we want to see?\")","s":"Explicitly create a new detector","u":"/python-sdk/docs/building-applications/working-with-detectors","h":"#explicitly-create-a-new-detector","p":67},{"i":71,"t":"from groundlight import Groundlight gl = Groundlight() detector = gl.get_detector(id=\"YOUR_DETECTOR_ID\")","s":"Retrieve an existing detector","u":"/python-sdk/docs/building-applications/working-with-detectors","h":"#retrieve-an-existing-detector","p":67},{"i":73,"t":"from groundlight import Groundlight gl = Groundlight() # Defaults to 10 results per page detectors = gl.list_detectors() # Pagination: 1st page of 5 results per page detectors = gl.list_detectors(page=1, page_size=5)","s":"List your detectors","u":"/python-sdk/docs/building-applications/working-with-detectors","h":"#list-your-detectors","p":67},{"i":75,"t":"In practice, you may want to check for a new result on your query. For example, after a cloud reviewer labels your query. For example, you can use the image_query.id after the above submit_image_query() call. from groundlight import Groundlight gl = Groundlight() image_query = gl.get_image_query(id=\"iq_YOUR_IMAGE_QUERY_ID\")","s":"Retrieve an image query","u":"/python-sdk/docs/building-applications/working-with-detectors","h":"#retrieve-an-image-query","p":67},{"i":77,"t":"from groundlight import Groundlight gl = Groundlight() # Defaults to 10 results per page image_queries = gl.list_image_queries() # Pagination: 1st page of 5 results per page image_queries = gl.list_image_queries(page=1, page_size=5)","s":"List your previous image queries","u":"/python-sdk/docs/building-applications/working-with-detectors","h":"#list-your-previous-image-queries","p":67},{"i":79,"t":"Groundlight lets you start using models by making queries against your very first image, but there are a few situations where you might either have an existing dataset, or you'd like to handle the escalation response programatically in your own code but still include the label to get better responses in the future. With your image_query from either submit_image_query() or get_image_query() you can add the label directly. Note that if the query is already in the escalation queue due to low ML confidence or audit thresholds, it may also receive labels from another source. from groundlight import Groundlight from PIL import Image import requests gl = Groundlight() d = gl.get_or_create_detector(name=\"doorway\", query=\"Is the doorway open?\") image_url= \"https://images.selfstorage.com/large-compress/2174925f24362c479b2.jpg\" image = Image.open(requests.get(image_url, stream=True).raw) image_query = gl.submit_image_query(detector=d, image=image) gl.add_label(image_query, 'YES') # or 'NO' The only valid labels at this time are 'YES' and 'NO'.","s":"Adding labels to existing image queries","u":"/python-sdk/docs/building-applications/working-with-detectors","h":"#adding-labels-to-existing-image-queries","p":67},{"i":81,"t":"When building applications with the Groundlight SDK, you may encounter server errors during API calls. This page covers how to handle such errors and build robust code that can gracefully handle exceptions.","s":"Handling Server Errors","u":"/python-sdk/docs/building-applications/handling-errors","h":"","p":80},{"i":83,"t":"If there is an HTTP error during an API call, the SDK will raise an ApiException. You can access different metadata from that exception: import traceback from groundlight import ApiException, Groundlight gl = Groundlight() try: d = gl.get_or_create_detector( \"Road Checker\", \"Is the site access road blocked?\") iq = gl.submit_image_query(d, get_image(), wait=60) except ApiException as e: # Print a traceback for debugging traceback.print_exc() # e.reason contains a textual description of the error print(f\"Error reason: {e.reason}\") # e.status contains the HTTP status code print(f\"HTTP status code: {e.status}\") # Common HTTP status codes: # 400 Bad Request: The request was invalid or malformed # 401 Unauthorized: Your GROUNDLIGHT_API_TOKEN is missing or invalid # 403 Forbidden: The request is not allowed due to insufficient permissions # 404 Not Found: The requested resource was not found # 429 Too Many Requests: The rate limit for the API has been exceeded # 500 Internal Server Error: An error occurred on the server side","s":"Handling ApiException","u":"/python-sdk/docs/building-applications/handling-errors","h":"#handling-apiexception","p":80},{"i":85,"t":"When working with the Groundlight SDK, follow these best practices to handle exceptions and build robust code:","s":"Best Practices for Handling Exceptions","u":"/python-sdk/docs/building-applications/handling-errors","h":"#best-practices-for-handling-exceptions","p":80},{"i":87,"t":"Catch only the specific exceptions that you expect to be raised, such as ApiException. Avoid catching broad exceptions like Exception, as it may make debugging difficult and obscure other unrelated issues.","s":"Catch Specific Exceptions","u":"/python-sdk/docs/building-applications/handling-errors","h":"#catch-specific-exceptions","p":80},{"i":89,"t":"Consider creating custom exception classes for your application-specific errors. This can help you differentiate between errors originating from the Groundlight SDK and those from your application.","s":"Use Custom Exception Classes","u":"/python-sdk/docs/building-applications/handling-errors","h":"#use-custom-exception-classes","p":80},{"i":91,"t":"Log exceptions with appropriate log levels (e.g., error, warning, etc.) and include relevant context information. This will help you debug issues more effectively and monitor the health of your application.","s":"Log Exceptions","u":"/python-sdk/docs/building-applications/handling-errors","h":"#log-exceptions","p":80},{"i":93,"t":"When handling exceptions, implement retry logic with exponential backoff for transient errors, such as network issues or rate-limiting. This can help your application recover from temporary issues without manual intervention.","s":"Implement Retry Logic","u":"/python-sdk/docs/building-applications/handling-errors","h":"#implement-retry-logic","p":80},{"i":95,"t":"In addition to logging exceptions, handle them gracefully to ensure that your application remains functional despite errors. This might include displaying an error message to users or falling back to a default behavior.","s":"Handle Exceptions Gracefully","u":"/python-sdk/docs/building-applications/handling-errors","h":"#handle-exceptions-gracefully","p":80},{"i":97,"t":"Write tests to ensure that your error handling works as expected. This can help you catch issues early and ensure that your application can handle errors gracefully in production. By following these best practices, you can create robust and resilient applications that can handle server errors and other exceptions when using the Groundlight SDK.","s":"Test Your Error Handling","u":"/python-sdk/docs/building-applications/handling-errors","h":"#test-your-error-handling","p":80},{"i":100,"t":"To use the Groundlight SDK or API, you need a security token which we call an \"API Token.\" These authenticate you to Groundlight and authorize your code to use services in your account. API tokens look like api_2GdXMflhJ... and consist of a ksuid (a kind of sortable UUID) followed by a secret string.","s":"About API Tokens","u":"/python-sdk/docs/getting-started/api-tokens","h":"#about-api-tokens","p":98},{"i":102,"t":"You should treat API tokens like passwords. Never check them directly into your code or share them. Please use best security practices with your API tokens, because if anybody gets your API token, they have nearly full control over your Groundlight account. Here are some best practices for handling API tokens: Store API tokens in a secure location, such as an encrypted vault. Use environment variables to store API tokens, rather than hardcoding them in your application. Limit the number of people who have access to API tokens. Rotate API tokens regularly and revoke old ones when they are no longer needed.","s":"Handling API Tokens","u":"/python-sdk/docs/getting-started/api-tokens","h":"#handling-api-tokens","p":98},{"i":104,"t":"There are a couple of ways the SDK can find your API token: Environment variable (recommended): As a best practice, we recommend storing API tokens in the environment variable GROUNDLIGHT_API_TOKEN. This helps avoid accidentally committing the token to your code repository. The SDK will automatically look for the API token there, so you don't have to put it in your code at all. from groundlight import Groundlight # looks for API token in environment variable GROUNDLIGHT_API_TOKEN gl = Groundlight() Constructor argument: Alternatively, you can pass the API token directly to the Groundlight constructor. However, be cautious not to commit this code to your repository. from groundlight import Groundlight token = get_token_from_secure_location() gl = Groundlight(api_token=token)","s":"Using API Tokens with the SDK","u":"/python-sdk/docs/getting-started/api-tokens","h":"#using-api-tokens-with-the-sdk","p":98},{"i":106,"t":"You can manage your API tokens from the Groundlight website at https://app.groundlight.ai/reef/my-account/api-tokens.","s":"Creating and Revoking API Tokens","u":"/python-sdk/docs/getting-started/api-tokens","h":"#creating-and-revoking-api-tokens","p":98},{"i":108,"t":"Log in to your Groundlight account and navigate to the API tokens page. Click the \"Create New API Token\" button. Give the new token a descriptive name, so you can easily identify it later. Click \"Create Token.\" Copy the generated token and store it securely, as you won't be able to see it again. Groundlight does not store a copy of your API tokens.","s":"Creating API Tokens","u":"/python-sdk/docs/getting-started/api-tokens","h":"#creating-api-tokens","p":98},{"i":110,"t":"On the API tokens page, you can see a list of your current tokens, along with the following information: Token Name: The descriptive name you assigned when creating the token Snippet (prefix): A short, unique identifier for each token Last used: The date and time the token was last used","s":"Viewing and Revoking API Tokens","u":"/python-sdk/docs/getting-started/api-tokens","h":"#viewing-and-revoking-api-tokens","p":98},{"i":112,"t":"Locate the token you want to revoke in the list. Click the \"Delete\" button next to the token. Confirm that you want to revoke the token. Note: Revoking an API token will immediately invalidate it and prevent any applications using it from accessing your Groundlight account. Be sure to update your applications with a new token before revoking an old one.","s":"To revoke an API token","u":"/python-sdk/docs/getting-started/api-tokens","h":"#to-revoke-an-api-token","p":98},{"i":114,"t":"A quick example to get used to setting up detectors and asking good questions: set up a monitor on a live stream.","s":"A Quick Example: Live Stream Alert","u":"/python-sdk/docs/getting-started/streaming","h":"","p":113},{"i":116,"t":"Groundlight SDK with Python 3.7 or higher The video ID of a YouTube live stream you'd like to monitor","s":"Requirements","u":"/python-sdk/docs/getting-started/streaming","h":"#requirements","p":113},{"i":118,"t":"Ensure you have Python 3.7 or higher installed, and then install the Groundlight SDK and OpenCV library: pip install groundlight pillow ffmpeg yt-dlp typer","s":"Installation","u":"/python-sdk/docs/getting-started/streaming","h":"#installation","p":113},{"i":120,"t":"Save this command as a shell script get_latest_frame.sh: #!/bin/bash ffmpeg -i \"$(yt-dlp -g $1 | head -n 1)\" -vframes 1 last.jpg -y This will download the most recent frame from a YouTube live stream and save it to a local file last.jpg. Log in to the Groundlight application and get an API Token. Next, we'll write the Python script for the application. import os import subprocess import typer from groundlight import Groundlight from PIL import Image def main(*, video_id: str = None, detector_name: str = None, query: str = None, confidence: float = 0.75, wait: int = 60): \"\"\" Run the script to get the stream's last frame as a subprocess, and submit result as an image query to a Groundlight detector :param video_id: Video ID of the YouTube live stream (the URLs have the form https://www.youtube.com/watch?v=) :param detector_name: Name for your Groundlight detector :param query: Question you want to ask of the stream (we will alert on the answer of NO) \"\"\" gl = Groundlight() detector = gl.create_detector(name=detector_name, query=query, confidence_threshold=confidence) while True: p = subprocess.run([\"./get_latest_frame.sh\", video_id]) if p.returncode != 0: raise RuntimeError(f\"Could not get image from video ID: {video_id}. Process exited with return code {p.returncode}.\") image = Image.open(\"last.jpg\").convert(\"RGB\") response = gl.submit_image_query(detector=detector, image=image, wait=wait) if response.result.label == \"NO\": os.system(\"say 'Alert!'\") # this may not work on all operating systems if __name__ == \"__main__\": typer.run(main) Save the script as streaming_alert.py in the same directory as get_latest_frame.sh above and run it: python streaming_alert.py --detector_name --query ","s":"Creating the Application","u":"/python-sdk/docs/getting-started/streaming","h":"#creating-the-application","p":113},{"i":123,"t":"This example demonstrates the application of Groundlight to a retail analytics solution, which monitors the usage of a service counter by customers throughout the day. The application creates a detector to identify when the service desk is being utilized by a customer. It checks the detector every minute, and once an hour, it prints out a summary of the percentage of time that the service counter is in use. At the end of the day, it emails the daily log. This retail analytics application can be beneficial in various ways: Staff allocation and scheduling: By analyzing the usage patterns of the service counter, store managers can optimize staff allocation and scheduling, ensuring that enough employees are available during peak hours and reducing wait times for customers. Identifying trends: The application can help identify trends in customer behavior, such as busier times of the day or specific days of the week with higher traffic. This information can be used to plan targeted marketing campaigns or promotions to increase sales and customer engagement. Improving store layout: Understanding when and how often customers use the service counter can provide insights into the effectiveness of the store's layout. Retailers can use this information to make data-driven decisions about rearranging the store layout to encourage customers to visit the service counter or explore other areas of the store. Customer satisfaction: By monitoring the usage of the service counter and proactively addressing long wait times or crowded areas, retailers can improve customer satisfaction and loyalty. A positive customer experience can lead to increased sales and return visits. To implement this retail analytics solution, a store would need to install a supported camera near the service counter, ensuring a clear view of the area. The camera would then be connected to a computer running the Groundlight-based application. Store managers would receive hourly summaries of the service counter usage and a daily log via email, enabling them to make informed decisions to improve store operations and customer experience.","s":"Tracking utilization of a customer service counter","u":"/python-sdk/docs/getting-started/retail-analytics","h":"#tracking-utilization-of-a-customer-service-counter","p":121},{"i":125,"t":"Groundlight SDK with Python 3.7 or higher A supported USB or network-connected camera An email account with SMTP access to send the daily log","s":"Requirements","u":"/python-sdk/docs/getting-started/retail-analytics","h":"#requirements","p":121},{"i":127,"t":"Ensure you have Python 3.7 or higher installed, and then install the Groundlight SDK, OpenCV library, and other required libraries: pip install groundlight opencv-python pillow","s":"Installation","u":"/python-sdk/docs/getting-started/retail-analytics","h":"#installation","p":121},{"i":129,"t":"First, log in to the Groundlight application and get an API Token. Next, we'll write the Python script for the application. Import the required libraries: import time import cv2 import smtplib from groundlight import Groundlight from PIL import Image from datetime import datetime, timedelta from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText Define a function to capture an image from the camera using OpenCV: def capture_image(): cap = cv2.VideoCapture(0) ret, frame = cap.read() cap.release() if ret: # Convert to PIL image return Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)) else: return None Define a function to send the daily log via email. You will need to customize this for your particular network environment. def send_email(sender, receiver, subject, body): msg = MIMEMultipart() msg['From'] = sender msg['To'] = receiver msg['Subject'] = subject msg.attach(MIMEText(body, 'plain')) server = smtplib.SMTP('smtp.example.com', 587) server.starttls() server.login(sender, \"your-password\") text = msg.as_string() server.sendmail(sender, receiver, text) server.quit() Define when your business's operating hours are: START_OF_BUSINESS = 9 # e.g. 9am END_OF_BUSINESS = 17 # e.g. 5pm def is_within_business_hours(): current_hour = datetime.now().hour return START_OF_BUSINESS <= current_hour < END_OF_BUSINESS Write the main application loop: gl = Groundlight() detector = gl.get_or_create_detector( name=\"counter-in-use\", query=\"Is there a customer at the service counter?\", # We can get away with relatively low confidence since we're aggregating confidence_threshold=0.8) DELAY = 60 log = [] daily_log = [] next_hourly_start = datetime.now().replace(minute=0, second=0, microsecond=0) + timedelta(hours=1) while True: if not is_within_business_hours(): time.sleep(DELAY) continue image = capture_image() if not image: print(\"Failed to capture image\") time.sleep(DELAY) continue try: iq = gl.submit_image_query(image=image, detector=detector, wait=60) except Exception as e: print(f\"Error submitting image query: {e}\") time.sleep(DELAY) continue answer = iq.result.label log.append(answer) if datetime.now() >= next_hourly_start: next_hourly_start += timedelta(hours=1) percent_in_use = (log.count(\"YES\") / len(log)) * 100 current_time = datetime.now().replace(hour=START_OF_BUSINESS, minute=0, second=0) formatted_time = current_time.strftime(\"%I%p\") # like 3pm msg = f\"Hourly summary for {formatted_time}: {percent_in_use:.0f}% counter in use\" print(msg) daily_log.append(msg) log = [] current_hour = datetime.now().hour if current_hour == END_OF_BUSINESS and not daily_log == []: daily_summary = \"Daily summary:\\n\" for msg in daily_log: daily_summary += f\"{msg}\\n\" print(daily_summary) send_email(sender=\"counterbot@example.com\", receiver=\"manager@example.com\", subject=\"Daily Service Counter Usage Log\", body=daily_summary) daily_log = [] time.sleep(DELAY) This application captures an image using the capture_image function, then submits it to the Groundlight API for analysis. If a customer is detected at the counter, it logs the event. Every hour, it prints a summary of the counter's usage percentage, and at the end of the day, it emails the daily log using the send_email function. Save the script as service_counter_monitor.py and run it: python service_counter_monitor.py","s":"Creating the Application","u":"/python-sdk/docs/getting-started/retail-analytics","h":"#creating-the-application","p":121},{"i":131,"t":"Here is a whimsical example of how you could use Groundlight in your home to keep your dog off the couch. This document will guide you through creating a complete application. If the dog is detected on the couch, the application will play a pre-recorded sound over the computer's speakers, instructing the dog to get off the couch. Be sure to record your own voice so that your dog pays attention to you.","s":"A Fun Example: Dog-on-Couch Detector","u":"/python-sdk/docs/getting-started/dog-on-couch","h":"","p":130},{"i":133,"t":"Groundlight SDK with Python 3.7 or higher A supported USB or network-connected camera A pre-recorded sound file (e.g., get_off_couch.mp3) A couch and a dog are recommended for proper end-to-end testing.","s":"Requirements","u":"/python-sdk/docs/getting-started/dog-on-couch","h":"#requirements","p":130},{"i":135,"t":"Ensure you have Python 3.7 or higher installed, and then install the Groundlight SDK and OpenCV library: pip install groundlight opencv-python pillow pyaudio","s":"Installation","u":"/python-sdk/docs/getting-started/dog-on-couch","h":"#installation","p":130},{"i":137,"t":"First, log in to the Groundlight application and get an API Token. Next, we'll write the Python script for the application. Import the required libraries: import time import cv2 from groundlight import Groundlight from PIL import Image import pyaudio import wave Define a function to capture an image from the camera using OpenCV: def capture_image(): cap = cv2.VideoCapture(0) ret, frame = cap.read() cap.release() if ret: # Convert to PIL image return Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)) else: return None Define a function to play the pre-recorded sound: def play_sound(file_path): CHUNK = 1024 wf = wave.open(file_path, 'rb') p = pyaudio.PyAudio() stream = p.open(format=p.get_format_from_width(wf.getsampwidth()), channels=wf.getnchannels(), rate=wf.getframerate(), output=True) data = wf.readframes(CHUNK) while data: stream.write(data) data = wf.readframes(CHUNK) stream.stop_stream() stream.close() p.terminate() Write the main application loop: gl = Groundlight() detector = gl.get_detector(\"Dog on Couch Detector\") while True: image = capture_image() if image: try: iq = gl.submit_image_query(image=image, detector=detector, wait=60) answer = iq.result.label if answer == \"YES\": print(\"Dog detected on the couch!\") play_sound(\"get_off_couch.mp3\") except Exception as e: print(f\"Error submitting image query: {e}\") else: print(\"Failed to capture image\") # Sleep for a minute before checking again time.sleep(60) This application captures an image using the capture_image function, then submits it to the Groundlight API for analysis. If the dog is detected on the couch, it plays the pre-recorded sound using the play_sound function. Save the script as dog_on_couch_detector.py and run it: python dog_on_couch_detector.py","s":"Creating the Application","u":"/python-sdk/docs/getting-started/dog-on-couch","h":"#creating-the-application","p":130},{"i":140,"t":"With Groundlight's detectors, you can ask binary questions about images — i.e., the answer should be unambiguously \"YES\" or \"NO\". If you ask an ambiguous question, you may receive an \"UNSURE\" response. detector = gl.get_or_create_detector( name=\"Conveyor belt boxes\", query=\"Are there any cardboard boxes on the conveyor belt?\" ) image_query = gl.submit_image_query(detector=detector, image=some_image) # The SDK can return \"YES\" or \"NO\" (or \"UNSURE\") print(f\"The answer is {image_query.result.label}\") So, what makes a good question? Let's look at a few good ✅, moderate 🟡, and bad ❌ examples!","s":"Introduction","u":"/python-sdk/docs/getting-started/writing-queries","h":"#introduction","p":138},{"i":143,"t":"This question is binary and can be answered unambiguously with a simple \"YES\" or \"NO\" based on the image content.","s":"✅ Are there any cardboard boxes on the conveyor belt?","u":"/python-sdk/docs/getting-started/writing-queries","h":"#-are-there-any-cardboard-boxes-on-the-conveyor-belt","p":138},{"i":145,"t":"This question is okay, but it could be rephrased to be more specific. For example, \"Is the black trash can more than 80% full?\" tip With Groundlight, your questions may be routed to a machine learning model or a human reviewer. One way to improve your questions is to think, \"If I saw this question for the first time, would I know precisely what the person was trying to convey?\"","s":"🟡 Is the trash can full?","u":"/python-sdk/docs/getting-started/writing-queries","h":"#-is-the-trash-can-full","p":138},{"i":147,"t":"The query is very specific about what \"YES\" means. According to this query, any slight / partial opening would be considered \"NO\".","s":"✅ Is the garage door completely closed?","u":"/python-sdk/docs/getting-started/writing-queries","h":"#-is-the-garage-door-completely-closed","p":138},{"i":149,"t":"This question is somewhat ambiguous. Different people may have different opinions on what is nice weather. Instead, you might ask \"Can you see any clouds in the sky?\"","s":"🟡 Is the weather nice out?","u":"/python-sdk/docs/getting-started/writing-queries","h":"#-is-the-weather-nice-out","p":138},{"i":151,"t":"This is not a binary question — \"YES\" and \"NO\" don't make sense in this context. Also, it's not clear what the \"thing\" refers to.","s":"❌ Where is the thing?","u":"/python-sdk/docs/getting-started/writing-queries","h":"#-where-is-the-thing","p":138},{"i":153,"t":"While this question is binary, \"cleanliness\" can be somewhat subjective. An improved version could be: \"Are there any visible spills or clutter on the factory floor?\"","s":"🟡 Is the factory floor clean and organized?","u":"/python-sdk/docs/getting-started/writing-queries","h":"#-is-the-factory-floor-clean-and-organized","p":138},{"i":155,"t":"Welcome to the Groundlight SDK installation guide. In this guide, you'll find step-by-step instructions on how to install and set up the Groundlight SDK on various platforms.","s":"Installation","u":"/python-sdk/docs/installation","h":"","p":154},{"i":157,"t":"Choose your platform from the list below and follow the instructions in the corresponding guide: Linux macOS Windows Raspberry Pi NVIDIA Jetson Linux with Monitoring Notification Server ESP32 Camera Device After completing the installation process for your platform, you'll be ready to start building visual applications using the Groundlight SDK.","s":"Platform-specific Installation Guides","u":"/python-sdk/docs/installation","h":"#platform-specific-installation-guides","p":154},{"i":159,"t":"This guide will help you install the Groundlight SDK on Linux. The Groundlight SDK requires Python 3.7 or higher.","s":"Installing on Linux","u":"/python-sdk/docs/installation/linux","h":"","p":158},{"i":161,"t":"Ensure that you have the following installed on your system: Python 3.7 or higher pip (Python package installer)","s":"Prerequisites","u":"/python-sdk/docs/installation/linux","h":"#prerequisites","p":158},{"i":163,"t":"Assuming you have Python 3.7 or higher installed on your system, you can proceed with the following steps to install or upgrade the Groundlight SDK:","s":"Basic Installation","u":"/python-sdk/docs/installation/linux","h":"#basic-installation","p":158},{"i":165,"t":"To install the Groundlight SDK using pip, run the following command in your terminal: pip install groundlight If you're also using python2 on your system, you might need to use pip3 instead: pip3 install groundlight The Groundlight SDK is now installed and ready for use.","s":"Installing Groundlight SDK","u":"/python-sdk/docs/installation/linux","h":"#installing-groundlight-sdk","p":158},{"i":167,"t":"To check if the Groundlight SDK is installed and to display its version, you can use the following Python one-liner: python -c \"import groundlight; print(groundlight.__version__)\"","s":"Checking Groundlight SDK Version","u":"/python-sdk/docs/installation/linux","h":"#checking-groundlight-sdk-version","p":158},{"i":169,"t":"If you need to upgrade the Groundlight SDK to the latest version, use the following pip command: pip install --upgrade groundlight Or, if you're using pip3: pip3 install --upgrade groundlight After upgrading, you can use the Python one-liner mentioned in the \"Checking Groundlight SDK Version\" section to verify that the latest version is now installed.","s":"Upgrading Groundlight SDK","u":"/python-sdk/docs/installation/linux","h":"#upgrading-groundlight-sdk","p":158},{"i":171,"t":"To check your installed Python version, open a terminal and run: python --version If you see a version number starting with \"3.7\" or higher (e.g., \"3.7.5\" or \"3.9.0\"), you're good to go. If not, you might need to upgrade Python on your system.","s":"Getting the right Python Version","u":"/python-sdk/docs/installation/linux","h":"#getting-the-right-python-version","p":158},{"i":173,"t":"Use your distribution's package manager to install the latest Python version: For Ubuntu or Debian-based systems: sudo apt update sudo apt install python3 (For Ubuntu 18.04 see note below.) For Fedora-based systems: sudo dnf install python3 For Arch Linux: sudo pacman -S python After upgrading, verify the Python version by running python --version or python3 --version, as described earlier.","s":"Upgrading Python on Linux","u":"/python-sdk/docs/installation/linux","h":"#upgrading-python-on-linux","p":158},{"i":175,"t":"Ubuntu 18.04 still uses python 3.6 by default, which is end-of-life. We generally recommend using python 3.10. If you know how to install py3.10, please go ahead. But the easiest version of python 3 to use with Ubuntu 18.04 is python 3.8, which can be installed as follows without adding any extra repositories: # Prepare Ubuntu to install things sudo apt-get update # Install the basics sudo apt-get install -y python3.8 python3.8-distutils curl # Configure `python3` to run python3.8 by default sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 10 # Download and install pip3.8 curl https://bootstrap.pypa.io/get-pip.py > /tmp/get-pip.py sudo python3.8 /tmp/get-pip.py # Configure `pip3` to run pip3.8 sudo update-alternatives --install /usr/bin/pip3 pip3 $(which pip3.8) 10 # Now we can install Groundlight! pip3 install groundlight","s":"Special note about Ubuntu 18.04","u":"/python-sdk/docs/installation/linux","h":"#special-note-about-ubuntu-1804","p":158},{"i":177,"t":"You're now ready to start using the Groundlight SDK in your projects. For more information on using the SDK, refer to the API Tokens and Building Applications documentation pages.","s":"Ready to go!","u":"/python-sdk/docs/installation/linux","h":"#ready-to-go","p":158},{"i":179,"t":"This is the easiest way to deploy your Groundlight detectors on a linux computer. All configuration is done through a web user interface, and no code development is required.","s":"Monitoring Notification Server","u":"/python-sdk/docs/installation/monitoring-notification-server","h":"","p":178},{"i":181,"t":"Internet connected linux computer Video source (USB camera or RTSP stream) Groundlight API Key (available from groundlight.ai)","s":"Prerequisites","u":"/python-sdk/docs/installation/monitoring-notification-server","h":"#prerequisites","p":178},{"i":183,"t":"Install Docker on your computer. See Docker's installation instructions. Create a new file called docker-compose.yml in your project directory. Copy the following into it: services: frontend: image: docker.io/groundlight/monitoring-notification-server-frontend:latest ports: - \"3000:3000\" depends_on: - backend backend: image: docker.io/groundlight/monitoring-notification-server-backend:latest ports: - \"8000:8000\" devices: - /dev/video0:/dev/video0 - /dev/video1:/dev/video1 - /dev/video2:/dev/video2 - /dev/video3:/dev/video3 privileged: true volumes: - /dev/bus/usb:/dev/bus/usb Run the following command in your project directory: docker-compose up If installed locally, open http://localhost:3000 in your browser. If installed on a remote device, replace localhost with the IP address of your device. You should see the following page:","s":"Deployment","u":"/python-sdk/docs/installation/monitoring-notification-server","h":"#deployment","p":178},{"i":185,"t":"This guide will help you install the Groundlight SDK on macOS. The Groundlight SDK requires Python 3.7 or higher.","s":"Installing on macOS","u":"/python-sdk/docs/installation/macos","h":"","p":184},{"i":187,"t":"Ensure that you have the following installed on your system: Python 3.7 or higher pip (Python package installer)","s":"Prerequisites","u":"/python-sdk/docs/installation/macos","h":"#prerequisites","p":184},{"i":189,"t":"Assuming you have Python 3.7 or higher installed on your system, you can proceed with the following steps to install or upgrade the Groundlight SDK:","s":"Basic Installation","u":"/python-sdk/docs/installation/macos","h":"#basic-installation","p":184},{"i":191,"t":"To install the Groundlight SDK using pip, run the following command in your terminal: pip install groundlight If you're also using python2 on your system, you might need to use pip3 instead: pip3 install groundlight The Groundlight SDK is now installed and ready for use.","s":"Installing Groundlight SDK","u":"/python-sdk/docs/installation/macos","h":"#installing-groundlight-sdk","p":184},{"i":193,"t":"To check if the Groundlight SDK is installed and to display its version, you can use the following Python one-liner: python -c \"import groundlight; print(groundlight.__version__)\"","s":"Checking Groundlight SDK Version","u":"/python-sdk/docs/installation/macos","h":"#checking-groundlight-sdk-version","p":184},{"i":195,"t":"If you need to upgrade the Groundlight SDK to the latest version, use the following pip command: pip install --upgrade groundlight Or, if you're using pip3: pip3 install --upgrade groundlight After upgrading, you can use the Python one-liner mentioned in the \"Checking Groundlight SDK Version\" section to verify that the latest version is now installed.","s":"Upgrading Groundlight SDK","u":"/python-sdk/docs/installation/macos","h":"#upgrading-groundlight-sdk","p":184},{"i":197,"t":"To check your installed Python version, open a terminal and run: python --version If you see a version number starting with \"3.7\" or higher (e.g., \"3.7.5\" or \"3.9.0\"), you're good to go. If not, you might need to upgrade Python on your system.","s":"Getting the right Python Version","u":"/python-sdk/docs/installation/macos","h":"#getting-the-right-python-version","p":184},{"i":199,"t":"Download the latest Python installer from the official Python website and run it, or use Homebrew to install Python: brew install python After upgrading, verify the Python version by running python --version or python3 --version, as described earlier.","s":"Upgrading Python on MacOS","u":"/python-sdk/docs/installation/macos","h":"#upgrading-python-on-macos","p":184},{"i":201,"t":"You're now ready to start using the Groundlight SDK in your projects. For more information on using the SDK, refer to the API Tokens and Building Applications documentation pages.","s":"Ready to go!","u":"/python-sdk/docs/installation/macos","h":"#ready-to-go","p":184},{"i":203,"t":"This guide will help you install the Groundlight SDK on Raspberry Pi. The Groundlight SDK requires Python 3.7 or higher.","s":"Installing on Raspberry Pi","u":"/python-sdk/docs/installation/raspberry-pi","h":"","p":202},{"i":205,"t":"Ensure that you have the following installed on your Raspberry Pi: Python 3.7 or higher pip (Python package installer)","s":"Prerequisites","u":"/python-sdk/docs/installation/raspberry-pi","h":"#prerequisites","p":202},{"i":207,"t":"Assuming you have Python 3.7 or higher installed on your Raspberry Pi, you can proceed with the following steps to install or upgrade the Groundlight SDK:","s":"Basic Installation","u":"/python-sdk/docs/installation/raspberry-pi","h":"#basic-installation","p":202},{"i":209,"t":"To install the Groundlight SDK using pip, run the following command in your terminal: pip3 install groundlight An ARM-compatible version will automatically get installed. The Groundlight SDK is now installed and ready for use.","s":"Installing Groundlight SDK","u":"/python-sdk/docs/installation/raspberry-pi","h":"#installing-groundlight-sdk","p":202},{"i":211,"t":"If you have docker installed on your Raspberry Pi, you can even just run docker run groundlight/stream as we publish an ARM version of our streaming application to Docker Hub.","s":"Using RTSP Streams","u":"/python-sdk/docs/installation/raspberry-pi","h":"#using-rtsp-streams","p":202},{"i":213,"t":"For a complete end-to-end example of running on a Raspberry Pi, see this GitHub repo.","s":"Sample application","u":"/python-sdk/docs/installation/raspberry-pi","h":"#sample-application","p":202},{"i":215,"t":"You're now ready to start using the Groundlight SDK in your projects. For more information on using the SDK, refer to the API Tokens and Building Applications documentation pages.","s":"Ready to go!","u":"/python-sdk/docs/installation/raspberry-pi","h":"#ready-to-go","p":202},{"i":217,"t":"This guide will help you install the Groundlight SDK on NVIDIA Jetson devices. The Groundlight SDK requires Python 3.7 or higher.","s":"Installing on NVIDIA Jetson","u":"/python-sdk/docs/installation/nvidia-jetson","h":"","p":216},{"i":219,"t":"Ensure that you have the following installed on your NVIDIA Jetson: Python 3.7 or higher pip (Python package installer)","s":"Prerequisites","u":"/python-sdk/docs/installation/nvidia-jetson","h":"#prerequisites","p":216},{"i":221,"t":"Assuming you have Python 3.7 or higher installed on your NVIDIA Jetson, you can proceed with the following steps to install or upgrade the Groundlight SDK:","s":"Basic Installation","u":"/python-sdk/docs/installation/nvidia-jetson","h":"#basic-installation","p":216},{"i":223,"t":"To install the Groundlight SDK using pip, run the following command in your terminal: pip3 install groundlight An ARM-compatible version will automatically get installed. The Groundlight SDK is now installed and ready for use.","s":"Installing Groundlight SDK","u":"/python-sdk/docs/installation/nvidia-jetson","h":"#installing-groundlight-sdk","p":216},{"i":225,"t":"If you have docker installed on your NVIDIA Jetson, you can even just run docker run groundlight/stream as we publish an ARM version of our streaming application to Docker Hub.","s":"Using RTSP Streams","u":"/python-sdk/docs/installation/nvidia-jetson","h":"#using-rtsp-streams","p":216},{"i":227,"t":"For a complete end-to-end example of running on an NVIDIA Jetson, see this GitHub repo.","s":"Sample application","u":"/python-sdk/docs/installation/nvidia-jetson","h":"#sample-application","p":216},{"i":229,"t":"You're now ready to start using the Groundlight SDK in your projects. For more information on using the SDK, refer to the API Tokens and [Building Applications","s":"Ready to go!","u":"/python-sdk/docs/installation/nvidia-jetson","h":"#ready-to-go","p":216},{"i":231,"t":"This guide will help you install the Groundlight SDK on Windows. The Groundlight SDK requires Python 3.7 or higher.","s":"Installing on Windows","u":"/python-sdk/docs/installation/windows","h":"","p":230},{"i":233,"t":"Ensure that you have the following installed on your system: Python 3.7 or higher pip (Python package installer)","s":"Prerequisites","u":"/python-sdk/docs/installation/windows","h":"#prerequisites","p":230},{"i":235,"t":"Assuming you have Python 3.7 or higher installed on your system, you can proceed with the following steps to install or upgrade the Groundlight SDK:","s":"Basic Installation","u":"/python-sdk/docs/installation/windows","h":"#basic-installation","p":230},{"i":237,"t":"To install the Groundlight SDK using pip, run the following command in your Command Prompt: pip install groundlight If you're also using python2 on your system, you might need to use pip3 instead: pip3 install groundlight The Groundlight SDK is now installed and ready for use.","s":"Installing Groundlight SDK","u":"/python-sdk/docs/installation/windows","h":"#installing-groundlight-sdk","p":230},{"i":239,"t":"To check if the Groundlight SDK is installed and to display its version, you can use the following Python one-liner: python -c \"import groundlight; print(groundlight.__version__)\"","s":"Checking Groundlight SDK Version","u":"/python-sdk/docs/installation/windows","h":"#checking-groundlight-sdk-version","p":230},{"i":241,"t":"If you need to upgrade the Groundlight SDK to the latest version, use the following pip command: pip install --upgrade groundlight Or, if you're using pip3: pip3 install --upgrade groundlight After upgrading, you can use the Python one-liner mentioned in the \"Checking Groundlight SDK Version\" section to verify that the latest version is now installed.","s":"Upgrading Groundlight SDK","u":"/python-sdk/docs/installation/windows","h":"#upgrading-groundlight-sdk","p":230},{"i":243,"t":"To check your installed Python version, open a Command Prompt and run: python --version If you see a version number starting with \"3.7\" or higher (e.g., \"3.7.5\" or \"3.9.0\"), you're good to go. If not, you might need to upgrade Python on your system.","s":"Getting the right Python Version","u":"/python-sdk/docs/installation/windows","h":"#getting-the-right-python-version","p":230},{"i":245,"t":"Download the latest Python installer from the official Python website and run it. After upgrading, verify the Python version by running python --version or python3 --version, as described earlier.","s":"Upgrading Python on Windows","u":"/python-sdk/docs/installation/windows","h":"#upgrading-python-on-windows","p":230},{"i":247,"t":"You're now ready to start using the Groundlight SDK in your projects. For more information on using the SDK, refer to the API Tokens and Building Applications documentation pages.","s":"Ready to go!","u":"/python-sdk/docs/installation/windows","h":"#ready-to-go","p":230},{"i":249,"t":"Groundlight supplies a tool for no-code deployment of a detector to an ESP32 Camera board. You can find it at https://iot.groundlight.ai/espcam.","s":"No-Code IoT Deployment","u":"/python-sdk/docs/iot","h":"","p":248},{"i":251,"t":"This tool is designed to make it as easy as possible to deploy your Groundlight detector on an ESP32 Camera Board. You can deploy your detector in just a few clicks. Go to https://iot.groundlight.ai/espcam Plug your ESP32 Camera Board into your computer with a USB cable. Click through the steps to upload your detector to your ESP32 Camera Board. When prompted, allow your browser access to the serial port, so that it can program the device. If you don't see a prompt like this, try using a current version of Chrome or another browser that supports Web Serial.","s":"Easy Deployment","u":"/python-sdk/docs/iot","h":"#easy-deployment","p":248},{"i":253,"t":"The tool supports the following notification options for your deployed detector: Email SMS (With Twilio) Slack","s":"Notification Options","u":"/python-sdk/docs/iot","h":"#notification-options","p":248},{"i":255,"t":"Tested with the following boards. Many other ESP32 boards should work as well, but may require building the firmware from source and changing the IO pin definitions. M5Stack ESP32 PSRAM Timer Camera [purchase here] M5Stack ESP32 PSRAM Timer Camera X [purchase here] ESP32-CAM [purchase here] SeeedStudio ESP32S3 Sense [purchase here]","s":"Multiple Supported Boards","u":"/python-sdk/docs/iot","h":"#multiple-supported-boards","p":248},{"i":257,"t":"The source code is written as an Arduino-based PlatformIO project for ESP32, and is available on GitHub at https://github.com/groundlight/esp32cam If you need assistance or have questions about integrating Groundlight with Arduino, please consider opening an issue on the GitHub repository or reaching out to our support team.","s":"Source Code","u":"/python-sdk/docs/iot","h":"#source-code","p":248},{"i":260,"t":"The Groundlight SDK is optimized to run on small edge devices. As such, you can use the Groundlight SDK without installing large libraries like numpy or OpenCV. But if you're already installing them, we'll use them. Our SDK detects if these libraries are installed and will make use of them if they're present. If not, we'll gracefully degrade, and tell you what's wrong if you try to use these features.","s":"Smaller is better!","u":"/python-sdk/docs/installation/optional-libraries","h":"#smaller-is-better","p":258},{"i":262,"t":"The PIL library offers a bunch of standard utilities for working with images in python. The Groundlight SDK can work without PIL. Because PIL is not very large, and is quite useful, we install it by default with the normal build of the Groundlight SDK. So when you pip3 install groundlight it comes with the pillow version of the PIL library already installed.","s":"PIL - optional but default installed","u":"/python-sdk/docs/installation/optional-libraries","h":"#pil---optional-but-default-installed","p":258},{"i":264,"t":"If you are extremely space constrained, you can install the Groundlight SDK from source without PIL and it will work properly, but with reduced functionality. Specifically, you will need to convert your images into JPEG format yourself. The SDK normally relies on PIL to do JPEG compression (which is a non-trivial algorithm), and the API requires images to be in JPEG format. However on space-constrained platforms, sometimes this conversion is done in hardware, and so we don't want to force you to install PIL if you don't need it.","s":"Working without PIL","u":"/python-sdk/docs/installation/optional-libraries","h":"#working-without-pil","p":258},{"i":266,"t":"These commonly-used libraries are not installed by default, because they are quite large, and their installation can often cause conflicts with other dependent libraries. If you want to use them, install them directly.","s":"Numpy, OpenCV - fully optional","u":"/python-sdk/docs/installation/optional-libraries","h":"#numpy-opencv---fully-optional","p":258}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/3",[0,0.624,1,3.44,2,3.44,3,1.964,4,2.228,5,3.44,6,2.595,7,2.714,8,1.805,9,4.246,10,2.851,11,4.468,12,3.255,13,4.246,14,2.024,15,4.246,16,2.489,17,4.202,18,1.349,19,4.246,20,3.2,21,3.2,22,4.246,23,3.44,24,3.01,25,2.714,26,3.01,27,4.246,28,2.851,29,3.76,30,1.319,31,3.44,32,4.246,33,2.087,34,4.246,35,3.76,36,4.246]],["t/5",[0,0.602,12,3.761,28,4.428,29,5.841,37,4.675,38,5.343,39,5.343]],["t/7",[0,0.627,2,1.985,3,1.814,4,2.058,5,1.985,6,2.397,7,2.507,11,1.847,12,3.117,16,1.437,17,2.78,18,0.778,28,1.645,30,1.523,33,1.204,35,2.17,40,2.45,41,2.45,42,2.211,43,1.437,44,1.847,45,0.853,46,1.737,47,2.45,48,2.211,49,3.921,50,2.45,51,3.696,52,2.45,53,2.17,54,1.498,55,3.475,56,3.972,57,1.847,58,2.633,59,2.17,60,2.45,61,1.645,62,2.17,63,2.956,64,1.985,65,2.17,66,2.45,67,2.17,68,2.17,69,1.847,70,1.437,71,2.633,72,1.645,73,2.45,74,2.17,75,2.45,76,3.473,77,2.997,78,2.17,79,1.985,80,1.985,81,1.985,82,1.645,83,2.17,84,2.507,85,2.45,86,1.985,87,2.17,88,2.45,89,2.17,90,2.45,91,2.17,92,2.78,93,2.17,94,1.985,95,1.332,96,1.645,97,2.45,98,2.45,99,1.847,100,2.17,101,1.847,102,1.437,103,2.17]],["t/9",[0,0.537,1,3.405,20,3.168,30,1.306,70,2.464,76,3.722,77,4.152,82,3.952,95,2.284,104,2.979,105,4.815,106,3.405,107,3.722,108,5.886,109,2.979,110,4.941,111,2.437,112,3.405,113,4.768,114,2.133,115,4.203,116,3.722,117,4.203,118,2.066,119,3.168,120,4.203,121,4.203,122,4.203,123,3.722,124,2.822,125,4.203,126,3.405]],["t/11",[0,0.529,18,1.139,21,1.653,30,1.114,51,2.702,77,1.34,80,1.776,104,1.554,105,3.722,110,3.887,111,1.484,113,2.904,114,1.113,118,2.235,119,1.653,127,0.908,128,0.652,129,0.538,130,0.409,131,4.547,132,2.193,133,1.653,134,1.472,135,1.554,136,2.386,137,3.174,138,2.193,139,1.942,140,1.653,141,1.286,142,1.554,143,1.942,144,2.193,145,2.193,146,1.948,147,1.942,148,2.193,149,2.193,150,3.526,151,2.193,152,2.193,153,2.193,154,1.472,155,2.193,156,2.193,157,2.193,158,1.402,159,1.942,160,2.193,161,2.193,162,1.776,163,2.702,164,4.026,165,1.942,166,1.942,167,1.942,168,1.942,169,2.702,170,2.193,171,3.584,172,1.7,173,1.653,174,3.174,175,1.045,176,2.596,177,1.776,178,1.776,179,1.776,180,1.653,181,1.942,182,1.653,183,1.472,184,1.942,185,1.554,186,1.942,187,1.942,188,1.653,189,1.151,190,2.541,191,1.286,192,1.942,193,1.554,194,1.942,195,2.193,196,1.554,197,1.942,198,1.554,199,1.402,200,1.942,201,1.942]],["t/13",[0,0.517,18,0.792,30,0.775,42,1.406,77,1.525,81,3.222,82,1.674,95,3.362,109,1.768,110,3.331,111,2.344,113,3.222,114,1.266,123,3.522,127,1.032,128,0.741,129,0.612,130,0.466,136,2.604,137,2.209,139,2.209,150,3.331,154,2.67,163,1.88,164,2.209,168,2.209,172,0.933,175,1.189,176,2.892,177,2.02,178,2.02,191,1.462,199,2.543,202,2.02,203,2.209,204,2.494,205,3.978,206,2.494,207,2.78,208,2.209,209,1.594,210,4.961,211,2.02,212,2.209,213,2.494,214,2.494,215,5.661,216,2.494,217,1.768,218,4.961,219,1.594,220,4.019,221,4.961,222,4.961,223,3.978,224,2.209,225,1.88,226,2.494,227,2.02]],["t/15",[0,0.651,14,1.289,30,0.84,51,3.196,80,3.435,81,4.238,105,1.917,111,2.452,134,1.816,135,1.917,136,3.745,142,1.917,150,5.1,154,1.816,158,1.729,159,2.395,167,2.395,172,1.586,175,1.289,176,2.91,177,2.191,178,2.191,189,1.419,191,3.067,192,2.395,193,1.917,217,3.708,224,3.755,228,1.917,229,2.704,230,2.704,231,2.704,232,3.755,233,4.24,234,3.006,235,3.435,236,2.704,237,2.191,238,2.395,239,2.704,240,1.215,241,2.395,242,1.525,243,2.704,244,2.704,245,2.704,246,2.704,247,2.704,248,2.704,249,2.395]],["t/17",[63,4.235,84,5.024,128,1.67,250,3.772,251,3.772,252,3.983,253,3.983,254,3.983,255,4.975,256,2.266,257,4.552,258,5.619,259,4.552,260,4.975,261,3.983,262,5.619,263,5.619]],["t/19",[0,0.507,18,1.45,57,2.242,70,1.744,77,3.396,84,5.102,111,2.58,130,0.555,136,1.561,158,2.919,207,1.337,228,2.108,252,2.108,264,6.284,265,2.974,266,1.997,267,2.108,268,2.974,269,4.188,270,1.901,271,1.901,272,2.974,273,2.974,274,2.242,275,1.818,276,1.818,277,2.974,278,2.974,279,1.901,280,2.974,281,5.519,282,2.409,283,2.974,284,2.974,285,2.634,286,2.634,287,1.901,288,2.634,289,2.974,290,2.242,291,2.974,292,1.997,293,2.974,294,2.409,295,2.634,296,2.634,297,2.634,298,4.043,299,2.634,300,4.565,301,2.974,302,2.974,303,2.974,304,2.974,305,2.974]],["t/21",[0,0.733,18,1.651,57,3.918,84,3.323,129,1.275,130,0.971,172,1.944,176,1.853,220,4.211,264,6.019,285,4.603,306,4.603,307,2.405,308,5.198,309,4.603,310,5.198,311,3.49,312,4.211,313,4.603,314,5.198,315,5.198]],["t/23",[0,0.432,3,2.952,4,3.349,6,2.889,7,3.022,12,2.253,17,3.351,33,2.324,61,3.174,84,3.022,92,4.523,94,3.829,95,2.569,96,3.174,288,4.186,316,4.727,317,3.829,318,4.727,319,4.727,320,4.186,321,3.351,322,4.186,323,4.727,324,3.022,325,4.186,326,3.829,327,4.727,328,4.727,329,4.727,330,4.186]],["t/25",[3,2.115,4,2.399,6,2.794,7,2.923,23,3.704,30,1.42,33,2.247,102,2.68,110,4.188,126,3.704,317,3.704,324,2.923,331,4.572,332,4.572,333,6.238,334,5.524,335,2.68,336,4.572,337,4.572,338,4.572,339,4.048,340,4.572,341,4.572,342,4.572,343,4.572,344,4.572,345,4.048,346,4.572,347,4.572,348,4.572,349,4.572,350,4.572,351,4.572]],["t/27",[3,2.237,4,2.538,6,2.956,7,3.092,102,2.836,109,3.428,287,3.092,320,4.283,321,4.593,324,3.092,334,4.283,352,4.283,353,2.455,354,3.918,355,4.837,356,4.283,357,4.837,358,4.837,359,3.918,360,4.283,361,6.48,362,4.283,363,4.837,364,4.837,365,4.837,366,4.837,367,4.837,368,4.837,369,4.283]],["t/29",[3,2.952,4,3.349,8,2.01,61,3.174,96,3.174,102,2.772,127,1.957,259,3.829,324,3.022,326,3.829,330,6.397,353,2.399,359,3.829,370,3.829,371,4.727,372,4.727,373,4.186,374,4.727,375,4.186,376,4.186,377,4.727,378,4.727,379,4.727,380,4.727,381,4.727,382,4.727,383,4.727,384,4.727,385,4.727]],["t/31",[3,2.092,4,2.373,30,1.405,61,3.036,96,3.036,102,2.651,103,4.004,104,3.205,126,3.663,254,3.205,311,3.036,324,3.958,325,5.483,335,2.651,339,4.004,345,5.483,362,4.004,386,3.663,387,3.663,388,4.522,389,4.522,390,4.522,391,4.522,392,3.205,393,4.522,394,4.004,395,4.522,396,4.522,397,3.663,398,4.522,399,4.522,400,4.522,401,4.522,402,4.522]],["t/33",[3,2.709,4,3.073,6,3.579,7,3.743,33,2.878,44,4.414,56,4.743,92,4.15,96,3.931,102,3.433,324,3.743,326,4.743,403,5.855,404,4.414,405,5.855,406,5.855]],["t/35",[48,3.498,102,3.637,130,1.159,242,3.498,387,5.026,407,6.203,408,4.165,409,6.203,410,5.493,411,3.498,412,4.397,413,4.676]],["t/37",[0,0.716,48,2.759,111,2.026,114,2.484,130,0.914,172,2.443,176,2.62,242,3.683,307,2.264,414,4.333,415,3.285,416,3.469,417,3.964,418,3.964,419,4.893,420,5.291,421,3.128,422,4.893,423,6.531,424,4.893,425,4.893]],["t/39",[0,0.483,48,3.524,54,2.212,111,1.498,118,2.6,130,0.676,172,1.354,173,2.728,176,2.722,179,2.932,180,2.728,181,3.205,182,2.728,183,2.43,184,3.205,186,3.205,187,3.205,188,2.728,189,1.9,190,4.873,200,3.205,201,3.205,235,2.932,387,2.932,408,2.43,411,2.982,412,2.566,413,2.728,415,2.43,416,2.566,426,2.43,427,3.205,428,5.289,429,2.314,430,2.932,431,5.063,432,2.932,433,3.205,434,2.932,435,3.62,436,4.285,437,3.205,438,3.205]],["t/41",[0,0.345,14,1.803,16,2.218,28,2.54,48,2.134,111,1.566,130,0.707,172,1.415,176,1.947,182,2.852,375,3.351,411,2.134,412,4.543,413,2.852,414,3.351,417,3.065,429,2.419,430,4.425,431,4.425,432,3.065,438,3.351,439,2.852,440,3.784,441,3.065,442,3.351,443,3.784,444,3.784,445,3.784,446,3.784,447,3.784,448,3.784,449,3.784,450,3.784,451,2.682,452,3.784,453,3.784,454,3.784,455,3.784,456,3.784,457,3.784,458,3.784,459,5.462,460,3.784,461,3.784,462,3.784,463,3.784,464,3.784,465,3.351,466,3.784]],["t/43",[0,0.513,6,1.506,18,0.783,30,0.766,48,3.171,92,1.747,111,2.545,114,1.251,127,1.02,130,0.46,143,2.182,146,1.34,176,2.004,198,2.793,235,1.997,297,3.489,408,1.655,411,2.776,412,3.489,413,2.97,417,1.997,429,1.576,430,4.555,431,5.576,432,4.555,433,2.182,434,1.997,439,1.858,441,1.997,442,3.489,465,4.359,467,2.465,468,3.489,469,2.465,470,2.465,471,2.465,472,2.465,473,2.465,474,2.465,475,1.655,476,1.997,477,2.182,478,2.465,479,1.655,480,2.465,481,3.94,482,3.94,483,2.182,484,2.465,485,2.465,486,2.182,487,2.465,488,1.858,489,2.465,490,2.465,491,2.182,492,2.465,493,2.465,494,2.465,495,2.465,496,2.465,497,2.97,498,2.465,499,2.182,500,1.858,501,2.182,502,3.94,503,2.182,504,2.182,505,2.465,506,2.465,507,2.465,508,1.576,509,2.465]],["t/45",[1,3.548,53,6.148,54,2.677,104,4.293,106,3.548,111,3.101,234,3.104,240,1.968,287,2.8,408,4.662,410,3.878,426,2.94,476,5.625,510,4.38,511,4.907,512,6.057,513,6.943,514,3.878,515,4.38,516,3.878,517,3.878,518,2.94,519,3.878,520,3.301,521,6.057]],["t/47",[0,0.602,5,5.343,12,3.144,38,5.343,39,5.343,240,2.964,522,5.841,523,4.972]],["t/49",[0,0.475,18,1.651,79,4.211,95,2.825,256,2.741,267,5.368,335,3.048,353,2.639,476,4.211,517,4.603,518,3.49,524,3.685,525,5.198,526,3.49,527,5.198,528,5.198,529,4.603,530,4.603,531,5.198,532,4.603,533,2.728,534,5.198]],["t/51",[2,4.319,4,3.626,8,2.267,10,3.579,16,3.126,28,3.579,30,1.656,54,3.259,118,2.621,175,2.541,196,3.779,207,2.396,255,4.721,260,4.721,524,3.779,535,4.721,536,6.119,537,5.331,538,5.331,539,5.331,540,5.331]],["t/53",[8,2.105,28,3.324,95,2.691,207,2.958,209,3.166,266,3.324,275,3.027,276,4.024,439,3.732,524,3.51,541,4.952,542,7.881,543,6.583,544,4.385,545,4.011,546,4.952,547,3.732,548,4.952,549,4.952,550,3.732,551,4.385,552,4.952,553,4.011]],["t/55",[0,0.566,3,2.87,4,3.256,6,3.792,7,3.966,12,2.957,92,4.397,93,5.493,94,5.026,95,3.372,96,4.165,475,4.165]],["t/58",[0,0.601,3,1.834,4,2.08,8,1.685,10,2.661,21,2.988,54,2.423,111,1.641,129,1.385,130,0.74,141,2.324,172,1.482,176,2.701,191,2.324,217,2.809,241,3.51,307,1.834,418,3.211,421,2.534,429,2.534,483,3.51,486,3.51,554,2.988,555,3.963,556,3.211,557,3.211,558,2.534,559,3.51,560,3.51,561,2.809,562,3.51,563,3.51,564,2.988,565,3.963,566,3.963,567,3.963,568,3.51,569,3.51,570,3.211,571,3.963,572,3.963,573,3.963,574,3.963]],["t/60",[3,1.579,4,1.791,8,1.451,24,2.419,33,1.677,48,2.856,54,2.086,56,2.764,58,3.4,63,2.572,77,3.096,110,2.291,111,1.413,127,1.413,141,2.001,146,2.752,209,2.181,228,3.59,238,3.022,252,4.28,274,2.572,294,2.764,321,2.419,392,2.419,451,2.419,508,2.181,575,4.28,576,3.412,577,3.022,578,2.419,579,3.022,580,3.022,581,5.064,582,3.022,583,3.412,584,2.764,585,3.412,586,3.022,587,3.022,588,3.022,589,2.764,590,2.572,591,5.064,592,3.412,593,3.412,594,3.022,595,3.412,596,3.412,597,3.022,598,3.022,599,3.412,600,2.764,601,2.572,602,3.412,603,3.022,604,1.161]],["t/62",[11,4.235,30,1.746,84,3.592,87,4.975,102,3.294,146,3.054,324,3.592,536,4.975,589,4.552,590,4.235,605,4.552,606,5.619,607,5.619,608,5.619,609,5.619,610,4.975,611,5.619,612,5.619,613,5.619]],["t/64",[0,0.689,16,3.024,21,2.637,111,1.448,127,1.448,128,1.534,129,1.659,130,0.653,141,2.051,172,1.308,176,2.57,191,2.051,217,2.479,240,1.572,251,2.349,256,1.411,266,2.349,307,1.618,311,2.349,312,2.834,313,3.098,418,2.834,421,2.236,556,2.834,557,2.834,558,2.236,559,3.098,560,3.098,561,2.479,562,3.098,563,3.098,564,2.637,601,2.637,604,1.19,614,2.138,615,1.411,616,1.277,617,3.498,618,1.901,619,3.098,620,2.834,621,3.498,622,2.135,623,1.973,624,2.834,625,3.498,626,2.637,627,5.158]],["t/66",[0,0.389,8,0.671,14,1.296,20,1.19,23,1.279,24,1.928,31,1.279,33,1.761,58,4.331,61,1.06,62,1.398,63,2.701,64,2.203,65,3.772,67,3.173,68,3.173,77,1.662,82,2.86,101,2.05,111,2.328,114,0.801,133,1.19,136,2.235,140,3.621,141,1.595,146,0.858,150,1.06,172,1.34,175,0.752,176,2.004,191,1.595,193,1.928,197,2.408,198,1.119,199,1.009,209,1.009,217,1.119,228,3.721,234,1.119,240,0.709,242,0.89,249,1.398,252,2.54,257,2.903,266,2.406,294,1.279,307,0.73,386,1.279,392,1.119,416,1.119,421,1.009,451,1.119,504,1.398,545,1.279,564,2.05,578,1.119,579,1.398,584,1.279,586,2.408,588,1.398,589,1.279,590,1.19,604,1.449,605,1.279,614,0.965,628,1.579,629,1.398,630,2.408,631,1.398,632,1.119,633,3.211,634,1.579,635,1.398,636,1.579,637,1.06,638,1.579,639,1.579,640,1.579,641,2.72,642,1.739,643,2.72,644,0.73,645,1.579,646,2.203,647,1.279,648,1.398,649,1.579,650,1.579,651,1.579,652,1.579,653,1.398,654,1.398,655,1.279,656,1.579,657,1.398,658,1.579,659,1.579,660,1.579,661,1.579,662,2.408,663,1.19,664,1.398,665,1.579,666,1.398,667,1.398,668,1.398,669,1.279,670,1.579,671,1.579,672,1.579,673,1.579,674,1.579,675,1.398,676,2.72,677,1.579,678,1.579,679,1.579,680,1.579,681,1.279,682,1.579,683,1.579,684,1.579,685,1.579,686,2.72,687,1.398,688,1.579]],["t/69",[0,0.62,16,2.464,18,1.87,37,2.979,99,3.168,112,3.405,136,3.089,172,1.572,175,3.237,176,2.098,189,2.206,240,1.889,307,1.944,397,3.405,421,2.687,637,3.952,642,2.687,689,4.203,690,4.203,691,6.517,692,5.886,693,4.203,694,3.168,695,4.203,696,3.168,697,4.203,698,4.203,699,3.405,700,3.722,701,3.168,702,4.203,703,4.203]],["t/71",[0,0.766,172,2.429,175,3.095,176,2.786,307,3.004,704,6.493]],["t/73",[0,0.683,25,4.784,55,4.741,82,4.49,172,1.897,176,2.947,196,3.595,307,2.346,705,4.491,706,5.923,707,5.072,708,4.491,709,4.491,710,4.491,711,5.072,712,4.491]],["t/75",[0,0.687,18,1.631,43,3.01,114,3.422,136,3.539,150,3.447,172,1.92,176,2.403,191,3.01,194,4.547,281,4.547,307,2.375,416,3.639,637,3.447,642,3.282,669,4.159,713,4.547,714,4.547,715,4.547,716,4.159,717,5.134]],["t/77",[0,0.683,25,4.784,82,4.49,172,1.897,176,2.947,196,3.595,307,2.346,705,4.491,706,5.923,708,4.491,709,4.491,710,4.491,712,4.491,718,6.688,719,5.072,720,5.072]],["t/79",[0,0.573,14,1.438,30,0.937,58,2.026,64,2.444,72,2.026,77,1.844,111,2.321,136,1.584,146,1.64,166,2.672,172,2.097,176,2.412,191,2.706,193,2.139,202,2.444,203,2.672,219,2.951,228,2.139,234,2.139,242,1.701,252,2.139,307,1.396,397,2.444,415,2.026,416,2.139,421,1.929,429,1.929,500,2.274,554,2.274,556,2.444,557,2.444,558,1.929,569,2.672,575,2.139,597,4.087,598,2.672,605,3.739,630,2.672,633,2.274,647,2.444,648,2.672,653,2.672,654,2.672,655,2.444,662,2.672,666,2.672,669,3.739,694,2.274,699,2.444,721,1.929,722,3.017,723,3.017,724,3.017,725,2.444,726,3.017,727,3.017,728,2.672,729,2.672,730,3.017,731,3.017,732,2.444,733,2.139,734,3.017,735,3.017,736,3.017,737,3.017]],["t/81",[0,0.5,10,3.673,12,2.608,14,2.608,25,3.498,42,3.085,70,3.208,71,4.717,72,4.717,130,1.022,335,3.208,550,4.124,622,2.265,738,5.471,739,5.471,740,5.471,741,4.432,742,4.124,743,3.498]],["t/83",[0,0.453,14,1.896,70,2.332,74,4.393,130,0.466,172,1.488,176,2.854,251,2.67,290,1.88,307,1.154,408,1.674,511,2.02,532,2.209,550,1.88,587,2.209,622,1.647,624,2.02,647,2.02,655,2.02,663,1.88,716,2.02,728,2.209,744,4.267,745,2.209,746,4.393,747,2.494,748,1.768,749,3.978,750,1.768,751,2.02,752,3.978,753,2.494,754,2.494,755,2.494,756,2.02,757,2.494,758,2.494,759,2.02,760,2.494,761,2.209,762,2.494,763,3.978,764,3.978,765,2.494,766,2.494,767,2.02,768,2.494,769,3.978,770,4.961,771,2.494,772,2.494,773,2.494,774,2.209,775,4.961,776,3.978,777,2.494,778,2.494,779,2.494,780,2.494,781,2.494,782,2.494,783,2.494,784,2.494,785,2.494,786,2.494,787,3.978,788,2.494,789,2.494,790,2.209,791,2.209,792,2.494,793,2.494,794,2.494,795,2.494,796,2.494]],["t/85",[0,0.575,10,4.228,14,3.001,54,3.849,72,4.228,130,1.176,570,5.101,632,4.464,741,5.101,743,4.026,797,5.101]],["t/87",[335,3.339,743,4.608,746,5.043,748,4.037,761,5.043,798,5.043,799,4.037,800,5.695,801,5.695,802,5.043,803,5.695,804,5.695,805,4.037,806,5.695,807,5.695,808,5.695,809,4.293]],["t/89",[0,0.527,71,4.882,130,1.078,207,3.268,353,2.931,394,5.113,580,5.113,701,4.352,748,4.093,799,4.093,810,5.113,811,5.774,812,5.774,813,5.774,814,5.774]],["t/91",[33,2.689,59,4.845,207,2.459,353,2.777,725,4.432,743,3.498,744,4.124,809,4.124,815,4.492,816,5.471,817,3.673,818,5.471,819,5.471,820,5.471,821,4.845,822,3.344,823,5.471,824,5.471,825,4.432,826,5.471]],["t/93",[69,4.071,71,3.626,207,2.427,261,3.828,286,4.782,335,3.166,353,2.741,359,4.375,360,4.782,508,3.452,743,3.452,790,4.782,809,5.252,827,4.782,828,5.4,829,5.4,830,5.4,831,5.4,832,5.4,833,5.4,834,5.4]],["t/95",[71,3.722,72,3.722,165,4.909,183,3.722,207,2.492,603,4.909,725,4.491,742,4.179,743,3.544,744,4.179,835,5.544,836,5.544,837,3.126,838,5.544,839,5.544,840,5.544,841,5.544,842,5.544,843,5.544,844,4.909]],["t/97",[0,0.442,12,2.305,16,2.836,30,1.503,45,1.684,69,3.646,70,2.836,71,4.351,72,4.351,130,0.903,207,2.174,353,2.455,434,3.918,514,4.283,632,3.428,741,3.918,742,3.646,743,3.092,744,3.646,797,3.918,798,4.283,809,3.646,837,3.654,845,3.646,846,4.837,847,4.837,848,4.837,849,4.837]],["t/100",[0,0.601,14,2.36,18,2.091,127,2.05,130,0.925,250,3.324,497,3.732,622,3.061,623,3.712,716,4.011,850,4.385,851,4.952,852,4.952,853,4.385,854,2.691,855,4.952,856,4.952,857,4.952,858,4.952,859,4.952,860,4.952,861,4.952,862,4.952,863,4.952]],["t/102",[0,0.322,14,1.681,18,1.649,43,2.068,61,2.368,69,2.659,133,2.659,135,2.5,207,1.585,250,2.368,251,2.368,311,2.368,335,2.068,404,2.659,415,2.368,600,2.858,601,2.659,622,3.323,623,1.989,629,3.124,632,3.679,635,3.124,791,3.124,797,4.205,850,3.124,854,4.252,864,3.528,865,3.528,866,3.528,867,3.528,868,3.528,869,3.528,870,3.528,871,4.205,872,3.528,873,3.528,874,3.528,875,3.528,876,3.528,877,3.528,878,2.659,879,3.528,880,3.528,881,3.124,882,3.124,883,3.528]],["t/104",[0,0.681,14,2.864,37,2.399,130,0.94,172,1.883,176,2.372,208,2.997,220,2.742,237,2.742,306,4.457,307,2.329,311,4.035,312,4.868,415,2.272,497,2.551,524,3.568,578,2.399,622,2.944,623,4.204,624,4.078,632,2.399,713,2.997,802,2.997,854,1.84,884,3.385,885,2.997,886,2.997,887,3.385,888,3.385,889,3.385,890,3.385,891,2.551,892,3.385,893,3.385,894,3.385,895,3.385,896,3.385,897,3.385,898,3.385]],["t/106",[0,0.602,622,2.73,854,4.288,899,6.596,900,5.343,901,6.596,902,6.596]],["t/108",[0,0.565,16,3.63,25,2.891,83,4.004,240,2.032,250,3.036,354,3.663,386,3.663,622,2.923,623,4.282,637,4.157,687,4.004,696,3.409,815,2.891,854,3.365,871,5.016,903,4.522,904,5.016,905,4.004,906,4.522,907,4.004,908,5.483,909,4.522,910,4.522,911,4.004]],["t/110",[25,3.092,45,1.684,146,2.629,240,2.174,299,4.283,475,4.351,610,4.283,622,2.002,623,4.402,696,4.885,701,3.646,822,2.956,854,3.522,907,4.283,912,3.918,913,4.283,914,4.837,915,4.837,916,4.837,917,4.837,918,4.837,919,4.837,920,5.739,921,4.837]],["t/112",[0,0.422,12,2.996,30,1.436,189,2.426,198,3.276,199,2.955,225,3.484,232,4.093,250,3.103,429,2.955,622,1.913,623,4.52,637,3.103,642,4.018,881,5.566,882,4.093,904,3.745,905,4.093,912,3.745,922,4.622,923,4.622,924,4.622,925,6.285,926,4.622,927,4.622,928,4.622,929,4.093]],["t/114",[55,4.27,114,3.058,209,4.773,266,4.045,309,5.335,475,4.045,526,4.045,825,4.88,930,6.024,931,6.024,932,4.27,933,4.541,934,4.88]],["t/116",[0,0.566,129,1.522,130,1.159,520,4.676,526,4.165,604,2.11,616,2.265,699,5.026,825,5.026,934,5.026,935,5.493,936,5.493]],["t/118",[0,0.658,128,2.143,129,1.397,130,1.064,411,3.212,426,3.824,604,1.937,616,2.079,837,3.212,937,1.693,938,2.635,939,4.293,940,5.043,941,5.043,942,5.043,943,5.043]],["t/120",[0,0.516,14,0.863,26,1.284,51,1.366,58,1.216,109,1.284,111,1.931,112,1.468,129,0.75,136,2.735,140,1.366,141,1.062,150,1.216,154,2.665,169,2.992,172,1.949,175,1.892,176,2.777,182,1.366,185,1.284,190,2.168,193,1.284,199,1.158,207,1.375,242,1.022,253,1.284,256,1.234,287,1.158,292,1.216,307,0.838,321,1.284,491,3.515,520,2.306,526,2.665,533,0.951,561,1.284,619,1.604,622,0.75,623,1.022,626,3.516,633,1.366,642,1.158,646,1.468,691,3.515,696,1.366,715,1.604,745,1.604,815,1.158,845,1.366,920,1.604,934,2.478,935,2.709,936,2.709,940,1.604,941,1.604,942,1.604,943,1.604,944,1.812,945,3.059,946,1.812,947,1.812,948,1.812,949,1.812,950,3.059,951,1.604,952,1.812,953,1.812,954,1.812,955,3.059,956,1.468,957,1.468,958,5.211,959,4.664,960,1.812,961,1.812,962,1.812,963,1.812,964,3.97,965,1.812,966,1.812,967,1.812,968,1.158,969,1.468,970,3.059,971,1.812,972,1.812,973,1.812,974,1.604,975,1.812,976,3.059,977,1.812,978,1.812,979,1.812,980,1.604,981,1.812,982,1.812,983,1.812,984,1.604,985,1.812,986,1.812,987,1.812,988,3.059,989,1.604,990,1.812,991,1.812]],["t/123",[0,0.255,3,0.753,17,1.154,18,1.165,31,1.319,44,1.227,95,0.885,107,3.247,114,0.826,118,1.373,127,0.674,128,0.484,140,2.105,142,1.154,146,0.885,163,1.227,175,1.331,207,2.199,212,1.441,259,1.319,279,1.041,282,5.101,292,1.093,317,1.319,335,0.954,353,0.826,354,2.262,356,1.441,369,1.441,373,2.473,376,1.441,392,1.979,420,1.319,451,1.154,475,1.093,522,1.441,529,1.441,544,1.441,545,1.319,550,1.227,553,1.319,582,1.441,604,0.554,732,1.319,799,1.154,805,1.979,815,1.785,822,1.707,827,1.441,844,1.441,871,4.627,885,1.441,992,3.667,993,3.667,994,2.793,995,3.85,996,5.337,997,4.348,998,1.628,999,3.247,1000,1.628,1001,1.628,1002,1.628,1003,1.628,1004,5.058,1005,1.628,1006,1.441,1007,1.441,1008,1.441,1009,1.441,1010,1.441,1011,1.093,1012,1.441,1013,2.262,1014,1.628,1015,2.793,1016,2.793,1017,2.793,1018,1.628,1019,2.793,1020,1.628,1021,1.628,1022,2.793,1023,1.628,1024,1.628,1025,1.628,1026,1.628,1027,1.628,1028,1.628,1029,1.628,1030,1.628,1031,1.628,1032,1.628,1033,2.793,1034,1.628,1035,1.628,1036,3.667,1037,1.628,1038,1.628,1039,1.628,1040,1.628,1041,2.793,1042,1.628,1043,2.793,1044,1.628,1045,1.628,1046,1.628,1047,2.793,1048,2.793,1049,1.441,1050,1.628,1051,1.628,1052,1.628,1053,1.628,1054,1.628,1055,1.628,1056,2.793,1057,1.628,1058,1.628,1059,1.628,1060,1.319,1061,1.628,1062,1.628,1063,1.628,1064,1.227,1065,1.628,1066,1.628,1067,1.227,1068,1.628]],["t/125",[0,0.527,118,2.838,129,1.417,130,1.078,250,3.877,251,3.877,261,4.093,436,4.678,518,3.877,604,1.964,616,2.108,815,3.691,1013,4.678,1060,4.678,1064,4.352,1067,4.352,1069,5.774]],["t/127",[0,0.658,128,2.143,129,1.769,130,1.064,411,4.065,426,3.824,479,3.824,604,1.937,616,2.079,837,3.212,937,1.693,938,2.635,939,4.293,1070,4.293]],["t/129",[0,0.355,18,0.648,24,0.807,26,0.807,30,0.862,58,0.765,70,0.668,105,0.807,111,2.081,118,0.56,119,0.858,127,0.471,129,0.501,136,0.598,141,0.668,146,0.619,154,0.765,163,0.858,169,0.858,172,1.988,173,0.858,175,0.543,176,3.02,180,0.858,185,0.807,188,1.538,190,0.807,199,0.728,207,1.519,211,2.738,227,0.923,242,1.151,256,0.459,261,0.807,282,1.653,290,0.858,292,1.862,307,0.527,311,0.765,411,0.642,421,0.728,436,0.923,479,0.765,488,0.858,553,0.923,568,1.807,575,0.807,594,1.008,622,0.845,623,0.642,626,1.538,631,1.008,646,0.923,663,0.858,729,1.008,748,0.807,750,0.807,751,0.923,756,0.923,759,1.653,767,0.923,815,2.765,817,1.37,845,1.538,956,2.247,957,0.923,984,1.008,995,1.807,996,2.992,999,1.008,1004,1.807,1007,1.008,1008,1.008,1009,1.807,1010,1.008,1011,0.765,1012,1.008,1013,2.247,1067,0.858,1070,0.858,1071,1.139,1072,2.041,1073,1.139,1074,1.139,1075,2.041,1076,1.139,1077,1.139,1078,2.456,1079,2.456,1080,1.008,1081,1.807,1082,1.008,1083,1.008,1084,1.008,1085,1.008,1086,1.139,1087,1.139,1088,2.773,1089,1.139,1090,2.773,1091,1.139,1092,1.139,1093,1.139,1094,1.139,1095,1.139,1096,1.139,1097,1.139,1098,1.139,1099,1.139,1100,1.139,1101,1.139,1102,2.041,1103,1.139,1104,1.139,1105,1.139,1106,1.139,1107,2.041,1108,1.139,1109,1.139,1110,2.773,1111,1.139,1112,1.139,1113,2.041,1114,3.379,1115,2.041,1116,1.139,1117,1.139,1118,1.139,1119,1.139,1120,1.139,1121,1.139,1122,3.379,1123,2.773,1124,1.139,1125,2.041,1126,1.139,1127,2.041,1128,3.379,1129,2.773,1130,1.008,1131,1.008,1132,1.008,1133,1.008,1134,1.139,1135,1.139,1136,1.139,1137,1.139,1138,1.139,1139,1.139,1140,1.139,1141,1.139,1142,1.139,1143,2.041,1144,1.139,1145,1.139,1146,1.139,1147,1.139,1148,1.139,1149,1.139,1150,2.041,1151,1.139,1152,1.139,1153,1.139,1154,1.139,1155,1.139,1156,1.139,1157,1.139,1158,1.008,1159,0.923,1160,1.139,1161,1.139,1162,1.139,1163,1.139,1164,2.041]],["t/131",[0,0.422,18,1.468,114,2.346,135,3.276,207,2.825,370,3.745,601,3.484,701,3.484,929,4.093,1159,3.745,1165,4.622,1166,4.622,1167,4.622,1168,6.208,1169,5.785,1170,4.622,1171,2.825,1172,3.745,1173,3.745,1174,3.745,1175,3.745,1176,3.745,1177,4.622,1178,4.622,1179,4.622,1180,4.622,1181,4.622,1182,4.622,1183,4.622]],["t/133",[0,0.487,118,2.621,129,1.308,130,0.996,261,3.779,518,3.579,561,3.779,604,1.813,616,1.946,817,3.579,886,4.721,1011,4.639,1060,4.319,1064,4.019,1168,4.319,1169,4.319,1174,4.319,1175,4.319,1176,4.319,1184,5.331,1185,5.331,1186,5.331]],["t/135",[0,0.664,128,2.162,129,1.784,130,1.078,411,4.1,426,3.877,604,1.964,616,2.108,837,3.256,937,1.717,938,2.671,939,4.352,1187,5.113]],["t/137",[0,0.484,24,1.324,26,1.324,30,1.261,105,1.324,111,2.653,118,0.918,119,1.408,129,0.77,136,0.981,141,1.841,146,1.016,154,1.254,169,1.408,172,2.284,173,1.408,174,1.655,175,1.496,176,2.764,180,1.408,185,1.324,188,2.366,190,1.324,198,1.324,199,1.194,207,2.138,211,3.854,219,1.194,227,1.514,242,1.77,256,0.754,290,1.408,292,2.108,307,0.864,370,1.514,411,1.054,451,2.878,479,1.254,488,1.408,526,1.254,575,1.324,622,1.3,623,1.054,626,2.366,663,1.408,748,1.324,750,1.324,756,1.514,759,2.543,767,1.514,815,1.194,845,2.366,911,1.655,956,2.543,957,1.514,974,1.655,1006,1.655,1070,1.408,1078,2.78,1079,3.595,1080,1.655,1081,2.78,1082,1.655,1083,1.655,1084,1.655,1085,1.655,1130,1.655,1131,1.655,1132,1.655,1133,1.655,1158,1.655,1159,2.543,1168,1.514,1169,3.289,1174,2.543,1175,2.543,1176,2.543,1187,1.655,1188,1.868,1189,1.868,1190,1.868,1191,1.868,1192,1.868,1193,1.868,1194,1.868,1195,1.868,1196,1.868,1197,1.868,1198,1.868,1199,1.868,1200,3.139,1201,1.868,1202,1.868,1203,1.868,1204,1.868,1205,1.868,1206,1.868,1207,1.868,1208,1.408,1209,1.868,1210,1.868,1211,1.868,1212,3.139]],["t/140",[39,3.093,48,2.153,55,2.706,78,3.381,102,2.239,130,0.713,141,3.224,175,1.82,176,2.925,191,2.239,219,3.515,292,2.564,497,2.878,554,2.878,564,2.878,584,4.454,633,2.878,732,3.093,751,3.093,774,3.381,932,3.897,933,2.878,968,3.515,969,4.454,980,3.381,1213,2.878,1214,3.818,1215,3.381,1216,3.381,1217,3.818,1218,5.498,1219,5.498,1220,3.818,1221,3.818,1222,3.818,1223,3.818,1224,3.818,1225,3.818,1226,3.818]],["t/143",[20,4.895,95,3.529,111,2.688,219,4.151,298,5.75,968,4.151,1213,4.895,1215,5.75,1227,6.493]],["t/145",[0,0.427,33,3.113,101,3.523,110,3.138,114,2.372,133,3.523,146,2.54,189,2.453,257,3.787,392,3.313,503,4.139,575,3.313,577,4.139,590,3.523,657,4.139,664,4.139,714,4.139,799,3.313,933,4.774,968,4.049,1228,4.674,1229,4.674,1230,4.674,1231,4.674,1232,4.674,1233,4.674,1234,4.139,1235,4.674,1236,4.674,1237,4.674,1238,4.674]],["t/147",[136,3.99,176,2.211,219,3.966,500,4.676,799,4.397,1239,6.203,1240,6.203,1241,6.203,1242,6.203,1243,5.493,1244,6.203]],["t/149",[158,3.851,240,2.707,511,6.049,600,4.88,968,3.851,969,4.88,1216,5.335,1245,5.335,1246,6.024,1247,6.024,1248,6.024,1249,6.024,1250,6.024]],["t/151",[176,2.211,219,3.966,420,5.026,805,4.397,821,5.493,891,4.676,968,3.966,1213,4.676,1251,5.493,1252,6.203,1253,6.203,1254,6.203]],["t/153",[89,5.493,296,5.493,615,2.502,968,3.966,1213,4.676,1245,5.493,1255,6.203,1256,6.203,1257,6.203,1258,6.203,1259,6.203,1260,6.203]],["t/155",[0,0.658,17,4.037,37,4.037,99,4.293,128,1.693,130,1.346,209,3.641,266,3.824,1171,4.406,1261,5.695,1262,4.293,1263,7.208,1264,4.614,1265,5.043]],["t/157",[0,0.422,11,3.484,12,2.203,30,1.436,42,2.607,70,2.71,99,3.484,109,3.276,118,2.272,130,0.863,269,3.484,270,2.955,271,2.955,275,2.825,276,2.825,547,3.484,570,3.745,681,3.745,721,2.955,912,3.745,1049,4.093,1171,2.825,1262,3.484,1264,3.745,1266,4.622,1267,6.285,1268,4.622,1269,4.455,1270,4.093,1271,4.093,1272,3.276,1273,4.622,1274,2.512]],["t/159",[0,0.694,128,1.844,129,1.522,130,1.42,353,3.149,604,2.11,614,3.792,616,2.265,1171,3.792,1269,4.397]],["t/161",[8,2.677,45,2.192,129,1.882,604,2.142,616,2.299,837,3.551,937,1.872,938,2.913,1275,4.228,1276,4.026]],["t/163",[0,0.558,8,2.599,45,2.128,128,1.817,129,1.5,130,1.142,604,2.079,616,2.231,937,1.817,1277,4.333,1278,4.333,1279,4.104,1280,3.322]],["t/165",[0,0.72,8,2.105,18,2.091,30,2.045,45,1.724,127,2.05,128,2.198,130,1.229,158,3.166,256,1.997,533,2.599,618,3.578,644,2.291,937,1.472,938,3.045,1274,2.691,1281,3.324,1282,4.011,1283,2.434]],["t/167",[0,0.67,18,1.86,43,3.433,45,2.038,129,1.8,130,1.093,172,2.19,189,3.073,615,2.361,937,1.741,1284,4.743,1285,3.931,1286,4.743,1287,4.743]],["t/169",[0,0.693,18,1.967,30,1.405,45,1.574,127,1.872,128,1.841,129,1.109,130,1.156,189,2.373,533,2.373,615,2.848,618,3.365,644,2.092,937,1.344,938,2.864,1208,3.409,1280,3.838,1283,2.223,1285,3.036,1288,4.157,1289,3.036,1290,3.663,1291,3.663,1292,3.036]],["t/171",[8,2.21,43,3.048,127,2.152,129,1.858,240,2.336,256,2.096,558,3.323,604,1.768,615,3.054,616,1.898,644,2.405,817,3.49,878,3.918,932,3.685,937,1.545,1280,2.825,1281,3.49,1293,4.211,1294,4.211,1295,4.211,1296,3.685]],["t/173",[18,1.284,95,3.111,128,1.977,129,1.774,225,3.045,240,1.816,279,2.583,321,4.058,429,2.583,615,2.916,681,3.273,1269,2.864,1275,2.713,1288,2.713,1289,2.713,1292,2.713,1297,4.04,1298,4.04,1299,5.069,1300,4.04,1301,6.404,1302,5.069,1303,5.011,1304,3.578,1305,4.04,1306,4.04,1307,4.04,1308,4.04,1309,4.04,1310,3.273,1311,3.273]],["t/175",[0,0.381,18,0.843,30,0.824,38,2.149,57,3.148,128,2.245,129,1.438,176,2.525,183,2.804,196,2.961,225,3.894,234,1.88,237,2.149,253,1.88,256,1.684,404,2,437,2.349,468,2.349,508,1.696,615,1.07,618,2.808,667,2.349,937,0.789,951,2.349,1011,1.781,1234,2.349,1283,1.304,1296,1.88,1299,4.575,1301,5.644,1302,3.699,1303,3.148,1304,3.699,1312,2.653,1313,2.653,1314,2.653,1315,2.653,1316,2.653,1317,2.349,1318,2.653,1319,2.653,1320,2.653,1321,2.653,1322,2.653,1323,2.653,1324,2.653,1325,5.86,1326,2.653,1327,4.177,1328,4.177,1329,2.653,1330,2.653,1331,5.166,1332,2.653,1333,5.166,1334,4.177,1335,2.653]],["t/177",[0,0.513,12,2.678,30,2.22,33,2.762,42,3.168,46,3.983,124,3.772,130,1.335,134,3.772,622,2.326,644,2.599,721,3.592,822,3.434,854,3.054,1274,3.054,1283,2.762,1336,3.983]],["t/179",[0,0.535,3,2.709,14,2.791,55,4.15,86,4.743,101,4.414,104,4.15,162,4.743,620,4.743,1070,4.414,1172,4.743,1269,4.15,1317,5.185,1337,5.855,1338,5.855,1339,5.855]],["t/181",[0,0.542,3,2.747,118,2.919,142,4.209,518,3.987,520,4.476,526,3.987,530,5.259,622,2.458,733,4.209,1064,4.476,1269,4.209,1340,5.939,1341,5.939,1342,5.939]],["t/183",[3,1.553,16,1.968,25,2.146,45,2.082,70,2.934,111,2.071,128,0.998,185,2.38,209,2.146,240,2.249,254,2.38,256,1.354,267,4.239,269,3.772,295,2.973,519,2.973,533,1.762,547,3.772,558,2.146,561,2.38,637,2.254,853,2.973,908,2.973,937,1.488,989,4.431,1262,2.531,1264,2.72,1343,3.357,1344,3.357,1345,3.357,1346,4.431,1347,3.357,1348,5.003,1349,3.357,1350,5.003,1351,3.357,1352,3.357,1353,5.003,1354,3.357,1355,3.357,1356,3.357,1357,3.357,1358,3.357,1359,3.357,1360,3.357,1361,3.357,1362,3.357,1363,3.357,1364,3.357,1365,2.973,1366,3.357,1367,3.357,1368,3.357,1369,3.357]],["t/185",[0,0.694,128,1.844,129,1.522,130,1.42,353,3.149,604,2.11,614,3.792,616,2.265,1171,3.792,1270,5.493]],["t/187",[8,2.677,45,2.192,129,1.882,604,2.142,616,2.299,837,3.551,937,1.872,938,2.913,1275,4.228,1276,4.026]],["t/189",[0,0.558,8,2.599,45,2.128,128,1.817,129,1.5,130,1.142,604,2.079,616,2.231,937,1.817,1277,4.333,1278,4.333,1279,4.104,1280,3.322]],["t/191",[0,0.72,8,2.105,18,2.091,30,2.045,45,1.724,127,2.05,128,2.198,130,1.229,158,3.166,256,1.997,533,2.599,618,3.578,644,2.291,937,1.472,938,3.045,1274,2.691,1281,3.324,1282,4.011,1283,2.434]],["t/193",[0,0.67,18,1.86,43,3.433,45,2.038,129,1.8,130,1.093,172,2.19,189,3.073,615,2.361,937,1.741,1284,4.743,1285,3.931,1286,4.743,1287,4.743]],["t/195",[0,0.693,18,1.967,30,1.405,45,1.574,127,1.872,128,1.841,129,1.109,130,1.156,189,2.373,533,2.373,615,2.848,618,3.365,644,2.092,937,1.344,938,2.864,1208,3.409,1280,3.838,1283,2.223,1285,3.036,1288,4.157,1289,3.036,1290,3.663,1291,3.663,1292,3.036]],["t/197",[8,2.21,43,3.048,127,2.152,129,1.858,240,2.336,256,2.096,558,3.323,604,1.768,615,3.054,616,1.898,644,2.405,817,3.49,878,3.918,932,3.685,937,1.545,1280,2.825,1281,3.49,1293,4.211,1294,4.211,1295,4.211,1296,3.685]],["t/199",[18,1.631,128,2.004,129,2.091,253,3.639,256,2.071,279,3.282,615,3.036,900,4.159,1276,3.282,1288,3.447,1289,3.447,1292,3.447,1303,3.87,1310,4.159,1311,4.159,1370,4.547,1371,5.134,1372,5.134]],["t/201",[0,0.513,12,2.678,30,2.22,33,2.762,42,3.168,46,3.983,124,3.772,130,1.335,134,3.772,622,2.326,644,2.599,721,3.592,822,3.434,854,3.054,1274,3.054,1283,2.762,1336,3.983]],["t/203",[0,0.688,128,1.817,129,1.5,130,1.407,275,3.736,276,3.736,353,3.103,604,2.079,614,3.736,616,2.231,1171,3.736]],["t/205",[45,2.16,129,1.865,275,3.792,276,3.792,604,2.11,616,2.265,837,3.498,937,1.844,938,2.87,1275,4.165,1276,3.966]],["t/207",[0,0.55,45,2.097,128,1.791,129,1.478,130,1.125,275,3.682,276,3.682,604,2.049,616,2.199,937,1.791,1277,4.27,1278,4.27,1279,4.045,1280,3.274]],["t/209",[0,0.7,18,1.694,30,1.656,45,1.856,128,2.054,130,1.29,256,2.15,533,2.798,578,3.779,615,2.15,618,2.898,937,2.054,938,2.466,1274,2.898,1281,3.579,1283,2.621,1373,4.019,1374,4.721]],["t/211",[207,2.631,256,2.958,267,5.678,274,4.414,275,3.579,276,3.579,615,2.361,937,1.741,1373,4.414,1375,5.185,1376,5.185,1377,5.185,1378,5.185]],["t/213",[114,3.245,240,2.873,275,3.908,276,3.908,279,4.088,523,4.819,1011,5.199,1173,5.18,1379,5.662]],["t/215",[0,0.513,12,2.678,30,2.22,33,2.762,42,3.168,46,3.983,124,3.772,130,1.335,134,3.772,622,2.326,644,2.599,721,3.592,822,3.434,854,3.054,1274,3.054,1283,2.762,1336,3.983]],["t/217",[0,0.682,128,1.791,129,1.478,130,1.394,254,4.27,270,3.851,271,3.851,353,3.058,604,2.049,614,3.682,616,2.199,1171,3.682]],["t/219",[45,2.16,129,1.865,270,3.966,271,3.966,604,2.11,616,2.265,837,3.498,937,1.844,938,2.87,1275,4.165,1276,3.966]],["t/221",[0,0.55,45,2.097,128,1.791,129,1.478,130,1.125,270,3.851,271,3.851,604,2.049,616,2.199,937,1.791,1277,4.27,1278,4.27,1279,4.045,1280,3.274]],["t/223",[0,0.7,18,1.694,30,1.656,45,1.856,128,2.054,130,1.29,256,2.15,533,2.798,578,3.779,615,2.15,618,2.898,937,2.054,938,2.466,1274,2.898,1281,3.579,1283,2.621,1373,4.019,1374,4.721]],["t/225",[207,2.631,256,2.958,267,5.678,270,3.743,271,3.743,274,4.414,615,2.361,937,1.741,1373,4.414,1375,5.185,1376,5.185,1377,5.185,1378,5.185]],["t/227",[114,3.245,240,2.873,270,4.088,271,4.088,279,4.088,523,4.819,1011,5.199,1173,5.18,1379,5.662]],["t/229",[0,0.527,12,2.752,30,2.259,33,2.838,42,3.256,124,3.877,130,1.358,622,2.39,644,2.671,721,3.691,822,3.529,854,3.138,1274,3.138,1283,2.838,1336,4.093]],["t/231",[0,0.694,128,1.844,129,1.522,130,1.42,353,3.149,604,2.11,614,3.792,616,2.265,1171,3.792,1271,5.493]],["t/233",[8,2.677,45,2.192,129,1.882,604,2.142,616,2.299,837,3.551,937,1.872,938,2.913,1275,4.228,1276,4.026]],["t/235",[0,0.558,8,2.599,45,2.128,128,1.817,129,1.5,130,1.142,604,2.079,616,2.231,937,1.817,1277,4.333,1278,4.333,1279,4.104,1280,3.322]],["t/237",[0,0.716,8,2.081,18,2.075,30,2.029,45,1.704,127,2.026,128,2.186,130,1.22,158,3.128,256,1.973,533,3.428,618,3.55,644,2.264,937,1.455,938,3.021,1274,2.66,1282,3.964,1283,2.405,1380,3.964]],["t/239",[0,0.67,18,1.86,43,3.433,45,2.038,129,1.8,130,1.093,172,2.19,189,3.073,615,2.361,937,1.741,1284,4.743,1285,3.931,1286,4.743,1287,4.743]],["t/241",[0,0.693,18,1.967,30,1.405,45,1.574,127,1.872,128,1.841,129,1.109,130,1.156,189,2.373,533,2.373,615,2.848,618,3.365,644,2.092,937,1.344,938,2.864,1208,3.409,1280,3.838,1283,2.223,1285,3.036,1288,4.157,1289,3.036,1290,3.663,1291,3.663,1292,3.036]],["t/243",[8,2.183,43,3.01,127,2.125,129,1.847,240,2.307,256,2.071,533,2.695,558,3.282,604,1.746,615,3.036,616,1.874,644,2.375,817,3.447,878,3.87,932,3.639,937,1.526,1280,2.791,1293,4.159,1294,4.159,1295,4.159,1296,3.639,1380,4.159]],["t/245",[129,2.029,253,3.983,256,2.266,279,3.592,615,3.169,900,4.552,1276,3.592,1288,3.772,1289,3.772,1292,3.772,1303,4.235,1310,4.552,1311,4.552,1370,4.975]],["t/247",[0,0.513,12,2.678,30,2.22,33,2.762,42,3.168,46,3.983,124,3.772,130,1.335,134,3.772,622,2.326,644,2.599,721,3.592,822,3.434,854,3.054,1274,3.054,1283,2.762,1336,3.983]],["t/249",[0,0.575,14,3.001,37,4.464,118,3.095,175,3.001,1272,4.464,1381,6.297,1382,5.101,1383,6.297,1384,5.576,1385,5.576]],["t/251",[0,0.352,3,1.783,30,1.197,79,3.122,86,4.484,118,3.183,147,3.412,175,3.087,202,3.122,240,1.732,251,2.587,269,2.905,518,2.587,554,2.905,615,1.554,620,3.122,675,3.412,750,2.731,805,2.731,891,2.905,904,3.122,913,3.412,1172,3.122,1272,4.59,1279,2.587,1296,2.731,1365,4.901,1380,3.122,1382,3.122,1384,5.735,1385,3.412,1386,3.854,1387,3.854,1388,3.854,1389,3.854,1390,3.854,1391,3.854,1392,3.854,1393,5.535,1394,3.854,1395,3.854,1396,3.412]],["t/253",[45,2.192,116,5.576,175,3.001,547,4.747,1067,4.747,1382,5.101,1396,5.576,1397,6.297,1398,6.297,1399,6.297,1400,6.297]],["t/255",[42,2.47,45,1.525,100,3.878,118,2.977,135,5.31,179,3.548,287,2.8,408,2.94,668,3.878,733,3.104,1251,3.878,1272,5.31,1401,4.38,1402,6.057,1403,4.38,1404,4.38,1405,4.38,1406,4.38,1407,4.38,1408,6.057,1409,6.057,1410,6.057,1411,7.492,1412,4.38,1413,4.38,1414,4.38]],["t/257",[0,0.463,14,2.417,44,3.823,95,2.757,127,2.1,142,3.595,352,4.491,404,3.823,523,5.042,524,3.595,535,4.491,733,3.595,810,4.491,933,3.823,1243,4.491,1272,3.595,1346,4.491,1415,5.072,1416,6.688,1417,5.072,1418,5.072,1419,5.072,1420,5.072,1421,5.072,1422,5.072]],["t/260",[0,0.557,18,2.391,26,4.325,84,2.83,130,1.304,254,3.137,256,1.785,335,2.595,411,2.496,412,3.137,479,4.096,501,3.919,508,2.83,516,3.919,644,2.048,694,3.336,742,3.336,750,3.137,805,3.137,937,1.316,1423,4.426,1424,4.426,1425,6.101,1426,3.586,1427,4.426,1428,4.426,1429,4.426,1430,4.426,1431,4.426,1432,4.426]],["t/262",[0,0.652,10,3.103,48,2.607,54,2.825,106,3.745,128,1.869,129,1.134,130,1.174,183,3.103,242,4.321,287,2.955,322,4.093,426,4.22,427,4.093,439,3.484,500,3.484,508,2.955,615,1.864,618,2.512,694,3.484,937,1.374,939,3.484,1426,3.745,1433,4.622,1434,4.093,1435,4.622,1436,4.622]],["t/264",[0,0.369,48,3.228,91,3.578,127,2.37,128,1.702,130,1.069,162,3.273,242,3.749,287,2.583,441,4.637,477,3.578,488,3.045,499,3.578,508,2.583,551,3.578,614,2.47,622,1.672,642,2.583,700,3.578,733,2.864,891,4.315,1265,3.578,1437,4.04,1438,5.724,1439,5.724,1440,4.04,1441,4.04,1442,4.04,1443,6.648,1444,4.04,1445,4.04,1446,4.04,1447,4.04,1448,4.04,1449,4.04,1450,4.04]],["t/266",[18,1.86,128,1.741,183,3.931,415,3.931,475,3.931,479,4.925,642,3.743,937,1.741,1262,4.414,1426,4.743,1434,5.185,1451,5.855,1452,5.855,1453,5.855,1454,5.855]]],"invertedIndex":[["",{"_index":176,"t":{"11":{"position":[[987,1],[1066,1],[1088,1],[1154,1],[1167,1],[1215,1],[1262,1],[1320,1],[1404,1],[1474,1]]},"13":{"position":[[574,1],[664,1],[741,1],[781,1],[832,1],[853,1],[922,2],[937,1],[1002,2],[1016,1],[1081,2],[1100,1],[1147,1],[1217,1]]},"15":{"position":[[535,1],[616,1],[668,1],[715,1],[758,1],[779,1],[848,1],[888,1],[951,1],[972,1],[1062,1],[1112,1],[1166,1]]},"21":{"position":[[172,1]]},"37":{"position":[[154,1],[174,1],[257,1]]},"39":{"position":[[330,1],[352,1],[406,1],[419,1],[478,1],[524,1]]},"41":{"position":[[348,1],[422,1]]},"43":{"position":[[724,1],[788,1],[801,2],[804,2]]},"58":{"position":[[109,1],[129,1],[207,1],[241,1],[294,1]]},"64":{"position":[[384,1],[404,1],[482,1],[516,1],[569,1]]},"66":{"position":[[972,1],[998,1],[1101,1],[1158,1],[1259,1],[1355,1],[2107,1]]},"69":{"position":[[349,1],[374,1]]},"71":{"position":[[39,1],[64,1]]},"73":{"position":[[39,1],[55,1],[99,1],[121,1],[176,1]]},"75":{"position":[[248,1],[276,1]]},"77":{"position":[[39,1],[55,1],[103,1],[129,1],[188,1]]},"79":{"position":[[654,1],[672,1],[835,1],[902,1],[984,1]]},"83":{"position":[[207,1],[230,1],[314,1],[389,1],[445,1],[535,1],[615,1],[643,1],[699,1],[768,1],[844,1],[898,1],[968,1]]},"104":{"position":[[417,1],[488,1],[716,1],[754,1]]},"120":{"position":[[95,1],[480,1],[507,1],[526,1],[552,1],[570,1],[577,3],[973,3],[980,1],[1005,1],[1106,1],[1176,2],[1306,1],[1355,1],[1447,2],[1482,1],[1539,2]]},"129":{"position":[[469,1],[502,1],[537,1],[818,1],[848,1],[867,1],[893,1],[946,1],[1047,1],[1186,1],[1190,1],[1217,1],[1222,1],[1278,1],[1325,2],[1341,1],[1395,1],[1420,1],[1525,1],[1630,1],[1639,1],[1641,2],[1654,1],[1656,2],[1677,1],[1737,1],[1838,1],[1938,1],[2104,1],[2159,2],[2199,2],[2236,1],[2256,1],[2268,1],[2287,1],[2371,1],[2403,1],[2418,1],[2534,1],[2536,2],[2552,1],[2590,2],[2627,2],[2630,3],[2648,1],[2705,2],[2889,1],[2891,2]]},"137":{"position":[[356,1],[389,1],[424,1],[611,1],[621,1],[652,1],[679,1],[809,1],[868,1],[977,1],[1002,1],[1063,1],[1099,1],[1171,1],[1199,2],[1383,1]]},"140":{"position":[[72,1],[211,1],[328,1],[342,1],[403,1],[560,2],[572,3],[584,1]]},"147":{"position":[[87,1]]},"151":{"position":[[30,1]]},"175":{"position":[[312,1],[367,1],[447,1],[579,1],[651,1],[700,1],[806,1]]}}}],["0",{"_index":182,"t":{"11":{"position":[[1108,2]]},"39":{"position":[[372,2]]},"41":{"position":[[172,1]]},"120":{"position":[[1179,2]]}}}],["0.0",{"_index":447,"t":{"41":{"position":[[183,3]]}}}],["0.75",{"_index":961,"t":{"120":{"position":[[554,5]]}}}],["0.95",{"_index":643,"t":{"66":{"position":[[811,5],[1338,4]]}}}],["1",{"_index":491,"t":{"43":{"position":[[807,2]]},"120":{"position":[[92,2],[105,3],[118,1]]}}}],["1.0",{"_index":448,"t":{"41":{"position":[[187,3]]}}}],["10",{"_index":196,"t":{"11":{"position":[[1416,2]]},"51":{"position":[[180,4]]},"73":{"position":[[69,2]]},"77":{"position":[[69,2]]},"175":{"position":[[576,2],[803,2]]}}}],["100",{"_index":1139,"t":{"129":{"position":[[2270,3]]}}}],["1024",{"_index":1191,"t":{"137":{"position":[[613,4]]}}}],["17",{"_index":1111,"t":{"129":{"position":[[1219,2]]}}}],["18.04",{"_index":1304,"t":{"173":{"position":[[167,5]]},"175":{"position":[[7,5],[218,5]]}}}],["1st",{"_index":709,"t":{"73":{"position":[[135,3]]},"77":{"position":[[143,3]]}}}],["255",{"_index":446,"t":{"41":{"position":[[174,3]]}}}],["3",{"_index":1318,"t":{"175":{"position":[[197,1]]}}}],["3)).astype(np.uint8",{"_index":464,"t":{"41":{"position":[[401,20]]}}}],["3.10",{"_index":1314,"t":{"175":{"position":[[105,5]]}}}],["3.6",{"_index":1312,"t":{"175":{"position":[[31,3]]}}}],["3.7",{"_index":616,"t":{"64":{"position":[[53,3]]},"116":{"position":[[28,3]]},"118":{"position":[[23,3]]},"125":{"position":[[28,3]]},"127":{"position":[[23,3]]},"133":{"position":[[28,3]]},"135":{"position":[[23,3]]},"159":{"position":[[99,3]]},"161":{"position":[[68,3]]},"163":{"position":[[25,3]]},"171":{"position":[[124,5]]},"185":{"position":[[99,3]]},"187":{"position":[[68,3]]},"189":{"position":[[25,3]]},"197":{"position":[[124,5]]},"203":{"position":[[106,3]]},"205":{"position":[[74,3]]},"207":{"position":[[25,3]]},"217":{"position":[[115,3]]},"219":{"position":[[75,3]]},"221":{"position":[[25,3]]},"231":{"position":[[101,3]]},"233":{"position":[[68,3]]},"235":{"position":[[25,3]]},"243":{"position":[[130,5]]}}}],["3.7.5",{"_index":1294,"t":{"171":{"position":[[147,7]]},"197":{"position":[[147,7]]},"243":{"position":[[153,7]]}}}],["3.8",{"_index":1319,"t":{"175":{"position":[[234,4]]}}}],["3.9.0",{"_index":1295,"t":{"171":{"position":[[158,9]]},"197":{"position":[[158,9]]},"243":{"position":[[164,9]]}}}],["3000:3000",{"_index":1351,"t":{"183":{"position":[[277,11]]}}}],["3pm",{"_index":1145,"t":{"129":{"position":[[2410,3]]}}}],["400",{"_index":773,"t":{"83":{"position":[[645,3]]}}}],["401",{"_index":778,"t":{"83":{"position":[[701,3]]}}}],["403",{"_index":781,"t":{"83":{"position":[[770,3]]}}}],["404",{"_index":786,"t":{"83":{"position":[[846,3]]}}}],["429",{"_index":789,"t":{"83":{"position":[[900,3]]}}}],["5",{"_index":710,"t":{"73":{"position":[[147,1]]},"77":{"position":[[155,1]]}}}],["500",{"_index":793,"t":{"83":{"position":[[970,3]]}}}],["587",{"_index":1098,"t":{"129":{"position":[[981,4]]}}}],["5pm",{"_index":1112,"t":{"129":{"position":[[1229,3]]}}}],["60",{"_index":646,"t":{"66":{"position":[[855,2],[1289,2]]},"120":{"position":[[572,4]]},"129":{"position":[[1632,2]]}}}],["80",{"_index":1231,"t":{"145":{"position":[[117,3]]}}}],["800",{"_index":463,"t":{"41":{"position":[[396,4]]}}}],["8000:8000",{"_index":1355,"t":{"183":{"position":[[404,11]]}}}],["800x600",{"_index":456,"t":{"41":{"position":[[291,7]]}}}],["9",{"_index":1108,"t":{"129":{"position":[[1188,1]]}}}],["9am",{"_index":1109,"t":{"129":{"position":[[1197,3]]}}}],["_",{"_index":186,"t":{"11":{"position":[[1145,2]]},"39":{"position":[[397,2]]}}}],["__main__",{"_index":986,"t":{"120":{"position":[[1542,11]]}}}],["__name__",{"_index":985,"t":{"120":{"position":[[1530,8]]}}}],["above",{"_index":715,"t":{"75":{"position":[[176,5]]},"120":{"position":[[1653,5]]}}}],["accept",{"_index":414,"t":{"37":{"position":[[24,6]]},"41":{"position":[[24,6]]}}}],["acceptable",{"_index":155,"t":{"11":{"position":[[517,10]]}}}],["accepts",{"_index":407,"t":{"35":{"position":[[18,7]]}}}],["access",{"_index":251,"t":{"17":{"position":[[20,6]]},"64":{"position":[[244,6]]},"83":{"position":[[90,6],[288,6]]},"102":{"position":[[511,6]]},"125":{"position":[[113,6]]},"251":{"position":[[382,6]]}}}],["accessible",{"_index":350,"t":{"25":{"position":[[309,10]]}}}],["accessing",{"_index":928,"t":{"112":{"position":[[239,9]]}}}],["accidentally",{"_index":889,"t":{"104":{"position":[[216,12]]}}}],["according",{"_index":1240,"t":{"147":{"position":[[51,9]]}}}],["account",{"_index":250,"t":{"17":{"position":[[8,7]]},"100":{"position":[[177,8]]},"102":{"position":[[249,8]]},"108":{"position":[[27,7]]},"112":{"position":[[266,8]]},"125":{"position":[[95,7]]}}}],["account/api",{"_index":902,"t":{"106":{"position":[[98,11]]}}}],["accuracy",{"_index":65,"t":{"7":{"position":[[419,8]]},"66":{"position":[[79,9],[159,8],[1497,8],[1557,9]]}}}],["action",{"_index":123,"t":{"9":{"position":[[415,6]]},"13":{"position":[[252,6],[860,6]]}}}],["add",{"_index":727,"t":{"79":{"position":[[401,3]]}}}],["adding",{"_index":1320,"t":{"175":{"position":[[281,6]]}}}],["addition",{"_index":835,"t":{"95":{"position":[[3,8]]}}}],["additionally",{"_index":396,"t":{"31":{"position":[[208,13]]}}}],["address",{"_index":1369,"t":{"183":{"position":[[783,7]]}}}],["addressing",{"_index":1051,"t":{"123":{"position":[[1501,10]]}}}],["affordable",{"_index":540,"t":{"51":{"position":[[215,10]]}}}],["again",{"_index":911,"t":{"108":{"position":[[290,6]]},"137":{"position":[[1420,5]]}}}],["against",{"_index":64,"t":{"7":{"position":[[411,7]]},"66":{"position":[[71,7],[1506,7]]},"79":{"position":[[58,7]]}}}],["aggregating",{"_index":1119,"t":{"129":{"position":[[1586,11]]}}}],["ago",{"_index":473,"t":{"43":{"position":[[181,3]]}}}],["ahead",{"_index":1316,"t":{"175":{"position":[[156,6]]}}}],["ai",{"_index":536,"t":{"51":{"position":[[106,2],[226,2]]},"62":{"position":[[69,2]]}}}],["alert",{"_index":970,"t":{"120":{"position":[[946,5],[1471,10]]}}}],["algorithm",{"_index":1449,"t":{"264":{"position":[[315,11]]}}}],["allocation",{"_index":1016,"t":{"123":{"position":[[534,10],[651,10]]}}}],["allow",{"_index":1392,"t":{"251":{"position":[[363,5]]}}}],["allowed",{"_index":783,"t":{"83":{"position":[[804,7]]}}}],["allowing",{"_index":399,"t":{"31":{"position":[[327,8]]}}}],["allows",{"_index":255,"t":{"17":{"position":[[104,6]]},"51":{"position":[[76,6]]}}}],["along",{"_index":610,"t":{"62":{"position":[[94,5]]},"110":{"position":[[67,5]]}}}],["already",{"_index":694,"t":{"69":{"position":[[114,7]]},"79":{"position":[[451,7]]},"260":{"position":[[175,7]]},"262":{"position":[[342,7]]}}}],["alternatively",{"_index":894,"t":{"104":{"position":[[526,14]]}}}],["alternatives",{"_index":1328,"t":{"175":{"position":[[509,12],[745,12]]}}}],["always",{"_index":244,"t":{"15":{"position":[[791,6]]}}}],["ambiguous",{"_index":1216,"t":{"140":{"position":[[144,9]]},"149":{"position":[[26,10]]}}}],["analysis",{"_index":24,"t":{"3":{"position":[[274,9]]},"60":{"position":[[275,8]]},"66":{"position":[[299,8],[1961,9]]},"129":{"position":[[3024,9]]},"137":{"position":[[1553,9]]}}}],["analytics",{"_index":993,"t":{"123":{"position":[[69,9],[471,9],[1706,9]]}}}],["analyzed",{"_index":576,"t":{"60":{"position":[[22,8]]}}}],["analyzing",{"_index":529,"t":{"49":{"position":[[122,9]]},"123":{"position":[[564,9]]}}}],["another",{"_index":202,"t":{"13":{"position":[[147,7]]},"79":{"position":[[561,7]]},"251":{"position":[[522,7]]}}}],["answer",{"_index":141,"t":{"11":{"position":[[295,6]]},"58":{"position":[[355,6]]},"60":{"position":[[166,7]]},"64":{"position":[[630,6]]},"66":{"position":[[120,6],[1425,6]]},"120":{"position":[[959,6]]},"129":{"position":[[2097,6]]},"137":{"position":[[1164,6],[1192,6]]},"140":{"position":[[84,6],[464,6]]}}}],["answered",{"_index":298,"t":{"19":{"position":[[623,8],[712,8]]},"143":{"position":[[35,8]]}}}],["answers",{"_index":291,"t":{"19":{"position":[[532,7]]}}}],["anybody",{"_index":868,"t":{"102":{"position":[[168,7]]}}}],["api",{"_index":622,"t":{"64":{"position":[[162,3],[255,4]]},"81":{"position":[[92,3]]},"83":{"position":[[36,3],[946,3]]},"100":{"position":[[30,4],[78,4],[186,3]]},"102":{"position":[[17,3],[145,3],[186,3],[300,3],[318,3],[414,3],[521,3],[540,3]]},"104":{"position":[[49,3],[137,3],[315,3],[429,3],[558,3]]},"106":{"position":[[20,3]]},"108":{"position":[[55,3],[94,3],[339,3]]},"110":{"position":[[7,3]]},"112":{"position":[[155,3]]},"120":{"position":[[287,3]]},"129":{"position":[[56,3],[3016,3]]},"137":{"position":[[56,3],[1545,3]]},"177":{"position":[[122,3]]},"181":{"position":[[87,3]]},"201":{"position":[[122,3]]},"215":{"position":[[122,3]]},"229":{"position":[[122,3]]},"247":{"position":[[122,3]]},"264":{"position":[[335,3]]}}}],["api_2gdxmflhj",{"_index":855,"t":{"100":{"position":[[207,16]]}}}],["apiexception",{"_index":746,"t":{"83":{"position":[[68,13],[178,13],[370,12]]},"87":{"position":[[73,13]]}}}],["app",{"_index":621,"t":{"64":{"position":[[145,3]]}}}],["appear",{"_index":304,"t":{"19":{"position":[[810,6]]}}}],["application",{"_index":207,"t":{"13":{"position":[[292,11],[355,11],[972,11],[1051,11],[1135,11]]},"19":{"position":[[428,11]]},"51":{"position":[[64,11]]},"53":{"position":[[78,11],[160,11]]},"89":{"position":[[52,11],[185,12]]},"91":{"position":[[194,12]]},"93":{"position":[[155,11]]},"95":{"position":[[78,11]]},"97":{"position":[[124,11]]},"102":{"position":[[462,12]]},"120":{"position":[[264,11],[342,12]]},"123":{"position":[[30,11],[172,11],[481,11],[804,11],[1915,12]]},"129":{"position":[[33,11],[111,12],[1374,11],[2917,11]]},"131":{"position":[[163,12],[217,11]]},"137":{"position":[[33,11],[111,12],[956,11],[1446,11]]},"211":{"position":[[149,11]]},"225":{"position":[[150,11]]}}}],["applications",{"_index":12,"t":{"3":{"position":[[118,12],[191,12],[333,12]]},"5":{"position":[[7,13],[56,12]]},"7":{"position":[[56,12],[331,13],[919,13],[1035,13],[1089,13],[1158,12]]},"23":{"position":[[91,12]]},"47":{"position":[[73,13]]},"55":{"position":[[111,13]]},"81":{"position":[[14,12]]},"97":{"position":[[251,12]]},"112":{"position":[[212,12],[298,12]]},"157":{"position":[[308,12]]},"177":{"position":[[146,12]]},"201":{"position":[[146,12]]},"215":{"position":[[146,12]]},"229":{"position":[[147,12]]},"247":{"position":[[146,12]]}}}],["apply",{"_index":93,"t":{"7":{"position":[[946,5]]},"55":{"position":[[27,5]]}}}],["appropriate",{"_index":816,"t":{"91":{"position":[[20,11]]}}}],["apt",{"_index":1302,"t":{"173":{"position":[[119,3],[135,3]]},"175":{"position":[[352,3],[393,3]]}}}],["arch",{"_index":1307,"t":{"173":{"position":[[245,4]]}}}],["arduino",{"_index":1416,"t":{"257":{"position":[[33,7],[223,8]]}}}],["area",{"_index":1063,"t":{"123":{"position":[[1830,5]]}}}],["areas",{"_index":1047,"t":{"123":{"position":[[1395,5],[1539,6]]}}}],["argument",{"_index":893,"t":{"104":{"position":[[516,9]]}}}],["arm",{"_index":1373,"t":{"209":{"position":[[114,3]]},"211":{"position":[[120,3]]},"223":{"position":[[114,3]]},"225":{"position":[[121,3]]}}}],["arms",{"_index":389,"t":{"31":{"position":[[93,5]]}}}],["array",{"_index":487,"t":{"43":{"position":[[642,6]]}}}],["arrays",{"_index":413,"t":{"35":{"position":[[91,7]]},"39":{"position":[[125,7]]},"41":{"position":[[47,7]]},"43":{"position":[[95,6],[388,6]]}}}],["ask",{"_index":969,"t":{"120":{"position":[[919,3]]},"140":{"position":[[38,3],[137,3]]},"149":{"position":[[126,3]]}}}],["ask.py",{"_index":627,"t":{"64":{"position":[[338,6],[678,6]]}}}],["ask_async",{"_index":131,"t":{"11":{"position":[[139,9],[195,9],[443,9]]}}}],["asked",{"_index":245,"t":{"15":{"position":[[815,5]]}}}],["asking",{"_index":931,"t":{"114":{"position":[[56,6]]}}}],["aspects",{"_index":41,"t":{"7":{"position":[[36,7]]}}}],["assembly",{"_index":365,"t":{"27":{"position":[[251,9]]}}}],["assigned",{"_index":914,"t":{"110":{"position":[[142,8]]}}}],["assist",{"_index":331,"t":{"25":{"position":[[45,6]]}}}],["assistance",{"_index":1418,"t":{"257":{"position":[[159,10]]}}}],["assume",{"_index":168,"t":{"11":{"position":[[808,6]]},"13":{"position":[[343,6]]}}}],["assuming",{"_index":1277,"t":{"163":{"position":[[0,8]]},"189":{"position":[[0,8]]},"207":{"position":[[0,8]]},"221":{"position":[[0,8]]},"235":{"position":[[0,8]]}}}],["async",{"_index":233,"t":{"15":{"position":[[160,5],[724,5]]}}}],["asynchronous",{"_index":76,"t":{"7":{"position":[[610,12],[668,12]]},"9":{"position":[[55,12]]}}}],["asynchronously",{"_index":80,"t":{"7":{"position":[[718,14]]},"11":{"position":[[114,14]]},"15":{"position":[[31,15],[821,14]]}}}],["attempting",{"_index":231,"t":{"15":{"position":[[94,10]]}}}],["attention",{"_index":1183,"t":{"131":{"position":[[387,9]]}}}],["audit",{"_index":730,"t":{"79":{"position":[[511,5]]}}}],["authenticate",{"_index":851,"t":{"100":{"position":[[97,12]]}}}],["authorize",{"_index":852,"t":{"100":{"position":[[133,9]]}}}],["automatically",{"_index":578,"t":{"60":{"position":[[73,13]]},"66":{"position":[[460,13]]},"104":{"position":[[288,13]]},"209":{"position":[[142,13]]},"223":{"position":[[142,13]]}}}],["automating",{"_index":332,"t":{"25":{"position":[[55,10]]}}}],["automation",{"_index":320,"t":{"23":{"position":[[148,10]]},"27":{"position":[[60,10]]}}}],["available",{"_index":142,"t":{"11":{"position":[[308,9]]},"15":{"position":[[431,9]]},"123":{"position":[[713,9]]},"181":{"position":[[95,10]]},"257":{"position":[[84,9]]}}}],["avoid",{"_index":802,"t":{"87":{"position":[[87,5]]},"104":{"position":[[210,5]]}}}],["away",{"_index":594,"t":{"60":{"position":[[392,4]]},"129":{"position":[[1538,4]]}}}],["back",{"_index":603,"t":{"60":{"position":[[617,4]]},"95":{"position":[[192,4]]}}}],["backend",{"_index":1353,"t":{"183":{"position":[[303,7],[311,8]]}}}],["backend:latest",{"_index":1354,"t":{"183":{"position":[[380,14]]}}}],["backoff",{"_index":830,"t":{"93":{"position":[[65,7]]}}}],["bad",{"_index":774,"t":{"83":{"position":[[649,3]]},"140":{"position":[[580,3]]}}}],["balance",{"_index":504,"t":{"43":{"position":[[1031,7]]},"66":{"position":[[1489,7]]}}}],["bandwidth",{"_index":262,"t":{"17":{"position":[[190,10]]}}}],["based",{"_index":95,"t":{"7":{"position":[[976,5]]},"9":{"position":[[422,5]]},"13":{"position":[[259,5],[867,5],[958,5],[1037,5],[1121,5]]},"23":{"position":[[24,5]]},"49":{"position":[[159,5]]},"53":{"position":[[132,5]]},"55":{"position":[[57,5]]},"123":{"position":[[1909,5]]},"143":{"position":[[86,5]]},"173":{"position":[[99,5],[201,5]]},"257":{"position":[[41,5]]}}}],["basics",{"_index":1324,"t":{"175":{"position":[[381,6]]}}}],["become",{"_index":349,"t":{"25":{"position":[[297,6]]}}}],["before",{"_index":198,"t":{"11":{"position":[[1427,6]]},"43":{"position":[[476,6],[684,6]]},"66":{"position":[[708,6]]},"112":{"position":[[328,6]]},"137":{"position":[[1404,6]]}}}],["behavior",{"_index":844,"t":{"95":{"position":[[210,9]]},"123":{"position":[[853,9]]}}}],["being",{"_index":1002,"t":{"123":{"position":[[240,5]]}}}],["below",{"_index":681,"t":{"66":{"position":[[1890,5]]},"157":{"position":[[35,5]]},"173":{"position":[[182,7]]}}}],["belt",{"_index":1218,"t":{"140":{"position":[[255,4],[321,6]]}}}],["beneficial",{"_index":1014,"t":{"123":{"position":[[500,10]]}}}],["best",{"_index":632,"t":{"66":{"position":[[231,4]]},"85":{"position":[[52,4]]},"97":{"position":[[199,4]]},"102":{"position":[[111,4],[272,4]]},"104":{"position":[[101,4]]}}}],["beta",{"_index":566,"t":{"58":{"position":[[418,6]]}}}],["better",{"_index":630,"t":{"66":{"position":[[152,6],[529,6]]},"79":{"position":[[285,6]]}}}],["between",{"_index":394,"t":{"31":{"position":[[181,7]]},"89":{"position":[[113,7]]}}}],["bgr",{"_index":430,"t":{"39":{"position":[[158,3]]},"41":{"position":[[100,3],[463,3]]},"43":{"position":[[30,3],[133,3],[212,3],[770,3]]}}}],["bgr_img",{"_index":489,"t":{"43":{"position":[[780,7]]}}}],["bin/bash",{"_index":946,"t":{"120":{"position":[[57,11]]}}}],["binary",{"_index":1213,"t":{"140":{"position":[[42,6]]},"143":{"position":[[17,6]]},"151":{"position":[[14,6]]},"153":{"position":[[23,7]]}}}],["black",{"_index":1230,"t":{"145":{"position":[[91,5]]}}}],["blocked",{"_index":755,"t":{"83":{"position":[[300,10]]}}}],["blue",{"_index":495,"t":{"43":{"position":[[865,4]]}}}],["board",{"_index":1384,"t":{"249":{"position":[[84,6]]},"251":{"position":[[108,6],[229,5],[341,6]]}}}],["boards",{"_index":1402,"t":{"255":{"position":[[26,7],[51,6]]}}}],["body",{"_index":1089,"t":{"129":{"position":[[807,6]]}}}],["body=daily_summary",{"_index":1157,"t":{"129":{"position":[[2859,19]]}}}],["bottlenecks",{"_index":355,"t":{"27":{"position":[[97,12]]}}}],["boxes",{"_index":1219,"t":{"140":{"position":[[260,7],[299,5]]}}}],["breaking",{"_index":573,"t":{"58":{"position":[[521,8]]}}}],["brew",{"_index":1372,"t":{"199":{"position":[[117,4]]}}}],["broad",{"_index":804,"t":{"87":{"position":[[102,5]]}}}],["browser",{"_index":1365,"t":{"183":{"position":[[711,8]]},"251":{"position":[[374,7],[530,7]]}}}],["build",{"_index":10,"t":{"3":{"position":[[105,5]]},"51":{"position":[[90,5]]},"58":{"position":[[0,5]]},"81":{"position":[[150,5]]},"85":{"position":[[92,5]]},"262":{"position":[[223,5]]}}}],["building",{"_index":42,"t":{"7":{"position":[[47,8],[1133,8]]},"13":{"position":[[312,9]]},"81":{"position":[[5,8]]},"157":{"position":[[292,8]]},"177":{"position":[[137,8]]},"201":{"position":[[137,8]]},"215":{"position":[[137,8]]},"229":{"position":[[137,9]]},"247":{"position":[[137,8]]},"255":{"position":[[95,8]]}}}],["built",{"_index":29,"t":{"3":{"position":[[346,5]]},"5":{"position":[[69,5]]}}}],["bunch",{"_index":1433,"t":{"262":{"position":[[25,5]]}}}],["busier",{"_index":1023,"t":{"123":{"position":[[871,6]]}}}],["business",{"_index":552,"t":{"53":{"position":[[272,8]]}}}],["business's",{"_index":1106,"t":{"129":{"position":[[1136,10]]}}}],["button",{"_index":905,"t":{"108":{"position":[[105,7]]},"112":{"position":[[68,6]]}}}],["c",{"_index":1286,"t":{"167":{"position":[[125,1]]},"193":{"position":[[125,1]]},"239":{"position":[[125,1]]}}}],["cable",{"_index":1389,"t":{"251":{"position":[[265,6]]}}}],["call",{"_index":716,"t":{"75":{"position":[[203,5]]},"83":{"position":[[40,5]]},"100":{"position":[[70,4]]}}}],["called",{"_index":1344,"t":{"183":{"position":[[91,6]]}}}],["calls",{"_index":739,"t":{"81":{"position":[[96,6]]}}}],["cam",{"_index":179,"t":{"11":{"position":[[1062,3]]},"39":{"position":[[326,3]]},"255":{"position":[[272,3]]}}}],["cam.read",{"_index":187,"t":{"11":{"position":[[1156,10]]},"39":{"position":[[408,10]]}}}],["cam.release",{"_index":200,"t":{"11":{"position":[[1460,13]]},"39":{"position":[[510,13]]}}}],["camera",{"_index":118,"t":{"9":{"position":[[306,6]]},"11":{"position":[[1101,6],[1196,6],[1488,6]]},"39":{"position":[[365,6],[538,6]]},"51":{"position":[[151,7]]},"123":{"position":[[1768,6],[1840,6]]},"125":{"position":[[79,6]]},"129":{"position":[[423,6]]},"133":{"position":[[79,6]]},"137":{"position":[[310,6]]},"157":{"position":[[192,6]]},"181":{"position":[[52,6]]},"249":{"position":[[77,6]]},"251":{"position":[[101,6],[222,6],[334,6]]},"255":{"position":[[192,6],[241,6]]}}}],["cameras",{"_index":476,"t":{"43":{"position":[[242,7]]},"45":{"position":[[185,7],[314,7],[325,7]]},"49":{"position":[[165,8]]}}}],["campaigns",{"_index":1030,"t":{"123":{"position":[[1001,9]]}}}],["cap",{"_index":1080,"t":{"129":{"position":[[465,3]]},"137":{"position":[[352,3]]}}}],["cap.read",{"_index":1082,"t":{"129":{"position":[[504,10]]},"137":{"position":[[391,10]]}}}],["cap.release",{"_index":1083,"t":{"129":{"position":[[515,13]]},"137":{"position":[[402,13]]}}}],["capabilities",{"_index":103,"t":{"7":{"position":[[1228,13]]},"31":{"position":[[142,12]]}}}],["capture",{"_index":188,"t":{"11":{"position":[[1169,7]]},"39":{"position":[[421,7]]},"129":{"position":[[397,7],[1887,7]]},"137":{"position":[[284,7],[1367,7]]}}}],["capture_image",{"_index":1079,"t":{"129":{"position":[[448,16],[1840,15],[2957,13]]},"137":{"position":[[335,16],[1065,15],[1486,13]]}}}],["captures",{"_index":1158,"t":{"129":{"position":[[2929,8]]},"137":{"position":[[1458,8]]}}}],["cardboard",{"_index":1221,"t":{"140":{"position":[[289,9]]}}}],["case",{"_index":156,"t":{"11":{"position":[[541,4]]}}}],["cases",{"_index":19,"t":{"3":{"position":[[220,6]]}}}],["catch",{"_index":798,"t":{"87":{"position":[[0,5]]},"97":{"position":[[84,5]]}}}],["catching",{"_index":803,"t":{"87":{"position":[[93,8]]}}}],["cause",{"_index":1452,"t":{"266":{"position":[[123,5]]}}}],["cautious",{"_index":895,"t":{"104":{"position":[[621,8]]}}}],["centers",{"_index":341,"t":{"25":{"position":[[154,8]]}}}],["change",{"_index":483,"t":{"43":{"position":[[528,6]]},"58":{"position":[[458,6]]}}}],["changes",{"_index":574,"t":{"58":{"position":[[530,8]]}}}],["changing",{"_index":1404,"t":{"255":{"position":[[133,8]]}}}],["channel",{"_index":465,"t":{"41":{"position":[[430,7]]},"43":{"position":[[462,7],[670,7],[753,7]]}}}],["channels=wf.getnchannels",{"_index":1197,"t":{"137":{"position":[[739,27]]}}}],["check",{"_index":43,"t":{"7":{"position":[[87,5]]},"75":{"position":[[29,5]]},"102":{"position":[[50,5]]},"167":{"position":[[3,5]]},"171":{"position":[[3,5]]},"193":{"position":[[3,5]]},"197":{"position":[[3,5]]},"239":{"position":[[3,5]]},"243":{"position":[[3,5]]}}}],["checker",{"_index":753,"t":{"83":{"position":[[265,9]]}}}],["checking",{"_index":1208,"t":{"137":{"position":[[1411,8]]},"169":{"position":[[259,9]]},"195":{"position":[[259,9]]},"241":{"position":[[259,9]]}}}],["checks",{"_index":1005,"t":{"123":{"position":[[273,6]]}}}],["choose",{"_index":1266,"t":{"157":{"position":[[0,6]]}}}],["chrome",{"_index":1395,"t":{"251":{"position":[[512,6]]}}}],["chunk",{"_index":1190,"t":{"137":{"position":[[605,5]]}}}],["classes",{"_index":812,"t":{"89":{"position":[[35,7]]}}}],["cleanliness",{"_index":1255,"t":{"153":{"position":[[31,13]]}}}],["clear",{"_index":420,"t":{"37":{"position":[[213,7],[240,8]]},"123":{"position":[[1812,5]]},"151":{"position":[[96,5]]}}}],["click",{"_index":904,"t":{"108":{"position":[[72,5],[189,5]]},"112":{"position":[[49,5]]},"251":{"position":[[272,5]]}}}],["clicks",{"_index":1387,"t":{"251":{"position":[[158,7]]}}}],["cloud",{"_index":281,"t":{"19":{"position":[[284,5],[408,5],[728,6],[824,5]]},"75":{"position":[[88,5]]}}}],["clouds",{"_index":1249,"t":{"149":{"position":[[147,6]]}}}],["clutter",{"_index":1258,"t":{"153":{"position":[[136,7]]}}}],["cnc",{"_index":339,"t":{"25":{"position":[[132,3]]},"31":{"position":[[269,3]]}}}],["cobot",{"_index":388,"t":{"31":{"position":[[79,5]]}}}],["code",{"_index":14,"t":{"3":{"position":[[144,5]]},"15":{"position":[[276,4]]},"41":{"position":[[273,4]]},"66":{"position":[[378,4],[2056,4]]},"79":{"position":[[245,4]]},"81":{"position":[[163,4]]},"83":{"position":[[571,4],[596,5]]},"85":{"position":[[105,5]]},"100":{"position":[[148,4]]},"102":{"position":[[80,4]]},"104":{"position":[[258,4],[368,4],[649,4]]},"120":{"position":[[1277,4]]},"179":{"position":[[145,4]]},"249":{"position":[[35,4]]},"257":{"position":[[11,4]]}}}],["codes",{"_index":772,"t":{"83":{"position":[[636,6]]}}}],["collaboration",{"_index":393,"t":{"31":{"position":[[167,13]]}}}],["color",{"_index":442,"t":{"41":{"position":[[104,5]]},"43":{"position":[[216,5],[1025,5]]}}}],["combines",{"_index":606,"t":{"62":{"position":[[36,8]]}}}],["come",{"_index":602,"t":{"60":{"position":[[612,4]]}}}],["comes",{"_index":1436,"t":{"262":{"position":[[293,5]]}}}],["command",{"_index":533,"t":{"49":{"position":[[210,8]]},"120":{"position":[[10,7]]},"165":{"position":[[60,7]]},"169":{"position":[[88,8]]},"183":{"position":[[601,7]]},"191":{"position":[[60,7]]},"195":{"position":[[88,8]]},"209":{"position":[[60,7]]},"223":{"position":[[60,7]]},"237":{"position":[[60,7],[76,7]]},"241":{"position":[[88,8]]},"243":{"position":[[47,7]]}}}],["commands",{"_index":367,"t":{"27":{"position":[[301,8]]}}}],["commit",{"_index":896,"t":{"104":{"position":[[637,6]]}}}],["committing",{"_index":890,"t":{"104":{"position":[[229,10]]}}}],["common",{"_index":532,"t":{"49":{"position":[[148,6]]},"83":{"position":[[617,6]]}}}],["commonly",{"_index":1451,"t":{"266":{"position":[[6,8]]}}}],["communicate",{"_index":160,"t":{"11":{"position":[[651,11]]}}}],["communicating",{"_index":280,"t":{"19":{"position":[[249,13]]}}}],["communication",{"_index":401,"t":{"31":{"position":[[349,13]]}}}],["compatibility",{"_index":474,"t":{"43":{"position":[[189,13]]}}}],["compatible",{"_index":1374,"t":{"209":{"position":[[118,10]]},"223":{"position":[[118,10]]}}}],["complete",{"_index":1173,"t":{"131":{"position":[[154,8]]},"213":{"position":[[6,8]]},"227":{"position":[[6,8]]}}}],["completing",{"_index":1273,"t":{"157":{"position":[[212,10]]}}}],["complex",{"_index":23,"t":{"3":{"position":[[259,7]]},"25":{"position":[[267,7]]},"66":{"position":[[318,7]]}}}],["compose",{"_index":1363,"t":{"183":{"position":[[643,7]]}}}],["compose.yml",{"_index":1345,"t":{"183":{"position":[[105,11]]}}}],["compress/2174925f24362c479b2.jpg",{"_index":735,"t":{"79":{"position":[[795,33]]}}}],["compression",{"_index":1447,"t":{"264":{"position":[[279,11]]}}}],["computer",{"_index":3,"t":{"3":{"position":[[32,9]]},"7":{"position":[[982,8],[1191,8]]},"23":{"position":[[30,8],[200,8]]},"25":{"position":[[14,8]]},"27":{"position":[[26,8]]},"29":{"position":[[14,8],[196,8]]},"31":{"position":[[14,8]]},"33":{"position":[[55,8]]},"55":{"position":[[63,8]]},"58":{"position":[[16,8]]},"60":{"position":[[343,8]]},"123":{"position":[[1876,8]]},"179":{"position":[[72,9]]},"181":{"position":[[25,8]]},"183":{"position":[[23,9]]},"251":{"position":[[245,8]]}}}],["computer's",{"_index":1177,"t":{"131":{"position":[[269,10]]}}}],["computing",{"_index":87,"t":{"7":{"position":[[839,9]]},"62":{"position":[[123,10]]}}}],["confidence",{"_index":58,"t":{"7":{"position":[[345,10],[455,10]]},"60":{"position":[[142,11],[641,11]]},"66":{"position":[[564,10],[662,10],[791,10],[1319,10],[1469,10],[1530,10],[1617,10],[1908,10],[2235,10],[2294,10]]},"79":{"position":[[497,10]]},"120":{"position":[[534,11]]},"129":{"position":[[1563,10]]}}}],["confidence_threshold=0.8",{"_index":1120,"t":{"129":{"position":[[1598,25]]}}}],["confidence_threshold=0.95",{"_index":658,"t":{"66":{"position":[[1232,26]]}}}],["confidence_threshold=confidence",{"_index":973,"t":{"120":{"position":[[1059,32]]}}}],["confident",{"_index":249,"t":{"15":{"position":[[1125,9]]},"66":{"position":[[875,9]]}}}],["configuration",{"_index":1337,"t":{"179":{"position":[[86,13]]}}}],["configure",{"_index":57,"t":{"7":{"position":[[274,10]]},"19":{"position":[[332,9]]},"21":{"position":[[3,9]]},"175":{"position":[[449,9],[702,9]]}}}],["configuring",{"_index":66,"t":{"7":{"position":[[431,11]]}}}],["confirm",{"_index":924,"t":{"112":{"position":[[94,7]]}}}],["conflicts",{"_index":1453,"t":{"266":{"position":[[129,9]]}}}],["connected",{"_index":1064,"t":{"123":{"position":[[1861,9]]},"125":{"position":[[69,9]]},"133":{"position":[[69,9]]},"181":{"position":[[9,9]]}}}],["consider",{"_index":810,"t":{"89":{"position":[[0,8]]},"257":{"position":[[239,8]]}}}],["considered",{"_index":1244,"t":{"147":{"position":[[114,10]]}}}],["consist",{"_index":856,"t":{"100":{"position":[[228,7]]}}}],["constrained",{"_index":1439,"t":{"264":{"position":[[27,12],[394,11]]}}}],["constructor",{"_index":306,"t":{"21":{"position":[[115,11]]},"104":{"position":[[504,11],[596,12]]}}}],["container",{"_index":528,"t":{"49":{"position":[[108,9]]}}}],["containers",{"_index":268,"t":{"19":{"position":[[42,10]]}}}],["contains",{"_index":764,"t":{"83":{"position":[[456,8],[546,8]]}}}],["content",{"_index":1227,"t":{"143":{"position":[[105,8]]}}}],["content/uploads/2010/11/over_flowing_garbage_can.jpg",{"_index":652,"t":{"66":{"position":[[1041,53]]}}}],["context",{"_index":821,"t":{"91":{"position":[[93,7]]},"151":{"position":[[72,8]]}}}],["continue",{"_index":1129,"t":{"129":{"position":[[1823,8],[1921,8],[2088,8]]}}}],["control",{"_index":61,"t":{"7":{"position":[[378,7]]},"23":{"position":[[344,8]]},"29":{"position":[[252,8]]},"31":{"position":[[367,7]]},"66":{"position":[[38,7]]},"102":{"position":[[219,7]]}}}],["conversion",{"_index":1450,"t":{"264":{"position":[[432,10]]}}}],["convert",{"_index":488,"t":{"43":{"position":[[726,7]]},"129":{"position":[[539,7]]},"137":{"position":[[426,7]]},"264":{"position":[[190,7]]}}}],["convey",{"_index":1238,"t":{"145":{"position":[[372,8]]}}}],["conveyor",{"_index":1222,"t":{"140":{"position":[[312,8]]}}}],["copy",{"_index":908,"t":{"108":{"position":[[211,4],[326,4]]},"183":{"position":[[144,4]]}}}],["corresponding",{"_index":1268,"t":{"157":{"position":[[76,13]]}}}],["cost",{"_index":260,"t":{"17":{"position":[[176,5]]},"51":{"position":[[166,4]]}}}],["costs",{"_index":672,"t":{"66":{"position":[[1677,6]]}}}],["couch",{"_index":1169,"t":{"131":{"position":[[99,6],[206,6],[325,6]]},"133":{"position":[[140,5]]},"137":{"position":[[1028,5],[1236,8],[1593,6]]}}}],["counter",{"_index":996,"t":{"123":{"position":[[127,7],[392,7],[608,8],[1151,7],[1370,7],[1477,7],[1792,8],[1989,7]]},"129":{"position":[[1514,10],[2481,7],[2839,7],[3067,8]]}}}],["counter's",{"_index":1162,"t":{"129":{"position":[[3134,9]]}}}],["couple",{"_index":884,"t":{"104":{"position":[[12,6]]}}}],["covers",{"_index":740,"t":{"81":{"position":[[113,6]]}}}],["create",{"_index":16,"t":{"3":{"position":[[184,6]]},"7":{"position":[[266,7]]},"41":{"position":[[281,6]]},"51":{"position":[[193,6]]},"64":{"position":[[152,6],[314,6]]},"69":{"position":[[153,6]]},"97":{"position":[[223,6]]},"108":{"position":[[82,7],[195,7]]},"183":{"position":[[73,6]]}}}],["create_detector(name",{"_index":702,"t":{"69":{"position":[[264,21]]}}}],["created",{"_index":695,"t":{"69":{"position":[[122,7]]}}}],["creates",{"_index":1000,"t":{"123":{"position":[[184,7]]}}}],["creating",{"_index":701,"t":{"69":{"position":[[219,8]]},"89":{"position":[[9,8]]},"110":{"position":[[156,8]]},"131":{"position":[[143,8]]}}}],["creation",{"_index":478,"t":{"43":{"position":[[299,10]]}}}],["crowded",{"_index":1053,"t":{"123":{"position":[[1531,7]]}}}],["curl",{"_index":1327,"t":{"175":{"position":[[442,4],[609,4]]}}}],["current",{"_index":913,"t":{"110":{"position":[[51,7]]},"251":{"position":[[493,7]]}}}],["current_hour",{"_index":1114,"t":{"129":{"position":[[1265,12],[1328,12],[2539,12],[2577,12]]}}}],["current_time",{"_index":1140,"t":{"129":{"position":[[2274,12]]}}}],["current_time.strftime(\"%i%p",{"_index":1144,"t":{"129":{"position":[[2373,29]]}}}],["currently",{"_index":565,"t":{"58":{"position":[[405,9]]}}}],["custom",{"_index":811,"t":{"89":{"position":[[18,6]]}}}],["customer",{"_index":1004,"t":{"123":{"position":[[260,9],[844,8],[1047,8],[1415,8],[1568,8],[1614,8],[2103,8]]},"129":{"position":[[1490,8],[3039,8]]}}}],["customers",{"_index":997,"t":{"123":{"position":[[138,9],[769,10],[1125,9],[1339,9]]}}}],["customize",{"_index":1086,"t":{"129":{"position":[[709,9]]}}}],["cutting",{"_index":323,"t":{"23":{"position":[[187,7]]}}}],["cv2",{"_index":173,"t":{"11":{"position":[[951,3]]},"39":{"position":[[322,3]]},"129":{"position":[[174,3]]},"137":{"position":[[174,3]]}}}],["cv2.color_bgr2rgb",{"_index":1085,"t":{"129":{"position":[[603,19]]},"137":{"position":[[490,19]]}}}],["cv2.videocapture(0",{"_index":180,"t":{"11":{"position":[[1068,19]]},"39":{"position":[[332,19]]},"129":{"position":[[471,19]]},"137":{"position":[[358,19]]}}}],["d",{"_index":655,"t":{"66":{"position":[[1156,1]]},"79":{"position":[[670,1]]},"83":{"position":[[228,1]]}}}],["daily",{"_index":1013,"t":{"123":{"position":[[448,5],[2009,5]]},"125":{"position":[[132,5]]},"129":{"position":[[671,5],[2650,6],[3203,5]]}}}],["daily_log",{"_index":1122,"t":{"129":{"position":[[1644,9],[2617,9],[2680,10],[2879,9]]}}}],["daily_log.append(msg",{"_index":1149,"t":{"129":{"position":[[2508,21]]}}}],["daily_summary",{"_index":1150,"t":{"129":{"position":[[2634,13],[2691,13]]}}}],["dashboard",{"_index":305,"t":{"19":{"position":[[830,10]]}}}],["data",{"_index":451,"t":{"41":{"position":[[212,4]]},"60":{"position":[[103,5]]},"66":{"position":[[2016,4]]},"123":{"position":[[1269,4]]},"137":{"position":[[804,4],[838,5],[863,4]]}}}],["database",{"_index":164,"t":{"11":{"position":[[735,9],[831,8],[1351,8]]},"13":{"position":[[415,8]]}}}],["dataset",{"_index":598,"t":{"60":{"position":[[446,8]]},"79":{"position":[[160,8]]}}}],["date",{"_index":921,"t":{"110":{"position":[[250,4]]}}}],["datetime",{"_index":1072,"t":{"129":{"position":[[256,8],[272,9]]}}}],["datetime.now",{"_index":1135,"t":{"129":{"position":[[2144,14]]}}}],["datetime.now().hour",{"_index":1115,"t":{"129":{"position":[[1280,19],[2554,19]]}}}],["datetime.now().replace(hour=start_of_business",{"_index":1141,"t":{"129":{"position":[[2289,46]]}}}],["datetime.now().replace(minute=0",{"_index":1124,"t":{"129":{"position":[[1679,32]]}}}],["day",{"_index":999,"t":{"123":{"position":[[163,4],[429,4],[891,3]]},"129":{"position":[[3184,4]]}}}],["days",{"_index":1024,"t":{"123":{"position":[[907,4]]}}}],["db.get_next_image_query_id",{"_index":210,"t":{"13":{"position":[[428,28],[666,28],[1219,28]]}}}],["db.save(image_query.id",{"_index":171,"t":{"11":{"position":[[883,24],[1296,23]]}}}],["debian",{"_index":1300,"t":{"173":{"position":[[92,6]]}}}],["debug",{"_index":823,"t":{"91":{"position":[[133,5]]}}}],["debugging",{"_index":761,"t":{"83":{"position":[[413,9]]},"87":{"position":[[150,9]]}}}],["decades",{"_index":472,"t":{"43":{"position":[[173,7]]}}}],["decisions",{"_index":1043,"t":{"123":{"position":[[1281,9],[2061,9]]}}}],["def",{"_index":956,"t":{"120":{"position":[[454,3]]},"129":{"position":[[444,3],[765,3],[1233,3]]},"137":{"position":[[331,3],[578,3]]}}}],["default",{"_index":183,"t":{"11":{"position":[[1118,7]]},"39":{"position":[[382,7]]},"95":{"position":[[202,7]]},"175":{"position":[[38,8],[489,7]]},"262":{"position":[[199,7]]},"266":{"position":[[51,8]]}}}],["defaults",{"_index":705,"t":{"73":{"position":[[57,8]]},"77":{"position":[[57,8]]}}}],["defects",{"_index":377,"t":{"29":{"position":[[153,7]]}}}],["define",{"_index":1078,"t":{"129":{"position":[[376,6],[641,6],[1119,6]]},"137":{"position":[[263,6],[528,6]]}}}],["definitions",{"_index":1407,"t":{"255":{"position":[[153,12]]}}}],["degrade",{"_index":1430,"t":{"260":{"position":[[336,8]]}}}],["delay",{"_index":1121,"t":{"129":{"position":[[1624,5]]}}}],["delayed",{"_index":636,"t":{"66":{"position":[[408,7]]}}}],["delete",{"_index":923,"t":{"112":{"position":[[59,8]]}}}],["demonstrates",{"_index":544,"t":{"53":{"position":[[90,12]]},"123":{"position":[[13,12]]}}}],["dependent",{"_index":1454,"t":{"266":{"position":[[150,9]]}}}],["depends_on",{"_index":1352,"t":{"183":{"position":[[289,11]]}}}],["deploy",{"_index":86,"t":{"7":{"position":[[812,6]]},"179":{"position":[[27,6]]},"251":{"position":[[56,6],[123,6]]}}}],["deployed",{"_index":116,"t":{"9":{"position":[[288,8]]},"253":{"position":[[62,8]]}}}],["deployment",{"_index":1383,"t":{"249":{"position":[[40,10]]}}}],["depth",{"_index":40,"t":{"7":{"position":[[12,5]]}}}],["described",{"_index":1310,"t":{"173":{"position":[[375,9]]},"199":{"position":[[233,9]]},"245":{"position":[[178,9]]}}}],["description",{"_index":766,"t":{"83":{"position":[[475,11]]}}}],["descriptive",{"_index":907,"t":{"108":{"position":[[134,11]]},"110":{"position":[[121,11]]}}}],["designed",{"_index":1386,"t":{"251":{"position":[[13,8]]}}}],["desired",{"_index":67,"t":{"7":{"position":[[447,7]]},"66":{"position":[[556,7],[783,7],[1900,7]]}}}],["desk",{"_index":1001,"t":{"123":{"position":[[232,4]]}}}],["despite",{"_index":840,"t":{"95":{"position":[[109,7]]}}}],["det",{"_index":418,"t":{"37":{"position":[[170,3]]},"58":{"position":[[125,3]]},"64":{"position":[[400,3]]}}}],["detailed",{"_index":34,"t":{"3":{"position":[[396,8]]}}}],["detect",{"_index":507,"t":{"43":{"position":[[1119,6]]}}}],["detected",{"_index":1159,"t":{"129":{"position":[[3051,8]]},"131":{"position":[[190,8]]},"137":{"position":[[1220,8],[1577,8]]}}}],["detection",{"_index":22,"t":{"3":{"position":[[246,9]]}}}],["detector",{"_index":175,"t":{"11":{"position":[[978,8]]},"13":{"position":[[565,8]]},"15":{"position":[[526,8]]},"51":{"position":[[116,8]]},"66":{"position":[[624,9]]},"69":{"position":[[98,8],[234,8],[365,8]]},"71":{"position":[[55,8]]},"120":{"position":[[697,8],[875,8],[996,8]]},"123":{"position":[[194,8],[284,8]]},"129":{"position":[[1411,8]]},"137":{"position":[[993,8],[1034,10]]},"140":{"position":[[202,8]]},"249":{"position":[[56,8]]},"251":{"position":[[80,8],[135,8],[311,8]]},"253":{"position":[[71,9]]}}}],["detector=detector",{"_index":1132,"t":{"129":{"position":[[1975,18]]},"137":{"position":[[1136,18]]}}}],["detector_name",{"_index":959,"t":{"120":{"position":[[488,14],[834,14],[1710,13],[1724,15]]}}}],["detectors",{"_index":55,"t":{"7":{"position":[[242,10],[293,9],[481,10]]},"73":{"position":[[89,9],[166,9]]},"114":{"position":[[42,9]]},"140":{"position":[[19,10]]},"179":{"position":[[51,9]]}}}],["detects",{"_index":1427,"t":{"260":{"position":[[224,7]]}}}],["determines",{"_index":639,"t":{"66":{"position":[[639,10]]}}}],["dev/bus/usb:/dev/bus/usb",{"_index":1362,"t":{"183":{"position":[[557,25]]}}}],["dev/video0:/dev/video0",{"_index":1356,"t":{"183":{"position":[[427,23]]}}}],["dev/video1:/dev/video1",{"_index":1357,"t":{"183":{"position":[[453,23]]}}}],["dev/video2:/dev/video2",{"_index":1358,"t":{"183":{"position":[[479,23]]}}}],["dev/video3:/dev/video3",{"_index":1359,"t":{"183":{"position":[[505,23]]}}}],["developed",{"_index":471,"t":{"43":{"position":[[163,9]]}}}],["development",{"_index":1339,"t":{"179":{"position":[[150,11]]}}}],["device",{"_index":269,"t":{"19":{"position":[[65,8],[84,6],[115,7]]},"157":{"position":[[199,6]]},"183":{"position":[[745,7],[799,7]]},"251":{"position":[[436,7]]}}}],["devices",{"_index":254,"t":{"17":{"position":[[90,8]]},"31":{"position":[[291,7]]},"183":{"position":[[416,8]]},"217":{"position":[[70,8]]},"260":{"position":[[54,8]]}}}],["difference",{"_index":297,"t":{"19":{"position":[[590,10]]},"43":{"position":[[814,10],[1080,10]]}}}],["different",{"_index":511,"t":{"45":{"position":[[32,9],[265,9]]},"83":{"position":[[97,9]]},"149":{"position":[[37,9],[63,9]]}}}],["differentiate",{"_index":813,"t":{"89":{"position":[[99,13]]}}}],["difficult",{"_index":806,"t":{"87":{"position":[[160,9]]}}}],["directly",{"_index":415,"t":{"37":{"position":[[42,8]]},"39":{"position":[[272,8]]},"79":{"position":[[415,9]]},"102":{"position":[[61,8]]},"104":{"position":[[568,8]]},"266":{"position":[[209,9]]}}}],["directory",{"_index":989,"t":{"120":{"position":[[1620,9]]},"183":{"position":[[133,10],[625,10]]}}}],["discover",{"_index":85,"t":{"7":{"position":[[796,8]]}}}],["display",{"_index":1284,"t":{"167":{"position":[[52,7]]},"193":{"position":[[52,7]]},"239":{"position":[[52,7]]}}}],["displaying",{"_index":841,"t":{"95":{"position":[[144,10]]}}}],["distribution's",{"_index":1297,"t":{"173":{"position":[[9,14]]}}}],["distutils",{"_index":1326,"t":{"175":{"position":[[432,9]]}}}],["dlp",{"_index":942,"t":{"118":{"position":[[146,3]]},"120":{"position":[[85,3]]}}}],["dnf",{"_index":1306,"t":{"173":{"position":[[221,3]]}}}],["docker",{"_index":267,"t":{"19":{"position":[[35,6]]},"49":{"position":[[101,6],[203,6],[228,6]]},"183":{"position":[[8,6],[98,6],[636,6]]},"211":{"position":[[12,6],[73,6],[164,6]]},"225":{"position":[[12,6],[74,6],[165,6]]}}}],["docker's",{"_index":1343,"t":{"183":{"position":[[37,8]]}}}],["docker.io/groundlight/monitoring",{"_index":1348,"t":{"183":{"position":[[199,32],[327,32]]}}}],["docs/static/img/doorway.jpg",{"_index":560,"t":{"58":{"position":[[209,31]]},"64":{"position":[[484,31]]}}}],["document",{"_index":1170,"t":{"131":{"position":[[111,8]]}}}],["documentation",{"_index":134,"t":{"11":{"position":[[174,13]]},"15":{"position":[[448,13]]},"177":{"position":[[159,13]]},"201":{"position":[[159,13]]},"215":{"position":[[159,13]]},"247":{"position":[[159,13]]}}}],["doesn't",{"_index":697,"t":{"69":{"position":[[176,7]]}}}],["dog",{"_index":1168,"t":{"131":{"position":[[87,3],[183,3],[306,3],[378,3]]},"133":{"position":[[152,3]]},"137":{"position":[[1570,3]]}}}],["dog_on_couch_detector.py",{"_index":1212,"t":{"137":{"position":[[1682,24],[1726,24]]}}}],["domain.com/wp",{"_index":651,"t":{"66":{"position":[[1027,13]]}}}],["don't",{"_index":891,"t":{"104":{"position":[[339,5]]},"151":{"position":[[47,5]]},"251":{"position":[[451,5]]},"264":{"position":[[474,5],[520,5]]}}}],["done",{"_index":162,"t":{"11":{"position":[[724,4]]},"179":{"position":[[103,4]]},"264":{"position":[[446,4]]}}}],["door",{"_index":542,"t":{"53":{"position":[[56,4],[138,4],[183,4],[220,4]]}}}],["doorway",{"_index":557,"t":{"58":{"position":[[187,7]]},"64":{"position":[[462,7]]},"79":{"position":[[730,7]]}}}],["download",{"_index":253,"t":{"17":{"position":[[51,8]]},"120":{"position":[[142,8]]},"175":{"position":[[581,8]]},"199":{"position":[[0,8]]},"245":{"position":[[0,8]]}}}],["downloading",{"_index":278,"t":{"19":{"position":[[205,11]]}}}],["driven",{"_index":1042,"t":{"123":{"position":[[1274,6]]}}}],["due",{"_index":728,"t":{"79":{"position":[[483,3]]},"83":{"position":[[812,3]]}}}],["during",{"_index":550,"t":{"53":{"position":[[252,6]]},"81":{"position":[[85,6]]},"83":{"position":[[26,6]]},"123":{"position":[[723,6]]}}}],["e",{"_index":759,"t":{"83":{"position":[[386,2]]},"129":{"position":[[2023,2],[2064,5]]},"137":{"position":[[1297,2],[1338,5]]}}}],["e.g",{"_index":817,"t":{"91":{"position":[[43,6]]},"129":{"position":[[1192,4],[1224,4]]},"133":{"position":[[112,6]]},"171":{"position":[[140,6]]},"197":{"position":[[140,6]]},"243":{"position":[[146,6]]}}}],["e.reason",{"_index":763,"t":{"83":{"position":[[447,8],[522,12]]}}}],["e.status",{"_index":769,"t":{"83":{"position":[[537,8],[602,12]]}}}],["each",{"_index":919,"t":{"110":{"position":[[224,4]]}}}],["earlier",{"_index":1311,"t":{"173":{"position":[[385,8]]},"199":{"position":[[243,8]]},"245":{"position":[[188,8]]}}}],["early",{"_index":514,"t":{"45":{"position":[[115,5]]},"97":{"position":[[97,5]]}}}],["easiest",{"_index":1317,"t":{"175":{"position":[[171,7]]},"179":{"position":[[12,7]]}}}],["easily",{"_index":386,"t":{"31":{"position":[[48,6]]},"66":{"position":[[387,6]]},"108":{"position":[[163,6]]}}}],["easy",{"_index":79,"t":{"7":{"position":[[653,4]]},"49":{"position":[[89,4]]},"251":{"position":[[36,4]]}}}],["edge",{"_index":84,"t":{"7":{"position":[[790,5],[834,4]]},"17":{"position":[[30,4],[85,4],[152,5]]},"19":{"position":[[4,4],[59,5],[79,4],[172,4],[310,4],[373,4],[502,4],[639,4],[764,6],[771,4]]},"21":{"position":[[44,4]]},"23":{"position":[[195,4]]},"62":{"position":[[118,4]]},"260":{"position":[[49,4]]}}}],["effectively",{"_index":824,"t":{"91":{"position":[[151,11]]}}}],["effectiveness",{"_index":1039,"t":{"123":{"position":[[1189,13]]}}}],["efficiency",{"_index":328,"t":{"23":{"position":[[306,11]]}}}],["efficient",{"_index":351,"t":{"25":{"position":[[324,10]]}}}],["elif",{"_index":223,"t":{"13":{"position":[[984,4],[1063,4]]}}}],["email",{"_index":1067,"t":{"123":{"position":[[2023,6]]},"125":{"position":[[89,5]]},"129":{"position":[[685,6]]},"253":{"position":[[81,5]]}}}],["email.mime.multipart",{"_index":1074,"t":{"129":{"position":[[297,20]]}}}],["email.mime.text",{"_index":1076,"t":{"129":{"position":[[344,15]]}}}],["emails",{"_index":1012,"t":{"123":{"position":[[437,6]]},"129":{"position":[[3192,6]]}}}],["employees",{"_index":1020,"t":{"123":{"position":[[699,9]]}}}],["enables",{"_index":9,"t":{"3":{"position":[[90,7]]}}}],["enabling",{"_index":317,"t":{"23":{"position":[[107,8]]},"25":{"position":[[198,8]]},"123":{"position":[[2030,8]]}}}],["encounter",{"_index":738,"t":{"81":{"position":[[61,9]]}}}],["encourage",{"_index":1045,"t":{"123":{"position":[[1329,9]]}}}],["encrypted",{"_index":874,"t":{"102":{"position":[[362,9]]}}}],["end",{"_index":1011,"t":{"123":{"position":[[418,3]]},"129":{"position":[[3173,3]]},"133":{"position":[[183,3],[190,3]]},"175":{"position":[[56,3]]},"213":{"position":[[15,3],[22,3]]},"227":{"position":[[15,3],[22,3]]}}}],["end_of_business",{"_index":1110,"t":{"129":{"position":[[1201,15],[1343,15],[2593,15]]}}}],["endpoint",{"_index":264,"t":{"19":{"position":[[9,8],[177,8],[315,9],[414,9],[507,9],[644,8]]},"21":{"position":[[49,9],[83,8]]}}}],["endpoint's",{"_index":284,"t":{"19":{"position":[[378,10]]}}}],["energy",{"_index":263,"t":{"17":{"position":[[205,7]]}}}],["engagement",{"_index":1034,"t":{"123":{"position":[[1056,11]]}}}],["enhance",{"_index":391,"t":{"31":{"position":[[128,7]]}}}],["enhancing",{"_index":327,"t":{"23":{"position":[[296,9]]}}}],["enough",{"_index":582,"t":{"60":{"position":[[135,6]]},"123":{"position":[[692,6]]}}}],["ensure",{"_index":837,"t":{"95":{"position":[[61,6]]},"97":{"position":[[15,6],[107,6]]},"118":{"position":[[0,6]]},"127":{"position":[[0,6]]},"135":{"position":[[0,6]]},"161":{"position":[[0,6]]},"187":{"position":[[0,6]]},"205":{"position":[[0,6]]},"219":{"position":[[0,6]]},"233":{"position":[[0,6]]}}}],["ensuring",{"_index":373,"t":{"29":{"position":[[66,8]]},"123":{"position":[[678,8],[1801,8]]}}}],["environment",{"_index":311,"t":{"21":{"position":[[259,11]]},"31":{"position":[[401,12]]},"64":{"position":[[220,11]]},"102":{"position":[[383,11]]},"104":{"position":[[60,11],[155,11],[442,11]]},"129":{"position":[[752,12]]}}}],["environments",{"_index":88,"t":{"7":{"position":[[849,12]]}}}],["equipment",{"_index":344,"t":{"25":{"position":[[184,10]]}}}],["error",{"_index":744,"t":{"83":{"position":[[20,5],[494,5],[990,6],[1000,5]]},"91":{"position":[[50,6]]},"95":{"position":[[158,5]]},"97":{"position":[[32,5]]}}}],["errors",{"_index":71,"t":{"7":{"position":[[508,7],[563,6]]},"81":{"position":[[78,6],[139,6]]},"89":{"position":[[73,7],[121,6]]},"93":{"position":[[87,7]]},"95":{"position":[[117,7]]},"97":{"position":[[147,6],[287,6]]}}}],["escalate",{"_index":634,"t":{"66":{"position":[[256,8]]}}}],["escalated",{"_index":586,"t":{"60":{"position":[[238,9]]},"66":{"position":[[734,10],[1939,9]]}}}],["escalation",{"_index":605,"t":{"62":{"position":[[14,10]]},"66":{"position":[[595,10]]},"79":{"position":[[197,10],[466,10]]}}}],["esp32",{"_index":1272,"t":{"157":{"position":[[186,5]]},"249":{"position":[[71,5]]},"251":{"position":[[95,5],[216,5],[328,5]]},"255":{"position":[[45,5],[174,5],[223,5],[266,5]]},"257":{"position":[[70,6]]}}}],["esp32s3",{"_index":1414,"t":{"255":{"position":[[304,7]]}}}],["etc",{"_index":819,"t":{"91":{"position":[[66,5]]}}}],["evaluations",{"_index":258,"t":{"17":{"position":[[133,11]]}}}],["even",{"_index":274,"t":{"19":{"position":[[147,4]]},"60":{"position":[[405,4]]},"211":{"position":[[59,4]]},"225":{"position":[[60,4]]}}}],["event",{"_index":1161,"t":{"129":{"position":[[3088,6]]}}}],["example",{"_index":114,"t":{"9":{"position":[[254,8]]},"11":{"position":[[796,8]]},"13":{"position":[[331,8]]},"37":{"position":[[84,8]]},"43":{"position":[[966,7]]},"66":{"position":[[749,8]]},"75":{"position":[[71,8],[126,8]]},"114":{"position":[[8,7]]},"123":{"position":[[5,7]]},"131":{"position":[[20,7]]},"145":{"position":[[74,8]]},"213":{"position":[[26,7]]},"227":{"position":[[26,7]]}}}],["examples",{"_index":39,"t":{"5":{"position":[[44,8]]},"47":{"position":[[41,8]]},"140":{"position":[[586,9]]}}}],["exceeded",{"_index":792,"t":{"83":{"position":[[959,8]]}}}],["except",{"_index":290,"t":{"19":{"position":[[517,6]]},"83":{"position":[[363,6]]},"129":{"position":[[2003,6]]},"137":{"position":[[1277,6]]}}}],["exception",{"_index":748,"t":{"83":{"position":[[126,10]]},"87":{"position":[[124,10]]},"89":{"position":[[25,9]]},"129":{"position":[[2010,9]]},"137":{"position":[[1284,9]]}}}],["exceptions",{"_index":743,"t":{"81":{"position":[[195,11]]},"85":{"position":[[77,10]]},"87":{"position":[[24,10],[108,10]]},"91":{"position":[[4,10]]},"93":{"position":[[14,11]]},"95":{"position":[[23,11]]},"97":{"position":[[304,10]]}}}],["execute",{"_index":673,"t":{"66":{"position":[[1702,7]]}}}],["executing",{"_index":680,"t":{"66":{"position":[[1855,10]]}}}],["existing",{"_index":397,"t":{"31":{"position":[[260,8]]},"69":{"position":[[89,8]]},"79":{"position":[[151,8]]}}}],["exists",{"_index":698,"t":{"69":{"position":[[184,7]]}}}],["exited",{"_index":978,"t":{"120":{"position":[[1258,6]]}}}],["expect",{"_index":800,"t":{"87":{"position":[[44,6]]}}}],["expected",{"_index":434,"t":{"39":{"position":[[227,8]]},"43":{"position":[[613,9]]},"97":{"position":[[56,9]]}}}],["expects",{"_index":467,"t":{"43":{"position":[[12,7]]}}}],["experience",{"_index":1056,"t":{"123":{"position":[[1623,10],[2112,11]]}}}],["explore",{"_index":522,"t":{"47":{"position":[[0,7]]},"123":{"position":[[1381,7]]}}}],["exploring",{"_index":97,"t":{"7":{"position":[[1052,9]]}}}],["exponential",{"_index":829,"t":{"93":{"position":[[53,11]]}}}],["export",{"_index":313,"t":{"21":{"position":[[286,6]]},"64":{"position":[[260,6]]}}}],["extra",{"_index":1321,"t":{"175":{"position":[[292,5]]}}}],["extremely",{"_index":1437,"t":{"264":{"position":[[11,9]]}}}],["f\"hourly",{"_index":1146,"t":{"129":{"position":[[2420,8]]}}}],["f\"{msg}\\n",{"_index":1152,"t":{"129":{"position":[[2708,10]]}}}],["factory",{"_index":1259,"t":{"153":{"position":[[151,7]]}}}],["falling",{"_index":843,"t":{"95":{"position":[[184,7]]}}}],["fast",{"_index":674,"t":{"66":{"position":[[1732,4]]}}}],["faster",{"_index":294,"t":{"19":{"position":[[557,6]]},"60":{"position":[[622,6]]},"66":{"position":[[544,7]]}}}],["features",{"_index":516,"t":{"45":{"position":[[159,8]]},"260":{"position":[[395,9]]}}}],["fedora",{"_index":1305,"t":{"173":{"position":[[194,6]]}}}],["few",{"_index":554,"t":{"58":{"position":[[49,3]]},"79":{"position":[[105,3]]},"140":{"position":[[551,3]]},"251":{"position":[[154,3]]}}}],["ffmpeg",{"_index":940,"t":{"118":{"position":[[136,6]]},"120":{"position":[[69,6]]}}}],["field",{"_index":153,"t":{"11":{"position":[[488,5]]}}}],["file",{"_index":561,"t":{"58":{"position":[[258,4]]},"64":{"position":[[533,4]]},"120":{"position":[[223,4]]},"133":{"position":[[107,4]]},"183":{"position":[[86,4]]}}}],["files",{"_index":521,"t":{"45":{"position":[[339,5],[351,5]]}}}],["find",{"_index":37,"t":{"5":{"position":[[21,4]]},"69":{"position":[[81,4]]},"104":{"position":[[39,4]]},"155":{"position":[[73,4]]},"249":{"position":[[99,4]]}}}],["finished",{"_index":679,"t":{"66":{"position":[[1846,8]]}}}],["firmware",{"_index":1403,"t":{"255":{"position":[[108,8]]}}}],["first",{"_index":575,"t":{"60":{"position":[[16,5],[421,5],[458,5]]},"79":{"position":[[76,5]]},"129":{"position":[[0,6]]},"137":{"position":[[0,6]]},"145":{"position":[[307,5]]}}}],["float",{"_index":960,"t":{"120":{"position":[[546,5]]}}}],["floats",{"_index":449,"t":{"41":{"position":[[194,8]]}}}],["floor",{"_index":1260,"t":{"153":{"position":[[159,7]]}}}],["follow",{"_index":570,"t":{"58":{"position":[[493,6]]},"85":{"position":[[39,6]]},"157":{"position":[[45,6]]}}}],["followed",{"_index":861,"t":{"100":{"position":[[273,8]]}}}],["following",{"_index":45,"t":{"7":{"position":[[101,9]]},"97":{"position":[[183,9]]},"110":{"position":[[82,9]]},"161":{"position":[[25,9]]},"163":{"position":[[90,9]]},"165":{"position":[[50,9]]},"167":{"position":[[89,9]]},"169":{"position":[[74,9]]},"183":{"position":[[153,9],[591,9],[826,9]]},"187":{"position":[[25,9]]},"189":{"position":[[90,9]]},"191":{"position":[[50,9]]},"193":{"position":[[89,9]]},"195":{"position":[[74,9]]},"205":{"position":[[25,9]]},"207":{"position":[[96,9]]},"209":{"position":[[50,9]]},"219":{"position":[[25,9]]},"221":{"position":[[97,9]]},"223":{"position":[[50,9]]},"233":{"position":[[25,9]]},"235":{"position":[[90,9]]},"237":{"position":[[50,9]]},"239":{"position":[[89,9]]},"241":{"position":[[74,9]]},"253":{"position":[[22,9]]},"255":{"position":[[16,9]]}}}],["follows",{"_index":437,"t":{"39":{"position":[[306,8]]},"175":{"position":[[265,7]]}}}],["forbidden",{"_index":782,"t":{"83":{"position":[[774,10]]}}}],["force",{"_index":700,"t":{"69":{"position":[[213,5]]},"264":{"position":[[488,5]]}}}],["form",{"_index":966,"t":{"120":{"position":[[778,4]]}}}],["format",{"_index":441,"t":{"41":{"position":[[90,6]]},"43":{"position":[[222,6]]},"264":{"position":[[220,6],[369,7]]}}}],["formats",{"_index":409,"t":{"35":{"position":[[49,8]]}}}],["formatted_time",{"_index":1143,"t":{"129":{"position":[[2356,14],[2441,17]]}}}],["forward",{"_index":115,"t":{"9":{"position":[[280,7]]}}}],["found",{"_index":787,"t":{"83":{"position":[[854,6],[892,5]]}}}],["frame",{"_index":190,"t":{"11":{"position":[[1181,5],[1275,5]]},"39":{"position":[[400,5],[433,5],[471,6],[489,5]]},"120":{"position":[[167,5],[621,5]]},"129":{"position":[[496,5]]},"137":{"position":[[383,5]]}}}],["framegrab",{"_index":513,"t":{"45":{"position":[[74,9],[93,9],[218,9]]}}}],["frontend",{"_index":1347,"t":{"183":{"position":[[182,9]]}}}],["frontend:latest",{"_index":1349,"t":{"183":{"position":[[252,15]]}}}],["full",{"_index":133,"t":{"11":{"position":[[169,4]]},"66":{"position":[[1224,7]]},"102":{"position":[[214,4]]},"145":{"position":[[121,6]]}}}],["function",{"_index":211,"t":{"13":{"position":[[471,8]]},"129":{"position":[[385,8],[650,8],[2971,9],[3234,9]]},"137":{"position":[[272,8],[537,8],[1500,9],[1653,9]]}}}],["functional",{"_index":839,"t":{"95":{"position":[[98,10]]}}}],["functionality",{"_index":1441,"t":{"264":{"position":[[144,14]]}}}],["further",{"_index":682,"t":{"66":{"position":[[1953,7]]}}}],["future",{"_index":569,"t":{"58":{"position":[[468,6]]},"79":{"position":[[309,7]]}}}],["g",{"_index":947,"t":{"120":{"position":[[90,1]]}}}],["gather",{"_index":596,"t":{"60":{"position":[[427,6]]}}}],["generally",{"_index":667,"t":{"66":{"position":[[1576,9]]},"175":{"position":[[72,9]]}}}],["generated",{"_index":687,"t":{"66":{"position":[[2191,9]]},"108":{"position":[[220,9]]}}}],["generative",{"_index":608,"t":{"62":{"position":[[58,10]]}}}],["get_image",{"_index":758,"t":{"83":{"position":[[341,12]]}}}],["get_image_query",{"_index":203,"t":{"13":{"position":[[169,16]]},"79":{"position":[[375,17]]}}}],["get_latest_frame.sh",{"_index":945,"t":{"120":{"position":[[36,20],[1633,19]]}}}],["get_off_couch.mp3",{"_index":1184,"t":{"133":{"position":[[119,18]]}}}],["get_or_create_detector(name",{"_index":690,"t":{"69":{"position":[[25,28]]}}}],["get_token_from_secure_location",{"_index":897,"t":{"104":{"position":[[718,32]]}}}],["gets",{"_index":869,"t":{"102":{"position":[[176,4]]}}}],["github",{"_index":523,"t":{"47":{"position":[[14,6]]},"213":{"position":[[73,6]]},"227":{"position":[[75,6]]},"257":{"position":[[97,6],[272,6]]}}}],["give",{"_index":906,"t":{"108":{"position":[[113,4]]}}}],["gives",{"_index":628,"t":{"66":{"position":[[12,5]]}}}],["gl",{"_index":307,"t":{"21":{"position":[[169,2]]},"37":{"position":[[151,2]]},"58":{"position":[[106,2]]},"64":{"position":[[381,2]]},"66":{"position":[[969,2]]},"69":{"position":[[346,2]]},"71":{"position":[[36,2]]},"73":{"position":[[36,2]]},"75":{"position":[[245,2]]},"77":{"position":[[36,2]]},"79":{"position":[[651,2]]},"83":{"position":[[204,2]]},"104":{"position":[[485,2],[751,2]]},"120":{"position":[[977,2]]},"129":{"position":[[1392,2]]},"137":{"position":[[974,2]]}}}],["gl.add_label(image_query",{"_index":736,"t":{"79":{"position":[[951,25]]}}}],["gl.ask_async(detector=detector",{"_index":192,"t":{"11":{"position":[[1217,31]]},"15":{"position":[[670,31]]}}}],["gl.create_detector(name=\"your_detector_name",{"_index":703,"t":{"69":{"position":[[376,45]]}}}],["gl.create_detector(name=detector_name",{"_index":971,"t":{"120":{"position":[[1007,38]]}}}],["gl.get_detector(\"dog",{"_index":1205,"t":{"137":{"position":[[1004,20]]}}}],["gl.get_detector(id=\"your_detector_id",{"_index":704,"t":{"71":{"position":[[66,38]]}}}],["gl.get_image_query(id=\"iq_your_image_query_id",{"_index":717,"t":{"75":{"position":[[278,47]]}}}],["gl.get_image_query(id=image_query.id",{"_index":246,"t":{"15":{"position":[[850,37]]}}}],["gl.get_image_query(id=image_query_id",{"_index":216,"t":{"13":{"position":[[743,37]]}}}],["gl.get_or_create_detector",{"_index":751,"t":{"83":{"position":[[232,26]]},"129":{"position":[[1422,26]]},"140":{"position":[[213,26]]}}}],["gl.get_or_create_detector(name=\"doorway",{"_index":556,"t":{"58":{"position":[[131,41]]},"64":{"position":[[406,41]]},"79":{"position":[[674,41]]}}}],["gl.get_or_create_detector(name=\"path",{"_index":419,"t":{"37":{"position":[[176,36]]}}}],["gl.get_or_create_detector(name=\"trash",{"_index":656,"t":{"66":{"position":[[1160,39]]}}}],["gl.get_or_create_detector(name=\"your_detector_name",{"_index":177,"t":{"11":{"position":[[989,52]]},"13":{"position":[[576,52]]},"15":{"position":[[537,52]]}}}],["gl.list_detectors",{"_index":707,"t":{"73":{"position":[[101,19]]}}}],["gl.list_detectors(page=1",{"_index":711,"t":{"73":{"position":[[178,25]]}}}],["gl.list_image_queries",{"_index":719,"t":{"77":{"position":[[105,23]]}}}],["gl.list_image_queries(page=1",{"_index":720,"t":{"77":{"position":[[190,29]]}}}],["gl.submit_image_query(d",{"_index":757,"t":{"83":{"position":[[316,24]]}}}],["gl.submit_image_query(det",{"_index":425,"t":{"37":{"position":[[303,26]]}}}],["gl.submit_image_query(detector",{"_index":438,"t":{"39":{"position":[[439,31]]},"41":{"position":[[475,31]]}}}],["gl.submit_image_query(detector=d",{"_index":662,"t":{"66":{"position":[[1357,33],[2109,33]]},"79":{"position":[[904,33]]}}}],["gl.submit_image_query(detector=det",{"_index":562,"t":{"58":{"position":[[296,35]]},"64":{"position":[[571,35]]}}}],["gl.submit_image_query(detector=detector",{"_index":980,"t":{"120":{"position":[[1357,40]]},"140":{"position":[[344,40]]}}}],["gl.submit_image_query(image=image",{"_index":1131,"t":{"129":{"position":[[1940,34]]},"137":{"position":[[1101,34]]}}}],["gl.wait_for_confident_result(id=image_query.id",{"_index":247,"t":{"15":{"position":[[1064,47]]}}}],["go",{"_index":1296,"t":{"171":{"position":[[183,3]]},"175":{"position":[[153,2]]},"197":{"position":[[183,3]]},"243":{"position":[[189,3]]},"251":{"position":[[166,2]]}}}],["good",{"_index":932,"t":{"114":{"position":[[63,4]]},"140":{"position":[[520,4],[555,4]]},"171":{"position":[[175,4]]},"197":{"position":[[175,4]]},"243":{"position":[[181,4]]}}}],["grabbing",{"_index":47,"t":{"7":{"position":[[118,8]]}}}],["gracefully",{"_index":742,"t":{"81":{"position":[[177,10]]},"95":{"position":[[47,10]]},"97":{"position":[[154,10]]},"260":{"position":[[325,10]]}}}],["groundlight",{"_index":0,"t":{"3":{"position":[[0,11],[155,12],[358,11]]},"5":{"position":[[80,11]]},"7":{"position":[[74,12],[216,12],[311,11],[597,12],[632,11],[771,11],[819,11]]},"9":{"position":[[0,11],[343,12]]},"11":{"position":[[56,11],[395,12],[913,11],[932,11],[1284,11]]},"13":{"position":[[55,11],[534,11],[553,11],[813,11]]},"15":{"position":[[215,11],[473,11],[492,11],[739,11],[932,11],[1007,11],[1147,11]]},"19":{"position":[[272,11],[346,11],[490,11]]},"21":{"position":[[17,11],[103,11],[138,11],[157,11]]},"23":{"position":[[168,11]]},"37":{"position":[[4,11],[98,11],[117,11],[156,13]]},"39":{"position":[[194,11],[498,11]]},"41":{"position":[[4,11]]},"43":{"position":[[0,11],[505,12],[559,11],[705,12]]},"47":{"position":[[53,11]]},"49":{"position":[[54,11]]},"55":{"position":[[0,11]]},"58":{"position":[[75,11],[94,11],[111,13]]},"64":{"position":[[12,11],[100,11],[129,11],[350,11],[369,11],[386,13]]},"66":{"position":[[0,11],[900,11],[919,11],[974,13]]},"69":{"position":[[315,11],[334,11],[351,13]]},"71":{"position":[[5,11],[24,11],[41,13]]},"73":{"position":[[5,11],[24,11],[41,13]]},"75":{"position":[[214,11],[233,11],[250,13]]},"77":{"position":[[5,11],[24,11],[41,13]]},"79":{"position":[[0,11],[582,11],[601,11],[656,13]]},"81":{"position":[[36,11]]},"83":{"position":[[159,11],[192,11],[209,13]]},"85":{"position":[[22,11]]},"89":{"position":[[149,11]]},"97":{"position":[[330,11]]},"100":{"position":[[11,11],[117,11]]},"102":{"position":[[237,11]]},"104":{"position":[[386,11],[405,11],[490,13],[584,11],[679,11],[698,11]]},"106":{"position":[[40,11]]},"108":{"position":[[15,11],[297,11]]},"112":{"position":[[254,11]]},"116":{"position":[[0,11]]},"118":{"position":[[69,11],[117,11]]},"120":{"position":[[252,11],[401,11],[420,11],[685,11],[863,11],[982,13]]},"123":{"position":[[45,11],[1897,11]]},"125":{"position":[[0,11]]},"127":{"position":[[69,11],[144,11]]},"129":{"position":[[21,11],[198,11],[217,11],[1397,13],[3004,11]]},"131":{"position":[[49,11]]},"133":{"position":[[0,11]]},"135":{"position":[[69,11],[117,11]]},"137":{"position":[[21,11],[183,11],[202,11],[979,13],[1533,11]]},"145":{"position":[[137,12]]},"155":{"position":[[15,11],[137,11]]},"157":{"position":[[331,11]]},"159":{"position":[[37,11],[67,11]]},"163":{"position":[[132,11]]},"165":{"position":[[15,11],[98,11],[204,11],[220,11]]},"167":{"position":[[16,11],[135,12]]},"169":{"position":[[27,11],[119,11],[180,11],[269,11]]},"175":{"position":[[827,12],[853,11]]},"177":{"position":[[36,11]]},"179":{"position":[[39,11]]},"181":{"position":[[75,11]]},"185":{"position":[[37,11],[67,11]]},"189":{"position":[[132,11]]},"191":{"position":[[15,11],[98,11],[204,11],[220,11]]},"193":{"position":[[16,11],[135,12]]},"195":{"position":[[27,11],[119,11],[180,11],[269,11]]},"201":{"position":[[36,11]]},"203":{"position":[[37,11],[74,11]]},"207":{"position":[[138,11]]},"209":{"position":[[15,11],[99,11],[175,11]]},"215":{"position":[[36,11]]},"217":{"position":[[37,11],[83,11]]},"221":{"position":[[139,11]]},"223":{"position":[[15,11],[99,11],[175,11]]},"229":{"position":[[36,11]]},"231":{"position":[[37,11],[69,11]]},"235":{"position":[[132,11]]},"237":{"position":[[15,11],[104,11],[210,11],[226,11]]},"239":{"position":[[16,11],[135,12]]},"241":{"position":[[27,11],[119,11],[180,11],[269,11]]},"247":{"position":[[36,11]]},"249":{"position":[[0,11]]},"251":{"position":[[68,11]]},"257":{"position":[[206,11]]},"260":{"position":[[4,11],[88,11]]},"262":{"position":[[92,11],[236,11],[278,11]]},"264":{"position":[[60,11]]}}}],["groundlight's",{"_index":102,"t":{"7":{"position":[[1177,13]]},"25":{"position":[[0,13]]},"27":{"position":[[12,13]]},"29":{"position":[[0,13]]},"31":{"position":[[0,13]]},"33":{"position":[[24,13]]},"35":{"position":[[0,13]]},"62":{"position":[[0,13]]},"140":{"position":[[5,13]]}}}],["groundlight(api_token=token",{"_index":898,"t":{"104":{"position":[[756,28]]}}}],["groundlight(endpoint=\"http://localhost:6717",{"_index":308,"t":{"21":{"position":[[174,45]]}}}],["groundlight.ai",{"_index":1342,"t":{"181":{"position":[[111,15]]}}}],["groundlight/stream",{"_index":1375,"t":{"211":{"position":[[84,18]]},"225":{"position":[[85,18]]}}}],["groundlight_api_token",{"_index":624,"t":{"64":{"position":[[198,21]]},"83":{"position":[[724,21]]},"104":{"position":[[176,22],[463,21]]}}}],["groundlight_api_token=api_2gdxmflhji6l_example",{"_index":625,"t":{"64":{"position":[[267,46]]}}}],["groundlight_endpoint",{"_index":310,"t":{"21":{"position":[[238,20]]}}}],["groundlight_endpoint=http://localhost:6717",{"_index":314,"t":{"21":{"position":[[293,42]]}}}],["guide",{"_index":1171,"t":{"131":{"position":[[125,5]]},"155":{"position":[[44,6],[59,6]]},"157":{"position":[[90,6]]},"159":{"position":[[5,5]]},"185":{"position":[[5,5]]},"203":{"position":[[5,5]]},"217":{"position":[[5,5]]},"231":{"position":[[5,5]]}}}],["guides",{"_index":35,"t":{"3":{"position":[[405,6]]},"7":{"position":[[18,6]]}}}],["hand",{"_index":361,"t":{"27":{"position":[[186,4],[194,4]]}}}],["handle",{"_index":72,"t":{"7":{"position":[[534,6]]},"79":{"position":[[186,6]]},"81":{"position":[[127,6],[188,6]]},"85":{"position":[[70,6]]},"95":{"position":[[35,6]]},"97":{"position":[[140,6],[273,6]]}}}],["handling",{"_index":69,"t":{"7":{"position":[[492,8]]},"93":{"position":[[5,8]]},"97":{"position":[[38,8]]},"102":{"position":[[291,8]]}}}],["happen",{"_index":685,"t":{"66":{"position":[[2087,7]]}}}],["hardcoding",{"_index":877,"t":{"102":{"position":[[438,10]]}}}],["hardware",{"_index":477,"t":{"43":{"position":[[271,8]]},"264":{"position":[[454,9]]}}}],["hasn't",{"_index":678,"t":{"66":{"position":[[1839,6]]}}}],["head",{"_index":619,"t":{"64":{"position":[[112,4]]},"120":{"position":[[97,4]]}}}],["health",{"_index":826,"t":{"91":{"position":[[179,6]]}}}],["help",{"_index":353,"t":{"27":{"position":[[83,4]]},"29":{"position":[[223,4]]},"49":{"position":[[254,4]]},"89":{"position":[[90,4]]},"91":{"position":[[124,4]]},"93":{"position":[[145,4]]},"97":{"position":[[75,4]]},"123":{"position":[[820,4]]},"159":{"position":[[16,4]]},"185":{"position":[[16,4]]},"203":{"position":[[16,4]]},"217":{"position":[[16,4]]},"231":{"position":[[16,4]]}}}],["helps",{"_index":888,"t":{"104":{"position":[[204,5]]}}}],["here",{"_index":135,"t":{"11":{"position":[[188,6]]},"15":{"position":[[462,5]]},"102":{"position":[[258,4]]},"131":{"position":[[0,4]]},"255":{"position":[[209,5],[260,5],[286,5],[328,5]]}}}],["here's",{"_index":417,"t":{"37":{"position":[[74,6]]},"41":{"position":[[259,6]]},"43":{"position":[[956,6]]}}}],["high",{"_index":581,"t":{"60":{"position":[[130,4],[485,4]]}}}],["high=255",{"_index":461,"t":{"41":{"position":[[375,9]]}}}],["higher",{"_index":604,"t":{"60":{"position":[[634,6]]},"64":{"position":[[60,7]]},"66":{"position":[[1523,6],[1550,6],[1594,6],[1610,6]]},"116":{"position":[[35,6]]},"118":{"position":[[30,6]]},"123":{"position":[[929,6]]},"125":{"position":[[35,6]]},"127":{"position":[[30,6]]},"133":{"position":[[35,6]]},"135":{"position":[[30,6]]},"159":{"position":[[106,7]]},"161":{"position":[[75,6]]},"163":{"position":[[32,6]]},"171":{"position":[[133,6]]},"185":{"position":[[106,7]]},"187":{"position":[[75,6]]},"189":{"position":[[32,6]]},"197":{"position":[[133,6]]},"203":{"position":[[113,7]]},"205":{"position":[[81,6]]},"207":{"position":[[32,6]]},"217":{"position":[[122,7]]},"219":{"position":[[82,6]]},"221":{"position":[[32,6]]},"231":{"position":[[108,7]]},"233":{"position":[[75,6]]},"235":{"position":[[32,6]]},"243":{"position":[[139,6]]}}}],["highest",{"_index":374,"t":{"29":{"position":[[79,7]]}}}],["home",{"_index":1166,"t":{"131":{"position":[[69,4]]}}}],["homebrew",{"_index":1371,"t":{"199":{"position":[[89,8]]}}}],["hour",{"_index":1007,"t":{"123":{"position":[[319,5]]},"129":{"position":[[3101,5]]}}}],["hourly",{"_index":1065,"t":{"123":{"position":[[1957,6]]}}}],["hours",{"_index":553,"t":{"53":{"position":[[281,6]]},"123":{"position":[[735,5]]},"129":{"position":[[1157,5]]}}}],["http",{"_index":74,"t":{"7":{"position":[[558,4]]},"83":{"position":[[15,4],[559,4],[624,4]]}}}],["http://localhost:3000",{"_index":1364,"t":{"183":{"position":[[681,21]]}}}],["https://app.groundlight.ai/reef/my",{"_index":901,"t":{"106":{"position":[[63,34]]}}}],["https://bootstrap.pypa.io/get",{"_index":1332,"t":{"175":{"position":[[614,29]]}}}],["https://github.com/groundlight/esp32cam",{"_index":535,"t":{"51":{"position":[[12,39]]},"257":{"position":[[107,39]]}}}],["https://github.com/groundlight/raspberry",{"_index":541,"t":{"53":{"position":[[12,40]]}}}],["https://github.com/groundlight/stream",{"_index":525,"t":{"49":{"position":[[12,37]]}}}],["https://images.selfstorage.com/large",{"_index":734,"t":{"79":{"position":[[757,37]]}}}],["https://iot.groundlight.ai/espcam",{"_index":1385,"t":{"249":{"position":[[110,34]]},"251":{"position":[[172,33]]}}}],["https://www.photos",{"_index":649,"t":{"66":{"position":[[1000,19]]}}}],["https://www.youtube.com/watch?v== next_hourly_start: next_hourly_start += timedelta(hours=1) percent_in_use = (log.count(\"YES\") / len(log)) * 100 current_time = datetime.now().replace(hour=START_OF_BUSINESS, minute=0, second=0) formatted_time = current_time.strftime(\"%I%p\") # like 3pm msg = f\"Hourly summary for {formatted_time}: {percent_in_use:.0f}% counter in use\" print(msg) daily_log.append(msg) log = [] current_hour = datetime.now().hour if current_hour == END_OF_BUSINESS and not daily_log == []: daily_summary = \"Daily summary:\\n\" for msg in daily_log: daily_summary += f\"{msg}\\n\" print(daily_summary) send_email(sender=\"counterbot@example.com\", receiver=\"manager@example.com\", subject=\"Daily Service Counter Usage Log\", body=daily_summary) daily_log = [] time.sleep(DELAY) This application captures an image using the capture_image function, then submits it to the Groundlight API for analysis. If a customer is detected at the counter, it logs the event. Every hour, it prints a summary of the counter's usage percentage, and at the end of the day, it emails the daily log using the send_email function. Save the script as service_counter_monitor.py and run it: python service_counter_monitor.py","s":"Creating the Application","u":"/python-sdk/docs/getting-started/retail-analytics","h":"#creating-the-application","p":121},{"i":131,"t":"A quick example to get used to setting up detectors and asking good questions: set up a monitor on a live stream.","s":"A Quick Example: Live Stream Alert","u":"/python-sdk/docs/getting-started/streaming","h":"","p":130},{"i":133,"t":"Groundlight SDK with Python 3.7 or higher The video ID of a YouTube live stream you'd like to monitor","s":"Requirements","u":"/python-sdk/docs/getting-started/streaming","h":"#requirements","p":130},{"i":135,"t":"Ensure you have Python 3.7 or higher installed, and then install the Groundlight SDK and OpenCV library: pip install groundlight pillow ffmpeg yt-dlp typer","s":"Installation","u":"/python-sdk/docs/getting-started/streaming","h":"#installation","p":130},{"i":137,"t":"Save this command as a shell script get_latest_frame.sh: #!/bin/bash ffmpeg -i \"$(yt-dlp -g $1 | head -n 1)\" -vframes 1 last.jpg -y This will download the most recent frame from a YouTube live stream and save it to a local file last.jpg. Log in to the Groundlight application and get an API Token. Next, we'll write the Python script for the application. import os import subprocess import typer from groundlight import Groundlight from PIL import Image def main(*, video_id: str = None, detector_name: str = None, query: str = None, confidence: float = 0.75, wait: int = 60): \"\"\" Run the script to get the stream's last frame as a subprocess, and submit result as an image query to a Groundlight detector :param video_id: Video ID of the YouTube live stream (the URLs have the form https://www.youtube.com/watch?v=) :param detector_name: Name for your Groundlight detector :param query: Question you want to ask of the stream (we will alert on the answer of NO) \"\"\" gl = Groundlight() detector = gl.create_detector(name=detector_name, query=query, confidence_threshold=confidence) while True: p = subprocess.run([\"./get_latest_frame.sh\", video_id]) if p.returncode != 0: raise RuntimeError(f\"Could not get image from video ID: {video_id}. Process exited with return code {p.returncode}.\") image = Image.open(\"last.jpg\").convert(\"RGB\") response = gl.submit_image_query(detector=detector, image=image, wait=wait) if response.result.label == \"NO\": os.system(\"say 'Alert!'\") # this may not work on all operating systems if __name__ == \"__main__\": typer.run(main) Save the script as streaming_alert.py in the same directory as get_latest_frame.sh above and run it: python streaming_alert.py --detector_name --query ","s":"Creating the Application","u":"/python-sdk/docs/getting-started/streaming","h":"#creating-the-application","p":130},{"i":140,"t":"With Groundlight's detectors, you can ask binary questions about images — i.e., the answer should be unambiguously \"YES\" or \"NO\". If you ask an ambiguous question, you may receive an \"UNSURE\" response. detector = gl.get_or_create_detector( name=\"Conveyor belt boxes\", query=\"Are there any cardboard boxes on the conveyor belt?\" ) image_query = gl.submit_image_query(detector=detector, image=some_image) # The SDK can return \"YES\" or \"NO\" (or \"UNSURE\") print(f\"The answer is {image_query.result.label}\") So, what makes a good question? Let's look at a few good ✅, moderate 🟡, and bad ❌ examples!","s":"Introduction","u":"/python-sdk/docs/getting-started/writing-queries","h":"#introduction","p":138},{"i":143,"t":"This question is binary and can be answered unambiguously with a simple \"YES\" or \"NO\" based on the image content.","s":"✅ Are there any cardboard boxes on the conveyor belt?","u":"/python-sdk/docs/getting-started/writing-queries","h":"#-are-there-any-cardboard-boxes-on-the-conveyor-belt","p":138},{"i":145,"t":"This question is okay, but it could be rephrased to be more specific. For example, \"Is the black trash can more than 80% full?\" tip With Groundlight, your questions may be routed to a machine learning model or a human reviewer. One way to improve your questions is to think, \"If I saw this question for the first time, would I know precisely what the person was trying to convey?\"","s":"🟡 Is the trash can full?","u":"/python-sdk/docs/getting-started/writing-queries","h":"#-is-the-trash-can-full","p":138},{"i":147,"t":"The query is very specific about what \"YES\" means. According to this query, any slight / partial opening would be considered \"NO\".","s":"✅ Is the garage door completely closed?","u":"/python-sdk/docs/getting-started/writing-queries","h":"#-is-the-garage-door-completely-closed","p":138},{"i":149,"t":"This question is somewhat ambiguous. Different people may have different opinions on what is nice weather. Instead, you might ask \"Can you see any clouds in the sky?\"","s":"🟡 Is the weather nice out?","u":"/python-sdk/docs/getting-started/writing-queries","h":"#-is-the-weather-nice-out","p":138},{"i":151,"t":"This is not a binary question — \"YES\" and \"NO\" don't make sense in this context. Also, it's not clear what the \"thing\" refers to.","s":"❌ Where is the thing?","u":"/python-sdk/docs/getting-started/writing-queries","h":"#-where-is-the-thing","p":138},{"i":153,"t":"While this question is binary, \"cleanliness\" can be somewhat subjective. An improved version could be: \"Are there any visible spills or clutter on the factory floor?\"","s":"🟡 Is the factory floor clean and organized?","u":"/python-sdk/docs/getting-started/writing-queries","h":"#-is-the-factory-floor-clean-and-organized","p":138},{"i":155,"t":"Welcome to the Groundlight SDK installation guide. In this guide, you'll find step-by-step instructions on how to install and set up the Groundlight SDK on various platforms.","s":"Installation","u":"/python-sdk/docs/installation","h":"","p":154},{"i":157,"t":"Choose your platform from the list below and follow the instructions in the corresponding guide: Linux macOS Windows Raspberry Pi NVIDIA Jetson Linux with Monitoring Notification Server ESP32 Camera Device After completing the installation process for your platform, you'll be ready to start building visual applications using the Groundlight SDK.","s":"Platform-specific Installation Guides","u":"/python-sdk/docs/installation","h":"#platform-specific-installation-guides","p":154},{"i":159,"t":"This guide will help you install the Groundlight SDK on Linux. The Groundlight SDK requires Python 3.7 or higher.","s":"Installing on Linux","u":"/python-sdk/docs/installation/linux","h":"","p":158},{"i":161,"t":"Ensure that you have the following installed on your system: Python 3.7 or higher pip (Python package installer)","s":"Prerequisites","u":"/python-sdk/docs/installation/linux","h":"#prerequisites","p":158},{"i":163,"t":"Assuming you have Python 3.7 or higher installed on your system, you can proceed with the following steps to install or upgrade the Groundlight SDK:","s":"Basic Installation","u":"/python-sdk/docs/installation/linux","h":"#basic-installation","p":158},{"i":165,"t":"To install the Groundlight SDK using pip, run the following command in your terminal: pip install groundlight If you're also using python2 on your system, you might need to use pip3 instead: pip3 install groundlight The Groundlight SDK is now installed and ready for use.","s":"Installing Groundlight SDK","u":"/python-sdk/docs/installation/linux","h":"#installing-groundlight-sdk","p":158},{"i":167,"t":"To check if the Groundlight SDK is installed and to display its version, you can use the following Python one-liner: python -c \"import groundlight; print(groundlight.__version__)\"","s":"Checking Groundlight SDK Version","u":"/python-sdk/docs/installation/linux","h":"#checking-groundlight-sdk-version","p":158},{"i":169,"t":"If you need to upgrade the Groundlight SDK to the latest version, use the following pip command: pip install --upgrade groundlight Or, if you're using pip3: pip3 install --upgrade groundlight After upgrading, you can use the Python one-liner mentioned in the \"Checking Groundlight SDK Version\" section to verify that the latest version is now installed.","s":"Upgrading Groundlight SDK","u":"/python-sdk/docs/installation/linux","h":"#upgrading-groundlight-sdk","p":158},{"i":171,"t":"To check your installed Python version, open a terminal and run: python --version If you see a version number starting with \"3.7\" or higher (e.g., \"3.7.5\" or \"3.9.0\"), you're good to go. If not, you might need to upgrade Python on your system.","s":"Getting the right Python Version","u":"/python-sdk/docs/installation/linux","h":"#getting-the-right-python-version","p":158},{"i":173,"t":"Use your distribution's package manager to install the latest Python version: For Ubuntu or Debian-based systems: sudo apt update sudo apt install python3 (For Ubuntu 18.04 see note below.) For Fedora-based systems: sudo dnf install python3 For Arch Linux: sudo pacman -S python After upgrading, verify the Python version by running python --version or python3 --version, as described earlier.","s":"Upgrading Python on Linux","u":"/python-sdk/docs/installation/linux","h":"#upgrading-python-on-linux","p":158},{"i":175,"t":"Ubuntu 18.04 still uses python 3.6 by default, which is end-of-life. We generally recommend using python 3.10. If you know how to install py3.10, please go ahead. But the easiest version of python 3 to use with Ubuntu 18.04 is python 3.8, which can be installed as follows without adding any extra repositories: # Prepare Ubuntu to install things sudo apt-get update # Install the basics sudo apt-get install -y python3.8 python3.8-distutils curl # Configure `python3` to run python3.8 by default sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 10 # Download and install pip3.8 curl https://bootstrap.pypa.io/get-pip.py > /tmp/get-pip.py sudo python3.8 /tmp/get-pip.py # Configure `pip3` to run pip3.8 sudo update-alternatives --install /usr/bin/pip3 pip3 $(which pip3.8) 10 # Now we can install Groundlight! pip3 install groundlight","s":"Special note about Ubuntu 18.04","u":"/python-sdk/docs/installation/linux","h":"#special-note-about-ubuntu-1804","p":158},{"i":177,"t":"You're now ready to start using the Groundlight SDK in your projects. For more information on using the SDK, refer to the API Tokens and Building Applications documentation pages.","s":"Ready to go!","u":"/python-sdk/docs/installation/linux","h":"#ready-to-go","p":158},{"i":179,"t":"This guide will help you install the Groundlight SDK on macOS. The Groundlight SDK requires Python 3.7 or higher.","s":"Installing on macOS","u":"/python-sdk/docs/installation/macos","h":"","p":178},{"i":181,"t":"Ensure that you have the following installed on your system: Python 3.7 or higher pip (Python package installer)","s":"Prerequisites","u":"/python-sdk/docs/installation/macos","h":"#prerequisites","p":178},{"i":183,"t":"Assuming you have Python 3.7 or higher installed on your system, you can proceed with the following steps to install or upgrade the Groundlight SDK:","s":"Basic Installation","u":"/python-sdk/docs/installation/macos","h":"#basic-installation","p":178},{"i":185,"t":"To install the Groundlight SDK using pip, run the following command in your terminal: pip install groundlight If you're also using python2 on your system, you might need to use pip3 instead: pip3 install groundlight The Groundlight SDK is now installed and ready for use.","s":"Installing Groundlight SDK","u":"/python-sdk/docs/installation/macos","h":"#installing-groundlight-sdk","p":178},{"i":187,"t":"To check if the Groundlight SDK is installed and to display its version, you can use the following Python one-liner: python -c \"import groundlight; print(groundlight.__version__)\"","s":"Checking Groundlight SDK Version","u":"/python-sdk/docs/installation/macos","h":"#checking-groundlight-sdk-version","p":178},{"i":189,"t":"If you need to upgrade the Groundlight SDK to the latest version, use the following pip command: pip install --upgrade groundlight Or, if you're using pip3: pip3 install --upgrade groundlight After upgrading, you can use the Python one-liner mentioned in the \"Checking Groundlight SDK Version\" section to verify that the latest version is now installed.","s":"Upgrading Groundlight SDK","u":"/python-sdk/docs/installation/macos","h":"#upgrading-groundlight-sdk","p":178},{"i":191,"t":"To check your installed Python version, open a terminal and run: python --version If you see a version number starting with \"3.7\" or higher (e.g., \"3.7.5\" or \"3.9.0\"), you're good to go. If not, you might need to upgrade Python on your system.","s":"Getting the right Python Version","u":"/python-sdk/docs/installation/macos","h":"#getting-the-right-python-version","p":178},{"i":193,"t":"Download the latest Python installer from the official Python website and run it, or use Homebrew to install Python: brew install python After upgrading, verify the Python version by running python --version or python3 --version, as described earlier.","s":"Upgrading Python on MacOS","u":"/python-sdk/docs/installation/macos","h":"#upgrading-python-on-macos","p":178},{"i":195,"t":"You're now ready to start using the Groundlight SDK in your projects. For more information on using the SDK, refer to the API Tokens and Building Applications documentation pages.","s":"Ready to go!","u":"/python-sdk/docs/installation/macos","h":"#ready-to-go","p":178},{"i":197,"t":"This is the easiest way to deploy your Groundlight detectors on a linux computer. All configuration is done through a web user interface, and no code development is required.","s":"Monitoring Notification Server","u":"/python-sdk/docs/installation/monitoring-notification-server","h":"","p":196},{"i":199,"t":"Internet connected linux computer Video source (USB camera or RTSP stream) Groundlight API Key (available from groundlight.ai)","s":"Prerequisites","u":"/python-sdk/docs/installation/monitoring-notification-server","h":"#prerequisites","p":196},{"i":201,"t":"Install Docker on your computer. See Docker's installation instructions. Create a new file called docker-compose.yml in your project directory. Copy the following into it: services: frontend: image: docker.io/groundlight/monitoring-notification-server-frontend:latest ports: - \"3000:3000\" depends_on: - backend backend: image: docker.io/groundlight/monitoring-notification-server-backend:latest ports: - \"8000:8000\" devices: - /dev/video0:/dev/video0 - /dev/video1:/dev/video1 - /dev/video2:/dev/video2 - /dev/video3:/dev/video3 privileged: true volumes: - /dev/bus/usb:/dev/bus/usb Run the following command in your project directory: docker-compose up If installed locally, open http://localhost:3000 in your browser. If installed on a remote device, replace localhost with the IP address of your device. You should see the following page:","s":"Deployment","u":"/python-sdk/docs/installation/monitoring-notification-server","h":"#deployment","p":196},{"i":203,"t":"This guide will help you install the Groundlight SDK on NVIDIA Jetson devices. The Groundlight SDK requires Python 3.7 or higher.","s":"Installing on NVIDIA Jetson","u":"/python-sdk/docs/installation/nvidia-jetson","h":"","p":202},{"i":205,"t":"Ensure that you have the following installed on your NVIDIA Jetson: Python 3.7 or higher pip (Python package installer)","s":"Prerequisites","u":"/python-sdk/docs/installation/nvidia-jetson","h":"#prerequisites","p":202},{"i":207,"t":"Assuming you have Python 3.7 or higher installed on your NVIDIA Jetson, you can proceed with the following steps to install or upgrade the Groundlight SDK:","s":"Basic Installation","u":"/python-sdk/docs/installation/nvidia-jetson","h":"#basic-installation","p":202},{"i":209,"t":"To install the Groundlight SDK using pip, run the following command in your terminal: pip3 install groundlight An ARM-compatible version will automatically get installed. The Groundlight SDK is now installed and ready for use.","s":"Installing Groundlight SDK","u":"/python-sdk/docs/installation/nvidia-jetson","h":"#installing-groundlight-sdk","p":202},{"i":211,"t":"If you have docker installed on your NVIDIA Jetson, you can even just run docker run groundlight/stream as we publish an ARM version of our streaming application to Docker Hub.","s":"Using RTSP Streams","u":"/python-sdk/docs/installation/nvidia-jetson","h":"#using-rtsp-streams","p":202},{"i":213,"t":"For a complete end-to-end example of running on an NVIDIA Jetson, see this GitHub repo.","s":"Sample application","u":"/python-sdk/docs/installation/nvidia-jetson","h":"#sample-application","p":202},{"i":215,"t":"You're now ready to start using the Groundlight SDK in your projects. For more information on using the SDK, refer to the API Tokens and [Building Applications","s":"Ready to go!","u":"/python-sdk/docs/installation/nvidia-jetson","h":"#ready-to-go","p":202},{"i":218,"t":"The Groundlight SDK is optimized to run on small edge devices. As such, you can use the Groundlight SDK without installing large libraries like numpy or OpenCV. But if you're already installing them, we'll use them. Our SDK detects if these libraries are installed and will make use of them if they're present. If not, we'll gracefully degrade, and tell you what's wrong if you try to use these features.","s":"Smaller is better!","u":"/python-sdk/docs/installation/optional-libraries","h":"#smaller-is-better","p":216},{"i":220,"t":"The PIL library offers a bunch of standard utilities for working with images in python. The Groundlight SDK can work without PIL. Because PIL is not very large, and is quite useful, we install it by default with the normal build of the Groundlight SDK. So when you pip3 install groundlight it comes with the pillow version of the PIL library already installed.","s":"PIL - optional but default installed","u":"/python-sdk/docs/installation/optional-libraries","h":"#pil---optional-but-default-installed","p":216},{"i":222,"t":"If you are extremely space constrained, you can install the Groundlight SDK from source without PIL and it will work properly, but with reduced functionality. Specifically, you will need to convert your images into JPEG format yourself. The SDK normally relies on PIL to do JPEG compression (which is a non-trivial algorithm), and the API requires images to be in JPEG format. However on space-constrained platforms, sometimes this conversion is done in hardware, and so we don't want to force you to install PIL if you don't need it.","s":"Working without PIL","u":"/python-sdk/docs/installation/optional-libraries","h":"#working-without-pil","p":216},{"i":224,"t":"These commonly-used libraries are not installed by default, because they are quite large, and their installation can often cause conflicts with other dependent libraries. If you want to use them, install them directly.","s":"Numpy, OpenCV - fully optional","u":"/python-sdk/docs/installation/optional-libraries","h":"#numpy-opencv---fully-optional","p":216},{"i":226,"t":"This guide will help you install the Groundlight SDK on Raspberry Pi. The Groundlight SDK requires Python 3.7 or higher.","s":"Installing on Raspberry Pi","u":"/python-sdk/docs/installation/raspberry-pi","h":"","p":225},{"i":228,"t":"Ensure that you have the following installed on your Raspberry Pi: Python 3.7 or higher pip (Python package installer)","s":"Prerequisites","u":"/python-sdk/docs/installation/raspberry-pi","h":"#prerequisites","p":225},{"i":230,"t":"Assuming you have Python 3.7 or higher installed on your Raspberry Pi, you can proceed with the following steps to install or upgrade the Groundlight SDK:","s":"Basic Installation","u":"/python-sdk/docs/installation/raspberry-pi","h":"#basic-installation","p":225},{"i":232,"t":"To install the Groundlight SDK using pip, run the following command in your terminal: pip3 install groundlight An ARM-compatible version will automatically get installed. The Groundlight SDK is now installed and ready for use.","s":"Installing Groundlight SDK","u":"/python-sdk/docs/installation/raspberry-pi","h":"#installing-groundlight-sdk","p":225},{"i":234,"t":"If you have docker installed on your Raspberry Pi, you can even just run docker run groundlight/stream as we publish an ARM version of our streaming application to Docker Hub.","s":"Using RTSP Streams","u":"/python-sdk/docs/installation/raspberry-pi","h":"#using-rtsp-streams","p":225},{"i":236,"t":"For a complete end-to-end example of running on a Raspberry Pi, see this GitHub repo.","s":"Sample application","u":"/python-sdk/docs/installation/raspberry-pi","h":"#sample-application","p":225},{"i":238,"t":"You're now ready to start using the Groundlight SDK in your projects. For more information on using the SDK, refer to the API Tokens and Building Applications documentation pages.","s":"Ready to go!","u":"/python-sdk/docs/installation/raspberry-pi","h":"#ready-to-go","p":225},{"i":240,"t":"This guide will help you install the Groundlight SDK on Windows. The Groundlight SDK requires Python 3.7 or higher.","s":"Installing on Windows","u":"/python-sdk/docs/installation/windows","h":"","p":239},{"i":242,"t":"Ensure that you have the following installed on your system: Python 3.7 or higher pip (Python package installer)","s":"Prerequisites","u":"/python-sdk/docs/installation/windows","h":"#prerequisites","p":239},{"i":244,"t":"Assuming you have Python 3.7 or higher installed on your system, you can proceed with the following steps to install or upgrade the Groundlight SDK:","s":"Basic Installation","u":"/python-sdk/docs/installation/windows","h":"#basic-installation","p":239},{"i":246,"t":"To install the Groundlight SDK using pip, run the following command in your Command Prompt: pip install groundlight If you're also using python2 on your system, you might need to use pip3 instead: pip3 install groundlight The Groundlight SDK is now installed and ready for use.","s":"Installing Groundlight SDK","u":"/python-sdk/docs/installation/windows","h":"#installing-groundlight-sdk","p":239},{"i":248,"t":"To check if the Groundlight SDK is installed and to display its version, you can use the following Python one-liner: python -c \"import groundlight; print(groundlight.__version__)\"","s":"Checking Groundlight SDK Version","u":"/python-sdk/docs/installation/windows","h":"#checking-groundlight-sdk-version","p":239},{"i":250,"t":"If you need to upgrade the Groundlight SDK to the latest version, use the following pip command: pip install --upgrade groundlight Or, if you're using pip3: pip3 install --upgrade groundlight After upgrading, you can use the Python one-liner mentioned in the \"Checking Groundlight SDK Version\" section to verify that the latest version is now installed.","s":"Upgrading Groundlight SDK","u":"/python-sdk/docs/installation/windows","h":"#upgrading-groundlight-sdk","p":239},{"i":252,"t":"To check your installed Python version, open a Command Prompt and run: python --version If you see a version number starting with \"3.7\" or higher (e.g., \"3.7.5\" or \"3.9.0\"), you're good to go. If not, you might need to upgrade Python on your system.","s":"Getting the right Python Version","u":"/python-sdk/docs/installation/windows","h":"#getting-the-right-python-version","p":239},{"i":254,"t":"Download the latest Python installer from the official Python website and run it. After upgrading, verify the Python version by running python --version or python3 --version, as described earlier.","s":"Upgrading Python on Windows","u":"/python-sdk/docs/installation/windows","h":"#upgrading-python-on-windows","p":239},{"i":256,"t":"You're now ready to start using the Groundlight SDK in your projects. For more information on using the SDK, refer to the API Tokens and Building Applications documentation pages.","s":"Ready to go!","u":"/python-sdk/docs/installation/windows","h":"#ready-to-go","p":239},{"i":258,"t":"Groundlight supplies a tool for no-code deployment of a detector to an ESP32 Camera board. You can find it at https://iot.groundlight.ai/espcam.","s":"No-Code IoT Deployment","u":"/python-sdk/docs/iot","h":"","p":257},{"i":260,"t":"This tool is designed to make it as easy as possible to deploy your Groundlight detector on an ESP32 Camera Board. You can deploy your detector in just a few clicks. Go to https://iot.groundlight.ai/espcam Plug your ESP32 Camera Board into your computer with a USB cable. Click through the steps to upload your detector to your ESP32 Camera Board. When prompted, allow your browser access to the serial port, so that it can program the device. If you don't see a prompt like this, try using a current version of Chrome or another browser that supports Web Serial.","s":"Easy Deployment","u":"/python-sdk/docs/iot","h":"#easy-deployment","p":257},{"i":262,"t":"The tool supports the following notification options for your deployed detector: Email SMS (With Twilio) Slack","s":"Notification Options","u":"/python-sdk/docs/iot","h":"#notification-options","p":257},{"i":264,"t":"Tested with the following boards. Many other ESP32 boards should work as well, but may require building the firmware from source and changing the IO pin definitions. M5Stack ESP32 PSRAM Timer Camera [purchase here] M5Stack ESP32 PSRAM Timer Camera X [purchase here] ESP32-CAM [purchase here] SeeedStudio ESP32S3 Sense [purchase here]","s":"Multiple Supported Boards","u":"/python-sdk/docs/iot","h":"#multiple-supported-boards","p":257},{"i":266,"t":"The source code is written as an Arduino-based PlatformIO project for ESP32, and is available on GitHub at https://github.com/groundlight/esp32cam If you need assistance or have questions about integrating Groundlight with Arduino, please consider opening an issue on the GitHub repository or reaching out to our support team.","s":"Source Code","u":"/python-sdk/docs/iot","h":"#source-code","p":257}],"index":{"version":"2.3.9","fields":["t"],"fieldVectors":[["t/3",[0,0.624,1,3.44,2,3.44,3,1.964,4,2.228,5,3.44,6,2.595,7,2.714,8,1.805,9,4.246,10,2.851,11,4.468,12,3.255,13,4.246,14,2.024,15,4.246,16,2.489,17,4.202,18,1.349,19,4.246,20,3.2,21,3.2,22,4.246,23,3.44,24,3.01,25,2.714,26,3.01,27,4.246,28,2.851,29,3.76,30,1.319,31,3.44,32,4.246,33,2.087,34,4.246,35,3.76,36,4.246]],["t/5",[0,0.602,12,3.761,28,4.428,29,5.841,37,4.675,38,5.343,39,5.343]],["t/7",[0,0.627,2,1.985,3,1.814,4,2.058,5,1.985,6,2.397,7,2.507,11,1.847,12,3.117,16,1.437,17,2.78,18,0.778,28,1.645,30,1.523,33,1.204,35,2.17,40,2.45,41,2.45,42,2.211,43,1.437,44,1.847,45,0.853,46,1.737,47,2.45,48,2.211,49,3.921,50,2.45,51,3.696,52,2.45,53,2.17,54,1.498,55,3.475,56,3.972,57,1.847,58,2.633,59,2.17,60,2.45,61,1.645,62,2.17,63,2.956,64,1.985,65,2.17,66,2.45,67,2.17,68,2.17,69,1.847,70,1.437,71,2.633,72,1.645,73,2.45,74,2.17,75,2.45,76,3.473,77,2.997,78,2.17,79,1.985,80,1.985,81,1.985,82,1.645,83,2.17,84,2.507,85,2.45,86,1.985,87,2.17,88,2.45,89,2.17,90,2.45,91,2.17,92,2.78,93,2.17,94,1.985,95,1.332,96,1.645,97,2.45,98,2.45,99,1.847,100,2.17,101,1.847,102,1.437,103,2.17]],["t/9",[0,0.537,1,3.405,20,3.168,30,1.306,70,2.464,76,3.722,77,4.152,82,3.952,95,2.284,104,2.979,105,4.815,106,3.405,107,3.722,108,5.886,109,2.979,110,4.941,111,2.437,112,3.405,113,4.768,114,2.133,115,4.203,116,3.722,117,4.203,118,2.066,119,3.168,120,4.203,121,4.203,122,4.203,123,3.722,124,2.822,125,4.203,126,3.405]],["t/11",[0,0.529,18,1.139,21,1.653,30,1.114,51,2.702,77,1.34,80,1.776,104,1.554,105,3.722,110,3.887,111,1.484,113,2.904,114,1.113,118,2.235,119,1.653,127,0.908,128,0.652,129,0.538,130,0.409,131,4.547,132,2.193,133,1.653,134,1.472,135,1.554,136,2.386,137,3.174,138,2.193,139,1.942,140,1.653,141,1.286,142,1.554,143,1.942,144,2.193,145,2.193,146,1.948,147,1.942,148,2.193,149,2.193,150,3.526,151,2.193,152,2.193,153,2.193,154,1.472,155,2.193,156,2.193,157,2.193,158,1.402,159,1.942,160,2.193,161,2.193,162,1.776,163,2.702,164,4.026,165,1.942,166,1.942,167,1.942,168,1.942,169,2.702,170,2.193,171,3.584,172,1.7,173,1.653,174,3.174,175,1.045,176,2.596,177,1.776,178,1.776,179,1.776,180,1.653,181,1.942,182,1.653,183,1.472,184,1.942,185,1.554,186,1.942,187,1.942,188,1.653,189,1.151,190,2.541,191,1.286,192,1.942,193,1.554,194,1.942,195,2.193,196,1.554,197,1.942,198,1.554,199,1.402,200,1.942,201,1.942]],["t/13",[0,0.517,18,0.792,30,0.775,42,1.406,77,1.525,81,3.222,82,1.674,95,3.362,109,1.768,110,3.331,111,2.344,113,3.222,114,1.266,123,3.522,127,1.032,128,0.741,129,0.612,130,0.466,136,2.604,137,2.209,139,2.209,150,3.331,154,2.67,163,1.88,164,2.209,168,2.209,172,0.933,175,1.189,176,2.892,177,2.02,178,2.02,191,1.462,199,2.543,202,2.02,203,2.209,204,2.494,205,3.978,206,2.494,207,2.78,208,2.209,209,1.594,210,4.961,211,2.02,212,2.209,213,2.494,214,2.494,215,5.661,216,2.494,217,1.768,218,4.961,219,1.594,220,4.019,221,4.961,222,4.961,223,3.978,224,2.209,225,1.88,226,2.494,227,2.02]],["t/15",[0,0.651,14,1.289,30,0.84,51,3.196,80,3.435,81,4.238,105,1.917,111,2.452,134,1.816,135,1.917,136,3.745,142,1.917,150,5.1,154,1.816,158,1.729,159,2.395,167,2.395,172,1.586,175,1.289,176,2.91,177,2.191,178,2.191,189,1.419,191,3.067,192,2.395,193,1.917,217,3.708,224,3.755,228,1.917,229,2.704,230,2.704,231,2.704,232,3.755,233,4.24,234,3.006,235,3.435,236,2.704,237,2.191,238,2.395,239,2.704,240,1.215,241,2.395,242,1.525,243,2.704,244,2.704,245,2.704,246,2.704,247,2.704,248,2.704,249,2.395]],["t/17",[63,4.235,84,5.024,128,1.67,250,3.772,251,3.772,252,3.983,253,3.983,254,3.983,255,4.975,256,2.266,257,4.552,258,5.619,259,4.552,260,4.975,261,3.983,262,5.619,263,5.619]],["t/19",[0,0.507,18,1.45,57,2.242,70,1.744,77,3.396,84,5.102,111,2.58,130,0.555,136,1.561,158,2.919,207,1.337,228,2.108,252,2.108,264,6.284,265,2.974,266,1.997,267,2.108,268,2.974,269,4.188,270,1.901,271,1.901,272,2.974,273,2.974,274,2.242,275,1.818,276,1.818,277,2.974,278,2.974,279,1.901,280,2.974,281,5.519,282,2.409,283,2.974,284,2.974,285,2.634,286,2.634,287,1.901,288,2.634,289,2.974,290,2.242,291,2.974,292,1.997,293,2.974,294,2.409,295,2.634,296,2.634,297,2.634,298,4.043,299,2.634,300,4.565,301,2.974,302,2.974,303,2.974,304,2.974,305,2.974]],["t/21",[0,0.733,18,1.651,57,3.918,84,3.323,129,1.275,130,0.971,172,1.944,176,1.853,220,4.211,264,6.019,285,4.603,306,4.603,307,2.405,308,5.198,309,4.603,310,5.198,311,3.49,312,4.211,313,4.603,314,5.198,315,5.198]],["t/23",[48,3.498,102,3.637,130,1.159,242,3.498,316,6.203,317,4.165,318,5.026,319,6.203,320,5.493,321,3.498,322,4.397,323,4.676]],["t/25",[0,0.716,48,2.759,111,2.026,114,2.484,130,0.914,172,2.443,176,2.62,242,3.683,307,2.264,324,4.333,325,3.285,326,3.469,327,3.964,328,3.964,329,4.893,330,5.291,331,3.128,332,4.893,333,6.531,334,4.893,335,4.893]],["t/27",[0,0.483,48,3.524,54,2.212,111,1.498,118,2.6,130,0.676,172,1.354,173,2.728,176,2.722,179,2.932,180,2.728,181,3.205,182,2.728,183,2.43,184,3.205,186,3.205,187,3.205,188,2.728,189,1.9,190,4.873,200,3.205,201,3.205,235,2.932,317,2.43,318,2.932,321,2.982,322,2.566,323,2.728,325,2.43,326,2.566,336,2.43,337,3.205,338,5.289,339,2.314,340,2.932,341,5.063,342,2.932,343,3.205,344,2.932,345,3.62,346,4.285,347,3.205,348,3.205]],["t/29",[0,0.345,14,1.803,16,2.218,28,2.54,48,2.134,111,1.566,130,0.707,172,1.415,176,1.947,182,2.852,321,2.134,322,4.543,323,2.852,324,3.351,327,3.065,339,2.419,340,4.425,341,4.425,342,3.065,348,3.351,349,2.852,350,3.784,351,3.065,352,3.351,353,3.784,354,3.351,355,3.784,356,3.784,357,3.784,358,3.784,359,3.784,360,3.784,361,3.784,362,2.682,363,3.784,364,3.784,365,3.784,366,3.784,367,3.784,368,3.784,369,3.784,370,5.462,371,3.784,372,3.784,373,3.784,374,3.784,375,3.784,376,3.351,377,3.784]],["t/31",[0,0.513,6,1.506,18,0.783,30,0.766,48,3.171,92,1.747,111,2.545,114,1.251,127,1.02,130,0.46,143,2.182,146,1.34,176,2.004,198,2.793,235,1.997,297,3.489,317,1.655,321,2.776,322,3.489,323,2.97,327,1.997,339,1.576,340,4.555,341,5.576,342,4.555,343,2.182,344,1.997,349,1.858,351,1.997,352,3.489,376,4.359,378,2.465,379,3.489,380,2.465,381,2.465,382,2.465,383,2.465,384,2.465,385,2.465,386,1.655,387,1.997,388,2.182,389,2.465,390,1.655,391,2.465,392,3.94,393,3.94,394,2.182,395,2.465,396,2.465,397,2.182,398,2.465,399,1.858,400,2.465,401,2.465,402,2.182,403,2.465,404,2.465,405,2.465,406,2.465,407,2.465,408,2.97,409,2.465,410,2.182,411,1.858,412,2.182,413,3.94,414,2.182,415,2.182,416,2.465,417,2.465,418,2.465,419,1.576,420,2.465]],["t/33",[1,3.548,53,6.148,54,2.677,104,4.293,106,3.548,111,3.101,234,3.104,240,1.968,287,2.8,317,4.662,320,3.878,336,2.94,387,5.625,421,4.38,422,4.907,423,6.057,424,6.943,425,3.878,426,4.38,427,3.878,428,3.878,429,2.94,430,3.878,431,3.301,432,6.057]],["t/35",[0,0.5,10,3.673,12,2.608,14,2.608,25,3.498,42,3.085,70,3.208,71,4.717,72,4.717,130,1.022,433,5.471,434,4.124,435,2.265,436,5.471,437,5.471,438,3.208,439,4.432,440,4.124,441,3.498]],["t/37",[0,0.453,14,1.896,70,2.332,74,4.393,130,0.466,172,1.488,176,2.854,251,2.67,290,1.88,307,1.154,317,1.674,422,2.02,434,1.88,435,1.647,442,4.267,443,2.02,444,2.209,445,4.393,446,2.494,447,1.768,448,3.978,449,1.768,450,2.02,451,2.02,452,3.978,453,2.494,454,2.494,455,2.494,456,2.02,457,2.494,458,2.494,459,1.88,460,2.02,461,2.494,462,2.209,463,2.494,464,3.978,465,3.978,466,2.494,467,2.494,468,2.02,469,2.494,470,3.978,471,4.961,472,2.494,473,2.209,474,2.494,475,2.494,476,2.209,477,4.961,478,3.978,479,2.494,480,2.494,481,2.494,482,2.02,483,2.494,484,2.494,485,2.494,486,2.494,487,2.209,488,2.494,489,2.494,490,2.494,491,3.978,492,2.494,493,2.209,494,2.494,495,2.02,496,2.209,497,2.209,498,2.494,499,2.494,500,2.494,501,2.494,502,2.494]],["t/39",[0,0.575,10,4.228,14,3.001,54,3.849,72,4.228,130,1.176,439,5.101,441,4.026,503,5.101,504,4.464,505,5.101]],["t/41",[438,3.339,441,4.608,445,5.043,447,4.037,462,5.043,506,5.043,507,4.037,508,5.695,509,5.695,510,5.043,511,5.695,512,5.695,513,4.037,514,5.695,515,5.695,516,5.695,517,4.293]],["t/43",[0,0.527,71,4.882,130,1.078,207,3.268,447,4.093,507,4.093,518,5.113,519,4.352,520,5.774,521,5.774,522,2.931,523,5.774,524,5.113,525,5.774,526,5.113]],["t/45",[33,2.689,59,4.845,207,2.459,441,3.498,442,4.124,517,4.124,522,2.777,527,4.492,528,5.471,529,3.673,530,5.471,531,5.471,532,4.432,533,5.471,534,4.845,535,3.344,536,5.471,537,5.471,538,4.432,539,5.471]],["t/47",[69,4.071,71,3.626,207,2.427,261,3.828,286,4.782,419,3.452,438,3.166,441,3.452,496,4.782,517,5.252,522,2.741,540,4.782,541,5.4,542,5.4,543,5.4,544,5.4,545,5.4,546,5.4,547,5.4,548,4.375,549,4.782]],["t/49",[71,3.722,72,3.722,165,4.909,183,3.722,207,2.492,440,4.179,441,3.544,442,4.179,532,4.491,550,5.544,551,5.544,552,3.126,553,5.544,554,5.544,555,5.544,556,5.544,557,5.544,558,5.544,559,4.909,560,4.909]],["t/51",[0,0.442,12,2.305,16,2.836,30,1.503,45,1.684,69,3.646,70,2.836,71,4.351,72,4.351,130,0.903,207,2.174,344,3.918,425,4.283,439,3.918,440,3.646,441,3.092,442,3.646,504,3.428,505,3.918,506,4.283,517,3.646,522,2.455,552,3.654,561,3.646,562,4.837,563,4.837,564,4.837,565,4.837]],["t/53",[0,0.432,3,2.952,4,3.349,6,2.889,7,3.022,12,2.253,17,3.351,33,2.324,61,3.174,84,3.022,92,4.523,94,3.829,95,2.569,96,3.174,288,4.186,566,4.727,567,3.829,568,4.727,569,4.727,570,4.186,571,3.351,572,4.186,573,4.727,574,3.022,575,4.186,576,3.829,577,4.727,578,4.727,579,4.727,580,4.186]],["t/55",[3,2.115,4,2.399,6,2.794,7,2.923,23,3.704,30,1.42,33,2.247,102,2.68,110,4.188,126,3.704,438,2.68,567,3.704,574,2.923,581,4.572,582,4.572,583,6.238,584,5.524,585,4.572,586,4.572,587,4.572,588,4.048,589,4.572,590,4.572,591,4.572,592,4.572,593,4.572,594,4.048,595,4.572,596,4.572,597,4.572,598,4.572,599,4.572,600,4.572]],["t/57",[3,2.237,4,2.538,6,2.956,7,3.092,102,2.836,109,3.428,287,3.092,522,2.455,548,3.918,549,4.283,570,4.283,571,4.593,574,3.092,584,4.283,601,4.283,602,3.918,603,4.837,604,4.283,605,4.837,606,4.837,607,6.48,608,4.283,609,4.837,610,4.837,611,4.837,612,4.837,613,4.837,614,4.837,615,4.283]],["t/59",[3,2.952,4,3.349,8,2.01,61,3.174,96,3.174,102,2.772,127,1.957,259,3.829,354,4.186,522,2.399,548,3.829,574,3.022,576,3.829,580,6.397,616,3.829,617,4.727,618,4.727,619,4.186,620,4.727,621,4.186,622,4.727,623,4.727,624,4.727,625,4.727,626,4.727,627,4.727,628,4.727,629,4.727,630,4.727]],["t/61",[3,2.092,4,2.373,30,1.405,61,3.036,96,3.036,102,2.651,103,4.004,104,3.205,126,3.663,254,3.205,311,3.036,318,3.663,438,2.651,524,4.004,574,3.958,575,5.483,588,4.004,594,5.483,608,4.004,631,3.663,632,4.522,633,4.522,634,4.522,635,4.522,636,3.205,637,4.522,638,4.522,639,4.522,640,3.663,641,4.522,642,4.522,643,4.522,644,4.522,645,4.522]],["t/63",[3,2.709,4,3.073,6,3.579,7,3.743,33,2.878,44,4.414,56,4.743,92,4.15,96,3.931,102,3.433,574,3.743,576,4.743,646,5.855,647,4.414,648,5.855,649,5.855]],["t/65",[0,0.389,8,0.671,14,1.296,20,1.19,23,1.279,24,1.928,31,1.279,33,1.761,58,4.331,61,1.06,62,1.398,63,2.701,64,2.203,65,3.772,67,3.173,68,3.173,77,1.662,82,2.86,101,2.05,111,2.328,114,0.801,133,1.19,136,2.235,140,3.621,141,1.595,146,0.858,150,1.06,172,1.34,175,0.752,176,2.004,191,1.595,193,1.928,197,2.408,198,1.119,199,1.009,209,1.009,217,1.119,228,3.721,234,1.119,240,0.709,242,0.89,249,1.398,252,2.54,257,2.903,266,2.406,294,1.279,307,0.73,326,1.119,331,1.009,362,1.119,415,1.398,450,1.279,459,1.19,495,1.279,504,1.119,631,1.279,636,1.119,650,1.579,651,1.398,652,2.408,653,1.398,654,1.279,655,3.211,656,1.579,657,1.398,658,1.279,659,1.19,660,1.279,661,1.398,662,1.579,663,1.06,664,1.119,665,1.398,666,1.279,667,1.579,668,1.579,669,1.579,670,2.72,671,2.408,672,1.739,673,2.72,674,0.73,675,1.579,676,2.203,677,1.398,678,1.579,679,1.579,680,1.579,681,1.579,682,1.398,683,1.398,684,1.579,685,1.398,686,1.579,687,1.579,688,1.579,689,1.579,690,2.408,691,2.05,692,1.398,693,1.579,694,1.398,695,1.449,696,1.398,697,1.398,698,0.965,699,1.279,700,1.579,701,1.579,702,1.579,703,1.579,704,1.579,705,1.398,706,2.72,707,1.579,708,1.579,709,1.579,710,1.579,711,1.279,712,1.579,713,1.579,714,1.579,715,1.579,716,2.72,717,1.398,718,1.579]],["t/67",[0,0.602,5,5.343,12,3.144,38,5.343,39,5.343,240,2.964,719,5.841,720,4.972]],["t/69",[0,0.475,18,1.651,79,4.211,95,2.825,256,2.741,267,5.368,387,4.211,428,4.603,429,3.49,438,3.048,473,4.603,522,2.639,721,3.685,722,5.198,723,3.49,724,5.198,725,5.198,726,4.603,727,4.603,728,5.198,729,2.728,730,5.198]],["t/71",[2,4.319,4,3.626,8,2.267,10,3.579,16,3.126,28,3.579,30,1.656,54,3.259,118,2.621,175,2.541,196,3.779,207,2.396,255,4.721,260,4.721,721,3.779,731,4.721,732,6.119,733,5.331,734,5.331,735,5.331,736,5.331]],["t/73",[8,2.105,28,3.324,95,2.691,207,2.958,209,3.166,266,3.324,275,3.027,276,4.024,349,3.732,434,3.732,660,4.011,721,3.51,737,4.952,738,7.881,739,6.583,740,4.385,741,4.952,742,3.732,743,4.952,744,4.952,745,4.385,746,4.952,747,4.011]],["t/75",[0,0.566,3,2.87,4,3.256,6,3.792,7,3.966,12,2.957,92,4.397,93,5.493,94,5.026,95,3.372,96,4.165,386,4.165]],["t/78",[0,0.62,16,2.464,18,1.87,37,2.979,99,3.168,112,3.405,136,3.089,172,1.572,175,3.237,176,2.098,189,2.206,240,1.889,307,1.944,331,2.687,519,3.168,640,3.405,663,3.952,672,2.687,748,4.203,749,4.203,750,6.517,751,5.886,752,4.203,753,3.168,754,4.203,755,3.168,756,4.203,757,4.203,758,3.405,759,3.722,760,4.203,761,4.203]],["t/80",[0,0.766,172,2.429,175,3.095,176,2.786,307,3.004,762,6.493]],["t/82",[0,0.683,25,4.784,55,4.741,82,4.49,172,1.897,176,2.947,196,3.595,307,2.346,763,4.491,764,5.923,765,5.072,766,4.491,767,4.491,768,4.491,769,5.072,770,4.491]],["t/84",[0,0.687,18,1.631,43,3.01,114,3.422,136,3.539,150,3.447,172,1.92,176,2.403,191,3.01,194,4.547,281,4.547,307,2.375,326,3.639,443,4.159,663,3.447,672,3.282,699,4.159,771,4.547,772,4.547,773,4.547,774,5.134]],["t/86",[0,0.683,25,4.784,82,4.49,172,1.897,176,2.947,196,3.595,307,2.346,763,4.491,764,5.923,766,4.491,767,4.491,768,4.491,770,4.491,775,6.688,776,5.072,777,5.072]],["t/88",[0,0.573,14,1.438,30,0.937,58,2.026,64,2.444,72,2.026,77,1.844,111,2.321,136,1.584,146,1.64,166,2.672,172,2.097,176,2.412,191,2.706,193,2.139,202,2.444,203,2.672,219,2.951,228,2.139,234,2.139,242,1.701,252,2.139,307,1.396,325,2.026,326,2.139,331,1.929,339,1.929,411,2.274,450,2.444,487,2.672,495,2.444,532,2.444,640,2.444,652,2.672,655,2.274,666,3.739,677,2.672,682,2.672,683,2.672,690,2.672,694,2.672,699,3.739,753,2.274,758,2.444,778,1.929,779,3.017,780,2.139,781,2.274,782,3.017,783,2.672,784,3.017,785,4.087,786,3.017,787,2.672,788,3.017,789,2.672,790,3.017,791,3.017,792,2.444,793,2.139,794,2.444,795,2.444,796,1.929,797,3.017,798,3.017,799,3.017,800,3.017]],["t/91",[0,0.601,3,1.834,4,2.08,8,1.685,10,2.661,21,2.988,54,2.423,111,1.641,129,1.385,130,0.74,141,2.324,172,1.482,176,2.701,191,2.324,217,2.809,241,3.51,307,1.834,328,3.211,331,2.534,339,2.534,394,3.51,397,3.51,503,3.211,691,2.988,781,2.988,787,3.51,794,3.211,795,3.211,796,2.534,801,3.963,802,3.51,803,3.51,804,2.809,805,3.51,806,3.51,807,3.963,808,3.963,809,3.963,810,3.51,811,3.963,812,3.963,813,3.963,814,3.963]],["t/93",[3,1.579,4,1.791,8,1.451,24,2.419,33,1.677,48,2.856,54,2.086,56,2.764,58,3.4,63,2.572,77,3.096,110,2.291,111,1.413,127,1.413,141,2.001,146,2.752,209,2.181,228,3.59,238,3.022,252,4.28,274,2.572,294,2.764,362,2.419,419,2.181,493,3.022,526,3.022,559,3.022,571,2.419,636,2.419,654,2.764,657,3.022,658,2.764,659,2.572,664,2.419,665,3.022,671,3.022,695,1.161,780,4.28,783,3.022,785,3.022,815,3.412,816,3.022,817,5.064,818,3.022,819,3.412,820,3.412,821,5.064,822,3.412,823,3.412,824,3.022,825,3.412,826,3.412,827,3.412,828,2.764,829,2.572,830,3.412]],["t/95",[11,4.235,30,1.746,84,3.592,87,4.975,102,3.294,146,3.054,574,3.592,658,4.552,659,4.235,666,4.552,732,4.975,831,5.619,832,5.619,833,5.619,834,5.619,835,4.975,836,5.619,837,5.619,838,5.619]],["t/97",[0,0.689,16,3.024,21,2.637,111,1.448,127,1.448,128,1.534,129,1.659,130,0.653,141,2.051,172,1.308,176,2.57,191,2.051,217,2.479,240,1.572,251,2.349,256,1.411,266,2.349,307,1.618,311,2.349,312,2.834,313,3.098,328,2.834,331,2.236,435,2.135,482,2.834,691,2.637,695,1.19,698,2.138,794,2.834,795,2.834,796,2.236,802,3.098,803,3.098,804,2.479,805,3.098,806,3.098,829,2.637,839,1.411,840,1.277,841,3.498,842,1.901,843,3.098,844,2.834,845,3.498,846,1.973,847,3.498,848,2.637,849,5.158]],["t/100",[0,0.601,14,2.36,18,2.091,127,2.05,130,0.925,250,3.324,408,3.732,435,3.061,443,4.011,846,3.712,850,4.385,851,4.952,852,4.952,853,4.385,854,2.691,855,4.952,856,4.952,857,4.952,858,4.952,859,4.952,860,4.952,861,4.952,862,4.952,863,4.952]],["t/102",[0,0.322,14,1.681,18,1.649,43,2.068,61,2.368,69,2.659,133,2.659,135,2.5,207,1.585,250,2.368,251,2.368,311,2.368,325,2.368,435,3.323,438,2.068,497,3.124,504,3.679,505,4.205,647,2.659,651,3.124,661,3.124,828,2.858,829,2.659,846,1.989,850,3.124,854,4.252,864,3.528,865,3.528,866,3.528,867,3.528,868,3.528,869,3.528,870,3.528,871,4.205,872,3.528,873,3.528,874,3.528,875,3.528,876,3.528,877,3.528,878,2.659,879,3.528,880,3.528,881,3.124,882,3.124,883,3.528]],["t/104",[0,0.681,14,2.864,37,2.399,130,0.94,172,1.883,176,2.372,208,2.997,220,2.742,237,2.742,306,4.457,307,2.329,311,4.035,312,4.868,325,2.272,408,2.551,435,2.944,482,4.078,504,2.399,510,2.997,664,2.399,721,3.568,771,2.997,846,4.204,854,1.84,884,3.385,885,2.997,886,2.997,887,3.385,888,3.385,889,3.385,890,3.385,891,2.551,892,3.385,893,3.385,894,3.385,895,3.385,896,3.385,897,3.385,898,3.385]],["t/106",[0,0.602,435,2.73,854,4.288,899,6.596,900,5.343,901,6.596,902,6.596]],["t/108",[0,0.565,16,3.63,25,2.891,83,4.004,240,2.032,250,3.036,435,2.923,527,2.891,602,3.663,631,3.663,663,4.157,717,4.004,755,3.409,846,4.282,854,3.365,871,5.016,903,4.522,904,5.016,905,4.004,906,4.522,907,4.004,908,5.483,909,4.522,910,4.522,911,4.004]],["t/110",[25,3.092,45,1.684,146,2.629,240,2.174,299,4.283,386,4.351,435,2.002,519,3.646,535,2.956,755,4.885,835,4.283,846,4.402,854,3.522,907,4.283,912,3.918,913,4.283,914,4.837,915,4.837,916,4.837,917,4.837,918,4.837,919,4.837,920,5.739,921,4.837]],["t/112",[0,0.422,12,2.996,30,1.436,189,2.426,198,3.276,199,2.955,225,3.484,232,4.093,250,3.103,339,2.955,435,1.913,663,3.103,672,4.018,846,4.52,881,5.566,882,4.093,904,3.745,905,4.093,912,3.745,922,4.622,923,4.622,924,4.622,925,6.285,926,4.622,927,4.622,928,4.622,929,4.093]],["t/114",[0,0.422,18,1.468,114,2.346,135,3.276,207,2.825,519,3.484,616,3.745,829,3.484,929,4.093,930,4.622,931,4.622,932,4.622,933,6.208,934,5.785,935,4.622,936,2.825,937,3.745,938,3.745,939,3.745,940,3.745,941,3.745,942,3.745,943,4.622,944,4.622,945,4.622,946,4.622,947,4.622,948,4.622,949,4.622]],["t/116",[0,0.487,118,2.621,129,1.308,130,0.996,261,3.779,429,3.579,529,3.579,695,1.813,804,3.779,840,1.946,886,4.721,933,4.319,934,4.319,940,4.319,941,4.319,942,4.319,950,4.319,951,4.019,952,5.331,953,5.331,954,4.639,955,5.331]],["t/118",[0,0.664,128,2.162,129,1.784,130,1.078,321,4.1,336,3.877,552,3.256,695,1.964,840,2.108,956,1.717,957,2.671,958,4.352,959,5.113]],["t/120",[0,0.484,24,1.324,26,1.324,30,1.261,105,1.324,111,2.653,118,0.918,119,1.408,129,0.77,136,0.981,141,1.841,146,1.016,154,1.254,169,1.408,172,2.284,173,1.408,174,1.655,175,1.496,176,2.764,180,1.408,185,1.324,188,2.366,190,1.324,198,1.324,199,1.194,207,2.138,211,3.854,219,1.194,227,1.514,242,1.77,256,0.754,290,1.408,292,2.108,307,0.864,321,1.054,362,2.878,390,1.254,399,1.408,435,1.3,447,1.324,449,1.324,456,1.514,459,1.408,460,2.543,468,1.514,527,1.194,561,2.366,616,1.514,723,1.254,780,1.324,846,1.054,848,2.366,911,1.655,933,1.514,934,3.289,939,2.543,940,2.543,941,2.543,942,2.543,959,1.655,960,1.408,961,1.868,962,2.78,963,2.543,964,3.595,965,1.655,966,2.78,967,1.655,968,1.655,969,1.655,970,1.655,971,1.868,972,1.868,973,1.868,974,1.868,975,1.868,976,1.868,977,1.655,978,1.868,979,1.868,980,1.868,981,1.868,982,1.868,983,3.139,984,1.868,985,1.868,986,1.868,987,1.868,988,1.514,989,1.868,990,1.655,991,1.655,992,1.655,993,1.868,994,1.868,995,1.655,996,1.655,997,1.408,998,1.868,999,1.655,1000,1.868,1001,1.868,1002,3.139]],["t/123",[0,0.255,3,0.753,17,1.154,18,1.165,31,1.319,44,1.227,95,0.885,107,3.247,114,0.826,118,1.373,127,0.674,128,0.484,140,2.105,142,1.154,146,0.885,163,1.227,175,1.331,207,2.199,212,1.441,259,1.319,279,1.041,282,5.101,292,1.093,330,1.319,362,1.154,386,1.093,434,1.227,438,0.954,507,1.154,513,1.979,522,0.826,527,1.785,535,1.707,540,1.441,560,1.441,567,1.319,602,2.262,604,1.441,615,1.441,619,2.473,621,1.441,636,1.979,660,1.319,695,0.554,719,1.441,726,1.441,740,1.441,747,1.319,792,1.319,818,1.441,871,4.627,885,1.441,950,1.319,951,1.227,954,1.093,996,1.441,1003,3.667,1004,3.667,1005,2.793,1006,3.85,1007,5.337,1008,4.348,1009,1.628,1010,3.247,1011,1.628,1012,1.628,1013,1.628,1014,1.628,1015,5.058,1016,1.628,1017,1.441,1018,1.441,1019,1.441,1020,1.441,1021,1.441,1022,2.262,1023,1.628,1024,2.793,1025,2.793,1026,2.793,1027,1.628,1028,2.793,1029,1.628,1030,1.628,1031,2.793,1032,1.628,1033,1.628,1034,1.628,1035,1.628,1036,1.628,1037,1.628,1038,1.628,1039,1.628,1040,1.628,1041,1.628,1042,2.793,1043,1.628,1044,1.628,1045,3.667,1046,1.628,1047,1.628,1048,1.628,1049,1.628,1050,2.793,1051,1.628,1052,2.793,1053,1.628,1054,1.628,1055,1.628,1056,2.793,1057,2.793,1058,1.441,1059,1.628,1060,1.628,1061,1.628,1062,1.628,1063,1.628,1064,1.628,1065,2.793,1066,1.628,1067,1.628,1068,1.628,1069,1.628,1070,1.628,1071,1.628,1072,1.628,1073,1.628,1074,1.227,1075,1.628]],["t/125",[0,0.527,118,2.838,129,1.417,130,1.078,250,3.877,251,3.877,261,4.093,346,4.678,429,3.877,527,3.691,695,1.964,840,2.108,950,4.678,951,4.352,1022,4.678,1074,4.352,1076,5.774]],["t/127",[0,0.658,128,2.143,129,1.769,130,1.064,321,4.065,336,3.824,390,3.824,552,3.212,695,1.937,840,2.079,956,1.693,957,2.635,958,4.293,960,4.293]],["t/129",[0,0.355,18,0.648,24,0.807,26,0.807,30,0.862,58,0.765,70,0.668,105,0.807,111,2.081,118,0.56,119,0.858,127,0.471,129,0.501,136,0.598,141,0.668,146,0.619,154,0.765,163,0.858,169,0.858,172,1.988,173,0.858,175,0.543,176,3.02,180,0.858,185,0.807,188,1.538,190,0.807,199,0.728,207,1.519,211,2.738,227,0.923,242,1.151,256,0.459,261,0.807,282,1.653,290,0.858,292,1.862,307,0.527,311,0.765,321,0.642,331,0.728,346,0.923,390,0.765,399,0.858,435,0.845,447,0.807,449,0.807,451,0.923,456,0.923,459,0.858,460,1.653,468,0.923,527,2.765,529,1.37,561,1.538,653,1.008,676,0.923,747,0.923,780,0.807,789,1.008,810,1.807,824,1.008,846,0.642,848,1.538,939,0.923,954,0.765,960,0.858,962,2.456,963,2.247,964,2.456,965,1.008,966,1.807,967,1.008,968,1.008,969,1.008,970,1.008,988,0.923,990,1.008,991,1.008,992,1.008,995,1.008,999,1.008,1006,1.807,1007,2.992,1010,1.008,1015,1.807,1017,1.008,1018,1.008,1019,1.807,1020,1.008,1021,1.008,1022,2.247,1074,0.858,1077,1.139,1078,2.041,1079,1.139,1080,1.139,1081,2.041,1082,1.139,1083,1.139,1084,1.139,1085,1.139,1086,2.773,1087,1.139,1088,2.773,1089,1.139,1090,1.139,1091,1.139,1092,1.139,1093,1.139,1094,1.139,1095,1.139,1096,1.139,1097,1.139,1098,1.139,1099,1.139,1100,2.041,1101,1.139,1102,1.139,1103,1.139,1104,1.139,1105,1.008,1106,2.041,1107,1.139,1108,1.139,1109,2.773,1110,1.139,1111,1.139,1112,2.041,1113,3.379,1114,2.041,1115,1.139,1116,1.139,1117,1.139,1118,1.139,1119,1.139,1120,1.139,1121,3.379,1122,2.773,1123,1.139,1124,2.041,1125,1.139,1126,2.041,1127,3.379,1128,2.773,1129,1.139,1130,1.139,1131,1.139,1132,1.139,1133,1.139,1134,1.139,1135,1.139,1136,1.139,1137,1.139,1138,2.041,1139,1.139,1140,1.139,1141,1.139,1142,1.139,1143,1.139,1144,1.139,1145,2.041,1146,1.139,1147,1.139,1148,1.139,1149,1.139,1150,1.139,1151,1.139,1152,1.139,1153,1.139,1154,1.139,1155,1.139,1156,1.139,1157,2.041]],["t/131",[55,4.27,114,3.058,209,4.773,266,4.045,309,5.335,386,4.045,538,4.88,723,4.045,1158,6.024,1159,6.024,1160,4.27,1161,4.541,1162,4.88]],["t/133",[0,0.566,129,1.522,130,1.159,431,4.676,538,5.026,695,2.11,723,4.165,758,5.026,840,2.265,1162,5.026,1163,5.493,1164,5.493]],["t/135",[0,0.658,128,2.143,129,1.397,130,1.064,321,3.212,336,3.824,552,3.212,695,1.937,840,2.079,956,1.693,957,2.635,958,4.293,1165,5.043,1166,5.043,1167,5.043,1168,5.043]],["t/137",[0,0.516,14,0.863,26,1.284,51,1.366,58,1.216,109,1.284,111,1.931,112,1.468,129,0.75,136,2.735,140,1.366,141,1.062,150,1.216,154,2.665,169,2.992,172,1.949,175,1.892,176,2.777,182,1.366,185,1.284,190,2.168,193,1.284,199,1.158,207,1.375,242,1.022,253,1.284,256,1.234,287,1.158,292,1.216,307,0.838,402,3.515,431,2.306,435,0.75,444,1.604,527,1.158,561,1.366,571,1.284,655,1.366,672,1.158,676,1.468,723,2.665,729,0.951,750,3.515,755,1.366,773,1.604,804,1.284,843,1.604,846,1.022,848,3.516,920,1.604,963,1.468,977,1.604,988,1.468,1105,1.604,1162,2.478,1163,2.709,1164,2.709,1165,1.604,1166,1.604,1167,1.604,1168,1.604,1169,1.812,1170,3.059,1171,1.812,1172,1.812,1173,1.812,1174,1.812,1175,3.059,1176,1.604,1177,1.812,1178,1.812,1179,1.812,1180,3.059,1181,5.211,1182,4.664,1183,1.812,1184,1.812,1185,1.812,1186,1.812,1187,3.97,1188,1.812,1189,1.812,1190,1.812,1191,1.158,1192,1.468,1193,3.059,1194,1.812,1195,1.812,1196,1.812,1197,1.812,1198,3.059,1199,1.812,1200,1.812,1201,1.812,1202,1.604,1203,1.812,1204,1.812,1205,1.812,1206,1.812,1207,1.812,1208,1.812,1209,3.059,1210,1.604,1211,1.812,1212,1.812]],["t/140",[39,3.093,48,2.153,55,2.706,78,3.381,102,2.239,130,0.713,141,3.224,175,1.82,176,2.925,191,2.239,219,3.515,292,2.564,408,2.878,451,3.093,476,3.381,654,4.454,655,2.878,691,2.878,781,2.878,792,3.093,1160,3.897,1161,2.878,1191,3.515,1192,4.454,1202,3.381,1213,2.878,1214,3.818,1215,3.381,1216,3.381,1217,3.818,1218,5.498,1219,5.498,1220,3.818,1221,3.818,1222,3.818,1223,3.818,1224,3.818,1225,3.818,1226,3.818]],["t/143",[20,4.895,95,3.529,111,2.688,219,4.151,298,5.75,1191,4.151,1213,4.895,1215,5.75,1227,6.493]],["t/145",[0,0.427,33,3.113,101,3.523,110,3.138,114,2.372,133,3.523,146,2.54,189,2.453,257,3.787,414,4.139,507,3.313,636,3.313,659,3.523,685,4.139,692,4.139,772,4.139,780,3.313,816,4.139,1161,4.774,1191,4.049,1228,4.674,1229,4.674,1230,4.674,1231,4.674,1232,4.674,1233,4.674,1234,4.139,1235,4.674,1236,4.674,1237,4.674,1238,4.674]],["t/147",[136,3.99,176,2.211,219,3.966,411,4.676,507,4.397,1239,6.203,1240,6.203,1241,6.203,1242,6.203,1243,5.493,1244,6.203]],["t/149",[158,3.851,240,2.707,422,6.049,828,4.88,1191,3.851,1192,4.88,1216,5.335,1245,5.335,1246,6.024,1247,6.024,1248,6.024,1249,6.024,1250,6.024]],["t/151",[176,2.211,219,3.966,330,5.026,513,4.397,534,5.493,891,4.676,1191,3.966,1213,4.676,1251,5.493,1252,6.203,1253,6.203,1254,6.203]],["t/153",[89,5.493,296,5.493,839,2.502,1191,3.966,1213,4.676,1245,5.493,1255,6.203,1256,6.203,1257,6.203,1258,6.203,1259,6.203,1260,6.203]],["t/155",[0,0.658,17,4.037,37,4.037,99,4.293,128,1.693,130,1.346,209,3.641,266,3.824,936,4.406,1261,5.695,1262,4.293,1263,7.208,1264,4.614,1265,5.043]],["t/157",[0,0.422,11,3.484,12,2.203,30,1.436,42,2.607,70,2.71,99,3.484,109,3.276,118,2.272,130,0.863,269,3.484,270,2.955,271,2.955,275,2.825,276,2.825,503,3.745,711,3.745,742,3.484,778,2.955,912,3.745,936,2.825,1058,4.093,1262,3.484,1264,3.745,1266,4.622,1267,6.285,1268,4.622,1269,4.455,1270,4.093,1271,4.093,1272,3.276,1273,4.622,1274,2.512]],["t/159",[0,0.694,128,1.844,129,1.522,130,1.42,522,3.149,695,2.11,698,3.792,840,2.265,936,3.792,1269,4.397]],["t/161",[8,2.677,45,2.192,129,1.882,552,3.551,695,2.142,840,2.299,956,1.872,957,2.913,1275,4.228,1276,4.026]],["t/163",[0,0.558,8,2.599,45,2.128,128,1.817,129,1.5,130,1.142,695,2.079,840,2.231,956,1.817,1277,4.333,1278,4.333,1279,4.104,1280,3.322]],["t/165",[0,0.72,8,2.105,18,2.091,30,2.045,45,1.724,127,2.05,128,2.198,130,1.229,158,3.166,256,1.997,674,2.291,729,2.599,842,3.578,956,1.472,957,3.045,1274,2.691,1281,3.324,1282,4.011,1283,2.434]],["t/167",[0,0.67,18,1.86,43,3.433,45,2.038,129,1.8,130,1.093,172,2.19,189,3.073,839,2.361,956,1.741,1284,4.743,1285,3.931,1286,4.743,1287,4.743]],["t/169",[0,0.693,18,1.967,30,1.405,45,1.574,127,1.872,128,1.841,129,1.109,130,1.156,189,2.373,674,2.092,729,2.373,839,2.848,842,3.365,956,1.344,957,2.864,997,3.409,1280,3.838,1283,2.223,1285,3.036,1288,4.157,1289,3.036,1290,3.663,1291,3.663,1292,3.036]],["t/171",[8,2.21,43,3.048,127,2.152,129,1.858,240,2.336,256,2.096,529,3.49,674,2.405,695,1.768,796,3.323,839,3.054,840,1.898,878,3.918,956,1.545,1160,3.685,1280,2.825,1281,3.49,1293,4.211,1294,4.211,1295,4.211,1296,3.685]],["t/173",[18,1.284,95,3.111,128,1.977,129,1.774,225,3.045,240,1.816,279,2.583,339,2.583,571,4.058,711,3.273,839,2.916,1269,2.864,1275,2.713,1288,2.713,1289,2.713,1292,2.713,1297,4.04,1298,4.04,1299,5.069,1300,4.04,1301,6.404,1302,5.069,1303,5.011,1304,3.578,1305,4.04,1306,4.04,1307,4.04,1308,4.04,1309,4.04,1310,3.273,1311,3.273]],["t/175",[0,0.381,18,0.843,30,0.824,38,2.149,57,3.148,128,2.245,129,1.438,176,2.525,183,2.804,196,2.961,225,3.894,234,1.88,237,2.149,253,1.88,256,1.684,347,2.349,379,2.349,419,1.696,647,2,696,2.349,839,1.07,842,2.808,954,1.781,956,0.789,1176,2.349,1234,2.349,1283,1.304,1296,1.88,1299,4.575,1301,5.644,1302,3.699,1303,3.148,1304,3.699,1312,2.653,1313,2.653,1314,2.653,1315,2.653,1316,2.653,1317,2.349,1318,2.653,1319,2.653,1320,2.653,1321,2.653,1322,2.653,1323,2.653,1324,2.653,1325,5.86,1326,2.653,1327,4.177,1328,4.177,1329,2.653,1330,2.653,1331,5.166,1332,2.653,1333,5.166,1334,4.177,1335,2.653]],["t/177",[0,0.513,12,2.678,30,2.22,33,2.762,42,3.168,46,3.983,124,3.772,130,1.335,134,3.772,435,2.326,535,3.434,674,2.599,778,3.592,854,3.054,1274,3.054,1283,2.762,1336,3.983]],["t/179",[0,0.694,128,1.844,129,1.522,130,1.42,522,3.149,695,2.11,698,3.792,840,2.265,936,3.792,1270,5.493]],["t/181",[8,2.677,45,2.192,129,1.882,552,3.551,695,2.142,840,2.299,956,1.872,957,2.913,1275,4.228,1276,4.026]],["t/183",[0,0.558,8,2.599,45,2.128,128,1.817,129,1.5,130,1.142,695,2.079,840,2.231,956,1.817,1277,4.333,1278,4.333,1279,4.104,1280,3.322]],["t/185",[0,0.72,8,2.105,18,2.091,30,2.045,45,1.724,127,2.05,128,2.198,130,1.229,158,3.166,256,1.997,674,2.291,729,2.599,842,3.578,956,1.472,957,3.045,1274,2.691,1281,3.324,1282,4.011,1283,2.434]],["t/187",[0,0.67,18,1.86,43,3.433,45,2.038,129,1.8,130,1.093,172,2.19,189,3.073,839,2.361,956,1.741,1284,4.743,1285,3.931,1286,4.743,1287,4.743]],["t/189",[0,0.693,18,1.967,30,1.405,45,1.574,127,1.872,128,1.841,129,1.109,130,1.156,189,2.373,674,2.092,729,2.373,839,2.848,842,3.365,956,1.344,957,2.864,997,3.409,1280,3.838,1283,2.223,1285,3.036,1288,4.157,1289,3.036,1290,3.663,1291,3.663,1292,3.036]],["t/191",[8,2.21,43,3.048,127,2.152,129,1.858,240,2.336,256,2.096,529,3.49,674,2.405,695,1.768,796,3.323,839,3.054,840,1.898,878,3.918,956,1.545,1160,3.685,1280,2.825,1281,3.49,1293,4.211,1294,4.211,1295,4.211,1296,3.685]],["t/193",[18,1.631,128,2.004,129,2.091,253,3.639,256,2.071,279,3.282,839,3.036,900,4.159,1276,3.282,1288,3.447,1289,3.447,1292,3.447,1303,3.87,1310,4.159,1311,4.159,1337,4.547,1338,5.134,1339,5.134]],["t/195",[0,0.513,12,2.678,30,2.22,33,2.762,42,3.168,46,3.983,124,3.772,130,1.335,134,3.772,435,2.326,535,3.434,674,2.599,778,3.592,854,3.054,1274,3.054,1283,2.762,1336,3.983]],["t/197",[0,0.535,3,2.709,14,2.791,55,4.15,86,4.743,101,4.414,104,4.15,162,4.743,844,4.743,937,4.743,960,4.414,1269,4.15,1317,5.185,1340,5.855,1341,5.855,1342,5.855]],["t/199",[0,0.542,3,2.747,118,2.919,142,4.209,429,3.987,431,4.476,435,2.458,723,3.987,727,5.259,793,4.209,951,4.476,1269,4.209,1343,5.939,1344,5.939,1345,5.939]],["t/201",[3,1.553,16,1.968,25,2.146,45,2.082,70,2.934,111,2.071,128,0.998,185,2.38,209,2.146,240,2.249,254,2.38,256,1.354,267,4.239,269,3.772,295,2.973,430,2.973,663,2.254,729,1.762,742,3.772,796,2.146,804,2.38,853,2.973,908,2.973,956,1.488,1210,4.431,1262,2.531,1264,2.72,1346,3.357,1347,3.357,1348,3.357,1349,4.431,1350,3.357,1351,5.003,1352,3.357,1353,5.003,1354,3.357,1355,3.357,1356,5.003,1357,3.357,1358,3.357,1359,3.357,1360,3.357,1361,3.357,1362,3.357,1363,3.357,1364,3.357,1365,3.357,1366,3.357,1367,3.357,1368,2.973,1369,3.357,1370,3.357,1371,3.357,1372,3.357]],["t/203",[0,0.682,128,1.791,129,1.478,130,1.394,254,4.27,270,3.851,271,3.851,522,3.058,695,2.049,698,3.682,840,2.199,936,3.682]],["t/205",[45,2.16,129,1.865,270,3.966,271,3.966,552,3.498,695,2.11,840,2.265,956,1.844,957,2.87,1275,4.165,1276,3.966]],["t/207",[0,0.55,45,2.097,128,1.791,129,1.478,130,1.125,270,3.851,271,3.851,695,2.049,840,2.199,956,1.791,1277,4.27,1278,4.27,1279,4.045,1280,3.274]],["t/209",[0,0.7,18,1.694,30,1.656,45,1.856,128,2.054,130,1.29,256,2.15,664,3.779,729,2.798,839,2.15,842,2.898,956,2.054,957,2.466,1274,2.898,1281,3.579,1283,2.621,1373,4.019,1374,4.721]],["t/211",[207,2.631,256,2.958,267,5.678,270,3.743,271,3.743,274,4.414,839,2.361,956,1.741,1373,4.414,1375,5.185,1376,5.185,1377,5.185,1378,5.185]],["t/213",[114,3.245,240,2.873,270,4.088,271,4.088,279,4.088,720,4.819,938,5.18,954,5.199,1379,5.662]],["t/215",[0,0.527,12,2.752,30,2.259,33,2.838,42,3.256,124,3.877,130,1.358,435,2.39,535,3.529,674,2.671,778,3.691,854,3.138,1274,3.138,1283,2.838,1336,4.093]],["t/218",[0,0.557,18,2.391,26,4.325,84,2.83,130,1.304,254,3.137,256,1.785,321,2.496,322,3.137,390,4.096,412,3.919,419,2.83,427,3.919,438,2.595,440,3.336,449,3.137,513,3.137,674,2.048,753,3.336,956,1.316,1380,4.426,1381,4.426,1382,6.101,1383,3.586,1384,4.426,1385,4.426,1386,4.426,1387,4.426,1388,4.426,1389,4.426]],["t/220",[0,0.652,10,3.103,48,2.607,54,2.825,106,3.745,128,1.869,129,1.134,130,1.174,183,3.103,242,4.321,287,2.955,336,4.22,337,4.093,349,3.484,411,3.484,419,2.955,572,4.093,753,3.484,839,1.864,842,2.512,956,1.374,958,3.484,1383,3.745,1390,4.622,1391,4.093,1392,4.622,1393,4.622]],["t/222",[0,0.369,48,3.228,91,3.578,127,2.37,128,1.702,130,1.069,162,3.273,242,3.749,287,2.583,351,4.637,388,3.578,399,3.045,410,3.578,419,2.583,435,1.672,672,2.583,698,2.47,745,3.578,759,3.578,793,2.864,891,4.315,1265,3.578,1394,4.04,1395,5.724,1396,5.724,1397,4.04,1398,4.04,1399,4.04,1400,6.648,1401,4.04,1402,4.04,1403,4.04,1404,4.04,1405,4.04,1406,4.04,1407,4.04]],["t/224",[18,1.86,128,1.741,183,3.931,325,3.931,386,3.931,390,4.925,672,3.743,956,1.741,1262,4.414,1383,4.743,1391,5.185,1408,5.855,1409,5.855,1410,5.855,1411,5.855]],["t/226",[0,0.688,128,1.817,129,1.5,130,1.407,275,3.736,276,3.736,522,3.103,695,2.079,698,3.736,840,2.231,936,3.736]],["t/228",[45,2.16,129,1.865,275,3.792,276,3.792,552,3.498,695,2.11,840,2.265,956,1.844,957,2.87,1275,4.165,1276,3.966]],["t/230",[0,0.55,45,2.097,128,1.791,129,1.478,130,1.125,275,3.682,276,3.682,695,2.049,840,2.199,956,1.791,1277,4.27,1278,4.27,1279,4.045,1280,3.274]],["t/232",[0,0.7,18,1.694,30,1.656,45,1.856,128,2.054,130,1.29,256,2.15,664,3.779,729,2.798,839,2.15,842,2.898,956,2.054,957,2.466,1274,2.898,1281,3.579,1283,2.621,1373,4.019,1374,4.721]],["t/234",[207,2.631,256,2.958,267,5.678,274,4.414,275,3.579,276,3.579,839,2.361,956,1.741,1373,4.414,1375,5.185,1376,5.185,1377,5.185,1378,5.185]],["t/236",[114,3.245,240,2.873,275,3.908,276,3.908,279,4.088,720,4.819,938,5.18,954,5.199,1379,5.662]],["t/238",[0,0.513,12,2.678,30,2.22,33,2.762,42,3.168,46,3.983,124,3.772,130,1.335,134,3.772,435,2.326,535,3.434,674,2.599,778,3.592,854,3.054,1274,3.054,1283,2.762,1336,3.983]],["t/240",[0,0.694,128,1.844,129,1.522,130,1.42,522,3.149,695,2.11,698,3.792,840,2.265,936,3.792,1271,5.493]],["t/242",[8,2.677,45,2.192,129,1.882,552,3.551,695,2.142,840,2.299,956,1.872,957,2.913,1275,4.228,1276,4.026]],["t/244",[0,0.558,8,2.599,45,2.128,128,1.817,129,1.5,130,1.142,695,2.079,840,2.231,956,1.817,1277,4.333,1278,4.333,1279,4.104,1280,3.322]],["t/246",[0,0.716,8,2.081,18,2.075,30,2.029,45,1.704,127,2.026,128,2.186,130,1.22,158,3.128,256,1.973,674,2.264,729,3.428,842,3.55,956,1.455,957,3.021,1274,2.66,1282,3.964,1283,2.405,1412,3.964]],["t/248",[0,0.67,18,1.86,43,3.433,45,2.038,129,1.8,130,1.093,172,2.19,189,3.073,839,2.361,956,1.741,1284,4.743,1285,3.931,1286,4.743,1287,4.743]],["t/250",[0,0.693,18,1.967,30,1.405,45,1.574,127,1.872,128,1.841,129,1.109,130,1.156,189,2.373,674,2.092,729,2.373,839,2.848,842,3.365,956,1.344,957,2.864,997,3.409,1280,3.838,1283,2.223,1285,3.036,1288,4.157,1289,3.036,1290,3.663,1291,3.663,1292,3.036]],["t/252",[8,2.183,43,3.01,127,2.125,129,1.847,240,2.307,256,2.071,529,3.447,674,2.375,695,1.746,729,2.695,796,3.282,839,3.036,840,1.874,878,3.87,956,1.526,1160,3.639,1280,2.791,1293,4.159,1294,4.159,1295,4.159,1296,3.639,1412,4.159]],["t/254",[129,2.029,253,3.983,256,2.266,279,3.592,839,3.169,900,4.552,1276,3.592,1288,3.772,1289,3.772,1292,3.772,1303,4.235,1310,4.552,1311,4.552,1337,4.975]],["t/256",[0,0.513,12,2.678,30,2.22,33,2.762,42,3.168,46,3.983,124,3.772,130,1.335,134,3.772,435,2.326,535,3.434,674,2.599,778,3.592,854,3.054,1274,3.054,1283,2.762,1336,3.983]],["t/258",[0,0.575,14,3.001,37,4.464,118,3.095,175,3.001,1272,4.464,1413,6.297,1414,5.101,1415,6.297,1416,5.576,1417,5.576]],["t/260",[0,0.352,3,1.783,30,1.197,79,3.122,86,4.484,118,3.183,147,3.412,175,3.087,202,3.122,240,1.732,251,2.587,269,2.905,429,2.587,449,2.731,513,2.731,705,3.412,781,2.905,839,1.554,844,3.122,891,2.905,904,3.122,913,3.412,937,3.122,1272,4.59,1279,2.587,1296,2.731,1368,4.901,1412,3.122,1414,3.122,1416,5.735,1417,3.412,1418,3.854,1419,3.854,1420,3.854,1421,3.854,1422,3.854,1423,3.854,1424,3.854,1425,5.535,1426,3.854,1427,3.854,1428,3.412]],["t/262",[45,2.192,116,5.576,175,3.001,742,4.747,1074,4.747,1414,5.101,1428,5.576,1429,6.297,1430,6.297,1431,6.297,1432,6.297]],["t/264",[42,2.47,45,1.525,100,3.878,118,2.977,135,5.31,179,3.548,287,2.8,317,2.94,697,3.878,793,3.104,1251,3.878,1272,5.31,1433,4.38,1434,6.057,1435,4.38,1436,4.38,1437,4.38,1438,4.38,1439,4.38,1440,6.057,1441,6.057,1442,6.057,1443,7.492,1444,4.38,1445,4.38,1446,4.38]],["t/266",[0,0.463,14,2.417,44,3.823,95,2.757,127,2.1,142,3.595,518,4.491,601,4.491,647,3.823,720,5.042,721,3.595,731,4.491,793,3.595,1161,3.823,1243,4.491,1272,3.595,1349,4.491,1447,5.072,1448,6.688,1449,5.072,1450,5.072,1451,5.072,1452,5.072,1453,5.072,1454,5.072]]],"invertedIndex":[["",{"_index":176,"t":{"11":{"position":[[987,1],[1066,1],[1088,1],[1154,1],[1167,1],[1215,1],[1262,1],[1320,1],[1404,1],[1474,1]]},"13":{"position":[[574,1],[664,1],[741,1],[781,1],[832,1],[853,1],[922,2],[937,1],[1002,2],[1016,1],[1081,2],[1100,1],[1147,1],[1217,1]]},"15":{"position":[[535,1],[616,1],[668,1],[715,1],[758,1],[779,1],[848,1],[888,1],[951,1],[972,1],[1062,1],[1112,1],[1166,1]]},"21":{"position":[[172,1]]},"25":{"position":[[154,1],[174,1],[257,1]]},"27":{"position":[[330,1],[352,1],[406,1],[419,1],[478,1],[524,1]]},"29":{"position":[[348,1],[422,1]]},"31":{"position":[[724,1],[788,1],[801,2],[804,2]]},"37":{"position":[[207,1],[230,1],[314,1],[389,1],[445,1],[535,1],[615,1],[643,1],[699,1],[768,1],[844,1],[898,1],[968,1]]},"65":{"position":[[972,1],[998,1],[1101,1],[1158,1],[1259,1],[1355,1],[2107,1]]},"78":{"position":[[349,1],[374,1]]},"80":{"position":[[39,1],[64,1]]},"82":{"position":[[39,1],[55,1],[99,1],[121,1],[176,1]]},"84":{"position":[[248,1],[276,1]]},"86":{"position":[[39,1],[55,1],[103,1],[129,1],[188,1]]},"88":{"position":[[654,1],[672,1],[835,1],[902,1],[984,1]]},"91":{"position":[[109,1],[129,1],[207,1],[241,1],[294,1]]},"97":{"position":[[384,1],[404,1],[482,1],[516,1],[569,1]]},"104":{"position":[[417,1],[488,1],[716,1],[754,1]]},"120":{"position":[[356,1],[389,1],[424,1],[611,1],[621,1],[652,1],[679,1],[809,1],[868,1],[977,1],[1002,1],[1063,1],[1099,1],[1171,1],[1199,2],[1383,1]]},"129":{"position":[[469,1],[502,1],[537,1],[818,1],[848,1],[867,1],[893,1],[946,1],[1047,1],[1186,1],[1190,1],[1217,1],[1222,1],[1278,1],[1325,2],[1341,1],[1395,1],[1420,1],[1525,1],[1630,1],[1639,1],[1641,2],[1654,1],[1656,2],[1677,1],[1737,1],[1838,1],[1938,1],[2104,1],[2159,2],[2199,2],[2236,1],[2256,1],[2268,1],[2287,1],[2371,1],[2403,1],[2418,1],[2534,1],[2536,2],[2552,1],[2590,2],[2627,2],[2630,3],[2648,1],[2705,2],[2889,1],[2891,2]]},"137":{"position":[[95,1],[480,1],[507,1],[526,1],[552,1],[570,1],[577,3],[973,3],[980,1],[1005,1],[1106,1],[1176,2],[1306,1],[1355,1],[1447,2],[1482,1],[1539,2]]},"140":{"position":[[72,1],[211,1],[328,1],[342,1],[403,1],[560,2],[572,3],[584,1]]},"147":{"position":[[87,1]]},"151":{"position":[[30,1]]},"175":{"position":[[312,1],[367,1],[447,1],[579,1],[651,1],[700,1],[806,1]]}}}],["0",{"_index":182,"t":{"11":{"position":[[1108,2]]},"27":{"position":[[372,2]]},"29":{"position":[[172,1]]},"137":{"position":[[1179,2]]}}}],["0.0",{"_index":358,"t":{"29":{"position":[[183,3]]}}}],["0.75",{"_index":1184,"t":{"137":{"position":[[554,5]]}}}],["0.95",{"_index":673,"t":{"65":{"position":[[811,5],[1338,4]]}}}],["1",{"_index":402,"t":{"31":{"position":[[807,2]]},"137":{"position":[[92,2],[105,3],[118,1]]}}}],["1.0",{"_index":359,"t":{"29":{"position":[[187,3]]}}}],["10",{"_index":196,"t":{"11":{"position":[[1416,2]]},"71":{"position":[[180,4]]},"82":{"position":[[69,2]]},"86":{"position":[[69,2]]},"175":{"position":[[576,2],[803,2]]}}}],["100",{"_index":1134,"t":{"129":{"position":[[2270,3]]}}}],["1024",{"_index":973,"t":{"120":{"position":[[613,4]]}}}],["17",{"_index":1110,"t":{"129":{"position":[[1219,2]]}}}],["18.04",{"_index":1304,"t":{"173":{"position":[[167,5]]},"175":{"position":[[7,5],[218,5]]}}}],["1st",{"_index":767,"t":{"82":{"position":[[135,3]]},"86":{"position":[[143,3]]}}}],["255",{"_index":357,"t":{"29":{"position":[[174,3]]}}}],["3",{"_index":1318,"t":{"175":{"position":[[197,1]]}}}],["3)).astype(np.uint8",{"_index":375,"t":{"29":{"position":[[401,20]]}}}],["3.10",{"_index":1314,"t":{"175":{"position":[[105,5]]}}}],["3.6",{"_index":1312,"t":{"175":{"position":[[31,3]]}}}],["3.7",{"_index":840,"t":{"97":{"position":[[53,3]]},"116":{"position":[[28,3]]},"118":{"position":[[23,3]]},"125":{"position":[[28,3]]},"127":{"position":[[23,3]]},"133":{"position":[[28,3]]},"135":{"position":[[23,3]]},"159":{"position":[[99,3]]},"161":{"position":[[68,3]]},"163":{"position":[[25,3]]},"171":{"position":[[124,5]]},"179":{"position":[[99,3]]},"181":{"position":[[68,3]]},"183":{"position":[[25,3]]},"191":{"position":[[124,5]]},"203":{"position":[[115,3]]},"205":{"position":[[75,3]]},"207":{"position":[[25,3]]},"226":{"position":[[106,3]]},"228":{"position":[[74,3]]},"230":{"position":[[25,3]]},"240":{"position":[[101,3]]},"242":{"position":[[68,3]]},"244":{"position":[[25,3]]},"252":{"position":[[130,5]]}}}],["3.7.5",{"_index":1294,"t":{"171":{"position":[[147,7]]},"191":{"position":[[147,7]]},"252":{"position":[[153,7]]}}}],["3.8",{"_index":1319,"t":{"175":{"position":[[234,4]]}}}],["3.9.0",{"_index":1295,"t":{"171":{"position":[[158,9]]},"191":{"position":[[158,9]]},"252":{"position":[[164,9]]}}}],["3000:3000",{"_index":1354,"t":{"201":{"position":[[277,11]]}}}],["3pm",{"_index":1140,"t":{"129":{"position":[[2410,3]]}}}],["400",{"_index":475,"t":{"37":{"position":[[645,3]]}}}],["401",{"_index":480,"t":{"37":{"position":[[701,3]]}}}],["403",{"_index":484,"t":{"37":{"position":[[770,3]]}}}],["404",{"_index":490,"t":{"37":{"position":[[846,3]]}}}],["429",{"_index":494,"t":{"37":{"position":[[900,3]]}}}],["5",{"_index":768,"t":{"82":{"position":[[147,1]]},"86":{"position":[[155,1]]}}}],["500",{"_index":499,"t":{"37":{"position":[[970,3]]}}}],["587",{"_index":1096,"t":{"129":{"position":[[981,4]]}}}],["5pm",{"_index":1111,"t":{"129":{"position":[[1229,3]]}}}],["60",{"_index":676,"t":{"65":{"position":[[855,2],[1289,2]]},"129":{"position":[[1632,2]]},"137":{"position":[[572,4]]}}}],["80",{"_index":1231,"t":{"145":{"position":[[117,3]]}}}],["800",{"_index":374,"t":{"29":{"position":[[396,4]]}}}],["8000:8000",{"_index":1358,"t":{"201":{"position":[[404,11]]}}}],["800x600",{"_index":367,"t":{"29":{"position":[[291,7]]}}}],["9",{"_index":1107,"t":{"129":{"position":[[1188,1]]}}}],["9am",{"_index":1108,"t":{"129":{"position":[[1197,3]]}}}],["_",{"_index":186,"t":{"11":{"position":[[1145,2]]},"27":{"position":[[397,2]]}}}],["__main__",{"_index":1207,"t":{"137":{"position":[[1542,11]]}}}],["__name__",{"_index":1206,"t":{"137":{"position":[[1530,8]]}}}],["above",{"_index":773,"t":{"84":{"position":[[176,5]]},"137":{"position":[[1653,5]]}}}],["accept",{"_index":324,"t":{"25":{"position":[[24,6]]},"29":{"position":[[24,6]]}}}],["acceptable",{"_index":155,"t":{"11":{"position":[[517,10]]}}}],["accepts",{"_index":316,"t":{"23":{"position":[[18,7]]}}}],["access",{"_index":251,"t":{"17":{"position":[[20,6]]},"37":{"position":[[90,6],[288,6]]},"97":{"position":[[244,6]]},"102":{"position":[[511,6]]},"125":{"position":[[113,6]]},"260":{"position":[[382,6]]}}}],["accessible",{"_index":599,"t":{"55":{"position":[[309,10]]}}}],["accessing",{"_index":928,"t":{"112":{"position":[[239,9]]}}}],["accidentally",{"_index":889,"t":{"104":{"position":[[216,12]]}}}],["according",{"_index":1240,"t":{"147":{"position":[[51,9]]}}}],["account",{"_index":250,"t":{"17":{"position":[[8,7]]},"100":{"position":[[177,8]]},"102":{"position":[[249,8]]},"108":{"position":[[27,7]]},"112":{"position":[[266,8]]},"125":{"position":[[95,7]]}}}],["account/api",{"_index":902,"t":{"106":{"position":[[98,11]]}}}],["accuracy",{"_index":65,"t":{"7":{"position":[[419,8]]},"65":{"position":[[79,9],[159,8],[1497,8],[1557,9]]}}}],["action",{"_index":123,"t":{"9":{"position":[[415,6]]},"13":{"position":[[252,6],[860,6]]}}}],["add",{"_index":788,"t":{"88":{"position":[[401,3]]}}}],["adding",{"_index":1320,"t":{"175":{"position":[[281,6]]}}}],["addition",{"_index":550,"t":{"49":{"position":[[3,8]]}}}],["additionally",{"_index":639,"t":{"61":{"position":[[208,13]]}}}],["address",{"_index":1372,"t":{"201":{"position":[[783,7]]}}}],["addressing",{"_index":1060,"t":{"123":{"position":[[1501,10]]}}}],["affordable",{"_index":736,"t":{"71":{"position":[[215,10]]}}}],["again",{"_index":911,"t":{"108":{"position":[[290,6]]},"120":{"position":[[1420,5]]}}}],["against",{"_index":64,"t":{"7":{"position":[[411,7]]},"65":{"position":[[71,7],[1506,7]]},"88":{"position":[[58,7]]}}}],["aggregating",{"_index":1118,"t":{"129":{"position":[[1586,11]]}}}],["ago",{"_index":384,"t":{"31":{"position":[[181,3]]}}}],["ahead",{"_index":1316,"t":{"175":{"position":[[156,6]]}}}],["ai",{"_index":732,"t":{"71":{"position":[[106,2],[226,2]]},"95":{"position":[[69,2]]}}}],["alert",{"_index":1193,"t":{"137":{"position":[[946,5],[1471,10]]}}}],["algorithm",{"_index":1406,"t":{"222":{"position":[[315,11]]}}}],["allocation",{"_index":1025,"t":{"123":{"position":[[534,10],[651,10]]}}}],["allow",{"_index":1424,"t":{"260":{"position":[[363,5]]}}}],["allowed",{"_index":486,"t":{"37":{"position":[[804,7]]}}}],["allowing",{"_index":642,"t":{"61":{"position":[[327,8]]}}}],["allows",{"_index":255,"t":{"17":{"position":[[104,6]]},"71":{"position":[[76,6]]}}}],["along",{"_index":835,"t":{"95":{"position":[[94,5]]},"110":{"position":[[67,5]]}}}],["already",{"_index":753,"t":{"78":{"position":[[114,7]]},"88":{"position":[[451,7]]},"218":{"position":[[175,7]]},"220":{"position":[[342,7]]}}}],["alternatively",{"_index":894,"t":{"104":{"position":[[526,14]]}}}],["alternatives",{"_index":1328,"t":{"175":{"position":[[509,12],[745,12]]}}}],["always",{"_index":244,"t":{"15":{"position":[[791,6]]}}}],["ambiguous",{"_index":1216,"t":{"140":{"position":[[144,9]]},"149":{"position":[[26,10]]}}}],["analysis",{"_index":24,"t":{"3":{"position":[[274,9]]},"65":{"position":[[299,8],[1961,9]]},"93":{"position":[[275,8]]},"120":{"position":[[1553,9]]},"129":{"position":[[3024,9]]}}}],["analytics",{"_index":1004,"t":{"123":{"position":[[69,9],[471,9],[1706,9]]}}}],["analyzed",{"_index":815,"t":{"93":{"position":[[22,8]]}}}],["analyzing",{"_index":726,"t":{"69":{"position":[[122,9]]},"123":{"position":[[564,9]]}}}],["another",{"_index":202,"t":{"13":{"position":[[147,7]]},"88":{"position":[[561,7]]},"260":{"position":[[522,7]]}}}],["answer",{"_index":141,"t":{"11":{"position":[[295,6]]},"65":{"position":[[120,6],[1425,6]]},"91":{"position":[[355,6]]},"93":{"position":[[166,7]]},"97":{"position":[[630,6]]},"120":{"position":[[1164,6],[1192,6]]},"129":{"position":[[2097,6]]},"137":{"position":[[959,6]]},"140":{"position":[[84,6],[464,6]]}}}],["answered",{"_index":298,"t":{"19":{"position":[[623,8],[712,8]]},"143":{"position":[[35,8]]}}}],["answers",{"_index":291,"t":{"19":{"position":[[532,7]]}}}],["anybody",{"_index":868,"t":{"102":{"position":[[168,7]]}}}],["api",{"_index":435,"t":{"35":{"position":[[92,3]]},"37":{"position":[[36,3],[946,3]]},"97":{"position":[[162,3],[255,4]]},"100":{"position":[[30,4],[78,4],[186,3]]},"102":{"position":[[17,3],[145,3],[186,3],[300,3],[318,3],[414,3],[521,3],[540,3]]},"104":{"position":[[49,3],[137,3],[315,3],[429,3],[558,3]]},"106":{"position":[[20,3]]},"108":{"position":[[55,3],[94,3],[339,3]]},"110":{"position":[[7,3]]},"112":{"position":[[155,3]]},"120":{"position":[[56,3],[1545,3]]},"129":{"position":[[56,3],[3016,3]]},"137":{"position":[[287,3]]},"177":{"position":[[122,3]]},"195":{"position":[[122,3]]},"199":{"position":[[87,3]]},"215":{"position":[[122,3]]},"222":{"position":[[335,3]]},"238":{"position":[[122,3]]},"256":{"position":[[122,3]]}}}],["api_2gdxmflhj",{"_index":855,"t":{"100":{"position":[[207,16]]}}}],["apiexception",{"_index":445,"t":{"37":{"position":[[68,13],[178,13],[370,12]]},"41":{"position":[[73,13]]}}}],["app",{"_index":845,"t":{"97":{"position":[[145,3]]}}}],["appear",{"_index":304,"t":{"19":{"position":[[810,6]]}}}],["application",{"_index":207,"t":{"13":{"position":[[292,11],[355,11],[972,11],[1051,11],[1135,11]]},"19":{"position":[[428,11]]},"43":{"position":[[52,11],[185,12]]},"45":{"position":[[194,12]]},"47":{"position":[[155,11]]},"49":{"position":[[78,11]]},"51":{"position":[[124,11]]},"71":{"position":[[64,11]]},"73":{"position":[[78,11],[160,11]]},"102":{"position":[[462,12]]},"114":{"position":[[163,12],[217,11]]},"120":{"position":[[33,11],[111,12],[956,11],[1446,11]]},"123":{"position":[[30,11],[172,11],[481,11],[804,11],[1915,12]]},"129":{"position":[[33,11],[111,12],[1374,11],[2917,11]]},"137":{"position":[[264,11],[342,12]]},"211":{"position":[[150,11]]},"234":{"position":[[149,11]]}}}],["applications",{"_index":12,"t":{"3":{"position":[[118,12],[191,12],[333,12]]},"5":{"position":[[7,13],[56,12]]},"7":{"position":[[56,12],[331,13],[919,13],[1035,13],[1089,13],[1158,12]]},"35":{"position":[[14,12]]},"51":{"position":[[251,12]]},"53":{"position":[[91,12]]},"67":{"position":[[73,13]]},"75":{"position":[[111,13]]},"112":{"position":[[212,12],[298,12]]},"157":{"position":[[308,12]]},"177":{"position":[[146,12]]},"195":{"position":[[146,12]]},"215":{"position":[[147,12]]},"238":{"position":[[146,12]]},"256":{"position":[[146,12]]}}}],["apply",{"_index":93,"t":{"7":{"position":[[946,5]]},"75":{"position":[[27,5]]}}}],["appropriate",{"_index":528,"t":{"45":{"position":[[20,11]]}}}],["apt",{"_index":1302,"t":{"173":{"position":[[119,3],[135,3]]},"175":{"position":[[352,3],[393,3]]}}}],["arch",{"_index":1307,"t":{"173":{"position":[[245,4]]}}}],["arduino",{"_index":1448,"t":{"266":{"position":[[33,7],[223,8]]}}}],["area",{"_index":1071,"t":{"123":{"position":[[1830,5]]}}}],["areas",{"_index":1056,"t":{"123":{"position":[[1395,5],[1539,6]]}}}],["argument",{"_index":893,"t":{"104":{"position":[[516,9]]}}}],["arm",{"_index":1373,"t":{"209":{"position":[[114,3]]},"211":{"position":[[121,3]]},"232":{"position":[[114,3]]},"234":{"position":[[120,3]]}}}],["arms",{"_index":633,"t":{"61":{"position":[[93,5]]}}}],["array",{"_index":398,"t":{"31":{"position":[[642,6]]}}}],["arrays",{"_index":323,"t":{"23":{"position":[[91,7]]},"27":{"position":[[125,7]]},"29":{"position":[[47,7]]},"31":{"position":[[95,6],[388,6]]}}}],["ask",{"_index":1192,"t":{"137":{"position":[[919,3]]},"140":{"position":[[38,3],[137,3]]},"149":{"position":[[126,3]]}}}],["ask.py",{"_index":849,"t":{"97":{"position":[[338,6],[678,6]]}}}],["ask_async",{"_index":131,"t":{"11":{"position":[[139,9],[195,9],[443,9]]}}}],["asked",{"_index":245,"t":{"15":{"position":[[815,5]]}}}],["asking",{"_index":1159,"t":{"131":{"position":[[56,6]]}}}],["aspects",{"_index":41,"t":{"7":{"position":[[36,7]]}}}],["assembly",{"_index":611,"t":{"57":{"position":[[251,9]]}}}],["assigned",{"_index":914,"t":{"110":{"position":[[142,8]]}}}],["assist",{"_index":581,"t":{"55":{"position":[[45,6]]}}}],["assistance",{"_index":1450,"t":{"266":{"position":[[159,10]]}}}],["assume",{"_index":168,"t":{"11":{"position":[[808,6]]},"13":{"position":[[343,6]]}}}],["assuming",{"_index":1277,"t":{"163":{"position":[[0,8]]},"183":{"position":[[0,8]]},"207":{"position":[[0,8]]},"230":{"position":[[0,8]]},"244":{"position":[[0,8]]}}}],["async",{"_index":233,"t":{"15":{"position":[[160,5],[724,5]]}}}],["asynchronous",{"_index":76,"t":{"7":{"position":[[610,12],[668,12]]},"9":{"position":[[55,12]]}}}],["asynchronously",{"_index":80,"t":{"7":{"position":[[718,14]]},"11":{"position":[[114,14]]},"15":{"position":[[31,15],[821,14]]}}}],["attempting",{"_index":231,"t":{"15":{"position":[[94,10]]}}}],["attention",{"_index":949,"t":{"114":{"position":[[387,9]]}}}],["audit",{"_index":790,"t":{"88":{"position":[[511,5]]}}}],["authenticate",{"_index":851,"t":{"100":{"position":[[97,12]]}}}],["authorize",{"_index":852,"t":{"100":{"position":[[133,9]]}}}],["automatically",{"_index":664,"t":{"65":{"position":[[460,13]]},"93":{"position":[[73,13]]},"104":{"position":[[288,13]]},"209":{"position":[[142,13]]},"232":{"position":[[142,13]]}}}],["automating",{"_index":582,"t":{"55":{"position":[[55,10]]}}}],["automation",{"_index":570,"t":{"53":{"position":[[148,10]]},"57":{"position":[[60,10]]}}}],["available",{"_index":142,"t":{"11":{"position":[[308,9]]},"15":{"position":[[431,9]]},"123":{"position":[[713,9]]},"199":{"position":[[95,10]]},"266":{"position":[[84,9]]}}}],["avoid",{"_index":510,"t":{"41":{"position":[[87,5]]},"104":{"position":[[210,5]]}}}],["away",{"_index":824,"t":{"93":{"position":[[392,4]]},"129":{"position":[[1538,4]]}}}],["back",{"_index":559,"t":{"49":{"position":[[192,4]]},"93":{"position":[[617,4]]}}}],["backend",{"_index":1356,"t":{"201":{"position":[[303,7],[311,8]]}}}],["backend:latest",{"_index":1357,"t":{"201":{"position":[[380,14]]}}}],["backoff",{"_index":543,"t":{"47":{"position":[[65,7]]}}}],["bad",{"_index":476,"t":{"37":{"position":[[649,3]]},"140":{"position":[[580,3]]}}}],["balance",{"_index":415,"t":{"31":{"position":[[1031,7]]},"65":{"position":[[1489,7]]}}}],["bandwidth",{"_index":262,"t":{"17":{"position":[[190,10]]}}}],["based",{"_index":95,"t":{"7":{"position":[[976,5]]},"9":{"position":[[422,5]]},"13":{"position":[[259,5],[867,5],[958,5],[1037,5],[1121,5]]},"53":{"position":[[24,5]]},"69":{"position":[[159,5]]},"73":{"position":[[132,5]]},"75":{"position":[[57,5]]},"123":{"position":[[1909,5]]},"143":{"position":[[86,5]]},"173":{"position":[[99,5],[201,5]]},"266":{"position":[[41,5]]}}}],["basics",{"_index":1324,"t":{"175":{"position":[[381,6]]}}}],["become",{"_index":598,"t":{"55":{"position":[[297,6]]}}}],["before",{"_index":198,"t":{"11":{"position":[[1427,6]]},"31":{"position":[[476,6],[684,6]]},"65":{"position":[[708,6]]},"112":{"position":[[328,6]]},"120":{"position":[[1404,6]]}}}],["behavior",{"_index":560,"t":{"49":{"position":[[210,9]]},"123":{"position":[[853,9]]}}}],["being",{"_index":1013,"t":{"123":{"position":[[240,5]]}}}],["below",{"_index":711,"t":{"65":{"position":[[1890,5]]},"157":{"position":[[35,5]]},"173":{"position":[[182,7]]}}}],["belt",{"_index":1218,"t":{"140":{"position":[[255,4],[321,6]]}}}],["beneficial",{"_index":1023,"t":{"123":{"position":[[500,10]]}}}],["best",{"_index":504,"t":{"39":{"position":[[52,4]]},"51":{"position":[[199,4]]},"65":{"position":[[231,4]]},"102":{"position":[[111,4],[272,4]]},"104":{"position":[[101,4]]}}}],["beta",{"_index":808,"t":{"91":{"position":[[418,6]]}}}],["better",{"_index":652,"t":{"65":{"position":[[152,6],[529,6]]},"88":{"position":[[285,6]]}}}],["between",{"_index":524,"t":{"43":{"position":[[113,7]]},"61":{"position":[[181,7]]}}}],["bgr",{"_index":340,"t":{"27":{"position":[[158,3]]},"29":{"position":[[100,3],[463,3]]},"31":{"position":[[30,3],[133,3],[212,3],[770,3]]}}}],["bgr_img",{"_index":400,"t":{"31":{"position":[[780,7]]}}}],["bin/bash",{"_index":1171,"t":{"137":{"position":[[57,11]]}}}],["binary",{"_index":1213,"t":{"140":{"position":[[42,6]]},"143":{"position":[[17,6]]},"151":{"position":[[14,6]]},"153":{"position":[[23,7]]}}}],["black",{"_index":1230,"t":{"145":{"position":[[91,5]]}}}],["blocked",{"_index":455,"t":{"37":{"position":[[300,10]]}}}],["blue",{"_index":406,"t":{"31":{"position":[[865,4]]}}}],["board",{"_index":1416,"t":{"258":{"position":[[84,6]]},"260":{"position":[[108,6],[229,5],[341,6]]}}}],["boards",{"_index":1434,"t":{"264":{"position":[[26,7],[51,6]]}}}],["body",{"_index":1087,"t":{"129":{"position":[[807,6]]}}}],["body=daily_summary",{"_index":1152,"t":{"129":{"position":[[2859,19]]}}}],["bottlenecks",{"_index":603,"t":{"57":{"position":[[97,12]]}}}],["boxes",{"_index":1219,"t":{"140":{"position":[[260,7],[299,5]]}}}],["breaking",{"_index":813,"t":{"91":{"position":[[521,8]]}}}],["brew",{"_index":1339,"t":{"193":{"position":[[117,4]]}}}],["broad",{"_index":512,"t":{"41":{"position":[[102,5]]}}}],["browser",{"_index":1368,"t":{"201":{"position":[[711,8]]},"260":{"position":[[374,7],[530,7]]}}}],["build",{"_index":10,"t":{"3":{"position":[[105,5]]},"35":{"position":[[150,5]]},"39":{"position":[[92,5]]},"71":{"position":[[90,5]]},"91":{"position":[[0,5]]},"220":{"position":[[223,5]]}}}],["building",{"_index":42,"t":{"7":{"position":[[47,8],[1133,8]]},"13":{"position":[[312,9]]},"35":{"position":[[5,8]]},"157":{"position":[[292,8]]},"177":{"position":[[137,8]]},"195":{"position":[[137,8]]},"215":{"position":[[137,9]]},"238":{"position":[[137,8]]},"256":{"position":[[137,8]]},"264":{"position":[[95,8]]}}}],["built",{"_index":29,"t":{"3":{"position":[[346,5]]},"5":{"position":[[69,5]]}}}],["bunch",{"_index":1390,"t":{"220":{"position":[[25,5]]}}}],["busier",{"_index":1032,"t":{"123":{"position":[[871,6]]}}}],["business",{"_index":746,"t":{"73":{"position":[[272,8]]}}}],["business's",{"_index":1104,"t":{"129":{"position":[[1136,10]]}}}],["button",{"_index":905,"t":{"108":{"position":[[105,7]]},"112":{"position":[[68,6]]}}}],["c",{"_index":1286,"t":{"167":{"position":[[125,1]]},"187":{"position":[[125,1]]},"248":{"position":[[125,1]]}}}],["cable",{"_index":1421,"t":{"260":{"position":[[265,6]]}}}],["call",{"_index":443,"t":{"37":{"position":[[40,5]]},"84":{"position":[[203,5]]},"100":{"position":[[70,4]]}}}],["called",{"_index":1347,"t":{"201":{"position":[[91,6]]}}}],["calls",{"_index":436,"t":{"35":{"position":[[96,6]]}}}],["cam",{"_index":179,"t":{"11":{"position":[[1062,3]]},"27":{"position":[[326,3]]},"264":{"position":[[272,3]]}}}],["cam.read",{"_index":187,"t":{"11":{"position":[[1156,10]]},"27":{"position":[[408,10]]}}}],["cam.release",{"_index":200,"t":{"11":{"position":[[1460,13]]},"27":{"position":[[510,13]]}}}],["camera",{"_index":118,"t":{"9":{"position":[[306,6]]},"11":{"position":[[1101,6],[1196,6],[1488,6]]},"27":{"position":[[365,6],[538,6]]},"71":{"position":[[151,7]]},"116":{"position":[[79,6]]},"120":{"position":[[310,6]]},"123":{"position":[[1768,6],[1840,6]]},"125":{"position":[[79,6]]},"129":{"position":[[423,6]]},"157":{"position":[[192,6]]},"199":{"position":[[52,6]]},"258":{"position":[[77,6]]},"260":{"position":[[101,6],[222,6],[334,6]]},"264":{"position":[[192,6],[241,6]]}}}],["cameras",{"_index":387,"t":{"31":{"position":[[242,7]]},"33":{"position":[[185,7],[314,7],[325,7]]},"69":{"position":[[165,8]]}}}],["campaigns",{"_index":1039,"t":{"123":{"position":[[1001,9]]}}}],["cap",{"_index":965,"t":{"120":{"position":[[352,3]]},"129":{"position":[[465,3]]}}}],["cap.read",{"_index":967,"t":{"120":{"position":[[391,10]]},"129":{"position":[[504,10]]}}}],["cap.release",{"_index":968,"t":{"120":{"position":[[402,13]]},"129":{"position":[[515,13]]}}}],["capabilities",{"_index":103,"t":{"7":{"position":[[1228,13]]},"61":{"position":[[142,12]]}}}],["capture",{"_index":188,"t":{"11":{"position":[[1169,7]]},"27":{"position":[[421,7]]},"120":{"position":[[284,7],[1367,7]]},"129":{"position":[[397,7],[1887,7]]}}}],["capture_image",{"_index":964,"t":{"120":{"position":[[335,16],[1065,15],[1486,13]]},"129":{"position":[[448,16],[1840,15],[2957,13]]}}}],["captures",{"_index":999,"t":{"120":{"position":[[1458,8]]},"129":{"position":[[2929,8]]}}}],["cardboard",{"_index":1221,"t":{"140":{"position":[[289,9]]}}}],["case",{"_index":156,"t":{"11":{"position":[[541,4]]}}}],["cases",{"_index":19,"t":{"3":{"position":[[220,6]]}}}],["catch",{"_index":506,"t":{"41":{"position":[[0,5]]},"51":{"position":[[84,5]]}}}],["catching",{"_index":511,"t":{"41":{"position":[[93,8]]}}}],["cause",{"_index":1409,"t":{"224":{"position":[[123,5]]}}}],["cautious",{"_index":895,"t":{"104":{"position":[[621,8]]}}}],["centers",{"_index":590,"t":{"55":{"position":[[154,8]]}}}],["change",{"_index":394,"t":{"31":{"position":[[528,6]]},"91":{"position":[[458,6]]}}}],["changes",{"_index":814,"t":{"91":{"position":[[530,8]]}}}],["changing",{"_index":1436,"t":{"264":{"position":[[133,8]]}}}],["channel",{"_index":376,"t":{"29":{"position":[[430,7]]},"31":{"position":[[462,7],[670,7],[753,7]]}}}],["channels=wf.getnchannels",{"_index":980,"t":{"120":{"position":[[739,27]]}}}],["check",{"_index":43,"t":{"7":{"position":[[87,5]]},"84":{"position":[[29,5]]},"102":{"position":[[50,5]]},"167":{"position":[[3,5]]},"171":{"position":[[3,5]]},"187":{"position":[[3,5]]},"191":{"position":[[3,5]]},"248":{"position":[[3,5]]},"252":{"position":[[3,5]]}}}],["checker",{"_index":453,"t":{"37":{"position":[[265,9]]}}}],["checking",{"_index":997,"t":{"120":{"position":[[1411,8]]},"169":{"position":[[259,9]]},"189":{"position":[[259,9]]},"250":{"position":[[259,9]]}}}],["checks",{"_index":1016,"t":{"123":{"position":[[273,6]]}}}],["choose",{"_index":1266,"t":{"157":{"position":[[0,6]]}}}],["chrome",{"_index":1427,"t":{"260":{"position":[[512,6]]}}}],["chunk",{"_index":972,"t":{"120":{"position":[[605,5]]}}}],["classes",{"_index":521,"t":{"43":{"position":[[35,7]]}}}],["cleanliness",{"_index":1255,"t":{"153":{"position":[[31,13]]}}}],["clear",{"_index":330,"t":{"25":{"position":[[213,7],[240,8]]},"123":{"position":[[1812,5]]},"151":{"position":[[96,5]]}}}],["click",{"_index":904,"t":{"108":{"position":[[72,5],[189,5]]},"112":{"position":[[49,5]]},"260":{"position":[[272,5]]}}}],["clicks",{"_index":1419,"t":{"260":{"position":[[158,7]]}}}],["cloud",{"_index":281,"t":{"19":{"position":[[284,5],[408,5],[728,6],[824,5]]},"84":{"position":[[88,5]]}}}],["clouds",{"_index":1249,"t":{"149":{"position":[[147,6]]}}}],["clutter",{"_index":1258,"t":{"153":{"position":[[136,7]]}}}],["cnc",{"_index":588,"t":{"55":{"position":[[132,3]]},"61":{"position":[[269,3]]}}}],["cobot",{"_index":632,"t":{"61":{"position":[[79,5]]}}}],["code",{"_index":14,"t":{"3":{"position":[[144,5]]},"15":{"position":[[276,4]]},"29":{"position":[[273,4]]},"35":{"position":[[163,4]]},"37":{"position":[[571,4],[596,5]]},"39":{"position":[[105,5]]},"65":{"position":[[378,4],[2056,4]]},"88":{"position":[[245,4]]},"100":{"position":[[148,4]]},"102":{"position":[[80,4]]},"104":{"position":[[258,4],[368,4],[649,4]]},"137":{"position":[[1277,4]]},"197":{"position":[[145,4]]},"258":{"position":[[35,4]]},"266":{"position":[[11,4]]}}}],["codes",{"_index":474,"t":{"37":{"position":[[636,6]]}}}],["collaboration",{"_index":637,"t":{"61":{"position":[[167,13]]}}}],["color",{"_index":352,"t":{"29":{"position":[[104,5]]},"31":{"position":[[216,5],[1025,5]]}}}],["combines",{"_index":831,"t":{"95":{"position":[[36,8]]}}}],["come",{"_index":830,"t":{"93":{"position":[[612,4]]}}}],["comes",{"_index":1393,"t":{"220":{"position":[[293,5]]}}}],["command",{"_index":729,"t":{"69":{"position":[[210,8]]},"137":{"position":[[10,7]]},"165":{"position":[[60,7]]},"169":{"position":[[88,8]]},"185":{"position":[[60,7]]},"189":{"position":[[88,8]]},"201":{"position":[[601,7]]},"209":{"position":[[60,7]]},"232":{"position":[[60,7]]},"246":{"position":[[60,7],[76,7]]},"250":{"position":[[88,8]]},"252":{"position":[[47,7]]}}}],["commands",{"_index":613,"t":{"57":{"position":[[301,8]]}}}],["commit",{"_index":896,"t":{"104":{"position":[[637,6]]}}}],["committing",{"_index":890,"t":{"104":{"position":[[229,10]]}}}],["common",{"_index":473,"t":{"37":{"position":[[617,6]]},"69":{"position":[[148,6]]}}}],["commonly",{"_index":1408,"t":{"224":{"position":[[6,8]]}}}],["communicate",{"_index":160,"t":{"11":{"position":[[651,11]]}}}],["communicating",{"_index":280,"t":{"19":{"position":[[249,13]]}}}],["communication",{"_index":644,"t":{"61":{"position":[[349,13]]}}}],["compatibility",{"_index":385,"t":{"31":{"position":[[189,13]]}}}],["compatible",{"_index":1374,"t":{"209":{"position":[[118,10]]},"232":{"position":[[118,10]]}}}],["complete",{"_index":938,"t":{"114":{"position":[[154,8]]},"213":{"position":[[6,8]]},"236":{"position":[[6,8]]}}}],["completing",{"_index":1273,"t":{"157":{"position":[[212,10]]}}}],["complex",{"_index":23,"t":{"3":{"position":[[259,7]]},"55":{"position":[[267,7]]},"65":{"position":[[318,7]]}}}],["compose",{"_index":1366,"t":{"201":{"position":[[643,7]]}}}],["compose.yml",{"_index":1348,"t":{"201":{"position":[[105,11]]}}}],["compress/2174925f24362c479b2.jpg",{"_index":798,"t":{"88":{"position":[[795,33]]}}}],["compression",{"_index":1404,"t":{"222":{"position":[[279,11]]}}}],["computer",{"_index":3,"t":{"3":{"position":[[32,9]]},"7":{"position":[[982,8],[1191,8]]},"53":{"position":[[30,8],[200,8]]},"55":{"position":[[14,8]]},"57":{"position":[[26,8]]},"59":{"position":[[14,8],[196,8]]},"61":{"position":[[14,8]]},"63":{"position":[[55,8]]},"75":{"position":[[63,8]]},"91":{"position":[[16,8]]},"93":{"position":[[343,8]]},"123":{"position":[[1876,8]]},"197":{"position":[[72,9]]},"199":{"position":[[25,8]]},"201":{"position":[[23,9]]},"260":{"position":[[245,8]]}}}],["computer's",{"_index":943,"t":{"114":{"position":[[269,10]]}}}],["computing",{"_index":87,"t":{"7":{"position":[[839,9]]},"95":{"position":[[123,10]]}}}],["confidence",{"_index":58,"t":{"7":{"position":[[345,10],[455,10]]},"65":{"position":[[564,10],[662,10],[791,10],[1319,10],[1469,10],[1530,10],[1617,10],[1908,10],[2235,10],[2294,10]]},"88":{"position":[[497,10]]},"93":{"position":[[142,11],[641,11]]},"129":{"position":[[1563,10]]},"137":{"position":[[534,11]]}}}],["confidence_threshold=0.8",{"_index":1119,"t":{"129":{"position":[[1598,25]]}}}],["confidence_threshold=0.95",{"_index":686,"t":{"65":{"position":[[1232,26]]}}}],["confidence_threshold=confidence",{"_index":1196,"t":{"137":{"position":[[1059,32]]}}}],["confident",{"_index":249,"t":{"15":{"position":[[1125,9]]},"65":{"position":[[875,9]]}}}],["configuration",{"_index":1340,"t":{"197":{"position":[[86,13]]}}}],["configure",{"_index":57,"t":{"7":{"position":[[274,10]]},"19":{"position":[[332,9]]},"21":{"position":[[3,9]]},"175":{"position":[[449,9],[702,9]]}}}],["configuring",{"_index":66,"t":{"7":{"position":[[431,11]]}}}],["confirm",{"_index":924,"t":{"112":{"position":[[94,7]]}}}],["conflicts",{"_index":1410,"t":{"224":{"position":[[129,9]]}}}],["connected",{"_index":951,"t":{"116":{"position":[[69,9]]},"123":{"position":[[1861,9]]},"125":{"position":[[69,9]]},"199":{"position":[[9,9]]}}}],["consider",{"_index":518,"t":{"43":{"position":[[0,8]]},"266":{"position":[[239,8]]}}}],["considered",{"_index":1244,"t":{"147":{"position":[[114,10]]}}}],["consist",{"_index":856,"t":{"100":{"position":[[228,7]]}}}],["constrained",{"_index":1396,"t":{"222":{"position":[[27,12],[394,11]]}}}],["constructor",{"_index":306,"t":{"21":{"position":[[115,11]]},"104":{"position":[[504,11],[596,12]]}}}],["container",{"_index":725,"t":{"69":{"position":[[108,9]]}}}],["containers",{"_index":268,"t":{"19":{"position":[[42,10]]}}}],["contains",{"_index":465,"t":{"37":{"position":[[456,8],[546,8]]}}}],["content",{"_index":1227,"t":{"143":{"position":[[105,8]]}}}],["content/uploads/2010/11/over_flowing_garbage_can.jpg",{"_index":681,"t":{"65":{"position":[[1041,53]]}}}],["context",{"_index":534,"t":{"45":{"position":[[93,7]]},"151":{"position":[[72,8]]}}}],["continue",{"_index":1128,"t":{"129":{"position":[[1823,8],[1921,8],[2088,8]]}}}],["control",{"_index":61,"t":{"7":{"position":[[378,7]]},"53":{"position":[[344,8]]},"59":{"position":[[252,8]]},"61":{"position":[[367,7]]},"65":{"position":[[38,7]]},"102":{"position":[[219,7]]}}}],["conversion",{"_index":1407,"t":{"222":{"position":[[432,10]]}}}],["convert",{"_index":399,"t":{"31":{"position":[[726,7]]},"120":{"position":[[426,7]]},"129":{"position":[[539,7]]},"222":{"position":[[190,7]]}}}],["convey",{"_index":1238,"t":{"145":{"position":[[372,8]]}}}],["conveyor",{"_index":1222,"t":{"140":{"position":[[312,8]]}}}],["copy",{"_index":908,"t":{"108":{"position":[[211,4],[326,4]]},"201":{"position":[[144,4]]}}}],["corresponding",{"_index":1268,"t":{"157":{"position":[[76,13]]}}}],["cost",{"_index":260,"t":{"17":{"position":[[176,5]]},"71":{"position":[[166,4]]}}}],["costs",{"_index":702,"t":{"65":{"position":[[1677,6]]}}}],["couch",{"_index":934,"t":{"114":{"position":[[99,6],[206,6],[325,6]]},"116":{"position":[[140,5]]},"120":{"position":[[1028,5],[1236,8],[1593,6]]}}}],["counter",{"_index":1007,"t":{"123":{"position":[[127,7],[392,7],[608,8],[1151,7],[1370,7],[1477,7],[1792,8],[1989,7]]},"129":{"position":[[1514,10],[2481,7],[2839,7],[3067,8]]}}}],["counter's",{"_index":1155,"t":{"129":{"position":[[3134,9]]}}}],["couple",{"_index":884,"t":{"104":{"position":[[12,6]]}}}],["covers",{"_index":437,"t":{"35":{"position":[[113,6]]}}}],["create",{"_index":16,"t":{"3":{"position":[[184,6]]},"7":{"position":[[266,7]]},"29":{"position":[[281,6]]},"51":{"position":[[223,6]]},"71":{"position":[[193,6]]},"78":{"position":[[153,6]]},"97":{"position":[[152,6],[314,6]]},"108":{"position":[[82,7],[195,7]]},"201":{"position":[[73,6]]}}}],["create_detector(name",{"_index":760,"t":{"78":{"position":[[264,21]]}}}],["created",{"_index":754,"t":{"78":{"position":[[122,7]]}}}],["creates",{"_index":1011,"t":{"123":{"position":[[184,7]]}}}],["creating",{"_index":519,"t":{"43":{"position":[[9,8]]},"78":{"position":[[219,8]]},"110":{"position":[[156,8]]},"114":{"position":[[143,8]]}}}],["creation",{"_index":389,"t":{"31":{"position":[[299,10]]}}}],["crowded",{"_index":1062,"t":{"123":{"position":[[1531,7]]}}}],["curl",{"_index":1327,"t":{"175":{"position":[[442,4],[609,4]]}}}],["current",{"_index":913,"t":{"110":{"position":[[51,7]]},"260":{"position":[[493,7]]}}}],["current_hour",{"_index":1113,"t":{"129":{"position":[[1265,12],[1328,12],[2539,12],[2577,12]]}}}],["current_time",{"_index":1135,"t":{"129":{"position":[[2274,12]]}}}],["current_time.strftime(\"%i%p",{"_index":1139,"t":{"129":{"position":[[2373,29]]}}}],["currently",{"_index":807,"t":{"91":{"position":[[405,9]]}}}],["custom",{"_index":520,"t":{"43":{"position":[[18,6]]}}}],["customer",{"_index":1015,"t":{"123":{"position":[[260,9],[844,8],[1047,8],[1415,8],[1568,8],[1614,8],[2103,8]]},"129":{"position":[[1490,8],[3039,8]]}}}],["customers",{"_index":1008,"t":{"123":{"position":[[138,9],[769,10],[1125,9],[1339,9]]}}}],["customize",{"_index":1084,"t":{"129":{"position":[[709,9]]}}}],["cutting",{"_index":573,"t":{"53":{"position":[[187,7]]}}}],["cv2",{"_index":173,"t":{"11":{"position":[[951,3]]},"27":{"position":[[322,3]]},"120":{"position":[[174,3]]},"129":{"position":[[174,3]]}}}],["cv2.color_bgr2rgb",{"_index":970,"t":{"120":{"position":[[490,19]]},"129":{"position":[[603,19]]}}}],["cv2.videocapture(0",{"_index":180,"t":{"11":{"position":[[1068,19]]},"27":{"position":[[332,19]]},"120":{"position":[[358,19]]},"129":{"position":[[471,19]]}}}],["d",{"_index":450,"t":{"37":{"position":[[228,1]]},"65":{"position":[[1156,1]]},"88":{"position":[[670,1]]}}}],["daily",{"_index":1022,"t":{"123":{"position":[[448,5],[2009,5]]},"125":{"position":[[132,5]]},"129":{"position":[[671,5],[2650,6],[3203,5]]}}}],["daily_log",{"_index":1121,"t":{"129":{"position":[[1644,9],[2617,9],[2680,10],[2879,9]]}}}],["daily_log.append(msg",{"_index":1144,"t":{"129":{"position":[[2508,21]]}}}],["daily_summary",{"_index":1145,"t":{"129":{"position":[[2634,13],[2691,13]]}}}],["dashboard",{"_index":305,"t":{"19":{"position":[[830,10]]}}}],["data",{"_index":362,"t":{"29":{"position":[[212,4]]},"65":{"position":[[2016,4]]},"93":{"position":[[103,5]]},"120":{"position":[[804,4],[838,5],[863,4]]},"123":{"position":[[1269,4]]}}}],["database",{"_index":164,"t":{"11":{"position":[[735,9],[831,8],[1351,8]]},"13":{"position":[[415,8]]}}}],["dataset",{"_index":783,"t":{"88":{"position":[[160,8]]},"93":{"position":[[446,8]]}}}],["date",{"_index":921,"t":{"110":{"position":[[250,4]]}}}],["datetime",{"_index":1078,"t":{"129":{"position":[[256,8],[272,9]]}}}],["datetime.now",{"_index":1130,"t":{"129":{"position":[[2144,14]]}}}],["datetime.now().hour",{"_index":1114,"t":{"129":{"position":[[1280,19],[2554,19]]}}}],["datetime.now().replace(hour=start_of_business",{"_index":1136,"t":{"129":{"position":[[2289,46]]}}}],["datetime.now().replace(minute=0",{"_index":1123,"t":{"129":{"position":[[1679,32]]}}}],["day",{"_index":1010,"t":{"123":{"position":[[163,4],[429,4],[891,3]]},"129":{"position":[[3184,4]]}}}],["days",{"_index":1033,"t":{"123":{"position":[[907,4]]}}}],["db.get_next_image_query_id",{"_index":210,"t":{"13":{"position":[[428,28],[666,28],[1219,28]]}}}],["db.save(image_query.id",{"_index":171,"t":{"11":{"position":[[883,24],[1296,23]]}}}],["debian",{"_index":1300,"t":{"173":{"position":[[92,6]]}}}],["debug",{"_index":536,"t":{"45":{"position":[[133,5]]}}}],["debugging",{"_index":462,"t":{"37":{"position":[[413,9]]},"41":{"position":[[150,9]]}}}],["decades",{"_index":383,"t":{"31":{"position":[[173,7]]}}}],["decisions",{"_index":1052,"t":{"123":{"position":[[1281,9],[2061,9]]}}}],["def",{"_index":963,"t":{"120":{"position":[[331,3],[578,3]]},"129":{"position":[[444,3],[765,3],[1233,3]]},"137":{"position":[[454,3]]}}}],["default",{"_index":183,"t":{"11":{"position":[[1118,7]]},"27":{"position":[[382,7]]},"49":{"position":[[202,7]]},"175":{"position":[[38,8],[489,7]]},"220":{"position":[[199,7]]},"224":{"position":[[51,8]]}}}],["defaults",{"_index":763,"t":{"82":{"position":[[57,8]]},"86":{"position":[[57,8]]}}}],["defects",{"_index":622,"t":{"59":{"position":[[153,7]]}}}],["define",{"_index":962,"t":{"120":{"position":[[263,6],[528,6]]},"129":{"position":[[376,6],[641,6],[1119,6]]}}}],["definitions",{"_index":1439,"t":{"264":{"position":[[153,12]]}}}],["degrade",{"_index":1387,"t":{"218":{"position":[[336,8]]}}}],["delay",{"_index":1120,"t":{"129":{"position":[[1624,5]]}}}],["delayed",{"_index":662,"t":{"65":{"position":[[408,7]]}}}],["delete",{"_index":923,"t":{"112":{"position":[[59,8]]}}}],["demonstrates",{"_index":740,"t":{"73":{"position":[[90,12]]},"123":{"position":[[13,12]]}}}],["dependent",{"_index":1411,"t":{"224":{"position":[[150,9]]}}}],["depends_on",{"_index":1355,"t":{"201":{"position":[[289,11]]}}}],["deploy",{"_index":86,"t":{"7":{"position":[[812,6]]},"197":{"position":[[27,6]]},"260":{"position":[[56,6],[123,6]]}}}],["deployed",{"_index":116,"t":{"9":{"position":[[288,8]]},"262":{"position":[[62,8]]}}}],["deployment",{"_index":1415,"t":{"258":{"position":[[40,10]]}}}],["depth",{"_index":40,"t":{"7":{"position":[[12,5]]}}}],["described",{"_index":1310,"t":{"173":{"position":[[375,9]]},"193":{"position":[[233,9]]},"254":{"position":[[178,9]]}}}],["description",{"_index":467,"t":{"37":{"position":[[475,11]]}}}],["descriptive",{"_index":907,"t":{"108":{"position":[[134,11]]},"110":{"position":[[121,11]]}}}],["designed",{"_index":1418,"t":{"260":{"position":[[13,8]]}}}],["desired",{"_index":67,"t":{"7":{"position":[[447,7]]},"65":{"position":[[556,7],[783,7],[1900,7]]}}}],["desk",{"_index":1012,"t":{"123":{"position":[[232,4]]}}}],["despite",{"_index":555,"t":{"49":{"position":[[109,7]]}}}],["det",{"_index":328,"t":{"25":{"position":[[170,3]]},"91":{"position":[[125,3]]},"97":{"position":[[400,3]]}}}],["detailed",{"_index":34,"t":{"3":{"position":[[396,8]]}}}],["detect",{"_index":418,"t":{"31":{"position":[[1119,6]]}}}],["detected",{"_index":939,"t":{"114":{"position":[[190,8]]},"120":{"position":[[1220,8],[1577,8]]},"129":{"position":[[3051,8]]}}}],["detection",{"_index":22,"t":{"3":{"position":[[246,9]]}}}],["detector",{"_index":175,"t":{"11":{"position":[[978,8]]},"13":{"position":[[565,8]]},"15":{"position":[[526,8]]},"65":{"position":[[624,9]]},"71":{"position":[[116,8]]},"78":{"position":[[98,8],[234,8],[365,8]]},"80":{"position":[[55,8]]},"120":{"position":[[993,8],[1034,10]]},"123":{"position":[[194,8],[284,8]]},"129":{"position":[[1411,8]]},"137":{"position":[[697,8],[875,8],[996,8]]},"140":{"position":[[202,8]]},"258":{"position":[[56,8]]},"260":{"position":[[80,8],[135,8],[311,8]]},"262":{"position":[[71,9]]}}}],["detector=detector",{"_index":991,"t":{"120":{"position":[[1136,18]]},"129":{"position":[[1975,18]]}}}],["detector_name",{"_index":1182,"t":{"137":{"position":[[488,14],[834,14],[1710,13],[1724,15]]}}}],["detectors",{"_index":55,"t":{"7":{"position":[[242,10],[293,9],[481,10]]},"82":{"position":[[89,9],[166,9]]},"131":{"position":[[42,9]]},"140":{"position":[[19,10]]},"197":{"position":[[51,9]]}}}],["detects",{"_index":1384,"t":{"218":{"position":[[224,7]]}}}],["determines",{"_index":668,"t":{"65":{"position":[[639,10]]}}}],["dev/bus/usb:/dev/bus/usb",{"_index":1365,"t":{"201":{"position":[[557,25]]}}}],["dev/video0:/dev/video0",{"_index":1359,"t":{"201":{"position":[[427,23]]}}}],["dev/video1:/dev/video1",{"_index":1360,"t":{"201":{"position":[[453,23]]}}}],["dev/video2:/dev/video2",{"_index":1361,"t":{"201":{"position":[[479,23]]}}}],["dev/video3:/dev/video3",{"_index":1362,"t":{"201":{"position":[[505,23]]}}}],["developed",{"_index":382,"t":{"31":{"position":[[163,9]]}}}],["development",{"_index":1342,"t":{"197":{"position":[[150,11]]}}}],["device",{"_index":269,"t":{"19":{"position":[[65,8],[84,6],[115,7]]},"157":{"position":[[199,6]]},"201":{"position":[[745,7],[799,7]]},"260":{"position":[[436,7]]}}}],["devices",{"_index":254,"t":{"17":{"position":[[90,8]]},"61":{"position":[[291,7]]},"201":{"position":[[416,8]]},"203":{"position":[[70,8]]},"218":{"position":[[54,8]]}}}],["difference",{"_index":297,"t":{"19":{"position":[[590,10]]},"31":{"position":[[814,10],[1080,10]]}}}],["different",{"_index":422,"t":{"33":{"position":[[32,9],[265,9]]},"37":{"position":[[97,9]]},"149":{"position":[[37,9],[63,9]]}}}],["differentiate",{"_index":523,"t":{"43":{"position":[[99,13]]}}}],["difficult",{"_index":514,"t":{"41":{"position":[[160,9]]}}}],["directly",{"_index":325,"t":{"25":{"position":[[42,8]]},"27":{"position":[[272,8]]},"88":{"position":[[415,9]]},"102":{"position":[[61,8]]},"104":{"position":[[568,8]]},"224":{"position":[[209,9]]}}}],["directory",{"_index":1210,"t":{"137":{"position":[[1620,9]]},"201":{"position":[[133,10],[625,10]]}}}],["discover",{"_index":85,"t":{"7":{"position":[[796,8]]}}}],["display",{"_index":1284,"t":{"167":{"position":[[52,7]]},"187":{"position":[[52,7]]},"248":{"position":[[52,7]]}}}],["displaying",{"_index":556,"t":{"49":{"position":[[144,10]]}}}],["distribution's",{"_index":1297,"t":{"173":{"position":[[9,14]]}}}],["distutils",{"_index":1326,"t":{"175":{"position":[[432,9]]}}}],["dlp",{"_index":1167,"t":{"135":{"position":[[146,3]]},"137":{"position":[[85,3]]}}}],["dnf",{"_index":1306,"t":{"173":{"position":[[221,3]]}}}],["docker",{"_index":267,"t":{"19":{"position":[[35,6]]},"69":{"position":[[101,6],[203,6],[228,6]]},"201":{"position":[[8,6],[98,6],[636,6]]},"211":{"position":[[12,6],[74,6],[165,6]]},"234":{"position":[[12,6],[73,6],[164,6]]}}}],["docker's",{"_index":1346,"t":{"201":{"position":[[37,8]]}}}],["docker.io/groundlight/monitoring",{"_index":1351,"t":{"201":{"position":[[199,32],[327,32]]}}}],["docs/static/img/doorway.jpg",{"_index":803,"t":{"91":{"position":[[209,31]]},"97":{"position":[[484,31]]}}}],["document",{"_index":935,"t":{"114":{"position":[[111,8]]}}}],["documentation",{"_index":134,"t":{"11":{"position":[[174,13]]},"15":{"position":[[448,13]]},"177":{"position":[[159,13]]},"195":{"position":[[159,13]]},"238":{"position":[[159,13]]},"256":{"position":[[159,13]]}}}],["doesn't",{"_index":756,"t":{"78":{"position":[[176,7]]}}}],["dog",{"_index":933,"t":{"114":{"position":[[87,3],[183,3],[306,3],[378,3]]},"116":{"position":[[152,3]]},"120":{"position":[[1570,3]]}}}],["dog_on_couch_detector.py",{"_index":1002,"t":{"120":{"position":[[1682,24],[1726,24]]}}}],["domain.com/wp",{"_index":680,"t":{"65":{"position":[[1027,13]]}}}],["don't",{"_index":891,"t":{"104":{"position":[[339,5]]},"151":{"position":[[47,5]]},"222":{"position":[[474,5],[520,5]]},"260":{"position":[[451,5]]}}}],["done",{"_index":162,"t":{"11":{"position":[[724,4]]},"197":{"position":[[103,4]]},"222":{"position":[[446,4]]}}}],["door",{"_index":738,"t":{"73":{"position":[[56,4],[138,4],[183,4],[220,4]]}}}],["doorway",{"_index":795,"t":{"88":{"position":[[730,7]]},"91":{"position":[[187,7]]},"97":{"position":[[462,7]]}}}],["download",{"_index":253,"t":{"17":{"position":[[51,8]]},"137":{"position":[[142,8]]},"175":{"position":[[581,8]]},"193":{"position":[[0,8]]},"254":{"position":[[0,8]]}}}],["downloading",{"_index":278,"t":{"19":{"position":[[205,11]]}}}],["driven",{"_index":1051,"t":{"123":{"position":[[1274,6]]}}}],["due",{"_index":487,"t":{"37":{"position":[[812,3]]},"88":{"position":[[483,3]]}}}],["during",{"_index":434,"t":{"35":{"position":[[85,6]]},"37":{"position":[[26,6]]},"73":{"position":[[252,6]]},"123":{"position":[[723,6]]}}}],["e",{"_index":460,"t":{"37":{"position":[[386,2]]},"120":{"position":[[1297,2],[1338,5]]},"129":{"position":[[2023,2],[2064,5]]}}}],["e.g",{"_index":529,"t":{"45":{"position":[[43,6]]},"116":{"position":[[112,6]]},"129":{"position":[[1192,4],[1224,4]]},"171":{"position":[[140,6]]},"191":{"position":[[140,6]]},"252":{"position":[[146,6]]}}}],["e.reason",{"_index":464,"t":{"37":{"position":[[447,8],[522,12]]}}}],["e.status",{"_index":470,"t":{"37":{"position":[[537,8],[602,12]]}}}],["each",{"_index":919,"t":{"110":{"position":[[224,4]]}}}],["earlier",{"_index":1311,"t":{"173":{"position":[[385,8]]},"193":{"position":[[243,8]]},"254":{"position":[[188,8]]}}}],["early",{"_index":425,"t":{"33":{"position":[[115,5]]},"51":{"position":[[97,5]]}}}],["easiest",{"_index":1317,"t":{"175":{"position":[[171,7]]},"197":{"position":[[12,7]]}}}],["easily",{"_index":631,"t":{"61":{"position":[[48,6]]},"65":{"position":[[387,6]]},"108":{"position":[[163,6]]}}}],["easy",{"_index":79,"t":{"7":{"position":[[653,4]]},"69":{"position":[[89,4]]},"260":{"position":[[36,4]]}}}],["edge",{"_index":84,"t":{"7":{"position":[[790,5],[834,4]]},"17":{"position":[[30,4],[85,4],[152,5]]},"19":{"position":[[4,4],[59,5],[79,4],[172,4],[310,4],[373,4],[502,4],[639,4],[764,6],[771,4]]},"21":{"position":[[44,4]]},"53":{"position":[[195,4]]},"95":{"position":[[118,4]]},"218":{"position":[[49,4]]}}}],["effectively",{"_index":537,"t":{"45":{"position":[[151,11]]}}}],["effectiveness",{"_index":1048,"t":{"123":{"position":[[1189,13]]}}}],["efficiency",{"_index":578,"t":{"53":{"position":[[306,11]]}}}],["efficient",{"_index":600,"t":{"55":{"position":[[324,10]]}}}],["elif",{"_index":223,"t":{"13":{"position":[[984,4],[1063,4]]}}}],["email",{"_index":1074,"t":{"123":{"position":[[2023,6]]},"125":{"position":[[89,5]]},"129":{"position":[[685,6]]},"262":{"position":[[81,5]]}}}],["email.mime.multipart",{"_index":1080,"t":{"129":{"position":[[297,20]]}}}],["email.mime.text",{"_index":1082,"t":{"129":{"position":[[344,15]]}}}],["emails",{"_index":1021,"t":{"123":{"position":[[437,6]]},"129":{"position":[[3192,6]]}}}],["employees",{"_index":1029,"t":{"123":{"position":[[699,9]]}}}],["enables",{"_index":9,"t":{"3":{"position":[[90,7]]}}}],["enabling",{"_index":567,"t":{"53":{"position":[[107,8]]},"55":{"position":[[198,8]]},"123":{"position":[[2030,8]]}}}],["encounter",{"_index":433,"t":{"35":{"position":[[61,9]]}}}],["encourage",{"_index":1054,"t":{"123":{"position":[[1329,9]]}}}],["encrypted",{"_index":874,"t":{"102":{"position":[[362,9]]}}}],["end",{"_index":954,"t":{"116":{"position":[[183,3],[190,3]]},"123":{"position":[[418,3]]},"129":{"position":[[3173,3]]},"175":{"position":[[56,3]]},"213":{"position":[[15,3],[22,3]]},"236":{"position":[[15,3],[22,3]]}}}],["end_of_business",{"_index":1109,"t":{"129":{"position":[[1201,15],[1343,15],[2593,15]]}}}],["endpoint",{"_index":264,"t":{"19":{"position":[[9,8],[177,8],[315,9],[414,9],[507,9],[644,8]]},"21":{"position":[[49,9],[83,8]]}}}],["endpoint's",{"_index":284,"t":{"19":{"position":[[378,10]]}}}],["energy",{"_index":263,"t":{"17":{"position":[[205,7]]}}}],["engagement",{"_index":1043,"t":{"123":{"position":[[1056,11]]}}}],["enhance",{"_index":635,"t":{"61":{"position":[[128,7]]}}}],["enhancing",{"_index":577,"t":{"53":{"position":[[296,9]]}}}],["enough",{"_index":818,"t":{"93":{"position":[[135,6]]},"123":{"position":[[692,6]]}}}],["ensure",{"_index":552,"t":{"49":{"position":[[61,6]]},"51":{"position":[[15,6],[107,6]]},"118":{"position":[[0,6]]},"127":{"position":[[0,6]]},"135":{"position":[[0,6]]},"161":{"position":[[0,6]]},"181":{"position":[[0,6]]},"205":{"position":[[0,6]]},"228":{"position":[[0,6]]},"242":{"position":[[0,6]]}}}],["ensuring",{"_index":619,"t":{"59":{"position":[[66,8]]},"123":{"position":[[678,8],[1801,8]]}}}],["environment",{"_index":311,"t":{"21":{"position":[[259,11]]},"61":{"position":[[401,12]]},"97":{"position":[[220,11]]},"102":{"position":[[383,11]]},"104":{"position":[[60,11],[155,11],[442,11]]},"129":{"position":[[752,12]]}}}],["environments",{"_index":88,"t":{"7":{"position":[[849,12]]}}}],["equipment",{"_index":593,"t":{"55":{"position":[[184,10]]}}}],["error",{"_index":442,"t":{"37":{"position":[[20,5],[494,5],[990,6],[1000,5]]},"45":{"position":[[50,6]]},"49":{"position":[[158,5]]},"51":{"position":[[32,5]]}}}],["errors",{"_index":71,"t":{"7":{"position":[[508,7],[563,6]]},"35":{"position":[[78,6],[139,6]]},"43":{"position":[[73,7],[121,6]]},"47":{"position":[[87,7]]},"49":{"position":[[117,7]]},"51":{"position":[[147,6],[287,6]]}}}],["escalate",{"_index":656,"t":{"65":{"position":[[256,8]]}}}],["escalated",{"_index":671,"t":{"65":{"position":[[734,10],[1939,9]]},"93":{"position":[[238,9]]}}}],["escalation",{"_index":666,"t":{"65":{"position":[[595,10]]},"88":{"position":[[197,10],[466,10]]},"95":{"position":[[14,10]]}}}],["esp32",{"_index":1272,"t":{"157":{"position":[[186,5]]},"258":{"position":[[71,5]]},"260":{"position":[[95,5],[216,5],[328,5]]},"264":{"position":[[45,5],[174,5],[223,5],[266,5]]},"266":{"position":[[70,6]]}}}],["esp32s3",{"_index":1446,"t":{"264":{"position":[[304,7]]}}}],["etc",{"_index":531,"t":{"45":{"position":[[66,5]]}}}],["evaluations",{"_index":258,"t":{"17":{"position":[[133,11]]}}}],["even",{"_index":274,"t":{"19":{"position":[[147,4]]},"93":{"position":[[405,4]]},"211":{"position":[[60,4]]},"234":{"position":[[59,4]]}}}],["event",{"_index":1154,"t":{"129":{"position":[[3088,6]]}}}],["example",{"_index":114,"t":{"9":{"position":[[254,8]]},"11":{"position":[[796,8]]},"13":{"position":[[331,8]]},"25":{"position":[[84,8]]},"31":{"position":[[966,7]]},"65":{"position":[[749,8]]},"84":{"position":[[71,8],[126,8]]},"114":{"position":[[20,7]]},"123":{"position":[[5,7]]},"131":{"position":[[8,7]]},"145":{"position":[[74,8]]},"213":{"position":[[26,7]]},"236":{"position":[[26,7]]}}}],["examples",{"_index":39,"t":{"5":{"position":[[44,8]]},"67":{"position":[[41,8]]},"140":{"position":[[586,9]]}}}],["exceeded",{"_index":498,"t":{"37":{"position":[[959,8]]}}}],["except",{"_index":290,"t":{"19":{"position":[[517,6]]},"37":{"position":[[363,6]]},"120":{"position":[[1277,6]]},"129":{"position":[[2003,6]]}}}],["exception",{"_index":447,"t":{"37":{"position":[[126,10]]},"41":{"position":[[124,10]]},"43":{"position":[[25,9]]},"120":{"position":[[1284,9]]},"129":{"position":[[2010,9]]}}}],["exceptions",{"_index":441,"t":{"35":{"position":[[195,11]]},"39":{"position":[[77,10]]},"41":{"position":[[24,10],[108,10]]},"45":{"position":[[4,10]]},"47":{"position":[[14,11]]},"49":{"position":[[23,11]]},"51":{"position":[[304,10]]}}}],["execute",{"_index":703,"t":{"65":{"position":[[1702,7]]}}}],["executing",{"_index":710,"t":{"65":{"position":[[1855,10]]}}}],["existing",{"_index":640,"t":{"61":{"position":[[260,8]]},"78":{"position":[[89,8]]},"88":{"position":[[151,8]]}}}],["exists",{"_index":757,"t":{"78":{"position":[[184,7]]}}}],["exited",{"_index":1200,"t":{"137":{"position":[[1258,6]]}}}],["expect",{"_index":508,"t":{"41":{"position":[[44,6]]}}}],["expected",{"_index":344,"t":{"27":{"position":[[227,8]]},"31":{"position":[[613,9]]},"51":{"position":[[56,9]]}}}],["expects",{"_index":378,"t":{"31":{"position":[[12,7]]}}}],["experience",{"_index":1065,"t":{"123":{"position":[[1623,10],[2112,11]]}}}],["explore",{"_index":719,"t":{"67":{"position":[[0,7]]},"123":{"position":[[1381,7]]}}}],["exploring",{"_index":97,"t":{"7":{"position":[[1052,9]]}}}],["exponential",{"_index":542,"t":{"47":{"position":[[53,11]]}}}],["export",{"_index":313,"t":{"21":{"position":[[286,6]]},"97":{"position":[[260,6]]}}}],["extra",{"_index":1321,"t":{"175":{"position":[[292,5]]}}}],["extremely",{"_index":1394,"t":{"222":{"position":[[11,9]]}}}],["f\"hourly",{"_index":1141,"t":{"129":{"position":[[2420,8]]}}}],["f\"{msg}\\n",{"_index":1147,"t":{"129":{"position":[[2708,10]]}}}],["factory",{"_index":1259,"t":{"153":{"position":[[151,7]]}}}],["falling",{"_index":558,"t":{"49":{"position":[[184,7]]}}}],["fast",{"_index":704,"t":{"65":{"position":[[1732,4]]}}}],["faster",{"_index":294,"t":{"19":{"position":[[557,6]]},"65":{"position":[[544,7]]},"93":{"position":[[622,6]]}}}],["features",{"_index":427,"t":{"33":{"position":[[159,8]]},"218":{"position":[[395,9]]}}}],["fedora",{"_index":1305,"t":{"173":{"position":[[194,6]]}}}],["few",{"_index":781,"t":{"88":{"position":[[105,3]]},"91":{"position":[[49,3]]},"140":{"position":[[551,3]]},"260":{"position":[[154,3]]}}}],["ffmpeg",{"_index":1165,"t":{"135":{"position":[[136,6]]},"137":{"position":[[69,6]]}}}],["field",{"_index":153,"t":{"11":{"position":[[488,5]]}}}],["file",{"_index":804,"t":{"91":{"position":[[258,4]]},"97":{"position":[[533,4]]},"116":{"position":[[107,4]]},"137":{"position":[[223,4]]},"201":{"position":[[86,4]]}}}],["files",{"_index":432,"t":{"33":{"position":[[339,5],[351,5]]}}}],["find",{"_index":37,"t":{"5":{"position":[[21,4]]},"78":{"position":[[81,4]]},"104":{"position":[[39,4]]},"155":{"position":[[73,4]]},"258":{"position":[[99,4]]}}}],["finished",{"_index":709,"t":{"65":{"position":[[1846,8]]}}}],["firmware",{"_index":1435,"t":{"264":{"position":[[108,8]]}}}],["first",{"_index":780,"t":{"88":{"position":[[76,5]]},"93":{"position":[[16,5],[421,5],[458,5]]},"120":{"position":[[0,6]]},"129":{"position":[[0,6]]},"145":{"position":[[307,5]]}}}],["float",{"_index":1183,"t":{"137":{"position":[[546,5]]}}}],["floats",{"_index":360,"t":{"29":{"position":[[194,8]]}}}],["floor",{"_index":1260,"t":{"153":{"position":[[159,7]]}}}],["follow",{"_index":503,"t":{"39":{"position":[[39,6]]},"91":{"position":[[493,6]]},"157":{"position":[[45,6]]}}}],["followed",{"_index":861,"t":{"100":{"position":[[273,8]]}}}],["following",{"_index":45,"t":{"7":{"position":[[101,9]]},"51":{"position":[[183,9]]},"110":{"position":[[82,9]]},"161":{"position":[[25,9]]},"163":{"position":[[90,9]]},"165":{"position":[[50,9]]},"167":{"position":[[89,9]]},"169":{"position":[[74,9]]},"181":{"position":[[25,9]]},"183":{"position":[[90,9]]},"185":{"position":[[50,9]]},"187":{"position":[[89,9]]},"189":{"position":[[74,9]]},"201":{"position":[[153,9],[591,9],[826,9]]},"205":{"position":[[25,9]]},"207":{"position":[[97,9]]},"209":{"position":[[50,9]]},"228":{"position":[[25,9]]},"230":{"position":[[96,9]]},"232":{"position":[[50,9]]},"242":{"position":[[25,9]]},"244":{"position":[[90,9]]},"246":{"position":[[50,9]]},"248":{"position":[[89,9]]},"250":{"position":[[74,9]]},"262":{"position":[[22,9]]},"264":{"position":[[16,9]]}}}],["follows",{"_index":347,"t":{"27":{"position":[[306,8]]},"175":{"position":[[265,7]]}}}],["forbidden",{"_index":485,"t":{"37":{"position":[[774,10]]}}}],["force",{"_index":759,"t":{"78":{"position":[[213,5]]},"222":{"position":[[488,5]]}}}],["form",{"_index":1189,"t":{"137":{"position":[[778,4]]}}}],["format",{"_index":351,"t":{"29":{"position":[[90,6]]},"31":{"position":[[222,6]]},"222":{"position":[[220,6],[369,7]]}}}],["formats",{"_index":319,"t":{"23":{"position":[[49,8]]}}}],["formatted_time",{"_index":1138,"t":{"129":{"position":[[2356,14],[2441,17]]}}}],["forward",{"_index":115,"t":{"9":{"position":[[280,7]]}}}],["found",{"_index":491,"t":{"37":{"position":[[854,6],[892,5]]}}}],["frame",{"_index":190,"t":{"11":{"position":[[1181,5],[1275,5]]},"27":{"position":[[400,5],[433,5],[471,6],[489,5]]},"120":{"position":[[383,5]]},"129":{"position":[[496,5]]},"137":{"position":[[167,5],[621,5]]}}}],["framegrab",{"_index":424,"t":{"33":{"position":[[74,9],[93,9],[218,9]]}}}],["frontend",{"_index":1350,"t":{"201":{"position":[[182,9]]}}}],["frontend:latest",{"_index":1352,"t":{"201":{"position":[[252,15]]}}}],["full",{"_index":133,"t":{"11":{"position":[[169,4]]},"65":{"position":[[1224,7]]},"102":{"position":[[214,4]]},"145":{"position":[[121,6]]}}}],["function",{"_index":211,"t":{"13":{"position":[[471,8]]},"120":{"position":[[272,8],[537,8],[1500,9],[1653,9]]},"129":{"position":[[385,8],[650,8],[2971,9],[3234,9]]}}}],["functional",{"_index":554,"t":{"49":{"position":[[98,10]]}}}],["functionality",{"_index":1398,"t":{"222":{"position":[[144,14]]}}}],["further",{"_index":712,"t":{"65":{"position":[[1953,7]]}}}],["future",{"_index":787,"t":{"88":{"position":[[309,7]]},"91":{"position":[[468,6]]}}}],["g",{"_index":1172,"t":{"137":{"position":[[90,1]]}}}],["gather",{"_index":826,"t":{"93":{"position":[[427,6]]}}}],["generally",{"_index":696,"t":{"65":{"position":[[1576,9]]},"175":{"position":[[72,9]]}}}],["generated",{"_index":717,"t":{"65":{"position":[[2191,9]]},"108":{"position":[[220,9]]}}}],["generative",{"_index":833,"t":{"95":{"position":[[58,10]]}}}],["get_image",{"_index":458,"t":{"37":{"position":[[341,12]]}}}],["get_image_query",{"_index":203,"t":{"13":{"position":[[169,16]]},"88":{"position":[[375,17]]}}}],["get_latest_frame.sh",{"_index":1170,"t":{"137":{"position":[[36,20],[1633,19]]}}}],["get_off_couch.mp3",{"_index":952,"t":{"116":{"position":[[119,18]]}}}],["get_or_create_detector(name",{"_index":749,"t":{"78":{"position":[[25,28]]}}}],["get_token_from_secure_location",{"_index":897,"t":{"104":{"position":[[718,32]]}}}],["gets",{"_index":869,"t":{"102":{"position":[[176,4]]}}}],["github",{"_index":720,"t":{"67":{"position":[[14,6]]},"213":{"position":[[75,6]]},"236":{"position":[[73,6]]},"266":{"position":[[97,6],[272,6]]}}}],["give",{"_index":906,"t":{"108":{"position":[[113,4]]}}}],["gives",{"_index":650,"t":{"65":{"position":[[12,5]]}}}],["gl",{"_index":307,"t":{"21":{"position":[[169,2]]},"25":{"position":[[151,2]]},"37":{"position":[[204,2]]},"65":{"position":[[969,2]]},"78":{"position":[[346,2]]},"80":{"position":[[36,2]]},"82":{"position":[[36,2]]},"84":{"position":[[245,2]]},"86":{"position":[[36,2]]},"88":{"position":[[651,2]]},"91":{"position":[[106,2]]},"97":{"position":[[381,2]]},"104":{"position":[[485,2],[751,2]]},"120":{"position":[[974,2]]},"129":{"position":[[1392,2]]},"137":{"position":[[977,2]]}}}],["gl.add_label(image_query",{"_index":799,"t":{"88":{"position":[[951,25]]}}}],["gl.ask_async(detector=detector",{"_index":192,"t":{"11":{"position":[[1217,31]]},"15":{"position":[[670,31]]}}}],["gl.create_detector(name=\"your_detector_name",{"_index":761,"t":{"78":{"position":[[376,45]]}}}],["gl.create_detector(name=detector_name",{"_index":1194,"t":{"137":{"position":[[1007,38]]}}}],["gl.get_detector(\"dog",{"_index":989,"t":{"120":{"position":[[1004,20]]}}}],["gl.get_detector(id=\"your_detector_id",{"_index":762,"t":{"80":{"position":[[66,38]]}}}],["gl.get_image_query(id=\"iq_your_image_query_id",{"_index":774,"t":{"84":{"position":[[278,47]]}}}],["gl.get_image_query(id=image_query.id",{"_index":246,"t":{"15":{"position":[[850,37]]}}}],["gl.get_image_query(id=image_query_id",{"_index":216,"t":{"13":{"position":[[743,37]]}}}],["gl.get_or_create_detector",{"_index":451,"t":{"37":{"position":[[232,26]]},"129":{"position":[[1422,26]]},"140":{"position":[[213,26]]}}}],["gl.get_or_create_detector(name=\"doorway",{"_index":794,"t":{"88":{"position":[[674,41]]},"91":{"position":[[131,41]]},"97":{"position":[[406,41]]}}}],["gl.get_or_create_detector(name=\"path",{"_index":329,"t":{"25":{"position":[[176,36]]}}}],["gl.get_or_create_detector(name=\"trash",{"_index":684,"t":{"65":{"position":[[1160,39]]}}}],["gl.get_or_create_detector(name=\"your_detector_name",{"_index":177,"t":{"11":{"position":[[989,52]]},"13":{"position":[[576,52]]},"15":{"position":[[537,52]]}}}],["gl.list_detectors",{"_index":765,"t":{"82":{"position":[[101,19]]}}}],["gl.list_detectors(page=1",{"_index":769,"t":{"82":{"position":[[178,25]]}}}],["gl.list_image_queries",{"_index":776,"t":{"86":{"position":[[105,23]]}}}],["gl.list_image_queries(page=1",{"_index":777,"t":{"86":{"position":[[190,29]]}}}],["gl.submit_image_query(d",{"_index":457,"t":{"37":{"position":[[316,24]]}}}],["gl.submit_image_query(det",{"_index":335,"t":{"25":{"position":[[303,26]]}}}],["gl.submit_image_query(detector",{"_index":348,"t":{"27":{"position":[[439,31]]},"29":{"position":[[475,31]]}}}],["gl.submit_image_query(detector=d",{"_index":690,"t":{"65":{"position":[[1357,33],[2109,33]]},"88":{"position":[[904,33]]}}}],["gl.submit_image_query(detector=det",{"_index":805,"t":{"91":{"position":[[296,35]]},"97":{"position":[[571,35]]}}}],["gl.submit_image_query(detector=detector",{"_index":1202,"t":{"137":{"position":[[1357,40]]},"140":{"position":[[344,40]]}}}],["gl.submit_image_query(image=image",{"_index":990,"t":{"120":{"position":[[1101,34]]},"129":{"position":[[1940,34]]}}}],["gl.wait_for_confident_result(id=image_query.id",{"_index":247,"t":{"15":{"position":[[1064,47]]}}}],["go",{"_index":1296,"t":{"171":{"position":[[183,3]]},"175":{"position":[[153,2]]},"191":{"position":[[183,3]]},"252":{"position":[[189,3]]},"260":{"position":[[166,2]]}}}],["good",{"_index":1160,"t":{"131":{"position":[[63,4]]},"140":{"position":[[520,4],[555,4]]},"171":{"position":[[175,4]]},"191":{"position":[[175,4]]},"252":{"position":[[181,4]]}}}],["grabbing",{"_index":47,"t":{"7":{"position":[[118,8]]}}}],["gracefully",{"_index":440,"t":{"35":{"position":[[177,10]]},"49":{"position":[[47,10]]},"51":{"position":[[154,10]]},"218":{"position":[[325,10]]}}}],["groundlight",{"_index":0,"t":{"3":{"position":[[0,11],[155,12],[358,11]]},"5":{"position":[[80,11]]},"7":{"position":[[74,12],[216,12],[311,11],[597,12],[632,11],[771,11],[819,11]]},"9":{"position":[[0,11],[343,12]]},"11":{"position":[[56,11],[395,12],[913,11],[932,11],[1284,11]]},"13":{"position":[[55,11],[534,11],[553,11],[813,11]]},"15":{"position":[[215,11],[473,11],[492,11],[739,11],[932,11],[1007,11],[1147,11]]},"19":{"position":[[272,11],[346,11],[490,11]]},"21":{"position":[[17,11],[103,11],[138,11],[157,11]]},"25":{"position":[[4,11],[98,11],[117,11],[156,13]]},"27":{"position":[[194,11],[498,11]]},"29":{"position":[[4,11]]},"31":{"position":[[0,11],[505,12],[559,11],[705,12]]},"35":{"position":[[36,11]]},"37":{"position":[[159,11],[192,11],[209,13]]},"39":{"position":[[22,11]]},"43":{"position":[[149,11]]},"51":{"position":[[330,11]]},"53":{"position":[[168,11]]},"65":{"position":[[0,11],[900,11],[919,11],[974,13]]},"67":{"position":[[53,11]]},"69":{"position":[[54,11]]},"75":{"position":[[0,11]]},"78":{"position":[[315,11],[334,11],[351,13]]},"80":{"position":[[5,11],[24,11],[41,13]]},"82":{"position":[[5,11],[24,11],[41,13]]},"84":{"position":[[214,11],[233,11],[250,13]]},"86":{"position":[[5,11],[24,11],[41,13]]},"88":{"position":[[0,11],[582,11],[601,11],[656,13]]},"91":{"position":[[75,11],[94,11],[111,13]]},"97":{"position":[[12,11],[100,11],[129,11],[350,11],[369,11],[386,13]]},"100":{"position":[[11,11],[117,11]]},"102":{"position":[[237,11]]},"104":{"position":[[386,11],[405,11],[490,13],[584,11],[679,11],[698,11]]},"106":{"position":[[40,11]]},"108":{"position":[[15,11],[297,11]]},"112":{"position":[[254,11]]},"114":{"position":[[49,11]]},"116":{"position":[[0,11]]},"118":{"position":[[69,11],[117,11]]},"120":{"position":[[21,11],[183,11],[202,11],[979,13],[1533,11]]},"123":{"position":[[45,11],[1897,11]]},"125":{"position":[[0,11]]},"127":{"position":[[69,11],[144,11]]},"129":{"position":[[21,11],[198,11],[217,11],[1397,13],[3004,11]]},"133":{"position":[[0,11]]},"135":{"position":[[69,11],[117,11]]},"137":{"position":[[252,11],[401,11],[420,11],[685,11],[863,11],[982,13]]},"145":{"position":[[137,12]]},"155":{"position":[[15,11],[137,11]]},"157":{"position":[[331,11]]},"159":{"position":[[37,11],[67,11]]},"163":{"position":[[132,11]]},"165":{"position":[[15,11],[98,11],[204,11],[220,11]]},"167":{"position":[[16,11],[135,12]]},"169":{"position":[[27,11],[119,11],[180,11],[269,11]]},"175":{"position":[[827,12],[853,11]]},"177":{"position":[[36,11]]},"179":{"position":[[37,11],[67,11]]},"183":{"position":[[132,11]]},"185":{"position":[[15,11],[98,11],[204,11],[220,11]]},"187":{"position":[[16,11],[135,12]]},"189":{"position":[[27,11],[119,11],[180,11],[269,11]]},"195":{"position":[[36,11]]},"197":{"position":[[39,11]]},"199":{"position":[[75,11]]},"203":{"position":[[37,11],[83,11]]},"207":{"position":[[139,11]]},"209":{"position":[[15,11],[99,11],[175,11]]},"215":{"position":[[36,11]]},"218":{"position":[[4,11],[88,11]]},"220":{"position":[[92,11],[236,11],[278,11]]},"222":{"position":[[60,11]]},"226":{"position":[[37,11],[74,11]]},"230":{"position":[[138,11]]},"232":{"position":[[15,11],[99,11],[175,11]]},"238":{"position":[[36,11]]},"240":{"position":[[37,11],[69,11]]},"244":{"position":[[132,11]]},"246":{"position":[[15,11],[104,11],[210,11],[226,11]]},"248":{"position":[[16,11],[135,12]]},"250":{"position":[[27,11],[119,11],[180,11],[269,11]]},"256":{"position":[[36,11]]},"258":{"position":[[0,11]]},"260":{"position":[[68,11]]},"266":{"position":[[206,11]]}}}],["groundlight's",{"_index":102,"t":{"7":{"position":[[1177,13]]},"23":{"position":[[0,13]]},"55":{"position":[[0,13]]},"57":{"position":[[12,13]]},"59":{"position":[[0,13]]},"61":{"position":[[0,13]]},"63":{"position":[[24,13]]},"95":{"position":[[0,13]]},"140":{"position":[[5,13]]}}}],["groundlight(api_token=token",{"_index":898,"t":{"104":{"position":[[756,28]]}}}],["groundlight(endpoint=\"http://localhost:6717",{"_index":308,"t":{"21":{"position":[[174,45]]}}}],["groundlight.ai",{"_index":1345,"t":{"199":{"position":[[111,15]]}}}],["groundlight/stream",{"_index":1375,"t":{"211":{"position":[[85,18]]},"234":{"position":[[84,18]]}}}],["groundlight_api_token",{"_index":482,"t":{"37":{"position":[[724,21]]},"97":{"position":[[198,21]]},"104":{"position":[[176,22],[463,21]]}}}],["groundlight_api_token=api_2gdxmflhji6l_example",{"_index":847,"t":{"97":{"position":[[267,46]]}}}],["groundlight_endpoint",{"_index":310,"t":{"21":{"position":[[238,20]]}}}],["groundlight_endpoint=http://localhost:6717",{"_index":314,"t":{"21":{"position":[[293,42]]}}}],["guide",{"_index":936,"t":{"114":{"position":[[125,5]]},"155":{"position":[[44,6],[59,6]]},"157":{"position":[[90,6]]},"159":{"position":[[5,5]]},"179":{"position":[[5,5]]},"203":{"position":[[5,5]]},"226":{"position":[[5,5]]},"240":{"position":[[5,5]]}}}],["guides",{"_index":35,"t":{"3":{"position":[[405,6]]},"7":{"position":[[18,6]]}}}],["hand",{"_index":607,"t":{"57":{"position":[[186,4],[194,4]]}}}],["handle",{"_index":72,"t":{"7":{"position":[[534,6]]},"35":{"position":[[127,6],[188,6]]},"39":{"position":[[70,6]]},"49":{"position":[[35,6]]},"51":{"position":[[140,6],[273,6]]},"88":{"position":[[186,6]]}}}],["handling",{"_index":69,"t":{"7":{"position":[[492,8]]},"47":{"position":[[5,8]]},"51":{"position":[[38,8]]},"102":{"position":[[291,8]]}}}],["happen",{"_index":715,"t":{"65":{"position":[[2087,7]]}}}],["hardcoding",{"_index":877,"t":{"102":{"position":[[438,10]]}}}],["hardware",{"_index":388,"t":{"31":{"position":[[271,8]]},"222":{"position":[[454,9]]}}}],["hasn't",{"_index":708,"t":{"65":{"position":[[1839,6]]}}}],["head",{"_index":843,"t":{"97":{"position":[[112,4]]},"137":{"position":[[97,4]]}}}],["health",{"_index":539,"t":{"45":{"position":[[179,6]]}}}],["help",{"_index":522,"t":{"43":{"position":[[90,4]]},"45":{"position":[[124,4]]},"47":{"position":[[145,4]]},"51":{"position":[[75,4]]},"57":{"position":[[83,4]]},"59":{"position":[[223,4]]},"69":{"position":[[254,4]]},"123":{"position":[[820,4]]},"159":{"position":[[16,4]]},"179":{"position":[[16,4]]},"203":{"position":[[16,4]]},"226":{"position":[[16,4]]},"240":{"position":[[16,4]]}}}],["helps",{"_index":888,"t":{"104":{"position":[[204,5]]}}}],["here",{"_index":135,"t":{"11":{"position":[[188,6]]},"15":{"position":[[462,5]]},"102":{"position":[[258,4]]},"114":{"position":[[0,4]]},"264":{"position":[[209,5],[260,5],[286,5],[328,5]]}}}],["here's",{"_index":327,"t":{"25":{"position":[[74,6]]},"29":{"position":[[259,6]]},"31":{"position":[[956,6]]}}}],["high",{"_index":817,"t":{"93":{"position":[[130,4],[485,4]]}}}],["high=255",{"_index":372,"t":{"29":{"position":[[375,9]]}}}],["higher",{"_index":695,"t":{"65":{"position":[[1523,6],[1550,6],[1594,6],[1610,6]]},"93":{"position":[[634,6]]},"97":{"position":[[60,7]]},"116":{"position":[[35,6]]},"118":{"position":[[30,6]]},"123":{"position":[[929,6]]},"125":{"position":[[35,6]]},"127":{"position":[[30,6]]},"133":{"position":[[35,6]]},"135":{"position":[[30,6]]},"159":{"position":[[106,7]]},"161":{"position":[[75,6]]},"163":{"position":[[32,6]]},"171":{"position":[[133,6]]},"179":{"position":[[106,7]]},"181":{"position":[[75,6]]},"183":{"position":[[32,6]]},"191":{"position":[[133,6]]},"203":{"position":[[122,7]]},"205":{"position":[[82,6]]},"207":{"position":[[32,6]]},"226":{"position":[[113,7]]},"228":{"position":[[81,6]]},"230":{"position":[[32,6]]},"240":{"position":[[108,7]]},"242":{"position":[[75,6]]},"244":{"position":[[32,6]]},"252":{"position":[[139,6]]}}}],["highest",{"_index":620,"t":{"59":{"position":[[79,7]]}}}],["home",{"_index":931,"t":{"114":{"position":[[69,4]]}}}],["homebrew",{"_index":1338,"t":{"193":{"position":[[89,8]]}}}],["hour",{"_index":1017,"t":{"123":{"position":[[319,5]]},"129":{"position":[[3101,5]]}}}],["hourly",{"_index":1072,"t":{"123":{"position":[[1957,6]]}}}],["hours",{"_index":747,"t":{"73":{"position":[[281,6]]},"123":{"position":[[735,5]]},"129":{"position":[[1157,5]]}}}],["http",{"_index":74,"t":{"7":{"position":[[558,4]]},"37":{"position":[[15,4],[559,4],[624,4]]}}}],["http://localhost:3000",{"_index":1367,"t":{"201":{"position":[[681,21]]}}}],["https://app.groundlight.ai/reef/my",{"_index":901,"t":{"106":{"position":[[63,34]]}}}],["https://bootstrap.pypa.io/get",{"_index":1332,"t":{"175":{"position":[[614,29]]}}}],["https://github.com/groundlight/esp32cam",{"_index":731,"t":{"71":{"position":[[12,39]]},"266":{"position":[[107,39]]}}}],["https://github.com/groundlight/raspberry",{"_index":737,"t":{"73":{"position":[[12,40]]}}}],["https://github.com/groundlight/stream",{"_index":722,"t":{"69":{"position":[[12,37]]}}}],["https://images.selfstorage.com/large",{"_index":797,"t":{"88":{"position":[[757,37]]}}}],["https://iot.groundlight.ai/espcam",{"_index":1417,"t":{"258":{"position":[[110,34]]},"260":{"position":[[172,33]]}}}],["https://www.photos",{"_index":678,"t":{"65":{"position":[[1000,19]]}}}],["https://www.youtube.com/watch?v= - + - -Search the documentation - - + +Search the documentation + + - - - + \ No newline at end of file