diff --git a/404.html b/404.html index f837c9e..48156b0 100644 --- a/404.html +++ b/404.html @@ -9,11 +9,11 @@ - - - + + + -
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.99934af0.css b/assets/css/styles.908196af.css similarity index 99% rename from assets/css/styles.99934af0.css rename to assets/css/styles.908196af.css index b9ec633..900e98f 100644 --- a/assets/css/styles.99934af0.css +++ b/assets/css/styles.908196af.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)}.experience-btn,.experience-date{letter-spacing:var(--spacing)}.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}.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}.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}*{box-sizing:border-box}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,.tabItem_LNqP{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,.tabList__CuJ{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}.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{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}.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}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.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;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)}.sidebar_re4s,.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem)}.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_BuS1>:last-child,.collapsibleContent_i85q p:last-child,.details_lb9f>summary>p:last-child,.experience-desc p,.footer__items,.tabItem_Ymn6>:last-child{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,.title_f1Hy{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_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)}.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,.sidebarItemLink_mo7H: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,.sidebarItemTitle_pO2u,.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}:root{--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-color-primary:#2453e0;--ifm-color-primary-dark:#1d49cd;--ifm-color-primary-darker:#1b45c2;--ifm-color-primary-darkest:#17399f;--ifm-color-primary-light:#6d8ef2;--ifm-color-primary-lighter:#c6d9fc;--ifm-color-primary-lightest:#f3f8ff;--ifm-code-font-size:95%;--ifm-color-grey-1:#102a42;--ifm-color-grey-2:#081521;--ifm-color-grey-3:#324d67;--ifm-color-grey-4:#48647f;--ifm-color-grey-5:#617d98;--ifm-color-grey-7:#364d63;--ifm-color-grey-8:#bcccdc;--ifm-color-grey-9:#dae2ec;--ifm-color-grey-10:#f1f5f8;--ifm-green-dark:#1d9527;--ifm-red-dark:#bb2525;--ifm-red-light:#f14949;--ifm-white:#fff;--ifm-black:#000;--ff-primary:"Roboto",sans-serif;--ff-secondary:"Open Sans",sans-serif;--transition:all 0.3s linear;--spacing:0.15rem;--radius:0.25rem;--light-shadow:0 5px 15px #0000001a;--dark-shadow:0 5px 50px #0003;--max-width:1170px;--fixed-width:700px;--docusaurus-announcement-bar-height:auto;--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300)}#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:#adbeff;--ifm-color-primary-dark:#829cff;--ifm-color-primary-darker:#6d8bff;--ifm-color-primary-darkest:#2d58ff;--ifm-color-primary-light:#d8e0ff;--ifm-color-primary-lighter:#edf1ff;--ifm-color-primary-lightest:#fff;--docusaurus-highlighted-code-line-bg:#0000004d}.experience{background-color:var(--ifm-color-primary-lightest);padding:6rem 0}html[data-theme=dark] .experience{background-color:var(--ifm-color-grey-2)}.experiences-center{margin:0 auto;max-width:var(--max-width);width:80vw}.experience-title{font-size:2.5rem;text-align:center}.btn-container{display:flex;flex-direction:row;justify-content:center;margin-bottom:4rem}.experience-btn{background:#0000;border-color:#0000;color:var(--ifm-black);cursor:pointer;font-size:1.25rem;line-height:1;margin:0 .5rem;padding:.25rem 0;text-transform:capitalize;transition:var(--transition)}html[data-theme=dark] .experience-btn{color:var(--ifm-white)}.active-btn,.experience-btn:hover,html[data-theme=dark] .active-btn,html[data-theme=dark] .experience-btn:hover{color:var(--ifm-color-primary-dark)}.active-btn{box-shadow:0 2px var(--ifm-color-primary-darkest)}.experience-info h3{font-weight:400}.experience-info h4{background:var(--ifm-color-grey-9);border-radius:var(--radius);color:var(--ifm-color-grey-5);display:inline-block;padding:.375rem .75rem;text-transform:uppercase}.experience-desc{align-items:center;column-gap:2rem;display:grid;grid-template-columns:auto 1fr;margin-bottom:1.25rem}.experience-icon{color:var(--ifm-color-primary-light)}.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)}.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}.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;text-decoration:underline}.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)}#__docusaurus-base-url-issue-banner-container,.docSidebarContainer_YfHR,.sidebarLogo_isFc,.themedComponent_mlkZ,[data-theme=dark] .lightToggleIcon_pyhR,[data-theme=light] .darkToggleIcon_wfgR,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}.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] .themedComponent--dark_xIcU,[data-theme=light] .themedComponent--light_NVdE,html:not([data-theme]) .themedComponent--light_NVdE{display:initial}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_PEFL{display:none;margin:0}.iconExternalLink_nPIU{margin-left:.3rem}.docMainContainer_TBSr,.docRoot_UBD9{display:flex;width:100%}.docsWrapper_hBAB{display:flex;flex:1 0 auto}.dropdownNavbarItemMobile_S0Fm{cursor:pointer}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}@supports selector(:has(*)){.navbarSearchContainer_Bca1:not(:has(>*)){display:none}}.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}.errorBoundaryFallback_VBag{color:red;padding:.55rem}.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}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}.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:"#"}.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%}.sidebar_re4s{overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 2rem)}.sidebarItemTitle_pO2u{font-size:var(--ifm-h3-font-size)}.container_mt6G,.sidebarItemList_Yudw{font-size:.9rem}.sidebarItem__DBe{margin-top:.7rem}.sidebarItemLink_mo7H{color:var(--ifm-font-color-base);display:block}.sidebarItemLinkActive_I1ZP{color:var(--ifm-color-primary)!important}.buttonGroup__atx button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.features_t9lD{align-items:center;display:flex;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{align-items:center;display:flex;justify-content:center}.authorCol_Hf19{flex-grow:1!important;max-width:inherit!important}.imageOnlyAuthorRow_pa_O{display:flex;flex-flow:row wrap}.imageOnlyAuthorCol_G86a{margin-left:.3rem;margin-right:.3rem}.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}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}: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)}.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}.tag_Nnez{display:inline-block;margin:.5rem .5rem 0 1rem}.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}.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}.tocCollapsibleContent_vkbj a{display:block}.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)}.img_ev3q{height:auto}.admonition_xJq3{margin-bottom:1em}.admonitionHeading_Gvgb{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);text-transform:uppercase}.admonitionHeading_Gvgb:not(:last-child){margin-bottom:.3rem}.admonitionHeading_Gvgb code{text-transform:none}.admonitionIcon_Rf37{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_Rf37 svg{fill:var(--ifm-alert-foreground-color);display:inline-block;height:1.6em;width:1.6em}.blogPostFooterDetailsFull_mRVl{flex-direction:column}.tableOfContents_bqdL{overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.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 screen and (min-width:992px){.experiences-center{column-gap:4rem;display:grid;grid-template-columns:200px 1fr;width:90vw}.btn-container{flex-direction:column;justify-content:flex-start}.experience-btn{margin-bottom:1rem}.active-btn{box-shadow:-2px 0 var(--ifm-color-primary-dark)}.experience-btn:hover{box-shadow:-2px 0 var(--ifm-color-primary-Dark)}}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_TmdG{background-color:var(--docusaurus-collapse-button-bg)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.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_i1dp,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_TmdG:focus,.expandButton_TmdG: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_TmdG{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_i1dp{transform:rotate(180deg)}.docSidebarContainer_YfHR{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_DPk8{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_aRkj{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_TBSr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_lQrH{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_JWYK{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.navbarSearchContainer_Bca1{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.lastUpdated_vwxv{text-align:right}.tocMobile_ITEo{display:none}.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,.sidebar_re4s,.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}.navbarSearchContainer_Bca1{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_F8PC{padding:0 .3rem}}@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}.title_f1Hy{font-size:2rem}}@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)}.experience-btn,.experience-date{letter-spacing:var(--spacing)}.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}.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}.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}*{box-sizing:border-box}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,.tabItem_LNqP{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,.tabList__CuJ{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}.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{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}.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}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.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;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)}.sidebar_re4s,.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem)}.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_BuS1>:last-child,.collapsibleContent_i85q p:last-child,.details_lb9f>summary>p:last-child,.experience-desc p,.footer__items,.tabItem_Ymn6>:last-child{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,.title_f1Hy{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_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)}.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,.sidebarItemLink_mo7H: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,.sidebarItemTitle_pO2u,.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}:root{--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-color-primary:#2453e0;--ifm-color-primary-dark:#1d49cd;--ifm-color-primary-darker:#1b45c2;--ifm-color-primary-darkest:#17399f;--ifm-color-primary-light:#6d8ef2;--ifm-color-primary-lighter:#c6d9fc;--ifm-color-primary-lightest:#f3f8ff;--ifm-code-font-size:95%;--ifm-color-grey-1:#102a42;--ifm-color-grey-2:#081521;--ifm-color-grey-3:#324d67;--ifm-color-grey-4:#48647f;--ifm-color-grey-5:#617d98;--ifm-color-grey-7:#364d63;--ifm-color-grey-8:#bcccdc;--ifm-color-grey-9:#dae2ec;--ifm-color-grey-10:#f1f5f8;--ifm-green-dark:#1d9527;--ifm-red-dark:#bb2525;--ifm-red-light:#f14949;--ifm-white:#fff;--ifm-black:#000;--ff-primary:"Roboto",sans-serif;--ff-secondary:"Open Sans",sans-serif;--transition:all 0.3s linear;--spacing:0.15rem;--radius:0.25rem;--light-shadow:0 5px 15px #0000001a;--dark-shadow:0 5px 50px #0003;--max-width:1170px;--fixed-width:700px;--docusaurus-announcement-bar-height:auto;--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300)}#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:#adbeff;--ifm-color-primary-dark:#829cff;--ifm-color-primary-darker:#6d8bff;--ifm-color-primary-darkest:#2d58ff;--ifm-color-primary-light:#d8e0ff;--ifm-color-primary-lighter:#edf1ff;--ifm-color-primary-lightest:#fff;--docusaurus-highlighted-code-line-bg:#0000004d}.experience{background-color:var(--ifm-color-primary-lightest);padding:6rem 0}html[data-theme=dark] .experience{background-color:var(--ifm-color-grey-2)}.experiences-center{margin:0 auto;max-width:var(--max-width);width:80vw}.experience-title{font-size:2.5rem;text-align:center}.btn-container{display:flex;flex-direction:row;justify-content:center;margin-bottom:4rem}.experience-btn{background:#0000;border-color:#0000;color:var(--ifm-black);cursor:pointer;font-size:1.25rem;line-height:1;margin:0 .5rem;padding:.25rem 0;text-transform:capitalize;transition:var(--transition)}html[data-theme=dark] .experience-btn{color:var(--ifm-white)}.active-btn,.experience-btn:hover,html[data-theme=dark] .active-btn,html[data-theme=dark] .experience-btn:hover{color:var(--ifm-color-primary-dark)}.active-btn{box-shadow:0 2px var(--ifm-color-primary-darkest)}.experience-info h3{font-weight:400}.experience-info h4{background:var(--ifm-color-grey-9);border-radius:var(--radius);color:var(--ifm-color-grey-5);display:inline-block;padding:.375rem .75rem;text-transform:uppercase}.experience-desc{align-items:center;column-gap:2rem;display:grid;grid-template-columns:auto 1fr;margin-bottom:1.25rem}.experience-icon{color:var(--ifm-color-primary-light)}.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)}.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}.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;text-decoration:underline}.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)}#__docusaurus-base-url-issue-banner-container,.docSidebarContainer_YfHR,.sidebarLogo_isFc,.themedComponent_mlkZ,[data-theme=dark] .lightToggleIcon_pyhR,[data-theme=light] .darkToggleIcon_wfgR,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}.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] .themedComponent--dark_xIcU,[data-theme=light] .themedComponent--light_NVdE,html:not([data-theme]) .themedComponent--light_NVdE{display:initial}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_PEFL{display:none;margin:0}.iconExternalLink_nPIU{margin-left:.3rem}.docMainContainer_TBSr,.docRoot_UBD9{display:flex;width:100%}.docsWrapper_hBAB{display:flex;flex:1 0 auto}.dropdownNavbarItemMobile_S0Fm{cursor:pointer}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}@supports selector(:has(*)){.navbarSearchContainer_Bca1:not(:has(>*)){display:none}}.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}.errorBoundaryFallback_VBag{color:red;padding:.55rem}.footerLogoLink_DDai{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_DDai:hover,.hash-link:focus,:hover>.hash-link{opacity:1}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}.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:"#"}.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%}.sidebar_re4s{overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 2rem)}.sidebarItemTitle_pO2u{font-size:var(--ifm-h3-font-size)}.container_mt6G,.sidebarItemList_Yudw{font-size:.9rem}.sidebarItem__DBe{margin-top:.7rem}.sidebarItemLink_mo7H{color:var(--ifm-font-color-base);display:block}.sidebarItemLinkActive_I1ZP{color:var(--ifm-color-primary)!important}.buttonGroup__atx button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.features_t9lD{align-items:center;display:flex;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{align-items:center;display:flex;justify-content:center}.authorCol_Hf19{flex-grow:1!important;max-width:inherit!important}.imageOnlyAuthorRow_pa_O{display:flex;flex-flow:row wrap}.imageOnlyAuthorCol_G86a{margin-left:.3rem;margin-right:.3rem}.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}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}: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)}.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}.tag_Nnez{display:inline-block;margin:.5rem .5rem 0 1rem}.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}.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}.tocCollapsibleContent_vkbj a{display:block}.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)}.img_ev3q{height:auto}.admonition_xJq3{margin-bottom:1em}.admonitionHeading_Gvgb{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);text-transform:uppercase}.admonitionHeading_Gvgb:not(:last-child){margin-bottom:.3rem}.admonitionHeading_Gvgb code{text-transform:none}.admonitionIcon_Rf37{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_Rf37 svg{fill:var(--ifm-alert-foreground-color);display:inline-block;height:1.6em;width:1.6em}.blogPostFooterDetailsFull_mRVl{flex-direction:column}.tableOfContents_bqdL{overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.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 screen and (min-width:992px){.experiences-center{column-gap:4rem;display:grid;grid-template-columns:200px 1fr;width:90vw}.btn-container{flex-direction:column;justify-content:flex-start}.experience-btn{margin-bottom:1rem}.active-btn{box-shadow:-2px 0 var(--ifm-color-primary-dark)}.experience-btn:hover{box-shadow:-2px 0 var(--ifm-color-primary-Dark)}}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_TmdG{background-color:var(--docusaurus-collapse-button-bg)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.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_i1dp,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_TmdG:focus,.expandButton_TmdG: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_TmdG{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_i1dp{transform:rotate(180deg)}.docSidebarContainer_YfHR{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_DPk8{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_aRkj{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_TBSr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_lQrH{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_JWYK{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.navbarSearchContainer_Bca1{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.lastUpdated_vwxv{text-align:right}.tocMobile_ITEo{display:none}.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,.sidebar_re4s,.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}.navbarSearchContainer_Bca1{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_F8PC{padding:0 .3rem}}@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}.title_f1Hy{font-size:2rem}}@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 diff --git a/assets/js/01a85c17.33a996d5.js b/assets/js/01a85c17.33a996d5.js deleted file mode 100644 index 3a7bef0..0000000 --- a/assets/js/01a85c17.33a996d5.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8209],{6535:(e,s,t)=>{t.d(s,{A:()=>v});var a=t(6540),i=t(8215),r=t(781),l=t(4581),n=t(8774),c=t(1312),m=t(6347),o=t(9169);function d(e){const{pathname:s}=(0,m.zy)();return(0,a.useMemo)((()=>e.filter((e=>function(e,s){return!(e.unlisted&&!(0,o.ys)(e.permalink,s))}(e,s)))),[e,s])}const u={sidebar:"sidebar_re4s",sidebarItemTitle:"sidebarItemTitle_pO2u",sidebarItemList:"sidebarItemList_Yudw",sidebarItem:"sidebarItem__DBe",sidebarItemLink:"sidebarItemLink_mo7H",sidebarItemLinkActive:"sidebarItemLinkActive_I1ZP"};var b=t(4848);function g(e){let{sidebar:s}=e;const t=d(s.items);return(0,b.jsx)("aside",{className:"col col--3",children:(0,b.jsxs)("nav",{className:(0,i.A)(u.sidebar,"thin-scrollbar"),"aria-label":(0,c.T)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"}),children:[(0,b.jsx)("div",{className:(0,i.A)(u.sidebarItemTitle,"margin-bottom--md"),children:s.title}),(0,b.jsx)("ul",{className:(0,i.A)(u.sidebarItemList,"clean-list"),children:t.map((e=>(0,b.jsx)("li",{className:u.sidebarItem,children:(0,b.jsx)(n.A,{isNavLink:!0,to:e.permalink,className:u.sidebarItemLink,activeClassName:u.sidebarItemLinkActive,children:e.title})},e.permalink)))})]})})}var h=t(5600);function p(e){let{sidebar:s}=e;const t=d(s.items);return(0,b.jsx)("ul",{className:"menu__list",children:t.map((e=>(0,b.jsx)("li",{className:"menu__list-item",children:(0,b.jsx)(n.A,{isNavLink:!0,to:e.permalink,className:"menu__link",activeClassName:"menu__link--active",children:e.title})},e.permalink)))})}function j(e){return(0,b.jsx)(h.GX,{component:p,props:e})}function x(e){let{sidebar:s}=e;const t=(0,l.l)();return s?.items.length?"mobile"===t?(0,b.jsx)(j,{sidebar:s}):(0,b.jsx)(g,{sidebar:s}):null}function v(e){const{sidebar:s,toc:t,children:a,...l}=e,n=s&&s.items.length>0;return(0,b.jsx)(r.A,{...l,children:(0,b.jsx)("div",{className:"container margin-vert--lg",children:(0,b.jsxs)("div",{className:"row",children:[(0,b.jsx)(x,{sidebar:s}),(0,b.jsx)("main",{className:(0,i.A)("col",{"col--7":n,"col--9 col--offset-1":!n}),itemScope:!0,itemType:"https://schema.org/Blog",children:a}),t&&(0,b.jsx)("div",{className:"col col--2",children:t})]})})})}},9158:(e,s,t)=>{t.r(s),t.d(s,{default:()=>p});t(6540);var a=t(8215),i=t(1312);const r=()=>(0,i.T)({id:"theme.tags.tagsPageTitle",message:"Tags",description:"The title of the tag list page"});var l=t(1003),n=t(7559),c=t(6535),m=t(6133),o=t(1107);const d={tag:"tag_Nnez"};var u=t(4848);function b(e){let{letterEntry:s}=e;return(0,u.jsxs)("article",{children:[(0,u.jsx)(o.A,{as:"h2",id:s.letter,children:s.letter}),(0,u.jsx)("ul",{className:"padding--none",children:s.tags.map((e=>(0,u.jsx)("li",{className:d.tag,children:(0,u.jsx)(m.A,{...e})},e.permalink)))}),(0,u.jsx)("hr",{})]})}function g(e){let{tags:s}=e;const t=function(e){const s={};return Object.values(e).forEach((e=>{const t=function(e){return e[0].toUpperCase()}(e.label);s[t]??=[],s[t].push(e)})),Object.entries(s).sort(((e,s)=>{let[t]=e,[a]=s;return t.localeCompare(a)})).map((e=>{let[s,t]=e;return{letter:s,tags:t.sort(((e,s)=>e.label.localeCompare(s.label)))}}))}(s);return(0,u.jsx)("section",{className:"margin-vert--lg",children:t.map((e=>(0,u.jsx)(b,{letterEntry:e},e.letter)))})}var h=t(1463);function p(e){let{tags:s,sidebar:t}=e;const i=r();return(0,u.jsxs)(l.e3,{className:(0,a.A)(n.G.wrapper.blogPages,n.G.page.blogTagsListPage),children:[(0,u.jsx)(l.be,{title:i}),(0,u.jsx)(h.A,{tag:"blog_tags_list"}),(0,u.jsxs)(c.A,{sidebar:t,children:[(0,u.jsx)(o.A,{as:"h1",children:i}),(0,u.jsx)(g,{tags:s})]})]})}},6133:(e,s,t)=>{t.d(s,{A:()=>n});t(6540);var a=t(8215),i=t(8774);const r={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};var l=t(4848);function n(e){let{permalink:s,label:t,count:n}=e;return(0,l.jsxs)(i.A,{href:s,className:(0,a.A)(r.tag,n?r.tagWithCount:r.tagRegular),children:[t,n&&(0,l.jsx)("span",{children:n})]})}}}]); \ No newline at end of file diff --git a/assets/js/01a85c17.a59cfdeb.js b/assets/js/01a85c17.a59cfdeb.js new file mode 100644 index 0000000..6099641 --- /dev/null +++ b/assets/js/01a85c17.a59cfdeb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8209],{6535:(e,s,t)=>{t.d(s,{A:()=>v});var a=t(6540),i=t(8215),r=t(8789),l=t(4581),n=t(8774),c=t(1312),m=t(6347),o=t(9169);function d(e){const{pathname:s}=(0,m.zy)();return(0,a.useMemo)((()=>e.filter((e=>function(e,s){return!(e.unlisted&&!(0,o.ys)(e.permalink,s))}(e,s)))),[e,s])}const u={sidebar:"sidebar_re4s",sidebarItemTitle:"sidebarItemTitle_pO2u",sidebarItemList:"sidebarItemList_Yudw",sidebarItem:"sidebarItem__DBe",sidebarItemLink:"sidebarItemLink_mo7H",sidebarItemLinkActive:"sidebarItemLinkActive_I1ZP"};var b=t(4848);function g(e){let{sidebar:s}=e;const t=d(s.items);return(0,b.jsx)("aside",{className:"col col--3",children:(0,b.jsxs)("nav",{className:(0,i.A)(u.sidebar,"thin-scrollbar"),"aria-label":(0,c.T)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"}),children:[(0,b.jsx)("div",{className:(0,i.A)(u.sidebarItemTitle,"margin-bottom--md"),children:s.title}),(0,b.jsx)("ul",{className:(0,i.A)(u.sidebarItemList,"clean-list"),children:t.map((e=>(0,b.jsx)("li",{className:u.sidebarItem,children:(0,b.jsx)(n.A,{isNavLink:!0,to:e.permalink,className:u.sidebarItemLink,activeClassName:u.sidebarItemLinkActive,children:e.title})},e.permalink)))})]})})}var h=t(5600);function p(e){let{sidebar:s}=e;const t=d(s.items);return(0,b.jsx)("ul",{className:"menu__list",children:t.map((e=>(0,b.jsx)("li",{className:"menu__list-item",children:(0,b.jsx)(n.A,{isNavLink:!0,to:e.permalink,className:"menu__link",activeClassName:"menu__link--active",children:e.title})},e.permalink)))})}function j(e){return(0,b.jsx)(h.GX,{component:p,props:e})}function x(e){let{sidebar:s}=e;const t=(0,l.l)();return s?.items.length?"mobile"===t?(0,b.jsx)(j,{sidebar:s}):(0,b.jsx)(g,{sidebar:s}):null}function v(e){const{sidebar:s,toc:t,children:a,...l}=e,n=s&&s.items.length>0;return(0,b.jsx)(r.A,{...l,children:(0,b.jsx)("div",{className:"container margin-vert--lg",children:(0,b.jsxs)("div",{className:"row",children:[(0,b.jsx)(x,{sidebar:s}),(0,b.jsx)("main",{className:(0,i.A)("col",{"col--7":n,"col--9 col--offset-1":!n}),itemScope:!0,itemType:"https://schema.org/Blog",children:a}),t&&(0,b.jsx)("div",{className:"col col--2",children:t})]})})})}},9158:(e,s,t)=>{t.r(s),t.d(s,{default:()=>p});t(6540);var a=t(8215),i=t(1312);const r=()=>(0,i.T)({id:"theme.tags.tagsPageTitle",message:"Tags",description:"The title of the tag list page"});var l=t(1003),n=t(7559),c=t(6535),m=t(6133),o=t(1107);const d={tag:"tag_Nnez"};var u=t(4848);function b(e){let{letterEntry:s}=e;return(0,u.jsxs)("article",{children:[(0,u.jsx)(o.A,{as:"h2",id:s.letter,children:s.letter}),(0,u.jsx)("ul",{className:"padding--none",children:s.tags.map((e=>(0,u.jsx)("li",{className:d.tag,children:(0,u.jsx)(m.A,{...e})},e.permalink)))}),(0,u.jsx)("hr",{})]})}function g(e){let{tags:s}=e;const t=function(e){const s={};return Object.values(e).forEach((e=>{const t=function(e){return e[0].toUpperCase()}(e.label);s[t]??=[],s[t].push(e)})),Object.entries(s).sort(((e,s)=>{let[t]=e,[a]=s;return t.localeCompare(a)})).map((e=>{let[s,t]=e;return{letter:s,tags:t.sort(((e,s)=>e.label.localeCompare(s.label)))}}))}(s);return(0,u.jsx)("section",{className:"margin-vert--lg",children:t.map((e=>(0,u.jsx)(b,{letterEntry:e},e.letter)))})}var h=t(1463);function p(e){let{tags:s,sidebar:t}=e;const i=r();return(0,u.jsxs)(l.e3,{className:(0,a.A)(n.G.wrapper.blogPages,n.G.page.blogTagsListPage),children:[(0,u.jsx)(l.be,{title:i}),(0,u.jsx)(h.A,{tag:"blog_tags_list"}),(0,u.jsxs)(c.A,{sidebar:t,children:[(0,u.jsx)(o.A,{as:"h1",children:i}),(0,u.jsx)(g,{tags:s})]})]})}},6133:(e,s,t)=>{t.d(s,{A:()=>n});t(6540);var a=t(8215),i=t(8774);const r={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};var l=t(4848);function n(e){let{permalink:s,label:t,count:n}=e;return(0,l.jsxs)(i.A,{href:s,className:(0,a.A)(r.tag,n?r.tagWithCount:r.tagRegular),children:[t,n&&(0,l.jsx)("span",{children:n})]})}}}]); \ No newline at end of file diff --git a/assets/js/0817c5ed.8457de86.js b/assets/js/0817c5ed.443619a5.js similarity index 95% rename from assets/js/0817c5ed.8457de86.js rename to assets/js/0817c5ed.443619a5.js index 94481eb..ebf121f 100644 --- a/assets/js/0817c5ed.8457de86.js +++ b/assets/js/0817c5ed.443619a5.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8880],{363:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>h,contentTitle:()=>c,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>l});var s=r(4848),n=r(8453);const i={},c="Resources",o={id:"TheHive/thehive-resources",title:"Resources",description:"TheHIve",source:"@site/docs/TheHive/thehive-resources.mdx",sourceDirName:"TheHive",slug:"/TheHive/thehive-resources",permalink:"/docs/TheHive/thehive-resources",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1708051930,formattedLastUpdatedAt:"Feb 16, 2024",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Cortex Neurons",permalink:"/docs/TheHive/cortex-neurons"}},h={},l=[{value:"TheHIve",id:"thehive",level:2},{value:"Resources",id:"resources-1",level:3},{value:"Cortex",id:"cortex",level:2},{value:"Resources",id:"resources-2",level:3}];function a(e){const t={a:"a",h1:"h1",h2:"h2",h3:"h3",li:"li",ul:"ul",...(0,n.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"resources",children:"Resources"}),"\n",(0,s.jsx)(t.h2,{id:"thehive",children:"TheHIve"}),"\n",(0,s.jsx)(t.h3,{id:"resources-1",children:"Resources"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://docs.strangebee.com/thehive/setup/",children:"TheHive5 documentation"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://www.elastic.co/guide/en/elasticsearch/reference/7.17/indices-delete-index.html",children:"Elasticsearch 7 documentation & cURL calls"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://cassandra.apache.org/doc/latest/",children:"Cassandra documentation"})}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"cortex",children:"Cortex"}),"\n",(0,s.jsx)(t.h3,{id:"resources-2",children:"Resources"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://docs.thehive-project.org/cortex/",children:"Cortex documentation"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://thehive-project.github.io/Cortex-Analyzers/",children:"Cortex Neurons documentation"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://github.com/TheHive-Project/Cortex-Analyzers/",children:"Cortex analyzers Github"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://github.com/TheHive-Project/Cortex-Analyzers/tree/master/utils/docker",children:"Cortex Neurons docker utils"})}),"\n"]})]})}function d(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},8453:(e,t,r)=>{r.d(t,{R:()=>c,x:()=>o});var s=r(6540);const n={},i=s.createContext(n);function c(e){const t=s.useContext(i);return s.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(n):e.components||n:c(e.components),s.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8880],{363:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>h,contentTitle:()=>c,default:()=>d,frontMatter:()=>i,metadata:()=>o,toc:()=>l});var s=r(4848),n=r(8453);const i={},c="Resources",o={id:"TheHive/thehive-resources",title:"Resources",description:"TheHIve",source:"@site/docs/TheHive/thehive-resources.mdx",sourceDirName:"TheHive",slug:"/TheHive/thehive-resources",permalink:"/docs/TheHive/thehive-resources",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1708326742,formattedLastUpdatedAt:"Feb 19, 2024",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Cortex Neurons",permalink:"/docs/TheHive/cortex-neurons"}},h={},l=[{value:"TheHIve",id:"thehive",level:2},{value:"Resources",id:"resources-1",level:3},{value:"Cortex",id:"cortex",level:2},{value:"Resources",id:"resources-2",level:3}];function a(e){const t={a:"a",h1:"h1",h2:"h2",h3:"h3",li:"li",ul:"ul",...(0,n.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"resources",children:"Resources"}),"\n",(0,s.jsx)(t.h2,{id:"thehive",children:"TheHIve"}),"\n",(0,s.jsx)(t.h3,{id:"resources-1",children:"Resources"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://docs.strangebee.com/thehive/setup/",children:"TheHive5 documentation"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://www.elastic.co/guide/en/elasticsearch/reference/7.17/indices-delete-index.html",children:"Elasticsearch 7 documentation & cURL calls"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://cassandra.apache.org/doc/latest/",children:"Cassandra documentation"})}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"cortex",children:"Cortex"}),"\n",(0,s.jsx)(t.h3,{id:"resources-2",children:"Resources"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://docs.thehive-project.org/cortex/",children:"Cortex documentation"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://thehive-project.github.io/Cortex-Analyzers/",children:"Cortex Neurons documentation"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://github.com/TheHive-Project/Cortex-Analyzers/",children:"Cortex analyzers Github"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://github.com/TheHive-Project/Cortex-Analyzers/tree/master/utils/docker",children:"Cortex Neurons docker utils"})}),"\n"]})]})}function d(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},8453:(e,t,r)=>{r.d(t,{R:()=>c,x:()=>o});var s=r(6540);const n={},i=s.createContext(n);function c(e){const t=s.useContext(i);return s.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(n):e.components||n:c(e.components),s.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1365e388.c1b6fbd3.js b/assets/js/1365e388.d8e53f27.js similarity index 97% rename from assets/js/1365e388.c1b6fbd3.js rename to assets/js/1365e388.d8e53f27.js index a07756a..4ed9f5e 100644 --- a/assets/js/1365e388.c1b6fbd3.js +++ b/assets/js/1365e388.d8e53f27.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[6344],{4321:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>a,toc:()=>l});var r=t(4848),i=t(8453);const s={},o="Infrastructure as Code",a={id:"Engineering/IaC",title:"Infrastructure as Code",description:"Summary",source:"@site/docs/Engineering/IaC.md",sourceDirName:"Engineering",slug:"/Engineering/IaC",permalink:"/docs/Engineering/IaC",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1708051930,formattedLastUpdatedAt:"Feb 16, 2024",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Disaster Recovery Plan",permalink:"/docs/Engineering/DRP"},next:{title:"Port-forwarding to localhost",permalink:"/docs/GCP/Identity-Aware Proxy/port-forwarding"}},c={},l=[{value:"Summary",id:"summary",level:2},{value:"Tools",id:"tools",level:2}];function d(e){const n={a:"a",h1:"h1",h2:"h2",li:"li",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"infrastructure-as-code",children:"Infrastructure as Code"}),"\n",(0,r.jsx)(n.h2,{id:"summary",children:"Summary"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Used for provisioning and managing cloud resources"}),"\n",(0,r.jsx)(n.li,{children:"Ex : Creating and provisioning a VM"}),"\n",(0,r.jsx)(n.li,{children:"Referring to all APIs used to deploy infrastructure"}),"\n",(0,r.jsx)(n.li,{children:"Declarative statements : the yaml configuration is a picture of the desired stage. Unlike CLI commands which are imperative and tells what to do : We can focus on how the infrastructure should be."}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"tools",children:"Tools"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://www.terraform.io/",children:"Hashicorp Terraform"}),", which is multi API / multi-cloud with an open-source core."]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>a});var r=t(6540);const i={},s=r.createContext(i);function o(e){const n=r.useContext(s);return r.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:o(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[6344],{4321:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>a,toc:()=>l});var r=t(4848),i=t(8453);const s={},o="Infrastructure as Code",a={id:"Engineering/IaC",title:"Infrastructure as Code",description:"Summary",source:"@site/docs/Engineering/IaC.md",sourceDirName:"Engineering",slug:"/Engineering/IaC",permalink:"/docs/Engineering/IaC",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1708326742,formattedLastUpdatedAt:"Feb 19, 2024",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Disaster Recovery Plan",permalink:"/docs/Engineering/DRP"},next:{title:"Port-forwarding to localhost",permalink:"/docs/GCP/Identity-Aware Proxy/port-forwarding"}},c={},l=[{value:"Summary",id:"summary",level:2},{value:"Tools",id:"tools",level:2}];function d(e){const n={a:"a",h1:"h1",h2:"h2",li:"li",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"infrastructure-as-code",children:"Infrastructure as Code"}),"\n",(0,r.jsx)(n.h2,{id:"summary",children:"Summary"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Used for provisioning and managing cloud resources"}),"\n",(0,r.jsx)(n.li,{children:"Ex : Creating and provisioning a VM"}),"\n",(0,r.jsx)(n.li,{children:"Referring to all APIs used to deploy infrastructure"}),"\n",(0,r.jsx)(n.li,{children:"Declarative statements : the yaml configuration is a picture of the desired stage. Unlike CLI commands which are imperative and tells what to do : We can focus on how the infrastructure should be."}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"tools",children:"Tools"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"https://www.terraform.io/",children:"Hashicorp Terraform"}),", which is multi API / multi-cloud with an open-source core."]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>a});var r=t(6540);const i={},s=r.createContext(i);function o(e){const n=r.useContext(s);return r.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:o(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1df93b7f.9331a07a.js b/assets/js/1df93b7f.9331a07a.js new file mode 100644 index 0000000..6df0c6f --- /dev/null +++ b/assets/js/1df93b7f.9331a07a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4583],{1075:(e,i,n)=>{n.r(i),n.d(i,{default:()=>v});var s=n(6540),t=n(53),a=n(8774),r=n(4586),c=n(8789);const l={features:"features_t9lD",featureSvg:"featureSvg_GfXr"};var o=n(4848);const d=[];function h(e){let{title:i,Svg:n,description:s}=e;return(0,o.jsxs)("div",{className:(0,t.A)("col col--4"),children:[(0,o.jsx)("div",{className:"text--center",children:(0,o.jsx)(n,{className:l.featureSvg,role:"img"})}),(0,o.jsxs)("div",{className:"text--center padding-horiz--md",children:[(0,o.jsx)("h3",{children:i}),(0,o.jsx)("p",{children:s})]})]})}function u(){return(0,o.jsx)("section",{className:l.features,children:(0,o.jsx)("div",{className:"container",children:(0,o.jsx)("div",{className:"row",children:d.map(((e,i)=>(0,o.jsx)(h,{...e},i)))})})})}var m=n(3914),p=n(6188),g=n(1312);const x=[{company:"IMT Nord Europe",position:"Engineering Diploma in Information Technology",date:"Sep 2013- July 2019 ",desc:{1:"General engineering, plenty of maths, physics, electronics, computer science.",2:"Specialization in Cybersecurity and Big Data",3:"Had the chance to have internships and work experiences in Czech Republic, Malaysia, China."}},{company:"Shanghai Jiao Tong University",position:"Exchange Graduate",date:"Jan 2018 - July 2018 ",desc:{1:"Security engineering : Cryptography, Block-cipher design, Cryptoanalysis & attacks",2:"Web search & Mining : Information retrieval",3:"Big Data Security : Secure multi-party computation",4:"Machine Learning : supervised learning, unsupervised learning, learning theory, probabilistic graphical models"}},{company:"SANS Institute",position:"Attendee - Cybersecurity masterclasses & certification",date:"Sep 2022 | July 2023",desc:{1:"MGT551 - Building & Leading Security Operations Center (Sep 2022). Resulted in GIAC Security Operations Manager certification 4 months later (Jan 2023) as well as GIAC Advisory Board member.",2:"SEC599 - Defeating Advanced Adversaries - Purple Team Tactics & Kill Chain Defenses (August 2023). Resulted in GIAC Defending Advanced Threats certification in December 2023."}},{company:"Decathlon Digital",position:"SOC Practice Lead",date:"Jan 2019 - till now ",desc:{1:"Started in 2019 - Joined a brand new security operations team in 'trial' period, a team of two.\n\n Set up of SIRP, SIEM, security detections & remediations. Really started embracing automation since we were so few.",2:"2020 - I start my cloud security journey. CSPM technical implementation & design at global scale.",3:"2021 - As a SOC Technical Leader, designing & setting up SOC tooling with an automation-friendly mindset, also ended up managing two amazing teammates to fulfill this purpose. Designed & built SOC cloud infrastructure.",4:"Aug 2022 - Designing overall SOC approach, strategy, processes, tools & metrics with an automation-driven mindset. Increasing its efficiency & aligning SOC use-cases with threat intelligence & business needs. Internal team of five."}}];const y=function(){const[e,i]=(0,s.useState)(0),{company:n,position:t,date:a,desc:r}=x[e];return(0,o.jsxs)("section",{className:"experience",children:[(0,o.jsx)("h2",{className:"experience-title",children:(0,o.jsx)(g.A,{children:"Experience"})}),(0,o.jsx)("div",{className:"underline"}),(0,o.jsxs)("div",{className:"experiences-center",children:[(0,o.jsx)("div",{className:"btn-container",children:x.map(((n,s)=>(0,o.jsx)("button",{onClick:()=>i(s),className:`experience-btn ${s===e&&"active-btn"}`,children:n.company},s)))}),(0,o.jsxs)("article",{className:"experience-info",children:[(0,o.jsx)("h3",{children:t}),(0,o.jsx)("h4",{children:n}),(0,o.jsx)("p",{className:"experience-date",children:a}),Object.keys(r).map(((e,i)=>(0,o.jsxs)("div",{className:"experience-desc",children:[(0,o.jsx)(m.g,{icon:p.UHg,className:"experience-icon"}),(0,o.jsx)("p",{children:r[e]})]},i)))]})]})]})};var j=n(7875);const f={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"};function b(){const{siteConfig:e}=(0,r.A)();return(0,o.jsx)("header",{className:(0,t.A)(f.heroBanner),children:(0,o.jsxs)("div",{className:"container",children:[(0,o.jsx)("img",{src:"https://github.com/nusantara-self.png",style:{width:280,borderRadius:"50%"}}),(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:f.buttons,children:(0,o.jsx)(a.A,{className:"button button--secondary button--lg",to:"/blog/hello-world",children:"Discover my blog \u2192"})}),(0,o.jsxs)("div",{className:"heroBanner",children:[(0,o.jsx)("br",{}),(0,o.jsx)("br",{}),(0,o.jsx)("a",{href:"https://linkedin.com/in/bloumefabien",children:(0,o.jsx)(m.g,{icon:j.IAJ,size:"3x"})}),(0,o.jsx)("a",{style:{marginLeft:"4%"},href:"https://medium.com/@fabienbloume",children:(0,o.jsx)(m.g,{icon:j.T03,size:"3x"})})]})]})})}function v(){const{siteConfig:e}=(0,r.A)();return(0,o.jsxs)(c.A,{title:"About me",description:"Tech, cybersecurity, travel, life, exploration, journey",children:[(0,o.jsx)(b,{}),(0,o.jsxs)("main",{children:[(0,o.jsx)(u,{}),(0,o.jsx)(y,{})]})]})}}}]); \ No newline at end of file diff --git a/assets/js/1df93b7f.ca839791.js b/assets/js/1df93b7f.ca839791.js deleted file mode 100644 index ffa2913..0000000 --- a/assets/js/1df93b7f.ca839791.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4583],{1075:(e,i,n)=>{n.r(i),n.d(i,{default:()=>v});var s=n(6540),t=n(53),a=n(8774),r=n(4586),c=n(781);const l={features:"features_t9lD",featureSvg:"featureSvg_GfXr"};var o=n(4848);const d=[];function h(e){let{title:i,Svg:n,description:s}=e;return(0,o.jsxs)("div",{className:(0,t.A)("col col--4"),children:[(0,o.jsx)("div",{className:"text--center",children:(0,o.jsx)(n,{className:l.featureSvg,role:"img"})}),(0,o.jsxs)("div",{className:"text--center padding-horiz--md",children:[(0,o.jsx)("h3",{children:i}),(0,o.jsx)("p",{children:s})]})]})}function u(){return(0,o.jsx)("section",{className:l.features,children:(0,o.jsx)("div",{className:"container",children:(0,o.jsx)("div",{className:"row",children:d.map(((e,i)=>(0,o.jsx)(h,{...e},i)))})})})}var m=n(3914),p=n(6188),g=n(1312);const x=[{company:"IMT Nord Europe",position:"Engineering Diploma in Information Technology",date:"Sep 2013- July 2019 ",desc:{1:"General engineering, plenty of maths, physics, electronics, computer science.",2:"Specialization in Cybersecurity and Big Data",3:"Had the chance to have internships and work experiences in Czech Republic, Malaysia, China."}},{company:"Shanghai Jiao Tong University",position:"Exchange Graduate",date:"Jan 2018 - July 2018 ",desc:{1:"Security engineering : Cryptography, Block-cipher design, Cryptoanalysis & attacks",2:"Web search & Mining : Information retrieval",3:"Big Data Security : Secure multi-party computation",4:"Machine Learning : supervised learning, unsupervised learning, learning theory, probabilistic graphical models"}},{company:"SANS Institute",position:"Attendee - Cybersecurity masterclasses & certification",date:"Sep 2022 | July 2023",desc:{1:"MGT551 - Building & Leading Security Operations Center (Sep 2022). Resulted in GIAC Security Operations Manager certification 4 months later (Jan 2023) as well as GIAC Advisory Board member.",2:"SEC599 - Defeating Advanced Adversaries - Purple Team Tactics & Kill Chain Defenses (August 2023). Resulted in GIAC Defending Advanced Threats certification in December 2023."}},{company:"Decathlon Digital",position:"SOC Practice Lead",date:"Jan 2019 - till now ",desc:{1:"Started in 2019 - Joined a brand new security operations team in 'trial' period, a team of two.\n\n Set up of SIRP, SIEM, security detections & remediations. Really started embracing automation since we were so few.",2:"2020 - I start my cloud security journey. CSPM technical implementation & design at global scale.",3:"2021 - As a SOC Technical Leader, designing & setting up SOC tooling with an automation-friendly mindset, also ended up managing two amazing teammates to fulfill this purpose. Designed & built SOC cloud infrastructure.",4:"Aug 2022 - Designing overall SOC approach, strategy, processes, tools & metrics with an automation-driven mindset. Increasing its efficiency & aligning SOC use-cases with threat intelligence & business needs. Internal team of five."}}];const y=function(){const[e,i]=(0,s.useState)(0),{company:n,position:t,date:a,desc:r}=x[e];return(0,o.jsxs)("section",{className:"experience",children:[(0,o.jsx)("h2",{className:"experience-title",children:(0,o.jsx)(g.A,{children:"Experience"})}),(0,o.jsx)("div",{className:"underline"}),(0,o.jsxs)("div",{className:"experiences-center",children:[(0,o.jsx)("div",{className:"btn-container",children:x.map(((n,s)=>(0,o.jsx)("button",{onClick:()=>i(s),className:`experience-btn ${s===e&&"active-btn"}`,children:n.company},s)))}),(0,o.jsxs)("article",{className:"experience-info",children:[(0,o.jsx)("h3",{children:t}),(0,o.jsx)("h4",{children:n}),(0,o.jsx)("p",{className:"experience-date",children:a}),Object.keys(r).map(((e,i)=>(0,o.jsxs)("div",{className:"experience-desc",children:[(0,o.jsx)(m.g,{icon:p.UHg,className:"experience-icon"}),(0,o.jsx)("p",{children:r[e]})]},i)))]})]})]})};var j=n(7875);const f={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"};function b(){const{siteConfig:e}=(0,r.A)();return(0,o.jsx)("header",{className:(0,t.A)(f.heroBanner),children:(0,o.jsxs)("div",{className:"container",children:[(0,o.jsx)("img",{src:"https://github.com/nusantara-self.png",style:{width:280,borderRadius:"50%"}}),(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:f.buttons,children:(0,o.jsx)(a.A,{className:"button button--secondary button--lg",to:"/blog/hello-world",children:"Discover my blog \u2192"})}),(0,o.jsxs)("div",{className:"heroBanner",children:[(0,o.jsx)("br",{}),(0,o.jsx)("br",{}),(0,o.jsx)("a",{href:"https://linkedin.com/in/bloumefabien",children:(0,o.jsx)(m.g,{icon:j.IAJ,size:"3x"})}),(0,o.jsx)("a",{style:{marginLeft:"4%"},href:"https://medium.com/@fabienbloume",children:(0,o.jsx)(m.g,{icon:j.T03,size:"3x"})})]})]})})}function v(){const{siteConfig:e}=(0,r.A)();return(0,o.jsxs)(c.A,{title:"About me",description:"Tech, cybersecurity, travel, life, exploration, journey",children:[(0,o.jsx)(b,{}),(0,o.jsxs)("main",{children:[(0,o.jsx)(u,{}),(0,o.jsx)(y,{})]})]})}}}]); \ No newline at end of file diff --git a/assets/js/1f391b9e.7b4522f1.js b/assets/js/1f391b9e.7b4522f1.js deleted file mode 100644 index 1f89f9e..0000000 --- a/assets/js/1f391b9e.7b4522f1.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[6061],{7973:(e,n,t)=>{t.r(n),t.d(n,{default:()=>u});t(6540);var i=t(8215),a=t(1003),s=t(7559),l=t(781),r=t(5533),c=t(7763),o=t(996);const d={mdxPageWrapper:"mdxPageWrapper_j9I6"};var m=t(4848);function u(e){const{content:n}=e,{metadata:{title:t,description:u,frontMatter:f,unlisted:v},assets:h}=n,{keywords:g,wrapperClassName:x,hide_table_of_contents:p}=f,L=h.image??f.image;return(0,m.jsx)(a.e3,{className:(0,i.A)(x??s.G.wrapper.mdxPages,s.G.page.mdxPage),children:(0,m.jsxs)(l.A,{children:[(0,m.jsx)(a.be,{title:t,description:u,keywords:g,image:L}),(0,m.jsx)("main",{className:"container container--fluid margin-vert--lg",children:(0,m.jsxs)("div",{className:(0,i.A)("row",d.mdxPageWrapper),children:[(0,m.jsxs)("div",{className:(0,i.A)("col",!p&&"col--8"),children:[v&&(0,m.jsx)(o.A,{}),(0,m.jsx)("article",{children:(0,m.jsx)(r.A,{children:(0,m.jsx)(n,{})})})]}),!p&&n.toc.length>0&&(0,m.jsx)("div",{className:"col col--2",children:(0,m.jsx)(c.A,{toc:n.toc,minHeadingLevel:f.toc_min_heading_level,maxHeadingLevel:f.toc_max_heading_level})})]})})]})})}},7763:(e,n,t)=>{t.d(n,{A:()=>o});t(6540);var i=t(8215),a=t(5195);const s={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"};var l=t(4848);const r="table-of-contents__link toc-highlight",c="table-of-contents__link--active";function o(e){let{className:n,...t}=e;return(0,l.jsx)("div",{className:(0,i.A)(s.tableOfContents,"thin-scrollbar",n),children:(0,l.jsx)(a.A,{...t,linkClassName:r,linkActiveClassName:c})})}},5195:(e,n,t)=>{t.d(n,{A:()=>h});var i=t(6540),a=t(6342);function s(e){const n=e.map((e=>({...e,parentIndex:-1,children:[]}))),t=Array(7).fill(-1);n.forEach(((e,n)=>{const i=t.slice(2,e.level);e.parentIndex=Math.max(...i),t[e.level]=n}));const i=[];return n.forEach((e=>{const{parentIndex:t,...a}=e;t>=0?n[t].children.push(a):i.push(a)})),i}function l(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:i}=e;return n.flatMap((e=>{const n=l({toc:e.children,minHeadingLevel:t,maxHeadingLevel:i});return function(e){return e.level>=t&&e.level<=i}(e)?[{...e,children:n}]:n}))}function r(e){const n=e.getBoundingClientRect();return n.top===n.bottom?r(e.parentNode):n}function c(e,n){let{anchorTopOffset:t}=n;const i=e.find((e=>r(e).top>=t));if(i){return function(e){return e.top>0&&e.bottom{e.current=n?0:document.querySelector(".navbar").clientHeight}),[n]),e}function d(e){const n=(0,i.useRef)(void 0),t=o();(0,i.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:i,linkActiveClassName:a,minHeadingLevel:s,maxHeadingLevel:l}=e;function r(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(i),r=function(e){let{minHeadingLevel:n,maxHeadingLevel:t}=e;const i=[];for(let a=n;a<=t;a+=1)i.push(`h${a}.anchor`);return Array.from(document.querySelectorAll(i.join()))}({minHeadingLevel:s,maxHeadingLevel:l}),o=c(r,{anchorTopOffset:t.current}),d=e.find((e=>o&&o.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(a),e.classList.add(a),n.current=e):e.classList.remove(a)}(e,e===d)}))}return document.addEventListener("scroll",r),document.addEventListener("resize",r),r(),()=>{document.removeEventListener("scroll",r),document.removeEventListener("resize",r)}}),[e,t])}var m=t(8774),u=t(4848);function f(e){let{toc:n,className:t,linkClassName:i,isChild:a}=e;return n.length?(0,u.jsx)("ul",{className:a?void 0:t,children:n.map((e=>(0,u.jsxs)("li",{children:[(0,u.jsx)(m.A,{to:`#${e.id}`,className:i??void 0,dangerouslySetInnerHTML:{__html:e.value}}),(0,u.jsx)(f,{isChild:!0,toc:e.children,className:t,linkClassName:i})]},e.id)))}):null}const v=i.memo(f);function h(e){let{toc:n,className:t="table-of-contents table-of-contents__left-border",linkClassName:r="table-of-contents__link",linkActiveClassName:c,minHeadingLevel:o,maxHeadingLevel:m,...f}=e;const h=(0,a.p)(),g=o??h.tableOfContents.minHeadingLevel,x=m??h.tableOfContents.maxHeadingLevel,p=function(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:a}=e;return(0,i.useMemo)((()=>l({toc:s(n),minHeadingLevel:t,maxHeadingLevel:a})),[n,t,a])}({toc:n,minHeadingLevel:g,maxHeadingLevel:x});return d((0,i.useMemo)((()=>{if(r&&c)return{linkClassName:r,linkActiveClassName:c,minHeadingLevel:g,maxHeadingLevel:x}}),[r,c,g,x])),(0,u.jsx)(v,{toc:p,className:t,linkClassName:r,...f})}},996:(e,n,t)=>{t.d(n,{A:()=>f});t(6540);var i=t(8215),a=t(1312),s=t(5260),l=t(4848);function r(){return(0,l.jsx)(a.A,{id:"theme.unlistedContent.title",description:"The unlisted content banner title",children:"Unlisted page"})}function c(){return(0,l.jsx)(a.A,{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 o(){return(0,l.jsx)(s.A,{children:(0,l.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}var d=t(7559),m=t(7293);function u(e){let{className:n}=e;return(0,l.jsx)(m.A,{type:"caution",title:(0,l.jsx)(r,{}),className:(0,i.A)(n,d.G.common.unlistedBanner),children:(0,l.jsx)(c,{})})}function f(e){return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(o,{}),(0,l.jsx)(u,{...e})]})}}}]); \ No newline at end of file diff --git a/assets/js/1f391b9e.e719d1cd.js b/assets/js/1f391b9e.e719d1cd.js new file mode 100644 index 0000000..8a03ed4 --- /dev/null +++ b/assets/js/1f391b9e.e719d1cd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[6061],{7973:(e,n,t)=>{t.r(n),t.d(n,{default:()=>u});t(6540);var i=t(8215),a=t(1003),s=t(7559),l=t(8789),r=t(5533),c=t(7763),o=t(996);const d={mdxPageWrapper:"mdxPageWrapper_j9I6"};var m=t(4848);function u(e){const{content:n}=e,{metadata:{title:t,description:u,frontMatter:f,unlisted:v},assets:h}=n,{keywords:g,wrapperClassName:x,hide_table_of_contents:p}=f,L=h.image??f.image;return(0,m.jsx)(a.e3,{className:(0,i.A)(x??s.G.wrapper.mdxPages,s.G.page.mdxPage),children:(0,m.jsxs)(l.A,{children:[(0,m.jsx)(a.be,{title:t,description:u,keywords:g,image:L}),(0,m.jsx)("main",{className:"container container--fluid margin-vert--lg",children:(0,m.jsxs)("div",{className:(0,i.A)("row",d.mdxPageWrapper),children:[(0,m.jsxs)("div",{className:(0,i.A)("col",!p&&"col--8"),children:[v&&(0,m.jsx)(o.A,{}),(0,m.jsx)("article",{children:(0,m.jsx)(r.A,{children:(0,m.jsx)(n,{})})})]}),!p&&n.toc.length>0&&(0,m.jsx)("div",{className:"col col--2",children:(0,m.jsx)(c.A,{toc:n.toc,minHeadingLevel:f.toc_min_heading_level,maxHeadingLevel:f.toc_max_heading_level})})]})})]})})}},7763:(e,n,t)=>{t.d(n,{A:()=>o});t(6540);var i=t(8215),a=t(5195);const s={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"};var l=t(4848);const r="table-of-contents__link toc-highlight",c="table-of-contents__link--active";function o(e){let{className:n,...t}=e;return(0,l.jsx)("div",{className:(0,i.A)(s.tableOfContents,"thin-scrollbar",n),children:(0,l.jsx)(a.A,{...t,linkClassName:r,linkActiveClassName:c})})}},5195:(e,n,t)=>{t.d(n,{A:()=>h});var i=t(6540),a=t(6342);function s(e){const n=e.map((e=>({...e,parentIndex:-1,children:[]}))),t=Array(7).fill(-1);n.forEach(((e,n)=>{const i=t.slice(2,e.level);e.parentIndex=Math.max(...i),t[e.level]=n}));const i=[];return n.forEach((e=>{const{parentIndex:t,...a}=e;t>=0?n[t].children.push(a):i.push(a)})),i}function l(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:i}=e;return n.flatMap((e=>{const n=l({toc:e.children,minHeadingLevel:t,maxHeadingLevel:i});return function(e){return e.level>=t&&e.level<=i}(e)?[{...e,children:n}]:n}))}function r(e){const n=e.getBoundingClientRect();return n.top===n.bottom?r(e.parentNode):n}function c(e,n){let{anchorTopOffset:t}=n;const i=e.find((e=>r(e).top>=t));if(i){return function(e){return e.top>0&&e.bottom{e.current=n?0:document.querySelector(".navbar").clientHeight}),[n]),e}function d(e){const n=(0,i.useRef)(void 0),t=o();(0,i.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:i,linkActiveClassName:a,minHeadingLevel:s,maxHeadingLevel:l}=e;function r(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(i),r=function(e){let{minHeadingLevel:n,maxHeadingLevel:t}=e;const i=[];for(let a=n;a<=t;a+=1)i.push(`h${a}.anchor`);return Array.from(document.querySelectorAll(i.join()))}({minHeadingLevel:s,maxHeadingLevel:l}),o=c(r,{anchorTopOffset:t.current}),d=e.find((e=>o&&o.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(a),e.classList.add(a),n.current=e):e.classList.remove(a)}(e,e===d)}))}return document.addEventListener("scroll",r),document.addEventListener("resize",r),r(),()=>{document.removeEventListener("scroll",r),document.removeEventListener("resize",r)}}),[e,t])}var m=t(8774),u=t(4848);function f(e){let{toc:n,className:t,linkClassName:i,isChild:a}=e;return n.length?(0,u.jsx)("ul",{className:a?void 0:t,children:n.map((e=>(0,u.jsxs)("li",{children:[(0,u.jsx)(m.A,{to:`#${e.id}`,className:i??void 0,dangerouslySetInnerHTML:{__html:e.value}}),(0,u.jsx)(f,{isChild:!0,toc:e.children,className:t,linkClassName:i})]},e.id)))}):null}const v=i.memo(f);function h(e){let{toc:n,className:t="table-of-contents table-of-contents__left-border",linkClassName:r="table-of-contents__link",linkActiveClassName:c,minHeadingLevel:o,maxHeadingLevel:m,...f}=e;const h=(0,a.p)(),g=o??h.tableOfContents.minHeadingLevel,x=m??h.tableOfContents.maxHeadingLevel,p=function(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:a}=e;return(0,i.useMemo)((()=>l({toc:s(n),minHeadingLevel:t,maxHeadingLevel:a})),[n,t,a])}({toc:n,minHeadingLevel:g,maxHeadingLevel:x});return d((0,i.useMemo)((()=>{if(r&&c)return{linkClassName:r,linkActiveClassName:c,minHeadingLevel:g,maxHeadingLevel:x}}),[r,c,g,x])),(0,u.jsx)(v,{toc:p,className:t,linkClassName:r,...f})}},996:(e,n,t)=>{t.d(n,{A:()=>f});t(6540);var i=t(8215),a=t(1312),s=t(5260),l=t(4848);function r(){return(0,l.jsx)(a.A,{id:"theme.unlistedContent.title",description:"The unlisted content banner title",children:"Unlisted page"})}function c(){return(0,l.jsx)(a.A,{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 o(){return(0,l.jsx)(s.A,{children:(0,l.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}var d=t(7559),m=t(7293);function u(e){let{className:n}=e;return(0,l.jsx)(m.A,{type:"caution",title:(0,l.jsx)(r,{}),className:(0,i.A)(n,d.G.common.unlistedBanner),children:(0,l.jsx)(c,{})})}function f(e){return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(o,{}),(0,l.jsx)(u,{...e})]})}}}]); \ No newline at end of file diff --git a/assets/js/2237.828ae68e.js b/assets/js/2237.30f974a5.js similarity index 79% rename from assets/js/2237.828ae68e.js rename to assets/js/2237.30f974a5.js index 771b92e..3d7102b 100644 --- a/assets/js/2237.828ae68e.js +++ b/assets/js/2237.30f974a5.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[2237],{3363:(e,t,i)=>{i.d(t,{A:()=>a});i(6540);var n=i(8215),s=i(1312),o=i(1107),r=i(4848);function a(e){let{className:t}=e;return(0,r.jsx)("main",{className:(0,n.A)("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)(o.A,{as:"h1",className:"hero__title",children:(0,r.jsx)(s.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,r.jsx)("p",{children:(0,r.jsx)(s.A,{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)(s.A,{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."})})]})})})}},2237:(e,t,i)=>{i.r(t),i.d(t,{default:()=>l});i(6540);var n=i(1312),s=i(1003),o=i(781),r=i(3363),a=i(4848);function l(){const e=(0,n.T)({id:"theme.NotFound.title",message:"Page Not Found"});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(s.be,{title:e}),(0,a.jsx)(o.A,{children:(0,a.jsx)(r.A,{})})]})}}}]); \ No newline at end of file +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[2237],{3363:(e,t,i)=>{i.d(t,{A:()=>a});i(6540);var n=i(8215),s=i(1312),o=i(1107),r=i(4848);function a(e){let{className:t}=e;return(0,r.jsx)("main",{className:(0,n.A)("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)(o.A,{as:"h1",className:"hero__title",children:(0,r.jsx)(s.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,r.jsx)("p",{children:(0,r.jsx)(s.A,{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)(s.A,{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."})})]})})})}},2237:(e,t,i)=>{i.r(t),i.d(t,{default:()=>l});i(6540);var n=i(1312),s=i(1003),o=i(8789),r=i(3363),a=i(4848);function l(){const e=(0,n.T)({id:"theme.NotFound.title",message:"Page Not Found"});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(s.be,{title:e}),(0,a.jsx)(o.A,{children:(0,a.jsx)(r.A,{})})]})}}}]); \ No newline at end of file diff --git a/assets/js/2733.cd7e52b8.js b/assets/js/5923.284d5197.js similarity index 97% rename from assets/js/2733.cd7e52b8.js rename to assets/js/5923.284d5197.js index a1b8312..14ba1df 100644 --- a/assets/js/2733.cd7e52b8.js +++ b/assets/js/5923.284d5197.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[2733],{3914:(n,t,a)=>{function e(n,t){var a=Object.keys(n);if(Object.getOwnPropertySymbols){var e=Object.getOwnPropertySymbols(n);t&&(e=e.filter((function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),a.push.apply(a,e)}return a}function r(n){for(var t=1;tn.length)&&(t=n.length);for(var a=0,e=new Array(t);aIa});var m=function(){},d={},b={},p=null,v={mark:m,measure:m};try{"undefined"!=typeof window&&(d=window),"undefined"!=typeof document&&(b=document),"undefined"!=typeof MutationObserver&&(p=MutationObserver),"undefined"!=typeof performance&&(v=performance)}catch(Ra){}var g,h,y,k,w,x=(d.navigator||{}).userAgent,O=void 0===x?"":x,A=d,N=b,P=p,j=v,C=(A.document,!!N.documentElement&&!!N.head&&"function"==typeof N.addEventListener&&"function"==typeof N.createElement),S=~O.indexOf("MSIE")||~O.indexOf("Trident/"),z="___FONT_AWESOME___",E=16,M="fa",I="svg-inline--fa",L="data-fa-i2svg",R="data-fa-pseudo-element",Y="data-fa-pseudo-element-pending",T="data-prefix",D="data-icon",F="fontawesome-i2svg",H="async",W=["HTML","HEAD","STYLE","SCRIPT"],U=function(){try{return!0}catch(Ra){return!1}}(),V="classic",_="sharp",X=[V,_];function B(n){return new Proxy(n,{get:function(n,t){return t in n?n[t]:n[V]}})}var q=B((s(g={},V,{fa:"solid",fas:"solid","fa-solid":"solid",far:"regular","fa-regular":"regular",fal:"light","fa-light":"light",fat:"thin","fa-thin":"thin",fad:"duotone","fa-duotone":"duotone",fab:"brands","fa-brands":"brands",fak:"kit","fa-kit":"kit"}),s(g,_,{fa:"solid",fass:"solid","fa-solid":"solid"}),g)),G=B((s(h={},V,{solid:"fas",regular:"far",light:"fal",thin:"fat",duotone:"fad",brands:"fab",kit:"fak"}),s(h,_,{solid:"fass"}),h)),K=B((s(y={},V,{fab:"fa-brands",fad:"fa-duotone",fak:"fa-kit",fal:"fa-light",far:"fa-regular",fas:"fa-solid",fat:"fa-thin"}),s(y,_,{fass:"fa-solid"}),y)),Z=B((s(k={},V,{"fa-brands":"fab","fa-duotone":"fad","fa-kit":"fak","fa-light":"fal","fa-regular":"far","fa-solid":"fas","fa-thin":"fat"}),s(k,_,{"fa-solid":"fass"}),k)),J=/fa(s|r|l|t|d|b|k|ss)?[\-\ ]/,$="fa-layers-text",Q=/Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp|Kit)?.*/i,nn=B((s(w={},V,{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"}),s(w,_,{900:"fass"}),w)),tn=[1,2,3,4,5,6,7,8,9,10],an=tn.concat([11,12,13,14,15,16,17,18,19,20]),en=["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"],rn={GROUP:"duotone-group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},on=new Set;Object.keys(G[V]).map(on.add.bind(on)),Object.keys(G[_]).map(on.add.bind(on));var sn=[].concat(X,f(on),["2xs","xs","sm","lg","xl","2xl","beat","border","fade","beat-fade","bounce","flip-both","flip-horizontal","flip-vertical","flip","fw","inverse","layers-counter","layers-text","layers","li","pull-left","pull-right","pulse","rotate-180","rotate-270","rotate-90","rotate-by","shake","spin-pulse","spin-reverse","spin","stack-1x","stack-2x","stack","ul",rn.GROUP,rn.SWAP_OPACITY,rn.PRIMARY,rn.SECONDARY]).concat(tn.map((function(n){return"".concat(n,"x")}))).concat(an.map((function(n){return"w-".concat(n)}))),cn=A.FontAwesomeConfig||{};if(N&&"function"==typeof N.querySelector){[["data-family-prefix","familyPrefix"],["data-css-prefix","cssPrefix"],["data-family-default","familyDefault"],["data-style-default","styleDefault"],["data-replacement-class","replacementClass"],["data-auto-replace-svg","autoReplaceSvg"],["data-auto-add-css","autoAddCss"],["data-auto-a11y","autoA11y"],["data-search-pseudo-elements","searchPseudoElements"],["data-observe-mutations","observeMutations"],["data-mutate-approach","mutateApproach"],["data-keep-original-source","keepOriginalSource"],["data-measure-performance","measurePerformance"],["data-show-missing-icons","showMissingIcons"]].forEach((function(n){var t=c(n,2),a=t[0],e=t[1],r=function(n){return""===n||"false"!==n&&("true"===n||n)}(function(n){var t=N.querySelector("script["+n+"]");if(t)return t.getAttribute(n)}(a));null!=r&&(cn[e]=r)}))}var fn={styleDefault:"solid",familyDefault:"classic",cssPrefix:M,replacementClass:I,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0};cn.familyPrefix&&(cn.cssPrefix=cn.familyPrefix);var ln=r(r({},fn),cn);ln.autoReplaceSvg||(ln.observeMutations=!1);var un={};Object.keys(fn).forEach((function(n){Object.defineProperty(un,n,{enumerable:!0,set:function(t){ln[n]=t,mn.forEach((function(n){return n(un)}))},get:function(){return ln[n]}})})),Object.defineProperty(un,"familyPrefix",{enumerable:!0,set:function(n){ln.cssPrefix=n,mn.forEach((function(n){return n(un)}))},get:function(){return ln.cssPrefix}}),A.FontAwesomeConfig=un;var mn=[];var dn=E,bn={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};var pn="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function vn(){for(var n=12,t="";n-- >0;)t+=pn[62*Math.random()|0];return t}function gn(n){for(var t=[],a=(n||[]).length>>>0;a--;)t[a]=n[a];return t}function hn(n){return n.classList?gn(n.classList):(n.getAttribute("class")||"").split(" ").filter((function(n){return n}))}function yn(n){return"".concat(n).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function kn(n){return Object.keys(n||{}).reduce((function(t,a){return t+"".concat(a,": ").concat(n[a].trim(),";")}),"")}function wn(n){return n.size!==bn.size||n.x!==bn.x||n.y!==bn.y||n.rotate!==bn.rotate||n.flipX||n.flipY}var xn=':root, :host {\n --fa-font-solid: normal 900 1em/1 "Font Awesome 6 Solid";\n --fa-font-regular: normal 400 1em/1 "Font Awesome 6 Regular";\n --fa-font-light: normal 300 1em/1 "Font Awesome 6 Light";\n --fa-font-thin: normal 100 1em/1 "Font Awesome 6 Thin";\n --fa-font-duotone: normal 900 1em/1 "Font Awesome 6 Duotone";\n --fa-font-sharp-solid: normal 900 1em/1 "Font Awesome 6 Sharp";\n --fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands";\n}\n\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\n overflow: visible;\n box-sizing: content-box;\n}\n\n.svg-inline--fa {\n display: var(--fa-display, inline-block);\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n}\n.svg-inline--fa.fa-2xs {\n vertical-align: 0.1em;\n}\n.svg-inline--fa.fa-xs {\n vertical-align: 0em;\n}\n.svg-inline--fa.fa-sm {\n vertical-align: -0.0714285705em;\n}\n.svg-inline--fa.fa-lg {\n vertical-align: -0.2em;\n}\n.svg-inline--fa.fa-xl {\n vertical-align: -0.25em;\n}\n.svg-inline--fa.fa-2xl {\n vertical-align: -0.3125em;\n}\n.svg-inline--fa.fa-pull-left {\n margin-right: var(--fa-pull-margin, 0.3em);\n width: auto;\n}\n.svg-inline--fa.fa-pull-right {\n margin-left: var(--fa-pull-margin, 0.3em);\n width: auto;\n}\n.svg-inline--fa.fa-li {\n width: var(--fa-li-width, 2em);\n top: 0.25em;\n}\n.svg-inline--fa.fa-fw {\n width: var(--fa-fw-width, 1.25em);\n}\n\n.fa-layers svg.svg-inline--fa {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.fa-layers-counter, .fa-layers-text {\n display: inline-block;\n position: absolute;\n text-align: center;\n}\n\n.fa-layers {\n display: inline-block;\n height: 1em;\n position: relative;\n text-align: center;\n vertical-align: -0.125em;\n width: 1em;\n}\n.fa-layers svg.svg-inline--fa {\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-text {\n left: 50%;\n top: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter {\n background-color: var(--fa-counter-background-color, #ff253a);\n border-radius: var(--fa-counter-border-radius, 1em);\n box-sizing: border-box;\n color: var(--fa-inverse, #fff);\n line-height: var(--fa-counter-line-height, 1);\n max-width: var(--fa-counter-max-width, 5em);\n min-width: var(--fa-counter-min-width, 1.5em);\n overflow: hidden;\n padding: var(--fa-counter-padding, 0.25em 0.5em);\n right: var(--fa-right, 0);\n text-overflow: ellipsis;\n top: var(--fa-top, 0);\n -webkit-transform: scale(var(--fa-counter-scale, 0.25));\n transform: scale(var(--fa-counter-scale, 0.25));\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-bottom-right {\n bottom: var(--fa-bottom, 0);\n right: var(--fa-right, 0);\n top: auto;\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: bottom right;\n transform-origin: bottom right;\n}\n\n.fa-layers-bottom-left {\n bottom: var(--fa-bottom, 0);\n left: var(--fa-left, 0);\n right: auto;\n top: auto;\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: bottom left;\n transform-origin: bottom left;\n}\n\n.fa-layers-top-right {\n top: var(--fa-top, 0);\n right: var(--fa-right, 0);\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-top-left {\n left: var(--fa-left, 0);\n right: auto;\n top: var(--fa-top, 0);\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: top left;\n transform-origin: top left;\n}\n\n.fa-1x {\n font-size: 1em;\n}\n\n.fa-2x {\n font-size: 2em;\n}\n\n.fa-3x {\n font-size: 3em;\n}\n\n.fa-4x {\n font-size: 4em;\n}\n\n.fa-5x {\n font-size: 5em;\n}\n\n.fa-6x {\n font-size: 6em;\n}\n\n.fa-7x {\n font-size: 7em;\n}\n\n.fa-8x {\n font-size: 8em;\n}\n\n.fa-9x {\n font-size: 9em;\n}\n\n.fa-10x {\n font-size: 10em;\n}\n\n.fa-2xs {\n font-size: 0.625em;\n line-height: 0.1em;\n vertical-align: 0.225em;\n}\n\n.fa-xs {\n font-size: 0.75em;\n line-height: 0.0833333337em;\n vertical-align: 0.125em;\n}\n\n.fa-sm {\n font-size: 0.875em;\n line-height: 0.0714285718em;\n vertical-align: 0.0535714295em;\n}\n\n.fa-lg {\n font-size: 1.25em;\n line-height: 0.05em;\n vertical-align: -0.075em;\n}\n\n.fa-xl {\n font-size: 1.5em;\n line-height: 0.0416666682em;\n vertical-align: -0.125em;\n}\n\n.fa-2xl {\n font-size: 2em;\n line-height: 0.03125em;\n vertical-align: -0.1875em;\n}\n\n.fa-fw {\n text-align: center;\n width: 1.25em;\n}\n\n.fa-ul {\n list-style-type: none;\n margin-left: var(--fa-li-margin, 2.5em);\n padding-left: 0;\n}\n.fa-ul > li {\n position: relative;\n}\n\n.fa-li {\n left: calc(var(--fa-li-width, 2em) * -1);\n position: absolute;\n text-align: center;\n width: var(--fa-li-width, 2em);\n line-height: inherit;\n}\n\n.fa-border {\n border-color: var(--fa-border-color, #eee);\n border-radius: var(--fa-border-radius, 0.1em);\n border-style: var(--fa-border-style, solid);\n border-width: var(--fa-border-width, 0.08em);\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\n}\n\n.fa-pull-left {\n float: left;\n margin-right: var(--fa-pull-margin, 0.3em);\n}\n\n.fa-pull-right {\n float: right;\n margin-left: var(--fa-pull-margin, 0.3em);\n}\n\n.fa-beat {\n -webkit-animation-name: fa-beat;\n animation-name: fa-beat;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\n}\n\n.fa-bounce {\n -webkit-animation-name: fa-bounce;\n animation-name: fa-bounce;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\n}\n\n.fa-fade {\n -webkit-animation-name: fa-fade;\n animation-name: fa-fade;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n}\n\n.fa-beat-fade {\n -webkit-animation-name: fa-beat-fade;\n animation-name: fa-beat-fade;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n}\n\n.fa-flip {\n -webkit-animation-name: fa-flip;\n animation-name: fa-flip;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\n}\n\n.fa-shake {\n -webkit-animation-name: fa-shake;\n animation-name: fa-shake;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\n animation-timing-function: var(--fa-animation-timing, linear);\n}\n\n.fa-spin {\n -webkit-animation-name: fa-spin;\n animation-name: fa-spin;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 2s);\n animation-duration: var(--fa-animation-duration, 2s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\n animation-timing-function: var(--fa-animation-timing, linear);\n}\n\n.fa-spin-reverse {\n --fa-animation-direction: reverse;\n}\n\n.fa-pulse,\n.fa-spin-pulse {\n -webkit-animation-name: fa-spin;\n animation-name: fa-spin;\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));\n animation-timing-function: var(--fa-animation-timing, steps(8));\n}\n\n@media (prefers-reduced-motion: reduce) {\n .fa-beat,\n.fa-bounce,\n.fa-fade,\n.fa-beat-fade,\n.fa-flip,\n.fa-pulse,\n.fa-shake,\n.fa-spin,\n.fa-spin-pulse {\n -webkit-animation-delay: -1ms;\n animation-delay: -1ms;\n -webkit-animation-duration: 1ms;\n animation-duration: 1ms;\n -webkit-animation-iteration-count: 1;\n animation-iteration-count: 1;\n transition-delay: 0s;\n transition-duration: 0s;\n }\n}\n@-webkit-keyframes fa-beat {\n 0%, 90% {\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 45% {\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\n transform: scale(var(--fa-beat-scale, 1.25));\n }\n}\n@keyframes fa-beat {\n 0%, 90% {\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 45% {\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\n transform: scale(var(--fa-beat-scale, 1.25));\n }\n}\n@-webkit-keyframes fa-bounce {\n 0% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 10% {\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n }\n 30% {\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n }\n 50% {\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n }\n 57% {\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n }\n 64% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 100% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n}\n@keyframes fa-bounce {\n 0% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 10% {\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n }\n 30% {\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n }\n 50% {\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n }\n 57% {\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n }\n 64% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 100% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n}\n@-webkit-keyframes fa-fade {\n 50% {\n opacity: var(--fa-fade-opacity, 0.4);\n }\n}\n@keyframes fa-fade {\n 50% {\n opacity: var(--fa-fade-opacity, 0.4);\n }\n}\n@-webkit-keyframes fa-beat-fade {\n 0%, 100% {\n opacity: var(--fa-beat-fade-opacity, 0.4);\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 50% {\n opacity: 1;\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\n transform: scale(var(--fa-beat-fade-scale, 1.125));\n }\n}\n@keyframes fa-beat-fade {\n 0%, 100% {\n opacity: var(--fa-beat-fade-opacity, 0.4);\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 50% {\n opacity: 1;\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\n transform: scale(var(--fa-beat-fade-scale, 1.125));\n }\n}\n@-webkit-keyframes fa-flip {\n 50% {\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n }\n}\n@keyframes fa-flip {\n 50% {\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n }\n}\n@-webkit-keyframes fa-shake {\n 0% {\n -webkit-transform: rotate(-15deg);\n transform: rotate(-15deg);\n }\n 4% {\n -webkit-transform: rotate(15deg);\n transform: rotate(15deg);\n }\n 8%, 24% {\n -webkit-transform: rotate(-18deg);\n transform: rotate(-18deg);\n }\n 12%, 28% {\n -webkit-transform: rotate(18deg);\n transform: rotate(18deg);\n }\n 16% {\n -webkit-transform: rotate(-22deg);\n transform: rotate(-22deg);\n }\n 20% {\n -webkit-transform: rotate(22deg);\n transform: rotate(22deg);\n }\n 32% {\n -webkit-transform: rotate(-12deg);\n transform: rotate(-12deg);\n }\n 36% {\n -webkit-transform: rotate(12deg);\n transform: rotate(12deg);\n }\n 40%, 100% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n}\n@keyframes fa-shake {\n 0% {\n -webkit-transform: rotate(-15deg);\n transform: rotate(-15deg);\n }\n 4% {\n -webkit-transform: rotate(15deg);\n transform: rotate(15deg);\n }\n 8%, 24% {\n -webkit-transform: rotate(-18deg);\n transform: rotate(-18deg);\n }\n 12%, 28% {\n -webkit-transform: rotate(18deg);\n transform: rotate(18deg);\n }\n 16% {\n -webkit-transform: rotate(-22deg);\n transform: rotate(-22deg);\n }\n 20% {\n -webkit-transform: rotate(22deg);\n transform: rotate(22deg);\n }\n 32% {\n -webkit-transform: rotate(-12deg);\n transform: rotate(-12deg);\n }\n 36% {\n -webkit-transform: rotate(12deg);\n transform: rotate(12deg);\n }\n 40%, 100% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n}\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.fa-rotate-90 {\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1);\n}\n\n.fa-flip-both,\n.fa-flip-horizontal.fa-flip-vertical {\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1);\n}\n\n.fa-rotate-by {\n -webkit-transform: rotate(var(--fa-rotate-angle, none));\n transform: rotate(var(--fa-rotate-angle, none));\n}\n\n.fa-stack {\n display: inline-block;\n vertical-align: middle;\n height: 2em;\n position: relative;\n width: 2.5em;\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n z-index: var(--fa-stack-z-index, auto);\n}\n\n.svg-inline--fa.fa-stack-1x {\n height: 1em;\n width: 1.25em;\n}\n.svg-inline--fa.fa-stack-2x {\n height: 2em;\n width: 2.5em;\n}\n\n.fa-inverse {\n color: var(--fa-inverse, #fff);\n}\n\n.sr-only,\n.fa-sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n.sr-only-focusable:not(:focus),\n.fa-sr-only-focusable:not(:focus) {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n.svg-inline--fa .fa-primary {\n fill: var(--fa-primary-color, currentColor);\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa .fa-secondary {\n fill: var(--fa-secondary-color, currentColor);\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-primary {\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa mask .fa-primary,\n.svg-inline--fa mask .fa-secondary {\n fill: black;\n}\n\n.fad.fa-inverse,\n.fa-duotone.fa-inverse {\n color: var(--fa-inverse, #fff);\n}';function On(){var n=M,t=I,a=un.cssPrefix,e=un.replacementClass,r=xn;if(a!==n||e!==t){var i=new RegExp("\\.".concat(n,"\\-"),"g"),o=new RegExp("\\--".concat(n,"\\-"),"g"),s=new RegExp("\\.".concat(t),"g");r=r.replace(i,".".concat(a,"-")).replace(o,"--".concat(a,"-")).replace(s,".".concat(e))}return r}var An=!1;function Nn(){un.autoAddCss&&!An&&(!function(n){if(n&&C){var t=N.createElement("style");t.setAttribute("type","text/css"),t.innerHTML=n;for(var a=N.head.childNodes,e=null,r=a.length-1;r>-1;r--){var i=a[r],o=(i.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(o)>-1&&(e=i)}N.head.insertBefore(t,e)}}(On()),An=!0)}var Pn={mixout:function(){return{dom:{css:On,insertCss:Nn}}},hooks:function(){return{beforeDOMElementCreation:function(){Nn()},beforeI2svg:function(){Nn()}}}},jn=A||{};jn[z]||(jn[z]={}),jn[z].styles||(jn[z].styles={}),jn[z].hooks||(jn[z].hooks={}),jn[z].shims||(jn[z].shims=[]);var Cn=jn[z],Sn=[],zn=!1;function En(n){var t=n.tag,a=n.attributes,e=void 0===a?{}:a,r=n.children,i=void 0===r?[]:r;return"string"==typeof n?yn(n):"<".concat(t," ").concat(function(n){return Object.keys(n||{}).reduce((function(t,a){return t+"".concat(a,'="').concat(yn(n[a]),'" ')}),"").trim()}(e),">").concat(i.map(En).join(""),"")}function Mn(n,t,a){if(n&&n[t]&&n[t][a])return{prefix:t,iconName:a,icon:n[t][a]}}C&&((zn=(N.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(N.readyState))||N.addEventListener("DOMContentLoaded",(function n(){N.removeEventListener("DOMContentLoaded",n),zn=1,Sn.map((function(n){return n()}))})));var In=function(n,t,a,e){var r,i,o,s=Object.keys(n),c=s.length,f=void 0!==e?function(n,t){return function(a,e,r,i){return n.call(t,a,e,r,i)}}(t,e):t;for(void 0===a?(r=1,o=n[s[0]]):(r=0,o=a);r=55296&&r<=56319&&a2&&void 0!==arguments[2]?arguments[2]:{}).skipHooks,e=void 0!==a&&a,i=Rn(t);"function"!=typeof Cn.hooks.addPack||e?Cn.styles[n]=r(r({},Cn.styles[n]||{}),i):Cn.hooks.addPack(n,Rn(t)),"fas"===n&&Yn("fa",t)}var Tn,Dn,Fn,Hn=Cn.styles,Wn=Cn.shims,Un=(s(Tn={},V,Object.values(K[V])),s(Tn,_,Object.values(K[_])),Tn),Vn=null,_n={},Xn={},Bn={},qn={},Gn={},Kn=(s(Dn={},V,Object.keys(q[V])),s(Dn,_,Object.keys(q[_])),Dn);function Zn(n,t){var a,e=t.split("-"),r=e[0],i=e.slice(1).join("-");return r!==n||""===i||(a=i,~sn.indexOf(a))?null:i}var Jn,$n=function(){var n=function(n){return In(Hn,(function(t,a,e){return t[e]=In(a,n,{}),t}),{})};_n=n((function(n,t,a){(t[3]&&(n[t[3]]=a),t[2])&&t[2].filter((function(n){return"number"==typeof n})).forEach((function(t){n[t.toString(16)]=a}));return n})),Xn=n((function(n,t,a){(n[a]=a,t[2])&&t[2].filter((function(n){return"string"==typeof n})).forEach((function(t){n[t]=a}));return n})),Gn=n((function(n,t,a){var e=t[2];return n[a]=a,e.forEach((function(t){n[t]=a})),n}));var t="far"in Hn||un.autoFetchSvg,a=In(Wn,(function(n,a){var e=a[0],r=a[1],i=a[2];return"far"!==r||t||(r="fas"),"string"==typeof e&&(n.names[e]={prefix:r,iconName:i}),"number"==typeof e&&(n.unicodes[e.toString(16)]={prefix:r,iconName:i}),n}),{names:{},unicodes:{}});Bn=a.names,qn=a.unicodes,Vn=rt(un.styleDefault,{family:un.familyDefault})};function Qn(n,t){return(_n[n]||{})[t]}function nt(n,t){return(Gn[n]||{})[t]}function tt(n){return Bn[n]||{prefix:null,iconName:null}}function at(){return Vn}Jn=function(n){Vn=rt(n.styleDefault,{family:un.familyDefault})},mn.push(Jn),$n();var et=function(){return{prefix:null,iconName:null,rest:[]}};function rt(n){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).family,a=void 0===t?V:t,e=q[a][n],r=G[a][n]||G[a][e],i=n in Cn.styles?n:null;return r||i||null}var it=(s(Fn={},V,Object.keys(K[V])),s(Fn,_,Object.keys(K[_])),Fn);function ot(n){var t,a=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).skipLookups,e=void 0!==a&&a,r=(s(t={},V,"".concat(un.cssPrefix,"-").concat(V)),s(t,_,"".concat(un.cssPrefix,"-").concat(_)),t),i=null,o=V;(n.includes(r[V])||n.some((function(n){return it[V].includes(n)})))&&(o=V),(n.includes(r[_])||n.some((function(n){return it[_].includes(n)})))&&(o=_);var c=n.reduce((function(n,t){var a=Zn(un.cssPrefix,t);if(Hn[t]?(t=Un[o].includes(t)?Z[o][t]:t,i=t,n.prefix=t):Kn[o].indexOf(t)>-1?(i=t,n.prefix=rt(t,{family:o})):a?n.iconName=a:t!==un.replacementClass&&t!==r[V]&&t!==r[_]&&n.rest.push(t),!e&&n.prefix&&n.iconName){var s="fa"===i?tt(n.iconName):{},c=nt(n.prefix,n.iconName);s.prefix&&(i=null),n.iconName=s.iconName||c||n.iconName,n.prefix=s.prefix||n.prefix,"far"!==n.prefix||Hn.far||!Hn.fas||un.autoFetchSvg||(n.prefix="fas")}return n}),et());return(n.includes("fa-brands")||n.includes("fab"))&&(c.prefix="fab"),(n.includes("fa-duotone")||n.includes("fad"))&&(c.prefix="fad"),c.prefix||o!==_||!Hn.fass&&!un.autoFetchSvg||(c.prefix="fass",c.iconName=nt(c.prefix,c.iconName)||c.iconName),"fa"!==c.prefix&&"fa"!==i||(c.prefix=at()||"fas"),c}var st=function(){function n(){!function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),this.definitions={}}var t,a,e;return t=n,a=[{key:"add",value:function(){for(var n=this,t=arguments.length,a=new Array(t),e=0;e0&&s.forEach((function(t){"string"==typeof t&&(n[r][t]=o)})),n[r][i]=o})),n}}],a&&o(t.prototype,a),e&&o(t,e),Object.defineProperty(t,"prototype",{writable:!1}),n}(),ct=[],ft={},lt={},ut=Object.keys(lt);function mt(n,t){for(var a=arguments.length,e=new Array(a>2?a-2:0),r=2;r1?t-1:0),e=1;e0&&void 0!==arguments[0]?arguments[0]:{};return C?(dt("beforeI2svg",n),bt("pseudoElements2svg",n),bt("i2svg",n)):Promise.reject("Operation requires a DOM of some kind.")},watch:function(){var n,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=t.autoReplaceSvgRoot;!1===un.autoReplaceSvg&&(un.autoReplaceSvg=!0),un.observeMutations=!0,n=function(){yt({autoReplaceSvgRoot:a}),dt("watch",t)},C&&(zn?setTimeout(n,0):Sn.push(n))}},ht={noAuto:function(){un.autoReplaceSvg=!1,un.observeMutations=!1,dt("noAuto")},config:un,dom:gt,parse:{icon:function(n){if(null===n)return null;if("object"===i(n)&&n.prefix&&n.iconName)return{prefix:n.prefix,iconName:nt(n.prefix,n.iconName)||n.iconName};if(Array.isArray(n)&&2===n.length){var t=0===n[1].indexOf("fa-")?n[1].slice(3):n[1],a=rt(n[0]);return{prefix:a,iconName:nt(a,t)||t}}if("string"==typeof n&&(n.indexOf("".concat(un.cssPrefix,"-"))>-1||n.match(J))){var e=ot(n.split(" "),{skipLookups:!0});return{prefix:e.prefix||at(),iconName:nt(e.prefix,e.iconName)||e.iconName}}if("string"==typeof n){var r=at();return{prefix:r,iconName:nt(r,n)||n}}}},library:vt,findIconDefinition:pt,toHtml:En},yt=function(){var n=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).autoReplaceSvgRoot,t=void 0===n?N:n;(Object.keys(Cn.styles).length>0||un.autoFetchSvg)&&C&&un.autoReplaceSvg&&ht.dom.i2svg({node:t})};function kt(n,t){return Object.defineProperty(n,"abstract",{get:t}),Object.defineProperty(n,"html",{get:function(){return n.abstract.map((function(n){return En(n)}))}}),Object.defineProperty(n,"node",{get:function(){if(C){var t=N.createElement("div");return t.innerHTML=n.html,t.children}}}),n}function wt(n){var t=n.icons,a=t.main,e=t.mask,i=n.prefix,o=n.iconName,s=n.transform,c=n.symbol,f=n.title,l=n.maskId,u=n.titleId,m=n.extra,d=n.watchable,b=void 0!==d&&d,p=e.found?e:a,v=p.width,g=p.height,h="fak"===i,y=[un.replacementClass,o?"".concat(un.cssPrefix,"-").concat(o):""].filter((function(n){return-1===m.classes.indexOf(n)})).filter((function(n){return""!==n||!!n})).concat(m.classes).join(" "),k={children:[],attributes:r(r({},m.attributes),{},{"data-prefix":i,"data-icon":o,class:y,role:m.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(v," ").concat(g)})},w=h&&!~m.classes.indexOf("fa-fw")?{width:"".concat(v/g*16*.0625,"em")}:{};b&&(k.attributes[L]=""),f&&(k.children.push({tag:"title",attributes:{id:k.attributes["aria-labelledby"]||"title-".concat(u||vn())},children:[f]}),delete k.attributes.title);var x=r(r({},k),{},{prefix:i,iconName:o,main:a,mask:e,maskId:l,transform:s,symbol:c,styles:r(r({},w),m.styles)}),O=e.found&&a.found?bt("generateAbstractMask",x)||{children:[],attributes:{}}:bt("generateAbstractIcon",x)||{children:[],attributes:{}},A=O.children,N=O.attributes;return x.children=A,x.attributes=N,c?function(n){var t=n.prefix,a=n.iconName,e=n.children,i=n.attributes,o=n.symbol,s=!0===o?"".concat(t,"-").concat(un.cssPrefix,"-").concat(a):o;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:r(r({},i),{},{id:s}),children:e}]}]}(x):function(n){var t=n.children,a=n.main,e=n.mask,i=n.attributes,o=n.styles,s=n.transform;if(wn(s)&&a.found&&!e.found){var c={x:a.width/a.height/2,y:.5};i.style=kn(r(r({},o),{},{"transform-origin":"".concat(c.x+s.x/16,"em ").concat(c.y+s.y/16,"em")}))}return[{tag:"svg",attributes:i,children:t}]}(x)}function xt(n){var t=n.content,a=n.width,e=n.height,i=n.transform,o=n.title,s=n.extra,c=n.watchable,f=void 0!==c&&c,l=r(r(r({},s.attributes),o?{title:o}:{}),{},{class:s.classes.join(" ")});f&&(l[L]="");var u=r({},s.styles);wn(i)&&(u.transform=function(n){var t=n.transform,a=n.width,e=void 0===a?E:a,r=n.height,i=void 0===r?E:r,o=n.startCentered,s=void 0!==o&&o,c="";return c+=s&&S?"translate(".concat(t.x/dn-e/2,"em, ").concat(t.y/dn-i/2,"em) "):s?"translate(calc(-50% + ".concat(t.x/dn,"em), calc(-50% + ").concat(t.y/dn,"em)) "):"translate(".concat(t.x/dn,"em, ").concat(t.y/dn,"em) "),c+="scale(".concat(t.size/dn*(t.flipX?-1:1),", ").concat(t.size/dn*(t.flipY?-1:1),") "),c+"rotate(".concat(t.rotate,"deg) ")}({transform:i,startCentered:!0,width:a,height:e}),u["-webkit-transform"]=u.transform);var m=kn(u);m.length>0&&(l.style=m);var d=[];return d.push({tag:"span",attributes:l,children:[t]}),o&&d.push({tag:"span",attributes:{class:"sr-only"},children:[o]}),d}var Ot=Cn.styles;function At(n){var t=n[0],a=n[1],e=c(n.slice(4),1)[0];return{found:!0,width:t,height:a,icon:Array.isArray(e)?{tag:"g",attributes:{class:"".concat(un.cssPrefix,"-").concat(rn.GROUP)},children:[{tag:"path",attributes:{class:"".concat(un.cssPrefix,"-").concat(rn.SECONDARY),fill:"currentColor",d:e[0]}},{tag:"path",attributes:{class:"".concat(un.cssPrefix,"-").concat(rn.PRIMARY),fill:"currentColor",d:e[1]}}]}:{tag:"path",attributes:{fill:"currentColor",d:e}}}}var Nt={found:!1,width:512,height:512};function Pt(n,t){var a=t;return"fa"===t&&null!==un.styleDefault&&(t=at()),new Promise((function(e,i){bt("missingIconAbstract");if("fa"===a){var o=tt(n)||{};n=o.iconName||n,t=o.prefix||t}if(n&&t&&Ot[t]&&Ot[t][n])return e(At(Ot[t][n]));!function(n,t){U||un.showMissingIcons||!n||console.error('Icon with name "'.concat(n,'" and prefix "').concat(t,'" is missing.'))}(n,t),e(r(r({},Nt),{},{icon:un.showMissingIcons&&n&&bt("missingIconAbstract")||{}}))}))}var jt=function(){},Ct=un.measurePerformance&&j&&j.mark&&j.measure?j:{mark:jt,measure:jt},St='FA "6.2.0"',zt=function(n){Ct.mark("".concat(St," ").concat(n," ends")),Ct.measure("".concat(St," ").concat(n),"".concat(St," ").concat(n," begins"),"".concat(St," ").concat(n," ends"))},Et={begin:function(n){return Ct.mark("".concat(St," ").concat(n," begins")),function(){return zt(n)}},end:zt},Mt=function(){};function It(n){return"string"==typeof(n.getAttribute?n.getAttribute(L):null)}function Lt(n){return N.createElementNS("http://www.w3.org/2000/svg",n)}function Rt(n){return N.createElement(n)}function Yt(n){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).ceFn,a=void 0===t?"svg"===n.tag?Lt:Rt:t;if("string"==typeof n)return N.createTextNode(n);var e=a(n.tag);return Object.keys(n.attributes||[]).forEach((function(t){e.setAttribute(t,n.attributes[t])})),(n.children||[]).forEach((function(n){e.appendChild(Yt(n,{ceFn:a}))})),e}var Tt={replace:function(n){var t=n[0];if(t.parentNode)if(n[1].forEach((function(n){t.parentNode.insertBefore(Yt(n),t)})),null===t.getAttribute(L)&&un.keepOriginalSource){var a=N.createComment(function(n){var t=" ".concat(n.outerHTML," ");return"".concat(t,"Font Awesome fontawesome.com ")}(t));t.parentNode.replaceChild(a,t)}else t.remove()},nest:function(n){var t=n[0],a=n[1];if(~hn(t).indexOf(un.replacementClass))return Tt.replace(n);var e=new RegExp("".concat(un.cssPrefix,"-.*"));if(delete a[0].attributes.id,a[0].attributes.class){var r=a[0].attributes.class.split(" ").reduce((function(n,t){return t===un.replacementClass||t.match(e)?n.toSvg.push(t):n.toNode.push(t),n}),{toNode:[],toSvg:[]});a[0].attributes.class=r.toSvg.join(" "),0===r.toNode.length?t.removeAttribute("class"):t.setAttribute("class",r.toNode.join(" "))}var i=a.map((function(n){return En(n)})).join("\n");t.setAttribute(L,""),t.innerHTML=i}};function Dt(n){n()}function Ft(n,t){var a="function"==typeof t?t:Mt;if(0===n.length)a();else{var e=Dt;un.mutateApproach===H&&(e=A.requestAnimationFrame||Dt),e((function(){var t=!0===un.autoReplaceSvg?Tt.replace:Tt[un.autoReplaceSvg]||Tt.replace,e=Et.begin("mutate");n.map(t),e(),a()}))}}var Ht=!1;function Wt(){Ht=!0}function Ut(){Ht=!1}var Vt=null;function _t(n){if(P&&un.observeMutations){var t=n.treeCallback,a=void 0===t?Mt:t,e=n.nodeCallback,r=void 0===e?Mt:e,i=n.pseudoElementsCallback,o=void 0===i?Mt:i,s=n.observeMutationsRoot,c=void 0===s?N:s;Vt=new P((function(n){if(!Ht){var t=at();gn(n).forEach((function(n){if("childList"===n.type&&n.addedNodes.length>0&&!It(n.addedNodes[0])&&(un.searchPseudoElements&&o(n.target),a(n.target)),"attributes"===n.type&&n.target.parentNode&&un.searchPseudoElements&&o(n.target.parentNode),"attributes"===n.type&&It(n.target)&&~en.indexOf(n.attributeName))if("class"===n.attributeName&&function(n){var t=n.getAttribute?n.getAttribute(T):null,a=n.getAttribute?n.getAttribute(D):null;return t&&a}(n.target)){var e=ot(hn(n.target)),i=e.prefix,s=e.iconName;n.target.setAttribute(T,i||t),s&&n.target.setAttribute(D,s)}else(c=n.target)&&c.classList&&c.classList.contains&&c.classList.contains(un.replacementClass)&&r(n.target);var c}))}})),C&&Vt.observe(c,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}}function Xt(n){var t,a,e=n.getAttribute("data-prefix"),r=n.getAttribute("data-icon"),i=void 0!==n.innerText?n.innerText.trim():"",o=ot(hn(n));return o.prefix||(o.prefix=at()),e&&r&&(o.prefix=e,o.iconName=r),o.iconName&&o.prefix||(o.prefix&&i.length>0&&(o.iconName=(t=o.prefix,a=n.innerText,(Xn[t]||{})[a]||Qn(o.prefix,Ln(n.innerText)))),!o.iconName&&un.autoFetchSvg&&n.firstChild&&n.firstChild.nodeType===Node.TEXT_NODE&&(o.iconName=n.firstChild.data)),o}function Bt(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{styleParser:!0},a=Xt(n),e=a.iconName,i=a.prefix,o=a.rest,s=function(n){var t=gn(n.attributes).reduce((function(n,t){return"class"!==n.name&&"style"!==n.name&&(n[t.name]=t.value),n}),{}),a=n.getAttribute("title"),e=n.getAttribute("data-fa-title-id");return un.autoA11y&&(a?t["aria-labelledby"]="".concat(un.replacementClass,"-title-").concat(e||vn()):(t["aria-hidden"]="true",t.focusable="false")),t}(n),c=mt("parseNodeAttributes",{},n),f=t.styleParser?function(n){var t=n.getAttribute("style"),a=[];return t&&(a=t.split(";").reduce((function(n,t){var a=t.split(":"),e=a[0],r=a.slice(1);return e&&r.length>0&&(n[e]=r.join(":").trim()),n}),{})),a}(n):[];return r({iconName:e,title:n.getAttribute("title"),titleId:n.getAttribute("data-fa-title-id"),prefix:i,transform:bn,mask:{iconName:null,prefix:null,rest:[]},maskId:null,symbol:!1,extra:{classes:o,styles:f,attributes:s}},c)}var qt=Cn.styles;function Gt(n){var t="nest"===un.autoReplaceSvg?Bt(n,{styleParser:!1}):Bt(n);return~t.extra.classes.indexOf($)?bt("generateLayersText",n,t):bt("generateSvgReplacementMutation",n,t)}var Kt=new Set;function Zt(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!C)return Promise.resolve();var a=N.documentElement.classList,e=function(n){return a.add("".concat(F,"-").concat(n))},r=function(n){return a.remove("".concat(F,"-").concat(n))},i=un.autoFetchSvg?Kt:X.map((function(n){return"fa-".concat(n)})).concat(Object.keys(qt));i.includes("fa")||i.push("fa");var o=[".".concat($,":not([").concat(L,"])")].concat(i.map((function(n){return".".concat(n,":not([").concat(L,"])")}))).join(", ");if(0===o.length)return Promise.resolve();var s=[];try{s=gn(n.querySelectorAll(o))}catch(Ra){}if(!(s.length>0))return Promise.resolve();e("pending"),r("complete");var c=Et.begin("onTree"),f=s.reduce((function(n,t){try{var a=Gt(t);a&&n.push(a)}catch(Ra){U||"MissingIcon"===Ra.name&&console.error(Ra)}return n}),[]);return new Promise((function(n,a){Promise.all(f).then((function(a){Ft(a,(function(){e("active"),e("complete"),r("pending"),"function"==typeof t&&t(),c(),n()}))})).catch((function(n){c(),a(n)}))}))}function Jt(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;Gt(n).then((function(n){n&&Ft([n],t)}))}X.map((function(n){Kt.add("fa-".concat(n))})),Object.keys(q[V]).map(Kt.add.bind(Kt)),Object.keys(q[_]).map(Kt.add.bind(Kt)),Kt=f(Kt);var $t=function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=t.transform,e=void 0===a?bn:a,i=t.symbol,o=void 0!==i&&i,s=t.mask,c=void 0===s?null:s,f=t.maskId,l=void 0===f?null:f,u=t.title,m=void 0===u?null:u,d=t.titleId,b=void 0===d?null:d,p=t.classes,v=void 0===p?[]:p,g=t.attributes,h=void 0===g?{}:g,y=t.styles,k=void 0===y?{}:y;if(n){var w=n.prefix,x=n.iconName,O=n.icon;return kt(r({type:"icon"},n),(function(){return dt("beforeDOMElementCreation",{iconDefinition:n,params:t}),un.autoA11y&&(m?h["aria-labelledby"]="".concat(un.replacementClass,"-title-").concat(b||vn()):(h["aria-hidden"]="true",h.focusable="false")),wt({icons:{main:At(O),mask:c?At(c.icon):{found:!1,width:null,height:null,icon:{}}},prefix:w,iconName:x,transform:r(r({},bn),e),symbol:o,title:m,maskId:l,titleId:b,extra:{attributes:h,styles:k,classes:v}})}))}},Qt={mixout:function(){return{icon:(n=$t,function(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=(t||{}).icon?t:pt(t||{}),i=a.mask;return i&&(i=(i||{}).icon?i:pt(i||{})),n(e,r(r({},a),{},{mask:i}))})};var n},hooks:function(){return{mutationObserverCallbacks:function(n){return n.treeCallback=Zt,n.nodeCallback=Jt,n}}},provides:function(n){n.i2svg=function(n){var t=n.node,a=void 0===t?N:t,e=n.callback;return Zt(a,void 0===e?function(){}:e)},n.generateSvgReplacementMutation=function(n,t){var a=t.iconName,e=t.title,r=t.titleId,i=t.prefix,o=t.transform,s=t.symbol,f=t.mask,l=t.maskId,u=t.extra;return new Promise((function(t,m){Promise.all([Pt(a,i),f.iconName?Pt(f.iconName,f.prefix):Promise.resolve({found:!1,width:512,height:512,icon:{}})]).then((function(f){var m=c(f,2),d=m[0],b=m[1];t([n,wt({icons:{main:d,mask:b},prefix:i,iconName:a,transform:o,symbol:s,maskId:l,title:e,titleId:r,extra:u,watchable:!0})])})).catch(m)}))},n.generateAbstractIcon=function(n){var t,a=n.children,e=n.attributes,r=n.main,i=n.transform,o=kn(n.styles);return o.length>0&&(e.style=o),wn(i)&&(t=bt("generateAbstractTransformGrouping",{main:r,transform:i,containerWidth:r.width,iconWidth:r.width})),a.push(t||r.icon),{children:a,attributes:e}}}},na={mixout:function(){return{layer:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=t.classes,e=void 0===a?[]:a;return kt({type:"layer"},(function(){dt("beforeDOMElementCreation",{assembler:n,params:t});var a=[];return n((function(n){Array.isArray(n)?n.map((function(n){a=a.concat(n.abstract)})):a=a.concat(n.abstract)})),[{tag:"span",attributes:{class:["".concat(un.cssPrefix,"-layers")].concat(f(e)).join(" ")},children:a}]}))}}}},ta={mixout:function(){return{counter:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=t.title,e=void 0===a?null:a,i=t.classes,o=void 0===i?[]:i,s=t.attributes,c=void 0===s?{}:s,l=t.styles,u=void 0===l?{}:l;return kt({type:"counter",content:n},(function(){return dt("beforeDOMElementCreation",{content:n,params:t}),function(n){var t=n.content,a=n.title,e=n.extra,i=r(r(r({},e.attributes),a?{title:a}:{}),{},{class:e.classes.join(" ")}),o=kn(e.styles);o.length>0&&(i.style=o);var s=[];return s.push({tag:"span",attributes:i,children:[t]}),a&&s.push({tag:"span",attributes:{class:"sr-only"},children:[a]}),s}({content:n.toString(),title:e,extra:{attributes:c,styles:u,classes:["".concat(un.cssPrefix,"-layers-counter")].concat(f(o))}})}))}}}},aa={mixout:function(){return{text:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=t.transform,e=void 0===a?bn:a,i=t.title,o=void 0===i?null:i,s=t.classes,c=void 0===s?[]:s,l=t.attributes,u=void 0===l?{}:l,m=t.styles,d=void 0===m?{}:m;return kt({type:"text",content:n},(function(){return dt("beforeDOMElementCreation",{content:n,params:t}),xt({content:n,transform:r(r({},bn),e),title:o,extra:{attributes:u,styles:d,classes:["".concat(un.cssPrefix,"-layers-text")].concat(f(c))}})}))}}},provides:function(n){n.generateLayersText=function(n,t){var a=t.title,e=t.transform,r=t.extra,i=null,o=null;if(S){var s=parseInt(getComputedStyle(n).fontSize,10),c=n.getBoundingClientRect();i=c.width/s,o=c.height/s}return un.autoA11y&&!a&&(r.attributes["aria-hidden"]="true"),Promise.resolve([n,xt({content:n.innerHTML,width:i,height:o,transform:e,title:a,extra:r,watchable:!0})])}}},ea=new RegExp('"',"ug"),ra=[1105920,1112319];function ia(n,t){var a="".concat(Y).concat(t.replace(":","-"));return new Promise((function(e,i){if(null!==n.getAttribute(a))return e();var o,s,c,f=gn(n.children).filter((function(n){return n.getAttribute(R)===t}))[0],l=A.getComputedStyle(n,t),u=l.getPropertyValue("font-family").match(Q),m=l.getPropertyValue("font-weight"),d=l.getPropertyValue("content");if(f&&!u)return n.removeChild(f),e();if(u&&"none"!==d&&""!==d){var b=l.getPropertyValue("content"),p=~["Sharp"].indexOf(u[2])?_:V,v=~["Solid","Regular","Light","Thin","Duotone","Brands","Kit"].indexOf(u[2])?G[p][u[2].toLowerCase()]:nn[p][m],g=function(n){var t,a,e,r,i,o=n.replace(ea,""),s=(a=0,r=(t=o).length,(i=t.charCodeAt(a))>=55296&&i<=56319&&r>a+1&&(e=t.charCodeAt(a+1))>=56320&&e<=57343?1024*(i-55296)+e-56320+65536:i),c=s>=ra[0]&&s<=ra[1],f=2===o.length&&o[0]===o[1];return{value:Ln(f?o[0]:o),isSecondary:c||f}}(b),h=g.value,y=g.isSecondary,k=u[0].startsWith("FontAwesome"),w=Qn(v,h),x=w;if(k){var O=(s=qn[o=h],c=Qn("fas",o),s||(c?{prefix:"fas",iconName:c}:null)||{prefix:null,iconName:null});O.iconName&&O.prefix&&(w=O.iconName,v=O.prefix)}if(!w||y||f&&f.getAttribute(T)===v&&f.getAttribute(D)===x)e();else{n.setAttribute(a,x),f&&n.removeChild(f);var P={iconName:null,title:null,titleId:null,prefix:null,transform:bn,symbol:!1,mask:{iconName:null,prefix:null,rest:[]},maskId:null,extra:{classes:[],styles:{},attributes:{}}},j=P.extra;j.attributes[R]=t,Pt(w,v).then((function(i){var o=wt(r(r({},P),{},{icons:{main:i,mask:et()},prefix:v,iconName:x,extra:j,watchable:!0})),s=N.createElement("svg");"::before"===t?n.insertBefore(s,n.firstChild):n.appendChild(s),s.outerHTML=o.map((function(n){return En(n)})).join("\n"),n.removeAttribute(a),e()})).catch(i)}}else e()}))}function oa(n){return Promise.all([ia(n,"::before"),ia(n,"::after")])}function sa(n){return!(n.parentNode===document.head||~W.indexOf(n.tagName.toUpperCase())||n.getAttribute(R)||n.parentNode&&"svg"===n.parentNode.tagName)}function ca(n){if(C)return new Promise((function(t,a){var e=gn(n.querySelectorAll("*")).filter(sa).map(oa),r=Et.begin("searchPseudoElements");Wt(),Promise.all(e).then((function(){r(),Ut(),t()})).catch((function(){r(),Ut(),a()}))}))}var fa=!1,la=function(n){return n.toLowerCase().split(" ").reduce((function(n,t){var a=t.toLowerCase().split("-"),e=a[0],r=a.slice(1).join("-");if(e&&"h"===r)return n.flipX=!0,n;if(e&&"v"===r)return n.flipY=!0,n;if(r=parseFloat(r),isNaN(r))return n;switch(e){case"grow":n.size=n.size+r;break;case"shrink":n.size=n.size-r;break;case"left":n.x=n.x-r;break;case"right":n.x=n.x+r;break;case"up":n.y=n.y-r;break;case"down":n.y=n.y+r;break;case"rotate":n.rotate=n.rotate+r}return n}),{size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0})},ua={mixout:function(){return{parse:{transform:function(n){return la(n)}}}},hooks:function(){return{parseNodeAttributes:function(n,t){var a=t.getAttribute("data-fa-transform");return a&&(n.transform=la(a)),n}}},provides:function(n){n.generateAbstractTransformGrouping=function(n){var t=n.main,a=n.transform,e=n.containerWidth,i=n.iconWidth,o={transform:"translate(".concat(e/2," 256)")},s="translate(".concat(32*a.x,", ").concat(32*a.y,") "),c="scale(".concat(a.size/16*(a.flipX?-1:1),", ").concat(a.size/16*(a.flipY?-1:1),") "),f="rotate(".concat(a.rotate," 0 0)"),l={outer:o,inner:{transform:"".concat(s," ").concat(c," ").concat(f)},path:{transform:"translate(".concat(i/2*-1," -256)")}};return{tag:"g",attributes:r({},l.outer),children:[{tag:"g",attributes:r({},l.inner),children:[{tag:t.icon.tag,children:t.icon.children,attributes:r(r({},t.icon.attributes),l.path)}]}]}}}},ma={x:0,y:0,width:"100%",height:"100%"};function da(n){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return n.attributes&&(n.attributes.fill||t)&&(n.attributes.fill="black"),n}var ba={hooks:function(){return{parseNodeAttributes:function(n,t){var a=t.getAttribute("data-fa-mask"),e=a?ot(a.split(" ").map((function(n){return n.trim()}))):et();return e.prefix||(e.prefix=at()),n.mask=e,n.maskId=t.getAttribute("data-fa-mask-id"),n}}},provides:function(n){n.generateAbstractMask=function(n){var t,a=n.children,e=n.attributes,i=n.main,o=n.mask,s=n.maskId,c=n.transform,f=i.width,l=i.icon,u=o.width,m=o.icon,d=function(n){var t=n.transform,a=n.containerWidth,e=n.iconWidth,r={transform:"translate(".concat(a/2," 256)")},i="translate(".concat(32*t.x,", ").concat(32*t.y,") "),o="scale(".concat(t.size/16*(t.flipX?-1:1),", ").concat(t.size/16*(t.flipY?-1:1),") "),s="rotate(".concat(t.rotate," 0 0)");return{outer:r,inner:{transform:"".concat(i," ").concat(o," ").concat(s)},path:{transform:"translate(".concat(e/2*-1," -256)")}}}({transform:c,containerWidth:u,iconWidth:f}),b={tag:"rect",attributes:r(r({},ma),{},{fill:"white"})},p=l.children?{children:l.children.map(da)}:{},v={tag:"g",attributes:r({},d.inner),children:[da(r({tag:l.tag,attributes:r(r({},l.attributes),d.path)},p))]},g={tag:"g",attributes:r({},d.outer),children:[v]},h="mask-".concat(s||vn()),y="clip-".concat(s||vn()),k={tag:"mask",attributes:r(r({},ma),{},{id:h,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[b,g]},w={tag:"defs",children:[{tag:"clipPath",attributes:{id:y},children:(t=m,"g"===t.tag?t.children:[t])},k]};return a.push(w,{tag:"rect",attributes:r({fill:"currentColor","clip-path":"url(#".concat(y,")"),mask:"url(#".concat(h,")")},ma)}),{children:a,attributes:e}}}},pa={provides:function(n){var t=!1;A.matchMedia&&(t=A.matchMedia("(prefers-reduced-motion: reduce)").matches),n.missingIconAbstract=function(){var n=[],a={fill:"currentColor"},e={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};n.push({tag:"path",attributes:r(r({},a),{},{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})});var i=r(r({},e),{},{attributeName:"opacity"}),o={tag:"circle",attributes:r(r({},a),{},{cx:"256",cy:"364",r:"28"}),children:[]};return t||o.children.push({tag:"animate",attributes:r(r({},e),{},{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:r(r({},i),{},{values:"1;0;1;1;0;1;"})}),n.push(o),n.push({tag:"path",attributes:r(r({},a),{},{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:t?[]:[{tag:"animate",attributes:r(r({},i),{},{values:"1;0;0;0;0;1;"})}]}),t||n.push({tag:"path",attributes:r(r({},a),{},{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:r(r({},i),{},{values:"0;0;1;1;0;0;"})}]}),{tag:"g",attributes:{class:"missing"},children:n}}}};!function(n,t){var a=t.mixoutsTo;ct=n,ft={},Object.keys(lt).forEach((function(n){-1===ut.indexOf(n)&&delete lt[n]})),ct.forEach((function(n){var t=n.mixout?n.mixout():{};if(Object.keys(t).forEach((function(n){"function"==typeof t[n]&&(a[n]=t[n]),"object"===i(t[n])&&Object.keys(t[n]).forEach((function(e){a[n]||(a[n]={}),a[n][e]=t[n][e]}))})),n.hooks){var e=n.hooks();Object.keys(e).forEach((function(n){ft[n]||(ft[n]=[]),ft[n].push(e[n])}))}n.provides&&n.provides(lt)}))}([Pn,Qt,na,ta,aa,{hooks:function(){return{mutationObserverCallbacks:function(n){return n.pseudoElementsCallback=ca,n}}},provides:function(n){n.pseudoElements2svg=function(n){var t=n.node,a=void 0===t?N:t;un.searchPseudoElements&&ca(a)}}},{mixout:function(){return{dom:{unwatch:function(){Wt(),fa=!0}}}},hooks:function(){return{bootstrap:function(){_t(mt("mutationObserverCallbacks",{}))},noAuto:function(){Vt&&Vt.disconnect()},watch:function(n){var t=n.observeMutationsRoot;fa?Ut():_t(mt("mutationObserverCallbacks",{observeMutationsRoot:t}))}}}},ua,ba,pa,{hooks:function(){return{parseNodeAttributes:function(n,t){var a=t.getAttribute("data-fa-symbol"),e=null!==a&&(""===a||a);return n.symbol=e,n}}}}],{mixoutsTo:ht});var va=ht.parse,ga=ht.icon,ha=a(5556),ya=a.n(ha),ka=a(6540);function wa(n,t){var a=Object.keys(n);if(Object.getOwnPropertySymbols){var e=Object.getOwnPropertySymbols(n);t&&(e=e.filter((function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),a.push.apply(a,e)}return a}function xa(n){for(var t=1;t=0||(r[a]=n[a]);return r}(n,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(n);for(e=0;e=0||Object.prototype.propertyIsEnumerable.call(n,a)&&(r[a]=n[a])}return r}function Pa(n){return function(n){if(Array.isArray(n))return ja(n)}(n)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(n)||function(n,t){if(!n)return;if("string"==typeof n)return ja(n,t);var a=Object.prototype.toString.call(n).slice(8,-1);"Object"===a&&n.constructor&&(a=n.constructor.name);if("Map"===a||"Set"===a)return Array.from(n);if("Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a))return ja(n,t)}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ja(n,t){(null==t||t>n.length)&&(t=n.length);for(var a=0,e=new Array(t);a0||!Array.isArray(t)&&t?Aa({},n,t):{}}var Ia=ka.forwardRef((function(n,t){var a=n.icon,e=n.mask,r=n.symbol,i=n.className,o=n.title,s=n.titleId,c=n.maskId,f=Ea(a),l=Ma("classes",[].concat(Pa(function(n){var t,a=n.beat,e=n.fade,r=n.beatFade,i=n.bounce,o=n.shake,s=n.flash,c=n.spin,f=n.spinPulse,l=n.spinReverse,u=n.pulse,m=n.fixedWidth,d=n.inverse,b=n.border,p=n.listItem,v=n.flip,g=n.size,h=n.rotation,y=n.pull,k=(Aa(t={"fa-beat":a,"fa-fade":e,"fa-beat-fade":r,"fa-bounce":i,"fa-shake":o,"fa-flash":s,"fa-spin":c,"fa-spin-reverse":l,"fa-spin-pulse":f,"fa-pulse":u,"fa-fw":m,"fa-inverse":d,"fa-border":b,"fa-li":p,"fa-flip":!0===v,"fa-flip-horizontal":"horizontal"===v||"both"===v,"fa-flip-vertical":"vertical"===v||"both"===v},"fa-".concat(g),null!=g),Aa(t,"fa-rotate-".concat(h),null!=h&&0!==h),Aa(t,"fa-pull-".concat(y),null!=y),Aa(t,"fa-swap-opacity",n.swapOpacity),t);return Object.keys(k).map((function(n){return k[n]?n:null})).filter((function(n){return n}))}(n)),Pa(i.split(" ")))),u=Ma("transform","string"==typeof n.transform?va.transform(n.transform):n.transform),m=Ma("mask",Ea(e)),d=ga(f,xa(xa(xa(xa({},l),u),m),{},{symbol:r,title:o,titleId:s,maskId:c}));if(!d)return function(){var n;!za&&console&&"function"==typeof console.error&&(n=console).error.apply(n,arguments)}("Could not find icon",f),null;var b=d.abstract,p={ref:t};return Object.keys(n).forEach((function(t){Ia.defaultProps.hasOwnProperty(t)||(p[t]=n[t])})),La(b[0],p)}));Ia.displayName="FontAwesomeIcon",Ia.propTypes={beat:ya().bool,border:ya().bool,beatFade:ya().bool,bounce:ya().bool,className:ya().string,fade:ya().bool,flash:ya().bool,mask:ya().oneOfType([ya().object,ya().array,ya().string]),maskId:ya().string,fixedWidth:ya().bool,inverse:ya().bool,flip:ya().oneOf([!0,!1,"horizontal","vertical","both"]),icon:ya().oneOfType([ya().object,ya().array,ya().string]),listItem:ya().bool,pull:ya().oneOf(["right","left"]),pulse:ya().bool,rotation:ya().oneOf([0,90,180,270]),shake:ya().bool,size:ya().oneOf(["2xs","xs","sm","lg","xl","2xl","1x","2x","3x","4x","5x","6x","7x","8x","9x","10x"]),spin:ya().bool,spinPulse:ya().bool,spinReverse:ya().bool,symbol:ya().oneOfType([ya().bool,ya().string]),title:ya().string,titleId:ya().string,transform:ya().oneOfType([ya().string,ya().object]),swapOpacity:ya().bool},Ia.defaultProps={border:!1,className:"",mask:null,maskId:null,fixedWidth:!1,inverse:!1,flip:!1,icon:null,listItem:!1,pull:null,pulse:!1,rotation:null,size:null,spin:!1,spinPulse:!1,spinReverse:!1,beat:!1,fade:!1,beatFade:!1,bounce:!1,shake:!1,symbol:!1,title:"",titleId:null,transform:null,swapOpacity:!1};var La=function n(t,a){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if("string"==typeof a)return a;var r=(a.children||[]).map((function(a){return n(t,a)})),i=Object.keys(a.attributes||{}).reduce((function(n,t){var e=a.attributes[t];switch(t){case"class":n.attrs.className=e,delete a.attributes.class;break;case"style":n.attrs.style=e.split(";").map((function(n){return n.trim()})).filter((function(n){return n})).reduce((function(n,t){var a,e=t.indexOf(":"),r=Ca(t.slice(0,e)),i=t.slice(e+1).trim();return r.startsWith("webkit")?n[(a=r,a.charAt(0).toUpperCase()+a.slice(1))]=i:n[r]=i,n}),{});break;default:0===t.indexOf("aria-")||0===t.indexOf("data-")?n.attrs[t.toLowerCase()]=e:n.attrs[Ca(t)]=e}return n}),{attrs:{}}),o=e.style,s=void 0===o?{}:o,c=Na(e,Sa);return i.attrs.style=xa(xa({},i.attrs.style),s),t.apply(void 0,[a.tag,xa(xa({},i.attrs),c)].concat(Pa(r)))}.bind(null,ka.createElement)},53:(n,t,a)=>{function e(n){var t,a,r="";if("string"==typeof n||"number"==typeof n)r+=n;else if("object"==typeof n)if(Array.isArray(n))for(t=0;tr});const r=function(){for(var n,t,a=0,r="";a{a.d(t,{IAJ:()=>e,T03:()=>r});var e={prefix:"fab",iconName:"linkedin",icon:[448,512,[],"f08c","M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"]},r={prefix:"fab",iconName:"medium",icon:[640,512,[62407,"medium-m"],"f23a","M180.5,74.262C80.813,74.262,0,155.633,0,256S80.819,437.738,180.5,437.738,361,356.373,361,256,280.191,74.262,180.5,74.262Zm288.25,10.646c-49.845,0-90.245,76.619-90.245,171.095s40.406,171.1,90.251,171.1,90.251-76.619,90.251-171.1H559C559,161.5,518.6,84.908,468.752,84.908Zm139.506,17.821c-17.526,0-31.735,68.628-31.735,153.274s14.2,153.274,31.735,153.274S640,340.631,640,256C640,171.351,625.785,102.729,608.258,102.729Z"]}},6188:(n,t,a)=>{a.d(t,{UHg:()=>r});var e={prefix:"fas",iconName:"angles-right",icon:[512,512,[187,"angle-double-right"],"f101","M470.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 256 265.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160zm-352 160l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L210.7 256 73.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z"]},r=e}}]); \ No newline at end of file +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[5923],{3914:(n,t,a)=>{function e(n,t){var a=Object.keys(n);if(Object.getOwnPropertySymbols){var e=Object.getOwnPropertySymbols(n);t&&(e=e.filter((function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),a.push.apply(a,e)}return a}function r(n){for(var t=1;tn.length)&&(t=n.length);for(var a=0,e=new Array(t);aIa});var m=function(){},d={},b={},p=null,v={mark:m,measure:m};try{"undefined"!=typeof window&&(d=window),"undefined"!=typeof document&&(b=document),"undefined"!=typeof MutationObserver&&(p=MutationObserver),"undefined"!=typeof performance&&(v=performance)}catch(Ra){}var g,h,y,k,w,x=(d.navigator||{}).userAgent,O=void 0===x?"":x,A=d,N=b,P=p,j=v,C=(A.document,!!N.documentElement&&!!N.head&&"function"==typeof N.addEventListener&&"function"==typeof N.createElement),S=~O.indexOf("MSIE")||~O.indexOf("Trident/"),z="___FONT_AWESOME___",E=16,M="fa",I="svg-inline--fa",L="data-fa-i2svg",R="data-fa-pseudo-element",Y="data-fa-pseudo-element-pending",T="data-prefix",D="data-icon",F="fontawesome-i2svg",H="async",W=["HTML","HEAD","STYLE","SCRIPT"],U=function(){try{return!0}catch(Ra){return!1}}(),V="classic",_="sharp",X=[V,_];function B(n){return new Proxy(n,{get:function(n,t){return t in n?n[t]:n[V]}})}var q=B((s(g={},V,{fa:"solid",fas:"solid","fa-solid":"solid",far:"regular","fa-regular":"regular",fal:"light","fa-light":"light",fat:"thin","fa-thin":"thin",fad:"duotone","fa-duotone":"duotone",fab:"brands","fa-brands":"brands",fak:"kit","fa-kit":"kit"}),s(g,_,{fa:"solid",fass:"solid","fa-solid":"solid"}),g)),G=B((s(h={},V,{solid:"fas",regular:"far",light:"fal",thin:"fat",duotone:"fad",brands:"fab",kit:"fak"}),s(h,_,{solid:"fass"}),h)),K=B((s(y={},V,{fab:"fa-brands",fad:"fa-duotone",fak:"fa-kit",fal:"fa-light",far:"fa-regular",fas:"fa-solid",fat:"fa-thin"}),s(y,_,{fass:"fa-solid"}),y)),Z=B((s(k={},V,{"fa-brands":"fab","fa-duotone":"fad","fa-kit":"fak","fa-light":"fal","fa-regular":"far","fa-solid":"fas","fa-thin":"fat"}),s(k,_,{"fa-solid":"fass"}),k)),J=/fa(s|r|l|t|d|b|k|ss)?[\-\ ]/,$="fa-layers-text",Q=/Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp|Kit)?.*/i,nn=B((s(w={},V,{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"}),s(w,_,{900:"fass"}),w)),tn=[1,2,3,4,5,6,7,8,9,10],an=tn.concat([11,12,13,14,15,16,17,18,19,20]),en=["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"],rn={GROUP:"duotone-group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},on=new Set;Object.keys(G[V]).map(on.add.bind(on)),Object.keys(G[_]).map(on.add.bind(on));var sn=[].concat(X,f(on),["2xs","xs","sm","lg","xl","2xl","beat","border","fade","beat-fade","bounce","flip-both","flip-horizontal","flip-vertical","flip","fw","inverse","layers-counter","layers-text","layers","li","pull-left","pull-right","pulse","rotate-180","rotate-270","rotate-90","rotate-by","shake","spin-pulse","spin-reverse","spin","stack-1x","stack-2x","stack","ul",rn.GROUP,rn.SWAP_OPACITY,rn.PRIMARY,rn.SECONDARY]).concat(tn.map((function(n){return"".concat(n,"x")}))).concat(an.map((function(n){return"w-".concat(n)}))),cn=A.FontAwesomeConfig||{};if(N&&"function"==typeof N.querySelector){[["data-family-prefix","familyPrefix"],["data-css-prefix","cssPrefix"],["data-family-default","familyDefault"],["data-style-default","styleDefault"],["data-replacement-class","replacementClass"],["data-auto-replace-svg","autoReplaceSvg"],["data-auto-add-css","autoAddCss"],["data-auto-a11y","autoA11y"],["data-search-pseudo-elements","searchPseudoElements"],["data-observe-mutations","observeMutations"],["data-mutate-approach","mutateApproach"],["data-keep-original-source","keepOriginalSource"],["data-measure-performance","measurePerformance"],["data-show-missing-icons","showMissingIcons"]].forEach((function(n){var t=c(n,2),a=t[0],e=t[1],r=function(n){return""===n||"false"!==n&&("true"===n||n)}(function(n){var t=N.querySelector("script["+n+"]");if(t)return t.getAttribute(n)}(a));null!=r&&(cn[e]=r)}))}var fn={styleDefault:"solid",familyDefault:"classic",cssPrefix:M,replacementClass:I,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0};cn.familyPrefix&&(cn.cssPrefix=cn.familyPrefix);var ln=r(r({},fn),cn);ln.autoReplaceSvg||(ln.observeMutations=!1);var un={};Object.keys(fn).forEach((function(n){Object.defineProperty(un,n,{enumerable:!0,set:function(t){ln[n]=t,mn.forEach((function(n){return n(un)}))},get:function(){return ln[n]}})})),Object.defineProperty(un,"familyPrefix",{enumerable:!0,set:function(n){ln.cssPrefix=n,mn.forEach((function(n){return n(un)}))},get:function(){return ln.cssPrefix}}),A.FontAwesomeConfig=un;var mn=[];var dn=E,bn={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};var pn="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function vn(){for(var n=12,t="";n-- >0;)t+=pn[62*Math.random()|0];return t}function gn(n){for(var t=[],a=(n||[]).length>>>0;a--;)t[a]=n[a];return t}function hn(n){return n.classList?gn(n.classList):(n.getAttribute("class")||"").split(" ").filter((function(n){return n}))}function yn(n){return"".concat(n).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function kn(n){return Object.keys(n||{}).reduce((function(t,a){return t+"".concat(a,": ").concat(n[a].trim(),";")}),"")}function wn(n){return n.size!==bn.size||n.x!==bn.x||n.y!==bn.y||n.rotate!==bn.rotate||n.flipX||n.flipY}var xn=':root, :host {\n --fa-font-solid: normal 900 1em/1 "Font Awesome 6 Solid";\n --fa-font-regular: normal 400 1em/1 "Font Awesome 6 Regular";\n --fa-font-light: normal 300 1em/1 "Font Awesome 6 Light";\n --fa-font-thin: normal 100 1em/1 "Font Awesome 6 Thin";\n --fa-font-duotone: normal 900 1em/1 "Font Awesome 6 Duotone";\n --fa-font-sharp-solid: normal 900 1em/1 "Font Awesome 6 Sharp";\n --fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands";\n}\n\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\n overflow: visible;\n box-sizing: content-box;\n}\n\n.svg-inline--fa {\n display: var(--fa-display, inline-block);\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n}\n.svg-inline--fa.fa-2xs {\n vertical-align: 0.1em;\n}\n.svg-inline--fa.fa-xs {\n vertical-align: 0em;\n}\n.svg-inline--fa.fa-sm {\n vertical-align: -0.0714285705em;\n}\n.svg-inline--fa.fa-lg {\n vertical-align: -0.2em;\n}\n.svg-inline--fa.fa-xl {\n vertical-align: -0.25em;\n}\n.svg-inline--fa.fa-2xl {\n vertical-align: -0.3125em;\n}\n.svg-inline--fa.fa-pull-left {\n margin-right: var(--fa-pull-margin, 0.3em);\n width: auto;\n}\n.svg-inline--fa.fa-pull-right {\n margin-left: var(--fa-pull-margin, 0.3em);\n width: auto;\n}\n.svg-inline--fa.fa-li {\n width: var(--fa-li-width, 2em);\n top: 0.25em;\n}\n.svg-inline--fa.fa-fw {\n width: var(--fa-fw-width, 1.25em);\n}\n\n.fa-layers svg.svg-inline--fa {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.fa-layers-counter, .fa-layers-text {\n display: inline-block;\n position: absolute;\n text-align: center;\n}\n\n.fa-layers {\n display: inline-block;\n height: 1em;\n position: relative;\n text-align: center;\n vertical-align: -0.125em;\n width: 1em;\n}\n.fa-layers svg.svg-inline--fa {\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-text {\n left: 50%;\n top: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter {\n background-color: var(--fa-counter-background-color, #ff253a);\n border-radius: var(--fa-counter-border-radius, 1em);\n box-sizing: border-box;\n color: var(--fa-inverse, #fff);\n line-height: var(--fa-counter-line-height, 1);\n max-width: var(--fa-counter-max-width, 5em);\n min-width: var(--fa-counter-min-width, 1.5em);\n overflow: hidden;\n padding: var(--fa-counter-padding, 0.25em 0.5em);\n right: var(--fa-right, 0);\n text-overflow: ellipsis;\n top: var(--fa-top, 0);\n -webkit-transform: scale(var(--fa-counter-scale, 0.25));\n transform: scale(var(--fa-counter-scale, 0.25));\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-bottom-right {\n bottom: var(--fa-bottom, 0);\n right: var(--fa-right, 0);\n top: auto;\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: bottom right;\n transform-origin: bottom right;\n}\n\n.fa-layers-bottom-left {\n bottom: var(--fa-bottom, 0);\n left: var(--fa-left, 0);\n right: auto;\n top: auto;\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: bottom left;\n transform-origin: bottom left;\n}\n\n.fa-layers-top-right {\n top: var(--fa-top, 0);\n right: var(--fa-right, 0);\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-top-left {\n left: var(--fa-left, 0);\n right: auto;\n top: var(--fa-top, 0);\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: top left;\n transform-origin: top left;\n}\n\n.fa-1x {\n font-size: 1em;\n}\n\n.fa-2x {\n font-size: 2em;\n}\n\n.fa-3x {\n font-size: 3em;\n}\n\n.fa-4x {\n font-size: 4em;\n}\n\n.fa-5x {\n font-size: 5em;\n}\n\n.fa-6x {\n font-size: 6em;\n}\n\n.fa-7x {\n font-size: 7em;\n}\n\n.fa-8x {\n font-size: 8em;\n}\n\n.fa-9x {\n font-size: 9em;\n}\n\n.fa-10x {\n font-size: 10em;\n}\n\n.fa-2xs {\n font-size: 0.625em;\n line-height: 0.1em;\n vertical-align: 0.225em;\n}\n\n.fa-xs {\n font-size: 0.75em;\n line-height: 0.0833333337em;\n vertical-align: 0.125em;\n}\n\n.fa-sm {\n font-size: 0.875em;\n line-height: 0.0714285718em;\n vertical-align: 0.0535714295em;\n}\n\n.fa-lg {\n font-size: 1.25em;\n line-height: 0.05em;\n vertical-align: -0.075em;\n}\n\n.fa-xl {\n font-size: 1.5em;\n line-height: 0.0416666682em;\n vertical-align: -0.125em;\n}\n\n.fa-2xl {\n font-size: 2em;\n line-height: 0.03125em;\n vertical-align: -0.1875em;\n}\n\n.fa-fw {\n text-align: center;\n width: 1.25em;\n}\n\n.fa-ul {\n list-style-type: none;\n margin-left: var(--fa-li-margin, 2.5em);\n padding-left: 0;\n}\n.fa-ul > li {\n position: relative;\n}\n\n.fa-li {\n left: calc(var(--fa-li-width, 2em) * -1);\n position: absolute;\n text-align: center;\n width: var(--fa-li-width, 2em);\n line-height: inherit;\n}\n\n.fa-border {\n border-color: var(--fa-border-color, #eee);\n border-radius: var(--fa-border-radius, 0.1em);\n border-style: var(--fa-border-style, solid);\n border-width: var(--fa-border-width, 0.08em);\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\n}\n\n.fa-pull-left {\n float: left;\n margin-right: var(--fa-pull-margin, 0.3em);\n}\n\n.fa-pull-right {\n float: right;\n margin-left: var(--fa-pull-margin, 0.3em);\n}\n\n.fa-beat {\n -webkit-animation-name: fa-beat;\n animation-name: fa-beat;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\n}\n\n.fa-bounce {\n -webkit-animation-name: fa-bounce;\n animation-name: fa-bounce;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\n}\n\n.fa-fade {\n -webkit-animation-name: fa-fade;\n animation-name: fa-fade;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n}\n\n.fa-beat-fade {\n -webkit-animation-name: fa-beat-fade;\n animation-name: fa-beat-fade;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n}\n\n.fa-flip {\n -webkit-animation-name: fa-flip;\n animation-name: fa-flip;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\n}\n\n.fa-shake {\n -webkit-animation-name: fa-shake;\n animation-name: fa-shake;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\n animation-timing-function: var(--fa-animation-timing, linear);\n}\n\n.fa-spin {\n -webkit-animation-name: fa-spin;\n animation-name: fa-spin;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 2s);\n animation-duration: var(--fa-animation-duration, 2s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\n animation-timing-function: var(--fa-animation-timing, linear);\n}\n\n.fa-spin-reverse {\n --fa-animation-direction: reverse;\n}\n\n.fa-pulse,\n.fa-spin-pulse {\n -webkit-animation-name: fa-spin;\n animation-name: fa-spin;\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));\n animation-timing-function: var(--fa-animation-timing, steps(8));\n}\n\n@media (prefers-reduced-motion: reduce) {\n .fa-beat,\n.fa-bounce,\n.fa-fade,\n.fa-beat-fade,\n.fa-flip,\n.fa-pulse,\n.fa-shake,\n.fa-spin,\n.fa-spin-pulse {\n -webkit-animation-delay: -1ms;\n animation-delay: -1ms;\n -webkit-animation-duration: 1ms;\n animation-duration: 1ms;\n -webkit-animation-iteration-count: 1;\n animation-iteration-count: 1;\n transition-delay: 0s;\n transition-duration: 0s;\n }\n}\n@-webkit-keyframes fa-beat {\n 0%, 90% {\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 45% {\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\n transform: scale(var(--fa-beat-scale, 1.25));\n }\n}\n@keyframes fa-beat {\n 0%, 90% {\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 45% {\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\n transform: scale(var(--fa-beat-scale, 1.25));\n }\n}\n@-webkit-keyframes fa-bounce {\n 0% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 10% {\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n }\n 30% {\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n }\n 50% {\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n }\n 57% {\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n }\n 64% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 100% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n}\n@keyframes fa-bounce {\n 0% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 10% {\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n }\n 30% {\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n }\n 50% {\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n }\n 57% {\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n }\n 64% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 100% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n}\n@-webkit-keyframes fa-fade {\n 50% {\n opacity: var(--fa-fade-opacity, 0.4);\n }\n}\n@keyframes fa-fade {\n 50% {\n opacity: var(--fa-fade-opacity, 0.4);\n }\n}\n@-webkit-keyframes fa-beat-fade {\n 0%, 100% {\n opacity: var(--fa-beat-fade-opacity, 0.4);\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 50% {\n opacity: 1;\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\n transform: scale(var(--fa-beat-fade-scale, 1.125));\n }\n}\n@keyframes fa-beat-fade {\n 0%, 100% {\n opacity: var(--fa-beat-fade-opacity, 0.4);\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 50% {\n opacity: 1;\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\n transform: scale(var(--fa-beat-fade-scale, 1.125));\n }\n}\n@-webkit-keyframes fa-flip {\n 50% {\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n }\n}\n@keyframes fa-flip {\n 50% {\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n }\n}\n@-webkit-keyframes fa-shake {\n 0% {\n -webkit-transform: rotate(-15deg);\n transform: rotate(-15deg);\n }\n 4% {\n -webkit-transform: rotate(15deg);\n transform: rotate(15deg);\n }\n 8%, 24% {\n -webkit-transform: rotate(-18deg);\n transform: rotate(-18deg);\n }\n 12%, 28% {\n -webkit-transform: rotate(18deg);\n transform: rotate(18deg);\n }\n 16% {\n -webkit-transform: rotate(-22deg);\n transform: rotate(-22deg);\n }\n 20% {\n -webkit-transform: rotate(22deg);\n transform: rotate(22deg);\n }\n 32% {\n -webkit-transform: rotate(-12deg);\n transform: rotate(-12deg);\n }\n 36% {\n -webkit-transform: rotate(12deg);\n transform: rotate(12deg);\n }\n 40%, 100% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n}\n@keyframes fa-shake {\n 0% {\n -webkit-transform: rotate(-15deg);\n transform: rotate(-15deg);\n }\n 4% {\n -webkit-transform: rotate(15deg);\n transform: rotate(15deg);\n }\n 8%, 24% {\n -webkit-transform: rotate(-18deg);\n transform: rotate(-18deg);\n }\n 12%, 28% {\n -webkit-transform: rotate(18deg);\n transform: rotate(18deg);\n }\n 16% {\n -webkit-transform: rotate(-22deg);\n transform: rotate(-22deg);\n }\n 20% {\n -webkit-transform: rotate(22deg);\n transform: rotate(22deg);\n }\n 32% {\n -webkit-transform: rotate(-12deg);\n transform: rotate(-12deg);\n }\n 36% {\n -webkit-transform: rotate(12deg);\n transform: rotate(12deg);\n }\n 40%, 100% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n}\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.fa-rotate-90 {\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1);\n}\n\n.fa-flip-both,\n.fa-flip-horizontal.fa-flip-vertical {\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1);\n}\n\n.fa-rotate-by {\n -webkit-transform: rotate(var(--fa-rotate-angle, none));\n transform: rotate(var(--fa-rotate-angle, none));\n}\n\n.fa-stack {\n display: inline-block;\n vertical-align: middle;\n height: 2em;\n position: relative;\n width: 2.5em;\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n z-index: var(--fa-stack-z-index, auto);\n}\n\n.svg-inline--fa.fa-stack-1x {\n height: 1em;\n width: 1.25em;\n}\n.svg-inline--fa.fa-stack-2x {\n height: 2em;\n width: 2.5em;\n}\n\n.fa-inverse {\n color: var(--fa-inverse, #fff);\n}\n\n.sr-only,\n.fa-sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n.sr-only-focusable:not(:focus),\n.fa-sr-only-focusable:not(:focus) {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n.svg-inline--fa .fa-primary {\n fill: var(--fa-primary-color, currentColor);\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa .fa-secondary {\n fill: var(--fa-secondary-color, currentColor);\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-primary {\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa mask .fa-primary,\n.svg-inline--fa mask .fa-secondary {\n fill: black;\n}\n\n.fad.fa-inverse,\n.fa-duotone.fa-inverse {\n color: var(--fa-inverse, #fff);\n}';function On(){var n=M,t=I,a=un.cssPrefix,e=un.replacementClass,r=xn;if(a!==n||e!==t){var i=new RegExp("\\.".concat(n,"\\-"),"g"),o=new RegExp("\\--".concat(n,"\\-"),"g"),s=new RegExp("\\.".concat(t),"g");r=r.replace(i,".".concat(a,"-")).replace(o,"--".concat(a,"-")).replace(s,".".concat(e))}return r}var An=!1;function Nn(){un.autoAddCss&&!An&&(!function(n){if(n&&C){var t=N.createElement("style");t.setAttribute("type","text/css"),t.innerHTML=n;for(var a=N.head.childNodes,e=null,r=a.length-1;r>-1;r--){var i=a[r],o=(i.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(o)>-1&&(e=i)}N.head.insertBefore(t,e)}}(On()),An=!0)}var Pn={mixout:function(){return{dom:{css:On,insertCss:Nn}}},hooks:function(){return{beforeDOMElementCreation:function(){Nn()},beforeI2svg:function(){Nn()}}}},jn=A||{};jn[z]||(jn[z]={}),jn[z].styles||(jn[z].styles={}),jn[z].hooks||(jn[z].hooks={}),jn[z].shims||(jn[z].shims=[]);var Cn=jn[z],Sn=[],zn=!1;function En(n){var t=n.tag,a=n.attributes,e=void 0===a?{}:a,r=n.children,i=void 0===r?[]:r;return"string"==typeof n?yn(n):"<".concat(t," ").concat(function(n){return Object.keys(n||{}).reduce((function(t,a){return t+"".concat(a,'="').concat(yn(n[a]),'" ')}),"").trim()}(e),">").concat(i.map(En).join(""),"")}function Mn(n,t,a){if(n&&n[t]&&n[t][a])return{prefix:t,iconName:a,icon:n[t][a]}}C&&((zn=(N.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(N.readyState))||N.addEventListener("DOMContentLoaded",(function n(){N.removeEventListener("DOMContentLoaded",n),zn=1,Sn.map((function(n){return n()}))})));var In=function(n,t,a,e){var r,i,o,s=Object.keys(n),c=s.length,f=void 0!==e?function(n,t){return function(a,e,r,i){return n.call(t,a,e,r,i)}}(t,e):t;for(void 0===a?(r=1,o=n[s[0]]):(r=0,o=a);r=55296&&r<=56319&&a2&&void 0!==arguments[2]?arguments[2]:{}).skipHooks,e=void 0!==a&&a,i=Rn(t);"function"!=typeof Cn.hooks.addPack||e?Cn.styles[n]=r(r({},Cn.styles[n]||{}),i):Cn.hooks.addPack(n,Rn(t)),"fas"===n&&Yn("fa",t)}var Tn,Dn,Fn,Hn=Cn.styles,Wn=Cn.shims,Un=(s(Tn={},V,Object.values(K[V])),s(Tn,_,Object.values(K[_])),Tn),Vn=null,_n={},Xn={},Bn={},qn={},Gn={},Kn=(s(Dn={},V,Object.keys(q[V])),s(Dn,_,Object.keys(q[_])),Dn);function Zn(n,t){var a,e=t.split("-"),r=e[0],i=e.slice(1).join("-");return r!==n||""===i||(a=i,~sn.indexOf(a))?null:i}var Jn,$n=function(){var n=function(n){return In(Hn,(function(t,a,e){return t[e]=In(a,n,{}),t}),{})};_n=n((function(n,t,a){(t[3]&&(n[t[3]]=a),t[2])&&t[2].filter((function(n){return"number"==typeof n})).forEach((function(t){n[t.toString(16)]=a}));return n})),Xn=n((function(n,t,a){(n[a]=a,t[2])&&t[2].filter((function(n){return"string"==typeof n})).forEach((function(t){n[t]=a}));return n})),Gn=n((function(n,t,a){var e=t[2];return n[a]=a,e.forEach((function(t){n[t]=a})),n}));var t="far"in Hn||un.autoFetchSvg,a=In(Wn,(function(n,a){var e=a[0],r=a[1],i=a[2];return"far"!==r||t||(r="fas"),"string"==typeof e&&(n.names[e]={prefix:r,iconName:i}),"number"==typeof e&&(n.unicodes[e.toString(16)]={prefix:r,iconName:i}),n}),{names:{},unicodes:{}});Bn=a.names,qn=a.unicodes,Vn=rt(un.styleDefault,{family:un.familyDefault})};function Qn(n,t){return(_n[n]||{})[t]}function nt(n,t){return(Gn[n]||{})[t]}function tt(n){return Bn[n]||{prefix:null,iconName:null}}function at(){return Vn}Jn=function(n){Vn=rt(n.styleDefault,{family:un.familyDefault})},mn.push(Jn),$n();var et=function(){return{prefix:null,iconName:null,rest:[]}};function rt(n){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).family,a=void 0===t?V:t,e=q[a][n],r=G[a][n]||G[a][e],i=n in Cn.styles?n:null;return r||i||null}var it=(s(Fn={},V,Object.keys(K[V])),s(Fn,_,Object.keys(K[_])),Fn);function ot(n){var t,a=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).skipLookups,e=void 0!==a&&a,r=(s(t={},V,"".concat(un.cssPrefix,"-").concat(V)),s(t,_,"".concat(un.cssPrefix,"-").concat(_)),t),i=null,o=V;(n.includes(r[V])||n.some((function(n){return it[V].includes(n)})))&&(o=V),(n.includes(r[_])||n.some((function(n){return it[_].includes(n)})))&&(o=_);var c=n.reduce((function(n,t){var a=Zn(un.cssPrefix,t);if(Hn[t]?(t=Un[o].includes(t)?Z[o][t]:t,i=t,n.prefix=t):Kn[o].indexOf(t)>-1?(i=t,n.prefix=rt(t,{family:o})):a?n.iconName=a:t!==un.replacementClass&&t!==r[V]&&t!==r[_]&&n.rest.push(t),!e&&n.prefix&&n.iconName){var s="fa"===i?tt(n.iconName):{},c=nt(n.prefix,n.iconName);s.prefix&&(i=null),n.iconName=s.iconName||c||n.iconName,n.prefix=s.prefix||n.prefix,"far"!==n.prefix||Hn.far||!Hn.fas||un.autoFetchSvg||(n.prefix="fas")}return n}),et());return(n.includes("fa-brands")||n.includes("fab"))&&(c.prefix="fab"),(n.includes("fa-duotone")||n.includes("fad"))&&(c.prefix="fad"),c.prefix||o!==_||!Hn.fass&&!un.autoFetchSvg||(c.prefix="fass",c.iconName=nt(c.prefix,c.iconName)||c.iconName),"fa"!==c.prefix&&"fa"!==i||(c.prefix=at()||"fas"),c}var st=function(){function n(){!function(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),this.definitions={}}var t,a,e;return t=n,a=[{key:"add",value:function(){for(var n=this,t=arguments.length,a=new Array(t),e=0;e0&&s.forEach((function(t){"string"==typeof t&&(n[r][t]=o)})),n[r][i]=o})),n}}],a&&o(t.prototype,a),e&&o(t,e),Object.defineProperty(t,"prototype",{writable:!1}),n}(),ct=[],ft={},lt={},ut=Object.keys(lt);function mt(n,t){for(var a=arguments.length,e=new Array(a>2?a-2:0),r=2;r1?t-1:0),e=1;e0&&void 0!==arguments[0]?arguments[0]:{};return C?(dt("beforeI2svg",n),bt("pseudoElements2svg",n),bt("i2svg",n)):Promise.reject("Operation requires a DOM of some kind.")},watch:function(){var n,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=t.autoReplaceSvgRoot;!1===un.autoReplaceSvg&&(un.autoReplaceSvg=!0),un.observeMutations=!0,n=function(){yt({autoReplaceSvgRoot:a}),dt("watch",t)},C&&(zn?setTimeout(n,0):Sn.push(n))}},ht={noAuto:function(){un.autoReplaceSvg=!1,un.observeMutations=!1,dt("noAuto")},config:un,dom:gt,parse:{icon:function(n){if(null===n)return null;if("object"===i(n)&&n.prefix&&n.iconName)return{prefix:n.prefix,iconName:nt(n.prefix,n.iconName)||n.iconName};if(Array.isArray(n)&&2===n.length){var t=0===n[1].indexOf("fa-")?n[1].slice(3):n[1],a=rt(n[0]);return{prefix:a,iconName:nt(a,t)||t}}if("string"==typeof n&&(n.indexOf("".concat(un.cssPrefix,"-"))>-1||n.match(J))){var e=ot(n.split(" "),{skipLookups:!0});return{prefix:e.prefix||at(),iconName:nt(e.prefix,e.iconName)||e.iconName}}if("string"==typeof n){var r=at();return{prefix:r,iconName:nt(r,n)||n}}}},library:vt,findIconDefinition:pt,toHtml:En},yt=function(){var n=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).autoReplaceSvgRoot,t=void 0===n?N:n;(Object.keys(Cn.styles).length>0||un.autoFetchSvg)&&C&&un.autoReplaceSvg&&ht.dom.i2svg({node:t})};function kt(n,t){return Object.defineProperty(n,"abstract",{get:t}),Object.defineProperty(n,"html",{get:function(){return n.abstract.map((function(n){return En(n)}))}}),Object.defineProperty(n,"node",{get:function(){if(C){var t=N.createElement("div");return t.innerHTML=n.html,t.children}}}),n}function wt(n){var t=n.icons,a=t.main,e=t.mask,i=n.prefix,o=n.iconName,s=n.transform,c=n.symbol,f=n.title,l=n.maskId,u=n.titleId,m=n.extra,d=n.watchable,b=void 0!==d&&d,p=e.found?e:a,v=p.width,g=p.height,h="fak"===i,y=[un.replacementClass,o?"".concat(un.cssPrefix,"-").concat(o):""].filter((function(n){return-1===m.classes.indexOf(n)})).filter((function(n){return""!==n||!!n})).concat(m.classes).join(" "),k={children:[],attributes:r(r({},m.attributes),{},{"data-prefix":i,"data-icon":o,class:y,role:m.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(v," ").concat(g)})},w=h&&!~m.classes.indexOf("fa-fw")?{width:"".concat(v/g*16*.0625,"em")}:{};b&&(k.attributes[L]=""),f&&(k.children.push({tag:"title",attributes:{id:k.attributes["aria-labelledby"]||"title-".concat(u||vn())},children:[f]}),delete k.attributes.title);var x=r(r({},k),{},{prefix:i,iconName:o,main:a,mask:e,maskId:l,transform:s,symbol:c,styles:r(r({},w),m.styles)}),O=e.found&&a.found?bt("generateAbstractMask",x)||{children:[],attributes:{}}:bt("generateAbstractIcon",x)||{children:[],attributes:{}},A=O.children,N=O.attributes;return x.children=A,x.attributes=N,c?function(n){var t=n.prefix,a=n.iconName,e=n.children,i=n.attributes,o=n.symbol,s=!0===o?"".concat(t,"-").concat(un.cssPrefix,"-").concat(a):o;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:r(r({},i),{},{id:s}),children:e}]}]}(x):function(n){var t=n.children,a=n.main,e=n.mask,i=n.attributes,o=n.styles,s=n.transform;if(wn(s)&&a.found&&!e.found){var c={x:a.width/a.height/2,y:.5};i.style=kn(r(r({},o),{},{"transform-origin":"".concat(c.x+s.x/16,"em ").concat(c.y+s.y/16,"em")}))}return[{tag:"svg",attributes:i,children:t}]}(x)}function xt(n){var t=n.content,a=n.width,e=n.height,i=n.transform,o=n.title,s=n.extra,c=n.watchable,f=void 0!==c&&c,l=r(r(r({},s.attributes),o?{title:o}:{}),{},{class:s.classes.join(" ")});f&&(l[L]="");var u=r({},s.styles);wn(i)&&(u.transform=function(n){var t=n.transform,a=n.width,e=void 0===a?E:a,r=n.height,i=void 0===r?E:r,o=n.startCentered,s=void 0!==o&&o,c="";return c+=s&&S?"translate(".concat(t.x/dn-e/2,"em, ").concat(t.y/dn-i/2,"em) "):s?"translate(calc(-50% + ".concat(t.x/dn,"em), calc(-50% + ").concat(t.y/dn,"em)) "):"translate(".concat(t.x/dn,"em, ").concat(t.y/dn,"em) "),c+="scale(".concat(t.size/dn*(t.flipX?-1:1),", ").concat(t.size/dn*(t.flipY?-1:1),") "),c+"rotate(".concat(t.rotate,"deg) ")}({transform:i,startCentered:!0,width:a,height:e}),u["-webkit-transform"]=u.transform);var m=kn(u);m.length>0&&(l.style=m);var d=[];return d.push({tag:"span",attributes:l,children:[t]}),o&&d.push({tag:"span",attributes:{class:"sr-only"},children:[o]}),d}var Ot=Cn.styles;function At(n){var t=n[0],a=n[1],e=c(n.slice(4),1)[0];return{found:!0,width:t,height:a,icon:Array.isArray(e)?{tag:"g",attributes:{class:"".concat(un.cssPrefix,"-").concat(rn.GROUP)},children:[{tag:"path",attributes:{class:"".concat(un.cssPrefix,"-").concat(rn.SECONDARY),fill:"currentColor",d:e[0]}},{tag:"path",attributes:{class:"".concat(un.cssPrefix,"-").concat(rn.PRIMARY),fill:"currentColor",d:e[1]}}]}:{tag:"path",attributes:{fill:"currentColor",d:e}}}}var Nt={found:!1,width:512,height:512};function Pt(n,t){var a=t;return"fa"===t&&null!==un.styleDefault&&(t=at()),new Promise((function(e,i){bt("missingIconAbstract");if("fa"===a){var o=tt(n)||{};n=o.iconName||n,t=o.prefix||t}if(n&&t&&Ot[t]&&Ot[t][n])return e(At(Ot[t][n]));!function(n,t){U||un.showMissingIcons||!n||console.error('Icon with name "'.concat(n,'" and prefix "').concat(t,'" is missing.'))}(n,t),e(r(r({},Nt),{},{icon:un.showMissingIcons&&n&&bt("missingIconAbstract")||{}}))}))}var jt=function(){},Ct=un.measurePerformance&&j&&j.mark&&j.measure?j:{mark:jt,measure:jt},St='FA "6.2.0"',zt=function(n){Ct.mark("".concat(St," ").concat(n," ends")),Ct.measure("".concat(St," ").concat(n),"".concat(St," ").concat(n," begins"),"".concat(St," ").concat(n," ends"))},Et={begin:function(n){return Ct.mark("".concat(St," ").concat(n," begins")),function(){return zt(n)}},end:zt},Mt=function(){};function It(n){return"string"==typeof(n.getAttribute?n.getAttribute(L):null)}function Lt(n){return N.createElementNS("http://www.w3.org/2000/svg",n)}function Rt(n){return N.createElement(n)}function Yt(n){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).ceFn,a=void 0===t?"svg"===n.tag?Lt:Rt:t;if("string"==typeof n)return N.createTextNode(n);var e=a(n.tag);return Object.keys(n.attributes||[]).forEach((function(t){e.setAttribute(t,n.attributes[t])})),(n.children||[]).forEach((function(n){e.appendChild(Yt(n,{ceFn:a}))})),e}var Tt={replace:function(n){var t=n[0];if(t.parentNode)if(n[1].forEach((function(n){t.parentNode.insertBefore(Yt(n),t)})),null===t.getAttribute(L)&&un.keepOriginalSource){var a=N.createComment(function(n){var t=" ".concat(n.outerHTML," ");return"".concat(t,"Font Awesome fontawesome.com ")}(t));t.parentNode.replaceChild(a,t)}else t.remove()},nest:function(n){var t=n[0],a=n[1];if(~hn(t).indexOf(un.replacementClass))return Tt.replace(n);var e=new RegExp("".concat(un.cssPrefix,"-.*"));if(delete a[0].attributes.id,a[0].attributes.class){var r=a[0].attributes.class.split(" ").reduce((function(n,t){return t===un.replacementClass||t.match(e)?n.toSvg.push(t):n.toNode.push(t),n}),{toNode:[],toSvg:[]});a[0].attributes.class=r.toSvg.join(" "),0===r.toNode.length?t.removeAttribute("class"):t.setAttribute("class",r.toNode.join(" "))}var i=a.map((function(n){return En(n)})).join("\n");t.setAttribute(L,""),t.innerHTML=i}};function Dt(n){n()}function Ft(n,t){var a="function"==typeof t?t:Mt;if(0===n.length)a();else{var e=Dt;un.mutateApproach===H&&(e=A.requestAnimationFrame||Dt),e((function(){var t=!0===un.autoReplaceSvg?Tt.replace:Tt[un.autoReplaceSvg]||Tt.replace,e=Et.begin("mutate");n.map(t),e(),a()}))}}var Ht=!1;function Wt(){Ht=!0}function Ut(){Ht=!1}var Vt=null;function _t(n){if(P&&un.observeMutations){var t=n.treeCallback,a=void 0===t?Mt:t,e=n.nodeCallback,r=void 0===e?Mt:e,i=n.pseudoElementsCallback,o=void 0===i?Mt:i,s=n.observeMutationsRoot,c=void 0===s?N:s;Vt=new P((function(n){if(!Ht){var t=at();gn(n).forEach((function(n){if("childList"===n.type&&n.addedNodes.length>0&&!It(n.addedNodes[0])&&(un.searchPseudoElements&&o(n.target),a(n.target)),"attributes"===n.type&&n.target.parentNode&&un.searchPseudoElements&&o(n.target.parentNode),"attributes"===n.type&&It(n.target)&&~en.indexOf(n.attributeName))if("class"===n.attributeName&&function(n){var t=n.getAttribute?n.getAttribute(T):null,a=n.getAttribute?n.getAttribute(D):null;return t&&a}(n.target)){var e=ot(hn(n.target)),i=e.prefix,s=e.iconName;n.target.setAttribute(T,i||t),s&&n.target.setAttribute(D,s)}else(c=n.target)&&c.classList&&c.classList.contains&&c.classList.contains(un.replacementClass)&&r(n.target);var c}))}})),C&&Vt.observe(c,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}}function Xt(n){var t,a,e=n.getAttribute("data-prefix"),r=n.getAttribute("data-icon"),i=void 0!==n.innerText?n.innerText.trim():"",o=ot(hn(n));return o.prefix||(o.prefix=at()),e&&r&&(o.prefix=e,o.iconName=r),o.iconName&&o.prefix||(o.prefix&&i.length>0&&(o.iconName=(t=o.prefix,a=n.innerText,(Xn[t]||{})[a]||Qn(o.prefix,Ln(n.innerText)))),!o.iconName&&un.autoFetchSvg&&n.firstChild&&n.firstChild.nodeType===Node.TEXT_NODE&&(o.iconName=n.firstChild.data)),o}function Bt(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{styleParser:!0},a=Xt(n),e=a.iconName,i=a.prefix,o=a.rest,s=function(n){var t=gn(n.attributes).reduce((function(n,t){return"class"!==n.name&&"style"!==n.name&&(n[t.name]=t.value),n}),{}),a=n.getAttribute("title"),e=n.getAttribute("data-fa-title-id");return un.autoA11y&&(a?t["aria-labelledby"]="".concat(un.replacementClass,"-title-").concat(e||vn()):(t["aria-hidden"]="true",t.focusable="false")),t}(n),c=mt("parseNodeAttributes",{},n),f=t.styleParser?function(n){var t=n.getAttribute("style"),a=[];return t&&(a=t.split(";").reduce((function(n,t){var a=t.split(":"),e=a[0],r=a.slice(1);return e&&r.length>0&&(n[e]=r.join(":").trim()),n}),{})),a}(n):[];return r({iconName:e,title:n.getAttribute("title"),titleId:n.getAttribute("data-fa-title-id"),prefix:i,transform:bn,mask:{iconName:null,prefix:null,rest:[]},maskId:null,symbol:!1,extra:{classes:o,styles:f,attributes:s}},c)}var qt=Cn.styles;function Gt(n){var t="nest"===un.autoReplaceSvg?Bt(n,{styleParser:!1}):Bt(n);return~t.extra.classes.indexOf($)?bt("generateLayersText",n,t):bt("generateSvgReplacementMutation",n,t)}var Kt=new Set;function Zt(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!C)return Promise.resolve();var a=N.documentElement.classList,e=function(n){return a.add("".concat(F,"-").concat(n))},r=function(n){return a.remove("".concat(F,"-").concat(n))},i=un.autoFetchSvg?Kt:X.map((function(n){return"fa-".concat(n)})).concat(Object.keys(qt));i.includes("fa")||i.push("fa");var o=[".".concat($,":not([").concat(L,"])")].concat(i.map((function(n){return".".concat(n,":not([").concat(L,"])")}))).join(", ");if(0===o.length)return Promise.resolve();var s=[];try{s=gn(n.querySelectorAll(o))}catch(Ra){}if(!(s.length>0))return Promise.resolve();e("pending"),r("complete");var c=Et.begin("onTree"),f=s.reduce((function(n,t){try{var a=Gt(t);a&&n.push(a)}catch(Ra){U||"MissingIcon"===Ra.name&&console.error(Ra)}return n}),[]);return new Promise((function(n,a){Promise.all(f).then((function(a){Ft(a,(function(){e("active"),e("complete"),r("pending"),"function"==typeof t&&t(),c(),n()}))})).catch((function(n){c(),a(n)}))}))}function Jt(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;Gt(n).then((function(n){n&&Ft([n],t)}))}X.map((function(n){Kt.add("fa-".concat(n))})),Object.keys(q[V]).map(Kt.add.bind(Kt)),Object.keys(q[_]).map(Kt.add.bind(Kt)),Kt=f(Kt);var $t=function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=t.transform,e=void 0===a?bn:a,i=t.symbol,o=void 0!==i&&i,s=t.mask,c=void 0===s?null:s,f=t.maskId,l=void 0===f?null:f,u=t.title,m=void 0===u?null:u,d=t.titleId,b=void 0===d?null:d,p=t.classes,v=void 0===p?[]:p,g=t.attributes,h=void 0===g?{}:g,y=t.styles,k=void 0===y?{}:y;if(n){var w=n.prefix,x=n.iconName,O=n.icon;return kt(r({type:"icon"},n),(function(){return dt("beforeDOMElementCreation",{iconDefinition:n,params:t}),un.autoA11y&&(m?h["aria-labelledby"]="".concat(un.replacementClass,"-title-").concat(b||vn()):(h["aria-hidden"]="true",h.focusable="false")),wt({icons:{main:At(O),mask:c?At(c.icon):{found:!1,width:null,height:null,icon:{}}},prefix:w,iconName:x,transform:r(r({},bn),e),symbol:o,title:m,maskId:l,titleId:b,extra:{attributes:h,styles:k,classes:v}})}))}},Qt={mixout:function(){return{icon:(n=$t,function(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=(t||{}).icon?t:pt(t||{}),i=a.mask;return i&&(i=(i||{}).icon?i:pt(i||{})),n(e,r(r({},a),{},{mask:i}))})};var n},hooks:function(){return{mutationObserverCallbacks:function(n){return n.treeCallback=Zt,n.nodeCallback=Jt,n}}},provides:function(n){n.i2svg=function(n){var t=n.node,a=void 0===t?N:t,e=n.callback;return Zt(a,void 0===e?function(){}:e)},n.generateSvgReplacementMutation=function(n,t){var a=t.iconName,e=t.title,r=t.titleId,i=t.prefix,o=t.transform,s=t.symbol,f=t.mask,l=t.maskId,u=t.extra;return new Promise((function(t,m){Promise.all([Pt(a,i),f.iconName?Pt(f.iconName,f.prefix):Promise.resolve({found:!1,width:512,height:512,icon:{}})]).then((function(f){var m=c(f,2),d=m[0],b=m[1];t([n,wt({icons:{main:d,mask:b},prefix:i,iconName:a,transform:o,symbol:s,maskId:l,title:e,titleId:r,extra:u,watchable:!0})])})).catch(m)}))},n.generateAbstractIcon=function(n){var t,a=n.children,e=n.attributes,r=n.main,i=n.transform,o=kn(n.styles);return o.length>0&&(e.style=o),wn(i)&&(t=bt("generateAbstractTransformGrouping",{main:r,transform:i,containerWidth:r.width,iconWidth:r.width})),a.push(t||r.icon),{children:a,attributes:e}}}},na={mixout:function(){return{layer:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=t.classes,e=void 0===a?[]:a;return kt({type:"layer"},(function(){dt("beforeDOMElementCreation",{assembler:n,params:t});var a=[];return n((function(n){Array.isArray(n)?n.map((function(n){a=a.concat(n.abstract)})):a=a.concat(n.abstract)})),[{tag:"span",attributes:{class:["".concat(un.cssPrefix,"-layers")].concat(f(e)).join(" ")},children:a}]}))}}}},ta={mixout:function(){return{counter:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=t.title,e=void 0===a?null:a,i=t.classes,o=void 0===i?[]:i,s=t.attributes,c=void 0===s?{}:s,l=t.styles,u=void 0===l?{}:l;return kt({type:"counter",content:n},(function(){return dt("beforeDOMElementCreation",{content:n,params:t}),function(n){var t=n.content,a=n.title,e=n.extra,i=r(r(r({},e.attributes),a?{title:a}:{}),{},{class:e.classes.join(" ")}),o=kn(e.styles);o.length>0&&(i.style=o);var s=[];return s.push({tag:"span",attributes:i,children:[t]}),a&&s.push({tag:"span",attributes:{class:"sr-only"},children:[a]}),s}({content:n.toString(),title:e,extra:{attributes:c,styles:u,classes:["".concat(un.cssPrefix,"-layers-counter")].concat(f(o))}})}))}}}},aa={mixout:function(){return{text:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=t.transform,e=void 0===a?bn:a,i=t.title,o=void 0===i?null:i,s=t.classes,c=void 0===s?[]:s,l=t.attributes,u=void 0===l?{}:l,m=t.styles,d=void 0===m?{}:m;return kt({type:"text",content:n},(function(){return dt("beforeDOMElementCreation",{content:n,params:t}),xt({content:n,transform:r(r({},bn),e),title:o,extra:{attributes:u,styles:d,classes:["".concat(un.cssPrefix,"-layers-text")].concat(f(c))}})}))}}},provides:function(n){n.generateLayersText=function(n,t){var a=t.title,e=t.transform,r=t.extra,i=null,o=null;if(S){var s=parseInt(getComputedStyle(n).fontSize,10),c=n.getBoundingClientRect();i=c.width/s,o=c.height/s}return un.autoA11y&&!a&&(r.attributes["aria-hidden"]="true"),Promise.resolve([n,xt({content:n.innerHTML,width:i,height:o,transform:e,title:a,extra:r,watchable:!0})])}}},ea=new RegExp('"',"ug"),ra=[1105920,1112319];function ia(n,t){var a="".concat(Y).concat(t.replace(":","-"));return new Promise((function(e,i){if(null!==n.getAttribute(a))return e();var o,s,c,f=gn(n.children).filter((function(n){return n.getAttribute(R)===t}))[0],l=A.getComputedStyle(n,t),u=l.getPropertyValue("font-family").match(Q),m=l.getPropertyValue("font-weight"),d=l.getPropertyValue("content");if(f&&!u)return n.removeChild(f),e();if(u&&"none"!==d&&""!==d){var b=l.getPropertyValue("content"),p=~["Sharp"].indexOf(u[2])?_:V,v=~["Solid","Regular","Light","Thin","Duotone","Brands","Kit"].indexOf(u[2])?G[p][u[2].toLowerCase()]:nn[p][m],g=function(n){var t,a,e,r,i,o=n.replace(ea,""),s=(a=0,r=(t=o).length,(i=t.charCodeAt(a))>=55296&&i<=56319&&r>a+1&&(e=t.charCodeAt(a+1))>=56320&&e<=57343?1024*(i-55296)+e-56320+65536:i),c=s>=ra[0]&&s<=ra[1],f=2===o.length&&o[0]===o[1];return{value:Ln(f?o[0]:o),isSecondary:c||f}}(b),h=g.value,y=g.isSecondary,k=u[0].startsWith("FontAwesome"),w=Qn(v,h),x=w;if(k){var O=(s=qn[o=h],c=Qn("fas",o),s||(c?{prefix:"fas",iconName:c}:null)||{prefix:null,iconName:null});O.iconName&&O.prefix&&(w=O.iconName,v=O.prefix)}if(!w||y||f&&f.getAttribute(T)===v&&f.getAttribute(D)===x)e();else{n.setAttribute(a,x),f&&n.removeChild(f);var P={iconName:null,title:null,titleId:null,prefix:null,transform:bn,symbol:!1,mask:{iconName:null,prefix:null,rest:[]},maskId:null,extra:{classes:[],styles:{},attributes:{}}},j=P.extra;j.attributes[R]=t,Pt(w,v).then((function(i){var o=wt(r(r({},P),{},{icons:{main:i,mask:et()},prefix:v,iconName:x,extra:j,watchable:!0})),s=N.createElement("svg");"::before"===t?n.insertBefore(s,n.firstChild):n.appendChild(s),s.outerHTML=o.map((function(n){return En(n)})).join("\n"),n.removeAttribute(a),e()})).catch(i)}}else e()}))}function oa(n){return Promise.all([ia(n,"::before"),ia(n,"::after")])}function sa(n){return!(n.parentNode===document.head||~W.indexOf(n.tagName.toUpperCase())||n.getAttribute(R)||n.parentNode&&"svg"===n.parentNode.tagName)}function ca(n){if(C)return new Promise((function(t,a){var e=gn(n.querySelectorAll("*")).filter(sa).map(oa),r=Et.begin("searchPseudoElements");Wt(),Promise.all(e).then((function(){r(),Ut(),t()})).catch((function(){r(),Ut(),a()}))}))}var fa=!1,la=function(n){return n.toLowerCase().split(" ").reduce((function(n,t){var a=t.toLowerCase().split("-"),e=a[0],r=a.slice(1).join("-");if(e&&"h"===r)return n.flipX=!0,n;if(e&&"v"===r)return n.flipY=!0,n;if(r=parseFloat(r),isNaN(r))return n;switch(e){case"grow":n.size=n.size+r;break;case"shrink":n.size=n.size-r;break;case"left":n.x=n.x-r;break;case"right":n.x=n.x+r;break;case"up":n.y=n.y-r;break;case"down":n.y=n.y+r;break;case"rotate":n.rotate=n.rotate+r}return n}),{size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0})},ua={mixout:function(){return{parse:{transform:function(n){return la(n)}}}},hooks:function(){return{parseNodeAttributes:function(n,t){var a=t.getAttribute("data-fa-transform");return a&&(n.transform=la(a)),n}}},provides:function(n){n.generateAbstractTransformGrouping=function(n){var t=n.main,a=n.transform,e=n.containerWidth,i=n.iconWidth,o={transform:"translate(".concat(e/2," 256)")},s="translate(".concat(32*a.x,", ").concat(32*a.y,") "),c="scale(".concat(a.size/16*(a.flipX?-1:1),", ").concat(a.size/16*(a.flipY?-1:1),") "),f="rotate(".concat(a.rotate," 0 0)"),l={outer:o,inner:{transform:"".concat(s," ").concat(c," ").concat(f)},path:{transform:"translate(".concat(i/2*-1," -256)")}};return{tag:"g",attributes:r({},l.outer),children:[{tag:"g",attributes:r({},l.inner),children:[{tag:t.icon.tag,children:t.icon.children,attributes:r(r({},t.icon.attributes),l.path)}]}]}}}},ma={x:0,y:0,width:"100%",height:"100%"};function da(n){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return n.attributes&&(n.attributes.fill||t)&&(n.attributes.fill="black"),n}var ba={hooks:function(){return{parseNodeAttributes:function(n,t){var a=t.getAttribute("data-fa-mask"),e=a?ot(a.split(" ").map((function(n){return n.trim()}))):et();return e.prefix||(e.prefix=at()),n.mask=e,n.maskId=t.getAttribute("data-fa-mask-id"),n}}},provides:function(n){n.generateAbstractMask=function(n){var t,a=n.children,e=n.attributes,i=n.main,o=n.mask,s=n.maskId,c=n.transform,f=i.width,l=i.icon,u=o.width,m=o.icon,d=function(n){var t=n.transform,a=n.containerWidth,e=n.iconWidth,r={transform:"translate(".concat(a/2," 256)")},i="translate(".concat(32*t.x,", ").concat(32*t.y,") "),o="scale(".concat(t.size/16*(t.flipX?-1:1),", ").concat(t.size/16*(t.flipY?-1:1),") "),s="rotate(".concat(t.rotate," 0 0)");return{outer:r,inner:{transform:"".concat(i," ").concat(o," ").concat(s)},path:{transform:"translate(".concat(e/2*-1," -256)")}}}({transform:c,containerWidth:u,iconWidth:f}),b={tag:"rect",attributes:r(r({},ma),{},{fill:"white"})},p=l.children?{children:l.children.map(da)}:{},v={tag:"g",attributes:r({},d.inner),children:[da(r({tag:l.tag,attributes:r(r({},l.attributes),d.path)},p))]},g={tag:"g",attributes:r({},d.outer),children:[v]},h="mask-".concat(s||vn()),y="clip-".concat(s||vn()),k={tag:"mask",attributes:r(r({},ma),{},{id:h,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[b,g]},w={tag:"defs",children:[{tag:"clipPath",attributes:{id:y},children:(t=m,"g"===t.tag?t.children:[t])},k]};return a.push(w,{tag:"rect",attributes:r({fill:"currentColor","clip-path":"url(#".concat(y,")"),mask:"url(#".concat(h,")")},ma)}),{children:a,attributes:e}}}},pa={provides:function(n){var t=!1;A.matchMedia&&(t=A.matchMedia("(prefers-reduced-motion: reduce)").matches),n.missingIconAbstract=function(){var n=[],a={fill:"currentColor"},e={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};n.push({tag:"path",attributes:r(r({},a),{},{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})});var i=r(r({},e),{},{attributeName:"opacity"}),o={tag:"circle",attributes:r(r({},a),{},{cx:"256",cy:"364",r:"28"}),children:[]};return t||o.children.push({tag:"animate",attributes:r(r({},e),{},{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:r(r({},i),{},{values:"1;0;1;1;0;1;"})}),n.push(o),n.push({tag:"path",attributes:r(r({},a),{},{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:t?[]:[{tag:"animate",attributes:r(r({},i),{},{values:"1;0;0;0;0;1;"})}]}),t||n.push({tag:"path",attributes:r(r({},a),{},{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:r(r({},i),{},{values:"0;0;1;1;0;0;"})}]}),{tag:"g",attributes:{class:"missing"},children:n}}}};!function(n,t){var a=t.mixoutsTo;ct=n,ft={},Object.keys(lt).forEach((function(n){-1===ut.indexOf(n)&&delete lt[n]})),ct.forEach((function(n){var t=n.mixout?n.mixout():{};if(Object.keys(t).forEach((function(n){"function"==typeof t[n]&&(a[n]=t[n]),"object"===i(t[n])&&Object.keys(t[n]).forEach((function(e){a[n]||(a[n]={}),a[n][e]=t[n][e]}))})),n.hooks){var e=n.hooks();Object.keys(e).forEach((function(n){ft[n]||(ft[n]=[]),ft[n].push(e[n])}))}n.provides&&n.provides(lt)}))}([Pn,Qt,na,ta,aa,{hooks:function(){return{mutationObserverCallbacks:function(n){return n.pseudoElementsCallback=ca,n}}},provides:function(n){n.pseudoElements2svg=function(n){var t=n.node,a=void 0===t?N:t;un.searchPseudoElements&&ca(a)}}},{mixout:function(){return{dom:{unwatch:function(){Wt(),fa=!0}}}},hooks:function(){return{bootstrap:function(){_t(mt("mutationObserverCallbacks",{}))},noAuto:function(){Vt&&Vt.disconnect()},watch:function(n){var t=n.observeMutationsRoot;fa?Ut():_t(mt("mutationObserverCallbacks",{observeMutationsRoot:t}))}}}},ua,ba,pa,{hooks:function(){return{parseNodeAttributes:function(n,t){var a=t.getAttribute("data-fa-symbol"),e=null!==a&&(""===a||a);return n.symbol=e,n}}}}],{mixoutsTo:ht});var va=ht.parse,ga=ht.icon,ha=a(5556),ya=a.n(ha),ka=a(6540);function wa(n,t){var a=Object.keys(n);if(Object.getOwnPropertySymbols){var e=Object.getOwnPropertySymbols(n);t&&(e=e.filter((function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),a.push.apply(a,e)}return a}function xa(n){for(var t=1;t=0||(r[a]=n[a]);return r}(n,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(n);for(e=0;e=0||Object.prototype.propertyIsEnumerable.call(n,a)&&(r[a]=n[a])}return r}function Pa(n){return function(n){if(Array.isArray(n))return ja(n)}(n)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(n)||function(n,t){if(!n)return;if("string"==typeof n)return ja(n,t);var a=Object.prototype.toString.call(n).slice(8,-1);"Object"===a&&n.constructor&&(a=n.constructor.name);if("Map"===a||"Set"===a)return Array.from(n);if("Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a))return ja(n,t)}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ja(n,t){(null==t||t>n.length)&&(t=n.length);for(var a=0,e=new Array(t);a0||!Array.isArray(t)&&t?Aa({},n,t):{}}var Ia=ka.forwardRef((function(n,t){var a=n.icon,e=n.mask,r=n.symbol,i=n.className,o=n.title,s=n.titleId,c=n.maskId,f=Ea(a),l=Ma("classes",[].concat(Pa(function(n){var t,a=n.beat,e=n.fade,r=n.beatFade,i=n.bounce,o=n.shake,s=n.flash,c=n.spin,f=n.spinPulse,l=n.spinReverse,u=n.pulse,m=n.fixedWidth,d=n.inverse,b=n.border,p=n.listItem,v=n.flip,g=n.size,h=n.rotation,y=n.pull,k=(Aa(t={"fa-beat":a,"fa-fade":e,"fa-beat-fade":r,"fa-bounce":i,"fa-shake":o,"fa-flash":s,"fa-spin":c,"fa-spin-reverse":l,"fa-spin-pulse":f,"fa-pulse":u,"fa-fw":m,"fa-inverse":d,"fa-border":b,"fa-li":p,"fa-flip":!0===v,"fa-flip-horizontal":"horizontal"===v||"both"===v,"fa-flip-vertical":"vertical"===v||"both"===v},"fa-".concat(g),null!=g),Aa(t,"fa-rotate-".concat(h),null!=h&&0!==h),Aa(t,"fa-pull-".concat(y),null!=y),Aa(t,"fa-swap-opacity",n.swapOpacity),t);return Object.keys(k).map((function(n){return k[n]?n:null})).filter((function(n){return n}))}(n)),Pa(i.split(" ")))),u=Ma("transform","string"==typeof n.transform?va.transform(n.transform):n.transform),m=Ma("mask",Ea(e)),d=ga(f,xa(xa(xa(xa({},l),u),m),{},{symbol:r,title:o,titleId:s,maskId:c}));if(!d)return function(){var n;!za&&console&&"function"==typeof console.error&&(n=console).error.apply(n,arguments)}("Could not find icon",f),null;var b=d.abstract,p={ref:t};return Object.keys(n).forEach((function(t){Ia.defaultProps.hasOwnProperty(t)||(p[t]=n[t])})),La(b[0],p)}));Ia.displayName="FontAwesomeIcon",Ia.propTypes={beat:ya().bool,border:ya().bool,beatFade:ya().bool,bounce:ya().bool,className:ya().string,fade:ya().bool,flash:ya().bool,mask:ya().oneOfType([ya().object,ya().array,ya().string]),maskId:ya().string,fixedWidth:ya().bool,inverse:ya().bool,flip:ya().oneOf([!0,!1,"horizontal","vertical","both"]),icon:ya().oneOfType([ya().object,ya().array,ya().string]),listItem:ya().bool,pull:ya().oneOf(["right","left"]),pulse:ya().bool,rotation:ya().oneOf([0,90,180,270]),shake:ya().bool,size:ya().oneOf(["2xs","xs","sm","lg","xl","2xl","1x","2x","3x","4x","5x","6x","7x","8x","9x","10x"]),spin:ya().bool,spinPulse:ya().bool,spinReverse:ya().bool,symbol:ya().oneOfType([ya().bool,ya().string]),title:ya().string,titleId:ya().string,transform:ya().oneOfType([ya().string,ya().object]),swapOpacity:ya().bool},Ia.defaultProps={border:!1,className:"",mask:null,maskId:null,fixedWidth:!1,inverse:!1,flip:!1,icon:null,listItem:!1,pull:null,pulse:!1,rotation:null,size:null,spin:!1,spinPulse:!1,spinReverse:!1,beat:!1,fade:!1,beatFade:!1,bounce:!1,shake:!1,symbol:!1,title:"",titleId:null,transform:null,swapOpacity:!1};var La=function n(t,a){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if("string"==typeof a)return a;var r=(a.children||[]).map((function(a){return n(t,a)})),i=Object.keys(a.attributes||{}).reduce((function(n,t){var e=a.attributes[t];switch(t){case"class":n.attrs.className=e,delete a.attributes.class;break;case"style":n.attrs.style=e.split(";").map((function(n){return n.trim()})).filter((function(n){return n})).reduce((function(n,t){var a,e=t.indexOf(":"),r=Ca(t.slice(0,e)),i=t.slice(e+1).trim();return r.startsWith("webkit")?n[(a=r,a.charAt(0).toUpperCase()+a.slice(1))]=i:n[r]=i,n}),{});break;default:0===t.indexOf("aria-")||0===t.indexOf("data-")?n.attrs[t.toLowerCase()]=e:n.attrs[Ca(t)]=e}return n}),{attrs:{}}),o=e.style,s=void 0===o?{}:o,c=Na(e,Sa);return i.attrs.style=xa(xa({},i.attrs.style),s),t.apply(void 0,[a.tag,xa(xa({},i.attrs),c)].concat(Pa(r)))}.bind(null,ka.createElement)},7875:(n,t,a)=>{a.d(t,{IAJ:()=>e,T03:()=>r});var e={prefix:"fab",iconName:"linkedin",icon:[448,512,[],"f08c","M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"]},r={prefix:"fab",iconName:"medium",icon:[640,512,[62407,"medium-m"],"f23a","M180.5,74.262C80.813,74.262,0,155.633,0,256S80.819,437.738,180.5,437.738,361,356.373,361,256,280.191,74.262,180.5,74.262Zm288.25,10.646c-49.845,0-90.245,76.619-90.245,171.095s40.406,171.1,90.251,171.1,90.251-76.619,90.251-171.1H559C559,161.5,518.6,84.908,468.752,84.908Zm139.506,17.821c-17.526,0-31.735,68.628-31.735,153.274s14.2,153.274,31.735,153.274S640,340.631,640,256C640,171.351,625.785,102.729,608.258,102.729Z"]}},6188:(n,t,a)=>{a.d(t,{UHg:()=>r});var e={prefix:"fas",iconName:"angles-right",icon:[512,512,[187,"angle-double-right"],"f101","M470.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 256 265.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160zm-352 160l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L210.7 256 73.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z"]},r=e}}]); \ No newline at end of file diff --git a/assets/js/5b48c0f7.c74b3358.js b/assets/js/5b48c0f7.c243247a.js similarity index 99% rename from assets/js/5b48c0f7.c74b3358.js rename to assets/js/5b48c0f7.c243247a.js index 7660f14..baf8b5b 100644 --- a/assets/js/5b48c0f7.c74b3358.js +++ b/assets/js/5b48c0f7.c243247a.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4386],{7957:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>_,contentTitle:()=>a,default:()=>S,frontMatter:()=>o,metadata:()=>E,toc:()=>l});var t=s(4848),r=s(8453);const o={},a="Shuffle",E={id:"Shuffle",title:"Shuffle",description:"Resources",source:"@site/docs/Shuffle.mdx",sourceDirName:".",slug:"/Shuffle",permalink:"/docs/Shuffle",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1708051930,formattedLastUpdatedAt:"Feb 16, 2024",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Resources",permalink:"/docs/Security Operations/secops-resources"},next:{title:"Cortex Neurons",permalink:"/docs/TheHive/cortex-neurons"}},_={},l=[{value:"Resources",id:"resources",level:2},{value:"Scripts",id:"scripts",level:2},{value:"Updating Shuffle",id:"updating-shuffle",level:3},{value:"Configuration",id:"configuration",level:2},{value:"Frontend / Backend / DB / "Manager"",id:"frontend--backend--db--manager",level:3},{value:"Worker / Orborus",id:"worker--orborus",level:3},{value:"Issues",id:"issues",level:2},{value:"App malfunctioning",id:"app-malfunctioning",level:3},{value:"Delete the docker image",id:"delete-the-docker-image",level:4}];function i(e){const n={a:"a",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"shuffle",children:"Shuffle"}),"\n",(0,t.jsx)(n.h2,{id:"resources",children:"Resources"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"https://shuffler.io/docs/configuration",children:"Shuffle documentation"})}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"scripts",children:"Scripts"}),"\n",(0,t.jsx)(n.h3,{id:"updating-shuffle",children:"Updating Shuffle"}),"\n",(0,t.jsx)(n.p,{children:"Valid for both Manager & Worker servers."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",metastring:'title="shuffle-update.sh"',children:"cd /opt/Shuffle\ndocker-compose down\ngit pull\ndocker-compose pull\ndocker-compose up -d --remove-orphans\ndocker pull frikky/shuffle:app_sdk\ndocker pull ghcr.io/shuffle/shuffle-worker:latest\n"})}),"\n",(0,t.jsx)(n.h2,{id:"configuration",children:"Configuration"}),"\n",(0,t.jsx)(n.h3,{id:"frontend--backend--db--manager",children:'Frontend / Backend / DB / "Manager"'}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-js",metastring:'title="Shuffle/docker-compose.yml"',children:'version: \'3\'\nservices:\n frontend:\n #build: ./frontend\n image: ghcr.io/shuffle/shuffle-frontend:latest\n container_name: shuffle-frontend\n hostname: shuffle-frontend\n ports:\n - "${FRONTEND_PORT}:80"\n - "${FRONTEND_PORT_HTTPS}:443"\n networks:\n - shuffle\n environment:\n - BACKEND_HOSTNAME=${BACKEND_HOSTNAME}\n restart: unless-stopped\n depends_on:\n - backend\n backend:\n #build: ./backend\n image: ghcr.io/shuffle/shuffle-backend:latest\n container_name: shuffle-backend\n hostname: ${BACKEND_HOSTNAME}\n # Here for debugging:\n ports:\n - "${BACKEND_PORT}:5001"\n networks:\n - shuffle\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n - ${SHUFFLE_APP_HOTLOAD_LOCATION}:/shuffle-apps\n - ${SHUFFLE_FILE_LOCATION}:/shuffle-files\n #- ${SHUFFLE_OPENSEARCH_CERTIFICATE_FILE}:/shuffle-files/es_certificate\n env_file: .env\n environment:\n - SHUFFLE_APP_HOTLOAD_FOLDER=/shuffle-apps\n - SHUFFLE_FILE_LOCATION=/shuffle-files\n restart: unless-stopped\n depends_on:\n - opensearch #Not necessary because dependancy is handled within the backend itself instead\n #- database\n opensearch:\n image: opensearchproject/opensearch:2\n hostname: shuffle-opensearch\n container_name: shuffle-opensearch\n environment:\n - bootstrap.memory_lock=true\n - "OPENSEARCH_JAVA_OPTS=-Xms4096m -Xmx4096m" # minimum and maximum Java heap size, recommend setting both to 50% of system RAM\n - cluster.routing.allocation.disk.threshold_enabled=false\n - cluster.name=shuffle-cluster\n - node.name=shuffle-opensearch\n - discovery.seed_hosts=shuffle-opensearch\n - cluster.initial_master_nodes=shuffle-opensearch\n - node.store.allow_mmap=false\n ulimits:\n memlock:\n soft: -1\n hard: -1\n nofile:\n soft: 65536 \n hard: 65536\n volumes:\n - ${DB_LOCATION}:/usr/share/opensearch/data:rw\n ports:\n - 9200:9200\n networks:\n - shuffle\n restart: unless-stopped\nnetworks:\n shuffle:\n driver: bridge\n #driver: overlay \n'})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-js",metastring:'title="Shuffle/.env"',children:'# Default execution environment for workers\nORG_ID=Shuffle\nENVIRONMENT_NAME=Shuffle\n\n\n# Remote github config for first load\nSHUFFLE_DOWNLOAD_WORKFLOW_LOCATION=\nSHUFFLE_DOWNLOAD_WORKFLOW_USERNAME=\nSHUFFLE_DOWNLOAD_WORKFLOW_PASSWORD=\nSHUFFLE_DOWNLOAD_WORKFLOW_BRANCH=\n\nSHUFFLE_APP_DOWNLOAD_LOCATION=https://github.com/nusantara-self/Shuffle-apps\nSHUFFLE_DOWNLOAD_AUTH_USERNAME=\nSHUFFLE_DOWNLOAD_AUTH_PASSWORD=\nSHUFFLE_DOWNLOAD_AUTH_BRANCH=\nSHUFFLE_APP_FORCE_UPDATE=false\nSSO_REDIRECT_URL=https://your-shuffle-domain-name.com\n\n\n# User config for first load. Username & PW: min length 3\nSHUFFLE_DEFAULT_USERNAME=\nSHUFFLE_DEFAULT_PASSWORD=\nSHUFFLE_DEFAULT_APIKEY=\n\n# Local location of your app directory. Can\'t use ~/\n# Files will get better at some point. Right now: local saving.\nSHUFFLE_APP_HOTLOAD_FOLDER=./shuffle-apps\nSHUFFLE_APP_HOTLOAD_LOCATION=./shuffle-apps\nSHUFFLE_FILE_LOCATION=./shuffle-files\n\n# Encryption modifier. This HAS to be set to encrypt any authentication being used in Shuffle. This is put together with other relevant values to ensure multiple parts are needed to decrypt. \n# If this key is lost or changed, you will have to reauthenticate all apps.\nSHUFFLE_ENCRYPTION_MODIFIER=\n\n# Other configs\nBASE_URL=http://shuffle-backend:5001 \nBACKEND_HOSTNAME=shuffle-backend\nBACKEND_PORT=5001\nFRONTEND_PORT=3001\nFRONTEND_PORT_HTTPS=3443\n\n# CHANGE THIS IF YOU WANT GOOD LOCAL EXECUTIONS:\nOUTER_HOSTNAME=shuffle-backend\nDB_LOCATION=./shuffle-database\nDOCKER_API_VERSION=1.40\n\n# Proxy configurations. SHUFFLE_PASS_WORKER_PROXY must be FALSE to not pass the proxy information to sub-apps.\n# PS: It will skip proxy for \nHTTP_PROXY=\nHTTPS_PROXY=\nSHUFFLE_PASS_WORKER_PROXY=TRUE\nSHUFFLE_PASS_APP_PROXY=FALSE\nTZ=Europe/Amsterdam \t\t\t\t\t# Timezone-handler in Orborus, Worker and Apps\nORBORUS_CONTAINER_NAME=\t\t\t\t# Used to FIND the containername. cgroup v2: issue 501\n\nSHUFFLE_BASE_IMAGE_NAME=shuffle\nSHUFFLE_BASE_IMAGE_REGISTRY=ghcr.io\nSHUFFLE_BASE_IMAGE_TAG_SUFFIX="-1.1.0"\n\n# Used for auto-cleanup of containers. REALLY important at scale.\nSHUFFLE_CONTAINER_AUTO_CLEANUP=true\nSHUFFLE_ELASTIC=true\nSHUFFLE_LOGS_DISABLED=false\nSHUFFLE_CHAT_DISABLED=false\nSHUFFLE_RERUN_SCHEDULE=300\n\n# DATABASE CONFIGURATIONS\nDATASTORE_EMULATOR_HOST=shuffle-database:8000\n#SHUFFLE_OPENSEARCH_URL=http://shuffle-opensearch:9200\nSHUFFLE_OPENSEARCH_URL=https://shuffle-opensearch:9200\nSHUFFLE_OPENSEARCH_USERNAME=admin\nSHUFFLE_OPENSEARCH_PASSWORD=admin\nSHUFFLE_OPENSEARCH_CERTIFICATE_FILE=\nSHUFFLE_OPENSEARCH_APIKEY=\nSHUFFLE_OPENSEARCH_CLOUDID=\nSHUFFLE_OPENSEARCH_PROXY=\nSHUFFLE_OPENSEARCH_INDEX_PREFIX=\nSHUFFLE_OPENSEARCH_SKIPSSL_VERIFY=true\n\n'})}),"\n",(0,t.jsx)(n.h3,{id:"worker--orborus",children:"Worker / Orborus"}),"\n",(0,t.jsx)(n.p,{children:"On a separate server"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-js",metastring:'title="Shuffle/docker-compose.yml"',children:"version: '3'\nservices:\n orborus:\n #build: ./functions/onprem/orborus\n image: ghcr.io/shuffle/shuffle-orborus:latest\n container_name: shuffle-orborus\n hostname: shuffle-orborus\n networks:\n - shuffle\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n environment:\n - SHUFFLE_WORKER_VERSION=latest\n - SHUFFLE_APP_SDK_VERSION=latest\n - ORG_ID=${ENVIRONMENT_NAME}\n - ENVIRONMENT_NAME=${ENVIRONMENT_NAME}\n - BASE_URL=http://MANAGER-IP:5001\n - DOCKER_API_VERSION=1.40\n - SHUFFLE_BASE_IMAGE_NAME=${SHUFFLE_BASE_IMAGE_NAME}\n - SHUFFLE_BASE_IMAGE_REGISTRY=${SHUFFLE_BASE_IMAGE_REGISTRY}\n - SHUFFLE_BASE_IMAGE_TAG_SUFFIX=${SHUFFLE_BASE_IMAGE_TAG_SUFFIX}\n - HTTP_PROXY=${HTTP_PROXY}\n - HTTPS_PROXY=${HTTPS_PROXY}\n - SHUFFLE_PASS_WORKER_PROXY=${SHUFFLE_PASS_WORKER_PROXY}\n - SHUFFLE_PASS_APP_PROXY=${SHUFFLE_PASS_APP_PROXY}\n - SHUFFLE_ORBORUS_EXECUTION_TIMEOUT=550\n - SHUFFLE_ORBORUS_EXECUTION_CONCURRENCY=25\n - CLEANUP=true\n restart: unless-stopped\nnetworks:\n shuffle:\n driver: bridge\n"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",metastring:'title="Example of Shuffle/.env"',children:'# Default execution environment for workers\nORG_ID=Shuffle\nENVIRONMENT_NAME=OrborusPROD\n\n\n# Remote github config for first load\nSHUFFLE_DOWNLOAD_WORKFLOW_LOCATION=\nSHUFFLE_DOWNLOAD_WORKFLOW_USERNAME=\nSHUFFLE_DOWNLOAD_WORKFLOW_PASSWORD=\nSHUFFLE_DOWNLOAD_WORKFLOW_BRANCH=\n\nSHUFFLE_APP_DOWNLOAD_LOCATION=https://github.com/shuffle/python-apps\nSHUFFLE_DOWNLOAD_AUTH_USERNAME=\nSHUFFLE_DOWNLOAD_AUTH_PASSWORD=\nSHUFFLE_DOWNLOAD_AUTH_BRANCH=\nSHUFFLE_APP_FORCE_UPDATE=false\n\n# User config for first load. Username & PW: min length 3\nSHUFFLE_DEFAULT_USERNAME=\nSHUFFLE_DEFAULT_PASSWORD=\nSHUFFLE_DEFAULT_APIKEY=\n\n# Local location of your app directory. Can\'t use ~/\n# Files will get better at some point. Right now: local saving.\nSHUFFLE_APP_HOTLOAD_FOLDER=./shuffle-apps\nSHUFFLE_APP_HOTLOAD_LOCATION=./shuffle-apps\nSHUFFLE_FILE_LOCATION=./shuffle-files\n\n# Encryption modifier. This HAS to be set to encrypt any authentication being used in Shuffle. This is put together with other relevant values to ensure multiple parts are needed to decrypt. \n# If this key is lost or changed, you will have to reauthenticate all apps.\nSHUFFLE_ENCRYPTION_MODIFIER=\n\n# Other configs\nBASE_URL=http://shuffle-backend:5001 \nBACKEND_HOSTNAME=shuffle-backend\nBACKEND_PORT=5001\nFRONTEND_PORT=3001\nFRONTEND_PORT_HTTPS=3443\n\n# CHANGE THIS IF YOU WANT GOOD LOCAL EXECUTIONS:\nOUTER_HOSTNAME=shuffle-backend\nDB_LOCATION=./shuffle-database\nDOCKER_API_VERSION=1.40\n\n# Proxy configurations. SHUFFLE_PASS_WORKER_PROXY must be FALSE to not pass the proxy information to sub-apps.\n# PS: It will skip proxy for \nHTTP_PROXY=\nHTTPS_PROXY=\nSHUFFLE_PASS_WORKER_PROXY=TRUE\nSHUFFLE_PASS_APP_PROXY=FALSE\nTZ=Europe/Amsterdam \t\t\t\t\t# Timezone-handler in Orborus, Worker and Apps\nORBORUS_CONTAINER_NAME=\t\t\t\t# Used to FIND the containername. cgroup v2: issue 501\n\nSHUFFLE_BASE_IMAGE_NAME=shuffle\nSHUFFLE_BASE_IMAGE_REGISTRY=ghcr.io\nSHUFFLE_BASE_IMAGE_TAG_SUFFIX="-1.1.0"\n\n# Used for auto-cleanup of containers. REALLY important at scale.\nSHUFFLE_CONTAINER_AUTO_CLEANUP=true\nSHUFFLE_ELASTIC=true\nSHUFFLE_LOGS_DISABLED=false\n\n# Cleans up any containers related to Shuffle that have been up for more than 600 seconds.\nSHUFFLE_ORBORUS_EXECUTION_TIMEOUT=500\n\n# Decides the max amount of workflows to concurrenly run. Defaults to 10.\n# Example math: 10 workflows * WITH 10 apps / second = 110 containers per second.\n# We recommend starting with 10 and going higher as need be.\nSHUFFLE_ORBORUS_EXECUTION_CONCURRENCY=30\n\n# DATABASE CONFIGURATIONS\nDATASTORE_EMULATOR_HOST=shuffle-database:8000\n#SHUFFLE_OPENSEARCH_URL=http://shuffle-opensearch:9200\nSHUFFLE_OPENSEARCH_URL=https://shuffle-opensearch:9200\nSHUFFLE_OPENSEARCH_USERNAME=admin\nSHUFFLE_OPENSEARCH_PASSWORD=admin\nSHUFFLE_OPENSEARCH_CERTIFICATE_FILE=\nSHUFFLE_OPENSEARCH_APIKEY=\nSHUFFLE_OPENSEARCH_CLOUDID=\nSHUFFLE_OPENSEARCH_PROXY=\nSHUFFLE_OPENSEARCH_INDEX_PREFIX=\nSHUFFLE_OPENSEARCH_SKIPSSL_VERIFY=true\n\n'})}),"\n",(0,t.jsx)(n.h2,{id:"issues",children:"Issues"}),"\n",(0,t.jsx)(n.h3,{id:"app-malfunctioning",children:"App malfunctioning"}),"\n",(0,t.jsxs)(n.p,{children:["When an application is not working as expected, a few actions may need to be taken. ",(0,t.jsx)(n.em,{children:"(incomplete listing)"})]}),"\n",(0,t.jsx)(n.h4,{id:"delete-the-docker-image",children:"Delete the docker image"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"docker image ls\ndocker rmi frikky/shuffle:exampleapp_1.0.1\n"})})]})}function S(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(i,{...e})}):i(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>a,x:()=>E});var t=s(6540);const r={},o=t.createContext(r);function a(e){const n=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function E(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),t.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4386],{7957:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>_,contentTitle:()=>a,default:()=>S,frontMatter:()=>o,metadata:()=>E,toc:()=>l});var t=s(4848),r=s(8453);const o={},a="Shuffle",E={id:"Shuffle",title:"Shuffle",description:"Resources",source:"@site/docs/Shuffle.mdx",sourceDirName:".",slug:"/Shuffle",permalink:"/docs/Shuffle",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1708326742,formattedLastUpdatedAt:"Feb 19, 2024",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Resources",permalink:"/docs/Security Operations/secops-resources"},next:{title:"Cortex Neurons",permalink:"/docs/TheHive/cortex-neurons"}},_={},l=[{value:"Resources",id:"resources",level:2},{value:"Scripts",id:"scripts",level:2},{value:"Updating Shuffle",id:"updating-shuffle",level:3},{value:"Configuration",id:"configuration",level:2},{value:"Frontend / Backend / DB / "Manager"",id:"frontend--backend--db--manager",level:3},{value:"Worker / Orborus",id:"worker--orborus",level:3},{value:"Issues",id:"issues",level:2},{value:"App malfunctioning",id:"app-malfunctioning",level:3},{value:"Delete the docker image",id:"delete-the-docker-image",level:4}];function i(e){const n={a:"a",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"shuffle",children:"Shuffle"}),"\n",(0,t.jsx)(n.h2,{id:"resources",children:"Resources"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"https://shuffler.io/docs/configuration",children:"Shuffle documentation"})}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"scripts",children:"Scripts"}),"\n",(0,t.jsx)(n.h3,{id:"updating-shuffle",children:"Updating Shuffle"}),"\n",(0,t.jsx)(n.p,{children:"Valid for both Manager & Worker servers."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",metastring:'title="shuffle-update.sh"',children:"cd /opt/Shuffle\ndocker-compose down\ngit pull\ndocker-compose pull\ndocker-compose up -d --remove-orphans\ndocker pull frikky/shuffle:app_sdk\ndocker pull ghcr.io/shuffle/shuffle-worker:latest\n"})}),"\n",(0,t.jsx)(n.h2,{id:"configuration",children:"Configuration"}),"\n",(0,t.jsx)(n.h3,{id:"frontend--backend--db--manager",children:'Frontend / Backend / DB / "Manager"'}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-js",metastring:'title="Shuffle/docker-compose.yml"',children:'version: \'3\'\nservices:\n frontend:\n #build: ./frontend\n image: ghcr.io/shuffle/shuffle-frontend:latest\n container_name: shuffle-frontend\n hostname: shuffle-frontend\n ports:\n - "${FRONTEND_PORT}:80"\n - "${FRONTEND_PORT_HTTPS}:443"\n networks:\n - shuffle\n environment:\n - BACKEND_HOSTNAME=${BACKEND_HOSTNAME}\n restart: unless-stopped\n depends_on:\n - backend\n backend:\n #build: ./backend\n image: ghcr.io/shuffle/shuffle-backend:latest\n container_name: shuffle-backend\n hostname: ${BACKEND_HOSTNAME}\n # Here for debugging:\n ports:\n - "${BACKEND_PORT}:5001"\n networks:\n - shuffle\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n - ${SHUFFLE_APP_HOTLOAD_LOCATION}:/shuffle-apps\n - ${SHUFFLE_FILE_LOCATION}:/shuffle-files\n #- ${SHUFFLE_OPENSEARCH_CERTIFICATE_FILE}:/shuffle-files/es_certificate\n env_file: .env\n environment:\n - SHUFFLE_APP_HOTLOAD_FOLDER=/shuffle-apps\n - SHUFFLE_FILE_LOCATION=/shuffle-files\n restart: unless-stopped\n depends_on:\n - opensearch #Not necessary because dependancy is handled within the backend itself instead\n #- database\n opensearch:\n image: opensearchproject/opensearch:2\n hostname: shuffle-opensearch\n container_name: shuffle-opensearch\n environment:\n - bootstrap.memory_lock=true\n - "OPENSEARCH_JAVA_OPTS=-Xms4096m -Xmx4096m" # minimum and maximum Java heap size, recommend setting both to 50% of system RAM\n - cluster.routing.allocation.disk.threshold_enabled=false\n - cluster.name=shuffle-cluster\n - node.name=shuffle-opensearch\n - discovery.seed_hosts=shuffle-opensearch\n - cluster.initial_master_nodes=shuffle-opensearch\n - node.store.allow_mmap=false\n ulimits:\n memlock:\n soft: -1\n hard: -1\n nofile:\n soft: 65536 \n hard: 65536\n volumes:\n - ${DB_LOCATION}:/usr/share/opensearch/data:rw\n ports:\n - 9200:9200\n networks:\n - shuffle\n restart: unless-stopped\nnetworks:\n shuffle:\n driver: bridge\n #driver: overlay \n'})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-js",metastring:'title="Shuffle/.env"',children:'# Default execution environment for workers\nORG_ID=Shuffle\nENVIRONMENT_NAME=Shuffle\n\n\n# Remote github config for first load\nSHUFFLE_DOWNLOAD_WORKFLOW_LOCATION=\nSHUFFLE_DOWNLOAD_WORKFLOW_USERNAME=\nSHUFFLE_DOWNLOAD_WORKFLOW_PASSWORD=\nSHUFFLE_DOWNLOAD_WORKFLOW_BRANCH=\n\nSHUFFLE_APP_DOWNLOAD_LOCATION=https://github.com/nusantara-self/Shuffle-apps\nSHUFFLE_DOWNLOAD_AUTH_USERNAME=\nSHUFFLE_DOWNLOAD_AUTH_PASSWORD=\nSHUFFLE_DOWNLOAD_AUTH_BRANCH=\nSHUFFLE_APP_FORCE_UPDATE=false\nSSO_REDIRECT_URL=https://your-shuffle-domain-name.com\n\n\n# User config for first load. Username & PW: min length 3\nSHUFFLE_DEFAULT_USERNAME=\nSHUFFLE_DEFAULT_PASSWORD=\nSHUFFLE_DEFAULT_APIKEY=\n\n# Local location of your app directory. Can\'t use ~/\n# Files will get better at some point. Right now: local saving.\nSHUFFLE_APP_HOTLOAD_FOLDER=./shuffle-apps\nSHUFFLE_APP_HOTLOAD_LOCATION=./shuffle-apps\nSHUFFLE_FILE_LOCATION=./shuffle-files\n\n# Encryption modifier. This HAS to be set to encrypt any authentication being used in Shuffle. This is put together with other relevant values to ensure multiple parts are needed to decrypt. \n# If this key is lost or changed, you will have to reauthenticate all apps.\nSHUFFLE_ENCRYPTION_MODIFIER=\n\n# Other configs\nBASE_URL=http://shuffle-backend:5001 \nBACKEND_HOSTNAME=shuffle-backend\nBACKEND_PORT=5001\nFRONTEND_PORT=3001\nFRONTEND_PORT_HTTPS=3443\n\n# CHANGE THIS IF YOU WANT GOOD LOCAL EXECUTIONS:\nOUTER_HOSTNAME=shuffle-backend\nDB_LOCATION=./shuffle-database\nDOCKER_API_VERSION=1.40\n\n# Proxy configurations. SHUFFLE_PASS_WORKER_PROXY must be FALSE to not pass the proxy information to sub-apps.\n# PS: It will skip proxy for \nHTTP_PROXY=\nHTTPS_PROXY=\nSHUFFLE_PASS_WORKER_PROXY=TRUE\nSHUFFLE_PASS_APP_PROXY=FALSE\nTZ=Europe/Amsterdam \t\t\t\t\t# Timezone-handler in Orborus, Worker and Apps\nORBORUS_CONTAINER_NAME=\t\t\t\t# Used to FIND the containername. cgroup v2: issue 501\n\nSHUFFLE_BASE_IMAGE_NAME=shuffle\nSHUFFLE_BASE_IMAGE_REGISTRY=ghcr.io\nSHUFFLE_BASE_IMAGE_TAG_SUFFIX="-1.1.0"\n\n# Used for auto-cleanup of containers. REALLY important at scale.\nSHUFFLE_CONTAINER_AUTO_CLEANUP=true\nSHUFFLE_ELASTIC=true\nSHUFFLE_LOGS_DISABLED=false\nSHUFFLE_CHAT_DISABLED=false\nSHUFFLE_RERUN_SCHEDULE=300\n\n# DATABASE CONFIGURATIONS\nDATASTORE_EMULATOR_HOST=shuffle-database:8000\n#SHUFFLE_OPENSEARCH_URL=http://shuffle-opensearch:9200\nSHUFFLE_OPENSEARCH_URL=https://shuffle-opensearch:9200\nSHUFFLE_OPENSEARCH_USERNAME=admin\nSHUFFLE_OPENSEARCH_PASSWORD=admin\nSHUFFLE_OPENSEARCH_CERTIFICATE_FILE=\nSHUFFLE_OPENSEARCH_APIKEY=\nSHUFFLE_OPENSEARCH_CLOUDID=\nSHUFFLE_OPENSEARCH_PROXY=\nSHUFFLE_OPENSEARCH_INDEX_PREFIX=\nSHUFFLE_OPENSEARCH_SKIPSSL_VERIFY=true\n\n'})}),"\n",(0,t.jsx)(n.h3,{id:"worker--orborus",children:"Worker / Orborus"}),"\n",(0,t.jsx)(n.p,{children:"On a separate server"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-js",metastring:'title="Shuffle/docker-compose.yml"',children:"version: '3'\nservices:\n orborus:\n #build: ./functions/onprem/orborus\n image: ghcr.io/shuffle/shuffle-orborus:latest\n container_name: shuffle-orborus\n hostname: shuffle-orborus\n networks:\n - shuffle\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n environment:\n - SHUFFLE_WORKER_VERSION=latest\n - SHUFFLE_APP_SDK_VERSION=latest\n - ORG_ID=${ENVIRONMENT_NAME}\n - ENVIRONMENT_NAME=${ENVIRONMENT_NAME}\n - BASE_URL=http://MANAGER-IP:5001\n - DOCKER_API_VERSION=1.40\n - SHUFFLE_BASE_IMAGE_NAME=${SHUFFLE_BASE_IMAGE_NAME}\n - SHUFFLE_BASE_IMAGE_REGISTRY=${SHUFFLE_BASE_IMAGE_REGISTRY}\n - SHUFFLE_BASE_IMAGE_TAG_SUFFIX=${SHUFFLE_BASE_IMAGE_TAG_SUFFIX}\n - HTTP_PROXY=${HTTP_PROXY}\n - HTTPS_PROXY=${HTTPS_PROXY}\n - SHUFFLE_PASS_WORKER_PROXY=${SHUFFLE_PASS_WORKER_PROXY}\n - SHUFFLE_PASS_APP_PROXY=${SHUFFLE_PASS_APP_PROXY}\n - SHUFFLE_ORBORUS_EXECUTION_TIMEOUT=550\n - SHUFFLE_ORBORUS_EXECUTION_CONCURRENCY=25\n - CLEANUP=true\n restart: unless-stopped\nnetworks:\n shuffle:\n driver: bridge\n"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",metastring:'title="Example of Shuffle/.env"',children:'# Default execution environment for workers\nORG_ID=Shuffle\nENVIRONMENT_NAME=OrborusPROD\n\n\n# Remote github config for first load\nSHUFFLE_DOWNLOAD_WORKFLOW_LOCATION=\nSHUFFLE_DOWNLOAD_WORKFLOW_USERNAME=\nSHUFFLE_DOWNLOAD_WORKFLOW_PASSWORD=\nSHUFFLE_DOWNLOAD_WORKFLOW_BRANCH=\n\nSHUFFLE_APP_DOWNLOAD_LOCATION=https://github.com/shuffle/python-apps\nSHUFFLE_DOWNLOAD_AUTH_USERNAME=\nSHUFFLE_DOWNLOAD_AUTH_PASSWORD=\nSHUFFLE_DOWNLOAD_AUTH_BRANCH=\nSHUFFLE_APP_FORCE_UPDATE=false\n\n# User config for first load. Username & PW: min length 3\nSHUFFLE_DEFAULT_USERNAME=\nSHUFFLE_DEFAULT_PASSWORD=\nSHUFFLE_DEFAULT_APIKEY=\n\n# Local location of your app directory. Can\'t use ~/\n# Files will get better at some point. Right now: local saving.\nSHUFFLE_APP_HOTLOAD_FOLDER=./shuffle-apps\nSHUFFLE_APP_HOTLOAD_LOCATION=./shuffle-apps\nSHUFFLE_FILE_LOCATION=./shuffle-files\n\n# Encryption modifier. This HAS to be set to encrypt any authentication being used in Shuffle. This is put together with other relevant values to ensure multiple parts are needed to decrypt. \n# If this key is lost or changed, you will have to reauthenticate all apps.\nSHUFFLE_ENCRYPTION_MODIFIER=\n\n# Other configs\nBASE_URL=http://shuffle-backend:5001 \nBACKEND_HOSTNAME=shuffle-backend\nBACKEND_PORT=5001\nFRONTEND_PORT=3001\nFRONTEND_PORT_HTTPS=3443\n\n# CHANGE THIS IF YOU WANT GOOD LOCAL EXECUTIONS:\nOUTER_HOSTNAME=shuffle-backend\nDB_LOCATION=./shuffle-database\nDOCKER_API_VERSION=1.40\n\n# Proxy configurations. SHUFFLE_PASS_WORKER_PROXY must be FALSE to not pass the proxy information to sub-apps.\n# PS: It will skip proxy for \nHTTP_PROXY=\nHTTPS_PROXY=\nSHUFFLE_PASS_WORKER_PROXY=TRUE\nSHUFFLE_PASS_APP_PROXY=FALSE\nTZ=Europe/Amsterdam \t\t\t\t\t# Timezone-handler in Orborus, Worker and Apps\nORBORUS_CONTAINER_NAME=\t\t\t\t# Used to FIND the containername. cgroup v2: issue 501\n\nSHUFFLE_BASE_IMAGE_NAME=shuffle\nSHUFFLE_BASE_IMAGE_REGISTRY=ghcr.io\nSHUFFLE_BASE_IMAGE_TAG_SUFFIX="-1.1.0"\n\n# Used for auto-cleanup of containers. REALLY important at scale.\nSHUFFLE_CONTAINER_AUTO_CLEANUP=true\nSHUFFLE_ELASTIC=true\nSHUFFLE_LOGS_DISABLED=false\n\n# Cleans up any containers related to Shuffle that have been up for more than 600 seconds.\nSHUFFLE_ORBORUS_EXECUTION_TIMEOUT=500\n\n# Decides the max amount of workflows to concurrenly run. Defaults to 10.\n# Example math: 10 workflows * WITH 10 apps / second = 110 containers per second.\n# We recommend starting with 10 and going higher as need be.\nSHUFFLE_ORBORUS_EXECUTION_CONCURRENCY=30\n\n# DATABASE CONFIGURATIONS\nDATASTORE_EMULATOR_HOST=shuffle-database:8000\n#SHUFFLE_OPENSEARCH_URL=http://shuffle-opensearch:9200\nSHUFFLE_OPENSEARCH_URL=https://shuffle-opensearch:9200\nSHUFFLE_OPENSEARCH_USERNAME=admin\nSHUFFLE_OPENSEARCH_PASSWORD=admin\nSHUFFLE_OPENSEARCH_CERTIFICATE_FILE=\nSHUFFLE_OPENSEARCH_APIKEY=\nSHUFFLE_OPENSEARCH_CLOUDID=\nSHUFFLE_OPENSEARCH_PROXY=\nSHUFFLE_OPENSEARCH_INDEX_PREFIX=\nSHUFFLE_OPENSEARCH_SKIPSSL_VERIFY=true\n\n'})}),"\n",(0,t.jsx)(n.h2,{id:"issues",children:"Issues"}),"\n",(0,t.jsx)(n.h3,{id:"app-malfunctioning",children:"App malfunctioning"}),"\n",(0,t.jsxs)(n.p,{children:["When an application is not working as expected, a few actions may need to be taken. ",(0,t.jsx)(n.em,{children:"(incomplete listing)"})]}),"\n",(0,t.jsx)(n.h4,{id:"delete-the-docker-image",children:"Delete the docker image"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"docker image ls\ndocker rmi frikky/shuffle:exampleapp_1.0.1\n"})})]})}function S(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(i,{...e})}):i(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>a,x:()=>E});var t=s(6540);const r={},o=t.createContext(r);function a(e){const n=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function E(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),t.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5e95c892.25ed6bcb.js b/assets/js/5e95c892.25ed6bcb.js deleted file mode 100644 index 150d1dc..0000000 --- a/assets/js/5e95c892.25ed6bcb.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9647],{7121:(e,s,r)=>{r.r(s),r.d(s,{default:()=>l});r(6540);var t=r(8215),u=r(1003),a=r(7559),c=r(2831),n=r(781),i=r(4848);function l(e){return(0,i.jsx)(u.e3,{className:(0,t.A)(a.G.wrapper.docsPages),children:(0,i.jsx)(n.A,{children:(0,c.v)(e.route.routes)})})}}}]); \ No newline at end of file diff --git a/assets/js/5e95c892.8110b3ef.js b/assets/js/5e95c892.8110b3ef.js new file mode 100644 index 0000000..dd0b969 --- /dev/null +++ b/assets/js/5e95c892.8110b3ef.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9647],{7121:(e,s,r)=>{r.r(s),r.d(s,{default:()=>l});r(6540);var t=r(8215),u=r(1003),a=r(7559),c=r(2831),n=r(8789),i=r(4848);function l(e){return(0,i.jsx)(u.e3,{className:(0,t.A)(a.G.wrapper.docsPages),children:(0,i.jsx)(n.A,{children:(0,c.v)(e.route.routes)})})}}}]); \ No newline at end of file diff --git a/assets/js/7dd8714f.677c563a.js b/assets/js/7dd8714f.85901922.js similarity index 98% rename from assets/js/7dd8714f.677c563a.js rename to assets/js/7dd8714f.85901922.js index 65f89c2..d8eea9e 100644 --- a/assets/js/7dd8714f.677c563a.js +++ b/assets/js/7dd8714f.85901922.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[804],{7130:(t,e,r)=>{r.r(e),r.d(e,{assets:()=>d,contentTitle:()=>n,default:()=>o,frontMatter:()=>c,metadata:()=>h,toc:()=>l});var s=r(4848),i=r(8453);const c={},n="Resources",h={id:"Security Operations/secops-resources",title:"Resources",description:"MITRE Frameworks",source:"@site/docs/Security Operations/secops-resources.md",sourceDirName:"Security Operations",slug:"/Security Operations/secops-resources",permalink:"/docs/Security Operations/secops-resources",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1708051930,formattedLastUpdatedAt:"Feb 16, 2024",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Hi!",permalink:"/docs/GCP/Terraform/init"},next:{title:"Shuffle",permalink:"/docs/Shuffle"}},d={},l=[{value:"MITRE Frameworks",id:"mitre-frameworks",level:2},{value:"MITRE ATT&CK-related",id:"mitre-attck-related",level:2},{value:"CTI",id:"cti",level:3},{value:"Detection / Hunting / Blue Teams",id:"detection--hunting--blue-teams",level:3},{value:"Prevention / Purple-Red Teams / Testing of Controls",id:"prevention--purple-red-teams--testing-of-controls",level:3},{value:"Unclassified",id:"unclassified",level:3}];function a(t){const e={a:"a",h1:"h1",h2:"h2",h3:"h3",li:"li",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...t.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(e.h1,{id:"resources",children:"Resources"}),"\n",(0,s.jsx)(e.h2,{id:"mitre-frameworks",children:"MITRE Frameworks"}),"\n",(0,s.jsxs)(e.ul,{children:["\n",(0,s.jsx)(e.li,{children:(0,s.jsx)(e.a,{href:"https://attack.mitre.org/",children:"MITRE ATT&CK"})}),"\n",(0,s.jsx)(e.li,{children:(0,s.jsx)(e.a,{href:"https://d3fend.mitre.org/",children:"MITRE D3FEND"})}),"\n",(0,s.jsx)(e.li,{children:(0,s.jsx)(e.a,{href:"https://engage.mitre.org",children:"MITRE ENGAGE"})}),"\n",(0,s.jsx)(e.li,{children:(0,s.jsx)(e.a,{href:"https://atlas.mitre.org/",children:"MITRE ATLAS"})}),"\n"]}),"\n",(0,s.jsx)(e.h2,{id:"mitre-attck-related",children:"MITRE ATT&CK-related"}),"\n",(0,s.jsx)(e.h3,{id:"cti",children:"CTI"}),"\n",(0,s.jsxs)(e.table,{children:[(0,s.jsx)(e.thead,{children:(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.th,{children:"Name"}),(0,s.jsx)(e.th,{children:"Link"}),(0,s.jsx)(e.th,{children:"Owner"})]})}),(0,s.jsxs)(e.tbody,{children:[(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"Navigator"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://mitre.github.io/attack-navigator/enterprise/",children:"https://mitre.github.io/attack-navigator/enterprise/"})}),(0,s.jsx)(e.td,{children:"MITRE"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"CAR"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://car.mitre.org/wiki/Main_Page",children:"https://car.mitre.org/wiki/Main_Page"})}),(0,s.jsx)(e.td,{children:"MITRE"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"AMITT"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://github.com/misinfosecproject/amitt_framework",children:"https://github.com/misinfosecproject/amitt_framework"})}),(0,s.jsx)(e.td,{})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"MISP"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://www.misp-project.org",children:"https://www.misp-project.org"})}),(0,s.jsx)(e.td,{children:"MISP Project"})]})]})]}),"\n",(0,s.jsx)(e.h3,{id:"detection--hunting--blue-teams",children:"Detection / Hunting / Blue Teams"}),"\n",(0,s.jsxs)(e.table,{children:[(0,s.jsx)(e.thead,{children:(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.th,{children:"Name"}),(0,s.jsx)(e.th,{children:"Link"}),(0,s.jsx)(e.th,{children:"Owner"})]})}),(0,s.jsxs)(e.tbody,{children:[(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"SIGMA"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://github.com/Neo23x0/sigma",children:"https://github.com/Neo23x0/sigma"})}),(0,s.jsx)(e.td,{children:"Florian Roth / Thomas Patzke"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"SIGMA Rules"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://github.com/Neo23x0/sigma/tree/master/rules",children:"https://github.com/Neo23x0/sigma/tree/master/rules"})}),(0,s.jsx)(e.td,{children:"Florian Roth"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"OSCD Community"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://oscd.community",children:"https://oscd.community"})}),(0,s.jsx)(e.td,{})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"BZAR"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://github.com/mitre-attack/bzar",children:"https://github.com/mitre-attack/bzar"})}),(0,s.jsx)(e.td,{children:"MITRE"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"SIGMA Editor"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://tdm.socprime.com/sigma/generate/",children:"https://tdm.socprime.com/sigma/generate/"})}),(0,s.jsx)(e.td,{children:"SOCPRIME"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"UNCODER"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://uncoder.io/",children:"https://uncoder.io/"})}),(0,s.jsx)(e.td,{children:"SOCPRIME"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"Threathunter Playbook"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://github.com/Cyb3rWard0g/ThreatHunter-Playbook",children:"https://github.com/Cyb3rWard0g/ThreatHunter-Playbook"})}),(0,s.jsx)(e.td,{children:"Roberto Rodriguez"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"ThreatHunting App"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://github.com/olafhartong/ThreatHunting",children:"https://github.com/olafhartong/ThreatHunting"})}),(0,s.jsx)(e.td,{children:"Olaf Hartong"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"Atomic Threat Coverage"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://github.com/atc-project/atomic-threat-coverage",children:"https://github.com/atc-project/atomic-threat-coverage"})}),(0,s.jsx)(e.td,{children:"ATC Project"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"RE&CT"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://atc-project.github.io/atc-react/",children:"https://atc-project.github.io/atc-react/"})}),(0,s.jsx)(e.td,{children:"ATC Project"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"DETT&CT"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://github.com/rabobank-cdc/DeTTECT",children:"https://github.com/rabobank-cdc/DeTTECT"})}),(0,s.jsx)(e.td,{children:"Marcus Bakker / Ruben Bouwman"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"attack2jira"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://github.com/mvelazc0/attack2jira",children:"https://github.com/mvelazc0/attack2jira"})}),(0,s.jsx)(e.td,{children:"Mauricio Velazco"})]})]})]}),"\n",(0,s.jsx)(e.h3,{id:"prevention--purple-red-teams--testing-of-controls",children:"Prevention / Purple-Red Teams / Testing of Controls"}),"\n",(0,s.jsxs)(e.table,{children:[(0,s.jsx)(e.thead,{children:(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.th,{children:"Name"}),(0,s.jsx)(e.th,{children:"Link"}),(0,s.jsx)(e.th,{children:"Owner"})]})}),(0,s.jsxs)(e.tbody,{children:[(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"CALDERA"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://github.com/mitre/caldera",children:"https://github.com/mitre/caldera"})}),(0,s.jsx)(e.td,{children:"MITRE"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"Atomic Red Team"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://github.com/redcanaryco/atomic-red-team",children:"https://github.com/redcanaryco/atomic-red-team"})}),(0,s.jsx)(e.td,{children:"Red Canary"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"SPLUNK ATTACK Range"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://github.com/splunk/attack_range",children:"https://github.com/splunk/attack_range"})}),(0,s.jsx)(e.td,{children:"SPLUNK"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"MORDOR"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://mordordatasets.com/introduction.html",children:"https://mordordatasets.com/introduction.html"})}),(0,s.jsx)(e.td,{children:"Roberto Rodriguez"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"PurpleSharp"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://github.com/mvelazc0/PurpleSharp",children:"https://github.com/mvelazc0/PurpleSharp"})}),(0,s.jsx)(e.td,{children:"Mauricio Velazco"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"VECTR"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://github.com/SecurityRiskAdvisors/VECTR",children:"https://github.com/SecurityRiskAdvisors/VECTR"})}),(0,s.jsx)(e.td,{children:"Security Risk Advisors"})]})]})]}),"\n",(0,s.jsx)(e.h3,{id:"unclassified",children:"Unclassified"}),"\n",(0,s.jsxs)(e.ul,{children:["\n",(0,s.jsx)(e.li,{children:(0,s.jsx)(e.a,{href:"https://github.com/infosecn1nja/awesome-mitre-attack/blob/master/README.md",children:"https://github.com/infosecn1nja/awesome-mitre-attack/blob/master/README.md"})}),"\n"]})]})}function o(t={}){const{wrapper:e}={...(0,i.R)(),...t.components};return e?(0,s.jsx)(e,{...t,children:(0,s.jsx)(a,{...t})}):a(t)}},8453:(t,e,r)=>{r.d(e,{R:()=>n,x:()=>h});var s=r(6540);const i={},c=s.createContext(i);function n(t){const e=s.useContext(c);return s.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function h(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(i):t.components||i:n(t.components),s.createElement(c.Provider,{value:e},t.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[804],{7130:(t,e,r)=>{r.r(e),r.d(e,{assets:()=>d,contentTitle:()=>n,default:()=>o,frontMatter:()=>c,metadata:()=>h,toc:()=>l});var s=r(4848),i=r(8453);const c={},n="Resources",h={id:"Security Operations/secops-resources",title:"Resources",description:"MITRE Frameworks",source:"@site/docs/Security Operations/secops-resources.md",sourceDirName:"Security Operations",slug:"/Security Operations/secops-resources",permalink:"/docs/Security Operations/secops-resources",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1708326742,formattedLastUpdatedAt:"Feb 19, 2024",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Hi!",permalink:"/docs/GCP/Terraform/init"},next:{title:"Shuffle",permalink:"/docs/Shuffle"}},d={},l=[{value:"MITRE Frameworks",id:"mitre-frameworks",level:2},{value:"MITRE ATT&CK-related",id:"mitre-attck-related",level:2},{value:"CTI",id:"cti",level:3},{value:"Detection / Hunting / Blue Teams",id:"detection--hunting--blue-teams",level:3},{value:"Prevention / Purple-Red Teams / Testing of Controls",id:"prevention--purple-red-teams--testing-of-controls",level:3},{value:"Unclassified",id:"unclassified",level:3}];function a(t){const e={a:"a",h1:"h1",h2:"h2",h3:"h3",li:"li",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...t.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(e.h1,{id:"resources",children:"Resources"}),"\n",(0,s.jsx)(e.h2,{id:"mitre-frameworks",children:"MITRE Frameworks"}),"\n",(0,s.jsxs)(e.ul,{children:["\n",(0,s.jsx)(e.li,{children:(0,s.jsx)(e.a,{href:"https://attack.mitre.org/",children:"MITRE ATT&CK"})}),"\n",(0,s.jsx)(e.li,{children:(0,s.jsx)(e.a,{href:"https://d3fend.mitre.org/",children:"MITRE D3FEND"})}),"\n",(0,s.jsx)(e.li,{children:(0,s.jsx)(e.a,{href:"https://engage.mitre.org",children:"MITRE ENGAGE"})}),"\n",(0,s.jsx)(e.li,{children:(0,s.jsx)(e.a,{href:"https://atlas.mitre.org/",children:"MITRE ATLAS"})}),"\n"]}),"\n",(0,s.jsx)(e.h2,{id:"mitre-attck-related",children:"MITRE ATT&CK-related"}),"\n",(0,s.jsx)(e.h3,{id:"cti",children:"CTI"}),"\n",(0,s.jsxs)(e.table,{children:[(0,s.jsx)(e.thead,{children:(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.th,{children:"Name"}),(0,s.jsx)(e.th,{children:"Link"}),(0,s.jsx)(e.th,{children:"Owner"})]})}),(0,s.jsxs)(e.tbody,{children:[(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"Navigator"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://mitre.github.io/attack-navigator/enterprise/",children:"https://mitre.github.io/attack-navigator/enterprise/"})}),(0,s.jsx)(e.td,{children:"MITRE"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"CAR"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://car.mitre.org/wiki/Main_Page",children:"https://car.mitre.org/wiki/Main_Page"})}),(0,s.jsx)(e.td,{children:"MITRE"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"AMITT"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://github.com/misinfosecproject/amitt_framework",children:"https://github.com/misinfosecproject/amitt_framework"})}),(0,s.jsx)(e.td,{})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"MISP"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://www.misp-project.org",children:"https://www.misp-project.org"})}),(0,s.jsx)(e.td,{children:"MISP Project"})]})]})]}),"\n",(0,s.jsx)(e.h3,{id:"detection--hunting--blue-teams",children:"Detection / Hunting / Blue Teams"}),"\n",(0,s.jsxs)(e.table,{children:[(0,s.jsx)(e.thead,{children:(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.th,{children:"Name"}),(0,s.jsx)(e.th,{children:"Link"}),(0,s.jsx)(e.th,{children:"Owner"})]})}),(0,s.jsxs)(e.tbody,{children:[(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"SIGMA"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://github.com/Neo23x0/sigma",children:"https://github.com/Neo23x0/sigma"})}),(0,s.jsx)(e.td,{children:"Florian Roth / Thomas Patzke"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"SIGMA Rules"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://github.com/Neo23x0/sigma/tree/master/rules",children:"https://github.com/Neo23x0/sigma/tree/master/rules"})}),(0,s.jsx)(e.td,{children:"Florian Roth"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"OSCD Community"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://oscd.community",children:"https://oscd.community"})}),(0,s.jsx)(e.td,{})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"BZAR"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://github.com/mitre-attack/bzar",children:"https://github.com/mitre-attack/bzar"})}),(0,s.jsx)(e.td,{children:"MITRE"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"SIGMA Editor"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://tdm.socprime.com/sigma/generate/",children:"https://tdm.socprime.com/sigma/generate/"})}),(0,s.jsx)(e.td,{children:"SOCPRIME"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"UNCODER"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://uncoder.io/",children:"https://uncoder.io/"})}),(0,s.jsx)(e.td,{children:"SOCPRIME"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"Threathunter Playbook"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://github.com/Cyb3rWard0g/ThreatHunter-Playbook",children:"https://github.com/Cyb3rWard0g/ThreatHunter-Playbook"})}),(0,s.jsx)(e.td,{children:"Roberto Rodriguez"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"ThreatHunting App"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://github.com/olafhartong/ThreatHunting",children:"https://github.com/olafhartong/ThreatHunting"})}),(0,s.jsx)(e.td,{children:"Olaf Hartong"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"Atomic Threat Coverage"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://github.com/atc-project/atomic-threat-coverage",children:"https://github.com/atc-project/atomic-threat-coverage"})}),(0,s.jsx)(e.td,{children:"ATC Project"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"RE&CT"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://atc-project.github.io/atc-react/",children:"https://atc-project.github.io/atc-react/"})}),(0,s.jsx)(e.td,{children:"ATC Project"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"DETT&CT"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://github.com/rabobank-cdc/DeTTECT",children:"https://github.com/rabobank-cdc/DeTTECT"})}),(0,s.jsx)(e.td,{children:"Marcus Bakker / Ruben Bouwman"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"attack2jira"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://github.com/mvelazc0/attack2jira",children:"https://github.com/mvelazc0/attack2jira"})}),(0,s.jsx)(e.td,{children:"Mauricio Velazco"})]})]})]}),"\n",(0,s.jsx)(e.h3,{id:"prevention--purple-red-teams--testing-of-controls",children:"Prevention / Purple-Red Teams / Testing of Controls"}),"\n",(0,s.jsxs)(e.table,{children:[(0,s.jsx)(e.thead,{children:(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.th,{children:"Name"}),(0,s.jsx)(e.th,{children:"Link"}),(0,s.jsx)(e.th,{children:"Owner"})]})}),(0,s.jsxs)(e.tbody,{children:[(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"CALDERA"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://github.com/mitre/caldera",children:"https://github.com/mitre/caldera"})}),(0,s.jsx)(e.td,{children:"MITRE"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"Atomic Red Team"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://github.com/redcanaryco/atomic-red-team",children:"https://github.com/redcanaryco/atomic-red-team"})}),(0,s.jsx)(e.td,{children:"Red Canary"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"SPLUNK ATTACK Range"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://github.com/splunk/attack_range",children:"https://github.com/splunk/attack_range"})}),(0,s.jsx)(e.td,{children:"SPLUNK"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"MORDOR"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://mordordatasets.com/introduction.html",children:"https://mordordatasets.com/introduction.html"})}),(0,s.jsx)(e.td,{children:"Roberto Rodriguez"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"PurpleSharp"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://github.com/mvelazc0/PurpleSharp",children:"https://github.com/mvelazc0/PurpleSharp"})}),(0,s.jsx)(e.td,{children:"Mauricio Velazco"})]}),(0,s.jsxs)(e.tr,{children:[(0,s.jsx)(e.td,{children:"VECTR"}),(0,s.jsx)(e.td,{children:(0,s.jsx)(e.a,{href:"https://github.com/SecurityRiskAdvisors/VECTR",children:"https://github.com/SecurityRiskAdvisors/VECTR"})}),(0,s.jsx)(e.td,{children:"Security Risk Advisors"})]})]})]}),"\n",(0,s.jsx)(e.h3,{id:"unclassified",children:"Unclassified"}),"\n",(0,s.jsxs)(e.ul,{children:["\n",(0,s.jsx)(e.li,{children:(0,s.jsx)(e.a,{href:"https://github.com/infosecn1nja/awesome-mitre-attack/blob/master/README.md",children:"https://github.com/infosecn1nja/awesome-mitre-attack/blob/master/README.md"})}),"\n"]})]})}function o(t={}){const{wrapper:e}={...(0,i.R)(),...t.components};return e?(0,s.jsx)(e,{...t,children:(0,s.jsx)(a,{...t})}):a(t)}},8453:(t,e,r)=>{r.d(e,{R:()=>n,x:()=>h});var s=r(6540);const i={},c=s.createContext(i);function n(t){const e=s.useContext(c);return s.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function h(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(i):t.components||i:n(t.components),s.createElement(c.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/8037d0b1.e5531434.js b/assets/js/8037d0b1.b0f4a353.js similarity index 98% rename from assets/js/8037d0b1.e5531434.js rename to assets/js/8037d0b1.b0f4a353.js index deda180..1301f51 100644 --- a/assets/js/8037d0b1.e5531434.js +++ b/assets/js/8037d0b1.b0f4a353.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[1218],{9832:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>u,default:()=>p,frontMatter:()=>s,metadata:()=>i,toc:()=>d});var n=r(4848),a=r(8453),o=r(1470),l=r(9365);const s={},u="Port-forwarding to localhost",i={id:"GCP/Identity-Aware Proxy/port-forwarding",title:"Port-forwarding to localhost",description:"Install the gcloud CLI",source:"@site/docs/GCP/Identity-Aware Proxy/port-forwarding.md",sourceDirName:"GCP/Identity-Aware Proxy",slug:"/GCP/Identity-Aware Proxy/port-forwarding",permalink:"/docs/GCP/Identity-Aware Proxy/port-forwarding",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1708051930,formattedLastUpdatedAt:"Feb 16, 2024",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Infrastructure as Code",permalink:"/docs/Engineering/IaC"},next:{title:"Remote SSH an IAP-secured server using a terminal or VSCode",permalink:"/docs/GCP/Identity-Aware Proxy/remote-ssh-iap"}},c={},d=[{value:"Install the gcloud CLI",id:"install-the-gcloud-cli",level:2},{value:"Authentication with the CLI",id:"gcloud-auth",level:2},{value:"Port-forwarding your application port to your localhost",id:"port-forwarding-your-application-port-to-your-localhost",level:2}];function h(e){const t={a:"a",h1:"h1",h2:"h2",p:"p",strong:"strong",...(0,a.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"port-forwarding-to-localhost",children:"Port-forwarding to localhost"}),"\n","\n","\n",(0,n.jsx)(t.h2,{id:"install-the-gcloud-cli",children:"Install the gcloud CLI"}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.a,{href:"https://cloud.google.com/sdk/docs/install#linux",children:"Official documentation"})}),"\n",(0,n.jsx)(t.h2,{id:"gcloud-auth",children:"Authentication with the CLI"}),"\n",(0,n.jsxs)(t.p,{children:["Before each session you may launch, make sure to be ",(0,n.jsx)(t.strong,{children:"authenticated with your gcloud account"})," within the CLI"]}),"\n",(0,n.jsxs)(o.A,{groupId:"operating-systems",children:[(0,n.jsx)(l.A,{value:"Linux/mac",label:"Standard",children:(0,n.jsx)("pre",{children:"gcloud auth login"})}),(0,n.jsx)(l.A,{value:"WSL",label:"WSL",children:(0,n.jsx)("pre",{children:"gcloud auth login --no-launch-browser"})})]}),"\n",(0,n.jsx)(t.h2,{id:"port-forwarding-your-application-port-to-your-localhost",children:"Port-forwarding your application port to your localhost"}),"\n",(0,n.jsx)(t.p,{children:"If for instance, I am testing the great vectr purple team's app on a cloud-based instance. The frontend will be by default running on localhost:8501. As a result, I'll able to redirect such traffic to my local machine thanks to this command."}),"\n",(0,n.jsx)("pre",{children:"gcloud compute start-iap-tunnel vectr-test-instance 8501 --local-host-port=localhost:8501"}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.a,{href:"https://cloud.google.com/solutions/connecting-securely#:~:text=or%20SOCKS%20proxy.-,Port%20forwarding%20over%20SSH,host%20over%20an%20SSH%20connection.&text=LOCAL_PORT%20%3Alocalhost%3A%20REMOTE_PORT-,Replace%20the%20following%3A,your%20Google%20Cloud%20project%20ID.",children:"Official documentation"})})]})}function p(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},9365:(e,t,r)=>{r.d(t,{A:()=>l});r(6540);var n=r(8215);const a={tabItem:"tabItem_Ymn6"};var o=r(4848);function l(e){let{children:t,hidden:r,className:l}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,n.A)(a.tabItem,l),hidden:r,children:t})}},1470:(e,t,r)=>{r.d(t,{A:()=>I});var n=r(6540),a=r(8215),o=r(3104),l=r(6347),s=r(205),u=r(7485),i=r(1682),c=r(9466);function d(e){return n.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,n.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:r}=e;return(0,n.useMemo)((()=>{const e=t??function(e){return d(e).map((e=>{let{props:{value:t,label:r,attributes:n,default:a}}=e;return{value:t,label:r,attributes:n,default:a}}))}(r);return function(e){const t=(0,i.X)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,r])}function p(e){let{value:t,tabValues:r}=e;return r.some((e=>e.value===t))}function f(e){let{queryString:t=!1,groupId:r}=e;const a=(0,l.W6)(),o=function(e){let{queryString:t=!1,groupId:r}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!r)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:t,groupId:r});return[(0,u.aZ)(o),(0,n.useCallback)((e=>{if(!o)return;const t=new URLSearchParams(a.location.search);t.set(o,e),a.replace({...a.location,search:t.toString()})}),[o,a])]}function m(e){const{defaultValue:t,queryString:r=!1,groupId:a}=e,o=h(e),[l,u]=(0,n.useState)((()=>function(e){let{defaultValue:t,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:r}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=r.find((e=>e.default))??r[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:o}))),[i,d]=f({queryString:r,groupId:a}),[m,b]=function(e){let{groupId:t}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(t),[a,o]=(0,c.Dv)(r);return[a,(0,n.useCallback)((e=>{r&&o.set(e)}),[r,o])]}({groupId:a}),g=(()=>{const e=i??m;return p({value:e,tabValues:o})?e:null})();(0,s.A)((()=>{g&&u(g)}),[g]);return{selectedValue:l,selectValue:(0,n.useCallback)((e=>{if(!p({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);u(e),d(e),b(e)}),[d,b,o]),tabValues:o}}var b=r(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var v=r(4848);function y(e){let{className:t,block:r,selectedValue:n,selectValue:l,tabValues:s}=e;const u=[],{blockElementScrollPositionUntilNextRender:i}=(0,o.a_)(),c=e=>{const t=e.currentTarget,r=u.indexOf(t),a=s[r].value;a!==n&&(i(t),l(a))},d=e=>{let t=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const r=u.indexOf(e.currentTarget)+1;t=u[r]??u[0];break}case"ArrowLeft":{const r=u.indexOf(e.currentTarget)-1;t=u[r]??u[u.length-1];break}}t?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":r},t),children:s.map((e=>{let{value:t,label:r,attributes:o}=e;return(0,v.jsx)("li",{role:"tab",tabIndex:n===t?0:-1,"aria-selected":n===t,ref:e=>u.push(e),onKeyDown:d,onClick:c,...o,className:(0,a.A)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":n===t}),children:r??t},t)}))})}function w(e){let{lazy:t,children:r,selectedValue:a}=e;const o=(Array.isArray(r)?r:[r]).filter(Boolean);if(t){const e=o.find((e=>e.props.value===a));return e?(0,n.cloneElement)(e,{className:"margin-top--md"}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:o.map(((e,t)=>(0,n.cloneElement)(e,{key:t,hidden:e.props.value!==a})))})}function x(e){const t=m(e);return(0,v.jsxs)("div",{className:(0,a.A)("tabs-container",g.tabList),children:[(0,v.jsx)(y,{...e,...t}),(0,v.jsx)(w,{...e,...t})]})}function I(e){const t=(0,b.A)();return(0,v.jsx)(x,{...e,children:d(e.children)},String(t))}},8453:(e,t,r)=>{r.d(t,{R:()=>l,x:()=>s});var n=r(6540);const a={},o=n.createContext(a);function l(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(a):e.components||a:l(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[1218],{9832:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>u,default:()=>p,frontMatter:()=>s,metadata:()=>i,toc:()=>d});var n=r(4848),a=r(8453),o=r(1470),l=r(9365);const s={},u="Port-forwarding to localhost",i={id:"GCP/Identity-Aware Proxy/port-forwarding",title:"Port-forwarding to localhost",description:"Install the gcloud CLI",source:"@site/docs/GCP/Identity-Aware Proxy/port-forwarding.md",sourceDirName:"GCP/Identity-Aware Proxy",slug:"/GCP/Identity-Aware Proxy/port-forwarding",permalink:"/docs/GCP/Identity-Aware Proxy/port-forwarding",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1708326742,formattedLastUpdatedAt:"Feb 19, 2024",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Infrastructure as Code",permalink:"/docs/Engineering/IaC"},next:{title:"Remote SSH an IAP-secured server using a terminal or VSCode",permalink:"/docs/GCP/Identity-Aware Proxy/remote-ssh-iap"}},c={},d=[{value:"Install the gcloud CLI",id:"install-the-gcloud-cli",level:2},{value:"Authentication with the CLI",id:"gcloud-auth",level:2},{value:"Port-forwarding your application port to your localhost",id:"port-forwarding-your-application-port-to-your-localhost",level:2}];function h(e){const t={a:"a",h1:"h1",h2:"h2",p:"p",strong:"strong",...(0,a.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"port-forwarding-to-localhost",children:"Port-forwarding to localhost"}),"\n","\n","\n",(0,n.jsx)(t.h2,{id:"install-the-gcloud-cli",children:"Install the gcloud CLI"}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.a,{href:"https://cloud.google.com/sdk/docs/install#linux",children:"Official documentation"})}),"\n",(0,n.jsx)(t.h2,{id:"gcloud-auth",children:"Authentication with the CLI"}),"\n",(0,n.jsxs)(t.p,{children:["Before each session you may launch, make sure to be ",(0,n.jsx)(t.strong,{children:"authenticated with your gcloud account"})," within the CLI"]}),"\n",(0,n.jsxs)(o.A,{groupId:"operating-systems",children:[(0,n.jsx)(l.A,{value:"Linux/mac",label:"Standard",children:(0,n.jsx)("pre",{children:"gcloud auth login"})}),(0,n.jsx)(l.A,{value:"WSL",label:"WSL",children:(0,n.jsx)("pre",{children:"gcloud auth login --no-launch-browser"})})]}),"\n",(0,n.jsx)(t.h2,{id:"port-forwarding-your-application-port-to-your-localhost",children:"Port-forwarding your application port to your localhost"}),"\n",(0,n.jsx)(t.p,{children:"If for instance, I am testing the great vectr purple team's app on a cloud-based instance. The frontend will be by default running on localhost:8501. As a result, I'll able to redirect such traffic to my local machine thanks to this command."}),"\n",(0,n.jsx)("pre",{children:"gcloud compute start-iap-tunnel vectr-test-instance 8501 --local-host-port=localhost:8501"}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.a,{href:"https://cloud.google.com/solutions/connecting-securely#:~:text=or%20SOCKS%20proxy.-,Port%20forwarding%20over%20SSH,host%20over%20an%20SSH%20connection.&text=LOCAL_PORT%20%3Alocalhost%3A%20REMOTE_PORT-,Replace%20the%20following%3A,your%20Google%20Cloud%20project%20ID.",children:"Official documentation"})})]})}function p(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},9365:(e,t,r)=>{r.d(t,{A:()=>l});r(6540);var n=r(8215);const a={tabItem:"tabItem_Ymn6"};var o=r(4848);function l(e){let{children:t,hidden:r,className:l}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,n.A)(a.tabItem,l),hidden:r,children:t})}},1470:(e,t,r)=>{r.d(t,{A:()=>I});var n=r(6540),a=r(8215),o=r(3104),l=r(6347),s=r(205),u=r(7485),i=r(1682),c=r(9466);function d(e){return n.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,n.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:r}=e;return(0,n.useMemo)((()=>{const e=t??function(e){return d(e).map((e=>{let{props:{value:t,label:r,attributes:n,default:a}}=e;return{value:t,label:r,attributes:n,default:a}}))}(r);return function(e){const t=(0,i.X)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,r])}function p(e){let{value:t,tabValues:r}=e;return r.some((e=>e.value===t))}function f(e){let{queryString:t=!1,groupId:r}=e;const a=(0,l.W6)(),o=function(e){let{queryString:t=!1,groupId:r}=e;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!r)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:t,groupId:r});return[(0,u.aZ)(o),(0,n.useCallback)((e=>{if(!o)return;const t=new URLSearchParams(a.location.search);t.set(o,e),a.replace({...a.location,search:t.toString()})}),[o,a])]}function m(e){const{defaultValue:t,queryString:r=!1,groupId:a}=e,o=h(e),[l,u]=(0,n.useState)((()=>function(e){let{defaultValue:t,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the component requires at least one children component");if(t){if(!p({value:t,tabValues:r}))throw new Error(`Docusaurus error: The has a defaultValue "${t}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return t}const n=r.find((e=>e.default))??r[0];if(!n)throw new Error("Unexpected error: 0 tabValues");return n.value}({defaultValue:t,tabValues:o}))),[i,d]=f({queryString:r,groupId:a}),[m,b]=function(e){let{groupId:t}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(t),[a,o]=(0,c.Dv)(r);return[a,(0,n.useCallback)((e=>{r&&o.set(e)}),[r,o])]}({groupId:a}),g=(()=>{const e=i??m;return p({value:e,tabValues:o})?e:null})();(0,s.A)((()=>{g&&u(g)}),[g]);return{selectedValue:l,selectValue:(0,n.useCallback)((e=>{if(!p({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);u(e),d(e),b(e)}),[d,b,o]),tabValues:o}}var b=r(2303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var v=r(4848);function y(e){let{className:t,block:r,selectedValue:n,selectValue:l,tabValues:s}=e;const u=[],{blockElementScrollPositionUntilNextRender:i}=(0,o.a_)(),c=e=>{const t=e.currentTarget,r=u.indexOf(t),a=s[r].value;a!==n&&(i(t),l(a))},d=e=>{let t=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const r=u.indexOf(e.currentTarget)+1;t=u[r]??u[0];break}case"ArrowLeft":{const r=u.indexOf(e.currentTarget)-1;t=u[r]??u[u.length-1];break}}t?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,a.A)("tabs",{"tabs--block":r},t),children:s.map((e=>{let{value:t,label:r,attributes:o}=e;return(0,v.jsx)("li",{role:"tab",tabIndex:n===t?0:-1,"aria-selected":n===t,ref:e=>u.push(e),onKeyDown:d,onClick:c,...o,className:(0,a.A)("tabs__item",g.tabItem,o?.className,{"tabs__item--active":n===t}),children:r??t},t)}))})}function w(e){let{lazy:t,children:r,selectedValue:a}=e;const o=(Array.isArray(r)?r:[r]).filter(Boolean);if(t){const e=o.find((e=>e.props.value===a));return e?(0,n.cloneElement)(e,{className:"margin-top--md"}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:o.map(((e,t)=>(0,n.cloneElement)(e,{key:t,hidden:e.props.value!==a})))})}function x(e){const t=m(e);return(0,v.jsxs)("div",{className:(0,a.A)("tabs-container",g.tabList),children:[(0,v.jsx)(y,{...e,...t}),(0,v.jsx)(w,{...e,...t})]})}function I(e){const t=(0,b.A)();return(0,v.jsx)(x,{...e,children:d(e.children)},String(t))}},8453:(e,t,r)=>{r.d(t,{R:()=>l,x:()=>s});var n=r(6540);const a={},o=n.createContext(a);function l(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(a):e.components||a:l(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8747.014d786c.js b/assets/js/8747.014d786c.js new file mode 100644 index 0000000..bd6d510 --- /dev/null +++ b/assets/js/8747.014d786c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8747],{6535:(e,t,s)=>{s.d(t,{A:()=>f});var a=s(6540),n=s(8215),r=s(8789),l=s(4581),i=s(8774),o=s(1312),c=s(6347),m=s(9169);function d(e){const{pathname:t}=(0,c.zy)();return(0,a.useMemo)((()=>e.filter((e=>function(e,t){return!(e.unlisted&&!(0,m.ys)(e.permalink,t))}(e,t)))),[e,t])}const u={sidebar:"sidebar_re4s",sidebarItemTitle:"sidebarItemTitle_pO2u",sidebarItemList:"sidebarItemList_Yudw",sidebarItem:"sidebarItem__DBe",sidebarItemLink:"sidebarItemLink_mo7H",sidebarItemLinkActive:"sidebarItemLinkActive_I1ZP"};var h=s(4848);function g(e){let{sidebar:t}=e;const s=d(t.items);return(0,h.jsx)("aside",{className:"col col--3",children:(0,h.jsxs)("nav",{className:(0,n.A)(u.sidebar,"thin-scrollbar"),"aria-label":(0,o.T)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"}),children:[(0,h.jsx)("div",{className:(0,n.A)(u.sidebarItemTitle,"margin-bottom--md"),children:t.title}),(0,h.jsx)("ul",{className:(0,n.A)(u.sidebarItemList,"clean-list"),children:s.map((e=>(0,h.jsx)("li",{className:u.sidebarItem,children:(0,h.jsx)(i.A,{isNavLink:!0,to:e.permalink,className:u.sidebarItemLink,activeClassName:u.sidebarItemLinkActive,children:e.title})},e.permalink)))})]})})}var p=s(5600);function x(e){let{sidebar:t}=e;const s=d(t.items);return(0,h.jsx)("ul",{className:"menu__list",children:s.map((e=>(0,h.jsx)("li",{className:"menu__list-item",children:(0,h.jsx)(i.A,{isNavLink:!0,to:e.permalink,className:"menu__link",activeClassName:"menu__link--active",children:e.title})},e.permalink)))})}function j(e){return(0,h.jsx)(p.GX,{component:x,props:e})}function b(e){let{sidebar:t}=e;const s=(0,l.l)();return t?.items.length?"mobile"===s?(0,h.jsx)(j,{sidebar:t}):(0,h.jsx)(g,{sidebar:t}):null}function f(e){const{sidebar:t,toc:s,children:a,...l}=e,i=t&&t.items.length>0;return(0,h.jsx)(r.A,{...l,children:(0,h.jsx)("div",{className:"container margin-vert--lg",children:(0,h.jsxs)("div",{className:"row",children:[(0,h.jsx)(b,{sidebar:t}),(0,h.jsx)("main",{className:(0,n.A)("col",{"col--7":i,"col--9 col--offset-1":!i}),itemScope:!0,itemType:"https://schema.org/Blog",children:a}),s&&(0,h.jsx)("div",{className:"col col--2",children:s})]})})})}},8258:(e,t,s)=>{s.d(t,{A:()=>C});s(6540);var a=s(8215),n=s(7131),r=s(6025),l=s(4848);function i(e){let{children:t,className:s}=e;const{frontMatter:a,assets:i,metadata:{description:o}}=(0,n.e)(),{withBaseUrl:c}=(0,r.h)(),m=i.image??a.image,d=a.keywords??[];return(0,l.jsxs)("article",{className:s,itemProp:"blogPost",itemScope:!0,itemType:"https://schema.org/BlogPosting",children:[o&&(0,l.jsx)("meta",{itemProp:"description",content:o}),m&&(0,l.jsx)("link",{itemProp:"image",href:c(m,{absolute:!0})}),d.length>0&&(0,l.jsx)("meta",{itemProp:"keywords",content:d.join(",")}),t]})}var o=s(8774);const c={title:"title_f1Hy"};function m(e){let{className:t}=e;const{metadata:s,isBlogPostPage:r}=(0,n.e)(),{permalink:i,title:m}=s,d=r?"h1":"h2";return(0,l.jsx)(d,{className:(0,a.A)(c.title,t),itemProp:"headline",children:r?m:(0,l.jsx)(o.A,{itemProp:"url",to:i,children:m})})}var d=s(1312),u=s(5846);const h={container:"container_mt6G"};function g(e){let{readingTime:t}=e;const s=function(){const{selectMessage:e}=(0,u.W)();return t=>{const s=Math.ceil(t);return e(s,(0,d.T)({id:"theme.blog.post.readingTime.plurals",description:'Pluralized label for "{readingTime} min read". 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)',message:"One min read|{readingTime} min read"},{readingTime:s}))}}();return(0,l.jsx)(l.Fragment,{children:s(t)})}function p(e){let{date:t,formattedDate:s}=e;return(0,l.jsx)("time",{dateTime:t,itemProp:"datePublished",children:s})}function x(){return(0,l.jsx)(l.Fragment,{children:" \xb7 "})}function j(e){let{className:t}=e;const{metadata:s}=(0,n.e)(),{date:r,formattedDate:i,readingTime:o}=s;return(0,l.jsxs)("div",{className:(0,a.A)(h.container,"margin-vert--md",t),children:[(0,l.jsx)(p,{date:r,formattedDate:i}),void 0!==o&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(x,{}),(0,l.jsx)(g,{readingTime:o})]})]})}function b(e){return e.href?(0,l.jsx)(o.A,{...e}):(0,l.jsx)(l.Fragment,{children:e.children})}function f(e){let{author:t,className:s}=e;const{name:n,title:r,url:i,imageURL:o,email:c}=t,m=i||c&&`mailto:${c}`||void 0;return(0,l.jsxs)("div",{className:(0,a.A)("avatar margin-bottom--sm",s),children:[o&&(0,l.jsx)(b,{href:m,className:"avatar__photo-link",children:(0,l.jsx)("img",{className:"avatar__photo",src:o,alt:n,itemProp:"image"})}),n&&(0,l.jsxs)("div",{className:"avatar__intro",itemProp:"author",itemScope:!0,itemType:"https://schema.org/Person",children:[(0,l.jsx)("div",{className:"avatar__name",children:(0,l.jsx)(b,{href:m,itemProp:"url",children:(0,l.jsx)("span",{itemProp:"name",children:n})})}),r&&(0,l.jsx)("small",{className:"avatar__subtitle",itemProp:"description",children:r})]})]})}const v={authorCol:"authorCol_Hf19",imageOnlyAuthorRow:"imageOnlyAuthorRow_pa_O",imageOnlyAuthorCol:"imageOnlyAuthorCol_G86a"};function A(e){let{className:t}=e;const{metadata:{authors:s},assets:r}=(0,n.e)();if(0===s.length)return null;const i=s.every((e=>{let{name:t}=e;return!t}));return(0,l.jsx)("div",{className:(0,a.A)("margin-top--md margin-bottom--sm",i?v.imageOnlyAuthorRow:"row",t),children:s.map(((e,t)=>(0,l.jsx)("div",{className:(0,a.A)(!i&&"col col--6",i?v.imageOnlyAuthorCol:v.authorCol),children:(0,l.jsx)(f,{author:{...e,imageURL:r.authorsImageUrls[t]??e.imageURL}})},t)))})}function _(){return(0,l.jsxs)("header",{children:[(0,l.jsx)(m,{}),(0,l.jsx)(j,{}),(0,l.jsx)(A,{})]})}var N=s(440),P=s(5533);function k(e){let{children:t,className:s}=e;const{isBlogPostPage:r}=(0,n.e)();return(0,l.jsx)("div",{id:r?N.blogPostContainerID:void 0,className:(0,a.A)("markdown",s),itemProp:"articleBody",children:(0,l.jsx)(P.A,{children:t})})}var T=s(1943),w=s(2053);function y(){return(0,l.jsx)("b",{children:(0,l.jsx)(d.A,{id:"theme.blog.post.readMore",description:"The label used in blog post item excerpts to link to full blog posts",children:"Read More"})})}function I(e){const{blogPostTitle:t,...s}=e;return(0,l.jsx)(o.A,{"aria-label":(0,d.T)({message:"Read more about {title}",id:"theme.blog.post.readMoreLabel",description:"The ARIA label for the link to full blog posts from excerpts"},{title:t}),...s,children:(0,l.jsx)(y,{})})}const F={blogPostFooterDetailsFull:"blogPostFooterDetailsFull_mRVl"};function L(){const{metadata:e,isBlogPostPage:t}=(0,n.e)(),{tags:s,title:r,editUrl:i,hasTruncateMarker:o}=e,c=!t&&o,m=s.length>0;return m||c||i?(0,l.jsxs)("footer",{className:(0,a.A)("row docusaurus-mt-lg",t&&F.blogPostFooterDetailsFull),children:[m&&(0,l.jsx)("div",{className:(0,a.A)("col",{"col--9":c}),children:(0,l.jsx)(w.A,{tags:s})}),t&&i&&(0,l.jsx)("div",{className:"col margin-top--sm",children:(0,l.jsx)(T.A,{editUrl:i})}),c&&(0,l.jsx)("div",{className:(0,a.A)("col text--right",{"col--3":m}),children:(0,l.jsx)(I,{blogPostTitle:r,to:e.permalink})})]}):null}function C(e){let{children:t,className:s}=e;const r=function(){const{isBlogPostPage:e}=(0,n.e)();return e?void 0:"margin-bottom--xl"}();return(0,l.jsxs)(i,{className:(0,a.A)(r,s),children:[(0,l.jsx)(_,{}),(0,l.jsx)(k,{children:t}),(0,l.jsx)(L,{})]})}},1943:(e,t,s)=>{s.d(t,{A:()=>m});s(6540);var a=s(1312),n=s(7559),r=s(8774),l=s(8215);const i={iconEdit:"iconEdit_Z9Sw"};var o=s(4848);function c(e){let{className:t,...s}=e;return(0,o.jsx)("svg",{fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,l.A)(i.iconEdit,t),"aria-hidden":"true",...s,children:(0,o.jsx)("g",{children:(0,o.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 m(e){let{editUrl:t}=e;return(0,o.jsxs)(r.A,{to:t,className:n.G.common.editThisPage,children:[(0,o.jsx)(c,{}),(0,o.jsx)(a.A,{id:"theme.common.editThisPage",description:"The link label to edit the current page",children:"Edit this page"})]})}},9022:(e,t,s)=>{s.d(t,{A:()=>l});s(6540);var a=s(8215),n=s(8774),r=s(4848);function l(e){const{permalink:t,title:s,subLabel:l,isNext:i}=e;return(0,r.jsxs)(n.A,{className:(0,a.A)("pagination-nav__link",i?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t,children:[l&&(0,r.jsx)("div",{className:"pagination-nav__sublabel",children:l}),(0,r.jsx)("div",{className:"pagination-nav__label",children:s})]})}},6133:(e,t,s)=>{s.d(t,{A:()=>i});s(6540);var a=s(8215),n=s(8774);const r={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};var l=s(4848);function i(e){let{permalink:t,label:s,count:i}=e;return(0,l.jsxs)(n.A,{href:t,className:(0,a.A)(r.tag,i?r.tagWithCount:r.tagRegular),children:[s,i&&(0,l.jsx)("span",{children:i})]})}},2053:(e,t,s)=>{s.d(t,{A:()=>o});s(6540);var a=s(8215),n=s(1312),r=s(6133);const l={tags:"tags_jXut",tag:"tag_QGVx"};var i=s(4848);function o(e){let{tags:t}=e;return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("b",{children:(0,i.jsx)(n.A,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,i.jsx)("ul",{className:(0,a.A)(l.tags,"padding--none","margin-left--sm"),children:t.map((e=>{let{label:t,permalink:s}=e;return(0,i.jsx)("li",{className:l.tag,children:(0,i.jsx)(r.A,{label:t,permalink:s})},s)}))})]})}},7131:(e,t,s)=>{s.d(t,{e:()=>o,i:()=>i});var a=s(6540),n=s(9532),r=s(4848);const l=a.createContext(null);function i(e){let{children:t,content:s,isBlogPostPage:n=!1}=e;const i=function(e){let{content:t,isBlogPostPage:s}=e;return(0,a.useMemo)((()=>({metadata:t.metadata,frontMatter:t.frontMatter,assets:t.assets,toc:t.toc,isBlogPostPage:s})),[t,s])}({content:s,isBlogPostPage:n});return(0,r.jsx)(l.Provider,{value:i,children:t})}function o(){const e=(0,a.useContext)(l);if(null===e)throw new n.dV("BlogPostProvider");return e}},5846:(e,t,s)=>{s.d(t,{W:()=>c});var a=s(6540),n=s(4586);const r=["zero","one","two","few","many","other"];function l(e){return r.filter((t=>e.includes(t)))}const i={locale:"en",pluralForms:l(["one","other"]),select:e=>1===e?"one":"other"};function o(){const{i18n:{currentLocale:e}}=(0,n.A)();return(0,a.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:l(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 c(){const e=o();return{selectMessage:(t,s)=>function(e,t,s){const a=e.split("|");if(1===a.length)return a[0];a.length>s.pluralForms.length&&console.error(`For locale=${s.locale}, a maximum of ${s.pluralForms.length} plural forms are expected (${s.pluralForms.join(",")}), but the message contains ${a.length}: ${e}`);const n=s.select(t),r=s.pluralForms.indexOf(n);return a[Math.min(r,a.length-1)]}(s,t,e)}}}}]); \ No newline at end of file diff --git a/assets/js/8747.85078120.js b/assets/js/8747.85078120.js deleted file mode 100644 index b7b2669..0000000 --- a/assets/js/8747.85078120.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8747],{6535:(e,t,s)=>{s.d(t,{A:()=>f});var a=s(6540),n=s(8215),r=s(781),l=s(4581),i=s(8774),o=s(1312),c=s(6347),m=s(9169);function d(e){const{pathname:t}=(0,c.zy)();return(0,a.useMemo)((()=>e.filter((e=>function(e,t){return!(e.unlisted&&!(0,m.ys)(e.permalink,t))}(e,t)))),[e,t])}const u={sidebar:"sidebar_re4s",sidebarItemTitle:"sidebarItemTitle_pO2u",sidebarItemList:"sidebarItemList_Yudw",sidebarItem:"sidebarItem__DBe",sidebarItemLink:"sidebarItemLink_mo7H",sidebarItemLinkActive:"sidebarItemLinkActive_I1ZP"};var h=s(4848);function g(e){let{sidebar:t}=e;const s=d(t.items);return(0,h.jsx)("aside",{className:"col col--3",children:(0,h.jsxs)("nav",{className:(0,n.A)(u.sidebar,"thin-scrollbar"),"aria-label":(0,o.T)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"}),children:[(0,h.jsx)("div",{className:(0,n.A)(u.sidebarItemTitle,"margin-bottom--md"),children:t.title}),(0,h.jsx)("ul",{className:(0,n.A)(u.sidebarItemList,"clean-list"),children:s.map((e=>(0,h.jsx)("li",{className:u.sidebarItem,children:(0,h.jsx)(i.A,{isNavLink:!0,to:e.permalink,className:u.sidebarItemLink,activeClassName:u.sidebarItemLinkActive,children:e.title})},e.permalink)))})]})})}var p=s(5600);function x(e){let{sidebar:t}=e;const s=d(t.items);return(0,h.jsx)("ul",{className:"menu__list",children:s.map((e=>(0,h.jsx)("li",{className:"menu__list-item",children:(0,h.jsx)(i.A,{isNavLink:!0,to:e.permalink,className:"menu__link",activeClassName:"menu__link--active",children:e.title})},e.permalink)))})}function j(e){return(0,h.jsx)(p.GX,{component:x,props:e})}function b(e){let{sidebar:t}=e;const s=(0,l.l)();return t?.items.length?"mobile"===s?(0,h.jsx)(j,{sidebar:t}):(0,h.jsx)(g,{sidebar:t}):null}function f(e){const{sidebar:t,toc:s,children:a,...l}=e,i=t&&t.items.length>0;return(0,h.jsx)(r.A,{...l,children:(0,h.jsx)("div",{className:"container margin-vert--lg",children:(0,h.jsxs)("div",{className:"row",children:[(0,h.jsx)(b,{sidebar:t}),(0,h.jsx)("main",{className:(0,n.A)("col",{"col--7":i,"col--9 col--offset-1":!i}),itemScope:!0,itemType:"https://schema.org/Blog",children:a}),s&&(0,h.jsx)("div",{className:"col col--2",children:s})]})})})}},8258:(e,t,s)=>{s.d(t,{A:()=>C});s(6540);var a=s(8215),n=s(7131),r=s(6025),l=s(4848);function i(e){let{children:t,className:s}=e;const{frontMatter:a,assets:i,metadata:{description:o}}=(0,n.e)(),{withBaseUrl:c}=(0,r.h)(),m=i.image??a.image,d=a.keywords??[];return(0,l.jsxs)("article",{className:s,itemProp:"blogPost",itemScope:!0,itemType:"https://schema.org/BlogPosting",children:[o&&(0,l.jsx)("meta",{itemProp:"description",content:o}),m&&(0,l.jsx)("link",{itemProp:"image",href:c(m,{absolute:!0})}),d.length>0&&(0,l.jsx)("meta",{itemProp:"keywords",content:d.join(",")}),t]})}var o=s(8774);const c={title:"title_f1Hy"};function m(e){let{className:t}=e;const{metadata:s,isBlogPostPage:r}=(0,n.e)(),{permalink:i,title:m}=s,d=r?"h1":"h2";return(0,l.jsx)(d,{className:(0,a.A)(c.title,t),itemProp:"headline",children:r?m:(0,l.jsx)(o.A,{itemProp:"url",to:i,children:m})})}var d=s(1312),u=s(5846);const h={container:"container_mt6G"};function g(e){let{readingTime:t}=e;const s=function(){const{selectMessage:e}=(0,u.W)();return t=>{const s=Math.ceil(t);return e(s,(0,d.T)({id:"theme.blog.post.readingTime.plurals",description:'Pluralized label for "{readingTime} min read". 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)',message:"One min read|{readingTime} min read"},{readingTime:s}))}}();return(0,l.jsx)(l.Fragment,{children:s(t)})}function p(e){let{date:t,formattedDate:s}=e;return(0,l.jsx)("time",{dateTime:t,itemProp:"datePublished",children:s})}function x(){return(0,l.jsx)(l.Fragment,{children:" \xb7 "})}function j(e){let{className:t}=e;const{metadata:s}=(0,n.e)(),{date:r,formattedDate:i,readingTime:o}=s;return(0,l.jsxs)("div",{className:(0,a.A)(h.container,"margin-vert--md",t),children:[(0,l.jsx)(p,{date:r,formattedDate:i}),void 0!==o&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(x,{}),(0,l.jsx)(g,{readingTime:o})]})]})}function b(e){return e.href?(0,l.jsx)(o.A,{...e}):(0,l.jsx)(l.Fragment,{children:e.children})}function f(e){let{author:t,className:s}=e;const{name:n,title:r,url:i,imageURL:o,email:c}=t,m=i||c&&`mailto:${c}`||void 0;return(0,l.jsxs)("div",{className:(0,a.A)("avatar margin-bottom--sm",s),children:[o&&(0,l.jsx)(b,{href:m,className:"avatar__photo-link",children:(0,l.jsx)("img",{className:"avatar__photo",src:o,alt:n,itemProp:"image"})}),n&&(0,l.jsxs)("div",{className:"avatar__intro",itemProp:"author",itemScope:!0,itemType:"https://schema.org/Person",children:[(0,l.jsx)("div",{className:"avatar__name",children:(0,l.jsx)(b,{href:m,itemProp:"url",children:(0,l.jsx)("span",{itemProp:"name",children:n})})}),r&&(0,l.jsx)("small",{className:"avatar__subtitle",itemProp:"description",children:r})]})]})}const v={authorCol:"authorCol_Hf19",imageOnlyAuthorRow:"imageOnlyAuthorRow_pa_O",imageOnlyAuthorCol:"imageOnlyAuthorCol_G86a"};function A(e){let{className:t}=e;const{metadata:{authors:s},assets:r}=(0,n.e)();if(0===s.length)return null;const i=s.every((e=>{let{name:t}=e;return!t}));return(0,l.jsx)("div",{className:(0,a.A)("margin-top--md margin-bottom--sm",i?v.imageOnlyAuthorRow:"row",t),children:s.map(((e,t)=>(0,l.jsx)("div",{className:(0,a.A)(!i&&"col col--6",i?v.imageOnlyAuthorCol:v.authorCol),children:(0,l.jsx)(f,{author:{...e,imageURL:r.authorsImageUrls[t]??e.imageURL}})},t)))})}function _(){return(0,l.jsxs)("header",{children:[(0,l.jsx)(m,{}),(0,l.jsx)(j,{}),(0,l.jsx)(A,{})]})}var N=s(440),P=s(5533);function k(e){let{children:t,className:s}=e;const{isBlogPostPage:r}=(0,n.e)();return(0,l.jsx)("div",{id:r?N.blogPostContainerID:void 0,className:(0,a.A)("markdown",s),itemProp:"articleBody",children:(0,l.jsx)(P.A,{children:t})})}var T=s(1943),w=s(2053);function y(){return(0,l.jsx)("b",{children:(0,l.jsx)(d.A,{id:"theme.blog.post.readMore",description:"The label used in blog post item excerpts to link to full blog posts",children:"Read More"})})}function I(e){const{blogPostTitle:t,...s}=e;return(0,l.jsx)(o.A,{"aria-label":(0,d.T)({message:"Read more about {title}",id:"theme.blog.post.readMoreLabel",description:"The ARIA label for the link to full blog posts from excerpts"},{title:t}),...s,children:(0,l.jsx)(y,{})})}const F={blogPostFooterDetailsFull:"blogPostFooterDetailsFull_mRVl"};function L(){const{metadata:e,isBlogPostPage:t}=(0,n.e)(),{tags:s,title:r,editUrl:i,hasTruncateMarker:o}=e,c=!t&&o,m=s.length>0;return m||c||i?(0,l.jsxs)("footer",{className:(0,a.A)("row docusaurus-mt-lg",t&&F.blogPostFooterDetailsFull),children:[m&&(0,l.jsx)("div",{className:(0,a.A)("col",{"col--9":c}),children:(0,l.jsx)(w.A,{tags:s})}),t&&i&&(0,l.jsx)("div",{className:"col margin-top--sm",children:(0,l.jsx)(T.A,{editUrl:i})}),c&&(0,l.jsx)("div",{className:(0,a.A)("col text--right",{"col--3":m}),children:(0,l.jsx)(I,{blogPostTitle:r,to:e.permalink})})]}):null}function C(e){let{children:t,className:s}=e;const r=function(){const{isBlogPostPage:e}=(0,n.e)();return e?void 0:"margin-bottom--xl"}();return(0,l.jsxs)(i,{className:(0,a.A)(r,s),children:[(0,l.jsx)(_,{}),(0,l.jsx)(k,{children:t}),(0,l.jsx)(L,{})]})}},1943:(e,t,s)=>{s.d(t,{A:()=>m});s(6540);var a=s(1312),n=s(7559),r=s(8774),l=s(8215);const i={iconEdit:"iconEdit_Z9Sw"};var o=s(4848);function c(e){let{className:t,...s}=e;return(0,o.jsx)("svg",{fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,l.A)(i.iconEdit,t),"aria-hidden":"true",...s,children:(0,o.jsx)("g",{children:(0,o.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 m(e){let{editUrl:t}=e;return(0,o.jsxs)(r.A,{to:t,className:n.G.common.editThisPage,children:[(0,o.jsx)(c,{}),(0,o.jsx)(a.A,{id:"theme.common.editThisPage",description:"The link label to edit the current page",children:"Edit this page"})]})}},9022:(e,t,s)=>{s.d(t,{A:()=>l});s(6540);var a=s(8215),n=s(8774),r=s(4848);function l(e){const{permalink:t,title:s,subLabel:l,isNext:i}=e;return(0,r.jsxs)(n.A,{className:(0,a.A)("pagination-nav__link",i?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t,children:[l&&(0,r.jsx)("div",{className:"pagination-nav__sublabel",children:l}),(0,r.jsx)("div",{className:"pagination-nav__label",children:s})]})}},6133:(e,t,s)=>{s.d(t,{A:()=>i});s(6540);var a=s(8215),n=s(8774);const r={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};var l=s(4848);function i(e){let{permalink:t,label:s,count:i}=e;return(0,l.jsxs)(n.A,{href:t,className:(0,a.A)(r.tag,i?r.tagWithCount:r.tagRegular),children:[s,i&&(0,l.jsx)("span",{children:i})]})}},2053:(e,t,s)=>{s.d(t,{A:()=>o});s(6540);var a=s(8215),n=s(1312),r=s(6133);const l={tags:"tags_jXut",tag:"tag_QGVx"};var i=s(4848);function o(e){let{tags:t}=e;return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("b",{children:(0,i.jsx)(n.A,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,i.jsx)("ul",{className:(0,a.A)(l.tags,"padding--none","margin-left--sm"),children:t.map((e=>{let{label:t,permalink:s}=e;return(0,i.jsx)("li",{className:l.tag,children:(0,i.jsx)(r.A,{label:t,permalink:s})},s)}))})]})}},7131:(e,t,s)=>{s.d(t,{e:()=>o,i:()=>i});var a=s(6540),n=s(9532),r=s(4848);const l=a.createContext(null);function i(e){let{children:t,content:s,isBlogPostPage:n=!1}=e;const i=function(e){let{content:t,isBlogPostPage:s}=e;return(0,a.useMemo)((()=>({metadata:t.metadata,frontMatter:t.frontMatter,assets:t.assets,toc:t.toc,isBlogPostPage:s})),[t,s])}({content:s,isBlogPostPage:n});return(0,r.jsx)(l.Provider,{value:i,children:t})}function o(){const e=(0,a.useContext)(l);if(null===e)throw new n.dV("BlogPostProvider");return e}},5846:(e,t,s)=>{s.d(t,{W:()=>c});var a=s(6540),n=s(4586);const r=["zero","one","two","few","many","other"];function l(e){return r.filter((t=>e.includes(t)))}const i={locale:"en",pluralForms:l(["one","other"]),select:e=>1===e?"one":"other"};function o(){const{i18n:{currentLocale:e}}=(0,n.A)();return(0,a.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:l(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 c(){const e=o();return{selectMessage:(t,s)=>function(e,t,s){const a=e.split("|");if(1===a.length)return a[0];a.length>s.pluralForms.length&&console.error(`For locale=${s.locale}, a maximum of ${s.pluralForms.length} plural forms are expected (${s.pluralForms.join(",")}), but the message contains ${a.length}: ${e}`);const n=s.select(t),r=s.pluralForms.indexOf(n);return a[Math.min(r,a.length-1)]}(s,t,e)}}}}]); \ No newline at end of file diff --git a/assets/js/961cf1dd.f10c81d0.js b/assets/js/961cf1dd.4d0d1e11.js similarity index 97% rename from assets/js/961cf1dd.f10c81d0.js rename to assets/js/961cf1dd.4d0d1e11.js index 11f5a44..6221647 100644 --- a/assets/js/961cf1dd.f10c81d0.js +++ b/assets/js/961cf1dd.4d0d1e11.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[2805],{610:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>s,metadata:()=>c,toc:()=>a});var t=o(4848),r=o(8453);const s={},i="Cortex Neurons",c={id:"TheHive/cortex-neurons",title:"Cortex Neurons",description:"Introduction",source:"@site/docs/TheHive/cortex-neurons.md",sourceDirName:"TheHive",slug:"/TheHive/cortex-neurons",permalink:"/docs/TheHive/cortex-neurons",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1708051930,formattedLastUpdatedAt:"Feb 16, 2024",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Shuffle",permalink:"/docs/Shuffle"},next:{title:"Resources",permalink:"/docs/TheHive/thehive-resources"}},l={},a=[{value:"Introduction",id:"introduction",level:2},{value:"Build & Test cortex-neurons",id:"build--test-cortex-neurons",level:2},{value:"Build my Cortex Neuron locally from Dockerfile",id:"build-my-cortex-neuron-locally-from-dockerfile",level:3},{value:"Test the local neuron",id:"test-the-local-neuron",level:3},{value:"Test remote existing cortex-neurons (on MacOS Apple Silicon)",id:"test-remote-existing-cortex-neurons-on-macos-apple-silicon",level:3},{value:"Debug remote existing cortex-neuron from command-line",id:"debug-remote-existing-cortex-neuron-from-command-line",level:3}];function u(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"cortex-neurons",children:"Cortex Neurons"}),"\n",(0,t.jsx)(n.h2,{id:"introduction",children:"Introduction"}),"\n",(0,t.jsxs)(n.p,{children:["As stated in the ",(0,t.jsx)(n.a,{href:"https://thehive-project.github.io/Cortex-Analyzers/",children:"Cortex Neurons documentation"})]}),"\n",(0,t.jsx)(n.h2,{id:"build--test-cortex-neurons",children:"Build & Test cortex-neurons"}),"\n",(0,t.jsx)(n.h3,{id:"build-my-cortex-neuron-locally-from-dockerfile",children:"Build my Cortex Neuron locally from Dockerfile"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"docker build -t myneuron:latest .\n"})}),"\n",(0,t.jsx)(n.h3,{id:"test-the-local-neuron",children:"Test the local neuron"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"docker run --rm -v ${PWD}:/job myneuron:latest\n"})}),"\n",(0,t.jsx)(n.h3,{id:"test-remote-existing-cortex-neurons-on-macos-apple-silicon",children:"Test remote existing cortex-neurons (on MacOS Apple Silicon)"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"docker run --rm --platform=linux/amd64 -v ${PWD}:/job cortexneurons/dshield_lookup:devel\n"})}),"\n",(0,t.jsx)(n.admonition,{type:"info",children:(0,t.jsx)(n.p,{children:"Make sure to have a ./input/input.json file configured locally. If the cortex neuron runs successfully, an output.json should appear in output folder."})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-json",metastring:'title="input/input.json"',children:'{\n "data":"185.162.131.25",\n "tlp":0,\n "parameters":{\n \n },\n "dataType":"ip",\n "config":{\n "jobTimeout":30,\n "service":"",\n "url":"",\n "api_key":"",\n "proxy_http":"",\n "proxy":{\n "http":"",\n "https":""\n },\n "max_tlp":2,\n "max_pap":2,\n "check_tlp":true,\n "check_pap":true,\n "proxy_https":"",\n "cacerts":"",\n "auto_extract_artifacts":false,\n "jobCache":10\n },\n "pap":2,\n "message":"1"\n}\n'})}),"\n",(0,t.jsx)(n.h3,{id:"debug-remote-existing-cortex-neuron-from-command-line",children:"Debug remote existing cortex-neuron from command-line"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"docker run -ti --platform linux/amd64 --name=mylocalneuron --rm --entrypoint /bin/bash cortexneurons/falconsandbox:devel\n"})}),"\n",(0,t.jsx)(n.p,{children:"Upon new changes, to create an image if needed (better build from scratch, not recommended):"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"docker commit mylocalneuron mylocalneuron:latest\n"})})]})}function d(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(u,{...e})}):u(e)}},8453:(e,n,o)=>{o.d(n,{R:()=>i,x:()=>c});var t=o(6540);const r={},s=t.createContext(r);function i(e){const n=t.useContext(s);return t.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:i(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[2805],{610:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>s,metadata:()=>c,toc:()=>a});var t=o(4848),r=o(8453);const s={},i="Cortex Neurons",c={id:"TheHive/cortex-neurons",title:"Cortex Neurons",description:"Introduction",source:"@site/docs/TheHive/cortex-neurons.md",sourceDirName:"TheHive",slug:"/TheHive/cortex-neurons",permalink:"/docs/TheHive/cortex-neurons",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1708326742,formattedLastUpdatedAt:"Feb 19, 2024",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Shuffle",permalink:"/docs/Shuffle"},next:{title:"Resources",permalink:"/docs/TheHive/thehive-resources"}},l={},a=[{value:"Introduction",id:"introduction",level:2},{value:"Build & Test cortex-neurons",id:"build--test-cortex-neurons",level:2},{value:"Build my Cortex Neuron locally from Dockerfile",id:"build-my-cortex-neuron-locally-from-dockerfile",level:3},{value:"Test the local neuron",id:"test-the-local-neuron",level:3},{value:"Test remote existing cortex-neurons (on MacOS Apple Silicon)",id:"test-remote-existing-cortex-neurons-on-macos-apple-silicon",level:3},{value:"Debug remote existing cortex-neuron from command-line",id:"debug-remote-existing-cortex-neuron-from-command-line",level:3}];function u(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"cortex-neurons",children:"Cortex Neurons"}),"\n",(0,t.jsx)(n.h2,{id:"introduction",children:"Introduction"}),"\n",(0,t.jsxs)(n.p,{children:["As stated in the ",(0,t.jsx)(n.a,{href:"https://thehive-project.github.io/Cortex-Analyzers/",children:"Cortex Neurons documentation"})]}),"\n",(0,t.jsx)(n.h2,{id:"build--test-cortex-neurons",children:"Build & Test cortex-neurons"}),"\n",(0,t.jsx)(n.h3,{id:"build-my-cortex-neuron-locally-from-dockerfile",children:"Build my Cortex Neuron locally from Dockerfile"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"docker build -t myneuron:latest .\n"})}),"\n",(0,t.jsx)(n.h3,{id:"test-the-local-neuron",children:"Test the local neuron"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"docker run --rm -v ${PWD}:/job myneuron:latest\n"})}),"\n",(0,t.jsx)(n.h3,{id:"test-remote-existing-cortex-neurons-on-macos-apple-silicon",children:"Test remote existing cortex-neurons (on MacOS Apple Silicon)"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"docker run --rm --platform=linux/amd64 -v ${PWD}:/job cortexneurons/dshield_lookup:devel\n"})}),"\n",(0,t.jsx)(n.admonition,{type:"info",children:(0,t.jsx)(n.p,{children:"Make sure to have a ./input/input.json file configured locally. If the cortex neuron runs successfully, an output.json should appear in output folder."})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-json",metastring:'title="input/input.json"',children:'{\n "data":"185.162.131.25",\n "tlp":0,\n "parameters":{\n \n },\n "dataType":"ip",\n "config":{\n "jobTimeout":30,\n "service":"",\n "url":"",\n "api_key":"",\n "proxy_http":"",\n "proxy":{\n "http":"",\n "https":""\n },\n "max_tlp":2,\n "max_pap":2,\n "check_tlp":true,\n "check_pap":true,\n "proxy_https":"",\n "cacerts":"",\n "auto_extract_artifacts":false,\n "jobCache":10\n },\n "pap":2,\n "message":"1"\n}\n'})}),"\n",(0,t.jsx)(n.h3,{id:"debug-remote-existing-cortex-neuron-from-command-line",children:"Debug remote existing cortex-neuron from command-line"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"docker run -ti --platform linux/amd64 --name=mylocalneuron --rm --entrypoint /bin/bash cortexneurons/falconsandbox:devel\n"})}),"\n",(0,t.jsx)(n.p,{children:"Upon new changes, to create an image if needed (better build from scratch, not recommended):"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-bash",children:"docker commit mylocalneuron mylocalneuron:latest\n"})})]})}function d(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(u,{...e})}):u(e)}},8453:(e,n,o)=>{o.d(n,{R:()=>i,x:()=>c});var t=o(6540);const r={},s=t.createContext(r);function i(e){const n=t.useContext(s);return t.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:i(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/996f5af2.787a72a8.js b/assets/js/996f5af2.0c47acc4.js similarity index 98% rename from assets/js/996f5af2.787a72a8.js rename to assets/js/996f5af2.0c47acc4.js index 890c2de..ac05a26 100644 --- a/assets/js/996f5af2.787a72a8.js +++ b/assets/js/996f5af2.0c47acc4.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[5307],{2939:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>h,frontMatter:()=>r,metadata:()=>c,toc:()=>a});var t=i(4848),s=i(8453);const r={},l="SOC2",c={id:"Compliance/SOC2",title:"SOC2",description:"Introduction",source:"@site/docs/Compliance/SOC2.mdx",sourceDirName:"Compliance",slug:"/Compliance/SOC2",permalink:"/docs/Compliance/SOC2",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1708051930,formattedLastUpdatedAt:"Feb 16, 2024",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Welcome",permalink:"/docs/welcome"},next:{title:"Configuration Management",permalink:"/docs/Engineering/ConfigurationManagement"}},o={},a=[{value:"Introduction",id:"introduction",level:2},{value:"Available assessments",id:"available-assessments",level:3},{value:"Report types",id:"report-types",level:3},{value:"Type 1 Report",id:"type-1-report",level:4},{value:"Type 2 Report",id:"type-2-report",level:4},{value:"Benefits of Being Certified",id:"benefits-of-being-certified",level:3},{value:"Example",id:"example",level:3},{value:"Common criterias (CC)",id:"common-criterias-cc",level:2},{value:"CC1 - Control Environment",id:"cc1---control-environment",level:3},{value:"CC2 - Communication & Information",id:"cc2---communication--information",level:3},{value:"CC3 - Risk Assessment",id:"cc3---risk-assessment",level:3},{value:"CC4 - Monitoring Activities",id:"cc4---monitoring-activities",level:3},{value:"CC5 - Control Activities",id:"cc5---control-activities",level:3},{value:"CC6 - Logical & Physical Access",id:"cc6---logical--physical-access",level:3},{value:"CC7 - System Operations",id:"cc7---system-operations",level:3},{value:"CC8 - Change management",id:"cc8---change-management",level:3},{value:"CC9 - Risk Mitigation",id:"cc9---risk-mitigation",level:3},{value:"Additional criterias (AC)",id:"additional-criterias-ac",level:2}];function d(e){const n={a:"a",h1:"h1",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"soc2",children:"SOC2"}),"\n",(0,t.jsx)(n.h2,{id:"introduction",children:"Introduction"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://us.aicpa.org/interestareas/frc/assuranceadvisoryservices/aicpasoc2report",children:"SOC2"})," is an assessment program ran by the ",(0,t.jsx)(n.a,{href:"https://www.aicpa-cima.com/",children:"AICPA"})]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"SOC"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"Focus"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"Restricted Use"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"Report Content"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"SOC1"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"Internal Controls for financial reporting"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"Restricted Use, Stakeholders require NDA"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"Specific detail on controls relevant to financial reporting"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"SOC2"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"Internal Controls for Security, Availability, Confidentiality, Process Integrity, Privacy"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"Restricted Use, Stakeholders require NDA"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:'Specific detail on each controls for the "Trust Criteria" in scope.'})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"SOC2"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"Internal Controls for Security, Availability, Confidentiality, Process Integrity, Privacy"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"Can be shared publicly unrestricted"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"General description"})]})]})]}),"\n",(0,t.jsx)(n.h3,{id:"available-assessments",children:"Available assessments"}),"\n",(0,t.jsx)(n.p,{children:"There is three different SOC assessments :"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"SOC for Service Organizations : Internal report on controls provided by the organization allowing users to assess risks."}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"SOC for Cybersecurity : Reporting framework allowing organizations communicate effectiveness of cybersecurity risk management."}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"SOC for Supply Chain : Internal controls report of controls for producing, manufacturing or distribution of goods."}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"report-types",children:"Report types"}),"\n",(0,t.jsx)(n.h4,{id:"type-1-report",children:"Type 1 Report"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Focus on control design"}),"\n",(0,t.jsx)(n.li,{children:"Shorter time to undertake assessment"}),"\n",(0,t.jsx)(n.li,{children:"Can be undertaken prior to Type 2"}),"\n",(0,t.jsx)(n.li,{children:"Costs less than Type 2 report"}),"\n"]}),"\n",(0,t.jsx)(n.h4,{id:"type-2-report",children:"Type 2 Report"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Focus on operational effectiveness"}),"\n",(0,t.jsx)(n.li,{children:"Longer time to undertake assessment"}),"\n",(0,t.jsx)(n.li,{children:"Must have at least 6 months evidence"}),"\n",(0,t.jsx)(n.li,{children:"Costs more than Type 1 report"}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"benefits-of-being-certified",children:"Benefits of Being Certified"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Customer demand"}),"\n",(0,t.jsx)(n.li,{children:"Independent security assurance"}),"\n",(0,t.jsx)(n.li,{children:"Competitive advantage"}),"\n",(0,t.jsx)(n.li,{children:"Regulatory compliance"}),"\n",(0,t.jsx)(n.li,{children:"Feedback on operational effectiveness"}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"example",children:"Example"}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.a,{href:"https://aws.amazon.com/fr/compliance/soc-faqs/",children:"AWS SOC Compliance"})}),"\n",(0,t.jsx)(n.h1,{id:"soc-trust-criterias",children:"SOC Trust Criterias"}),"\n",(0,t.jsxs)(n.p,{children:["The first 5 Common Criterias come from the ",(0,t.jsx)(n.a,{href:"https://www.coso.org/SitePages/Home.aspx",children:"COSO framework"})," which represents 17 principles.\nThe 4 other Common Criterias (which are all mandatories) are SOC2 specific.\nAdditionally, Additional Criterias can be covered if chosen by the company requesting the audit."]}),"\n",(0,t.jsx)(n.h2,{id:"common-criterias-cc",children:"Common criterias (CC)"}),"\n",(0,t.jsx)(n.h3,{id:"cc1---control-environment",children:"CC1 - Control Environment"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"CC1.1 - Demonstrate commitment to integrity & ethical values"}),"\n",(0,t.jsx)(n.li,{children:"CC1.2 - Exercise oversight of internal controls"}),"\n",(0,t.jsx)(n.li,{children:"CC1.3 - Establish structures & responsibility to meet objectives"}),"\n",(0,t.jsx)(n.li,{children:"CC1.4 - Demonstrate commitment to competence"}),"\n",(0,t.jsx)(n.li,{children:"CC1.5 - Enforce accountability"}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"cc2---communication--information",children:"CC2 - Communication & Information"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"CC2.1 - Use quality information to support controls"}),"\n",(0,t.jsx)(n.li,{children:"CC2.2 - Communicate internally regarding controls"}),"\n",(0,t.jsx)(n.li,{children:"CC2.3 - Communicate externally regarding controls"}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"cc3---risk-assessment",children:"CC3 - Risk Assessment"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"CC3.1 - Specify clear objectives"}),"\n",(0,t.jsx)(n.li,{children:"CC3.2 - Identify and assess risk"}),"\n",(0,t.jsx)(n.li,{children:"CC3.3 - Consider fraud risk"}),"\n",(0,t.jsx)(n.li,{children:"CC3.4 - Identify and assess significant change"}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"cc4---monitoring-activities",children:"CC4 - Monitoring Activities"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"CC4.1 - Evaluate components of internal controls"}),"\n",(0,t.jsx)(n.li,{children:"CC4.2 - Communicate deficiencies in a timely manner"}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"cc5---control-activities",children:"CC5 - Control Activities"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"CC5.1 - Select control activities to mitigate risk"}),"\n",(0,t.jsx)(n.li,{children:"CC5.2 - Select general controls over technology"}),"\n",(0,t.jsx)(n.li,{children:"CC5.3 - Deploy controls through policies"}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"cc6---logical--physical-access",children:"CC6 - Logical & Physical Access"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"CC6.1 - Protect information assets with logical access security controls"}),"\n",(0,t.jsx)(n.li,{children:"CC6.2 - Authorize users before granting access, remove promptly"}),"\n",(0,t.jsx)(n.li,{children:"CC6.3 - Apply least privilege and segregation of duties"}),"\n",(0,t.jsx)(n.li,{children:"CC6.4 - Restrict physical access to authorized personnel"}),"\n",(0,t.jsx)(n.li,{children:"CC6.5 - Remove sensitive data before relaxing physical controls"}),"\n",(0,t.jsx)(n.li,{children:"CC6.6 - Implement logical access security measures"}),"\n",(0,t.jsx)(n.li,{children:"\u0421\u04216.7 - Restrict removal of information and protect in transit"}),"\n",(0,t.jsx)(n.li,{children:"CC6.8 - Protect against installation of malicious software"}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"cc7---system-operations",children:"CC7 - System Operations"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"CC7.1 - Identify changes in configuration and vulnerabilities"}),"\n",(0,t.jsx)(n.li,{children:"CC7.2 - Monitor system for anomalies"}),"\n",(0,t.jsx)(n.li,{children:"CC7.3 - Evaluate Security incidents"}),"\n",(0,t.jsx)(n.li,{children:"CC7.4 - Respond to security incidents using a defined plan"}),"\n",(0,t.jsx)(n.li,{children:"CC7.5 - Identify and implement activities to recover from incidents"}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"cc8---change-management",children:"CC8 - Change management"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"CC8.1 - Authorize, design, test, approves changes to meet objectives"}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"cc9---risk-mitigation",children:"CC9 - Risk Mitigation"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"CC9.1- Identify and selects risk mitigation activities."}),"\n",(0,t.jsx)(n.li,{children:"CC9.2 - Assess and manage risk from vendors/partners"}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"additional-criterias-ac",children:"Additional criterias (AC)"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Availability"}),"\n",(0,t.jsx)(n.li,{children:"Confidentiality"}),"\n",(0,t.jsx)(n.li,{children:"Process Integrity"}),"\n",(0,t.jsx)(n.li,{children:"Privacy"}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>l,x:()=>c});var t=i(6540);const s={},r=t.createContext(s);function l(e){const n=t.useContext(r);return t.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(s):e.components||s:l(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[5307],{2939:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>h,frontMatter:()=>r,metadata:()=>c,toc:()=>a});var t=i(4848),s=i(8453);const r={},l="SOC2",c={id:"Compliance/SOC2",title:"SOC2",description:"Introduction",source:"@site/docs/Compliance/SOC2.mdx",sourceDirName:"Compliance",slug:"/Compliance/SOC2",permalink:"/docs/Compliance/SOC2",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1708326742,formattedLastUpdatedAt:"Feb 19, 2024",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Welcome",permalink:"/docs/welcome"},next:{title:"Configuration Management",permalink:"/docs/Engineering/ConfigurationManagement"}},o={},a=[{value:"Introduction",id:"introduction",level:2},{value:"Available assessments",id:"available-assessments",level:3},{value:"Report types",id:"report-types",level:3},{value:"Type 1 Report",id:"type-1-report",level:4},{value:"Type 2 Report",id:"type-2-report",level:4},{value:"Benefits of Being Certified",id:"benefits-of-being-certified",level:3},{value:"Example",id:"example",level:3},{value:"Common criterias (CC)",id:"common-criterias-cc",level:2},{value:"CC1 - Control Environment",id:"cc1---control-environment",level:3},{value:"CC2 - Communication & Information",id:"cc2---communication--information",level:3},{value:"CC3 - Risk Assessment",id:"cc3---risk-assessment",level:3},{value:"CC4 - Monitoring Activities",id:"cc4---monitoring-activities",level:3},{value:"CC5 - Control Activities",id:"cc5---control-activities",level:3},{value:"CC6 - Logical & Physical Access",id:"cc6---logical--physical-access",level:3},{value:"CC7 - System Operations",id:"cc7---system-operations",level:3},{value:"CC8 - Change management",id:"cc8---change-management",level:3},{value:"CC9 - Risk Mitigation",id:"cc9---risk-mitigation",level:3},{value:"Additional criterias (AC)",id:"additional-criterias-ac",level:2}];function d(e){const n={a:"a",h1:"h1",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"soc2",children:"SOC2"}),"\n",(0,t.jsx)(n.h2,{id:"introduction",children:"Introduction"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.a,{href:"https://us.aicpa.org/interestareas/frc/assuranceadvisoryservices/aicpasoc2report",children:"SOC2"})," is an assessment program ran by the ",(0,t.jsx)(n.a,{href:"https://www.aicpa-cima.com/",children:"AICPA"})]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"SOC"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"Focus"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"Restricted Use"}),(0,t.jsx)(n.th,{style:{textAlign:"center"},children:"Report Content"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"SOC1"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"Internal Controls for financial reporting"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"Restricted Use, Stakeholders require NDA"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"Specific detail on controls relevant to financial reporting"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"SOC2"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"Internal Controls for Security, Availability, Confidentiality, Process Integrity, Privacy"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"Restricted Use, Stakeholders require NDA"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:'Specific detail on each controls for the "Trust Criteria" in scope.'})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"SOC2"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"Internal Controls for Security, Availability, Confidentiality, Process Integrity, Privacy"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"Can be shared publicly unrestricted"}),(0,t.jsx)(n.td,{style:{textAlign:"center"},children:"General description"})]})]})]}),"\n",(0,t.jsx)(n.h3,{id:"available-assessments",children:"Available assessments"}),"\n",(0,t.jsx)(n.p,{children:"There is three different SOC assessments :"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"SOC for Service Organizations : Internal report on controls provided by the organization allowing users to assess risks."}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"SOC for Cybersecurity : Reporting framework allowing organizations communicate effectiveness of cybersecurity risk management."}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"SOC for Supply Chain : Internal controls report of controls for producing, manufacturing or distribution of goods."}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"report-types",children:"Report types"}),"\n",(0,t.jsx)(n.h4,{id:"type-1-report",children:"Type 1 Report"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Focus on control design"}),"\n",(0,t.jsx)(n.li,{children:"Shorter time to undertake assessment"}),"\n",(0,t.jsx)(n.li,{children:"Can be undertaken prior to Type 2"}),"\n",(0,t.jsx)(n.li,{children:"Costs less than Type 2 report"}),"\n"]}),"\n",(0,t.jsx)(n.h4,{id:"type-2-report",children:"Type 2 Report"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Focus on operational effectiveness"}),"\n",(0,t.jsx)(n.li,{children:"Longer time to undertake assessment"}),"\n",(0,t.jsx)(n.li,{children:"Must have at least 6 months evidence"}),"\n",(0,t.jsx)(n.li,{children:"Costs more than Type 1 report"}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"benefits-of-being-certified",children:"Benefits of Being Certified"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Customer demand"}),"\n",(0,t.jsx)(n.li,{children:"Independent security assurance"}),"\n",(0,t.jsx)(n.li,{children:"Competitive advantage"}),"\n",(0,t.jsx)(n.li,{children:"Regulatory compliance"}),"\n",(0,t.jsx)(n.li,{children:"Feedback on operational effectiveness"}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"example",children:"Example"}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.a,{href:"https://aws.amazon.com/fr/compliance/soc-faqs/",children:"AWS SOC Compliance"})}),"\n",(0,t.jsx)(n.h1,{id:"soc-trust-criterias",children:"SOC Trust Criterias"}),"\n",(0,t.jsxs)(n.p,{children:["The first 5 Common Criterias come from the ",(0,t.jsx)(n.a,{href:"https://www.coso.org/SitePages/Home.aspx",children:"COSO framework"})," which represents 17 principles.\nThe 4 other Common Criterias (which are all mandatories) are SOC2 specific.\nAdditionally, Additional Criterias can be covered if chosen by the company requesting the audit."]}),"\n",(0,t.jsx)(n.h2,{id:"common-criterias-cc",children:"Common criterias (CC)"}),"\n",(0,t.jsx)(n.h3,{id:"cc1---control-environment",children:"CC1 - Control Environment"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"CC1.1 - Demonstrate commitment to integrity & ethical values"}),"\n",(0,t.jsx)(n.li,{children:"CC1.2 - Exercise oversight of internal controls"}),"\n",(0,t.jsx)(n.li,{children:"CC1.3 - Establish structures & responsibility to meet objectives"}),"\n",(0,t.jsx)(n.li,{children:"CC1.4 - Demonstrate commitment to competence"}),"\n",(0,t.jsx)(n.li,{children:"CC1.5 - Enforce accountability"}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"cc2---communication--information",children:"CC2 - Communication & Information"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"CC2.1 - Use quality information to support controls"}),"\n",(0,t.jsx)(n.li,{children:"CC2.2 - Communicate internally regarding controls"}),"\n",(0,t.jsx)(n.li,{children:"CC2.3 - Communicate externally regarding controls"}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"cc3---risk-assessment",children:"CC3 - Risk Assessment"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"CC3.1 - Specify clear objectives"}),"\n",(0,t.jsx)(n.li,{children:"CC3.2 - Identify and assess risk"}),"\n",(0,t.jsx)(n.li,{children:"CC3.3 - Consider fraud risk"}),"\n",(0,t.jsx)(n.li,{children:"CC3.4 - Identify and assess significant change"}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"cc4---monitoring-activities",children:"CC4 - Monitoring Activities"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"CC4.1 - Evaluate components of internal controls"}),"\n",(0,t.jsx)(n.li,{children:"CC4.2 - Communicate deficiencies in a timely manner"}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"cc5---control-activities",children:"CC5 - Control Activities"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"CC5.1 - Select control activities to mitigate risk"}),"\n",(0,t.jsx)(n.li,{children:"CC5.2 - Select general controls over technology"}),"\n",(0,t.jsx)(n.li,{children:"CC5.3 - Deploy controls through policies"}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"cc6---logical--physical-access",children:"CC6 - Logical & Physical Access"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"CC6.1 - Protect information assets with logical access security controls"}),"\n",(0,t.jsx)(n.li,{children:"CC6.2 - Authorize users before granting access, remove promptly"}),"\n",(0,t.jsx)(n.li,{children:"CC6.3 - Apply least privilege and segregation of duties"}),"\n",(0,t.jsx)(n.li,{children:"CC6.4 - Restrict physical access to authorized personnel"}),"\n",(0,t.jsx)(n.li,{children:"CC6.5 - Remove sensitive data before relaxing physical controls"}),"\n",(0,t.jsx)(n.li,{children:"CC6.6 - Implement logical access security measures"}),"\n",(0,t.jsx)(n.li,{children:"\u0421\u04216.7 - Restrict removal of information and protect in transit"}),"\n",(0,t.jsx)(n.li,{children:"CC6.8 - Protect against installation of malicious software"}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"cc7---system-operations",children:"CC7 - System Operations"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"CC7.1 - Identify changes in configuration and vulnerabilities"}),"\n",(0,t.jsx)(n.li,{children:"CC7.2 - Monitor system for anomalies"}),"\n",(0,t.jsx)(n.li,{children:"CC7.3 - Evaluate Security incidents"}),"\n",(0,t.jsx)(n.li,{children:"CC7.4 - Respond to security incidents using a defined plan"}),"\n",(0,t.jsx)(n.li,{children:"CC7.5 - Identify and implement activities to recover from incidents"}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"cc8---change-management",children:"CC8 - Change management"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"CC8.1 - Authorize, design, test, approves changes to meet objectives"}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"cc9---risk-mitigation",children:"CC9 - Risk Mitigation"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"CC9.1- Identify and selects risk mitigation activities."}),"\n",(0,t.jsx)(n.li,{children:"CC9.2 - Assess and manage risk from vendors/partners"}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"additional-criterias-ac",children:"Additional criterias (AC)"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Availability"}),"\n",(0,t.jsx)(n.li,{children:"Confidentiality"}),"\n",(0,t.jsx)(n.li,{children:"Process Integrity"}),"\n",(0,t.jsx)(n.li,{children:"Privacy"}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},8453:(e,n,i)=>{i.d(n,{R:()=>l,x:()=>c});var t=i(6540);const s={},r=t.createContext(s);function l(e){const n=t.useContext(r);return t.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(s):e.components||s:l(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/9a0a0f1d.2af7cd6b.js b/assets/js/9a0a0f1d.34992ff3.js similarity index 96% rename from assets/js/9a0a0f1d.2af7cd6b.js rename to assets/js/9a0a0f1d.34992ff3.js index a5edb54..46365ae 100644 --- a/assets/js/9a0a0f1d.2af7cd6b.js +++ b/assets/js/9a0a0f1d.34992ff3.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[3393],{2219:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>r,default:()=>u,frontMatter:()=>s,metadata:()=>o,toc:()=>c});var i=t(4848),a=t(8453);const s={},r="Configuration Management",o={id:"Engineering/ConfigurationManagement",title:"Configuration Management",description:"Summary",source:"@site/docs/Engineering/ConfigurationManagement.md",sourceDirName:"Engineering",slug:"/Engineering/ConfigurationManagement",permalink:"/docs/Engineering/ConfigurationManagement",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1708051930,formattedLastUpdatedAt:"Feb 16, 2024",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"SOC2",permalink:"/docs/Compliance/SOC2"},next:{title:"Disaster Recovery Plan",permalink:"/docs/Engineering/DRP"}},d={},c=[{value:"Summary",id:"summary",level:2},{value:"Tools",id:"tools",level:2},{value:"OS Hardening",id:"os-hardening",level:2},{value:"Basic Debian 11 hardening example",id:"basic-debian-11-hardening-example",level:3}];function l(e){const n={a:"a",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",li:"li",pre:"pre",ul:"ul",...(0,a.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"configuration-management",children:"Configuration Management"}),"\n",(0,i.jsx)(n.h2,{id:"summary",children:"Summary"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Used for virtual machine OS-level configuration"}),"\n",(0,i.jsx)(n.li,{children:"Ex: Configuring the internals of the VMs"}),"\n",(0,i.jsx)(n.li,{children:"Referring to package configuration & software maintenance"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"tools",children:"Tools"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Puppet ",(0,i.jsx)(n.em,{children:"(might be covered here later on)"})]}),"\n",(0,i.jsx)(n.li,{children:"Ansible"}),"\n",(0,i.jsx)(n.li,{children:"Chef"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"os-hardening",children:"OS Hardening"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://github.com/ovh/debian-cis/tree/master",children:"OVH Debian CIS OS Hardening helper"})}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"basic-debian-11-hardening-example",children:"Basic Debian 11 hardening example"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:'git clone https://github.com/ovh/debian-cis.git && cd debian-cis\ncp debian/default /etc/default/cis-hardening\nsed -i "s#CIS_ROOT_DIR=.*#CIS_ROOT_DIR=\'$(pwd)\'#" /etc/default/cis-hardening\nbin/hardening.sh --audit-all\nbin/hardening.sh --audit --set-hardening-level 2\nbin/hardening.sh --apply\n\n## Optional / for reference\nsed -i "s/status=.+/status=enabled/" etc/conf.d/*audit*.cfg\nsed -i "s/status=.+/status=enabled/" etc/conf.d/*kernel*.cfg\nsed -i "s/status=disabled/status=enabled/g" etc/conf.d/*audit*.cfg\nsed -i "s/status=disabled/status=enabled/g" etc/conf.d/*kernel*.cfg\nsed -i "s/status=disabled/status=enabled/g" etc/conf.d/4.1.*.cfg\nsed -i "s/status=disabled/status=enabled/g" etc/conf.d/4.1.15_record_sudo_usage.cfg \nsed -i "s/status=enabled/status=disabled/g" etc/conf.d/4.1.17_freeze_auditd_conf.cfg\nbin/hardening.sh --apply\n\n## 5.1.8 CIS\nrm /etc/cron.deny\ntouch /etc/cron.allow\nchmod 600 /etc/cron.allow\nchown root:root /etc/cron.allow\ntouch /etc/at.allow\nchmod 600 /etc/at.allow\nchown root:root /etc/at.allow\n## 5.2.1\nchmod 600 /etc/ssh/sshd_config\n'})})]})}function u(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>o});var i=t(6540);const a={},s=i.createContext(a);function r(e){const n=i.useContext(s);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(a):e.components||a:r(e.components),i.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[3393],{2219:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>r,default:()=>u,frontMatter:()=>s,metadata:()=>o,toc:()=>c});var i=t(4848),a=t(8453);const s={},r="Configuration Management",o={id:"Engineering/ConfigurationManagement",title:"Configuration Management",description:"Summary",source:"@site/docs/Engineering/ConfigurationManagement.md",sourceDirName:"Engineering",slug:"/Engineering/ConfigurationManagement",permalink:"/docs/Engineering/ConfigurationManagement",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1708326742,formattedLastUpdatedAt:"Feb 19, 2024",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"SOC2",permalink:"/docs/Compliance/SOC2"},next:{title:"Disaster Recovery Plan",permalink:"/docs/Engineering/DRP"}},d={},c=[{value:"Summary",id:"summary",level:2},{value:"Tools",id:"tools",level:2},{value:"OS Hardening",id:"os-hardening",level:2},{value:"Basic Debian 11 hardening example",id:"basic-debian-11-hardening-example",level:3}];function l(e){const n={a:"a",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",li:"li",pre:"pre",ul:"ul",...(0,a.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"configuration-management",children:"Configuration Management"}),"\n",(0,i.jsx)(n.h2,{id:"summary",children:"Summary"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Used for virtual machine OS-level configuration"}),"\n",(0,i.jsx)(n.li,{children:"Ex: Configuring the internals of the VMs"}),"\n",(0,i.jsx)(n.li,{children:"Referring to package configuration & software maintenance"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"tools",children:"Tools"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Puppet ",(0,i.jsx)(n.em,{children:"(might be covered here later on)"})]}),"\n",(0,i.jsx)(n.li,{children:"Ansible"}),"\n",(0,i.jsx)(n.li,{children:"Chef"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"os-hardening",children:"OS Hardening"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://github.com/ovh/debian-cis/tree/master",children:"OVH Debian CIS OS Hardening helper"})}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"basic-debian-11-hardening-example",children:"Basic Debian 11 hardening example"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:'git clone https://github.com/ovh/debian-cis.git && cd debian-cis\ncp debian/default /etc/default/cis-hardening\nsed -i "s#CIS_ROOT_DIR=.*#CIS_ROOT_DIR=\'$(pwd)\'#" /etc/default/cis-hardening\nbin/hardening.sh --audit-all\nbin/hardening.sh --audit --set-hardening-level 2\nbin/hardening.sh --apply\n\n## Optional / for reference\nsed -i "s/status=.+/status=enabled/" etc/conf.d/*audit*.cfg\nsed -i "s/status=.+/status=enabled/" etc/conf.d/*kernel*.cfg\nsed -i "s/status=disabled/status=enabled/g" etc/conf.d/*audit*.cfg\nsed -i "s/status=disabled/status=enabled/g" etc/conf.d/*kernel*.cfg\nsed -i "s/status=disabled/status=enabled/g" etc/conf.d/4.1.*.cfg\nsed -i "s/status=disabled/status=enabled/g" etc/conf.d/4.1.15_record_sudo_usage.cfg \nsed -i "s/status=enabled/status=disabled/g" etc/conf.d/4.1.17_freeze_auditd_conf.cfg\nbin/hardening.sh --apply\n\n## 5.1.8 CIS\nrm /etc/cron.deny\ntouch /etc/cron.allow\nchmod 600 /etc/cron.allow\nchown root:root /etc/cron.allow\ntouch /etc/at.allow\nchmod 600 /etc/at.allow\nchown root:root /etc/at.allow\n## 5.2.1\nchmod 600 /etc/ssh/sshd_config\n'})})]})}function u(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>o});var i=t(6540);const a={},s=i.createContext(a);function r(e){const n=i.useContext(s);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(a):e.components||a:r(e.components),i.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/9b629586.9583efac.js b/assets/js/9b629586.2d7465cd.js similarity index 94% rename from assets/js/9b629586.9583efac.js rename to assets/js/9b629586.2d7465cd.js index 06aa822..06acad0 100644 --- a/assets/js/9b629586.9583efac.js +++ b/assets/js/9b629586.2d7465cd.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9218],{7552:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>c,toc:()=>l});var r=t(4848),i=t(8453);const s={},o="Disaster Recovery Plan",c={id:"Engineering/DRP",title:"Disaster Recovery Plan",description:"Resources",source:"@site/docs/Engineering/DRP.md",sourceDirName:"Engineering",slug:"/Engineering/DRP",permalink:"/docs/Engineering/DRP",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1708051930,formattedLastUpdatedAt:"Feb 16, 2024",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Configuration Management",permalink:"/docs/Engineering/ConfigurationManagement"},next:{title:"Infrastructure as Code",permalink:"/docs/Engineering/IaC"}},a={},l=[{value:"Resources",id:"resources",level:2}];function d(e){const n={a:"a",h1:"h1",h2:"h2",li:"li",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"disaster-recovery-plan",children:"Disaster Recovery Plan"}),"\n",(0,r.jsx)(n.h2,{id:"resources",children:"Resources"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://c4model.com",children:"C4 Model for software engineering"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://googlecloudcheatsheet.withgoogle.com/architecture",children:"GCP Architecture diagram"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://cloud.google.com/architecture/dr-scenarios-planning-guide",children:"GCP DRP guide"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://cloud.google.com/architecture/disaster-recovery",children:"Architecting disaster recovery for cloud infrastructure outages"})}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>c});var r=t(6540);const i={},s=r.createContext(i);function o(e){const n=r.useContext(s);return r.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(i):e.components||i:o(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[9218],{7552:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>u,frontMatter:()=>s,metadata:()=>c,toc:()=>l});var r=t(4848),i=t(8453);const s={},o="Disaster Recovery Plan",c={id:"Engineering/DRP",title:"Disaster Recovery Plan",description:"Resources",source:"@site/docs/Engineering/DRP.md",sourceDirName:"Engineering",slug:"/Engineering/DRP",permalink:"/docs/Engineering/DRP",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1708326742,formattedLastUpdatedAt:"Feb 19, 2024",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Configuration Management",permalink:"/docs/Engineering/ConfigurationManagement"},next:{title:"Infrastructure as Code",permalink:"/docs/Engineering/IaC"}},a={},l=[{value:"Resources",id:"resources",level:2}];function d(e){const n={a:"a",h1:"h1",h2:"h2",li:"li",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"disaster-recovery-plan",children:"Disaster Recovery Plan"}),"\n",(0,r.jsx)(n.h2,{id:"resources",children:"Resources"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://c4model.com",children:"C4 Model for software engineering"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://googlecloudcheatsheet.withgoogle.com/architecture",children:"GCP Architecture diagram"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://cloud.google.com/architecture/dr-scenarios-planning-guide",children:"GCP DRP guide"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://cloud.google.com/architecture/disaster-recovery",children:"Architecting disaster recovery for cloud infrastructure outages"})}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>c});var r=t(6540);const i={},s=r.createContext(i);function o(e){const n=r.useContext(s);return r.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(i):e.components||i:o(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/9e4087bc.d4701eaa.js b/assets/js/9e4087bc.d4701eaa.js new file mode 100644 index 0000000..016673d --- /dev/null +++ b/assets/js/9e4087bc.d4701eaa.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[2711],{9331:(e,s,t)=>{t.r(s),t.d(s,{default:()=>o});t(6540);var r=t(8774),a=t(1312),i=t(1003),n=t(8789),c=t(1107),l=t(4848);function h(e){let{year:s,posts:t}=e;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(c.A,{as:"h3",id:s,children:s}),(0,l.jsx)("ul",{children:t.map((e=>(0,l.jsx)("li",{children:(0,l.jsxs)(r.A,{to:e.metadata.permalink,children:[e.metadata.formattedDate," - ",e.metadata.title]})},e.metadata.date)))})]})}function d(e){let{years:s}=e;return(0,l.jsx)("section",{className:"margin-vert--lg",children:(0,l.jsx)("div",{className:"container",children:(0,l.jsx)("div",{className:"row",children:s.map(((e,s)=>(0,l.jsx)("div",{className:"col col--4 margin-vert--lg",children:(0,l.jsx)(h,{...e})},s)))})})})}function o(e){let{archive:s}=e;const t=(0,a.T)({id:"theme.blog.archive.title",message:"Archive",description:"The page & hero title of the blog archive page"}),r=(0,a.T)({id:"theme.blog.archive.description",message:"Archive",description:"The page & hero description of the blog archive page"}),h=function(e){const s=e.reduce(((e,s)=>{const t=s.metadata.date.split("-")[0],r=e.get(t)??[];return e.set(t,[s,...r])}),new Map);return Array.from(s,(e=>{let[s,t]=e;return{year:s,posts:t}}))}(s.blogPosts);return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(i.be,{title:t,description:r}),(0,l.jsxs)(n.A,{children:[(0,l.jsx)("header",{className:"hero hero--primary",children:(0,l.jsxs)("div",{className:"container",children:[(0,l.jsx)(c.A,{as:"h1",className:"hero__title",children:t}),(0,l.jsx)("p",{className:"hero__subtitle",children:r})]})}),(0,l.jsx)("main",{children:h.length>0&&(0,l.jsx)(d,{years:h})})]})]})}}}]); \ No newline at end of file diff --git a/assets/js/9e4087bc.dfabb06b.js b/assets/js/9e4087bc.dfabb06b.js deleted file mode 100644 index e423b51..0000000 --- a/assets/js/9e4087bc.dfabb06b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[2711],{9331:(e,s,t)=>{t.r(s),t.d(s,{default:()=>o});t(6540);var r=t(8774),a=t(1312),i=t(1003),n=t(781),c=t(1107),l=t(4848);function h(e){let{year:s,posts:t}=e;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(c.A,{as:"h3",id:s,children:s}),(0,l.jsx)("ul",{children:t.map((e=>(0,l.jsx)("li",{children:(0,l.jsxs)(r.A,{to:e.metadata.permalink,children:[e.metadata.formattedDate," - ",e.metadata.title]})},e.metadata.date)))})]})}function d(e){let{years:s}=e;return(0,l.jsx)("section",{className:"margin-vert--lg",children:(0,l.jsx)("div",{className:"container",children:(0,l.jsx)("div",{className:"row",children:s.map(((e,s)=>(0,l.jsx)("div",{className:"col col--4 margin-vert--lg",children:(0,l.jsx)(h,{...e})},s)))})})})}function o(e){let{archive:s}=e;const t=(0,a.T)({id:"theme.blog.archive.title",message:"Archive",description:"The page & hero title of the blog archive page"}),r=(0,a.T)({id:"theme.blog.archive.description",message:"Archive",description:"The page & hero description of the blog archive page"}),h=function(e){const s=e.reduce(((e,s)=>{const t=s.metadata.date.split("-")[0],r=e.get(t)??[];return e.set(t,[s,...r])}),new Map);return Array.from(s,(e=>{let[s,t]=e;return{year:s,posts:t}}))}(s.blogPosts);return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(i.be,{title:t,description:r}),(0,l.jsxs)(n.A,{children:[(0,l.jsx)("header",{className:"hero hero--primary",children:(0,l.jsxs)("div",{className:"container",children:[(0,l.jsx)(c.A,{as:"h1",className:"hero__title",children:t}),(0,l.jsx)("p",{className:"hero__subtitle",children:r})]})}),(0,l.jsx)("main",{children:h.length>0&&(0,l.jsx)(d,{years:h})})]})]})}}}]); \ No newline at end of file diff --git a/assets/js/b38cbf7d.53868a14.js b/assets/js/b38cbf7d.14a191b8.js similarity index 92% rename from assets/js/b38cbf7d.53868a14.js rename to assets/js/b38cbf7d.14a191b8.js index 6906930..cc68bef 100644 --- a/assets/js/b38cbf7d.53868a14.js +++ b/assets/js/b38cbf7d.14a191b8.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4e3],{2140:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>s,metadata:()=>a,toc:()=>u});var n=r(4848),o=r(8453);const s={},i="Hi!",a={id:"GCP/Terraform/init",title:"Hi!",description:"Some content for terraforming a GCP infrastructure is coming soon!",source:"@site/docs/GCP/Terraform/init.md",sourceDirName:"GCP/Terraform",slug:"/GCP/Terraform/init",permalink:"/docs/GCP/Terraform/init",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1708051930,formattedLastUpdatedAt:"Feb 16, 2024",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Remote SSH an IAP-secured server using a terminal or VSCode",permalink:"/docs/GCP/Identity-Aware Proxy/remote-ssh-iap"},next:{title:"Resources",permalink:"/docs/Security Operations/secops-resources"}},c={},u=[];function m(e){const t={h1:"h1",p:"p",...(0,o.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"hi",children:"Hi!"}),"\n",(0,n.jsx)(t.p,{children:"Some content for terraforming a GCP infrastructure is coming soon!"})]})}function d(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(m,{...e})}):m(e)}},8453:(e,t,r)=>{r.d(t,{R:()=>i,x:()=>a});var n=r(6540);const o={},s=n.createContext(o);function i(e){const t=n.useContext(s);return n.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:i(e.components),n.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[4e3],{2140:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>s,metadata:()=>a,toc:()=>u});var n=r(4848),o=r(8453);const s={},i="Hi!",a={id:"GCP/Terraform/init",title:"Hi!",description:"Some content for terraforming a GCP infrastructure is coming soon!",source:"@site/docs/GCP/Terraform/init.md",sourceDirName:"GCP/Terraform",slug:"/GCP/Terraform/init",permalink:"/docs/GCP/Terraform/init",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1708326742,formattedLastUpdatedAt:"Feb 19, 2024",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Remote SSH an IAP-secured server using a terminal or VSCode",permalink:"/docs/GCP/Identity-Aware Proxy/remote-ssh-iap"},next:{title:"Resources",permalink:"/docs/Security Operations/secops-resources"}},c={},u=[];function m(e){const t={h1:"h1",p:"p",...(0,o.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"hi",children:"Hi!"}),"\n",(0,n.jsx)(t.p,{children:"Some content for terraforming a GCP infrastructure is coming soon!"})]})}function d(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(m,{...e})}):m(e)}},8453:(e,t,r)=>{r.d(t,{R:()=>i,x:()=>a});var n=r(6540);const o={},s=n.createContext(o);function i(e){const t=n.useContext(s);return n.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:i(e.components),n.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c37619b8.bf61e07a.js b/assets/js/c37619b8.4036d2e2.js similarity index 99% rename from assets/js/c37619b8.bf61e07a.js rename to assets/js/c37619b8.4036d2e2.js index 4c50421..a3159a7 100644 --- a/assets/js/c37619b8.bf61e07a.js +++ b/assets/js/c37619b8.4036d2e2.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[3186],{4411:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>m,frontMatter:()=>a,metadata:()=>u,toc:()=>d});var o=t(4848),r=t(8453),s=t(1470),i=t(9365);const a={},l="Remote SSH an IAP-secured server using a terminal or VSCode",u={id:"GCP/Identity-Aware Proxy/remote-ssh-iap",title:"Remote SSH an IAP-secured server using a terminal or VSCode",description:"Getting started",source:"@site/docs/GCP/Identity-Aware Proxy/remote-ssh-iap.md",sourceDirName:"GCP/Identity-Aware Proxy",slug:"/GCP/Identity-Aware Proxy/remote-ssh-iap",permalink:"/docs/GCP/Identity-Aware Proxy/remote-ssh-iap",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1708051930,formattedLastUpdatedAt:"Feb 16, 2024",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Port-forwarding to localhost",permalink:"/docs/GCP/Identity-Aware Proxy/port-forwarding"},next:{title:"Hi!",permalink:"/docs/GCP/Terraform/init"}},c={},d=[{value:"Getting started",id:"getting-started",level:2},{value:"Install the gcloud CLI",id:"install-the-gcloud-cli",level:3},{value:"Authentication with the CLI",id:"gcloud-auth",level:3},{value:"Using a standard terminal",id:"using-a-standard-terminal",level:2},{value:"Using VSCode Remote Explorer",id:"using-vscode-remote-explorer",level:2},{value:"CLI Authentication",id:"cli-authentication",level:3},{value:"SSH tunnel dry run",id:"ssh-tunnel-dry-run",level:3},{value:"Updating your ~/.ssh/config",id:"updating-your-sshconfig",level:3},{value:"Connect to Host on VSCode",id:"connect-to-host-on-vscode",level:3},{value:"Troubleshoot",id:"troubleshoot",level:2},{value:"SSH issues with WSL & VScode on Windows",id:"ssh-issues-with-wsl--vscode-on-windows",level:3}];function h(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",hr:"hr",p:"p",pre:"pre",strong:"strong",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h1,{id:"remote-ssh-an-iap-secured-server-using-a-terminal-or-vscode",children:"Remote SSH an IAP-secured server using a terminal or VSCode"}),"\n","\n","\n",(0,o.jsx)(n.h2,{id:"getting-started",children:"Getting started"}),"\n",(0,o.jsx)(n.h3,{id:"install-the-gcloud-cli",children:"Install the gcloud CLI"}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.a,{href:"https://cloud.google.com/sdk/docs/install#linux",children:"Official documentation"})}),"\n",(0,o.jsx)(n.h3,{id:"gcloud-auth",children:"Authentication with the CLI"}),"\n",(0,o.jsxs)(n.p,{children:["Before each session you may launch, make sure to be ",(0,o.jsx)(n.strong,{children:"authenticated with your gcloud account"})," within the CLI"]}),"\n",(0,o.jsxs)(s.A,{groupId:"operating-systems",children:[(0,o.jsx)(i.A,{value:"Linux/mac",label:"Standard",children:(0,o.jsx)("pre",{children:"gcloud auth login"})}),(0,o.jsx)(i.A,{value:"WSL",label:"WSL",children:(0,o.jsx)("pre",{children:"gcloud auth login --no-launch-browser"})})]}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsx)(n.h2,{id:"using-a-standard-terminal",children:"Using a standard terminal"}),"\n",(0,o.jsxs)(n.p,{children:["Very straightforward, make sure to be authenticated and run the following command :\n",(0,o.jsx)("pre",{children:"gcloud compute ssh my-instance --tunnel-through-iap "})]}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsx)(n.h2,{id:"using-vscode-remote-explorer",children:"Using VSCode Remote Explorer"}),"\n",(0,o.jsx)(n.h3,{id:"cli-authentication",children:"CLI Authentication"}),"\n",(0,o.jsxs)(n.p,{children:["As usual, make sure to be authenticated : ",(0,o.jsx)(n.a,{href:"#gcloud-auth",children:"gcloud authentication"})]}),"\n",(0,o.jsx)(n.h3,{id:"ssh-tunnel-dry-run",children:"SSH tunnel dry run"}),"\n",(0,o.jsxs)(n.p,{children:["Then, make sure to ",(0,o.jsx)(n.strong,{children:"dry run ssh tunnel"})," to your instance :"]}),"\n",(0,o.jsx)("pre",{children:"gcloud compute ssh my-instance --tunnel-through-iap --dry-run"}),"\n",(0,o.jsx)(n.p,{children:"You should get a response similar to that one :"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:'/usr/bin/ssh -t -i /Users/YOURNAME/.ssh/google_compute_engine \n-o CheckHostIP=no \n-o HashKnownHosts=no -o HostKeyAlias=compute.XXXX -o IdentitiesOnly=yes \n-o StrictHostKeyChecking=yes \n-o UserKnownHostsFile=/Users/YOURNAME/.ssh/google_compute_known_hosts \n-o ProxyCommand="/Library/Frameworks/Python.framework/Versions/3.9/bin/python3 -S /Applications/google-cloud-sdk/lib/gcloud.py compute start-iap-tunnel my-instance %p --listen-on-stdin --project=my-project --zone=my-zone --verbosity=warning" \n-o ProxyUseFdpass=no YOURNAME@compute.XXXX\n'})}),"\n",(0,o.jsxs)(n.p,{children:["Now, what we are going to do is to ",(0,o.jsx)(n.strong,{children:"copy the ProxyCommand"})," out of it, which contains the info we need :\n",(0,o.jsx)(n.code,{children:"/Library/Frameworks/Python [....] -verbosity=warning"})]}),"\n",(0,o.jsx)(n.h3,{id:"updating-your-sshconfig",children:"Updating your ~/.ssh/config"}),"\n",(0,o.jsx)(n.p,{children:"Now, using VScode, let's have a look at our ssh config file :"}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.strong,{children:"CMD + shift + P"})}),"\n"]}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.strong,{children:"Remote-SSH : Open SSH configuration file"})}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["Into this file, add the following content and make sure to ",(0,o.jsx)(n.strong,{children:"replace the full ProxyCommand"})," by the way copied ealier :"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:"Host my-instance-name\n HostName my-instance-name\n IdentityFile /Users/YOURNAME/.ssh/google_compute_engine\n CheckHostIP no\n HashKnownHosts no\n HostKeyAlias my-instance-name\n IdentitiesOnly yes\n StrictHostKeyChecking yes\n UserKnownHostsFile /Users/YOURNAME/.ssh/google_compute_known_hosts\n ProxyCommand /Library/Frameworks/Python [....] -verbosity=warning\n ProxyUseFdpass no\n"})}),"\n",(0,o.jsx)(n.admonition,{type:"info",children:(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.em,{children:"Host, HostName & HostKeyAlias"})," can all be replaced by whatever value you wish.\nDo not forget ",(0,o.jsx)(n.em,{children:"setting the right UserKnownHostsFile"})," directory as well as pasting the ",(0,o.jsx)(n.em,{children:"full ProxyCommand content"})]})}),"\n",(0,o.jsx)(n.h3,{id:"connect-to-host-on-vscode",children:"Connect to Host on VSCode"}),"\n",(0,o.jsx)(n.p,{children:"Now, you should be able to remote SSH your IAP-secured instance directly on VScode."}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.strong,{children:"CMD + shift + P"})}),"\n"]}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.strong,{children:"Remote-SSH : Connect to Host"})}),"\n"]}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsxs)(n.p,{children:["Pick your new entry ",(0,o.jsx)(n.strong,{children:"'my-instance-name'"}),", which should appear"]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"You can now use File Explorer tab to go to whatever folder you wish and edit files directly in VSCode. Saving you ton of time if you are not an avid vim programmer."}),"\n",(0,o.jsx)(n.admonition,{type:"caution",children:(0,o.jsxs)(n.p,{children:["There might be a few additional steps on a ",(0,o.jsx)(n.strong,{children:"Windows"})," environment where you use ",(0,o.jsx)(n.em,{children:(0,o.jsx)(n.strong,{children:"Windows Subsystem for Linux"})}),". By default, VSCode does not use the WSL's ssh, which is a problem. See ",(0,o.jsx)(n.a,{href:"#troubleshoot",children:"Troubleshoot"})," below."]})}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsx)(n.h2,{id:"troubleshoot",children:"Troubleshoot"}),"\n",(0,o.jsx)(n.h3,{id:"ssh-issues-with-wsl--vscode-on-windows",children:"SSH issues with WSL & VScode on Windows"}),"\n",(0,o.jsx)(n.p,{children:"Coming later"})]})}function m(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>i});t(6540);var o=t(8215);const r={tabItem:"tabItem_Ymn6"};var s=t(4848);function i(e){let{children:n,hidden:t,className:i}=e;return(0,s.jsx)("div",{role:"tabpanel",className:(0,o.A)(r.tabItem,i),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>j});var o=t(6540),r=t(8215),s=t(3104),i=t(6347),a=t(205),l=t(7485),u=t(1682),c=t(9466);function d(e){return o.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,o.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,o.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:o,default:r}}=e;return{value:n,label:t,attributes:o,default:r}}))}(t);return function(e){const n=(0,u.X)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function m(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:t}=e;const r=(0,i.W6)(),s=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(s),(0,o.useCallback)((e=>{if(!s)return;const n=new URLSearchParams(r.location.search);n.set(s,e),r.replace({...r.location,search:n.toString()})}),[s,r])]}function g(e){const{defaultValue:n,queryString:t=!1,groupId:r}=e,s=h(e),[i,l]=(0,o.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!m({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const o=t.find((e=>e.default))??t[0];if(!o)throw new Error("Unexpected error: 0 tabValues");return o.value}({defaultValue:n,tabValues:s}))),[u,d]=p({queryString:t,groupId:r}),[g,x]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,s]=(0,c.Dv)(t);return[r,(0,o.useCallback)((e=>{t&&s.set(e)}),[t,s])]}({groupId:r}),y=(()=>{const e=u??g;return m({value:e,tabValues:s})?e:null})();(0,a.A)((()=>{y&&l(y)}),[y]);return{selectedValue:i,selectValue:(0,o.useCallback)((e=>{if(!m({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),x(e)}),[d,x,s]),tabValues:s}}var x=t(2303);const y={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(4848);function b(e){let{className:n,block:t,selectedValue:o,selectValue:i,tabValues:a}=e;const l=[],{blockElementScrollPositionUntilNextRender:u}=(0,s.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),r=a[t].value;r!==o&&(u(n),i(r))},d=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":t},n),children:a.map((e=>{let{value:n,label:t,attributes:s}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:o===n?0:-1,"aria-selected":o===n,ref:e=>l.push(e),onKeyDown:d,onClick:c,...s,className:(0,r.A)("tabs__item",y.tabItem,s?.className,{"tabs__item--active":o===n}),children:t??n},n)}))})}function v(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,o.cloneElement)(e,{className:"margin-top--md"}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,o.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function w(e){const n=g(e);return(0,f.jsxs)("div",{className:(0,r.A)("tabs-container",y.tabList),children:[(0,f.jsx)(b,{...e,...n}),(0,f.jsx)(v,{...e,...n})]})}function j(e){const n=(0,x.A)();return(0,f.jsx)(w,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>a});var o=t(6540);const r={},s=o.createContext(r);function i(e){const n=o.useContext(s);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(r):e.components||r:i(e.components),o.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[3186],{4411:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>m,frontMatter:()=>a,metadata:()=>u,toc:()=>d});var o=t(4848),r=t(8453),s=t(1470),i=t(9365);const a={},l="Remote SSH an IAP-secured server using a terminal or VSCode",u={id:"GCP/Identity-Aware Proxy/remote-ssh-iap",title:"Remote SSH an IAP-secured server using a terminal or VSCode",description:"Getting started",source:"@site/docs/GCP/Identity-Aware Proxy/remote-ssh-iap.md",sourceDirName:"GCP/Identity-Aware Proxy",slug:"/GCP/Identity-Aware Proxy/remote-ssh-iap",permalink:"/docs/GCP/Identity-Aware Proxy/remote-ssh-iap",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1708326742,formattedLastUpdatedAt:"Feb 19, 2024",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Port-forwarding to localhost",permalink:"/docs/GCP/Identity-Aware Proxy/port-forwarding"},next:{title:"Hi!",permalink:"/docs/GCP/Terraform/init"}},c={},d=[{value:"Getting started",id:"getting-started",level:2},{value:"Install the gcloud CLI",id:"install-the-gcloud-cli",level:3},{value:"Authentication with the CLI",id:"gcloud-auth",level:3},{value:"Using a standard terminal",id:"using-a-standard-terminal",level:2},{value:"Using VSCode Remote Explorer",id:"using-vscode-remote-explorer",level:2},{value:"CLI Authentication",id:"cli-authentication",level:3},{value:"SSH tunnel dry run",id:"ssh-tunnel-dry-run",level:3},{value:"Updating your ~/.ssh/config",id:"updating-your-sshconfig",level:3},{value:"Connect to Host on VSCode",id:"connect-to-host-on-vscode",level:3},{value:"Troubleshoot",id:"troubleshoot",level:2},{value:"SSH issues with WSL & VScode on Windows",id:"ssh-issues-with-wsl--vscode-on-windows",level:3}];function h(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",hr:"hr",p:"p",pre:"pre",strong:"strong",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h1,{id:"remote-ssh-an-iap-secured-server-using-a-terminal-or-vscode",children:"Remote SSH an IAP-secured server using a terminal or VSCode"}),"\n","\n","\n",(0,o.jsx)(n.h2,{id:"getting-started",children:"Getting started"}),"\n",(0,o.jsx)(n.h3,{id:"install-the-gcloud-cli",children:"Install the gcloud CLI"}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.a,{href:"https://cloud.google.com/sdk/docs/install#linux",children:"Official documentation"})}),"\n",(0,o.jsx)(n.h3,{id:"gcloud-auth",children:"Authentication with the CLI"}),"\n",(0,o.jsxs)(n.p,{children:["Before each session you may launch, make sure to be ",(0,o.jsx)(n.strong,{children:"authenticated with your gcloud account"})," within the CLI"]}),"\n",(0,o.jsxs)(s.A,{groupId:"operating-systems",children:[(0,o.jsx)(i.A,{value:"Linux/mac",label:"Standard",children:(0,o.jsx)("pre",{children:"gcloud auth login"})}),(0,o.jsx)(i.A,{value:"WSL",label:"WSL",children:(0,o.jsx)("pre",{children:"gcloud auth login --no-launch-browser"})})]}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsx)(n.h2,{id:"using-a-standard-terminal",children:"Using a standard terminal"}),"\n",(0,o.jsxs)(n.p,{children:["Very straightforward, make sure to be authenticated and run the following command :\n",(0,o.jsx)("pre",{children:"gcloud compute ssh my-instance --tunnel-through-iap "})]}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsx)(n.h2,{id:"using-vscode-remote-explorer",children:"Using VSCode Remote Explorer"}),"\n",(0,o.jsx)(n.h3,{id:"cli-authentication",children:"CLI Authentication"}),"\n",(0,o.jsxs)(n.p,{children:["As usual, make sure to be authenticated : ",(0,o.jsx)(n.a,{href:"#gcloud-auth",children:"gcloud authentication"})]}),"\n",(0,o.jsx)(n.h3,{id:"ssh-tunnel-dry-run",children:"SSH tunnel dry run"}),"\n",(0,o.jsxs)(n.p,{children:["Then, make sure to ",(0,o.jsx)(n.strong,{children:"dry run ssh tunnel"})," to your instance :"]}),"\n",(0,o.jsx)("pre",{children:"gcloud compute ssh my-instance --tunnel-through-iap --dry-run"}),"\n",(0,o.jsx)(n.p,{children:"You should get a response similar to that one :"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:'/usr/bin/ssh -t -i /Users/YOURNAME/.ssh/google_compute_engine \n-o CheckHostIP=no \n-o HashKnownHosts=no -o HostKeyAlias=compute.XXXX -o IdentitiesOnly=yes \n-o StrictHostKeyChecking=yes \n-o UserKnownHostsFile=/Users/YOURNAME/.ssh/google_compute_known_hosts \n-o ProxyCommand="/Library/Frameworks/Python.framework/Versions/3.9/bin/python3 -S /Applications/google-cloud-sdk/lib/gcloud.py compute start-iap-tunnel my-instance %p --listen-on-stdin --project=my-project --zone=my-zone --verbosity=warning" \n-o ProxyUseFdpass=no YOURNAME@compute.XXXX\n'})}),"\n",(0,o.jsxs)(n.p,{children:["Now, what we are going to do is to ",(0,o.jsx)(n.strong,{children:"copy the ProxyCommand"})," out of it, which contains the info we need :\n",(0,o.jsx)(n.code,{children:"/Library/Frameworks/Python [....] -verbosity=warning"})]}),"\n",(0,o.jsx)(n.h3,{id:"updating-your-sshconfig",children:"Updating your ~/.ssh/config"}),"\n",(0,o.jsx)(n.p,{children:"Now, using VScode, let's have a look at our ssh config file :"}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.strong,{children:"CMD + shift + P"})}),"\n"]}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.strong,{children:"Remote-SSH : Open SSH configuration file"})}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["Into this file, add the following content and make sure to ",(0,o.jsx)(n.strong,{children:"replace the full ProxyCommand"})," by the way copied ealier :"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:"Host my-instance-name\n HostName my-instance-name\n IdentityFile /Users/YOURNAME/.ssh/google_compute_engine\n CheckHostIP no\n HashKnownHosts no\n HostKeyAlias my-instance-name\n IdentitiesOnly yes\n StrictHostKeyChecking yes\n UserKnownHostsFile /Users/YOURNAME/.ssh/google_compute_known_hosts\n ProxyCommand /Library/Frameworks/Python [....] -verbosity=warning\n ProxyUseFdpass no\n"})}),"\n",(0,o.jsx)(n.admonition,{type:"info",children:(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.em,{children:"Host, HostName & HostKeyAlias"})," can all be replaced by whatever value you wish.\nDo not forget ",(0,o.jsx)(n.em,{children:"setting the right UserKnownHostsFile"})," directory as well as pasting the ",(0,o.jsx)(n.em,{children:"full ProxyCommand content"})]})}),"\n",(0,o.jsx)(n.h3,{id:"connect-to-host-on-vscode",children:"Connect to Host on VSCode"}),"\n",(0,o.jsx)(n.p,{children:"Now, you should be able to remote SSH your IAP-secured instance directly on VScode."}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.strong,{children:"CMD + shift + P"})}),"\n"]}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.strong,{children:"Remote-SSH : Connect to Host"})}),"\n"]}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsxs)(n.p,{children:["Pick your new entry ",(0,o.jsx)(n.strong,{children:"'my-instance-name'"}),", which should appear"]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"You can now use File Explorer tab to go to whatever folder you wish and edit files directly in VSCode. Saving you ton of time if you are not an avid vim programmer."}),"\n",(0,o.jsx)(n.admonition,{type:"caution",children:(0,o.jsxs)(n.p,{children:["There might be a few additional steps on a ",(0,o.jsx)(n.strong,{children:"Windows"})," environment where you use ",(0,o.jsx)(n.em,{children:(0,o.jsx)(n.strong,{children:"Windows Subsystem for Linux"})}),". By default, VSCode does not use the WSL's ssh, which is a problem. See ",(0,o.jsx)(n.a,{href:"#troubleshoot",children:"Troubleshoot"})," below."]})}),"\n",(0,o.jsx)(n.hr,{}),"\n",(0,o.jsx)(n.h2,{id:"troubleshoot",children:"Troubleshoot"}),"\n",(0,o.jsx)(n.h3,{id:"ssh-issues-with-wsl--vscode-on-windows",children:"SSH issues with WSL & VScode on Windows"}),"\n",(0,o.jsx)(n.p,{children:"Coming later"})]})}function m(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}},9365:(e,n,t)=>{t.d(n,{A:()=>i});t(6540);var o=t(8215);const r={tabItem:"tabItem_Ymn6"};var s=t(4848);function i(e){let{children:n,hidden:t,className:i}=e;return(0,s.jsx)("div",{role:"tabpanel",className:(0,o.A)(r.tabItem,i),hidden:t,children:n})}},1470:(e,n,t)=>{t.d(n,{A:()=>j});var o=t(6540),r=t(8215),s=t(3104),i=t(6347),a=t(205),l=t(7485),u=t(1682),c=t(9466);function d(e){return o.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,o.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,o.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:o,default:r}}=e;return{value:n,label:t,attributes:o,default:r}}))}(t);return function(e){const n=(0,u.X)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function m(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:t}=e;const r=(0,i.W6)(),s=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,l.aZ)(s),(0,o.useCallback)((e=>{if(!s)return;const n=new URLSearchParams(r.location.search);n.set(s,e),r.replace({...r.location,search:n.toString()})}),[s,r])]}function g(e){const{defaultValue:n,queryString:t=!1,groupId:r}=e,s=h(e),[i,l]=(0,o.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!m({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const o=t.find((e=>e.default))??t[0];if(!o)throw new Error("Unexpected error: 0 tabValues");return o.value}({defaultValue:n,tabValues:s}))),[u,d]=p({queryString:t,groupId:r}),[g,x]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,s]=(0,c.Dv)(t);return[r,(0,o.useCallback)((e=>{t&&s.set(e)}),[t,s])]}({groupId:r}),y=(()=>{const e=u??g;return m({value:e,tabValues:s})?e:null})();(0,a.A)((()=>{y&&l(y)}),[y]);return{selectedValue:i,selectValue:(0,o.useCallback)((e=>{if(!m({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),x(e)}),[d,x,s]),tabValues:s}}var x=t(2303);const y={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=t(4848);function b(e){let{className:n,block:t,selectedValue:o,selectValue:i,tabValues:a}=e;const l=[],{blockElementScrollPositionUntilNextRender:u}=(0,s.a_)(),c=e=>{const n=e.currentTarget,t=l.indexOf(n),r=a[t].value;r!==o&&(u(n),i(r))},d=e=>{let n=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const t=l.indexOf(e.currentTarget)+1;n=l[t]??l[0];break}case"ArrowLeft":{const t=l.indexOf(e.currentTarget)-1;n=l[t]??l[l.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.A)("tabs",{"tabs--block":t},n),children:a.map((e=>{let{value:n,label:t,attributes:s}=e;return(0,f.jsx)("li",{role:"tab",tabIndex:o===n?0:-1,"aria-selected":o===n,ref:e=>l.push(e),onKeyDown:d,onClick:c,...s,className:(0,r.A)("tabs__item",y.tabItem,s?.className,{"tabs__item--active":o===n}),children:t??n},n)}))})}function v(e){let{lazy:n,children:t,selectedValue:r}=e;const s=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===r));return e?(0,o.cloneElement)(e,{className:"margin-top--md"}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,o.cloneElement)(e,{key:n,hidden:e.props.value!==r})))})}function w(e){const n=g(e);return(0,f.jsxs)("div",{className:(0,r.A)("tabs-container",y.tabList),children:[(0,f.jsx)(b,{...e,...n}),(0,f.jsx)(v,{...e,...n})]})}function j(e){const n=(0,x.A)();return(0,f.jsx)(w,{...e,children:d(e.children)},String(n))}},8453:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>a});var o=t(6540);const r={},s=o.createContext(r);function i(e){const n=o.useContext(s);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(r):e.components||r:i(e.components),o.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ebfee794.00b8372f.js b/assets/js/ebfee794.3d845930.js similarity index 97% rename from assets/js/ebfee794.00b8372f.js rename to assets/js/ebfee794.3d845930.js index 1444c49..a6b84be 100644 --- a/assets/js/ebfee794.00b8372f.js +++ b/assets/js/ebfee794.3d845930.js @@ -1 +1 @@ -"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[2005],{3414:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>r,contentTitle:()=>l,default:()=>u,frontMatter:()=>s,metadata:()=>c,toc:()=>d});var o=t(4848),i=t(8453);const s={sidebar_position:0},l="Welcome",c={id:"welcome",title:"Welcome",description:"Welcome to the documentation space.",source:"@site/docs/welcome.md",sourceDirName:".",slug:"/welcome",permalink:"/docs/welcome",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1708051930,formattedLastUpdatedAt:"Feb 16, 2024",sidebarPosition:0,frontMatter:{sidebar_position:0},sidebar:"tutorialSidebar",next:{title:"SOC2",permalink:"/docs/Compliance/SOC2"}},r={},d=[{value:"Sections coming soon",id:"sections-coming-soon",level:3},{value:"Blog posts subjects to be covered",id:"blog-posts-subjects-to-be-covered",level:3}];function a(e){const n={admonition:"admonition",em:"em",h1:"h1",h3:"h3",li:"li",p:"p",ul:"ul",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h1,{id:"welcome",children:"Welcome"}),"\n",(0,o.jsx)(n.p,{children:"Welcome to the documentation space."}),"\n",(0,o.jsx)(n.h3,{id:"sections-coming-soon",children:"Sections coming soon"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Cloud Service Providers : AWS, GCP \u2601\ufe0f"}),"\n",(0,o.jsx)(n.li,{children:"TheHive \ud83d\udc1d"}),"\n",(0,o.jsx)(n.li,{children:"Shuffle \ud83d\udd00"}),"\n",(0,o.jsxs)(n.li,{children:["Splunk \ud83e\udeb5 ",(0,o.jsx)(n.em,{children:"(log pun intended)"})]}),"\n",(0,o.jsx)(n.li,{children:"Python \ud83d\udc0d"}),"\n",(0,o.jsx)(n.li,{children:"VSCode \ud83d\udcbb"}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"blog-posts-subjects-to-be-covered",children:"Blog posts subjects to be covered"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Security Operations Center"}),"\n",(0,o.jsx)(n.li,{children:"Security Operations Automation"}),"\n",(0,o.jsx)(n.li,{children:"Identity-Aware Proxy"}),"\n"]}),"\n",(0,o.jsx)(n.admonition,{title:"Note to self",type:"note",children:(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Stay hydrated! \ud83d\udca6"}),"\n",(0,o.jsx)(n.li,{children:"Easy with the all-nighters \ud83d\ude34"}),"\n",(0,o.jsx)(n.li,{children:"You hold the keys to the path you'll walk down \u26f0"}),"\n"]})})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>c});var o=t(6540);const i={},s=o.createContext(i);function l(e){const n=o.useContext(s);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(i):e.components||i:l(e.components),o.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[2005],{3414:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>r,contentTitle:()=>l,default:()=>u,frontMatter:()=>s,metadata:()=>c,toc:()=>d});var o=t(4848),i=t(8453);const s={sidebar_position:0},l="Welcome",c={id:"welcome",title:"Welcome",description:"Welcome to the documentation space.",source:"@site/docs/welcome.md",sourceDirName:".",slug:"/welcome",permalink:"/docs/welcome",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedAt:1708326742,formattedLastUpdatedAt:"Feb 19, 2024",sidebarPosition:0,frontMatter:{sidebar_position:0},sidebar:"tutorialSidebar",next:{title:"SOC2",permalink:"/docs/Compliance/SOC2"}},r={},d=[{value:"Sections coming soon",id:"sections-coming-soon",level:3},{value:"Blog posts subjects to be covered",id:"blog-posts-subjects-to-be-covered",level:3}];function a(e){const n={admonition:"admonition",em:"em",h1:"h1",h3:"h3",li:"li",p:"p",ul:"ul",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h1,{id:"welcome",children:"Welcome"}),"\n",(0,o.jsx)(n.p,{children:"Welcome to the documentation space."}),"\n",(0,o.jsx)(n.h3,{id:"sections-coming-soon",children:"Sections coming soon"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Cloud Service Providers : AWS, GCP \u2601\ufe0f"}),"\n",(0,o.jsx)(n.li,{children:"TheHive \ud83d\udc1d"}),"\n",(0,o.jsx)(n.li,{children:"Shuffle \ud83d\udd00"}),"\n",(0,o.jsxs)(n.li,{children:["Splunk \ud83e\udeb5 ",(0,o.jsx)(n.em,{children:"(log pun intended)"})]}),"\n",(0,o.jsx)(n.li,{children:"Python \ud83d\udc0d"}),"\n",(0,o.jsx)(n.li,{children:"VSCode \ud83d\udcbb"}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"blog-posts-subjects-to-be-covered",children:"Blog posts subjects to be covered"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Security Operations Center"}),"\n",(0,o.jsx)(n.li,{children:"Security Operations Automation"}),"\n",(0,o.jsx)(n.li,{children:"Identity-Aware Proxy"}),"\n"]}),"\n",(0,o.jsx)(n.admonition,{title:"Note to self",type:"note",children:(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Stay hydrated! \ud83d\udca6"}),"\n",(0,o.jsx)(n.li,{children:"Easy with the all-nighters \ud83d\ude34"}),"\n",(0,o.jsx)(n.li,{children:"You hold the keys to the path you'll walk down \u26f0"}),"\n"]})})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>c});var o=t(6540);const i={},s=o.createContext(i);function l(e){const n=o.useContext(s);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(i):e.components||i:l(e.components),o.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/main.6272f05e.js b/assets/js/main.6272f05e.js deleted file mode 100644 index 7615d1f..0000000 --- a/assets/js/main.6272f05e.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.6272f05e.js.LICENSE.txt */ -(self.webpackChunkmy_website=self.webpackChunkmy_website||[]).push([[8792],{8328:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});n(6540);var r=n(3259),o=n.n(r),a=n(4054);const i={"01a85c17":[()=>Promise.all([n.e(1869),n.e(8209)]).then(n.bind(n,9158)),"@theme/BlogTagsListPage",9158],"0817c5ed":[()=>n.e(8880).then(n.bind(n,363)),"@site/docs/TheHive/thehive-resources.mdx",363],"1365e388":[()=>n.e(6344).then(n.bind(n,4321)),"@site/docs/Engineering/IaC.md",4321],17896441:[()=>Promise.all([n.e(1869),n.e(5533),n.e(8401)]).then(n.bind(n,5022)),"@theme/DocItem",5022],"1df93b7f":[()=>Promise.all([n.e(1869),n.e(2733),n.e(4583)]).then(n.bind(n,1075)),"@site/src/pages/index.tsx",1075],"1f391b9e":[()=>Promise.all([n.e(1869),n.e(5533),n.e(6061)]).then(n.bind(n,7973)),"@theme/MDXPage",7973],"20417f73":[()=>n.e(9425).then(n.t.bind(n,8416,19)),"~blog/default/blog-tags-introduction-60a.json",8416],"393be207":[()=>n.e(4134).then(n.bind(n,6602)),"@site/src/pages/markdown-page.md",6602],"41d37d98":[()=>Promise.all([n.e(4132),n.e(3671)]).then(n.bind(n,9188)),"@site/blog/2022-09-21-hello-world.mdx",9188],"5ad2500b":[()=>n.e(2434).then(n.t.bind(n,1703,19)),"~blog/default/blog-tags-introduction-60a-list.json",1703],"5b48c0f7":[()=>n.e(4386).then(n.bind(n,7957)),"@site/docs/Shuffle.mdx",7957],"5e95c892":[()=>n.e(9647).then(n.bind(n,7121)),"@theme/DocsRoot",7121],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,4784)),"@generated/docusaurus.config",4784],"6875c492":[()=>Promise.all([n.e(1869),n.e(5533),n.e(8747),n.e(4813)]).then(n.bind(n,3069)),"@theme/BlogTagsPostsPage",3069],"7dd8714f":[()=>n.e(804).then(n.bind(n,7130)),"@site/docs/Security Operations/secops-resources.md",7130],"8037d0b1":[()=>Promise.all([n.e(1869),n.e(1218)]).then(n.bind(n,9832)),"@site/docs/GCP/Identity-Aware Proxy/port-forwarding.md",9832],"814f3328":[()=>n.e(7472).then(n.t.bind(n,5513,19)),"~blog/default/blog-post-list-prop-default.json",5513],"843ef7c4":[()=>Promise.all([n.e(4132),n.e(8211)]).then(n.bind(n,9504)),"@site/blog/2022-09-21-hello-world.mdx?truncated=true",9504],"935f2afb":[()=>n.e(8581).then(n.t.bind(n,5610,19)),"~docs/default/version-current-metadata-prop-751.json",5610],"961cf1dd":[()=>n.e(2805).then(n.bind(n,610)),"@site/docs/TheHive/cortex-neurons.md",610],"996f5af2":[()=>n.e(5307).then(n.bind(n,2939)),"@site/docs/Compliance/SOC2.mdx",2939],"9a0a0f1d":[()=>n.e(3393).then(n.bind(n,2219)),"@site/docs/Engineering/ConfigurationManagement.md",2219],"9b629586":[()=>n.e(9218).then(n.bind(n,7552)),"@site/docs/Engineering/DRP.md",7552],"9d09d54c":[()=>n.e(7023).then(n.t.bind(n,1966,19)),"/home/runner/work/nusantara-self.github.io/nusantara-self.github.io/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",1966],"9e4087bc":[()=>n.e(2711).then(n.bind(n,9331)),"@theme/BlogArchivePage",9331],a5e00c02:[()=>n.e(4923).then(n.t.bind(n,4061,19)),"/home/runner/work/nusantara-self.github.io/nusantara-self.github.io/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",4061],a6aa9e1f:[()=>Promise.all([n.e(1869),n.e(5533),n.e(8747),n.e(7643)]).then(n.bind(n,7785)),"@theme/BlogListPage",7785],a7023ddc:[()=>n.e(9267).then(n.t.bind(n,8289,19)),"~blog/default/blog-tags-tags-4c2.json",8289],a7bd4aaa:[()=>n.e(7098).then(n.bind(n,4532)),"@theme/DocVersionRoot",4532],a94703ab:[()=>Promise.all([n.e(1869),n.e(9048)]).then(n.bind(n,2559)),"@theme/DocRoot",2559],b2b675dd:[()=>n.e(1991).then(n.t.bind(n,9775,19)),"~blog/default/blog-c06.json",9775],b2f554cd:[()=>n.e(5894).then(n.t.bind(n,6042,19)),"~blog/default/blog-archive-80c.json",6042],b38cbf7d:[()=>n.e(4e3).then(n.bind(n,2140)),"@site/docs/GCP/Terraform/init.md",2140],c37619b8:[()=>Promise.all([n.e(1869),n.e(3186)]).then(n.bind(n,4411)),"@site/docs/GCP/Identity-Aware Proxy/remote-ssh-iap.md",4411],ccc49370:[()=>Promise.all([n.e(1869),n.e(5533),n.e(8747),n.e(3249)]).then(n.bind(n,4029)),"@theme/BlogPostPage",4029],d2c8aa9a:[()=>n.e(7284).then(n.t.bind(n,2945,19)),"/home/runner/work/nusantara-self.github.io/nusantara-self.github.io/.docusaurus/docusaurus-plugin-content-blog/default/plugin-route-context-module-100.json",2945],ebfee794:[()=>n.e(2005).then(n.bind(n,3414)),"@site/docs/welcome.md",3414]};var l=n(4848);function s(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,l.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,l.jsx)("p",{children:String(t)}),(0,l.jsx)("div",{children:(0,l.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,l.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,l.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,l.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,l.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(6921),c=n(3102);function d(e,t){if("*"===e)return o()({loading:s,loader:()=>n.e(2237).then(n.bind(n,2237)),modules:["@theme/NotFound"],webpack:()=>[2237],render(e,t){const n=e.default;return(0,l.jsx)(c.W,{value:{plugin:{name:"native",id:"default"}},children:(0,l.jsx)(n,{...t})})}});const r=a[`${e}-${t}`],d={},p=[],f=[],m=(0,u.A)(r);return Object.entries(m).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:s,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 l=n.split(".");l.slice(0,-1).forEach((e=>{i=i[e]})),i[l[l.length-1]]=a}));const a=o.__comp;delete o.__comp;const i=o.__context;return delete o.__context,(0,l.jsx)(c.W,{value:i,children:(0,l.jsx)(a,{...o,...n})})}})}const p=[{path:"/blog",component:d("/blog","2bd"),exact:!0},{path:"/blog/archive",component:d("/blog/archive","9cc"),exact:!0},{path:"/blog/hello-world",component:d("/blog/hello-world","569"),exact:!0},{path:"/blog/tags",component:d("/blog/tags","677"),exact:!0},{path:"/blog/tags/introduction",component:d("/blog/tags/introduction","ba1"),exact:!0},{path:"/markdown-page",component:d("/markdown-page","2c4"),exact:!0},{path:"/docs",component:d("/docs","2c4"),routes:[{path:"/docs",component:d("/docs","c0b"),routes:[{path:"/docs",component:d("/docs","590"),routes:[{path:"/docs/Compliance/SOC2",component:d("/docs/Compliance/SOC2","84b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Engineering/ConfigurationManagement",component:d("/docs/Engineering/ConfigurationManagement","073"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Engineering/DRP",component:d("/docs/Engineering/DRP","a9e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Engineering/IaC",component:d("/docs/Engineering/IaC","442"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/GCP/Identity-Aware Proxy/port-forwarding",component:d("/docs/GCP/Identity-Aware Proxy/port-forwarding","c06"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/GCP/Identity-Aware Proxy/remote-ssh-iap",component:d("/docs/GCP/Identity-Aware Proxy/remote-ssh-iap","528"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/GCP/Terraform/init",component:d("/docs/GCP/Terraform/init","9e6"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Security Operations/secops-resources",component:d("/docs/Security Operations/secops-resources","ced"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Shuffle",component:d("/docs/Shuffle","6fb"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/TheHive/cortex-neurons",component:d("/docs/TheHive/cortex-neurons","c5f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/TheHive/thehive-resources",component:d("/docs/TheHive/thehive-resources","b55"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/welcome",component:d("/docs/welcome","a64"),exact:!0,sidebar:"tutorialSidebar"}]}]}]},{path:"/",component:d("/","143"),exact:!0},{path:"*",component:d("*")}]},6125:(e,t,n)=>{"use strict";n.d(t,{o:()=>a,x:()=>i});var r=n(6540),o=n(4848);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})}},8536:(e,t,n)=>{"use strict";var r=n(6540),o=n(5338),a=n(4625),i=n(545),l=n(8193);const s=[n(1911),n(119),n(6134),n(6294),n(1043)];var u=n(8328),c=n(6347),d=n(2831),p=n(4848);function f(e){let{children:t}=e;return(0,p.jsx)(p.Fragment,{children:t})}var m=n(5260),g=n(4586),h=n(6025),y=n(6342),b=n(1003),v=n(2131),w=n(4090),k=n(2967),x=n(440),S=n(1463);function E(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,g.A)(),r=(0,v.o)(),o=n[e].htmlLang,a=e=>e.replace("-","_");return(0,p.jsxs)(m.A,{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.A)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,g.A)(),{pathname:r}=(0,c.zy)();return e+(0,x.applyTrailingSlash)((0,h.A)(r),{trailingSlash:n,baseUrl:t})}(),o=t?`${n}${t}`:r;return(0,p.jsxs)(m.A,{children:[(0,p.jsx)("meta",{property:"og:url",content:o}),(0,p.jsx)("link",{rel:"canonical",href:o})]})}function _(){const{i18n:{currentLocale:e}}=(0,g.A)(),{metadata:t,image:n}=(0,y.p)();return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(m.A,{children:[(0,p.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,p.jsx)("body",{className:w.w})]}),n&&(0,p.jsx)(b.be,{image:n}),(0,p.jsx)(C,{}),(0,p.jsx)(E,{}),(0,p.jsx)(S.A,{tag:k.Cy,locale:e}),(0,p.jsx)(m.A,{children:t.map(((e,t)=>(0,p.jsx)("meta",{...e},t)))})]})}const A=new Map;function T(e){if(A.has(e.pathname))return{...e,pathname:A.get(e.pathname)};if((0,d.u)(u.A,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return A.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return A.set(e.pathname,t),{...e,pathname:t}}var j=n(6125),P=n(6988),N=n(205);function R(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>o.forEach((e=>e?.()))}const L=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,N.A)((()=>{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}),R("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function O(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.u)(u.A,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class D extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=l.A.canUseDOM?R("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=R("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)(L,{previousLocation:this.previousLocation,location:t,children:(0,p.jsx)(c.qh,{location:t,render:()=>e})})}}const I=D,M="__docusaurus-base-url-issue-banner-container",F="__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 = '${M}';\n var bannerHtml = ${JSON.stringify(function(e){return`\n
\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

\n

We suggest trying baseUrl =

\n
\n`}(e)).replace(/{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 Y=n(6921);const Z=new Set,X=new Set,J=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ee={prefetch(e){if(!(e=>!J()&&!X.has(e)&&!Z.has(e))(e))return!1;Z.add(e);const t=(0,d.u)(u.A,e).flatMap((e=>{return t=e.route.path,Object.entries(Q).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,Y.A)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?K(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(l.A.canUseDOM){window.docusaurus=te;const e=document.getElementById("__docusaurus"),t=(0,p.jsx)(i.vd,{children:(0,p.jsx)(a.Kd,{children:(0,p.jsx)(W,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},l=()=>{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(l)}},6988:(e,t,n)=>{"use strict";n.d(t,{o:()=>d,l:()=>p});var r=n(6540),o=n(4784);const a=JSON.parse('{"docusaurus-plugin-google-gtag":{"default":{"trackingID":["G-JLZ2PSW2R7"],"anonymizeIP":true,"id":"default"}},"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"welcome","docs":[{"id":"Compliance/SOC2","path":"/docs/Compliance/SOC2","sidebar":"tutorialSidebar"},{"id":"Engineering/ConfigurationManagement","path":"/docs/Engineering/ConfigurationManagement","sidebar":"tutorialSidebar"},{"id":"Engineering/DRP","path":"/docs/Engineering/DRP","sidebar":"tutorialSidebar"},{"id":"Engineering/IaC","path":"/docs/Engineering/IaC","sidebar":"tutorialSidebar"},{"id":"GCP/Identity-Aware Proxy/port-forwarding","path":"/docs/GCP/Identity-Aware Proxy/port-forwarding","sidebar":"tutorialSidebar"},{"id":"GCP/Identity-Aware Proxy/remote-ssh-iap","path":"/docs/GCP/Identity-Aware Proxy/remote-ssh-iap","sidebar":"tutorialSidebar"},{"id":"GCP/Terraform/init","path":"/docs/GCP/Terraform/init","sidebar":"tutorialSidebar"},{"id":"Security Operations/secops-resources","path":"/docs/Security Operations/secops-resources","sidebar":"tutorialSidebar"},{"id":"Shuffle","path":"/docs/Shuffle","sidebar":"tutorialSidebar"},{"id":"TheHive/cortex-neurons","path":"/docs/TheHive/cortex-neurons","sidebar":"tutorialSidebar"},{"id":"TheHive/thehive-resources","path":"/docs/TheHive/thehive-resources","sidebar":"tutorialSidebar"},{"id":"welcome","path":"/docs/welcome","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/docs/welcome","label":"welcome"}}}}],"breadcrumbs":false}}}'),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(2654);const s=JSON.parse('{"docusaurusVersion":"3.1.1","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.1.1"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"3.1.1"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.1.1"},"docusaurus-plugin-google-gtag":{"type":"package","name":"@docusaurus/plugin-google-gtag","version":"3.1.1"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.1.1"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.1.1"}}}');var u=n(4848);const c={siteConfig:o.default,siteMetadata:s,globalData:a,i18n:i,codeTranslations:l},d=r.createContext(c);function p(e){let{children:t}=e;return(0,u.jsx)(d.Provider,{value:c,children:t})}},7489:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});var r=n(6540),o=n(8193),a=n(5260),i=n(440),l=n(781),s=n(4848);function u(e){let{error:t,tryAgain:n}=e;return(0,s.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,s.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,s.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,s.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,s.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function d(e){let{error:t,tryAgain:n}=e;return(0,s.jsxs)(f,{fallback:()=>(0,s.jsx)(u,{error:t,tryAgain:n}),children:[(0,s.jsx)(a.A,{children:(0,s.jsx)("title",{children:"Page Error"})}),(0,s.jsx)(l.A,{children:(0,s.jsx)(u,{error:t,tryAgain:n})})]})}const p=e=>(0,s.jsx)(d,{...e});class f extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){o.A.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}}},8193:(e,t,n)=>{"use strict";n.d(t,{A:()=>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}},5260:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});n(6540);var r=n(545),o=n(4848);function a(e){return(0,o.jsx)(r.mg,{...e})}},8774:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});var r=n(6540),o=n(4625),a=n(440),i=n(4586),l=n(6654),s=n(8193),u=n(3427),c=n(6025),d=n(4848);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:m,isActive:g,"data-noBrokenLinkCheck":h,autoAddBaseUrl:y=!0,...b}=e;const{siteConfig:{trailingSlash:v,baseUrl:w}}=(0,i.A)(),{withBaseUrl:k}=(0,c.h)(),x=(0,u.A)(),S=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>S.current));const E=p||f;const C=(0,l.A)(E),_=E?.replace("pathname://","");let A=void 0!==_?(T=_,y&&(e=>e.startsWith("/"))(T)?k(T):T):void 0;var T;A&&C&&(A=(0,a.applyTrailingSlash)(A,{trailingSlash:v,baseUrl:w}));const j=(0,r.useRef)(!1),P=n?o.k2:o.N_,N=s.A.canUseIntersectionObserver,R=(0,r.useRef)(),L=()=>{j.current||null==A||(window.docusaurus.preload(A),j.current=!0)};(0,r.useEffect)((()=>(!N&&C&&null!=A&&window.docusaurus.prefetch(A),()=>{N&&R.current&&R.current.disconnect()})),[R,A,N,C]);const O=A?.startsWith("#")??!1,D=!b.target||"_self"===b.target,I=!A||!C||!D||O;return h||!O&&I||x.collectLink(A),b.id&&x.collectAnchor(b.id),I?(0,d.jsx)("a",{ref:S,href:A,...E&&!C&&{target:"_blank",rel:"noopener noreferrer"},...b}):(0,d.jsx)(P,{...b,onMouseEnter:L,onTouchStart:L,innerRef:e=>{S.current=e,N&&e&&C&&(R.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(R.current.unobserve(e),R.current.disconnect(),null!=A&&window.docusaurus.prefetch(A))}))})),R.current.observe(e))},to:A,...n&&{isActive:g,activeClassName:m}})}const f=r.forwardRef(p)},418:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});const r=()=>null},1312:(e,t,n)=>{"use strict";n.d(t,{A:()=>u,T:()=>s});var r=n(6540),o=n(4848);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(2654);function l(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 s(e,t){let{message:n,id:r}=e;return a(l({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 children",t),new Error("The Docusaurus component only accept simple string values");const i=l({message:t,id:n});return(0,o.jsx)(o.Fragment,{children:a(i,r)})}},7065:(e,t,n)=>{"use strict";n.d(t,{W:()=>r});const r="default"},6654:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function o(e){return void 0!==e&&!r(e)}n.d(t,{A:()=>o,z:()=>r})},6025:(e,t,n)=>{"use strict";n.d(t,{A:()=>l,h:()=>i});var r=n(6540),o=n(4586),a=n(6654);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,o.A)(),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.z)(n))return n;if(o)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)}},3427:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var r=n(6540);n(4848);const o=r.createContext({collectAnchor:()=>{},collectLink:()=>{}}),a=()=>(0,r.useContext)(o);function i(){return a()}},4586:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(6540),o=n(6988);function a(){return(0,r.useContext)(o.o)}},2303:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(6540),o=n(6125);function a(){return(0,r.useContext)(o.o)}},205:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540);const o=n(8193).A.canUseDOM?r.useLayoutEffect:r.useEffect},6921:(e,t,n)=>{"use strict";n.d(t,{A:()=>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 l=o?`${o}.${a}`:a;r(i)?e(i,l):t[l]=i}))}(e),t}},3102:(e,t,n)=>{"use strict";n.d(t,{W:()=>i,o:()=>a});var r=n(6540),o=n(4848);const a=r.createContext(null);function i(e){let{children:t,value:n}=e;const i=r.useContext(a),l=(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:l,children:t})}},4070:(e,t,n)=>{"use strict";n.d(t,{zK:()=>g,vT:()=>p,Gy:()=>c,HW:()=>h,ht:()=>d,r7:()=>m,jh:()=>f});var r=n(6347),o=n(4586),a=n(7065);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,o.A)();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.B6)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),o=n?.docs.find((e=>!!(0,r.B6)(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.W),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.zy)();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.B6)(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 m(e){const t=d(e);return l(t)}function g(e){const t=d(e),{pathname:n}=(0,r.zy)();return s(t,n)}function h(e){const t=d(e),{pathname:n}=(0,r.zy)();return function(e,t){const n=l(e);return{latestDocSuggestion:s(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},1911:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={onRouteDidUpdate(e){let{location:t,previousLocation:n}=e;!n||t.pathname===n.pathname&&t.search===n.search&&t.hash===n.hash||setTimeout((()=>{window.gtag("set","page_path",t.pathname+t.search+t.hash),window.gtag("event","page_view")}))}}},6294:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});var r=n(5947),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()}}},6134:(e,t,n)=>{"use strict";n.r(t);var r=n(4876),o=n(4784);!function(e){const{themeConfig:{prism:t}}=o.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(9700),n(8692)(`./prism-${e}`)})),delete globalThis.Prism}(r.My)},1107:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});n(6540);var r=n(8215),o=n(1312),a=n(6342),i=n(8774),l=n(3427);const s={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};var u=n(4848);function c(e){let{as:t,id:n,...c}=e;const d=(0,l.A)(),{navbar:{hideOnScroll:p}}=(0,a.p)();if("h1"===t||!n)return(0,u.jsx)(t,{...c,id:void 0});d.collectAnchor(n);const f=(0,o.T)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof c.children?c.children:n});return(0,u.jsxs)(t,{...c,className:(0,r.A)("anchor",p?s.anchorWithHideOnScrollNavbar:s.anchorWithStickyNavbar,c.className),id:n,children:[c.children,(0,u.jsx)(i.A,{className:"hash-link",to:`#${n}`,"aria-label":f,title:f,children:"\u200b"})]})}},3186:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});n(6540);const r={iconExternalLink:"iconExternalLink_nPIU"};var o=n(4848);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"})})}},781:(e,t,n)=>{"use strict";n.d(t,{A:()=>ft});var r=n(6540),o=n(8215),a=n(7489),i=n(1003),l=n(6347),s=n(1312),u=n(5062),c=n(4848);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,l.W6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,u.$)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const m=(0,s.T)({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??m,{containerRef:n,onClick:r}=f();return(0,c.jsx)("div",{ref:n,role:"region","aria-label":m,children:(0,c.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var h=n(7559),y=n(4090);const b={skipToContent:"skipToContent_fXgn"};function v(){return(0,c.jsx)(g,{className:b.skipToContent})}var w=n(6342),k=n(5041);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_CVFx"};function E(e){return(0,c.jsx)("button",{type:"button","aria-label":(0,s.T)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,o.A)("clean-btn close",S.closeButton,e.className),children:(0,c.jsx)(x,{width:14,height:14,strokeWidth:3.1})})}const C={content:"content_knG7"};function _(e){const{announcementBar:t}=(0,w.p)(),{content:n}=t;return(0,c.jsx)("div",{...e,className:(0,o.A)(C.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const A={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function T(){const{announcementBar:e}=(0,w.p)(),{isActive:t,close:n}=(0,k.Mj)();if(!t)return null;const{backgroundColor:r,textColor:o,isCloseable:a}=e;return(0,c.jsxs)("div",{className:A.announcementBar,style:{backgroundColor:r,color:o},role:"banner",children:[a&&(0,c.jsx)("div",{className:A.announcementBarPlaceholder}),(0,c.jsx)(_,{className:A.announcementBarContent}),a&&(0,c.jsx)(E,{onClick:n,className:A.announcementBarClose})]})}var j=n(2069),P=n(3104);var N=n(9532),R=n(5600);const L=r.createContext(null);function O(e){let{children:t}=e;const n=function(){const e=(0,j.M)(),t=(0,R.YL)(),[n,o]=(0,r.useState)(!1),a=null!==t.component,i=(0,N.ZC)(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)(L.Provider,{value:n,children:t})}function D(e){if(e.component){const t=e.component;return(0,c.jsx)(t,{...e.props})}}function I(){const e=(0,r.useContext)(L);if(!e)throw new N.dV("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,o=(0,r.useCallback)((()=>n(!1)),[n]),a=(0,R.YL)();return(0,r.useMemo)((()=>({shown:t,hide:o,content:D(a)})),[o,a,t])}function M(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:a}=I();return(0,c.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,c.jsxs)("div",{className:(0,o.A)("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 F=n(5293),z=n(2303);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_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function q(e){let{className:t,buttonClassName:n,value:r,onChange:a}=e;const i=(0,z.A)(),l=(0,s.T)({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,s.T)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,s.T)({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.A)(U.toggle,t),children:(0,c.jsxs)("button",{className:(0,o.A)("clean-btn",U.toggleButton,!i&&U.toggleButtonDisabled,n),type:"button",onClick:()=>a("dark"===r?"light":"dark"),disabled:!i,title:l,"aria-label":l,"aria-live":"polite",children:[(0,c.jsx)(B,{className:(0,o.A)(U.toggleIcon,U.lightToggleIcon)}),(0,c.jsx)($,{className:(0,o.A)(U.toggleIcon,U.darkToggleIcon)})]})})}const H=r.memo(q),G={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function V(e){let{className:t}=e;const n=(0,w.p)().navbar.style,r=(0,w.p)().colorMode.disableSwitch,{colorMode:o,setColorMode:a}=(0,F.G)();return r?null:(0,c.jsx)(H,{className:t,buttonClassName:"dark"===n?G.darkNavbarColorModeToggle:void 0,value:o,onChange:a})}var W=n(3465);function Q(){return(0,c.jsx)(W.A,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function K(){const e=(0,j.M)();return(0,c.jsx)("button",{type:"button","aria-label":(0,s.T)({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 Y(){return(0,c.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,c.jsx)(Q,{}),(0,c.jsx)(V,{className:"margin-right--md"}),(0,c.jsx)(K,{})]})}var Z=n(8774),X=n(6025),J=n(6654);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(3186);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:o,label:a,html:i,isDropdownLink:l,prependBaseUrlToHref:s,...u}=e;const d=(0,X.A)(r),p=(0,X.A)(t),f=(0,X.A)(o,{forcePrependBaseUrl:!0}),m=a&&o&&!(0,J.A)(o),g=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,c.jsxs)(c.Fragment,{children:[a,m&&(0,c.jsx)(te.A,{...l&&{width:12,height:12}})]})};return o?(0,c.jsx)(Z.A,{href:s?f:o,...u,...g}):(0,c.jsx)(Z.A,{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.A)(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.A)("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(1422),le=n(9169),se=n(4586);const ue={dropdownNavbarItemMobile:"dropdownNavbarItemMobile_S0Fm"};function ce(e,t){return e.some((e=>function(e,t){return!!(0,le.ys)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function de(e){let{items:t,position:n,className:a,onClick:i,...l}=e;const s=(0,r.useRef)(null),[u,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{s.current&&!s.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)}}),[s]),(0,c.jsxs)("div",{ref:s,className:(0,o.A)("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:l.to?void 0:"#",className:(0,o.A)("navbar__link",a),...l,onClick:l.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!u))},children:l.children??l.label}),(0,c.jsx)("ul",{className:"dropdown__menu",children:t.map(((e,t)=>(0,r.createElement)(Ce,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))})]})}function pe(e){let{items:t,className:n,position:a,onClick:i,...s}=e;const u=function(){const{siteConfig:{baseUrl:e}}=(0,se.A)(),{pathname:t}=(0,l.zy)();return t.replace(e,"/")}(),d=ce(t,u),{collapsed:p,toggleCollapsed:f,setCollapsed:m}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[u,d,m]),(0,c.jsxs)("li",{className:(0,o.A)("menu__list-item",{"menu__list-item--collapsed":p}),children:[(0,c.jsx)(ne,{role:"button",className:(0,o.A)(ue.dropdownNavbarItemMobile,"menu__link menu__link--sublist menu__link--sublist-caret",n),...s,onClick:e=>{e.preventDefault(),f()},children:s.children??s.label}),(0,c.jsx)(ie.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:p,children:t.map(((e,t)=>(0,r.createElement)(Ce,{mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active",...e,key:t})))})]})}function fe(e){let{mobile:t=!1,...n}=e;const r=t?pe:de;return(0,c.jsx)(r,{...n})}var me=n(2131);function ge(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 he="iconLanguage_nlXk";var ye=n(418);const be={navbarSearchContainer:"navbarSearchContainer_Bca1"};function ve(e){let{children:t,className:n}=e;return(0,c.jsx)("div",{className:(0,o.A)(n,be.navbarSearchContainer),children:t})}var we=n(4070),ke=n(4142);var xe=n(5597);const Se=e=>e.docs.find((t=>t.id===e.mainDocId));const Ee={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,se.A)(),p=(0,me.o)(),{search:f,hash:m}=(0,l.zy)(),g=[...n,...u.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${m}${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],h=t?(0,s.T)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return(0,c.jsx)(fe,{...a,mobile:t,label:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(ge,{className:he}),h]}),items:g})},search:function(e){let{mobile:t,className:n}=e;return t?null:(0,c.jsx)(ve,{className:n,children:(0,c.jsx)(ye.A,{})})},dropdown:fe,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.A)({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,we.zK)(r),i=(0,ke.QB)(t,r),l=a?.path===i?.path;return null===i||i.unlisted&&!l?null:(0,c.jsx)(ae,{exact:!0,...o,isActive:()=>l||!!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,we.zK)(r),i=(0,ke.fW)(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,ke.Vd)(r)[0],i=t??a.label,l=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(a).path;return(0,c.jsx)(ae,{...o,label:i,to:l})},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:r,dropdownItemsBefore:o,dropdownItemsAfter:a,...i}=e;const{search:u,hash:d}=(0,l.zy)(),p=(0,we.zK)(n),f=(0,we.jh)(n),{savePreferredVersionName:m}=(0,xe.g1)(n),g=[...o,...f.map((e=>{const t=p.alternateDocVersions[e.name]??Se(e);return{label:e.label,to:`${t.path}${u}${d}`,isActive:()=>e===p.activeVersion,onClick:()=>m(e.name)}})),...a],h=(0,ke.Vd)(n)[0],y=t&&g.length>1?(0,s.T)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):h.label,b=t&&g.length>1?void 0:Se(h).path;return g.length<=1?(0,c.jsx)(ae,{...i,mobile:t,label:y,to:b,isActive:r?()=>!1:void 0}):(0,c.jsx)(fe,{...i,mobile:t,label:y,to:b,items:g,isActive:r?()=>!1:void 0})}};function Ce(e){let{type:t,...n}=e;const r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=Ee[r];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return(0,c.jsx)(o,{...n})}function _e(){const e=(0,j.M)(),t=(0,w.p)().navbar.items;return(0,c.jsx)("ul",{className:"menu__list",children:t.map(((t,n)=>(0,r.createElement)(Ce,{mobile:!0,...t,onClick:()=>e.toggle(),key:n})))})}function Ae(e){return(0,c.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,c.jsx)(s.A,{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 Te(){const e=0===(0,w.p)().navbar.items.length,t=I();return(0,c.jsxs)(c.Fragment,{children:[!e&&(0,c.jsx)(Ae,{onClick:()=>t.hide()}),t.content]})}function je(){const e=(0,j.M)();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)(M,{header:(0,c.jsx)(Y,{}),primaryMenu:(0,c.jsx)(_e,{}),secondaryMenu:(0,c.jsx)(Te,{})}):null}const Pe={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Ne(e){return(0,c.jsx)("div",{role:"presentation",...e,className:(0,o.A)("navbar-sidebar__backdrop",e.className)})}function Re(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:a}}=(0,w.p)(),i=(0,j.M)(),{navbarRef:l,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,P.Mq)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=l?n(!1):i+u{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:l,"aria-label":(0,s.T)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,o.A)("navbar","navbar--fixed-top",n&&[Pe.navbarHideable,!d&&Pe.navbarHidden],{"navbar--dark":"dark"===a,"navbar--primary":"primary"===a,"navbar-sidebar--show":i.shown}),children:[t,(0,c.jsx)(Ne,{onClick:i.toggle}),(0,c.jsx)(je,{})]})}var Le=n(440);const Oe={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};function De(e){return(0,c.jsx)("button",{type:"button",...e,children:(0,c.jsx)(s.A,{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 Ie(e){let{error:t}=e;const n=(0,Le.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,c.jsx)("p",{className:Oe.errorBoundaryError,children:n})}class Me extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const Fe="right";function ze(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 Be(){const{toggle:e,shown:t}=(0,j.M)();return(0,c.jsx)("button",{onClick:e,"aria-label":(0,s.T)({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)(ze,{})})}const $e={colorModeToggle:"colorModeToggle_DEke"};function Ue(e){let{items:t}=e;return(0,c.jsx)(c.Fragment,{children:t.map(((e,t)=>(0,c.jsx)(Me,{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)(Ce,{...e})},t)))})}function qe(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 He(){const e=(0,j.M)(),t=(0,w.p)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??Fe)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return(0,c.jsx)(qe,{left:(0,c.jsxs)(c.Fragment,{children:[!e.disabled&&(0,c.jsx)(Be,{}),(0,c.jsx)(Q,{}),(0,c.jsx)(Ue,{items:n})]}),right:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(Ue,{items:r}),(0,c.jsx)(V,{className:$e.colorModeToggle}),!o&&(0,c.jsx)(ve,{children:(0,c.jsx)(ye.A,{})})]})})}function Ge(){return(0,c.jsx)(Re,{children:(0,c.jsx)(He,{})})}function Ve(e){let{item:t}=e;const{to:n,href:r,label:o,prependBaseUrlToHref:a,...i}=t,l=(0,X.A)(n),s=(0,X.A)(r,{forcePrependBaseUrl:!0});return(0,c.jsxs)(Z.A,{className:"footer__link-item",...r?{href:a?s:r}:{to:l},...i,children:[o,r&&!(0,J.A)(r)&&(0,c.jsx)(te.A,{})]})}function We(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)(Ve,{item:t})},t.href??t.to)}function Qe(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)(We,{item:e},t)))})]})}function Ke(e){let{columns:t}=e;return(0,c.jsx)("div",{className:"row footer__links",children:t.map(((e,t)=>(0,c.jsx)(Qe,{column:e},t)))})}function Ye(){return(0,c.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function Ze(e){let{item:t}=e;return t.html?(0,c.jsx)("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):(0,c.jsx)(Ve,{item:t})}function Xe(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)(Ze,{item:e}),t.length!==n+1&&(0,c.jsx)(Ye,{})]},n)))})})}function Je(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?(0,c.jsx)(Ke,{columns:t}):(0,c.jsx)(Xe,{links:t})}var et=n(1122);const tt={footerLogoLink:"footerLogoLink_BH7S"};function nt(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.h)(),r={light:n(t.src),dark:n(t.srcDark??t.src)};return(0,c.jsx)(et.A,{className:(0,o.A)("footer__logo",t.className),alt:t.alt,sources:r,width:t.width,height:t.height,style:t.style})}function rt(e){let{logo:t}=e;return t.href?(0,c.jsx)(Z.A,{href:t.href,className:tt.footerLogoLink,target:t.target,children:(0,c.jsx)(nt,{logo:t})}):(0,c.jsx)(nt,{logo:t})}function ot(e){let{copyright:t}=e;return(0,c.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function at(e){let{style:t,links:n,logo:r,copyright:a}=e;return(0,c.jsx)("footer",{className:(0,o.A)("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 it(){const{footer:e}=(0,w.p)();if(!e)return null;const{copyright:t,links:n,logo:r,style:o}=e;return(0,c.jsx)(at,{style:o,links:n&&n.length>0&&(0,c.jsx)(Je,{links:n}),logo:r&&(0,c.jsx)(rt,{logo:r}),copyright:t&&(0,c.jsx)(ot,{copyright:t})})}const lt=r.memo(it),st=(0,N.fM)([F.a,k.oq,P.Tv,xe.VQ,i.Jx,function(e){let{children:t}=e;return(0,c.jsx)(R.y_,{children:(0,c.jsx)(j.e,{children:(0,c.jsx)(O,{children:t})})})}]);function ut(e){let{children:t}=e;return(0,c.jsx)(st,{children:t})}var ct=n(1107);function dt(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)(ct.A,{as:"h1",className:"hero__title",children:(0,c.jsx)(s.A,{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)(De,{onClick:n,className:"button button--primary shadow--lw"})}),(0,c.jsx)("hr",{}),(0,c.jsx)("div",{className:"margin-vert--md",children:(0,c.jsx)(Ie,{error:t})})]})})})}const pt={mainWrapper:"mainWrapper_z2l0"};function ft(e){const{children:t,noFooter:n,wrapperClassName:r,title:l,description:s}=e;return(0,y.J)(),(0,c.jsxs)(ut,{children:[(0,c.jsx)(i.be,{title:l,description:s}),(0,c.jsx)(v,{}),(0,c.jsx)(T,{}),(0,c.jsx)(Ge,{}),(0,c.jsx)("div",{id:d,className:(0,o.A)(h.G.wrapper.main,pt.mainWrapper,r),children:(0,c.jsx)(a.A,{fallback:e=>(0,c.jsx)(dt,{...e}),children:t})}),!n&&(0,c.jsx)(lt,{})]})}},3465:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});n(6540);var r=n(8774),o=n(6025),a=n(4586),i=n(6342),l=n(1122),s=n(4848);function u(e){let{logo:t,alt:n,imageClassName:r}=e;const a={light:(0,o.A)(t.src),dark:(0,o.A)(t.srcDark||t.src)},i=(0,s.jsx)(l.A,{className:t.className,sources:a,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,s.jsx)("div",{className:r,children:i}):i}function c(e){const{siteConfig:{title:t}}=(0,a.A)(),{navbar:{title:n,logo:l}}=(0,i.p)(),{imageClassName:c,titleClassName:d,...p}=e,f=(0,o.A)(l?.href||"/"),m=n?"":t,g=l?.alt??m;return(0,s.jsxs)(r.A,{to:f,...p,...l?.target&&{target:l.target},children:[l&&(0,s.jsx)(u,{logo:l,alt:g,imageClassName:c}),null!=n&&(0,s.jsx)("b",{className:d,children:n})]})}},1463:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});n(6540);var r=n(5260),o=n(4848);function a(e){let{locale:t,version:n,tag:a}=e;const i=t;return(0,o.jsxs)(r.A,{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})]})}},1122:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});var r=n(6540),o=n(5066),a=n(2303),i=n(5293);const l={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var s=n(4848);function u(e){let{className:t,children:n}=e;const u=(0,a.A)(),{colorMode:c}=(0,i.G)();return(0,s.jsx)(s.Fragment,{children:(u?"dark"===c?["dark"]:["light"]:["light","dark"]).map((e=>{const a=n({theme:e,className:(0,o.A)(t,l.themedComponent,l[`themedComponent--${e}`])});return(0,s.jsx)(r.Fragment,{children:a},e)}))})}function c(e){const{sources:t,className:n,alt:r,...o}=e;return(0,s.jsx)(u,{className:n,children:e=>{let{theme:n,className:a}=e;return(0,s.jsx)("img",{src:t[n],alt:r,className:a,...o})}})}},1422:(e,t,n)=>{"use strict";n.d(t,{N:()=>y,u:()=>u});var r=n(6540),o=n(8193),a=n(205),i=n(3109),l=n(4848);const s="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.O)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${o?.easing??s}`,height:`${t}px`}}function l(){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?(l(),requestAnimationFrame((()=>{e.style.height=c.height,e.style.overflow=c.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{l()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,o])}function m(e){if(!o.A.canUseDOM)return e?c:d}function g(e){let{as:t="div",collapsed:n,children:o,animation:a,onCollapseTransitionEnd:i,className:s,disableSSRStyle:u}=e;const c=(0,r.useRef)(null);return f({collapsibleRef:c,collapsed:n,animation:a}),(0,l.jsx)(t,{ref:c,style:u?void 0:m(n),onTransitionEnd:e=>{"height"===e.propertyName&&(p(c.current,n),i?.(n))},className:s,children:o})}function h(e){let{collapsed:t,...n}=e;const[o,i]=(0,r.useState)(!t),[s,u]=(0,r.useState)(t);return(0,a.A)((()=>{t||i(!0)}),[t]),(0,a.A)((()=>{o&&u(t)}),[o,t]),o?(0,l.jsx)(g,{...n,collapsed:s}):null}function y(e){let{lazy:t,...n}=e;const r=t?h:g;return(0,l.jsx)(r,{...n})}},5041:(e,t,n)=>{"use strict";n.d(t,{Mj:()=>g,oq:()=>m});var r=n(6540),o=n(2303),a=n(9466),i=n(9532),l=n(6342),s=n(4848);const u=(0,a.Wf)("docusaurus.announcement.dismiss"),c=(0,a.Wf)("docusaurus.announcement.id"),d=()=>"true"===u.get(),p=e=>u.set(String(e)),f=r.createContext(null);function m(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.p)(),t=(0,o.A)(),[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,s.jsx)(f.Provider,{value:n,children:t})}function g(){const e=(0,r.useContext)(f);if(!e)throw new i.dV("AnnouncementBarProvider");return e}},5293:(e,t,n)=>{"use strict";n.d(t,{G:()=>y,a:()=>h});var r=n(6540),o=n(8193),a=n(9532),i=n(9466),l=n(6342),s=n(4848);const u=r.createContext(void 0),c="theme",d=(0,i.Wf)(c),p={light:"light",dark:"dark"},f=e=>e===p.dark?p.dark:p.light,m=e=>o.A.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),g=e=>{d.set(f(e))};function h(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.p)(),[o,a]=(0,r.useState)(m(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 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:o,setColorMode:i,get isDarkTheme(){return o===p.dark},setLightTheme(){i(p.light)},setDarkTheme(){i(p.dark)}})),[o,i])}();return(0,s.jsx)(u.Provider,{value:n,children:t})}function y(){const e=(0,r.useContext)(u);if(null==e)throw new a.dV("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},5597:(e,t,n)=>{"use strict";n.d(t,{VQ:()=>y,g1:()=>v});var r=n(6540),o=n(4070),a=n(7065),i=n(6342),l=n(4142),s=n(9532),u=n(9466),c=n(4848);const d=e=>`docs-preferred-version-${e}`,p={save:(e,t,n)=>{(0,u.Wf)(d(e),{persistence:t}).set(n)},read:(e,t)=>(0,u.Wf)(d(e),{persistence:t}).get(),clear:(e,t)=>{(0,u.Wf)(d(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const m=r.createContext(null);function g(){const e=(0,o.Gy)(),t=(0,i.p)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[a,l]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{l(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),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function h(e){let{children:t}=e;const n=g();return(0,c.jsx)(m.Provider,{value:n,children:t})}function y(e){let{children:t}=e;return l.C5?(0,c.jsx)(h,{children:t}):(0,c.jsx)(c.Fragment,{children:t})}function b(){const e=(0,r.useContext)(m);if(!e)throw new s.dV("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=a.W);const t=(0,o.ht)(e),[n,i]=b(),{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])}}},6588:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,t:()=>u});var r=n(6540),o=n(9532),a=n(4848);const i=Symbol("EmptyContext"),l=r.createContext(i);function s(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)(l.Provider,{value:i,children:t})}function u(){const e=(0,r.useContext)(l);if(e===i)throw new o.dV("DocsSidebarProvider");return e}},2252:(e,t,n)=>{"use strict";n.d(t,{n:()=>l,r:()=>s});var r=n(6540),o=n(9532),a=n(4848);const i=r.createContext(null);function l(e){let{children:t,version:n}=e;return(0,a.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(null===e)throw new o.dV("DocsVersionProvider");return e}},2069:(e,t,n)=>{"use strict";n.d(t,{M:()=>f,e:()=>p});var r=n(6540),o=n(5600),a=n(4581),i=n(7485),l=n(6342),s=n(9532),u=n(4848);const c=r.createContext(void 0);function d(){const e=function(){const e=(0,o.YL)(),{items:t}=(0,l.p)().navbar;return 0===t.length&&!e.component}(),t=(0,a.l)(),n=!e&&"mobile"===t,[s,u]=(0,r.useState)(!1);(0,i.$Z)((()=>{if(s)return u(!1),!1}));const c=(0,r.useCallback)((()=>{u((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&u(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:s})),[e,n,c,s])}function p(e){let{children:t}=e;const n=d();return(0,u.jsx)(c.Provider,{value:n,children:t})}function f(){const e=r.useContext(c);if(void 0===e)throw new s.dV("NavbarMobileSidebarProvider");return e}},5600:(e,t,n)=>{"use strict";n.d(t,{GX:()=>u,YL:()=>s,y_:()=>l});var r=n(6540),o=n(9532),a=n(4848);const i=r.createContext(null);function l(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 s(){const e=(0,r.useContext)(i);if(!e)throw new o.dV("NavbarSecondaryMenuContentProvider");return e[0]}function u(e){let{component:t,props:n}=e;const a=(0,r.useContext)(i);if(!a)throw new o.dV("NavbarSecondaryMenuContentProvider");const[,l]=a,s=(0,o.Be)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},4090:(e,t,n)=>{"use strict";n.d(t,{w:()=>o,J:()=>a});var r=n(6540);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)}}),[])}},4581:(e,t,n)=>{"use strict";n.d(t,{l:()=>l});var r=n(6540),o=n(8193);const a={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(e){let{desktopBreakpoint:t=i}=void 0===e?{}:e;const[n,l]=(0,r.useState)((()=>"ssr"));return(0,r.useEffect)((()=>{function e(){l(function(e){if(!o.A.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?a.desktop:a.mobile}(t))}return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[t]),n}},7559:(e,t,n)=>{"use strict";n.d(t,{G:()=>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:{}}},3109:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{O:()=>r})},4142:(e,t,n)=>{"use strict";n.d(t,{B5:()=>E,C5:()=>p,Nr:()=>f,OF:()=>w,QB:()=>S,Vd:()=>k,Y:()=>b,fW:()=>x,w8:()=>h});var r=n(6540),o=n(6347),a=n(2831),i=n(4070),l=n(5597),s=n(2252),u=n(6588),c=n(1682),d=n(9169);const p=!!i.Gy;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 m=(e,t)=>void 0!==e&&(0,d.ys)(e,t),g=(e,t)=>e.some((e=>h(e,t)));function h(e,t){return"link"===e.type?m(e.href,t):"category"===e.type&&(m(e.href,t)||g(e.items,t))}function y(e,t){switch(e.type){case"category":return h(e,t)||e.items.some((e=>y(e,t)));case"link":return!e.unlisted||h(e,t);default:return!0}}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.ys)(a.href,n)||e(a.items))||"link"===a.type&&(0,d.ys)(a.href,n)){return r&&"category"!==a.type||o.unshift(a),!0}return!1}(t),o}function w(){const e=(0,u.t)(),{pathname:t}=(0,o.zy)(),n=(0,i.vT)()?.pluginData.breadcrumbs;return!1!==n&&e?v({sidebarItems:e.items,pathname:t}):null}function k(e){const{activeVersion:t}=(0,i.zK)(e),{preferredVersion:n}=(0,l.g1)(e),o=(0,i.r7)(e);return(0,r.useMemo)((()=>(0,c.s)([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- ${(0,c.s)(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function E(e){let{route:t}=e;const n=(0,o.zy)(),r=(0,s.r)(),i=t.routes,l=i.find((e=>(0,o.B6)(n.pathname,e)));if(!l)return null;const u=l.sidebar,c=u?r.docsSidebars[u]:void 0;return{docElement:(0,a.v)(i),sidebarName:u,sidebarItems:c}}},7485:(e,t,n)=>{"use strict";n.d(t,{$Z:()=>i,aZ:()=>l});var r=n(6540),o=n(6347),a=n(9532);function i(e){!function(e){const t=(0,o.W6)(),n=(0,a._q)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function l(e){return function(e){const t=(0,o.W6)();return(0,r.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}},1682:(e,t,n)=>{"use strict";function r(e,t){return void 0===t&&(t=(e,t)=>e===t),e.filter(((n,r)=>e.findIndex((e=>t(e,n)))!==r))}function o(e){return Array.from(new Set(e))}n.d(t,{X:()=>r,s:()=>o})},1003:(e,t,n)=>{"use strict";n.d(t,{e3:()=>f,be:()=>d,Jx:()=>m});var r=n(6540),o=n(5066),a=n(5260),i=n(3102);function l(){const e=r.useContext(i.o);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(6025),u=n(4586);var c=n(4848);function d(e){let{title:t,description:n,keywords:r,image:o,children:i}=e;const l=function(e){const{siteConfig:t}=(0,u.A)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,s.h)(),p=o?d(o,{absolute:!0}):void 0;return(0,c.jsxs)(a.A,{children:[t&&(0,c.jsx)("title",{children:l}),t&&(0,c.jsx)("meta",{property:"og:title",content:l}),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),l=(0,o.A)(i,t);return(0,c.jsxs)(p.Provider,{value:l,children:[(0,c.jsx)(a.A,{children:(0,c.jsx)("html",{className:l})}),n]})}function m(e){let{children:t}=e;const n=l(),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.A)(r,a),children:t})}},9532:(e,t,n)=>{"use strict";n.d(t,{Be:()=>u,ZC:()=>l,_q:()=>i,dV:()=>s,fM:()=>c});var r=n(6540),o=n(205),a=n(4848);function i(e){const t=(0,r.useRef)(e);return(0,o.A)((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function l(e){const t=(0,r.useRef)();return(0,o.A)((()=>{t.current=e})),t.current}class s extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?\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)})}}},9169:(e,t,n)=>{"use strict";n.d(t,{Dt:()=>l,ys:()=>i});var r=n(6540),o=n(8328),a=n(4586);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,a.A)().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.A,baseUrl:e})),[e])}},3104:(e,t,n)=>{"use strict";n.d(t,{Mq:()=>f,Tv:()=>c,a_:()=>m,gk:()=>g});var r=n(6540),o=n(8193),a=n(2303),i=n(205),l=n(9532),s=n(4848);const u=r.createContext(void 0);function c(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)(u.Provider,{value:n,children:t})}function d(){const e=(0,r.useContext)(u);if(null==e)throw new l.dV("ScrollControllerProvider");return e}const p=()=>o.A.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function f(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=d(),o=(0,r.useRef)(p()),a=(0,l._q)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=p();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 m(){const e=d(),t=function(){const e=(0,r.useRef)({elem:null,top:0}),t=(0,r.useCallback)((t=>{e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,r.useCallback)((()=>{const{current:{elem:t,top:n}}=e;if(!t)return{restored:!1};const r=t.getBoundingClientRect().top-n;return r&&window.scrollBy({left:0,top:r}),e.current={elem:null,top:0},{restored:0!==r}}),[]);return(0,r.useMemo)((()=>({save:t,restore:n})),[n,t])}(),n=(0,r.useRef)(void 0),o=(0,r.useCallback)((r=>{t.save(r),e.disableScrollEvents(),n.current=()=>{const{restored:r}=t.restore();if(n.current=void 0,r){const t=()=>{e.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else e.enableScrollEvents()}}),[e,t]);return(0,i.A)((()=>{queueMicrotask((()=>n.current?.()))})),{blockElementScrollPositionUntilNextRender:o}}function g(){const e=(0,r.useRef)(null),t=(0,a.A)()&&"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&&ot&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},2967:(e,t,n)=>{"use strict";n.d(t,{Cy:()=>r,tU:()=>o});n(4586);const r="default";function o(e,t){return`docs-${e}-${t}`}},9466:(e,t,n)=>{"use strict";n.d(t,{Dv:()=>c,Wf:()=>u});var r=n(6540);const o="localStorage";function a(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 i(e){if(void 0===e&&(e=o),"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,l||(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),l=!0),null}var t}let l=!1;const s={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function u(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=i(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),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),()=>{}}}}}function c(e,t){const n=(0,r.useRef)((()=>null===e?s:u(e,t))).current(),o=(0,r.useCallback)((e=>"undefined"==typeof window?()=>{}:n.listen(e)),[n]);return[(0,r.useSyncExternalStore)(o,(()=>"undefined"==typeof window?null:n.get()),(()=>null)),n]}},2131:(e,t,n)=>{"use strict";n.d(t,{o:()=>i});var r=n(4586),o=n(6347),a=n(440);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:l}}=(0,r.A)(),{pathname:s}=(0,o.zy)(),u=(0,a.applyTrailingSlash)(s,{trailingSlash:n,baseUrl:e}),c=l===i?e:e.replace(`/${l}/`,"/"),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}`}}}},5062:(e,t,n)=>{"use strict";n.d(t,{$:()=>i});var r=n(6540),o=n(6347),a=n(9532);function i(e){const t=(0,o.zy)(),n=(0,a.ZC)(t),i=(0,a._q)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6342:(e,t,n)=>{"use strict";n.d(t,{p:()=>o});var r=n(4586);function o(){return(0,r.A)().siteConfig.themeConfig}},2983:(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)}},253:(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]}},440: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(2983);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(o).default}});var a=n(253);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return a.getErrorCausalChain}})},1513:(e,t,n)=>{"use strict";n.d(t,{zR:()=>w,TM:()=>_,yJ:()=>f,sC:()=>T,AO:()=>p});var r=n(8168);function o(e){return"/"===e.charAt(0)}function a(e,t){for(var n=t,r=n+1,o=e.length;r=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 m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var l=n(8997);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,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.A)({},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(l){throw l instanceof URIError?new URIError('Pathname "'+a.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}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 m(){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;rt?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{"use strict";var r=n(4363),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},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||o}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,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var o=f(n);o&&o!==m&&e(t,o,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),g=s(n),h=0;h{"use strict";e.exports=function(e,t,n,r,o,a,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,o,a,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},4634:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},119:(e,t,n)=>{"use strict";n.r(t)},1043:(e,t,n)=>{"use strict";n.r(t)},5947: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:'
'};function o(e,t,n){return en?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,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(a,{transition:"none",opacity:1}),a.offsetWidth,setTimeout((function(){s(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),l=e?"-100":a(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,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 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,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)},6969: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 WebPlatform.org documentation. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (.comment can become .namespace--comment) or replace them with your defined ones (like .editor__comment). 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 highlightAll and highlightAllUnder methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},8722:(e,t,n)=>{const r=n(6969),o=n(8380),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(3157).resolve(t)],delete Prism.languages[e],n(3157)(t),a.add(e)}))}i.silent=!1,e.exports=i},9700:()=>{!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,l=i.length;-1!==n.code.indexOf(o=t(r,l));)++l;return i[l]=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(l){for(var s=0;s=a.length);s++){var u=l[s];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),m=p.indexOf(f);if(m>-1){++o;var g=p.substring(0,m),h=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),y=p.substring(m+f.length),b=[];g&&b.push.apply(b,i([g])),b.push(h),y&&b.push.apply(b,i([y])),"string"==typeof u?l.splice.apply(l,[s,1].concat(b)):u.content=b}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(Prism)},8692:(e,t,n)=>{var r={"./":8722};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=8692},3157:(e,t,n)=>{var r={"./":8722};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=3157},8380: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 "));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 o(t,a),l[t]=!0,n[t])l[i]=!0}t(s.require,u),t(s.optional,u),t(s.modify,u)}n[r]=l,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,l){var s=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}}(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),m=c;o(m);){for(var g in p={},m){var h=s[g];t(h&&h.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 m=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,l={},s={};function u(e){if(e in l)return l[e];s[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 s[e],t})));a?o=a(p,(function(){return r(e)})):r(e)}return l[e]=o}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},2694:(e,t,n)=>{"use strict";var r=n(6925);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,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:a,resetWarningCache:o};return n.PropTypes=n,n}},5556:(e,t,n)=>{e.exports=n(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},2551:(e,t,n)=>{"use strict";var r=n(6540),o=n(9982);function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n