diff --git a/pr-1195/404.html b/pr-1195/404.html deleted file mode 100644 index d4213f4e34..0000000000 --- a/pr-1195/404.html +++ /dev/null @@ -1,473 +0,0 @@ - - - - - - Page Not Found :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
-
-

Page Not Found

-
-

The page you’re looking for does not exist. It may have been moved. You can return to the start page, or follow one of the links in the navigation to the left.

-
-
-

If you arrived on this page by clicking on a link, please notify the owner of the site that the link is broken. -If you typed the URL of this page manually, please double check that you entered the address correctly.

-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/_/css/dark-site.css b/pr-1195/_/css/dark-site.css deleted file mode 100644 index af16993abd..0000000000 --- a/pr-1195/_/css/dark-site.css +++ /dev/null @@ -1,18 +0,0 @@ -@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:local("Roboto Regular"),local("Roboto-Regular"),url(../font/roboto-latin-400.woff2) format("woff2"),url(../font/roboto-latin-400.woff) format("woff")}@font-face{font-family:Roboto;font-style:italic;font-weight:400;src:local("Roboto Italic"),local("Roboto-Italic"),url(../font/roboto-latin-400italic.woff2) format("woff2"),url(../font/roboto-latin-400italic.woff) format("woff")}@font-face{font-family:Roboto;font-style:normal;font-weight:500;src:local("Roboto Medium"),local("Roboto-Medium"),url(../font/roboto-latin-500.woff2) format("woff2"),url(../font/roboto-latin-500.woff) format("woff")}@font-face{font-family:Roboto;font-style:italic;font-weight:500;src:local("Roboto Medium Italic"),local("Roboto-MediumItalic"),url(../font/roboto-latin-500italic.woff2) format("woff2"),url(../font/roboto-latin-500italic.woff) format("woff")}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:400;src:local("Roboto Mono Regular"),local("RobotoMono-Regular"),url(../font/roboto-mono-latin-400.woff2) format("woff2"),url(../font/roboto-mono-latin-400.woff) format("woff")}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:500;src:local("Roboto Mono Medium"),local("RobotoMono-Medium"),url(../font/roboto-mono-latin-500.woff2) format("woff2"),url(../font/roboto-mono-latin-500.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:400;src:local("Inter"),local("Inter-Regular"),url(../font/Inter-Regular.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:400;src:local("Inter Italic"),local("Inter-Italic"),url(../font/Inter-Italic.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:500;src:local("Inter Medium"),local("Inter-Medium"),url(../font/Inter-Medium.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:500;src:local("Inter MediumItalic"),local("Inter-MediumItalic"),url(../font/Inter-MediumItalic.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:600;src:local("Inter SemiBold"),local("Inter-SemiBold"),url(../font/Inter-SemiBold.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:600;src:local("Inter SemiBoldItalic"),local("Inter-SemiBoldItalic"),url(../font/Inter-SemiBoldItalic.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:700;src:local("Inter Bold"),local("Inter-Bold"),url(../font/Inter-Bold.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:700;src:local("Inter BoldItalic"),local("Inter-BoldItalic"),url(../font/Inter-BoldItalic.woff) format("woff")}@font-face{font-family:Fira Code;src:local("FiraCode Regular"),local("FiraCode-Regular"),url(../font/FiraCode-Regular.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:Fira Code;src:local("FiraCode Medium"),local("FiraCode-Medium"),url(../font/FiraCode-Medium.woff) format("woff");font-weight:500;font-style:normal}*,::after,::before{-webkit-box-sizing:inherit;box-sizing:inherit}html{-webkit-box-sizing:border-box;box-sizing:border-box;font-size:1em;height:100%}@media screen and (min-width:1024px){html{font-size:1em}}body{background:#121212;color:#ccc;font-family:Inter,sans-serif;line-height:2;margin:0;word-wrap:anywhere}a{text-decoration:none}a:hover{text-decoration:underline}a:active{background-color:none}code,kbd,pre{font-family:Roboto Mono,monospace}b,dt,strong,th{font-weight:500}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}em em{font-style:normal}strong strong{font-weight:400}button{cursor:pointer;font-family:inherit;font-size:1em;line-height:2;margin:0}button::-moz-focus-inner{border:none;padding:0}summary{cursor:pointer;-webkit-tap-highlight-color:transparent;outline:none}table{border-collapse:collapse;word-wrap:normal}object[type="image/svg+xml"]:not([width]){width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}@supports (scrollbar-width:thin){body *{scrollbar-width:thin;scrollbar-color:#254898 transparent}}body ::-webkit-scrollbar{height:.25rem;width:.25rem}body ::-webkit-scrollbar-thumb{background-color:#254898}@media screen and (min-width:1024px){.body{display:-webkit-box;display:-ms-flexbox;display:flex}}.nav-container{position:fixed;top:4.88889rem;bottom:0;left:0;width:100%;font-size:.94444rem;z-index:11;visibility:hidden;background:#121212;overflow-y:auto}.nav-link,.nav-text{display:inline-block;padding-block:.625rem;-webkit-box-flex:1;-ms-flex:1;flex:1;padding-right:2rem}@media screen and (min-width:1024px){.nav-container{font-size:.86111rem;-webkit-box-flex:0;-ms-flex:none;flex:none;position:static;top:0;visibility:visible;top:4.88889rem;z-index:1;width:18rem;overflow-y:unset}.nav .nav-panel-explore{bottom:0}}.nav-container.is-active{visibility:visible}.nav{background:#121212;position:relative}@media screen and (max-width:1023.5px){.nav{height:100%!important}}@media screen and (min-width:769px){.nav{-webkit-box-shadow:.5px 0 3px #c1c1c1;box-shadow:.5px 0 3px #c1c1c1}}@media screen and (min-width:1024px){.nav{top:7.38889rem;-webkit-box-shadow:none;box-shadow:none;position:sticky;height:calc(100vh - 11.57639rem)}.nav-panel-menu{overflow-y:auto}}.nav .panels{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:inherit}html.is-clipped--nav{overflow-y:hidden}.nav-panel-menu{-ms-scroll-chaining:none;overscroll-behavior:none}.nav-panel-menu:not(.is-active) .nav-menu{opacity:.75}.nav-panel-menu:not(.is-active)::after{content:"";background:rgba(0,0,0,.5);display:block;position:absolute;top:0;right:0;bottom:0;left:0}.nav-menu{min-height:100%;line-height:1.35;position:relative}@media screen and (min-width:1024px){.nav-menu{padding:.5rem 0}}.nav-menu h3.title{color:#424242;font-size:inherit;font-weight:500;margin:0;padding:.25em 0 .125em}.nav-menu a{color:inherit}.nav-list{margin-left:1rem;padding:0}.nav-menu>.nav-list+.nav-list{margin-top:.5rem}.nav-item{list-style:none;font-size:.875rem;line-height:1.5;margin-left:-16rem;padding-left:16rem;color:#ccc}.nav-menu>.nav-list{margin-top:10px;margin-left:0}@media screen and (min-width:1024px){.nav-menu>.nav-list{margin-left:1rem}}.nav-item[data-depth="0"]>.nav-list:first-child{display:block}.nav-item:not(.is-active)>.nav-list{display:none}.nav-item-toggle{border:none;outline:none;line-height:inherit;position:absolute;height:1.35em;width:1.35em;margin-top:.7em;right:1em;mask-image:url(../img/chevron-toggle.svg);-webkit-mask-image:url(../img/chevron-toggle.svg);background-color:#6b7280}.nav-item-toggle:hover{background-color:#fe9e92}.nav-item.is-active>.nav-item-toggle{-webkit-transform:rotate(90deg);transform:rotate(90deg);background-color:#fe9e92}.is-current-page>.nav-link,.is-current-page>.nav-text{font-weight:500}.nav-panel-explore{background:#121212;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;position:absolute;top:0;right:0;bottom:3.5em;left:0}.nav-panel-explore:not(:first-child){top:auto;max-height:calc(50% + 2.5rem)}.nav-panel-explore .context{font-size:.83333rem;-ms-flex-negative:0;flex-shrink:0;color:#f7f9fb;-webkit-box-shadow:0 -1px 0 #363f55;box-shadow:0 -1px 0 #363f55;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;cursor:pointer;line-height:1;height:2.5rem;padding:.5em 1.5em}.nav-panel-explore .context .version{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:inherit;-ms-flex-align:inherit;align-items:inherit}.nav-panel-explore .context .version::after{content:"";background:url(../img/chevron.svg) no-repeat 100%/auto 100%;width:1.25em;height:.75em}.nav-panel-explore .components{line-height:2;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-shadow:inset 0 1px 5px #363f55;box-shadow:inset 0 1px 5px #363f55;background:#000;padding:.5rem .75rem 0;margin:0;overflow-y:scroll;max-height:100%;display:block}.nav-panel-explore:not(.is-active) .components{display:none}.nav-panel-explore .component{display:block}.nav-panel-explore .component+.component{margin-top:.5rem}.nav-panel-explore .component:last-child{margin-bottom:.75rem}.nav-panel-explore .component .title{font-weight:500;color:inherit}.nav-panel-explore .versions{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;list-style:none;padding-left:0;margin-top:-.25rem;line-height:1}.nav-panel-explore .component .version{display:block;margin:.375rem .375rem 0 0}.nav-panel-explore .component .version a{border:1px solid #c1c1c1;color:inherit;opacity:.75;white-space:nowrap;border-radius:.9rem;text-decoration:none;opacity:1;-webkit-box-flex:0;-ms-flex:none;flex:none;-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0;-ms-flex-positive:0;flex-grow:0;padding:.4em 1em .2em}.nav-panel-explore .component .is-current a{border-color:currentColor;opacity:.9;font-weight:500}.nav-panel-explore .component .version a:hover{border:1px solid #254898;color:#254898}.nav-panel-explore .component .version.is-current a,.nav-panel-explore .component .version a:focus{background:#254898;color:#fff}.nav-list>.nav-item>span{margin-left:-16rem;padding-left:16rem;display:inline-block}.nav-list>.nav-item[data-depth="1"]>a,.nav-list>.nav-item[data-depth="1"]>span,.nav-list>.parent[data-depth="1"]>span>a{font-weight:500;font-size:.9375rem;line-height:1.5;color:#fff}.nav-panel-explore.is-active .context .version::after{-webkit-transform:rotate(180deg);transform:rotate(180deg);margin-left:.5em}.nav-menu>.title{display:none}.is-current-page.parent>span,.is-current-page:not(.parent){background-color:#211f1f}.is-current-page.parent>span{display:-webkit-box;display:-ms-flexbox;display:flex}.is-current-page.parent>span>a,.is-current-page>.nav-link{color:#fe9e92;font-weight:500}.components-versions{width:calc(18rem - 1.5em);height:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:inherit;padding:0 1em 0 0;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;border-right:1px solid #dfe6f2}.nav-toggle{margin-left:1rem}@media screen and (max-width:1023.5px){aside.toc.sidebar{display:none}main>.content{overflow-x:auto}}@media screen and (min-width:1024px){main{-webkit-box-flex:1;-ms-flex:auto;flex:auto;min-width:0}main>.content{display:-webkit-box;display:-ms-flexbox;display:flex}aside.toc.embedded{display:none}aside.toc.sidebar{-webkit-box-flex:0;-ms-flex:0 0 12rem;flex:0 0 12rem;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}}@media screen and (min-width:1216px){aside.toc.sidebar{-ms-flex-preferred-size:15rem;flex-basis:15rem}}.toolbar{color:#ccc;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-shadow:0 1px 0 #313131;box-shadow:0 1px 0 #313131;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:.83333rem;height:2.5rem;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;position:sticky;top:4.88889rem;z-index:2;padding-inline:1rem}.toolbar a{color:inherit}.nav-toggle{background:url(../img/menu.svg) no-repeat 50% 47.5%;background-size:49%;border:none;outline:none;line-height:inherit;padding:0;height:2.5rem;width:2.5rem;margin-right:-.25rem}@media screen and (min-width:1024px){.nav-toggle{display:none}.toolbar{padding-inline:0}}.nav-toggle.is-active{background-image:url(../img/back.svg);background-size:41.5%}.home-link{display:block;mask-image:url(../img/home-outlined.svg);-webkit-mask-image:url(../img/home-outlined.svg);background-color:red;height:1.25rem;width:1.25rem;background-color:#858585}.edit-this-page{display:none;padding-right:.5rem}@media screen and (min-width:1024px){.home-link{margin:.625rem}.edit-this-page{display:block}}.toolbar .edit-this-page a{color:#ccc}.breadcrumbs{display:none;-webkit-box-flex:1;-ms-flex:1 1;flex:1 1;padding:0 .5rem 0 .75rem;line-height:1.35;color:#858585}@media screen and (min-width:1024px){.breadcrumbs{display:block}}a+.breadcrumbs{padding-left:.05rem}.breadcrumbs ul{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0;padding:0;list-style:none}.breadcrumbs li{display:inline;margin:0}.breadcrumbs li::after{content:"/";padding:0 .5rem}.breadcrumbs li:last-of-type::after{content:none}.page-versions{margin:0 .2rem 0 auto;position:relative;line-height:1}@media screen and (min-width:1024px){.page-versions{margin-right:.7rem}}.page-versions .version-menu-toggle{color:inherit;background:url(../img/chevron.svg) no-repeat;background-position:right .5rem top 50%;background-size:auto .75em;border:none;outline:none;line-height:inherit;padding:.5rem 1.5rem .5rem .5rem;position:relative;z-index:3}.page-versions .version-menu{min-width:100%;padding:1.375rem 1.5rem .5rem .5rem}.page-versions:not(.is-active) .version-menu{display:none}.page-versions .version{display:block;padding-top:.5rem}.page-versions .version.is-current{display:none}.page-versions .version.is-missing{color:#8e8e8e;font-style:italic;text-decoration:none}aside.toc.embedded{display:none}@media screen and (min-width:1024px){.aside.toc.embedded{display:block}}.toc-menu{color:#858585}.toc.sidebar .toc-menu{margin-right:.75rem;position:sticky;top:7.38889rem}.toc .toc-menu h3{color:#fff;font-size:.875rem;font-weight:700;line-height:1.3;margin:0;padding-left:1rem;padding-bottom:.5rem;text-transform:uppercase}.toc.sidebar .toc-menu h3{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:4rem;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.toc .toc-menu ul{font-size:.875rem;line-height:1.6;list-style:none;margin:0;padding:0}.toc.sidebar .toc-menu ul{max-height:calc(100vh - 9.88889rem);overflow-y:auto;-ms-scroll-chaining:none;overscroll-behavior:none;scrollbar-width:none}.toc .toc-menu ul::-webkit-scrollbar{width:0;height:0}.toc .toc-menu li{margin:0}.toc .toc-menu li[data-level="2"] a{padding-left:2rem}.toc .toc-menu li[data-level="3"] a{padding-left:3rem}.toc .toc-menu a{color:inherit;display:inline-block;padding:.5rem 0 .5rem 1rem;text-decoration:none;position:relative}.toc .toc-menu a::before{content:"";position:absolute;height:100%;width:1px;background:#313131;left:2px}.toc .toc-menu a.is-active::after{content:"";width:5px;height:40%;left:0;position:absolute;background:#afcaff;border-radius:1px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.sidebar.toc .toc-menu a{display:block;outline:none}.toc .toc-menu a:hover{color:#4070f4}.toc .toc-menu a.is-active{color:#afcaff;font-weight:500}.sidebar.toc .toc-menu a:focus{background:#121212}.toc .toc-menu .is-hidden-toc{display:none!important}.doc{color:#ccc;font-size:inherit;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;line-height:2;margin:0 auto;max-width:40rem;padding:0 1rem 4rem}@media screen and (min-width:1024px){.doc{-webkit-box-flex:1;-ms-flex:auto;flex:auto;font-size:1rem;margin:0 2rem;max-width:72rem;min-width:0}}.doc h1,.doc h2,.doc h3,.doc h4,.doc h5,.doc h6{color:#fff;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none;line-height:1;margin:20px 0;font-weight:700}.doc h3,.doc h4,.doc h5,.doc h6{margin-top:40px!important}.doc>h1.page:first-child{font-size:1.5rem;margin-top:1.5rem;margin-bottom:1rem}.doc>h2{font-size:1.5rem}.doc>h3{font-size:18px}@media screen and (min-width:1024px){.doc>h1.page:first-child{margin-top:2.5rem;font-size:3rem;line-height:3.625rem}}.doc>h1.page:first-child+aside.toc.embedded{margin-top:-.5rem}.doc>h2#name+.sectionbody{margin-top:0}#preamble+.sect1,.doc .sect1+.sect1{margin-top:3rem}.doc h1.sect0{background:#f0f0f0;font-size:1.8em;margin:1.5rem -1rem 0;padding:.5rem 1rem}.doc h2:not(.discrete){border-bottom:1px solid #313131;padding-bottom:1rem}.doc h1 .anchor,.doc h2 .anchor,.doc h3 .anchor,.doc h4 .anchor,.doc h5 .anchor,.doc h6 .anchor{position:absolute;text-decoration:none;width:1.75ex;margin-left:-1.5ex;visibility:hidden;font-size:.8em;font-weight:400;padding-top:.05em}.doc h1 .anchor::before,.doc h2 .anchor::before,.doc h3 .anchor::before,.doc h4 .anchor::before,.doc h5 .anchor::before,.doc h6 .anchor::before{content:"\00a7"}.doc h1:hover .anchor,.doc h2:hover .anchor,.doc h3:hover .anchor,.doc h4:hover .anchor,.doc h5:hover .anchor,.doc h6:hover .anchor{visibility:visible}.doc dl,.doc p{margin:0}.doc a{color:#afcaff}.doc a.bare{-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}.doc a.unresolved{color:#fe9e92}.doc i.fa{-webkit-hyphens:none;-ms-hyphens:none;hyphens:none;font-style:normal}.doc .colist>table code,.doc h2 code,.doc h3 code,.doc p code,.doc thead code{background:#121212;border-radius:.25em}.doc code,.doc pre{-webkit-hyphens:none;-ms-hyphens:none;hyphens:none;font-weight:500;border-radius:.5rem}.doc code{padding:4px}.doc pre{font-size:.88889rem;line-height:1.5;margin:0}.doc blockquote{margin:0}.doc .paragraph.lead>p{font-size:1rem}.doc .right{float:right}.doc .left{float:left}.doc .stretch{width:100%}.doc .underline{text-decoration:underline}.doc .line-through{text-decoration:line-through}.doc .admonitionblock,.doc .dlist,.doc .exampleblock,.doc .hdlist,.doc .imageblock,.doc .listingblock,.doc .literalblock,.doc .olist,.doc .paragraph,.doc .partintro,.doc .quoteblock,.doc .sidebarblock,.doc .ulist,.doc .verseblock,.doc details,.doc hr{margin:1rem 0 0}.doc table.tableblock{margin:1.5rem 0 0;display:block;max-width:-moz-fit-content;max-width:-webkit-fit-content;max-width:fit-content;overflow-x:auto;word-wrap:normal;word-break:normal;padding-inline:1.5rem;padding-block:1.25rem}.hdlist table{table-layout:fixed;width:100%;word-wrap:break-word}.doc table.tableblock+*{margin-top:1.5rem}.doc p.tableblock+p.tableblock{margin-top:.5rem}.doc td.tableblock>.content>:first-child{margin-top:0}.doc table.tableblock td,.doc table.tableblock th{padding:.7rem 1rem}.doc table.tableblock,.doc table.tableblock>*>tr>*{border:0 solid #363f55}.doc table.grid-all>*>tr>*{border-width:1px}.doc table.grid-cols>*>tr>*{border-width:0 1px}.doc table.grid-rows>*>tr>*{border-width:1px 0}.doc table.grid-all>thead th,.doc table.grid-rows>thead th{border-bottom-width:2.5px}.doc table.frame-all{border-width:1px}.doc table.frame-ends{border-width:1px 0}.doc table.frame-sides{border-width:0 1px}.doc table.frame-none>colgroup+*>:first-child>*,.doc table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}.doc table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}.doc table.frame-ends>*>tr>:first-child,.doc table.frame-none>*>tr>:first-child{border-left-width:0}.doc table.frame-ends>*>tr>:last-child,.doc table.frame-none>*>tr>:last-child{border-right-width:0}.doc div.stripes-even table>tbody>tr:nth-of-type(2n),.doc div.stripes-odd table>tbody>tr:nth-of-type(odd),.doc table.stripes-all>tbody>tr,.doc table.stripes-even>tbody>tr:nth-of-type(2n),.doc table.stripes-hover>tbody>tr:hover,.doc table.stripes-odd>tbody>tr:nth-of-type(odd){background:#5d5d5d}.doc div.stripes-even table>tbody>tr:nth-of-type(odd),.doc div.stripes-odd table>tbody>tr:nth-of-type(2n){background:#121212}.doc table.stripes-all>tbody>tr>td,.doc table.stripes-even>tbody>tr:nth-of-type(2n)>td,.doc table.stripes-odd>tbody>tr:nth-of-type(odd)>td{border-radius:0}.doc table.tableblock>tfoot{background:-webkit-gradient(linear,left top,left bottom,from(#121212),to(#000));background:linear-gradient(180deg,#121212 0,#000)}.doc .halign-left{text-align:left}.doc .halign-right{text-align:right}.doc .halign-center{text-align:center}.doc .valign-top{vertical-align:top}.doc .valign-bottom{vertical-align:bottom}.doc .valign-middle{vertical-align:middle}.doc .admonitionblock{border-radius:8px}.doc .admonitionblock.caution,.doc .admonitionblock.important,.doc .admonitionblock.note,.doc .admonitionblock.tip,.doc .admonitionblock.warning{border:none}.doc .admonitionblock td.content>.title+*,.doc .admonitionblock td.content>:not(.title):first-child{margin-top:0}.doc .admonitionblock pre{font-size:.83333rem}.doc .admonitionblock>table{table-layout:fixed;position:relative;width:100%}.doc .admonitionblock td.content{background:#121212;width:100%;word-wrap:anywhere;padding:73px 24px 24px;border-radius:.5rem}.doc .admonitionblock p,.doc .admonitionblock td.content{line-height:1.5}@media screen and (min-width:1024px){.doc .admonitionblock td.content{padding:24px 24px 24px 152px;min-height:96px}.doc .admonitionblock.note td.content{padding:24px 24px 24px 141px}.doc .admonitionblock.important td.content{padding:24px 24px 24px 176px}.doc .admonitionblock.caution td.content{padding:24px 24px 24px 162px}.doc .admonitionblock.warning td.content{padding:24px 24px 24px 166px}.doc .admonitionblock.tip td.content{padding:24px 24px 24px 131px}}.doc .admonitionblock .icon{position:absolute;font-size:18px;line-height:1;top:32px;left:24px;z-index:1;padding:8px 12px;border-radius:4px;text-align:center}@media screen and (min-width:1024px){.doc .admonitionblock.one-line-block .icon{top:18px}}@media screen and (max-width:1024px){.doc .admonitionblock .icon{top:24px}}.doc .admonitionblock .icon .icon-note::before{background-image:url(../img/pencil-filled.svg)}.doc .admonitionblock .icon .icon-note::before,.doc .admonitionblock .icon .icon-warning::before{background-repeat:no-repeat;content:"";display:inline-block;vertical-align:middle;margin-right:8px}.doc .admonitionblock .icon .icon-warning::before{background-image:url(../img/warning-outlined.svg)}.doc .admonitionblock .icon .icon-caution::before{background-image:url(../img/i-caution-outlined.svg);background-repeat:no-repeat;content:"";display:inline-block;vertical-align:middle;margin-right:8px}.doc .admonitionblock .icon .icon-important::before{background-image:url(../img/flag-filled.svg)}.doc .admonitionblock .icon .icon-important::before,.doc .admonitionblock .icon .icon-tip::before{background-repeat:no-repeat;content:"";display:inline-block;vertical-align:middle;margin-right:8px}.doc .admonitionblock .icon .icon-tip::before{background-image:url(../img/tip-outlined.svg)}.doc .admonitionblock .icon .icon-caution::before,.doc .admonitionblock .icon .icon-important::before,.doc .admonitionblock .icon .icon-note::before,.doc .admonitionblock .icon .icon-tip::before,.doc .admonitionblock .icon .icon-warning::before{width:22px;height:22px;background-size:22px 22px}.doc .admonitionblock.tip td.content{background:#172726}.doc .admonitionblock.note td.content{background:#171c27}.doc .admonitionblock.important td.content{background:#231f1a}.doc .admonitionblock.caution td.content,.doc .admonitionblock.warning td.content{background:#231b1a}.doc .admonitionblock.tip .icon{background-color:#80dcda}.doc .admonitionblock.important .icon{background-color:#ffcd9a}.doc .admonitionblock.note .icon{background-color:#b6cfff}.doc .admonitionblock.caution .icon,.doc .admonitionblock.warning .icon{background-color:#ff7e6d}.doc .admonitionblock .icon i::after{content:attr(title);display:inline-block;vertical-align:middle;color:#363636;font-size:14px;line-height:1;font-weight:700}.doc .imageblock{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.doc .image>img,.doc .image>object,.doc .image>svg,.doc .imageblock img,.doc .imageblock object,.doc .imageblock svg{display:inline-block;height:auto;max-width:100%;vertical-align:middle}.doc .image:not(.left):not(.right)>img{margin-top:-.2em}#preamble .abstract blockquote{background:#f0f0f0;border-left:5px solid #363f55;color:#4a4a4a;font-size:.88889rem;padding:.75em 1em}.doc .quoteblock,.doc .verseblock{background:#121212;border-left:5px solid #5d5d5d;color:#5d5d5d}.doc .quoteblock{padding:.25rem 2rem 1.25rem}.doc .quoteblock .attribution{color:#8e8e8e;font-size:.83333rem;margin-top:.75rem}.doc .quoteblock blockquote{margin-top:1rem}.doc .quoteblock .paragraph{font-style:italic}.doc .quoteblock cite{padding-left:1em}.doc .verseblock{font-size:1.15em;padding:1rem 2rem}.doc .verseblock pre{font-family:inherit;font-size:inherit}.doc ol,.doc ul{margin:0;padding:0 0 0 2rem}.doc ol.none,.doc ol.unnumbered,.doc ol.unstyled,.doc ul.checklist,.doc ul.no-bullet,.doc ul.none,.doc ul.unstyled{list-style-type:none}.doc ol.unnumbered,.doc ul.no-bullet{padding-left:1.25rem}.doc ol.unstyled,.doc ul.unstyled{padding-left:0}.doc ul.circle,.doc ul.disc,.doc ul.square{list-style-type:square}.doc ol.arabic{list-style-type:decimal}.doc ol.decimal{list-style-type:decimal-leading-zero}.doc ol.loweralpha{list-style-type:lower-alpha}.doc ol.upperalpha{list-style-type:upper-alpha}.doc ol.lowerroman{list-style-type:lower-roman}.doc ol.upperroman{list-style-type:upper-roman}.doc ol.lowergreek{list-style-type:lower-greek}.doc ul.checklist{padding-left:.5rem}.doc ul.checklist p>i.fa-check-square-o:first-child,.doc ul.checklist p>i.fa-square-o:first-child{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:1.25rem}.doc ul.checklist i.fa-check-square-o::before{content:"\2713"}.doc ul.checklist i.fa-square-o::before{content:"\274f"}.doc .dlist .dlist,.doc .dlist .olist,.doc .dlist .ulist,.doc .olist .dlist,.doc .olist .olist,.doc .olist .ulist,.doc .olist li+li,.doc .ulist .dlist,.doc .ulist .olist,.doc .ulist .ulist,.doc .ulist li+li{margin-top:.5rem}.doc .admonitionblock .listingblock,.doc .olist .listingblock,.doc .ulist .listingblock{padding:0}.doc .admonitionblock .title,.doc .exampleblock .title,.doc .imageblock .title,.doc .listingblock .title,.doc .literalblock .title,.doc .openblock .title,.doc .tableblock caption{font-weight:500;font-style:italic;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none;letter-spacing:.01em;padding-bottom:.075rem;text-align:left}.doc .imageblock .title{margin-top:.5rem;padding-bottom:0}.doc details{margin-left:1rem}.doc details>summary{display:block;position:relative;line-height:2;margin-bottom:.5rem}.doc details>summary::-webkit-details-marker{display:none}.doc details>summary::before{content:"";border:solid transparent;border-left:solid;border-width:.3em 0 .3em .5em;position:absolute;top:.7em;left:-1rem;-webkit-transform:translateX(15%);transform:translateX(15%)}.doc details[open]>summary::before{border-color:currentColor transparent transparent;border-width:.5rem .3rem 0;-webkit-transform:translateY(15%);transform:translateY(15%)}.doc details>summary::after{content:"";width:1rem;height:1em;position:absolute;top:.5em;left:-1rem}.doc details.result{margin-top:.25rem}.doc details.result>summary{font-style:italic;margin-bottom:0}.doc details.result>.content{margin-left:-1rem}.doc .exampleblock>.content,.doc details.result>.content{background:#fff;border:.25rem solid #363f55;border-radius:.5rem;padding:.75rem}.doc .exampleblock>.content::after,.doc details.result>.content::after{content:"";display:table;clear:both}.doc .exampleblock>.content>:first-child,.doc details>.content>:first-child{margin-top:0}.doc .sidebarblock{background:#e1e1e1;border-radius:.75rem;padding:.75rem 1.5rem}.doc .sidebarblock>.content>.title{font-size:1.25rem;font-weight:500;line-height:1.3;margin-bottom:-.3em;text-align:center}.doc .sidebarblock>.content>:not(.title):first-child{margin-top:0}.doc .listingblock.wrap pre,.doc .tableblock pre{white-space:pre-wrap}.doc pre.highlight{position:relative}.doc .listingblock pre:not(.highlight),.doc .literalblock pre,.doc pre.highlight code{display:block;overflow-x:auto;padding:1.5rem;border-radius:.5rem;background-color:#161616;border:1px solid #313131}.admonitionblock .listingblock pre:not(.highlight),.admonitionblock .literalblock pre,.admonitionblock pre.highlight code{background-color:rgba(0,0,0,.65);border:none}.doc .source-toolbox{display:-webkit-box;display:-ms-flexbox;display:flex;visibility:hidden;position:absolute;top:.25rem;right:.5rem;color:grey;font-family:Inter,sans-serif;font-size:.75rem;line-height:1}.doc .listingblock:hover .source-toolbox{visibility:visible}.doc .source-toolbox .source-lang{text-transform:uppercase;letter-spacing:.075em;font-size:.96em;line-height:1.0425}.doc .source-toolbox>:not(:last-child)::after{content:"|";letter-spacing:0;padding:0 1ch}.doc .source-toolbox .copy-button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:transparent;border:none;color:inherit;outline:none;padding:0;font-size:inherit;line-height:inherit;width:1em;height:1em}.doc .source-toolbox .copy-icon{-webkit-box-flex:0;-ms-flex:none;flex:none;width:inherit;height:inherit;background:url(../img/octicons-16.svg)}.doc .source-toolbox img.copy-icon{-webkit-filter:invert(50.2%);filter:invert(50.2%)}.doc .source-toolbox svg.copy-icon{fill:currentColor}.doc .source-toolbox .copy-toast{-webkit-box-flex:0;-ms-flex:none;flex:none;position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-top:1em;background-color:#ccc;border-radius:.25em;padding:.5em;color:#fff;cursor:auto;opacity:0;-webkit-transition:opacity .5s ease .75s;transition:opacity .5s ease .75s}.doc .source-toolbox .copy-toast::after{content:"";position:absolute;top:0;width:1em;height:1em;border:.55em solid transparent;border-left-color:#ccc;-webkit-transform:rotate(-90deg) translateX(50%) translateY(50%);transform:rotate(-90deg) translateX(50%) translateY(50%);-webkit-transform-origin:left;transform-origin:left}.doc .source-toolbox .copy-button.clicked .copy-toast{opacity:1;-webkit-transition:none;transition:none}.doc .language-console .hljs-meta{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.doc .dlist dt{font-style:italic}.doc .dlist dd{margin:0 0 .25rem 1.5rem}.doc .dlist dd:last-of-type{margin-bottom:0}.doc td.hdlist1,.doc td.hdlist2{padding:.5rem 0 0;vertical-align:top}.doc tr:first-child>.hdlist1,.doc tr:first-child>.hdlist2{padding-top:0}.doc td.hdlist1{font-weight:500;padding-right:.25rem}.doc td.hdlist2{padding-left:.25rem}.doc .colist{font-size:.88889rem;margin:.25rem 0 -.25rem}.doc .colist>table>tbody>tr>:first-child,.doc .colist>table>tr>:first-child{padding:.25em .5rem 0;vertical-align:top}.doc .colist>table>tbody>tr>:last-child,.doc .colist>table>tr>:last-child{padding:.25rem 0}.doc .conum[data-value]{border:1px solid;border-radius:100%;display:inline-block;font-family:Inter,sans-serif;font-size:.75rem;font-style:normal;line-height:1.2;text-align:center;width:1.25em;height:1.25em;letter-spacing:-.25ex;text-indent:-.25ex}.doc .conum[data-value]::after{content:attr(data-value)}.doc .conum[data-value]+b{display:none}.doc hr{border:solid #313131;border-width:2px 0 0;height:0}.doc b.button{white-space:nowrap}.doc b.button::before{content:"[";padding-right:.25em}.doc b.button::after{content:"]";padding-left:.25em}.doc kbd{display:inline-block;font-size:.66667rem;background:#121212;border:1px solid #c1c1c1;border-radius:.25em;-webkit-box-shadow:0 1px 0 #c1c1c1,0 0 0 .1em #121212 inset;box-shadow:0 1px 0 #c1c1c1,inset 0 0 0 .1em #121212;padding:.25em .5em;vertical-align:text-bottom;white-space:nowrap}.doc .keyseq,.doc kbd{line-height:1}.doc .keyseq{font-size:.88889rem}.doc .keyseq kbd{margin:0 .125em}.doc .keyseq kbd:first-child{margin-left:0}.doc .keyseq kbd:last-child{margin-right:0}.doc .menuseq,.doc .path{-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}.doc .menuseq i.caret::before{content:"\203a";font-size:1.1em;font-weight:500;line-height:.90909}.doc :not(pre).nowrap{white-space:nowrap}.doc .nobreak{-webkit-hyphens:none;-ms-hyphens:none;hyphens:none;word-wrap:normal}#footnotes{font-size:.85em;line-height:1.5;margin:2rem -.5rem 0}.doc td.tableblock>.content #footnotes{margin:2rem 0 0}#footnotes hr{border-top-width:1px;margin-top:0;width:20%}#footnotes .footnote{margin:.5em 0 0 1em}#footnotes .footnote+.footnote{margin-top:.25em}#footnotes .footnote>a:first-of-type{display:inline-block;margin-left:-2em;text-align:right;width:1.5em}.stemblock{overflow-x:auto;padding-block:1rem;border-radius:.5rem;background-color:#161616;border:1px solid #313131}.MathJax_Display .MathJax{padding-inline:1rem}.doc .olist .title,.doc .ulist .title,div.title{font-style:normal;font-weight:600;line-height:2.8}nav.pagination{border-top:1px solid #363f55;line-height:1;margin:2rem -1rem -1rem;padding:2rem}nav.pagination,nav.pagination span{display:-webkit-box;display:-ms-flexbox;display:flex}nav.pagination span{-webkit-box-flex:50%;-ms-flex:50%;flex:50%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}nav.pagination .prev{padding-right:.5rem}nav.pagination .next{margin-left:auto;padding-left:.5rem;text-align:right}nav.pagination span::before{line-height:1.5;font-size:.875rem;padding-bottom:2px}nav.pagination .prev::before{content:"Prev"}nav.pagination .next::before{content:"Next"}nav.pagination a{position:relative;font-weight:400;font-size:.875rem;line-height:1.5}nav.pagination a::after,nav.pagination a::before{color:#ccc;font-weight:400;font-size:1.5em;line-height:.75;position:absolute;top:-1px;width:1rem}nav.pagination .next a::after{right:-1.5rem;mask-image:url(../img/chevron-right.svg);-webkit-mask-image:url(../img/chevron-right.svg)}nav.pagination .next a::after,nav.pagination .prev a::before{content:"";width:1em;height:1em;mask-repeat:no-repeat;mask-position:center;mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain;background-color:#afcaff}nav.pagination .prev a::before{left:-1.5rem;mask-image:url(../img/chevron-left.svg);-webkit-mask-image:url(../img/chevron-left.svg)}nav.pagination .next a:hover::after,nav.pagination .prev a:hover::before{background-color:#4070f4}html.is-clipped--navbar{overflow-y:hidden}body{padding-top:4.88889rem}.navbar{color:#363636;font-size:.88889rem;height:4.88889rem;position:fixed;top:0;width:100%;z-index:4}.navbar a{text-decoration:none}.navbar-end .navbar-link{color:#363636}.navbar-brand{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:auto;flex:auto}.navbar-brand .navbar-item:first-child{-ms-flex-item-align:center;align-self:center;padding:0;color:#363636;font-size:1.22222rem;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:1}.navbar-brand .navbar-item:first-child a{color:inherit;word-wrap:normal}.navbar-brand .navbar-item:first-child :not(:last-child){padding-right:.375rem}.navbar-brand .navbar-item.search{-webkit-box-flex:1;-ms-flex:auto;flex:auto;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}#search-input{color:#333;font-family:inherit;font-size:.95rem;width:150px;border:1px solid #dbdbdb;border-radius:.1em;line-height:1.5;padding:0 .25em}.navbar-burger{background:none;border:none;outline:none;line-height:1;position:relative;width:3rem;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-left:auto;min-width:0}.navbar-burger span{background-color:#fff;height:1.5px;width:1rem}.navbar-burger:not(.is-active) span{-webkit-transition:opacity 0s .25s,margin-top .25s ease-out .25s,-webkit-transform .25s ease-out;transition:opacity 0s .25s,margin-top .25s ease-out .25s,-webkit-transform .25s ease-out;transition:transform .25s ease-out,opacity 0s .25s,margin-top .25s ease-out .25s;transition:transform .25s ease-out,opacity 0s .25s,margin-top .25s ease-out .25s,-webkit-transform .25s ease-out}.navbar-burger span+span{margin-top:.25rem}.navbar-burger.is-active span+span{margin-top:-1.5px}.navbar-burger.is-active span:first-child{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.navbar-burger.is-active span:nth-child(2){opacity:0}.navbar-burger.is-active span:nth-child(3){-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.navbar-item,.navbar-link{display:block;line-height:2}.navbar-item.has-dropdown{padding:0}.navbar-item .icon{width:1.25rem;height:1.25rem;display:block}.navbar-item .icon img,.navbar-item .icon svg{fill:currentColor;width:inherit;height:inherit}.navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}.navbar-divider{background-color:#363f55;border:none;height:1px;margin:.25rem 0}.navbar .button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:#121212;border:1px solid #363f55;border-radius:.15rem;height:1.75rem;color:#ccc;padding:0 .75em;white-space:nowrap}@media screen and (max-width:768.5px){.navbar-brand .navbar-item.search{padding-left:0;padding-right:0}}@media screen and (min-width:769px){#search-input{width:200px}}@media screen and (max-width:1023.5px){.navbar-brand{height:inherit}.navbar-brand .navbar-item{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.navbar-menu{background:#121212;-webkit-box-shadow:0 8px 16px rgba(10,10,10,.1);box-shadow:0 8px 16px rgba(10,10,10,.1);max-height:calc(100vh - 4.88889rem);overflow-y:auto;-ms-scroll-chaining:none;overscroll-behavior:none;padding:.5rem 0}.navbar-menu:not(.is-active){display:none}.navbar-menu .navbar-link:hover,.navbar-menu a.navbar-item:hover{background:#363f55}}@media screen and (min-width:1024px){.navbar-burger{display:none}.navbar,.navbar-end,.navbar-menu{display:-webkit-box;display:-ms-flexbox;display:flex}.navbar-end{-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2rem}.navbar-item,.navbar-link{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;-webkit-box-flex:0;-ms-flex:none;flex:none}.navbar-item:not(.has-dropdown),.navbar-link{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar-end .navbar-item.has-dropdown:hover .navbar-link,.navbar-end .navbar-link:hover,.navbar-end>a.navbar-item:hover{background:#121212;color:#363636}.navbar-dropdown{background:#121212;border:1px solid #363f55;border-top:none;border-radius:0 0 .25rem .25rem;display:none;top:100%;left:0;min-width:100%;position:absolute}.navbar-dropdown .navbar-item{padding:.5rem 3rem .5rem 1rem;white-space:nowrap}.navbar-dropdown .navbar-item:last-child{border-radius:inherit}.navbar-dropdown.is-right{left:auto;right:0}.navbar-dropdown a.navbar-item:hover{background:#363f55}}.header-right{margin-left:auto;gap:1.25rem}.header-right,.navbar-item-flex{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar-item-flex{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:1rem}.navbar-item-flex a{font-weight:500}.link-icon{background-image:url(../img/link-icon.svg);width:1.2rem;height:1.2rem;display:block}footer.footer{background-color:#0b0b0b;color:#858585;font-size:.83333rem;line-height:2;padding:1.5rem}.footer p{margin:0}.footer a{color:#858585} - -/*! Adapted from the GitHub style by Vasily Polovnyov */.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:500}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:500}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:500}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:500}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-strong{font-weight:500}@page{margin:.5in}@media print{.hide-for-print{display:none!important}html{font-size:.9375em}a{color:inherit!important;text-decoration:underline}a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none}img,object,svg,tr{page-break-inside:avoid}thead{display:table-header-group}pre{-webkit-hyphens:none;-ms-hyphens:none;hyphens:none;white-space:pre-wrap}body{padding-top:2rem}.navbar{background:none;color:inherit;position:absolute}.navbar *{color:inherit!important}.nav-container,.navbar>:not(.navbar-brand),.toolbar,aside.toc,nav.pagination{display:none}.doc{color:inherit;margin:auto;max-width:none;padding-bottom:2rem}.doc .listingblock code[data-lang]::before{display:block}footer.footer{background:none;border-top:1px solid #363f55;color:#8e8e8e;padding:.25rem .5rem 0}.footer *{color:inherit}} - -/*! @docsearch/css Button 3.0.0-alpha.50 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */.DocSearch-Button{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:#090a11;border:0;border-radius:40px;color:#dfe6f2;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;font-weight:500;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:#000;-webkit-box-shadow:inset 0 0 0 2px #5468ff;box-shadow:inset 0 0 0 2px #5468ff;color:#f5f6f7;outline:none}.DocSearch-Button-Container{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:#f5f6f7}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{min-width:calc(40px + .8em)}.DocSearch-Button-Key,.DocSearch-Button-Keys{display:-webkit-box;display:-ms-flexbox;display:flex}.DocSearch-Button-Key{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:linear-gradient(-26.5deg,#565872,#31355b);border-radius:3px;-webkit-box-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);box-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);color:#dfe6f2;height:18px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:.4em;padding-bottom:2px;position:relative;top:-1px;width:20px}@media (max-width:750px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}} - -/*! @docsearch/css Modal 3.0.0-alpha.50 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{-webkit-box-sizing:border-box;box-sizing:border-box}.DocSearch-Container{background-color:rgba(9,10,17,.8);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:#5468ff;cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:#15172a;border-radius:6px;-webkit-box-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;box-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:60px auto auto;max-width:560px;position:relative}.DocSearch-SearchBar{padding:12px 12px 0}.DocSearch-Form,.DocSearch-SearchBar{display:-webkit-box;display:-ms-flexbox;display:flex}.DocSearch-Form{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:#000;border-radius:4px;-webkit-box-shadow:inset 0 0 0 2px #5468ff;box-shadow:inset 0 0 0 2px #5468ff;height:56px;margin:0;padding:0 12px;position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:#f5f6f7;-webkit-box-flex:1;-ms-flex:1;flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::-webkit-input-placeholder{color:#dfe6f2;opacity:1}.DocSearch-Input::-moz-placeholder{color:#dfe6f2;opacity:1}.DocSearch-Input:-ms-input-placeholder{color:#dfe6f2;opacity:1}.DocSearch-Input::-ms-input-placeholder{color:#dfe6f2;opacity:1}.DocSearch-Input::placeholder{color:#dfe6f2;opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#5468ff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#5468ff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{-webkit-animation:none;animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:1.4}}.DocSearch-Reset{-webkit-animation:fade-in .1s ease-in forwards;animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:1.4}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:focus{outline:none}.DocSearch-Reset:hover{color:#5468ff}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:488px;min-height:12px;overflow-y:auto;overflow-y:overlay;padding:0 12px;scrollbar-color:#dfe6f2 #15172a;scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:#dfe6f2;border:3px solid #15172a;border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:#dfe6f2}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:-webkit-box;display:-ms-flexbox;display:flex}.DocSearch-Logo svg{color:#fff;margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:#5468ff}.DocSearch-HitsFooter{color:#dfe6f2;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:.85em;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:12px;padding:12px}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:-webkit-box;display:-ms-flexbox;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{-webkit-transition:none;transition:none}}.DocSearch-Hit--deleting{opacity:0;-webkit-transition:all .25s linear;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{-webkit-transition:none;transition:none}}.DocSearch-Hit--favoriting{-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:top center;transform-origin:top center;-webkit-transition:all .25s linear;transition:all .25s linear;-webkit-transition-delay:.25s;transition-delay:.25s}.DocSearch-Hit a{background:#090a11;border-radius:4px;-webkit-box-shadow:none;box-shadow:none;display:block;padding-left:12px;width:100%}.DocSearch-Hit-source{background:#15172a;color:#5468ff;font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:#dfe6f2;height:56px;opacity:.5;stroke-width:1.4;width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:#5468ff}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#bec3c9;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;height:56px;padding:0 12px 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:#dfe6f2;stroke-width:1.4}.DocSearch-Hit-action{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);-webkit-transition:background-color .1s ease-in;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{-webkit-transition:none;transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;font-weight:500;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:#dfe6f2;font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:#fff!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);-webkit-transition:none;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:#dfe6f2;padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:#5468ff;cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:#1e2136;border-radius:0 0 8px 8px;-webkit-box-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);box-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;-ms-flex-negative:0;flex-shrink:0;height:44px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 12px;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands,.DocSearch-Footer{display:-webkit-box;display:-ms-flexbox;display:flex}.DocSearch-Commands{color:#dfe6f2;list-style:none;margin:0;padding:0}.DocSearch-Commands li{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:linear-gradient(-26.5deg,#565872,#31355b);border-radius:2px;-webkit-box-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);box-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);display:-webkit-box;display:-ms-flexbox;display:flex;height:18px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:.4em;padding-bottom:1px;width:20px}@media (max-width:750px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:-webkit-fill-available;height:100vh;position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;-webkit-box-shadow:none;box-shadow:none;height:-webkit-fill-available;height:100vh;margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(100vh - 112px)}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:#5468ff;cursor:pointer;display:inline-block;-webkit-box-flex:0;-ms-flex:none;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:12px;outline:none;overflow:hidden;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@-webkit-keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.tabs ul{list-style:none;padding:0}.tabs li,.tabs ul{display:-webkit-box;display:-ms-flexbox;display:flex}.tabs li{-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;font-weight:400;font-size:14px;line-height:1;padding:.5rem 1rem;position:relative;border-radius:18px 18px 0 0}.tabs li,.tabs ul{-ms-flex-flow:nowrap;flex-flow:nowrap}.tabs.ulist li{margin-bottom:0;color:#8a8ca2}.tabs.ulist li.is-active{background-color:rgba(64,112,244,.1);color:#4070f4}.tabs.ulist li+li{margin-top:0}.tabset.is-loading .tabs li:first-child::after,.tabs li.is-active::after{background-color:rgba(64,112,244,.1);content:"";display:block;position:absolute;left:0;right:0}.tabset>.content{border:1px solid rgba(64,112,244,.1);padding:1.25rem;border-radius:0 20px 20px 20px}.tabset.is-loading .tab-pane:not(:first-child),.tabset:not(.is-loading) .tab-pane:not(.is-active){display:none}.tab-pane>:first-child{margin-top:0}.swagger-ui .info .title small pre{background:#7d8492}.swagger-ui{color:#3b4151; - /*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */font-family:sans-serif}.swagger-ui html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}.swagger-ui body{margin:0}.swagger-ui article,.swagger-ui aside,.swagger-ui footer,.swagger-ui header,.swagger-ui nav,.swagger-ui section{display:block}.swagger-ui h1{font-size:2em;margin:.67em 0}.swagger-ui figcaption,.swagger-ui figure,.swagger-ui main{display:block}.swagger-ui figure{margin:1em 40px}.swagger-ui hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}.swagger-ui pre{font-family:monospace,monospace;font-size:1em}.swagger-ui a{background-color:transparent;-webkit-text-decoration-skip:objects}.swagger-ui abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.swagger-ui b,.swagger-ui strong{font-weight:inherit;font-weight:bolder}.swagger-ui code,.swagger-ui kbd,.swagger-ui samp{font-family:monospace,monospace;font-size:1em}.swagger-ui dfn{font-style:italic}.swagger-ui mark{background-color:#ff0;color:#000}.swagger-ui small{font-size:80%}.swagger-ui sub,.swagger-ui sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}.swagger-ui sub{bottom:-.25em}.swagger-ui sup{top:-.5em}.swagger-ui audio,.swagger-ui video{display:inline-block}.swagger-ui audio:not([controls]){display:none;height:0}.swagger-ui img{border-style:none}.swagger-ui svg:not(:root){overflow:hidden}.swagger-ui button,.swagger-ui input,.swagger-ui optgroup,.swagger-ui select,.swagger-ui textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}.swagger-ui button,.swagger-ui input{overflow:visible}.swagger-ui button,.swagger-ui select{text-transform:none}.swagger-ui [type=reset],.swagger-ui [type=submit],.swagger-ui button,.swagger-ui html [type=button]{-webkit-appearance:button}.swagger-ui [type=button]::-moz-focus-inner,.swagger-ui [type=reset]::-moz-focus-inner,.swagger-ui [type=submit]::-moz-focus-inner,.swagger-ui button::-moz-focus-inner{border-style:none;padding:0}.swagger-ui [type=button]:-moz-focusring,.swagger-ui [type=reset]:-moz-focusring,.swagger-ui [type=submit]:-moz-focusring,.swagger-ui button:-moz-focusring{outline:1px dotted ButtonText}.swagger-ui fieldset{padding:.35em .75em .625em}.swagger-ui legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}.swagger-ui progress{display:inline-block;vertical-align:baseline}.swagger-ui textarea{overflow:auto}.swagger-ui [type=checkbox],.swagger-ui [type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}.swagger-ui [type=number]::-webkit-inner-spin-button,.swagger-ui [type=number]::-webkit-outer-spin-button{height:auto}.swagger-ui [type=search]{-webkit-appearance:textfield;outline-offset:-2px}.swagger-ui [type=search]::-webkit-search-cancel-button,.swagger-ui [type=search]::-webkit-search-decoration{-webkit-appearance:none}.swagger-ui ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.swagger-ui details,.swagger-ui menu{display:block}.swagger-ui summary{display:list-item}.swagger-ui canvas{display:inline-block}.swagger-ui [hidden],.swagger-ui template{display:none}.swagger-ui .debug *{outline:1px solid gold}.swagger-ui .debug-white *{outline:1px solid #fff}.swagger-ui .debug-black *{outline:1px solid #000}.swagger-ui .debug-grid{background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTRDOTY4N0U2N0VFMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTRDOTY4N0Q2N0VFMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NjcyQkQ3NjY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3NjcyQkQ3NzY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsBS+GMAAAAjSURBVHjaYvz//z8DLsD4gcGXiYEAGBIKGBne//fFpwAgwAB98AaF2pjlUQAAAABJRU5ErkJggg==) repeat 0 0}.swagger-ui .debug-grid-16{background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODYyRjhERDU2N0YyMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODYyRjhERDQ2N0YyMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NjcyQkQ3QTY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3NjcyQkQ3QjY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvCS01IAAABMSURBVHjaYmR4/5+BFPBfAMFm/MBgx8RAGWCn1AAmSg34Q6kBDKMGMDCwICeMIemF/5QawEipAWwUhwEjMDvbAWlWkvVBwu8vQIABAEwBCph8U6c0AAAAAElFTkSuQmCC) repeat 0 0}.swagger-ui .debug-grid-8-solid{background:#fff url(data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAAAAAD/4QMxaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzExMSA3OS4xNTgzMjUsIDIwMTUvMDkvMTAtMDE6MTA6MjAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1IChNYWNpbnRvc2gpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkIxMjI0OTczNjdCMzExRTZCMkJDRTI0MDgxMDAyMTcxIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkIxMjI0OTc0NjdCMzExRTZCMkJDRTI0MDgxMDAyMTcxIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QjEyMjQ5NzE2N0IzMTFFNkIyQkNFMjQwODEwMDIxNzEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QjEyMjQ5NzI2N0IzMTFFNkIyQkNFMjQwODEwMDIxNzEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7/7gAOQWRvYmUAZMAAAAAB/9sAhAAbGhopHSlBJiZBQi8vL0JHPz4+P0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHAR0pKTQmND8oKD9HPzU/R0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0f/wAARCAAIAAgDASIAAhEBAxEB/8QAWQABAQAAAAAAAAAAAAAAAAAAAAYBAQEAAAAAAAAAAAAAAAAAAAIEEAEBAAMBAAAAAAAAAAAAAAABADECA0ERAAEDBQAAAAAAAAAAAAAAAAARITFBUWESIv/aAAwDAQACEQMRAD8AoOnTV1QTD7JJshP3vSM3P//Z) repeat 0 0}.swagger-ui .debug-grid-16-solid{background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzY3MkJEN0U2N0M1MTFFNkIyQkNFMjQwODEwMDIxNzEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzY3MkJEN0Y2N0M1MTFFNkIyQkNFMjQwODEwMDIxNzEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NjcyQkQ3QzY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3NjcyQkQ3RDY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pve6J3kAAAAzSURBVHjaYvz//z8D0UDsMwMjSRoYP5Gq4SPNbRjVMEQ1fCRDg+in/6+J1AJUxsgAEGAA31BAJMS0GYEAAAAASUVORK5CYII=) repeat 0 0}.swagger-ui .border-box,.swagger-ui a,.swagger-ui article,.swagger-ui body,.swagger-ui code,.swagger-ui dd,.swagger-ui div,.swagger-ui dl,.swagger-ui dt,.swagger-ui fieldset,.swagger-ui footer,.swagger-ui form,.swagger-ui h1,.swagger-ui h2,.swagger-ui h3,.swagger-ui h4,.swagger-ui h5,.swagger-ui h6,.swagger-ui header,.swagger-ui html,.swagger-ui input[type=email],.swagger-ui input[type=number],.swagger-ui input[type=password],.swagger-ui input[type=tel],.swagger-ui input[type=text],.swagger-ui input[type=url],.swagger-ui legend,.swagger-ui li,.swagger-ui main,.swagger-ui ol,.swagger-ui p,.swagger-ui pre,.swagger-ui section,.swagger-ui table,.swagger-ui td,.swagger-ui textarea,.swagger-ui th,.swagger-ui tr,.swagger-ui ul{-webkit-box-sizing:border-box;box-sizing:border-box}.swagger-ui .aspect-ratio{height:0;position:relative}.swagger-ui .aspect-ratio--16x9{padding-bottom:56.25%}.swagger-ui .aspect-ratio--9x16{padding-bottom:177.77%}.swagger-ui .aspect-ratio--4x3{padding-bottom:75%}.swagger-ui .aspect-ratio--3x4{padding-bottom:133.33%}.swagger-ui .aspect-ratio--6x4{padding-bottom:66.6%}.swagger-ui .aspect-ratio--4x6{padding-bottom:150%}.swagger-ui .aspect-ratio--8x5{padding-bottom:62.5%}.swagger-ui .aspect-ratio--5x8{padding-bottom:160%}.swagger-ui .aspect-ratio--7x5{padding-bottom:71.42%}.swagger-ui .aspect-ratio--5x7{padding-bottom:140%}.swagger-ui .aspect-ratio--1x1{padding-bottom:100%}.swagger-ui .aspect-ratio--object{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%;z-index:100}@media screen and (min-width:30em){.swagger-ui .aspect-ratio-ns{height:0;position:relative}.swagger-ui .aspect-ratio--16x9-ns{padding-bottom:56.25%}.swagger-ui .aspect-ratio--9x16-ns{padding-bottom:177.77%}.swagger-ui .aspect-ratio--4x3-ns{padding-bottom:75%}.swagger-ui .aspect-ratio--3x4-ns{padding-bottom:133.33%}.swagger-ui .aspect-ratio--6x4-ns{padding-bottom:66.6%}.swagger-ui .aspect-ratio--4x6-ns{padding-bottom:150%}.swagger-ui .aspect-ratio--8x5-ns{padding-bottom:62.5%}.swagger-ui .aspect-ratio--5x8-ns{padding-bottom:160%}.swagger-ui .aspect-ratio--7x5-ns{padding-bottom:71.42%}.swagger-ui .aspect-ratio--5x7-ns{padding-bottom:140%}.swagger-ui .aspect-ratio--1x1-ns{padding-bottom:100%}.swagger-ui .aspect-ratio--object-ns{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%;z-index:100}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .aspect-ratio-m{height:0;position:relative}.swagger-ui .aspect-ratio--16x9-m{padding-bottom:56.25%}.swagger-ui .aspect-ratio--9x16-m{padding-bottom:177.77%}.swagger-ui .aspect-ratio--4x3-m{padding-bottom:75%}.swagger-ui .aspect-ratio--3x4-m{padding-bottom:133.33%}.swagger-ui .aspect-ratio--6x4-m{padding-bottom:66.6%}.swagger-ui .aspect-ratio--4x6-m{padding-bottom:150%}.swagger-ui .aspect-ratio--8x5-m{padding-bottom:62.5%}.swagger-ui .aspect-ratio--5x8-m{padding-bottom:160%}.swagger-ui .aspect-ratio--7x5-m{padding-bottom:71.42%}.swagger-ui .aspect-ratio--5x7-m{padding-bottom:140%}.swagger-ui .aspect-ratio--1x1-m{padding-bottom:100%}.swagger-ui .aspect-ratio--object-m{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%;z-index:100}}@media screen and (min-width:60em){.swagger-ui .aspect-ratio-l{height:0;position:relative}.swagger-ui .aspect-ratio--16x9-l{padding-bottom:56.25%}.swagger-ui .aspect-ratio--9x16-l{padding-bottom:177.77%}.swagger-ui .aspect-ratio--4x3-l{padding-bottom:75%}.swagger-ui .aspect-ratio--3x4-l{padding-bottom:133.33%}.swagger-ui .aspect-ratio--6x4-l{padding-bottom:66.6%}.swagger-ui .aspect-ratio--4x6-l{padding-bottom:150%}.swagger-ui .aspect-ratio--8x5-l{padding-bottom:62.5%}.swagger-ui .aspect-ratio--5x8-l{padding-bottom:160%}.swagger-ui .aspect-ratio--7x5-l{padding-bottom:71.42%}.swagger-ui .aspect-ratio--5x7-l{padding-bottom:140%}.swagger-ui .aspect-ratio--1x1-l{padding-bottom:100%}.swagger-ui .aspect-ratio--object-l{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%;z-index:100}}.swagger-ui img{max-width:100%}.swagger-ui .cover{background-size:cover!important}.swagger-ui .contain{background-size:contain!important}@media screen and (min-width:30em){.swagger-ui .cover-ns{background-size:cover!important}.swagger-ui .contain-ns{background-size:contain!important}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .cover-m{background-size:cover!important}.swagger-ui .contain-m{background-size:contain!important}}@media screen and (min-width:60em){.swagger-ui .cover-l{background-size:cover!important}.swagger-ui .contain-l{background-size:contain!important}}.swagger-ui .bg-center{background-position:50%;background-repeat:no-repeat}.swagger-ui .bg-top{background-position:top;background-repeat:no-repeat}.swagger-ui .bg-right{background-position:100%;background-repeat:no-repeat}.swagger-ui .bg-bottom{background-position:bottom;background-repeat:no-repeat}.swagger-ui .bg-left{background-position:0;background-repeat:no-repeat}@media screen and (min-width:30em){.swagger-ui .bg-center-ns{background-position:50%;background-repeat:no-repeat}.swagger-ui .bg-top-ns{background-position:top;background-repeat:no-repeat}.swagger-ui .bg-right-ns{background-position:100%;background-repeat:no-repeat}.swagger-ui .bg-bottom-ns{background-position:bottom;background-repeat:no-repeat}.swagger-ui .bg-left-ns{background-position:0;background-repeat:no-repeat}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .bg-center-m{background-position:50%;background-repeat:no-repeat}.swagger-ui .bg-top-m{background-position:top;background-repeat:no-repeat}.swagger-ui .bg-right-m{background-position:100%;background-repeat:no-repeat}.swagger-ui .bg-bottom-m{background-position:bottom;background-repeat:no-repeat}.swagger-ui .bg-left-m{background-position:0;background-repeat:no-repeat}}@media screen and (min-width:60em){.swagger-ui .bg-center-l{background-position:50%;background-repeat:no-repeat}.swagger-ui .bg-top-l{background-position:top;background-repeat:no-repeat}.swagger-ui .bg-right-l{background-position:100%;background-repeat:no-repeat}.swagger-ui .bg-bottom-l{background-position:bottom;background-repeat:no-repeat}.swagger-ui .bg-left-l{background-position:0;background-repeat:no-repeat}}.swagger-ui .outline{outline:1px solid}.swagger-ui .outline-transparent{outline:1px solid transparent}.swagger-ui .outline-0{outline:0}@media screen and (min-width:30em){.swagger-ui .outline-ns{outline:1px solid}.swagger-ui .outline-transparent-ns{outline:1px solid transparent}.swagger-ui .outline-0-ns{outline:0}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .outline-m{outline:1px solid}.swagger-ui .outline-transparent-m{outline:1px solid transparent}.swagger-ui .outline-0-m{outline:0}}@media screen and (min-width:60em){.swagger-ui .outline-l{outline:1px solid}.swagger-ui .outline-transparent-l{outline:1px solid transparent}.swagger-ui .outline-0-l{outline:0}}.swagger-ui .ba{border-style:solid;border-width:1px}.swagger-ui .bt{border-top-style:solid;border-top-width:1px}.swagger-ui .br{border-right-style:solid;border-right-width:1px}.swagger-ui .bb{border-bottom-style:solid;border-bottom-width:1px}.swagger-ui .bl{border-left-style:solid;border-left-width:1px}.swagger-ui .bn{border-style:none;border-width:0}@media screen and (min-width:30em){.swagger-ui .ba-ns{border-style:solid;border-width:1px}.swagger-ui .bt-ns{border-top-style:solid;border-top-width:1px}.swagger-ui .br-ns{border-right-style:solid;border-right-width:1px}.swagger-ui .bb-ns{border-bottom-style:solid;border-bottom-width:1px}.swagger-ui .bl-ns{border-left-style:solid;border-left-width:1px}.swagger-ui .bn-ns{border-style:none;border-width:0}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .ba-m{border-style:solid;border-width:1px}.swagger-ui .bt-m{border-top-style:solid;border-top-width:1px}.swagger-ui .br-m{border-right-style:solid;border-right-width:1px}.swagger-ui .bb-m{border-bottom-style:solid;border-bottom-width:1px}.swagger-ui .bl-m{border-left-style:solid;border-left-width:1px}.swagger-ui .bn-m{border-style:none;border-width:0}}@media screen and (min-width:60em){.swagger-ui .ba-l{border-style:solid;border-width:1px}.swagger-ui .bt-l{border-top-style:solid;border-top-width:1px}.swagger-ui .br-l{border-right-style:solid;border-right-width:1px}.swagger-ui .bb-l{border-bottom-style:solid;border-bottom-width:1px}.swagger-ui .bl-l{border-left-style:solid;border-left-width:1px}.swagger-ui .bn-l{border-style:none;border-width:0}}.swagger-ui .b--black{border-color:#000}.swagger-ui .b--near-black{border-color:#111}.swagger-ui .b--dark-gray{border-color:#333}.swagger-ui .b--mid-gray{border-color:#555}.swagger-ui .b--gray{border-color:#777}.swagger-ui .b--silver{border-color:#999}.swagger-ui .b--light-silver{border-color:#aaa}.swagger-ui .b--moon-gray{border-color:#ccc}.swagger-ui .b--light-gray{border-color:#eee}.swagger-ui .b--near-white{border-color:#f4f4f4}.swagger-ui .b--white{border-color:#fff}.swagger-ui .b--white-90{border-color:hsla(0,0%,100%,.9)}.swagger-ui .b--white-80{border-color:hsla(0,0%,100%,.8)}.swagger-ui .b--white-70{border-color:hsla(0,0%,100%,.7)}.swagger-ui .b--white-60{border-color:hsla(0,0%,100%,.6)}.swagger-ui .b--white-50{border-color:hsla(0,0%,100%,.5)}.swagger-ui .b--white-40{border-color:hsla(0,0%,100%,.4)}.swagger-ui .b--white-30{border-color:hsla(0,0%,100%,.3)}.swagger-ui .b--white-20{border-color:hsla(0,0%,100%,.2)}.swagger-ui .b--white-10{border-color:hsla(0,0%,100%,.1)}.swagger-ui .b--white-05{border-color:hsla(0,0%,100%,.05)}.swagger-ui .b--white-025{border-color:hsla(0,0%,100%,.025)}.swagger-ui .b--white-0125{border-color:hsla(0,0%,100%,.0125)}.swagger-ui .b--black-90{border-color:rgba(0,0,0,.9)}.swagger-ui .b--black-80{border-color:rgba(0,0,0,.8)}.swagger-ui .b--black-70{border-color:rgba(0,0,0,.7)}.swagger-ui .b--black-60{border-color:rgba(0,0,0,.6)}.swagger-ui .b--black-50{border-color:rgba(0,0,0,.5)}.swagger-ui .b--black-40{border-color:rgba(0,0,0,.4)}.swagger-ui .b--black-30{border-color:rgba(0,0,0,.3)}.swagger-ui .b--black-20{border-color:rgba(0,0,0,.2)}.swagger-ui .b--black-10{border-color:rgba(0,0,0,.1)}.swagger-ui .b--black-05{border-color:rgba(0,0,0,.05)}.swagger-ui .b--black-025{border-color:rgba(0,0,0,.025)}.swagger-ui .b--black-0125{border-color:rgba(0,0,0,.0125)}.swagger-ui .b--dark-red{border-color:#e7040f}.swagger-ui .b--red{border-color:#ff4136}.swagger-ui .b--light-red{border-color:#ff725c}.swagger-ui .b--orange{border-color:#ff6300}.swagger-ui .b--gold{border-color:#ffb700}.swagger-ui .b--yellow{border-color:gold}.swagger-ui .b--light-yellow{border-color:#fbf1a9}.swagger-ui .b--purple{border-color:#5e2ca5}.swagger-ui .b--light-purple{border-color:#a463f2}.swagger-ui .b--dark-pink{border-color:#d5008f}.swagger-ui .b--hot-pink{border-color:#ff41b4}.swagger-ui .b--pink{border-color:#ff80cc}.swagger-ui .b--light-pink{border-color:#ffa3d7}.swagger-ui .b--dark-green{border-color:#137752}.swagger-ui .b--green{border-color:#19a974}.swagger-ui .b--light-green{border-color:#9eebcf}.swagger-ui .b--navy{border-color:#001b44}.swagger-ui .b--dark-blue{border-color:#00449e}.swagger-ui .b--blue{border-color:#357edd}.swagger-ui .b--light-blue{border-color:#96ccff}.swagger-ui .b--lightest-blue{border-color:#cdecff}.swagger-ui .b--washed-blue{border-color:#f6fffe}.swagger-ui .b--washed-green{border-color:#e8fdf5}.swagger-ui .b--washed-yellow{border-color:#fffceb}.swagger-ui .b--washed-red{border-color:#ffdfdf}.swagger-ui .b--transparent{border-color:transparent}.swagger-ui .b--inherit{border-color:inherit}.swagger-ui .br0{border-radius:0}.swagger-ui .br1{border-radius:.125rem}.swagger-ui .br2{border-radius:.25rem}.swagger-ui .br3{border-radius:.5rem}.swagger-ui .br4{border-radius:1rem}.swagger-ui .br-100{border-radius:100%}.swagger-ui .br-pill{border-radius:9999px}.swagger-ui .br--bottom{border-top-left-radius:0;border-top-right-radius:0}.swagger-ui .br--top{border-bottom-left-radius:0;border-bottom-right-radius:0}.swagger-ui .br--right{border-bottom-left-radius:0;border-top-left-radius:0}.swagger-ui .br--left{border-bottom-right-radius:0;border-top-right-radius:0}@media screen and (min-width:30em){.swagger-ui .br0-ns{border-radius:0}.swagger-ui .br1-ns{border-radius:.125rem}.swagger-ui .br2-ns{border-radius:.25rem}.swagger-ui .br3-ns{border-radius:.5rem}.swagger-ui .br4-ns{border-radius:1rem}.swagger-ui .br-100-ns{border-radius:100%}.swagger-ui .br-pill-ns{border-radius:9999px}.swagger-ui .br--bottom-ns{border-top-left-radius:0;border-top-right-radius:0}.swagger-ui .br--top-ns{border-bottom-left-radius:0;border-bottom-right-radius:0}.swagger-ui .br--right-ns{border-bottom-left-radius:0;border-top-left-radius:0}.swagger-ui .br--left-ns{border-bottom-right-radius:0;border-top-right-radius:0}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .br0-m{border-radius:0}.swagger-ui .br1-m{border-radius:.125rem}.swagger-ui .br2-m{border-radius:.25rem}.swagger-ui .br3-m{border-radius:.5rem}.swagger-ui .br4-m{border-radius:1rem}.swagger-ui .br-100-m{border-radius:100%}.swagger-ui .br-pill-m{border-radius:9999px}.swagger-ui .br--bottom-m{border-top-left-radius:0;border-top-right-radius:0}.swagger-ui .br--top-m{border-bottom-left-radius:0;border-bottom-right-radius:0}.swagger-ui .br--right-m{border-bottom-left-radius:0;border-top-left-radius:0}.swagger-ui .br--left-m{border-bottom-right-radius:0;border-top-right-radius:0}}@media screen and (min-width:60em){.swagger-ui .br0-l{border-radius:0}.swagger-ui .br1-l{border-radius:.125rem}.swagger-ui .br2-l{border-radius:.25rem}.swagger-ui .br3-l{border-radius:.5rem}.swagger-ui .br4-l{border-radius:1rem}.swagger-ui .br-100-l{border-radius:100%}.swagger-ui .br-pill-l{border-radius:9999px}.swagger-ui .br--bottom-l{border-top-left-radius:0;border-top-right-radius:0}.swagger-ui .br--top-l{border-bottom-left-radius:0;border-bottom-right-radius:0}.swagger-ui .br--right-l{border-bottom-left-radius:0;border-top-left-radius:0}.swagger-ui .br--left-l{border-bottom-right-radius:0;border-top-right-radius:0}}.swagger-ui .b--dotted{border-style:dotted}.swagger-ui .b--dashed{border-style:dashed}.swagger-ui .b--solid{border-style:solid}.swagger-ui .b--none{border-style:none}@media screen and (min-width:30em){.swagger-ui .b--dotted-ns{border-style:dotted}.swagger-ui .b--dashed-ns{border-style:dashed}.swagger-ui .b--solid-ns{border-style:solid}.swagger-ui .b--none-ns{border-style:none}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .b--dotted-m{border-style:dotted}.swagger-ui .b--dashed-m{border-style:dashed}.swagger-ui .b--solid-m{border-style:solid}.swagger-ui .b--none-m{border-style:none}}@media screen and (min-width:60em){.swagger-ui .b--dotted-l{border-style:dotted}.swagger-ui .b--dashed-l{border-style:dashed}.swagger-ui .b--solid-l{border-style:solid}.swagger-ui .b--none-l{border-style:none}}.swagger-ui .bw0{border-width:0}.swagger-ui .bw1{border-width:.125rem}.swagger-ui .bw2{border-width:.25rem}.swagger-ui .bw3{border-width:.5rem}.swagger-ui .bw4{border-width:1rem}.swagger-ui .bw5{border-width:2rem}.swagger-ui .bt-0{border-top-width:0}.swagger-ui .br-0{border-right-width:0}.swagger-ui .bb-0{border-bottom-width:0}.swagger-ui .bl-0{border-left-width:0}@media screen and (min-width:30em){.swagger-ui .bw0-ns{border-width:0}.swagger-ui .bw1-ns{border-width:.125rem}.swagger-ui .bw2-ns{border-width:.25rem}.swagger-ui .bw3-ns{border-width:.5rem}.swagger-ui .bw4-ns{border-width:1rem}.swagger-ui .bw5-ns{border-width:2rem}.swagger-ui .bt-0-ns{border-top-width:0}.swagger-ui .br-0-ns{border-right-width:0}.swagger-ui .bb-0-ns{border-bottom-width:0}.swagger-ui .bl-0-ns{border-left-width:0}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .bw0-m{border-width:0}.swagger-ui .bw1-m{border-width:.125rem}.swagger-ui .bw2-m{border-width:.25rem}.swagger-ui .bw3-m{border-width:.5rem}.swagger-ui .bw4-m{border-width:1rem}.swagger-ui .bw5-m{border-width:2rem}.swagger-ui .bt-0-m{border-top-width:0}.swagger-ui .br-0-m{border-right-width:0}.swagger-ui .bb-0-m{border-bottom-width:0}.swagger-ui .bl-0-m{border-left-width:0}}@media screen and (min-width:60em){.swagger-ui .bw0-l{border-width:0}.swagger-ui .bw1-l{border-width:.125rem}.swagger-ui .bw2-l{border-width:.25rem}.swagger-ui .bw3-l{border-width:.5rem}.swagger-ui .bw4-l{border-width:1rem}.swagger-ui .bw5-l{border-width:2rem}.swagger-ui .bt-0-l{border-top-width:0}.swagger-ui .br-0-l{border-right-width:0}.swagger-ui .bb-0-l{border-bottom-width:0}.swagger-ui .bl-0-l{border-left-width:0}}.swagger-ui .shadow-1{-webkit-box-shadow:0 0 4px 2px rgba(0,0,0,.2);box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-2{-webkit-box-shadow:0 0 8px 2px rgba(0,0,0,.2);box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-3{-webkit-box-shadow:2px 2px 4px 2px rgba(0,0,0,.2);box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-4{-webkit-box-shadow:2px 2px 8px 0 rgba(0,0,0,.2);box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.swagger-ui .shadow-5{-webkit-box-shadow:4px 4px 8px 0 rgba(0,0,0,.2);box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}@media screen and (min-width:30em){.swagger-ui .shadow-1-ns{-webkit-box-shadow:0 0 4px 2px rgba(0,0,0,.2);box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-2-ns{-webkit-box-shadow:0 0 8px 2px rgba(0,0,0,.2);box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-3-ns{-webkit-box-shadow:2px 2px 4px 2px rgba(0,0,0,.2);box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-4-ns{-webkit-box-shadow:2px 2px 8px 0 rgba(0,0,0,.2);box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.swagger-ui .shadow-5-ns{-webkit-box-shadow:4px 4px 8px 0 rgba(0,0,0,.2);box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .shadow-1-m{-webkit-box-shadow:0 0 4px 2px rgba(0,0,0,.2);box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-2-m{-webkit-box-shadow:0 0 8px 2px rgba(0,0,0,.2);box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-3-m{-webkit-box-shadow:2px 2px 4px 2px rgba(0,0,0,.2);box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-4-m{-webkit-box-shadow:2px 2px 8px 0 rgba(0,0,0,.2);box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.swagger-ui .shadow-5-m{-webkit-box-shadow:4px 4px 8px 0 rgba(0,0,0,.2);box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}}@media screen and (min-width:60em){.swagger-ui .shadow-1-l{-webkit-box-shadow:0 0 4px 2px rgba(0,0,0,.2);box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-2-l{-webkit-box-shadow:0 0 8px 2px rgba(0,0,0,.2);box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-3-l{-webkit-box-shadow:2px 2px 4px 2px rgba(0,0,0,.2);box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-4-l{-webkit-box-shadow:2px 2px 8px 0 rgba(0,0,0,.2);box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.swagger-ui .shadow-5-l{-webkit-box-shadow:4px 4px 8px 0 rgba(0,0,0,.2);box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}}.swagger-ui .pre{overflow-x:auto;overflow-y:hidden;overflow:scroll}.swagger-ui .top-0{top:0}.swagger-ui .right-0{right:0}.swagger-ui .bottom-0{bottom:0}.swagger-ui .left-0{left:0}.swagger-ui .top-1{top:1rem}.swagger-ui .right-1{right:1rem}.swagger-ui .bottom-1{bottom:1rem}.swagger-ui .left-1{left:1rem}.swagger-ui .top-2{top:2rem}.swagger-ui .right-2{right:2rem}.swagger-ui .bottom-2{bottom:2rem}.swagger-ui .left-2{left:2rem}.swagger-ui .top--1{top:-1rem}.swagger-ui .right--1{right:-1rem}.swagger-ui .bottom--1{bottom:-1rem}.swagger-ui .left--1{left:-1rem}.swagger-ui .top--2{top:-2rem}.swagger-ui .right--2{right:-2rem}.swagger-ui .bottom--2{bottom:-2rem}.swagger-ui .left--2{left:-2rem}.swagger-ui .absolute--fill{bottom:0;left:0;right:0;top:0}@media screen and (min-width:30em){.swagger-ui .top-0-ns{top:0}.swagger-ui .left-0-ns{left:0}.swagger-ui .right-0-ns{right:0}.swagger-ui .bottom-0-ns{bottom:0}.swagger-ui .top-1-ns{top:1rem}.swagger-ui .left-1-ns{left:1rem}.swagger-ui .right-1-ns{right:1rem}.swagger-ui .bottom-1-ns{bottom:1rem}.swagger-ui .top-2-ns{top:2rem}.swagger-ui .left-2-ns{left:2rem}.swagger-ui .right-2-ns{right:2rem}.swagger-ui .bottom-2-ns{bottom:2rem}.swagger-ui .top--1-ns{top:-1rem}.swagger-ui .right--1-ns{right:-1rem}.swagger-ui .bottom--1-ns{bottom:-1rem}.swagger-ui .left--1-ns{left:-1rem}.swagger-ui .top--2-ns{top:-2rem}.swagger-ui .right--2-ns{right:-2rem}.swagger-ui .bottom--2-ns{bottom:-2rem}.swagger-ui .left--2-ns{left:-2rem}.swagger-ui .absolute--fill-ns{bottom:0;left:0;right:0;top:0}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .top-0-m{top:0}.swagger-ui .left-0-m{left:0}.swagger-ui .right-0-m{right:0}.swagger-ui .bottom-0-m{bottom:0}.swagger-ui .top-1-m{top:1rem}.swagger-ui .left-1-m{left:1rem}.swagger-ui .right-1-m{right:1rem}.swagger-ui .bottom-1-m{bottom:1rem}.swagger-ui .top-2-m{top:2rem}.swagger-ui .left-2-m{left:2rem}.swagger-ui .right-2-m{right:2rem}.swagger-ui .bottom-2-m{bottom:2rem}.swagger-ui .top--1-m{top:-1rem}.swagger-ui .right--1-m{right:-1rem}.swagger-ui .bottom--1-m{bottom:-1rem}.swagger-ui .left--1-m{left:-1rem}.swagger-ui .top--2-m{top:-2rem}.swagger-ui .right--2-m{right:-2rem}.swagger-ui .bottom--2-m{bottom:-2rem}.swagger-ui .left--2-m{left:-2rem}.swagger-ui .absolute--fill-m{bottom:0;left:0;right:0;top:0}}@media screen and (min-width:60em){.swagger-ui .top-0-l{top:0}.swagger-ui .left-0-l{left:0}.swagger-ui .right-0-l{right:0}.swagger-ui .bottom-0-l{bottom:0}.swagger-ui .top-1-l{top:1rem}.swagger-ui .left-1-l{left:1rem}.swagger-ui .right-1-l{right:1rem}.swagger-ui .bottom-1-l{bottom:1rem}.swagger-ui .top-2-l{top:2rem}.swagger-ui .left-2-l{left:2rem}.swagger-ui .right-2-l{right:2rem}.swagger-ui .bottom-2-l{bottom:2rem}.swagger-ui .top--1-l{top:-1rem}.swagger-ui .right--1-l{right:-1rem}.swagger-ui .bottom--1-l{bottom:-1rem}.swagger-ui .left--1-l{left:-1rem}.swagger-ui .top--2-l{top:-2rem}.swagger-ui .right--2-l{right:-2rem}.swagger-ui .bottom--2-l{bottom:-2rem}.swagger-ui .left--2-l{left:-2rem}.swagger-ui .absolute--fill-l{bottom:0;left:0;right:0;top:0}}.swagger-ui .cf::after,.swagger-ui .cf::before{content:" ";display:table}.swagger-ui .cf::after{clear:both}.swagger-ui .cf{*zoom:1}.swagger-ui .cl{clear:left}.swagger-ui .cr{clear:right}.swagger-ui .cb{clear:both}.swagger-ui .cn{clear:none}@media screen and (min-width:30em){.swagger-ui .cl-ns{clear:left}.swagger-ui .cr-ns{clear:right}.swagger-ui .cb-ns{clear:both}.swagger-ui .cn-ns{clear:none}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .cl-m{clear:left}.swagger-ui .cr-m{clear:right}.swagger-ui .cb-m{clear:both}.swagger-ui .cn-m{clear:none}}@media screen and (min-width:60em){.swagger-ui .cl-l{clear:left}.swagger-ui .cr-l{clear:right}.swagger-ui .cb-l{clear:both}.swagger-ui .cn-l{clear:none}}.swagger-ui .flex{display:-webkit-box;display:-ms-flexbox;display:flex}.swagger-ui .inline-flex{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.swagger-ui .flex-auto{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0;min-width:0}.swagger-ui .flex-none{-webkit-box-flex:0;-ms-flex:none;flex:none}.swagger-ui .flex-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.swagger-ui .flex-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.swagger-ui .flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.swagger-ui .flex-nowrap{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.swagger-ui .flex-wrap-reverse{-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}.swagger-ui .flex-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.swagger-ui .flex-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.swagger-ui .items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.swagger-ui .items-end{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.swagger-ui .items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.swagger-ui .items-baseline{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.swagger-ui .items-stretch{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.swagger-ui .self-start{-ms-flex-item-align:start;align-self:flex-start}.swagger-ui .self-end{-ms-flex-item-align:end;align-self:flex-end}.swagger-ui .self-center{-ms-flex-item-align:center;align-self:center}.swagger-ui .self-baseline{-ms-flex-item-align:baseline;align-self:baseline}.swagger-ui .self-stretch{-ms-flex-item-align:stretch;align-self:stretch}.swagger-ui .justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.swagger-ui .justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.swagger-ui .justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.swagger-ui .justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.swagger-ui .justify-around{-ms-flex-pack:distribute;justify-content:space-around}.swagger-ui .content-start{-ms-flex-line-pack:start;align-content:flex-start}.swagger-ui .content-end{-ms-flex-line-pack:end;align-content:flex-end}.swagger-ui .content-center{-ms-flex-line-pack:center;align-content:center}.swagger-ui .content-between{-ms-flex-line-pack:justify;align-content:space-between}.swagger-ui .content-around{-ms-flex-line-pack:distribute;align-content:space-around}.swagger-ui .content-stretch{-ms-flex-line-pack:stretch;align-content:stretch}.swagger-ui .order-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.swagger-ui .order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.swagger-ui .order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.swagger-ui .order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.swagger-ui .order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.swagger-ui .order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.swagger-ui .order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.swagger-ui .order-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.swagger-ui .order-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.swagger-ui .order-last{-webkit-box-ordinal-group:100000;-ms-flex-order:99999;order:99999}.swagger-ui .flex-grow-0{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.swagger-ui .flex-grow-1{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.swagger-ui .flex-shrink-0{-ms-flex-negative:0;flex-shrink:0}.swagger-ui .flex-shrink-1{-ms-flex-negative:1;flex-shrink:1}@media screen and (min-width:30em){.swagger-ui .flex-ns{display:-webkit-box;display:-ms-flexbox;display:flex}.swagger-ui .inline-flex-ns{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.swagger-ui .flex-auto-ns{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0;min-width:0}.swagger-ui .flex-none-ns{-webkit-box-flex:0;-ms-flex:none;flex:none}.swagger-ui .flex-column-ns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.swagger-ui .flex-row-ns{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.swagger-ui .flex-wrap-ns{-ms-flex-wrap:wrap;flex-wrap:wrap}.swagger-ui .flex-nowrap-ns{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.swagger-ui .flex-wrap-reverse-ns{-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}.swagger-ui .flex-column-reverse-ns{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.swagger-ui .flex-row-reverse-ns{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.swagger-ui .items-start-ns{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.swagger-ui .items-end-ns{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.swagger-ui .items-center-ns{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.swagger-ui .items-baseline-ns{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.swagger-ui .items-stretch-ns{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.swagger-ui .self-start-ns{-ms-flex-item-align:start;align-self:flex-start}.swagger-ui .self-end-ns{-ms-flex-item-align:end;align-self:flex-end}.swagger-ui .self-center-ns{-ms-flex-item-align:center;align-self:center}.swagger-ui .self-baseline-ns{-ms-flex-item-align:baseline;align-self:baseline}.swagger-ui .self-stretch-ns{-ms-flex-item-align:stretch;align-self:stretch}.swagger-ui .justify-start-ns{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.swagger-ui .justify-end-ns{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.swagger-ui .justify-center-ns{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.swagger-ui .justify-between-ns{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.swagger-ui .justify-around-ns{-ms-flex-pack:distribute;justify-content:space-around}.swagger-ui .content-start-ns{-ms-flex-line-pack:start;align-content:flex-start}.swagger-ui .content-end-ns{-ms-flex-line-pack:end;align-content:flex-end}.swagger-ui .content-center-ns{-ms-flex-line-pack:center;align-content:center}.swagger-ui .content-between-ns{-ms-flex-line-pack:justify;align-content:space-between}.swagger-ui .content-around-ns{-ms-flex-line-pack:distribute;align-content:space-around}.swagger-ui .content-stretch-ns{-ms-flex-line-pack:stretch;align-content:stretch}.swagger-ui .order-0-ns{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.swagger-ui .order-1-ns{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.swagger-ui .order-2-ns{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.swagger-ui .order-3-ns{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.swagger-ui .order-4-ns{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.swagger-ui .order-5-ns{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.swagger-ui .order-6-ns{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.swagger-ui .order-7-ns{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.swagger-ui .order-8-ns{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.swagger-ui .order-last-ns{-webkit-box-ordinal-group:100000;-ms-flex-order:99999;order:99999}.swagger-ui .flex-grow-0-ns{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.swagger-ui .flex-grow-1-ns{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.swagger-ui .flex-shrink-0-ns{-ms-flex-negative:0;flex-shrink:0}.swagger-ui .flex-shrink-1-ns{-ms-flex-negative:1;flex-shrink:1}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .flex-m{display:-webkit-box;display:-ms-flexbox;display:flex}.swagger-ui .inline-flex-m{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.swagger-ui .flex-auto-m{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0;min-width:0}.swagger-ui .flex-none-m{-webkit-box-flex:0;-ms-flex:none;flex:none}.swagger-ui .flex-column-m{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.swagger-ui .flex-row-m{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.swagger-ui .flex-wrap-m{-ms-flex-wrap:wrap;flex-wrap:wrap}.swagger-ui .flex-nowrap-m{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.swagger-ui .flex-wrap-reverse-m{-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}.swagger-ui .flex-column-reverse-m{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.swagger-ui .flex-row-reverse-m{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.swagger-ui .items-start-m{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.swagger-ui .items-end-m{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.swagger-ui .items-center-m{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.swagger-ui .items-baseline-m{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.swagger-ui .items-stretch-m{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.swagger-ui .self-start-m{-ms-flex-item-align:start;align-self:flex-start}.swagger-ui .self-end-m{-ms-flex-item-align:end;align-self:flex-end}.swagger-ui .self-center-m{-ms-flex-item-align:center;align-self:center}.swagger-ui .self-baseline-m{-ms-flex-item-align:baseline;align-self:baseline}.swagger-ui .self-stretch-m{-ms-flex-item-align:stretch;align-self:stretch}.swagger-ui .justify-start-m{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.swagger-ui .justify-end-m{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.swagger-ui .justify-center-m{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.swagger-ui .justify-between-m{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.swagger-ui .justify-around-m{-ms-flex-pack:distribute;justify-content:space-around}.swagger-ui .content-start-m{-ms-flex-line-pack:start;align-content:flex-start}.swagger-ui .content-end-m{-ms-flex-line-pack:end;align-content:flex-end}.swagger-ui .content-center-m{-ms-flex-line-pack:center;align-content:center}.swagger-ui .content-between-m{-ms-flex-line-pack:justify;align-content:space-between}.swagger-ui .content-around-m{-ms-flex-line-pack:distribute;align-content:space-around}.swagger-ui .content-stretch-m{-ms-flex-line-pack:stretch;align-content:stretch}.swagger-ui .order-0-m{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.swagger-ui .order-1-m{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.swagger-ui .order-2-m{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.swagger-ui .order-3-m{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.swagger-ui .order-4-m{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.swagger-ui .order-5-m{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.swagger-ui .order-6-m{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.swagger-ui .order-7-m{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.swagger-ui .order-8-m{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.swagger-ui .order-last-m{-webkit-box-ordinal-group:100000;-ms-flex-order:99999;order:99999}.swagger-ui .flex-grow-0-m{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.swagger-ui .flex-grow-1-m{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.swagger-ui .flex-shrink-0-m{-ms-flex-negative:0;flex-shrink:0}.swagger-ui .flex-shrink-1-m{-ms-flex-negative:1;flex-shrink:1}}@media screen and (min-width:60em){.swagger-ui .flex-l{display:-webkit-box;display:-ms-flexbox;display:flex}.swagger-ui .inline-flex-l{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.swagger-ui .flex-auto-l{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0;min-width:0}.swagger-ui .flex-none-l{-webkit-box-flex:0;-ms-flex:none;flex:none}.swagger-ui .flex-column-l{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.swagger-ui .flex-row-l{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.swagger-ui .flex-wrap-l{-ms-flex-wrap:wrap;flex-wrap:wrap}.swagger-ui .flex-nowrap-l{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.swagger-ui .flex-wrap-reverse-l{-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}.swagger-ui .flex-column-reverse-l{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.swagger-ui .flex-row-reverse-l{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.swagger-ui .items-start-l{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.swagger-ui .items-end-l{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.swagger-ui .items-center-l{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.swagger-ui .items-baseline-l{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.swagger-ui .items-stretch-l{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.swagger-ui .self-start-l{-ms-flex-item-align:start;align-self:flex-start}.swagger-ui .self-end-l{-ms-flex-item-align:end;align-self:flex-end}.swagger-ui .self-center-l{-ms-flex-item-align:center;align-self:center}.swagger-ui .self-baseline-l{-ms-flex-item-align:baseline;align-self:baseline}.swagger-ui .self-stretch-l{-ms-flex-item-align:stretch;align-self:stretch}.swagger-ui .justify-start-l{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.swagger-ui .justify-end-l{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.swagger-ui .justify-center-l{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.swagger-ui .justify-between-l{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.swagger-ui .justify-around-l{-ms-flex-pack:distribute;justify-content:space-around}.swagger-ui .content-start-l{-ms-flex-line-pack:start;align-content:flex-start}.swagger-ui .content-end-l{-ms-flex-line-pack:end;align-content:flex-end}.swagger-ui .content-center-l{-ms-flex-line-pack:center;align-content:center}.swagger-ui .content-between-l{-ms-flex-line-pack:justify;align-content:space-between}.swagger-ui .content-around-l{-ms-flex-line-pack:distribute;align-content:space-around}.swagger-ui .content-stretch-l{-ms-flex-line-pack:stretch;align-content:stretch}.swagger-ui .order-0-l{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.swagger-ui .order-1-l{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.swagger-ui .order-2-l{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.swagger-ui .order-3-l{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.swagger-ui .order-4-l{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.swagger-ui .order-5-l{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.swagger-ui .order-6-l{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.swagger-ui .order-7-l{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.swagger-ui .order-8-l{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.swagger-ui .order-last-l{-webkit-box-ordinal-group:100000;-ms-flex-order:99999;order:99999}.swagger-ui .flex-grow-0-l{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.swagger-ui .flex-grow-1-l{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.swagger-ui .flex-shrink-0-l{-ms-flex-negative:0;flex-shrink:0}.swagger-ui .flex-shrink-1-l{-ms-flex-negative:1;flex-shrink:1}}.swagger-ui .dn{display:none}.swagger-ui .di{display:inline}.swagger-ui .db{display:block}.swagger-ui .dib{display:inline-block}.swagger-ui .dit{display:inline-table}.swagger-ui .dt{display:table}.swagger-ui .dtc{display:table-cell}.swagger-ui .dt-row{display:table-row}.swagger-ui .dt-row-group{display:table-row-group}.swagger-ui .dt-column{display:table-column}.swagger-ui .dt-column-group{display:table-column-group}.swagger-ui .dt--fixed{table-layout:fixed;width:100%}@media screen and (min-width:30em){.swagger-ui .dn-ns{display:none}.swagger-ui .di-ns{display:inline}.swagger-ui .db-ns{display:block}.swagger-ui .dib-ns{display:inline-block}.swagger-ui .dit-ns{display:inline-table}.swagger-ui .dt-ns{display:table}.swagger-ui .dtc-ns{display:table-cell}.swagger-ui .dt-row-ns{display:table-row}.swagger-ui .dt-row-group-ns{display:table-row-group}.swagger-ui .dt-column-ns{display:table-column}.swagger-ui .dt-column-group-ns{display:table-column-group}.swagger-ui .dt--fixed-ns{table-layout:fixed;width:100%}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .dn-m{display:none}.swagger-ui .di-m{display:inline}.swagger-ui .db-m{display:block}.swagger-ui .dib-m{display:inline-block}.swagger-ui .dit-m{display:inline-table}.swagger-ui .dt-m{display:table}.swagger-ui .dtc-m{display:table-cell}.swagger-ui .dt-row-m{display:table-row}.swagger-ui .dt-row-group-m{display:table-row-group}.swagger-ui .dt-column-m{display:table-column}.swagger-ui .dt-column-group-m{display:table-column-group}.swagger-ui .dt--fixed-m{table-layout:fixed;width:100%}}@media screen and (min-width:60em){.swagger-ui .dn-l{display:none}.swagger-ui .di-l{display:inline}.swagger-ui .db-l{display:block}.swagger-ui .dib-l{display:inline-block}.swagger-ui .dit-l{display:inline-table}.swagger-ui .dt-l{display:table}.swagger-ui .dtc-l{display:table-cell}.swagger-ui .dt-row-l{display:table-row}.swagger-ui .dt-row-group-l{display:table-row-group}.swagger-ui .dt-column-l{display:table-column}.swagger-ui .dt-column-group-l{display:table-column-group}.swagger-ui .dt--fixed-l{table-layout:fixed;width:100%}}.swagger-ui .fl{_display:inline;float:left}.swagger-ui .fr{_display:inline;float:right}.swagger-ui .fn{float:none}@media screen and (min-width:30em){.swagger-ui .fl-ns{_display:inline;float:left}.swagger-ui .fr-ns{_display:inline;float:right}.swagger-ui .fn-ns{float:none}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .fl-m{_display:inline;float:left}.swagger-ui .fr-m{_display:inline;float:right}.swagger-ui .fn-m{float:none}}@media screen and (min-width:60em){.swagger-ui .fl-l{_display:inline;float:left}.swagger-ui .fr-l{_display:inline;float:right}.swagger-ui .fn-l{float:none}}.swagger-ui .sans-serif{font-family:-apple-system,BlinkMacSystemFont,avenir next,avenir,helvetica,helvetica neue,ubuntu,roboto,noto,segoe ui,arial,sans-serif}.swagger-ui .serif{font-family:georgia,serif}.swagger-ui .system-sans-serif{font-family:sans-serif}.swagger-ui .system-serif{font-family:serif}.swagger-ui .code,.swagger-ui code{font-family:Consolas,monaco,monospace}.swagger-ui .courier{font-family:Courier Next,courier,monospace}.swagger-ui .helvetica{font-family:helvetica neue,helvetica,sans-serif}.swagger-ui .avenir{font-family:avenir next,avenir,sans-serif}.swagger-ui .athelas{font-family:athelas,georgia,serif}.swagger-ui .georgia{font-family:georgia,serif}.swagger-ui .times{font-family:times,serif}.swagger-ui .bodoni{font-family:Bodoni MT,serif}.swagger-ui .calisto{font-family:Calisto MT,serif}.swagger-ui .garamond{font-family:garamond,serif}.swagger-ui .baskerville{font-family:baskerville,serif}.swagger-ui .i{font-style:italic}.swagger-ui .fs-normal{font-style:normal}@media screen and (min-width:30em){.swagger-ui .i-ns{font-style:italic}.swagger-ui .fs-normal-ns{font-style:normal}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .i-m{font-style:italic}.swagger-ui .fs-normal-m{font-style:normal}}@media screen and (min-width:60em){.swagger-ui .i-l{font-style:italic}.swagger-ui .fs-normal-l{font-style:normal}}.swagger-ui .normal{font-weight:400}.swagger-ui .b{font-weight:700}.swagger-ui .fw1{font-weight:100}.swagger-ui .fw2{font-weight:200}.swagger-ui .fw3{font-weight:300}.swagger-ui .fw4{font-weight:400}.swagger-ui .fw5{font-weight:500}.swagger-ui .fw6{font-weight:600}.swagger-ui .fw7{font-weight:700}.swagger-ui .fw8{font-weight:800}.swagger-ui .fw9{font-weight:900}@media screen and (min-width:30em){.swagger-ui .normal-ns{font-weight:400}.swagger-ui .b-ns{font-weight:700}.swagger-ui .fw1-ns{font-weight:100}.swagger-ui .fw2-ns{font-weight:200}.swagger-ui .fw3-ns{font-weight:300}.swagger-ui .fw4-ns{font-weight:400}.swagger-ui .fw5-ns{font-weight:500}.swagger-ui .fw6-ns{font-weight:600}.swagger-ui .fw7-ns{font-weight:700}.swagger-ui .fw8-ns{font-weight:800}.swagger-ui .fw9-ns{font-weight:900}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .normal-m{font-weight:400}.swagger-ui .b-m{font-weight:700}.swagger-ui .fw1-m{font-weight:100}.swagger-ui .fw2-m{font-weight:200}.swagger-ui .fw3-m{font-weight:300}.swagger-ui .fw4-m{font-weight:400}.swagger-ui .fw5-m{font-weight:500}.swagger-ui .fw6-m{font-weight:600}.swagger-ui .fw7-m{font-weight:700}.swagger-ui .fw8-m{font-weight:800}.swagger-ui .fw9-m{font-weight:900}}@media screen and (min-width:60em){.swagger-ui .normal-l{font-weight:400}.swagger-ui .b-l{font-weight:700}.swagger-ui .fw1-l{font-weight:100}.swagger-ui .fw2-l{font-weight:200}.swagger-ui .fw3-l{font-weight:300}.swagger-ui .fw4-l{font-weight:400}.swagger-ui .fw5-l{font-weight:500}.swagger-ui .fw6-l{font-weight:600}.swagger-ui .fw7-l{font-weight:700}.swagger-ui .fw8-l{font-weight:800}.swagger-ui .fw9-l{font-weight:900}}.swagger-ui .input-reset{-webkit-appearance:none;-moz-appearance:none}.swagger-ui .button-reset::-moz-focus-inner,.swagger-ui .input-reset::-moz-focus-inner{border:0;padding:0}.swagger-ui .h1{height:1rem}.swagger-ui .h2{height:2rem}.swagger-ui .h3{height:4rem}.swagger-ui .h4{height:8rem}.swagger-ui .h5{height:16rem}.swagger-ui .h-25{height:25%}.swagger-ui .h-50{height:50%}.swagger-ui .h-75{height:75%}.swagger-ui .h-100{height:100%}.swagger-ui .min-h-100{min-height:100%}.swagger-ui .vh-25{height:25vh}.swagger-ui .vh-50{height:50vh}.swagger-ui .vh-75{height:75vh}.swagger-ui .vh-100{height:100vh}.swagger-ui .min-vh-100{min-height:100vh}.swagger-ui .h-auto{height:auto}.swagger-ui .h-inherit{height:inherit}@media screen and (min-width:30em){.swagger-ui .h1-ns{height:1rem}.swagger-ui .h2-ns{height:2rem}.swagger-ui .h3-ns{height:4rem}.swagger-ui .h4-ns{height:8rem}.swagger-ui .h5-ns{height:16rem}.swagger-ui .h-25-ns{height:25%}.swagger-ui .h-50-ns{height:50%}.swagger-ui .h-75-ns{height:75%}.swagger-ui .h-100-ns{height:100%}.swagger-ui .min-h-100-ns{min-height:100%}.swagger-ui .vh-25-ns{height:25vh}.swagger-ui .vh-50-ns{height:50vh}.swagger-ui .vh-75-ns{height:75vh}.swagger-ui .vh-100-ns{height:100vh}.swagger-ui .min-vh-100-ns{min-height:100vh}.swagger-ui .h-auto-ns{height:auto}.swagger-ui .h-inherit-ns{height:inherit}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .h1-m{height:1rem}.swagger-ui .h2-m{height:2rem}.swagger-ui .h3-m{height:4rem}.swagger-ui .h4-m{height:8rem}.swagger-ui .h5-m{height:16rem}.swagger-ui .h-25-m{height:25%}.swagger-ui .h-50-m{height:50%}.swagger-ui .h-75-m{height:75%}.swagger-ui .h-100-m{height:100%}.swagger-ui .min-h-100-m{min-height:100%}.swagger-ui .vh-25-m{height:25vh}.swagger-ui .vh-50-m{height:50vh}.swagger-ui .vh-75-m{height:75vh}.swagger-ui .vh-100-m{height:100vh}.swagger-ui .min-vh-100-m{min-height:100vh}.swagger-ui .h-auto-m{height:auto}.swagger-ui .h-inherit-m{height:inherit}}@media screen and (min-width:60em){.swagger-ui .h1-l{height:1rem}.swagger-ui .h2-l{height:2rem}.swagger-ui .h3-l{height:4rem}.swagger-ui .h4-l{height:8rem}.swagger-ui .h5-l{height:16rem}.swagger-ui .h-25-l{height:25%}.swagger-ui .h-50-l{height:50%}.swagger-ui .h-75-l{height:75%}.swagger-ui .h-100-l{height:100%}.swagger-ui .min-h-100-l{min-height:100%}.swagger-ui .vh-25-l{height:25vh}.swagger-ui .vh-50-l{height:50vh}.swagger-ui .vh-75-l{height:75vh}.swagger-ui .vh-100-l{height:100vh}.swagger-ui .min-vh-100-l{min-height:100vh}.swagger-ui .h-auto-l{height:auto}.swagger-ui .h-inherit-l{height:inherit}}.swagger-ui .tracked{letter-spacing:.1em}.swagger-ui .tracked-tight{letter-spacing:-.05em}.swagger-ui .tracked-mega{letter-spacing:.25em}@media screen and (min-width:30em){.swagger-ui .tracked-ns{letter-spacing:.1em}.swagger-ui .tracked-tight-ns{letter-spacing:-.05em}.swagger-ui .tracked-mega-ns{letter-spacing:.25em}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .tracked-m{letter-spacing:.1em}.swagger-ui .tracked-tight-m{letter-spacing:-.05em}.swagger-ui .tracked-mega-m{letter-spacing:.25em}}@media screen and (min-width:60em){.swagger-ui .tracked-l{letter-spacing:.1em}.swagger-ui .tracked-tight-l{letter-spacing:-.05em}.swagger-ui .tracked-mega-l{letter-spacing:.25em}}.swagger-ui .lh-solid{line-height:1}.swagger-ui .lh-title{line-height:1.25}.swagger-ui .lh-copy{line-height:1.5}@media screen and (min-width:30em){.swagger-ui .lh-solid-ns{line-height:1}.swagger-ui .lh-title-ns{line-height:1.25}.swagger-ui .lh-copy-ns{line-height:1.5}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .lh-solid-m{line-height:1}.swagger-ui .lh-title-m{line-height:1.25}.swagger-ui .lh-copy-m{line-height:1.5}}@media screen and (min-width:60em){.swagger-ui .lh-solid-l{line-height:1}.swagger-ui .lh-title-l{line-height:1.25}.swagger-ui .lh-copy-l{line-height:1.5}}.swagger-ui .link{text-decoration:none}.swagger-ui .link,.swagger-ui .link:active,.swagger-ui .link:focus,.swagger-ui .link:hover,.swagger-ui .link:link,.swagger-ui .link:visited{-webkit-transition:color .15s ease-in;transition:color .15s ease-in}.swagger-ui .link:focus{outline:1px dotted currentColor}.swagger-ui .list{list-style-type:none}.swagger-ui .mw-100{max-width:100%}.swagger-ui .mw1{max-width:1rem}.swagger-ui .mw2{max-width:2rem}.swagger-ui .mw3{max-width:4rem}.swagger-ui .mw4{max-width:8rem}.swagger-ui .mw5{max-width:16rem}.swagger-ui .mw6{max-width:32rem}.swagger-ui .mw7{max-width:48rem}.swagger-ui .mw8{max-width:64rem}.swagger-ui .mw9{max-width:96rem}.swagger-ui .mw-none{max-width:none}@media screen and (min-width:30em){.swagger-ui .mw-100-ns{max-width:100%}.swagger-ui .mw1-ns{max-width:1rem}.swagger-ui .mw2-ns{max-width:2rem}.swagger-ui .mw3-ns{max-width:4rem}.swagger-ui .mw4-ns{max-width:8rem}.swagger-ui .mw5-ns{max-width:16rem}.swagger-ui .mw6-ns{max-width:32rem}.swagger-ui .mw7-ns{max-width:48rem}.swagger-ui .mw8-ns{max-width:64rem}.swagger-ui .mw9-ns{max-width:96rem}.swagger-ui .mw-none-ns{max-width:none}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .mw-100-m{max-width:100%}.swagger-ui .mw1-m{max-width:1rem}.swagger-ui .mw2-m{max-width:2rem}.swagger-ui .mw3-m{max-width:4rem}.swagger-ui .mw4-m{max-width:8rem}.swagger-ui .mw5-m{max-width:16rem}.swagger-ui .mw6-m{max-width:32rem}.swagger-ui .mw7-m{max-width:48rem}.swagger-ui .mw8-m{max-width:64rem}.swagger-ui .mw9-m{max-width:96rem}.swagger-ui .mw-none-m{max-width:none}}@media screen and (min-width:60em){.swagger-ui .mw-100-l{max-width:100%}.swagger-ui .mw1-l{max-width:1rem}.swagger-ui .mw2-l{max-width:2rem}.swagger-ui .mw3-l{max-width:4rem}.swagger-ui .mw4-l{max-width:8rem}.swagger-ui .mw5-l{max-width:16rem}.swagger-ui .mw6-l{max-width:32rem}.swagger-ui .mw7-l{max-width:48rem}.swagger-ui .mw8-l{max-width:64rem}.swagger-ui .mw9-l{max-width:96rem}.swagger-ui .mw-none-l{max-width:none}}.swagger-ui .w1{width:1rem}.swagger-ui .w2{width:2rem}.swagger-ui .w3{width:4rem}.swagger-ui .w4{width:8rem}.swagger-ui .w5{width:16rem}.swagger-ui .w-10{width:10%}.swagger-ui .w-20{width:20%}.swagger-ui .w-25{width:25%}.swagger-ui .w-30{width:30%}.swagger-ui .w-33{width:33%}.swagger-ui .w-34{width:34%}.swagger-ui .w-40{width:40%}.swagger-ui .w-50{width:50%}.swagger-ui .w-60{width:60%}.swagger-ui .w-70{width:70%}.swagger-ui .w-75{width:75%}.swagger-ui .w-80{width:80%}.swagger-ui .w-90{width:90%}.swagger-ui .w-100{width:100%}.swagger-ui .w-third{width:33.33333%}.swagger-ui .w-two-thirds{width:66.66667%}.swagger-ui .w-auto{width:auto}@media screen and (min-width:30em){.swagger-ui .w1-ns{width:1rem}.swagger-ui .w2-ns{width:2rem}.swagger-ui .w3-ns{width:4rem}.swagger-ui .w4-ns{width:8rem}.swagger-ui .w5-ns{width:16rem}.swagger-ui .w-10-ns{width:10%}.swagger-ui .w-20-ns{width:20%}.swagger-ui .w-25-ns{width:25%}.swagger-ui .w-30-ns{width:30%}.swagger-ui .w-33-ns{width:33%}.swagger-ui .w-34-ns{width:34%}.swagger-ui .w-40-ns{width:40%}.swagger-ui .w-50-ns{width:50%}.swagger-ui .w-60-ns{width:60%}.swagger-ui .w-70-ns{width:70%}.swagger-ui .w-75-ns{width:75%}.swagger-ui .w-80-ns{width:80%}.swagger-ui .w-90-ns{width:90%}.swagger-ui .w-100-ns{width:100%}.swagger-ui .w-third-ns{width:33.33333%}.swagger-ui .w-two-thirds-ns{width:66.66667%}.swagger-ui .w-auto-ns{width:auto}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .w1-m{width:1rem}.swagger-ui .w2-m{width:2rem}.swagger-ui .w3-m{width:4rem}.swagger-ui .w4-m{width:8rem}.swagger-ui .w5-m{width:16rem}.swagger-ui .w-10-m{width:10%}.swagger-ui .w-20-m{width:20%}.swagger-ui .w-25-m{width:25%}.swagger-ui .w-30-m{width:30%}.swagger-ui .w-33-m{width:33%}.swagger-ui .w-34-m{width:34%}.swagger-ui .w-40-m{width:40%}.swagger-ui .w-50-m{width:50%}.swagger-ui .w-60-m{width:60%}.swagger-ui .w-70-m{width:70%}.swagger-ui .w-75-m{width:75%}.swagger-ui .w-80-m{width:80%}.swagger-ui .w-90-m{width:90%}.swagger-ui .w-100-m{width:100%}.swagger-ui .w-third-m{width:33.33333%}.swagger-ui .w-two-thirds-m{width:66.66667%}.swagger-ui .w-auto-m{width:auto}}@media screen and (min-width:60em){.swagger-ui .w1-l{width:1rem}.swagger-ui .w2-l{width:2rem}.swagger-ui .w3-l{width:4rem}.swagger-ui .w4-l{width:8rem}.swagger-ui .w5-l{width:16rem}.swagger-ui .w-10-l{width:10%}.swagger-ui .w-20-l{width:20%}.swagger-ui .w-25-l{width:25%}.swagger-ui .w-30-l{width:30%}.swagger-ui .w-33-l{width:33%}.swagger-ui .w-34-l{width:34%}.swagger-ui .w-40-l{width:40%}.swagger-ui .w-50-l{width:50%}.swagger-ui .w-60-l{width:60%}.swagger-ui .w-70-l{width:70%}.swagger-ui .w-75-l{width:75%}.swagger-ui .w-80-l{width:80%}.swagger-ui .w-90-l{width:90%}.swagger-ui .w-100-l{width:100%}.swagger-ui .w-third-l{width:33.33333%}.swagger-ui .w-two-thirds-l{width:66.66667%}.swagger-ui .w-auto-l{width:auto}}.swagger-ui .overflow-visible{overflow:visible}.swagger-ui .overflow-hidden{overflow:hidden}.swagger-ui .overflow-scroll{overflow:scroll}.swagger-ui .overflow-auto{overflow:auto}.swagger-ui .overflow-x-visible{overflow-x:visible}.swagger-ui .overflow-x-hidden{overflow-x:hidden}.swagger-ui .overflow-x-scroll{overflow-x:scroll}.swagger-ui .overflow-x-auto{overflow-x:auto}.swagger-ui .overflow-y-visible{overflow-y:visible}.swagger-ui .overflow-y-hidden{overflow-y:hidden}.swagger-ui .overflow-y-scroll{overflow-y:scroll}.swagger-ui .overflow-y-auto{overflow-y:auto}@media screen and (min-width:30em){.swagger-ui .overflow-visible-ns{overflow:visible}.swagger-ui .overflow-hidden-ns{overflow:hidden}.swagger-ui .overflow-scroll-ns{overflow:scroll}.swagger-ui .overflow-auto-ns{overflow:auto}.swagger-ui .overflow-x-visible-ns{overflow-x:visible}.swagger-ui .overflow-x-hidden-ns{overflow-x:hidden}.swagger-ui .overflow-x-scroll-ns{overflow-x:scroll}.swagger-ui .overflow-x-auto-ns{overflow-x:auto}.swagger-ui .overflow-y-visible-ns{overflow-y:visible}.swagger-ui .overflow-y-hidden-ns{overflow-y:hidden}.swagger-ui .overflow-y-scroll-ns{overflow-y:scroll}.swagger-ui .overflow-y-auto-ns{overflow-y:auto}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .overflow-visible-m{overflow:visible}.swagger-ui .overflow-hidden-m{overflow:hidden}.swagger-ui .overflow-scroll-m{overflow:scroll}.swagger-ui .overflow-auto-m{overflow:auto}.swagger-ui .overflow-x-visible-m{overflow-x:visible}.swagger-ui .overflow-x-hidden-m{overflow-x:hidden}.swagger-ui .overflow-x-scroll-m{overflow-x:scroll}.swagger-ui .overflow-x-auto-m{overflow-x:auto}.swagger-ui .overflow-y-visible-m{overflow-y:visible}.swagger-ui .overflow-y-hidden-m{overflow-y:hidden}.swagger-ui .overflow-y-scroll-m{overflow-y:scroll}.swagger-ui .overflow-y-auto-m{overflow-y:auto}}@media screen and (min-width:60em){.swagger-ui .overflow-visible-l{overflow:visible}.swagger-ui .overflow-hidden-l{overflow:hidden}.swagger-ui .overflow-scroll-l{overflow:scroll}.swagger-ui .overflow-auto-l{overflow:auto}.swagger-ui .overflow-x-visible-l{overflow-x:visible}.swagger-ui .overflow-x-hidden-l{overflow-x:hidden}.swagger-ui .overflow-x-scroll-l{overflow-x:scroll}.swagger-ui .overflow-x-auto-l{overflow-x:auto}.swagger-ui .overflow-y-visible-l{overflow-y:visible}.swagger-ui .overflow-y-hidden-l{overflow-y:hidden}.swagger-ui .overflow-y-scroll-l{overflow-y:scroll}.swagger-ui .overflow-y-auto-l{overflow-y:auto}}.swagger-ui .static{position:static}.swagger-ui .relative{position:relative}.swagger-ui .absolute{position:absolute}.swagger-ui .fixed{position:fixed}@media screen and (min-width:30em){.swagger-ui .static-ns{position:static}.swagger-ui .relative-ns{position:relative}.swagger-ui .absolute-ns{position:absolute}.swagger-ui .fixed-ns{position:fixed}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .static-m{position:static}.swagger-ui .relative-m{position:relative}.swagger-ui .absolute-m{position:absolute}.swagger-ui .fixed-m{position:fixed}}@media screen and (min-width:60em){.swagger-ui .static-l{position:static}.swagger-ui .relative-l{position:relative}.swagger-ui .absolute-l{position:absolute}.swagger-ui .fixed-l{position:fixed}}.swagger-ui .o-100{opacity:1}.swagger-ui .o-90{opacity:.9}.swagger-ui .o-80{opacity:.8}.swagger-ui .o-70{opacity:.7}.swagger-ui .o-60{opacity:.6}.swagger-ui .o-50{opacity:.5}.swagger-ui .o-40{opacity:.4}.swagger-ui .o-30{opacity:.3}.swagger-ui .o-20{opacity:.2}.swagger-ui .o-10{opacity:.1}.swagger-ui .o-05{opacity:.05}.swagger-ui .o-025{opacity:.025}.swagger-ui .o-0{opacity:0}.swagger-ui .rotate-45{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.swagger-ui .rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.swagger-ui .rotate-135{-webkit-transform:rotate(135deg);transform:rotate(135deg)}.swagger-ui .rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.swagger-ui .rotate-225{-webkit-transform:rotate(225deg);transform:rotate(225deg)}.swagger-ui .rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.swagger-ui .rotate-315{-webkit-transform:rotate(315deg);transform:rotate(315deg)}@media screen and (min-width:30em){.swagger-ui .rotate-45-ns{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.swagger-ui .rotate-90-ns{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.swagger-ui .rotate-135-ns{-webkit-transform:rotate(135deg);transform:rotate(135deg)}.swagger-ui .rotate-180-ns{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.swagger-ui .rotate-225-ns{-webkit-transform:rotate(225deg);transform:rotate(225deg)}.swagger-ui .rotate-270-ns{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.swagger-ui .rotate-315-ns{-webkit-transform:rotate(315deg);transform:rotate(315deg)}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .rotate-45-m{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.swagger-ui .rotate-90-m{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.swagger-ui .rotate-135-m{-webkit-transform:rotate(135deg);transform:rotate(135deg)}.swagger-ui .rotate-180-m{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.swagger-ui .rotate-225-m{-webkit-transform:rotate(225deg);transform:rotate(225deg)}.swagger-ui .rotate-270-m{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.swagger-ui .rotate-315-m{-webkit-transform:rotate(315deg);transform:rotate(315deg)}}@media screen and (min-width:60em){.swagger-ui .rotate-45-l{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.swagger-ui .rotate-90-l{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.swagger-ui .rotate-135-l{-webkit-transform:rotate(135deg);transform:rotate(135deg)}.swagger-ui .rotate-180-l{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.swagger-ui .rotate-225-l{-webkit-transform:rotate(225deg);transform:rotate(225deg)}.swagger-ui .rotate-270-l{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.swagger-ui .rotate-315-l{-webkit-transform:rotate(315deg);transform:rotate(315deg)}}.swagger-ui .black-90{color:rgba(0,0,0,.9)}.swagger-ui .black-80{color:rgba(0,0,0,.8)}.swagger-ui .black-70{color:rgba(0,0,0,.7)}.swagger-ui .black-60{color:rgba(0,0,0,.6)}.swagger-ui .black-50{color:rgba(0,0,0,.5)}.swagger-ui .black-40{color:rgba(0,0,0,.4)}.swagger-ui .black-30{color:rgba(0,0,0,.3)}.swagger-ui .black-20{color:rgba(0,0,0,.2)}.swagger-ui .black-10{color:rgba(0,0,0,.1)}.swagger-ui .black-05{color:rgba(0,0,0,.05)}.swagger-ui .white-90{color:hsla(0,0%,100%,.9)}.swagger-ui .white-80{color:hsla(0,0%,100%,.8)}.swagger-ui .white-70{color:hsla(0,0%,100%,.7)}.swagger-ui .white-60{color:hsla(0,0%,100%,.6)}.swagger-ui .white-50{color:hsla(0,0%,100%,.5)}.swagger-ui .white-40{color:hsla(0,0%,100%,.4)}.swagger-ui .white-30{color:hsla(0,0%,100%,.3)}.swagger-ui .white-20{color:hsla(0,0%,100%,.2)}.swagger-ui .white-10{color:hsla(0,0%,100%,.1)}.swagger-ui .black{color:#000}.swagger-ui .near-black{color:#111}.swagger-ui .dark-gray{color:#333}.swagger-ui .mid-gray{color:#555}.swagger-ui .gray{color:#777}.swagger-ui .silver{color:#999}.swagger-ui .light-silver{color:#aaa}.swagger-ui .moon-gray{color:#ccc}.swagger-ui .light-gray{color:#eee}.swagger-ui .near-white{color:#f4f4f4}.swagger-ui .white{color:#fff}.swagger-ui .dark-red{color:#e7040f}.swagger-ui .red{color:#ff4136}.swagger-ui .light-red{color:#ff725c}.swagger-ui .orange{color:#ff6300}.swagger-ui .gold{color:#ffb700}.swagger-ui .yellow{color:gold}.swagger-ui .light-yellow{color:#fbf1a9}.swagger-ui .purple{color:#5e2ca5}.swagger-ui .light-purple{color:#a463f2}.swagger-ui .dark-pink{color:#d5008f}.swagger-ui .hot-pink{color:#ff41b4}.swagger-ui .pink{color:#ff80cc}.swagger-ui .light-pink{color:#ffa3d7}.swagger-ui .dark-green{color:#137752}.swagger-ui .green{color:#19a974}.swagger-ui .light-green{color:#9eebcf}.swagger-ui .navy{color:#001b44}.swagger-ui .dark-blue{color:#00449e}.swagger-ui .blue{color:#357edd}.swagger-ui .light-blue{color:#96ccff}.swagger-ui .lightest-blue{color:#cdecff}.swagger-ui .washed-blue{color:#f6fffe}.swagger-ui .washed-green{color:#e8fdf5}.swagger-ui .washed-yellow{color:#fffceb}.swagger-ui .washed-red{color:#ffdfdf}.swagger-ui .color-inherit{color:inherit}.swagger-ui .bg-black-90{background-color:rgba(0,0,0,.9)}.swagger-ui .bg-black-80{background-color:rgba(0,0,0,.8)}.swagger-ui .bg-black-70{background-color:rgba(0,0,0,.7)}.swagger-ui .bg-black-60{background-color:rgba(0,0,0,.6)}.swagger-ui .bg-black-50{background-color:rgba(0,0,0,.5)}.swagger-ui .bg-black-40{background-color:rgba(0,0,0,.4)}.swagger-ui .bg-black-30{background-color:rgba(0,0,0,.3)}.swagger-ui .bg-black-20{background-color:rgba(0,0,0,.2)}.swagger-ui .bg-black-10{background-color:rgba(0,0,0,.1)}.swagger-ui .bg-black-05{background-color:rgba(0,0,0,.05)}.swagger-ui .bg-white-90{background-color:hsla(0,0%,100%,.9)}.swagger-ui .bg-white-80{background-color:hsla(0,0%,100%,.8)}.swagger-ui .bg-white-70{background-color:hsla(0,0%,100%,.7)}.swagger-ui .bg-white-60{background-color:hsla(0,0%,100%,.6)}.swagger-ui .bg-white-50{background-color:hsla(0,0%,100%,.5)}.swagger-ui .bg-white-40{background-color:hsla(0,0%,100%,.4)}.swagger-ui .bg-white-30{background-color:hsla(0,0%,100%,.3)}.swagger-ui .bg-white-20{background-color:hsla(0,0%,100%,.2)}.swagger-ui .bg-white-10{background-color:hsla(0,0%,100%,.1)}.swagger-ui .bg-black{background-color:#000}.swagger-ui .bg-near-black{background-color:#111}.swagger-ui .bg-dark-gray{background-color:#333}.swagger-ui .bg-mid-gray{background-color:#555}.swagger-ui .bg-gray{background-color:#777}.swagger-ui .bg-silver{background-color:#999}.swagger-ui .bg-light-silver{background-color:#aaa}.swagger-ui .bg-moon-gray{background-color:#ccc}.swagger-ui .bg-light-gray{background-color:#eee}.swagger-ui .bg-near-white{background-color:#f4f4f4}.swagger-ui .bg-white{background-color:#fff}.swagger-ui .bg-transparent{background-color:transparent}.swagger-ui .bg-dark-red{background-color:#e7040f}.swagger-ui .bg-red{background-color:#ff4136}.swagger-ui .bg-light-red{background-color:#ff725c}.swagger-ui .bg-orange{background-color:#ff6300}.swagger-ui .bg-gold{background-color:#ffb700}.swagger-ui .bg-yellow{background-color:gold}.swagger-ui .bg-light-yellow{background-color:#fbf1a9}.swagger-ui .bg-purple{background-color:#5e2ca5}.swagger-ui .bg-light-purple{background-color:#a463f2}.swagger-ui .bg-dark-pink{background-color:#d5008f}.swagger-ui .bg-hot-pink{background-color:#ff41b4}.swagger-ui .bg-pink{background-color:#ff80cc}.swagger-ui .bg-light-pink{background-color:#ffa3d7}.swagger-ui .bg-dark-green{background-color:#137752}.swagger-ui .bg-green{background-color:#19a974}.swagger-ui .bg-light-green{background-color:#9eebcf}.swagger-ui .bg-navy{background-color:#001b44}.swagger-ui .bg-dark-blue{background-color:#00449e}.swagger-ui .bg-blue{background-color:#357edd}.swagger-ui .bg-light-blue{background-color:#96ccff}.swagger-ui .bg-lightest-blue{background-color:#cdecff}.swagger-ui .bg-washed-blue{background-color:#f6fffe}.swagger-ui .bg-washed-green{background-color:#e8fdf5}.swagger-ui .bg-washed-yellow{background-color:#fffceb}.swagger-ui .bg-washed-red{background-color:#ffdfdf}.swagger-ui .bg-inherit{background-color:inherit}.swagger-ui .hover-black:focus,.swagger-ui .hover-black:hover{color:#000}.swagger-ui .hover-near-black:focus,.swagger-ui .hover-near-black:hover{color:#111}.swagger-ui .hover-dark-gray:focus,.swagger-ui .hover-dark-gray:hover{color:#333}.swagger-ui .hover-mid-gray:focus,.swagger-ui .hover-mid-gray:hover{color:#555}.swagger-ui .hover-gray:focus,.swagger-ui .hover-gray:hover{color:#777}.swagger-ui .hover-silver:focus,.swagger-ui .hover-silver:hover{color:#999}.swagger-ui .hover-light-silver:focus,.swagger-ui .hover-light-silver:hover{color:#aaa}.swagger-ui .hover-moon-gray:focus,.swagger-ui .hover-moon-gray:hover{color:#ccc}.swagger-ui .hover-light-gray:focus,.swagger-ui .hover-light-gray:hover{color:#eee}.swagger-ui .hover-near-white:focus,.swagger-ui .hover-near-white:hover{color:#f4f4f4}.swagger-ui .hover-white:focus,.swagger-ui .hover-white:hover{color:#fff}.swagger-ui .hover-black-90:focus,.swagger-ui .hover-black-90:hover{color:rgba(0,0,0,.9)}.swagger-ui .hover-black-80:focus,.swagger-ui .hover-black-80:hover{color:rgba(0,0,0,.8)}.swagger-ui .hover-black-70:focus,.swagger-ui .hover-black-70:hover{color:rgba(0,0,0,.7)}.swagger-ui .hover-black-60:focus,.swagger-ui .hover-black-60:hover{color:rgba(0,0,0,.6)}.swagger-ui .hover-black-50:focus,.swagger-ui .hover-black-50:hover{color:rgba(0,0,0,.5)}.swagger-ui .hover-black-40:focus,.swagger-ui .hover-black-40:hover{color:rgba(0,0,0,.4)}.swagger-ui .hover-black-30:focus,.swagger-ui .hover-black-30:hover{color:rgba(0,0,0,.3)}.swagger-ui .hover-black-20:focus,.swagger-ui .hover-black-20:hover{color:rgba(0,0,0,.2)}.swagger-ui .hover-black-10:focus,.swagger-ui .hover-black-10:hover{color:rgba(0,0,0,.1)}.swagger-ui .hover-white-90:focus,.swagger-ui .hover-white-90:hover{color:hsla(0,0%,100%,.9)}.swagger-ui .hover-white-80:focus,.swagger-ui .hover-white-80:hover{color:hsla(0,0%,100%,.8)}.swagger-ui .hover-white-70:focus,.swagger-ui .hover-white-70:hover{color:hsla(0,0%,100%,.7)}.swagger-ui .hover-white-60:focus,.swagger-ui .hover-white-60:hover{color:hsla(0,0%,100%,.6)}.swagger-ui .hover-white-50:focus,.swagger-ui .hover-white-50:hover{color:hsla(0,0%,100%,.5)}.swagger-ui .hover-white-40:focus,.swagger-ui .hover-white-40:hover{color:hsla(0,0%,100%,.4)}.swagger-ui .hover-white-30:focus,.swagger-ui .hover-white-30:hover{color:hsla(0,0%,100%,.3)}.swagger-ui .hover-white-20:focus,.swagger-ui .hover-white-20:hover{color:hsla(0,0%,100%,.2)}.swagger-ui .hover-white-10:focus,.swagger-ui .hover-white-10:hover{color:hsla(0,0%,100%,.1)}.swagger-ui .hover-inherit:focus,.swagger-ui .hover-inherit:hover{color:inherit}.swagger-ui .hover-bg-black:focus,.swagger-ui .hover-bg-black:hover{background-color:#000}.swagger-ui .hover-bg-near-black:focus,.swagger-ui .hover-bg-near-black:hover{background-color:#111}.swagger-ui .hover-bg-dark-gray:focus,.swagger-ui .hover-bg-dark-gray:hover{background-color:#333}.swagger-ui .hover-bg-mid-gray:focus,.swagger-ui .hover-bg-mid-gray:hover{background-color:#555}.swagger-ui .hover-bg-gray:focus,.swagger-ui .hover-bg-gray:hover{background-color:#777}.swagger-ui .hover-bg-silver:focus,.swagger-ui .hover-bg-silver:hover{background-color:#999}.swagger-ui .hover-bg-light-silver:focus,.swagger-ui .hover-bg-light-silver:hover{background-color:#aaa}.swagger-ui .hover-bg-moon-gray:focus,.swagger-ui .hover-bg-moon-gray:hover{background-color:#ccc}.swagger-ui .hover-bg-light-gray:focus,.swagger-ui .hover-bg-light-gray:hover{background-color:#eee}.swagger-ui .hover-bg-near-white:focus,.swagger-ui .hover-bg-near-white:hover{background-color:#f4f4f4}.swagger-ui .hover-bg-white:focus,.swagger-ui .hover-bg-white:hover{background-color:#fff}.swagger-ui .hover-bg-transparent:focus,.swagger-ui .hover-bg-transparent:hover{background-color:transparent}.swagger-ui .hover-bg-black-90:focus,.swagger-ui .hover-bg-black-90:hover{background-color:rgba(0,0,0,.9)}.swagger-ui .hover-bg-black-80:focus,.swagger-ui .hover-bg-black-80:hover{background-color:rgba(0,0,0,.8)}.swagger-ui .hover-bg-black-70:focus,.swagger-ui .hover-bg-black-70:hover{background-color:rgba(0,0,0,.7)}.swagger-ui .hover-bg-black-60:focus,.swagger-ui .hover-bg-black-60:hover{background-color:rgba(0,0,0,.6)}.swagger-ui .hover-bg-black-50:focus,.swagger-ui .hover-bg-black-50:hover{background-color:rgba(0,0,0,.5)}.swagger-ui .hover-bg-black-40:focus,.swagger-ui .hover-bg-black-40:hover{background-color:rgba(0,0,0,.4)}.swagger-ui .hover-bg-black-30:focus,.swagger-ui .hover-bg-black-30:hover{background-color:rgba(0,0,0,.3)}.swagger-ui .hover-bg-black-20:focus,.swagger-ui .hover-bg-black-20:hover{background-color:rgba(0,0,0,.2)}.swagger-ui .hover-bg-black-10:focus,.swagger-ui .hover-bg-black-10:hover{background-color:rgba(0,0,0,.1)}.swagger-ui .hover-bg-white-90:focus,.swagger-ui .hover-bg-white-90:hover{background-color:hsla(0,0%,100%,.9)}.swagger-ui .hover-bg-white-80:focus,.swagger-ui .hover-bg-white-80:hover{background-color:hsla(0,0%,100%,.8)}.swagger-ui .hover-bg-white-70:focus,.swagger-ui .hover-bg-white-70:hover{background-color:hsla(0,0%,100%,.7)}.swagger-ui .hover-bg-white-60:focus,.swagger-ui .hover-bg-white-60:hover{background-color:hsla(0,0%,100%,.6)}.swagger-ui .hover-bg-white-50:focus,.swagger-ui .hover-bg-white-50:hover{background-color:hsla(0,0%,100%,.5)}.swagger-ui .hover-bg-white-40:focus,.swagger-ui .hover-bg-white-40:hover{background-color:hsla(0,0%,100%,.4)}.swagger-ui .hover-bg-white-30:focus,.swagger-ui .hover-bg-white-30:hover{background-color:hsla(0,0%,100%,.3)}.swagger-ui .hover-bg-white-20:focus,.swagger-ui .hover-bg-white-20:hover{background-color:hsla(0,0%,100%,.2)}.swagger-ui .hover-bg-white-10:focus,.swagger-ui .hover-bg-white-10:hover{background-color:hsla(0,0%,100%,.1)}.swagger-ui .hover-dark-red:focus,.swagger-ui .hover-dark-red:hover{color:#e7040f}.swagger-ui .hover-red:focus,.swagger-ui .hover-red:hover{color:#ff4136}.swagger-ui .hover-light-red:focus,.swagger-ui .hover-light-red:hover{color:#ff725c}.swagger-ui .hover-orange:focus,.swagger-ui .hover-orange:hover{color:#ff6300}.swagger-ui .hover-gold:focus,.swagger-ui .hover-gold:hover{color:#ffb700}.swagger-ui .hover-yellow:focus,.swagger-ui .hover-yellow:hover{color:gold}.swagger-ui .hover-light-yellow:focus,.swagger-ui .hover-light-yellow:hover{color:#fbf1a9}.swagger-ui .hover-purple:focus,.swagger-ui .hover-purple:hover{color:#5e2ca5}.swagger-ui .hover-light-purple:focus,.swagger-ui .hover-light-purple:hover{color:#a463f2}.swagger-ui .hover-dark-pink:focus,.swagger-ui .hover-dark-pink:hover{color:#d5008f}.swagger-ui .hover-hot-pink:focus,.swagger-ui .hover-hot-pink:hover{color:#ff41b4}.swagger-ui .hover-pink:focus,.swagger-ui .hover-pink:hover{color:#ff80cc}.swagger-ui .hover-light-pink:focus,.swagger-ui .hover-light-pink:hover{color:#ffa3d7}.swagger-ui .hover-dark-green:focus,.swagger-ui .hover-dark-green:hover{color:#137752}.swagger-ui .hover-green:focus,.swagger-ui .hover-green:hover{color:#19a974}.swagger-ui .hover-light-green:focus,.swagger-ui .hover-light-green:hover{color:#9eebcf}.swagger-ui .hover-navy:focus,.swagger-ui .hover-navy:hover{color:#001b44}.swagger-ui .hover-dark-blue:focus,.swagger-ui .hover-dark-blue:hover{color:#00449e}.swagger-ui .hover-blue:focus,.swagger-ui .hover-blue:hover{color:#357edd}.swagger-ui .hover-light-blue:focus,.swagger-ui .hover-light-blue:hover{color:#96ccff}.swagger-ui .hover-lightest-blue:focus,.swagger-ui .hover-lightest-blue:hover{color:#cdecff}.swagger-ui .hover-washed-blue:focus,.swagger-ui .hover-washed-blue:hover{color:#f6fffe}.swagger-ui .hover-washed-green:focus,.swagger-ui .hover-washed-green:hover{color:#e8fdf5}.swagger-ui .hover-washed-yellow:focus,.swagger-ui .hover-washed-yellow:hover{color:#fffceb}.swagger-ui .hover-washed-red:focus,.swagger-ui .hover-washed-red:hover{color:#ffdfdf}.swagger-ui .hover-bg-dark-red:focus,.swagger-ui .hover-bg-dark-red:hover{background-color:#e7040f}.swagger-ui .hover-bg-red:focus,.swagger-ui .hover-bg-red:hover{background-color:#ff4136}.swagger-ui .hover-bg-light-red:focus,.swagger-ui .hover-bg-light-red:hover{background-color:#ff725c}.swagger-ui .hover-bg-orange:focus,.swagger-ui .hover-bg-orange:hover{background-color:#ff6300}.swagger-ui .hover-bg-gold:focus,.swagger-ui .hover-bg-gold:hover{background-color:#ffb700}.swagger-ui .hover-bg-yellow:focus,.swagger-ui .hover-bg-yellow:hover{background-color:gold}.swagger-ui .hover-bg-light-yellow:focus,.swagger-ui .hover-bg-light-yellow:hover{background-color:#fbf1a9}.swagger-ui .hover-bg-purple:focus,.swagger-ui .hover-bg-purple:hover{background-color:#5e2ca5}.swagger-ui .hover-bg-light-purple:focus,.swagger-ui .hover-bg-light-purple:hover{background-color:#a463f2}.swagger-ui .hover-bg-dark-pink:focus,.swagger-ui .hover-bg-dark-pink:hover{background-color:#d5008f}.swagger-ui .hover-bg-hot-pink:focus,.swagger-ui .hover-bg-hot-pink:hover{background-color:#ff41b4}.swagger-ui .hover-bg-pink:focus,.swagger-ui .hover-bg-pink:hover{background-color:#ff80cc}.swagger-ui .hover-bg-light-pink:focus,.swagger-ui .hover-bg-light-pink:hover{background-color:#ffa3d7}.swagger-ui .hover-bg-dark-green:focus,.swagger-ui .hover-bg-dark-green:hover{background-color:#137752}.swagger-ui .hover-bg-green:focus,.swagger-ui .hover-bg-green:hover{background-color:#19a974}.swagger-ui .hover-bg-light-green:focus,.swagger-ui .hover-bg-light-green:hover{background-color:#9eebcf}.swagger-ui .hover-bg-navy:focus,.swagger-ui .hover-bg-navy:hover{background-color:#001b44}.swagger-ui .hover-bg-dark-blue:focus,.swagger-ui .hover-bg-dark-blue:hover{background-color:#00449e}.swagger-ui .hover-bg-blue:focus,.swagger-ui .hover-bg-blue:hover{background-color:#357edd}.swagger-ui .hover-bg-light-blue:focus,.swagger-ui .hover-bg-light-blue:hover{background-color:#96ccff}.swagger-ui .hover-bg-lightest-blue:focus,.swagger-ui .hover-bg-lightest-blue:hover{background-color:#cdecff}.swagger-ui .hover-bg-washed-blue:focus,.swagger-ui .hover-bg-washed-blue:hover{background-color:#f6fffe}.swagger-ui .hover-bg-washed-green:focus,.swagger-ui .hover-bg-washed-green:hover{background-color:#e8fdf5}.swagger-ui .hover-bg-washed-yellow:focus,.swagger-ui .hover-bg-washed-yellow:hover{background-color:#fffceb}.swagger-ui .hover-bg-washed-red:focus,.swagger-ui .hover-bg-washed-red:hover{background-color:#ffdfdf}.swagger-ui .hover-bg-inherit:focus,.swagger-ui .hover-bg-inherit:hover{background-color:inherit}.swagger-ui .pa0{padding:0}.swagger-ui .pa1{padding:.25rem}.swagger-ui .pa2{padding:.5rem}.swagger-ui .pa3{padding:1rem}.swagger-ui .pa4{padding:2rem}.swagger-ui .pa5{padding:4rem}.swagger-ui .pa6{padding:8rem}.swagger-ui .pa7{padding:16rem}.swagger-ui .pl0{padding-left:0}.swagger-ui .pl1{padding-left:.25rem}.swagger-ui .pl2{padding-left:.5rem}.swagger-ui .pl3{padding-left:1rem}.swagger-ui .pl4{padding-left:2rem}.swagger-ui .pl5{padding-left:4rem}.swagger-ui .pl6{padding-left:8rem}.swagger-ui .pl7{padding-left:16rem}.swagger-ui .pr0{padding-right:0}.swagger-ui .pr1{padding-right:.25rem}.swagger-ui .pr2{padding-right:.5rem}.swagger-ui .pr3{padding-right:1rem}.swagger-ui .pr4{padding-right:2rem}.swagger-ui .pr5{padding-right:4rem}.swagger-ui .pr6{padding-right:8rem}.swagger-ui .pr7{padding-right:16rem}.swagger-ui .pb0{padding-bottom:0}.swagger-ui .pb1{padding-bottom:.25rem}.swagger-ui .pb2{padding-bottom:.5rem}.swagger-ui .pb3{padding-bottom:1rem}.swagger-ui .pb4{padding-bottom:2rem}.swagger-ui .pb5{padding-bottom:4rem}.swagger-ui .pb6{padding-bottom:8rem}.swagger-ui .pb7{padding-bottom:16rem}.swagger-ui .pt0{padding-top:0}.swagger-ui .pt1{padding-top:.25rem}.swagger-ui .pt2{padding-top:.5rem}.swagger-ui .pt3{padding-top:1rem}.swagger-ui .pt4{padding-top:2rem}.swagger-ui .pt5{padding-top:4rem}.swagger-ui .pt6{padding-top:8rem}.swagger-ui .pt7{padding-top:16rem}.swagger-ui .pv0{padding-bottom:0;padding-top:0}.swagger-ui .pv1{padding-bottom:.25rem;padding-top:.25rem}.swagger-ui .pv2{padding-bottom:.5rem;padding-top:.5rem}.swagger-ui .pv3{padding-bottom:1rem;padding-top:1rem}.swagger-ui .pv4{padding-bottom:2rem;padding-top:2rem}.swagger-ui .pv5{padding-bottom:4rem;padding-top:4rem}.swagger-ui .pv6{padding-bottom:8rem;padding-top:8rem}.swagger-ui .pv7{padding-bottom:16rem;padding-top:16rem}.swagger-ui .ph0{padding-left:0;padding-right:0}.swagger-ui .ph1{padding-left:.25rem;padding-right:.25rem}.swagger-ui .ph2{padding-left:.5rem;padding-right:.5rem}.swagger-ui .ph3{padding-left:1rem;padding-right:1rem}.swagger-ui .ph4{padding-left:2rem;padding-right:2rem}.swagger-ui .ph5{padding-left:4rem;padding-right:4rem}.swagger-ui .ph6{padding-left:8rem;padding-right:8rem}.swagger-ui .ph7{padding-left:16rem;padding-right:16rem}.swagger-ui .ma0{margin:0}.swagger-ui .ma1{margin:.25rem}.swagger-ui .ma2{margin:.5rem}.swagger-ui .ma3{margin:1rem}.swagger-ui .ma4{margin:2rem}.swagger-ui .ma5{margin:4rem}.swagger-ui .ma6{margin:8rem}.swagger-ui .ma7{margin:16rem}.swagger-ui .ml0{margin-left:0}.swagger-ui .ml1{margin-left:.25rem}.swagger-ui .ml2{margin-left:.5rem}.swagger-ui .ml3{margin-left:1rem}.swagger-ui .ml4{margin-left:2rem}.swagger-ui .ml5{margin-left:4rem}.swagger-ui .ml6{margin-left:8rem}.swagger-ui .ml7{margin-left:16rem}.swagger-ui .mr0{margin-right:0}.swagger-ui .mr1{margin-right:.25rem}.swagger-ui .mr2{margin-right:.5rem}.swagger-ui .mr3{margin-right:1rem}.swagger-ui .mr4{margin-right:2rem}.swagger-ui .mr5{margin-right:4rem}.swagger-ui .mr6{margin-right:8rem}.swagger-ui .mr7{margin-right:16rem}.swagger-ui .mb0{margin-bottom:0}.swagger-ui .mb1{margin-bottom:.25rem}.swagger-ui .mb2{margin-bottom:.5rem}.swagger-ui .mb3{margin-bottom:1rem}.swagger-ui .mb4{margin-bottom:2rem}.swagger-ui .mb5{margin-bottom:4rem}.swagger-ui .mb6{margin-bottom:8rem}.swagger-ui .mb7{margin-bottom:16rem}.swagger-ui .mt0{margin-top:0}.swagger-ui .mt1{margin-top:.25rem}.swagger-ui .mt2{margin-top:.5rem}.swagger-ui .mt3{margin-top:1rem}.swagger-ui .mt4{margin-top:2rem}.swagger-ui .mt5{margin-top:4rem}.swagger-ui .mt6{margin-top:8rem}.swagger-ui .mt7{margin-top:16rem}.swagger-ui .mv0{margin-bottom:0;margin-top:0}.swagger-ui .mv1{margin-bottom:.25rem;margin-top:.25rem}.swagger-ui .mv2{margin-bottom:.5rem;margin-top:.5rem}.swagger-ui .mv3{margin-bottom:1rem;margin-top:1rem}.swagger-ui .mv4{margin-bottom:2rem;margin-top:2rem}.swagger-ui .mv5{margin-bottom:4rem;margin-top:4rem}.swagger-ui .mv6{margin-bottom:8rem;margin-top:8rem}.swagger-ui .mv7{margin-bottom:16rem;margin-top:16rem}.swagger-ui .mh0{margin-left:0;margin-right:0}.swagger-ui .mh1{margin-left:.25rem;margin-right:.25rem}.swagger-ui .mh2{margin-left:.5rem;margin-right:.5rem}.swagger-ui .mh3{margin-left:1rem;margin-right:1rem}.swagger-ui .mh4{margin-left:2rem;margin-right:2rem}.swagger-ui .mh5{margin-left:4rem;margin-right:4rem}.swagger-ui .mh6{margin-left:8rem;margin-right:8rem}.swagger-ui .mh7{margin-left:16rem;margin-right:16rem}@media screen and (min-width:30em){.swagger-ui .pa0-ns{padding:0}.swagger-ui .pa1-ns{padding:.25rem}.swagger-ui .pa2-ns{padding:.5rem}.swagger-ui .pa3-ns{padding:1rem}.swagger-ui .pa4-ns{padding:2rem}.swagger-ui .pa5-ns{padding:4rem}.swagger-ui .pa6-ns{padding:8rem}.swagger-ui .pa7-ns{padding:16rem}.swagger-ui .pl0-ns{padding-left:0}.swagger-ui .pl1-ns{padding-left:.25rem}.swagger-ui .pl2-ns{padding-left:.5rem}.swagger-ui .pl3-ns{padding-left:1rem}.swagger-ui .pl4-ns{padding-left:2rem}.swagger-ui .pl5-ns{padding-left:4rem}.swagger-ui .pl6-ns{padding-left:8rem}.swagger-ui .pl7-ns{padding-left:16rem}.swagger-ui .pr0-ns{padding-right:0}.swagger-ui .pr1-ns{padding-right:.25rem}.swagger-ui .pr2-ns{padding-right:.5rem}.swagger-ui .pr3-ns{padding-right:1rem}.swagger-ui .pr4-ns{padding-right:2rem}.swagger-ui .pr5-ns{padding-right:4rem}.swagger-ui .pr6-ns{padding-right:8rem}.swagger-ui .pr7-ns{padding-right:16rem}.swagger-ui .pb0-ns{padding-bottom:0}.swagger-ui .pb1-ns{padding-bottom:.25rem}.swagger-ui .pb2-ns{padding-bottom:.5rem}.swagger-ui .pb3-ns{padding-bottom:1rem}.swagger-ui .pb4-ns{padding-bottom:2rem}.swagger-ui .pb5-ns{padding-bottom:4rem}.swagger-ui .pb6-ns{padding-bottom:8rem}.swagger-ui .pb7-ns{padding-bottom:16rem}.swagger-ui .pt0-ns{padding-top:0}.swagger-ui .pt1-ns{padding-top:.25rem}.swagger-ui .pt2-ns{padding-top:.5rem}.swagger-ui .pt3-ns{padding-top:1rem}.swagger-ui .pt4-ns{padding-top:2rem}.swagger-ui .pt5-ns{padding-top:4rem}.swagger-ui .pt6-ns{padding-top:8rem}.swagger-ui .pt7-ns{padding-top:16rem}.swagger-ui .pv0-ns{padding-bottom:0;padding-top:0}.swagger-ui .pv1-ns{padding-bottom:.25rem;padding-top:.25rem}.swagger-ui .pv2-ns{padding-bottom:.5rem;padding-top:.5rem}.swagger-ui .pv3-ns{padding-bottom:1rem;padding-top:1rem}.swagger-ui .pv4-ns{padding-bottom:2rem;padding-top:2rem}.swagger-ui .pv5-ns{padding-bottom:4rem;padding-top:4rem}.swagger-ui .pv6-ns{padding-bottom:8rem;padding-top:8rem}.swagger-ui .pv7-ns{padding-bottom:16rem;padding-top:16rem}.swagger-ui .ph0-ns{padding-left:0;padding-right:0}.swagger-ui .ph1-ns{padding-left:.25rem;padding-right:.25rem}.swagger-ui .ph2-ns{padding-left:.5rem;padding-right:.5rem}.swagger-ui .ph3-ns{padding-left:1rem;padding-right:1rem}.swagger-ui .ph4-ns{padding-left:2rem;padding-right:2rem}.swagger-ui .ph5-ns{padding-left:4rem;padding-right:4rem}.swagger-ui .ph6-ns{padding-left:8rem;padding-right:8rem}.swagger-ui .ph7-ns{padding-left:16rem;padding-right:16rem}.swagger-ui .ma0-ns{margin:0}.swagger-ui .ma1-ns{margin:.25rem}.swagger-ui .ma2-ns{margin:.5rem}.swagger-ui .ma3-ns{margin:1rem}.swagger-ui .ma4-ns{margin:2rem}.swagger-ui .ma5-ns{margin:4rem}.swagger-ui .ma6-ns{margin:8rem}.swagger-ui .ma7-ns{margin:16rem}.swagger-ui .ml0-ns{margin-left:0}.swagger-ui .ml1-ns{margin-left:.25rem}.swagger-ui .ml2-ns{margin-left:.5rem}.swagger-ui .ml3-ns{margin-left:1rem}.swagger-ui .ml4-ns{margin-left:2rem}.swagger-ui .ml5-ns{margin-left:4rem}.swagger-ui .ml6-ns{margin-left:8rem}.swagger-ui .ml7-ns{margin-left:16rem}.swagger-ui .mr0-ns{margin-right:0}.swagger-ui .mr1-ns{margin-right:.25rem}.swagger-ui .mr2-ns{margin-right:.5rem}.swagger-ui .mr3-ns{margin-right:1rem}.swagger-ui .mr4-ns{margin-right:2rem}.swagger-ui .mr5-ns{margin-right:4rem}.swagger-ui .mr6-ns{margin-right:8rem}.swagger-ui .mr7-ns{margin-right:16rem}.swagger-ui .mb0-ns{margin-bottom:0}.swagger-ui .mb1-ns{margin-bottom:.25rem}.swagger-ui .mb2-ns{margin-bottom:.5rem}.swagger-ui .mb3-ns{margin-bottom:1rem}.swagger-ui .mb4-ns{margin-bottom:2rem}.swagger-ui .mb5-ns{margin-bottom:4rem}.swagger-ui .mb6-ns{margin-bottom:8rem}.swagger-ui .mb7-ns{margin-bottom:16rem}.swagger-ui .mt0-ns{margin-top:0}.swagger-ui .mt1-ns{margin-top:.25rem}.swagger-ui .mt2-ns{margin-top:.5rem}.swagger-ui .mt3-ns{margin-top:1rem}.swagger-ui .mt4-ns{margin-top:2rem}.swagger-ui .mt5-ns{margin-top:4rem}.swagger-ui .mt6-ns{margin-top:8rem}.swagger-ui .mt7-ns{margin-top:16rem}.swagger-ui .mv0-ns{margin-bottom:0;margin-top:0}.swagger-ui .mv1-ns{margin-bottom:.25rem;margin-top:.25rem}.swagger-ui .mv2-ns{margin-bottom:.5rem;margin-top:.5rem}.swagger-ui .mv3-ns{margin-bottom:1rem;margin-top:1rem}.swagger-ui .mv4-ns{margin-bottom:2rem;margin-top:2rem}.swagger-ui .mv5-ns{margin-bottom:4rem;margin-top:4rem}.swagger-ui .mv6-ns{margin-bottom:8rem;margin-top:8rem}.swagger-ui .mv7-ns{margin-bottom:16rem;margin-top:16rem}.swagger-ui .mh0-ns{margin-left:0;margin-right:0}.swagger-ui .mh1-ns{margin-left:.25rem;margin-right:.25rem}.swagger-ui .mh2-ns{margin-left:.5rem;margin-right:.5rem}.swagger-ui .mh3-ns{margin-left:1rem;margin-right:1rem}.swagger-ui .mh4-ns{margin-left:2rem;margin-right:2rem}.swagger-ui .mh5-ns{margin-left:4rem;margin-right:4rem}.swagger-ui .mh6-ns{margin-left:8rem;margin-right:8rem}.swagger-ui .mh7-ns{margin-left:16rem;margin-right:16rem}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .pa0-m{padding:0}.swagger-ui .pa1-m{padding:.25rem}.swagger-ui .pa2-m{padding:.5rem}.swagger-ui .pa3-m{padding:1rem}.swagger-ui .pa4-m{padding:2rem}.swagger-ui .pa5-m{padding:4rem}.swagger-ui .pa6-m{padding:8rem}.swagger-ui .pa7-m{padding:16rem}.swagger-ui .pl0-m{padding-left:0}.swagger-ui .pl1-m{padding-left:.25rem}.swagger-ui .pl2-m{padding-left:.5rem}.swagger-ui .pl3-m{padding-left:1rem}.swagger-ui .pl4-m{padding-left:2rem}.swagger-ui .pl5-m{padding-left:4rem}.swagger-ui .pl6-m{padding-left:8rem}.swagger-ui .pl7-m{padding-left:16rem}.swagger-ui .pr0-m{padding-right:0}.swagger-ui .pr1-m{padding-right:.25rem}.swagger-ui .pr2-m{padding-right:.5rem}.swagger-ui .pr3-m{padding-right:1rem}.swagger-ui .pr4-m{padding-right:2rem}.swagger-ui .pr5-m{padding-right:4rem}.swagger-ui .pr6-m{padding-right:8rem}.swagger-ui .pr7-m{padding-right:16rem}.swagger-ui .pb0-m{padding-bottom:0}.swagger-ui .pb1-m{padding-bottom:.25rem}.swagger-ui .pb2-m{padding-bottom:.5rem}.swagger-ui .pb3-m{padding-bottom:1rem}.swagger-ui .pb4-m{padding-bottom:2rem}.swagger-ui .pb5-m{padding-bottom:4rem}.swagger-ui .pb6-m{padding-bottom:8rem}.swagger-ui .pb7-m{padding-bottom:16rem}.swagger-ui .pt0-m{padding-top:0}.swagger-ui .pt1-m{padding-top:.25rem}.swagger-ui .pt2-m{padding-top:.5rem}.swagger-ui .pt3-m{padding-top:1rem}.swagger-ui .pt4-m{padding-top:2rem}.swagger-ui .pt5-m{padding-top:4rem}.swagger-ui .pt6-m{padding-top:8rem}.swagger-ui .pt7-m{padding-top:16rem}.swagger-ui .pv0-m{padding-bottom:0;padding-top:0}.swagger-ui .pv1-m{padding-bottom:.25rem;padding-top:.25rem}.swagger-ui .pv2-m{padding-bottom:.5rem;padding-top:.5rem}.swagger-ui .pv3-m{padding-bottom:1rem;padding-top:1rem}.swagger-ui .pv4-m{padding-bottom:2rem;padding-top:2rem}.swagger-ui .pv5-m{padding-bottom:4rem;padding-top:4rem}.swagger-ui .pv6-m{padding-bottom:8rem;padding-top:8rem}.swagger-ui .pv7-m{padding-bottom:16rem;padding-top:16rem}.swagger-ui .ph0-m{padding-left:0;padding-right:0}.swagger-ui .ph1-m{padding-left:.25rem;padding-right:.25rem}.swagger-ui .ph2-m{padding-left:.5rem;padding-right:.5rem}.swagger-ui .ph3-m{padding-left:1rem;padding-right:1rem}.swagger-ui .ph4-m{padding-left:2rem;padding-right:2rem}.swagger-ui .ph5-m{padding-left:4rem;padding-right:4rem}.swagger-ui .ph6-m{padding-left:8rem;padding-right:8rem}.swagger-ui .ph7-m{padding-left:16rem;padding-right:16rem}.swagger-ui .ma0-m{margin:0}.swagger-ui .ma1-m{margin:.25rem}.swagger-ui .ma2-m{margin:.5rem}.swagger-ui .ma3-m{margin:1rem}.swagger-ui .ma4-m{margin:2rem}.swagger-ui .ma5-m{margin:4rem}.swagger-ui .ma6-m{margin:8rem}.swagger-ui .ma7-m{margin:16rem}.swagger-ui .ml0-m{margin-left:0}.swagger-ui .ml1-m{margin-left:.25rem}.swagger-ui .ml2-m{margin-left:.5rem}.swagger-ui .ml3-m{margin-left:1rem}.swagger-ui .ml4-m{margin-left:2rem}.swagger-ui .ml5-m{margin-left:4rem}.swagger-ui .ml6-m{margin-left:8rem}.swagger-ui .ml7-m{margin-left:16rem}.swagger-ui .mr0-m{margin-right:0}.swagger-ui .mr1-m{margin-right:.25rem}.swagger-ui .mr2-m{margin-right:.5rem}.swagger-ui .mr3-m{margin-right:1rem}.swagger-ui .mr4-m{margin-right:2rem}.swagger-ui .mr5-m{margin-right:4rem}.swagger-ui .mr6-m{margin-right:8rem}.swagger-ui .mr7-m{margin-right:16rem}.swagger-ui .mb0-m{margin-bottom:0}.swagger-ui .mb1-m{margin-bottom:.25rem}.swagger-ui .mb2-m{margin-bottom:.5rem}.swagger-ui .mb3-m{margin-bottom:1rem}.swagger-ui .mb4-m{margin-bottom:2rem}.swagger-ui .mb5-m{margin-bottom:4rem}.swagger-ui .mb6-m{margin-bottom:8rem}.swagger-ui .mb7-m{margin-bottom:16rem}.swagger-ui .mt0-m{margin-top:0}.swagger-ui .mt1-m{margin-top:.25rem}.swagger-ui .mt2-m{margin-top:.5rem}.swagger-ui .mt3-m{margin-top:1rem}.swagger-ui .mt4-m{margin-top:2rem}.swagger-ui .mt5-m{margin-top:4rem}.swagger-ui .mt6-m{margin-top:8rem}.swagger-ui .mt7-m{margin-top:16rem}.swagger-ui .mv0-m{margin-bottom:0;margin-top:0}.swagger-ui .mv1-m{margin-bottom:.25rem;margin-top:.25rem}.swagger-ui .mv2-m{margin-bottom:.5rem;margin-top:.5rem}.swagger-ui .mv3-m{margin-bottom:1rem;margin-top:1rem}.swagger-ui .mv4-m{margin-bottom:2rem;margin-top:2rem}.swagger-ui .mv5-m{margin-bottom:4rem;margin-top:4rem}.swagger-ui .mv6-m{margin-bottom:8rem;margin-top:8rem}.swagger-ui .mv7-m{margin-bottom:16rem;margin-top:16rem}.swagger-ui .mh0-m{margin-left:0;margin-right:0}.swagger-ui .mh1-m{margin-left:.25rem;margin-right:.25rem}.swagger-ui .mh2-m{margin-left:.5rem;margin-right:.5rem}.swagger-ui .mh3-m{margin-left:1rem;margin-right:1rem}.swagger-ui .mh4-m{margin-left:2rem;margin-right:2rem}.swagger-ui .mh5-m{margin-left:4rem;margin-right:4rem}.swagger-ui .mh6-m{margin-left:8rem;margin-right:8rem}.swagger-ui .mh7-m{margin-left:16rem;margin-right:16rem}}@media screen and (min-width:60em){.swagger-ui .pa0-l{padding:0}.swagger-ui .pa1-l{padding:.25rem}.swagger-ui .pa2-l{padding:.5rem}.swagger-ui .pa3-l{padding:1rem}.swagger-ui .pa4-l{padding:2rem}.swagger-ui .pa5-l{padding:4rem}.swagger-ui .pa6-l{padding:8rem}.swagger-ui .pa7-l{padding:16rem}.swagger-ui .pl0-l{padding-left:0}.swagger-ui .pl1-l{padding-left:.25rem}.swagger-ui .pl2-l{padding-left:.5rem}.swagger-ui .pl3-l{padding-left:1rem}.swagger-ui .pl4-l{padding-left:2rem}.swagger-ui .pl5-l{padding-left:4rem}.swagger-ui .pl6-l{padding-left:8rem}.swagger-ui .pl7-l{padding-left:16rem}.swagger-ui .pr0-l{padding-right:0}.swagger-ui .pr1-l{padding-right:.25rem}.swagger-ui .pr2-l{padding-right:.5rem}.swagger-ui .pr3-l{padding-right:1rem}.swagger-ui .pr4-l{padding-right:2rem}.swagger-ui .pr5-l{padding-right:4rem}.swagger-ui .pr6-l{padding-right:8rem}.swagger-ui .pr7-l{padding-right:16rem}.swagger-ui .pb0-l{padding-bottom:0}.swagger-ui .pb1-l{padding-bottom:.25rem}.swagger-ui .pb2-l{padding-bottom:.5rem}.swagger-ui .pb3-l{padding-bottom:1rem}.swagger-ui .pb4-l{padding-bottom:2rem}.swagger-ui .pb5-l{padding-bottom:4rem}.swagger-ui .pb6-l{padding-bottom:8rem}.swagger-ui .pb7-l{padding-bottom:16rem}.swagger-ui .pt0-l{padding-top:0}.swagger-ui .pt1-l{padding-top:.25rem}.swagger-ui .pt2-l{padding-top:.5rem}.swagger-ui .pt3-l{padding-top:1rem}.swagger-ui .pt4-l{padding-top:2rem}.swagger-ui .pt5-l{padding-top:4rem}.swagger-ui .pt6-l{padding-top:8rem}.swagger-ui .pt7-l{padding-top:16rem}.swagger-ui .pv0-l{padding-bottom:0;padding-top:0}.swagger-ui .pv1-l{padding-bottom:.25rem;padding-top:.25rem}.swagger-ui .pv2-l{padding-bottom:.5rem;padding-top:.5rem}.swagger-ui .pv3-l{padding-bottom:1rem;padding-top:1rem}.swagger-ui .pv4-l{padding-bottom:2rem;padding-top:2rem}.swagger-ui .pv5-l{padding-bottom:4rem;padding-top:4rem}.swagger-ui .pv6-l{padding-bottom:8rem;padding-top:8rem}.swagger-ui .pv7-l{padding-bottom:16rem;padding-top:16rem}.swagger-ui .ph0-l{padding-left:0;padding-right:0}.swagger-ui .ph1-l{padding-left:.25rem;padding-right:.25rem}.swagger-ui .ph2-l{padding-left:.5rem;padding-right:.5rem}.swagger-ui .ph3-l{padding-left:1rem;padding-right:1rem}.swagger-ui .ph4-l{padding-left:2rem;padding-right:2rem}.swagger-ui .ph5-l{padding-left:4rem;padding-right:4rem}.swagger-ui .ph6-l{padding-left:8rem;padding-right:8rem}.swagger-ui .ph7-l{padding-left:16rem;padding-right:16rem}.swagger-ui .ma0-l{margin:0}.swagger-ui .ma1-l{margin:.25rem}.swagger-ui .ma2-l{margin:.5rem}.swagger-ui .ma3-l{margin:1rem}.swagger-ui .ma4-l{margin:2rem}.swagger-ui .ma5-l{margin:4rem}.swagger-ui .ma6-l{margin:8rem}.swagger-ui .ma7-l{margin:16rem}.swagger-ui .ml0-l{margin-left:0}.swagger-ui .ml1-l{margin-left:.25rem}.swagger-ui .ml2-l{margin-left:.5rem}.swagger-ui .ml3-l{margin-left:1rem}.swagger-ui .ml4-l{margin-left:2rem}.swagger-ui .ml5-l{margin-left:4rem}.swagger-ui .ml6-l{margin-left:8rem}.swagger-ui .ml7-l{margin-left:16rem}.swagger-ui .mr0-l{margin-right:0}.swagger-ui .mr1-l{margin-right:.25rem}.swagger-ui .mr2-l{margin-right:.5rem}.swagger-ui .mr3-l{margin-right:1rem}.swagger-ui .mr4-l{margin-right:2rem}.swagger-ui .mr5-l{margin-right:4rem}.swagger-ui .mr6-l{margin-right:8rem}.swagger-ui .mr7-l{margin-right:16rem}.swagger-ui .mb0-l{margin-bottom:0}.swagger-ui .mb1-l{margin-bottom:.25rem}.swagger-ui .mb2-l{margin-bottom:.5rem}.swagger-ui .mb3-l{margin-bottom:1rem}.swagger-ui .mb4-l{margin-bottom:2rem}.swagger-ui .mb5-l{margin-bottom:4rem}.swagger-ui .mb6-l{margin-bottom:8rem}.swagger-ui .mb7-l{margin-bottom:16rem}.swagger-ui .mt0-l{margin-top:0}.swagger-ui .mt1-l{margin-top:.25rem}.swagger-ui .mt2-l{margin-top:.5rem}.swagger-ui .mt3-l{margin-top:1rem}.swagger-ui .mt4-l{margin-top:2rem}.swagger-ui .mt5-l{margin-top:4rem}.swagger-ui .mt6-l{margin-top:8rem}.swagger-ui .mt7-l{margin-top:16rem}.swagger-ui .mv0-l{margin-bottom:0;margin-top:0}.swagger-ui .mv1-l{margin-bottom:.25rem;margin-top:.25rem}.swagger-ui .mv2-l{margin-bottom:.5rem;margin-top:.5rem}.swagger-ui .mv3-l{margin-bottom:1rem;margin-top:1rem}.swagger-ui .mv4-l{margin-bottom:2rem;margin-top:2rem}.swagger-ui .mv5-l{margin-bottom:4rem;margin-top:4rem}.swagger-ui .mv6-l{margin-bottom:8rem;margin-top:8rem}.swagger-ui .mv7-l{margin-bottom:16rem;margin-top:16rem}.swagger-ui .mh0-l{margin-left:0;margin-right:0}.swagger-ui .mh1-l{margin-left:.25rem;margin-right:.25rem}.swagger-ui .mh2-l{margin-left:.5rem;margin-right:.5rem}.swagger-ui .mh3-l{margin-left:1rem;margin-right:1rem}.swagger-ui .mh4-l{margin-left:2rem;margin-right:2rem}.swagger-ui .mh5-l{margin-left:4rem;margin-right:4rem}.swagger-ui .mh6-l{margin-left:8rem;margin-right:8rem}.swagger-ui .mh7-l{margin-left:16rem;margin-right:16rem}}.swagger-ui .na1{margin:-.25rem}.swagger-ui .na2{margin:-.5rem}.swagger-ui .na3{margin:-1rem}.swagger-ui .na4{margin:-2rem}.swagger-ui .na5{margin:-4rem}.swagger-ui .na6{margin:-8rem}.swagger-ui .na7{margin:-16rem}.swagger-ui .nl1{margin-left:-.25rem}.swagger-ui .nl2{margin-left:-.5rem}.swagger-ui .nl3{margin-left:-1rem}.swagger-ui .nl4{margin-left:-2rem}.swagger-ui .nl5{margin-left:-4rem}.swagger-ui .nl6{margin-left:-8rem}.swagger-ui .nl7{margin-left:-16rem}.swagger-ui .nr1{margin-right:-.25rem}.swagger-ui .nr2{margin-right:-.5rem}.swagger-ui .nr3{margin-right:-1rem}.swagger-ui .nr4{margin-right:-2rem}.swagger-ui .nr5{margin-right:-4rem}.swagger-ui .nr6{margin-right:-8rem}.swagger-ui .nr7{margin-right:-16rem}.swagger-ui .nb1{margin-bottom:-.25rem}.swagger-ui .nb2{margin-bottom:-.5rem}.swagger-ui .nb3{margin-bottom:-1rem}.swagger-ui .nb4{margin-bottom:-2rem}.swagger-ui .nb5{margin-bottom:-4rem}.swagger-ui .nb6{margin-bottom:-8rem}.swagger-ui .nb7{margin-bottom:-16rem}.swagger-ui .nt1{margin-top:-.25rem}.swagger-ui .nt2{margin-top:-.5rem}.swagger-ui .nt3{margin-top:-1rem}.swagger-ui .nt4{margin-top:-2rem}.swagger-ui .nt5{margin-top:-4rem}.swagger-ui .nt6{margin-top:-8rem}.swagger-ui .nt7{margin-top:-16rem}@media screen and (min-width:30em){.swagger-ui .na1-ns{margin:-.25rem}.swagger-ui .na2-ns{margin:-.5rem}.swagger-ui .na3-ns{margin:-1rem}.swagger-ui .na4-ns{margin:-2rem}.swagger-ui .na5-ns{margin:-4rem}.swagger-ui .na6-ns{margin:-8rem}.swagger-ui .na7-ns{margin:-16rem}.swagger-ui .nl1-ns{margin-left:-.25rem}.swagger-ui .nl2-ns{margin-left:-.5rem}.swagger-ui .nl3-ns{margin-left:-1rem}.swagger-ui .nl4-ns{margin-left:-2rem}.swagger-ui .nl5-ns{margin-left:-4rem}.swagger-ui .nl6-ns{margin-left:-8rem}.swagger-ui .nl7-ns{margin-left:-16rem}.swagger-ui .nr1-ns{margin-right:-.25rem}.swagger-ui .nr2-ns{margin-right:-.5rem}.swagger-ui .nr3-ns{margin-right:-1rem}.swagger-ui .nr4-ns{margin-right:-2rem}.swagger-ui .nr5-ns{margin-right:-4rem}.swagger-ui .nr6-ns{margin-right:-8rem}.swagger-ui .nr7-ns{margin-right:-16rem}.swagger-ui .nb1-ns{margin-bottom:-.25rem}.swagger-ui .nb2-ns{margin-bottom:-.5rem}.swagger-ui .nb3-ns{margin-bottom:-1rem}.swagger-ui .nb4-ns{margin-bottom:-2rem}.swagger-ui .nb5-ns{margin-bottom:-4rem}.swagger-ui .nb6-ns{margin-bottom:-8rem}.swagger-ui .nb7-ns{margin-bottom:-16rem}.swagger-ui .nt1-ns{margin-top:-.25rem}.swagger-ui .nt2-ns{margin-top:-.5rem}.swagger-ui .nt3-ns{margin-top:-1rem}.swagger-ui .nt4-ns{margin-top:-2rem}.swagger-ui .nt5-ns{margin-top:-4rem}.swagger-ui .nt6-ns{margin-top:-8rem}.swagger-ui .nt7-ns{margin-top:-16rem}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .na1-m{margin:-.25rem}.swagger-ui .na2-m{margin:-.5rem}.swagger-ui .na3-m{margin:-1rem}.swagger-ui .na4-m{margin:-2rem}.swagger-ui .na5-m{margin:-4rem}.swagger-ui .na6-m{margin:-8rem}.swagger-ui .na7-m{margin:-16rem}.swagger-ui .nl1-m{margin-left:-.25rem}.swagger-ui .nl2-m{margin-left:-.5rem}.swagger-ui .nl3-m{margin-left:-1rem}.swagger-ui .nl4-m{margin-left:-2rem}.swagger-ui .nl5-m{margin-left:-4rem}.swagger-ui .nl6-m{margin-left:-8rem}.swagger-ui .nl7-m{margin-left:-16rem}.swagger-ui .nr1-m{margin-right:-.25rem}.swagger-ui .nr2-m{margin-right:-.5rem}.swagger-ui .nr3-m{margin-right:-1rem}.swagger-ui .nr4-m{margin-right:-2rem}.swagger-ui .nr5-m{margin-right:-4rem}.swagger-ui .nr6-m{margin-right:-8rem}.swagger-ui .nr7-m{margin-right:-16rem}.swagger-ui .nb1-m{margin-bottom:-.25rem}.swagger-ui .nb2-m{margin-bottom:-.5rem}.swagger-ui .nb3-m{margin-bottom:-1rem}.swagger-ui .nb4-m{margin-bottom:-2rem}.swagger-ui .nb5-m{margin-bottom:-4rem}.swagger-ui .nb6-m{margin-bottom:-8rem}.swagger-ui .nb7-m{margin-bottom:-16rem}.swagger-ui .nt1-m{margin-top:-.25rem}.swagger-ui .nt2-m{margin-top:-.5rem}.swagger-ui .nt3-m{margin-top:-1rem}.swagger-ui .nt4-m{margin-top:-2rem}.swagger-ui .nt5-m{margin-top:-4rem}.swagger-ui .nt6-m{margin-top:-8rem}.swagger-ui .nt7-m{margin-top:-16rem}}@media screen and (min-width:60em){.swagger-ui .na1-l{margin:-.25rem}.swagger-ui .na2-l{margin:-.5rem}.swagger-ui .na3-l{margin:-1rem}.swagger-ui .na4-l{margin:-2rem}.swagger-ui .na5-l{margin:-4rem}.swagger-ui .na6-l{margin:-8rem}.swagger-ui .na7-l{margin:-16rem}.swagger-ui .nl1-l{margin-left:-.25rem}.swagger-ui .nl2-l{margin-left:-.5rem}.swagger-ui .nl3-l{margin-left:-1rem}.swagger-ui .nl4-l{margin-left:-2rem}.swagger-ui .nl5-l{margin-left:-4rem}.swagger-ui .nl6-l{margin-left:-8rem}.swagger-ui .nl7-l{margin-left:-16rem}.swagger-ui .nr1-l{margin-right:-.25rem}.swagger-ui .nr2-l{margin-right:-.5rem}.swagger-ui .nr3-l{margin-right:-1rem}.swagger-ui .nr4-l{margin-right:-2rem}.swagger-ui .nr5-l{margin-right:-4rem}.swagger-ui .nr6-l{margin-right:-8rem}.swagger-ui .nr7-l{margin-right:-16rem}.swagger-ui .nb1-l{margin-bottom:-.25rem}.swagger-ui .nb2-l{margin-bottom:-.5rem}.swagger-ui .nb3-l{margin-bottom:-1rem}.swagger-ui .nb4-l{margin-bottom:-2rem}.swagger-ui .nb5-l{margin-bottom:-4rem}.swagger-ui .nb6-l{margin-bottom:-8rem}.swagger-ui .nb7-l{margin-bottom:-16rem}.swagger-ui .nt1-l{margin-top:-.25rem}.swagger-ui .nt2-l{margin-top:-.5rem}.swagger-ui .nt3-l{margin-top:-1rem}.swagger-ui .nt4-l{margin-top:-2rem}.swagger-ui .nt5-l{margin-top:-4rem}.swagger-ui .nt6-l{margin-top:-8rem}.swagger-ui .nt7-l{margin-top:-16rem}}.swagger-ui .collapse{border-collapse:collapse;border-spacing:0}.swagger-ui .striped--light-silver:nth-child(odd){background-color:#aaa}.swagger-ui .striped--moon-gray:nth-child(odd){background-color:#ccc}.swagger-ui .striped--light-gray:nth-child(odd){background-color:#eee}.swagger-ui .striped--near-white:nth-child(odd){background-color:#f4f4f4}.swagger-ui .stripe-light:nth-child(odd){background-color:hsla(0,0%,100%,.1)}.swagger-ui .stripe-dark:nth-child(odd){background-color:rgba(0,0,0,.1)}.swagger-ui .strike{text-decoration:line-through}.swagger-ui .underline{text-decoration:underline}.swagger-ui .no-underline{text-decoration:none}@media screen and (min-width:30em){.swagger-ui .strike-ns{text-decoration:line-through}.swagger-ui .underline-ns{text-decoration:underline}.swagger-ui .no-underline-ns{text-decoration:none}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .strike-m{text-decoration:line-through}.swagger-ui .underline-m{text-decoration:underline}.swagger-ui .no-underline-m{text-decoration:none}}@media screen and (min-width:60em){.swagger-ui .strike-l{text-decoration:line-through}.swagger-ui .underline-l{text-decoration:underline}.swagger-ui .no-underline-l{text-decoration:none}}.swagger-ui .tl{text-align:left}.swagger-ui .tr{text-align:right}.swagger-ui .tc{text-align:center}.swagger-ui .tj{text-align:justify}@media screen and (min-width:30em){.swagger-ui .tl-ns{text-align:left}.swagger-ui .tr-ns{text-align:right}.swagger-ui .tc-ns{text-align:center}.swagger-ui .tj-ns{text-align:justify}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .tl-m{text-align:left}.swagger-ui .tr-m{text-align:right}.swagger-ui .tc-m{text-align:center}.swagger-ui .tj-m{text-align:justify}}@media screen and (min-width:60em){.swagger-ui .tl-l{text-align:left}.swagger-ui .tr-l{text-align:right}.swagger-ui .tc-l{text-align:center}.swagger-ui .tj-l{text-align:justify}}.swagger-ui .ttc{text-transform:capitalize}.swagger-ui .ttl{text-transform:lowercase}.swagger-ui .ttu{text-transform:uppercase}.swagger-ui .ttn{text-transform:none}@media screen and (min-width:30em){.swagger-ui .ttc-ns{text-transform:capitalize}.swagger-ui .ttl-ns{text-transform:lowercase}.swagger-ui .ttu-ns{text-transform:uppercase}.swagger-ui .ttn-ns{text-transform:none}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .ttc-m{text-transform:capitalize}.swagger-ui .ttl-m{text-transform:lowercase}.swagger-ui .ttu-m{text-transform:uppercase}.swagger-ui .ttn-m{text-transform:none}}@media screen and (min-width:60em){.swagger-ui .ttc-l{text-transform:capitalize}.swagger-ui .ttl-l{text-transform:lowercase}.swagger-ui .ttu-l{text-transform:uppercase}.swagger-ui .ttn-l{text-transform:none}}.swagger-ui .f-6,.swagger-ui .f-headline{font-size:6rem}.swagger-ui .f-5,.swagger-ui .f-subheadline{font-size:5rem}.swagger-ui .f1{font-size:3rem}.swagger-ui .f2{font-size:2.25rem}.swagger-ui .f3{font-size:1.5rem}.swagger-ui .f4{font-size:1.25rem}.swagger-ui .f5{font-size:1rem}.swagger-ui .f6{font-size:.875rem}.swagger-ui .f7{font-size:.75rem}@media screen and (min-width:30em){.swagger-ui .f-6-ns,.swagger-ui .f-headline-ns{font-size:6rem}.swagger-ui .f-5-ns,.swagger-ui .f-subheadline-ns{font-size:5rem}.swagger-ui .f1-ns{font-size:3rem}.swagger-ui .f2-ns{font-size:2.25rem}.swagger-ui .f3-ns{font-size:1.5rem}.swagger-ui .f4-ns{font-size:1.25rem}.swagger-ui .f5-ns{font-size:1rem}.swagger-ui .f6-ns{font-size:.875rem}.swagger-ui .f7-ns{font-size:.75rem}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .f-6-m,.swagger-ui .f-headline-m{font-size:6rem}.swagger-ui .f-5-m,.swagger-ui .f-subheadline-m{font-size:5rem}.swagger-ui .f1-m{font-size:3rem}.swagger-ui .f2-m{font-size:2.25rem}.swagger-ui .f3-m{font-size:1.5rem}.swagger-ui .f4-m{font-size:1.25rem}.swagger-ui .f5-m{font-size:1rem}.swagger-ui .f6-m{font-size:.875rem}.swagger-ui .f7-m{font-size:.75rem}}@media screen and (min-width:60em){.swagger-ui .f-6-l,.swagger-ui .f-headline-l{font-size:6rem}.swagger-ui .f-5-l,.swagger-ui .f-subheadline-l{font-size:5rem}.swagger-ui .f1-l{font-size:3rem}.swagger-ui .f2-l{font-size:2.25rem}.swagger-ui .f3-l{font-size:1.5rem}.swagger-ui .f4-l{font-size:1.25rem}.swagger-ui .f5-l{font-size:1rem}.swagger-ui .f6-l{font-size:.875rem}.swagger-ui .f7-l{font-size:.75rem}}.swagger-ui .measure{max-width:30em}.swagger-ui .measure-wide{max-width:34em}.swagger-ui .measure-narrow{max-width:20em}.swagger-ui .indent{margin-bottom:0;margin-top:0;text-indent:1em}.swagger-ui .small-caps{-webkit-font-feature-settings:"smcp";font-feature-settings:"smcp";font-variant:small-caps}.swagger-ui .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media screen and (min-width:30em){.swagger-ui .measure-ns{max-width:30em}.swagger-ui .measure-wide-ns{max-width:34em}.swagger-ui .measure-narrow-ns{max-width:20em}.swagger-ui .indent-ns{margin-bottom:0;margin-top:0;text-indent:1em}.swagger-ui .small-caps-ns{-webkit-font-feature-settings:"smcp";font-feature-settings:"smcp";font-variant:small-caps}.swagger-ui .truncate-ns{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .measure-m{max-width:30em}.swagger-ui .measure-wide-m{max-width:34em}.swagger-ui .measure-narrow-m{max-width:20em}.swagger-ui .indent-m{margin-bottom:0;margin-top:0;text-indent:1em}.swagger-ui .small-caps-m{-webkit-font-feature-settings:"smcp";font-feature-settings:"smcp";font-variant:small-caps}.swagger-ui .truncate-m{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media screen and (min-width:60em){.swagger-ui .measure-l{max-width:30em}.swagger-ui .measure-wide-l{max-width:34em}.swagger-ui .measure-narrow-l{max-width:20em}.swagger-ui .indent-l{margin-bottom:0;margin-top:0;text-indent:1em}.swagger-ui .small-caps-l{-webkit-font-feature-settings:"smcp";font-feature-settings:"smcp";font-variant:small-caps}.swagger-ui .truncate-l{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.swagger-ui .overflow-container{overflow-y:scroll}.swagger-ui .center{margin-left:auto;margin-right:auto}.swagger-ui .mr-auto{margin-right:auto}.swagger-ui .ml-auto{margin-left:auto}@media screen and (min-width:30em){.swagger-ui .center-ns{margin-left:auto;margin-right:auto}.swagger-ui .mr-auto-ns{margin-right:auto}.swagger-ui .ml-auto-ns{margin-left:auto}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .center-m{margin-left:auto;margin-right:auto}.swagger-ui .mr-auto-m{margin-right:auto}.swagger-ui .ml-auto-m{margin-left:auto}}@media screen and (min-width:60em){.swagger-ui .center-l{margin-left:auto;margin-right:auto}.swagger-ui .mr-auto-l{margin-right:auto}.swagger-ui .ml-auto-l{margin-left:auto}}.swagger-ui .clip{clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);position:fixed!important;_position:absolute!important}@media screen and (min-width:30em){.swagger-ui .clip-ns{clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);position:fixed!important;_position:absolute!important}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .clip-m{clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);position:fixed!important;_position:absolute!important}}@media screen and (min-width:60em){.swagger-ui .clip-l{clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);position:fixed!important;_position:absolute!important}}.swagger-ui .ws-normal{white-space:normal}.swagger-ui .nowrap{white-space:nowrap}.swagger-ui .pre{white-space:pre}@media screen and (min-width:30em){.swagger-ui .ws-normal-ns{white-space:normal}.swagger-ui .nowrap-ns{white-space:nowrap}.swagger-ui .pre-ns{white-space:pre}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .ws-normal-m{white-space:normal}.swagger-ui .nowrap-m{white-space:nowrap}.swagger-ui .pre-m{white-space:pre}}@media screen and (min-width:60em){.swagger-ui .ws-normal-l{white-space:normal}.swagger-ui .nowrap-l{white-space:nowrap}.swagger-ui .pre-l{white-space:pre}}.swagger-ui .v-base{vertical-align:baseline}.swagger-ui .v-mid{vertical-align:middle}.swagger-ui .v-top{vertical-align:top}.swagger-ui .v-btm{vertical-align:bottom}@media screen and (min-width:30em){.swagger-ui .v-base-ns{vertical-align:baseline}.swagger-ui .v-mid-ns{vertical-align:middle}.swagger-ui .v-top-ns{vertical-align:top}.swagger-ui .v-btm-ns{vertical-align:bottom}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .v-base-m{vertical-align:baseline}.swagger-ui .v-mid-m{vertical-align:middle}.swagger-ui .v-top-m{vertical-align:top}.swagger-ui .v-btm-m{vertical-align:bottom}}@media screen and (min-width:60em){.swagger-ui .v-base-l{vertical-align:baseline}.swagger-ui .v-mid-l{vertical-align:middle}.swagger-ui .v-top-l{vertical-align:top}.swagger-ui .v-btm-l{vertical-align:bottom}}.swagger-ui .dim{opacity:1}.swagger-ui .dim,.swagger-ui .dim:focus,.swagger-ui .dim:hover{-webkit-transition:opacity .15s ease-in;transition:opacity .15s ease-in}.swagger-ui .dim:focus,.swagger-ui .dim:hover{opacity:.5}.swagger-ui .dim:active{opacity:.8;-webkit-transition:opacity .15s ease-out;transition:opacity .15s ease-out}.swagger-ui .glow,.swagger-ui .glow:focus,.swagger-ui .glow:hover{-webkit-transition:opacity .15s ease-in;transition:opacity .15s ease-in}.swagger-ui .glow:focus,.swagger-ui .glow:hover{opacity:1}.swagger-ui .hide-child .child{opacity:0;-webkit-transition:opacity .15s ease-in;transition:opacity .15s ease-in}.swagger-ui .hide-child:active .child,.swagger-ui .hide-child:focus .child,.swagger-ui .hide-child:hover .child{opacity:1;-webkit-transition:opacity .15s ease-in;transition:opacity .15s ease-in}.swagger-ui .underline-hover:focus,.swagger-ui .underline-hover:hover{text-decoration:underline}.swagger-ui .grow{-moz-osx-font-smoothing:grayscale;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-transition:-webkit-transform .25s ease-out;transition:-webkit-transform .25s ease-out;transition:transform .25s ease-out;transition:transform .25s ease-out,-webkit-transform .25s ease-out}.swagger-ui .grow:focus,.swagger-ui .grow:hover{-webkit-transform:scale(1.05);transform:scale(1.05)}.swagger-ui .grow:active{-webkit-transform:scale(.9);transform:scale(.9)}.swagger-ui .grow-large{-moz-osx-font-smoothing:grayscale;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-transition:-webkit-transform .25s ease-in-out;transition:-webkit-transform .25s ease-in-out;transition:transform .25s ease-in-out;transition:transform .25s ease-in-out,-webkit-transform .25s ease-in-out}.swagger-ui .grow-large:focus,.swagger-ui .grow-large:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}.swagger-ui .grow-large:active{-webkit-transform:scale(.95);transform:scale(.95)}.swagger-ui .pointer:hover{cursor:pointer}.swagger-ui .shadow-hover{cursor:pointer;position:relative;-webkit-transition:all .5s cubic-bezier(.165,.84,.44,1);transition:all .5s cubic-bezier(.165,.84,.44,1)}.swagger-ui .shadow-hover::after{border-radius:inherit;-webkit-box-shadow:0 0 16px 2px rgba(0,0,0,.2);box-shadow:0 0 16px 2px rgba(0,0,0,.2);content:"";height:100%;left:0;opacity:0;position:absolute;top:0;-webkit-transition:opacity .5s cubic-bezier(.165,.84,.44,1);transition:opacity .5s cubic-bezier(.165,.84,.44,1);width:100%;z-index:-1}.swagger-ui .shadow-hover:focus::after,.swagger-ui .shadow-hover:hover::after{opacity:1}.swagger-ui .bg-animate,.swagger-ui .bg-animate:focus,.swagger-ui .bg-animate:hover{-webkit-transition:background-color .15s ease-in-out;transition:background-color .15s ease-in-out}.swagger-ui .z-0{z-index:0}.swagger-ui .z-1{z-index:1}.swagger-ui .z-2{z-index:2}.swagger-ui .z-3{z-index:3}.swagger-ui .z-4{z-index:4}.swagger-ui .z-5{z-index:5}.swagger-ui .z-999{z-index:999}.swagger-ui .z-9999{z-index:9999}.swagger-ui .z-max{z-index:2147483647}.swagger-ui .z-inherit{z-index:inherit}.swagger-ui .z-initial{z-index:auto}.swagger-ui .z-unset{z-index:unset}.swagger-ui .nested-copy-line-height ol,.swagger-ui .nested-copy-line-height p,.swagger-ui .nested-copy-line-height ul{line-height:1.5}.swagger-ui .nested-headline-line-height h1,.swagger-ui .nested-headline-line-height h2,.swagger-ui .nested-headline-line-height h3,.swagger-ui .nested-headline-line-height h4,.swagger-ui .nested-headline-line-height h5,.swagger-ui .nested-headline-line-height h6{line-height:1.25}.swagger-ui .nested-list-reset ol,.swagger-ui .nested-list-reset ul{list-style-type:none;margin-left:0;padding-left:0}.swagger-ui .nested-copy-indent p+p{margin-bottom:0;margin-top:0;text-indent:.1em}.swagger-ui .nested-copy-seperator p+p{margin-top:1.5em}.swagger-ui .nested-img img{display:block;max-width:100%;width:100%}.swagger-ui .nested-links a{color:#357edd;-webkit-transition:color .15s ease-in;transition:color .15s ease-in}.swagger-ui .nested-links a:focus,.swagger-ui .nested-links a:hover{color:#96ccff;-webkit-transition:color .15s ease-in;transition:color .15s ease-in}.swagger-ui .wrapper{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 auto;max-width:1460px;padding:0 20px;width:100%}.swagger-ui .opblock-tag-section{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.swagger-ui .try-out.btn-group{padding:0}.swagger-ui .opblock-tag{-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-bottom:1px solid rgba(59,65,81,.3);cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;padding:10px 20px 10px 10px;-webkit-transition:all .2s;transition:all .2s}.swagger-ui .opblock-tag:hover{background:rgba(0,0,0,.02)}.swagger-ui .opblock-tag{color:#3b4151;font-family:sans-serif;font-size:24px;margin:0 0 5px}.swagger-ui .opblock-tag.no-desc span{-webkit-box-flex:1;-ms-flex:1;flex:1}.swagger-ui .opblock-tag svg{-webkit-transition:all .4s;transition:all .4s}.swagger-ui .opblock-tag small{color:#3b4151;-webkit-box-flex:1;-ms-flex:1;flex:1;font-family:sans-serif;font-size:14px;font-weight:400;padding:0 10px}.swagger-ui .parameter__type{color:#3b4151;font-family:monospace;font-size:12px;font-weight:600;padding:5px 0}.swagger-ui .parameter-controls{margin-top:.75em}.swagger-ui .examples__title{display:block;font-size:1.1em;font-weight:700;margin-bottom:.75em}.swagger-ui .examples__section{margin-top:1.5em}.swagger-ui .examples__section-header{font-size:.9rem;font-weight:700;margin-bottom:.5rem}.swagger-ui .examples-select{display:inline-block;margin-bottom:.75em}.swagger-ui .examples-select .examples-select-element{width:100%}.swagger-ui .examples-select__section-label{font-size:.9rem;font-weight:700;margin-right:.5rem}.swagger-ui .example__section{margin-top:1.5em}.swagger-ui .example__section-header{font-size:.9rem;font-weight:700;margin-bottom:.5rem}.swagger-ui .view-line-link{cursor:pointer;margin:0 5px;position:relative;top:3px;-webkit-transition:all .5s;transition:all .5s;width:20px}.swagger-ui .opblock{border:1px solid #000;border-radius:4px;-webkit-box-shadow:0 0 3px rgba(0,0,0,.19);box-shadow:0 0 3px rgba(0,0,0,.19);margin:0 0 15px}.swagger-ui .opblock .tab-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1}.swagger-ui .opblock .tab-header .tab-item{cursor:pointer;padding:0 40px}.swagger-ui .opblock .tab-header .tab-item:first-of-type{padding:0 40px 0 0}.swagger-ui .opblock .tab-header .tab-item.active h4 span{position:relative}.swagger-ui .opblock .tab-header .tab-item.active h4 span::after{background:grey;bottom:-15px;content:"";height:4px;left:50%;position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:120%}.swagger-ui .opblock.is-open .opblock-summary{border-bottom:1px solid #000}.swagger-ui .opblock .opblock-section-header{background:hsla(0,0%,100%,.8);-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1);min-height:50px;padding:8px 20px}.swagger-ui .opblock .opblock-section-header,.swagger-ui .opblock .opblock-section-header>label{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.swagger-ui .opblock .opblock-section-header>label{color:#3b4151;font-family:sans-serif;font-size:12px;font-weight:700;margin:0 0 0 auto}.swagger-ui .opblock .opblock-section-header>label>span{padding:0 10px 0 0}.swagger-ui .opblock .opblock-section-header h4{color:#3b4151;-webkit-box-flex:1;-ms-flex:1;flex:1;font-family:sans-serif;font-size:14px;margin:0}.swagger-ui .opblock .opblock-summary-method{background:#000;border-radius:3px;color:#fff;font-family:sans-serif;font-size:14px;font-weight:700;min-width:80px;padding:6px 15px;text-align:center;text-shadow:0 1px 0 rgba(0,0,0,.1)}.swagger-ui .opblock .opblock-summary-operation-id,.swagger-ui .opblock .opblock-summary-path,.swagger-ui .opblock .opblock-summary-path__deprecated{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#3b4151;display:-webkit-box;display:-ms-flexbox;display:flex;font-family:monospace;font-size:16px;font-weight:600;padding:0 10px;word-break:break-word}@media (max-width:768px){.swagger-ui .opblock .opblock-summary-operation-id,.swagger-ui .opblock .opblock-summary-path,.swagger-ui .opblock .opblock-summary-path__deprecated{font-size:12px}}.swagger-ui .opblock .opblock-summary-path{-ms-flex-negative:0;flex-shrink:0;max-width:calc(100% - 110px - 15rem)}.swagger-ui .opblock .opblock-summary-path__deprecated{text-decoration:line-through}.swagger-ui .opblock .opblock-summary-operation-id{font-size:14px}.swagger-ui .opblock .opblock-summary-description{color:#3b4151;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;font-family:sans-serif;font-size:13px;word-break:break-word}.swagger-ui .opblock .opblock-summary{-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;padding:5px}.swagger-ui .opblock .opblock-summary .view-line-link{cursor:pointer;margin:0;position:relative;top:2px;-webkit-transition:all .5s;transition:all .5s;width:0}.swagger-ui .opblock .opblock-summary:hover .view-line-link{margin:0 5px;width:18px}.swagger-ui .opblock.opblock-post{background:rgba(73,204,144,.1);border-color:#49cc90}.swagger-ui .opblock.opblock-post .opblock-summary-method{background:#49cc90}.swagger-ui .opblock.opblock-post .opblock-summary{border-color:#49cc90}.swagger-ui .opblock.opblock-post .tab-header .tab-item.active h4 span::after{background:#49cc90}.swagger-ui .opblock.opblock-put{background:rgba(252,161,48,.1);border-color:#fca130}.swagger-ui .opblock.opblock-put .opblock-summary-method{background:#fca130}.swagger-ui .opblock.opblock-put .opblock-summary{border-color:#fca130}.swagger-ui .opblock.opblock-put .tab-header .tab-item.active h4 span::after{background:#fca130}.swagger-ui .opblock.opblock-delete{background:rgba(249,62,62,.1);border-color:#f93e3e}.swagger-ui .opblock.opblock-delete .opblock-summary-method{background:#f93e3e}.swagger-ui .opblock.opblock-delete .opblock-summary{border-color:#f93e3e}.swagger-ui .opblock.opblock-delete .tab-header .tab-item.active h4 span::after{background:#f93e3e}.swagger-ui .opblock.opblock-get{background:rgba(97,175,254,.1);border-color:#61affe}.swagger-ui .opblock.opblock-get .opblock-summary-method{background:#61affe}.swagger-ui .opblock.opblock-get .opblock-summary{border-color:#61affe}.swagger-ui .opblock.opblock-get .tab-header .tab-item.active h4 span::after{background:#61affe}.swagger-ui .opblock.opblock-patch{background:rgba(80,227,194,.1);border-color:#50e3c2}.swagger-ui .opblock.opblock-patch .opblock-summary-method{background:#50e3c2}.swagger-ui .opblock.opblock-patch .opblock-summary{border-color:#50e3c2}.swagger-ui .opblock.opblock-patch .tab-header .tab-item.active h4 span::after{background:#50e3c2}.swagger-ui .opblock.opblock-head{background:rgba(144,18,254,.1);border-color:#9012fe}.swagger-ui .opblock.opblock-head .opblock-summary-method{background:#9012fe}.swagger-ui .opblock.opblock-head .opblock-summary{border-color:#9012fe}.swagger-ui .opblock.opblock-head .tab-header .tab-item.active h4 span::after{background:#9012fe}.swagger-ui .opblock.opblock-options{background:rgba(13,90,167,.1);border-color:#0d5aa7}.swagger-ui .opblock.opblock-options .opblock-summary-method{background:#0d5aa7}.swagger-ui .opblock.opblock-options .opblock-summary{border-color:#0d5aa7}.swagger-ui .opblock.opblock-options .tab-header .tab-item.active h4 span::after{background:#0d5aa7}.swagger-ui .opblock.opblock-deprecated{background:hsla(0,0%,92.2%,.1);border-color:#ebebeb;opacity:.6}.swagger-ui .opblock.opblock-deprecated .opblock-summary-method{background:#ebebeb}.swagger-ui .opblock.opblock-deprecated .opblock-summary{border-color:#ebebeb}.swagger-ui .opblock.opblock-deprecated .tab-header .tab-item.active h4 span::after{background:#ebebeb}.swagger-ui .opblock .opblock-schemes{padding:8px 20px}.swagger-ui .opblock .opblock-schemes .schemes-title{padding:0 10px 0 0}.swagger-ui .filter .operation-filter-input{border:2px solid #d8dde7;margin:20px 0;padding:10px;width:100%}.swagger-ui .download-url-wrapper .failed,.swagger-ui .filter .failed{color:red}.swagger-ui .download-url-wrapper .loading,.swagger-ui .filter .loading{color:#aaa}.swagger-ui .model-example{margin-top:1em}.swagger-ui .tab{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;padding:0}.swagger-ui .tab li{color:#3b4151;cursor:pointer;font-family:sans-serif;font-size:12px;min-width:60px;padding:0}.swagger-ui .tab li:first-of-type{padding-left:0;padding-right:12px;position:relative}.swagger-ui .tab li:first-of-type::after{background:rgba(0,0,0,.2);content:"";height:100%;position:absolute;right:6px;top:0;width:1px}.swagger-ui .tab li.active{font-weight:700}.swagger-ui .opblock-description-wrapper,.swagger-ui .opblock-external-docs-wrapper,.swagger-ui .opblock-title_normal{color:#3b4151;font-family:sans-serif;font-size:12px;margin:0 0 5px;padding:15px 20px}.swagger-ui .opblock-description-wrapper h4,.swagger-ui .opblock-external-docs-wrapper h4,.swagger-ui .opblock-title_normal h4{color:#3b4151;font-family:sans-serif;font-size:12px;margin:0 0 5px}.swagger-ui .opblock-description-wrapper p,.swagger-ui .opblock-external-docs-wrapper p,.swagger-ui .opblock-title_normal p{color:#3b4151;font-family:sans-serif;font-size:14px;margin:0}.swagger-ui .opblock-external-docs-wrapper h4{padding-left:0}.swagger-ui .execute-wrapper{padding:20px;text-align:right}.swagger-ui .execute-wrapper .btn{padding:8px 40px;width:100%}.swagger-ui .body-param-options{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.swagger-ui .body-param-options .body-param-edit{padding:10px 0}.swagger-ui .body-param-options label{padding:8px 0}.swagger-ui .body-param-options label select{margin:3px 0 0}.swagger-ui .responses-inner{padding:20px}.swagger-ui .responses-inner h4,.swagger-ui .responses-inner h5{color:#3b4151;font-family:sans-serif;font-size:12px;margin:10px 0 5px}.swagger-ui .responses-inner .curl{white-space:normal}.swagger-ui .response-col_status{color:#3b4151;font-family:sans-serif;font-size:14px}.swagger-ui .response-col_status .response-undocumented{color:#909090;font-family:monospace;font-size:11px;font-weight:600}.swagger-ui .response-col_links{color:#3b4151;font-family:sans-serif;font-size:14px;max-width:40em;padding-left:2em}.swagger-ui .response-col_links .response-undocumented{color:#909090;font-family:monospace;font-size:11px;font-weight:600}.swagger-ui .response-col_links .operation-link{margin-bottom:1.5em}.swagger-ui .response-col_links .operation-link .description{margin-bottom:.5em}.swagger-ui .opblock-body .opblock-loading-animation{display:block;margin:3em auto}.swagger-ui .opblock-body pre.microlight{word-wrap:break-word;background:#333;border-radius:4px;color:#fff;font-family:monospace;font-size:12px;font-weight:600;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;margin:0;padding:10px;white-space:pre-wrap;word-break:break-all;word-break:break-word}.swagger-ui .opblock-body pre.microlight .headerline{display:block}.swagger-ui .highlight-code{position:relative}.swagger-ui .highlight-code>.microlight{max-height:400px;min-height:6em;overflow-y:auto}.swagger-ui .highlight-code>.microlight code{white-space:pre-wrap!important;word-break:break-all}.swagger-ui .curl-command{position:relative}.swagger-ui .download-contents{background:#7d8293;border-radius:4px;bottom:10px;color:#fff;cursor:pointer;font-family:sans-serif;font-size:14px;font-weight:600;height:30px;padding:5px;position:absolute;right:10px;text-align:center}.swagger-ui .scheme-container{background:#fff;-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.15);box-shadow:0 1px 2px 0 rgba(0,0,0,.15);margin:0 0 20px;padding:30px 0}.swagger-ui .scheme-container .schemes{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;display:-webkit-box;display:-ms-flexbox;display:flex}.swagger-ui .scheme-container .schemes>label{color:#3b4151;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;font-family:sans-serif;font-size:12px;font-weight:700;margin:-20px 15px 0 0}.swagger-ui .scheme-container .schemes>label select{min-width:130px;text-transform:uppercase}.swagger-ui .loading-container{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-top:1em;min-height:1px;padding:40px 0 60px}.swagger-ui .loading-container .loading{position:relative}.swagger-ui .loading-container .loading::after{color:#3b4151;content:"loading";font-family:sans-serif;font-size:10px;font-weight:700;left:50%;position:absolute;text-transform:uppercase;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.swagger-ui .loading-container .loading::before{-webkit-animation:rotation 1s linear infinite,opacity .5s;animation:rotation 1s linear infinite,opacity .5s;-webkit-backface-visibility:hidden;backface-visibility:hidden;border-radius:100%;border:2px solid rgba(85,85,85,.1);border-top-color:rgba(0,0,0,.6);content:"";display:block;height:60px;left:50%;margin:-30px;opacity:1;position:absolute;top:50%;width:60px}@-webkit-keyframes rotation{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes rotation{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.swagger-ui .response-controls{display:-webkit-box;display:-ms-flexbox;display:flex;padding-top:1em}.swagger-ui .response-control-media-type{margin-right:1em}.swagger-ui .response-control-media-type--accept-controller select{border-color:green}.swagger-ui .response-control-media-type__accept-message{color:green;font-size:.7em}.swagger-ui .response-control-examples__title,.swagger-ui .response-control-media-type__title{display:block;font-size:.7em;margin-bottom:.2em}@-webkit-keyframes blinker{50%{opacity:0}}@keyframes blinker{50%{opacity:0}}.swagger-ui .hidden{display:none}.swagger-ui .no-margin{border:none;height:auto;margin:0;padding:0}.swagger-ui .float-right{float:right}.swagger-ui img.full-width{width:100%}.swagger-ui .svg-assets{height:0;position:absolute;width:0}.swagger-ui section h3{color:#3b4151;font-family:sans-serif}.swagger-ui a.nostyle{display:inline}.swagger-ui a.nostyle,.swagger-ui a.nostyle:visited{color:inherit;cursor:pointer;text-decoration:inherit}.swagger-ui .fallback{color:#aaa;padding:1em}.swagger-ui .version-pragma{height:100%;padding:5em 0}.swagger-ui .version-pragma__message{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:1.2em;height:100%;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;line-height:1.5em;padding:0 .6em;text-align:center}.swagger-ui .version-pragma__message>div{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:55ch}.swagger-ui .version-pragma__message code{background-color:#dedede;padding:4px 4px 2px;white-space:pre}.swagger-ui .opblock-link{font-weight:400}.swagger-ui .opblock-link.shown{font-weight:700}.swagger-ui span.token-string{color:#555}.swagger-ui span.token-not-formatted{color:#555;font-weight:700}.swagger-ui .btn{background:transparent;border:2px solid grey;border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1);color:#3b4151;font-family:sans-serif;font-size:14px;font-weight:700;padding:5px 23px;-webkit-transition:all .3s;transition:all .3s}.swagger-ui .btn.btn-sm{font-size:12px;padding:4px 23px}.swagger-ui .btn[disabled]{cursor:not-allowed;opacity:.3}.swagger-ui .btn:hover{-webkit-box-shadow:0 0 5px rgba(0,0,0,.3);box-shadow:0 0 5px rgba(0,0,0,.3)}.swagger-ui .btn.cancel{background-color:transparent;border-color:#ff6060;color:#ff6060;font-family:sans-serif}.swagger-ui .btn.authorize{background-color:transparent;border-color:#49cc90;color:#49cc90;display:inline;line-height:1}.swagger-ui .btn.authorize span{float:left;padding:4px 20px 0 0}.swagger-ui .btn.authorize svg{fill:#49cc90}.swagger-ui .btn.execute{background-color:#4990e2;border-color:#4990e2;color:#fff}.swagger-ui .btn-group{display:-webkit-box;display:-ms-flexbox;display:flex;padding:30px}.swagger-ui .btn-group .btn{-webkit-box-flex:1;-ms-flex:1;flex:1}.swagger-ui .btn-group .btn:first-child{border-radius:4px 0 0 4px}.swagger-ui .btn-group .btn:last-child{border-radius:0 4px 4px 0}.swagger-ui .authorization__btn{background:none;border:none;padding:0 10px}.swagger-ui .authorization__btn.locked{opacity:1}.swagger-ui .authorization__btn.unlocked{opacity:.4}.swagger-ui .model-box-control,.swagger-ui .models-control,.swagger-ui .opblock-summary-control{all:inherit;border-bottom:0;cursor:pointer;-webkit-box-flex:1;-ms-flex:1;flex:1;padding:0}.swagger-ui .model-box-control:focus,.swagger-ui .models-control:focus,.swagger-ui .opblock-summary-control:focus{outline:auto}.swagger-ui .expand-methods,.swagger-ui .expand-operation{background:none;border:none}.swagger-ui .expand-methods svg,.swagger-ui .expand-operation svg{height:20px;width:20px}.swagger-ui .expand-methods{padding:0 10px}.swagger-ui .expand-methods:hover svg{fill:#404040}.swagger-ui .expand-methods svg{fill:#707070;-webkit-transition:all .3s;transition:all .3s}.swagger-ui button{cursor:pointer}.swagger-ui button.invalid{-webkit-animation:shake .4s 1;animation:shake .4s 1;background:#feebeb;border-color:#f93e3e}.swagger-ui .copy-to-clipboard{background:#7d8293;border:none;border-radius:4px;bottom:10px;height:30px;position:absolute;right:100px;width:30px}.swagger-ui .copy-to-clipboard button{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' aria-hidden='true'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M2 13h4v1H2v-1zm5-6H2v1h5V7zm2 3V8l-3 3 3 3v-2h5v-2H9zM4.5 9H2v1h2.5V9zM2 12h2.5v-1H2v1zm9 1h1v2c-.02.28-.11.52-.3.7-.19.18-.42.28-.7.3H1c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1h3c0-1.11.89-2 2-2 1.11 0 2 .89 2 2h3c.55 0 1 .45 1 1v5h-1V6H1v9h10v-2zM2 5h8c0-.55-.45-1-1-1H8c-.55 0-1-.45-1-1s-.45-1-1-1-1 .45-1 1-.45 1-1 1H3c-.55 0-1 .45-1 1z'/%3E%3C/svg%3E") 50% no-repeat;border:none;height:25px;padding-left:25px}.swagger-ui .curl-command .copy-to-clipboard{bottom:5px;height:20px;right:10px;width:20px}.swagger-ui .curl-command .copy-to-clipboard button{height:18px;padding-left:18px}.swagger-ui select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#f7f7f7 url('data:image/svg+xml;charset=utf-8,') right 10px center no-repeat;background-size:20px;border:2px solid #41444e;border-radius:4px;-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.25);box-shadow:0 1px 2px 0 rgba(0,0,0,.25);color:#3b4151;font-family:sans-serif;font-size:14px;font-weight:700;padding:5px 40px 5px 10px}.swagger-ui select[multiple]{background:#f7f7f7;margin:5px 0;padding:5px}.swagger-ui select.invalid{-webkit-animation:shake .4s 1;animation:shake .4s 1;background:#feebeb;border-color:#f93e3e}.swagger-ui .opblock-body select{min-width:230px}@media (max-width:768px){.swagger-ui .opblock-body select{min-width:180px}}.swagger-ui label{color:#3b4151;font-family:sans-serif;font-size:12px;font-weight:700;margin:0 0 5px}@media (max-width:768px){.swagger-ui input[type=email],.swagger-ui input[type=file],.swagger-ui input[type=password],.swagger-ui input[type=search],.swagger-ui input[type=text]{max-width:175px}}.swagger-ui input[type=email],.swagger-ui input[type=file],.swagger-ui input[type=password],.swagger-ui input[type=search],.swagger-ui input[type=text],.swagger-ui textarea{background:#fff;border:1px solid #d9d9d9;border-radius:4px;margin:5px 0;min-width:100px;padding:8px 10px}.swagger-ui input[type=email].invalid,.swagger-ui input[type=file].invalid,.swagger-ui input[type=password].invalid,.swagger-ui input[type=search].invalid,.swagger-ui input[type=text].invalid,.swagger-ui textarea.invalid{-webkit-animation:shake .4s 1;animation:shake .4s 1;background:#feebeb;border-color:#f93e3e}.swagger-ui input[disabled],.swagger-ui select[disabled],.swagger-ui textarea[disabled]{background-color:#fafafa;color:#888;cursor:not-allowed}.swagger-ui select[disabled]{border-color:#888}.swagger-ui textarea[disabled]{background-color:#41444e;color:#fff}@-webkit-keyframes shake{10%,90%{-webkit-transform:translate3d(-1px,0,0);transform:translate3d(-1px,0,0)}20%,80%{-webkit-transform:translate3d(2px,0,0);transform:translate3d(2px,0,0)}30%,50%,70%{-webkit-transform:translate3d(-4px,0,0);transform:translate3d(-4px,0,0)}40%,60%{-webkit-transform:translate3d(4px,0,0);transform:translate3d(4px,0,0)}}@keyframes shake{10%,90%{-webkit-transform:translate3d(-1px,0,0);transform:translate3d(-1px,0,0)}20%,80%{-webkit-transform:translate3d(2px,0,0);transform:translate3d(2px,0,0)}30%,50%,70%{-webkit-transform:translate3d(-4px,0,0);transform:translate3d(-4px,0,0)}40%,60%{-webkit-transform:translate3d(4px,0,0);transform:translate3d(4px,0,0)}}.swagger-ui textarea{background:hsla(0,0%,100%,.8);border:none;border-radius:4px;color:#3b4151;font-family:monospace;font-size:12px;font-weight:600;min-height:280px;outline:none;padding:10px;width:100%}.swagger-ui textarea:focus{border:2px solid #61affe}.swagger-ui textarea.curl{background:#41444e;border-radius:4px;color:#fff;font-family:monospace;font-size:12px;font-weight:600;margin:0;min-height:100px;padding:10px;resize:none}.swagger-ui .checkbox{color:#303030;padding:5px 0 10px;-webkit-transition:opacity .5s;transition:opacity .5s}.swagger-ui .checkbox label{display:-webkit-box;display:-ms-flexbox;display:flex}.swagger-ui .checkbox p{color:#3b4151;font-family:monospace;font-style:italic;font-weight:400!important;font-weight:600;margin:0!important}.swagger-ui .checkbox input[type=checkbox]{display:none}.swagger-ui .checkbox input[type=checkbox]+label>.item{background:#e8e8e8;border-radius:1px;-webkit-box-shadow:0 0 0 2px #e8e8e8;box-shadow:0 0 0 2px #e8e8e8;cursor:pointer;display:inline-block;-webkit-box-flex:0;-ms-flex:none;flex:none;height:16px;margin:0 8px 0 0;padding:5px;position:relative;top:3px;width:16px}.swagger-ui .checkbox input[type=checkbox]+label>.item:active{-webkit-transform:scale(.9);transform:scale(.9)}.swagger-ui .checkbox input[type=checkbox]:checked+label>.item{background:#e8e8e8 url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='8' viewBox='3 7 10 8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%2341474E' fill-rule='evenodd' d='M6.333 15L3 11.667l1.333-1.334 2 2L11.667 7 13 8.333z'/%3E%3C/svg%3E") 50% no-repeat}.swagger-ui .dialog-ux{bottom:0;left:0;position:fixed;right:0;top:0;z-index:9999}.swagger-ui .dialog-ux .backdrop-ux{background:rgba(0,0,0,.8);bottom:0;left:0;position:fixed;right:0;top:0}.swagger-ui .dialog-ux .modal-ux{background:#fff;border:1px solid #ebebeb;border-radius:4px;-webkit-box-shadow:0 10px 30px 0 rgba(0,0,0,.2);box-shadow:0 10px 30px 0 rgba(0,0,0,.2);left:50%;max-width:650px;min-width:300px;position:absolute;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:100%;z-index:9999}.swagger-ui .dialog-ux .modal-ux-content{max-height:540px;overflow-y:auto;padding:20px}.swagger-ui .dialog-ux .modal-ux-content p{color:#41444e;color:#3b4151;font-family:sans-serif;font-size:12px;margin:0 0 5px}.swagger-ui .dialog-ux .modal-ux-content h4{color:#3b4151;font-family:sans-serif;font-size:18px;font-weight:600;margin:15px 0 0}.swagger-ui .dialog-ux .modal-ux-header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-bottom:1px solid #ebebeb;display:-webkit-box;display:-ms-flexbox;display:flex;padding:12px 0}.swagger-ui .dialog-ux .modal-ux-header .close-modal{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;padding:0 10px}.swagger-ui .dialog-ux .modal-ux-header h3{color:#3b4151;-webkit-box-flex:1;-ms-flex:1;flex:1;font-family:sans-serif;font-size:20px;font-weight:600;margin:0;padding:0 20px}.swagger-ui .model{color:#3b4151;font-family:monospace;font-size:12px;font-weight:300;font-weight:600}.swagger-ui .model .deprecated span,.swagger-ui .model .deprecated td{color:#a0a0a0!important}.swagger-ui .model .deprecated>td:first-of-type{text-decoration:line-through}.swagger-ui .model-toggle{cursor:pointer;display:inline-block;font-size:10px;margin:auto .3em;position:relative;top:6px;-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transition:-webkit-transform .15s ease-in;transition:-webkit-transform .15s ease-in;transition:transform .15s ease-in;transition:transform .15s ease-in,-webkit-transform .15s ease-in}.swagger-ui .model-toggle.collapsed{-webkit-transform:rotate(0deg);transform:rotate(0deg)}.swagger-ui .model-toggle::after{background:url('data:image/svg+xml;charset=utf-8,') 50% no-repeat;background-size:100%;content:"";display:block;height:20px;width:20px}.swagger-ui .model-jump-to-path{cursor:pointer;position:relative}.swagger-ui .model-jump-to-path .view-line-link{cursor:pointer;position:absolute;top:-.4em}.swagger-ui .model-title{position:relative}.swagger-ui .model-title:hover .model-hint{visibility:visible}.swagger-ui .model-hint{background:rgba(0,0,0,.7);border-radius:4px;color:#ebebeb;padding:.1em .5em;position:absolute;top:-1.8em;visibility:hidden;white-space:nowrap}.swagger-ui .model p{margin:0 0 1em}.swagger-ui .model .property{color:#999;font-style:italic}.swagger-ui .model .property.primitive{color:#6b6b6b}.swagger-ui table.model tr.description{color:#666;font-weight:400}.swagger-ui table.model tr.description td:first-child,.swagger-ui table.model tr.property-row.required td:first-child{font-weight:700}.swagger-ui table.model tr.property-row td{vertical-align:top}.swagger-ui table.model tr.property-row td:first-child{padding-right:.2em}.swagger-ui table.model tr.property-row .star{color:red}.swagger-ui table.model tr.extension{color:#777}.swagger-ui table.model tr.extension td:last-child{vertical-align:top}.swagger-ui section.models{border:1px solid rgba(59,65,81,.3);border-radius:4px;margin:30px 0}.swagger-ui section.models .pointer{cursor:pointer}.swagger-ui section.models.is-open{padding:0 0 20px}.swagger-ui section.models.is-open h4{border-bottom:1px solid rgba(59,65,81,.3);margin:0 0 5px}.swagger-ui section.models h4{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#606060;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;font-family:sans-serif;font-size:16px;margin:0;padding:10px 20px 10px 10px;-webkit-transition:all .2s;transition:all .2s}.swagger-ui section.models h4 svg{-webkit-transition:all .4s;transition:all .4s}.swagger-ui section.models h4 span{-webkit-box-flex:1;-ms-flex:1;flex:1}.swagger-ui section.models h4:hover{background:rgba(0,0,0,.02)}.swagger-ui section.models h5{color:#707070;font-family:sans-serif;font-size:16px;margin:0 0 10px}.swagger-ui section.models .model-jump-to-path{position:relative;top:5px}.swagger-ui section.models .model-container{background:rgba(0,0,0,.05);border-radius:4px;margin:0 20px 15px;position:relative;-webkit-transition:all .5s;transition:all .5s}.swagger-ui section.models .model-container:hover{background:rgba(0,0,0,.07)}.swagger-ui section.models .model-container:first-of-type{margin:20px}.swagger-ui section.models .model-container:last-of-type{margin:0 20px}.swagger-ui section.models .model-container .models-jump-to-path{opacity:.65;position:absolute;right:5px;top:8px}.swagger-ui section.models .model-box{background:none}.swagger-ui .model-box{background:rgba(0,0,0,.1);border-radius:4px;display:inline-block;padding:10px}.swagger-ui .model-box .model-jump-to-path{position:relative;top:4px}.swagger-ui .model-box.deprecated{opacity:.5}.swagger-ui .model-title{color:#505050;font-family:sans-serif;font-size:16px}.swagger-ui .model-title img{bottom:0;margin-left:1em;position:relative}.swagger-ui .model-deprecated-warning{color:#f93e3e;font-family:sans-serif;font-size:16px;font-weight:600;margin-right:1em}.swagger-ui span>span.model .brace-close{padding:0 0 0 10px}.swagger-ui .prop-name{display:inline-block;margin-right:1em}.swagger-ui .prop-type{color:#55a}.swagger-ui .prop-enum{display:block}.swagger-ui .prop-format{color:#606060}.swagger-ui .servers>label{color:#3b4151;font-family:sans-serif;font-size:12px;margin:-20px 15px 0 0}.swagger-ui .servers>label select{max-width:100%;min-width:130px}.swagger-ui .servers h4.message{padding-bottom:2em}.swagger-ui .servers table tr{width:30em}.swagger-ui .servers table td{display:inline-block;max-width:15em;padding-bottom:10px;padding-top:10px;vertical-align:middle}.swagger-ui .servers table td:first-of-type{padding-right:1em}.swagger-ui .servers table td input{height:100%;width:100%}.swagger-ui .servers .computed-url{margin:2em 0}.swagger-ui .servers .computed-url code{display:inline-block;font-size:16px;margin:0 1em;padding:4px}.swagger-ui .servers-title{font-size:12px;font-weight:700}.swagger-ui .operation-servers h4.message{margin-bottom:2em}.swagger-ui table{border-collapse:collapse;padding:0 10px;width:100%}.swagger-ui table.model tbody tr td{padding:0;vertical-align:top}.swagger-ui table.model tbody tr td:first-of-type{padding:0 0 0 2em;width:174px}.swagger-ui table.headers td{color:#3b4151;font-family:monospace;font-size:12px;font-weight:300;font-weight:600;vertical-align:middle}.swagger-ui table.headers .header-example{color:#999;font-style:italic}.swagger-ui table tbody tr td{padding:10px 0 0;vertical-align:top}.swagger-ui table tbody tr td:first-of-type{min-width:6em;padding:10px 0}.swagger-ui table thead tr td,.swagger-ui table thead tr th{border-bottom:1px solid rgba(59,65,81,.2);color:#3b4151;font-family:sans-serif;font-size:12px;font-weight:700;padding:12px 0;text-align:left}.swagger-ui .parameters-col_description{margin-bottom:2em;width:99%}.swagger-ui .parameters-col_description input[type=text]{max-width:340px;width:100%}.swagger-ui .parameters-col_description select{border-width:1px}.swagger-ui .parameter__name{color:#3b4151;font-family:sans-serif;font-size:16px;font-weight:400;margin-right:.75em}.swagger-ui .parameter__name.required{font-weight:700}.swagger-ui .parameter__name.required span{color:red}.swagger-ui .parameter__name.required::after{color:rgba(255,0,0,.6);content:"required";font-size:10px;padding:5px;position:relative;top:-6px}.swagger-ui .parameter__extension,.swagger-ui .parameter__in{color:grey;font-family:monospace;font-size:12px;font-style:italic;font-weight:600}.swagger-ui .parameter__deprecated{color:red;font-family:monospace;font-size:12px;font-style:italic;font-weight:600}.swagger-ui .parameter__empty_value_toggle{display:block;font-size:13px;padding-bottom:12px;padding-top:5px}.swagger-ui .parameter__empty_value_toggle input{margin-right:7px}.swagger-ui .parameter__empty_value_toggle.disabled{opacity:.7}.swagger-ui .table-container{padding:20px}.swagger-ui .response-col_description{width:99%}.swagger-ui .response-col_links{min-width:6em}.swagger-ui .response__extension{color:grey;font-family:monospace;font-size:12px;font-style:italic;font-weight:600}.swagger-ui .topbar{background-color:#1b1b1b;padding:10px 0}.swagger-ui .topbar .topbar-wrapper,.swagger-ui .topbar a{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.swagger-ui .topbar a{color:#fff;-webkit-box-flex:1;-ms-flex:1;flex:1;font-family:sans-serif;font-size:1.5em;font-weight:700;max-width:300px;text-decoration:none}.swagger-ui .topbar a span{margin:0;padding:0 10px}.swagger-ui .topbar .download-url-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:3;-ms-flex:3;flex:3;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.swagger-ui .topbar .download-url-wrapper input[type=text]{border:2px solid #62a03f;border-radius:4px 0 0 4px;margin:0;outline:none;width:100%}.swagger-ui .topbar .download-url-wrapper .select-label{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#f0f0f0;display:-webkit-box;display:-ms-flexbox;display:flex;margin:0;max-width:600px;width:100%}.swagger-ui .topbar .download-url-wrapper .select-label span{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:16px;padding:0 10px 0 0;text-align:right}.swagger-ui .topbar .download-url-wrapper .select-label select{border:2px solid #62a03f;-webkit-box-shadow:none;box-shadow:none;-webkit-box-flex:2;-ms-flex:2;flex:2;outline:none;width:100%}.swagger-ui .topbar .download-url-wrapper .download-url-button{background:#62a03f;border:none;border-radius:0 4px 4px 0;color:#fff;font-family:sans-serif;font-size:16px;font-weight:700;padding:4px 30px}.swagger-ui .info{margin:50px 0}.swagger-ui .info.failed-config{margin-left:auto;margin-right:auto;max-width:880px;text-align:center}.swagger-ui .info hgroup.main{margin:0 0 20px}.swagger-ui .info hgroup.main a{font-size:12px}.swagger-ui .info pre{font-size:14px}.swagger-ui .info li,.swagger-ui .info p,.swagger-ui .info table{color:#3b4151;font-family:sans-serif;font-size:14px}.swagger-ui .info h1,.swagger-ui .info h2,.swagger-ui .info h3,.swagger-ui .info h4,.swagger-ui .info h5{color:#3b4151;font-family:sans-serif}.swagger-ui .info a{color:#4990e2;font-family:sans-serif;font-size:14px;-webkit-transition:all .4s;transition:all .4s}.swagger-ui .info a:hover{color:#1f69c0}.swagger-ui .info>div{margin:0 0 5px}.swagger-ui .info .base-url{color:#3b4151;font-family:monospace;font-size:12px;font-weight:300!important;font-weight:600;margin:0}.swagger-ui .info .title{color:#3b4151;font-family:sans-serif;font-size:36px;margin:0}.swagger-ui .info .title small{background:#7d8492;border-radius:57px;display:inline-block;font-size:10px;margin:0 0 0 5px;padding:2px 4px;position:relative;top:-5px;vertical-align:super}.swagger-ui .info .title small.version-stamp{background-color:#89bf04}.swagger-ui .info .title small pre{color:#fff;font-family:sans-serif;margin:0;padding:0}.swagger-ui .auth-btn-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:10px 0}.swagger-ui .auth-btn-wrapper .btn-done{margin-right:1em}.swagger-ui .auth-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.swagger-ui .auth-wrapper .authorize{margin-right:10px;padding-right:20px}.swagger-ui .auth-container{border-bottom:1px solid #ebebeb;margin:0 0 10px;padding:10px 20px}.swagger-ui .auth-container:last-of-type{border:0;margin:0;padding:10px 20px}.swagger-ui .auth-container h4{margin:5px 0 15px!important}.swagger-ui .auth-container .wrapper{margin:0;padding:0}.swagger-ui .auth-container input[type=password],.swagger-ui .auth-container input[type=text]{min-width:230px}.swagger-ui .auth-container .errors{background-color:#fee;border-radius:4px;color:red;color:#3b4151;font-family:monospace;font-size:12px;font-weight:600;margin:1em;padding:10px}.swagger-ui .auth-container .errors b{margin-right:1em;text-transform:capitalize}.swagger-ui .scopes h2{color:#3b4151;font-family:sans-serif;font-size:14px}.swagger-ui .scopes h2 a{color:#4990e2;cursor:pointer;font-size:12px;padding-left:10px;text-decoration:underline}.swagger-ui .scope-def{padding:0 0 20px}.swagger-ui .errors-wrapper{-webkit-animation:scaleUp .5s;animation:scaleUp .5s;background:rgba(249,62,62,.1);border:2px solid #f93e3e;border-radius:4px;margin:20px;padding:10px 20px}.swagger-ui .errors-wrapper .error-wrapper{margin:0 0 10px}.swagger-ui .errors-wrapper .errors h4{color:#3b4151;font-family:monospace;font-size:14px;font-weight:600;margin:0}.swagger-ui .errors-wrapper .errors small{color:#606060}.swagger-ui .errors-wrapper .errors .message{white-space:pre-line}.swagger-ui .errors-wrapper .errors .message.thrown{max-width:100%}.swagger-ui .errors-wrapper .errors .error-line{cursor:pointer;text-decoration:underline}.swagger-ui .errors-wrapper hgroup{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.swagger-ui .errors-wrapper hgroup h4{color:#3b4151;-webkit-box-flex:1;-ms-flex:1;flex:1;font-family:sans-serif;font-size:20px;margin:0}@-webkit-keyframes scaleUp{0%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes scaleUp{0%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.swagger-ui .Resizer.vertical.disabled{display:none}.swagger-ui .markdown p,.swagger-ui .markdown pre,.swagger-ui .renderedMarkdown p,.swagger-ui .renderedMarkdown pre{margin:1em auto;word-break:break-all;word-break:break-word}.swagger-ui .markdown pre,.swagger-ui .renderedMarkdown pre{background:none;color:#000;font-weight:400;padding:0;white-space:pre-wrap}.swagger-ui .markdown code,.swagger-ui .renderedMarkdown code{background:rgba(0,0,0,.05);border-radius:4px;color:#9012fe;font-family:monospace;font-size:14px;font-weight:600;padding:5px 7px}.swagger-ui .markdown pre>code,.swagger-ui .renderedMarkdown pre>code{display:block}.swagger-ui{-webkit-filter:invert(88%) hue-rotate(180deg);filter:invert(88%) hue-rotate(180deg)}.swagger-ui .highlight-code{-webkit-filter:invert(100%) hue-rotate(180deg);filter:invert(100%) hue-rotate(180deg)}.swagger-ui a.nostyle,.swagger-ui a.nostyle:visited{color:#4070f4}.base-url{background-color:unset} - -/*! - Theme: Solarized Dark - Author: Ethan Schoonover (modified by aramisgithub) - License: ~ MIT (or more permissive) [via base16-schemes-source] - Maintainer: @highlightjs/core-team - Version: 2021.09.0 -*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#ccc;background:#002b36}.hljs::-moz-selection,.hljs ::-moz-selection{background-color:#586e75;color:#93a1a1}.hljs::selection,.hljs ::selection{background-color:#586e75;color:#93a1a1}.hljs-comment{color:#657b83}.hljs-tag{color:#839496}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#93a1a1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#dc322f}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#afcaff}.hljs-class .hljs-title,.hljs-strong,.hljs-title,.hljs-title.class_{color:#b58900}.hljs-strong{font-weight:700}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#fe9e92}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#2aa198}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#268bd2}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#6c71c4}.hljs-emphasis{color:#6c71c4;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d33682}.hljs-meta-keyword,.hljs-meta .hljs-keyword{font-weight:700}.page-components{position:relative;line-height:1}@media screen and (max-width:1024px){.toolbar .page-components,.toolbar .page-versions{display:none}}.page-components .component-menu-toggle{color:inherit;background:url(../img/chevron.svg) no-repeat;background-position:right .5rem top 50%;background-size:auto .75em;border:none;outline:none;line-height:inherit;padding:.5rem 1.5rem .5rem 0;position:relative;z-index:3}.page-components .component-menu{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;background:-webkit-gradient(linear,left top,left bottom,from(#000),to(#000)) no-repeat;background:linear-gradient(180deg,#000 0,#000) no-repeat;margin:1.375rem 0 0;padding:.5rem;position:absolute;top:0;white-space:nowrap}.page-components:not(.is-active) .component-menu{display:none}.page-components .component{display:block;padding-top:.5rem}.page-components .component.is-current{display:none}.page-components .component.is-missing{color:#8e8e8e;font-style:italic;text-decoration:none}@media screen and (max-width:468.5px){.algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-]{width:calc(100vw - 8rem)}}@media screen and (max-width:700px){.doc table.overview-table,.doc table.overview-table>*>tr{display:-webkit-box;display:-ms-flexbox;display:flex}.doc table.overview-table>*>tr{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.doc .sidebarblock>.content>.title{text-align:inherit;font-size:1.15em}.toolbar-search{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.overview-box .title,.toolbar-search{display:-webkit-box;display:-ms-flexbox;display:flex}.overview-box .title{font-family:Inter,sans-serif;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.overview-box>.content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.doc .overview-box .image>img{max-width:unset;width:2rem;padding-top:2rem}.doc .overview-box .overview-title{background-color:unset;border:none}.doc .overview-box .overview-title content{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.overview-box .title a span{padding-right:1.5em}.doc .sidebarblock.overview-box{background-color:unset;border:1px solid #ccc;padding-bottom:2rem;padding-left:2rem;min-height:15rem}.doc .overview-banner>.content>.title{font-size:2em!important;font-family:Inter,sans-serif}.doc table.tableblock.overview-table{-webkit-box-shadow:none!important;box-shadow:none!important}.doc table.overview-table>*>tr>*{border:none}.navbar{padding-inline:1rem}@media screen and (min-width:1024px){.toolbar{padding:0 2em 0 1.5em}main>.content{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;left:-150px}.navbar{padding:2rem;z-index:11}.navbar-brand{padding-left:unset;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar-item.is-hoverable:hover .navbar-dropdown{top:33px;z-index:3}.toolbar-search{display:none}.edit-this-page{display:-webkit-box;display:-ms-flexbox;display:flex}}.top-logo{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:.5rem}.medium-zoom-image{z-index:999}.page-versions{margin:unset}.page-versions .version-menu{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;background:-webkit-gradient(linear,left top,left bottom,from(#000),to(#000)) no-repeat;background:linear-gradient(180deg,#000 0,#000) no-repeat;margin:1.375rem .5rem 0 0;padding:.5rem;position:absolute;top:0;right:0;white-space:nowrap;min-width:unset}.DocSearch-Button{font-weight:400;padding-left:1rem}.search-box{padding-right:2em;padding-left:1em;width:100%;-ms-flex-item-align:start;align-self:start;height:2.4rem}.search-box .DocSearch-Button{border-radius:20px;width:100%}.algolia-autocomplete{width:100%;-ms-flex-item-align:center;align-self:center;height:2.5rem}.navbar-brand{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.starknet-logo{background-repeat:no-repeat;display:inline-block;height:40px}.docs-logo{font-size:1.1875rem;line-height:1.44;letter-spacing:.01em;color:#363636}.theme-toggle{background-repeat:no-repeat;background-position:50%;-ms-flex-item-align:start;align-self:start;padding:1.2rem;border-style:none;border-radius:6px}.theme-toggle-container{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}@media screen and (max-width:1023.5px){.navbar-menu{position:relative;min-height:calc(100vh - 13rem)}.theme-toggle{margin-inline:auto}}.theme-toggle.dark:hover{background-image:url(../img/moon.svg)}.pencil{background-image:url(../img/pencil.svg);background-repeat:no-repeat;height:1rem;width:1rem;padding:0 1em;vertical-align:middle}.navbar-end .navbar-item .navbar-dropdown{padding-top:.8rem}.navbar-end .navbar-item.has-dropdown,.navbar-end .navbar-item.has-dropdown .navbar-link{-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid transparent;z-index:4;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.navbar-end .navbar-item.has-dropdown:hover{border-bottom:unset!important;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:.25rem .25rem 0 0}.navbar-end .navbar-item.has-dropdown:hover .navbar-link::after{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.edit-this-page:hover a{color:#4070f4;text-decoration:none}.doc{font-family:Inter,Roboto,sans-serif;max-width:72rem;padding:0 1rem 2rem}.doc .imageblock{border-radius:.5rem}.doc .imageblock .title{margin:unset}.doc .admonitionblock .title,.doc .exampleblock .title,.doc .imageblock .title,.doc .listingblock .title,.doc .literalblock .title,.doc .openblock .title,.doc .tableblock caption{padding:.5em}.doc a:hover{color:#4070f4;text-decoration:underline}.doc .listingblock,.exampleblock{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.doc .listingblock .title,.exampleblock .title{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-item-align:center;align-self:center}@media screen and (max-width:1023.5px){footer .footerdiv{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:1.3rem}.footer_icon p{display:none}.footer>.community_icons{width:10em}}footer .footerdiv{padding:1rem 2rem;-webkit-box-flex:1;-ms-flex:auto;flex:auto;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}footer.footer,footer .footerdiv{display:-webkit-box;display:-ms-flexbox;display:flex}footer.footer{padding:unset}.community_icons{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:2.5rem}.community_icons,.footer_icon{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer_icon{padding:0 0 0 1.5rem;height:1.25rem;background-size:1.25rem;background-repeat:no-repeat}.footer_icon p{font-size:.875rem;margin-left:.6rem}.footer_icon svg{fill:#ccc}.footer-left{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:20px}.footer-network-info{border-radius:.5rem;padding-left:.4rem;padding-right:.4rem;background-color:#ffcd9a;color:#000}.vertical-divider{width:1px;height:2rem;background:#313131;border-radius:2px}.hr-divider{background-color:#313131;height:1px;margin-inline:1rem;margin-block:1.625rem}.doc details{margin-left:0;padding:1rem;border-radius:.5rem}.doc details summary{padding-left:1.5rem}.doc details.result{margin-top:1rem}.doc details.result>.content{margin:.5rem 0 0}.doc details>summary::before{border:none;background-repeat:no-repeat}.toc.sidebar .toc-menu ul{max-height:calc(100vh - 14rem)}#toc{border-radius:.5rem;margin-top:1.5rem}#toctitle{font-family:Inter,Roboto,sans-serif;font-size:29px;padding:1.25rem 1.25rem 0}#toc .sectlevel1{font-weight:450;list-style:none;padding:0 1.25rem 1.25rem}#toc .sectlevel1>li{padding:.75rem 0 0;font-size:16px}#toc .sectlevel2{font-weight:400;padding-top:.5rem;list-style:disc}.doc table.tableblock{border-collapse:collapse;border-radius:.5rem;border-style:hidden}.doc table.tableblock,.doc table.tableblock>*>tr>*{border-radius:.5rem}.doc table.tableblock>*>tr>*{border-left-width:0;border-right-width:0}.doc table.grid-all>thead th,.doc table.grid-rows>thead th{font-weight:600;line-height:2;border-width:0}.dark-mode-label,.light-mode-label{display:none;text-transform:uppercase;font-size:.75rem;font-weight:500}.light-mode-label{color:#fff}.dark-mode-label{color:#000}.desktop-only{display:none}@media screen and (min-width:1024px){.desktop-only{display:block}.doc{padding:0 4rem 2rem 5.5rem}.mobile-only{display:none}footer.footer{position:sticky;bottom:0;z-index:10}.top-logo{width:16rem}}.mask-svg-center{mask-repeat:no-repeat;mask-position:center;mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain}.navbar-end .navbar-link,.navbar-end>.navbar-item{color:#fff}.light-mode-label{display:block}@media screen and (min-width:1024px){.page-components .component-menu-toggle,.page-versions .version-menu-toggle{background:url(../img/chevron-down-grey.svg) no-repeat;background-position:right .5rem top 50%}.light-mode-label{display:none}}.DocSearch-Button{background:hsla(0,0%,100%,.06);color:#fff;background-position:1em;background-repeat:no-repeat;border:1px solid #363f55}.navbar{background:#121212}.navbar-end .navbar-item.has-dropdown:hover .navbar-link{border-left:1px solid #363f55;border-top:1px solid #363f55;border-right:1px solid #363f55}.doc .sidebarblock.overview-box{border:1px solid #363f55}.navbar-brand .navbar-item:first-child{color:#f7f9fb}.starknet-logo{background-image:url(../img/starknet-logo-white.svg);width:168px}.docs-logo{color:#fff}.toolbar{border-top:1px solid #313131}.theme-toggle,.toolbar{background-color:#121212}.theme-toggle{background-image:url(../img/sun-light.svg);fill:#f7f9fb}.navbar-end .navbar-item .navbar-dropdown{border-top:1px solid #363f55}.theme-toggle:hover{background-color:#252d3b}.nav-toggle{background:url(../img/collapse-icon-outlined.svg) no-repeat 50% 47.5%}.nav-toggle,.pencil{fill:#f7f9fb}.nav{border-right:1px solid #313131}.nav-panel-explore .component .version a{border:1px solid #363f55;color:#f7f9fb}.nav-panel-explore .context:hover{color:#4070f4;background-color:#121212}.doc .sidebarblock{background-color:#363f55}.doc .imageblock{border:1px solid #363f55}.doc .colist>table code,.doc h2 code,.doc h3 code,.doc p code,.doc thead code{background-color:#363636;color:#ccc}.doc .colist>table a code,.doc p a code,.doc thead a code{color:#afcaff!important}.nav-toggle.is-active{background-color:#fff;-webkit-mask-image:url(../img/back.svg);-webkit-mask-size:41.5%;-webkit-mask-repeat:no-repeat;-webkit-mask-position-y:center}footer.footer{border-top:1px solid #313131}.doc details{border:1px solid #363f55}.doc table.tableblock{background-color:#121212;-webkit-box-shadow:0 0 0 1px #313131;box-shadow:0 0 0 1px #313131}.doc table.tableblock,.doc table.tableblock>*>tr>*{border-color:#313131}.components-versions{border-right:1px solid #313131}#toc{background-color:rgba(197,207,228,.2)}.doc .quoteblock,.doc .verseblock{color:#f7f9fb}.doc .exampleblock>.content,.doc details.result>.content{background-color:unset}.medium-zoom-overlay{background:#121212!important}.doc details>summary::after{background-image:url(../img/chevron-down-grey.svg);background-repeat:no-repeat;left:0}.doc details[open]>summary::after{left:0;background-image:url(../img/chevron-up-grey.svg)}.nav-panel-explore .context .version::after{background:url(../img/chevron-down-grey.svg) no-repeat 100%/auto 75%}.tablist>ul li{color:#000} - -/*! @algolia/autocomplete-theme-classic 1.7.4 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */.aa-Autocomplete *,.aa-DetachedFormContainer *,.aa-Panel *{-webkit-box-sizing:border-box;box-sizing:border-box}.aa-Autocomplete,.aa-DetachedFormContainer,.aa-Panel{color:#262627;margin:0}.aa-Form{background-color:#fff;border:1px solid rgba(128,126,163,.8);width:100%}.aa-Form[focus-within]{-webkit-box-shadow:0 0 0 2px rgba(62,52,211,.2),inset 0 0 0 2px rgba(62,52,211,.2);box-shadow:0 0 0 2px rgba(62,52,211,.2),inset 0 0 0 2px rgba(62,52,211,.2);-webkit-box-shadow:#afcaff 0 0 0 2px,inset #afcaff 0 0 0 2px;box-shadow:0 0 0 2px #afcaff,inset 0 0 0 2px #afcaff}.aa-Form:focus-within{-webkit-box-shadow:0 0 0 2px rgba(62,52,211,.2),inset 0 0 0 2px rgba(62,52,211,.2);box-shadow:0 0 0 2px rgba(62,52,211,.2),inset 0 0 0 2px rgba(62,52,211,.2);-webkit-box-shadow:#afcaff 0 0 0 2px,inset #afcaff 0 0 0 2px;box-shadow:0 0 0 2px #afcaff,inset 0 0 0 2px #afcaff}.aa-InputWrapperPrefix{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0;height:44px;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.aa-Label,.aa-LoadingIndicator{cursor:auto;-ms-flex-negative:0;flex-shrink:0;height:100%;padding:0;text-align:left}.aa-Label svg,.aa-LoadingIndicator svg{color:#3e34d3;color:#afcaff;height:auto;max-height:20px;stroke-width:1.6;width:20px}.aa-LoadingIndicator,.aa-SubmitButton{height:100%;padding-left:11px;padding-right:8px;width:47px}@media (hover:none) and (pointer:coarse){.aa-LoadingIndicator,.aa-SubmitButton{padding-left:3px;width:39px}}.aa-SubmitButton{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0}.aa-LoadingIndicator{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.aa-LoadingIndicator[hidden]{display:none}.aa-InputWrapper{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3;position:relative;width:100%}.aa-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:#262627;color:#fff;font:inherit;height:44px;padding:0;width:100%}.aa-Input::-moz-placeholder{color:rgba(128,126,163,.6);color:#ccc;opacity:1}.aa-Input:-ms-input-placeholder{color:rgba(128,126,163,.6);color:#ccc;opacity:1}.aa-Input::-webkit-input-placeholder{color:rgba(128,126,163,.6);color:#ccc;opacity:1}.aa-Input::-ms-input-placeholder{color:rgba(128,126,163,.6);color:#ccc;opacity:1}.aa-Input::placeholder{color:rgba(128,126,163,.6);color:#ccc;opacity:1}.aa-Input:focus{border-color:none;-webkit-box-shadow:none;box-shadow:none;outline:none}.aa-Input::-webkit-search-cancel-button,.aa-Input::-webkit-search-decoration,.aa-Input::-webkit-search-results-button,.aa-Input::-webkit-search-results-decoration{-webkit-appearance:none;appearance:none}.aa-InputWrapperSuffix{-webkit-box-align:center;height:44px;-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.aa-ClearButton,.aa-InputWrapperSuffix{-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.aa-ClearButton{-webkit-box-align:center;background:none;border:0;color:rgba(128,126,163,.6);color:#ccc;cursor:pointer;height:100%;margin:0;padding:0 12.83328px}@media (hover:none) and (pointer:coarse){.aa-ClearButton{padding:0 10.16672px}}.aa-ClearButton:focus,.aa-ClearButton:hover{color:#262627;color:#fff}.aa-ClearButton[hidden]{display:none}.aa-ClearButton svg{stroke-width:1.6;width:20px}.aa-Panel{border-radius:4px;-webkit-box-shadow:0 0 0 1px rgba(35,38,59,.1),0 6px 16px -4px rgba(35,38,59,.15);box-shadow:0 0 0 1px rgba(35,38,59,.1),0 6px 16px -4px rgba(35,38,59,.15);-webkit-box-shadow:0 4px 4px rgba(0,0,0,.25),0 1px 47px -3px rgba(0,0,0,.15),0 12px 22px -2px rgba(0,0,0,.68);box-shadow:0 4px 4px rgba(0,0,0,.25),0 1px 47px -3px rgba(0,0,0,.15),0 12px 22px -2px rgba(0,0,0,.68);margin:8px 0 0;position:absolute}@media screen and (prefers-reduced-motion){.aa-Panel{-webkit-transition:none;transition:none}}.aa-Panel button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;margin:0;padding:0}.aa-PanelLayout{padding:0}.aa-PanelLayoutColumns--twoGolden{display:grid;grid-template-columns:39.2% auto;overflow:hidden;padding:0}.aa-PanelLayoutColumns--two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:hidden;padding:0}.aa-PanelLayoutColumns--three{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));overflow:hidden;padding:0}.aa-Panel--stalled .aa-Source{-webkit-filter:grayscale(1);filter:grayscale(1);opacity:.8}.aa-Panel--scrollable{margin:0;max-height:650px;overflow-x:hidden;overflow-y:auto;overflow-y:overlay;padding:8px;scrollbar-color:#ccc transparent;scrollbar-width:thin}.aa-Panel--scrollable::-webkit-scrollbar{width:13px;width:7px}.aa-Panel--scrollable::-webkit-scrollbar-track{background-color:transparent}.aa-Panel--scrollable::-webkit-scrollbar-thumb{background-color:#ccc;border-radius:9999px}.aa-Source{margin:0;padding:0;position:relative;width:100%}.aa-Source:empty{display:none}.aa-SourceNoResults{font-size:1em;margin:0;padding:16px}.aa-List{list-style:none;margin:0}.aa-List,.aa-SourceHeader{padding:0;position:relative}.aa-SourceHeader{margin:8px .5em 8px 0}.aa-SourceHeader:empty{display:none}.aa-SourceHeaderTitle{background:#fff;background:#1b1b1b;color:#3e34d3;color:#afcaff;font-size:.8em;font-weight:600}.aa-SourceHeaderLine{border-bottom:1px solid #afcaff;display:block;height:2px;left:0;margin:0;opacity:.3;padding:0;position:absolute;right:0;top:8px;z-index:9998}.aa-SourceFooterSeeAll{background:-webkit-gradient(linear,left top,left bottom,from(#fff),to(rgba(128,126,163,.14)));background:linear-gradient(180deg,#fff,rgba(128,126,163,.14));background:-webkit-gradient(linear,left top,left bottom,from(#1b1b1b),to(rgba(128,126,163,.14)));background:linear-gradient(180deg,#1b1b1b,rgba(128,126,163,.14));border:1px solid #ccc;border-radius:5px;-webkit-box-shadow:inset 0 0 2px #fff,0 2px 2px -1px rgba(76,69,88,.15);box-shadow:inset 0 0 2px #fff,0 2px 2px -1px rgba(76,69,88,.15);color:inherit;font-size:.95em;font-weight:500;padding:.475em 1em .6em;text-decoration:none}.aa-SourceFooterSeeAll:focus,.aa-SourceFooterSeeAll:hover{border:1px solid #afcaff;color:#3e34d3;color:#afcaff}.aa-Item{border-radius:3px;padding:4px}.aa-Item[aria-selected=true]{background-color:rgba(179,173,214,.205)}.aa-Item[aria-selected=true] .aa-ActiveOnly,.aa-Item[aria-selected=true] .aa-ItemActionButton{visibility:visible}.aa-ItemIcon{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:#fff;background:#1b1b1b;border-radius:3px;-webkit-box-shadow:inset 0 0 0 1px rgba(128,126,163,.3);box-shadow:inset 0 0 0 1px rgba(128,126,163,.3);-webkit-box-shadow:inset 0 0 0 1px #313131;box-shadow:inset 0 0 0 1px #313131;color:#7777a3;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0;font-size:.7em;height:28px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;overflow:hidden;stroke-width:1.6;text-align:center;width:28px}.aa-ItemIcon img{height:auto;max-height:20px;max-width:20px;width:auto}.aa-ItemIcon svg{height:20px;width:20px}.aa-ItemIcon--alignTop{-ms-flex-item-align:start;align-self:flex-start}.aa-ItemIcon--noBorder{background:none;-webkit-box-shadow:none;box-shadow:none}.aa-ItemIcon--picture{height:96px;width:96px}.aa-ItemIcon--picture img{max-height:100%;max-width:100%;padding:8px}.aa-ItemContent{-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;display:grid;grid-gap:8px;gap:8px;grid-auto-flow:column;line-height:1.25em;overflow:hidden}.aa-ItemContent:empty{display:none}.aa-ItemContent mark{background:none;color:#262627;color:#fff;font-style:normal;font-weight:700}.aa-ItemContent--dual{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;text-align:left}.aa-ItemContent--dual .aa-ItemContentSubtitle,.aa-ItemContent--dual .aa-ItemContentTitle{display:block}.aa-ItemContent--indented{padding-left:36px}.aa-ItemContentBody{display:grid;grid-gap:4px;gap:4px}.aa-ItemContentTitle{display:inline-block;margin:0 .5em 0 0;max-width:100%;overflow:hidden;padding:0;text-overflow:ellipsis;white-space:nowrap}.aa-ItemContentSubtitle{font-size:.92em}.aa-ItemContentSubtitleIcon::before{border-color:hsla(0,0%,80%,.64);border-style:solid;content:"";display:inline-block;left:1px;position:relative;top:-3px}.aa-ItemContentSubtitle--inline .aa-ItemContentSubtitleIcon::before{border-width:0 0 1.5px;margin-left:8px;margin-right:4px;width:10px}.aa-ItemContentSubtitle--standalone{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#262627;color:#fff;display:grid;grid-gap:8px;gap:8px;grid-auto-flow:column;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:start}.aa-ItemContentSubtitle--standalone .aa-ItemContentSubtitleIcon::before{border-radius:0 0 0 3px;border-width:0 0 1.5px 1.5px;height:8px;width:8px}.aa-ItemContentSubtitleCategory{color:#807ea3;color:#ccc;font-weight:500}.aa-ItemContentDescription{color:#262627;color:#fff;font-size:.85em;max-width:100%;overflow-x:hidden;text-overflow:ellipsis}.aa-ItemContentDescription:empty{display:none}.aa-ItemContentDescription mark{background:rgba(245,223,77,.5);background:rgba(0,255,255,.25);color:#262627;color:#fff;font-style:normal;font-weight:500}.aa-ItemContentDash{color:rgba(128,126,163,.6);color:#ccc;display:none;opacity:.4}.aa-ItemContentTag{background-color:rgba(62,52,211,.2);background-color:#afcaff;border-radius:3px;margin:0 .4em 0 0;padding:.08em .3em}.aa-ItemLink,.aa-ItemWrapper{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:inherit;display:grid;grid-gap:4px;gap:4px;grid-auto-flow:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;width:100%}.aa-ItemLink{color:inherit;text-decoration:none}.aa-ItemActions{display:grid;grid-auto-flow:column;height:100%;justify-self:end;margin:0 -5.33333px;padding:0 2px 0 0}.aa-ItemActionButton{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:none;border:0;color:rgba(128,126,163,.6);color:#ccc;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0;padding:0}.aa-ItemActionButton:focus svg,.aa-ItemActionButton:hover svg{color:#262627;color:#fff}@media (hover:none) and (pointer:coarse){.aa-ItemActionButton:focus svg,.aa-ItemActionButton:hover svg{color:inherit}}.aa-ItemActionButton svg{color:rgba(128,126,163,.6);color:#ccc;margin:5.33333px;stroke-width:1.6;width:20px}.aa-ActiveOnly{visibility:hidden}.aa-PanelHeader{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:#3e34d3;background:#afcaff;color:#fff;display:grid;height:var(--aa-modal-header-height);margin:0;padding:8px 16px;position:relative}.aa-PanelHeader::after{background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(hsla(0,0%,100%,0)));background-image:linear-gradient(#fff,hsla(0,0%,100%,0));background-image:-webkit-gradient(linear,left top,left bottom,from(#1b1b1b),to(rgba(27,27,27,0)));background-image:linear-gradient(#1b1b1b,rgba(27,27,27,0));bottom:-8px;content:"";height:8px;left:0;pointer-events:none;position:absolute;right:0}.aa-PanelFooter,.aa-PanelHeader::after{z-index:9999}.aa-PanelFooter{background-color:#fff;background-color:#1b1b1b;-webkit-box-shadow:inset 0 1px 0 rgba(128,126,163,.3);box-shadow:inset 0 1px 0 rgba(128,126,163,.3);-webkit-box-shadow:inset 0 1px 0 #313131;box-shadow:inset 0 1px 0 #313131;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:0;padding:16px;position:relative}.aa-PanelFooter::after{background-image:-webkit-gradient(linear,left top,left bottom,from(hsla(0,0%,100%,0)),to(rgba(128,126,163,.6)));background-image:linear-gradient(hsla(0,0%,100%,0),rgba(128,126,163,.6));background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(27,27,27,0)),to(#ccc));background-image:linear-gradient(rgba(27,27,27,0),#ccc);content:"";height:16px;left:0;opacity:.12;pointer-events:none;position:absolute;right:0;top:-16px;z-index:9998}.aa-DetachedContainer{background:#fff;background:#1b1b1b;bottom:0;-webkit-box-shadow:0 0 0 1px rgba(35,38,59,.1),0 6px 16px -4px rgba(35,38,59,.15);box-shadow:0 0 0 1px rgba(35,38,59,.1),0 6px 16px -4px rgba(35,38,59,.15);-webkit-box-shadow:0 4px 4px rgba(0,0,0,.25),0 1px 47px -3px rgba(0,0,0,.15),0 12px 22px -2px rgba(0,0,0,.68);box-shadow:0 4px 4px rgba(0,0,0,.25),0 1px 47px -3px rgba(0,0,0,.15),0 12px 22px -2px rgba(0,0,0,.68);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;left:0;margin:0;overflow:hidden;padding:0;position:fixed;right:0;top:0;z-index:9999}.aa-DetachedContainer::after{height:32px}.aa-DetachedContainer .aa-SourceHeader{margin:8px 0 8px 2px}.aa-Panel{background-color:#fff;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding:0;position:relative}.aa-DetachedContainer .aa-PanelLayout{bottom:0;-webkit-box-shadow:none;box-shadow:none;left:0;margin:0;max-height:none;overflow-y:auto;position:absolute;right:0;top:0;width:100%}.aa-DetachedFormContainer{border-bottom:1px solid #313131;padding:8px}.aa-DetachedCancelButton{border:0;border-radius:3px;color:inherit;color:#262627;color:#fff;margin:0 0 0 8px;padding:0 8px}.aa-DetachedCancelButton:focus,.aa-DetachedCancelButton:hover{-webkit-box-shadow:inset 0 0 0 1px rgba(128,126,163,.3);box-shadow:inset 0 0 0 1px rgba(128,126,163,.3);-webkit-box-shadow:inset 0 0 0 1px #313131;box-shadow:inset 0 0 0 1px #313131}.aa-DetachedContainer--modal{border-radius:6px;top:3%}.aa-DetachedContainer--modal .aa-PanelLayout{max-height:500px;max-height:min(600px,75vh);padding-bottom:8px;position:static}.aa-DetachedSearchButton{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#fff;background-color:#1b1b1b;border:1px solid rgba(128,126,163,.8);border-radius:3px;color:rgba(128,126,163,.6);color:#ccc;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;font:inherit;font-family:inherit;font-size:16px;font-size:14px;height:44px;margin:0;padding:0 5.5px;position:relative;text-align:left;width:100%}.aa-DetachedSearchButton:focus{border-color:#afcaff;-webkit-box-shadow:0 0 0 3px rgba(62,52,211,.2),inset 0 0 0 2px rgba(62,52,211,.2);box-shadow:0 0 0 3px rgba(62,52,211,.2),inset 0 0 0 2px rgba(62,52,211,.2);-webkit-box-shadow:#afcaff 0 0 0 3px,inset #afcaff 0 0 0 2px;box-shadow:0 0 0 3px #afcaff,inset 0 0 0 2px #afcaff;outline:medium none currentColor}.aa-DetachedSearchButtonIcon{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#3e34d3;color:#afcaff;cursor:auto;display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:36px}.aa-Detached{height:100vh;overflow:hidden}.aa-DetachedOverlay{background-color:rgba(115,114,129,.4);height:100vh;left:0;margin:0;padding:0;position:fixed;right:0;top:0;z-index:9998}.aa-GradientBottom,.aa-GradientTop{height:8px;left:0;pointer-events:none;position:absolute;right:0;z-index:9999}.aa-GradientTop{background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(hsla(0,0%,100%,0)));background-image:linear-gradient(#fff,hsla(0,0%,100%,0));background-image:-webkit-gradient(linear,left top,left bottom,from(#1b1b1b),to(rgba(27,27,27,0)));background-image:linear-gradient(#1b1b1b,rgba(27,27,27,0));top:0}.aa-GradientBottom{background-image:-webkit-gradient(linear,left top,left bottom,from(hsla(0,0%,100%,0)),to(#fff));background-image:linear-gradient(hsla(0,0%,100%,0),#fff);background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(27,27,27,0)),to(#1b1b1b));background-image:linear-gradient(rgba(27,27,27,0),#1b1b1b);border-bottom-left-radius:4px;border-bottom-right-radius:4px;bottom:0}@media (hover:none) and (pointer:coarse){.aa-DesktopOnly{display:none}}@media (hover:hover){.aa-TouchOnly{display:none}}@media (hover:none) and (pointer:coarse){:root{--aa-spacing-factor:1.2;--aa-action-icon-size:22px}}.aa-Panel{background-color:#1b1b1b;border-radius:0;-webkit-box-shadow:none;box-shadow:none;margin:0;overflow:hidden;-webkit-transition:opacity .2s ease-in,-webkit-filter .2s ease-in;transition:opacity .2s ease-in,-webkit-filter .2s ease-in;transition:opacity .2s ease-in,filter .2s ease-in;transition:opacity .2s ease-in,filter .2s ease-in,-webkit-filter .2s ease-in}.aa-Item{-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;display:grid;min-height:40px;padding:0;margin-bottom:8px;border-radius:8px;background-color:#1e1d1d}.aa-ItemLink,.aa-ItemWrapper{padding:16px}.aa-Item:last-child{margin-bottom:24px}.aa-Item[aria-selected=true]{background-color:#afcaff;color:#0b0b0b}.aa-Item[aria-selected=true] svg{color:#fff}.aa-DetachedContainer .aa-SourceHeader{margin:16px 0 12px}.aa-PanelLayout{height:100%;margin:0;max-height:650px;overflow-y:auto;padding:16px 1.5rem;margin-inline:1rem;position:relative;text-align:left}.aa-DetachedSearchButton{min-width:200px;border-radius:8px;border:0}.aa-DetachedSearchButtonIcon{color:inherit}.aa-DetachedSearchButton svg{width:16px}.aa-DetachedContainer--modal{border-radius:16px;bottom:inherit;height:auto;margin:0 auto;max-width:680px;position:absolute;top:10%}.aa-Autocomplete,.aa-DetachedFormContainer,.aa-Panel{color:#fff;font-family:inherit;font-size:16px;font-size:14px;font-weight:400;line-height:1em;margin:0 .5rem;padding:0;text-align:left}.aa-DetachedFormContainer{border-bottom:1px solid #afcaff;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding-inline:2rem}.aa-DetachedFormContainer,.aa-Form{display:-webkit-box;display:-ms-flexbox;display:flex;margin:0}.aa-Form{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#1b1b1b;border:0 solid rgba(128,126,163,.8);border-radius:3px;line-height:1em;position:relative;-webkit-box-flex:1;-ms-flex:1;flex:1;padding-block:8px;background:transparent}.aa-SubmitButton{line-height:1;width:auto;margin:0;padding:0 16px 0 0}.aa-Form[focus-within]{border-color:#afcaff;-webkit-box-shadow:none;box-shadow:none;outline:medium none currentColor}.aa-Form:focus-within{border-color:#afcaff;-webkit-box-shadow:none;box-shadow:none;outline:medium none currentColor}.aa-Input::-webkit-input-placeholder{font-weight:400;color:inherit}.aa-Input::-moz-placeholder{font-weight:400;color:inherit}.aa-Input:-ms-input-placeholder{font-weight:400;color:inherit}.aa-Input::-ms-input-placeholder{font-weight:400;color:inherit}.aa-Input::placeholder{font-weight:400;color:inherit}.aa-SourceHeaderTitle{display:inline-block;font-size:14px;line-height:17px;font-weight:700;margin:0;padding:0 8px 0 0;position:relative;z-index:9999;color:inherit}.aa-DetachedCancelButton{background:none;cursor:pointer;font:inherit;border-radius:8px;border:1px solid #313131;padding:10px 16px;margin:auto 0}.autocomplete-root{position:absolute;top:4.88889rem;left:30px;margin-left:20px;width:100%}.autocomplete-root .aa-Autocomplete .aa-Form{line-height:100%;color:#858585;padding:4px 8px;border-radius:.5rem;background-color:#f6f6f6;border:none}.aa-ItemContent{gap:16px}.aa-ItemContent mark{color:inherit;border-bottom:2px solid #fff;font-weight:600}.aa-ItemActionButtonDanger:hover svg{fill:#ff4557}.aa-ItemLink:hover{text-decoration:none}.aa-Item[aria-selected=true] .aa-ItemContentSubtitle{color:inherit}.aa-ItemContentSubtitle{font-size:12px;font-weight:500;line-height:1.5;color:#ccc;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.aa-ItemContentTitle{line-height:1.7}.aa-Item[aria-selected=true] .aa-ItemContentTitle{color:inherit}.aa-Item[aria-selected=true] .aa-ItemContent mark{border-color:inherit}.aa-DetachedSearchButton:focus{-webkit-box-shadow:#afcaff 0 0 0 0,inset #afcaff 0 0 0 2px;box-shadow:0 0 0 0 #afcaff,inset 0 0 0 2px #afcaff}.aa-SourceNoResults{padding:1rem 0}@media screen and (max-width:680px){.aa-DetachedSearchButton:focus{-webkit-box-shadow:none;box-shadow:none;outline:none;border:none}.aa-DetachedSearchButton{background-color:transparent}}@media screen and (min-width:680px){.autocomplete-root{position:static;width:min(300px,50%)}}@media screen and (min-width:1024px){.autocomplete-root{margin-left:0;width:min(484px,50%)}}.aa-Input::-webkit-input-placeholder{color:#afcaff}.aa-Input::-moz-placeholder{color:#afcaff}.aa-Input:-ms-input-placeholder{color:#afcaff}.aa-Input::-ms-input-placeholder{color:#afcaff}.aa-Input::placeholder{color:#afcaff}.aa-Item[aria-selected=true] svg{color:#0b0b0b} \ No newline at end of file diff --git a/pr-1195/_/css/search.css b/pr-1195/_/css/search.css deleted file mode 100644 index d3845333e4..0000000000 --- a/pr-1195/_/css/search.css +++ /dev/null @@ -1,123 +0,0 @@ -.search-result-dropdown-menu { - position: absolute; - z-index: 100; - display: block; - right: 0; - left: inherit; - top: 100%; - border-radius: 4px; - margin: 6px 0 0; - padding: 0; - text-align: left; - height: auto; - background: transparent; - border: none; - max-width: 600px; - min-width: 500px; - box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.2), 0 2px 3px 0 rgba(0, 0, 0, 0.1); -} - -@media screen and (max-width: 768px) { - .search-result-dropdown-menu { - min-width: calc(100vw - 3.75rem); - } -} - -.search-result-dataset { - position: relative; - border: 1px solid #d9d9d9; - background: #fff; - border-radius: 4px; - overflow: auto; - padding: 8px; - max-height: calc(100vh - 5.25rem); - line-height: 1.5; -} - -.search-result-item { - display: flex; - margin-top: 0.5rem; -} - -.search-result-component-header { - color: #1e1e1e; - border-bottom: 1px solid #ddd; - margin-left: 0.5em; - margin-right: 0.5em; - padding-top: 0.25em; - padding-bottom: 0.25em; -} - -.search-result-document-title { - width: 33%; - border-right: 1px solid #ddd; - color: #02060c; - font-weight: 500; - font-size: 0.8rem; - padding: 0.5rem 0.5rem 0.5rem 0; - text-align: right; - position: relative; - word-wrap: break-word; -} - -.search-result-document-hit { - flex: 1; - font-size: 0.75rem; - color: #63676d; -} - -.search-result-document-hit > a { - color: inherit; - display: block; - padding: 0.55rem 0.25rem 0.55rem 0.75rem; -} - -.search-result-document-hit > a:hover { - background-color: rgba(69, 142, 225, 0.05); -} - -.search-result-document-hit .search-result-highlight { - color: #174d8c; - background: rgba(143, 187, 237, 0.1); - padding: 0.1em 0.05em; - font-weight: 500; -} - -.search-result-document-hit .search-result-section-title { - color: #303030; - font-weight: 500; - font-size: 1.05em; - margin-bottom: 0.25em; -} - -#search-input { - padding: 0.25em; -} - -#search-input:focus { - outline: none; -} - -#search-field { - display: flex; -} - -#search-field .filter { - background: #fff linear-gradient(180deg,#e1e1e1 0,#e1e1e1) no-repeat 0/1px 50%; - border: 1px solid #e1e1e1; - border-left: none; - border-radius: 0 0.1em 0.1em 0; - color: #5d5d5d; - cursor: pointer; - font-size: .875em; - display: flex; - align-items: center; - padding: 0 0.5rem; - white-space: nowrap; - overflow: hidden; -} - -#search-field.has-filter > input { - border-right: none; - border-radius: 0.1em 0 0 0.1em; -} diff --git a/pr-1195/_/css/site.css b/pr-1195/_/css/site.css deleted file mode 100644 index 3a6d85060d..0000000000 --- a/pr-1195/_/css/site.css +++ /dev/null @@ -1,18 +0,0 @@ -@font-face{font-family:Roboto;font-style:normal;font-weight:400;src:local("Roboto Regular"),local("Roboto-Regular"),url(../font/roboto-latin-400.woff2) format("woff2"),url(../font/roboto-latin-400.woff) format("woff")}@font-face{font-family:Roboto;font-style:italic;font-weight:400;src:local("Roboto Italic"),local("Roboto-Italic"),url(../font/roboto-latin-400italic.woff2) format("woff2"),url(../font/roboto-latin-400italic.woff) format("woff")}@font-face{font-family:Roboto;font-style:normal;font-weight:500;src:local("Roboto Medium"),local("Roboto-Medium"),url(../font/roboto-latin-500.woff2) format("woff2"),url(../font/roboto-latin-500.woff) format("woff")}@font-face{font-family:Roboto;font-style:italic;font-weight:500;src:local("Roboto Medium Italic"),local("Roboto-MediumItalic"),url(../font/roboto-latin-500italic.woff2) format("woff2"),url(../font/roboto-latin-500italic.woff) format("woff")}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:400;src:local("Roboto Mono Regular"),local("RobotoMono-Regular"),url(../font/roboto-mono-latin-400.woff2) format("woff2"),url(../font/roboto-mono-latin-400.woff) format("woff")}@font-face{font-family:Roboto Mono;font-style:normal;font-weight:500;src:local("Roboto Mono Medium"),local("RobotoMono-Medium"),url(../font/roboto-mono-latin-500.woff2) format("woff2"),url(../font/roboto-mono-latin-500.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:400;src:local("Inter"),local("Inter-Regular"),url(../font/Inter-Regular.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:400;src:local("Inter Italic"),local("Inter-Italic"),url(../font/Inter-Italic.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:500;src:local("Inter Medium"),local("Inter-Medium"),url(../font/Inter-Medium.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:500;src:local("Inter MediumItalic"),local("Inter-MediumItalic"),url(../font/Inter-MediumItalic.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:600;src:local("Inter SemiBold"),local("Inter-SemiBold"),url(../font/Inter-SemiBold.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:600;src:local("Inter SemiBoldItalic"),local("Inter-SemiBoldItalic"),url(../font/Inter-SemiBoldItalic.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:700;src:local("Inter Bold"),local("Inter-Bold"),url(../font/Inter-Bold.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:700;src:local("Inter BoldItalic"),local("Inter-BoldItalic"),url(../font/Inter-BoldItalic.woff) format("woff")}@font-face{font-family:Fira Code;src:local("FiraCode Regular"),local("FiraCode-Regular"),url(../font/FiraCode-Regular.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:Fira Code;src:local("FiraCode Medium"),local("FiraCode-Medium"),url(../font/FiraCode-Medium.woff) format("woff");font-weight:500;font-style:normal}*,::after,::before{-webkit-box-sizing:inherit;box-sizing:inherit}html{-webkit-box-sizing:border-box;box-sizing:border-box;font-size:1em;height:100%}@media screen and (min-width:1024px){html{font-size:1em}}body{background:#fbfbfb;color:#000;font-family:Inter,sans-serif;line-height:2;margin:0;word-wrap:anywhere}a{text-decoration:none}a:hover{text-decoration:underline}a:active{background-color:none}code,kbd,pre{font-family:Roboto Mono,monospace}b,dt,strong,th{font-weight:500}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}em em{font-style:normal}strong strong{font-weight:400}button{cursor:pointer;font-family:inherit;font-size:1em;line-height:2;margin:0}button::-moz-focus-inner{border:none;padding:0}summary{cursor:pointer;-webkit-tap-highlight-color:transparent;outline:none}table{border-collapse:collapse;word-wrap:normal}object[type="image/svg+xml"]:not([width]){width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}@supports (scrollbar-width:thin){body *{scrollbar-width:thin;scrollbar-color:#c1c1c1 transparent}}body ::-webkit-scrollbar{height:.25rem;width:.25rem}body ::-webkit-scrollbar-thumb{background-color:#c1c1c1}@media screen and (min-width:1024px){.body{display:-webkit-box;display:-ms-flexbox;display:flex}}.nav-container{position:fixed;top:4.88889rem;bottom:0;left:0;width:100%;font-size:.94444rem;z-index:11;visibility:hidden;background:#fbfbfb;overflow-y:auto}.nav-link,.nav-text{display:inline-block;padding-block:.625rem;-webkit-box-flex:1;-ms-flex:1;flex:1;padding-right:2rem}@media screen and (min-width:1024px){.nav-container{font-size:.86111rem;-webkit-box-flex:0;-ms-flex:none;flex:none;position:static;top:0;visibility:visible;top:4.88889rem;z-index:1;width:18rem;overflow-y:unset}.nav .nav-panel-explore{bottom:0}}.nav-container.is-active{visibility:visible}.nav{background:#fbfbfb;position:relative}@media screen and (max-width:1023.5px){.nav{height:100%!important}}@media screen and (min-width:769px){.nav{-webkit-box-shadow:.5px 0 3px #c1c1c1;box-shadow:.5px 0 3px #c1c1c1}}@media screen and (min-width:1024px){.nav{top:7.38889rem;-webkit-box-shadow:none;box-shadow:none;position:sticky;height:calc(100vh - 11.57639rem)}.nav-panel-menu{overflow-y:auto}}.nav .panels{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:inherit}html.is-clipped--nav{overflow-y:hidden}.nav-panel-menu{-ms-scroll-chaining:none;overscroll-behavior:none}.nav-panel-menu:not(.is-active) .nav-menu{opacity:.75}.nav-panel-menu:not(.is-active)::after{content:"";background:rgba(0,0,0,.5);display:block;position:absolute;top:0;right:0;bottom:0;left:0}.nav-menu{min-height:100%;line-height:1.35;position:relative}@media screen and (min-width:1024px){.nav-menu{padding:.5rem 0}}.nav-menu h3.title{color:#424242;font-size:inherit;font-weight:500;margin:0;padding:.25em 0 .125em}.nav-menu a{color:inherit}.nav-list{margin-left:1rem;padding:0}.nav-menu>.nav-list+.nav-list{margin-top:.5rem}.nav-item{list-style:none;font-size:.875rem;line-height:1.5;margin-left:-16rem;padding-left:16rem;color:#6b7280}.nav-menu>.nav-list{margin-top:10px;margin-left:0}@media screen and (min-width:1024px){.nav-menu>.nav-list{margin-left:1rem}}.nav-item[data-depth="0"]>.nav-list:first-child{display:block}.nav-item:not(.is-active)>.nav-list{display:none}.nav-item-toggle{border:none;outline:none;line-height:inherit;position:absolute;height:1.35em;width:1.35em;margin-top:.7em;right:1em;mask-image:url(../img/chevron-toggle.svg);-webkit-mask-image:url(../img/chevron-toggle.svg);background-color:#6b7280}.nav-item-toggle:hover{background-color:#5c94ff}.nav-item.is-active>.nav-item-toggle{-webkit-transform:rotate(90deg);transform:rotate(90deg);background-color:#5c94ff}.is-current-page>.nav-link,.is-current-page>.nav-text{font-weight:500}.nav-panel-explore{background:#fbfbfb;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;position:absolute;top:0;right:0;bottom:3.5em;left:0}.nav-panel-explore:not(:first-child){top:auto;max-height:calc(50% + 2.5rem)}.nav-panel-explore .context{font-size:.83333rem;-ms-flex-negative:0;flex-shrink:0;color:#5d5d5d;-webkit-box-shadow:0 -1px 0 #e1e1e1;box-shadow:0 -1px 0 #e1e1e1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;cursor:pointer;line-height:1;height:2.5rem;padding:.5em 1.5em}.nav-panel-explore .context .version{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:inherit;-ms-flex-align:inherit;align-items:inherit}.nav-panel-explore .context .version::after{content:"";background:url(../img/chevron.svg) no-repeat 100%/auto 100%;width:1.25em;height:.75em}.nav-panel-explore .components{line-height:2;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-shadow:inset 0 1px 5px #e1e1e1;box-shadow:inset 0 1px 5px #e1e1e1;background:#f7f9fb;padding:.5rem .75rem 0;margin:0;overflow-y:scroll;max-height:100%;display:block}.nav-panel-explore:not(.is-active) .components{display:none}.nav-panel-explore .component{display:block}.nav-panel-explore .component+.component{margin-top:.5rem}.nav-panel-explore .component:last-child{margin-bottom:.75rem}.nav-panel-explore .component .title{font-weight:500;color:inherit}.nav-panel-explore .versions{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;list-style:none;padding-left:0;margin-top:-.25rem;line-height:1}.nav-panel-explore .component .version{display:block;margin:.375rem .375rem 0 0}.nav-panel-explore .component .version a{border:1px solid #c1c1c1;color:inherit;opacity:.75;white-space:nowrap;border-radius:.9rem;text-decoration:none;opacity:1;-webkit-box-flex:0;-ms-flex:none;flex:none;-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0;-ms-flex-positive:0;flex-grow:0;padding:.4em 1em .2em}.nav-panel-explore .component .is-current a{border-color:currentColor;opacity:.9;font-weight:500}.nav-panel-explore .component .version a:hover{border:1px solid #254898;color:#254898}.nav-panel-explore .component .version.is-current a,.nav-panel-explore .component .version a:focus{background:#254898;color:#fff}.nav-list>.nav-item>span{margin-left:-16rem;padding-left:16rem;display:inline-block}.nav-list>.nav-item[data-depth="1"]>a,.nav-list>.nav-item[data-depth="1"]>span,.nav-list>.parent[data-depth="1"]>span>a{font-weight:500;font-size:.9375rem;line-height:1.5;color:#363636}.nav-panel-explore.is-active .context .version::after{-webkit-transform:rotate(180deg);transform:rotate(180deg);margin-left:.5em}.nav-menu>.title{display:none}.is-current-page.parent>span,.is-current-page:not(.parent){background-color:#ebf2ff}.is-current-page.parent>span{display:-webkit-box;display:-ms-flexbox;display:flex}.is-current-page.parent>span>a,.is-current-page>.nav-link{color:#0c0c4f;font-weight:500}.components-versions{width:calc(18rem - 1.5em);height:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:inherit;padding:0 1em 0 0;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;border-right:1px solid #dfe6f2}.nav-toggle{margin-left:1rem}@media screen and (max-width:1023.5px){aside.toc.sidebar{display:none}main>.content{overflow-x:auto}}@media screen and (min-width:1024px){main{-webkit-box-flex:1;-ms-flex:auto;flex:auto;min-width:0}main>.content{display:-webkit-box;display:-ms-flexbox;display:flex}aside.toc.embedded{display:none}aside.toc.sidebar{-webkit-box-flex:0;-ms-flex:0 0 12rem;flex:0 0 12rem;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}}@media screen and (min-width:1216px){aside.toc.sidebar{-ms-flex-preferred-size:15rem;flex-basis:15rem}}.toolbar{color:#5d5d5d;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#f7f9fb;-webkit-box-shadow:0 1px 0 #efefef;box-shadow:0 1px 0 #efefef;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:.83333rem;height:2.5rem;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;position:sticky;top:4.88889rem;z-index:2;padding-inline:1rem}.toolbar a{color:inherit}.nav-toggle{background:url(../img/menu.svg) no-repeat 50% 47.5%;background-size:49%;border:none;outline:none;line-height:inherit;padding:0;height:2.5rem;width:2.5rem;margin-right:-.25rem}@media screen and (min-width:1024px){.nav-toggle{display:none}.toolbar{padding-inline:0}}.nav-toggle.is-active{background-image:url(../img/back.svg);background-size:41.5%}.home-link{display:block;mask-image:url(../img/home-outlined.svg);-webkit-mask-image:url(../img/home-outlined.svg);background-color:red;height:1.25rem;width:1.25rem;background-color:#6b7280}.edit-this-page{display:none;padding-right:.5rem}@media screen and (min-width:1024px){.home-link{margin:.625rem}.edit-this-page{display:block}}.toolbar .edit-this-page a{color:#8e8e8e}.breadcrumbs{display:none;-webkit-box-flex:1;-ms-flex:1 1;flex:1 1;padding:0 .5rem 0 .75rem;line-height:1.35;color:#6b7280}@media screen and (min-width:1024px){.breadcrumbs{display:block}}a+.breadcrumbs{padding-left:.05rem}.breadcrumbs ul{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0;padding:0;list-style:none}.breadcrumbs li{display:inline;margin:0}.breadcrumbs li::after{content:"/";padding:0 .5rem}.breadcrumbs li:last-of-type::after{content:none}.page-versions{margin:0 .2rem 0 auto;position:relative;line-height:1}@media screen and (min-width:1024px){.page-versions{margin-right:.7rem}}.page-versions .version-menu-toggle{color:inherit;background:url(../img/chevron.svg) no-repeat;background-position:right .5rem top 50%;background-size:auto .75em;border:none;outline:none;line-height:inherit;padding:.5rem 1.5rem .5rem .5rem;position:relative;z-index:3}.page-versions .version-menu{min-width:100%;padding:1.375rem 1.5rem .5rem .5rem}.page-versions:not(.is-active) .version-menu{display:none}.page-versions .version{display:block;padding-top:.5rem}.page-versions .version.is-current{display:none}.page-versions .version.is-missing{color:#8e8e8e;font-style:italic;text-decoration:none}aside.toc.embedded{display:none}@media screen and (min-width:1024px){.aside.toc.embedded{display:block}}.toc-menu{color:#6b7280}.toc.sidebar .toc-menu{margin-right:.75rem;position:sticky;top:7.38889rem}.toc .toc-menu h3{color:#0c0c4f;font-size:.875rem;font-weight:700;line-height:1.3;margin:0;padding-left:1rem;padding-bottom:.5rem;text-transform:uppercase}.toc.sidebar .toc-menu h3{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:4rem;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.toc .toc-menu ul{font-size:.875rem;line-height:1.6;list-style:none;margin:0;padding:0}.toc.sidebar .toc-menu ul{max-height:calc(100vh - 9.88889rem);overflow-y:auto;-ms-scroll-chaining:none;overscroll-behavior:none;scrollbar-width:none}.toc .toc-menu ul::-webkit-scrollbar{width:0;height:0}.toc .toc-menu li{margin:0}.toc .toc-menu li[data-level="2"] a{padding-left:2rem}.toc .toc-menu li[data-level="3"] a{padding-left:3rem}.toc .toc-menu a{color:inherit;display:inline-block;padding:.5rem 0 .5rem 1rem;text-decoration:none;position:relative}.toc .toc-menu a::before{content:"";position:absolute;height:100%;width:1px;background:#efefef;left:2px}.toc .toc-menu a.is-active::after{content:"";width:5px;height:40%;left:0;position:absolute;background:#5c94ff;border-radius:1px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.sidebar.toc .toc-menu a{display:block;outline:none}.toc .toc-menu a:hover{color:#4070f4}.toc .toc-menu a.is-active{color:#5c94ff;font-weight:500}.sidebar.toc .toc-menu a:focus{background:#f7f9fb}.toc .toc-menu .is-hidden-toc{display:none!important}.doc{color:#363636;font-size:inherit;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;line-height:2;margin:0 auto;max-width:40rem;padding:0 1rem 4rem}@media screen and (min-width:1024px){.doc{-webkit-box-flex:1;-ms-flex:auto;flex:auto;font-size:1rem;margin:0 2rem;max-width:72rem;min-width:0}}.doc h1,.doc h2,.doc h3,.doc h4,.doc h5,.doc h6{color:#0c0c4f;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none;line-height:1;margin:20px 0;font-weight:700}.doc h3,.doc h4,.doc h5,.doc h6{margin-top:40px!important}.doc>h1.page:first-child{font-size:1.5rem;margin-top:1.5rem;margin-bottom:1rem}.doc>h2{font-size:1.5rem}.doc>h3{font-size:18px}@media screen and (min-width:1024px){.doc>h1.page:first-child{margin-top:2.5rem;font-size:3rem;line-height:3.625rem}}.doc>h1.page:first-child+aside.toc.embedded{margin-top:-.5rem}.doc>h2#name+.sectionbody{margin-top:0}#preamble+.sect1,.doc .sect1+.sect1{margin-top:3rem}.doc h1.sect0{background:#f0f0f0;font-size:1.8em;margin:1.5rem -1rem 0;padding:.5rem 1rem}.doc h2:not(.discrete){border-bottom:1px solid #efefef;padding-bottom:1rem}.doc h1 .anchor,.doc h2 .anchor,.doc h3 .anchor,.doc h4 .anchor,.doc h5 .anchor,.doc h6 .anchor{position:absolute;text-decoration:none;width:1.75ex;margin-left:-1.5ex;visibility:hidden;font-size:.8em;font-weight:400;padding-top:.05em}.doc h1 .anchor::before,.doc h2 .anchor::before,.doc h3 .anchor::before,.doc h4 .anchor::before,.doc h5 .anchor::before,.doc h6 .anchor::before{content:"\00a7"}.doc h1:hover .anchor,.doc h2:hover .anchor,.doc h3:hover .anchor,.doc h4:hover .anchor,.doc h5:hover .anchor,.doc h6:hover .anchor{visibility:visible}.doc dl,.doc p{margin:0}.doc a{color:#5c94ff}.doc a.bare{-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}.doc a.unresolved{color:#c507e4}.doc i.fa{-webkit-hyphens:none;-ms-hyphens:none;hyphens:none;font-style:normal}.doc .colist>table code,.doc h2 code,.doc h3 code,.doc p code,.doc thead code{color:#000;background:#f7f9fb;border-radius:.25em}.doc code,.doc pre{-webkit-hyphens:none;-ms-hyphens:none;hyphens:none;font-weight:500;border-radius:.5rem}.doc code{padding:4px}.doc pre{font-size:.88889rem;line-height:1.5;margin:0}.doc blockquote{margin:0}.doc .paragraph.lead>p{font-size:1rem}.doc .right{float:right}.doc .left{float:left}.doc .stretch{width:100%}.doc .underline{text-decoration:underline}.doc .line-through{text-decoration:line-through}.doc .admonitionblock,.doc .dlist,.doc .exampleblock,.doc .hdlist,.doc .imageblock,.doc .listingblock,.doc .literalblock,.doc .olist,.doc .paragraph,.doc .partintro,.doc .quoteblock,.doc .sidebarblock,.doc .ulist,.doc .verseblock,.doc details,.doc hr{margin:1rem 0 0}.doc table.tableblock{margin:1.5rem 0 0;display:block;max-width:-moz-fit-content;max-width:-webkit-fit-content;max-width:fit-content;overflow-x:auto;word-wrap:normal;word-break:normal;padding-inline:1.5rem;padding-block:1.25rem}.hdlist table{table-layout:fixed;width:100%;word-wrap:break-word}.doc table.tableblock+*{margin-top:1.5rem}.doc p.tableblock+p.tableblock{margin-top:.5rem}.doc td.tableblock>.content>:first-child{margin-top:0}.doc table.tableblock td,.doc table.tableblock th{padding:.7rem 1rem}.doc table.tableblock,.doc table.tableblock>*>tr>*{border:0 solid #efefef}.doc table.grid-all>*>tr>*{border-width:1px}.doc table.grid-cols>*>tr>*{border-width:0 1px}.doc table.grid-rows>*>tr>*{border-width:1px 0}.doc table.grid-all>thead th,.doc table.grid-rows>thead th{border-bottom-width:2.5px}.doc table.frame-all{border-width:1px}.doc table.frame-ends{border-width:1px 0}.doc table.frame-sides{border-width:0 1px}.doc table.frame-none>colgroup+*>:first-child>*,.doc table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}.doc table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}.doc table.frame-ends>*>tr>:first-child,.doc table.frame-none>*>tr>:first-child{border-left-width:0}.doc table.frame-ends>*>tr>:last-child,.doc table.frame-none>*>tr>:last-child{border-right-width:0}.doc div.stripes-even table>tbody>tr:nth-of-type(2n),.doc div.stripes-odd table>tbody>tr:nth-of-type(odd),.doc table.stripes-all>tbody>tr,.doc table.stripes-even>tbody>tr:nth-of-type(2n),.doc table.stripes-hover>tbody>tr:hover,.doc table.stripes-odd>tbody>tr:nth-of-type(odd){background:#f7f9fb}.doc div.stripes-even table>tbody>tr:nth-of-type(2n),.doc div.stripes-odd table>tbody>tr:nth-of-type(odd){background:#f0f0f0}.doc div.stripes-even table>tbody>tr:nth-of-type(odd),.doc div.stripes-odd table>tbody>tr:nth-of-type(2n){background:#f7f9fb}.doc table.stripes-all>tbody>tr>td,.doc table.stripes-even>tbody>tr:nth-of-type(2n)>td,.doc table.stripes-odd>tbody>tr:nth-of-type(odd)>td{border-radius:0}.doc table.tableblock>tfoot{background:-webkit-gradient(linear,left top,left bottom,from(#f0f0f0),to(#fff));background:linear-gradient(180deg,#f0f0f0 0,#fff)}.doc .halign-left{text-align:left}.doc .halign-right{text-align:right}.doc .halign-center{text-align:center}.doc .valign-top{vertical-align:top}.doc .valign-bottom{vertical-align:bottom}.doc .valign-middle{vertical-align:middle}.doc .admonitionblock{border-radius:8px}.doc .admonitionblock.tip{border:1px solid #c4e2e0}.doc .admonitionblock.note{border:1px solid #dee3ed}.doc .admonitionblock.important{border:1px solid #e9e1da}.doc .admonitionblock.caution,.doc .admonitionblock.warning{border:1px solid #e7d5d4}.doc .admonitionblock td.content>.title+*,.doc .admonitionblock td.content>:not(.title):first-child{margin-top:0}.doc .admonitionblock pre{font-size:.83333rem}.doc .admonitionblock>table{table-layout:fixed;position:relative;width:100%}.doc .admonitionblock td.content{background:#f7f9fb;width:100%;word-wrap:anywhere;padding:73px 24px 24px;border-radius:.5rem}.doc .admonitionblock p,.doc .admonitionblock td.content{line-height:1.5}@media screen and (min-width:1024px){.doc .admonitionblock td.content{padding:24px 24px 24px 152px;min-height:96px}.doc .admonitionblock.note td.content{padding:24px 24px 24px 141px}.doc .admonitionblock.important td.content{padding:24px 24px 24px 176px}.doc .admonitionblock.caution td.content{padding:24px 24px 24px 162px}.doc .admonitionblock.warning td.content{padding:24px 24px 24px 166px}.doc .admonitionblock.tip td.content{padding:24px 24px 24px 131px}}.doc .admonitionblock .icon{position:absolute;font-size:18px;line-height:1;top:32px;left:24px;z-index:1;padding:8px 12px;border-radius:4px;text-align:center}@media screen and (min-width:1024px){.doc .admonitionblock.one-line-block .icon{top:18px}}@media screen and (max-width:1024px){.doc .admonitionblock .icon{top:24px}}.doc .admonitionblock .icon .icon-note::before{background-image:url(../img/pencil-filled.svg)}.doc .admonitionblock .icon .icon-note::before,.doc .admonitionblock .icon .icon-warning::before{background-repeat:no-repeat;content:"";display:inline-block;vertical-align:middle;margin-right:8px}.doc .admonitionblock .icon .icon-warning::before{background-image:url(../img/warning-outlined.svg)}.doc .admonitionblock .icon .icon-caution::before{background-image:url(../img/i-caution-outlined.svg);background-repeat:no-repeat;content:"";display:inline-block;vertical-align:middle;margin-right:8px}.doc .admonitionblock .icon .icon-important::before{background-image:url(../img/flag-filled.svg)}.doc .admonitionblock .icon .icon-important::before,.doc .admonitionblock .icon .icon-tip::before{background-repeat:no-repeat;content:"";display:inline-block;vertical-align:middle;margin-right:8px}.doc .admonitionblock .icon .icon-tip::before{background-image:url(../img/tip-outlined.svg)}.doc .admonitionblock .icon .icon-caution::before,.doc .admonitionblock .icon .icon-important::before,.doc .admonitionblock .icon .icon-note::before,.doc .admonitionblock .icon .icon-tip::before,.doc .admonitionblock .icon .icon-warning::before{width:22px;height:22px;background-size:22px 22px}.doc .admonitionblock.tip td.content{background:#effbfa}.doc .admonitionblock.note td.content{background:#ebf2ff}.doc .admonitionblock.important td.content{background:#fff5eb}.doc .admonitionblock.caution td.content,.doc .admonitionblock.warning td.content{background:#ffedeb}.doc .admonitionblock.tip .icon{background-color:#80dcda}.doc .admonitionblock.important .icon{background-color:#ffcd9a}.doc .admonitionblock.note .icon{background-color:#b6cfff}.doc .admonitionblock.caution .icon,.doc .admonitionblock.warning .icon{background-color:#ff7e6d}.doc .admonitionblock .icon i::after{content:attr(title);display:inline-block;vertical-align:middle;color:#363636;font-size:14px;line-height:1;font-weight:700}.doc .imageblock{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.doc .image>img,.doc .image>object,.doc .image>svg,.doc .imageblock img,.doc .imageblock object,.doc .imageblock svg{display:inline-block;height:auto;max-width:100%;vertical-align:middle}.doc .image:not(.left):not(.right)>img{margin-top:-.2em}#preamble .abstract blockquote{background:#f0f0f0;border-left:5px solid #efefef;color:#4a4a4a;font-size:.88889rem;padding:.75em 1em}.doc .quoteblock,.doc .verseblock{background:#f7f9fb;border-left:5px solid #5d5d5d;color:#5d5d5d}.doc .quoteblock{padding:.25rem 2rem 1.25rem}.doc .quoteblock .attribution{color:#8e8e8e;font-size:.83333rem;margin-top:.75rem}.doc .quoteblock blockquote{margin-top:1rem}.doc .quoteblock .paragraph{font-style:italic}.doc .quoteblock cite{padding-left:1em}.doc .verseblock{font-size:1.15em;padding:1rem 2rem}.doc .verseblock pre{font-family:inherit;font-size:inherit}.doc ol,.doc ul{margin:0;padding:0 0 0 2rem}.doc ol.none,.doc ol.unnumbered,.doc ol.unstyled,.doc ul.checklist,.doc ul.no-bullet,.doc ul.none,.doc ul.unstyled{list-style-type:none}.doc ol.unnumbered,.doc ul.no-bullet{padding-left:1.25rem}.doc ol.unstyled,.doc ul.unstyled{padding-left:0}.doc ul.circle,.doc ul.disc,.doc ul.square{list-style-type:square}.doc ol.arabic{list-style-type:decimal}.doc ol.decimal{list-style-type:decimal-leading-zero}.doc ol.loweralpha{list-style-type:lower-alpha}.doc ol.upperalpha{list-style-type:upper-alpha}.doc ol.lowerroman{list-style-type:lower-roman}.doc ol.upperroman{list-style-type:upper-roman}.doc ol.lowergreek{list-style-type:lower-greek}.doc ul.checklist{padding-left:.5rem}.doc ul.checklist p>i.fa-check-square-o:first-child,.doc ul.checklist p>i.fa-square-o:first-child{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:1.25rem}.doc ul.checklist i.fa-check-square-o::before{content:"\2713"}.doc ul.checklist i.fa-square-o::before{content:"\274f"}.doc .dlist .dlist,.doc .dlist .olist,.doc .dlist .ulist,.doc .olist .dlist,.doc .olist .olist,.doc .olist .ulist,.doc .olist li+li,.doc .ulist .dlist,.doc .ulist .olist,.doc .ulist .ulist,.doc .ulist li+li{margin-top:.5rem}.doc .admonitionblock .listingblock,.doc .olist .listingblock,.doc .ulist .listingblock{padding:0}.doc .admonitionblock .title,.doc .exampleblock .title,.doc .imageblock .title,.doc .listingblock .title,.doc .literalblock .title,.doc .openblock .title,.doc .tableblock caption{font-weight:500;font-style:italic;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none;letter-spacing:.01em;padding-bottom:.075rem;text-align:left}.doc .imageblock .title{margin-top:.5rem;padding-bottom:0}.doc details{margin-left:1rem}.doc details>summary{display:block;position:relative;line-height:2;margin-bottom:.5rem}.doc details>summary::-webkit-details-marker{display:none}.doc details>summary::before{content:"";border:solid transparent;border-left:solid;border-width:.3em 0 .3em .5em;position:absolute;top:.7em;left:-1rem;-webkit-transform:translateX(15%);transform:translateX(15%)}.doc details[open]>summary::before{border-color:currentColor transparent transparent;border-width:.5rem .3rem 0;-webkit-transform:translateY(15%);transform:translateY(15%)}.doc details>summary::after{content:"";width:1rem;height:1em;position:absolute;top:.5em;left:-1rem}.doc details.result{margin-top:.25rem}.doc details.result>summary{font-style:italic;margin-bottom:0}.doc details.result>.content{margin-left:-1rem}.doc .exampleblock>.content,.doc details.result>.content{background:#fff;border:.25rem solid #5d5d5d;border-radius:.5rem;padding:.75rem}.doc .exampleblock>.content::after,.doc details.result>.content::after{content:"";display:table;clear:both}.doc .exampleblock>.content>:first-child,.doc details>.content>:first-child{margin-top:0}.doc .sidebarblock{background:#e1e1e1;border-radius:.75rem;padding:.75rem 1.5rem}.doc .sidebarblock>.content>.title{font-size:1.25rem;font-weight:500;line-height:1.3;margin-bottom:-.3em;text-align:center}.doc .sidebarblock>.content>:not(.title):first-child{margin-top:0}.doc .listingblock.wrap pre,.doc .tableblock pre{white-space:pre-wrap}.doc pre.highlight{position:relative}.doc .listingblock pre:not(.highlight),.doc .literalblock pre,.doc pre.highlight code{display:block;overflow-x:auto;padding:1.5rem;border-radius:.5rem;background-color:#f6f6f6;border:1px solid #ccc}.admonitionblock .listingblock pre:not(.highlight),.admonitionblock .literalblock pre,.admonitionblock pre.highlight code{background-color:hsla(0,0%,100%,.75);border:none}.doc .source-toolbox{display:-webkit-box;display:-ms-flexbox;display:flex;visibility:hidden;position:absolute;top:.25rem;right:.5rem;color:grey;font-family:Inter,sans-serif;font-size:.75rem;line-height:1}.doc .listingblock:hover .source-toolbox{visibility:visible}.doc .source-toolbox .source-lang{text-transform:uppercase;letter-spacing:.075em;font-size:.96em;line-height:1.0425}.doc .source-toolbox>:not(:last-child)::after{content:"|";letter-spacing:0;padding:0 1ch}.doc .source-toolbox .copy-button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:transparent;border:none;color:inherit;outline:none;padding:0;font-size:inherit;line-height:inherit;width:1em;height:1em}.doc .source-toolbox .copy-icon{-webkit-box-flex:0;-ms-flex:none;flex:none;width:inherit;height:inherit;background:url(../img/octicons-16.svg)}.doc .source-toolbox img.copy-icon{-webkit-filter:invert(50.2%);filter:invert(50.2%)}.doc .source-toolbox svg.copy-icon{fill:currentColor}.doc .source-toolbox .copy-toast{-webkit-box-flex:0;-ms-flex:none;flex:none;position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-top:1em;background-color:#363636;border-radius:.25em;padding:.5em;color:#fff;cursor:auto;opacity:0;-webkit-transition:opacity .5s ease .75s;transition:opacity .5s ease .75s}.doc .source-toolbox .copy-toast::after{content:"";position:absolute;top:0;width:1em;height:1em;border:.55em solid transparent;border-left-color:#363636;-webkit-transform:rotate(-90deg) translateX(50%) translateY(50%);transform:rotate(-90deg) translateX(50%) translateY(50%);-webkit-transform-origin:left;transform-origin:left}.doc .source-toolbox .copy-button.clicked .copy-toast{opacity:1;-webkit-transition:none;transition:none}.doc .language-console .hljs-meta{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.doc .dlist dt{font-style:italic}.doc .dlist dd{margin:0 0 .25rem 1.5rem}.doc .dlist dd:last-of-type{margin-bottom:0}.doc td.hdlist1,.doc td.hdlist2{padding:.5rem 0 0;vertical-align:top}.doc tr:first-child>.hdlist1,.doc tr:first-child>.hdlist2{padding-top:0}.doc td.hdlist1{font-weight:500;padding-right:.25rem}.doc td.hdlist2{padding-left:.25rem}.doc .colist{font-size:.88889rem;margin:.25rem 0 -.25rem}.doc .colist>table>tbody>tr>:first-child,.doc .colist>table>tr>:first-child{padding:.25em .5rem 0;vertical-align:top}.doc .colist>table>tbody>tr>:last-child,.doc .colist>table>tr>:last-child{padding:.25rem 0}.doc .conum[data-value]{border:1px solid;border-radius:100%;display:inline-block;font-family:Inter,sans-serif;font-size:.75rem;font-style:normal;line-height:1.2;text-align:center;width:1.25em;height:1.25em;letter-spacing:-.25ex;text-indent:-.25ex}.doc .conum[data-value]::after{content:attr(data-value)}.doc .conum[data-value]+b{display:none}.doc hr{border:solid #efefef;border-width:2px 0 0;height:0}.doc b.button{white-space:nowrap}.doc b.button::before{content:"[";padding-right:.25em}.doc b.button::after{content:"]";padding-left:.25em}.doc kbd{display:inline-block;font-size:.66667rem;background:#f7f9fb;border:1px solid #c1c1c1;border-radius:.25em;-webkit-box-shadow:0 1px 0 #c1c1c1,0 0 0 .1em #fbfbfb inset;box-shadow:0 1px 0 #c1c1c1,inset 0 0 0 .1em #fbfbfb;padding:.25em .5em;vertical-align:text-bottom;white-space:nowrap}.doc .keyseq,.doc kbd{line-height:1}.doc .keyseq{font-size:.88889rem}.doc .keyseq kbd{margin:0 .125em}.doc .keyseq kbd:first-child{margin-left:0}.doc .keyseq kbd:last-child{margin-right:0}.doc .menuseq,.doc .path{-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}.doc .menuseq i.caret::before{content:"\203a";font-size:1.1em;font-weight:500;line-height:.90909}.doc :not(pre).nowrap{white-space:nowrap}.doc .nobreak{-webkit-hyphens:none;-ms-hyphens:none;hyphens:none;word-wrap:normal}#footnotes{font-size:.85em;line-height:1.5;margin:2rem -.5rem 0}.doc td.tableblock>.content #footnotes{margin:2rem 0 0}#footnotes hr{border-top-width:1px;margin-top:0;width:20%}#footnotes .footnote{margin:.5em 0 0 1em}#footnotes .footnote+.footnote{margin-top:.25em}#footnotes .footnote>a:first-of-type{display:inline-block;margin-left:-2em;text-align:right;width:1.5em}.stemblock{overflow-x:auto;padding-block:1rem;border-radius:.5rem;background-color:#f6f6f6;border:1px solid #ccc}.MathJax_Display .MathJax{padding-inline:1rem}.doc .olist .title,.doc .ulist .title,div.title{font-style:normal;font-weight:600;line-height:2.8}nav.pagination{border-top:1px solid #efefef;line-height:1;margin:2rem -1rem -1rem;padding:2rem}nav.pagination,nav.pagination span{display:-webkit-box;display:-ms-flexbox;display:flex}nav.pagination span{-webkit-box-flex:50%;-ms-flex:50%;flex:50%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}nav.pagination .prev{padding-right:.5rem}nav.pagination .next{margin-left:auto;padding-left:.5rem;text-align:right}nav.pagination span::before{line-height:1.5;font-size:.875rem;padding-bottom:2px}nav.pagination .prev::before{content:"Prev"}nav.pagination .next::before{content:"Next"}nav.pagination a{position:relative;font-weight:400;font-size:.875rem;line-height:1.5}nav.pagination a::after,nav.pagination a::before{color:#8e8e8e;font-weight:400;font-size:1.5em;line-height:.75;position:absolute;top:-1px;width:1rem}nav.pagination .next a::after{right:-1.5rem;mask-image:url(../img/chevron-right.svg);-webkit-mask-image:url(../img/chevron-right.svg)}nav.pagination .next a::after,nav.pagination .prev a::before{content:"";width:1em;height:1em;mask-repeat:no-repeat;mask-position:center;mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain;background-color:#5c94ff}nav.pagination .prev a::before{left:-1.5rem;mask-image:url(../img/chevron-left.svg);-webkit-mask-image:url(../img/chevron-left.svg)}nav.pagination .next a:hover::after,nav.pagination .prev a:hover::before{background-color:#4070f4}html.is-clipped--navbar{overflow-y:hidden}body{padding-top:4.88889rem}.navbar{background:#191919;color:#363636;font-size:.88889rem;height:4.88889rem;position:fixed;top:0;width:100%;z-index:4}.navbar a{text-decoration:none}.navbar-end .navbar-link{color:#363636}.navbar-brand{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:auto;flex:auto}.navbar-brand .navbar-item:first-child{-ms-flex-item-align:center;align-self:center;padding:0;color:#363636;font-size:1.22222rem;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:1}.navbar-brand .navbar-item:first-child a{color:inherit;word-wrap:normal}.navbar-brand .navbar-item:first-child :not(:last-child){padding-right:.375rem}.navbar-brand .navbar-item.search{-webkit-box-flex:1;-ms-flex:auto;flex:auto;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}#search-input{color:#333;font-family:inherit;font-size:.95rem;width:150px;border:1px solid #dbdbdb;border-radius:.1em;line-height:1.5;padding:0 .25em}.navbar-burger{background:none;border:none;outline:none;line-height:1;position:relative;width:3rem;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-left:auto;min-width:0}.navbar-burger span{background-color:#363636;height:1.5px;width:1rem}.navbar-burger:not(.is-active) span{-webkit-transition:opacity 0s .25s,margin-top .25s ease-out .25s,-webkit-transform .25s ease-out;transition:opacity 0s .25s,margin-top .25s ease-out .25s,-webkit-transform .25s ease-out;transition:transform .25s ease-out,opacity 0s .25s,margin-top .25s ease-out .25s;transition:transform .25s ease-out,opacity 0s .25s,margin-top .25s ease-out .25s,-webkit-transform .25s ease-out}.navbar-burger span+span{margin-top:.25rem}.navbar-burger.is-active span+span{margin-top:-1.5px}.navbar-burger.is-active span:first-child{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.navbar-burger.is-active span:nth-child(2){opacity:0}.navbar-burger.is-active span:nth-child(3){-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.navbar-item,.navbar-link{display:block;line-height:2}.navbar-item.has-dropdown{padding:0}.navbar-item .icon{width:1.25rem;height:1.25rem;display:block}.navbar-item .icon img,.navbar-item .icon svg{fill:currentColor;width:inherit;height:inherit}.navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}.navbar-divider{background-color:#efefef;border:none;height:1px;margin:.25rem 0}.navbar .button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:#fff;border:1px solid #efefef;border-radius:.15rem;height:1.75rem;color:#000;padding:0 .75em;white-space:nowrap}@media screen and (max-width:768.5px){.navbar-brand .navbar-item.search{padding-left:0;padding-right:0}}@media screen and (min-width:769px){#search-input{width:200px}}@media screen and (max-width:1023.5px){.navbar-brand{height:inherit}.navbar-brand .navbar-item{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.navbar-menu{background:#fff;-webkit-box-shadow:0 8px 16px rgba(10,10,10,.1);box-shadow:0 8px 16px rgba(10,10,10,.1);max-height:calc(100vh - 4.88889rem);overflow-y:auto;-ms-scroll-chaining:none;overscroll-behavior:none;padding:.5rem 0}.navbar-menu:not(.is-active){display:none}.navbar-menu .navbar-link:hover,.navbar-menu a.navbar-item:hover{background:#f5f5f5}}@media screen and (min-width:1024px){.navbar-burger{display:none}.navbar,.navbar-end,.navbar-menu{display:-webkit-box;display:-ms-flexbox;display:flex}.navbar-end{-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:2rem}.navbar-item,.navbar-link{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;-webkit-box-flex:0;-ms-flex:none;flex:none}.navbar-item:not(.has-dropdown),.navbar-link{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar-end .navbar-item.has-dropdown:hover .navbar-link,.navbar-end .navbar-link:hover,.navbar-end>a.navbar-item:hover{background:#fff;color:#363636}.navbar-dropdown{background:#fff;border:1px solid #efefef;border-top:none;border-radius:0 0 .25rem .25rem;display:none;top:100%;left:0;min-width:100%;position:absolute}.navbar-dropdown .navbar-item{padding:.5rem 3rem .5rem 1rem;white-space:nowrap}.navbar-dropdown .navbar-item:last-child{border-radius:inherit}.navbar-dropdown.is-right{left:auto;right:0}.navbar-dropdown a.navbar-item:hover{background:#f5f5f5}}.header-right{margin-left:auto;gap:1.25rem}.header-right,.navbar-item-flex{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar-item-flex{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:1rem}.navbar-item-flex a{font-weight:500}.link-icon{background-image:url(../img/link-icon.svg);width:1.2rem;height:1.2rem;display:block}footer.footer{background-color:#fbfbfb;color:#858585;font-size:.83333rem;line-height:2;padding:1.5rem}.footer p{margin:0}.footer a{color:#858585} - -/*! Adapted from the GitHub style by Vasily Polovnyov */.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:500}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:500}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:500}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:500}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-strong{font-weight:500}@page{margin:.5in}@media print{.hide-for-print{display:none!important}html{font-size:.9375em}a{color:inherit!important;text-decoration:underline}a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none}img,object,svg,tr{page-break-inside:avoid}thead{display:table-header-group}pre{-webkit-hyphens:none;-ms-hyphens:none;hyphens:none;white-space:pre-wrap}body{padding-top:2rem}.navbar{background:none;color:inherit;position:absolute}.navbar *{color:inherit!important}.nav-container,.navbar>:not(.navbar-brand),.toolbar,aside.toc,nav.pagination{display:none}.doc{color:inherit;margin:auto;max-width:none;padding-bottom:2rem}.doc .listingblock code[data-lang]::before{display:block}footer.footer{background:none;border-top:1px solid #efefef;color:#8e8e8e;padding:.25rem .5rem 0}.footer *{color:inherit}} - -/*! @docsearch/css Button 3.0.0-alpha.50 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */.DocSearch-Button{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:#ebedf0;border:0;border-radius:40px;color:#969faf;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;font-weight:500;height:36px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:#fff;-webkit-box-shadow:inset 0 0 0 2px #5468ff;box-shadow:inset 0 0 0 2px #5468ff;color:#1c1e21;outline:none}.DocSearch-Button-Container{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:#1c1e21}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{min-width:calc(40px + .8em)}.DocSearch-Button-Key,.DocSearch-Button-Keys{display:-webkit-box;display:-ms-flexbox;display:flex}.DocSearch-Button-Key{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:linear-gradient(-225deg,#d5dbe4,#f8f8f8);border-radius:3px;-webkit-box-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);box-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);color:#969faf;height:18px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:.4em;padding-bottom:2px;position:relative;top:-1px;width:20px}@media (max-width:750px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}} - -/*! @docsearch/css Modal 3.0.0-alpha.50 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{-webkit-box-sizing:border-box;box-sizing:border-box}.DocSearch-Container{background-color:rgba(101,108,133,.8);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:#5468ff;cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:#f5f6f7;border-radius:6px;-webkit-box-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;box-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:60px auto auto;max-width:560px;position:relative}.DocSearch-SearchBar{padding:12px 12px 0}.DocSearch-Form,.DocSearch-SearchBar{display:-webkit-box;display:-ms-flexbox;display:flex}.DocSearch-Form{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:#fff;border-radius:4px;-webkit-box-shadow:inset 0 0 0 2px #5468ff;box-shadow:inset 0 0 0 2px #5468ff;height:56px;margin:0;padding:0 12px;position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:#1c1e21;-webkit-box-flex:1;-ms-flex:1;flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::-webkit-input-placeholder{color:#969faf;opacity:1}.DocSearch-Input::-moz-placeholder{color:#969faf;opacity:1}.DocSearch-Input:-ms-input-placeholder{color:#969faf;opacity:1}.DocSearch-Input::-ms-input-placeholder{color:#969faf;opacity:1}.DocSearch-Input::placeholder{color:#969faf;opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#5468ff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#5468ff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{-webkit-animation:none;animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:1.4}}.DocSearch-Reset{-webkit-animation:fade-in .1s ease-in forwards;animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:1.4}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:focus{outline:none}.DocSearch-Reset:hover{color:#5468ff}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:488px;min-height:12px;overflow-y:auto;overflow-y:overlay;padding:0 12px;scrollbar-color:#969faf #f5f6f7;scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:#969faf;border:3px solid #f5f6f7;border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:#969faf}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:-webkit-box;display:-ms-flexbox;display:flex}.DocSearch-Logo svg{color:#5468ff;margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:#5468ff}.DocSearch-HitsFooter{color:#969faf;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:.85em;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:12px;padding:12px}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:-webkit-box;display:-ms-flexbox;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{-webkit-transition:none;transition:none}}.DocSearch-Hit--deleting{opacity:0;-webkit-transition:all .25s linear;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{-webkit-transition:none;transition:none}}.DocSearch-Hit--favoriting{-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:top center;transform-origin:top center;-webkit-transition:all .25s linear;transition:all .25s linear;-webkit-transition-delay:.25s;transition-delay:.25s}.DocSearch-Hit a{background:#fff;border-radius:4px;-webkit-box-shadow:0 1px 3px 0 #d4d9e1;box-shadow:0 1px 3px 0 #d4d9e1;display:block;padding-left:12px;width:100%}.DocSearch-Hit-source{background:#f5f6f7;color:#5468ff;font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:#969faf;height:56px;opacity:.5;stroke-width:1.4;width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:#5468ff}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#444950;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;height:56px;padding:0 12px 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:#969faf;stroke-width:1.4}.DocSearch-Hit-action{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);-webkit-transition:background-color .1s ease-in;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{-webkit-transition:none;transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;font-weight:500;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:#969faf;font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:#fff!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);-webkit-transition:none;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:#969faf;padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:#5468ff;cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:#fff;border-radius:0 0 8px 8px;-webkit-box-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12);box-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12);-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;-ms-flex-negative:0;flex-shrink:0;height:44px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 12px;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands,.DocSearch-Footer{display:-webkit-box;display:-ms-flexbox;display:flex}.DocSearch-Commands{color:#969faf;list-style:none;margin:0;padding:0}.DocSearch-Commands li{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:linear-gradient(-225deg,#d5dbe4,#f8f8f8);border-radius:2px;-webkit-box-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);box-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);display:-webkit-box;display:-ms-flexbox;display:flex;height:18px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:.4em;padding-bottom:1px;width:20px}@media (max-width:750px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:-webkit-fill-available;height:100vh;position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;-webkit-box-shadow:none;box-shadow:none;height:-webkit-fill-available;height:100vh;margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(100vh - 112px)}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:#5468ff;cursor:pointer;display:inline-block;-webkit-box-flex:0;-ms-flex:none;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:12px;outline:none;overflow:hidden;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@-webkit-keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.tabs ul{list-style:none;padding:0}.tabs li,.tabs ul{display:-webkit-box;display:-ms-flexbox;display:flex}.tabs li{-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;font-weight:400;font-size:14px;line-height:1;padding:.5rem 1rem;position:relative;border-radius:18px 18px 0 0}.tabs li,.tabs ul{-ms-flex-flow:nowrap;flex-flow:nowrap}.tabs.ulist li{margin-bottom:0;color:#8a8ca2}.tabs.ulist li.is-active{background-color:rgba(64,112,244,.1);color:#4070f4}.tabs.ulist li+li{margin-top:0}.tabset.is-loading .tabs li:first-child::after,.tabs li.is-active::after{background-color:rgba(64,112,244,.1);content:"";display:block;position:absolute;left:0;right:0}.tabset>.content{border:1px solid rgba(64,112,244,.1);padding:1.25rem;border-radius:0 20px 20px 20px}.tabset.is-loading .tab-pane:not(:first-child),.tabset:not(.is-loading) .tab-pane:not(.is-active){display:none}.tab-pane>:first-child{margin-top:0}.swagger-ui .info .title small pre{background:#7d8492}.swagger-ui{color:#3b4151; - /*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */font-family:sans-serif}.swagger-ui html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}.swagger-ui body{margin:0}.swagger-ui article,.swagger-ui aside,.swagger-ui footer,.swagger-ui header,.swagger-ui nav,.swagger-ui section{display:block}.swagger-ui h1{font-size:2em;margin:.67em 0}.swagger-ui figcaption,.swagger-ui figure,.swagger-ui main{display:block}.swagger-ui figure{margin:1em 40px}.swagger-ui hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}.swagger-ui pre{font-family:monospace,monospace;font-size:1em}.swagger-ui a{background-color:transparent;-webkit-text-decoration-skip:objects}.swagger-ui abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.swagger-ui b,.swagger-ui strong{font-weight:inherit;font-weight:bolder}.swagger-ui code,.swagger-ui kbd,.swagger-ui samp{font-family:monospace,monospace;font-size:1em}.swagger-ui dfn{font-style:italic}.swagger-ui mark{background-color:#ff0;color:#000}.swagger-ui small{font-size:80%}.swagger-ui sub,.swagger-ui sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}.swagger-ui sub{bottom:-.25em}.swagger-ui sup{top:-.5em}.swagger-ui audio,.swagger-ui video{display:inline-block}.swagger-ui audio:not([controls]){display:none;height:0}.swagger-ui img{border-style:none}.swagger-ui svg:not(:root){overflow:hidden}.swagger-ui button,.swagger-ui input,.swagger-ui optgroup,.swagger-ui select,.swagger-ui textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}.swagger-ui button,.swagger-ui input{overflow:visible}.swagger-ui button,.swagger-ui select{text-transform:none}.swagger-ui [type=reset],.swagger-ui [type=submit],.swagger-ui button,.swagger-ui html [type=button]{-webkit-appearance:button}.swagger-ui [type=button]::-moz-focus-inner,.swagger-ui [type=reset]::-moz-focus-inner,.swagger-ui [type=submit]::-moz-focus-inner,.swagger-ui button::-moz-focus-inner{border-style:none;padding:0}.swagger-ui [type=button]:-moz-focusring,.swagger-ui [type=reset]:-moz-focusring,.swagger-ui [type=submit]:-moz-focusring,.swagger-ui button:-moz-focusring{outline:1px dotted ButtonText}.swagger-ui fieldset{padding:.35em .75em .625em}.swagger-ui legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}.swagger-ui progress{display:inline-block;vertical-align:baseline}.swagger-ui textarea{overflow:auto}.swagger-ui [type=checkbox],.swagger-ui [type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}.swagger-ui [type=number]::-webkit-inner-spin-button,.swagger-ui [type=number]::-webkit-outer-spin-button{height:auto}.swagger-ui [type=search]{-webkit-appearance:textfield;outline-offset:-2px}.swagger-ui [type=search]::-webkit-search-cancel-button,.swagger-ui [type=search]::-webkit-search-decoration{-webkit-appearance:none}.swagger-ui ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.swagger-ui details,.swagger-ui menu{display:block}.swagger-ui summary{display:list-item}.swagger-ui canvas{display:inline-block}.swagger-ui [hidden],.swagger-ui template{display:none}.swagger-ui .debug *{outline:1px solid gold}.swagger-ui .debug-white *{outline:1px solid #fff}.swagger-ui .debug-black *{outline:1px solid #000}.swagger-ui .debug-grid{background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTRDOTY4N0U2N0VFMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTRDOTY4N0Q2N0VFMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NjcyQkQ3NjY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3NjcyQkQ3NzY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsBS+GMAAAAjSURBVHjaYvz//z8DLsD4gcGXiYEAGBIKGBne//fFpwAgwAB98AaF2pjlUQAAAABJRU5ErkJggg==) repeat 0 0}.swagger-ui .debug-grid-16{background:transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODYyRjhERDU2N0YyMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODYyRjhERDQ2N0YyMTFFNjg2MzZDQjkwNkQ4MjgwMEIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NjcyQkQ3QTY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3NjcyQkQ3QjY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvCS01IAAABMSURBVHjaYmR4/5+BFPBfAMFm/MBgx8RAGWCn1AAmSg34Q6kBDKMGMDCwICeMIemF/5QawEipAWwUhwEjMDvbAWlWkvVBwu8vQIABAEwBCph8U6c0AAAAAElFTkSuQmCC) repeat 0 0}.swagger-ui .debug-grid-8-solid{background:#fff url(data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAAAAAD/4QMxaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzExMSA3OS4xNTgzMjUsIDIwMTUvMDkvMTAtMDE6MTA6MjAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1IChNYWNpbnRvc2gpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkIxMjI0OTczNjdCMzExRTZCMkJDRTI0MDgxMDAyMTcxIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkIxMjI0OTc0NjdCMzExRTZCMkJDRTI0MDgxMDAyMTcxIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QjEyMjQ5NzE2N0IzMTFFNkIyQkNFMjQwODEwMDIxNzEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QjEyMjQ5NzI2N0IzMTFFNkIyQkNFMjQwODEwMDIxNzEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7/7gAOQWRvYmUAZMAAAAAB/9sAhAAbGhopHSlBJiZBQi8vL0JHPz4+P0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHAR0pKTQmND8oKD9HPzU/R0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0f/wAARCAAIAAgDASIAAhEBAxEB/8QAWQABAQAAAAAAAAAAAAAAAAAAAAYBAQEAAAAAAAAAAAAAAAAAAAIEEAEBAAMBAAAAAAAAAAAAAAABADECA0ERAAEDBQAAAAAAAAAAAAAAAAARITFBUWESIv/aAAwDAQACEQMRAD8AoOnTV1QTD7JJshP3vSM3P//Z) repeat 0 0}.swagger-ui .debug-grid-16-solid{background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzY3MkJEN0U2N0M1MTFFNkIyQkNFMjQwODEwMDIxNzEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzY3MkJEN0Y2N0M1MTFFNkIyQkNFMjQwODEwMDIxNzEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3NjcyQkQ3QzY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3NjcyQkQ3RDY3QzUxMUU2QjJCQ0UyNDA4MTAwMjE3MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pve6J3kAAAAzSURBVHjaYvz//z8D0UDsMwMjSRoYP5Gq4SPNbRjVMEQ1fCRDg+in/6+J1AJUxsgAEGAA31BAJMS0GYEAAAAASUVORK5CYII=) repeat 0 0}.swagger-ui .border-box,.swagger-ui a,.swagger-ui article,.swagger-ui body,.swagger-ui code,.swagger-ui dd,.swagger-ui div,.swagger-ui dl,.swagger-ui dt,.swagger-ui fieldset,.swagger-ui footer,.swagger-ui form,.swagger-ui h1,.swagger-ui h2,.swagger-ui h3,.swagger-ui h4,.swagger-ui h5,.swagger-ui h6,.swagger-ui header,.swagger-ui html,.swagger-ui input[type=email],.swagger-ui input[type=number],.swagger-ui input[type=password],.swagger-ui input[type=tel],.swagger-ui input[type=text],.swagger-ui input[type=url],.swagger-ui legend,.swagger-ui li,.swagger-ui main,.swagger-ui ol,.swagger-ui p,.swagger-ui pre,.swagger-ui section,.swagger-ui table,.swagger-ui td,.swagger-ui textarea,.swagger-ui th,.swagger-ui tr,.swagger-ui ul{-webkit-box-sizing:border-box;box-sizing:border-box}.swagger-ui .aspect-ratio{height:0;position:relative}.swagger-ui .aspect-ratio--16x9{padding-bottom:56.25%}.swagger-ui .aspect-ratio--9x16{padding-bottom:177.77%}.swagger-ui .aspect-ratio--4x3{padding-bottom:75%}.swagger-ui .aspect-ratio--3x4{padding-bottom:133.33%}.swagger-ui .aspect-ratio--6x4{padding-bottom:66.6%}.swagger-ui .aspect-ratio--4x6{padding-bottom:150%}.swagger-ui .aspect-ratio--8x5{padding-bottom:62.5%}.swagger-ui .aspect-ratio--5x8{padding-bottom:160%}.swagger-ui .aspect-ratio--7x5{padding-bottom:71.42%}.swagger-ui .aspect-ratio--5x7{padding-bottom:140%}.swagger-ui .aspect-ratio--1x1{padding-bottom:100%}.swagger-ui .aspect-ratio--object{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%;z-index:100}@media screen and (min-width:30em){.swagger-ui .aspect-ratio-ns{height:0;position:relative}.swagger-ui .aspect-ratio--16x9-ns{padding-bottom:56.25%}.swagger-ui .aspect-ratio--9x16-ns{padding-bottom:177.77%}.swagger-ui .aspect-ratio--4x3-ns{padding-bottom:75%}.swagger-ui .aspect-ratio--3x4-ns{padding-bottom:133.33%}.swagger-ui .aspect-ratio--6x4-ns{padding-bottom:66.6%}.swagger-ui .aspect-ratio--4x6-ns{padding-bottom:150%}.swagger-ui .aspect-ratio--8x5-ns{padding-bottom:62.5%}.swagger-ui .aspect-ratio--5x8-ns{padding-bottom:160%}.swagger-ui .aspect-ratio--7x5-ns{padding-bottom:71.42%}.swagger-ui .aspect-ratio--5x7-ns{padding-bottom:140%}.swagger-ui .aspect-ratio--1x1-ns{padding-bottom:100%}.swagger-ui .aspect-ratio--object-ns{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%;z-index:100}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .aspect-ratio-m{height:0;position:relative}.swagger-ui .aspect-ratio--16x9-m{padding-bottom:56.25%}.swagger-ui .aspect-ratio--9x16-m{padding-bottom:177.77%}.swagger-ui .aspect-ratio--4x3-m{padding-bottom:75%}.swagger-ui .aspect-ratio--3x4-m{padding-bottom:133.33%}.swagger-ui .aspect-ratio--6x4-m{padding-bottom:66.6%}.swagger-ui .aspect-ratio--4x6-m{padding-bottom:150%}.swagger-ui .aspect-ratio--8x5-m{padding-bottom:62.5%}.swagger-ui .aspect-ratio--5x8-m{padding-bottom:160%}.swagger-ui .aspect-ratio--7x5-m{padding-bottom:71.42%}.swagger-ui .aspect-ratio--5x7-m{padding-bottom:140%}.swagger-ui .aspect-ratio--1x1-m{padding-bottom:100%}.swagger-ui .aspect-ratio--object-m{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%;z-index:100}}@media screen and (min-width:60em){.swagger-ui .aspect-ratio-l{height:0;position:relative}.swagger-ui .aspect-ratio--16x9-l{padding-bottom:56.25%}.swagger-ui .aspect-ratio--9x16-l{padding-bottom:177.77%}.swagger-ui .aspect-ratio--4x3-l{padding-bottom:75%}.swagger-ui .aspect-ratio--3x4-l{padding-bottom:133.33%}.swagger-ui .aspect-ratio--6x4-l{padding-bottom:66.6%}.swagger-ui .aspect-ratio--4x6-l{padding-bottom:150%}.swagger-ui .aspect-ratio--8x5-l{padding-bottom:62.5%}.swagger-ui .aspect-ratio--5x8-l{padding-bottom:160%}.swagger-ui .aspect-ratio--7x5-l{padding-bottom:71.42%}.swagger-ui .aspect-ratio--5x7-l{padding-bottom:140%}.swagger-ui .aspect-ratio--1x1-l{padding-bottom:100%}.swagger-ui .aspect-ratio--object-l{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%;z-index:100}}.swagger-ui img{max-width:100%}.swagger-ui .cover{background-size:cover!important}.swagger-ui .contain{background-size:contain!important}@media screen and (min-width:30em){.swagger-ui .cover-ns{background-size:cover!important}.swagger-ui .contain-ns{background-size:contain!important}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .cover-m{background-size:cover!important}.swagger-ui .contain-m{background-size:contain!important}}@media screen and (min-width:60em){.swagger-ui .cover-l{background-size:cover!important}.swagger-ui .contain-l{background-size:contain!important}}.swagger-ui .bg-center{background-position:50%;background-repeat:no-repeat}.swagger-ui .bg-top{background-position:top;background-repeat:no-repeat}.swagger-ui .bg-right{background-position:100%;background-repeat:no-repeat}.swagger-ui .bg-bottom{background-position:bottom;background-repeat:no-repeat}.swagger-ui .bg-left{background-position:0;background-repeat:no-repeat}@media screen and (min-width:30em){.swagger-ui .bg-center-ns{background-position:50%;background-repeat:no-repeat}.swagger-ui .bg-top-ns{background-position:top;background-repeat:no-repeat}.swagger-ui .bg-right-ns{background-position:100%;background-repeat:no-repeat}.swagger-ui .bg-bottom-ns{background-position:bottom;background-repeat:no-repeat}.swagger-ui .bg-left-ns{background-position:0;background-repeat:no-repeat}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .bg-center-m{background-position:50%;background-repeat:no-repeat}.swagger-ui .bg-top-m{background-position:top;background-repeat:no-repeat}.swagger-ui .bg-right-m{background-position:100%;background-repeat:no-repeat}.swagger-ui .bg-bottom-m{background-position:bottom;background-repeat:no-repeat}.swagger-ui .bg-left-m{background-position:0;background-repeat:no-repeat}}@media screen and (min-width:60em){.swagger-ui .bg-center-l{background-position:50%;background-repeat:no-repeat}.swagger-ui .bg-top-l{background-position:top;background-repeat:no-repeat}.swagger-ui .bg-right-l{background-position:100%;background-repeat:no-repeat}.swagger-ui .bg-bottom-l{background-position:bottom;background-repeat:no-repeat}.swagger-ui .bg-left-l{background-position:0;background-repeat:no-repeat}}.swagger-ui .outline{outline:1px solid}.swagger-ui .outline-transparent{outline:1px solid transparent}.swagger-ui .outline-0{outline:0}@media screen and (min-width:30em){.swagger-ui .outline-ns{outline:1px solid}.swagger-ui .outline-transparent-ns{outline:1px solid transparent}.swagger-ui .outline-0-ns{outline:0}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .outline-m{outline:1px solid}.swagger-ui .outline-transparent-m{outline:1px solid transparent}.swagger-ui .outline-0-m{outline:0}}@media screen and (min-width:60em){.swagger-ui .outline-l{outline:1px solid}.swagger-ui .outline-transparent-l{outline:1px solid transparent}.swagger-ui .outline-0-l{outline:0}}.swagger-ui .ba{border-style:solid;border-width:1px}.swagger-ui .bt{border-top-style:solid;border-top-width:1px}.swagger-ui .br{border-right-style:solid;border-right-width:1px}.swagger-ui .bb{border-bottom-style:solid;border-bottom-width:1px}.swagger-ui .bl{border-left-style:solid;border-left-width:1px}.swagger-ui .bn{border-style:none;border-width:0}@media screen and (min-width:30em){.swagger-ui .ba-ns{border-style:solid;border-width:1px}.swagger-ui .bt-ns{border-top-style:solid;border-top-width:1px}.swagger-ui .br-ns{border-right-style:solid;border-right-width:1px}.swagger-ui .bb-ns{border-bottom-style:solid;border-bottom-width:1px}.swagger-ui .bl-ns{border-left-style:solid;border-left-width:1px}.swagger-ui .bn-ns{border-style:none;border-width:0}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .ba-m{border-style:solid;border-width:1px}.swagger-ui .bt-m{border-top-style:solid;border-top-width:1px}.swagger-ui .br-m{border-right-style:solid;border-right-width:1px}.swagger-ui .bb-m{border-bottom-style:solid;border-bottom-width:1px}.swagger-ui .bl-m{border-left-style:solid;border-left-width:1px}.swagger-ui .bn-m{border-style:none;border-width:0}}@media screen and (min-width:60em){.swagger-ui .ba-l{border-style:solid;border-width:1px}.swagger-ui .bt-l{border-top-style:solid;border-top-width:1px}.swagger-ui .br-l{border-right-style:solid;border-right-width:1px}.swagger-ui .bb-l{border-bottom-style:solid;border-bottom-width:1px}.swagger-ui .bl-l{border-left-style:solid;border-left-width:1px}.swagger-ui .bn-l{border-style:none;border-width:0}}.swagger-ui .b--black{border-color:#000}.swagger-ui .b--near-black{border-color:#111}.swagger-ui .b--dark-gray{border-color:#333}.swagger-ui .b--mid-gray{border-color:#555}.swagger-ui .b--gray{border-color:#777}.swagger-ui .b--silver{border-color:#999}.swagger-ui .b--light-silver{border-color:#aaa}.swagger-ui .b--moon-gray{border-color:#ccc}.swagger-ui .b--light-gray{border-color:#eee}.swagger-ui .b--near-white{border-color:#f4f4f4}.swagger-ui .b--white{border-color:#fff}.swagger-ui .b--white-90{border-color:hsla(0,0%,100%,.9)}.swagger-ui .b--white-80{border-color:hsla(0,0%,100%,.8)}.swagger-ui .b--white-70{border-color:hsla(0,0%,100%,.7)}.swagger-ui .b--white-60{border-color:hsla(0,0%,100%,.6)}.swagger-ui .b--white-50{border-color:hsla(0,0%,100%,.5)}.swagger-ui .b--white-40{border-color:hsla(0,0%,100%,.4)}.swagger-ui .b--white-30{border-color:hsla(0,0%,100%,.3)}.swagger-ui .b--white-20{border-color:hsla(0,0%,100%,.2)}.swagger-ui .b--white-10{border-color:hsla(0,0%,100%,.1)}.swagger-ui .b--white-05{border-color:hsla(0,0%,100%,.05)}.swagger-ui .b--white-025{border-color:hsla(0,0%,100%,.025)}.swagger-ui .b--white-0125{border-color:hsla(0,0%,100%,.0125)}.swagger-ui .b--black-90{border-color:rgba(0,0,0,.9)}.swagger-ui .b--black-80{border-color:rgba(0,0,0,.8)}.swagger-ui .b--black-70{border-color:rgba(0,0,0,.7)}.swagger-ui .b--black-60{border-color:rgba(0,0,0,.6)}.swagger-ui .b--black-50{border-color:rgba(0,0,0,.5)}.swagger-ui .b--black-40{border-color:rgba(0,0,0,.4)}.swagger-ui .b--black-30{border-color:rgba(0,0,0,.3)}.swagger-ui .b--black-20{border-color:rgba(0,0,0,.2)}.swagger-ui .b--black-10{border-color:rgba(0,0,0,.1)}.swagger-ui .b--black-05{border-color:rgba(0,0,0,.05)}.swagger-ui .b--black-025{border-color:rgba(0,0,0,.025)}.swagger-ui .b--black-0125{border-color:rgba(0,0,0,.0125)}.swagger-ui .b--dark-red{border-color:#e7040f}.swagger-ui .b--red{border-color:#ff4136}.swagger-ui .b--light-red{border-color:#ff725c}.swagger-ui .b--orange{border-color:#ff6300}.swagger-ui .b--gold{border-color:#ffb700}.swagger-ui .b--yellow{border-color:gold}.swagger-ui .b--light-yellow{border-color:#fbf1a9}.swagger-ui .b--purple{border-color:#5e2ca5}.swagger-ui .b--light-purple{border-color:#a463f2}.swagger-ui .b--dark-pink{border-color:#d5008f}.swagger-ui .b--hot-pink{border-color:#ff41b4}.swagger-ui .b--pink{border-color:#ff80cc}.swagger-ui .b--light-pink{border-color:#ffa3d7}.swagger-ui .b--dark-green{border-color:#137752}.swagger-ui .b--green{border-color:#19a974}.swagger-ui .b--light-green{border-color:#9eebcf}.swagger-ui .b--navy{border-color:#001b44}.swagger-ui .b--dark-blue{border-color:#00449e}.swagger-ui .b--blue{border-color:#357edd}.swagger-ui .b--light-blue{border-color:#96ccff}.swagger-ui .b--lightest-blue{border-color:#cdecff}.swagger-ui .b--washed-blue{border-color:#f6fffe}.swagger-ui .b--washed-green{border-color:#e8fdf5}.swagger-ui .b--washed-yellow{border-color:#fffceb}.swagger-ui .b--washed-red{border-color:#ffdfdf}.swagger-ui .b--transparent{border-color:transparent}.swagger-ui .b--inherit{border-color:inherit}.swagger-ui .br0{border-radius:0}.swagger-ui .br1{border-radius:.125rem}.swagger-ui .br2{border-radius:.25rem}.swagger-ui .br3{border-radius:.5rem}.swagger-ui .br4{border-radius:1rem}.swagger-ui .br-100{border-radius:100%}.swagger-ui .br-pill{border-radius:9999px}.swagger-ui .br--bottom{border-top-left-radius:0;border-top-right-radius:0}.swagger-ui .br--top{border-bottom-left-radius:0;border-bottom-right-radius:0}.swagger-ui .br--right{border-bottom-left-radius:0;border-top-left-radius:0}.swagger-ui .br--left{border-bottom-right-radius:0;border-top-right-radius:0}@media screen and (min-width:30em){.swagger-ui .br0-ns{border-radius:0}.swagger-ui .br1-ns{border-radius:.125rem}.swagger-ui .br2-ns{border-radius:.25rem}.swagger-ui .br3-ns{border-radius:.5rem}.swagger-ui .br4-ns{border-radius:1rem}.swagger-ui .br-100-ns{border-radius:100%}.swagger-ui .br-pill-ns{border-radius:9999px}.swagger-ui .br--bottom-ns{border-top-left-radius:0;border-top-right-radius:0}.swagger-ui .br--top-ns{border-bottom-left-radius:0;border-bottom-right-radius:0}.swagger-ui .br--right-ns{border-bottom-left-radius:0;border-top-left-radius:0}.swagger-ui .br--left-ns{border-bottom-right-radius:0;border-top-right-radius:0}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .br0-m{border-radius:0}.swagger-ui .br1-m{border-radius:.125rem}.swagger-ui .br2-m{border-radius:.25rem}.swagger-ui .br3-m{border-radius:.5rem}.swagger-ui .br4-m{border-radius:1rem}.swagger-ui .br-100-m{border-radius:100%}.swagger-ui .br-pill-m{border-radius:9999px}.swagger-ui .br--bottom-m{border-top-left-radius:0;border-top-right-radius:0}.swagger-ui .br--top-m{border-bottom-left-radius:0;border-bottom-right-radius:0}.swagger-ui .br--right-m{border-bottom-left-radius:0;border-top-left-radius:0}.swagger-ui .br--left-m{border-bottom-right-radius:0;border-top-right-radius:0}}@media screen and (min-width:60em){.swagger-ui .br0-l{border-radius:0}.swagger-ui .br1-l{border-radius:.125rem}.swagger-ui .br2-l{border-radius:.25rem}.swagger-ui .br3-l{border-radius:.5rem}.swagger-ui .br4-l{border-radius:1rem}.swagger-ui .br-100-l{border-radius:100%}.swagger-ui .br-pill-l{border-radius:9999px}.swagger-ui .br--bottom-l{border-top-left-radius:0;border-top-right-radius:0}.swagger-ui .br--top-l{border-bottom-left-radius:0;border-bottom-right-radius:0}.swagger-ui .br--right-l{border-bottom-left-radius:0;border-top-left-radius:0}.swagger-ui .br--left-l{border-bottom-right-radius:0;border-top-right-radius:0}}.swagger-ui .b--dotted{border-style:dotted}.swagger-ui .b--dashed{border-style:dashed}.swagger-ui .b--solid{border-style:solid}.swagger-ui .b--none{border-style:none}@media screen and (min-width:30em){.swagger-ui .b--dotted-ns{border-style:dotted}.swagger-ui .b--dashed-ns{border-style:dashed}.swagger-ui .b--solid-ns{border-style:solid}.swagger-ui .b--none-ns{border-style:none}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .b--dotted-m{border-style:dotted}.swagger-ui .b--dashed-m{border-style:dashed}.swagger-ui .b--solid-m{border-style:solid}.swagger-ui .b--none-m{border-style:none}}@media screen and (min-width:60em){.swagger-ui .b--dotted-l{border-style:dotted}.swagger-ui .b--dashed-l{border-style:dashed}.swagger-ui .b--solid-l{border-style:solid}.swagger-ui .b--none-l{border-style:none}}.swagger-ui .bw0{border-width:0}.swagger-ui .bw1{border-width:.125rem}.swagger-ui .bw2{border-width:.25rem}.swagger-ui .bw3{border-width:.5rem}.swagger-ui .bw4{border-width:1rem}.swagger-ui .bw5{border-width:2rem}.swagger-ui .bt-0{border-top-width:0}.swagger-ui .br-0{border-right-width:0}.swagger-ui .bb-0{border-bottom-width:0}.swagger-ui .bl-0{border-left-width:0}@media screen and (min-width:30em){.swagger-ui .bw0-ns{border-width:0}.swagger-ui .bw1-ns{border-width:.125rem}.swagger-ui .bw2-ns{border-width:.25rem}.swagger-ui .bw3-ns{border-width:.5rem}.swagger-ui .bw4-ns{border-width:1rem}.swagger-ui .bw5-ns{border-width:2rem}.swagger-ui .bt-0-ns{border-top-width:0}.swagger-ui .br-0-ns{border-right-width:0}.swagger-ui .bb-0-ns{border-bottom-width:0}.swagger-ui .bl-0-ns{border-left-width:0}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .bw0-m{border-width:0}.swagger-ui .bw1-m{border-width:.125rem}.swagger-ui .bw2-m{border-width:.25rem}.swagger-ui .bw3-m{border-width:.5rem}.swagger-ui .bw4-m{border-width:1rem}.swagger-ui .bw5-m{border-width:2rem}.swagger-ui .bt-0-m{border-top-width:0}.swagger-ui .br-0-m{border-right-width:0}.swagger-ui .bb-0-m{border-bottom-width:0}.swagger-ui .bl-0-m{border-left-width:0}}@media screen and (min-width:60em){.swagger-ui .bw0-l{border-width:0}.swagger-ui .bw1-l{border-width:.125rem}.swagger-ui .bw2-l{border-width:.25rem}.swagger-ui .bw3-l{border-width:.5rem}.swagger-ui .bw4-l{border-width:1rem}.swagger-ui .bw5-l{border-width:2rem}.swagger-ui .bt-0-l{border-top-width:0}.swagger-ui .br-0-l{border-right-width:0}.swagger-ui .bb-0-l{border-bottom-width:0}.swagger-ui .bl-0-l{border-left-width:0}}.swagger-ui .shadow-1{-webkit-box-shadow:0 0 4px 2px rgba(0,0,0,.2);box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-2{-webkit-box-shadow:0 0 8px 2px rgba(0,0,0,.2);box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-3{-webkit-box-shadow:2px 2px 4px 2px rgba(0,0,0,.2);box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-4{-webkit-box-shadow:2px 2px 8px 0 rgba(0,0,0,.2);box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.swagger-ui .shadow-5{-webkit-box-shadow:4px 4px 8px 0 rgba(0,0,0,.2);box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}@media screen and (min-width:30em){.swagger-ui .shadow-1-ns{-webkit-box-shadow:0 0 4px 2px rgba(0,0,0,.2);box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-2-ns{-webkit-box-shadow:0 0 8px 2px rgba(0,0,0,.2);box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-3-ns{-webkit-box-shadow:2px 2px 4px 2px rgba(0,0,0,.2);box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-4-ns{-webkit-box-shadow:2px 2px 8px 0 rgba(0,0,0,.2);box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.swagger-ui .shadow-5-ns{-webkit-box-shadow:4px 4px 8px 0 rgba(0,0,0,.2);box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .shadow-1-m{-webkit-box-shadow:0 0 4px 2px rgba(0,0,0,.2);box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-2-m{-webkit-box-shadow:0 0 8px 2px rgba(0,0,0,.2);box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-3-m{-webkit-box-shadow:2px 2px 4px 2px rgba(0,0,0,.2);box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-4-m{-webkit-box-shadow:2px 2px 8px 0 rgba(0,0,0,.2);box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.swagger-ui .shadow-5-m{-webkit-box-shadow:4px 4px 8px 0 rgba(0,0,0,.2);box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}}@media screen and (min-width:60em){.swagger-ui .shadow-1-l{-webkit-box-shadow:0 0 4px 2px rgba(0,0,0,.2);box-shadow:0 0 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-2-l{-webkit-box-shadow:0 0 8px 2px rgba(0,0,0,.2);box-shadow:0 0 8px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-3-l{-webkit-box-shadow:2px 2px 4px 2px rgba(0,0,0,.2);box-shadow:2px 2px 4px 2px rgba(0,0,0,.2)}.swagger-ui .shadow-4-l{-webkit-box-shadow:2px 2px 8px 0 rgba(0,0,0,.2);box-shadow:2px 2px 8px 0 rgba(0,0,0,.2)}.swagger-ui .shadow-5-l{-webkit-box-shadow:4px 4px 8px 0 rgba(0,0,0,.2);box-shadow:4px 4px 8px 0 rgba(0,0,0,.2)}}.swagger-ui .pre{overflow-x:auto;overflow-y:hidden;overflow:scroll}.swagger-ui .top-0{top:0}.swagger-ui .right-0{right:0}.swagger-ui .bottom-0{bottom:0}.swagger-ui .left-0{left:0}.swagger-ui .top-1{top:1rem}.swagger-ui .right-1{right:1rem}.swagger-ui .bottom-1{bottom:1rem}.swagger-ui .left-1{left:1rem}.swagger-ui .top-2{top:2rem}.swagger-ui .right-2{right:2rem}.swagger-ui .bottom-2{bottom:2rem}.swagger-ui .left-2{left:2rem}.swagger-ui .top--1{top:-1rem}.swagger-ui .right--1{right:-1rem}.swagger-ui .bottom--1{bottom:-1rem}.swagger-ui .left--1{left:-1rem}.swagger-ui .top--2{top:-2rem}.swagger-ui .right--2{right:-2rem}.swagger-ui .bottom--2{bottom:-2rem}.swagger-ui .left--2{left:-2rem}.swagger-ui .absolute--fill{bottom:0;left:0;right:0;top:0}@media screen and (min-width:30em){.swagger-ui .top-0-ns{top:0}.swagger-ui .left-0-ns{left:0}.swagger-ui .right-0-ns{right:0}.swagger-ui .bottom-0-ns{bottom:0}.swagger-ui .top-1-ns{top:1rem}.swagger-ui .left-1-ns{left:1rem}.swagger-ui .right-1-ns{right:1rem}.swagger-ui .bottom-1-ns{bottom:1rem}.swagger-ui .top-2-ns{top:2rem}.swagger-ui .left-2-ns{left:2rem}.swagger-ui .right-2-ns{right:2rem}.swagger-ui .bottom-2-ns{bottom:2rem}.swagger-ui .top--1-ns{top:-1rem}.swagger-ui .right--1-ns{right:-1rem}.swagger-ui .bottom--1-ns{bottom:-1rem}.swagger-ui .left--1-ns{left:-1rem}.swagger-ui .top--2-ns{top:-2rem}.swagger-ui .right--2-ns{right:-2rem}.swagger-ui .bottom--2-ns{bottom:-2rem}.swagger-ui .left--2-ns{left:-2rem}.swagger-ui .absolute--fill-ns{bottom:0;left:0;right:0;top:0}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .top-0-m{top:0}.swagger-ui .left-0-m{left:0}.swagger-ui .right-0-m{right:0}.swagger-ui .bottom-0-m{bottom:0}.swagger-ui .top-1-m{top:1rem}.swagger-ui .left-1-m{left:1rem}.swagger-ui .right-1-m{right:1rem}.swagger-ui .bottom-1-m{bottom:1rem}.swagger-ui .top-2-m{top:2rem}.swagger-ui .left-2-m{left:2rem}.swagger-ui .right-2-m{right:2rem}.swagger-ui .bottom-2-m{bottom:2rem}.swagger-ui .top--1-m{top:-1rem}.swagger-ui .right--1-m{right:-1rem}.swagger-ui .bottom--1-m{bottom:-1rem}.swagger-ui .left--1-m{left:-1rem}.swagger-ui .top--2-m{top:-2rem}.swagger-ui .right--2-m{right:-2rem}.swagger-ui .bottom--2-m{bottom:-2rem}.swagger-ui .left--2-m{left:-2rem}.swagger-ui .absolute--fill-m{bottom:0;left:0;right:0;top:0}}@media screen and (min-width:60em){.swagger-ui .top-0-l{top:0}.swagger-ui .left-0-l{left:0}.swagger-ui .right-0-l{right:0}.swagger-ui .bottom-0-l{bottom:0}.swagger-ui .top-1-l{top:1rem}.swagger-ui .left-1-l{left:1rem}.swagger-ui .right-1-l{right:1rem}.swagger-ui .bottom-1-l{bottom:1rem}.swagger-ui .top-2-l{top:2rem}.swagger-ui .left-2-l{left:2rem}.swagger-ui .right-2-l{right:2rem}.swagger-ui .bottom-2-l{bottom:2rem}.swagger-ui .top--1-l{top:-1rem}.swagger-ui .right--1-l{right:-1rem}.swagger-ui .bottom--1-l{bottom:-1rem}.swagger-ui .left--1-l{left:-1rem}.swagger-ui .top--2-l{top:-2rem}.swagger-ui .right--2-l{right:-2rem}.swagger-ui .bottom--2-l{bottom:-2rem}.swagger-ui .left--2-l{left:-2rem}.swagger-ui .absolute--fill-l{bottom:0;left:0;right:0;top:0}}.swagger-ui .cf::after,.swagger-ui .cf::before{content:" ";display:table}.swagger-ui .cf::after{clear:both}.swagger-ui .cf{*zoom:1}.swagger-ui .cl{clear:left}.swagger-ui .cr{clear:right}.swagger-ui .cb{clear:both}.swagger-ui .cn{clear:none}@media screen and (min-width:30em){.swagger-ui .cl-ns{clear:left}.swagger-ui .cr-ns{clear:right}.swagger-ui .cb-ns{clear:both}.swagger-ui .cn-ns{clear:none}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .cl-m{clear:left}.swagger-ui .cr-m{clear:right}.swagger-ui .cb-m{clear:both}.swagger-ui .cn-m{clear:none}}@media screen and (min-width:60em){.swagger-ui .cl-l{clear:left}.swagger-ui .cr-l{clear:right}.swagger-ui .cb-l{clear:both}.swagger-ui .cn-l{clear:none}}.swagger-ui .flex{display:-webkit-box;display:-ms-flexbox;display:flex}.swagger-ui .inline-flex{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.swagger-ui .flex-auto{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0;min-width:0}.swagger-ui .flex-none{-webkit-box-flex:0;-ms-flex:none;flex:none}.swagger-ui .flex-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.swagger-ui .flex-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.swagger-ui .flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.swagger-ui .flex-nowrap{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.swagger-ui .flex-wrap-reverse{-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}.swagger-ui .flex-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.swagger-ui .flex-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.swagger-ui .items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.swagger-ui .items-end{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.swagger-ui .items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.swagger-ui .items-baseline{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.swagger-ui .items-stretch{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.swagger-ui .self-start{-ms-flex-item-align:start;align-self:flex-start}.swagger-ui .self-end{-ms-flex-item-align:end;align-self:flex-end}.swagger-ui .self-center{-ms-flex-item-align:center;align-self:center}.swagger-ui .self-baseline{-ms-flex-item-align:baseline;align-self:baseline}.swagger-ui .self-stretch{-ms-flex-item-align:stretch;align-self:stretch}.swagger-ui .justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.swagger-ui .justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.swagger-ui .justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.swagger-ui .justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.swagger-ui .justify-around{-ms-flex-pack:distribute;justify-content:space-around}.swagger-ui .content-start{-ms-flex-line-pack:start;align-content:flex-start}.swagger-ui .content-end{-ms-flex-line-pack:end;align-content:flex-end}.swagger-ui .content-center{-ms-flex-line-pack:center;align-content:center}.swagger-ui .content-between{-ms-flex-line-pack:justify;align-content:space-between}.swagger-ui .content-around{-ms-flex-line-pack:distribute;align-content:space-around}.swagger-ui .content-stretch{-ms-flex-line-pack:stretch;align-content:stretch}.swagger-ui .order-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.swagger-ui .order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.swagger-ui .order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.swagger-ui .order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.swagger-ui .order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.swagger-ui .order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.swagger-ui .order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.swagger-ui .order-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.swagger-ui .order-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.swagger-ui .order-last{-webkit-box-ordinal-group:100000;-ms-flex-order:99999;order:99999}.swagger-ui .flex-grow-0{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.swagger-ui .flex-grow-1{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.swagger-ui .flex-shrink-0{-ms-flex-negative:0;flex-shrink:0}.swagger-ui .flex-shrink-1{-ms-flex-negative:1;flex-shrink:1}@media screen and (min-width:30em){.swagger-ui .flex-ns{display:-webkit-box;display:-ms-flexbox;display:flex}.swagger-ui .inline-flex-ns{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.swagger-ui .flex-auto-ns{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0;min-width:0}.swagger-ui .flex-none-ns{-webkit-box-flex:0;-ms-flex:none;flex:none}.swagger-ui .flex-column-ns{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.swagger-ui .flex-row-ns{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.swagger-ui .flex-wrap-ns{-ms-flex-wrap:wrap;flex-wrap:wrap}.swagger-ui .flex-nowrap-ns{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.swagger-ui .flex-wrap-reverse-ns{-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}.swagger-ui .flex-column-reverse-ns{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.swagger-ui .flex-row-reverse-ns{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.swagger-ui .items-start-ns{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.swagger-ui .items-end-ns{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.swagger-ui .items-center-ns{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.swagger-ui .items-baseline-ns{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.swagger-ui .items-stretch-ns{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.swagger-ui .self-start-ns{-ms-flex-item-align:start;align-self:flex-start}.swagger-ui .self-end-ns{-ms-flex-item-align:end;align-self:flex-end}.swagger-ui .self-center-ns{-ms-flex-item-align:center;align-self:center}.swagger-ui .self-baseline-ns{-ms-flex-item-align:baseline;align-self:baseline}.swagger-ui .self-stretch-ns{-ms-flex-item-align:stretch;align-self:stretch}.swagger-ui .justify-start-ns{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.swagger-ui .justify-end-ns{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.swagger-ui .justify-center-ns{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.swagger-ui .justify-between-ns{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.swagger-ui .justify-around-ns{-ms-flex-pack:distribute;justify-content:space-around}.swagger-ui .content-start-ns{-ms-flex-line-pack:start;align-content:flex-start}.swagger-ui .content-end-ns{-ms-flex-line-pack:end;align-content:flex-end}.swagger-ui .content-center-ns{-ms-flex-line-pack:center;align-content:center}.swagger-ui .content-between-ns{-ms-flex-line-pack:justify;align-content:space-between}.swagger-ui .content-around-ns{-ms-flex-line-pack:distribute;align-content:space-around}.swagger-ui .content-stretch-ns{-ms-flex-line-pack:stretch;align-content:stretch}.swagger-ui .order-0-ns{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.swagger-ui .order-1-ns{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.swagger-ui .order-2-ns{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.swagger-ui .order-3-ns{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.swagger-ui .order-4-ns{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.swagger-ui .order-5-ns{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.swagger-ui .order-6-ns{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.swagger-ui .order-7-ns{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.swagger-ui .order-8-ns{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.swagger-ui .order-last-ns{-webkit-box-ordinal-group:100000;-ms-flex-order:99999;order:99999}.swagger-ui .flex-grow-0-ns{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.swagger-ui .flex-grow-1-ns{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.swagger-ui .flex-shrink-0-ns{-ms-flex-negative:0;flex-shrink:0}.swagger-ui .flex-shrink-1-ns{-ms-flex-negative:1;flex-shrink:1}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .flex-m{display:-webkit-box;display:-ms-flexbox;display:flex}.swagger-ui .inline-flex-m{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.swagger-ui .flex-auto-m{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0;min-width:0}.swagger-ui .flex-none-m{-webkit-box-flex:0;-ms-flex:none;flex:none}.swagger-ui .flex-column-m{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.swagger-ui .flex-row-m{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.swagger-ui .flex-wrap-m{-ms-flex-wrap:wrap;flex-wrap:wrap}.swagger-ui .flex-nowrap-m{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.swagger-ui .flex-wrap-reverse-m{-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}.swagger-ui .flex-column-reverse-m{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.swagger-ui .flex-row-reverse-m{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.swagger-ui .items-start-m{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.swagger-ui .items-end-m{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.swagger-ui .items-center-m{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.swagger-ui .items-baseline-m{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.swagger-ui .items-stretch-m{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.swagger-ui .self-start-m{-ms-flex-item-align:start;align-self:flex-start}.swagger-ui .self-end-m{-ms-flex-item-align:end;align-self:flex-end}.swagger-ui .self-center-m{-ms-flex-item-align:center;align-self:center}.swagger-ui .self-baseline-m{-ms-flex-item-align:baseline;align-self:baseline}.swagger-ui .self-stretch-m{-ms-flex-item-align:stretch;align-self:stretch}.swagger-ui .justify-start-m{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.swagger-ui .justify-end-m{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.swagger-ui .justify-center-m{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.swagger-ui .justify-between-m{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.swagger-ui .justify-around-m{-ms-flex-pack:distribute;justify-content:space-around}.swagger-ui .content-start-m{-ms-flex-line-pack:start;align-content:flex-start}.swagger-ui .content-end-m{-ms-flex-line-pack:end;align-content:flex-end}.swagger-ui .content-center-m{-ms-flex-line-pack:center;align-content:center}.swagger-ui .content-between-m{-ms-flex-line-pack:justify;align-content:space-between}.swagger-ui .content-around-m{-ms-flex-line-pack:distribute;align-content:space-around}.swagger-ui .content-stretch-m{-ms-flex-line-pack:stretch;align-content:stretch}.swagger-ui .order-0-m{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.swagger-ui .order-1-m{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.swagger-ui .order-2-m{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.swagger-ui .order-3-m{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.swagger-ui .order-4-m{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.swagger-ui .order-5-m{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.swagger-ui .order-6-m{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.swagger-ui .order-7-m{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.swagger-ui .order-8-m{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.swagger-ui .order-last-m{-webkit-box-ordinal-group:100000;-ms-flex-order:99999;order:99999}.swagger-ui .flex-grow-0-m{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.swagger-ui .flex-grow-1-m{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.swagger-ui .flex-shrink-0-m{-ms-flex-negative:0;flex-shrink:0}.swagger-ui .flex-shrink-1-m{-ms-flex-negative:1;flex-shrink:1}}@media screen and (min-width:60em){.swagger-ui .flex-l{display:-webkit-box;display:-ms-flexbox;display:flex}.swagger-ui .inline-flex-l{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.swagger-ui .flex-auto-l{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0;min-width:0}.swagger-ui .flex-none-l{-webkit-box-flex:0;-ms-flex:none;flex:none}.swagger-ui .flex-column-l{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.swagger-ui .flex-row-l{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.swagger-ui .flex-wrap-l{-ms-flex-wrap:wrap;flex-wrap:wrap}.swagger-ui .flex-nowrap-l{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.swagger-ui .flex-wrap-reverse-l{-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}.swagger-ui .flex-column-reverse-l{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.swagger-ui .flex-row-reverse-l{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.swagger-ui .items-start-l{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.swagger-ui .items-end-l{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.swagger-ui .items-center-l{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.swagger-ui .items-baseline-l{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.swagger-ui .items-stretch-l{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.swagger-ui .self-start-l{-ms-flex-item-align:start;align-self:flex-start}.swagger-ui .self-end-l{-ms-flex-item-align:end;align-self:flex-end}.swagger-ui .self-center-l{-ms-flex-item-align:center;align-self:center}.swagger-ui .self-baseline-l{-ms-flex-item-align:baseline;align-self:baseline}.swagger-ui .self-stretch-l{-ms-flex-item-align:stretch;align-self:stretch}.swagger-ui .justify-start-l{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.swagger-ui .justify-end-l{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.swagger-ui .justify-center-l{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.swagger-ui .justify-between-l{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.swagger-ui .justify-around-l{-ms-flex-pack:distribute;justify-content:space-around}.swagger-ui .content-start-l{-ms-flex-line-pack:start;align-content:flex-start}.swagger-ui .content-end-l{-ms-flex-line-pack:end;align-content:flex-end}.swagger-ui .content-center-l{-ms-flex-line-pack:center;align-content:center}.swagger-ui .content-between-l{-ms-flex-line-pack:justify;align-content:space-between}.swagger-ui .content-around-l{-ms-flex-line-pack:distribute;align-content:space-around}.swagger-ui .content-stretch-l{-ms-flex-line-pack:stretch;align-content:stretch}.swagger-ui .order-0-l{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.swagger-ui .order-1-l{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.swagger-ui .order-2-l{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.swagger-ui .order-3-l{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.swagger-ui .order-4-l{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.swagger-ui .order-5-l{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.swagger-ui .order-6-l{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.swagger-ui .order-7-l{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.swagger-ui .order-8-l{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.swagger-ui .order-last-l{-webkit-box-ordinal-group:100000;-ms-flex-order:99999;order:99999}.swagger-ui .flex-grow-0-l{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.swagger-ui .flex-grow-1-l{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.swagger-ui .flex-shrink-0-l{-ms-flex-negative:0;flex-shrink:0}.swagger-ui .flex-shrink-1-l{-ms-flex-negative:1;flex-shrink:1}}.swagger-ui .dn{display:none}.swagger-ui .di{display:inline}.swagger-ui .db{display:block}.swagger-ui .dib{display:inline-block}.swagger-ui .dit{display:inline-table}.swagger-ui .dt{display:table}.swagger-ui .dtc{display:table-cell}.swagger-ui .dt-row{display:table-row}.swagger-ui .dt-row-group{display:table-row-group}.swagger-ui .dt-column{display:table-column}.swagger-ui .dt-column-group{display:table-column-group}.swagger-ui .dt--fixed{table-layout:fixed;width:100%}@media screen and (min-width:30em){.swagger-ui .dn-ns{display:none}.swagger-ui .di-ns{display:inline}.swagger-ui .db-ns{display:block}.swagger-ui .dib-ns{display:inline-block}.swagger-ui .dit-ns{display:inline-table}.swagger-ui .dt-ns{display:table}.swagger-ui .dtc-ns{display:table-cell}.swagger-ui .dt-row-ns{display:table-row}.swagger-ui .dt-row-group-ns{display:table-row-group}.swagger-ui .dt-column-ns{display:table-column}.swagger-ui .dt-column-group-ns{display:table-column-group}.swagger-ui .dt--fixed-ns{table-layout:fixed;width:100%}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .dn-m{display:none}.swagger-ui .di-m{display:inline}.swagger-ui .db-m{display:block}.swagger-ui .dib-m{display:inline-block}.swagger-ui .dit-m{display:inline-table}.swagger-ui .dt-m{display:table}.swagger-ui .dtc-m{display:table-cell}.swagger-ui .dt-row-m{display:table-row}.swagger-ui .dt-row-group-m{display:table-row-group}.swagger-ui .dt-column-m{display:table-column}.swagger-ui .dt-column-group-m{display:table-column-group}.swagger-ui .dt--fixed-m{table-layout:fixed;width:100%}}@media screen and (min-width:60em){.swagger-ui .dn-l{display:none}.swagger-ui .di-l{display:inline}.swagger-ui .db-l{display:block}.swagger-ui .dib-l{display:inline-block}.swagger-ui .dit-l{display:inline-table}.swagger-ui .dt-l{display:table}.swagger-ui .dtc-l{display:table-cell}.swagger-ui .dt-row-l{display:table-row}.swagger-ui .dt-row-group-l{display:table-row-group}.swagger-ui .dt-column-l{display:table-column}.swagger-ui .dt-column-group-l{display:table-column-group}.swagger-ui .dt--fixed-l{table-layout:fixed;width:100%}}.swagger-ui .fl{_display:inline;float:left}.swagger-ui .fr{_display:inline;float:right}.swagger-ui .fn{float:none}@media screen and (min-width:30em){.swagger-ui .fl-ns{_display:inline;float:left}.swagger-ui .fr-ns{_display:inline;float:right}.swagger-ui .fn-ns{float:none}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .fl-m{_display:inline;float:left}.swagger-ui .fr-m{_display:inline;float:right}.swagger-ui .fn-m{float:none}}@media screen and (min-width:60em){.swagger-ui .fl-l{_display:inline;float:left}.swagger-ui .fr-l{_display:inline;float:right}.swagger-ui .fn-l{float:none}}.swagger-ui .sans-serif{font-family:-apple-system,BlinkMacSystemFont,avenir next,avenir,helvetica,helvetica neue,ubuntu,roboto,noto,segoe ui,arial,sans-serif}.swagger-ui .serif{font-family:georgia,serif}.swagger-ui .system-sans-serif{font-family:sans-serif}.swagger-ui .system-serif{font-family:serif}.swagger-ui .code,.swagger-ui code{font-family:Consolas,monaco,monospace}.swagger-ui .courier{font-family:Courier Next,courier,monospace}.swagger-ui .helvetica{font-family:helvetica neue,helvetica,sans-serif}.swagger-ui .avenir{font-family:avenir next,avenir,sans-serif}.swagger-ui .athelas{font-family:athelas,georgia,serif}.swagger-ui .georgia{font-family:georgia,serif}.swagger-ui .times{font-family:times,serif}.swagger-ui .bodoni{font-family:Bodoni MT,serif}.swagger-ui .calisto{font-family:Calisto MT,serif}.swagger-ui .garamond{font-family:garamond,serif}.swagger-ui .baskerville{font-family:baskerville,serif}.swagger-ui .i{font-style:italic}.swagger-ui .fs-normal{font-style:normal}@media screen and (min-width:30em){.swagger-ui .i-ns{font-style:italic}.swagger-ui .fs-normal-ns{font-style:normal}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .i-m{font-style:italic}.swagger-ui .fs-normal-m{font-style:normal}}@media screen and (min-width:60em){.swagger-ui .i-l{font-style:italic}.swagger-ui .fs-normal-l{font-style:normal}}.swagger-ui .normal{font-weight:400}.swagger-ui .b{font-weight:700}.swagger-ui .fw1{font-weight:100}.swagger-ui .fw2{font-weight:200}.swagger-ui .fw3{font-weight:300}.swagger-ui .fw4{font-weight:400}.swagger-ui .fw5{font-weight:500}.swagger-ui .fw6{font-weight:600}.swagger-ui .fw7{font-weight:700}.swagger-ui .fw8{font-weight:800}.swagger-ui .fw9{font-weight:900}@media screen and (min-width:30em){.swagger-ui .normal-ns{font-weight:400}.swagger-ui .b-ns{font-weight:700}.swagger-ui .fw1-ns{font-weight:100}.swagger-ui .fw2-ns{font-weight:200}.swagger-ui .fw3-ns{font-weight:300}.swagger-ui .fw4-ns{font-weight:400}.swagger-ui .fw5-ns{font-weight:500}.swagger-ui .fw6-ns{font-weight:600}.swagger-ui .fw7-ns{font-weight:700}.swagger-ui .fw8-ns{font-weight:800}.swagger-ui .fw9-ns{font-weight:900}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .normal-m{font-weight:400}.swagger-ui .b-m{font-weight:700}.swagger-ui .fw1-m{font-weight:100}.swagger-ui .fw2-m{font-weight:200}.swagger-ui .fw3-m{font-weight:300}.swagger-ui .fw4-m{font-weight:400}.swagger-ui .fw5-m{font-weight:500}.swagger-ui .fw6-m{font-weight:600}.swagger-ui .fw7-m{font-weight:700}.swagger-ui .fw8-m{font-weight:800}.swagger-ui .fw9-m{font-weight:900}}@media screen and (min-width:60em){.swagger-ui .normal-l{font-weight:400}.swagger-ui .b-l{font-weight:700}.swagger-ui .fw1-l{font-weight:100}.swagger-ui .fw2-l{font-weight:200}.swagger-ui .fw3-l{font-weight:300}.swagger-ui .fw4-l{font-weight:400}.swagger-ui .fw5-l{font-weight:500}.swagger-ui .fw6-l{font-weight:600}.swagger-ui .fw7-l{font-weight:700}.swagger-ui .fw8-l{font-weight:800}.swagger-ui .fw9-l{font-weight:900}}.swagger-ui .input-reset{-webkit-appearance:none;-moz-appearance:none}.swagger-ui .button-reset::-moz-focus-inner,.swagger-ui .input-reset::-moz-focus-inner{border:0;padding:0}.swagger-ui .h1{height:1rem}.swagger-ui .h2{height:2rem}.swagger-ui .h3{height:4rem}.swagger-ui .h4{height:8rem}.swagger-ui .h5{height:16rem}.swagger-ui .h-25{height:25%}.swagger-ui .h-50{height:50%}.swagger-ui .h-75{height:75%}.swagger-ui .h-100{height:100%}.swagger-ui .min-h-100{min-height:100%}.swagger-ui .vh-25{height:25vh}.swagger-ui .vh-50{height:50vh}.swagger-ui .vh-75{height:75vh}.swagger-ui .vh-100{height:100vh}.swagger-ui .min-vh-100{min-height:100vh}.swagger-ui .h-auto{height:auto}.swagger-ui .h-inherit{height:inherit}@media screen and (min-width:30em){.swagger-ui .h1-ns{height:1rem}.swagger-ui .h2-ns{height:2rem}.swagger-ui .h3-ns{height:4rem}.swagger-ui .h4-ns{height:8rem}.swagger-ui .h5-ns{height:16rem}.swagger-ui .h-25-ns{height:25%}.swagger-ui .h-50-ns{height:50%}.swagger-ui .h-75-ns{height:75%}.swagger-ui .h-100-ns{height:100%}.swagger-ui .min-h-100-ns{min-height:100%}.swagger-ui .vh-25-ns{height:25vh}.swagger-ui .vh-50-ns{height:50vh}.swagger-ui .vh-75-ns{height:75vh}.swagger-ui .vh-100-ns{height:100vh}.swagger-ui .min-vh-100-ns{min-height:100vh}.swagger-ui .h-auto-ns{height:auto}.swagger-ui .h-inherit-ns{height:inherit}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .h1-m{height:1rem}.swagger-ui .h2-m{height:2rem}.swagger-ui .h3-m{height:4rem}.swagger-ui .h4-m{height:8rem}.swagger-ui .h5-m{height:16rem}.swagger-ui .h-25-m{height:25%}.swagger-ui .h-50-m{height:50%}.swagger-ui .h-75-m{height:75%}.swagger-ui .h-100-m{height:100%}.swagger-ui .min-h-100-m{min-height:100%}.swagger-ui .vh-25-m{height:25vh}.swagger-ui .vh-50-m{height:50vh}.swagger-ui .vh-75-m{height:75vh}.swagger-ui .vh-100-m{height:100vh}.swagger-ui .min-vh-100-m{min-height:100vh}.swagger-ui .h-auto-m{height:auto}.swagger-ui .h-inherit-m{height:inherit}}@media screen and (min-width:60em){.swagger-ui .h1-l{height:1rem}.swagger-ui .h2-l{height:2rem}.swagger-ui .h3-l{height:4rem}.swagger-ui .h4-l{height:8rem}.swagger-ui .h5-l{height:16rem}.swagger-ui .h-25-l{height:25%}.swagger-ui .h-50-l{height:50%}.swagger-ui .h-75-l{height:75%}.swagger-ui .h-100-l{height:100%}.swagger-ui .min-h-100-l{min-height:100%}.swagger-ui .vh-25-l{height:25vh}.swagger-ui .vh-50-l{height:50vh}.swagger-ui .vh-75-l{height:75vh}.swagger-ui .vh-100-l{height:100vh}.swagger-ui .min-vh-100-l{min-height:100vh}.swagger-ui .h-auto-l{height:auto}.swagger-ui .h-inherit-l{height:inherit}}.swagger-ui .tracked{letter-spacing:.1em}.swagger-ui .tracked-tight{letter-spacing:-.05em}.swagger-ui .tracked-mega{letter-spacing:.25em}@media screen and (min-width:30em){.swagger-ui .tracked-ns{letter-spacing:.1em}.swagger-ui .tracked-tight-ns{letter-spacing:-.05em}.swagger-ui .tracked-mega-ns{letter-spacing:.25em}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .tracked-m{letter-spacing:.1em}.swagger-ui .tracked-tight-m{letter-spacing:-.05em}.swagger-ui .tracked-mega-m{letter-spacing:.25em}}@media screen and (min-width:60em){.swagger-ui .tracked-l{letter-spacing:.1em}.swagger-ui .tracked-tight-l{letter-spacing:-.05em}.swagger-ui .tracked-mega-l{letter-spacing:.25em}}.swagger-ui .lh-solid{line-height:1}.swagger-ui .lh-title{line-height:1.25}.swagger-ui .lh-copy{line-height:1.5}@media screen and (min-width:30em){.swagger-ui .lh-solid-ns{line-height:1}.swagger-ui .lh-title-ns{line-height:1.25}.swagger-ui .lh-copy-ns{line-height:1.5}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .lh-solid-m{line-height:1}.swagger-ui .lh-title-m{line-height:1.25}.swagger-ui .lh-copy-m{line-height:1.5}}@media screen and (min-width:60em){.swagger-ui .lh-solid-l{line-height:1}.swagger-ui .lh-title-l{line-height:1.25}.swagger-ui .lh-copy-l{line-height:1.5}}.swagger-ui .link{text-decoration:none}.swagger-ui .link,.swagger-ui .link:active,.swagger-ui .link:focus,.swagger-ui .link:hover,.swagger-ui .link:link,.swagger-ui .link:visited{-webkit-transition:color .15s ease-in;transition:color .15s ease-in}.swagger-ui .link:focus{outline:1px dotted currentColor}.swagger-ui .list{list-style-type:none}.swagger-ui .mw-100{max-width:100%}.swagger-ui .mw1{max-width:1rem}.swagger-ui .mw2{max-width:2rem}.swagger-ui .mw3{max-width:4rem}.swagger-ui .mw4{max-width:8rem}.swagger-ui .mw5{max-width:16rem}.swagger-ui .mw6{max-width:32rem}.swagger-ui .mw7{max-width:48rem}.swagger-ui .mw8{max-width:64rem}.swagger-ui .mw9{max-width:96rem}.swagger-ui .mw-none{max-width:none}@media screen and (min-width:30em){.swagger-ui .mw-100-ns{max-width:100%}.swagger-ui .mw1-ns{max-width:1rem}.swagger-ui .mw2-ns{max-width:2rem}.swagger-ui .mw3-ns{max-width:4rem}.swagger-ui .mw4-ns{max-width:8rem}.swagger-ui .mw5-ns{max-width:16rem}.swagger-ui .mw6-ns{max-width:32rem}.swagger-ui .mw7-ns{max-width:48rem}.swagger-ui .mw8-ns{max-width:64rem}.swagger-ui .mw9-ns{max-width:96rem}.swagger-ui .mw-none-ns{max-width:none}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .mw-100-m{max-width:100%}.swagger-ui .mw1-m{max-width:1rem}.swagger-ui .mw2-m{max-width:2rem}.swagger-ui .mw3-m{max-width:4rem}.swagger-ui .mw4-m{max-width:8rem}.swagger-ui .mw5-m{max-width:16rem}.swagger-ui .mw6-m{max-width:32rem}.swagger-ui .mw7-m{max-width:48rem}.swagger-ui .mw8-m{max-width:64rem}.swagger-ui .mw9-m{max-width:96rem}.swagger-ui .mw-none-m{max-width:none}}@media screen and (min-width:60em){.swagger-ui .mw-100-l{max-width:100%}.swagger-ui .mw1-l{max-width:1rem}.swagger-ui .mw2-l{max-width:2rem}.swagger-ui .mw3-l{max-width:4rem}.swagger-ui .mw4-l{max-width:8rem}.swagger-ui .mw5-l{max-width:16rem}.swagger-ui .mw6-l{max-width:32rem}.swagger-ui .mw7-l{max-width:48rem}.swagger-ui .mw8-l{max-width:64rem}.swagger-ui .mw9-l{max-width:96rem}.swagger-ui .mw-none-l{max-width:none}}.swagger-ui .w1{width:1rem}.swagger-ui .w2{width:2rem}.swagger-ui .w3{width:4rem}.swagger-ui .w4{width:8rem}.swagger-ui .w5{width:16rem}.swagger-ui .w-10{width:10%}.swagger-ui .w-20{width:20%}.swagger-ui .w-25{width:25%}.swagger-ui .w-30{width:30%}.swagger-ui .w-33{width:33%}.swagger-ui .w-34{width:34%}.swagger-ui .w-40{width:40%}.swagger-ui .w-50{width:50%}.swagger-ui .w-60{width:60%}.swagger-ui .w-70{width:70%}.swagger-ui .w-75{width:75%}.swagger-ui .w-80{width:80%}.swagger-ui .w-90{width:90%}.swagger-ui .w-100{width:100%}.swagger-ui .w-third{width:33.33333%}.swagger-ui .w-two-thirds{width:66.66667%}.swagger-ui .w-auto{width:auto}@media screen and (min-width:30em){.swagger-ui .w1-ns{width:1rem}.swagger-ui .w2-ns{width:2rem}.swagger-ui .w3-ns{width:4rem}.swagger-ui .w4-ns{width:8rem}.swagger-ui .w5-ns{width:16rem}.swagger-ui .w-10-ns{width:10%}.swagger-ui .w-20-ns{width:20%}.swagger-ui .w-25-ns{width:25%}.swagger-ui .w-30-ns{width:30%}.swagger-ui .w-33-ns{width:33%}.swagger-ui .w-34-ns{width:34%}.swagger-ui .w-40-ns{width:40%}.swagger-ui .w-50-ns{width:50%}.swagger-ui .w-60-ns{width:60%}.swagger-ui .w-70-ns{width:70%}.swagger-ui .w-75-ns{width:75%}.swagger-ui .w-80-ns{width:80%}.swagger-ui .w-90-ns{width:90%}.swagger-ui .w-100-ns{width:100%}.swagger-ui .w-third-ns{width:33.33333%}.swagger-ui .w-two-thirds-ns{width:66.66667%}.swagger-ui .w-auto-ns{width:auto}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .w1-m{width:1rem}.swagger-ui .w2-m{width:2rem}.swagger-ui .w3-m{width:4rem}.swagger-ui .w4-m{width:8rem}.swagger-ui .w5-m{width:16rem}.swagger-ui .w-10-m{width:10%}.swagger-ui .w-20-m{width:20%}.swagger-ui .w-25-m{width:25%}.swagger-ui .w-30-m{width:30%}.swagger-ui .w-33-m{width:33%}.swagger-ui .w-34-m{width:34%}.swagger-ui .w-40-m{width:40%}.swagger-ui .w-50-m{width:50%}.swagger-ui .w-60-m{width:60%}.swagger-ui .w-70-m{width:70%}.swagger-ui .w-75-m{width:75%}.swagger-ui .w-80-m{width:80%}.swagger-ui .w-90-m{width:90%}.swagger-ui .w-100-m{width:100%}.swagger-ui .w-third-m{width:33.33333%}.swagger-ui .w-two-thirds-m{width:66.66667%}.swagger-ui .w-auto-m{width:auto}}@media screen and (min-width:60em){.swagger-ui .w1-l{width:1rem}.swagger-ui .w2-l{width:2rem}.swagger-ui .w3-l{width:4rem}.swagger-ui .w4-l{width:8rem}.swagger-ui .w5-l{width:16rem}.swagger-ui .w-10-l{width:10%}.swagger-ui .w-20-l{width:20%}.swagger-ui .w-25-l{width:25%}.swagger-ui .w-30-l{width:30%}.swagger-ui .w-33-l{width:33%}.swagger-ui .w-34-l{width:34%}.swagger-ui .w-40-l{width:40%}.swagger-ui .w-50-l{width:50%}.swagger-ui .w-60-l{width:60%}.swagger-ui .w-70-l{width:70%}.swagger-ui .w-75-l{width:75%}.swagger-ui .w-80-l{width:80%}.swagger-ui .w-90-l{width:90%}.swagger-ui .w-100-l{width:100%}.swagger-ui .w-third-l{width:33.33333%}.swagger-ui .w-two-thirds-l{width:66.66667%}.swagger-ui .w-auto-l{width:auto}}.swagger-ui .overflow-visible{overflow:visible}.swagger-ui .overflow-hidden{overflow:hidden}.swagger-ui .overflow-scroll{overflow:scroll}.swagger-ui .overflow-auto{overflow:auto}.swagger-ui .overflow-x-visible{overflow-x:visible}.swagger-ui .overflow-x-hidden{overflow-x:hidden}.swagger-ui .overflow-x-scroll{overflow-x:scroll}.swagger-ui .overflow-x-auto{overflow-x:auto}.swagger-ui .overflow-y-visible{overflow-y:visible}.swagger-ui .overflow-y-hidden{overflow-y:hidden}.swagger-ui .overflow-y-scroll{overflow-y:scroll}.swagger-ui .overflow-y-auto{overflow-y:auto}@media screen and (min-width:30em){.swagger-ui .overflow-visible-ns{overflow:visible}.swagger-ui .overflow-hidden-ns{overflow:hidden}.swagger-ui .overflow-scroll-ns{overflow:scroll}.swagger-ui .overflow-auto-ns{overflow:auto}.swagger-ui .overflow-x-visible-ns{overflow-x:visible}.swagger-ui .overflow-x-hidden-ns{overflow-x:hidden}.swagger-ui .overflow-x-scroll-ns{overflow-x:scroll}.swagger-ui .overflow-x-auto-ns{overflow-x:auto}.swagger-ui .overflow-y-visible-ns{overflow-y:visible}.swagger-ui .overflow-y-hidden-ns{overflow-y:hidden}.swagger-ui .overflow-y-scroll-ns{overflow-y:scroll}.swagger-ui .overflow-y-auto-ns{overflow-y:auto}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .overflow-visible-m{overflow:visible}.swagger-ui .overflow-hidden-m{overflow:hidden}.swagger-ui .overflow-scroll-m{overflow:scroll}.swagger-ui .overflow-auto-m{overflow:auto}.swagger-ui .overflow-x-visible-m{overflow-x:visible}.swagger-ui .overflow-x-hidden-m{overflow-x:hidden}.swagger-ui .overflow-x-scroll-m{overflow-x:scroll}.swagger-ui .overflow-x-auto-m{overflow-x:auto}.swagger-ui .overflow-y-visible-m{overflow-y:visible}.swagger-ui .overflow-y-hidden-m{overflow-y:hidden}.swagger-ui .overflow-y-scroll-m{overflow-y:scroll}.swagger-ui .overflow-y-auto-m{overflow-y:auto}}@media screen and (min-width:60em){.swagger-ui .overflow-visible-l{overflow:visible}.swagger-ui .overflow-hidden-l{overflow:hidden}.swagger-ui .overflow-scroll-l{overflow:scroll}.swagger-ui .overflow-auto-l{overflow:auto}.swagger-ui .overflow-x-visible-l{overflow-x:visible}.swagger-ui .overflow-x-hidden-l{overflow-x:hidden}.swagger-ui .overflow-x-scroll-l{overflow-x:scroll}.swagger-ui .overflow-x-auto-l{overflow-x:auto}.swagger-ui .overflow-y-visible-l{overflow-y:visible}.swagger-ui .overflow-y-hidden-l{overflow-y:hidden}.swagger-ui .overflow-y-scroll-l{overflow-y:scroll}.swagger-ui .overflow-y-auto-l{overflow-y:auto}}.swagger-ui .static{position:static}.swagger-ui .relative{position:relative}.swagger-ui .absolute{position:absolute}.swagger-ui .fixed{position:fixed}@media screen and (min-width:30em){.swagger-ui .static-ns{position:static}.swagger-ui .relative-ns{position:relative}.swagger-ui .absolute-ns{position:absolute}.swagger-ui .fixed-ns{position:fixed}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .static-m{position:static}.swagger-ui .relative-m{position:relative}.swagger-ui .absolute-m{position:absolute}.swagger-ui .fixed-m{position:fixed}}@media screen and (min-width:60em){.swagger-ui .static-l{position:static}.swagger-ui .relative-l{position:relative}.swagger-ui .absolute-l{position:absolute}.swagger-ui .fixed-l{position:fixed}}.swagger-ui .o-100{opacity:1}.swagger-ui .o-90{opacity:.9}.swagger-ui .o-80{opacity:.8}.swagger-ui .o-70{opacity:.7}.swagger-ui .o-60{opacity:.6}.swagger-ui .o-50{opacity:.5}.swagger-ui .o-40{opacity:.4}.swagger-ui .o-30{opacity:.3}.swagger-ui .o-20{opacity:.2}.swagger-ui .o-10{opacity:.1}.swagger-ui .o-05{opacity:.05}.swagger-ui .o-025{opacity:.025}.swagger-ui .o-0{opacity:0}.swagger-ui .rotate-45{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.swagger-ui .rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.swagger-ui .rotate-135{-webkit-transform:rotate(135deg);transform:rotate(135deg)}.swagger-ui .rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.swagger-ui .rotate-225{-webkit-transform:rotate(225deg);transform:rotate(225deg)}.swagger-ui .rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.swagger-ui .rotate-315{-webkit-transform:rotate(315deg);transform:rotate(315deg)}@media screen and (min-width:30em){.swagger-ui .rotate-45-ns{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.swagger-ui .rotate-90-ns{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.swagger-ui .rotate-135-ns{-webkit-transform:rotate(135deg);transform:rotate(135deg)}.swagger-ui .rotate-180-ns{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.swagger-ui .rotate-225-ns{-webkit-transform:rotate(225deg);transform:rotate(225deg)}.swagger-ui .rotate-270-ns{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.swagger-ui .rotate-315-ns{-webkit-transform:rotate(315deg);transform:rotate(315deg)}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .rotate-45-m{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.swagger-ui .rotate-90-m{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.swagger-ui .rotate-135-m{-webkit-transform:rotate(135deg);transform:rotate(135deg)}.swagger-ui .rotate-180-m{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.swagger-ui .rotate-225-m{-webkit-transform:rotate(225deg);transform:rotate(225deg)}.swagger-ui .rotate-270-m{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.swagger-ui .rotate-315-m{-webkit-transform:rotate(315deg);transform:rotate(315deg)}}@media screen and (min-width:60em){.swagger-ui .rotate-45-l{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.swagger-ui .rotate-90-l{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.swagger-ui .rotate-135-l{-webkit-transform:rotate(135deg);transform:rotate(135deg)}.swagger-ui .rotate-180-l{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.swagger-ui .rotate-225-l{-webkit-transform:rotate(225deg);transform:rotate(225deg)}.swagger-ui .rotate-270-l{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.swagger-ui .rotate-315-l{-webkit-transform:rotate(315deg);transform:rotate(315deg)}}.swagger-ui .black-90{color:rgba(0,0,0,.9)}.swagger-ui .black-80{color:rgba(0,0,0,.8)}.swagger-ui .black-70{color:rgba(0,0,0,.7)}.swagger-ui .black-60{color:rgba(0,0,0,.6)}.swagger-ui .black-50{color:rgba(0,0,0,.5)}.swagger-ui .black-40{color:rgba(0,0,0,.4)}.swagger-ui .black-30{color:rgba(0,0,0,.3)}.swagger-ui .black-20{color:rgba(0,0,0,.2)}.swagger-ui .black-10{color:rgba(0,0,0,.1)}.swagger-ui .black-05{color:rgba(0,0,0,.05)}.swagger-ui .white-90{color:hsla(0,0%,100%,.9)}.swagger-ui .white-80{color:hsla(0,0%,100%,.8)}.swagger-ui .white-70{color:hsla(0,0%,100%,.7)}.swagger-ui .white-60{color:hsla(0,0%,100%,.6)}.swagger-ui .white-50{color:hsla(0,0%,100%,.5)}.swagger-ui .white-40{color:hsla(0,0%,100%,.4)}.swagger-ui .white-30{color:hsla(0,0%,100%,.3)}.swagger-ui .white-20{color:hsla(0,0%,100%,.2)}.swagger-ui .white-10{color:hsla(0,0%,100%,.1)}.swagger-ui .black{color:#000}.swagger-ui .near-black{color:#111}.swagger-ui .dark-gray{color:#333}.swagger-ui .mid-gray{color:#555}.swagger-ui .gray{color:#777}.swagger-ui .silver{color:#999}.swagger-ui .light-silver{color:#aaa}.swagger-ui .moon-gray{color:#ccc}.swagger-ui .light-gray{color:#eee}.swagger-ui .near-white{color:#f4f4f4}.swagger-ui .white{color:#fff}.swagger-ui .dark-red{color:#e7040f}.swagger-ui .red{color:#ff4136}.swagger-ui .light-red{color:#ff725c}.swagger-ui .orange{color:#ff6300}.swagger-ui .gold{color:#ffb700}.swagger-ui .yellow{color:gold}.swagger-ui .light-yellow{color:#fbf1a9}.swagger-ui .purple{color:#5e2ca5}.swagger-ui .light-purple{color:#a463f2}.swagger-ui .dark-pink{color:#d5008f}.swagger-ui .hot-pink{color:#ff41b4}.swagger-ui .pink{color:#ff80cc}.swagger-ui .light-pink{color:#ffa3d7}.swagger-ui .dark-green{color:#137752}.swagger-ui .green{color:#19a974}.swagger-ui .light-green{color:#9eebcf}.swagger-ui .navy{color:#001b44}.swagger-ui .dark-blue{color:#00449e}.swagger-ui .blue{color:#357edd}.swagger-ui .light-blue{color:#96ccff}.swagger-ui .lightest-blue{color:#cdecff}.swagger-ui .washed-blue{color:#f6fffe}.swagger-ui .washed-green{color:#e8fdf5}.swagger-ui .washed-yellow{color:#fffceb}.swagger-ui .washed-red{color:#ffdfdf}.swagger-ui .color-inherit{color:inherit}.swagger-ui .bg-black-90{background-color:rgba(0,0,0,.9)}.swagger-ui .bg-black-80{background-color:rgba(0,0,0,.8)}.swagger-ui .bg-black-70{background-color:rgba(0,0,0,.7)}.swagger-ui .bg-black-60{background-color:rgba(0,0,0,.6)}.swagger-ui .bg-black-50{background-color:rgba(0,0,0,.5)}.swagger-ui .bg-black-40{background-color:rgba(0,0,0,.4)}.swagger-ui .bg-black-30{background-color:rgba(0,0,0,.3)}.swagger-ui .bg-black-20{background-color:rgba(0,0,0,.2)}.swagger-ui .bg-black-10{background-color:rgba(0,0,0,.1)}.swagger-ui .bg-black-05{background-color:rgba(0,0,0,.05)}.swagger-ui .bg-white-90{background-color:hsla(0,0%,100%,.9)}.swagger-ui .bg-white-80{background-color:hsla(0,0%,100%,.8)}.swagger-ui .bg-white-70{background-color:hsla(0,0%,100%,.7)}.swagger-ui .bg-white-60{background-color:hsla(0,0%,100%,.6)}.swagger-ui .bg-white-50{background-color:hsla(0,0%,100%,.5)}.swagger-ui .bg-white-40{background-color:hsla(0,0%,100%,.4)}.swagger-ui .bg-white-30{background-color:hsla(0,0%,100%,.3)}.swagger-ui .bg-white-20{background-color:hsla(0,0%,100%,.2)}.swagger-ui .bg-white-10{background-color:hsla(0,0%,100%,.1)}.swagger-ui .bg-black{background-color:#000}.swagger-ui .bg-near-black{background-color:#111}.swagger-ui .bg-dark-gray{background-color:#333}.swagger-ui .bg-mid-gray{background-color:#555}.swagger-ui .bg-gray{background-color:#777}.swagger-ui .bg-silver{background-color:#999}.swagger-ui .bg-light-silver{background-color:#aaa}.swagger-ui .bg-moon-gray{background-color:#ccc}.swagger-ui .bg-light-gray{background-color:#eee}.swagger-ui .bg-near-white{background-color:#f4f4f4}.swagger-ui .bg-white{background-color:#fff}.swagger-ui .bg-transparent{background-color:transparent}.swagger-ui .bg-dark-red{background-color:#e7040f}.swagger-ui .bg-red{background-color:#ff4136}.swagger-ui .bg-light-red{background-color:#ff725c}.swagger-ui .bg-orange{background-color:#ff6300}.swagger-ui .bg-gold{background-color:#ffb700}.swagger-ui .bg-yellow{background-color:gold}.swagger-ui .bg-light-yellow{background-color:#fbf1a9}.swagger-ui .bg-purple{background-color:#5e2ca5}.swagger-ui .bg-light-purple{background-color:#a463f2}.swagger-ui .bg-dark-pink{background-color:#d5008f}.swagger-ui .bg-hot-pink{background-color:#ff41b4}.swagger-ui .bg-pink{background-color:#ff80cc}.swagger-ui .bg-light-pink{background-color:#ffa3d7}.swagger-ui .bg-dark-green{background-color:#137752}.swagger-ui .bg-green{background-color:#19a974}.swagger-ui .bg-light-green{background-color:#9eebcf}.swagger-ui .bg-navy{background-color:#001b44}.swagger-ui .bg-dark-blue{background-color:#00449e}.swagger-ui .bg-blue{background-color:#357edd}.swagger-ui .bg-light-blue{background-color:#96ccff}.swagger-ui .bg-lightest-blue{background-color:#cdecff}.swagger-ui .bg-washed-blue{background-color:#f6fffe}.swagger-ui .bg-washed-green{background-color:#e8fdf5}.swagger-ui .bg-washed-yellow{background-color:#fffceb}.swagger-ui .bg-washed-red{background-color:#ffdfdf}.swagger-ui .bg-inherit{background-color:inherit}.swagger-ui .hover-black:focus,.swagger-ui .hover-black:hover{color:#000}.swagger-ui .hover-near-black:focus,.swagger-ui .hover-near-black:hover{color:#111}.swagger-ui .hover-dark-gray:focus,.swagger-ui .hover-dark-gray:hover{color:#333}.swagger-ui .hover-mid-gray:focus,.swagger-ui .hover-mid-gray:hover{color:#555}.swagger-ui .hover-gray:focus,.swagger-ui .hover-gray:hover{color:#777}.swagger-ui .hover-silver:focus,.swagger-ui .hover-silver:hover{color:#999}.swagger-ui .hover-light-silver:focus,.swagger-ui .hover-light-silver:hover{color:#aaa}.swagger-ui .hover-moon-gray:focus,.swagger-ui .hover-moon-gray:hover{color:#ccc}.swagger-ui .hover-light-gray:focus,.swagger-ui .hover-light-gray:hover{color:#eee}.swagger-ui .hover-near-white:focus,.swagger-ui .hover-near-white:hover{color:#f4f4f4}.swagger-ui .hover-white:focus,.swagger-ui .hover-white:hover{color:#fff}.swagger-ui .hover-black-90:focus,.swagger-ui .hover-black-90:hover{color:rgba(0,0,0,.9)}.swagger-ui .hover-black-80:focus,.swagger-ui .hover-black-80:hover{color:rgba(0,0,0,.8)}.swagger-ui .hover-black-70:focus,.swagger-ui .hover-black-70:hover{color:rgba(0,0,0,.7)}.swagger-ui .hover-black-60:focus,.swagger-ui .hover-black-60:hover{color:rgba(0,0,0,.6)}.swagger-ui .hover-black-50:focus,.swagger-ui .hover-black-50:hover{color:rgba(0,0,0,.5)}.swagger-ui .hover-black-40:focus,.swagger-ui .hover-black-40:hover{color:rgba(0,0,0,.4)}.swagger-ui .hover-black-30:focus,.swagger-ui .hover-black-30:hover{color:rgba(0,0,0,.3)}.swagger-ui .hover-black-20:focus,.swagger-ui .hover-black-20:hover{color:rgba(0,0,0,.2)}.swagger-ui .hover-black-10:focus,.swagger-ui .hover-black-10:hover{color:rgba(0,0,0,.1)}.swagger-ui .hover-white-90:focus,.swagger-ui .hover-white-90:hover{color:hsla(0,0%,100%,.9)}.swagger-ui .hover-white-80:focus,.swagger-ui .hover-white-80:hover{color:hsla(0,0%,100%,.8)}.swagger-ui .hover-white-70:focus,.swagger-ui .hover-white-70:hover{color:hsla(0,0%,100%,.7)}.swagger-ui .hover-white-60:focus,.swagger-ui .hover-white-60:hover{color:hsla(0,0%,100%,.6)}.swagger-ui .hover-white-50:focus,.swagger-ui .hover-white-50:hover{color:hsla(0,0%,100%,.5)}.swagger-ui .hover-white-40:focus,.swagger-ui .hover-white-40:hover{color:hsla(0,0%,100%,.4)}.swagger-ui .hover-white-30:focus,.swagger-ui .hover-white-30:hover{color:hsla(0,0%,100%,.3)}.swagger-ui .hover-white-20:focus,.swagger-ui .hover-white-20:hover{color:hsla(0,0%,100%,.2)}.swagger-ui .hover-white-10:focus,.swagger-ui .hover-white-10:hover{color:hsla(0,0%,100%,.1)}.swagger-ui .hover-inherit:focus,.swagger-ui .hover-inherit:hover{color:inherit}.swagger-ui .hover-bg-black:focus,.swagger-ui .hover-bg-black:hover{background-color:#000}.swagger-ui .hover-bg-near-black:focus,.swagger-ui .hover-bg-near-black:hover{background-color:#111}.swagger-ui .hover-bg-dark-gray:focus,.swagger-ui .hover-bg-dark-gray:hover{background-color:#333}.swagger-ui .hover-bg-mid-gray:focus,.swagger-ui .hover-bg-mid-gray:hover{background-color:#555}.swagger-ui .hover-bg-gray:focus,.swagger-ui .hover-bg-gray:hover{background-color:#777}.swagger-ui .hover-bg-silver:focus,.swagger-ui .hover-bg-silver:hover{background-color:#999}.swagger-ui .hover-bg-light-silver:focus,.swagger-ui .hover-bg-light-silver:hover{background-color:#aaa}.swagger-ui .hover-bg-moon-gray:focus,.swagger-ui .hover-bg-moon-gray:hover{background-color:#ccc}.swagger-ui .hover-bg-light-gray:focus,.swagger-ui .hover-bg-light-gray:hover{background-color:#eee}.swagger-ui .hover-bg-near-white:focus,.swagger-ui .hover-bg-near-white:hover{background-color:#f4f4f4}.swagger-ui .hover-bg-white:focus,.swagger-ui .hover-bg-white:hover{background-color:#fff}.swagger-ui .hover-bg-transparent:focus,.swagger-ui .hover-bg-transparent:hover{background-color:transparent}.swagger-ui .hover-bg-black-90:focus,.swagger-ui .hover-bg-black-90:hover{background-color:rgba(0,0,0,.9)}.swagger-ui .hover-bg-black-80:focus,.swagger-ui .hover-bg-black-80:hover{background-color:rgba(0,0,0,.8)}.swagger-ui .hover-bg-black-70:focus,.swagger-ui .hover-bg-black-70:hover{background-color:rgba(0,0,0,.7)}.swagger-ui .hover-bg-black-60:focus,.swagger-ui .hover-bg-black-60:hover{background-color:rgba(0,0,0,.6)}.swagger-ui .hover-bg-black-50:focus,.swagger-ui .hover-bg-black-50:hover{background-color:rgba(0,0,0,.5)}.swagger-ui .hover-bg-black-40:focus,.swagger-ui .hover-bg-black-40:hover{background-color:rgba(0,0,0,.4)}.swagger-ui .hover-bg-black-30:focus,.swagger-ui .hover-bg-black-30:hover{background-color:rgba(0,0,0,.3)}.swagger-ui .hover-bg-black-20:focus,.swagger-ui .hover-bg-black-20:hover{background-color:rgba(0,0,0,.2)}.swagger-ui .hover-bg-black-10:focus,.swagger-ui .hover-bg-black-10:hover{background-color:rgba(0,0,0,.1)}.swagger-ui .hover-bg-white-90:focus,.swagger-ui .hover-bg-white-90:hover{background-color:hsla(0,0%,100%,.9)}.swagger-ui .hover-bg-white-80:focus,.swagger-ui .hover-bg-white-80:hover{background-color:hsla(0,0%,100%,.8)}.swagger-ui .hover-bg-white-70:focus,.swagger-ui .hover-bg-white-70:hover{background-color:hsla(0,0%,100%,.7)}.swagger-ui .hover-bg-white-60:focus,.swagger-ui .hover-bg-white-60:hover{background-color:hsla(0,0%,100%,.6)}.swagger-ui .hover-bg-white-50:focus,.swagger-ui .hover-bg-white-50:hover{background-color:hsla(0,0%,100%,.5)}.swagger-ui .hover-bg-white-40:focus,.swagger-ui .hover-bg-white-40:hover{background-color:hsla(0,0%,100%,.4)}.swagger-ui .hover-bg-white-30:focus,.swagger-ui .hover-bg-white-30:hover{background-color:hsla(0,0%,100%,.3)}.swagger-ui .hover-bg-white-20:focus,.swagger-ui .hover-bg-white-20:hover{background-color:hsla(0,0%,100%,.2)}.swagger-ui .hover-bg-white-10:focus,.swagger-ui .hover-bg-white-10:hover{background-color:hsla(0,0%,100%,.1)}.swagger-ui .hover-dark-red:focus,.swagger-ui .hover-dark-red:hover{color:#e7040f}.swagger-ui .hover-red:focus,.swagger-ui .hover-red:hover{color:#ff4136}.swagger-ui .hover-light-red:focus,.swagger-ui .hover-light-red:hover{color:#ff725c}.swagger-ui .hover-orange:focus,.swagger-ui .hover-orange:hover{color:#ff6300}.swagger-ui .hover-gold:focus,.swagger-ui .hover-gold:hover{color:#ffb700}.swagger-ui .hover-yellow:focus,.swagger-ui .hover-yellow:hover{color:gold}.swagger-ui .hover-light-yellow:focus,.swagger-ui .hover-light-yellow:hover{color:#fbf1a9}.swagger-ui .hover-purple:focus,.swagger-ui .hover-purple:hover{color:#5e2ca5}.swagger-ui .hover-light-purple:focus,.swagger-ui .hover-light-purple:hover{color:#a463f2}.swagger-ui .hover-dark-pink:focus,.swagger-ui .hover-dark-pink:hover{color:#d5008f}.swagger-ui .hover-hot-pink:focus,.swagger-ui .hover-hot-pink:hover{color:#ff41b4}.swagger-ui .hover-pink:focus,.swagger-ui .hover-pink:hover{color:#ff80cc}.swagger-ui .hover-light-pink:focus,.swagger-ui .hover-light-pink:hover{color:#ffa3d7}.swagger-ui .hover-dark-green:focus,.swagger-ui .hover-dark-green:hover{color:#137752}.swagger-ui .hover-green:focus,.swagger-ui .hover-green:hover{color:#19a974}.swagger-ui .hover-light-green:focus,.swagger-ui .hover-light-green:hover{color:#9eebcf}.swagger-ui .hover-navy:focus,.swagger-ui .hover-navy:hover{color:#001b44}.swagger-ui .hover-dark-blue:focus,.swagger-ui .hover-dark-blue:hover{color:#00449e}.swagger-ui .hover-blue:focus,.swagger-ui .hover-blue:hover{color:#357edd}.swagger-ui .hover-light-blue:focus,.swagger-ui .hover-light-blue:hover{color:#96ccff}.swagger-ui .hover-lightest-blue:focus,.swagger-ui .hover-lightest-blue:hover{color:#cdecff}.swagger-ui .hover-washed-blue:focus,.swagger-ui .hover-washed-blue:hover{color:#f6fffe}.swagger-ui .hover-washed-green:focus,.swagger-ui .hover-washed-green:hover{color:#e8fdf5}.swagger-ui .hover-washed-yellow:focus,.swagger-ui .hover-washed-yellow:hover{color:#fffceb}.swagger-ui .hover-washed-red:focus,.swagger-ui .hover-washed-red:hover{color:#ffdfdf}.swagger-ui .hover-bg-dark-red:focus,.swagger-ui .hover-bg-dark-red:hover{background-color:#e7040f}.swagger-ui .hover-bg-red:focus,.swagger-ui .hover-bg-red:hover{background-color:#ff4136}.swagger-ui .hover-bg-light-red:focus,.swagger-ui .hover-bg-light-red:hover{background-color:#ff725c}.swagger-ui .hover-bg-orange:focus,.swagger-ui .hover-bg-orange:hover{background-color:#ff6300}.swagger-ui .hover-bg-gold:focus,.swagger-ui .hover-bg-gold:hover{background-color:#ffb700}.swagger-ui .hover-bg-yellow:focus,.swagger-ui .hover-bg-yellow:hover{background-color:gold}.swagger-ui .hover-bg-light-yellow:focus,.swagger-ui .hover-bg-light-yellow:hover{background-color:#fbf1a9}.swagger-ui .hover-bg-purple:focus,.swagger-ui .hover-bg-purple:hover{background-color:#5e2ca5}.swagger-ui .hover-bg-light-purple:focus,.swagger-ui .hover-bg-light-purple:hover{background-color:#a463f2}.swagger-ui .hover-bg-dark-pink:focus,.swagger-ui .hover-bg-dark-pink:hover{background-color:#d5008f}.swagger-ui .hover-bg-hot-pink:focus,.swagger-ui .hover-bg-hot-pink:hover{background-color:#ff41b4}.swagger-ui .hover-bg-pink:focus,.swagger-ui .hover-bg-pink:hover{background-color:#ff80cc}.swagger-ui .hover-bg-light-pink:focus,.swagger-ui .hover-bg-light-pink:hover{background-color:#ffa3d7}.swagger-ui .hover-bg-dark-green:focus,.swagger-ui .hover-bg-dark-green:hover{background-color:#137752}.swagger-ui .hover-bg-green:focus,.swagger-ui .hover-bg-green:hover{background-color:#19a974}.swagger-ui .hover-bg-light-green:focus,.swagger-ui .hover-bg-light-green:hover{background-color:#9eebcf}.swagger-ui .hover-bg-navy:focus,.swagger-ui .hover-bg-navy:hover{background-color:#001b44}.swagger-ui .hover-bg-dark-blue:focus,.swagger-ui .hover-bg-dark-blue:hover{background-color:#00449e}.swagger-ui .hover-bg-blue:focus,.swagger-ui .hover-bg-blue:hover{background-color:#357edd}.swagger-ui .hover-bg-light-blue:focus,.swagger-ui .hover-bg-light-blue:hover{background-color:#96ccff}.swagger-ui .hover-bg-lightest-blue:focus,.swagger-ui .hover-bg-lightest-blue:hover{background-color:#cdecff}.swagger-ui .hover-bg-washed-blue:focus,.swagger-ui .hover-bg-washed-blue:hover{background-color:#f6fffe}.swagger-ui .hover-bg-washed-green:focus,.swagger-ui .hover-bg-washed-green:hover{background-color:#e8fdf5}.swagger-ui .hover-bg-washed-yellow:focus,.swagger-ui .hover-bg-washed-yellow:hover{background-color:#fffceb}.swagger-ui .hover-bg-washed-red:focus,.swagger-ui .hover-bg-washed-red:hover{background-color:#ffdfdf}.swagger-ui .hover-bg-inherit:focus,.swagger-ui .hover-bg-inherit:hover{background-color:inherit}.swagger-ui .pa0{padding:0}.swagger-ui .pa1{padding:.25rem}.swagger-ui .pa2{padding:.5rem}.swagger-ui .pa3{padding:1rem}.swagger-ui .pa4{padding:2rem}.swagger-ui .pa5{padding:4rem}.swagger-ui .pa6{padding:8rem}.swagger-ui .pa7{padding:16rem}.swagger-ui .pl0{padding-left:0}.swagger-ui .pl1{padding-left:.25rem}.swagger-ui .pl2{padding-left:.5rem}.swagger-ui .pl3{padding-left:1rem}.swagger-ui .pl4{padding-left:2rem}.swagger-ui .pl5{padding-left:4rem}.swagger-ui .pl6{padding-left:8rem}.swagger-ui .pl7{padding-left:16rem}.swagger-ui .pr0{padding-right:0}.swagger-ui .pr1{padding-right:.25rem}.swagger-ui .pr2{padding-right:.5rem}.swagger-ui .pr3{padding-right:1rem}.swagger-ui .pr4{padding-right:2rem}.swagger-ui .pr5{padding-right:4rem}.swagger-ui .pr6{padding-right:8rem}.swagger-ui .pr7{padding-right:16rem}.swagger-ui .pb0{padding-bottom:0}.swagger-ui .pb1{padding-bottom:.25rem}.swagger-ui .pb2{padding-bottom:.5rem}.swagger-ui .pb3{padding-bottom:1rem}.swagger-ui .pb4{padding-bottom:2rem}.swagger-ui .pb5{padding-bottom:4rem}.swagger-ui .pb6{padding-bottom:8rem}.swagger-ui .pb7{padding-bottom:16rem}.swagger-ui .pt0{padding-top:0}.swagger-ui .pt1{padding-top:.25rem}.swagger-ui .pt2{padding-top:.5rem}.swagger-ui .pt3{padding-top:1rem}.swagger-ui .pt4{padding-top:2rem}.swagger-ui .pt5{padding-top:4rem}.swagger-ui .pt6{padding-top:8rem}.swagger-ui .pt7{padding-top:16rem}.swagger-ui .pv0{padding-bottom:0;padding-top:0}.swagger-ui .pv1{padding-bottom:.25rem;padding-top:.25rem}.swagger-ui .pv2{padding-bottom:.5rem;padding-top:.5rem}.swagger-ui .pv3{padding-bottom:1rem;padding-top:1rem}.swagger-ui .pv4{padding-bottom:2rem;padding-top:2rem}.swagger-ui .pv5{padding-bottom:4rem;padding-top:4rem}.swagger-ui .pv6{padding-bottom:8rem;padding-top:8rem}.swagger-ui .pv7{padding-bottom:16rem;padding-top:16rem}.swagger-ui .ph0{padding-left:0;padding-right:0}.swagger-ui .ph1{padding-left:.25rem;padding-right:.25rem}.swagger-ui .ph2{padding-left:.5rem;padding-right:.5rem}.swagger-ui .ph3{padding-left:1rem;padding-right:1rem}.swagger-ui .ph4{padding-left:2rem;padding-right:2rem}.swagger-ui .ph5{padding-left:4rem;padding-right:4rem}.swagger-ui .ph6{padding-left:8rem;padding-right:8rem}.swagger-ui .ph7{padding-left:16rem;padding-right:16rem}.swagger-ui .ma0{margin:0}.swagger-ui .ma1{margin:.25rem}.swagger-ui .ma2{margin:.5rem}.swagger-ui .ma3{margin:1rem}.swagger-ui .ma4{margin:2rem}.swagger-ui .ma5{margin:4rem}.swagger-ui .ma6{margin:8rem}.swagger-ui .ma7{margin:16rem}.swagger-ui .ml0{margin-left:0}.swagger-ui .ml1{margin-left:.25rem}.swagger-ui .ml2{margin-left:.5rem}.swagger-ui .ml3{margin-left:1rem}.swagger-ui .ml4{margin-left:2rem}.swagger-ui .ml5{margin-left:4rem}.swagger-ui .ml6{margin-left:8rem}.swagger-ui .ml7{margin-left:16rem}.swagger-ui .mr0{margin-right:0}.swagger-ui .mr1{margin-right:.25rem}.swagger-ui .mr2{margin-right:.5rem}.swagger-ui .mr3{margin-right:1rem}.swagger-ui .mr4{margin-right:2rem}.swagger-ui .mr5{margin-right:4rem}.swagger-ui .mr6{margin-right:8rem}.swagger-ui .mr7{margin-right:16rem}.swagger-ui .mb0{margin-bottom:0}.swagger-ui .mb1{margin-bottom:.25rem}.swagger-ui .mb2{margin-bottom:.5rem}.swagger-ui .mb3{margin-bottom:1rem}.swagger-ui .mb4{margin-bottom:2rem}.swagger-ui .mb5{margin-bottom:4rem}.swagger-ui .mb6{margin-bottom:8rem}.swagger-ui .mb7{margin-bottom:16rem}.swagger-ui .mt0{margin-top:0}.swagger-ui .mt1{margin-top:.25rem}.swagger-ui .mt2{margin-top:.5rem}.swagger-ui .mt3{margin-top:1rem}.swagger-ui .mt4{margin-top:2rem}.swagger-ui .mt5{margin-top:4rem}.swagger-ui .mt6{margin-top:8rem}.swagger-ui .mt7{margin-top:16rem}.swagger-ui .mv0{margin-bottom:0;margin-top:0}.swagger-ui .mv1{margin-bottom:.25rem;margin-top:.25rem}.swagger-ui .mv2{margin-bottom:.5rem;margin-top:.5rem}.swagger-ui .mv3{margin-bottom:1rem;margin-top:1rem}.swagger-ui .mv4{margin-bottom:2rem;margin-top:2rem}.swagger-ui .mv5{margin-bottom:4rem;margin-top:4rem}.swagger-ui .mv6{margin-bottom:8rem;margin-top:8rem}.swagger-ui .mv7{margin-bottom:16rem;margin-top:16rem}.swagger-ui .mh0{margin-left:0;margin-right:0}.swagger-ui .mh1{margin-left:.25rem;margin-right:.25rem}.swagger-ui .mh2{margin-left:.5rem;margin-right:.5rem}.swagger-ui .mh3{margin-left:1rem;margin-right:1rem}.swagger-ui .mh4{margin-left:2rem;margin-right:2rem}.swagger-ui .mh5{margin-left:4rem;margin-right:4rem}.swagger-ui .mh6{margin-left:8rem;margin-right:8rem}.swagger-ui .mh7{margin-left:16rem;margin-right:16rem}@media screen and (min-width:30em){.swagger-ui .pa0-ns{padding:0}.swagger-ui .pa1-ns{padding:.25rem}.swagger-ui .pa2-ns{padding:.5rem}.swagger-ui .pa3-ns{padding:1rem}.swagger-ui .pa4-ns{padding:2rem}.swagger-ui .pa5-ns{padding:4rem}.swagger-ui .pa6-ns{padding:8rem}.swagger-ui .pa7-ns{padding:16rem}.swagger-ui .pl0-ns{padding-left:0}.swagger-ui .pl1-ns{padding-left:.25rem}.swagger-ui .pl2-ns{padding-left:.5rem}.swagger-ui .pl3-ns{padding-left:1rem}.swagger-ui .pl4-ns{padding-left:2rem}.swagger-ui .pl5-ns{padding-left:4rem}.swagger-ui .pl6-ns{padding-left:8rem}.swagger-ui .pl7-ns{padding-left:16rem}.swagger-ui .pr0-ns{padding-right:0}.swagger-ui .pr1-ns{padding-right:.25rem}.swagger-ui .pr2-ns{padding-right:.5rem}.swagger-ui .pr3-ns{padding-right:1rem}.swagger-ui .pr4-ns{padding-right:2rem}.swagger-ui .pr5-ns{padding-right:4rem}.swagger-ui .pr6-ns{padding-right:8rem}.swagger-ui .pr7-ns{padding-right:16rem}.swagger-ui .pb0-ns{padding-bottom:0}.swagger-ui .pb1-ns{padding-bottom:.25rem}.swagger-ui .pb2-ns{padding-bottom:.5rem}.swagger-ui .pb3-ns{padding-bottom:1rem}.swagger-ui .pb4-ns{padding-bottom:2rem}.swagger-ui .pb5-ns{padding-bottom:4rem}.swagger-ui .pb6-ns{padding-bottom:8rem}.swagger-ui .pb7-ns{padding-bottom:16rem}.swagger-ui .pt0-ns{padding-top:0}.swagger-ui .pt1-ns{padding-top:.25rem}.swagger-ui .pt2-ns{padding-top:.5rem}.swagger-ui .pt3-ns{padding-top:1rem}.swagger-ui .pt4-ns{padding-top:2rem}.swagger-ui .pt5-ns{padding-top:4rem}.swagger-ui .pt6-ns{padding-top:8rem}.swagger-ui .pt7-ns{padding-top:16rem}.swagger-ui .pv0-ns{padding-bottom:0;padding-top:0}.swagger-ui .pv1-ns{padding-bottom:.25rem;padding-top:.25rem}.swagger-ui .pv2-ns{padding-bottom:.5rem;padding-top:.5rem}.swagger-ui .pv3-ns{padding-bottom:1rem;padding-top:1rem}.swagger-ui .pv4-ns{padding-bottom:2rem;padding-top:2rem}.swagger-ui .pv5-ns{padding-bottom:4rem;padding-top:4rem}.swagger-ui .pv6-ns{padding-bottom:8rem;padding-top:8rem}.swagger-ui .pv7-ns{padding-bottom:16rem;padding-top:16rem}.swagger-ui .ph0-ns{padding-left:0;padding-right:0}.swagger-ui .ph1-ns{padding-left:.25rem;padding-right:.25rem}.swagger-ui .ph2-ns{padding-left:.5rem;padding-right:.5rem}.swagger-ui .ph3-ns{padding-left:1rem;padding-right:1rem}.swagger-ui .ph4-ns{padding-left:2rem;padding-right:2rem}.swagger-ui .ph5-ns{padding-left:4rem;padding-right:4rem}.swagger-ui .ph6-ns{padding-left:8rem;padding-right:8rem}.swagger-ui .ph7-ns{padding-left:16rem;padding-right:16rem}.swagger-ui .ma0-ns{margin:0}.swagger-ui .ma1-ns{margin:.25rem}.swagger-ui .ma2-ns{margin:.5rem}.swagger-ui .ma3-ns{margin:1rem}.swagger-ui .ma4-ns{margin:2rem}.swagger-ui .ma5-ns{margin:4rem}.swagger-ui .ma6-ns{margin:8rem}.swagger-ui .ma7-ns{margin:16rem}.swagger-ui .ml0-ns{margin-left:0}.swagger-ui .ml1-ns{margin-left:.25rem}.swagger-ui .ml2-ns{margin-left:.5rem}.swagger-ui .ml3-ns{margin-left:1rem}.swagger-ui .ml4-ns{margin-left:2rem}.swagger-ui .ml5-ns{margin-left:4rem}.swagger-ui .ml6-ns{margin-left:8rem}.swagger-ui .ml7-ns{margin-left:16rem}.swagger-ui .mr0-ns{margin-right:0}.swagger-ui .mr1-ns{margin-right:.25rem}.swagger-ui .mr2-ns{margin-right:.5rem}.swagger-ui .mr3-ns{margin-right:1rem}.swagger-ui .mr4-ns{margin-right:2rem}.swagger-ui .mr5-ns{margin-right:4rem}.swagger-ui .mr6-ns{margin-right:8rem}.swagger-ui .mr7-ns{margin-right:16rem}.swagger-ui .mb0-ns{margin-bottom:0}.swagger-ui .mb1-ns{margin-bottom:.25rem}.swagger-ui .mb2-ns{margin-bottom:.5rem}.swagger-ui .mb3-ns{margin-bottom:1rem}.swagger-ui .mb4-ns{margin-bottom:2rem}.swagger-ui .mb5-ns{margin-bottom:4rem}.swagger-ui .mb6-ns{margin-bottom:8rem}.swagger-ui .mb7-ns{margin-bottom:16rem}.swagger-ui .mt0-ns{margin-top:0}.swagger-ui .mt1-ns{margin-top:.25rem}.swagger-ui .mt2-ns{margin-top:.5rem}.swagger-ui .mt3-ns{margin-top:1rem}.swagger-ui .mt4-ns{margin-top:2rem}.swagger-ui .mt5-ns{margin-top:4rem}.swagger-ui .mt6-ns{margin-top:8rem}.swagger-ui .mt7-ns{margin-top:16rem}.swagger-ui .mv0-ns{margin-bottom:0;margin-top:0}.swagger-ui .mv1-ns{margin-bottom:.25rem;margin-top:.25rem}.swagger-ui .mv2-ns{margin-bottom:.5rem;margin-top:.5rem}.swagger-ui .mv3-ns{margin-bottom:1rem;margin-top:1rem}.swagger-ui .mv4-ns{margin-bottom:2rem;margin-top:2rem}.swagger-ui .mv5-ns{margin-bottom:4rem;margin-top:4rem}.swagger-ui .mv6-ns{margin-bottom:8rem;margin-top:8rem}.swagger-ui .mv7-ns{margin-bottom:16rem;margin-top:16rem}.swagger-ui .mh0-ns{margin-left:0;margin-right:0}.swagger-ui .mh1-ns{margin-left:.25rem;margin-right:.25rem}.swagger-ui .mh2-ns{margin-left:.5rem;margin-right:.5rem}.swagger-ui .mh3-ns{margin-left:1rem;margin-right:1rem}.swagger-ui .mh4-ns{margin-left:2rem;margin-right:2rem}.swagger-ui .mh5-ns{margin-left:4rem;margin-right:4rem}.swagger-ui .mh6-ns{margin-left:8rem;margin-right:8rem}.swagger-ui .mh7-ns{margin-left:16rem;margin-right:16rem}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .pa0-m{padding:0}.swagger-ui .pa1-m{padding:.25rem}.swagger-ui .pa2-m{padding:.5rem}.swagger-ui .pa3-m{padding:1rem}.swagger-ui .pa4-m{padding:2rem}.swagger-ui .pa5-m{padding:4rem}.swagger-ui .pa6-m{padding:8rem}.swagger-ui .pa7-m{padding:16rem}.swagger-ui .pl0-m{padding-left:0}.swagger-ui .pl1-m{padding-left:.25rem}.swagger-ui .pl2-m{padding-left:.5rem}.swagger-ui .pl3-m{padding-left:1rem}.swagger-ui .pl4-m{padding-left:2rem}.swagger-ui .pl5-m{padding-left:4rem}.swagger-ui .pl6-m{padding-left:8rem}.swagger-ui .pl7-m{padding-left:16rem}.swagger-ui .pr0-m{padding-right:0}.swagger-ui .pr1-m{padding-right:.25rem}.swagger-ui .pr2-m{padding-right:.5rem}.swagger-ui .pr3-m{padding-right:1rem}.swagger-ui .pr4-m{padding-right:2rem}.swagger-ui .pr5-m{padding-right:4rem}.swagger-ui .pr6-m{padding-right:8rem}.swagger-ui .pr7-m{padding-right:16rem}.swagger-ui .pb0-m{padding-bottom:0}.swagger-ui .pb1-m{padding-bottom:.25rem}.swagger-ui .pb2-m{padding-bottom:.5rem}.swagger-ui .pb3-m{padding-bottom:1rem}.swagger-ui .pb4-m{padding-bottom:2rem}.swagger-ui .pb5-m{padding-bottom:4rem}.swagger-ui .pb6-m{padding-bottom:8rem}.swagger-ui .pb7-m{padding-bottom:16rem}.swagger-ui .pt0-m{padding-top:0}.swagger-ui .pt1-m{padding-top:.25rem}.swagger-ui .pt2-m{padding-top:.5rem}.swagger-ui .pt3-m{padding-top:1rem}.swagger-ui .pt4-m{padding-top:2rem}.swagger-ui .pt5-m{padding-top:4rem}.swagger-ui .pt6-m{padding-top:8rem}.swagger-ui .pt7-m{padding-top:16rem}.swagger-ui .pv0-m{padding-bottom:0;padding-top:0}.swagger-ui .pv1-m{padding-bottom:.25rem;padding-top:.25rem}.swagger-ui .pv2-m{padding-bottom:.5rem;padding-top:.5rem}.swagger-ui .pv3-m{padding-bottom:1rem;padding-top:1rem}.swagger-ui .pv4-m{padding-bottom:2rem;padding-top:2rem}.swagger-ui .pv5-m{padding-bottom:4rem;padding-top:4rem}.swagger-ui .pv6-m{padding-bottom:8rem;padding-top:8rem}.swagger-ui .pv7-m{padding-bottom:16rem;padding-top:16rem}.swagger-ui .ph0-m{padding-left:0;padding-right:0}.swagger-ui .ph1-m{padding-left:.25rem;padding-right:.25rem}.swagger-ui .ph2-m{padding-left:.5rem;padding-right:.5rem}.swagger-ui .ph3-m{padding-left:1rem;padding-right:1rem}.swagger-ui .ph4-m{padding-left:2rem;padding-right:2rem}.swagger-ui .ph5-m{padding-left:4rem;padding-right:4rem}.swagger-ui .ph6-m{padding-left:8rem;padding-right:8rem}.swagger-ui .ph7-m{padding-left:16rem;padding-right:16rem}.swagger-ui .ma0-m{margin:0}.swagger-ui .ma1-m{margin:.25rem}.swagger-ui .ma2-m{margin:.5rem}.swagger-ui .ma3-m{margin:1rem}.swagger-ui .ma4-m{margin:2rem}.swagger-ui .ma5-m{margin:4rem}.swagger-ui .ma6-m{margin:8rem}.swagger-ui .ma7-m{margin:16rem}.swagger-ui .ml0-m{margin-left:0}.swagger-ui .ml1-m{margin-left:.25rem}.swagger-ui .ml2-m{margin-left:.5rem}.swagger-ui .ml3-m{margin-left:1rem}.swagger-ui .ml4-m{margin-left:2rem}.swagger-ui .ml5-m{margin-left:4rem}.swagger-ui .ml6-m{margin-left:8rem}.swagger-ui .ml7-m{margin-left:16rem}.swagger-ui .mr0-m{margin-right:0}.swagger-ui .mr1-m{margin-right:.25rem}.swagger-ui .mr2-m{margin-right:.5rem}.swagger-ui .mr3-m{margin-right:1rem}.swagger-ui .mr4-m{margin-right:2rem}.swagger-ui .mr5-m{margin-right:4rem}.swagger-ui .mr6-m{margin-right:8rem}.swagger-ui .mr7-m{margin-right:16rem}.swagger-ui .mb0-m{margin-bottom:0}.swagger-ui .mb1-m{margin-bottom:.25rem}.swagger-ui .mb2-m{margin-bottom:.5rem}.swagger-ui .mb3-m{margin-bottom:1rem}.swagger-ui .mb4-m{margin-bottom:2rem}.swagger-ui .mb5-m{margin-bottom:4rem}.swagger-ui .mb6-m{margin-bottom:8rem}.swagger-ui .mb7-m{margin-bottom:16rem}.swagger-ui .mt0-m{margin-top:0}.swagger-ui .mt1-m{margin-top:.25rem}.swagger-ui .mt2-m{margin-top:.5rem}.swagger-ui .mt3-m{margin-top:1rem}.swagger-ui .mt4-m{margin-top:2rem}.swagger-ui .mt5-m{margin-top:4rem}.swagger-ui .mt6-m{margin-top:8rem}.swagger-ui .mt7-m{margin-top:16rem}.swagger-ui .mv0-m{margin-bottom:0;margin-top:0}.swagger-ui .mv1-m{margin-bottom:.25rem;margin-top:.25rem}.swagger-ui .mv2-m{margin-bottom:.5rem;margin-top:.5rem}.swagger-ui .mv3-m{margin-bottom:1rem;margin-top:1rem}.swagger-ui .mv4-m{margin-bottom:2rem;margin-top:2rem}.swagger-ui .mv5-m{margin-bottom:4rem;margin-top:4rem}.swagger-ui .mv6-m{margin-bottom:8rem;margin-top:8rem}.swagger-ui .mv7-m{margin-bottom:16rem;margin-top:16rem}.swagger-ui .mh0-m{margin-left:0;margin-right:0}.swagger-ui .mh1-m{margin-left:.25rem;margin-right:.25rem}.swagger-ui .mh2-m{margin-left:.5rem;margin-right:.5rem}.swagger-ui .mh3-m{margin-left:1rem;margin-right:1rem}.swagger-ui .mh4-m{margin-left:2rem;margin-right:2rem}.swagger-ui .mh5-m{margin-left:4rem;margin-right:4rem}.swagger-ui .mh6-m{margin-left:8rem;margin-right:8rem}.swagger-ui .mh7-m{margin-left:16rem;margin-right:16rem}}@media screen and (min-width:60em){.swagger-ui .pa0-l{padding:0}.swagger-ui .pa1-l{padding:.25rem}.swagger-ui .pa2-l{padding:.5rem}.swagger-ui .pa3-l{padding:1rem}.swagger-ui .pa4-l{padding:2rem}.swagger-ui .pa5-l{padding:4rem}.swagger-ui .pa6-l{padding:8rem}.swagger-ui .pa7-l{padding:16rem}.swagger-ui .pl0-l{padding-left:0}.swagger-ui .pl1-l{padding-left:.25rem}.swagger-ui .pl2-l{padding-left:.5rem}.swagger-ui .pl3-l{padding-left:1rem}.swagger-ui .pl4-l{padding-left:2rem}.swagger-ui .pl5-l{padding-left:4rem}.swagger-ui .pl6-l{padding-left:8rem}.swagger-ui .pl7-l{padding-left:16rem}.swagger-ui .pr0-l{padding-right:0}.swagger-ui .pr1-l{padding-right:.25rem}.swagger-ui .pr2-l{padding-right:.5rem}.swagger-ui .pr3-l{padding-right:1rem}.swagger-ui .pr4-l{padding-right:2rem}.swagger-ui .pr5-l{padding-right:4rem}.swagger-ui .pr6-l{padding-right:8rem}.swagger-ui .pr7-l{padding-right:16rem}.swagger-ui .pb0-l{padding-bottom:0}.swagger-ui .pb1-l{padding-bottom:.25rem}.swagger-ui .pb2-l{padding-bottom:.5rem}.swagger-ui .pb3-l{padding-bottom:1rem}.swagger-ui .pb4-l{padding-bottom:2rem}.swagger-ui .pb5-l{padding-bottom:4rem}.swagger-ui .pb6-l{padding-bottom:8rem}.swagger-ui .pb7-l{padding-bottom:16rem}.swagger-ui .pt0-l{padding-top:0}.swagger-ui .pt1-l{padding-top:.25rem}.swagger-ui .pt2-l{padding-top:.5rem}.swagger-ui .pt3-l{padding-top:1rem}.swagger-ui .pt4-l{padding-top:2rem}.swagger-ui .pt5-l{padding-top:4rem}.swagger-ui .pt6-l{padding-top:8rem}.swagger-ui .pt7-l{padding-top:16rem}.swagger-ui .pv0-l{padding-bottom:0;padding-top:0}.swagger-ui .pv1-l{padding-bottom:.25rem;padding-top:.25rem}.swagger-ui .pv2-l{padding-bottom:.5rem;padding-top:.5rem}.swagger-ui .pv3-l{padding-bottom:1rem;padding-top:1rem}.swagger-ui .pv4-l{padding-bottom:2rem;padding-top:2rem}.swagger-ui .pv5-l{padding-bottom:4rem;padding-top:4rem}.swagger-ui .pv6-l{padding-bottom:8rem;padding-top:8rem}.swagger-ui .pv7-l{padding-bottom:16rem;padding-top:16rem}.swagger-ui .ph0-l{padding-left:0;padding-right:0}.swagger-ui .ph1-l{padding-left:.25rem;padding-right:.25rem}.swagger-ui .ph2-l{padding-left:.5rem;padding-right:.5rem}.swagger-ui .ph3-l{padding-left:1rem;padding-right:1rem}.swagger-ui .ph4-l{padding-left:2rem;padding-right:2rem}.swagger-ui .ph5-l{padding-left:4rem;padding-right:4rem}.swagger-ui .ph6-l{padding-left:8rem;padding-right:8rem}.swagger-ui .ph7-l{padding-left:16rem;padding-right:16rem}.swagger-ui .ma0-l{margin:0}.swagger-ui .ma1-l{margin:.25rem}.swagger-ui .ma2-l{margin:.5rem}.swagger-ui .ma3-l{margin:1rem}.swagger-ui .ma4-l{margin:2rem}.swagger-ui .ma5-l{margin:4rem}.swagger-ui .ma6-l{margin:8rem}.swagger-ui .ma7-l{margin:16rem}.swagger-ui .ml0-l{margin-left:0}.swagger-ui .ml1-l{margin-left:.25rem}.swagger-ui .ml2-l{margin-left:.5rem}.swagger-ui .ml3-l{margin-left:1rem}.swagger-ui .ml4-l{margin-left:2rem}.swagger-ui .ml5-l{margin-left:4rem}.swagger-ui .ml6-l{margin-left:8rem}.swagger-ui .ml7-l{margin-left:16rem}.swagger-ui .mr0-l{margin-right:0}.swagger-ui .mr1-l{margin-right:.25rem}.swagger-ui .mr2-l{margin-right:.5rem}.swagger-ui .mr3-l{margin-right:1rem}.swagger-ui .mr4-l{margin-right:2rem}.swagger-ui .mr5-l{margin-right:4rem}.swagger-ui .mr6-l{margin-right:8rem}.swagger-ui .mr7-l{margin-right:16rem}.swagger-ui .mb0-l{margin-bottom:0}.swagger-ui .mb1-l{margin-bottom:.25rem}.swagger-ui .mb2-l{margin-bottom:.5rem}.swagger-ui .mb3-l{margin-bottom:1rem}.swagger-ui .mb4-l{margin-bottom:2rem}.swagger-ui .mb5-l{margin-bottom:4rem}.swagger-ui .mb6-l{margin-bottom:8rem}.swagger-ui .mb7-l{margin-bottom:16rem}.swagger-ui .mt0-l{margin-top:0}.swagger-ui .mt1-l{margin-top:.25rem}.swagger-ui .mt2-l{margin-top:.5rem}.swagger-ui .mt3-l{margin-top:1rem}.swagger-ui .mt4-l{margin-top:2rem}.swagger-ui .mt5-l{margin-top:4rem}.swagger-ui .mt6-l{margin-top:8rem}.swagger-ui .mt7-l{margin-top:16rem}.swagger-ui .mv0-l{margin-bottom:0;margin-top:0}.swagger-ui .mv1-l{margin-bottom:.25rem;margin-top:.25rem}.swagger-ui .mv2-l{margin-bottom:.5rem;margin-top:.5rem}.swagger-ui .mv3-l{margin-bottom:1rem;margin-top:1rem}.swagger-ui .mv4-l{margin-bottom:2rem;margin-top:2rem}.swagger-ui .mv5-l{margin-bottom:4rem;margin-top:4rem}.swagger-ui .mv6-l{margin-bottom:8rem;margin-top:8rem}.swagger-ui .mv7-l{margin-bottom:16rem;margin-top:16rem}.swagger-ui .mh0-l{margin-left:0;margin-right:0}.swagger-ui .mh1-l{margin-left:.25rem;margin-right:.25rem}.swagger-ui .mh2-l{margin-left:.5rem;margin-right:.5rem}.swagger-ui .mh3-l{margin-left:1rem;margin-right:1rem}.swagger-ui .mh4-l{margin-left:2rem;margin-right:2rem}.swagger-ui .mh5-l{margin-left:4rem;margin-right:4rem}.swagger-ui .mh6-l{margin-left:8rem;margin-right:8rem}.swagger-ui .mh7-l{margin-left:16rem;margin-right:16rem}}.swagger-ui .na1{margin:-.25rem}.swagger-ui .na2{margin:-.5rem}.swagger-ui .na3{margin:-1rem}.swagger-ui .na4{margin:-2rem}.swagger-ui .na5{margin:-4rem}.swagger-ui .na6{margin:-8rem}.swagger-ui .na7{margin:-16rem}.swagger-ui .nl1{margin-left:-.25rem}.swagger-ui .nl2{margin-left:-.5rem}.swagger-ui .nl3{margin-left:-1rem}.swagger-ui .nl4{margin-left:-2rem}.swagger-ui .nl5{margin-left:-4rem}.swagger-ui .nl6{margin-left:-8rem}.swagger-ui .nl7{margin-left:-16rem}.swagger-ui .nr1{margin-right:-.25rem}.swagger-ui .nr2{margin-right:-.5rem}.swagger-ui .nr3{margin-right:-1rem}.swagger-ui .nr4{margin-right:-2rem}.swagger-ui .nr5{margin-right:-4rem}.swagger-ui .nr6{margin-right:-8rem}.swagger-ui .nr7{margin-right:-16rem}.swagger-ui .nb1{margin-bottom:-.25rem}.swagger-ui .nb2{margin-bottom:-.5rem}.swagger-ui .nb3{margin-bottom:-1rem}.swagger-ui .nb4{margin-bottom:-2rem}.swagger-ui .nb5{margin-bottom:-4rem}.swagger-ui .nb6{margin-bottom:-8rem}.swagger-ui .nb7{margin-bottom:-16rem}.swagger-ui .nt1{margin-top:-.25rem}.swagger-ui .nt2{margin-top:-.5rem}.swagger-ui .nt3{margin-top:-1rem}.swagger-ui .nt4{margin-top:-2rem}.swagger-ui .nt5{margin-top:-4rem}.swagger-ui .nt6{margin-top:-8rem}.swagger-ui .nt7{margin-top:-16rem}@media screen and (min-width:30em){.swagger-ui .na1-ns{margin:-.25rem}.swagger-ui .na2-ns{margin:-.5rem}.swagger-ui .na3-ns{margin:-1rem}.swagger-ui .na4-ns{margin:-2rem}.swagger-ui .na5-ns{margin:-4rem}.swagger-ui .na6-ns{margin:-8rem}.swagger-ui .na7-ns{margin:-16rem}.swagger-ui .nl1-ns{margin-left:-.25rem}.swagger-ui .nl2-ns{margin-left:-.5rem}.swagger-ui .nl3-ns{margin-left:-1rem}.swagger-ui .nl4-ns{margin-left:-2rem}.swagger-ui .nl5-ns{margin-left:-4rem}.swagger-ui .nl6-ns{margin-left:-8rem}.swagger-ui .nl7-ns{margin-left:-16rem}.swagger-ui .nr1-ns{margin-right:-.25rem}.swagger-ui .nr2-ns{margin-right:-.5rem}.swagger-ui .nr3-ns{margin-right:-1rem}.swagger-ui .nr4-ns{margin-right:-2rem}.swagger-ui .nr5-ns{margin-right:-4rem}.swagger-ui .nr6-ns{margin-right:-8rem}.swagger-ui .nr7-ns{margin-right:-16rem}.swagger-ui .nb1-ns{margin-bottom:-.25rem}.swagger-ui .nb2-ns{margin-bottom:-.5rem}.swagger-ui .nb3-ns{margin-bottom:-1rem}.swagger-ui .nb4-ns{margin-bottom:-2rem}.swagger-ui .nb5-ns{margin-bottom:-4rem}.swagger-ui .nb6-ns{margin-bottom:-8rem}.swagger-ui .nb7-ns{margin-bottom:-16rem}.swagger-ui .nt1-ns{margin-top:-.25rem}.swagger-ui .nt2-ns{margin-top:-.5rem}.swagger-ui .nt3-ns{margin-top:-1rem}.swagger-ui .nt4-ns{margin-top:-2rem}.swagger-ui .nt5-ns{margin-top:-4rem}.swagger-ui .nt6-ns{margin-top:-8rem}.swagger-ui .nt7-ns{margin-top:-16rem}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .na1-m{margin:-.25rem}.swagger-ui .na2-m{margin:-.5rem}.swagger-ui .na3-m{margin:-1rem}.swagger-ui .na4-m{margin:-2rem}.swagger-ui .na5-m{margin:-4rem}.swagger-ui .na6-m{margin:-8rem}.swagger-ui .na7-m{margin:-16rem}.swagger-ui .nl1-m{margin-left:-.25rem}.swagger-ui .nl2-m{margin-left:-.5rem}.swagger-ui .nl3-m{margin-left:-1rem}.swagger-ui .nl4-m{margin-left:-2rem}.swagger-ui .nl5-m{margin-left:-4rem}.swagger-ui .nl6-m{margin-left:-8rem}.swagger-ui .nl7-m{margin-left:-16rem}.swagger-ui .nr1-m{margin-right:-.25rem}.swagger-ui .nr2-m{margin-right:-.5rem}.swagger-ui .nr3-m{margin-right:-1rem}.swagger-ui .nr4-m{margin-right:-2rem}.swagger-ui .nr5-m{margin-right:-4rem}.swagger-ui .nr6-m{margin-right:-8rem}.swagger-ui .nr7-m{margin-right:-16rem}.swagger-ui .nb1-m{margin-bottom:-.25rem}.swagger-ui .nb2-m{margin-bottom:-.5rem}.swagger-ui .nb3-m{margin-bottom:-1rem}.swagger-ui .nb4-m{margin-bottom:-2rem}.swagger-ui .nb5-m{margin-bottom:-4rem}.swagger-ui .nb6-m{margin-bottom:-8rem}.swagger-ui .nb7-m{margin-bottom:-16rem}.swagger-ui .nt1-m{margin-top:-.25rem}.swagger-ui .nt2-m{margin-top:-.5rem}.swagger-ui .nt3-m{margin-top:-1rem}.swagger-ui .nt4-m{margin-top:-2rem}.swagger-ui .nt5-m{margin-top:-4rem}.swagger-ui .nt6-m{margin-top:-8rem}.swagger-ui .nt7-m{margin-top:-16rem}}@media screen and (min-width:60em){.swagger-ui .na1-l{margin:-.25rem}.swagger-ui .na2-l{margin:-.5rem}.swagger-ui .na3-l{margin:-1rem}.swagger-ui .na4-l{margin:-2rem}.swagger-ui .na5-l{margin:-4rem}.swagger-ui .na6-l{margin:-8rem}.swagger-ui .na7-l{margin:-16rem}.swagger-ui .nl1-l{margin-left:-.25rem}.swagger-ui .nl2-l{margin-left:-.5rem}.swagger-ui .nl3-l{margin-left:-1rem}.swagger-ui .nl4-l{margin-left:-2rem}.swagger-ui .nl5-l{margin-left:-4rem}.swagger-ui .nl6-l{margin-left:-8rem}.swagger-ui .nl7-l{margin-left:-16rem}.swagger-ui .nr1-l{margin-right:-.25rem}.swagger-ui .nr2-l{margin-right:-.5rem}.swagger-ui .nr3-l{margin-right:-1rem}.swagger-ui .nr4-l{margin-right:-2rem}.swagger-ui .nr5-l{margin-right:-4rem}.swagger-ui .nr6-l{margin-right:-8rem}.swagger-ui .nr7-l{margin-right:-16rem}.swagger-ui .nb1-l{margin-bottom:-.25rem}.swagger-ui .nb2-l{margin-bottom:-.5rem}.swagger-ui .nb3-l{margin-bottom:-1rem}.swagger-ui .nb4-l{margin-bottom:-2rem}.swagger-ui .nb5-l{margin-bottom:-4rem}.swagger-ui .nb6-l{margin-bottom:-8rem}.swagger-ui .nb7-l{margin-bottom:-16rem}.swagger-ui .nt1-l{margin-top:-.25rem}.swagger-ui .nt2-l{margin-top:-.5rem}.swagger-ui .nt3-l{margin-top:-1rem}.swagger-ui .nt4-l{margin-top:-2rem}.swagger-ui .nt5-l{margin-top:-4rem}.swagger-ui .nt6-l{margin-top:-8rem}.swagger-ui .nt7-l{margin-top:-16rem}}.swagger-ui .collapse{border-collapse:collapse;border-spacing:0}.swagger-ui .striped--light-silver:nth-child(odd){background-color:#aaa}.swagger-ui .striped--moon-gray:nth-child(odd){background-color:#ccc}.swagger-ui .striped--light-gray:nth-child(odd){background-color:#eee}.swagger-ui .striped--near-white:nth-child(odd){background-color:#f4f4f4}.swagger-ui .stripe-light:nth-child(odd){background-color:hsla(0,0%,100%,.1)}.swagger-ui .stripe-dark:nth-child(odd){background-color:rgba(0,0,0,.1)}.swagger-ui .strike{text-decoration:line-through}.swagger-ui .underline{text-decoration:underline}.swagger-ui .no-underline{text-decoration:none}@media screen and (min-width:30em){.swagger-ui .strike-ns{text-decoration:line-through}.swagger-ui .underline-ns{text-decoration:underline}.swagger-ui .no-underline-ns{text-decoration:none}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .strike-m{text-decoration:line-through}.swagger-ui .underline-m{text-decoration:underline}.swagger-ui .no-underline-m{text-decoration:none}}@media screen and (min-width:60em){.swagger-ui .strike-l{text-decoration:line-through}.swagger-ui .underline-l{text-decoration:underline}.swagger-ui .no-underline-l{text-decoration:none}}.swagger-ui .tl{text-align:left}.swagger-ui .tr{text-align:right}.swagger-ui .tc{text-align:center}.swagger-ui .tj{text-align:justify}@media screen and (min-width:30em){.swagger-ui .tl-ns{text-align:left}.swagger-ui .tr-ns{text-align:right}.swagger-ui .tc-ns{text-align:center}.swagger-ui .tj-ns{text-align:justify}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .tl-m{text-align:left}.swagger-ui .tr-m{text-align:right}.swagger-ui .tc-m{text-align:center}.swagger-ui .tj-m{text-align:justify}}@media screen and (min-width:60em){.swagger-ui .tl-l{text-align:left}.swagger-ui .tr-l{text-align:right}.swagger-ui .tc-l{text-align:center}.swagger-ui .tj-l{text-align:justify}}.swagger-ui .ttc{text-transform:capitalize}.swagger-ui .ttl{text-transform:lowercase}.swagger-ui .ttu{text-transform:uppercase}.swagger-ui .ttn{text-transform:none}@media screen and (min-width:30em){.swagger-ui .ttc-ns{text-transform:capitalize}.swagger-ui .ttl-ns{text-transform:lowercase}.swagger-ui .ttu-ns{text-transform:uppercase}.swagger-ui .ttn-ns{text-transform:none}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .ttc-m{text-transform:capitalize}.swagger-ui .ttl-m{text-transform:lowercase}.swagger-ui .ttu-m{text-transform:uppercase}.swagger-ui .ttn-m{text-transform:none}}@media screen and (min-width:60em){.swagger-ui .ttc-l{text-transform:capitalize}.swagger-ui .ttl-l{text-transform:lowercase}.swagger-ui .ttu-l{text-transform:uppercase}.swagger-ui .ttn-l{text-transform:none}}.swagger-ui .f-6,.swagger-ui .f-headline{font-size:6rem}.swagger-ui .f-5,.swagger-ui .f-subheadline{font-size:5rem}.swagger-ui .f1{font-size:3rem}.swagger-ui .f2{font-size:2.25rem}.swagger-ui .f3{font-size:1.5rem}.swagger-ui .f4{font-size:1.25rem}.swagger-ui .f5{font-size:1rem}.swagger-ui .f6{font-size:.875rem}.swagger-ui .f7{font-size:.75rem}@media screen and (min-width:30em){.swagger-ui .f-6-ns,.swagger-ui .f-headline-ns{font-size:6rem}.swagger-ui .f-5-ns,.swagger-ui .f-subheadline-ns{font-size:5rem}.swagger-ui .f1-ns{font-size:3rem}.swagger-ui .f2-ns{font-size:2.25rem}.swagger-ui .f3-ns{font-size:1.5rem}.swagger-ui .f4-ns{font-size:1.25rem}.swagger-ui .f5-ns{font-size:1rem}.swagger-ui .f6-ns{font-size:.875rem}.swagger-ui .f7-ns{font-size:.75rem}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .f-6-m,.swagger-ui .f-headline-m{font-size:6rem}.swagger-ui .f-5-m,.swagger-ui .f-subheadline-m{font-size:5rem}.swagger-ui .f1-m{font-size:3rem}.swagger-ui .f2-m{font-size:2.25rem}.swagger-ui .f3-m{font-size:1.5rem}.swagger-ui .f4-m{font-size:1.25rem}.swagger-ui .f5-m{font-size:1rem}.swagger-ui .f6-m{font-size:.875rem}.swagger-ui .f7-m{font-size:.75rem}}@media screen and (min-width:60em){.swagger-ui .f-6-l,.swagger-ui .f-headline-l{font-size:6rem}.swagger-ui .f-5-l,.swagger-ui .f-subheadline-l{font-size:5rem}.swagger-ui .f1-l{font-size:3rem}.swagger-ui .f2-l{font-size:2.25rem}.swagger-ui .f3-l{font-size:1.5rem}.swagger-ui .f4-l{font-size:1.25rem}.swagger-ui .f5-l{font-size:1rem}.swagger-ui .f6-l{font-size:.875rem}.swagger-ui .f7-l{font-size:.75rem}}.swagger-ui .measure{max-width:30em}.swagger-ui .measure-wide{max-width:34em}.swagger-ui .measure-narrow{max-width:20em}.swagger-ui .indent{margin-bottom:0;margin-top:0;text-indent:1em}.swagger-ui .small-caps{-webkit-font-feature-settings:"smcp";font-feature-settings:"smcp";font-variant:small-caps}.swagger-ui .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media screen and (min-width:30em){.swagger-ui .measure-ns{max-width:30em}.swagger-ui .measure-wide-ns{max-width:34em}.swagger-ui .measure-narrow-ns{max-width:20em}.swagger-ui .indent-ns{margin-bottom:0;margin-top:0;text-indent:1em}.swagger-ui .small-caps-ns{-webkit-font-feature-settings:"smcp";font-feature-settings:"smcp";font-variant:small-caps}.swagger-ui .truncate-ns{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .measure-m{max-width:30em}.swagger-ui .measure-wide-m{max-width:34em}.swagger-ui .measure-narrow-m{max-width:20em}.swagger-ui .indent-m{margin-bottom:0;margin-top:0;text-indent:1em}.swagger-ui .small-caps-m{-webkit-font-feature-settings:"smcp";font-feature-settings:"smcp";font-variant:small-caps}.swagger-ui .truncate-m{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media screen and (min-width:60em){.swagger-ui .measure-l{max-width:30em}.swagger-ui .measure-wide-l{max-width:34em}.swagger-ui .measure-narrow-l{max-width:20em}.swagger-ui .indent-l{margin-bottom:0;margin-top:0;text-indent:1em}.swagger-ui .small-caps-l{-webkit-font-feature-settings:"smcp";font-feature-settings:"smcp";font-variant:small-caps}.swagger-ui .truncate-l{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.swagger-ui .overflow-container{overflow-y:scroll}.swagger-ui .center{margin-left:auto;margin-right:auto}.swagger-ui .mr-auto{margin-right:auto}.swagger-ui .ml-auto{margin-left:auto}@media screen and (min-width:30em){.swagger-ui .center-ns{margin-left:auto;margin-right:auto}.swagger-ui .mr-auto-ns{margin-right:auto}.swagger-ui .ml-auto-ns{margin-left:auto}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .center-m{margin-left:auto;margin-right:auto}.swagger-ui .mr-auto-m{margin-right:auto}.swagger-ui .ml-auto-m{margin-left:auto}}@media screen and (min-width:60em){.swagger-ui .center-l{margin-left:auto;margin-right:auto}.swagger-ui .mr-auto-l{margin-right:auto}.swagger-ui .ml-auto-l{margin-left:auto}}.swagger-ui .clip{clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);position:fixed!important;_position:absolute!important}@media screen and (min-width:30em){.swagger-ui .clip-ns{clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);position:fixed!important;_position:absolute!important}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .clip-m{clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);position:fixed!important;_position:absolute!important}}@media screen and (min-width:60em){.swagger-ui .clip-l{clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);position:fixed!important;_position:absolute!important}}.swagger-ui .ws-normal{white-space:normal}.swagger-ui .nowrap{white-space:nowrap}.swagger-ui .pre{white-space:pre}@media screen and (min-width:30em){.swagger-ui .ws-normal-ns{white-space:normal}.swagger-ui .nowrap-ns{white-space:nowrap}.swagger-ui .pre-ns{white-space:pre}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .ws-normal-m{white-space:normal}.swagger-ui .nowrap-m{white-space:nowrap}.swagger-ui .pre-m{white-space:pre}}@media screen and (min-width:60em){.swagger-ui .ws-normal-l{white-space:normal}.swagger-ui .nowrap-l{white-space:nowrap}.swagger-ui .pre-l{white-space:pre}}.swagger-ui .v-base{vertical-align:baseline}.swagger-ui .v-mid{vertical-align:middle}.swagger-ui .v-top{vertical-align:top}.swagger-ui .v-btm{vertical-align:bottom}@media screen and (min-width:30em){.swagger-ui .v-base-ns{vertical-align:baseline}.swagger-ui .v-mid-ns{vertical-align:middle}.swagger-ui .v-top-ns{vertical-align:top}.swagger-ui .v-btm-ns{vertical-align:bottom}}@media screen and (min-width:30em) and (max-width:60em){.swagger-ui .v-base-m{vertical-align:baseline}.swagger-ui .v-mid-m{vertical-align:middle}.swagger-ui .v-top-m{vertical-align:top}.swagger-ui .v-btm-m{vertical-align:bottom}}@media screen and (min-width:60em){.swagger-ui .v-base-l{vertical-align:baseline}.swagger-ui .v-mid-l{vertical-align:middle}.swagger-ui .v-top-l{vertical-align:top}.swagger-ui .v-btm-l{vertical-align:bottom}}.swagger-ui .dim{opacity:1}.swagger-ui .dim,.swagger-ui .dim:focus,.swagger-ui .dim:hover{-webkit-transition:opacity .15s ease-in;transition:opacity .15s ease-in}.swagger-ui .dim:focus,.swagger-ui .dim:hover{opacity:.5}.swagger-ui .dim:active{opacity:.8;-webkit-transition:opacity .15s ease-out;transition:opacity .15s ease-out}.swagger-ui .glow,.swagger-ui .glow:focus,.swagger-ui .glow:hover{-webkit-transition:opacity .15s ease-in;transition:opacity .15s ease-in}.swagger-ui .glow:focus,.swagger-ui .glow:hover{opacity:1}.swagger-ui .hide-child .child{opacity:0;-webkit-transition:opacity .15s ease-in;transition:opacity .15s ease-in}.swagger-ui .hide-child:active .child,.swagger-ui .hide-child:focus .child,.swagger-ui .hide-child:hover .child{opacity:1;-webkit-transition:opacity .15s ease-in;transition:opacity .15s ease-in}.swagger-ui .underline-hover:focus,.swagger-ui .underline-hover:hover{text-decoration:underline}.swagger-ui .grow{-moz-osx-font-smoothing:grayscale;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-transition:-webkit-transform .25s ease-out;transition:-webkit-transform .25s ease-out;transition:transform .25s ease-out;transition:transform .25s ease-out,-webkit-transform .25s ease-out}.swagger-ui .grow:focus,.swagger-ui .grow:hover{-webkit-transform:scale(1.05);transform:scale(1.05)}.swagger-ui .grow:active{-webkit-transform:scale(.9);transform:scale(.9)}.swagger-ui .grow-large{-moz-osx-font-smoothing:grayscale;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-transition:-webkit-transform .25s ease-in-out;transition:-webkit-transform .25s ease-in-out;transition:transform .25s ease-in-out;transition:transform .25s ease-in-out,-webkit-transform .25s ease-in-out}.swagger-ui .grow-large:focus,.swagger-ui .grow-large:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}.swagger-ui .grow-large:active{-webkit-transform:scale(.95);transform:scale(.95)}.swagger-ui .pointer:hover{cursor:pointer}.swagger-ui .shadow-hover{cursor:pointer;position:relative;-webkit-transition:all .5s cubic-bezier(.165,.84,.44,1);transition:all .5s cubic-bezier(.165,.84,.44,1)}.swagger-ui .shadow-hover::after{border-radius:inherit;-webkit-box-shadow:0 0 16px 2px rgba(0,0,0,.2);box-shadow:0 0 16px 2px rgba(0,0,0,.2);content:"";height:100%;left:0;opacity:0;position:absolute;top:0;-webkit-transition:opacity .5s cubic-bezier(.165,.84,.44,1);transition:opacity .5s cubic-bezier(.165,.84,.44,1);width:100%;z-index:-1}.swagger-ui .shadow-hover:focus::after,.swagger-ui .shadow-hover:hover::after{opacity:1}.swagger-ui .bg-animate,.swagger-ui .bg-animate:focus,.swagger-ui .bg-animate:hover{-webkit-transition:background-color .15s ease-in-out;transition:background-color .15s ease-in-out}.swagger-ui .z-0{z-index:0}.swagger-ui .z-1{z-index:1}.swagger-ui .z-2{z-index:2}.swagger-ui .z-3{z-index:3}.swagger-ui .z-4{z-index:4}.swagger-ui .z-5{z-index:5}.swagger-ui .z-999{z-index:999}.swagger-ui .z-9999{z-index:9999}.swagger-ui .z-max{z-index:2147483647}.swagger-ui .z-inherit{z-index:inherit}.swagger-ui .z-initial{z-index:auto}.swagger-ui .z-unset{z-index:unset}.swagger-ui .nested-copy-line-height ol,.swagger-ui .nested-copy-line-height p,.swagger-ui .nested-copy-line-height ul{line-height:1.5}.swagger-ui .nested-headline-line-height h1,.swagger-ui .nested-headline-line-height h2,.swagger-ui .nested-headline-line-height h3,.swagger-ui .nested-headline-line-height h4,.swagger-ui .nested-headline-line-height h5,.swagger-ui .nested-headline-line-height h6{line-height:1.25}.swagger-ui .nested-list-reset ol,.swagger-ui .nested-list-reset ul{list-style-type:none;margin-left:0;padding-left:0}.swagger-ui .nested-copy-indent p+p{margin-bottom:0;margin-top:0;text-indent:.1em}.swagger-ui .nested-copy-seperator p+p{margin-top:1.5em}.swagger-ui .nested-img img{display:block;max-width:100%;width:100%}.swagger-ui .nested-links a{color:#357edd;-webkit-transition:color .15s ease-in;transition:color .15s ease-in}.swagger-ui .nested-links a:focus,.swagger-ui .nested-links a:hover{color:#96ccff;-webkit-transition:color .15s ease-in;transition:color .15s ease-in}.swagger-ui .wrapper{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 auto;max-width:1460px;padding:0 20px;width:100%}.swagger-ui .opblock-tag-section{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.swagger-ui .try-out.btn-group{padding:0}.swagger-ui .opblock-tag{-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-bottom:1px solid rgba(59,65,81,.3);cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;padding:10px 20px 10px 10px;-webkit-transition:all .2s;transition:all .2s}.swagger-ui .opblock-tag:hover{background:rgba(0,0,0,.02)}.swagger-ui .opblock-tag{color:#3b4151;font-family:sans-serif;font-size:24px;margin:0 0 5px}.swagger-ui .opblock-tag.no-desc span{-webkit-box-flex:1;-ms-flex:1;flex:1}.swagger-ui .opblock-tag svg{-webkit-transition:all .4s;transition:all .4s}.swagger-ui .opblock-tag small{color:#3b4151;-webkit-box-flex:1;-ms-flex:1;flex:1;font-family:sans-serif;font-size:14px;font-weight:400;padding:0 10px}.swagger-ui .parameter__type{color:#3b4151;font-family:monospace;font-size:12px;font-weight:600;padding:5px 0}.swagger-ui .parameter-controls{margin-top:.75em}.swagger-ui .examples__title{display:block;font-size:1.1em;font-weight:700;margin-bottom:.75em}.swagger-ui .examples__section{margin-top:1.5em}.swagger-ui .examples__section-header{font-size:.9rem;font-weight:700;margin-bottom:.5rem}.swagger-ui .examples-select{display:inline-block;margin-bottom:.75em}.swagger-ui .examples-select .examples-select-element{width:100%}.swagger-ui .examples-select__section-label{font-size:.9rem;font-weight:700;margin-right:.5rem}.swagger-ui .example__section{margin-top:1.5em}.swagger-ui .example__section-header{font-size:.9rem;font-weight:700;margin-bottom:.5rem}.swagger-ui .view-line-link{cursor:pointer;margin:0 5px;position:relative;top:3px;-webkit-transition:all .5s;transition:all .5s;width:20px}.swagger-ui .opblock{border:1px solid #000;border-radius:4px;-webkit-box-shadow:0 0 3px rgba(0,0,0,.19);box-shadow:0 0 3px rgba(0,0,0,.19);margin:0 0 15px}.swagger-ui .opblock .tab-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1}.swagger-ui .opblock .tab-header .tab-item{cursor:pointer;padding:0 40px}.swagger-ui .opblock .tab-header .tab-item:first-of-type{padding:0 40px 0 0}.swagger-ui .opblock .tab-header .tab-item.active h4 span{position:relative}.swagger-ui .opblock .tab-header .tab-item.active h4 span::after{background:grey;bottom:-15px;content:"";height:4px;left:50%;position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:120%}.swagger-ui .opblock.is-open .opblock-summary{border-bottom:1px solid #000}.swagger-ui .opblock .opblock-section-header{background:hsla(0,0%,100%,.8);-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1);min-height:50px;padding:8px 20px}.swagger-ui .opblock .opblock-section-header,.swagger-ui .opblock .opblock-section-header>label{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.swagger-ui .opblock .opblock-section-header>label{color:#3b4151;font-family:sans-serif;font-size:12px;font-weight:700;margin:0 0 0 auto}.swagger-ui .opblock .opblock-section-header>label>span{padding:0 10px 0 0}.swagger-ui .opblock .opblock-section-header h4{color:#3b4151;-webkit-box-flex:1;-ms-flex:1;flex:1;font-family:sans-serif;font-size:14px;margin:0}.swagger-ui .opblock .opblock-summary-method{background:#000;border-radius:3px;color:#fff;font-family:sans-serif;font-size:14px;font-weight:700;min-width:80px;padding:6px 15px;text-align:center;text-shadow:0 1px 0 rgba(0,0,0,.1)}.swagger-ui .opblock .opblock-summary-operation-id,.swagger-ui .opblock .opblock-summary-path,.swagger-ui .opblock .opblock-summary-path__deprecated{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#3b4151;display:-webkit-box;display:-ms-flexbox;display:flex;font-family:monospace;font-size:16px;font-weight:600;padding:0 10px;word-break:break-word}@media (max-width:768px){.swagger-ui .opblock .opblock-summary-operation-id,.swagger-ui .opblock .opblock-summary-path,.swagger-ui .opblock .opblock-summary-path__deprecated{font-size:12px}}.swagger-ui .opblock .opblock-summary-path{-ms-flex-negative:0;flex-shrink:0;max-width:calc(100% - 110px - 15rem)}.swagger-ui .opblock .opblock-summary-path__deprecated{text-decoration:line-through}.swagger-ui .opblock .opblock-summary-operation-id{font-size:14px}.swagger-ui .opblock .opblock-summary-description{color:#3b4151;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;font-family:sans-serif;font-size:13px;word-break:break-word}.swagger-ui .opblock .opblock-summary{-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;padding:5px}.swagger-ui .opblock .opblock-summary .view-line-link{cursor:pointer;margin:0;position:relative;top:2px;-webkit-transition:all .5s;transition:all .5s;width:0}.swagger-ui .opblock .opblock-summary:hover .view-line-link{margin:0 5px;width:18px}.swagger-ui .opblock.opblock-post{background:rgba(73,204,144,.1);border-color:#49cc90}.swagger-ui .opblock.opblock-post .opblock-summary-method{background:#49cc90}.swagger-ui .opblock.opblock-post .opblock-summary{border-color:#49cc90}.swagger-ui .opblock.opblock-post .tab-header .tab-item.active h4 span::after{background:#49cc90}.swagger-ui .opblock.opblock-put{background:rgba(252,161,48,.1);border-color:#fca130}.swagger-ui .opblock.opblock-put .opblock-summary-method{background:#fca130}.swagger-ui .opblock.opblock-put .opblock-summary{border-color:#fca130}.swagger-ui .opblock.opblock-put .tab-header .tab-item.active h4 span::after{background:#fca130}.swagger-ui .opblock.opblock-delete{background:rgba(249,62,62,.1);border-color:#f93e3e}.swagger-ui .opblock.opblock-delete .opblock-summary-method{background:#f93e3e}.swagger-ui .opblock.opblock-delete .opblock-summary{border-color:#f93e3e}.swagger-ui .opblock.opblock-delete .tab-header .tab-item.active h4 span::after{background:#f93e3e}.swagger-ui .opblock.opblock-get{background:rgba(97,175,254,.1);border-color:#61affe}.swagger-ui .opblock.opblock-get .opblock-summary-method{background:#61affe}.swagger-ui .opblock.opblock-get .opblock-summary{border-color:#61affe}.swagger-ui .opblock.opblock-get .tab-header .tab-item.active h4 span::after{background:#61affe}.swagger-ui .opblock.opblock-patch{background:rgba(80,227,194,.1);border-color:#50e3c2}.swagger-ui .opblock.opblock-patch .opblock-summary-method{background:#50e3c2}.swagger-ui .opblock.opblock-patch .opblock-summary{border-color:#50e3c2}.swagger-ui .opblock.opblock-patch .tab-header .tab-item.active h4 span::after{background:#50e3c2}.swagger-ui .opblock.opblock-head{background:rgba(144,18,254,.1);border-color:#9012fe}.swagger-ui .opblock.opblock-head .opblock-summary-method{background:#9012fe}.swagger-ui .opblock.opblock-head .opblock-summary{border-color:#9012fe}.swagger-ui .opblock.opblock-head .tab-header .tab-item.active h4 span::after{background:#9012fe}.swagger-ui .opblock.opblock-options{background:rgba(13,90,167,.1);border-color:#0d5aa7}.swagger-ui .opblock.opblock-options .opblock-summary-method{background:#0d5aa7}.swagger-ui .opblock.opblock-options .opblock-summary{border-color:#0d5aa7}.swagger-ui .opblock.opblock-options .tab-header .tab-item.active h4 span::after{background:#0d5aa7}.swagger-ui .opblock.opblock-deprecated{background:hsla(0,0%,92.2%,.1);border-color:#ebebeb;opacity:.6}.swagger-ui .opblock.opblock-deprecated .opblock-summary-method{background:#ebebeb}.swagger-ui .opblock.opblock-deprecated .opblock-summary{border-color:#ebebeb}.swagger-ui .opblock.opblock-deprecated .tab-header .tab-item.active h4 span::after{background:#ebebeb}.swagger-ui .opblock .opblock-schemes{padding:8px 20px}.swagger-ui .opblock .opblock-schemes .schemes-title{padding:0 10px 0 0}.swagger-ui .filter .operation-filter-input{border:2px solid #d8dde7;margin:20px 0;padding:10px;width:100%}.swagger-ui .download-url-wrapper .failed,.swagger-ui .filter .failed{color:red}.swagger-ui .download-url-wrapper .loading,.swagger-ui .filter .loading{color:#aaa}.swagger-ui .model-example{margin-top:1em}.swagger-ui .tab{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;padding:0}.swagger-ui .tab li{color:#3b4151;cursor:pointer;font-family:sans-serif;font-size:12px;min-width:60px;padding:0}.swagger-ui .tab li:first-of-type{padding-left:0;padding-right:12px;position:relative}.swagger-ui .tab li:first-of-type::after{background:rgba(0,0,0,.2);content:"";height:100%;position:absolute;right:6px;top:0;width:1px}.swagger-ui .tab li.active{font-weight:700}.swagger-ui .opblock-description-wrapper,.swagger-ui .opblock-external-docs-wrapper,.swagger-ui .opblock-title_normal{color:#3b4151;font-family:sans-serif;font-size:12px;margin:0 0 5px;padding:15px 20px}.swagger-ui .opblock-description-wrapper h4,.swagger-ui .opblock-external-docs-wrapper h4,.swagger-ui .opblock-title_normal h4{color:#3b4151;font-family:sans-serif;font-size:12px;margin:0 0 5px}.swagger-ui .opblock-description-wrapper p,.swagger-ui .opblock-external-docs-wrapper p,.swagger-ui .opblock-title_normal p{color:#3b4151;font-family:sans-serif;font-size:14px;margin:0}.swagger-ui .opblock-external-docs-wrapper h4{padding-left:0}.swagger-ui .execute-wrapper{padding:20px;text-align:right}.swagger-ui .execute-wrapper .btn{padding:8px 40px;width:100%}.swagger-ui .body-param-options{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.swagger-ui .body-param-options .body-param-edit{padding:10px 0}.swagger-ui .body-param-options label{padding:8px 0}.swagger-ui .body-param-options label select{margin:3px 0 0}.swagger-ui .responses-inner{padding:20px}.swagger-ui .responses-inner h4,.swagger-ui .responses-inner h5{color:#3b4151;font-family:sans-serif;font-size:12px;margin:10px 0 5px}.swagger-ui .responses-inner .curl{white-space:normal}.swagger-ui .response-col_status{color:#3b4151;font-family:sans-serif;font-size:14px}.swagger-ui .response-col_status .response-undocumented{color:#909090;font-family:monospace;font-size:11px;font-weight:600}.swagger-ui .response-col_links{color:#3b4151;font-family:sans-serif;font-size:14px;max-width:40em;padding-left:2em}.swagger-ui .response-col_links .response-undocumented{color:#909090;font-family:monospace;font-size:11px;font-weight:600}.swagger-ui .response-col_links .operation-link{margin-bottom:1.5em}.swagger-ui .response-col_links .operation-link .description{margin-bottom:.5em}.swagger-ui .opblock-body .opblock-loading-animation{display:block;margin:3em auto}.swagger-ui .opblock-body pre.microlight{word-wrap:break-word;background:#333;border-radius:4px;color:#fff;font-family:monospace;font-size:12px;font-weight:600;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;margin:0;padding:10px;white-space:pre-wrap;word-break:break-all;word-break:break-word}.swagger-ui .opblock-body pre.microlight .headerline{display:block}.swagger-ui .highlight-code{position:relative}.swagger-ui .highlight-code>.microlight{max-height:400px;min-height:6em;overflow-y:auto}.swagger-ui .highlight-code>.microlight code{white-space:pre-wrap!important;word-break:break-all}.swagger-ui .curl-command{position:relative}.swagger-ui .download-contents{background:#7d8293;border-radius:4px;bottom:10px;color:#fff;cursor:pointer;font-family:sans-serif;font-size:14px;font-weight:600;height:30px;padding:5px;position:absolute;right:10px;text-align:center}.swagger-ui .scheme-container{background:#fff;-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.15);box-shadow:0 1px 2px 0 rgba(0,0,0,.15);margin:0 0 20px;padding:30px 0}.swagger-ui .scheme-container .schemes{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;display:-webkit-box;display:-ms-flexbox;display:flex}.swagger-ui .scheme-container .schemes>label{color:#3b4151;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;font-family:sans-serif;font-size:12px;font-weight:700;margin:-20px 15px 0 0}.swagger-ui .scheme-container .schemes>label select{min-width:130px;text-transform:uppercase}.swagger-ui .loading-container{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-top:1em;min-height:1px;padding:40px 0 60px}.swagger-ui .loading-container .loading{position:relative}.swagger-ui .loading-container .loading::after{color:#3b4151;content:"loading";font-family:sans-serif;font-size:10px;font-weight:700;left:50%;position:absolute;text-transform:uppercase;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.swagger-ui .loading-container .loading::before{-webkit-animation:rotation 1s linear infinite,opacity .5s;animation:rotation 1s linear infinite,opacity .5s;-webkit-backface-visibility:hidden;backface-visibility:hidden;border-radius:100%;border:2px solid rgba(85,85,85,.1);border-top-color:rgba(0,0,0,.6);content:"";display:block;height:60px;left:50%;margin:-30px;opacity:1;position:absolute;top:50%;width:60px}@-webkit-keyframes rotation{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes rotation{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.swagger-ui .response-controls{display:-webkit-box;display:-ms-flexbox;display:flex;padding-top:1em}.swagger-ui .response-control-media-type{margin-right:1em}.swagger-ui .response-control-media-type--accept-controller select{border-color:green}.swagger-ui .response-control-media-type__accept-message{color:green;font-size:.7em}.swagger-ui .response-control-examples__title,.swagger-ui .response-control-media-type__title{display:block;font-size:.7em;margin-bottom:.2em}@-webkit-keyframes blinker{50%{opacity:0}}@keyframes blinker{50%{opacity:0}}.swagger-ui .hidden{display:none}.swagger-ui .no-margin{border:none;height:auto;margin:0;padding:0}.swagger-ui .float-right{float:right}.swagger-ui img.full-width{width:100%}.swagger-ui .svg-assets{height:0;position:absolute;width:0}.swagger-ui section h3{color:#3b4151;font-family:sans-serif}.swagger-ui a.nostyle{display:inline}.swagger-ui a.nostyle,.swagger-ui a.nostyle:visited{color:inherit;cursor:pointer;text-decoration:inherit}.swagger-ui .fallback{color:#aaa;padding:1em}.swagger-ui .version-pragma{height:100%;padding:5em 0}.swagger-ui .version-pragma__message{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:1.2em;height:100%;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;line-height:1.5em;padding:0 .6em;text-align:center}.swagger-ui .version-pragma__message>div{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:55ch}.swagger-ui .version-pragma__message code{background-color:#dedede;padding:4px 4px 2px;white-space:pre}.swagger-ui .opblock-link{font-weight:400}.swagger-ui .opblock-link.shown{font-weight:700}.swagger-ui span.token-string{color:#555}.swagger-ui span.token-not-formatted{color:#555;font-weight:700}.swagger-ui .btn{background:transparent;border:2px solid grey;border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1);color:#3b4151;font-family:sans-serif;font-size:14px;font-weight:700;padding:5px 23px;-webkit-transition:all .3s;transition:all .3s}.swagger-ui .btn.btn-sm{font-size:12px;padding:4px 23px}.swagger-ui .btn[disabled]{cursor:not-allowed;opacity:.3}.swagger-ui .btn:hover{-webkit-box-shadow:0 0 5px rgba(0,0,0,.3);box-shadow:0 0 5px rgba(0,0,0,.3)}.swagger-ui .btn.cancel{background-color:transparent;border-color:#ff6060;color:#ff6060;font-family:sans-serif}.swagger-ui .btn.authorize{background-color:transparent;border-color:#49cc90;color:#49cc90;display:inline;line-height:1}.swagger-ui .btn.authorize span{float:left;padding:4px 20px 0 0}.swagger-ui .btn.authorize svg{fill:#49cc90}.swagger-ui .btn.execute{background-color:#4990e2;border-color:#4990e2;color:#fff}.swagger-ui .btn-group{display:-webkit-box;display:-ms-flexbox;display:flex;padding:30px}.swagger-ui .btn-group .btn{-webkit-box-flex:1;-ms-flex:1;flex:1}.swagger-ui .btn-group .btn:first-child{border-radius:4px 0 0 4px}.swagger-ui .btn-group .btn:last-child{border-radius:0 4px 4px 0}.swagger-ui .authorization__btn{background:none;border:none;padding:0 10px}.swagger-ui .authorization__btn.locked{opacity:1}.swagger-ui .authorization__btn.unlocked{opacity:.4}.swagger-ui .model-box-control,.swagger-ui .models-control,.swagger-ui .opblock-summary-control{all:inherit;border-bottom:0;cursor:pointer;-webkit-box-flex:1;-ms-flex:1;flex:1;padding:0}.swagger-ui .model-box-control:focus,.swagger-ui .models-control:focus,.swagger-ui .opblock-summary-control:focus{outline:auto}.swagger-ui .expand-methods,.swagger-ui .expand-operation{background:none;border:none}.swagger-ui .expand-methods svg,.swagger-ui .expand-operation svg{height:20px;width:20px}.swagger-ui .expand-methods{padding:0 10px}.swagger-ui .expand-methods:hover svg{fill:#404040}.swagger-ui .expand-methods svg{fill:#707070;-webkit-transition:all .3s;transition:all .3s}.swagger-ui button{cursor:pointer}.swagger-ui button.invalid{-webkit-animation:shake .4s 1;animation:shake .4s 1;background:#feebeb;border-color:#f93e3e}.swagger-ui .copy-to-clipboard{background:#7d8293;border:none;border-radius:4px;bottom:10px;height:30px;position:absolute;right:100px;width:30px}.swagger-ui .copy-to-clipboard button{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' aria-hidden='true'%3E%3Cpath fill='%23fff' fill-rule='evenodd' d='M2 13h4v1H2v-1zm5-6H2v1h5V7zm2 3V8l-3 3 3 3v-2h5v-2H9zM4.5 9H2v1h2.5V9zM2 12h2.5v-1H2v1zm9 1h1v2c-.02.28-.11.52-.3.7-.19.18-.42.28-.7.3H1c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1h3c0-1.11.89-2 2-2 1.11 0 2 .89 2 2h3c.55 0 1 .45 1 1v5h-1V6H1v9h10v-2zM2 5h8c0-.55-.45-1-1-1H8c-.55 0-1-.45-1-1s-.45-1-1-1-1 .45-1 1-.45 1-1 1H3c-.55 0-1 .45-1 1z'/%3E%3C/svg%3E") 50% no-repeat;border:none;height:25px;padding-left:25px}.swagger-ui .curl-command .copy-to-clipboard{bottom:5px;height:20px;right:10px;width:20px}.swagger-ui .curl-command .copy-to-clipboard button{height:18px;padding-left:18px}.swagger-ui select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#f7f7f7 url('data:image/svg+xml;charset=utf-8,') right 10px center no-repeat;background-size:20px;border:2px solid #41444e;border-radius:4px;-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.25);box-shadow:0 1px 2px 0 rgba(0,0,0,.25);color:#3b4151;font-family:sans-serif;font-size:14px;font-weight:700;padding:5px 40px 5px 10px}.swagger-ui select[multiple]{background:#f7f7f7;margin:5px 0;padding:5px}.swagger-ui select.invalid{-webkit-animation:shake .4s 1;animation:shake .4s 1;background:#feebeb;border-color:#f93e3e}.swagger-ui .opblock-body select{min-width:230px}@media (max-width:768px){.swagger-ui .opblock-body select{min-width:180px}}.swagger-ui label{color:#3b4151;font-family:sans-serif;font-size:12px;font-weight:700;margin:0 0 5px}@media (max-width:768px){.swagger-ui input[type=email],.swagger-ui input[type=file],.swagger-ui input[type=password],.swagger-ui input[type=search],.swagger-ui input[type=text]{max-width:175px}}.swagger-ui input[type=email],.swagger-ui input[type=file],.swagger-ui input[type=password],.swagger-ui input[type=search],.swagger-ui input[type=text],.swagger-ui textarea{background:#fff;border:1px solid #d9d9d9;border-radius:4px;margin:5px 0;min-width:100px;padding:8px 10px}.swagger-ui input[type=email].invalid,.swagger-ui input[type=file].invalid,.swagger-ui input[type=password].invalid,.swagger-ui input[type=search].invalid,.swagger-ui input[type=text].invalid,.swagger-ui textarea.invalid{-webkit-animation:shake .4s 1;animation:shake .4s 1;background:#feebeb;border-color:#f93e3e}.swagger-ui input[disabled],.swagger-ui select[disabled],.swagger-ui textarea[disabled]{background-color:#fafafa;color:#888;cursor:not-allowed}.swagger-ui select[disabled]{border-color:#888}.swagger-ui textarea[disabled]{background-color:#41444e;color:#fff}@-webkit-keyframes shake{10%,90%{-webkit-transform:translate3d(-1px,0,0);transform:translate3d(-1px,0,0)}20%,80%{-webkit-transform:translate3d(2px,0,0);transform:translate3d(2px,0,0)}30%,50%,70%{-webkit-transform:translate3d(-4px,0,0);transform:translate3d(-4px,0,0)}40%,60%{-webkit-transform:translate3d(4px,0,0);transform:translate3d(4px,0,0)}}@keyframes shake{10%,90%{-webkit-transform:translate3d(-1px,0,0);transform:translate3d(-1px,0,0)}20%,80%{-webkit-transform:translate3d(2px,0,0);transform:translate3d(2px,0,0)}30%,50%,70%{-webkit-transform:translate3d(-4px,0,0);transform:translate3d(-4px,0,0)}40%,60%{-webkit-transform:translate3d(4px,0,0);transform:translate3d(4px,0,0)}}.swagger-ui textarea{background:hsla(0,0%,100%,.8);border:none;border-radius:4px;color:#3b4151;font-family:monospace;font-size:12px;font-weight:600;min-height:280px;outline:none;padding:10px;width:100%}.swagger-ui textarea:focus{border:2px solid #61affe}.swagger-ui textarea.curl{background:#41444e;border-radius:4px;color:#fff;font-family:monospace;font-size:12px;font-weight:600;margin:0;min-height:100px;padding:10px;resize:none}.swagger-ui .checkbox{color:#303030;padding:5px 0 10px;-webkit-transition:opacity .5s;transition:opacity .5s}.swagger-ui .checkbox label{display:-webkit-box;display:-ms-flexbox;display:flex}.swagger-ui .checkbox p{color:#3b4151;font-family:monospace;font-style:italic;font-weight:400!important;font-weight:600;margin:0!important}.swagger-ui .checkbox input[type=checkbox]{display:none}.swagger-ui .checkbox input[type=checkbox]+label>.item{background:#e8e8e8;border-radius:1px;-webkit-box-shadow:0 0 0 2px #e8e8e8;box-shadow:0 0 0 2px #e8e8e8;cursor:pointer;display:inline-block;-webkit-box-flex:0;-ms-flex:none;flex:none;height:16px;margin:0 8px 0 0;padding:5px;position:relative;top:3px;width:16px}.swagger-ui .checkbox input[type=checkbox]+label>.item:active{-webkit-transform:scale(.9);transform:scale(.9)}.swagger-ui .checkbox input[type=checkbox]:checked+label>.item{background:#e8e8e8 url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='8' viewBox='3 7 10 8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%2341474E' fill-rule='evenodd' d='M6.333 15L3 11.667l1.333-1.334 2 2L11.667 7 13 8.333z'/%3E%3C/svg%3E") 50% no-repeat}.swagger-ui .dialog-ux{bottom:0;left:0;position:fixed;right:0;top:0;z-index:9999}.swagger-ui .dialog-ux .backdrop-ux{background:rgba(0,0,0,.8);bottom:0;left:0;position:fixed;right:0;top:0}.swagger-ui .dialog-ux .modal-ux{background:#fff;border:1px solid #ebebeb;border-radius:4px;-webkit-box-shadow:0 10px 30px 0 rgba(0,0,0,.2);box-shadow:0 10px 30px 0 rgba(0,0,0,.2);left:50%;max-width:650px;min-width:300px;position:absolute;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:100%;z-index:9999}.swagger-ui .dialog-ux .modal-ux-content{max-height:540px;overflow-y:auto;padding:20px}.swagger-ui .dialog-ux .modal-ux-content p{color:#41444e;color:#3b4151;font-family:sans-serif;font-size:12px;margin:0 0 5px}.swagger-ui .dialog-ux .modal-ux-content h4{color:#3b4151;font-family:sans-serif;font-size:18px;font-weight:600;margin:15px 0 0}.swagger-ui .dialog-ux .modal-ux-header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-bottom:1px solid #ebebeb;display:-webkit-box;display:-ms-flexbox;display:flex;padding:12px 0}.swagger-ui .dialog-ux .modal-ux-header .close-modal{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;padding:0 10px}.swagger-ui .dialog-ux .modal-ux-header h3{color:#3b4151;-webkit-box-flex:1;-ms-flex:1;flex:1;font-family:sans-serif;font-size:20px;font-weight:600;margin:0;padding:0 20px}.swagger-ui .model{color:#3b4151;font-family:monospace;font-size:12px;font-weight:300;font-weight:600}.swagger-ui .model .deprecated span,.swagger-ui .model .deprecated td{color:#a0a0a0!important}.swagger-ui .model .deprecated>td:first-of-type{text-decoration:line-through}.swagger-ui .model-toggle{cursor:pointer;display:inline-block;font-size:10px;margin:auto .3em;position:relative;top:6px;-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transition:-webkit-transform .15s ease-in;transition:-webkit-transform .15s ease-in;transition:transform .15s ease-in;transition:transform .15s ease-in,-webkit-transform .15s ease-in}.swagger-ui .model-toggle.collapsed{-webkit-transform:rotate(0deg);transform:rotate(0deg)}.swagger-ui .model-toggle::after{background:url('data:image/svg+xml;charset=utf-8,') 50% no-repeat;background-size:100%;content:"";display:block;height:20px;width:20px}.swagger-ui .model-jump-to-path{cursor:pointer;position:relative}.swagger-ui .model-jump-to-path .view-line-link{cursor:pointer;position:absolute;top:-.4em}.swagger-ui .model-title{position:relative}.swagger-ui .model-title:hover .model-hint{visibility:visible}.swagger-ui .model-hint{background:rgba(0,0,0,.7);border-radius:4px;color:#ebebeb;padding:.1em .5em;position:absolute;top:-1.8em;visibility:hidden;white-space:nowrap}.swagger-ui .model p{margin:0 0 1em}.swagger-ui .model .property{color:#999;font-style:italic}.swagger-ui .model .property.primitive{color:#6b6b6b}.swagger-ui table.model tr.description{color:#666;font-weight:400}.swagger-ui table.model tr.description td:first-child,.swagger-ui table.model tr.property-row.required td:first-child{font-weight:700}.swagger-ui table.model tr.property-row td{vertical-align:top}.swagger-ui table.model tr.property-row td:first-child{padding-right:.2em}.swagger-ui table.model tr.property-row .star{color:red}.swagger-ui table.model tr.extension{color:#777}.swagger-ui table.model tr.extension td:last-child{vertical-align:top}.swagger-ui section.models{border:1px solid rgba(59,65,81,.3);border-radius:4px;margin:30px 0}.swagger-ui section.models .pointer{cursor:pointer}.swagger-ui section.models.is-open{padding:0 0 20px}.swagger-ui section.models.is-open h4{border-bottom:1px solid rgba(59,65,81,.3);margin:0 0 5px}.swagger-ui section.models h4{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#606060;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;font-family:sans-serif;font-size:16px;margin:0;padding:10px 20px 10px 10px;-webkit-transition:all .2s;transition:all .2s}.swagger-ui section.models h4 svg{-webkit-transition:all .4s;transition:all .4s}.swagger-ui section.models h4 span{-webkit-box-flex:1;-ms-flex:1;flex:1}.swagger-ui section.models h4:hover{background:rgba(0,0,0,.02)}.swagger-ui section.models h5{color:#707070;font-family:sans-serif;font-size:16px;margin:0 0 10px}.swagger-ui section.models .model-jump-to-path{position:relative;top:5px}.swagger-ui section.models .model-container{background:rgba(0,0,0,.05);border-radius:4px;margin:0 20px 15px;position:relative;-webkit-transition:all .5s;transition:all .5s}.swagger-ui section.models .model-container:hover{background:rgba(0,0,0,.07)}.swagger-ui section.models .model-container:first-of-type{margin:20px}.swagger-ui section.models .model-container:last-of-type{margin:0 20px}.swagger-ui section.models .model-container .models-jump-to-path{opacity:.65;position:absolute;right:5px;top:8px}.swagger-ui section.models .model-box{background:none}.swagger-ui .model-box{background:rgba(0,0,0,.1);border-radius:4px;display:inline-block;padding:10px}.swagger-ui .model-box .model-jump-to-path{position:relative;top:4px}.swagger-ui .model-box.deprecated{opacity:.5}.swagger-ui .model-title{color:#505050;font-family:sans-serif;font-size:16px}.swagger-ui .model-title img{bottom:0;margin-left:1em;position:relative}.swagger-ui .model-deprecated-warning{color:#f93e3e;font-family:sans-serif;font-size:16px;font-weight:600;margin-right:1em}.swagger-ui span>span.model .brace-close{padding:0 0 0 10px}.swagger-ui .prop-name{display:inline-block;margin-right:1em}.swagger-ui .prop-type{color:#55a}.swagger-ui .prop-enum{display:block}.swagger-ui .prop-format{color:#606060}.swagger-ui .servers>label{color:#3b4151;font-family:sans-serif;font-size:12px;margin:-20px 15px 0 0}.swagger-ui .servers>label select{max-width:100%;min-width:130px}.swagger-ui .servers h4.message{padding-bottom:2em}.swagger-ui .servers table tr{width:30em}.swagger-ui .servers table td{display:inline-block;max-width:15em;padding-bottom:10px;padding-top:10px;vertical-align:middle}.swagger-ui .servers table td:first-of-type{padding-right:1em}.swagger-ui .servers table td input{height:100%;width:100%}.swagger-ui .servers .computed-url{margin:2em 0}.swagger-ui .servers .computed-url code{display:inline-block;font-size:16px;margin:0 1em;padding:4px}.swagger-ui .servers-title{font-size:12px;font-weight:700}.swagger-ui .operation-servers h4.message{margin-bottom:2em}.swagger-ui table{border-collapse:collapse;padding:0 10px;width:100%}.swagger-ui table.model tbody tr td{padding:0;vertical-align:top}.swagger-ui table.model tbody tr td:first-of-type{padding:0 0 0 2em;width:174px}.swagger-ui table.headers td{color:#3b4151;font-family:monospace;font-size:12px;font-weight:300;font-weight:600;vertical-align:middle}.swagger-ui table.headers .header-example{color:#999;font-style:italic}.swagger-ui table tbody tr td{padding:10px 0 0;vertical-align:top}.swagger-ui table tbody tr td:first-of-type{min-width:6em;padding:10px 0}.swagger-ui table thead tr td,.swagger-ui table thead tr th{border-bottom:1px solid rgba(59,65,81,.2);color:#3b4151;font-family:sans-serif;font-size:12px;font-weight:700;padding:12px 0;text-align:left}.swagger-ui .parameters-col_description{margin-bottom:2em;width:99%}.swagger-ui .parameters-col_description input[type=text]{max-width:340px;width:100%}.swagger-ui .parameters-col_description select{border-width:1px}.swagger-ui .parameter__name{color:#3b4151;font-family:sans-serif;font-size:16px;font-weight:400;margin-right:.75em}.swagger-ui .parameter__name.required{font-weight:700}.swagger-ui .parameter__name.required span{color:red}.swagger-ui .parameter__name.required::after{color:rgba(255,0,0,.6);content:"required";font-size:10px;padding:5px;position:relative;top:-6px}.swagger-ui .parameter__extension,.swagger-ui .parameter__in{color:grey;font-family:monospace;font-size:12px;font-style:italic;font-weight:600}.swagger-ui .parameter__deprecated{color:red;font-family:monospace;font-size:12px;font-style:italic;font-weight:600}.swagger-ui .parameter__empty_value_toggle{display:block;font-size:13px;padding-bottom:12px;padding-top:5px}.swagger-ui .parameter__empty_value_toggle input{margin-right:7px}.swagger-ui .parameter__empty_value_toggle.disabled{opacity:.7}.swagger-ui .table-container{padding:20px}.swagger-ui .response-col_description{width:99%}.swagger-ui .response-col_links{min-width:6em}.swagger-ui .response__extension{color:grey;font-family:monospace;font-size:12px;font-style:italic;font-weight:600}.swagger-ui .topbar{background-color:#1b1b1b;padding:10px 0}.swagger-ui .topbar .topbar-wrapper,.swagger-ui .topbar a{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.swagger-ui .topbar a{color:#fff;-webkit-box-flex:1;-ms-flex:1;flex:1;font-family:sans-serif;font-size:1.5em;font-weight:700;max-width:300px;text-decoration:none}.swagger-ui .topbar a span{margin:0;padding:0 10px}.swagger-ui .topbar .download-url-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:3;-ms-flex:3;flex:3;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.swagger-ui .topbar .download-url-wrapper input[type=text]{border:2px solid #62a03f;border-radius:4px 0 0 4px;margin:0;outline:none;width:100%}.swagger-ui .topbar .download-url-wrapper .select-label{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#f0f0f0;display:-webkit-box;display:-ms-flexbox;display:flex;margin:0;max-width:600px;width:100%}.swagger-ui .topbar .download-url-wrapper .select-label span{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:16px;padding:0 10px 0 0;text-align:right}.swagger-ui .topbar .download-url-wrapper .select-label select{border:2px solid #62a03f;-webkit-box-shadow:none;box-shadow:none;-webkit-box-flex:2;-ms-flex:2;flex:2;outline:none;width:100%}.swagger-ui .topbar .download-url-wrapper .download-url-button{background:#62a03f;border:none;border-radius:0 4px 4px 0;color:#fff;font-family:sans-serif;font-size:16px;font-weight:700;padding:4px 30px}.swagger-ui .info{margin:50px 0}.swagger-ui .info.failed-config{margin-left:auto;margin-right:auto;max-width:880px;text-align:center}.swagger-ui .info hgroup.main{margin:0 0 20px}.swagger-ui .info hgroup.main a{font-size:12px}.swagger-ui .info pre{font-size:14px}.swagger-ui .info li,.swagger-ui .info p,.swagger-ui .info table{color:#3b4151;font-family:sans-serif;font-size:14px}.swagger-ui .info h1,.swagger-ui .info h2,.swagger-ui .info h3,.swagger-ui .info h4,.swagger-ui .info h5{color:#3b4151;font-family:sans-serif}.swagger-ui .info a{color:#4990e2;font-family:sans-serif;font-size:14px;-webkit-transition:all .4s;transition:all .4s}.swagger-ui .info a:hover{color:#1f69c0}.swagger-ui .info>div{margin:0 0 5px}.swagger-ui .info .base-url{color:#3b4151;font-family:monospace;font-size:12px;font-weight:300!important;font-weight:600;margin:0}.swagger-ui .info .title{color:#3b4151;font-family:sans-serif;font-size:36px;margin:0}.swagger-ui .info .title small{background:#7d8492;border-radius:57px;display:inline-block;font-size:10px;margin:0 0 0 5px;padding:2px 4px;position:relative;top:-5px;vertical-align:super}.swagger-ui .info .title small.version-stamp{background-color:#89bf04}.swagger-ui .info .title small pre{color:#fff;font-family:sans-serif;margin:0;padding:0}.swagger-ui .auth-btn-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:10px 0}.swagger-ui .auth-btn-wrapper .btn-done{margin-right:1em}.swagger-ui .auth-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.swagger-ui .auth-wrapper .authorize{margin-right:10px;padding-right:20px}.swagger-ui .auth-container{border-bottom:1px solid #ebebeb;margin:0 0 10px;padding:10px 20px}.swagger-ui .auth-container:last-of-type{border:0;margin:0;padding:10px 20px}.swagger-ui .auth-container h4{margin:5px 0 15px!important}.swagger-ui .auth-container .wrapper{margin:0;padding:0}.swagger-ui .auth-container input[type=password],.swagger-ui .auth-container input[type=text]{min-width:230px}.swagger-ui .auth-container .errors{background-color:#fee;border-radius:4px;color:red;color:#3b4151;font-family:monospace;font-size:12px;font-weight:600;margin:1em;padding:10px}.swagger-ui .auth-container .errors b{margin-right:1em;text-transform:capitalize}.swagger-ui .scopes h2{color:#3b4151;font-family:sans-serif;font-size:14px}.swagger-ui .scopes h2 a{color:#4990e2;cursor:pointer;font-size:12px;padding-left:10px;text-decoration:underline}.swagger-ui .scope-def{padding:0 0 20px}.swagger-ui .errors-wrapper{-webkit-animation:scaleUp .5s;animation:scaleUp .5s;background:rgba(249,62,62,.1);border:2px solid #f93e3e;border-radius:4px;margin:20px;padding:10px 20px}.swagger-ui .errors-wrapper .error-wrapper{margin:0 0 10px}.swagger-ui .errors-wrapper .errors h4{color:#3b4151;font-family:monospace;font-size:14px;font-weight:600;margin:0}.swagger-ui .errors-wrapper .errors small{color:#606060}.swagger-ui .errors-wrapper .errors .message{white-space:pre-line}.swagger-ui .errors-wrapper .errors .message.thrown{max-width:100%}.swagger-ui .errors-wrapper .errors .error-line{cursor:pointer;text-decoration:underline}.swagger-ui .errors-wrapper hgroup{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.swagger-ui .errors-wrapper hgroup h4{color:#3b4151;-webkit-box-flex:1;-ms-flex:1;flex:1;font-family:sans-serif;font-size:20px;margin:0}@-webkit-keyframes scaleUp{0%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes scaleUp{0%{opacity:0;-webkit-transform:scale(.8);transform:scale(.8)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.swagger-ui .Resizer.vertical.disabled{display:none}.swagger-ui .markdown p,.swagger-ui .markdown pre,.swagger-ui .renderedMarkdown p,.swagger-ui .renderedMarkdown pre{margin:1em auto;word-break:break-all;word-break:break-word}.swagger-ui .markdown pre,.swagger-ui .renderedMarkdown pre{background:none;color:#000;font-weight:400;padding:0;white-space:pre-wrap}.swagger-ui .markdown code,.swagger-ui .renderedMarkdown code{background:rgba(0,0,0,.05);border-radius:4px;color:#9012fe;font-family:monospace;font-size:14px;font-weight:600;padding:5px 7px}.swagger-ui .markdown pre>code,.swagger-ui .renderedMarkdown pre>code{display:block} - -/*! - Theme: Solarized Dark - Author: Ethan Schoonover (modified by aramisgithub) - License: ~ MIT (or more permissive) [via base16-schemes-source] - Maintainer: @highlightjs/core-team - Version: 2021.09.0 -*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#363636;background:#002b36}.hljs::-moz-selection,.hljs ::-moz-selection{background-color:#586e75;color:#93a1a1}.hljs::selection,.hljs ::selection{background-color:#586e75;color:#93a1a1}.hljs-comment{color:#657b83}.hljs-tag{color:#839496}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#93a1a1}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#dc322f}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#2266ef}.hljs-class .hljs-title,.hljs-strong,.hljs-title,.hljs-title.class_{color:#b58900}.hljs-strong{font-weight:700}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#c506e4}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#2aa198}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#268bd2}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#6c71c4}.hljs-emphasis{color:#6c71c4;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#d33682}.hljs-meta-keyword,.hljs-meta .hljs-keyword{font-weight:700}@media screen and (max-width:468.5px){.algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-]{width:calc(100vw - 8rem)}}@media screen and (max-width:700px){.doc table.overview-table,.doc table.overview-table>*>tr{display:-webkit-box;display:-ms-flexbox;display:flex}.doc table.overview-table>*>tr{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}}.doc .sidebarblock>.content>.title{text-align:inherit;font-size:1.15em}.toolbar-search{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.overview-box .title,.toolbar-search{display:-webkit-box;display:-ms-flexbox;display:flex}.overview-box .title{font-family:Inter,sans-serif;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.overview-box>.content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.doc .overview-box .image>img{max-width:unset;width:2rem;padding-top:2rem}.doc .overview-box .overview-title{background-color:unset;border:none}.doc .overview-box .overview-title content{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.overview-box .title a span{padding-right:1.5em}.doc .sidebarblock.overview-box{background-color:unset;padding-bottom:2rem;padding-left:2rem;min-height:15rem}.doc .overview-banner>.content>.title{font-size:2em!important;font-family:Inter,sans-serif}.doc table.tableblock.overview-table{-webkit-box-shadow:none!important;box-shadow:none!important}.doc table.overview-table>*>tr>*{border:none}.navbar{padding-inline:1rem}@media screen and (min-width:1024px){.toolbar{padding:0 2em 0 1.5em}main>.content{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;left:-150px}.navbar{padding:2rem;z-index:11}.navbar-brand{padding-left:unset;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar-item.is-hoverable:hover .navbar-dropdown{top:33px;z-index:3}.toolbar-search{display:none}.edit-this-page{display:-webkit-box;display:-ms-flexbox;display:flex}}.top-logo{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:.5rem}.medium-zoom-image{z-index:999}.page-versions{margin:unset}.page-versions .version-menu{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;background:-webkit-gradient(linear,left top,left bottom,from(#f7f9fb),to(#f7f9fb)) no-repeat;background:linear-gradient(180deg,#f7f9fb 0,#f7f9fb) no-repeat;margin:1.375rem .5rem 0 0;padding:.5rem;position:absolute;top:0;right:0;white-space:nowrap;min-width:unset}.DocSearch-Button{font-weight:400;padding-left:1rem}.search-box{padding-right:2em;padding-left:1em;width:100%;-ms-flex-item-align:start;align-self:start;height:2.4rem}.search-box .DocSearch-Button{border-radius:20px;width:100%}.algolia-autocomplete{width:100%;-ms-flex-item-align:center;align-self:center;height:2.5rem}.navbar-brand{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.starknet-logo{background-image:url(../img/starknet-logo-white.svg);background-repeat:no-repeat;display:inline-block;height:40px}.docs-logo{font-size:1.1875rem;line-height:1.44;letter-spacing:.01em;color:#363636}.theme-toggle{background-repeat:no-repeat;background-position:50%;-ms-flex-item-align:start;align-self:start;padding:1.2rem;border-style:none;border-radius:6px}.theme-toggle-container{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}@media screen and (max-width:1023.5px){.navbar-menu{position:relative;min-height:calc(100vh - 13rem)}.theme-toggle{margin-inline:auto}}.theme-toggle.dark:hover{background-image:url(../img/moon.svg)}.pencil{background-image:url(../img/pencil.svg);background-repeat:no-repeat;height:1rem;width:1rem;padding:0 1em;vertical-align:middle}.navbar-end .navbar-item .navbar-dropdown{padding-top:.8rem}.navbar-end .navbar-item.has-dropdown,.navbar-end .navbar-item.has-dropdown .navbar-link{-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid transparent;z-index:4;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.navbar-end .navbar-item.has-dropdown:hover{border-bottom:unset!important;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:.25rem .25rem 0 0}.navbar-end .navbar-item.has-dropdown:hover .navbar-link::after{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.edit-this-page:hover a{color:#4070f4;text-decoration:none}.doc{font-family:Inter,Roboto,sans-serif;max-width:72rem;padding:0 1rem 2rem}.doc .imageblock{border-radius:.5rem}.doc .imageblock .title{margin:unset}.doc .admonitionblock .title,.doc .exampleblock .title,.doc .imageblock .title,.doc .listingblock .title,.doc .literalblock .title,.doc .openblock .title,.doc .tableblock caption{padding:.5em}.doc a:hover{color:#4070f4;text-decoration:underline}.doc .listingblock,.exampleblock{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.doc .listingblock .title,.exampleblock .title{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-item-align:center;align-self:center}@media screen and (max-width:1023.5px){footer .footerdiv{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:1.3rem}.footer_icon p{display:none}.footer>.community_icons{width:10em}}footer .footerdiv{padding:1rem 2rem;-webkit-box-flex:1;-ms-flex:auto;flex:auto;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}footer.footer,footer .footerdiv{display:-webkit-box;display:-ms-flexbox;display:flex}footer.footer{padding:unset}.community_icons{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:2.5rem}.community_icons,.footer_icon{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer_icon{padding:0 0 0 1.5rem;height:1.25rem;background-size:1.25rem;background-repeat:no-repeat}.footer_icon p{font-size:.875rem;margin-left:.6rem}.footer_icon svg{fill:#1b1b1b}.footer-left{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:20px}.footer-network-info{border-radius:.5rem;padding-left:.4rem;padding-right:.4rem;background-color:#ffcd9a;color:#000}.vertical-divider{width:1px;height:2rem;background:#efefef;border-radius:2px}.hr-divider{background-color:#efefef;height:1px;margin-inline:1rem;margin-block:1.625rem}.doc details{margin-left:0;padding:1rem;border-radius:.5rem}.doc details summary{padding-left:1.5rem}.doc details.result{margin-top:1rem}.doc details.result>.content{margin:.5rem 0 0}.doc details>summary::before{border:none;background-repeat:no-repeat}.toc.sidebar .toc-menu ul{max-height:calc(100vh - 14rem)}#toc{border-radius:.5rem;margin-top:1.5rem}#toctitle{font-family:Inter,Roboto,sans-serif;font-size:29px;padding:1.25rem 1.25rem 0}#toc .sectlevel1{font-weight:450;list-style:none;padding:0 1.25rem 1.25rem}#toc .sectlevel1>li{padding:.75rem 0 0;font-size:16px}#toc .sectlevel2{font-weight:400;padding-top:.5rem;list-style:disc}.doc table.tableblock{border-collapse:collapse;border-radius:.5rem;border-style:hidden}.doc table.tableblock,.doc table.tableblock>*>tr>*{border-radius:.5rem}.doc table.tableblock>*>tr>*{border-left-width:0;border-right-width:0}.doc table.grid-all>thead th,.doc table.grid-rows>thead th{font-weight:600;line-height:2;border-width:0}.dark-mode-label,.light-mode-label{display:none;text-transform:uppercase;font-size:.75rem;font-weight:500}.light-mode-label{color:#fff}.dark-mode-label{color:#000}.desktop-only{display:none}@media screen and (min-width:1024px){.desktop-only{display:block}.doc{padding:0 4rem 2rem 5.5rem}.mobile-only{display:none}footer.footer{position:sticky;bottom:0;z-index:10}.top-logo{width:16rem}}.mask-svg-center{mask-repeat:no-repeat;mask-position:center;mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain}.dark-mode-label{display:block}@media screen and (min-width:1024px){.dark-mode-label{display:none}}.DocSearch-Button{background:#fff;background-position:1em;background-repeat:no-repeat;border:1px solid #dfe6f2;border-radius:53px}.DocSearch-Button-Container .DocSearch-Search-Icon{color:#969faf}.navbar{background:#fff}.navbar-end .navbar-item .navbar-dropdown{border-top:1px solid #efefef}.navbar-end .navbar-item.has-dropdown:hover .navbar-link{border-left:1px solid #efefef;border-top:1px solid #efefef;border-right:1px solid #efefef}.doc .sidebarblock.overview-box{border:1px solid #ccc}.navbar-brand .navbar-item:first-child{color:#000}.starknet-logo{background-image:url(../img/starknet-logo-dark.svg);width:173px}.toolbar{background-color:#fbfbfb;border-top:1px solid #efefef}.theme-toggle{background-image:url(../img/moon.svg);background-color:#fff}.theme-toggle:hover{background-color:#f3f8fb}.nav-toggle{background:url(../img/collapse-icon-outlined.svg) no-repeat 50% 47.5%}.nav{border-right:1px solid #efefef}.nav-panel-explore .component .version a{border:1px solid #ccc;color:#8a8ca2}.nav-panel-explore .context:hover{color:#4070f4;background-color:#f7f9fb}.doc .sidebarblock{background-color:#dfe6f2}.doc .imageblock{border:1px solid #dfe6f2}.doc .colist>table code,.doc h2 code,.doc h3 code,.doc p code,.doc thead code{background-color:#ebf2ff;color:#6b7280}.doc .colist>table a code,.doc p a code,.doc thead a code{color:#5c94ff!important}pre{padding:0}footer.footer{border-top:1px solid #efefef}.doc details{border:1px solid #dfe6f2}.doc table.tableblock{background-color:#fff;-webkit-box-shadow:0 0 0 1px #ccc;box-shadow:0 0 0 1px #ccc}.doc table.tableblock,.doc table.tableblock>*>tr>*{border-color:#efefef}.components-versions{border-right:1px solid #efefef}#toc,#toc .sectlevel1>li a,#toc .sectlevel1>li a:visited{color:#254898}#toc{background-color:rgba(197,207,228,.2)}.doc details>summary::after{left:0;background-image:url(../img/chevron-down.svg)}.doc details[open]>summary::after{background-image:url(../img/chevron-up-black.svg)}.page-components{position:relative;line-height:1}@media screen and (max-width:1024px){.toolbar .page-components,.toolbar .page-versions{display:none}}.page-components .component-menu-toggle{color:inherit;background:url(../img/chevron.svg) no-repeat;background-position:right .5rem top 50%;background-size:auto .75em;border:none;outline:none;line-height:inherit;padding:.5rem 1.5rem .5rem 0;position:relative;z-index:3}.page-components .component-menu{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;background:-webkit-gradient(linear,left top,left bottom,from(#f7f9fb),to(#f7f9fb)) no-repeat;background:linear-gradient(180deg,#f7f9fb 0,#f7f9fb) no-repeat;margin:1.375rem 0 0;padding:.5rem;position:absolute;top:0;white-space:nowrap}.page-components:not(.is-active) .component-menu{display:none}.page-components .component{display:block;padding-top:.5rem}.page-components .component.is-current{display:none}.page-components .component.is-missing{color:#8e8e8e;font-style:italic;text-decoration:none} - -/*! @algolia/autocomplete-theme-classic 1.7.4 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */.aa-Autocomplete *,.aa-DetachedFormContainer *,.aa-Panel *{-webkit-box-sizing:border-box;box-sizing:border-box}.aa-Autocomplete,.aa-DetachedFormContainer,.aa-Panel{color:#262627;margin:0}.aa-Form{background-color:#fff;border:1px solid rgba(128,126,163,.8);width:100%}.aa-Form[focus-within]{-webkit-box-shadow:0 0 0 2px rgba(62,52,211,.2),inset 0 0 0 2px rgba(62,52,211,.2);box-shadow:0 0 0 2px rgba(62,52,211,.2),inset 0 0 0 2px rgba(62,52,211,.2);-webkit-box-shadow:#5c94ff 0 0 0 2px,inset #5c94ff 0 0 0 2px;box-shadow:0 0 0 2px #5c94ff,inset 0 0 0 2px #5c94ff}.aa-Form:focus-within{-webkit-box-shadow:0 0 0 2px rgba(62,52,211,.2),inset 0 0 0 2px rgba(62,52,211,.2);box-shadow:0 0 0 2px rgba(62,52,211,.2),inset 0 0 0 2px rgba(62,52,211,.2);-webkit-box-shadow:#5c94ff 0 0 0 2px,inset #5c94ff 0 0 0 2px;box-shadow:0 0 0 2px #5c94ff,inset 0 0 0 2px #5c94ff}.aa-InputWrapperPrefix{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0;height:44px;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.aa-Label,.aa-LoadingIndicator{cursor:auto;-ms-flex-negative:0;flex-shrink:0;height:100%;padding:0;text-align:left}.aa-Label svg,.aa-LoadingIndicator svg{color:#3e34d3;color:#5c94ff;height:auto;max-height:20px;stroke-width:1.6;width:20px}.aa-LoadingIndicator,.aa-SubmitButton{height:100%;padding-left:11px;padding-right:8px;width:47px}@media (hover:none) and (pointer:coarse){.aa-LoadingIndicator,.aa-SubmitButton{padding-left:3px;width:39px}}.aa-SubmitButton{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0}.aa-LoadingIndicator{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.aa-LoadingIndicator[hidden]{display:none}.aa-InputWrapper{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3;position:relative;width:100%}.aa-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:#262627;color:#363636;font:inherit;height:44px;padding:0;width:100%}.aa-Input::-moz-placeholder{color:rgba(128,126,163,.6);color:#858585;opacity:1}.aa-Input:-ms-input-placeholder{color:rgba(128,126,163,.6);color:#858585;opacity:1}.aa-Input::-webkit-input-placeholder{color:rgba(128,126,163,.6);color:#858585;opacity:1}.aa-Input::-ms-input-placeholder{color:rgba(128,126,163,.6);color:#858585;opacity:1}.aa-Input::placeholder{color:rgba(128,126,163,.6);color:#858585;opacity:1}.aa-Input:focus{border-color:none;-webkit-box-shadow:none;box-shadow:none;outline:none}.aa-Input::-webkit-search-cancel-button,.aa-Input::-webkit-search-decoration,.aa-Input::-webkit-search-results-button,.aa-Input::-webkit-search-results-decoration{-webkit-appearance:none;appearance:none}.aa-InputWrapperSuffix{-webkit-box-align:center;height:44px;-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.aa-ClearButton,.aa-InputWrapperSuffix{-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.aa-ClearButton{-webkit-box-align:center;background:none;border:0;color:rgba(128,126,163,.6);color:#858585;cursor:pointer;height:100%;margin:0;padding:0 12.83328px}@media (hover:none) and (pointer:coarse){.aa-ClearButton{padding:0 10.16672px}}.aa-ClearButton:focus,.aa-ClearButton:hover{color:#262627;color:#363636}.aa-ClearButton[hidden]{display:none}.aa-ClearButton svg{stroke-width:1.6;width:20px}.aa-Panel{border-radius:4px;-webkit-box-shadow:0 0 0 1px rgba(35,38,59,.1),0 6px 16px -4px rgba(35,38,59,.15);box-shadow:0 0 0 1px rgba(35,38,59,.1),0 6px 16px -4px rgba(35,38,59,.15);-webkit-box-shadow:0 4px 4px rgba(0,0,0,.25),0 1px 47px -3px rgba(0,0,0,.15),0 60px 70px -2px rgba(0,0,0,.08);box-shadow:0 4px 4px rgba(0,0,0,.25),0 1px 47px -3px rgba(0,0,0,.15),0 60px 70px -2px rgba(0,0,0,.08);margin:8px 0 0;position:absolute}@media screen and (prefers-reduced-motion){.aa-Panel{-webkit-transition:none;transition:none}}.aa-Panel button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;margin:0;padding:0}.aa-PanelLayout{padding:0}.aa-PanelLayoutColumns--twoGolden{display:grid;grid-template-columns:39.2% auto;overflow:hidden;padding:0}.aa-PanelLayoutColumns--two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:hidden;padding:0}.aa-PanelLayoutColumns--three{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));overflow:hidden;padding:0}.aa-Panel--stalled .aa-Source{-webkit-filter:grayscale(1);filter:grayscale(1);opacity:.8}.aa-Panel--scrollable{margin:0;max-height:650px;overflow-x:hidden;overflow-y:auto;overflow-y:overlay;padding:8px;scrollbar-color:#8a8ca2 transparent;scrollbar-width:thin}.aa-Panel--scrollable::-webkit-scrollbar{width:13px;width:7px}.aa-Panel--scrollable::-webkit-scrollbar-track{background-color:transparent}.aa-Panel--scrollable::-webkit-scrollbar-thumb{background-color:#8a8ca2;border-radius:9999px}.aa-Source{margin:0;padding:0;position:relative;width:100%}.aa-Source:empty{display:none}.aa-SourceNoResults{font-size:1em;margin:0;padding:16px}.aa-List{list-style:none;margin:0}.aa-List,.aa-SourceHeader{padding:0;position:relative}.aa-SourceHeader{margin:8px .5em 8px 0}.aa-SourceHeader:empty{display:none}.aa-SourceHeaderTitle{background:#fff;color:#3e34d3;color:#5c94ff;font-size:.8em;font-weight:600}.aa-SourceHeaderLine{border-bottom:1px solid #5c94ff;display:block;height:2px;left:0;margin:0;opacity:.3;padding:0;position:absolute;right:0;top:8px;z-index:9998}.aa-SourceFooterSeeAll{background:-webkit-gradient(linear,left top,left bottom,from(#fff),to(rgba(128,126,163,.14)));background:linear-gradient(180deg,#fff,rgba(128,126,163,.14));border:1px solid #858585;border-radius:5px;-webkit-box-shadow:inset 0 0 2px #fff,0 2px 2px -1px rgba(76,69,88,.15);box-shadow:inset 0 0 2px #fff,0 2px 2px -1px rgba(76,69,88,.15);color:inherit;font-size:.95em;font-weight:500;padding:.475em 1em .6em;text-decoration:none}.aa-SourceFooterSeeAll:focus,.aa-SourceFooterSeeAll:hover{border:1px solid #5c94ff;color:#3e34d3;color:#5c94ff}.aa-Item{border-radius:3px;padding:4px}.aa-Item[aria-selected=true]{background-color:rgba(179,173,214,.205)}.aa-Item[aria-selected=true] .aa-ActiveOnly,.aa-Item[aria-selected=true] .aa-ItemActionButton{visibility:visible}.aa-ItemIcon{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:#fff;border-radius:3px;-webkit-box-shadow:inset 0 0 0 1px rgba(128,126,163,.3);box-shadow:inset 0 0 0 1px rgba(128,126,163,.3);-webkit-box-shadow:inset 0 0 0 1px #ebebeb;box-shadow:inset 0 0 0 1px #ebebeb;color:#7777a3;color:#858585;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0;font-size:.7em;height:28px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;overflow:hidden;stroke-width:1.6;text-align:center;width:28px}.aa-ItemIcon img{height:auto;max-height:20px;max-width:20px;width:auto}.aa-ItemIcon svg{height:20px;width:20px}.aa-ItemIcon--alignTop{-ms-flex-item-align:start;align-self:flex-start}.aa-ItemIcon--noBorder{background:none;-webkit-box-shadow:none;box-shadow:none}.aa-ItemIcon--picture{height:96px;width:96px}.aa-ItemIcon--picture img{max-height:100%;max-width:100%;padding:8px}.aa-ItemContent{-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;display:grid;grid-gap:8px;gap:8px;grid-auto-flow:column;line-height:1.25em;overflow:hidden}.aa-ItemContent:empty{display:none}.aa-ItemContent mark{background:none;color:#262627;color:#363636;font-style:normal;font-weight:700}.aa-ItemContent--dual{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;text-align:left}.aa-ItemContent--dual .aa-ItemContentSubtitle,.aa-ItemContent--dual .aa-ItemContentTitle{display:block}.aa-ItemContent--indented{padding-left:36px}.aa-ItemContentBody{display:grid;grid-gap:4px;gap:4px}.aa-ItemContentTitle{display:inline-block;margin:0 .5em 0 0;max-width:100%;overflow:hidden;padding:0;text-overflow:ellipsis;white-space:nowrap}.aa-ItemContentSubtitle{font-size:.92em}.aa-ItemContentSubtitleIcon::before{border-color:hsla(0,0%,52.2%,.64);border-style:solid;content:"";display:inline-block;left:1px;position:relative;top:-3px}.aa-ItemContentSubtitle--inline .aa-ItemContentSubtitleIcon::before{border-width:0 0 1.5px;margin-left:8px;margin-right:4px;width:10px}.aa-ItemContentSubtitle--standalone{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#262627;color:#363636;display:grid;grid-gap:8px;gap:8px;grid-auto-flow:column;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:start}.aa-ItemContentSubtitle--standalone .aa-ItemContentSubtitleIcon::before{border-radius:0 0 0 3px;border-width:0 0 1.5px 1.5px;height:8px;width:8px}.aa-ItemContentSubtitleCategory{color:#807ea3;color:#858585;font-weight:500}.aa-ItemContentDescription{color:#262627;color:#363636;font-size:.85em;max-width:100%;overflow-x:hidden;text-overflow:ellipsis}.aa-ItemContentDescription:empty{display:none}.aa-ItemContentDescription mark{background:rgba(245,223,77,.5);color:#262627;color:#363636;font-style:normal;font-weight:500}.aa-ItemContentDash{color:rgba(128,126,163,.6);color:#858585;display:none;opacity:.4}.aa-ItemContentTag{background-color:rgba(62,52,211,.2);background-color:#5c94ff;border-radius:3px;margin:0 .4em 0 0;padding:.08em .3em}.aa-ItemLink,.aa-ItemWrapper{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:inherit;display:grid;grid-gap:4px;gap:4px;grid-auto-flow:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;width:100%}.aa-ItemLink{color:inherit;text-decoration:none}.aa-ItemActions{display:grid;grid-auto-flow:column;height:100%;justify-self:end;margin:0 -5.33333px;padding:0 2px 0 0}.aa-ItemActionButton{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:none;border:0;color:rgba(128,126,163,.6);color:#858585;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0;padding:0}.aa-ItemActionButton:focus svg,.aa-ItemActionButton:hover svg{color:#262627;color:#363636}@media (hover:none) and (pointer:coarse){.aa-ItemActionButton:focus svg,.aa-ItemActionButton:hover svg{color:inherit}}.aa-ItemActionButton svg{color:rgba(128,126,163,.6);color:#858585;margin:5.33333px;stroke-width:1.6;width:20px}.aa-ActiveOnly{visibility:hidden}.aa-PanelHeader{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:#3e34d3;background:#5c94ff;color:#fff;display:grid;height:var(--aa-modal-header-height);margin:0;padding:8px 16px;position:relative}.aa-PanelHeader::after{background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(hsla(0,0%,100%,0)));background-image:linear-gradient(#fff,hsla(0,0%,100%,0));bottom:-8px;content:"";height:8px;left:0;pointer-events:none;position:absolute;right:0}.aa-PanelFooter,.aa-PanelHeader::after{z-index:9999}.aa-PanelFooter{background-color:#fff;-webkit-box-shadow:inset 0 1px 0 rgba(128,126,163,.3);box-shadow:inset 0 1px 0 rgba(128,126,163,.3);-webkit-box-shadow:inset 0 1px 0 #ebebeb;box-shadow:inset 0 1px 0 #ebebeb;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin:0;padding:16px;position:relative}.aa-PanelFooter::after{background-image:-webkit-gradient(linear,left top,left bottom,from(hsla(0,0%,100%,0)),to(rgba(128,126,163,.6)));background-image:linear-gradient(hsla(0,0%,100%,0),rgba(128,126,163,.6));background-image:-webkit-gradient(linear,left top,left bottom,from(hsla(0,0%,100%,0)),to(#858585));background-image:linear-gradient(hsla(0,0%,100%,0),#858585);content:"";height:16px;left:0;opacity:.12;pointer-events:none;position:absolute;right:0;top:-16px;z-index:9998}.aa-DetachedContainer{background:#fff;bottom:0;-webkit-box-shadow:0 0 0 1px rgba(35,38,59,.1),0 6px 16px -4px rgba(35,38,59,.15);box-shadow:0 0 0 1px rgba(35,38,59,.1),0 6px 16px -4px rgba(35,38,59,.15);-webkit-box-shadow:0 4px 4px rgba(0,0,0,.25),0 1px 47px -3px rgba(0,0,0,.15),0 60px 70px -2px rgba(0,0,0,.08);box-shadow:0 4px 4px rgba(0,0,0,.25),0 1px 47px -3px rgba(0,0,0,.15),0 60px 70px -2px rgba(0,0,0,.08);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;left:0;margin:0;overflow:hidden;padding:0;position:fixed;right:0;top:0;z-index:9999}.aa-DetachedContainer::after{height:32px}.aa-DetachedContainer .aa-SourceHeader{margin:8px 0 8px 2px}.aa-Panel{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding:0;position:relative}.aa-DetachedContainer .aa-PanelLayout{bottom:0;-webkit-box-shadow:none;box-shadow:none;left:0;margin:0;max-height:none;overflow-y:auto;position:absolute;right:0;top:0;width:100%}.aa-DetachedFormContainer{border-bottom:1px solid #ebebeb;padding:8px}.aa-DetachedCancelButton{border:0;border-radius:3px;color:inherit;color:#262627;color:#363636;margin:0 0 0 8px;padding:0 8px}.aa-DetachedCancelButton:focus,.aa-DetachedCancelButton:hover{-webkit-box-shadow:inset 0 0 0 1px rgba(128,126,163,.3);box-shadow:inset 0 0 0 1px rgba(128,126,163,.3);-webkit-box-shadow:inset 0 0 0 1px #ebebeb;box-shadow:inset 0 0 0 1px #ebebeb}.aa-DetachedContainer--modal{border-radius:6px;top:3%}.aa-DetachedContainer--modal .aa-PanelLayout{max-height:500px;max-height:min(600px,75vh);padding-bottom:8px;position:static}.aa-DetachedSearchButton{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#fff;background-color:#f6f6f6;border:1px solid rgba(128,126,163,.8);border-radius:3px;color:rgba(128,126,163,.6);color:#858585;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;font:inherit;font-family:inherit;font-size:16px;font-size:14px;height:44px;margin:0;padding:0 5.5px;position:relative;text-align:left;width:100%}.aa-DetachedSearchButton:focus{border-color:#5c94ff;-webkit-box-shadow:0 0 0 3px rgba(62,52,211,.2),inset 0 0 0 2px rgba(62,52,211,.2);box-shadow:0 0 0 3px rgba(62,52,211,.2),inset 0 0 0 2px rgba(62,52,211,.2);-webkit-box-shadow:#5c94ff 0 0 0 3px,inset #5c94ff 0 0 0 2px;box-shadow:0 0 0 3px #5c94ff,inset 0 0 0 2px #5c94ff;outline:medium none currentColor}.aa-DetachedSearchButtonIcon{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#3e34d3;color:#5c94ff;cursor:auto;display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:36px}.aa-Detached{height:100vh;overflow:hidden}.aa-DetachedOverlay{background-color:rgba(115,114,129,.4);height:100vh;left:0;margin:0;padding:0;position:fixed;right:0;top:0;z-index:9998}.aa-GradientBottom,.aa-GradientTop{height:8px;left:0;pointer-events:none;position:absolute;right:0;z-index:9999}.aa-GradientTop{background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(hsla(0,0%,100%,0)));background-image:linear-gradient(#fff,hsla(0,0%,100%,0));top:0}.aa-GradientBottom{background-image:-webkit-gradient(linear,left top,left bottom,from(hsla(0,0%,100%,0)),to(#fff));background-image:linear-gradient(hsla(0,0%,100%,0),#fff);border-bottom-left-radius:4px;border-bottom-right-radius:4px;bottom:0}@media (hover:none) and (pointer:coarse){.aa-DesktopOnly{display:none}}@media (hover:hover){.aa-TouchOnly{display:none}}@media (hover:none) and (pointer:coarse){:root{--aa-spacing-factor:1.2;--aa-action-icon-size:22px}}.aa-Panel{background-color:#fff;border-radius:0;-webkit-box-shadow:none;box-shadow:none;margin:0;overflow:hidden;-webkit-transition:opacity .2s ease-in,-webkit-filter .2s ease-in;transition:opacity .2s ease-in,-webkit-filter .2s ease-in;transition:opacity .2s ease-in,filter .2s ease-in;transition:opacity .2s ease-in,filter .2s ease-in,-webkit-filter .2s ease-in}.aa-Item{-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;display:grid;min-height:40px;padding:0;margin-bottom:8px;border-radius:8px;background-color:#fbfbfb}.aa-ItemLink,.aa-ItemWrapper{padding:16px}.aa-Item:last-child{margin-bottom:24px}.aa-Item[aria-selected=true]{background-color:#5c94ff;color:#fff}.aa-Item[aria-selected=true] svg{color:#fff}.aa-DetachedContainer .aa-SourceHeader{margin:16px 0 12px}.aa-PanelLayout{height:100%;margin:0;max-height:650px;overflow-y:auto;padding:16px 1.5rem;margin-inline:1rem;position:relative;text-align:left}.aa-DetachedSearchButton{min-width:200px;border-radius:8px;border:0}.aa-DetachedSearchButtonIcon{color:inherit}.aa-DetachedSearchButton svg{width:16px}.aa-DetachedContainer--modal{border-radius:16px;bottom:inherit;height:auto;margin:0 auto;max-width:680px;position:absolute;top:10%}.aa-Autocomplete,.aa-DetachedFormContainer,.aa-Panel{color:#363636;font-family:inherit;font-size:16px;font-size:14px;font-weight:400;line-height:1em;margin:0 .5rem;padding:0;text-align:left}.aa-DetachedFormContainer{border-bottom:1px solid #5c94ff;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding-inline:2rem}.aa-DetachedFormContainer,.aa-Form{display:-webkit-box;display:-ms-flexbox;display:flex;margin:0}.aa-Form{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#f6f6f6;border:0 solid rgba(128,126,163,.8);border-radius:3px;line-height:1em;position:relative;-webkit-box-flex:1;-ms-flex:1;flex:1;padding-block:8px;background:transparent}.aa-SubmitButton{line-height:1;width:auto;margin:0;padding:0 16px 0 0}.aa-Form[focus-within]{border-color:#5c94ff;-webkit-box-shadow:none;box-shadow:none;outline:medium none currentColor}.aa-Form:focus-within{border-color:#5c94ff;-webkit-box-shadow:none;box-shadow:none;outline:medium none currentColor}.aa-Input::-webkit-input-placeholder{font-weight:400;color:inherit}.aa-Input::-moz-placeholder{font-weight:400;color:inherit}.aa-Input:-ms-input-placeholder{font-weight:400;color:inherit}.aa-Input::-ms-input-placeholder{font-weight:400;color:inherit}.aa-Input::placeholder{font-weight:400;color:inherit}.aa-SourceHeaderTitle{display:inline-block;font-size:14px;line-height:17px;font-weight:700;margin:0;padding:0 8px 0 0;position:relative;z-index:9999;color:inherit}.aa-DetachedCancelButton{background:none;cursor:pointer;font:inherit;border-radius:8px;border:1px solid #ebebeb;padding:10px 16px;margin:auto 0}.autocomplete-root{position:absolute;top:4.88889rem;left:30px;margin-left:20px;width:100%}.autocomplete-root .aa-Autocomplete .aa-Form{line-height:100%;color:#858585;padding:4px 8px;border-radius:.5rem;background-color:#f6f6f6;border:none}.aa-ItemContent{gap:16px}.aa-ItemContent mark{color:inherit;border-bottom:2px solid #000;font-weight:600}.aa-ItemActionButtonDanger:hover svg{fill:#ff4557}.aa-ItemLink:hover{text-decoration:none}.aa-Item[aria-selected=true] .aa-ItemContentSubtitle{color:inherit}.aa-ItemContentSubtitle{font-size:12px;font-weight:500;line-height:1.5;color:#858585;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.aa-ItemContentTitle{line-height:1.7}.aa-Item[aria-selected=true] .aa-ItemContentTitle{color:inherit}.aa-Item[aria-selected=true] .aa-ItemContent mark{border-color:inherit}.aa-DetachedSearchButton:focus{-webkit-box-shadow:#5c94ff 0 0 0 0,inset #5c94ff 0 0 0 2px;box-shadow:0 0 0 0 #5c94ff,inset 0 0 0 2px #5c94ff}.aa-SourceNoResults{padding:1rem 0}@media screen and (max-width:680px){.aa-DetachedSearchButton:focus{-webkit-box-shadow:none;box-shadow:none;outline:none;border:none}.aa-DetachedSearchButton{background-color:transparent}}@media screen and (min-width:680px){.autocomplete-root{position:static;width:min(300px,50%)}}@media screen and (min-width:1024px){.autocomplete-root{margin-left:0;width:min(484px,50%)}} \ No newline at end of file diff --git a/pr-1195/_/css/vendor/tabs.css b/pr-1195/_/css/vendor/tabs.css deleted file mode 100644 index a1684b492d..0000000000 --- a/pr-1195/_/css/vendor/tabs.css +++ /dev/null @@ -1 +0,0 @@ -/*! Asciidoctor Tabs | Copyright (c) 2018-present Dan Allen | MIT License */.tabs{margin-bottom:1.25em}.tablist>ul{-ms-flex-wrap:wrap;flex-wrap:wrap;list-style:none;margin:0;padding:0}.tablist>ul,.tablist>ul li{display:-webkit-box;display:-ms-flexbox;display:flex}.tablist>ul li{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#fff;cursor:pointer;font-weight:700;line-height:1.5;padding:.25em 1em;position:relative}.tablist>ul li:focus-visible{outline:none}.tablist.ulist,.tablist.ulist>ul li{margin-top:20px}.tablist.ulist>ul li+li{margin-left:.25em}.tabs.is-loading .tablist li:not(:first-child),.tabs:not(.is-loading) .tablist li:not(.is-selected){background-color:#f5f5f5}.tabs.is-loading .tablist li:first-child::after,.tabs:not(.is-loading) .tablist li.is-selected::after{background-color:inherit;content:"";display:block;height:3px;position:absolute;bottom:-1.5px;left:0;right:0}.tablist>ul p{line-height:inherit;margin:0}.tabpanel{background-color:#fff;padding:1.25em}.tablist>ul li,.tabpanel{border:1px solid #dcdcdc}.tablist>ul li{border-bottom:0}.tabs.is-loading .tabpanel+.tabpanel,.tabs:not(.is-loading) .tabpanel.is-hidden{display:none}.tabpanel>:first-child{margin-top:0}#content .tabpanel>:last-child,#content .tabpanel>:last-child>:last-child,#content .tabpanel>:last-child>:last-child>li:last-child>:last-child{margin-bottom:0}.tablecontainer{overflow-x:auto}#content .tablecontainer{margin-bottom:1.25em}#content .tablecontainer>table.tableblock{margin-bottom:0} \ No newline at end of file diff --git a/pr-1195/_/font/FiraCode-Medium.woff b/pr-1195/_/font/FiraCode-Medium.woff deleted file mode 100644 index 19251b0f36..0000000000 Binary files a/pr-1195/_/font/FiraCode-Medium.woff and /dev/null differ diff --git a/pr-1195/_/font/FiraCode-Regular.woff b/pr-1195/_/font/FiraCode-Regular.woff deleted file mode 100644 index 8816b695b3..0000000000 Binary files a/pr-1195/_/font/FiraCode-Regular.woff and /dev/null differ diff --git a/pr-1195/_/font/IBMPlexSans-Bold.ttf b/pr-1195/_/font/IBMPlexSans-Bold.ttf deleted file mode 100644 index 71cad9d3be..0000000000 Binary files a/pr-1195/_/font/IBMPlexSans-Bold.ttf and /dev/null differ diff --git a/pr-1195/_/font/IBMPlexSans-Bold.woff b/pr-1195/_/font/IBMPlexSans-Bold.woff deleted file mode 100644 index a5331e3b53..0000000000 Binary files a/pr-1195/_/font/IBMPlexSans-Bold.woff and /dev/null differ diff --git a/pr-1195/_/font/IBMPlexSans-Medium.ttf b/pr-1195/_/font/IBMPlexSans-Medium.ttf deleted file mode 100644 index ec75fc86cb..0000000000 Binary files a/pr-1195/_/font/IBMPlexSans-Medium.ttf and /dev/null differ diff --git a/pr-1195/_/font/IBMPlexSans-Medium.woff b/pr-1195/_/font/IBMPlexSans-Medium.woff deleted file mode 100644 index 22034ea894..0000000000 Binary files a/pr-1195/_/font/IBMPlexSans-Medium.woff and /dev/null differ diff --git a/pr-1195/_/font/IBMPlexSans-Regular.ttf b/pr-1195/_/font/IBMPlexSans-Regular.ttf deleted file mode 100644 index f78a2d78f5..0000000000 Binary files a/pr-1195/_/font/IBMPlexSans-Regular.ttf and /dev/null differ diff --git a/pr-1195/_/font/IBMPlexSans-Regular.woff b/pr-1195/_/font/IBMPlexSans-Regular.woff deleted file mode 100644 index 80e5543fb8..0000000000 Binary files a/pr-1195/_/font/IBMPlexSans-Regular.woff and /dev/null differ diff --git a/pr-1195/_/font/IBMPlexSans-SemiBold.ttf b/pr-1195/_/font/IBMPlexSans-SemiBold.ttf deleted file mode 100644 index 6add7e14e5..0000000000 Binary files a/pr-1195/_/font/IBMPlexSans-SemiBold.ttf and /dev/null differ diff --git a/pr-1195/_/font/IBMPlexSans-SemiBold.woff b/pr-1195/_/font/IBMPlexSans-SemiBold.woff deleted file mode 100644 index 618ac3c1f1..0000000000 Binary files a/pr-1195/_/font/IBMPlexSans-SemiBold.woff and /dev/null differ diff --git a/pr-1195/_/font/Inter-Bold.woff b/pr-1195/_/font/Inter-Bold.woff deleted file mode 100644 index eaf3d4bfd7..0000000000 Binary files a/pr-1195/_/font/Inter-Bold.woff and /dev/null differ diff --git a/pr-1195/_/font/Inter-BoldItalic.woff b/pr-1195/_/font/Inter-BoldItalic.woff deleted file mode 100644 index 3275076164..0000000000 Binary files a/pr-1195/_/font/Inter-BoldItalic.woff and /dev/null differ diff --git a/pr-1195/_/font/Inter-Italic.woff b/pr-1195/_/font/Inter-Italic.woff deleted file mode 100644 index a806b38201..0000000000 Binary files a/pr-1195/_/font/Inter-Italic.woff and /dev/null differ diff --git a/pr-1195/_/font/Inter-Medium.woff b/pr-1195/_/font/Inter-Medium.woff deleted file mode 100644 index d546843f28..0000000000 Binary files a/pr-1195/_/font/Inter-Medium.woff and /dev/null differ diff --git a/pr-1195/_/font/Inter-MediumItalic.woff b/pr-1195/_/font/Inter-MediumItalic.woff deleted file mode 100644 index 459a656889..0000000000 Binary files a/pr-1195/_/font/Inter-MediumItalic.woff and /dev/null differ diff --git a/pr-1195/_/font/Inter-Regular.woff b/pr-1195/_/font/Inter-Regular.woff deleted file mode 100644 index 62d3a61871..0000000000 Binary files a/pr-1195/_/font/Inter-Regular.woff and /dev/null differ diff --git a/pr-1195/_/font/Inter-SemiBold.woff b/pr-1195/_/font/Inter-SemiBold.woff deleted file mode 100644 index a815f43a91..0000000000 Binary files a/pr-1195/_/font/Inter-SemiBold.woff and /dev/null differ diff --git a/pr-1195/_/font/Inter-SemiBoldItalic.woff b/pr-1195/_/font/Inter-SemiBoldItalic.woff deleted file mode 100644 index 909e43a97d..0000000000 Binary files a/pr-1195/_/font/Inter-SemiBoldItalic.woff and /dev/null differ diff --git a/pr-1195/_/font/roboto-latin-400.woff b/pr-1195/_/font/roboto-latin-400.woff deleted file mode 100644 index 69c8825405..0000000000 Binary files a/pr-1195/_/font/roboto-latin-400.woff and /dev/null differ diff --git a/pr-1195/_/font/roboto-latin-400.woff2 b/pr-1195/_/font/roboto-latin-400.woff2 deleted file mode 100644 index 1a53701510..0000000000 Binary files a/pr-1195/_/font/roboto-latin-400.woff2 and /dev/null differ diff --git a/pr-1195/_/font/roboto-latin-400italic.woff b/pr-1195/_/font/roboto-latin-400italic.woff deleted file mode 100644 index b940dbcb78..0000000000 Binary files a/pr-1195/_/font/roboto-latin-400italic.woff and /dev/null differ diff --git a/pr-1195/_/font/roboto-latin-400italic.woff2 b/pr-1195/_/font/roboto-latin-400italic.woff2 deleted file mode 100644 index 2741d4f082..0000000000 Binary files a/pr-1195/_/font/roboto-latin-400italic.woff2 and /dev/null differ diff --git a/pr-1195/_/font/roboto-latin-500.woff b/pr-1195/_/font/roboto-latin-500.woff deleted file mode 100644 index 869925869a..0000000000 Binary files a/pr-1195/_/font/roboto-latin-500.woff and /dev/null differ diff --git a/pr-1195/_/font/roboto-latin-500.woff2 b/pr-1195/_/font/roboto-latin-500.woff2 deleted file mode 100644 index 6362d7f64a..0000000000 Binary files a/pr-1195/_/font/roboto-latin-500.woff2 and /dev/null differ diff --git a/pr-1195/_/font/roboto-latin-500italic.woff b/pr-1195/_/font/roboto-latin-500italic.woff deleted file mode 100644 index b794d20ded..0000000000 Binary files a/pr-1195/_/font/roboto-latin-500italic.woff and /dev/null differ diff --git a/pr-1195/_/font/roboto-latin-500italic.woff2 b/pr-1195/_/font/roboto-latin-500italic.woff2 deleted file mode 100644 index 0ff2f813d3..0000000000 Binary files a/pr-1195/_/font/roboto-latin-500italic.woff2 and /dev/null differ diff --git a/pr-1195/_/font/roboto-mono-latin-400.woff b/pr-1195/_/font/roboto-mono-latin-400.woff deleted file mode 100644 index c41382c272..0000000000 Binary files a/pr-1195/_/font/roboto-mono-latin-400.woff and /dev/null differ diff --git a/pr-1195/_/font/roboto-mono-latin-400.woff2 b/pr-1195/_/font/roboto-mono-latin-400.woff2 deleted file mode 100644 index 53d4b505c2..0000000000 Binary files a/pr-1195/_/font/roboto-mono-latin-400.woff2 and /dev/null differ diff --git a/pr-1195/_/font/roboto-mono-latin-500.woff b/pr-1195/_/font/roboto-mono-latin-500.woff deleted file mode 100644 index ba8ff09b3f..0000000000 Binary files a/pr-1195/_/font/roboto-mono-latin-500.woff and /dev/null differ diff --git a/pr-1195/_/font/roboto-mono-latin-500.woff2 b/pr-1195/_/font/roboto-mono-latin-500.woff2 deleted file mode 100644 index ec09ab18f9..0000000000 Binary files a/pr-1195/_/font/roboto-mono-latin-500.woff2 and /dev/null differ diff --git a/pr-1195/_/img/android-chrome-192x192.png b/pr-1195/_/img/android-chrome-192x192.png deleted file mode 100644 index d20d7453d3..0000000000 Binary files a/pr-1195/_/img/android-chrome-192x192.png and /dev/null differ diff --git a/pr-1195/_/img/apple-touch-icon.png b/pr-1195/_/img/apple-touch-icon.png deleted file mode 100644 index 9f1d770862..0000000000 Binary files a/pr-1195/_/img/apple-touch-icon.png and /dev/null differ diff --git a/pr-1195/_/img/back.svg b/pr-1195/_/img/back.svg deleted file mode 100644 index bf7d30e9ac..0000000000 --- a/pr-1195/_/img/back.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/caret.svg b/pr-1195/_/img/caret.svg deleted file mode 100644 index 1af41bc6ef..0000000000 --- a/pr-1195/_/img/caret.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/chevron-down-grey.svg b/pr-1195/_/img/chevron-down-grey.svg deleted file mode 100644 index d12dffc5aa..0000000000 --- a/pr-1195/_/img/chevron-down-grey.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/chevron-down.svg b/pr-1195/_/img/chevron-down.svg deleted file mode 100644 index 44d602a2fd..0000000000 --- a/pr-1195/_/img/chevron-down.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/chevron-left.svg b/pr-1195/_/img/chevron-left.svg deleted file mode 100644 index 3488b4fb8e..0000000000 --- a/pr-1195/_/img/chevron-left.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/chevron-right.svg b/pr-1195/_/img/chevron-right.svg deleted file mode 100644 index 583f52e410..0000000000 --- a/pr-1195/_/img/chevron-right.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/chevron-toggle.svg b/pr-1195/_/img/chevron-toggle.svg deleted file mode 100644 index c1a2e08c8f..0000000000 --- a/pr-1195/_/img/chevron-toggle.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/chevron-up-black.svg b/pr-1195/_/img/chevron-up-black.svg deleted file mode 100644 index b38b18ff98..0000000000 --- a/pr-1195/_/img/chevron-up-black.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/chevron-up-grey.svg b/pr-1195/_/img/chevron-up-grey.svg deleted file mode 100644 index 8912b48e30..0000000000 --- a/pr-1195/_/img/chevron-up-grey.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/chevron.svg b/pr-1195/_/img/chevron.svg deleted file mode 100644 index 40e962aff3..0000000000 --- a/pr-1195/_/img/chevron.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/collapse-icon-filled.svg b/pr-1195/_/img/collapse-icon-filled.svg deleted file mode 100644 index 7830d70652..0000000000 --- a/pr-1195/_/img/collapse-icon-filled.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/collapse-icon-outlined.svg b/pr-1195/_/img/collapse-icon-outlined.svg deleted file mode 100644 index 63ceb1b557..0000000000 --- a/pr-1195/_/img/collapse-icon-outlined.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/docs-white.svg b/pr-1195/_/img/docs-white.svg deleted file mode 100644 index 90cf893e3c..0000000000 --- a/pr-1195/_/img/docs-white.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/docs.svg b/pr-1195/_/img/docs.svg deleted file mode 100644 index 9b712e4c31..0000000000 --- a/pr-1195/_/img/docs.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/favicon-16x16.png b/pr-1195/_/img/favicon-16x16.png deleted file mode 100644 index cfc9eced3f..0000000000 Binary files a/pr-1195/_/img/favicon-16x16.png and /dev/null differ diff --git a/pr-1195/_/img/favicon-32x32.png b/pr-1195/_/img/favicon-32x32.png deleted file mode 100644 index c095788146..0000000000 Binary files a/pr-1195/_/img/favicon-32x32.png and /dev/null differ diff --git a/pr-1195/_/img/favicon.ico b/pr-1195/_/img/favicon.ico deleted file mode 100644 index b6d80d6909..0000000000 Binary files a/pr-1195/_/img/favicon.ico and /dev/null differ diff --git a/pr-1195/_/img/flag-filled.svg b/pr-1195/_/img/flag-filled.svg deleted file mode 100644 index fc8f829b5f..0000000000 --- a/pr-1195/_/img/flag-filled.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/home-filled.svg b/pr-1195/_/img/home-filled.svg deleted file mode 100644 index e9d34a4a66..0000000000 --- a/pr-1195/_/img/home-filled.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/home-o.svg b/pr-1195/_/img/home-o.svg deleted file mode 100644 index 95d193b772..0000000000 --- a/pr-1195/_/img/home-o.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/home-outlined.svg b/pr-1195/_/img/home-outlined.svg deleted file mode 100644 index b90392943a..0000000000 --- a/pr-1195/_/img/home-outlined.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/home.svg b/pr-1195/_/img/home.svg deleted file mode 100644 index 4e96b3545c..0000000000 --- a/pr-1195/_/img/home.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/i-caution-outlined.svg b/pr-1195/_/img/i-caution-outlined.svg deleted file mode 100644 index 421885ef1e..0000000000 --- a/pr-1195/_/img/i-caution-outlined.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/link-icon.svg b/pr-1195/_/img/link-icon.svg deleted file mode 100644 index 3c18af827b..0000000000 --- a/pr-1195/_/img/link-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/lisk-chevron.svg b/pr-1195/_/img/lisk-chevron.svg deleted file mode 100644 index 5ce1e5b300..0000000000 --- a/pr-1195/_/img/lisk-chevron.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/lisk-logo-white.svg b/pr-1195/_/img/lisk-logo-white.svg deleted file mode 100644 index 78a8113817..0000000000 --- a/pr-1195/_/img/lisk-logo-white.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/lisk-symbol.svg b/pr-1195/_/img/lisk-symbol.svg deleted file mode 100644 index db58b714ac..0000000000 --- a/pr-1195/_/img/lisk-symbol.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/lisk-white.svg b/pr-1195/_/img/lisk-white.svg deleted file mode 100644 index 1c06bff233..0000000000 --- a/pr-1195/_/img/lisk-white.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/menu.svg b/pr-1195/_/img/menu.svg deleted file mode 100644 index 8b43b2e009..0000000000 --- a/pr-1195/_/img/menu.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/moon.svg b/pr-1195/_/img/moon.svg deleted file mode 100644 index c4a48a2132..0000000000 --- a/pr-1195/_/img/moon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/octicons-16.svg b/pr-1195/_/img/octicons-16.svg deleted file mode 100644 index e3b4e20220..0000000000 --- a/pr-1195/_/img/octicons-16.svg +++ /dev/null @@ -1 +0,0 @@ -Octicons v11.2.0 by GitHub - https://primer.style/octicons/ - License: MIT \ No newline at end of file diff --git a/pr-1195/_/img/pencil-filled.svg b/pr-1195/_/img/pencil-filled.svg deleted file mode 100644 index da6988499b..0000000000 --- a/pr-1195/_/img/pencil-filled.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/pencil.svg b/pr-1195/_/img/pencil.svg deleted file mode 100644 index 4690810b5a..0000000000 --- a/pr-1195/_/img/pencil.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/pin-outlined.svg b/pr-1195/_/img/pin-outlined.svg deleted file mode 100644 index fde5e45495..0000000000 --- a/pr-1195/_/img/pin-outlined.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/search-outlined-white.svg b/pr-1195/_/img/search-outlined-white.svg deleted file mode 100644 index 85392bfe9f..0000000000 --- a/pr-1195/_/img/search-outlined-white.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/search-outlined.svg b/pr-1195/_/img/search-outlined.svg deleted file mode 100644 index 76e4b03719..0000000000 --- a/pr-1195/_/img/search-outlined.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/starkex-logo-dark.svg b/pr-1195/_/img/starkex-logo-dark.svg deleted file mode 100644 index af97eb518e..0000000000 --- a/pr-1195/_/img/starkex-logo-dark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/starkex-logo-light.svg b/pr-1195/_/img/starkex-logo-light.svg deleted file mode 100644 index 5567d499bf..0000000000 --- a/pr-1195/_/img/starkex-logo-light.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/starknet-logo-dark.svg b/pr-1195/_/img/starknet-logo-dark.svg deleted file mode 100644 index 21598eb79f..0000000000 --- a/pr-1195/_/img/starknet-logo-dark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/starknet-logo-light.svg b/pr-1195/_/img/starknet-logo-light.svg deleted file mode 100644 index 569358e463..0000000000 --- a/pr-1195/_/img/starknet-logo-light.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/starknet-logo-white.svg b/pr-1195/_/img/starknet-logo-white.svg deleted file mode 100644 index 6a92bc47f4..0000000000 --- a/pr-1195/_/img/starknet-logo-white.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/sun-light.svg b/pr-1195/_/img/sun-light.svg deleted file mode 100644 index 7dcaa18f49..0000000000 --- a/pr-1195/_/img/sun-light.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/tip-outlined.svg b/pr-1195/_/img/tip-outlined.svg deleted file mode 100644 index 913bb75694..0000000000 --- a/pr-1195/_/img/tip-outlined.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/img/transaction-flow.png b/pr-1195/_/img/transaction-flow.png deleted file mode 100644 index 386a0677bc..0000000000 Binary files a/pr-1195/_/img/transaction-flow.png and /dev/null differ diff --git a/pr-1195/_/img/warning-outlined.svg b/pr-1195/_/img/warning-outlined.svg deleted file mode 100644 index 98da9bf9b6..0000000000 --- a/pr-1195/_/img/warning-outlined.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pr-1195/_/js/search-ui.js b/pr-1195/_/js/search-ui.js deleted file mode 100644 index 53a8dde4d4..0000000000 --- a/pr-1195/_/js/search-ui.js +++ /dev/null @@ -1,448 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.antoraSearch = {})); -})(this, (function (exports) { 'use strict'; - - function buildHighlightedText (text, positions, snippetLength) { - const textLength = text.length; - const validPositions = positions - .filter((position) => position.length > 0 && position.start + position.length <= textLength); - - if (validPositions.length === 0) { - return [ - { - type: 'text', - text: text.slice(0, snippetLength >= textLength ? textLength : snippetLength) + (snippetLength < textLength ? '...' : ''), - }, - ] - } - - const orderedPositions = validPositions.sort((p1, p2) => p1.start - p2.start); - const range = { - start: 0, - end: textLength, - }; - const firstPosition = orderedPositions[0]; - if (snippetLength && text.length > snippetLength) { - const firstPositionStart = firstPosition.start; - const firstPositionLength = firstPosition.length; - const firstPositionEnd = firstPositionStart + firstPositionLength; - - range.start = firstPositionStart - snippetLength < 0 ? 0 : firstPositionStart - snippetLength; - range.end = firstPositionEnd + snippetLength > textLength ? textLength : firstPositionEnd + snippetLength; - } - const nodes = []; - if (firstPosition.start > 0) { - nodes.push({ - type: 'text', - text: (range.start > 0 ? '...' : '') + text.slice(range.start, firstPosition.start), - }); - } - let lastEndPosition = 0; - const positionsWithinRange = orderedPositions - .filter((position) => position.start >= range.start && position.start + position.length <= range.end); - - for (const position of positionsWithinRange) { - const start = position.start; - const length = position.length; - const end = start + length; - if (lastEndPosition > 0) { - // create text Node from the last end position to the start of the current position - nodes.push({ - type: 'text', - text: text.slice(lastEndPosition, start), - }); - } - nodes.push({ - type: 'mark', - text: text.slice(start, end), - }); - lastEndPosition = end; - } - if (lastEndPosition < range.end) { - nodes.push({ - type: 'text', - text: text.slice(lastEndPosition, range.end) + (range.end < textLength ? '...' : ''), - }); - } - - return nodes - } - - /** - * Taken and adapted from: https://github.com/olivernn/lunr.js/blob/aa5a878f62a6bba1e8e5b95714899e17e8150b38/lib/tokenizer.js#L24-L67 - * @param lunr - * @param text - * @param term - * @return {{start: number, length: number}} - */ - function findTermPosition (lunr, term, text) { - const str = text.toLowerCase(); - const len = str.length; - - for (let sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) { - const char = str.charAt(sliceEnd); - const sliceLength = sliceEnd - sliceStart; - - if ((char.match(lunr.tokenizer.separator) || sliceEnd === len)) { - if (sliceLength > 0) { - const value = str.slice(sliceStart, sliceEnd); - // QUESTION: if we get an exact match without running the pipeline should we stop? - if (value.includes(term)) { - // returns the first match - return { - start: sliceStart, - length: value.length, - } - } - } - sliceStart = sliceEnd + 1; - } - } - - // not found! - return { - start: 0, - length: 0, - } - } - - /* global CustomEvent, globalThis */ - - const config = document.getElementById('search-ui-script').dataset; - const snippetLength = parseInt(config.snippetLength || 100, 10); - const siteRootPath = config.siteRootPath || ''; - appendStylesheet(config.stylesheet); - const searchInput = document.getElementById('search-input'); - const searchResultContainer = document.createElement('div'); - searchResultContainer.classList.add('search-result-dropdown-menu'); - searchInput.parentNode.appendChild(searchResultContainer); - const facetFilterInput = document.querySelector('#search-field input[type=checkbox][data-facet-filter]'); - - function appendStylesheet (href) { - if (!href) return - const link = document.createElement('link'); - link.rel = 'stylesheet'; - link.href = href; - document.head.appendChild(link); - } - - function highlightPageTitle (title, terms) { - const positions = getTermPosition(title, terms); - return buildHighlightedText(title, positions, snippetLength) - } - - function highlightSectionTitle (sectionTitle, terms) { - if (sectionTitle) { - const text = sectionTitle.text; - const positions = getTermPosition(text, terms); - return buildHighlightedText(text, positions, snippetLength) - } - return [] - } - - function highlightText (doc, terms) { - const text = doc.text; - const positions = getTermPosition(text, terms); - return buildHighlightedText(text, positions, snippetLength) - } - - function getTermPosition (text, terms) { - const positions = terms - .map((term) => findTermPosition(globalThis.lunr, term, text)) - .filter((position) => position.length > 0) - .sort((p1, p2) => p1.start - p2.start); - - if (positions.length === 0) { - return [] - } - return positions - } - - function highlightHit (searchMetadata, sectionTitle, doc) { - const terms = {}; - for (const term in searchMetadata) { - const fields = searchMetadata[term]; - for (const field in fields) { - terms[field] = [...(terms[field] || []), term]; - } - } - return { - pageTitleNodes: highlightPageTitle(doc.title, terms.title || []), - sectionTitleNodes: highlightSectionTitle(sectionTitle, terms.title || []), - pageContentNodes: highlightText(doc, terms.text || []), - } - } - - function createSearchResult (result, store, searchResultDataset) { - let currentComponent; - result.forEach(function (item) { - const ids = item.ref.split('-'); - const docId = ids[0]; - const doc = store.documents[docId]; - let sectionTitle; - if (ids.length > 1) { - const titleId = ids[1]; - sectionTitle = doc.titles.filter(function (item) { - return String(item.id) === titleId - })[0]; - } - const metadata = item.matchData.metadata; - const highlightingResult = highlightHit(metadata, sectionTitle, doc); - const componentVersion = store.componentVersions[`${doc.component}/${doc.version}`]; - if (componentVersion !== undefined && currentComponent !== componentVersion) { - const searchResultComponentHeader = document.createElement('div'); - searchResultComponentHeader.classList.add('search-result-component-header'); - const { title, displayVersion } = componentVersion; - const componentVersionText = `${title}${doc.version && displayVersion ? ` ${displayVersion}` : ''}`; - searchResultComponentHeader.appendChild(document.createTextNode(componentVersionText)); - searchResultDataset.appendChild(searchResultComponentHeader); - currentComponent = componentVersion; - } - searchResultDataset.appendChild(createSearchResultItem(doc, sectionTitle, item, highlightingResult)); - }); - } - - function createSearchResultItem (doc, sectionTitle, item, highlightingResult) { - const documentTitle = document.createElement('div'); - documentTitle.classList.add('search-result-document-title'); - highlightingResult.pageTitleNodes.forEach(function (node) { - let element; - if (node.type === 'text') { - element = document.createTextNode(node.text); - } else { - element = document.createElement('span'); - element.classList.add('search-result-highlight'); - element.innerText = node.text; - } - documentTitle.appendChild(element); - }); - const documentHit = document.createElement('div'); - documentHit.classList.add('search-result-document-hit'); - const documentHitLink = document.createElement('a'); - documentHitLink.href = siteRootPath + doc.url + (sectionTitle ? '#' + sectionTitle.hash : ''); - documentHit.appendChild(documentHitLink); - if (highlightingResult.sectionTitleNodes.length > 0) { - const documentSectionTitle = document.createElement('div'); - documentSectionTitle.classList.add('search-result-section-title'); - documentHitLink.appendChild(documentSectionTitle); - highlightingResult.sectionTitleNodes.forEach(function (node) { - let element; - if (node.type === 'text') { - element = document.createTextNode(node.text); - } else { - element = document.createElement('span'); - element.classList.add('search-result-highlight'); - element.innerText = node.text; - } - documentSectionTitle.appendChild(element); - }); - } - highlightingResult.pageContentNodes.forEach(function (node) { - let element; - if (node.type === 'text') { - element = document.createTextNode(node.text); - } else { - element = document.createElement('span'); - element.classList.add('search-result-highlight'); - element.innerText = node.text; - } - documentHitLink.appendChild(element); - }); - const searchResultItem = document.createElement('div'); - searchResultItem.classList.add('search-result-item'); - searchResultItem.appendChild(documentTitle); - searchResultItem.appendChild(documentHit); - searchResultItem.addEventListener('mousedown', function (e) { - e.preventDefault(); - }); - return searchResultItem - } - - function createNoResult (text) { - const searchResultItem = document.createElement('div'); - searchResultItem.classList.add('search-result-item'); - const documentHit = document.createElement('div'); - documentHit.classList.add('search-result-document-hit'); - const message = document.createElement('strong'); - message.innerText = 'No results found for query "' + text + '"'; - documentHit.appendChild(message); - searchResultItem.appendChild(documentHit); - return searchResultItem - } - - function clearSearchResults (reset) { - if (reset === true) searchInput.value = ''; - searchResultContainer.innerHTML = ''; - } - - function filter (result, documents) { - const facetFilter = facetFilterInput && facetFilterInput.checked && facetFilterInput.dataset.facetFilter; - if (facetFilter) { - const [field, value] = facetFilter.split(':'); - return result.filter((item) => { - const ids = item.ref.split('-'); - const docId = ids[0]; - const doc = documents[docId]; - return field in doc && doc[field] === value - }) - } - return result - } - - function search (index, documents, queryString) { - // execute an exact match search - let query; - let result = filter( - index.query(function (lunrQuery) { - const parser = new globalThis.lunr.QueryParser(queryString, lunrQuery); - parser.parse(); - query = lunrQuery; - }), - documents - ); - if (result.length > 0) { - return result - } - // no result, use a begins with search - result = filter( - index.query(function (lunrQuery) { - lunrQuery.clauses = query.clauses.map((clause) => { - if (clause.presence !== globalThis.lunr.Query.presence.PROHIBITED) { - clause.term = clause.term + '*'; - clause.wildcard = globalThis.lunr.Query.wildcard.TRAILING; - clause.usePipeline = false; - } - return clause - }); - }), - documents - ); - if (result.length > 0) { - return result - } - // no result, use a contains search - result = filter( - index.query(function (lunrQuery) { - lunrQuery.clauses = query.clauses.map((clause) => { - if (clause.presence !== globalThis.lunr.Query.presence.PROHIBITED) { - clause.term = '*' + clause.term + '*'; - clause.wildcard = globalThis.lunr.Query.wildcard.LEADING | globalThis.lunr.Query.wildcard.TRAILING; - clause.usePipeline = false; - } - return clause - }); - }), - documents - ); - return result - } - - function searchIndex (index, store, text) { - clearSearchResults(false); - if (text.trim() === '') { - return - } - const result = search(index, store.documents, text); - const searchResultDataset = document.createElement('div'); - searchResultDataset.classList.add('search-result-dataset'); - searchResultContainer.appendChild(searchResultDataset); - if (result.length > 0) { - createSearchResult(result, store, searchResultDataset); - } else { - searchResultDataset.appendChild(createNoResult(text)); - } - } - - function confineEvent (e) { - e.stopPropagation(); - } - - function debounce (func, wait, immediate) { - let timeout; - return function () { - const context = this; - const args = arguments; - const later = function () { - timeout = null; - if (!immediate) func.apply(context, args); - }; - const callNow = immediate && !timeout; - clearTimeout(timeout); - timeout = setTimeout(later, wait); - if (callNow) func.apply(context, args); - } - } - - function enableSearchInput (enabled) { - if (facetFilterInput) { - facetFilterInput.disabled = !enabled; - } - searchInput.disabled = !enabled; - searchInput.title = enabled ? '' : 'Loading index...'; - } - - function isClosed () { - return searchResultContainer.childElementCount === 0 - } - - function executeSearch (index) { - const debug = 'URLSearchParams' in globalThis && new URLSearchParams(globalThis.location.search).has('lunr-debug'); - const query = searchInput.value; - try { - if (!query) return clearSearchResults() - searchIndex(index.index, index.store, query); - } catch (err) { - if (err instanceof globalThis.lunr.QueryParseError) { - if (debug) { - console.debug('Invalid search query: ' + query + ' (' + err.message + ')'); - } - } else { - console.error('Something went wrong while searching', err); - } - } - } - - function toggleFilter (e, index) { - searchInput.focus(); - if (!isClosed()) { - executeSearch(index); - } - } - - function initSearch (lunr, data) { - const start = performance.now(); - const index = { index: lunr.Index.load(data.index), store: data.store }; - enableSearchInput(true); - searchInput.dispatchEvent( - new CustomEvent('loadedindex', { - detail: { - took: performance.now() - start, - }, - }) - ); - searchInput.addEventListener( - 'keydown', - debounce(function (e) { - if (e.key === 'Escape' || e.key === 'Esc') return clearSearchResults(true) - executeSearch(index); - }, 100) - ); - searchInput.addEventListener('click', confineEvent); - searchResultContainer.addEventListener('click', confineEvent); - if (facetFilterInput) { - facetFilterInput.parentElement.addEventListener('click', confineEvent); - facetFilterInput.addEventListener('change', (e) => toggleFilter(e, index)); - } - document.documentElement.addEventListener('click', clearSearchResults); - } - - // disable the search input until the index is loaded - enableSearchInput(false); - - exports.initSearch = initSearch; - - Object.defineProperty(exports, '__esModule', { value: true }); - -})); diff --git a/pr-1195/_/js/site.js b/pr-1195/_/js/site.js deleted file mode 100644 index cad765546b..0000000000 --- a/pr-1195/_/js/site.js +++ /dev/null @@ -1,6 +0,0 @@ -!function(){"use strict";var o=/^sect(\d)$/,i=document.querySelector(".nav-container"),e=document.querySelector(".theme-toggle"),a=document.querySelector(".navbar-burger");a.addEventListener("click",function(e){if(a.classList.contains("is-active"))return u(e);v(e);var t=document.documentElement;t.classList.add("is-clipped--nav"),a.classList.add("is-active"),i.classList.add("is-active");var n=c.getBoundingClientRect(),e=window.innerHeight-Math.round(n.top);Math.round(n.height)!==e&&(c.style.height=e+"px");t.addEventListener("click",u)}),i.addEventListener("click",v),e.addEventListener("click",v);var c,r,s,l=i.querySelector("[data-panel=menu]");function t(){var e,t,n=window.location.hash;if(n&&(n.indexOf("%")&&(n=decodeURIComponent(n)),!(e=l.querySelector('.nav-link[href="'+n+'"]')))){n=document.getElementById(n.slice(1));if(n)for(var i=n,a=document.querySelector("article.doc");(i=i.parentNode)&&i!==a;){var c=i.id;if((c=!c&&(c=o.test(i.className))?(i.firstElementChild||{}).id:c)&&(e=l.querySelector('.nav-link[href="#'+c+'"]')))break}}if(e)t=e.parentNode;else{if(!s)return;e=(t=s).querySelector(".nav-link")}t!==r&&(m(l,".nav-item.is-active").forEach(function(e){e.classList.remove("is-active","is-current-path","is-current-page")}),t.classList.add("is-current-page"),d(r=t),p(l,e))}function d(e){for(var t,n=e.parentNode;!(t=n.classList).contains("nav-menu");)"LI"===n.tagName&&t.contains("nav-item")&&t.add("is-active","is-current-path"),n=n.parentNode;e.classList.add("is-active")}function n(){var e,t,n,i;this.classList.toggle("is-active")&&(e=parseFloat(window.getComputedStyle(this).marginTop),t=this.getBoundingClientRect(),n=l.getBoundingClientRect(),0<(i=(t.bottom-n.top-n.height+e).toFixed())&&(l.scrollTop+=Math.min((t.top-n.top-e).toFixed(),i)))}function u(e){v(e);e=document.documentElement;e.classList.remove("is-clipped--nav"),a.classList.remove("is-active"),i.classList.remove("is-active"),e.removeEventListener("click",u)}function v(e){e.stopPropagation()}function p(e,t){var n=e.getBoundingClientRect(),i=n.height,a=window.getComputedStyle(c);"sticky"===a.position&&(i-=n.top-parseFloat(a.top)),e.scrollTop=Math.max(0,.5*(t.getBoundingClientRect().height-i)+t.offsetTop)}function m(e,t){return[].slice.call(e.querySelectorAll(t))}l&&(e=i.querySelector("[data-panel=explore]"),c=i.querySelector(".nav"),r=l.querySelector(".is-current-page"),(s=r)?(d(r),p(l,r.querySelector(".nav-link"))):l.scrollTop=0,m(l,".nav-item-toggle").forEach(function(e){var t=e.parentElement;e.addEventListener("click",n.bind(t));e=function(e,t){e=e.nextElementSibling;return(!e||!t||e[e.matches?"matches":"msMatchesSelector"](t))&&e}(e,".nav-text");e&&(e.style.cursor="pointer",e.addEventListener("click",n.bind(t)))}),e&&e.querySelector(".context").addEventListener("click",function(){m(c,"[data-panel]").forEach(function(e){e.classList.toggle("is-active")})}),l.addEventListener("mousedown",function(e){1":"")+".sect"+c);r.push("h"+(i+1)+"[id]")}else r.push("h1[id].sect0");n.push(r.join(">"))}var d,s,l,u=(d=n.join(","),s=a.parentNode,[].slice.call((s||document).querySelectorAll(d)));if(!u.length)return e.parentNode.removeChild(e);var f={},m=u.reduce(function(e,t){var o=document.createElement("a");o.textContent=t.textContent,f[o.href="#"+t.id]=o;var n=document.createElement("li");return n.dataset.level=parseInt(t.nodeName.slice(1),10)-1,n.appendChild(o),e.appendChild(n),e},document.createElement("ul")),v=e.querySelector(".toc-menu");v||((v=document.createElement("div")).className="toc-menu");var p=document.createElement("h3");p.textContent=e.dataset.title||"Table of Contents",v.appendChild(p),v.appendChild(m);e=!document.getElementById("toc")&&a.querySelector("h1.page ~ :not(.is-before-toc)");e&&((p=document.createElement("aside")).className="toc embedded",p.appendChild(v.cloneNode(!0)),e.parentNode.insertBefore(p,e)),window.addEventListener("load",function(){h(),window.addEventListener("scroll",h)})}}function h(){var t,e=window.pageYOffset,o=1.15*g(document.documentElement,"fontSize")+150,n=a.offsetTop;if(e&&window.innerHeight+e+2>=document.documentElement.scrollHeight){l=Array.isArray(l)?l:Array(l||0);var i=[],r=u.length-1;return u.forEach(function(e,t){var o="#"+e.id;t===r||e.getBoundingClientRect().top+g(e,"paddingTop")>n?(i.push(o),l.indexOf(o)<0&&f[o].classList.add("is-active")):~l.indexOf(o)&&f[l.shift()].classList.remove("is-active")}),i.forEach((e,t)=>{0!==t&&f[e].classList.remove("is-active")}),m.scrollTop=m.scrollHeight-m.offsetHeight,void(l=1n||void(t="#"+e.id)}),t?t!==l&&(l&&f[l].classList.remove("is-active"),(e=f[t]).classList.add("is-active"),m.scrollHeight>m.offsetHeight&&(m.scrollTop=Math.max(0,e.offsetTop+e.offsetHeight-m.offsetHeight)),l=t):l&&(f[l].classList.remove("is-active"),l=void 0)}function g(e,t){return parseFloat(window.getComputedStyle(e)[t])}}(); -!function(){"use strict";var o=document.querySelector("article.doc"),t=document.querySelector(".toolbar");function i(e){return e&&(~e.indexOf("%")?decodeURIComponent(e):e).slice(1)}function r(e){if(e){if(e.altKey||e.ctrlKey)return;window.location.hash="#"+this.id,e.preventDefault()}window.scrollTo(0,function e(t,n){return o.contains(t)?e(t.offsetParent,t.offsetTop+n):n}(this,0)-t.getBoundingClientRect().bottom)}window.addEventListener("load",function e(t){var n,o;(n=i(window.location.hash))&&(o=document.getElementById(n))&&(r.bind(o)(),setTimeout(r.bind(o),0)),window.removeEventListener("load",e)}),Array.prototype.slice.call(document.querySelectorAll('a[href^="#"]')).forEach(function(e){var t,n;(t=i(e.hash))&&(n=document.getElementById(t))&&e.addEventListener("click",r.bind(n))})}(); -!function(){"use strict";var t,e=document.querySelector(".page-versions .version-menu-toggle");e&&(t=document.querySelector(".page-versions"),e.addEventListener("click",function(e){t.classList.toggle("is-active"),e.stopPropagation()}),document.documentElement.addEventListener("click",function(){t.classList.remove("is-active")}))}(); - -!function(){"use strict";var s=/^\$ (\S[^\\\n]*(\\\n(?!\$ )[^\\\n]*)*)(?=\n|$)/gm,l=/( ) *\\\n *|\\\n( ?) */g,d=/ +$/gm,r=(document.getElementById("site-script")||{dataset:{}}).dataset;[].slice.call(document.querySelectorAll(".doc pre.highlight, .doc .literalblock pre")).forEach(function(e){var t,n,c,i,a;if(e.classList.contains("highlight"))(c=(t=e.querySelector("code")).dataset.lang)&&"console"!==c&&((i=document.createElement("span")).className="source-lang",i.appendChild(document.createTextNode(c)));else{if(!e.innerText.startsWith("$ "))return;var o=e.parentNode.parentNode;o.classList.remove("literalblock"),o.classList.add("listingblock"),e.classList.add("highlightjs","highlight"),(t=document.createElement("code")).className="language-console hljs",t.dataset.lang="console",t.appendChild(e.firstChild),e.appendChild(t)}(c=document.createElement("div")).className="source-toolbox",i&&c.appendChild(i),window.navigator.clipboard&&((n=document.createElement("button")).className="copy-button",n.setAttribute("title","Copy to clipboard"),"svg"===r.svgAs?((o=document.createElementNS("http://www.w3.org/2000/svg","svg")).setAttribute("class","copy-icon"),(i=document.createElementNS("http://www.w3.org/2000/svg","use")).setAttribute("href",window.uiRootPath+"/img/octicons-16.svg#icon-clippy"),o.appendChild(i),n.appendChild(o)):((a=document.createElement("img")).src=window.uiRootPath+"/img/octicons-16.svg#view-clippy",a.alt="copy icon",a.className="copy-icon",n.appendChild(a)),(a=document.createElement("span")).className="copy-toast",a.appendChild(document.createTextNode("Copied!")),n.appendChild(a),c.appendChild(n)),e.appendChild(c),n&&n.addEventListener("click",function(e){var t=e.innerText.replace(d,"");"console"===e.dataset.lang&&t.startsWith("$ ")&&(t=function(e){var t,n=[];for(;t=s.exec(e);)n.push(t[1].replace(l,"$1$2"));return n.join(" && ")}(t));window.navigator.clipboard.writeText(t).then(function(){this.classList.add("clicked"),this.offsetHeight,this.classList.remove("clicked")}.bind(this),function(){})}.bind(n,t))})}(); \ No newline at end of file diff --git a/pr-1195/_/js/vendor/component-versions.js b/pr-1195/_/js/vendor/component-versions.js deleted file mode 100644 index 42ca35373e..0000000000 --- a/pr-1195/_/js/vendor/component-versions.js +++ /dev/null @@ -1 +0,0 @@ -!function(){"use strict";var t,e=document.querySelector(".page-components .component-menu-toggle");e&&(t=document.querySelector(".page-components"),e.addEventListener("click",function(e){t.classList.toggle("is-active"),e.stopPropagation()}),document.documentElement.addEventListener("click",function(){t.classList.remove("is-active")}))}(); \ No newline at end of file diff --git a/pr-1195/_/js/vendor/custom.js b/pr-1195/_/js/vendor/custom.js deleted file mode 100644 index f34a3774e3..0000000000 --- a/pr-1195/_/js/vendor/custom.js +++ /dev/null @@ -1 +0,0 @@ -function switch_style(e){var t,a;for("toggle"==e&&(e="Default"==window.localStorage.getItem("data-theme")?"Dark":"Default"),t=0,a=document.getElementsByTagName("link");te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=t.__.length&&t.__.push({}),t.__[e]}function Q(e,t,n){var r=$(T++,2);return r.t=e,r.__c||(r.__=[n?n(t):re(void 0,t),function(e){e=r.t(r.__[0],e);r.__[0]!==e&&(r.__=[e,r.__[1]],r.__c.setState({}))}],r.__c=q),r.__}function Y(e,t){var n=$(T++,4);!O.__s&&ne(n.__H,t)&&(n.__=e,n.__H=t,q.__h.push(n))}function G(e,t){var n=$(T++,7);return ne(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function Z(){B.forEach(function(t){if(t.__P)try{t.__H.__h.forEach(ee),t.__H.__h.forEach(te),t.__H.__h=[]}catch(e){t.__H.__h=[],O.__e(e,t.__v)}}),B=[]}O.__b=function(e){q=null,V&&V(e)},O.__r=function(e){z&&z(e),T=0;e=(q=e.__c).__H;e&&(e.__h.forEach(ee),e.__h.forEach(te),e.__h=[])},O.diffed=function(e){W&&W(e);e=e.__c;e&&e.__H&&e.__H.__h.length&&(1!==B.push(e)&&L===O.requestAnimationFrame||((L=O.requestAnimationFrame)||function(e){function t(){clearTimeout(r),X&&cancelAnimationFrame(n),setTimeout(e)}var n,r=setTimeout(t,100);X&&(n=requestAnimationFrame(t))})(Z)),q=void 0},O.__c=function(e,n){n.some(function(t){try{t.__h.forEach(ee),t.__h=t.__h.filter(function(e){return!e.__||te(e)})}catch(e){n.some(function(e){e.__h&&(e.__h=[])}),n=[],O.__e(e,t.__v)}}),K&&K(e,n)},O.unmount=function(e){J&&J(e);var t=e.__c;if(t&&t.__H)try{t.__H.__.forEach(ee)}catch(e){O.__e(e,t.__v)}};var X="function"==typeof requestAnimationFrame;function ee(e){var t=q;"function"==typeof e.__c&&e.__c(),q=t}function te(e){var t=q;e.__c=e.__(),q=t}function ne(n,e){return!n||n.length!==e.length||e.some(function(e,t){return e!==n[t]})}function re(e,t){return"function"==typeof t?t(e):t}function oe(e,t){for(var n in t)e[n]=t[n];return e}function ce(e,t){for(var n in e)if("__source"!==n&&!(n in t))return!0;for(var r in t)if("__source"!==r&&e[r]!==t[r])return!0;return!1}function ie(e){this.props=e}(ie.prototype=new I).isPureReactComponent=!0,ie.prototype.shouldComponentUpdate=function(e,t){return ce(this.props,e)||ce(this.state,t)};var ae=O.__b;O.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),ae&&ae(e)};var le="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.forward_ref")||3911,ue=function(e,t){return null==e?null:s(s(e).map(t))},se={map:ue,forEach:ue,count:function(e){return e?s(e).length:0},only:function(e){e=s(e);if(1!==e.length)throw"Children.only";return e[0]},toArray:s},fe=O.__e;function pe(){this.__u=0,this.t=null,this.__b=null}function me(e){var t=e.__.__c;return t&&t.__e&&t.__e(e)}function de(){this.u=null,this.o=null}O.__e=function(e,t,n){if(e.then)for(var r,o=t;o=o.__;)if((r=o.__c)&&r.__c)return null==t.__e&&(t.__e=n.__e,t.__k=n.__k),r.__c(e,t);fe(e,t,n)},(pe.prototype=new I).__c=function(e,t){var n=t.__c,r=this;null==r.t&&(r.t=[]),r.t.push(n);function o(){i||(i=!0,n.componentWillUnmount=n.__c,c?c(a):a())}var c=me(r.__v),i=!1;n.__c=n.componentWillUnmount,n.componentWillUnmount=function(){o(),n.__c&&n.__c()};var a=function(){var e,t;if(!--r.__u)for(r.state.__e&&(e=r.state.__e,r.__v.__k[0]=function t(e,n,r){return e&&(e.__v=null,e.__k=e.__k&&e.__k.map(function(e){return t(e,n,r)}),e.__c&&e.__c.__P===n&&(e.__e&&r.insertBefore(e.__e,e.__d),e.__c.__e=!0,e.__c.__P=r)),e}(e,e.__c.__P,e.__c.__O)),r.setState({__e:r.__b=null});t=r.t.pop();)t.forceUpdate()},t=!0===t.__h;r.__u++||t||r.setState({__e:r.__b=r.__v.__k[0]}),e.then(o,o)},pe.prototype.componentWillUnmount=function(){this.t=[]},pe.prototype.render=function(e,t){var n;this.__b&&(this.__v.__k&&(n=document.createElement("div"),r=this.__v.__k[0].__c,this.__v.__k[0]=function t(e,n,r){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach(function(e){"function"==typeof e.__c&&e.__c()}),e.__c.__H=null),null!=(e=oe({},e)).__c&&(e.__c.__P===r&&(e.__c.__P=n),e.__c=null),e.__k=e.__k&&e.__k.map(function(e){return t(e,n,r)})),e}(this.__b,n,r.__O=r.__P)),this.__b=null);var r=t.__e&&i(P,null,e.fallback);return r&&(r.__h=null),[i(P,null,t.__e?null:e.children),r]};function he(e,t,n){if(++n[1]===n[0]&&e.o.delete(t),e.props.revealOrder&&("t"!==e.props.revealOrder[0]||!e.o.size))for(n=e.u;n;){for(;3>>1,1),n.i.removeChild(e)}}),h(i(ve,{context:n.context},e.__v),n.l)):n.l&&n.componentWillUnmount()}function _e(e,t){return i(ye,{__v:e,i:t})}(de.prototype=new I).__e=function(n){var r=this,o=me(r.__v),c=r.o.get(n);return c[0]++,function(e){function t(){r.props.revealOrder?(c.push(e),he(r,n,c)):e()}o?o(t):t()}},de.prototype.render=function(e){this.u=null,this.o=new Map;var t=s(e.children);e.revealOrder&&"b"===e.revealOrder[0]&&t.reverse();for(var n=t.length;n--;)this.o.set(t[n],this.u=[1,0,this.u]);return e.children},de.prototype.componentDidUpdate=de.prototype.componentDidMount=function(){var n=this;this.o.forEach(function(e,t){he(n,t,e)})};var be="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103,ge=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/;function Oe(e,t,n){return null==t.__k&&(t.textContent=""),h(e,t),"function"==typeof n&&n(),e?e.__c:null}I.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(t){Object.defineProperty(I.prototype,t,{configurable:!0,get:function(){return this["UNSAFE_"+t]},set:function(e){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:e})}})});var Se=O.event;function Ee(){}function we(){return this.cancelBubble}function je(){return this.defaultPrevented}O.event=function(e){return(e=Se?Se(e):e).persist=Ee,e.isPropagationStopped=we,e.isDefaultPrevented=je,e.nativeEvent=e};var Pe,Ie={configurable:!0,get:function(){return this.class}},ke=O.vnode;O.vnode=function(e){var t,n=e.type,r=e.props,o=r;if("string"==typeof n){for(var c in o={},r){var i=r[c];"value"===c&&"defaultValue"in r&&null==i||("defaultValue"===c&&"value"in r&&null==r.value?c="value":"download"===c&&!0===i?i="":/ondoubleclick/i.test(c)?c="ondblclick":/^onchange(textarea|input)/i.test(c+n)&&(t=r.type,!("undefined"!=typeof Symbol&&"symbol"==a(Symbol())?/fil|che|rad/i:/fil|che|ra/i).test(t))?c="oninput":/^on(Ani|Tra|Tou|BeforeInp)/.test(c)?c=c.toLowerCase():ge.test(c)?c=c.replace(/[A-Z0-9]/,"-$&").toLowerCase():null===i&&(i=void 0),o[c]=i)}"select"==n&&o.multiple&&Array.isArray(o.value)&&(o.value=s(r.children).forEach(function(e){e.props.selected=-1!=o.value.indexOf(e.props.value)})),"select"==n&&null!=o.defaultValue&&(o.value=s(r.children).forEach(function(e){e.props.selected=o.multiple?-1!=o.defaultValue.indexOf(e.props.value):o.defaultValue==e.props.value})),e.props=o}n&&r.class!=r.className&&(Ie.enumerable="className"in r,null!=r.className&&(o.class=r.className),Object.defineProperty(o,"className",Ie)),e.$$typeof=be,ke&&ke(e)};var De=O.__r;O.__r=function(e){De&&De(e),Pe=e.__c};ue={ReactCurrentDispatcher:{current:{readContext:function(e){return Pe.__n[e.__c].props.value}}}};function Ce(e){return!!e&&e.$$typeof===be}"object"==("undefined"==typeof performance?"undefined":a(performance))&&"function"==typeof performance.now&&performance.now.bind(performance);var xe={useState:function(e){return F=1,Q(re,e)},useReducer:Q,useEffect:function(e,t){var n=$(T++,3);!O.__s&&ne(n.__H,t)&&(n.__=e,n.__H=t,q.__H.__h.push(n))},useLayoutEffect:Y,useRef:function(e){return F=5,G(function(){return{current:e}},[])},useImperativeHandle:function(e,t,n){F=6,Y(function(){"function"==typeof e?e(t()):e&&(e.current=t())},null==n?n:n.concat(e))},useMemo:G,useCallback:function(e,t){return F=8,G(function(){return e},t)},useContext:function(e){var t=q.context[e.__c],n=$(T++,9);return n.__c=e,t?(null==n.__&&(n.__=!0,t.sub(q)),t.props.value):e.__},useDebugValue:function(e,t){O.useDebugValue&&O.useDebugValue(t?t(e):e)},version:"16.8.0",Children:se,render:Oe,hydrate:function(e,t,n){return R(e,t),"function"==typeof n&&n(),e?e.__c:null},unmountComponentAtNode:function(e){return!!e.__k&&(h(null,e),!0)},createPortal:_e,createElement:i,createContext:function(e,r){e={__c:r="__cC"+U++,__:e,Consumer:function(e,t){return e.children(t)},Provider:function(e){var n,t;return this.getChildContext||(n=[],((t={})[r]=this).getChildContext=function(){return t},this.shouldComponentUpdate=function(e){this.props.value!==e.value&&n.some(l)},this.sub=function(e){n.push(e);var t=e.componentWillUnmount;e.componentWillUnmount=function(){n.splice(n.indexOf(e),1),t&&t.call(e)}}),e.children}};return e.Provider.__=e.Consumer.contextType=e},createFactory:function(e){return i.bind(null,e)},cloneElement:function(e){return Ce(e)?function(e,t,n){var r,o,c,i=arguments,a=w({},e.props);for(c in t)"key"==c?r=t[c]:"ref"==c?o=t[c]:a[c]=t[c];if(3e.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n|<\/mark>)/g,En=RegExp(Sn.source);function wn(e){var t,n,r;if(!e.__docsearch_parent&&!e._highlightResult)return e.hierarchy.lvl0;var o=((e.__docsearch_parent?null===(t=e.__docsearch_parent)||void 0===t||null===(n=t._highlightResult)||void 0===n||null===(r=n.hierarchy)||void 0===r?void 0:r.lvl0:null===(e=e._highlightResult)||void 0===e||null===(o=e.hierarchy)||void 0===o?void 0:o.lvl0)||{}).value;return o&&En.test(o)?o.replace(Sn,""):o}function jn(){return(jn=Object.assign||function(e){for(var t=1;tr.OPENED&&void 0===t&&(clearTimeout(o),t=e(c.responseTimeout,"Socket timeout"))},r.onerror=function(){0===r.status&&(clearTimeout(o),clearTimeout(t),n({content:r.responseText||"Network request failed",status:r.status,isTimedOut:!1}))},r.onload=function(){clearTimeout(o),clearTimeout(t),n({content:r.responseText,status:r.status,isTimedOut:!1})},r.send(c.data)})}},logger:(r=pr,{debug:function(e,t){return r<=sr&&console.debug(e,t),Promise.resolve()},info:function(e,t){return r<=fr&&console.info(e,t),Promise.resolve()},error:function(e,t){return console.error(e,t),Promise.resolve()}}),responsesCache:Hn(),requestsCache:Hn({serializable:!1}),hostsCache:function r(e){var o=_(e.caches),c=o.shift();return void 0===c?{get:function(e,t){var n=2e.length)&&(t=e.length);for(var n=0,r=new Array(t);n",highlightPostTag:"",hitsPerPage:20},h)}]).catch(function(e){throw"RetryError"===e.name&&o("error"),e}).then(function(e){var t=e.results[0],e=t.hits,t=t.nbHits,e=bn(e,wn);return n.context.searchSuggestions.lengthe.length)&&(t=e.length);for(var n=0,r=new Array(t);n"}]});if("object"!=typeof a.keywords)throw Error("Expected object");var t={keyword:["break","const","continue","else","enum","false","for","fn","hint","if","impl","in","match","pub","return","struct","trait","true","type","use","as","assert","do","dyn","extern","let","macro","mod","move","ref","static_assert","static","super","try","typeof","unsafe","where","while","with","yield"].join(" "),literal:["true","false"].join(" "),type:["bool","u8","u16","u32","u64","u128","u256","usize"].join(" ")};return Object.assign(a.keywords,t),Object.assign(a.contains,[...a.contains,{className:"built_in",begin:"selector!"},{className:"built_in",begin:"component!"},{className:"class",beginKeywords:"mod",end:"{",contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{endsParent:!0})]},{className:"class",beginKeywords:"impl",end:";",contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{endsParent:!0})]},{beginKeywords:"let",end:";",contains:[e.inherit({className:"variable",begin:e.UNDERSCORE_IDENT_RE,relevance:0},{endsParent:!0})]}]),Object.assign(a,{name:"Cairo",aliases:["cairo"]}),a}var e;function a(){try{return new RegExp("(?/};return{keywords:o,lexemes:t,contains:[n,a,c,d,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,l,r,{className:"function",lexemes:t,beginKeywords:"function",end:"{",excludeEnd:!0,contains:[s,i,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r]}]}},solAposStringMode:u,solQuoteStringMode:g,HEX_APOS_STRING_MODE:c,HEX_QUOTE_STRING_MODE:d,SOL_NUMBER:l,isNegativeLookbehindAvailable:a};const{baseAssembly:b,solAposStringMode:p,solQuoteStringMode:f,HEX_APOS_STRING_MODE:E,HEX_QUOTE_STRING_MODE:N,SOL_NUMBER:y,isNegativeLookbehindAvailable:h}=t;function s(e){for(var n=p(e),a=f(e),t=[],s=0;s<32;s++)t[s]=s+1;for(var i=t.map(function(e){return 8*e}),r=[],s=0;s<=80;s++)r[s]=s;var l=t.map(function(e){return"bytes"+e}).join(" ")+" ",o=i.map(function(e){return"uint"+e}).join(" ")+" ",c=i.map(function(e){return"int"+e}).join(" ")+" ",d=[].concat.apply([],i.map(function(n){return r.map(function(e){return n+"x"+e})})),u={keyword:"var bool string int uint "+c+o+"byte bytes "+l+"fixed ufixed "+(d.map(function(e){return"fixed"+e}).join(" ")+" ")+(d.map(function(e){return"ufixed"+e}).join(" ")+" ")+"enum struct mapping address new delete if else for while continue break return throw emit try catch revert unchecked _ function modifier event constructor fallback receive error virtual override constant immutable anonymous indexed storage memory calldata external public internal payable pure view private returns import from as using global pragma contract interface library is abstract type assembly",literal:"true false wei gwei szabo finney ether seconds minutes hours days weeks years",built_in:"self this super selfdestruct suicide now msg block tx abi blockhash gasleft assert require Error Panic sha3 sha256 keccak256 ripemd160 ecrecover addmod mulmod log0 log1 log2 log3 log4"},i={className:"operator",begin:/[+\-!~*\/%<>&^|=]/},g=/[A-Za-z_$][A-Za-z_$0-9]*/,c={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,lexemes:g,keywords:u,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n,a,y,"self"]},_={begin:/\.\s*/,end:/[^A-Za-z0-9$_\.]/,excludeBegin:!0,excludeEnd:!0,keywords:{built_in:"gas value selector address length push pop send transfer call callcode delegatecall staticcall balance code codehash wrap unwrap name creationCode runtimeCode interfaceId min max"},relevance:2},o=e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/,lexemes:g,keywords:u}),l="("+["gas","value","salt"].join("|")+")(?=:)",d={className:"built_in",begin:(h()?"(?]+>|\t|)+|(?:\n)))/gm,M="",C="Could not find the language '{}', did you forget to load/include a language module?",x={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0},o="of and for in not or if then".split(" ");function S(e){return e.replace(/&/g,"&").replace(//g,">")}function g(e){return e.nodeName.toLowerCase()}function c(e){return n.test(e)}function d(e){var n,a={},t=Array.prototype.slice.call(arguments,1);for(n in e)a[n]=e[n];return t.forEach(function(e){for(n in e)a[n]=e[n]}),a}function _(e){var s=[];return function e(n,a){for(var t=n.firstChild;t;t=t.nextSibling)3===t.nodeType?a+=t.nodeValue.length:1===t.nodeType&&(s.push({event:"start",offset:a,node:t}),a=e(t,a),g(t).match(/br|hr|img|input/)||s.push({event:"stop",offset:a,node:t}));return a}(e,0),s}function m(e,n,a){var t=0,s="",i=[];function r(){return e.length&&n.length?e[0].offset!==n[0].offset?e[0].offset"}function o(e){s+=""}function c(e){("start"===e.event?l:o)(e.node)}for(;e.length||n.length;){var d=r();if(s+=S(a.substring(t,d[0].offset)),t=d[0].offset,d===e){for(i.reverse().forEach(o);c(d.splice(0,1)[0]),(d=r())===e&&d.length&&d[0].offset===t;);i.reverse().forEach(l)}else"start"===d[0].event?i.push(d[0].node):i.pop(),c(d.splice(0,1)[0])}return s+S(a.substr(t))}function b(n){return n.variants&&!n.cached_variants&&(n.cached_variants=n.variants.map(function(e){return d(n,{variants:null},e)})),n.cached_variants||(function e(n){return!!n&&(n.endsWithParent||e(n.starts))}(n)?[d(n,{starts:n.starts?d(n.starts):null})]:Object.isFrozen(n)?[d(n)]:[n])}function p(e){if(a&&!e.langApiRestored){for(var n in e.langApiRestored=!0,a)e[n]&&(e[a[n]]=e[n]);(e.contains||[]).concat(e.variants||[]).forEach(p)}}function f(n,t){var s={};return"string"==typeof n?a("keyword",n):i(n).forEach(function(e){a(e,n[e])}),s;function a(a,e){(e=t?e.toLowerCase():e).split(" ").forEach(function(e){var n=e.split("|");s[n[0]]=[a,(e=n[0],(n=n[1])?Number(n):function(e){return-1!=o.indexOf(e.toLowerCase())}(e)?0:1)]})}}function T(t){function d(e){return e&&e.source||e}function u(e,n){return new RegExp(d(e),"m"+(t.case_insensitive?"i":"")+(n?"g":""))}function s(s){var i={},r=[],l={},a=1;function e(e,n){i[a]=e,r.push([e,n]),a+=new RegExp(n.toString()+"|").exec("").length-1+1}for(var n=0;n')+n+(a?"":M)}function r(){var e,n,a,t,s;if(!m.keywords)return S(E);for(a="",m.lexemesRe.lastIndex=e=0,n=m.lexemesRe.exec(E);n;)a+=S(E.substring(e,n.index)),t=m,s=n,s=_.case_insensitive?s[0].toLowerCase():s[0],(s=t.keywords.hasOwnProperty(s)&&t.keywords[s])?(N+=s[1],a+=i(s[0],S(n[0]))):a+=S(n[0]),e=m.lexemesRe.lastIndex,n=m.lexemesRe.exec(E);return a+S(E.substr(e))}function l(){p+=(null!=m.subLanguage?function(){var e="string"==typeof m.subLanguage;if(e&&!w[m.subLanguage])return S(E);var n=e?k(m.subLanguage,E,!0,b[m.subLanguage]):A(E,m.subLanguage.length?m.subLanguage:void 0);return 0")+'"');if("end"===n.type){n=d(n);if(null!=n)return n}return E+=a,a.length}var _=D(n);if(!_)throw console.error(C.replace("{}",n)),new Error('Unknown language: "'+n+'"');T(_);for(var m=a||_,b={},p="",f=m;f!==_;f=f.parent)f.className&&(p=i(f.className,"",!0)+p);var E="",N=0;try{for(var y,h,v=0;;){if(m.terminators.lastIndex=v,!(y=m.terminators.exec(s)))break;h=g(s.substring(v,y.index),y),v=y.index+h}for(g(s.substr(v)),f=m;f.parent;f=f.parent)f.className&&(p+=M);return{relevance:N,value:p,illegal:!1,language:n,top:m}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{illegal:!0,relevance:0,value:S(s)};if(O)return{relevance:0,value:S(s),language:n,top:m,errorRaised:e};throw e}}function A(a,e){e=e||x.languages||i(w);var t={relevance:0,value:S(a)},s=t;return e.filter(D).filter(v).forEach(function(e){var n=k(e,a,!1);n.language=e,n.relevance>s.relevance&&(s=n),n.relevance>t.relevance&&(s=t,t=n)}),s.language&&(t.second_best=s),t}function E(e){return x.tabReplace||x.useBR?e.replace(s,function(e,n){return x.useBR&&"\n"===e?"
":x.tabReplace?n.replace(/\t/g,x.tabReplace):""}):e}function N(e){var n,a,t,s,i=function(e){var n,a,t,s,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",a=l.exec(i)){var r=D(a[1]);return r||(console.warn(C.replace("{}",a[1])),console.warn("Falling back to no-highlight mode for this block.",e)),r?a[1]:"no-highlight"}for(n=0,t=(i=i.split(/\s+/)).length;n/g,"\n"):n=e,s=n.textContent,a=i?k(i,s,!0):A(s),(n=_(n)).length&&((t=document.createElement("div")).innerHTML=a.value,a.value=m(n,_(t),s)),a.value=E(a.value),e.innerHTML=a.value,e.className=(t=e.className,s=i,i=a.language,s=s?r[s]:i,i=[t.trim()],t.match(/\bhljs\b/)||i.push("hljs"),-1===t.indexOf(s)&&i.push(s),i.join(" ").trim()),e.result={language:a.language,re:a.relevance},a.second_best&&(e.second_best={language:a.second_best.language,re:a.second_best.relevance}))}function y(){var e;y.called||(y.called=!0,e=document.querySelectorAll("pre code"),u.forEach.call(e,N))}var h={disableAutodetect:!0};function D(e){return e=(e||"").toLowerCase(),w[e]||w[r[e]]}function v(e){e=D(e);return e&&!e.disableAutodetect}return t.highlight=k,t.highlightAuto=A,t.fixMarkup=E,t.highlightBlock=N,t.configure=function(e){x=d(x,e)},t.initHighlighting=y,t.initHighlightingOnLoad=function(){window.addEventListener("DOMContentLoaded",y,!1),window.addEventListener("load",y,!1)},t.registerLanguage=function(n,e){var a;try{a=e(t)}catch(e){if(console.error("Language definition for '{}' could not be registered.".replace("{}",n)),!O)throw e;console.error(e),a=h}p(w[n]=a),a.rawDefinition=e.bind(null,t),a.aliases&&a.aliases.forEach(function(e){r[e]=n})},t.listLanguages=function(){return i(w)},t.getLanguage=D,t.requireLanguage=function(e){var n=D(e);if(n)return n;throw new Error("The '{}' language is required, but not loaded.".replace("{}",e))},t.autoDetection=v,t.inherit=d,t.debugMode=function(){O=!1},t.IDENT_RE="[a-zA-Z]\\w*",t.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",t.NUMBER_RE="\\b\\d+(\\.\\d+)?",t.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",t.BINARY_NUMBER_RE="\\b(0b[01]+)",t.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",t.BACKSLASH_ESCAPE={begin:"\\\\[\\s\\S]",relevance:0},t.APOS_STRING_MODE={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[t.BACKSLASH_ESCAPE]},t.QUOTE_STRING_MODE={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[t.BACKSLASH_ESCAPE]},t.PHRASAL_WORDS_MODE={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},t.COMMENT=function(e,n,a){a=t.inherit({className:"comment",begin:e,end:n,contains:[]},a||{});return a.contains.push(t.PHRASAL_WORDS_MODE),a.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|XXX):",relevance:0}),a},t.C_LINE_COMMENT_MODE=t.COMMENT("//","$"),t.C_BLOCK_COMMENT_MODE=t.COMMENT("/\\*","\\*/"),t.HASH_COMMENT_MODE=t.COMMENT("#","$"),t.NUMBER_MODE={className:"number",begin:t.NUMBER_RE,relevance:0},t.C_NUMBER_MODE={className:"number",begin:t.C_NUMBER_RE,relevance:0},t.BINARY_NUMBER_MODE={className:"number",begin:t.BINARY_NUMBER_RE,relevance:0},t.CSS_NUMBER_MODE={className:"number",begin:t.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},t.REGEXP_MODE={className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[t.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[t.BACKSLASH_ESCAPE]}]},t.TITLE_MODE={className:"title",begin:t.IDENT_RE,relevance:0},t.UNDERSCORE_TITLE_MODE={className:"title",begin:t.UNDERSCORE_IDENT_RE,relevance:0},t.METHOD_GUARD={begin:"\\.\\s*"+t.UNDERSCORE_IDENT_RE,relevance:0},[t.BACKSLASH_ESCAPE,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,t.PHRASAL_WORDS_MODE,t.COMMENT,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.HASH_COMMENT_MODE,t.NUMBER_MODE,t.C_NUMBER_MODE,t.BINARY_NUMBER_MODE,t.CSS_NUMBER_MODE,t.REGEXP_MODE,t.TITLE_MODE,t.UNDERSCORE_TITLE_MODE,t.METHOD_GUARD].forEach(function(e){!function n(a){Object.freeze(a);var t="function"==typeof a;Object.getOwnPropertyNames(a).forEach(function(e){!a.hasOwnProperty(e)||null===a[e]||"object"!=typeof a[e]&&"function"!=typeof a[e]||t&&("caller"===e||"callee"===e||"arguments"===e)||Object.isFrozen(a[e])||n(a[e])});return a}(e)}),t},w="object"==typeof window&&window||"object"==typeof self&&self,void 0===O||O.nodeType?w&&(w.hljs=t({}),"function"==typeof define&&define.amd&&define([],function(){return w.hljs})):t(O);function M(e){return{aliases:["adoc"],contains:[e.COMMENT("^/{4,}\\n","\\n/{4,}$",{relevance:10}),e.COMMENT("^//","$",{relevance:0}),{className:"title",begin:"^\\.\\w.*$"},{begin:"^[=\\*]{4,}\\n",end:"\\n^[=\\*]{4,}$",relevance:10},{className:"section",relevance:10,variants:[{begin:"^(={1,5}) .+?( \\1)?$"},{begin:"^[^\\[\\]\\n]+?\\n[=\\-~\\^\\+]{2,}$"}]},{className:"meta",begin:"^:.+?:",end:"\\s",excludeEnd:!0,relevance:10},{className:"meta",begin:"^\\[.+?\\]$",relevance:0},{className:"quote",begin:"^_{4,}\\n",end:"\\n_{4,}$",relevance:10},{className:"code",begin:"^[\\-\\.]{4,}\\n",end:"\\n[\\-\\.]{4,}$",relevance:10},{begin:"^\\+{4,}\\n",end:"\\n\\+{4,}$",contains:[{begin:"<",end:">",subLanguage:"xml",relevance:0}],relevance:10},{className:"bullet",begin:"^(\\*+|\\-+|\\.+|[^\\n]+?::)\\s+"},{className:"symbol",begin:"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\s+",relevance:10},{className:"strong",begin:"\\B\\*(?![\\*\\s])",end:"(\\n{2}|\\*)",contains:[{begin:"\\\\*\\w",relevance:0}]},{className:"emphasis",begin:"\\B'(?!['\\s])",end:"(\\n{2}|')",contains:[{begin:"\\\\'\\w",relevance:0}],relevance:0},{className:"emphasis",begin:"_(?![_\\s])",end:"(\\n{2}|_)",relevance:0},{className:"string",variants:[{begin:"``.+?''"},{begin:"`.+?'"}]},{className:"code",begin:"(`.+?`|\\+.+?\\+)",relevance:0},{className:"code",begin:"^[ \\t]",end:"$",relevance:0},{begin:"^'{3,}[ \\t]*$",relevance:10},{begin:"(link:)?(http|https|ftp|file|irc|image:?):\\S+\\[.*?\\]",returnBegin:!0,contains:[{begin:"(link|image:?):",relevance:0},{className:"link",begin:"\\w",end:"[^\\[]+",relevance:0},{className:"string",begin:"\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0,relevance:0}],relevance:10}]}}function C(e){var n={className:"variable",variants:[{begin:/\$[\w\d#@][\w\d_]*/},{begin:/\$\{(.*?)}/}]},a={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,n,{className:"variable",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]}]};return{aliases:["sh","zsh"],lexemes:/\b-?[a-z\._]+\b/,keywords:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},contains:[{className:"meta",begin:/^#![^\n]+sh\s*$/,relevance:10},{className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},e.HASH_COMMENT_MODE,a,{className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},n]}}function x(e){var n="a-zA-Z_\\-!.?+*=<>&#'",a={begin:g="["+n+"]["+n+"0-9/;:]*",relevance:0},t={className:"number",begin:"[-+]?\\d+(\\.\\d+)?",relevance:0},s=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),i=e.COMMENT(";","$",{relevance:0}),r={className:"literal",begin:/\b(true|false|nil)\b/},l={begin:"[\\[\\{]",end:"[\\]\\}]"},o={className:"comment",begin:"\\^"+g},c=e.COMMENT("\\^\\{","\\}"),d={className:"symbol",begin:"[:]{1,2}"+g},u={begin:"\\(",end:"\\)"},g={keywords:{"builtin-name":"def defonce cond apply if-not if-let if not not= = < > <= >= == + / * - rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit defmacro defn defn- macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy defstruct first rest cons defprotocol cast coll deftype defrecord last butlast sigs reify second ffirst fnext nfirst nnext defmulti defmethod meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize"},lexemes:g,className:"name",begin:g,starts:n={endsWithParent:!0,relevance:0}},a=[u,s,o,c,i,d,l,t,r,a];return u.contains=[e.COMMENT("comment",""),g,n],n.contains=a,l.contains=a,c.contains=[l],{aliases:["clj"],illegal:/\S/,contains:[u,s,o,c,i,d,l,t,r]}}function S(e){function n(e){return"(?:"+e+")?"}var a="decltype\\(auto\\)",t="[a-zA-Z_]\\w*::",s={className:"keyword",begin:"\\b[a-z\\d_]*_t\\b"},i={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},{begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\((?:.|\n)*?\)\1"/}]},r={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},l={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{"meta-keyword":"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(i,{className:"meta-string"}),{className:"meta-string",begin:/<.*?>/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},o={className:"title",begin:n(t)+e.IDENT_RE,relevance:0},c=n(t)+e.IDENT_RE+"\\s*\\(",d={keyword:"int float while private char char8_t char16_t char32_t catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid wchar_tshort reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignas alignof constexpr consteval constinit decltype concept co_await co_return co_yield requires noexcept static_assert thread_local restrict final override atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr _Bool complex _Complex imaginary _Imaginary",literal:"true false nullptr NULL"},u=[s,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r,i],t={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:d,contains:u.concat([{begin:/\(/,end:/\)/,keywords:d,contains:u.concat(["self"]),relevance:0}]),relevance:0},r={className:"function",begin:"((decltype\\(auto\\)|(?:[a-zA-Z_]\\w*::)?[a-zA-Z_]\\w*(?:<.*?>)?)[\\*&\\s]+)+"+c,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:d,illegal:/[^\w\s\*&:<>]/,contains:[{begin:a,keywords:d,relevance:0},{begin:c,returnBegin:!0,contains:[o],relevance:0},{className:"params",begin:/\(/,end:/\)/,keywords:d,relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,i,r,s,{begin:/\(/,end:/\)/,keywords:d,relevance:0,contains:["self",e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,i,r,s]}]},s,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,l]};return{aliases:["c","cc","h","c++","h++","hpp","hh","hxx","cxx"],keywords:d,illegal:"",keywords:d,contains:["self",s]},{begin:e.IDENT_RE+"::",keywords:d},{className:"class",beginKeywords:"class struct",end:/[{;:]/,contains:[{begin://,contains:["self"]},e.TITLE_MODE]}]),exports:{preprocessor:l,strings:i,keywords:d}}}function T(e){var n={className:"attribute",begin:/\S/,end:":",excludeEnd:!0,starts:{endsWithParent:!0,excludeEnd:!0,contains:[{begin:/[\w-]+\(/,returnBegin:!0,contains:[{className:"built_in",begin:/[\w-]+/},{begin:/\(/,end:/\)/,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.CSS_NUMBER_MODE]}]},e.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.C_BLOCK_COMMENT_MODE,{className:"number",begin:"#[0-9A-Fa-f]+"},{className:"meta",begin:"!important"}]}};return{case_insensitive:!0,illegal:/[=\/|'\$]/,contains:[e.C_BLOCK_COMMENT_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/},{className:"selector-class",begin:/\.[A-Za-z0-9_-]+/},{className:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},{className:"selector-pseudo",begin:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{begin:"@(page|font-face)",lexemes:"@[a-z-]+",keywords:"@page @font-face"},{begin:"@",end:"[{;]",illegal:/:/,returnBegin:!0,contains:[{className:"keyword",begin:/@\-?\w[\w]*(\-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:"and or not only",contains:[{begin:/[a-z-]+:/,className:"attribute"},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0},{begin:"{",end:"}",illegal:/\S/,contains:[e.C_BLOCK_COMMENT_MODE,{begin:/(?:[A-Z\_\.\-]+|--[a-zA-Z0-9_-]+)\s*:/,returnBegin:!0,end:";",endsWithParent:!0,contains:[n]}]}]}}function k(e){return{aliases:["patch"],contains:[{className:"meta",relevance:10,variants:[{begin:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{begin:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{begin:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{className:"comment",variants:[{begin:/Index: /,end:/$/},{begin:/={3,}/,end:/$/},{begin:/^\-{3}/,end:/$/},{begin:/^\*{3} /,end:/$/},{begin:/^\+{3}/,end:/$/},{begin:/^\*{15}$/}]},{className:"addition",begin:"^\\+",end:"$"},{className:"deletion",begin:"^\\-",end:"$"},{className:"addition",begin:"^\\!",end:"$"}]}}function A(e){return{aliases:["docker"],case_insensitive:!0,keywords:"from maintainer expose env arg user onbuild stopsignal",contains:[e.HASH_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{beginKeywords:"run cmd entrypoint volume add copy workdir label healthcheck shell",starts:{end:/[^\\]$/,subLanguage:"bash"}}],illegal:"/}]}]}]},i={className:"string",begin:"~[A-Z](?="+o+")",contains:[{begin:/"/,end:/"/},{begin:/'/,end:/'/},{begin:/\//,end:/\//},{begin:/\|/,end:/\|/},{begin:/\(/,end:/\)/},{begin:/\[/,end:/\]/},{begin:/\{/,end:/\}/},{begin:/\/}]},r={className:"string",contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:/"""/,end:/"""/},{begin:/'''/,end:/'''/},{begin:/~S"""/,end:/"""/,contains:[]},{begin:/~S"/,end:/"/,contains:[]},{begin:/~S'''/,end:/'''/,contains:[]},{begin:/~S'/,end:/'/,contains:[]},{begin:/'/,end:/'/},{begin:/"/,end:/"/}]},l={className:"function",beginKeywords:"def defp defmacro",end:/\B\b/,contains:[e.inherit(e.TITLE_MODE,{begin:n,endsParent:!0})]},o=e.inherit(l,{className:"class",beginKeywords:"defimpl defmodule defprotocol defrecord",end:/\bdo\b|$|;/}),e=[r,i,s,e.HASH_COMMENT_MODE,o,l,{begin:"::"},{className:"symbol",begin:":(?![\\s:])",contains:[r,{begin:"[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?"}],relevance:0},{className:"symbol",begin:n+":(?!:)",relevance:0},{className:"number",begin:"(\\b0o[0-7_]+)|(\\b0b[01_]+)|(\\b0x[0-9a-fA-F_]+)|(-?\\b[1-9][0-9_]*(.[0-9_]+([eE][-+]?[0-9]+)?)?)",relevance:0},{className:"variable",begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{begin:"->"},{begin:"("+e.RE_STARTERS_RE+")\\s*",contains:[e.HASH_COMMENT_MODE,{className:"regexp",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}],relevance:0}];return{lexemes:n,keywords:a,contains:t.contains=e}}function R(e){var n={keyword:"break default func interface select case map struct chan else goto package switch const fallthrough if range type continue for import return var go defer bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune",literal:"true false iota nil",built_in:"append cap close complex copy imag len make new panic print println real recover delete"};return{aliases:["golang"],keywords:n,illegal:"|<-"}]}}function B(e){var n="false synchronized int abstract float private char boolean var static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",a={className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0};return{aliases:["jsp"],keywords:n,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"class",beginKeywords:"class interface",end:/[{;=]/,excludeEnd:!0,keywords:"class interface",illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"new throw return else",relevance:0},{className:"function",begin:"([À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*(\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*)*>)?\\s+)+"+e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:n,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"params",begin:/\(/,end:/\)/,keywords:n,relevance:0,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},a,{className:"meta",begin:"@[A-Za-z]+"}]}}function z(e){var n="<>",a="",t=/<[A-Za-z0-9\\._:-]+/,s=/\/[A-Za-z0-9\\._:-]+>|\/>/,i="[A-Za-z$_][0-9A-Za-z$_]*",r={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},l={className:"number",variants:[{begin:"\\b(0[bB][01]+)n?"},{begin:"\\b(0[oO][0-7]+)n?"},{begin:e.C_NUMBER_RE+"n?"}],relevance:0},o={className:"subst",begin:"\\$\\{",end:"\\}",keywords:r,contains:[]},c={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,o],subLanguage:"xml"}},d={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,o],subLanguage:"css"}},u={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,o]};return o.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,c,d,u,l,e.REGEXP_MODE],o=o.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]),{aliases:["js","jsx","mjs","cjs"],keywords:r,contains:[{className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},{className:"meta",begin:/^#!/,end:/$/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,c,d,u,e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+",contains:[{className:"type",begin:"\\{",end:"\\}",relevance:0},{className:"variable",begin:i+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,l,{begin:/[{,\n]\s*/,relevance:0,contains:[{begin:i+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:i,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+i+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:i},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:r,contains:o}]}]},{className:"",begin:/\s/,end:/\s*/,skip:!0},{variants:[{begin:n,end:a},{begin:t,end:s}],subLanguage:"xml",contains:[{begin:t,end:s,skip:!0,contains:["self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:i}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:o}],illegal:/\[|%/},{begin:/\$[(.]/},e.METHOD_GUARD,{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"extends"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"constructor get set",end:/\{/,excludeEnd:!0}],illegal:/#(?!!)/}}function U(e){var n={literal:"true false null"},a=[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],t=[e.QUOTE_STRING_MODE,e.C_NUMBER_MODE],s={end:",",endsWithParent:!0,excludeEnd:!0,contains:t,keywords:n},i={begin:"{",end:"}",contains:[{className:"attr",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE],illegal:"\\n"},e.inherit(s,{begin:/:/})].concat(a),illegal:"\\S"},s={begin:"\\[",end:"\\]",contains:[e.inherit(s)],illegal:"\\S"};return t.push(i,s),a.forEach(function(e){t.push(e)}),{contains:t,keywords:n,illegal:"\\S"}}function K(e){var n={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual trait volatile transient native default",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},a={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@"},t={className:"subst",begin:"\\${",end:"}",contains:[e.C_NUMBER_MODE]},s={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[c={className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},t]},{begin:"'",end:"'",illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,c,t]}]};t.contains.push(s);var i={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?"},r={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[e.inherit(s,{className:"meta-string"})]}]},l={className:"number",begin:"\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",relevance:0},o=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),c={variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]};return(t=c).variants[1].contains=[c],c.variants[1].contains=[t],{aliases:["kt"],keywords:n,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,o,{className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},a,i,r,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:n,illegal:/fun\s+(<.*>)?[^\s\(]+(\s+[^\s\(]+)\s*=/,relevance:5,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin://,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:n,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[c,e.C_LINE_COMMENT_MODE,o],relevance:0},e.C_LINE_COMMENT_MODE,o,i,r,s,e.C_NUMBER_MODE]},o]},{className:"class",beginKeywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},e.UNDERSCORE_TITLE_MODE,{className:"type",begin://,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,]|$/,excludeBegin:!0,returnEnd:!0},i,r]},s,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:"\n"},l]}}function $(e){return{aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$"},{begin:"^.+?\\n[=-]{2,}$"}]},{begin:"<",end:">",subLanguage:"xml",relevance:0},{className:"bullet",begin:"^\\s*([*+-]|(\\d+\\.))\\s+"},{className:"strong",begin:"[*_]{2}.+?[*_]{2}"},{className:"emphasis",variants:[{begin:"\\*.+?\\*"},{begin:"_.+?_",relevance:0}]},{className:"quote",begin:"^>\\s+",end:"$"},{className:"code",variants:[{begin:"^```\\w*\\s*$",end:"^```[ ]*$"},{begin:"`.+?`"},{begin:"^( {4}|\\t)",end:"$",relevance:0}]},{begin:"^[-\\*]{3,}",end:"$"},{begin:"\\[.+?\\][\\(\\[].*?[\\)\\]]",returnBegin:!0,contains:[{className:"string",begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0,relevance:0},{className:"link",begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}],relevance:10},{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}function P(e){var n={keyword:"rec with let in inherit assert if else then",literal:"true false or and null",built_in:"import abort baseNameOf dirOf isNull builtins map removeAttrs throw toString derivation"},a={className:"subst",begin:/\$\{/,end:/}/,keywords:n},e=[e.NUMBER_MODE,e.HASH_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",contains:[a],variants:[{begin:"''",end:"''"},{begin:'"',end:'"'}]},{begin:/[a-zA-Z0-9-_]+(\s*=)/,returnBegin:!0,relevance:0,contains:[{className:"attr",begin:/\S+/}]}];return{aliases:["nixos"],keywords:n,contains:a.contains=e}}function q(e){var n=/[a-zA-Z@][a-zA-Z0-9_]*/,a="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],keywords:{keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},lexemes:n,illegal:"/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+a.split(" ").join("|")+")\\b",end:"({|$)",excludeEnd:!0,keywords:a,lexemes:n,contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE,relevance:0}]}}function j(e){var n="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",a={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:n},t={begin:"->{",end:"}"},s={variants:[{begin:/\$\d/},{begin:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{begin:/[\$%@][^\s\w{]/,relevance:0}]},i=[e.BACKSLASH_ESCAPE,a,s],e=[s,e.HASH_COMMENT_MODE,e.COMMENT("^\\=\\w","\\=cut",{endsWithParent:!0}),t,{className:"string",contains:i,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*\\<",end:"\\>",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{begin:"{\\w+}",contains:[],relevance:0},{begin:"-?\\w+\\s*\\=\\>",contains:[],relevance:0}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[e.HASH_COMMENT_MODE,{className:"regexp",begin:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",relevance:10},{className:"regexp",begin:"(m|qr)?/",end:"/[a-z]*",contains:[e.BACKSLASH_ESCAPE],relevance:0}]},{className:"function",beginKeywords:"sub",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return a.contains=e,{aliases:["pl","pm"],lexemes:/[\w\.]+/,keywords:n,contains:t.contains=e}}function H(e){var n={begin:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},a={className:"meta",begin:/<\?(php)?|\?>/},t={className:"string",contains:[e.BACKSLASH_ESCAPE,a],variants:[{begin:'b"',end:'"'},{begin:"b'",end:"'"},e.inherit(e.APOS_STRING_MODE,{illegal:null}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null})]},s={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]};return{aliases:["php","php3","php4","php5","php6","php7"],case_insensitive:!0,keywords:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",contains:[e.HASH_COMMENT_MODE,e.COMMENT("//","$",{contains:[a]}),e.COMMENT("/\\*","\\*/",{contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.COMMENT("__halt_compiler.+?;",!1,{endsWithParent:!0,keywords:"__halt_compiler",lexemes:e.UNDERSCORE_IDENT_RE}),{className:"string",begin:/<<<['"]?\w+['"]?$/,end:/^\w+;?$/,contains:[e.BACKSLASH_ESCAPE,{className:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]}]},a,{className:"keyword",begin:/\$this\b/},n,{begin:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{className:"function",beginKeywords:"function",end:/[;{]/,excludeEnd:!0,illegal:"\\$|\\[|%",contains:[e.UNDERSCORE_TITLE_MODE,{className:"params",begin:"\\(",end:"\\)",contains:["self",n,e.C_BLOCK_COMMENT_MODE,t,s]}]},{className:"class",beginKeywords:"class interface",end:"{",excludeEnd:!0,illegal:/[:\(\$"]/,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",end:";",illegal:/[\.']/,contains:[e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"use",end:";",contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"=>"},t,s]}}function Z(e){var n="[ \\t\\f]*",a="("+n+"[:=]"+n+"|[ \\t\\f]+)",t="([^\\\\\\W:= \\t\\f\\n]|\\\\.)+",s="([^\\\\:= \\t\\f\\n]|\\\\.)+",i={end:a,relevance:0,starts:{className:"string",end:/$/,relevance:0,contains:[{begin:"\\\\\\n"}]}};return{case_insensitive:!0,illegal:/\S/,contains:[e.COMMENT("^\\s*[!#]","$"),{begin:t+a,returnBegin:!0,contains:[{className:"attr",begin:t,endsParent:!0,relevance:0}],starts:i},{begin:s+a,returnBegin:!0,relevance:0,contains:[{className:"meta",begin:s,endsParent:!0,relevance:0}],starts:i},{className:"attr",relevance:0,begin:s+n+"$"}]}}function F(e){var n=e.COMMENT("#","$"),a="([A-Za-z_]|::)(\\w|::)*",t=e.inherit(e.TITLE_MODE,{begin:a}),s={className:"variable",begin:"\\$"+a},a={className:"string",contains:[e.BACKSLASH_ESCAPE,s],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/}]};return{aliases:["pp"],contains:[n,s,a,{beginKeywords:"class",end:"\\{|;",illegal:/=/,contains:[t,n]},{beginKeywords:"define",end:/\{/,contains:[{className:"section",begin:e.IDENT_RE,endsParent:!0}]},{begin:e.IDENT_RE+"\\s+\\{",returnBegin:!0,end:/\S/,contains:[{className:"keyword",begin:e.IDENT_RE},{begin:/\{/,end:/\}/,keywords:{keyword:"and case default else elsif false if in import enherits node or true undef unless main settings $string ",literal:"alias audit before loglevel noop require subscribe tag owner ensure group mode name|0 changes context force incl lens load_path onlyif provider returns root show_diff type_check en_address ip_address realname command environment hour monute month monthday special target weekday creates cwd ogoutput refresh refreshonly tries try_sleep umask backup checksum content ctime force ignore links mtime purge recurse recurselimit replace selinux_ignore_defaults selrange selrole seltype seluser source souirce_permissions sourceselect validate_cmd validate_replacement allowdupe attribute_membership auth_membership forcelocal gid ia_load_module members system host_aliases ip allowed_trunk_vlans description device_url duplex encapsulation etherchannel native_vlan speed principals allow_root auth_class auth_type authenticate_user k_of_n mechanisms rule session_owner shared options device fstype enable hasrestart directory present absent link atboot blockdevice device dump pass remounts poller_tag use message withpath adminfile allow_virtual allowcdrom category configfiles flavor install_options instance package_settings platform responsefile status uninstall_options vendor unless_system_user unless_uid binary control flags hasstatus manifest pattern restart running start stop allowdupe auths expiry gid groups home iterations key_membership keys managehome membership password password_max_age password_min_age profile_membership profiles project purge_ssh_keys role_membership roles salt shell uid baseurl cost descr enabled enablegroups exclude failovermethod gpgcheck gpgkey http_caching include includepkgs keepalive metadata_expire metalink mirrorlist priority protect proxy proxy_password proxy_username repo_gpgcheck s3_enabled skip_if_unavailable sslcacert sslclientcert sslclientkey sslverify mounted",built_in:"architecture augeasversion blockdevices boardmanufacturer boardproductname boardserialnumber cfkey dhcp_servers domain ec2_ ec2_userdata facterversion filesystems ldom fqdn gid hardwareisa hardwaremodel hostname id|0 interfaces ipaddress ipaddress_ ipaddress6 ipaddress6_ iphostnumber is_virtual kernel kernelmajversion kernelrelease kernelversion kernelrelease kernelversion lsbdistcodename lsbdistdescription lsbdistid lsbdistrelease lsbmajdistrelease lsbminordistrelease lsbrelease macaddress macaddress_ macosx_buildversion macosx_productname macosx_productversion macosx_productverson_major macosx_productversion_minor manufacturer memoryfree memorysize netmask metmask_ network_ operatingsystem operatingsystemmajrelease operatingsystemrelease osfamily partitions path physicalprocessorcount processor processorcount productname ps puppetversion rubysitedir rubyversion selinux selinux_config_mode selinux_config_policy selinux_current_mode selinux_current_mode selinux_enforced selinux_policyversion serialnumber sp_ sshdsakey sshecdsakey sshrsakey swapencrypted swapfree swapsize timezone type uniqueid uptime uptime_days uptime_hours uptime_seconds uuid virtual vlans xendomains zfs_version zonenae zones zpool_version"},relevance:0,contains:[a,n,{begin:"[a-zA-Z_]+\\s*=>",returnBegin:!0,end:"=>",contains:[{className:"attr",begin:e.IDENT_RE}]},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},s]}],relevance:0}]}}function G(e){var n={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10",built_in:"Ellipsis NotImplemented",literal:"False None True"},a={className:"meta",begin:/^(>>>|\.\.\.) /},t={className:"subst",begin:/\{/,end:/\}/,keywords:n,illegal:/#/},s={begin:/\{\{/,relevance:0},i={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/(u|b)?r?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{begin:/(u|b)?r?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{begin:/(fr|rf|f)'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,a,s,t]},{begin:/(fr|rf|f)"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,s,t]},{begin:/(u|r|ur)'/,end:/'/,relevance:10},{begin:/(u|r|ur)"/,end:/"/,relevance:10},{begin:/(b|br)'/,end:/'/},{begin:/(b|br)"/,end:/"/},{begin:/(fr|rf|f)'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,s,t]},{begin:/(fr|rf|f)"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,s,t]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},r={className:"number",relevance:0,variants:[{begin:e.BINARY_NUMBER_RE+"[lLjJ]?"},{begin:"\\b(0o[0-7]+)[lLjJ]?"},{begin:e.C_NUMBER_RE+"[lLjJ]?"}]},s={className:"params",begin:/\(/,end:/\)/,contains:["self",a,r,i,e.HASH_COMMENT_MODE]};return t.contains=[i,r,a],{aliases:["py","gyp","ipython"],keywords:n,illegal:/(<\/|->|\?)|=>/,contains:[a,r,{beginKeywords:"if",relevance:0},i,e.HASH_COMMENT_MODE,{variants:[{className:"function",beginKeywords:"def"},{className:"class",beginKeywords:"class"}],end:/:/,illegal:/[${=;\n,]/,contains:[e.UNDERSCORE_TITLE_MODE,s,{begin:/->/,endsWithParent:!0,keywords:"None"}]},{className:"meta",begin:/^[\t ]*@/,end:/$/},{begin:/\b(print|exec)\(/}]}}function W(e){var n="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",a={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},t={className:"doctag",begin:"@[A-Za-z]+"},s={begin:"#<",end:">"},i=[e.COMMENT("#","$",{contains:[t]}),e.COMMENT("^\\=begin","^\\=end",{contains:[t],relevance:10}),e.COMMENT("^__END__","\\n$")],r={className:"subst",begin:"#\\{",end:"}",keywords:a},l={className:"string",contains:[e.BACKSLASH_ESCAPE,r],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:"%[qQwWx]?\\(",end:"\\)"},{begin:"%[qQwWx]?\\[",end:"\\]"},{begin:"%[qQwWx]?{",end:"}"},{begin:"%[qQwWx]?<",end:">"},{begin:"%[qQwWx]?/",end:"/"},{begin:"%[qQwWx]?%",end:"%"},{begin:"%[qQwWx]?-",end:"-"},{begin:"%[qQwWx]?\\|",end:"\\|"},{begin:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{begin:/<<[-~]?'?(\w+)(?:.|\n)*?\n\s*\1\b/,returnBegin:!0,contains:[{begin:/<<[-~]?'?/},{begin:/\w+/,endSameAsBegin:!0,contains:[e.BACKSLASH_ESCAPE,r]}]}]},t={className:"params",begin:"\\(",end:"\\)",endsParent:!0,keywords:a},e=[l,s,{className:"class",beginKeywords:"class module",end:"$|;",illegal:/=/,contains:[e.inherit(e.TITLE_MODE,{begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{begin:"<\\s*",contains:[{begin:"("+e.IDENT_RE+"::)?"+e.IDENT_RE}]}].concat(i)},{className:"function",beginKeywords:"def",end:"$|;",contains:[e.inherit(e.TITLE_MODE,{begin:n}),t].concat(i)},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(\\!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[l,{begin:n}],relevance:0},{className:"number",begin:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",relevance:0},{begin:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{className:"params",begin:/\|/,end:/\|/,keywords:a},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[s,{className:"regexp",contains:[e.BACKSLASH_ESCAPE,r],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:"%r{",end:"}[a-z]*"},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(i),relevance:0}].concat(i);return r.contains=e,t.contains=e,{aliases:["rb","gemspec","podspec","thor","irb"],keywords:a,illegal:/\/\*/,contains:i.concat([{begin:/^\s*=>/,starts:{end:"$",contains:e}},{className:"meta",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>)",starts:{end:"$",contains:e}}]).concat(e)}}function Q(e){var n="([ui](8|16|32|64|128|size)|f(32|64))?",a="drop i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize f32 f64 str char bool Box Option Result String Vec Copy Send Sized Sync Drop Fn FnMut FnOnce ToOwned Clone Debug PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator Extend IntoIterator DoubleEndedIterator ExactSizeIterator SliceConcatExt ToString assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! debug_assert! debug_assert_eq! env! panic! file! format! format_args! include_bin! include_str! line! local_data_key! module_path! option_env! print! println! select! stringify! try! unimplemented! unreachable! vec! write! writeln! macro_rules! assert_ne! debug_assert_ne!";return{aliases:["rs"],keywords:{keyword:"abstract as async await become box break const continue crate do dyn else enum extern false final fn for if impl in let loop macro match mod move mut override priv pub ref return self Self static struct super trait true try type typeof unsafe unsized use virtual where while yield",literal:"true false Some None Ok Err",built_in:a},lexemes:e.IDENT_RE+"!?",illegal:""}]}}function X(e){var n={className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"},{begin:"\\${",end:"}"}]},a={className:"string",variants:[{begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:'"""',end:'"""',relevance:10},{begin:'[a-z]+"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE,n]},{className:"string",begin:'[a-z]+"""',end:'"""',contains:[n],relevance:10}]},t={className:"type",begin:"\\b[A-Z][A-Za-z0-9_]*",relevance:0},n={className:"title",begin:/[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/,relevance:0};return{keywords:{literal:"true false null",keyword:"type yield lazy override def with val var sealed abstract private trait object if forSome for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit"},contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,{className:"symbol",begin:"'\\w[\\w\\d_]*(?!')"},t,{className:"function",beginKeywords:"def",end:/[:={\[(\n;]/,excludeEnd:!0,contains:[n]},{className:"class",beginKeywords:"class object trait type",end:/[:={\[\n;]/,excludeEnd:!0,contains:[{beginKeywords:"extends with",relevance:10},{begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[t]},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[t]},n]},e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"}]}}function V(e){return{aliases:["console"],contains:[{className:"meta",begin:"^\\s{0,3}[/\\w\\d\\[\\]()@-]*[>%$#]",starts:{end:"$",subLanguage:"bash"}}]}}function Y(e){var n=e.COMMENT("--","$");return{case_insensitive:!0,illegal:/[<>{}*]/,contains:[{beginKeywords:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment values with",end:/;/,endsWithParent:!0,lexemes:/[\w\.]+/,keywords:{keyword:"as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias all allocate allow alter always analyze ancillary and anti any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound bucket buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain explode export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour hours http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lateral lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minutes minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second seconds section securefile security seed segment select self semi sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tablesample tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace window with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null unknown",built_in:"array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text time timestamp tinyint varchar varchar2 varying void"},contains:[{className:"string",begin:"'",end:"'",contains:[{begin:"''"}]},{className:"string",begin:'"',end:'"',contains:[{begin:'""'}]},{className:"string",begin:"`",end:"`"},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,n,e.HASH_COMMENT_MODE]},e.C_BLOCK_COMMENT_MODE,n,e.HASH_COMMENT_MODE]}}function J(e){var n={keyword:"#available #colorLiteral #column #else #elseif #endif #file #fileLiteral #function #if #imageLiteral #line #selector #sourceLocation _ __COLUMN__ __FILE__ __FUNCTION__ __LINE__ Any as as! as? associatedtype associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false fileprivate final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating open operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet",literal:"true false nil",built_in:"abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip"},a=e.COMMENT("/\\*","\\*/",{contains:["self"]}),t={className:"subst",begin:/\\\(/,end:"\\)",keywords:n,contains:[]},s={className:"string",contains:[e.BACKSLASH_ESCAPE,t],variants:[{begin:/"""/,end:/"""/},{begin:/"/,end:/"/}]},i={className:"number",begin:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",relevance:0};return t.contains=[i],{keywords:n,contains:[s,e.C_LINE_COMMENT_MODE,a,{className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*[!?]"},{className:"type",begin:"\\b[A-Z][\\wÀ-ʸ']*",relevance:0},i,{className:"function",beginKeywords:"func",end:"{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/}),{begin://},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:n,contains:["self",i,s,e.C_BLOCK_COMMENT_MODE,{begin:":"}],illegal:/["']/}],illegal:/\[|%/},{className:"class",beginKeywords:"struct protocol class extension enum",keywords:n,end:"\\{",excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/})]},{className:"meta",begin:"(@discardableResult|@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@objcMembers|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain|@dynamicMemberLookup|@propertyWrapper)"},{beginKeywords:"import",end:/$/,contains:[e.C_LINE_COMMENT_MODE,a]}]}}function ee(e){var n="[A-Za-z$_][0-9A-Za-z$_]*",a={keyword:"in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const class public private protected get set super static implements enum export import declare type namespace abstract as from extends async await",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document any number boolean string void Promise"},t={className:"meta",begin:"@"+n},s={begin:"\\(",end:/\)/,keywords:a,contains:["self",e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,e.NUMBER_MODE]},i={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,t,s]},r={className:"number",variants:[{begin:"\\b(0[bB][01]+)n?"},{begin:"\\b(0[oO][0-7]+)n?"},{begin:e.C_NUMBER_RE+"n?"}],relevance:0},l={className:"subst",begin:"\\$\\{",end:"\\}",keywords:a,contains:[]},o={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,l],subLanguage:"xml"}},c={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,l],subLanguage:"css"}},d={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,l]};return l.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,o,c,d,r,e.REGEXP_MODE],{aliases:["ts"],keywords:a,contains:[{className:"meta",begin:/^\s*['"]use strict['"]/},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,o,c,d,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+e.IDENT_RE+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.IDENT_RE},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:["self",e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]}]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/[\{;]/,excludeEnd:!0,keywords:a,contains:["self",e.inherit(e.TITLE_MODE,{begin:n}),i],illegal:/%/,relevance:0},{beginKeywords:"constructor",end:/[\{;]/,excludeEnd:!0,contains:["self",i]},{begin:/module\./,keywords:{built_in:"module"},relevance:0},{beginKeywords:"module",end:/\{/,excludeEnd:!0},{beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:"interface extends"},{begin:/\$[(.]/},{begin:"\\."+e.IDENT_RE,relevance:0},t,s]}}function ne(e){var n={className:"symbol",begin:"&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;"},a={begin:"\\s",contains:[{className:"meta-keyword",begin:"#?[a-z_][a-z1-9_-]+",illegal:"\\n"}]},t=e.inherit(a,{begin:"\\(",end:"\\)"}),s=e.inherit(e.APOS_STRING_MODE,{className:"meta-string"}),i=e.inherit(e.QUOTE_STRING_MODE,{className:"meta-string"}),r={endsWithParent:!0,illegal:/`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin:"",relevance:10,contains:[a,i,s,t,{begin:"\\[",end:"\\]",contains:[{className:"meta",begin:"",contains:[a,t,i,s]}]}]},e.COMMENT("\x3c!--","--\x3e",{relevance:10}),{begin:"<\\!\\[CDATA\\[",end:"\\]\\]>",relevance:10},n,{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{begin:/<\?(php)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},e.inherit(e.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]},{className:"tag",begin:")",end:">",keywords:{name:"style"},contains:[r],starts:{end:"",returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:")",end:">",keywords:{name:"script"},contains:[r],starts:{end:"<\/script>",returnEnd:!0,subLanguage:["actionscript","javascript","handlebars","xml"]}},{className:"tag",begin:"",contains:[{className:"name",begin:/[^\/><\s]+/,relevance:0},r]}]}}function ae(e){var n="true false yes no null",a={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:"template-variable",variants:[{begin:"{{",end:"}}"},{begin:"%{",end:"}"}]}]};return{case_insensitive:!0,aliases:["yml","YAML","yaml"],contains:[{className:"attr",variants:[{begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---s*$",relevance:10},{className:"string",begin:"[\\|>]([0-9]?[+-])?[ ]*\\n( *)[\\S ]+\\n(\\2[\\S ]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!"+e.UNDERSCORE_IDENT_RE},{className:"type",begin:"!!"+e.UNDERSCORE_IDENT_RE},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"\\-(?=[ ]|$)",relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:n,keywords:{literal:n}},{className:"number",begin:e.C_NUMBER_RE+"\\b"},a]}}!function(){"use strict";O.registerLanguage("asciidoc",M),O.registerLanguage("bash",C),O.registerLanguage("clojure",x),O.registerLanguage("cpp",S),O.registerLanguage("css",T),O.registerLanguage("diff",k),O.registerLanguage("dockerfile",A),O.registerLanguage("elixir",D),O.registerLanguage("go",R),O.registerLanguage("groovy",L),O.registerLanguage("haskell",I),O.registerLanguage("java",B),O.registerLanguage("javascript",z),O.registerLanguage("json",U),O.registerLanguage("kotlin",K),O.registerLanguage("markdown",$),O.registerLanguage("nix",P),O.registerLanguage("objectivec",q),O.registerLanguage("perl",j),O.registerLanguage("php",H),O.registerLanguage("properties",Z),O.registerLanguage("puppet",F),O.registerLanguage("python",G),O.registerLanguage("ruby",W),O.registerLanguage("rust",Q),O.registerLanguage("scala",X),O.registerLanguage("shell",V),O.registerLanguage("sql",Y),O.registerLanguage("swift",J),O.registerLanguage("typescript",ee),O.registerLanguage("xml",ne),O.registerLanguage("yaml",ae),e(O),v(O),[].slice.call(document.querySelectorAll("pre code.hljs[data-lang]")).forEach(function(e){O.highlightBlock(e)})}()}(); \ No newline at end of file diff --git a/pr-1195/_/js/vendor/lunr.js b/pr-1195/_/js/vendor/lunr.js deleted file mode 100644 index cdc94cd390..0000000000 --- a/pr-1195/_/js/vendor/lunr.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 - * Copyright (C) 2020 Oliver Nightingale - * @license MIT - */ -!function(){var e=function(t){var r=new e.Builder;return r.pipeline.add(e.trimmer,e.stopWordFilter,e.stemmer),r.searchPipeline.add(e.stemmer),t.call(r,r),r.build()};e.version="2.3.9",e.utils={},e.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),e.utils.asString=function(e){return void 0===e||null===e?"":e.toString()},e.utils.clone=function(e){if(null===e||void 0===e)return e;for(var t=Object.create(null),r=Object.keys(e),i=0;i0){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); diff --git a/pr-1195/_/js/vendor/medium-zoom.js b/pr-1195/_/js/vendor/medium-zoom.js deleted file mode 100644 index cd8bca304b..0000000000 --- a/pr-1195/_/js/vendor/medium-zoom.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! medium-zoom 1.0.6 | MIT License | https://github.com/francoischalifour/medium-zoom */ -/* eslint-disable */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).mediumZoom=t()}(this,(function(){"use strict";var e=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},c=window.Promise||function(e){function t(){}e(t,t)},u=function(e){var t=e.target;t!==N?-1!==O.indexOf(t)&&w({target:t}):E()},s=function(){if(!A&&T.original){var e=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(k-e)>S.scrollOffset&&setTimeout(E,150)}},f=function(e){var t=e.key||e.keyCode;"Escape"!==t&&"Esc"!==t&&27!==t||E()},p=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t;if(t.background&&(N.style.background=t.background),t.container&&t.container instanceof Object&&(n.container=e({},S.container,t.container)),t.template){var i=o(t.template)?t.template:document.querySelector(t.template);n.template=i}return S=e({},S,n),O.forEach((function(e){e.dispatchEvent(m("medium-zoom:update",{detail:{zoom:j}}))})),j},g=function(){var o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return t(e({},S,o))},v=function(){for(var e=arguments.length,t=Array(e),o=0;o0?t.reduce((function(e,t){return[].concat(e,i(t))}),[]):O;return n.forEach((function(e){e.classList.remove("medium-zoom-image"),e.dispatchEvent(m("medium-zoom:detach",{detail:{zoom:j}}))})),O=O.filter((function(e){return-1===n.indexOf(e)})),j},z=function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return O.forEach((function(n){n.addEventListener("medium-zoom:"+e,t,o)})),x.push({type:"medium-zoom:"+e,listener:t,options:o}),j},y=function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return O.forEach((function(n){n.removeEventListener("medium-zoom:"+e,t,o)})),x=x.filter((function(o){return!(o.type==="medium-zoom:"+e&&o.listener.toString()===t.toString())})),j},b=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.target,r=function(){var t={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},i=void 0,r=void 0;if(S.container)if(S.container instanceof Object)i=(t=e({},t,S.container)).width-t.left-t.right-2*S.margin,r=t.height-t.top-t.bottom-2*S.margin;else{var d=(o(S.container)?S.container:document.querySelector(S.container)).getBoundingClientRect(),m=d.width,a=d.height,l=d.left,c=d.top;t=e({},t,{width:m,height:a,left:l,top:c})}i=i||t.width-2*S.margin,r=r||t.height-2*S.margin;var u=T.zoomedHd||T.original,s=n(u)?i:u.naturalWidth||i,f=n(u)?r:u.naturalHeight||r,p=u.getBoundingClientRect(),g=p.top,v=p.left,h=p.width,z=p.height,y=Math.min(s,i)/h,b=Math.min(f,r)/z,E=Math.min(y,b),w="scale("+E+") translate3d("+((i-h)/2-v+S.margin+t.left)/E+"px, "+((r-z)/2-g+S.margin+t.top)/E+"px, 0)";T.zoomed.style.transform=w,T.zoomedHd&&(T.zoomedHd.style.transform=w)};return new c((function(e){if(i&&-1===O.indexOf(i))e(j);else{if(T.zoomed)e(j);else{if(i)T.original=i;else{if(!(O.length>0))return void e(j);var t=O;T.original=t[0]}if(T.original.dispatchEvent(m("medium-zoom:open",{detail:{zoom:j}})),k=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,A=!0,T.zoomed=d(T.original),document.body.appendChild(N),S.template){var n=o(S.template)?S.template:document.querySelector(S.template);T.template=document.createElement("div"),T.template.appendChild(n.content.cloneNode(!0)),document.body.appendChild(T.template)}if(document.body.appendChild(T.zoomed),window.requestAnimationFrame((function(){document.body.classList.add("medium-zoom--opened")})),T.original.classList.add("medium-zoom-image--hidden"),T.zoomed.classList.add("medium-zoom-image--opened"),T.zoomed.addEventListener("click",E),T.zoomed.addEventListener("transitionend",(function t(){A=!1,T.zoomed.removeEventListener("transitionend",t),T.original.dispatchEvent(m("medium-zoom:opened",{detail:{zoom:j}})),e(j)})),T.original.getAttribute("data-zoom-src")){T.zoomedHd=T.zoomed.cloneNode(),T.zoomedHd.removeAttribute("srcset"),T.zoomedHd.removeAttribute("sizes"),T.zoomedHd.src=T.zoomed.getAttribute("data-zoom-src"),T.zoomedHd.onerror=function(){clearInterval(a),console.warn("Unable to reach the zoom image target "+T.zoomedHd.src),T.zoomedHd=null,r()};var a=setInterval((function(){T.zoomedHd.complete&&(clearInterval(a),T.zoomedHd.classList.add("medium-zoom-image--opened"),T.zoomedHd.addEventListener("click",E),document.body.appendChild(T.zoomedHd),r())}),10)}else if(T.original.hasAttribute("srcset")){T.zoomedHd=T.zoomed.cloneNode(),T.zoomedHd.removeAttribute("sizes"),T.zoomedHd.removeAttribute("loading");var l=T.zoomedHd.addEventListener("load",(function(){T.zoomedHd.removeEventListener("load",l),T.zoomedHd.classList.add("medium-zoom-image--opened"),T.zoomedHd.addEventListener("click",E),document.body.appendChild(T.zoomedHd),r()}))}else r()}}}))},E=function(){return new c((function(e){if(!A&&T.original){A=!0,document.body.classList.remove("medium-zoom--opened"),T.zoomed.style.transform="",T.zoomedHd&&(T.zoomedHd.style.transform=""),T.template&&(T.template.style.transition="opacity 150ms",T.template.style.opacity=0),T.original.dispatchEvent(m("medium-zoom:close",{detail:{zoom:j}})),T.zoomed.addEventListener("transitionend",(function t(){T.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(T.zoomed),T.zoomedHd&&document.body.removeChild(T.zoomedHd),document.body.removeChild(N),T.zoomed.classList.remove("medium-zoom-image--opened"),T.template&&document.body.removeChild(T.template),A=!1,T.zoomed.removeEventListener("transitionend",t),T.original.dispatchEvent(m("medium-zoom:closed",{detail:{zoom:j}})),T.original=null,T.zoomed=null,T.zoomedHd=null,T.template=null,e(j)}))}else e(j)}))},w=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.target;return T.original?E():b({target:t})},L=function(){return S},H=function(){return O},C=function(){return T.original},O=[],x=[],A=!1,k=0,S=l,T={original:null,zoomed:null,zoomedHd:null,template:null};"[object Object]"===Object.prototype.toString.call(a)?S=a:(a||"string"==typeof a)&&v(a),S=e({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},S);var N=r(S.background);document.addEventListener("click",u),document.addEventListener("keyup",f),document.addEventListener("scroll",s),window.addEventListener("resize",E);var j={open:b,close:E,toggle:w,update:p,clone:g,attach:v,detach:h,on:z,off:y,getOptions:L,getImages:H,getZoomedImage:C};return j}})); diff --git a/pr-1195/_/js/vendor/search.js b/pr-1195/_/js/vendor/search.js deleted file mode 100644 index bcaabbac6a..0000000000 --- a/pr-1195/_/js/vendor/search.js +++ /dev/null @@ -1 +0,0 @@ -function e(t,e){var n,r=Object.keys(t);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(t),e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)),r}function t(t){for(var n=1;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n=t.__.length&&t.__.push({}),t.__[e]}function ne(e,t,n){var r=te(W++,2);return r.t=e,r.__c||(r.__=[n?n(t):se(void 0,t),function(e){e=r.t(r.__[0],e);r.__[0]!==e&&(r.__=[e,r.__[1]],r.__c.setState({}))}],r.__c=K),r.__}function re(e,t){var n=te(W++,4);!s.__s&&le(n.__H,t)&&(n.__=e,n.__H=t,K.__h.push(n))}function oe(e,t){var n=te(W++,7);return le(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function ce(){Q.forEach(function(t){if(t.__P)try{t.__H.__h.forEach(ae),t.__H.__h.forEach(ue),t.__H.__h=[]}catch(e){t.__H.__h=[],s.__e(e,t.__v)}}),Q=[]}s.__b=function(e){K=null,Y&&Y(e)},s.__r=function(e){G&&G(e),W=0;e=(K=e.__c).__H;e&&(e.__h.forEach(ae),e.__h.forEach(ue),e.__h=[])},s.diffed=function(e){Z&&Z(e);e=e.__c;e&&e.__H&&e.__H.__h.length&&(1!==Q.push(e)&&J===s.requestAnimationFrame||((J=s.requestAnimationFrame)||function(e){function t(){clearTimeout(r),ie&&cancelAnimationFrame(n),setTimeout(e)}var n,r=setTimeout(t,100);ie&&(n=requestAnimationFrame(t))})(ce)),K=void 0},s.__c=function(e,n){n.some(function(t){try{t.__h.forEach(ae),t.__h=t.__h.filter(function(e){return!e.__||ue(e)})}catch(e){n.some(function(e){e.__h&&(e.__h=[])}),n=[],s.__e(e,t.__v)}}),X&&X(e,n)},s.unmount=function(e){ee&&ee(e);var t=e.__c;if(t&&t.__H)try{t.__H.__.forEach(ae)}catch(e){s.__e(e,t.__v)}};var ie="function"==typeof requestAnimationFrame;function ae(e){var t=K;"function"==typeof e.__c&&e.__c(),K=t}function ue(e){var t=K;e.__c=e.__(),K=t}function le(n,e){return!n||n.length!==e.length||e.some(function(e,t){return e!==n[t]})}function se(e,t){return"function"==typeof t?t(e):t}function fe(e,t){for(var n in t)e[n]=t[n];return e}function pe(e,t){for(var n in e)if("__source"!==n&&!(n in t))return!0;for(var r in t)if("__source"!==r&&e[r]!==t[r])return!0;return!1}function me(e){this.props=e}(me.prototype=new E).isPureReactComponent=!0,me.prototype.shouldComponentUpdate=function(e,t){return pe(this.props,e)||pe(this.state,t)};var de=s.__b;s.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),de&&de(e)};var he="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.forward_ref")||3911,ve=function(e,t){return null==e?null:C(C(e).map(t))},ye={map:ve,forEach:ve,count:function(e){return e?C(e).length:0},only:function(e){e=C(e);if(1!==e.length)throw"Children.only";return e[0]},toArray:C},_e=s.__e;function be(){this.__u=0,this.t=null,this.__b=null}function ge(e){var t=e.__.__c;return t&&t.__e&&t.__e(e)}function Oe(){this.u=null,this.o=null}s.__e=function(e,t,n){if(e.then)for(var r,o=t;o=o.__;)if((r=o.__c)&&r.__c)return null==t.__e&&(t.__e=n.__e,t.__k=n.__k),r.__c(e,t);_e(e,t,n)},(be.prototype=new E).__c=function(e,t){var n=t.__c,r=this;null==r.t&&(r.t=[]),r.t.push(n);function o(){i||(i=!0,n.componentWillUnmount=n.__c,c?c(a):a())}var c=ge(r.__v),i=!1;n.__c=n.componentWillUnmount,n.componentWillUnmount=function(){o(),n.__c&&n.__c()};var a=function(){var e,t;if(!--r.__u)for(r.state.__e&&(e=r.state.__e,r.__v.__k[0]=function t(e,n,r){return e&&(e.__v=null,e.__k=e.__k&&e.__k.map(function(e){return t(e,n,r)}),e.__c&&e.__c.__P===n&&(e.__e&&r.insertBefore(e.__e,e.__d),e.__c.__e=!0,e.__c.__P=r)),e}(e,e.__c.__P,e.__c.__O)),r.setState({__e:r.__b=null});t=r.t.pop();)t.forceUpdate()},t=!0===t.__h;r.__u++||t||r.setState({__e:r.__b=r.__v.__k[0]}),e.then(o,o)},be.prototype.componentWillUnmount=function(){this.t=[]},be.prototype.render=function(e,t){var n;this.__b&&(this.__v.__k&&(n=document.createElement("div"),r=this.__v.__k[0].__c,this.__v.__k[0]=function t(e,n,r){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach(function(e){"function"==typeof e.__c&&e.__c()}),e.__c.__H=null),null!=(e=fe({},e)).__c&&(e.__c.__P===r&&(e.__c.__P=n),e.__c=null),e.__k=e.__k&&e.__k.map(function(e){return t(e,n,r)})),e}(this.__b,n,r.__O=r.__P)),this.__b=null);var r=t.__e&&g(S,null,e.fallback);return r&&(r.__h=null),[g(S,null,t.__e?null:e.children),r]};var Se=function(e,t,n){if(++n[1]===n[0]&&e.o.delete(t),e.props.revealOrder&&("t"!==e.props.revealOrder[0]||!e.o.size))for(n=e.u;n;){for(;3>>1,1),n.i.removeChild(e)}}),B(g(Ee,{context:n.context},e.__v),n.l)):n.l&&n.componentWillUnmount()}function je(e,t){return g(we,{__v:e,i:t})}(Oe.prototype=new E).__e=function(n){var r=this,o=ge(r.__v),c=r.o.get(n);return c[0]++,function(e){function t(){r.props.revealOrder?(c.push(e),Se(r,n,c)):e()}o?o(t):t()}},Oe.prototype.render=function(e){this.u=null,this.o=new Map;var t=C(e.children);e.revealOrder&&"b"===e.revealOrder[0]&&t.reverse();for(var n=t.length;n--;)this.o.set(t[n],this.u=[1,0,this.u]);return e.children},Oe.prototype.componentDidUpdate=Oe.prototype.componentDidMount=function(){var n=this;this.o.forEach(function(e,t){Se(n,t,e)})};var Pe="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103,Ie=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,De=function(e){return("undefined"!=typeof Symbol&&"symbol"==n(Symbol())?/fil|che|rad/i:/fil|che|ra/i).test(e)};function ke(e,t,n){return null==t.__k&&(t.textContent=""),B(e,t),"function"==typeof n&&n(),e?e.__c:null}E.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(t){Object.defineProperty(E.prototype,t,{configurable:!0,get:function(){return this["UNSAFE_"+t]},set:function(e){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:e})}})});var Ce=s.event;function Ae(){}function xe(){return this.cancelBubble}function Ne(){return this.defaultPrevented}s.event=function(e){return(e=Ce?Ce(e):e).persist=Ae,e.isPropagationStopped=xe,e.isDefaultPrevented=Ne,e.nativeEvent=e};var Re,Te={configurable:!0,get:function(){return this.class}},qe=s.vnode;s.vnode=function(e){var t=e.type,n=e.props,r=n;if("string"==typeof t){for(var o in r={},n){var c=n[o];"value"===o&&"defaultValue"in n&&null==c||("defaultValue"===o&&"value"in n&&null==n.value?o="value":"download"===o&&!0===c?c="":/ondoubleclick/i.test(o)?o="ondblclick":/^onchange(textarea|input)/i.test(o+t)&&!De(n.type)?o="oninput":/^on(Ani|Tra|Tou|BeforeInp)/.test(o)?o=o.toLowerCase():Ie.test(o)?o=o.replace(/[A-Z0-9]/,"-$&").toLowerCase():null===c&&(c=void 0),r[o]=c)}"select"==t&&r.multiple&&Array.isArray(r.value)&&(r.value=C(n.children).forEach(function(e){e.props.selected=-1!=r.value.indexOf(e.props.value)})),"select"==t&&null!=r.defaultValue&&(r.value=C(n.children).forEach(function(e){e.props.selected=r.multiple?-1!=r.defaultValue.indexOf(e.props.value):r.defaultValue==e.props.value})),e.props=r}t&&n.class!=n.className&&(Te.enumerable="className"in n,null!=n.className&&(r.class=n.className),Object.defineProperty(r,"className",Te)),e.$$typeof=Pe,qe&&qe(e)};var Le=s.__r;s.__r=function(e){Le&&Le(e),Re=e.__c};var Me={ReactCurrentDispatcher:{current:{readContext:function(e){return Re.__n[e.__c].props.value}}}};function He(e){return!!e&&e.$$typeof===Pe}"object"==("undefined"==typeof performance?"undefined":n(performance))&&"function"==typeof performance.now&&performance.now.bind(performance);var Ue={useState:function(e){return $=1,ne(se,e)},useReducer:ne,useEffect:function(e,t){var n=te(W++,3);!s.__s&&le(n.__H,t)&&(n.__=e,n.__H=t,K.__H.__h.push(n))},useLayoutEffect:re,useRef:function(e){return $=5,oe(function(){return{current:e}},[])},useImperativeHandle:function(e,t,n){$=6,re(function(){"function"==typeof e?e(t()):e&&(e.current=t())},null==n?n:n.concat(e))},useMemo:oe,useCallback:function(e,t){return $=8,oe(function(){return e},t)},useContext:function(e){var t=K.context[e.__c],n=te(W++,9);return n.__c=e,t?(null==n.__&&(n.__=!0,t.sub(K)),t.props.value):e.__},useDebugValue:function(e,t){s.useDebugValue&&s.useDebugValue(t?t(e):e)},version:"16.8.0",Children:ye,render:ke,hydrate:function(e,t,n){return V(e,t),"function"==typeof n&&n(),e?e.__c:null},unmountComponentAtNode:function(e){return!!e.__k&&(B(null,e),!0)},createPortal:je,createElement:g,createContext:function(e,r){e={__c:r="__cC"+d++,__:e,Consumer:function(e,t){return e.children(t)},Provider:function(e){var n,t;return this.getChildContext||(n=[],((t={})[r]=this).getChildContext=function(){return t},this.shouldComponentUpdate=function(e){this.props.value!==e.value&&n.some(P)},this.sub=function(e){n.push(e);var t=e.componentWillUnmount;e.componentWillUnmount=function(){n.splice(n.indexOf(e),1),t&&t.call(e)}}),e.children}};return e.Provider.__=e.Consumer.contextType=e},createFactory:function(e){return g.bind(null,e)},cloneElement:function(e){return He(e)?z.apply(null,arguments):e},createRef:function(){return{current:null}},Fragment:S,isValidElement:He,findDOMNode:function(e){return e&&(e.base||1===e.nodeType&&e)||null},Component:E,PureComponent:me,memo:function(t,r){function n(e){var t=this.props.ref,n=t==e.ref;return!n&&t&&(t.call?t(null):t.current=null),r?!r(this.props,e)||!n:pe(this.props,e)}function e(e){return this.shouldComponentUpdate=n,g(t,e)}return e.displayName="Memo("+(t.displayName||t.name)+")",e.prototype.isReactComponent=!0,e.__f=!0,e},forwardRef:function(o){function e(e,t){var r=fe({},e);return delete r.ref,o(r,(t=e.ref||t)&&("object"!=n(t)||"current"in t)?t:null)}return e.$$typeof=he,(e.render=e).prototype.isReactComponent=e.__f=!0,e.displayName="ForwardRef("+(o.displayName||o.name)+")",e},unstable_batchedUpdates:function(e,t){return e(t)},StrictMode:S,Suspense:be,SuspenseList:Oe,lazy:function(t){var n,r,o;function e(e){if(n||(n=t()).then(function(e){r=e.default||e},function(e){o=e}),o)throw o;if(!r)throw n;return g(r,e)}return e.displayName="Lazy",e.__f=!0,e},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:Me};function Fe(){return Ue.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},Ue.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}function Be(){return Ue.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},Ue.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}var Ve=["translations"];function ze(){return(ze=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n|<\/mark>)/g,sr=RegExp(lr.source);function fr(e){var t,n,r;if(!e.__docsearch_parent&&!e._highlightResult)return e.hierarchy.lvl0;var o=((e.__docsearch_parent?null===(t=e.__docsearch_parent)||void 0===t||null===(n=t._highlightResult)||void 0===n||null===(r=n.hierarchy)||void 0===r?void 0:r.lvl0:null===(e=e._highlightResult)||void 0===e||null===(o=e.hierarchy)||void 0===o?void 0:o.lvl0)||{}).value;return o&&sr.test(o)?o.replace(lr,""):o}function pr(){return(pr=Object.assign||function(e){for(var t=1;tr.OPENED&&void 0===t&&(clearTimeout(o),t=e(c.responseTimeout,"Socket timeout"))},r.onerror=function(){0===r.status&&(clearTimeout(o),clearTimeout(t),n({content:r.responseText||"Network request failed",status:r.status,isTimedOut:!1}))},r.onload=function(){clearTimeout(o),clearTimeout(t),n({content:r.responseText,status:r.status,isTimedOut:!1})},r.send(c.data)})}},logger:(o=lo,{debug:function(e,t){return o<=ao&&console.debug(e,t),Promise.resolve()},info:function(e,t){return o<=uo&&console.info(e,t),Promise.resolve()},error:function(e,t){return console.error(e,t),Promise.resolve()}}),responsesCache:Nr(),requestsCache:Nr({serializable:!1}),hostsCache:xr({caches:[Ar({key:"".concat("4.8.5","-").concat(e)}),Nr()]}),userAgent:Qr("4.8.5").add({segment:"Browser",version:"lite"}),authMode:Lr.WithinQueryParameters};return eo(t(t(t({},e),r),{},{methods:{search:no,searchForFacetValues:ro,multipleQueries:no,multipleSearchForFacetValues:ro,initIndex:function(t){return function(e){return to(t)(e,{methods:{search:co,searchForFacetValues:io,findAnswers:oo}})}}}}))}so.version="4.8.5";var fo=["footer","searchBox"];function po(){return(po=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n",highlightPostTag:"",hitsPerPage:20},h)}]).catch(function(e){throw"RetryError"===e.name&&o("error"),e}).then(function(e){var t=e.results[0],e=t.hits,t=t.nbHits,e=ir(e,function(e){return fr(e)});return n.context.searchSuggestions.lengthe.length)&&(t=e.length);for(var n=0,r=new Array(t);n - - - - - diff --git a/pr-1195/documentation/_images/developers_dark.svg b/pr-1195/documentation/_images/developers_dark.svg deleted file mode 100644 index 29809a4b6f..0000000000 --- a/pr-1195/documentation/_images/developers_dark.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/pr-1195/documentation/_images/how_SN_works.svg b/pr-1195/documentation/_images/how_SN_works.svg deleted file mode 100644 index e3d4073000..0000000000 --- a/pr-1195/documentation/_images/how_SN_works.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/pr-1195/documentation/_images/how_SN_works_dark.svg b/pr-1195/documentation/_images/how_SN_works_dark.svg deleted file mode 100644 index 8085513182..0000000000 --- a/pr-1195/documentation/_images/how_SN_works_dark.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/pr-1195/documentation/_images/roadmap.svg b/pr-1195/documentation/_images/roadmap.svg deleted file mode 100644 index c8e5b5150f..0000000000 --- a/pr-1195/documentation/_images/roadmap.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/pr-1195/documentation/_images/roadmap_dark.svg b/pr-1195/documentation/_images/roadmap_dark.svg deleted file mode 100644 index f308639e38..0000000000 --- a/pr-1195/documentation/_images/roadmap_dark.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/pr-1195/documentation/architecture_and_concepts/Accounts/approach/index.html b/pr-1195/documentation/architecture_and_concepts/Accounts/approach/index.html deleted file mode 100644 index 203063143b..0000000000 --- a/pr-1195/documentation/architecture_and_concepts/Accounts/approach/index.html +++ /dev/null @@ -1,1012 +0,0 @@ - - - - - - Starknet account interface :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Starknet account interface

-
-
-
-

A Starknet account contract must include the following two functions:

-
-
-
    -
  • -

    __validate__

    -
  • -
  • -

    __execute__

    -
  • -
-
-
-

These functions serve distinct purposes to ensure that only the account owner can initiate transactions and that fees can be charged for the resources they use.

-
-
-

Starknet’s account type is inspired by Ethereum’s EIP-4337, where instead of an account being an EOA, it is now a smart contract account with arbitrary verification logic.

-
-
-

Through the use of smart contracts, you are provided with complete flexibility within your account implementation.

-
-
-

While not mandatory at the protocol level, a richer standard interface for accounts was developed by the community. This standard was developed by OpenZeppelin, in a close collaboration with wallet teams and other Core Starknet developers. You can see the traits as defined in Starknet Improvement Proposal #6 (SNIP-6).

-
-
-
-
-

Replay protection

-
-
-

In Starknet, similar to Ethereum, every contract has a nonce, which is sequential. When a transaction is sent from an account, the transaction’s nonce must match the account’s nonce. The account’s nonce is incremented after the transaction is executed, whether or not the transaction is reverted.

-
-
- - - - - -
- - -
-

In Starknet, only the nonce of account contracts, that is, those adhering to the above structure, can be non-zero.

-
-
-

In contrast, in Ethereum, regular smart contracts, known as Contract Accounts, as opposed to Externally Owned Accounts can increment their nonce by deploying smart contracts, that is, executing the CREATE and CREATE2 opcodes.

-
-
-

For more information on accounts in Ethereum, see Ethereum Accounts in the Ethereum documentation.

-
-
-
-
-

A nonce serves two important roles:

-
-
-
    -
  • -

    It guarantees transaction hash uniqueness, which is important for a good user experience.

    -
  • -
  • -

    It provides replay protection to the account. Because the signature refers to a particular nonce, a malicious party cannot replay the transaction.

    -
  • -
-
-
-

While Starknet currently determines the sequential nonce structure at the protocol level, in the future, Starknet will consider a more flexible design, extending account abstraction to nonce management, also referred to as nonce abstraction.

-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/architecture_and_concepts/Accounts/deploying_new_accounts/index.html b/pr-1195/documentation/architecture_and_concepts/Accounts/deploying_new_accounts/index.html deleted file mode 100644 index b477038a31..0000000000 --- a/pr-1195/documentation/architecture_and_concepts/Accounts/deploying_new_accounts/index.html +++ /dev/null @@ -1,1069 +0,0 @@ - - - - - - Deploying a new account :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Deploying a new account

-
-
-
-

You can deploy a new account in the following ways:

-
-
-
    -
  • -

    Send a DEPLOY_ACCOUNT transaction. This method does not require a preexisting account.

    -
  • -
  • -

    Using the Universal Deployer Contract (UDC). This method requires an existing account to send the INVOKE transaction.

    -
  • -
-
-
-

Upon receiving one of these transactions, the sequencer performs the following steps:

-
-
-
    -
  1. -

    Runs the respective validation function in the contract, as follows:

    -
    -
      -
    • -

      When deploying with the DEPLOY_ACCOUNT transaction type, the sequencer executes the __validate_deploy__ function in the deployed contract.

      -
    • -
    • -

      When deploying using the UDC, the sequencer executes the __validate__ function in the contract of the sender’s address.

      -
    • -
    -
    -
  2. -
  3. -

    Executes the constructor with the given arguments.

    -
  4. -
  5. -

    Charges fees from the new account address.

    -
    - - - - - -
    - - -
    -

    If you use a DEPLOY_ACCOUNT transaction, the fees are paid from the address of the deployed account. If you use the UDC, which requires an INVOKE transaction, the fees are paid from the sender’s account. For information on the differences between V1 and V3 INVOKE transactions, see INVOKE transaction in Transaction types.

    -
    -
    -
    -
  6. -
  7. -

    Sets the account’s nonce as follows:

    -
    -
      -
    • -

      1, when deployed with a DEPLOY_ACCOUNT transaction

      -
    • -
    • -

      0, when deployed with the UDC

      -
    • -
    -
    -
  8. -
-
-
-
-
-

Deploying a new account with Starkli

-
-
-

Starkli simplifies account creation, whether you create an account as a Starknet wallet account, or using the UDC.

-
-
-

To create and deploy a new account, use Starkli’s starkli account command.

-
-
-

For more information on creating a new account as a Starknet wallet account with a DEPLOY_ACCOUNT transaction, or by using the UDC with an INVOKE transaction , see Accounts in the Starkli Book.

-
-
-
-
-

DEPLOY_ACCOUNT constructor restrictions

-
-
-

The constructor of the DEPLOY_ACCOUNT transaction has the following limitations:

-
-
-
    -
  • -

    Restricted access to sequencer_address in the get_execution_info syscall. The syscall returns zero values for sequencer_address

    -
  • -
  • -

    Restricted access to the following syscalls:

    -
    -
      -
    • -

      get_block_hash for Cairo contracts

      -
    • -
    • -

      get_sequencer_address for Cairo 0 contracts

      -
    • -
    -
    -
  • -
-
-
-
-
-

Additional resources

-
-
- -
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/architecture_and_concepts/Accounts/introduction/index.html b/pr-1195/documentation/architecture_and_concepts/Accounts/introduction/index.html deleted file mode 100644 index 324609e889..0000000000 --- a/pr-1195/documentation/architecture_and_concepts/Accounts/introduction/index.html +++ /dev/null @@ -1,1041 +0,0 @@ - - - - - - What is an account? :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

What is an account?

-
-
-
-

An account represents a user onchain, and enables that user to interact with the blockchain.

-
-
-

Through an account, you can send transactions and interact with other contracts. In order for you to own an onchain asset, such as an ERC-20 token or an NFT, that asset must be associated with your account address.

-
-
-
-
-

Ethereum account structure

-
-
-

Within Ethereum individual user accounts are known as Externally Owned Accounts (EOAs).

-
-
-

EOAs differ from smart contracts in that EOAs are not controlled by code, but rather by a pair of private and public keys.

-
-
-

The account’s address is derived from those keys and only by possessing the private key can you initiate transactions from an account. While Ethereum contracts are passive, that is, they can only change if they were called inside a transaction, EOAs can initiate transactions.

-
-
-

While simple, because the signature scheme is fixed, EOAs have some drawbacks, including the following:

-
-
-
    -
  • -

    Control over the private key gives complete control over -the account, so you must keep your seed phrase secure yet accessible.

    -
  • -
  • -

    Limited flexibility surrounding wallet functionality

    -
  • -
-
-
-

EIP-4337 is a design proposal for Ethereum that outlines account abstraction, whereby all accounts are managed via a dedicated smart contract on the Ethereum network, as a way to increase flexibility and usability. You can add custom logic on top of the basic EOA functionality, thereby bringing account abstraction into Ethereum.

-
-
-
-
-

What is Account Abstraction?

-
-
-

Account abstraction enables more flexible account management. Rather than the protocol determining an account’s behavior, an account contract, which is a smart contract with programmable logic, defines a user’s account.

-
-
-

Using account abstraction you can now program how your account functions.

-
-
-

For example, you can:

-
-
-
    -
  • -

    Determine what it means for a signature to be valid, or what contracts your account is allowed to interact with. This is known as signature abstraction.

    -
  • -
  • -

    Pay transaction fees in different tokens. This is known as fee abstraction.

    -
  • -
  • -

    Design your own replay protection mechanism and allow sending multiple uncoupled transactions in parallel.

    -
    -

    In Ethereum, you cannot send two transactions in parallel, you must wait for confirmation of the first before sending the second. Otherwise, the second transaction can be rejected due to an invalid nonce. With account abstraction, a sequential nonce is not required. This is known as nonce abstraction.

    -
    -
  • -
-
-
-

Today, Starknet offers signature abstraction. In the future, we will enrich the current account abstraction design. For example, see the paymaster proposal for fee abstraction in the Starknet Community Forum.

-
-
-
-
-

Examples of customizing account functionality

-
-
-

Two examples of how you might program an account to function using account abstraction are:

-
-
- - - - - - - - - -
-Social recovery - -

A process where if you lose your wallet, you are able to retrieve it via a selected social network, vastly improving the typical experience of wallet recovery.

-
-Operating your account via facial recognition - -

With signature abstraction, you can use your phone’s native hardware to sign transactions, making it practically impossible to take control of another user’s account, even if your phone is stolen.

-
-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/architecture_and_concepts/Accounts/simplified_transaction_flow/index.html b/pr-1195/documentation/architecture_and_concepts/Accounts/simplified_transaction_flow/index.html deleted file mode 100644 index 7c41aa1fbe..0000000000 --- a/pr-1195/documentation/architecture_and_concepts/Accounts/simplified_transaction_flow/index.html +++ /dev/null @@ -1,973 +0,0 @@ - - - - - - Simplified transaction flow :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Simplified transaction flow

-
-
-
-

The key stages of transaction lifetime are:

-
-
-
    -
  1. -

    The sequencer selects a transaction from the mempool and calls the __validate__ function.

    -
  2. -
  3. -

    If the transaction is valid, the sequencer calls the __execute__ function.

    -
  4. -
  5. -

    If __execute__ runs successfully, the sequencer includes the transaction in the block, charges the fee, and proceeds to work on the next transaction.

    -
  6. -
  7. -

    After completing the block, the sequencer sends the block to the prover.

    -
  8. -
-
-
-
-
-

The payment mechanism

-
-
-

The sequencer receives fees in ETH in return for including transactions in a block.

-
-
-

For more details on how the transaction fee is computed, see Gas and transaction fees.

-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/architecture_and_concepts/Accounts/universal-deployer/index.html b/pr-1195/documentation/architecture_and_concepts/Accounts/universal-deployer/index.html deleted file mode 100644 index 6d815a33fb..0000000000 --- a/pr-1195/documentation/architecture_and_concepts/Accounts/universal-deployer/index.html +++ /dev/null @@ -1,1151 +0,0 @@ - - - - - - Universal Deployer Contract (UDC) :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Universal Deployer Contract (UDC)

-
-
-
-

The Universal Deployer Contract (UDC) is a singleton smart contract that wraps the deploy syscall to expose it to any contract that doesn’t implement it, such as account contracts. You can think of it as a standardized generic factory for Starknet contracts.

-
-
-

And since Starknet has no deployment transaction type, it offers a standardized way to deploy smart contracts by following the standard deployer interface and emitting a ContractDeployed event.

-
-
-

For more information see the proposal for the standard deployer interface. -For details on the motivation and the decision making process, see the Universal Deployer Contract proposal.

-
-
-
-
-

UDC address

-
-
-

The UDC address is 0x041a78e741e5af2fec34b695679bc6891742439f7afb8484ecd7766661ad02bf in Mainnet, Goerli testnet, Sepolia testnet, and starknet-devnet. This address might change in the future when it is migrated to a modern version of Cairo.

-
-
-
-
-

Interface

-
-
-
-
trait IUniversalDeployer {
-    fn deployContract(
-        class_hash: ClassHash,
-        salt: felt252,
-        unique: bool,
-        calldata: Span<felt252>
-    ) -> ContractAddress;
-}
-
-
-
-
-
-

Deploying a contract with the UDC

-
-
-
Procedure
-
    -
  1. -

    Declare the contract with a DECLARE transaction, or ensure that the contract has been declared.

    -
    -

    For more information, see the DECLARE transaction.

    -
    -
  2. -
  3. -

    Call the deployContract function in the UDC.

    -
  4. -
-
-
-
Example implementation in Cairo:
-
-
#[starknet::interface]
-trait IUniversalDeployer<TContractState> {
-    fn deployContract(
-        ref self: TContractState,
-        class_hash: ClassHash,
-        salt: felt252,
-        unique: bool,
-        calldata: Span<felt252>
-    ) -> ContractAddress; }
-
-const UDC_ADDRESS: felt252 = 0x041a78e741e5af2fec34b695679bc6891742439f7afb8484ecd7766661ad02bf;
-
-fn deploy() -> ContractAddress {
-    let dispatcher = IUniversalDeployerDispatcher {
-        contract_address: UDC_ADDRESS.try_into().unwrap()
-    };
-
-    // deployment parameters
-    let class_hash = class_hash_const::<
-       0x5c478ee27f2112411f86f207605b2e2c58cdb647bac0df27f660ef2252359c6
-    >();
-    let salt = 1234567879;
-    let unique = false;
-    let mut calldata = array![];
-
-    // the UDC returns the deployed contract address
-    dispatcher.deployContract(class_hash, salt, unique, calldata.span())
-}
-
-
-
-
-
-

Deployment types

-
-
-

The Universal Deployer Contract offers two types of addresses to deploy: origin-dependent and origin-independent. -As the names suggest, the origin-dependent type includes the deployer’s address in the address calculation, -whereas, the origin-independent type does not. -The unique boolean parameter ultimately determines the type of deployment.

-
-
- - - - - -
- - -
-

When deploying a contract that uses get_caller_address in the constructor calldata, remember that the UDC, not the account, deploys that contract. -Therefore, querying get_caller_address in a contract’s constructor returns the UDC’s address, not the account’s address.

-
-
-
-
-

Origin-dependent

-
-

By making deployments dependent upon the origin address, users can reserve a whole address space to prevent someone else from taking ownership of the address.

-
-
-

Only the owner of the origin address can deploy to those addresses.

-
-
-

Achieving this type of deployment necessitates that the origin sets unique to true in the deployContract call. -Under the hood, the function call leverages the origin’s address and creates a hashchain by hashing the origin’s address with the given salt.

-
-
-

To deploy a unique contract address pass:

-
-
-
-
let deployed_addr = udc.deployContract(class_hash, salt, true, calldata.span());
-
-
-
-
-

Origin-independent

-
-

Origin-independent contract deployments create contract addresses independent of the deployer and the UDC instance. -Instead, only the class hash, salt, and constructor arguments determine the address. -This type of deployment enables redeployments of accounts and known systems across multiple networks. -To deploy a reproducible deployment, set unique to false.

-
-
-
-
let deployed_addr = udc.deployContract(class_hash, salt, false, calldata.span());
-
-
-
-
-
-
-

Deploying the UDC

-
-
- - - - - -
- - -
-

The UDC has already been deployed on most networks and development environments. -The standard requires the UDC to be deployed passing deploy_from_zero=true and salt=0 as arguments to the deploy syscall. This results in a deterministic and predictable address across all instances of Starknet, facilitating SDK integration and reproducibility of deployments.

-
-
-
-
-
-
-

API specification

-
-
-

deployContract method

-
-

Deploy a contract through the Universal Deployer Contract.

-
-
-
-
fn deployContract(
-    classHash: ClassHash,
-    salt: felt252,
-    unique: bool,
-    calldata: Span<felt252>
-) -> ContractAddress
-
-
-
-
-

ContractDeployed event

-
-

Emitted when deployer deploys a contract through the Universal Deployer Contract.

-
-
-
-
#[derive(Drop, starknet::Event)]
-struct ContractDeployed {
-    address: ContractAddress,
-    deployer: ContractAddress,
-    unique: bool,
-    classHash: ClassHash,
-    calldata: Span<felt252>,
-    salt: felt252,
-}
-
-
-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/architecture_and_concepts/Accounts/validate_and_execute/index.html b/pr-1195/documentation/architecture_and_concepts/Accounts/validate_and_execute/index.html deleted file mode 100644 index 6d1417a50c..0000000000 --- a/pr-1195/documentation/architecture_and_concepts/Accounts/validate_and_execute/index.html +++ /dev/null @@ -1,1053 +0,0 @@ - - - - - - Validate and execute :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Validate and execute

-
-
-
-

As previously stated, Starknet’s account structure is not completely arbitrary, but must include the following two functions, which account transactions call:

-
-
-
    -
  • -

    __validate__

    -
  • -
  • -

    __execute__

    -
  • -
-
-
-

Separating the __validate__ and __execute__ functions guarantees payment to sequencers for work completed and protects them from Denial of Service (DoS) attacks.

-
-
-
-
-

The validate function

-
-
-

The __validate__ function ensures that any transaction submitted was indeed initiated by the account owner and therefore will not take up unjustified resources during the execution process.

-
-
-

Without this mechanism, a forged transaction can result in the sequencer stealing the user’s funds. -In short, __validate__ ensures that the sequencer may only include transactions that were approved by the account owner.

-
-
-

The arbitrary logic allowed in the __validate__ function gives the account’s designer the ability to determine what it means for a transaction to be valid. This gives rise to the usage of different signature schemes -and other exotic accounts.

-
-
-
-
-

Invalid transactions

-
-
-

When the __validate__ function fails, no fee will be taken from the account in question.

-
-
-
-
-

Validate limitations

-
-
-

There are some limitations set on the __validate__ function. The purpose of these limitations is twofold:

-
-
-
    -
  • -

    We want to avoid the sequencer having to do a lot of work only to discover that the validation failed and the sequencer is then not eligible to charge a fee (if this was possible, the sequencer would be completely exposed to DOS attacks). Validation, while now abstract and in control of the account owner rather than the protocol, should still be a simple operation. This is why a maximum steps limitation on the __validate__ function is currently in place on the Starknet network. For more information, see Current limits.

    -
  • -
  • -

    Even if the validation is simple, we could still face the following attack:

    -
    -
      -
    • -

      An attacker fills the mempool with transactions that are valid at time T.

      -
    • -
    • -

      A sequencer may start executing them, thinking that at the time he will produce his block, they will still be valid.

      -
    • -
    • -

      However, shortly after, at time T', the attacker sends one transaction that somehow invalidates all the previous ones and makes sure it’s included before the sequencer gets to publish his block (the attacker may do this by offering higher fees for this one transaction).

      -
    • -
    -
    -
  • -
-
-
-

As a concrete example, think of many __validate__ functions checking that the value of a storage slot is 1 and the attacker’s transaction later sets it to 0. To handle this issue, we add some further limitations.

-
-
-

Currently, Starknet enforces that __validate__ does not call external contracts.

-
-
- - - - - -
- - -
-

The property that we achieve with the above restrictions is that a single storage update may only invalidate transactions from a single account (this is the best we can do, an account can always invalidate its own past transactions by changing its keys). Thus, the price (in fees) required to invalidate transactions in the mempool is linear in the number of unique accounts that we want to invalidate.

-
-
-
-
-
-
-

The execute function

-
-
-

The purpose of the __execute__ function is to abstract away the remaining actions performed by a transaction.

-
-
-

In Ethereum, a transaction is necessarily a call to a specific function in a smart contract. With the __execute__ abstraction, the account designer controls the flow of the transaction. For example, multicalls can be natively supported in your account, saving the need to send multiple transactions (in practice, this is even harder to manage without multicalls due to nonces).

-
-
-
-
-

Reverted transactions

-
-
-

A transaction is considered reverted when the __execute__ function failed. A reverted transaction is included in a block and the sequencer is eligible to charge a fee for the work done up to the point of failure, similar to Ethereum.

-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/architecture_and_concepts/Cryptography/hash-functions/index.html b/pr-1195/documentation/architecture_and_concepts/Cryptography/hash-functions/index.html deleted file mode 100644 index fe4628cbdc..0000000000 --- a/pr-1195/documentation/architecture_and_concepts/Cryptography/hash-functions/index.html +++ /dev/null @@ -1,1094 +0,0 @@ - - - - - - Hash functions :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Hash functions

-
-

Domain and range

-
-
-

All hashes outputs are eventually mapped to elements in \(\mathbb{F}_P\), where \(P=2^{251}+17\cdot 2^{192}+1\).

-
-
-

There are three hash functions used throughout Starknet’s specifications:

-
-
-
    -
  • -

    \(sn\_keccak: \{0,1\}^* \rightarrow \mathbb{F}_P\)

    -
  • -
  • -

    \(pedersen: \mathbb{F}_P^2\rightarrow\mathbb{F}_P\)

    -
  • -
  • -

    \(poseidon: \mathbb{F}_P^*\rightarrow \mathbb{F}_P\)

    -
  • -
-
-
-
-
-

Starknet Keccak

-
-
-

Starknet Keccak, usually denoted by \(sn\_keccak\), is defined as the first 250 bits of the Keccak256 hash. For Starknet Keccak, Keccak256 is augmented -in order to fit into a field element.

-
-
-
-
-

Pedersen hash

-
-
-

Pedersen hash makes use of the following STARK friendly elliptic curve over \(\mathbb{F}_P\):

-
-
-
-\[y^2=x^3+\alpha x +\beta\] -
-
-
-

where

-
-
-
    -
  • -

    \(\alpha=1\)

    -
  • -
  • -

    \(\beta = 3141592653589793238462643383279502884197169399375105820974944592307816406665\)

    -
  • -
-
-
-

Definition

-
-

Given an input \((a,b)\in\mathbb{F}_P^2\), we begin by breaking it into \(a_{low}, a_{high}, b_{low}, b_{high}\), -where the low part consists of the low 248 bits of the element and the high part consists of the high 4 bits of the element. Our Pedersen hash is then defined by:

-
-
-
-\[h(a,b) = \left[shift\_point + a_{low} \cdot P_0 + a_{high} \cdot P1 + b_{low} \cdot P2 + b_{high} \cdot P3\right]_x\] -
-
-
-

where the values of the constants \(shift\_point, P_0, P_1, P_2, P_3\) can be found in fast_pedersen_hash.py, and \([P]_x\) denotes the \(x\) coordinate of the point \(P\).

-
-
-

For more information, see STARK curve.

-
-
-
-
-
-

Poseidon hash

-
-
-

Poseidon is a family of hash functions designed to be very efficient as algebraic circuits. As such, they can be very useful in ZK-proving systems such as STARKs.

-
-
-

Poseidon is a sponge construction based on the Hades permutation. Starknet’s version of Poseidon is based on a three-element state permutation.

-
-
-

A Poseidon hash of up to 2 elements is defined as follows.

-
-
-
-\[poseidon_1(x) := \left[\text{hades_permutation}(x,0,1)\right]_0\] -
-
-
-
-\[poseidon_2(x,y) := \left[\text{hades_permutation}(x,y,2)\right]_0\] -
-
-
-

Where \([\cdot]_j\) denotes taking the j’th coordinate of a tuple

-
- -
-
-
-

Array hashing

-
-
-

Pedersen

-
-

Let \(h\) denote the pedersen hash function, then given an array \(a_1,...,a_n\) of \(n\) field elements -we define \(h(a_1,...,a_n)\) to be:

-
-
-
-\[h(...h(h(0, a_1),a_2),...,a_n),n)\] -
-
-
-
-

Poseidon

-
-

Let \(\text{hades}:\mathbb{F}_P^3\rightarrow\mathbb{F}_P^3\) denote the Hades permutation, with Starknet’s parameters, then given an array \(a_1,...,a_n\) of \(n\) field elements -we define \(poseidon(a_1,...,a_n)\) to be the first coordinate of \(H(a_1,...,a_n;0,0,0)\), where:

-
-
-
-\[H(a_1,...,a_n;s_1,s_2,s_3)=\begin{cases} -H\big(a_3,...,a_n;\text{hades}(s_1+a_1, s_2+a_2, s_3)\big), & \text{if } n\ge 2 \\ -\text{hades}(s_1+a_1,s_2+1,s_3), & \text{if } n=1 \\ -\text{hades}(s_1+1,s_2,s_3), & \text{if } n=0 \\ -\end{cases}\] -
-
-
-

For an implementation of the above in Python, see poseidon_hash.py, -and for an equivalent Cairo implementation, see poseidon.cairo in the cairo-lang GitHub repository.

-
-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/architecture_and_concepts/Cryptography/p-value/index.html b/pr-1195/documentation/architecture_and_concepts/Cryptography/p-value/index.html deleted file mode 100644 index f7d1652dcd..0000000000 --- a/pr-1195/documentation/architecture_and_concepts/Cryptography/p-value/index.html +++ /dev/null @@ -1,950 +0,0 @@ - - - - - - The STARK field :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

The STARK field

-
-

The STARK field is the finite field \(\mathbb{F}_P\), where \(P\) is a prime number, calculated as follows:

-
-
-
-\[P = 2^{251} + 17*2^{192} + 1\] -
-
-
-

The Cairo VM uses the STARK field, referred to as a field element, or felt. The felt252 type in Cairo refers to elements of this field.

-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/architecture_and_concepts/Cryptography/stark-curve/index.html b/pr-1195/documentation/architecture_and_concepts/Cryptography/stark-curve/index.html deleted file mode 100644 index 099499009e..0000000000 --- a/pr-1195/documentation/architecture_and_concepts/Cryptography/stark-curve/index.html +++ /dev/null @@ -1,968 +0,0 @@ - - - - - - The STARK curve :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

The STARK curve

-
-

The STARK curve is an elliptic curve defined as follows:

-
-
-
-\[y^2 \equiv x^3 + \alpha \cdot x + \beta \pmod{p}\] -
-
-
-

where:

-
-
-
-\[\begin{align*} \alpha &= 1 \\ \beta &= 3141592653589793238462643383279502884197169399375105820974944592307816406665 \\ -p &= 3618502788666131213697322783095070105623107215331596699973092056135872020481\\ &= 2^{251} + 17 \cdot 2^{192} + 1 -\end{align*}\] -
-
-
-

The Generator point used in the ECDSA scheme is:

-
-
-
-\[\begin{split}G = (874739451078007766457464989774322083649278607533249481151382481072868806602, \\ 152666792071518830868575557812948353041420400780739481342941381225525861407)\end{split}\] -
-
-
-

The STARK curve is commonly used in smart contracts but not distinguished by the Starknet protocol.

-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/architecture_and_concepts/Economics-of-Starknet/index.html b/pr-1195/documentation/architecture_and_concepts/Economics-of-Starknet/index.html deleted file mode 100644 index 51af4ea1b5..0000000000 --- a/pr-1195/documentation/architecture_and_concepts/Economics-of-Starknet/index.html +++ /dev/null @@ -1,1124 +0,0 @@ - - - - - - The token economics of Starknet :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

The token economics of Starknet

-
-
-
-

Starknet is a developing decentralized protocol and the economic mechanisms described here, also known as tokenomics, are subject to change based on governance decisions made by the larger community of Starknet. For more details on Starknet’s governance processes see the Starknet Governance Hub. This document describes certain economic fundamentals of the Starknet token. This document is intended for informational purposes only and is meant to outline the usage and functionalities of the asset within Starknet. It is important to understand that the primary purpose of the Starknet token, STRK, is to facilitate operations and activities on Starknet and it is not intended to serve as an investment.

-
-
-
-
-

Why are economics relevant?

-
-
-

Blockchains work through a combination of cryptography and economic incentives. Cryptography limits what actors in the system can do, for example, transactions must be validly signed to be included in the chain. Economic incentives encourage actors to voluntarily perform actions that maintain the network’s capabilities when spending their own resources, for example, miners or stakers actively publish new blocks to the chain because they can receive fees and new tokens as a reward. Blockchains are valuable because they are data structures maintained by diverse and, ideally, large groups of otherwise unaffiliated persons. This gives them resilience: Any one participant can disappear, but the data structure is preserved. This also gives them censorship resistance: No single person can unilaterally decide to forbid certain persons from using the network.

-
-
-

Starknet operates as a Layer 2 (L2) network on top of Ethereum. Today, Starknet achieves secure low-cost transactions by using the STARK cryptographic proof system to reduce the size of transaction data while preserving and verifying the integrity of that data. Still under development, Starknet will achieve resilience and censorship resistance by using a token, the Starknet token (STRK), to incentivize network participants to sequence transactions for users of the network and to ensure that there is a provably fair mechanism, a proof-of-stake mechanism, to determine who should sequence and submit a proof for the network blocks. A proof-of-stake mechanism might also be used to facilitate data availability solutions and other significant services required for network operations.

-
-
-
-
-

The purpose of the STRK token

-
-
-

STRK is the mechanism for paying fees to enable operation of the network, maintaining and securing the network by enabling staking for consensus, and deciding on Starknet’s values and technology goals by voting for governance proposals.

-
-
-
    -
  • -

    Transaction fees: Originally, fees in Starknet were paid only in Ether (ETH). As of v.0.13.0, fees for transactions on the network can be paid using STRK, as well as ETH.

    -
    -

    A portion of the fees paid in STRK are converted to ETH by the receiving sequencer, in order to cover Ethereum L1 gas costs, which, due to the specifications of the Ethereum protocol, must be paid in ETH.

    -
    -
  • -
  • -

    Staking: Certain services that are critical to the liveness and security of Starknet may require the staking of Starknet tokens. These services might be offered by multiple providers, and could include sequencing, reaching temporary L2 consensus before L1 finality is reached, STARK-proving services, and data availability provisioning, to name a few examples. These protocol changes are still under discussion within the larger governance community and are targeted for 2024 -2025.

    -
  • -
  • -

    Governance: Proposals for improving Starknet might require a minimal token support threshold. Voting, either directly or via delegation, will be required for changes to the protocol that are essential to Starknet’s liveness, security, and maintenance. Today, for example, major updates to the Starknet Operating System require the approval of token holders. -For more information about Governance see the Starknet Governance Hub

    -
  • -
-
-
- - - - - -
- - -
-

As discussed above, the Starknet tokens are digital assets intended to support the operation and usage of Starknet and are not offered as an investment. As such, the Starknet tokens do not represent any equity in StarkWare or the Starknet Foundation, nor do they provide any participation right in StarkWare or grant any right of claim from StarkWare or the Starknet Foundation.

-
-
-
-
-
-
-

Supply and distribution

-
-
-

Ten billion Starknet tokens were initially created by StarkWare in May 2022 and minted onchain on November 30, 2022.

-
-
-

The existing ten billion tokens have been or are planned to be distributed according to the following:

-
- ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

20.04%: Early Contributors

Tokens allocated for StarkWare’s team members and early contributors. These tokens are subject to a lock-up schedule, as further detailed below.

18.17%: Investors

Tokens allocated for StarkWare’s investors. These tokens are subject to a lock-up schedule, as further detailed below.

10.76%: StarkWare

Tokens allocated for StarkWare for operation services such as to pay fees, provide other services on Starknet, and engage other service providers.

12.93%: Grants including Development Partners (aka DPs)

Tokens allocated for grants for research or work done to develop, test, deploy and maintain the Starknet protocol. The process for applications and allocations related to Starknet Foundation Grants will be outlined in a post at a later date.

9.00%: Community Provisions

Tokens distributed to those who contributed to Starknet and powered or developed its underlying technology.

9.00%: Community Rebates

Tokens allocated for rebates in Starknet tokens to partially cover the costs of onboarding to Starknet from Ethereum. Community rebates are not yet available and will be announced in 2024 in a subsequent post.

10.00%: Foundation Strategic Reserves

Tokens allocated for the Starknet Foundation to fund ecosystem activities that are aligned with the Foundation’s mission.

8.10%: Foundation Treasury

Token allocated for the Starknet Foundation’s treasury available for operations and other future initiatives by the Starknet Foundation.

2.00%: Donations

Tokens reserved for donations to institutions and organizations, such as universities, NGOs, etc, as decided by the Starknet Foundation.

-
-

Planned distribution of STRK

-
-
-

To align long-term incentives of the Investors and Early Contributors with the interests of the Starknet community, and following common practice in decentralized ecosystems, all tokens allocated to Investors and Early Contributors is subject to the following lock-up schedule, where percentages are based on the total token supply:

-
-
-
    -
  • -

    Up to 0.64% (64 million tokens) will be unlocked on the 15th of each month, starting April 15, 2024, and going through March 15, 2025, for a total of 7.68% (768 million tokens) unlocked by March 15, 2025.

    -
  • -
  • -

    Up to 1.27% (127 million tokens) will be unlocked on the 15th of each month, starting April 15, 2025, and going through March 15, 2027, for a total of 30.48% (3.048 billion tokens) unlocked by March 15, 2027.

    -
  • -
-
-
-
-Estimated supply of STRK in circulation -
-
Figure 1. Estimated supply of STRK in circulation
-
-
-
-
-

The graph, Estimated supply of STRK in circulation, excludes newly circulating tokens resulting from inflation or staking (see below).

-
-
-

Token allotments currently retained by the Starknet Foundation, while contractually unlocked, are not considered circulating unless granted, donated, or otherwise allocated out of originating wallets through future grants, provisions, donations, developer initiatives, or other programs.

-
-
-
-
-

Through this lock-up period, token holders cannot transfer, sell, or pledge their STRK tokens. Delegation of voting is permitted with locked tokens and, when available, staking might also be permitted.

-
-
-

The total circulating supply of tokens is planned to increase over time with the minting of new tokens by the protocol, as staking rewards, block rewards, or other rewards associated with the staking process. Such minting will be made pursuant to a schedule that will be determined with the community at a later point, not before Starknet services are more decentralized. The supply in circulation might not, therefore, remain fixed. However, as long as StarkWare is the sole operator of the Starknet sequencer, there will be no issuance of new tokens for the purpose of block rewards. For more information, see A token-minting proposal to manage inflation.

-
-
-
-
-

Risks and disclaimers

-
-
-

Starknet is a developing decentralized protocol and the economic mechanisms described herein are subject to change based on decisions made by the larger community of Starknet builders and users. Starknet relies upon third parties to adopt and implement software and protocols as users and contributors of Starknet. It also relies, in whole or partly, on third parties to develop, supply and otherwise support it. There is no assurance or guarantee that such third parties will continue to participate in the network or that the network will continue to function as intended.

-
-
-

The technical documents provided herein describe certain planned and specified economic fundamentals of a digital asset, STRK. These materials are intended for informational purposes only and are meant to outline the usage and functionalities of the asset within Starknet. It is important to understand that the primary purpose of STRK is to pay for fees, provide a mechanism for securing consensus, and allow for decentralized governance on Starknet; it is not intended to serve as an investment.

-
-
-

Starknet relies upon third parties to adopt and implement the software and protocols as users of Starknet. It also relies, in whole or partly, on third parties to develop, supply and otherwise support it. As a Layer 2 network over Ethereum, Starknet also relies upon third parties maintaining and operating the Ethereum network. There is no assurance or guarantee that those third parties will complete their work, properly carry out their obligations, and/or otherwise meet anyone’s needs.

-
-
-

STRK, as the native token of Starknet, may be subject to the risks of the Starknet network, including, without limitation, the following: (i) the technology associated with Starknet may not function as intended; (ii) the details of the Starknet token economics including the total supply and distribution schedule may be changed due to decisions made by the consensus of participants of the Starknet network; (iii) Starknet may fail to attract sufficient interest from key stakeholders or users; (iv) Starknet may not progress satisfactorily and Starknet tokens may not be useful or valuable; (v) Starknet may suffer from attacks by hackers or other individuals; and (vi) Starknet is comprised of open-source technologies that depend on a network of computers to run certain software programs to process transactions, and because of this model StarkWare and the Starknet Foundation have limited control over Starknet.

-
-
-

Risks related to blockchain technology in general and Starknet in particular may impact the usefulness of Starknet, and, in turn, the utility or value of STRK. The software and hardware, technology and technical concepts and theories applicable to Starknet and STRK are still in an early development stage and unproven, there is no warranty that Starknet will achieve any specific level of functionality or success, nor that the underlying technology will be uninterrupted or error-free, and there is an inherent risk that the technology could contain weaknesses, vulnerabilities or bugs causing, potentially, the complete loss of any Starknet tokens held by Starknet users.

-
-
-

As with most commonly used public blockchains, STRK is accessed using a private key that corresponds to the address at which they are stored. If the private key, or the "seed" used to create the address and corresponding private key are lost or stolen, the tokens associated with that address might be unrecoverable and will be permanently lost.

-
-
-

Public blockchain-based systems, including Starknet and the underlying Ethereum network, depend on independent verifiers, and therefore may be vulnerable to consensus attacks including, but not limited to, double-spend attacks, majority voting power attacks, race condition attacks, and censorship attacks. These attacks, if successful, could result in the permanent loss of STRK.

-
-
-

Starknet, STRK, and blockchain technology are nascent, and there may be additional risks not described above or that may be new or unanticipated. We recommend only using Starknet or holding STRK if you are familiar with the technology and aware of the risks.

-
-
-

This document and its contents are not, and should not be construed as, an offer to sell, or the solicitation of an offer to buy, any tokens, nor should it or any part of it form the basis or be relied on in connection with any contract or commitment whatsoever. This document is not advice of any kind, including legal, investment, financial, tax, or any other professional advice. Nothing in this document should be read or interpreted as a guarantee or promise of how the Starknet network or its STRK will develop, be utilized, or accrue value.

-
-
-

All information in this document is provided on an “as is” basis without any representation or warranty of any kind. This document only outlines current plans, which could change at the discretion of various parties, and the success of which will depend on many factors outside of Starknet Foundation’s control. Such future statements necessarily involve known and unknown risks, which may cause actual performance and results in future periods to differ materially from what we have described or implied in this document. StarkWare and the Starknet Foundation disclaim all warranties, express or implied, to the fullest extent permitted by law with respect to the functionality of Starknet and STRK.

-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/architecture_and_concepts/Network_Architecture/fee-mechanism/index.html b/pr-1195/documentation/architecture_and_concepts/Network_Architecture/fee-mechanism/index.html deleted file mode 100644 index a5f029cd01..0000000000 --- a/pr-1195/documentation/architecture_and_concepts/Network_Architecture/fee-mechanism/index.html +++ /dev/null @@ -1,1584 +0,0 @@ - - - - - - Gas and transaction fees :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Gas and transaction fees

-
-
-
-

This section describes fees that are paid on L2 starting in Starknet 0.13.0. For information about messaging fees that are paid on L1, see L1 → L2 message fees.

-
-
-
-
-

Overall transaction fee

-
-
-

From Starknet v0.13.1 onwards, we distinguish between blocks whose state diffs are sent to L1 as calldata, and blocks whose state diffs are sent to L1 as blobs (the l1_da_mode property in Starknet block headers determines this). The cost of computation remains the same on both options, but the cost related to data availability differs.

-
-
-

Overall transaction fee with blobs

-
-

This section shows the formula for determining a transaction’s fee. The following sections describe how this formula was derived.

-
-
-

The following formula describes the overall fee, \(F\), for a transaction:

-
-
-
-\[\begin{align} -F = \; & \text{gas_price}\cdot\Bigg(\max_k v_k w_k + \\ -& \quad + \; \text{message_calldata_cost}\cdot 3t + (\text{message_calldata_cost} + \text{l1_log_data_cost})\cdot \sum\limits_{i=1}^t q_i \; + \\ -& \quad + \; \left(\text{l1_storage_write_cost}+\text{log_message_to_l1_cost}\right)\cdot t + \; \\ -& \quad + \; \text{l2_payload_costs}\Bigg) + \\ -& \text{data_gas_price}\cdot\text{felt_size_in_bytes}\cdot\bigg(2(n-1)+2(m-1) + \ell +2D \bigg) -\end{align}\] -
-
-
-

where:

-
-
-
    -
  • -

    \(v\) is a vector that represents resource usage, where each of its entries, \(v_k\), corresponds to different resource types: Cairo steps and number of applications of each builtin.

    -
    -

    For more information see Calculation of computation costs.

    -
    -
  • -
  • -

    \(w\) is the CairoResourceFeeWeights vector.

    -
  • -
  • -

    \(n\) is the number of unique contracts updated, which also includes changes to classes of existing contracts and contract deployments, even if the storage of the newly deployed contract is untouched. In other words, \(n\ge\ell\). Notice that \(n\ge 1\) always holds, because the fee token contract is always updated, which does not incur any fee.

    -
  • -
  • -

    \(m\) is the number of values updated, not counting multiple updates for the same key. Notice that \(m\ge 1\) always holds, because the sequencer’s balance is always updated, which does not incur any fee.

    -
  • -
  • -

    \(t\) is the number of L2→L1 messages sent, where the corresponding payload sizes are denoted by \(q_1,...,q_t\).

    -
  • -
  • -

    \(\ell\) is the number of contracts whose class was changed, which happens on contract deployment and when applying the replace_class syscall.

    -
  • -
  • -

    \(D\) is 1 if the transaction is of type DECLARE and 0 otherwise. Declare transactions need to post on L1 the new class hash and compiled class hash which are added to the state.

    -
  • -
  • -

    L2→L1 messages related constants (for more details, see Onchain data: L2→L1 messages):

    -
    -
      -
    • -

      \(\text{message_calldata_cost}\) is 1124 gas per 32-byte word.

      -
    • -
    • -

      \(\text{l1_log_data_cost}\) is 256 gas.

      -
    • -
    • -

      \(\text{l1_storage_write_cost}\) is the cost of writing to a new storage slot on Ethereum, which is 20,000 gas.

      -
    • -
    • -

      \(\text{log_message_to_l1_cost}\) is 1637 gas.

      -
    • -
    -
    -
  • -
  • -

    \(\text{l2_payload_costs}\) is the gas cost of data sent over L2. This includes calldata, code, and event emission. For more details see L2 payloads: calldata, events, and code.

    -
  • -
  • -

    \(\text{felt_size_in_bytes}\) is 32, which is the number of bytes required to encode a single STARK field element.

    -
  • -
-
-
-
-

Overall transaction fee with calldata

-
-

This section shows the formula for determining a transaction’s fee. The following sections describe how this formula was derived.

-
-
-

The following formula describes the overall fee, \(F\), for a transaction:

-
-
-
-\[\begin{align} -F = \text{gas_price}\cdot&\Bigg(\max_k v_k w_k + \\ -& + \; \text{da_calldata_cost}\left(2(n-1)+2(m-1) + \ell + 2D + 3t + \sum\limits_{i=1}^t q_i\right)\\ -& - \; \text{contract_update_discount}\cdot (n-1) - 240 \\ -& + \; \text{message_calldata_cost}\cdot 3t + (\text{message_calldata_cost} + \text{l1_log_data_cost})\cdot\sum\limits_{i=1}^t q_i \\ -& + \; \left(\text{l1_storage_write_cost}+\text{log_message_to_l1_cost}\right)\cdot t \\ -& + \; \text{l2_payload_costs}\Bigg) -\end{align}\] -
-
-
-

where:

-
-
-
    -
  • -

    The following constants are defined in the same manner as in the blob-based formula:

    -
    -
      -
    • -

      \(v, w, n, m, t, \ell, D\)

      -
    • -
    • -

      \(\text{message_calldata_cost}, \; \text{l1_log_data_cost}, \; \text{log_message_to_l1_cost}, \; \text{l1_storage_write_cost}\)

      -
    • -
    • -

      \(\text{l2_payload_costs}\)

      -
    • -
    -
    -
  • -
  • -

    \(\text{da_calldata_cost}\) is 551 gas per 32-byte word. This cost is derived as follows:

    -
    -
      -
    • -

      512 gas per 32-byte word for calldata.

      -
    • -
    • -

      ~100 gas for onchain hashing that happens for every sent word.

      -
    • -
    • -

      a 10% discount, because the sequencer does not incur additional costs for repeated updates to the same storage slot within a single block.

      -
    • -
    -
    -
  • -
  • -

    \(240\) is the gas discount for updating the sender’s balance, for the derivation of this number see Onchain data: Storage updates.

    -
  • -
  • -

    \(\text{contract_update_discount}\) is 312 gas, for the derivation of this discount see Onchain data: Storage updates.

    -
  • -
-
-
-
-
-
-

When is the fee charged?

-
-
-

The fee is charged atomically with the transaction execution on L2. The Starknet OS injects a transfer of the fee-related ERC-20, with an amount equal to the fee paid, the sender equal to the transaction submitter, and the sequencer as a receiver.

-
-
-
-
-

Transaction Fee limits

-
-
-

v3 transactions

-
-

With v3 transactions, users specify the max amount and max price for each resource. At the time of writing, the only available resource is L1 gas. In the future, we will introduce L2 gas which will be used to price L2 work (as opposed to only charging for the proof verification in L1 gas, which is what happens today).

-
-
-
-

Deprecated transactions (version < 3)

-
-

With older transaction versions, users specify the maximum fee that they are willing to pay for a transaction.

-
-
-

The only limitation on the sequencer, which is enforced by the Starknet OS, is that the actual fee charged is bounded by max_fee. While not enforced in the proof, the Starknet sequencer usually charges less than max_fee, as it charges in accordance with the above fee formula.

-
-
-
-
-
-

What do we price

-
-
-

At the time of writing, the following components are contributing to the transaction fee:

-
-
-
    -
  • -

    Computational complexity: The marginal cost of verifying the transaction on L1, measured in L1 gas.

    -
  • -
  • -

    Onchain data: The cost of posting the state diffs induced by the transaction to L1 (for more details, see data availability). This is measured in L1 gas or L1 data gas, depending on whether or not the L2 block in which the transaction was included uses calldata or blobs.

    -
  • -
  • -

    L2→L1 messages: Messages sent to L1 are eventually sent to the Starknet core contract as L1 calldata by the sequencer; therefore L2 transaction that send L2→L1 messages incur an additional L1 gas cost.

    -
  • -
  • -

    L2 calldata, events and code: From Starknet 0.13.1 onwards, there is a per-byte (or per felt) price for L2 payloads. For more details, see L2 payloads: calldata, events, and code.

    -
  • -
-
-
-
-
-

Fee units

-
-
-

Each transaction is associated with an estimate of the amount of gas used. Combining this estimate with the price of gas yields the estimated fee.

-
-
-

For transactions prior to v3, the fee is denominated in WEI. For transactions v3 and later, the fee is denominated in STRK.

-
-
-
-
-

Fee calculation

-
-
-

Computation without builtins

-
-

Let’s analyze the correct metric for measuring transaction complexity. For simplicity, we will ignore Cairo’s builtins, and address them later.

-
-
-

A Cairo program execution yields an execution trace. When proving a Starknet block, we aggregate all the transactions appearing in that block to the execution trace.

-
-
-

Starknet’s prover generates proofs for execution traces, up to some maximal length \(L\), derived from the specs of the proving machine and the desired proof latency.

-
-
-

Tracking the execution trace length associated with each transaction is simple. -Each assertion over field elements, such as verifying addition/multiplication over the field, requires the same, constant number of trace cells, which is where our "no-builtins" assumption kicks in: Pedersen occupies more trace cells than addition. Therefore, in a world without builtins, the fee of the transaction \(tx\) is correlated with \(\text{TraceCells}[tx]/L\).

-
-
-
-

Computation with builtins

-
-

In the Cairo execution trace each builtin has its own slot, which is important to consider when determining the fee.

-
-
-

For example, consider that the prover can process a trace with the following limits:

-
- ------ - - - - - - - - -
up to 500,000,000 Cairo Stepsup to 20,000,000 Pedersen hashesup to 4,000,000 signature verificationsup to 10,000,000 range checks
-
-

The proof is closed and sent to L1 when any of these slots is filled.

-
-
-

Suppose that a transaction uses 10,000 Cairo steps and 500 Pedersen hashes. At most 40,000 such transactions can fit into the hypothetical trace (20,000,000/500). Therefore, its gas price correlates with 1/40,000 of the cost of submitting proof.

-
-
-

Notice that this estimate ignores the number of Cairo steps, as it is not the limiting factor, since 500,000,000/10,000 > 20,000,000/500.

-
-
-

With this example in mind, it is possible to formulate the exact fee associated with L2 computation.

-
-
- - - - - -
- - -
-

The allocation of resources among builtin operations must be predetermined; it is not possible to decide, post-execution, to include only 20,000,001 Pedersen hashes without additional components.

-
-
-

This safeguards fairness and prevents manipulation, ensuring integrity in proof generation and fee determination.

-
-
-
-
-
-

Calculation of computation costs

-
-

For each transaction, the sequencer calculates a vector, CairoResourceUsage, that contains the following:

-
-
-
    -
  • -

    The number of Cairo steps.

    -
  • -
  • -

    The number of applications of each Cairo builtin. For example, five range checks and two Pedersen hashes.

    -
  • -
-
-
-

The sequencer crosses this information with the CairoResourceFeeWeights vector. For each resource type, either a Cairo step or a specific builtin application, CairoResourceFeeWeights has an entry that specifies the relative gas cost of that component in the proof.

-
-
-

Going back to the above example, if the cost of submitting a proof with 20,000,000 Pedersen hashes is roughly 5m gas, then the weight of the Pedersen builtin is 0.25 gas per application (5,000,000/20,000,000). The sequencer has a predefined weights vector, in accordance with the proof parameters.

-
-
-

The sequencer charges only according to the limiting factor. Therefore the fee is correlated with:

-
-
-
-\[\max_k[\text{CairoResourceUsage}_k \cdot \text{CairoResourceFeeWeights}_k]\] -
-
-
-

where \(k\) enumerates the Cairo resource components, that is the number of Cairo steps and builtins used.

-
- - - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 1. Amount of gas used per Cairo step or per each time a Cairo builtin is applied
Step or builtinGas cost

Cairo step

0.0025 gas/step

Pedersen

0.08 gas/application

Poseidon

0.08 gas/application

Range check

0.04 gas/application

ECDSA

5.12 gas/application

Keccak

5.12 gas/application

Bitwise

0.16 gas/application

EC_OP

2.56 gas/application

-
-
-

Onchain data components

-
-

The onchain data associated with a transaction is composed of three parts

-
-
-
    -
  • -

    Storage updates

    -
  • -
  • -

    L2→L1 messages

    -
  • -
  • -

    Deployed contracts

    -
  • -
  • -

    Declared classes (only relevant for DECLARE transactions, and adds two additional words)

    -
  • -
-
-
-
-

Onchain data: Storage updates

-
-

Whenever a transaction updates some value in the storage of some contract, the following data is sent to L1:

-
-
-
    -
  • -

    two 32-byte words per contract

    -
  • -
  • -

    two 32-byte words for every updated storage value

    -
  • -
-
-
-

For information on the exact data and its construction, see Data availability.

-
-
- - - - - -
- - -
-

Only the most recent value reaches L1. So the transaction’s fee only depends on the number of unique storage updates. If the same storage cell is updated multiple times within the transaction, the fee remains that of a single update.

-
-
-
-
-

The following formula describes the storage update fee for a transaction:

-
-
-
-\[\underbrace{\textit{gas_price}\left(\text{da_calldata_cost} \cdot 2(n-1) - \text{contract_update_discount}\cdot (n-1)\right)}_{\text{contract addresses + new nonce and number of storage updates -}} \\ - -+ \\ - -\underbrace{\textit{gas_price} \cdot \left(\text{da_calldata_cost}(2(m-1))-240\right)}_{\text{storage updates}}\] -
-
-
-

where:

-
-
-
    -
  • -

    \(n\) is the number of unique contracts updated, which also includes changes to classes of existing contracts and contract deployments, even if the storage of the newly deployed contract is untouched. In other words, \(n\ge\ell\). Notice that \(n\ge 1\) always holds, because the fee token contract is always updated at the end of each transaction, in order to update the sequencer’s and the sender’s balances. The fee token contract update is not taken into account when computing the fee.

    -
  • -
  • -

    \(m\) is the number of values updated, not counting multiple updates for the same key. Notice that \(m\ge 1\) always holds, because the sequencer’s balance is updated at the end of each transaction. The sequencer’s balance update is not taken into account when computing the fee.

    -
  • -
  • -

    \(\text{contract_update_discount}\) is 312 gas, which is discounted for every updated contract. This discount is a result of the fact that out of the \(2n\) words caused by updating contracts, \(n\) words are short, including at most 6 non-zero bytes:

    -
    -
    -
    -
      -
    • -

      three bytes for the nonce

      -
    • -
    • -

      two bytes for the number of storage updates

      -
    • -
    • -

      one byte for the class information flag

      -
    • -
    -
    -
    -
    -
    -

    Taking into account that zero bytes only cost 4 gas, the cost difference between a full 32-byte word, which does not contain zeros, and a word with only six non-zero bytes is \(32\cdot16-(6\cdot16+26\cdot4)=312\).

    -
    -
  • -
  • -

    \(240\) is the gas discount for updating the sender’s balance, and is derived by assuming the balance requires at most 12 non-zero bytes, which is enough for 1.2B ETH or STRK, resulting in the following discount: \(512-(20\cdot4+12\cdot16)=240\).

    -
  • -
-
-
- - - - - -
- - -
-

Improvements to the above pessimistic estimation might be gradually implemented in future versions of Starknet.

-
-
-

For example, if different transactions within the same block update the same storage cell, there is no need to charge for both transactions, because only the last value reaches L1. In the future, Starknet might include a refund mechanism for such cases.

-
-
-
-
-
-

Onchain data: L2→L1 messages

-
-

When a transaction that raises the send_message_to_l1 syscall is included in a state update, the following data reaches L1:

-
-
-
    -
  • -

    L2 sender address

    -
  • -
  • -

    L1 destination address

    -
  • -
  • -

    Payload size

    -
  • -
  • -

    Payload (list of field elements)

    -
  • -
-
-
-

Consequently, the gas cost associated with a single L2→L1 message is:

-
-
-
-\[\begin{align} -\text{MESSAGE_COST} = & \; \text{message_calldata_cost}\cdot\left(3+\text{payload_size}\right) \; + \\ -& + \text{l1_log_data_cost}\cdot\text{payload_size} \; + \\ -& + \text{log_message_to_l1_cost} \; + \\ -& + \text{l1_storage_write_cost} -\end{align}\] -
-
-
-

Where:

-
-
-
    -
  • -

    \(\text{message_calldata_cost}\) is 1124 gas. This is the sum of the 512 gas paid to the core contract on submitting the state update, and 612 gas paid for the submitting of the same word to the verifier contract (which incurs ~100 additional gas for hashing). That is, messages are sent to Ethereum twice.

    -
  • -
  • -

    \(\text{log_message_to_l1_cost}\) is 1637 gas. This is the fixed cost involved in emitting a LogMessageToL1 event. This event has two topics and a data array, which adds two data words to the event, resulting in a total of \(375+2\cdot 375+2\cdot 256\) gas (log opcode cost, topic cost, and two data words cost).

    -
  • -
  • -

    \(\text{l1_log_data_cost}\) is 256 gas, which is paid for every payload element during the emission of the LogMessageToL1 event.

    -
  • -
  • -

    \(\text{l1_storage_write_cost}\) is 20,000 gas per message which is paid in order to store the message hash on the Starknet core contract. This recording of the message is what later enables the intended L1 contract to consume the message.

    -
  • -
-
-
-
-

Onchain data: Deployed contracts

-
-

When a transaction that raises the deploy syscall is included in a state update, the following data reaches L1:

-
-
-
    -
  • -

    contract address

    -
  • -
  • -

    number of storage updates and the new nonce

    -
  • -
  • -

    class hash

    -
  • -
-
-
-

The first two elements are counted in the number of unique modified contracts, denoted by \(n\) throughout this page. So the only additional word comes from publishing the class hash, which adds 551 gas. For more information, see \(\text{da_calldata_cost}\) in the final formula.

-
-
-
-

L2 payloads: calldata, events, and code

-
-

As of Starknet v0.13.1 onwards, L2 data is taken into account during pricing. This includes:

-
-
-
    -
  • -

    calldata: this includes transaction calldata (in the case of INVOKE transactions or L1_HANDLER), constructor calldata (in the case of DEPLOY_ACCOUNT transactions), and signatures

    -
  • -
  • -

    events: data and keys of emitted events

    -
  • -
  • -

    ABI: classes abi in DECLARE transactions (relevant only for DECLARE transactions of version ≥ 2)

    -
  • -
  • -

    CASM bytecode (for all available DECLARE transactions, where in version ≥ 2 this refers to the compiled class)

    -
  • -
  • -

    Sierra bytecode (relevant only for DECLARE transactions of version ≥ 2)

    -
  • -
-
-
-

The pricing of the above components in terms of L1 gas is given by the following table:

-
- ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ResourceGas cost

Event key

0.256 gas/felt

Event data

0.12 gas/felt

Calldata

0.128 gas/felt

CASM bytecode

28 gas/felt

Sierra bytecode

28 gas/felt

ABI

0.875 gas/character

-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/architecture_and_concepts/Network_Architecture/header/index.html b/pr-1195/documentation/architecture_and_concepts/Network_Architecture/header/index.html deleted file mode 100644 index 400db1b74c..0000000000 --- a/pr-1195/documentation/architecture_and_concepts/Network_Architecture/header/index.html +++ /dev/null @@ -1,1100 +0,0 @@ - - - - - - Block structure :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Block structure

-
-
-
-

In Starknet, a block is a list of transactions, and a block header that contains the following fields:

-
- ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescriptionImplemented

parent_block_hash

FieldElement

The hash of this block’s parent

block_number

Integer

The number (height) of this block

global_state_root

FieldElement

The state commitment after this block

sequencer_address

FieldElement

The Starknet address of the sequencer who created this block

block_timestamp

Timestamp

The time the sequencer created this block before executing transactions

transaction_count

Integer

The number of transactions in a block

transaction_commitment

FieldElement

A commitment to the transactions included in the block

event_count

Integer

The number of events

event_commitment

FieldElement

A commitment to the events produced in this block

protocol_version

Integer

The version of the Starknet protocol used when creating this block

extra data

FieldElement

Extraneous data that might be useful for running transactions

-
-

Where:

-
-
- ---- - - - - - - - - -
-event_commitment - -

is the root of a 64-bit high binary Merkle Patricia tree. The leaf at index \(i\) corresponds to the hash of the \(i'th\) event.

-
-transaction_commitment - -

is the root of a 64-bit high binary Merkle Patricia tree. The leaf at index \(i\) corresponds to \({h(transaction \space hash, signature)}\) if the \(i'th\) transaction is an invoke transaction and \(h(0,0)\) otherwise.

-
-
-
-
-
-

Block hash

-
-
-

A block hash is defined as the Pedersen hash of the header’s fields, as follows:

-
-
-
-
h(𝐵) = h(
-    block_number,
-    global_state_root,
-    sequencer_address,
-    block_timestamp,
-    transaction_count,
-    transaction_commitment,
-    event_count,
-    event_commitment,
-    0,
-    0,
-    parent_block_hash
-)
-
-
-
-

Where h is the Pedersen hash.

-
-
- - - - - -
- - -
-

Zeros inside the hash computation of an object are used as placeholders, to be replaced in the future by meaningful fields.

-
-
-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/architecture_and_concepts/Network_Architecture/messaging-mechanism/index.html b/pr-1195/documentation/architecture_and_concepts/Network_Architecture/messaging-mechanism/index.html deleted file mode 100644 index eaeb8a76cf..0000000000 --- a/pr-1195/documentation/architecture_and_concepts/Network_Architecture/messaging-mechanism/index.html +++ /dev/null @@ -1,1284 +0,0 @@ - - - - - - L1-L2 messaging :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

L1-L2 messaging

-
-

L2 → L1 messages

-
-
-

Contracts on L2 can interact asynchronously with contracts on L1 via the L2→L1 messaging protocol.

-
-
-

During the execution of a Starknet transaction, a contract on Starknet sends an L2→L1 message by calling the send_message_to_L1 syscall. The message parameters (which contain the recipient contract on L1 and the relevant data) are then attached to the relevant state update that includes this syscall invocation.

-
-
-

For example:

-
-
-
-
let mut payload: Array<felt252> = ArrayTrait::new();
-let to_address: EthAddress = 1_felt252.try_into().unwrap();
-payload.append(1);
-// potentially add more elements to payload (payload[1], payload[2],  etc.)
-
-send_message_to_l1_syscall(to_address: to_address.into(), payload: payload.span());
-
-
-
-

After the state update that included this transaction is proved and the L1 state is updated, the message is stored on L1 in the Starknet Core Contract (and the relevant counter is increased), and the LogMessageToL1 event (which contains the message parameters) is emitted.

-
-
-

Later, the recipient address on L1 can access and consume the message as part of an L1 transaction by re-supplying the message parameters.

-
-
-

This is done by calling consumeMessageFromL2 in the Starknet Core Contract, who verifies that the hash corresponds to a stored message and that the caller is indeed the recipient on L1. In such a case, the reference count of the message hash in the Starknet Core Contract decreases by 1.

-
-
-

The above flow is illustrated in the following diagram:

-
-
-
-l2l1 -
-
-
-

L2 → L1 structure and hashing

-
-

As demonstrated above, the structure of an L2 → L1 message is given by:

-
- - ----- - - - - - - - - - - - - - - -
Table 1. L2 → L1 Message
FromAddressToAddressPayload

FieldElement

EthereumAddress

Payload

-
-

The hash of an L2 → L1 message is computed on L1 as follows:

-
-
-
-
keccak256(
-    abi.encodePacked(
-        FromAddress,
-        uint256(ToAddress),
-        Payload.length,
-        Payload
-    )
-);
-
-
-
- - - - - -
- - -As the hash of the message being sent needs to be written to L1 storage (in the Starknet Core Contract) there is always a fixed 20k gas cost associated with sending an L2 to L1 message. -
-
-
-
-
-
-

L1 → L2 messages

-
-
-

Contracts on L1 can interact asynchronously with contracts on L2 via the L1→L2 messaging protocol. The protocol consists of the following stages:

-
-
-
    -
  1. -

    An L1 contract initiates a message to an L2 contract on Starknet. It does so by calling the sendMessageToL2 function on the Starknet Core Contract with the message parameters.

    -
    -
      -
    1. -

      The Starknet Core Contract hashes the message parameters and updates the L1→L2 message mapping to indicate that a message with this hash was indeed sent. In fact, the L1 contract records the fee that the sender paid. For more information, see L1 → L2 message fees.

      -
    2. -
    -
    -
  2. -
  3. -

    The message is then decoded into a Starknet transaction that invokes a function annotated with the l1_handler decorator on the target contract. Transactions like this on L2 are called L1 handler functions.

    -
    -
      -
    1. -

      The Starknet sequencer, upon seeing enough L1 confirmations for the transaction that sent the message, initiates the corresponding L2 transaction.

      -
    2. -
    3. -

      The L2 transaction invokes the relevant l1_handler.

      -
    4. -
    -
    -
  4. -
  5. -

    The L1 Handler transaction that was created in the previous step is added to a proof.

    -
  6. -
  7. -

    The state update is received on the Core contract.

    -
  8. -
  9. -

    the message is cleared from the Core contract’s storage. At this point, the message is handled.

    -
  10. -
-
-
-

An L1→L2 message consists of:

-
-
-
    -
  • -

    The L1 sender address

    -
  • -
  • -

    The recipient contract address on Starknet

    -
  • -
  • -

    Function selector

    -
  • -
  • -

    Calldata array

    -
  • -
  • -

    Message nonce

    -
  • -
-
-
- - - - - -
- - -
-

Message nonce

-
-
-

The message nonce is maintained on the Starknet Core Contract on L1, and is bumped whenever a message is -sent to L2. It is used to avoid hash collisions between different L1 handler transactions that are induced by the same message being sent on L1 multiple times (see below).

-
-
-
-
-

L1 → L2 message cancellation

-
-

Imagine a scenario where a user transfers an asset from L1 to L2. The flow starts with the user sending the asset to a Starknet bridge and the corresponding L1→L2 message generation. Now, imagine that the L2 message consumption doesn’t function (this might happen due to a bug in the dApp’s Cairo contract). This could result in the user losing custody over their asset forever.

-
-
-

To mitigate this risk, we allow the contract that initiated the L1→L2 message to cancel it after declaring the intent and waiting a suitable amount of time.

-
-
-

The user starts by calling startL1ToL2MessageCancellation with the relevant message parameters in the Starknet Core Contract. Then, after a five days delay, the user can finalize the cancellation by calling cancelL1ToL2Message.

-
-
-

The reason for the delay is to protect the sequencer from a DOS attack in the form of repeatedly sending and canceling a message before it is included in L1, rendering the L2 block which contains the activation of the corresponding L1 handler invalid.

-
-
-

Note that this flow should only be used in edge cases such as bugs on the Layer 2 contract preventing message consumption.

-
-
-
-

L1 → L2 message fees

-
-

An L1 → L2 message induces a transaction on L2, which, unlike regular transactions, is not sent by an account. This calls for a different mechanism for paying the transaction’s fee, for otherwise the sequencer has no incentive of including L1 handler transactions inside a block.

-
-
-

To avoid having to interact with both L1 and L2 when sending a message, L1 → L2 messages are payable on L1, by sending ETH with the call to the payable function sendMessageToL2 on the Starknet Core Contract.

-
-
-

The sequencer takes this fee in exchange for handling the message. The sequencer charges the fee in full upon updating the L1 state with the consumption of this message.

-
-
-

The fee itself is calculated in the same manner as -"regular" L2 transactions. You can use the CLI to get an estimate of an L1 → L2 message fee.

-
-
-
-

L1 → L2 structure and hashing

-
-

For completeness, we describe the precise structure of both the message as it appears on L1 and the induced transaction as it appears on L2.

-
- - -------- - - - - - - - - - - - - - - - - - - - - -
Table 2. L1 → L2 Message
FromAddressToAddressSelectorPayloadNonce

EthereumAddress

FieldElement

FieldElement

List

FieldElement

-
-

The hash of the message is computed on L1 as follows:

-
-
-
-
keccak256(
-    abi.encodePacked(
-        uint256(FromAddress),
-        ToAddress,
-        Nonce,
-        Selector,
-        Payload.length,
-        Payload
-    )
-);
-
-
- - -------- - - - - - - - - - - - - - - - - - - - - -
Table 3. L1 handler transaction
VersionContractAddressSelectorCalldataNonce

FieldElement

FieldElement

FieldElement

List

FieldElement

-
-

The hash of the corresponding L1 handler transaction on L2 is computed as follows:

-
-
-
-
l1_handler_tx_hash = ℎ(
-    "l1_handler",
-    version,
-    contract_address,
-    entry_point_selector,
-    ℎ(calldata),
-    chain_id,
-    nonce
-)
-
-
-
-

Where:

-
-
-
    -
  • -

    \(\text{l1_handler}\) is a constant prefix, encoded in bytes (ASCII), with big-endian.

    -
  • -
  • -

    \(\text{chain_id}\) is a constant value that specifies the network to which this transaction is sent.

    -
  • -
  • -

    \(h\) is the Pedersen hash

    -
  • -
-
-
- - - - - -
- - -
-

In an l1_handler transaction, the first element of the calldata is always the Ethereum address of the sender.

-
-
-
-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/architecture_and_concepts/Network_Architecture/on-chain-data/index.html b/pr-1195/documentation/architecture_and_concepts/Network_Architecture/on-chain-data/index.html deleted file mode 100644 index fa5779c46c..0000000000 --- a/pr-1195/documentation/architecture_and_concepts/Network_Architecture/on-chain-data/index.html +++ /dev/null @@ -1,1334 +0,0 @@ - - - - - - Data availability :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Data availability

-
-

Introduction

-
-
-

In the current stage of the Alpha, Starknet operates in Validity Rollup mode, also referred to as ZK-Rollup mode. So when the onchain state update is accepted, the state diff between the previous and new state is sent as calldata to Ethereum.

-
-
-

This data allows anyone that observes Ethereum to reconstruct the current state of Starknet.

-
-
- - - - - -
- - -
-

To update the Starknet state on L1, it suffices to send a valid proof, without information -on the transactions or particular changes that this update caused.

-
-
-

Consequently, more information must be provided in order to allow other parties to locally track Starknet’s state.

-
-
-
-
-
-
-

Data availability: v0.11.0 and forward

-
-
-

v0.11.0 format

-
-

The state diffs contain information on every contract whose storage was updated and additional information on contract deployments.

-
-
-

For each affected contract, the following information is sent as calldata on L1:

-
-
-
    -
  • -

    The contract address

    -
  • -
  • -

    A single 32-byte word that includes the nonce and the following meta information about the update:

    -
    -
      -
    • -

      class information flag, whose value is one of the following:

      -
      - ---- - - - - - - - - -
      -0 - -

      Storage updates only.

      -
      -1 - -

      The contract was deployed or replaced in this state update.

      -
      -

      When this flag is set to 1, the new class hash occupies an additional word before the storage updates section.

      -
      -
      -
      -
    • -
    • -

      number of storage updates

      -
      -

      The expected format of this 32-byte word is as follows:

      -
      -
      -
      -\[\underbrace{0\cdots0}_{\text{127 bits}}| -\underbrace{\text{class information flag}}_{\text{1 bit}}| -\underbrace{\text{new nonce}}_{\text{64 bits}}|{ -\underbrace{\text{# of storage updates}}_{\text{64 bits}}}_{\text{LSB}}\] -
      -
      -
    • -
    -
    -
  • -
-
-
-

Each storage update includes the following:

-
-
-
    -
  • -

    key - the address inside the contract’s storage where the value is updated

    -
  • -
  • -

    value - the new value

    -
  • -
-
-
-

Newly declared classes include the following:

-
-
-
    -
  • -

    The number of Cairo classes that were declared in the block

    -
  • -
  • -

    Each class includes the following:

    -
    - -
    -
  • -
-
-
-
-

v0.11.0 example of onchain data

-
-

Consider the following onchain data that was extracted from L1:

-
-
-
-
[
-  1, (1)
-  2019172390095051323869047481075102003731246132997057518965927979101413600827, (2)
-  18446744073709551617, (3)
-  100, (4)
-  200, (4)
-  1, (5)
-  1351148242645005540004162531550805076995747746087542030095186557536641755046, (6)
-  558404273560404778508455254030458021013656352466216690688595011803280448032 (7)
-]
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1The number of contracts whose state was updated.
2The address of the first, and only, contract whose state changed.
318446744073709551617, which is 264+1, encodes the following: -
-
    -
  • -

    The class information flag is 0, that is, the contract was not deployed or replaced just now, so you shouldn’t treat the next word as the class hash.

    -
  • -
  • -

    The new nonce is 1.

    -
  • -
  • -

    One storage cell was updated.

    -
  • -
-
4These two elements, 100 and 200, encode the storage update, where the value of key 100 is set to 200.
5The new declare section: 1 includes a single declare v2 transaction in this state update.
6Encoding of the class hash.
7Encoding of the compiled class hash of the declared class.
-
-
-
-
-
-

Data availability: pre v0.11.0

-
-
-

Pre v0.11.0 format

-
-

The state diffs contain information on every contract whose storage was updated and additional information on contract deployments. Those differences are sent as uint256[] array as part of the calldata, and are encoded as follows:

-
-
-
    -
  • -

    Number of cells that encode contract deployments

    -
  • -
  • -

    Each deployed contract has the following:

    -
    - -
    -
  • -
  • -

    Number of contracts whose storage is updated.

    -
    -

    Each such contract has the following:

    -
    -
    -
      -
    • -

      contract_address - the address of the contract

      -
    • -
    • -

      num_of_storage_updates - number of storage updates

      -
    • -
    • -

      nonce, num of storage updates - a uint256 value that encodes both the number of storage updates for that contract and the updated nonce:

      -
      -
      -\[\underbrace{0\cdots0}_{\text{128 bits}} | \underbrace{\text{new nonce}}_{\text{64 bits}} | -{\underbrace{\text{# of storage updates}}_{\text{64 bits}}}_{\text{LSB}}\] -
      -
      -
      -

      For each storage update:

      -
      -
      -
        -
      • -

        key - the address inside the contract’s storage where the value is updated

        -
      • -
      • -

        value - the new value

        -
      • -
      -
      -
    • -
    -
    -
  • -
-
-
-
-

Pre v0.11.0 example

-
-

The example below shows onchain data that was extracted from L1. An explanation follows, according to the above format.

-
-
-
-
[
-  2,
-  2472939307328371039455977650994226407024607754063562993856224077254594995194,
-  1336043477925910602175429627555369551262229712266217887481529642650907574765,
-  5,
-  2019172390095051323869047481075102003731246132997057518965927979101413600827,
-  18446744073709551617,
-  5,
-  102,
-  2111158214429736260101797453815341265658516118421387314850625535905115418634,
-  2,
-  619473939880410191267127038055308002651079521370507951329266275707625062498,
-  1471584055184889701471507129567376607666785522455476394130774434754411633091,
-  619473939880410191267127038055308002651079521370507951329266275707625062499,
-  541081937647750334353499719661793404023294520617957763260656728924567461866,
-  2472939307328371039455977650994226407024607754063562993856224077254594995194,
-  1,
-  955723665991825982403667749532843665052270105995360175183368988948217233556,
-  2439272289032330041885427773916021390926903450917097317807468082958581062272,
-  3429319713503054399243751728532349500489096444181867640228809233993992987070,
-  1,
-  5,
-  1110,
-  3476138891838001128614704553731964710634238587541803499001822322602421164873,
-  6,
-  59664015286291125586727181187045849528930298741728639958614076589374875456,
-  600,
-  221246409693049874911156614478125967098431447433028390043893900771521609973,
-  400,
-  558404273560404778508455254030458021013656352466216690688595011803280448030,
-  100,
-  558404273560404778508455254030458021013656352466216690688595011803280448031,
-  200,
-  558404273560404778508455254030458021013656352466216690688595011803280448032,
-  300,
-  1351148242645005540004162531550805076995747746087542030095186557536641755046,
-  500
-]
-
-
-
-
    -
  • -

    The first element, 2, is the number of cells that encode contracts deployment.

    -
  • -
  • -

    The next two elements describe a single contract deployment with the following parameters:

    -
    -
      -
    • -

      contract_address:

      -
      -
      -
      2472939307328371039455977650994226407024607754063562993856224077254594995194
      -
      -
      -
    • -
    • -

      contract_hash:

      -
      -
      -
      1336043477925910602175429627555369551262229712266217887481529642650907574765
      -
      -
      -
    • -
    -
    -
  • -
  • -

    The next element, 5 (index 3 in the array), is the number of contracts whose storage was updated. We will take only the first contract as an example.

    -
    -
      -
    • -

      contract_address:

      -
      -
      -
      2019172390095051323869047481075102003731246132997057518965927979101413600827
      -
      -
      -
    • -
    • -

      Following the above contract address, we have 18446744073709551617 (index 8 in the array), which is \(2^{64}+1\), thus:

      -
      -
        -
      • -

        The new contract nonce is 1

        -
      • -
      • -

        One storage key is updated

        -
      • -
      • -

        The value at key 5 was changed to 102

        -
      • -
      -
      -
    • -
    -
    -
  • -
-
-
-

The next 4 contract storage updates are interpreted in the same manner.

-
-
-
-
-
-

Extract from Ethereum

-
-
-

The data described above is sent across several Ethereum transactions, each holding a part of this array as calldata. Each new Starknet block has its associated state diff transactions.

-
-
-

You can find the code for extracting this data from Ethereum in Pathfinder’s repo. Pathfinder is the first Starknet full node implementation. You may also take a look at the Python script which extracts the same information.

-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/architecture_and_concepts/Network_Architecture/starknet-state/index.html b/pr-1195/documentation/architecture_and_concepts/Network_Architecture/starknet-state/index.html deleted file mode 100644 index cb290604d2..0000000000 --- a/pr-1195/documentation/architecture_and_concepts/Network_Architecture/starknet-state/index.html +++ /dev/null @@ -1,1377 +0,0 @@ - - - - - - Starknet state :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Starknet state

-
-
-
-

Starknet’s state consists of:

-
-
- ---- - - - - - - - - -
-Contract classes - -

a mapping -between the class hash and the class definition

-
-Contract instances - -

a mapping between addresses (251-bit field elements) and the contract’s state

-
-
-
-

A contract instance’s state consists of:

-
-
- ---- - - - - - - - - - - - - -
-Class hash - -

defines the functionality of the contract

-
-Contract storage - -

a key-value mapping where the key/values are field elements

-
-Contract nonce - -

the number of transactions sent from this contract

-
-
-
-
-
-

Transitioning to a new state

-
-
-

A transaction \(tx\) transitions the system from state \(S\) to state \(S'\) if:

-
-
-
    -
  • -

    \(tx\) is an Invoke transaction, and the storage of \(S'\) is the result of executing the target contract code with respect to the previous state \(S\). The arguments, -contract instance’s address, and the specific function entry point are part of the transaction.

    -
  • -
  • -

    \(tx\) is a Deploy account transaction, and \(S'\) contains the new contract instance’s state at the contract instance’s address. Additionally, the storage of \(S\) is updated -according to the execution of the contract instance’s constructor.

    -
  • -
  • -

    \(tx\) is a Declare transaction, and \(S'\) contains the class hash and definition in the contract class’s mapping

    -
  • -
-
-
-
-
-

State commitment

-
-
-

The state commitment is a digest that represents the state.

-
-
-

In Starknet, the state commitment combines the roots of two binary Merkle-Patricia tries of height 251 in the following manner:

-
-
-
-
state_commitment = hPos(
-    "STARKNET_STATE_V0",
-    contract_trie_root,
-    class_trie_root
-)
-
-
-
-

Where:

-
-
-
    -
  • -

    hPos is the Poseidon hash -function.

    -
  • -
  • -

    STARKNET_STATE_V0 is a constant prefix string encoded in ASCII (and represented as a field element).

    -
  • -
  • -

    contract_trie_root is the root of the contract trie, a Merkle-Patricia trie whose leaves are the contracts' states.

    -
  • -
  • -

    class_trie_root is the root of the class trie, a Merkle-Patricia trie whose leaves are the compiled class hashes.

    -
  • -
-
-
-

The contract trie

-
-

As with Ethereum, this trie is a two-level structure, whose leaves correspond to distinct contracts. The address of each contract determines the path from the trie’s root to its corresponding leaf, whose content encodes the contract’s state.

-
-
-

The information stored in the leaf is as follows:

-
-
-
-
hPed(
-    class_hash,
-    storage_root,
-    nonce,
-    0
-)
-
-
-
-

Where:

-
-
-
    -
  • -

    hPed is the Pedersen hash function.

    -
  • -
  • -

    class_hash is the hash of the contract’s definition.

    -
  • -
  • -

    storage_root is the root of another Merkle-Patricia trie of height 251 that is constructed from the contract’s storage.

    -
  • -
  • -

    nonce is the current nonce of the contract.

    -
  • -
-
-
-
-

The class trie

-
-

The class trie encodes the information about all existing -classes in Starknet’s state. This trie maps class hashes to their -compiled class hashes. The information stored in a leaf at a path corresponding to some class hash is as follows:

-
-
-
-
hPos(
-    CONTRACT_CLASS_LEAF_V0,
-    compiled_class_hash
-)
-
-
-
-

Where:

-
-
-
    -
  • -

    hPos is the Poseidon hash function

    -
  • -
  • -

    CONTRACT_CLASS_LEAF_V0 is a constant prefix string encoded in ASCII (and represented as a field element).

    -
  • -
  • -

    compiled_class_hash is the hash of the Cairo assembly resulting from compiling the given class via the Sierra-to-Casm compiler.

    -
  • -
-
-
- - - - - -
- - -
-
Compiled class hash
-

The compiled class hash identifies the output of a specific Casm compilation as unique.

-
-
-

Cairo classes that are part of the state commitment are defined with Sierra, an intermediate representation between Cairo and Cairo assembly (Casm). However, the prover only works with Casm.

-
-
-

So in order to prevent needing to compile from Sierra to Casm in every block in which the class is used, the state commitment must have some information about the corresponding Cairo assembly. The compiled class hash provides this information.

-
-
-

For more information, see Cairo and Sierra.

-
-
-

The party that declares the contract signs the compiled class hash, which they obtain using an SDK, as part of the DECLARE transaction. If the transaction is included in a block, then the compiled class hash becomes part of the state commitment.

-
-
-

In the future, when Sierra-to-Casm compilation becomes part of the Starknet OS, this value might be updated via a proof of the Sierra-to-Casm compiler execution, showing that compiling the same class with a newer compiler version results in some new compiled class hash.

-
-
-
-
-
-
-
-

Merkle-Patricia trie

-
-
-

The state commitment scheme uses a binary Merkle-Patricia trie with the Pedersen hash function.

-
-
-

About nodes

-
-

Each node in the trie is represented by a triplet \((length, path, value)\), where:

-
-
- ---- - - - - - - - - - - - - -
-\(length\) - -

is the length of the path, measured in nodes.

-
-\(path\) - -

is the path from the current node to its unique non-empty subtrie.

-
-

\(path\) is an integer in the set \(\{0,\ldots,2^{length}-1\}\), and the binary expansion of \(path\) indicates how to proceed along the trie, as follows:

-
-
-
    -
  1. -

    Expand \(path\) to its binary representation.

    -
  2. -
  3. -

    Starting with the most significant bit, representing the root of the trie, traverse the tree node by node, where the bit values \(0\) and \(1\) indicate left and right, respectively.

    -
  4. -
-
-
-\(value\) - -

is the value of the node, which can be either data, or the hash of two non-empty child nodes.

-
-
-
-

An empty node is one whose triplet values are \((0,0,0)\). Leaf nodes and internal nodes can be empty. A subtrie rooted at a node \((length, path, value)\) has a single non-empty subtrie, rooted at the node obtained by following the path specified by \(path\).

-
-
- - - - - -
- - -
-

Length is specified, and cannot be deduced from \(path\), because the numbers in the triplet \((length, path, value)\) are field elements of fixed size, 251 bits each.

-
-
-

For a node where \(length>0\), \(path\) leads to the highest node whose left and right children are not empty.

-
-
-
-
-
-

Trie construction

-
-

The following rules specify how the trie is constructed from a given set of leaves:

-
-
-

The hash of a node \(N =(length, path, value)\), denoted by \(H(N)\), is:

-
-
-
-\[H(N)=\begin{cases} -value, & \text{if } length = 0 \\ -h_{Ped}(value, path) + length, & \text{otherwise} -\end{cases}\] -
-
-
- - - - - -
- - -
-

All arithmetic operations in the above description of \(H\) are done in the STARK field, as described in The STARK field.

-
-
-
-
-
-

Mathematical definition of the nodes in the trie

-
-

The triplet representing the parent of the nodes \(left=(\ell_L, p_L, v_L)\), \(right=(\ell_R, p_R, v_R)\) is defined as follows:

-
-
-
-\[parent= -\begin{cases} -(0,0,0), & \text{if } left=right=(0,0,0)\\ -(\ell_L + 1, p_L, v_L), & \text{if } right=(0,0,0) \text{ and } left \neq (0,0,0)\\ -(\ell_R + 1, p_R + 2^{\ell_R}, v_R), & \text{if } right\neq (0,0,0) \text{ and } left = (0,0,0)\\ -(0, 0, h_{Ped}(H(left), H(right))), & \text{otherwise} -\end{cases}\] -
-
-
-
-

Example trie

-
-

The diagram A three-level Merkle-Patricia trie illustrates the construction of a three-level-high Merkle-Patricia trie from the leaves whose values are \((0,0,1,0,0,1,0,0)\):

-
-
-
-3-level-high Merkle-Patricia trie -
-
Figure 1. A three-level Merkle-Patricia trie
-
-
-

Where \(r=h_{Ped}(H(2,2,1),H((2,1,1))\). Notice that the example does not skip from the root, whose length is zero, so the final state commitment to the trie is \(H((0,0,r))=r\).

-
-
-

Suppose that you want to prove, with respect to the state commitment just computed, that the value of the leaf whose path is given by \(101\) is \(1\). In a standard Merkle trie, the proof would consist of data from three nodes, which are siblings along the path to the root.

-
-
-

In a Merkle-Patricia trie, because the trie is sparse, you only need to send the two children of the root, which are \((2,2,1)\) and \((2,1,1)\). These two children are enough to reproduce the state commitment \(r\), and because you know that the height of the trie is three, and that it is fixed, you know that the path \(01\) of length \(2\) specified by the right-hand child, \((2,1,1)\), leads to the desired leaf.

-
-
-
-
-
-

Special addresses

-
-
-

Starknet uses special contract addresses to provide distinct capabilities beyond regular contract deployment.

-
-
-

Two such addresses are 0x0 and 0x1. These addresses are reserved for specific purposes and are -characterized by their unique behavior in comparison to traditional contract addresses.

-
-
-

Address 0x0

-
-

Address 0x0 functions as the default caller_address for external calls, including interactions with the L1 handler or deprecated Deploy transactions. Unlike regular contracts, address 0x0 does not possess a storage structure and does not accommodate storage mapping.

-
-
-
-

Address 0x1

-
-

Address 0x1 is another special contract address within Starknet’s architecture. It functions as a storage space for mapping block numbers to their corresponding block hashes. The storage structure at this address is organized as follows:

-
-
- ---- - - - - - - - - - - - - -
-Keys - -

Block numbers between \(\text{first_v0_12_0_block}\) and \(\text{current_block - 10}\).

-
-Values - -

Corresponding block hashes for the specified blocks.

-
-Default Values - -

For all other block numbers, the values are set to 0.

-
-
-
-

The storage organization of address 0x1 supports the efficient retrieval of block hashes based on block numbers within a defined range and is also used by the get_block_hash system call.

-
-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/architecture_and_concepts/Network_Architecture/transaction-life-cycle/index.html b/pr-1195/documentation/architecture_and_concepts/Network_Architecture/transaction-life-cycle/index.html deleted file mode 100644 index fe2636b983..0000000000 --- a/pr-1195/documentation/architecture_and_concepts/Network_Architecture/transaction-life-cycle/index.html +++ /dev/null @@ -1,1303 +0,0 @@ - - - - - - Transaction lifecycle :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Transaction lifecycle

-
-

Transaction flow

-
-
-
-transaction flow -
-
-
-

The high-level steps in the Starknet transaction lifecycle are as follows:

-
-
-
    -
  1. -

    Transaction submission: A transaction is submitted to one of the gateways, functioning as the mempool and marks the transaction status as RECEIVED.

    -
  2. -
  3. -

    Mempool validation: -The mempool performs a preliminary validation on the transaction. If the transaction is invalid, it does not proceed.

    -
    -

    Mempool validation in this context is analogous to Ethereum’s signature checking, including running the account’s __validate__ function on an INVOKE transaction, __validate_declare__ on a DECLARE transaction, or __validate_deploy__ on a DEPLOY_ACCOUNT transaction, ensuring that the current account balance exceeds the value of max_fee (prior to v3 transactions), and more.

    -
    -
  4. -
  5. -

    Sequencer validation: The sequencer performs preliminary validation on the transaction before executing it to ensure that the transaction is still valid. If the transaction is invalid, it does not proceed.

    -
    -

    This validation stage repeats the same validation run during the Mempool validation.

    -
    -
  6. -
  7. -

    Execution: The sequencer operation sequentially applies all transactions that passed the preliminary validation to the state. If a transaction fails during execution, it is included in the block with the status REVERTED.

    -
  8. -
  9. -

    Proof generation and verification: The Prover executes the operating system on the new block, computes the proof, and transmits it to the L1 verifier, which verifies the proof. At this point, the L1 state is updated to include the transaction.

    -
  10. -
-
-
-
-
-

Transaction status

-
-
-

The diagram below illustrates how each transaction status fits into the overall transaction flow:

-
-
-
-txn flow -
-
-
-

The following are the possible statuses of a transaction from the moment a user sends it until the moment it passes the L1 verifier:

-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Status typeStatusExplanation

Finality

NOT_RECEIVED

The transaction is not yet known to the sequencer.

RECEIVED

-

The transaction was received by the mempool. The transaction now either executes successfully, is rejected, or reverted.

-
-
-

The transaction has no execution status.

-

REJECTED

-

The transaction was received by the mempool but failed validation in the sequencer. Such transactions are not included in a block.

-
-
-

The transaction has no execution status.

-
-
- - - - - -
- - -
-

A REJECTED transaction is stored in the mempool. You cannot send another transaction with the same transaction hash.

-
-
-

ACCEPTED_ON_L2

The transaction was executed and entered an actual created block on L2.

ACCEPTED_ON_L1

The transaction was accepted on Ethereum.

Execution

REVERTED

The transaction passed validation but failed during execution in the sequencer. It is included in the block with the status REVERTED.

SUCCEEDED

The transaction was successfully executed by the sequencer. It is included in the block.

-
-
-
-

State implications of a reverted transaction

-
-
-

When a transaction is marked as REVERTED, the following state implications occur:

-
-
- ---- - - - - - - - - - - - - - - - - -
-Nonce increases - -

The nonce value for the account of the failed transaction iterates despite the failure.

-
-Fee charge - -

The sequencer charges a fee for the execution of the transaction up to the point of failure. A Transfer event is emitted.

-
-Partial reversion - -

All changes that occurred during the validation stage are not reverted. However, all changes that occurred during the execution stage are reverted, including all messages to L1 or any events that were emitted during this stage.

-
-

Events might still be emitted from the validation stage or the fee charge stage.

-
-
-Fee calculation - -

The fee charged for REVERTED transactions is the smaller of the following two values:

-
-
    -
  • -

    The maximum fee that the user is willing to pay, either max_fee (pre-v3 transactions) or \(\text{max_amount} \cdot \text{max_price_per_unit}\) (v3 transactions).

    -
  • -
  • -

    The total consumed resources.

    -
  • -
-
-
-
-
-
-
Consumed Resources
-
-

The resources used for the execution of the transaction up to the point of failure. This includes Cairo steps, builtins, syscalls, L1 messages, events, and state diffs during the validation and execution stages.

-
-
-
-
-
-
-

Transaction receipt

-
-
-

To get a receipt, use the JSON RPC method starknet_getTransactionReceipt.

-
-
-

The transaction receipt contains the following fields:

-
-
- ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-transaction_hash - -

The hash of the transaction.

-
-actual_fee - -

The actual fee paid for the transaction.

-
-finality_status - -

The finality status of the transaction.

-
-execution_status - -

The execution status of the transaction.

-
-block_hash - -

The hash of the block that includes the transaction

-
-block_number - -

The sequential number of the block that includes the transaction

-
-messages_sent - -

A list of messages sent to L1.

-
-events - -

The events emitted.

-
-execution_resource - -

A summary of the execution resources used by the transaction.

-
-type - -

The type of the transaction.

-
-
-
-

The following is an example of a receipt:

-
-
-
-
{
-  "jsonrpc": "2.0",
-  "result": {
-    "actual_fee": "0x221db5dbf6db",
-    "block_hash": "0x301fc0d09c5810600af7bb9610be10596ad6f4e6d28a60d397dd148f0962a88",
-    "block_number": 906096,
-    "events": [
-      {
-        "data": [
-          "0x181de8b0cd32999a5cc962c5f724bc0f6a322f02957b80e1d5fef49a87588b7",
-          "0x0",
-          "0x9184e72a000",
-          "0x0"
-        ],
-        "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7",
-        "keys": [
-          "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9"
-        ]
-      },
-      {
-        "data": [
-          "0x764da020183e28a48ee38a9474f84e7e5ff13194",
-          "0x9184e72a000",
-          "0x0",
-          "0x181de8b0cd32999a5cc962c5f724bc0f6a322f02957b80e1d5fef49a87588b7"
-        ],
-        "from_address": "0x73314940630fd6dcda0d772d4c972c4e0a9946bef9dabf4ef84eda8ef542b82",
-        "keys": [
-          "0x194fc63c49b0f07c8e7a78476844837255213824bd6cb81e0ccfb949921aad1"
-        ]
-      },
-      {
-        "data": [
-          "0x181de8b0cd32999a5cc962c5f724bc0f6a322f02957b80e1d5fef49a87588b7",
-          "0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8",
-          "0x221db5dbf6db",
-          "0x0"
-        ],
-        "from_address": "0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7",
-        "keys": [
-          "0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9"
-        ]
-      }
-    ],
-    "execution_status": "SUCCEEDED",
-    "finality_status": "ACCEPTED_ON_L2",
-    "messages_sent": [
-      {
-        "from_address": "0x73314940630fd6dcda0d772d4c972c4e0a9946bef9dabf4ef84eda8ef542b82",
-        "payload": [
-          "0x0",
-          "0x764da020183e28a48ee38a9474f84e7e5ff13194",
-          "0x9184e72a000",
-          "0x0"
-        ],
-        "to_address": "0xc3511006c04ef1d78af4c8e0e74ec18a6e64ff9e"
-      }
-    ],
-    "transaction_hash": "0xdeadbeef",
-    "type": "INVOKE"
-  },
-  "id": 1
-}
-
-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/architecture_and_concepts/Network_Architecture/transactions/index.html b/pr-1195/documentation/architecture_and_concepts/Network_Architecture/transactions/index.html deleted file mode 100644 index 07e007b4fb..0000000000 --- a/pr-1195/documentation/architecture_and_concepts/Network_Architecture/transactions/index.html +++ /dev/null @@ -1,2309 +0,0 @@ - - - - - - Transaction types :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Transaction types

-
-
-
-

Starknet supports the following types of transactions, as defined in the Starknet API:

-
-
- ---- - - - - - - - - - - - - -
-DECLARE - -

Declares new contract classes, enabling new contract instances.

-
-INVOKE - -

Invokes an existing function in a contract.

-
-DEPLOY_ACCOUNT - -

Deploys new account contracts in smart wallets.

-
-
-
-

To see how these transaction types appear in the Starknet API, see starknet_api_openrpc.json.

-
-
-

This topic describes the available fields for these transaction types and how each transaction’s hash is calculated.

-
-
-
-
-

Transaction versions

-
-
-

When the fields that comprise a transaction change, either with the addition of a new field or the removal of an existing field, then the transaction version increases.

-
-
-

Deprecated transaction versions are still supported, but support will be removed in a future release of Starknet.

-
- - ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 1. Supported versions of Starknet transaction types
Transaction nameCurrent versionDeprecated versionsUnsupported versions

INVOKE

v3

v1, v0

N/A

DECLARE

v3

v2, v1

v0

DEPLOY_ACCOUNT

v3

v0

N/A

DEPLOY

N/A

N/A

v0

-
- - - - - -
- - -
-

Do not submit a transaction that uses an unsupported transaction type, because it cannot be included in a proof, and so cannot become part of a Starknet block.

-
-
-
-
-
-
-

INVOKE transaction

-
-
-

The INVOKE transaction type invokes a function in an existing contract instance. The contract code of the account that sends the INVOKE transaction determines how to process the transaction.

-
-
- - - - - -
- - -
-

Because an account’s __validate__ and __execute__ functions can contain any logic, the account ultimately determines how to handle the INVOKE transaction.

-
-
-
-
-

Every INVOKE transaction in Starknet undergoes the validation and execution stages, initiated by the __validate__ and __execute__ functions. The validation stage verifies that the account that sent the transaction approves it.

-
-
-

v3 transaction fields

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Field nameTypeDescription

account_deployment_data

List<FieldElement>

For future use.

-

Currently this value is always empty.

-

For more information, see SNIP 8: Transaction V3 Structure

calldata

List<FieldElement>

The arguments that are passed to the validate and execute functions.

chain_id

FieldElement

The id of the chain to which the transaction is sent.

fee_data_availability_mode

FieldElement

For future use.

-

Currently this value is always 0.

-

For more information, see SNIP 8: Transaction V3 Structure

nonce

FieldElement

The transaction nonce.

nonce_data_availability_mode

FieldElement

For future use.

-

Currently this value is always 0.

-

For more information, see SNIP 8: Transaction V3 Structure

paymaster_data

List<FieldElement>

For future use.

-

Currently this value is always empty.

-

For more information, see SNIP 8: Transaction V3 Structure

resource_bounds

Dict[Resource, ResourceBounds]

-

Used for enabling the fee market.

-
-
-

A dictionary that maps resource type to resource bounds. The resource is the amount of L1 or L2 gas used to pay for the transaction.

-
-
-
-
Resource
-
-

A felt. Possible values are the felt representation of the strings L1_GAS or L2_GAS.

-
-
ResourceBounds
-
-

A struct containing the following felts:

-
-
    -
  • -

    max_amount: The maximum amount of the resource allowed for usage during the execution.

    -
  • -
  • -

    max_price_per_unit: The maximum price the user is willing to pay for the resource.
    -L1_GAS and L2_GAS are specified in units of fri, where 1 fri = 10-18 STRK.

    -
  • -
-
-
-
-

sender_address

FieldElement

The address of the account initiating the transaction.

signature

List<`FieldElement>`

Additional information given by the sender, used to validate the transaction.

tip

FieldElement

For future use. Currently this value is always 0.

version

FieldElement

-

The transaction’s version.
-When the fields that comprise a transaction change, either with the addition of a new field or the removal of an existing field, then the transaction version increases.

-
-
-

Transaction version, where n specifies version n transaction. For example:

-
-
- ---- - - - - -
-3 - -

version 3 transaction

-
-
-
-
-

v3 hash calculation

-
-

The INVOKE v3 transaction hash is calculated as a Poseidon hash over the given transaction elements, -specifically:

-
-
-
-
invoke_v3_tx_hash = h(
-    "invoke",
-    version,
-    sender_address,
-    h(tip, l1_gas_bounds, l2_gas_bounds),
-    h(paymaster_data),
-    chain_id,
-    nonce,
-    data_availability_modes,
-    h(
-      h(account_deployment_data),
-      h(calldata)
-    )
-    class_hash
-)
-
-
-
-

Where:

-
-
-
    -
  • -

    invoke is a constant prefix string, encoded in ASCII.

    -
  • -
  • -

    chain_id is a constant value that specifies the network to which this transaction is sent. See Chain-Id.

    -
  • -
  • -

    l1_gas_bounds is constructed as follows:

    -
    -
    -\[\underbrace{\text{L1_GAS}}_{\text{60 bits}} | \underbrace{\text{max_amount}}_{\text{64 bits}} | -\underbrace{\text{max_price_per_unit}}_{\text{128 bits}}\] -
    -
    -
  • -
  • -

    l2_gas_bounds is constructed as follows:

    -
    -
    -\[\underbrace{\text{L2_GAS}}_{\text{60 bits}} | \underbrace{\text{max_amount}}_{\text{64 bits}} | -\underbrace{\text{max_price_per_unit}}_{\text{128 bits}}\] -
    -
    -
  • -
  • -

    data_availability_modes is a concatenation of fee_data_availability_mode -and nonce_data_availability_mode, as follows:

    -
    -
    -\[\underbrace{0\cdots0}_{\text{188 bits}} | \underbrace{\text{nonce_data_availability_mode}}_{\text{32 bits}} | -\underbrace{\text{fee_data_availability_mode}}_{\text{32 bits}}\] -
    -
    -
  • -
  • -

    h is the Poseidon hash.

    -
  • -
-
-
-
-

v1 (deprecated) transaction fields

- - ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 2. INVOKE v1 transaction fields
NameTypeDescription

sender_address

FieldElement

The address of the sender of this transaction.

calldata

List<FieldElement>

The arguments that are passed to the validate and execute functions.

signature

List<FieldElement>

Additional information given by the sender, used to validate the transaction.

max_fee

FieldElement

The maximum fee that the sender is willing to pay for the transaction

nonce

FieldElement

The transaction nonce.

version

FieldElement

The transaction’s version. The value is 1.
-When the fields that comprise a transaction change, either with the addition of a new field or the removal of an existing field, then the transaction version increases.

-
-
-

v1 (deprecated) hash calculation

-
-

The INVOKE v1 transaction hash is calculated as a hash over the given transaction elements, -specifically:

-
-
-
-
invoke_v1_tx_hash = h(
-    "invoke",
-    version,
-    sender_address,
-    0,
-    h(calldata),
-    max_fee,
-    chain_id,
-    nonce
-)
-
-
-
-

Where:

-
-
-
    -
  • -

    invoke is a constant prefix string, encoded in ASCII.

    -
  • -
  • -

    The placeholder zero is used to align the hash computation for the different types of transactions.

    -
  • -
  • -

    chain_id is a constant value that specifies the network to which this transaction is sent. See Chain-Id.

    -
  • -
  • -

    h is the Pedersen hash

    -
  • -
-
-
-
-

v0 (deprecated) hash calculation

-
-

The hash of a v0 INVOKE transaction is computed as follows:

-
-
-
-
invoke_v0_tx_hash = h(
-    "invoke",
-    version,
-    contract_address,
-    entry_point_selector,
-    h(calldata),
-    max_fee,
-    chain_id
-)
-
-
-
-

Where:

-
-
-
    -
  • -

    invoke is a constant prefix string, encoded in (ASCII).

    -
  • -
  • -

    chain_id is a constant value that specifies the network to which this transaction is sent. See Chain-Id. v2 and v3

    -
  • -
  • -

    h is the Pedersen hash

    -
  • -
-
-
-
-
-
-

DECLARE transaction

-
-
-

The DECLARE transaction introduces new contract classes into the state of Starknet, enabling other contracts to deploy instances of those classes or use them in a library call. For more information, see contract classes.

-
-
-

v3 transaction fields

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Field nameTypeDescription

account_deployment_data

List<FieldElement>

For future use.

-

Currently this value is always empty.

-

For more information, see SNIP 8: Transaction V3 Structure

chain_id

FieldElement

The id of the chain to which the transaction is sent.

compiled_class_hash

FieldElement

The hash of the compiled class. For more information, see Class hash.

contract_class

ContractClass

The class definition. For more information, see Class hash.

fee_data_availability_mode

FieldElement

For future use.

-

Currently this value is always 0.

-

For more information, see SNIP 8: Transaction V3 Structure

nonce

FieldElement

The transaction nonce.

nonce_data_availability_mode

FieldElement

For future use.

-

Currently this value is always 0.

-

For more information, see SNIP 8: Transaction V3 Structure

paymaster_data

List<FieldElement>

For future use.

-

Currently this value is always empty.

-

For more information, see SNIP 8: Transaction V3 Structure

resource_bounds

Dict[Resource, ResourceBounds]

-

Used for enabling the fee market.

-
-
-

A dictionary that maps resource type to resource bounds. The resource is the amount of L1 or L2 gas used to pay for the transaction.

-
-
-
-
Resource
-
-

A felt. Possible values are the felt representation of the strings L1_GAS or L2_GAS.

-
-
ResourceBounds
-
-

A struct containing the following felts:

-
-
    -
  • -

    max_amount: The maximum amount of the resource allowed for usage during the execution.

    -
  • -
  • -

    max_price_per_unit: The maximum price the user is willing to pay for the resource.
    -L1_GAS and L2_GAS are specified in units of fri, where 1 fri = 10-18 STRK.

    -
  • -
-
-
-
-

sender_address

FieldElement

The address of the account initiating the transaction.

signature

List<`FieldElement>`

Additional information given by the sender, used to validate the transaction.

tip

FieldElement

For future use. Currently this value is always 0.

version

FieldElement

-

The transaction’s version.
-When the fields that comprise a transaction change, either with the addition of a new field or the removal of an existing field, then the transaction version increases.

-
-
-

Transaction version, where n specifies version n transaction. For example:

-
-
- ---- - - - - -
-3 - -

version 3 transaction

-
-
-
-
-

v3 hash calculation

-
-

The hash of a v3 DECLARE transaction is computed as follows:

-
-
-
-
declare_v3_tx_hash = h(
-    "declare",
-    version,
-    sender_address,
-    h(tip, l1_gas_bounds, l2_gas_bounds),
-    h(paymaster_data),
-    chain_id,
-    nonce,
-    data_availability_modes,
-    h(account_deployment_data),
-    class_hash,
-    compiled_class_hash
-)
-
-
-
-

Where:

-
-
-
    -
  • -

    declare is a constant prefix string, encoded in ASCII.

    -
  • -
  • -

    chain_id is a constant value that specifies the network to which this transaction is sent. See Chain-Id.

    -
  • -
  • -

    l1_gas_bounds is constructed as follows:

    -
    -
    -\[\underbrace{\text{L1_GAS}}_{\text{60 bits}} | \underbrace{\text{max_amount}}_{\text{64 bits}} | -\underbrace{\text{max_price_per_unit}}_{\text{128 bits}}\] -
    -
    -
  • -
  • -

    l2_gas_bounds is constructed as follows:

    -
    -
    -\[\underbrace{\text{L2_GAS}}_{\text{60 bits}} | \underbrace{\text{max_amount}}_{\text{64 bits}} | -\underbrace{\text{max_price_per_unit}}_{\text{128 bits}}\] -
    -
    -
  • -
  • -

    data_availability_modes is a concatenation of fee_data_availability_mode -and nonce_data_availability_mode, as follows:

    -
    -
    -\[\underbrace{0\cdots0}_{\text{188 bits}} | \underbrace{\text{nonce_data_availability_mode}}_{\text{32 bits}} | -\underbrace{\text{fee_data_availability_mode}}_{\text{32 bits}}\] -
    -
    -
  • -
  • -

    h is the Poseidon hash.

    -
  • -
  • -

    class_hash is the hash of the contract class. See Class Hash -for details about how the -hash is computed

    -
  • -
  • -

    compiled_class_hash is the hash of the compiled class -generated by the Sierra→Casm compiler that is used in Starknet

    -
  • -
-
-
-
-

v2 (deprecated) transaction fields

- - ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 3. DECLARE v2 transaction fields
NameTypeDescription

chain_id

FieldElement

The id of the chain to which the transaction is sent.

contract_class

ContractClass

The (Cairo 1.0) class.

compiled_class_hash

FieldElement

The hash of the compiled class (see here for more information)

sender_address

FieldElement

The address of the account initiating the transaction.

signature

List<FieldElement>

Additional information given by the sender, used to validate the transaction.

max_fee

FieldElement

The maximum fee that the sender is willing to pay for the transaction.

nonce

FieldElement

The transaction nonce.

version

FieldElement

The transaction’s version. The value is 2.
-When the fields that comprise a transaction change, either with the addition of a new field or the removal of an existing field, then the transaction version increases.

-
-
-

v2 (deprecated) hash calculation

-
-

The hash of a v2 DECLARE transaction is computed as follows:

-
-
-
-
declare_v2_tx_hash = h(
-    "declare",
-    version,
-    sender_address,
-    0,
-    h(class_hash),
-    max_fee,
-    chain_id,
-    nonce,
-    compiled_class_hash
-)
-
-
-
-

Where:

-
-
-
    -
  • -

    h is the Poseidon hash function

    -
  • -
  • -

    class_hash is the hash of the contract class. See Class Hash -for details about how the -hash is computed

    -
  • -
  • -

    compiled_class_hash is the hash of the compiled class -generated by the Sierra→Casm compiler that is used in Starknet

    -
  • -
-
-
-
-

v1 (deprecated) transaction fields

-
-

This transaction version was used to declare Cairo 0 classes.

-
- - ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 4. DECLARE v1 transaction fields
NameTypeDescription

contract_class

ContractClass

The class object.

sender_address

FieldElement

The address of the account initiating the transaction.

max_fee

FieldElement

The maximum fee that the sender is willing to pay for the transaction.

signature

List<FieldElement>

Additional information given by the sender, used to validate the transaction.

nonce

FieldElement

The transaction nonce.

version

FieldElement

The transaction’s version. Possible values are 1 or 0.
-When the fields that comprise a transaction change, either with the addition of a new field or the removal of an existing field, then the transaction version increases.

-
-
-

v1 (deprecated) hash calculation

-
-

The hash of a v1 DECLARE transaction is computed as follows:

-
-
-
-
declare_v1_tx_hash = h(
-    "declare",
-    version,
-    sender_address,
-    0,
-    h(class_hash),
-    max_fee,
-    chain_id,
-    nonce
-)
-
-
-
-

Where:

-
-
-
    -
  • -

    declare is a constant prefix string, encoded in ASCII.

    -
  • -
  • -

    class_hash is the hash of the contract class. See Class Hash for details about how the hash is -computed.

    -
  • -
  • -

    The placeholder zero is used to align the hash computation for the different types of transactions.

    -
  • -
  • -

    chain_id is a constant value that specifies the network to which this transaction is sent. See Chain-Id.

    -
  • -
  • -

    h is the Pedersen hash

    -
  • -
-
-
-
-

v0 (unsupported) hash calculation

-
-

This transaction version was used to declare Cairo 0 classes.

-
-
-

The hash of a v0 DECLARE transaction is computed as follows:

-
-
-
-
declare_v0_tx_hash = h(
-    "declare",
-    version,
-    sender_address,
-    0,
-    h(),
-    max_fee,
-    chain_id,
-    class_hash
-)
-
-
-
-

Where:

-
-
-
    -
  • -

    declare is a constant prefix string, encoded in ASCII.

    -
  • -
  • -

    The placeholder zeros are used to align the hash computation for the different types of transactions.

    -
  • -
  • -

    h is the Pedersen hash

    -
  • -
  • -

    chain_id is a constant value that specifies the network to which this transaction is sent. See Chain-Id.

    -
  • -
  • -

    class_hash is the hash of the contract class. See Class Hash for details about how the hash is computed.

    -
  • -
-
-
-
-
-
-

DEPLOY_ACCOUNT transaction

-
-
-

Since StarkNet v0.10.1 the DEPLOY_ACCOUNT -transaction replaces the DEPLOY transaction -for deploying account contracts.

-
-
-

To use it, you should first pre-fund your new account address so that you can pay the -transaction fee. You can then send the DEPLOY_ACCOUNT transaction.

-
-
-

For more information, see Deploying a new account.

-
-
-

v3 transaction fields

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Field nameTypeDescription

chain_id

FieldElement

The id of the chain to which the transaction is sent.

class_hash

FieldElement

The hash of the desired account class. For more information, see Class hash.

constructor_calldata

List<FieldElement>

The arguments to the account constructor.

contract_address_salt

FieldElement

A random salt that determines the account address.

fee_data_availability_mode

FieldElement

For future use.

-

Currently this value is always 0.

-

For more information, see SNIP 8: Transaction V3 Structure

nonce

FieldElement

The transaction nonce.

nonce_data_availability_mode

FieldElement

For future use.

-

Currently this value is always 0.

-

For more information, see SNIP 8: Transaction V3 Structure

paymaster_data

List<FieldElement>

For future use.

-

Currently this value is always empty.

-

For more information, see SNIP 8: Transaction V3 Structure

resource_bounds

Dict[Resource, ResourceBounds]

-

Used for enabling the fee market.

-
-
-

A dictionary that maps resource type to resource bounds. The resource is the amount of L1 or L2 gas used to pay for the transaction.

-
-
-
-
Resource
-
-

A felt. Possible values are the felt representation of the strings L1_GAS or L2_GAS.

-
-
ResourceBounds
-
-

A struct containing the following felts:

-
-
    -
  • -

    max_amount: The maximum amount of the resource allowed for usage during the execution.

    -
  • -
  • -

    max_price_per_unit: The maximum price the user is willing to pay for the resource.
    -L1_GAS and L2_GAS are specified in units of fri, where 1 fri = 10-18 STRK.

    -
  • -
-
-
-
-

signature

List<`FieldElement>`

Additional information given by the sender, used to validate the transaction.

tip

FieldElement

For future use. Currently this value is always 0.

version

FieldElement

-

The transaction’s version.
-When the fields that comprise a transaction change, either with the addition of a new field or the removal of an existing field, then the transaction version increases.

-
-
-

Transaction version, where n specifies version n transaction. For example:

-
-
- ---- - - - - -
-3 - -

version 3 transaction

-
-
-
-
-

v3 hash calculation

-
-

The hash of a DEPLOY_ACCOUNT transaction is computed as follows:

-
-
-
-
deploy_account_v3_tx_hash = h(
-    "deploy_account",
-    version,
-    contract_address,
-    h(tip, l1_gas_bounds, l2_gas_bounds),
-    h(paymaster_data),
-    chain_id,
-    nonce,
-    data_availability_modes,
-    h(constructor_calldata),
-    class_hash,
-    contract_address_salt
-)
-
-
-
-

Where:

-
-
-
    -
  • -

    deploy_account is a constant prefix string, encoded in ASCII.

    -
  • -
  • -

    chain_id is a constant value that specifies the network to which this transaction is sent. See Chain-Id.

    -
  • -
  • -

    l1_gas_bounds is constructed as follows:

    -
    -
    -\[\underbrace{\text{L1_GAS}}_{\text{60 bits}} | \underbrace{\text{max_amount}}_{\text{64 bits}} | -\underbrace{\text{max_price_per_unit}}_{\text{128 bits}}\] -
    -
    -
  • -
  • -

    l2_gas_bounds is constructed as follows:

    -
    -
    -\[\underbrace{\text{L2_GAS}}_{\text{60 bits}} | \underbrace{\text{max_amount}}_{\text{64 bits}} | -\underbrace{\text{max_price_per_unit}}_{\text{128 bits}}\] -
    -
    -
  • -
  • -

    data_availability_modes is a concatenation of fee_data_availability_mode -and nonce_data_availability_mode, as follows:

    -
    -
    -\[\underbrace{0\cdots0}_{\text{188 bits}} | \underbrace{\text{nonce_data_availability_mode}}_{\text{32 bits}} | -\underbrace{\text{fee_data_availability_mode}}_{\text{32 bits}}\] -
    -
    -
  • -
  • -

    h is the Poseidon hash.

    -
  • -
  • -

    class_hash is the hash of the contract class. See Class Hash for details about how the hash is computed.

    -
  • -
  • -

    contract_address is the address of the newly deployed account. For information on how this address is calculated, see Contract address.

    -
  • -
-
-
-
-

v1 (deprecated) transaction fields

- - ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 5. DEPLOY_ACCOUNT transaction fields
NameTypeDescription

class_hash

FieldElement

The hash of the desired account class.

constructor_calldata

List<FieldElement>

The arguments to the account constructor.

contract_address_salt

FieldElement

A random salt that determines the account address.

signature

List<FieldElement>

Additional information given by the sender, used to validate the transaction.

max_fee

FieldElement

The maximum fee that the sender is willing to pay for the transaction

nonce

FieldElement

The transaction nonce.

version

FieldElement

The transaction’s version. The value is 1.

-
-
-

v1 (deprecated) hash calculation

-
-

The hash of a DEPLOY_ACCOUNT transaction is computed as follows:

-
-
-
-
deploy_account_v1_tx_hash = h(
-    "deploy_account",
-    version,
-    contract_address,
-    1,
-    h(class_hash, contract_address_salt, constructor_calldata),
-    max_fee,
-    chain_id,
-    nonce
-)
-
-
-
-

Where:

-
-
-
    -
  • -

    deploy_account is a constant prefix string, encoded in ASCII.

    -
  • -
  • -

    The placeholder zero is used to align the hash computation for the different types of transactions.

    -
  • -
  • -

    h is the Pedersen hash

    -
  • -
  • -

    chain_id is a constant value that specifies the network to which this transaction is sent. See Chain-Id.

    -
  • -
  • -

    class_hash is the hash of the contract class. See Class Hash for details about how the hash is computed.

    -
  • -
-
-
-
-
-
-

DEPLOY (unsupported) transaction hash calculation

-
-
-

If you need to retrieve the hash of an existing DEPLOY transaction, you can use this information to calculate the hash of the transaction.

-
-
-

Before you can calculate the transaction hash, get the deployed contract address. The DEPLOY transaction’s hash is calculated as shown in the following pseudo code:

-
-
-
-
deploy_tx_hash = h(
-    "deploy",
-    version,
-    contract_address,
-    sn_keccak("constructor"),
-    h constructor_calldata),
-    0,
-    chain_id
-)
-
-
-
-

Where:

-
-
-
    -
  • -

    The placeholder zero is used to align the hash computation for the different types of transactions.

    -
  • -
  • -

    deploy and constructor are constant strings encoded in ASCII.

    -
  • -
  • -

    h is the Pedersen hash and -sn_keccak is Starknet Keccak.

    -
  • -
  • -

    chain_id is a constant value that specifies the network to which this transaction is sent. See Chain-Id.

    -
  • -
  • -

    contract_address is calculated as described here.

    -
  • -
-
-
-
-
-

Signature

-
-
-

While Starknet does not have a specific signature scheme built into the protocol, the Cairo language, in which smart contracts are written, does have an efficient implementation for ECDSA signature with respect to a STARK-friendly curve.

-
-
-

The generator used in the ECDSA algorithm is \(G=\left(g_x, g_y\right)\) where:

-
-
-

\(g_x=874739451078007766457464989774322083649278607533249481151382481072868806602\) \(g_y=152666792071518830868575557812948353041420400780739481342941381225525861407\)

-
-
-
-
-

Chain ID

-
-
-

Chain IDs are given as numbers, representing the ASCII encoding of specific constant strings, as illustrated by the following Python snippet:

-
-
-
-
chain_id = int.from_bytes(value, byteorder="big", signed=False)
-
-
-
-

The following constants are currently used. They correspond to the chain IDs that Starknet currently supports:

-
-
-
    -
  • -

    SN_MAIN for Starknet’s main network.

    -
  • -
  • -

    SN_GOERLI for Starknet’s public testnet on Goerli (Deprecated).

    -
  • -
  • -

    SN_SEPOLIA for Starknet’s public testnet on Sepolia.

    -
  • -
-
-
- - - - - -
- - -
-

Goerli testnet 2 is removed. Goerli testnet support will be removed April 11, 2024. Sepolia testnet replaces Goerli testnet.

-
-
-

For more information, including bridge support for Sepolia, see Starknet Goerli Deprecation in the Starknet Dev News newsletter.

-
-
-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/cairo-and-sierra/index.html b/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/cairo-and-sierra/index.html deleted file mode 100644 index 5b6f0a2717..0000000000 --- a/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/cairo-and-sierra/index.html +++ /dev/null @@ -1,1091 +0,0 @@ - - - - - - Cairo and Sierra :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Cairo and Sierra

-
-
-
-

Before Starknet Alpha v0.11.0 a developer would write contracts in Cairo 0 and compile them locally to Cairo assembly (or Casm for short). -Next, the developer would submit the compilation output, the contract class, to the Starknet sequencer via a DECLARE transaction.

-
-
-

Starting with Cairo 1.0, the contract class resulting from compiling Cairo 1.0 does not include Casm. Instead of Casm, it includes instructions in an intermediate representation called Safe Intermediate Representation, Sierra for short. -This new contract class is then compiled by the sequencer, via the Sierra → Casm compiler, to generate the Cairo assembly associated with this class. The Casm code is then executed by the Starknet OS.

-
-
-
-
-

Why do we need Casm?

-
-
-

Starknet is a validity rollup, which means that the execution inside every block needs to be proven, and this is where STARKs come in handy. -However, STARK proofs can address statements that are formulated in the language of polynomial -constraints, and have no knowledge of smart contract execution. -To overcome this gap, we developed Cairo.

-
-
-

Cairo instructions, previously referred to as Casm, are translated to polynomial constraints that enforce the correct execution of a program according to the Cairo semantics defined in Cairo-a Turing-complete STARK-friendly CPU architecture.

-
-
-

Thanks to Cairo, we can formulate the statement "This Starknet block is valid" in a way that we can prove. -Be aware that we can only prove things about Casm. That is, regardless of what the user sends to the Starknet sequencer, what’s proven is the correct Casm execution.

-
-
-

This means that we need a way to translate Sierra into Casm, and this is achieved with the Sierra → Casm compiler.

-
-
-
-
-

Why do we need Sierra?

-
-
-

To understand why we chose to add an additional layer between the code that the user writes (Cairo 1.0) and the code that is being proven (Casm), -we need to consider more components in the system, and the limitations of Cairo.

-
-
-

Reverted transactions, unsatisfiable AIRs, and DOS attacks

-
-

A crucial property of every decentralized L2 is that the sequencers are guaranteed to be compensated for the work they do. -The notion of reverted transactions is a good example: even if the user’s transaction failed mid execution, the sequencer should be able to include it in a block and charge execution fees up to the point of failure.

-
-
-

If the sequencer cannot charge for such transactions, then sending transactions that will eventually fail (after a lot of computation steps) is an obvious DOS attack on the sequencer. -The sequencer cannot look at a transaction and conclude that it would fail without actually doing the work (this is equivalent to solving the halting problem).

-
-
-

The obvious solution to the above predicament is to include such transactions in the block, similar to Ethereum. However, this may not be as simple to do in a validity rollup. -With Cairo 0, there is no separating layer between user code and what is being proven.

-
-
-

This means that users can write code which is unprovable in some cases. In fact, such code is very easy to write, e.g. assert 0=1 is a valid -Cairo instruction that cannot be proven, as it translates to polynomial constraints that are not satisfiable. Any Casm execution that contains this instruction cannot be proven. -Sierra is the layer between user code and the provable statement, that allows us to make sure all transactions are eventually provable.

-
-
-
-

Safe Casm

-
-

The method by which Sierra guarantees that user code is always provable is by compiling Sierra instructions to a subset of Casm, which we call "safe Casm". -The important property that we require from safe Casm is being provable for all inputs. A canonical example for safe Casm is using if/else instructions instead of assert, that is, making sure all failures are -graceful.

-
-
-

To better understand the considerations that go into designing the Sierra → Casm compiler, -consider the find_element function from the common library of Cairo 0:

-
-
-
-
func find_element{range_check_ptr}(array_ptr: felt*, elm_size, n_elms, key) -> (elm_ptr: felt*) {
-    alloc_locals;
-    local index;
-    %{
-        ...
-    %}
-    assert_nn_le(a=index, b=n_elms - 1);
-    tempvar elm_ptr = array_ptr + elm_size * index;
-    assert [elm_ptr] = key;
-    return (elm_ptr=elm_ptr);
-}
-
-
-
- - - - - -
- - -
-

Below we abuse the "Casm" notation by not distinguishing Cairo 0 from Casm and referring to the -above as Casm (while we actually refer to the compilation result of the above).

-
-
-
-
-

For brevity, we have omitted the hint in the above snippet, but it’s clear that this function can only execute correctly if the requested element exists in the array (otherwise it would fail for every possible hint - -there is nothing we can substitute index for, that makes the following lines run successfully).

-
-
-

Such Casm cannot be generated by the Sierra→Casm compiler. -Furthermore, simply replacing the assertion with an if/else statement doesn’t do, as this results in non-deterministic execution. That is, for the same input, different hint values can yield different results. -A malicious prover can use this freedom to harm the user - in this example, they are able to make it seem as if an element isn’t part of the array, even though it actually is.

-
-
-

The safe Casm for finding an element in an array behaves like the above snippet in the happy flow (element is there): an index is given in a hint, and we verify that the array at the hinted index contains the requested element. -However, in the unhappy flow (element isn’t there), we must go over the entire array to verify this.

-
-
-

This was not the case in Cairo 0, as we were fine with certain paths not being provable (in the above snippet, the unhappy flow in which the element isn’t in the array is never provable).

-
-
- - - - - -
- - -
-

Sierra’s gas metering adds further complications to the above example. Even looking through the array to verify that the element isn’t there may leave some flexibility to the prover.

-
-
-

If we take gas limitations into consideration, the user may have enough gas for the happy flow, but not for the unhappy one, making the execution stop mid-search, and allowing the prover to get away with lying about the element not being present.

-
-
-

The way we plan to handle this is by requiring the user to have enough gas for the unhappy flow before actually calling find_element.

-
-
-
-
-
-

Hints in Cairo 1.0

-
-

Smart contracts written with Cairo 1.0 cannot contain user defined hints. This is already true with Cairo 0 contracts (only whitelisted hints are accepted), but with Cairo 1.0 the hints in use are -determined by the Sierra → Casm compiler. Since this compilation is there to ensure that only -"safe" Casm is generated, there is no room for hints that are not generated by the compiler.

-
-
-

In the future, native Cairo 1.0 may contain hint syntax similar to Cairo 0, but it will not be available in Starknet smart contracts (L3s on top of Starknet may make use of such functionality). -Note that this is currently not part of Starknet’s roadmap.

-
-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/class-hash/index.html b/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/class-hash/index.html deleted file mode 100644 index 054c230deb..0000000000 --- a/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/class-hash/index.html +++ /dev/null @@ -1,1109 +0,0 @@ - - - - - - Class hash :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Class hash

-
-
-
-

The class hash is a hash chain of the components that define the class.

-
-
-

Classes written in Cairo are compiled into Sierra code. The Sierra code generated is an intermediate representation of the class. This new contract class is then compiled by the sequencer, via the Sierra → Casm compiler, to generate the Cairo -assembly associated with this class. The resulting Casm code is then executed by the Starknet OS.

-
-
-

For information on how the compiler converts code from Cairo to Sierra, see Cairo and Sierra.

-
-
-
-
-

Components of a Cairo class definition

-
-
-

The components that define a class are:

-
-
- ---- - - - - - - - - - - - - - - - - - - - - - - - - -
-contract_class_version - -

The version of the contract class object. Currently, the Starknet OS -supports version 0.1.0

-
-Array of external functions entry points - -

An entry point is a pair (selector, function_idx), where function_idx is the index of the function inside the Sierra program.

-
- - - - - -
- - -
-

The selector is an identifier through which the function is callable in transactions or in other classes. The selector is the starknet_keccak hash of the function name, encoded in ASCII.

-
-
-
-
-Array of L1 handlers entry points - -

-

-
-Array of constructors entry points - -

Currently, the compiler allows only one constructor.

-
-ABI - -

A string representing the ABI of the class. The ABI hash (which affects the class hash) is given by:

-
-
-
starknet_keccak(bytes(ABI, "UTF-8"))
-
-
-
- - - - - -
- - -
-

This string is supplied by the user declaring the class (and is signed on as part of the DECLARE transaction), and is not enforced to be the true ABI of the associated class. -Without seeing the underlying source code (i.e. the Cairo code generating the class’s Sierra), this ABI should be treated as the "intended" ABI by the declaring party, which may be incorrect (intentionally or otherwise). -The "honest" string would be the json serialization of the contract’s ABI as produced by the Cairo compiler.

-
-
-
-
-Sierra program - -

An array of field elements representing the Sierra instructions.

-
-
-
-
-
-

Computing the Cairo class hash

-
-
-

The hash of the class is the chain hash of its components, computed as follows:

-
-
-
-
class_hash = ℎ(
-    contract_class_version,
-    external_entry_points,
-    l1_handler_entry_points,
-    constructor_entry_points,
-    abi_hash,
-    sierra_program_hash
-)
-
-
-
-

Where

-
-
-
    -
  • -

    \(h\) is the Poseidon hash function

    -
  • -
  • -

    The hash of an entry point array \((selector,index)_{i=1}^n\) is given by \(h(\text{selector}_1,\text{index}_1,...,\text{selector}_n,\text{index}_n)\)

    -
  • -
  • -

    The sierra_program_hash is the Poseidon hash of the bytecode array

    -
  • -
-
-
- - - - - -
- - -
-

The Starknet OS currently supports contract class version 0.1.0, which is represented in the above hash computation as the ASCII encoding of the string CONTRACT_CLASS_V0.1.0 (hashing the version in this manner gives us domain separation between -the hashes of classes and other objects).

-
-
-
-
-

For more details, see the Cairo implementation.

-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/contract-abi/index.html b/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/contract-abi/index.html deleted file mode 100644 index 4e420537e0..0000000000 --- a/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/contract-abi/index.html +++ /dev/null @@ -1,1868 +0,0 @@ - - - - - - Contract ABI :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Contract ABI

-
-

Introduction

-
-
-

A contract ABI is a representation of a Starknet contract interface. It is formatted as JSON and describes the functions, structs and events which are defined in the contract.

-
-
-

You can get the contract’s ABI by using starknet-compile:

-
-
-
-
cargo run --bin starknet-compile -- --single-file </path/to/input.cairo> </path/to/output.json>
-
-
-
-
-
-

An example contract ABI

-
-
-

The following is an example contract ABI:

-
-
-
-
-
    -
  • -

    Cairo v2

    -
  • -
  • -

    Cairo v1

    -
  • -
-
-
-
-
-
[
-  {
-    "type": "impl",
-    "name": "CounterContract",
-    "interface_name": "new_syntax_test_contract::new_syntax_test_contract::ICounterContract"
-  },
-  {
-    "type": "interface",
-    "name": "new_syntax_test_contract::new_syntax_test_contract::ICounterContract",
-    "items": [
-      {
-        "type": "function",
-        "name": "increase_counter",
-        "inputs": [
-          {
-            "name": "amount",
-            "type": "core::integer::u128"
-          }
-        ],
-        "outputs": [],
-        "state_mutability": "external"
-      },
-      {
-        "type": "function",
-        "name": "decrease_counter",
-        "inputs": [
-          {
-            "name": "amount",
-            "type": "core::integer::u128"
-          }
-        ],
-        "outputs": [],
-        "state_mutability": "external"
-      },
-      {
-        "type": "function",
-        "name": "get_counter",
-        "inputs": [],
-        "outputs": [
-          {
-            "type": "core::integer::u128"
-          }
-        ],
-        "state_mutability": "view"
-      }
-    ]
-  },
-  {
-    "type": "constructor",
-    "name": "constructor",
-    "inputs": [
-      {
-        "name": "initial_counter",
-        "type": "core::integer::u128"
-      },
-      {
-        "name": "other_contract_addr",
-        "type": "core::starknet::contract_address::ContractAddress"
-      }
-    ]
-  },
-  {
-    "type": "event",
-    "name": "new_syntax_test_contract::new_syntax_test_contract::counter_contract::CounterIncreased",
-    "kind": "struct",
-    "members": [
-      {
-        "name": "amount",
-        "type": "core::integer::u128",
-        "kind": "data"
-      }
-    ]
-  },
-  {
-    "type": "event",
-    "name": "new_syntax_test_contract::new_syntax_test_contract::counter_contract::CounterDecreased",
-    "kind": "struct",
-    "members": [
-      {
-        "name": "amount",
-        "type": "core::integer::u128",
-        "kind": "data"
-      }
-    ]
-  },
-  {
-    "type": "event",
-    "name": "new_syntax_test_contract::new_syntax_test_contract::counter_contract::Event",
-    "kind": "enum",
-    "variants": [
-      {
-        "name": "CounterIncreased",
-        "type": "new_syntax_test_contract::new_syntax_test_contract::counter_contract::CounterIncreased",
-        "kind": "nested"
-      },
-      {
-        "name": "CounterDecreased",
-        "type": "new_syntax_test_contract::new_syntax_test_contract::counter_contract::CounterDecreased",
-        "kind": "nested"
-      }
-    ]
-  }
-]
-
-
-
-
-
-
-
[
-  {
-    "type": "function",
-    "name": "constructor",
-    "inputs": [
-      {
-        "name": "name_",
-        "type": "core::felt252"
-      },
-      {
-        "name": "symbol_",
-        "type": "core::felt252"
-      },
-      {
-        "name": "decimals_",
-        "type": "core::integer::u8"
-      },
-      {
-        "name": "initial_supply",
-        "type": "core::integer::u256"
-      },
-      {
-        "name": "recipient",
-        "type": "core::starknet::contract_address::ContractAddress"
-      }
-    ],
-    "outputs": [],
-    "state_mutability": "external"
-  },
-  {
-    "type": "function",
-    "name": "get_name",
-    "inputs": [],
-    "outputs": [
-      {
-        "type": "core::felt252"
-      }
-    ],
-    "state_mutability": "view"
-  },
-  {
-    "type": "function",
-    "name": "get_symbol",
-    "inputs": [],
-    "outputs": [
-      {
-        "type": "core::felt252"
-      }
-    ],
-    "state_mutability": "view"
-  },
-  {
-    "type": "function",
-    "name": "get_decimals",
-    "inputs": [],
-    "outputs": [
-      {
-        "type": "core::integer::u8"
-      }
-    ],
-    "state_mutability": "view"
-  },
-  {
-    "type": "function",
-    "name": "get_total_supply",
-    "inputs": [],
-    "outputs": [
-      {
-        "type": "core::integer::u256"
-      }
-    ],
-    "state_mutability": "view"
-  },
-  {
-    "type": "function",
-    "name": "balance_of",
-    "inputs": [
-      {
-        "name": "account",
-        "type": "core::starknet::contract_address::ContractAddress"
-      }
-    ],
-    "outputs": [
-      {
-        "type": "core::integer::u256"
-      }
-    ],
-    "state_mutability": "view"
-  },
-  {
-    "type": "function",
-    "name": "allowance",
-    "inputs": [
-      {
-        "name": "owner",
-        "type": "core::starknet::contract_address::ContractAddress"
-      },
-      {
-        "name": "spender",
-        "type": "core::starknet::contract_address::ContractAddress"
-      }
-    ],
-    "outputs": [
-      {
-        "type": "core::integer::u256"
-      }
-    ],
-    "state_mutability": "view"
-  },
-  {
-    "type": "function",
-    "name": "transfer",
-    "inputs": [
-      {
-        "name": "recipient",
-        "type": "core::starknet::contract_address::ContractAddress"
-      },
-      {
-        "name": "amount",
-        "type": "core::integer::u256"
-      }
-    ],
-    "outputs": [],
-    "state_mutability": "external"
-  },
-  {
-    "type": "function",
-    "name": "transfer_from",
-    "inputs": [
-      {
-        "name": "sender",
-        "type": "core::starknet::contract_address::ContractAddress"
-      },
-      {
-        "name": "recipient",
-        "type": "core::starknet::contract_address::ContractAddress"
-      },
-      {
-        "name": "amount",
-        "type": "core::integer::u256"
-      }
-    ],
-    "outputs": [],
-    "state_mutability": "external"
-  },
-  {
-    "type": "function",
-    "name": "approve",
-    "inputs": [
-      {
-        "name": "spender",
-        "type": "core::starknet::contract_address::ContractAddress"
-      },
-      {
-        "name": "amount",
-        "type": "core::integer::u256"
-      }
-    ],
-    "outputs": [],
-    "state_mutability": "external"
-  },
-  {
-    "type": "function",
-    "name": "increase_allowance",
-    "inputs": [
-      {
-        "name": "spender",
-        "type": "core::starknet::contract_address::ContractAddress"
-      },
-      {
-        "name": "added_value",
-        "type": "core::integer::u256"
-      }
-    ],
-    "outputs": [],
-    "state_mutability": "external"
-  },
-  {
-    "type": "function",
-    "name": "decrease_allowance",
-    "inputs": [
-      {
-        "name": "spender",
-        "type": "core::starknet::contract_address::ContractAddress"
-      },
-      {
-        "name": "subtracted_value",
-        "type": "core::integer::u256"
-      }
-    ],
-    "outputs": [],
-    "state_mutability": "external"
-  },
-  {
-    "type": "event",
-    "name": "Transfer",
-    "inputs": [
-      {
-        "name": "from",
-        "type": "core::starknet::contract_address::ContractAddress"
-      },
-      {
-        "name": "to",
-        "type": "core::starknet::contract_address::ContractAddress"
-      },
-      {
-        "name": "value",
-        "type": "core::integer::u256"
-      }
-    ]
-  },
-  {
-    "type": "event",
-    "name": "Approval",
-    "inputs": [
-      {
-        "name": "owner",
-        "type": "core::starknet::contract_address::ContractAddress"
-      },
-      {
-        "name": "spender",
-        "type": "core::starknet::contract_address::ContractAddress"
-      },
-      {
-        "name": "value",
-        "type": "core::integer::u256"
-      }
-    ]
-  }
-]
-
-
-
-
-
-
-
-
-

Cairo v2.3.0 changes

-
-
-

Nested events

-
-

With Cairo v2.3.0 the limitations on the Event enum have been relaxed, allowing more flexibility on the events that can be emitted from a given contract.

-
-
-

For example:

-
-
-
    -
  • -

    It is no longer enforced that the Event enum variants are structs of the same name as the variant, they can now be a struct or an enum of any name.

    -
  • -
  • -

    Enum variants inside event ABI entries (entries in the abi with "type": "event" and "kind": "enum") now have two possible kinds. Before v2.3.0 it was always "kind": "nested", now "kind: "flat" is also possible.

    -
  • -
  • -

    v2.3.0 is backward compatible with version ≥ 2.0.0 ABI, so the same structure of the ABI is kept, while allowing flexibility.

    -
  • -
-
-
- - - - - -
- - -
-

Between versions v2.0.0 and v2.2.0, to identify all potential serializations of events (what raw keys, data arrays can be emitted given the ABI), -it was sufficient to iterate over the abi entries with "type": "event" and "kind": "struct", skipping the encapsulating Event type which has "kind": "enum".

-
-
-

With v2.3.0 onwards, doing so may result in losing information.

-
-
-
-
-

To illustrate this, consider the following example:

-
-
-
-
//high-level code defining the events
-
-#[event]
-#[derive(Drop, starknet::Event)]
-enum Event {
-    ComponentEvent: test_component::Event,
-    TestCounterIncreased: CounterIncreased,
-    TestCounterDecreased: CounterDecreased,
-    TestEnum: MyEnum
-}
-
-#[derive(Drop, starknet::Event)]
-struct CounterIncreased {
-    amount: u128
-}
-
-#[derive(Drop, starknet::Event)]
-struct CounterDecreased {
-    amount: u128
-}
-
-#[derive(Copy, Drop, starknet::Event)]
-enum MyEnum {
-  Var1: MyStruct
-}
-
-#[derive(Copy, Drop, Serde, starknet::Event)]
-struct MyStruct {
-	member: u128
-}
-
-
-
-
-

Variant names different from types

-
-

In v2.3.0 enum variant types can now have any name.

-
-
-

As an example the TestCounterIncreased variant and the CounterIncreased type, as they appear in the ABI:

-
-
-
-
{
-  "type": "event",
-  "name": "<namespace>::Event",
-  "kind": "enum",
-  "variants": [
-      {
-          "name": "ComponentEvent",
-          "type": "<namespace>::test_component::Event",
-          "kind": "nested"
-      },
-      {
-          "name": "TestCounterIncreased",
-          "type": "<namespace>::CounterIncreased",
-          "kind": "nested"
-      },
-      {
-          "name": "TestCounterDecreased",
-          "type": "<namespace>::CounterDecreased",
-          "kind": "nested"
-      },
-      {
-          "name": "TestEnum",
-          "type": "<namespace>::MyEnum",
-          "kind": "nested"
-      }
-  ]
-},
-{
-	"type": "event",
-	"name": "<namespace>::CounterIncreased",
-	"kind": "struct",
-	"members": [
-		{
-			"name": "amount",
-			"type": "core::integer::u128",
-			"kind": "data"
-		}
-	]
-}
-
-
-
-

When the contract emits the TestCounterIncreased event, for example by writing self.emit(CounterIncreased { amount })), the event that is emitted has the following keys and data:

-
-
-
    -
  • -

    One key based on the variant name: sn_keccak(TestCounterIncreased). This information only appears in the <namespace>::Event type entry in the ABI, -as the name TestCounterIncreased does not appear in the "kind": "struct" ABI entry. This did not matter in previous versions when the variant name and type had to be equal.

    -
  • -
  • -

    One data element based on the struct CounterIncreased which is associated with TestCounterIncreased via one of the Event type variants.

    -
  • -
-
-
-
-

Enum variants inside Event

-
-

The introduction of components allows variants of Event to be enums. -In the following example, we have two such variants: TestEnum (unrelated to components) and ComponentEvent.

-
-
-

The serialization to keys and data is the same in both cases, so this example will focus on TestEnum:

-
-
-

This example shows the TestEnum variant entry inside Event:

-
-
-
-
{
-"name": "TestEnum",
-"type": "<namespace>::MyEnum",
-"kind": "nested"
-}
-
-
-
-

This example shows the MyEnum event entry:

-
-
-
-
{
-	"type": "event",
-	"name": "<namespace>::MyEnum",
-	"kind": "enum",
-	"variants": [
-		{
-			"name": "Var1",
-			"type": "<namespace>::MyStruct",
-			"kind": "nested"
-		}
-	]
-}
-
-
-
-

This example shows the MyStruct event entry:

-
-
-
-
{
-	"type": "event",
-	"name": "<namespace>::MyStruct",
-	"kind": "struct",
-	"members": [
-		{
-			"name": "member",
-			"type": "core::integer::u128",
-			"kind": "data"
-		}
-	]
-}
-
-
-
- - - - - -
- - -
-

If a TestEnum event is being emitted via self.emit(Event::TestEnum(MyEnum::Var1(MyStruct {member: 5}))), you can implement the trait Into<MyStruct, Event> to avoid having to write it out in full.

-
-
-
-
-

When the event is emitted, the serialization to keys and data happens as follows:

-
-
-
    -
  • -

    Since the TestEnum variant has kind nested, add the first key: sn_keccak(TestEnum), and the rest of the serialization to keys and data is done recursively via the starknet::event trait implementation of MyEnum.

    -
  • -
  • -

    Next, you can handle a "kind": "nested" variant (previously it was TestEnum, now it’s Var1), which means you can add another key depending on the sub-variant: sn_keccak(Var1), and proceed to serialize according to the starknet::event -implementation of MyStruct.

    -
  • -
  • -

    Finally, proceed to serialize MyStruct, which gives us a single data member.

    -
  • -
-
-
-

This results in keys = [sn_keccak(TestEnum), sn_keccak(Var1)] and data=[5]

-
-
- - - - - -
- - -
-

Allowing variants that are themselves enums (TestEnum is an enum variant here) means further nesting is possible.

-
-
-
-
-

For example, if the high level code is changed to:

-
-
-
-
#[event]
-#[derive(Drop, starknet::Event)]
-enum Event {
-    ComponentEvent: test_component::Event,
-    TestCounterIncreased: CounterIncreased,
-    TestCounterDecreased: CounterDecreased,
-    TestEnum: MyEnum
-}
-
-#[derive(Copy, Drop, starknet::Event)]
-enum MyEnum {
-    Var1: AnotherEnum
-}
-
-#[derive(Copy, Drop, Serde, starknet::Event)]
-enum AnotherEnum {
-    Var2: MyStruct
-}
-
-#[derive(Copy, Drop, Serde, starknet::Event)]
-struct MyStruct {
-    member: u128,
-}
-
-
-
-

then self.emit(Event::TestEnum(MyEnum::Var1(AnotherEnum::Var2(MyStruct { member: 5 })))) -(as before, Into implementations can shorten this) will emit an event with keys = [sn_keccak(TestEnum), sn_keccak(Var1), sn_keccak(Var2)] and data=[5].

-
-
-

This will look as follows in the ABI (only the relevant parts are shown):

-
-
-
-
{
-  "type": "event",
-  "name": "<namespace>::Event",
-  "kind": "enum",
-  "variants": [
-    // ignoring all the other variants for brevity
-    {
-      "name": "TestEnum",
-      "type": "<namespace>::MyEnum",
-      "kind": "nested"
-    }
-  ]
-},
-{
-  "type": "event",
-  "name": "<namespace>::MyEnum",
-  "kind": "enum",
-  "variants": [
-    {
-      "name": "Var1",
-      "type": "<namespace>::AnotherEnum",
-      "kind": "nested"
-    }
-  ]
-},
-{
-  "type": "event",
-  "name": "<namespace>::AnotherEnum",
-  "kind": "enum",
-  "variants": [
-    {
-      "name": "Var2",
-      "type": "<namespace>::MyStruct",
-      "kind": "nested"
-    }
-  ]
-}
-
-
-
-

As TestEnum, Var1 and Var2 are of kind nested, a selector should be added to the list of keys, before continuing to recursively serialize.

-
-
-
-

Flattened enum variants

-
-

You might not want to nest enums when serializing the event. For example, if you write an ERC-20 as a component, not a contract, that is pluggable anywhere, you might not want the contract to modify the keys of known events such as Transfer.

-
-
-

To avoid nesting, write the following high level code:

-
-
-
-
#[event]
-#[derive(Drop, starknet::Event)]
-enum Event {
-	ComponentEvent: test_component::Event,
-	TestCounterIncreased: CounterIncreased,
-	TestCounterDecreased: CounterDecreased,
-	#[flat]
-	TestEnum: MyEnum
-}
-
-
-
-

By writing the above, the TestEnum variant entry in the ABI will change to:

-
-
-
-
{
-"name": "TestEnum",
-"type": "<namespace>::MyEnum",
-"kind": "flat"
-}
-
-
-
-

This means that self.emit(Event::TestEnum(MyEnum::Var1(MyStruct {member: 5}))) will emit an event with keys=[sn_keccak(Var1)] and data=[5].

-
-
-
-
-
-

Cairo v2.0.0 changes

-
-
-

With the transition to v2.0.0, the contract ABI underwent some changes.

-
-
-

Consider the following high level code that generates the ABI in the following example:

-
-
-
-
#[starknet::interface]
-trait IOtherContract<TContractState> {
-    fn decrease_allowed(self: @TContractState) -> bool;
-}
-
-#[starknet::interface]
-trait ICounterContract<TContractState> {
-    fn increase_counter(ref self: TContractState, amount: u128);
-    fn decrease_counter(ref self: TContractState, amount: u128);
-    fn get_counter(self: @TContractState) -> u128;
-}
-
-#[starknet::contract]
-mod counter_contract {
-    use starknet::ContractAddress;
-    use super::{
-        IOtherContractDispatcher, IOtherContractDispatcherTrait, IOtherContractLibraryDispatcher
-    };
-
-    #[storage]
-    struct Storage {
-        counter: u128,
-        other_contract: IOtherContractDispatcher
-    }
-
-    #[event]
-    #[derive(Drop, starknet::Event)]
-    enum Event {
-        CounterIncreased: CounterIncreased,
-        CounterDecreased: CounterDecreased
-    }
-
-    #[derive(Drop, starknet::Event)]
-    struct CounterIncreased {
-        amount: u128
-    }
-
-    #[derive(Drop, starknet::Event)]
-    struct CounterDecreased {
-        amount: u128
-    }
-
-    #[constructor]
-    fn constructor(
-        ref self: ContractState, initial_counter: u128, other_contract_addr: ContractAddress
-    ) {
-        self.counter.write(initial_counter);
-        self
-            .other_contract
-            .write(IOtherContractDispatcher { contract_address: other_contract_addr });
-    }
-
-    #[external(v0)]
-    impl CounterContract of super::ICounterContract<ContractState> {
-        fn get_counter(self: @ContractState) -> u128 {
-            self.counter.read()
-        }
-
-        fn increase_counter(ref self: ContractState, amount: u128) {
-            let current = self.counter.read();
-            self.counter.write(current + amount);
-            self.emit(CounterIncreased { amount });
-        }
-
-        fn decrease_counter(ref self: ContractState, amount: u128) {
-            let allowed = self.other_contract.read().decrease_allowed();
-            if allowed {
-                let current = self.counter.read();
-                self.counter.write(current - amount);
-                self.emit(CounterDecreased { amount });
-            }
-        }
-    }
-}
-
-
-
-

Interface and Impl ABI entries

-
-

Since the CounterContract impl is annotated with the #[external(v0)] attribute, you’ll find the following impl entry in the ABI:

-
-
-
-
{
-  "type": "impl",
-  "name": "CounterContract",
-  "interface_name": "new_syntax_test_contract::new_syntax_test_contract::ICounterContract"
-}
-----
-
-
-
-

This means that every function appearing in the ICounterContract interface -is a possible entry point of the contract.

-
-
- - - - - -
- - -
-

Standalone functions in the contract outside an external impl can also be annotated with #[external(v0)] (currently, this is the only way to add L1 handlers). In such cases, a corresponding function (or l1_handler) entry will be found in -the ABI in the same hierarchy as impls and interfaces.

-
-
-
-
-
-

Events

-
-

In Cairo v2, a dedicated type for the contract’s events was introduced. Currently, the contract event type must be an enum named Event, whose variants are structs of the same name as the variant. Types that can be emitted via self.emit(_) must implement the Event trait, which defines how this type should be serialized into two felt252 arrays, keys and data.

-
-
-

The Event enum variants appear in the ABI under "type" = "event" rather than regular structs.

-
-
-

For such entries, each member has an additional kind field that specifies how the serialization into keys and data takes place:

-
-
-
    -
  • -

    If the kind is key, then this member or variant are serialized into the event’s keys.

    -
  • -
  • -

    If the kind is data, then this member or variant are serialized into the event’s data.

    -
  • -
  • -

    If the kind is nested, then the member or variant are serialized according to the Event attribute, potentially adding to both keys and data.

    -
  • -
-
-
- - - - - -
- - -
-

This feature is not yet supported, so no high level code written in Cairo v2.0.0 can generate such an ABI.

-
-
-
-
-
-

Specification

-
-

You can find a JSON schema specification of the ABI in the starknet-specs repository.

-
-
-

For a UI-friendly version, you can use the OPEN-RPC playground.

-
-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/contract-address/index.html b/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/contract-address/index.html deleted file mode 100644 index c86de353ea..0000000000 --- a/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/contract-address/index.html +++ /dev/null @@ -1,999 +0,0 @@ - - - - - - Contract address :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Contract address

-
-

The contract address is a unique identifier of the contract on Starknet. It is a chain hash of the following information:

-
-
-
    -
  • -

    prefix - The ASCII encoding of the constant string STARKNET_CONTRACT_ADDRESS.

    -
  • -
  • -

    deployer_address - The deployer address, unless deploy_from_zero is true, in which case it is 0.

    -
  • -
  • -

    salt - The salt passed by the contract calling the syscall, provided by the transaction sender.

    -
  • -
  • -

    class_hash - See the class hash documentation.

    -
  • -
  • -

    constructor_calldata_hash - Array hash of the inputs to the constructor.

    -
  • -
-
-
-

The address is computed as follows:

-
-
-
-
contract_address = pedersen(
-    “STARKNET_CONTRACT_ADDRESS”,
-    deployer_address,
-    salt,
-    class_hash,
-    constructor_calldata_hash)
-
-
-
- - - - - -
- - -
-

A random salt ensures unique addresses for smart contract deployments, preventing conflicts when deploying identical contract classes.

-
-
-

It also thwarts replay attacks by influencing the transaction hash with a unique sender address.

-
-
-
-
-
Additional resources
-
    -
  • -

    For more information on the address computation, see contract_address.cairo in the Cairo code repository.

    -
  • -
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/contract-classes/index.html b/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/contract-classes/index.html deleted file mode 100644 index 31950bd0d2..0000000000 --- a/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/contract-classes/index.html +++ /dev/null @@ -1,1043 +0,0 @@ - - - - - - Contract classes and instances :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Contract classes and instances

-
-
-
-

As in object-oriented programming, Starknet distinguishes between a contract and its implementation by separating contracts into classes and instances.

-
-
-
-
-

Contract classes

-
-
-

A contract class is the definition of a contract. It includes Cairo byte code, hint information, entry point names, and everything that defines its semantics.

-
-
-

Each class is uniquely identified by its class hash, comparable to a class name in traditional object-oriented programming languages.

-
-
-
-
-

Contract instances

-
-
-

A contract instance is a deployed contract that corresponds to a class. Only contract instances act as true contracts, in that they have their own storage and can be called by transactions or other contracts.

-
-
-

A contract class does not necessarily have a deployed instance in Starknet.

-
-
- - - - - -
- - -
-

A contract class does not necessarily require a deployed instance in Starknet.

-
-
-
-
-

A contract instance has a nonce, the value of which is the number of transactions originating from this address plus 1. For example, when you deploy an account with a DEPLOY_ACCOUNT transaction, the nonce of the account contract in the transaction is 0. After the DEPLOY_ACCOUNT transaction, until the account contract sends its next transaction, the nonce is 1.

-
-
-
-
-

Working with classes

-
-
- ---- - - - - - - - - - - - - -
-Adding new classes - -

To introduce new classes to Starknet’s state, use the DECLARE transaction.

-
-Deploying instances - -

To deploy a new instance of a previously declared class, use the deploy system call.

-
-Using class functionality - -

To use the functionality of a declared class without deploying an instance, use the library_call system call. Analogous to Ethereum’s delegatecall, it enables you to use code in an existing class without deploying a contract instance.

-
-
-
-
-
-

Additional resources

- -
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/contract-storage/index.html b/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/contract-storage/index.html deleted file mode 100644 index 04d5a3c610..0000000000 --- a/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/contract-storage/index.html +++ /dev/null @@ -1,1034 +0,0 @@ - - - - - - Contract storage :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Contract storage

-
-

Storage layout

-
-
-

The contract’s storage is a persistent storage space where you can read, write, modify, and persist data. The storage is a map with \(2^{251}\) slots, where each slot is a felt which is initialized to 0.

-
-
-
-
-

Storage low level functions

-
-
-

The basic function for writing to storage writes, value to key is:

-
-
-
-
storage_write_syscall(address_domain, address, value)
-
-
-
-

storage_read is a basic function that is used for getting the storage address, this function is created by the compiler when defining a storage variable, as explained below. This function returns the address of the storage variable. Below we discuss -how this -address is determined from the variable’s name and keys.

-
-
-

Both storage_read and storage_write are system calls that can be imported by adding the line:

-
-
-
-
use starknet::syscalls::storage_read_syscall;
-use starknet::syscalls::storage_write_syscall;
-
-
-
-
-
-

Storage variables

-
-
-

The most common way to interact with a contract’s storage is through storage variables.

-
-
-

The #[storage] attribute above the Storage struct declares that the contents of this struct are part of the contract storage. The storage variables stored inside this struct can consist of a single felt, or it can be a mapping from multiple arguments to a tuple of felts or structs.

-
-
-

To use this variable, the var.read(args), var.write(args, value) and var.address(args) functions are automatically created by the #[storage] attribute, for reading the storage value, writing the storage value and getting the storage address, respectively.

-
-
-

The Starknet contract compiler generates the Cairo code that maps the storage variable’s name and argument values to an address — so that it can be part of the generated proof.

-
-
-

The address of a storage variable is computed as follows:

-
-
-
    -
  • -

    If it is a single value, then the address is sn_keccak(variable_name), where variable_name is the ASCII encoding of the variable’s name.

    -
  • -
  • -

    If it is a (nested) mapping, then the address of the value at key k_1,...,k_n is -h(...h(h(sn_keccak(variable_name),k_1),k_2),...,k_n) where \(h\) is the -Pedersen hash and the final value is taken \(\bmod 2^{251}-256\)

    -
  • -
  • -

    If it is a mapping to complex values (e.g., tuples or structs), then this complex value lies in a continuous segment starting from the address calculated in the previous point. Note that 256 field elements is the current limitation on the maximal size of a complex storage value.

    -
  • -
  • -

    Note that when calling var.address(args) for a storage variable with complex values, the returned value is the address of the first element in the storage.

    -
  • -
-
-
-

We can summarize the above as follows:

-
-
-

storage variable address := pedersen(keccak(variable name), keys)

-
-
-

The following example defines storage variables with complex values.

-
-
-
-
#[storage]
-struct Storage {
-    name: felt252,
-    symbol: felt252,
-    decimals: u8,
-    total_supply: u256,
-    balances: LegacyMap::<ContractAddress, u256>,
-    allowances: LegacyMap::<(ContractAddress, ContractAddress), u256>,
-}
-
-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/contract-syntax/index.html b/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/contract-syntax/index.html deleted file mode 100644 index edb4619e6b..0000000000 --- a/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/contract-syntax/index.html +++ /dev/null @@ -1,1369 +0,0 @@ - - - - - - Migrating a contract from Cairo v1 to Cairo v2 :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Migrating a contract from Cairo v1 to Cairo v2

-
-

With the v2.0.0 release of the Cairo compiler, the Starknet contract syntax has evolved, affecting the organization of functions, storage, and events.

-
-
-

For more information on the latest syntax changes, see the Community Forum post Cairo 1: Contract Syntax is Evolving.

-
-
-
Prerequisites
-
    -
  • -

    A contract written with the Cairo compiler v1

    -
  • -
  • -

    The most recent version of the Cairo compiler

    -
  • -
-
-
-
Procedure
-
    -
  1. -

    Change the contract annotation from #[contract] to #[starknet::contract]. For example::

    -
    -
    -
    -
      -
    • -

      Cairo v1

      -
    • -
    • -

      Cairo v2

      -
    • -
    -
    -
    -
    -
    -
    #[contract]
    -mod CounterContract {
    -   ...
    -}
    -
    -
    -
    -
    -
    -
    -
    #[starknet::contract]
    -mod CounterContract {
    -   ...
    -}
    -
    -
    -
    -
    -
    -
  2. -
  3. -

    Annotate the Storage struct with the #[storage] attribute. For example:

    -
    -
    -
    -
      -
    • -

      Cairo v1

      -
    • -
    • -

      Cairo v2

      -
    • -
    -
    -
    -
    -
    -
    struct Storage {
    -    counter: u128,
    -    other_contract: IOtherContractDispatcher
    -}
    -
    -
    -
    -
    -
    -
    -
    #[storage]
    -struct Storage {
    -    counter: u128,
    -    other_contract: IOtherContractDispatcher
    -}
    -
    -
    -
    -
    -
    -
  4. -
  5. -

    Gather your contract’s external and view function signatures under a trait annotated with -#[starknet::interface] as follows:

    -
    -
      -
    • -

      Add a generic parameter to the trait. In the following example, the name TContractState -represents the state of your contract.

      -
    • -
    • -

      For view functions, add the self: @TContractState argument.

      -
    • -
    • -

      For external functions, add the ref self: TContractState argument.

      -
    • -
    • -

      Static functions that do not touch storage or emit events do not require an additional argument.

      -
      -

      For example:

      -
      -
      -
      -
      -
        -
      • -

        Cairo v1

        -
      • -
      • -

        Cairo v2

        -
      • -
      -
      -
      -
      -
      -
      #[contract]
      -mod CounterContract {
      -   #[external]
      -   fn increase_counter(amount: u128) { ... }
      -   #[external]
      -   fn decrease_counter(amount: u128) { ... }
      -   #[view]
      -   fn get_counter() -> u128 { ... }
      -}
      -
      -
      -
      -
      -
      -
      -
      #[starknet::interface]
      -trait ICounterContract<TContractState> {
      -   fn increase_counter(ref self: TContractState, amount: u128);
      -   fn decrease_counter(ref self: TContractState, amount: u128);
      -   fn get_counter(self: @TContractState) -> u128;
      -}
      -#[starknet::contract]
      -mod CounterContract {
      -   ...
      -}
      -
      -
      -
      -
      -
      -
    • -
    -
    -
  6. -
  7. -

    Add the external and view function bodies under an impl of the interface trait, and mark the -impl with the [external(v0)] attribute, which generates the type of dispatcher that is used to call the contract.

    -
    -

    For example:

    -
    -
    -
    -
    -
      -
    • -

      Cairo v1

      -
    • -
    • -

      Cairo v2

      -
    • -
    -
    -
    -
    -
    -
    #[contract]
    -mod CounterContract {
    -   #[external]
    -   fn increase_counter(amount: u128) { ... }
    -   #[external]
    -   fn decrease_counter(amount: u128) { ... }
    -   #[view]
    -   fn get_counter() -> u128 { ... }
    -}
    -
    -
    -
    -
    -
    -
    -
    #[starknet::interface]
    -trait ICounterContract<TContractState> {
    -   fn increase_counter(ref self: TContractState, amount: u128);
    -   fn decrease_counter(ref self: TContractState, amount: u128);
    -   fn get_counter(self: @TContractState) -> u128;
    -}
    -#[starknet::contract]
    -mod CounterContract {
    -   #[external(v0)]
    -   impl CounterContract of super::ICounterContract<ContractState> {
    -      fn increase_counter(ref self: ContractState, amount: u128) { ... }
    -      fn decrease_counter(ref self: ContractState, amount: u128) { ... }
    -      fn get_counter(self: @ContractState) -> u128 { ... }
    -   }
    -}
    -
    -
    -
    -
    -
    -
  8. -
  9. -

    Replace the #[abi] attribute with #[starknet::interface].

    -
    - - - - - -
    - - -
    -

    While it doesn’t affect the generated code, adding to the trait a generic parameter T representing the contract’s state, -and adding the ref self: T argument to external functions and self: @T argument for view -functions makes the implementation more complete.

    -
    -
    -
    -
    -

    For example:

    -
    -
    -
    -
    -
      -
    • -

      Cairo v1

      -
    • -
    • -

      Cairo v2

      -
    • -
    -
    -
    -
    -
    -
    #[abi]
    -trait IOtherContract {
    -    fn decrease_allowed() -> bool;
    -}
    -
    -
    -
    -
    -
    -
    -
    #[starknet::interface]
    -trait IOtherContract<TContractState> {
    -    fn decrease_allowed(self: @TContractState) -> bool;
    -}
    -
    -
    -
    -
    -
    -
  10. -
  11. -

    Modify storage accesses to happen through ContractState or @ContractState.

    -
    - - - - - -
    - - -
    -

    No external functions in the contract that access storage also need to get it as an argument.

    -
    -
    -
    -
    -

    For example:

    -
    -
    -
    -
    -
      -
    • -

      Cairo v1

      -
    • -
    • -

      Cairo v2

      -
    • -
    -
    -
    -
    -
    -
    let current = counter::read();
    -
    -
    -
    -
    -
    -
    -
    let current = self.counter.read();
    -
    -
    -
    -
    -
    -
  12. -
  13. -

    Unify all the contract’s events under the Event enum, and add a corresponding struct for every -variant.

    -
    - - - - - -
    - - -
    -

    All the structs must derive the Event trait, -and each member type must implement the Serde trait.

    -
    -
    -
    -
    -

    For example:

    -
    -
    -
    -
    -
      -
    • -

      Cairo v1

      -
    • -
    • -

      Cairo v2

      -
    • -
    -
    -
    -
    -
    -
    #[event]
    -fn counter_increased(amount: u128) {}
    -#[event]
    -fn counter_decreased(amount: u128) {}
    -
    -
    -
    -
    -
    -
    -
    #[event]
    -#[derive(Drop, starknet::Event)]
    -enum Event {
    -    CounterIncreased: CounterIncreased,
    -    CounterDecreased: CounterDecreased
    -}
    -#[derive(Drop, starknet::Event)]
    -struct CounterIncreased {
    -    amount: u128
    -}
    -#[derive(Drop, starknet::Event)]
    -struct CounterDecreased {
    -    amount: u128
    -}
    -
    -
    -
    -
    -
    -
  14. -
  15. -

    Emit events via the ContractState type. For example:

    -
    -
    -
    -
      -
    • -

      Cairo v1

      -
    • -
    • -

      Cairo v2

      -
    • -
    -
    -
    -
    -
    -
    fn increase_counter(amount: u128) {
    -    ...
    -    counter_increased(amount);
    -}
    -
    -
    -
    -
    -
    -
    -
    fn increase_counter(ref self: ContractState, amount: u128) {
    -    ...
    -    self.emit(Event::CounterIncreased(CounterIncreased { amount }));
    -}
    -
    -
    -
    -
    -
    -
  16. -
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/execution_info/index.html b/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/execution_info/index.html deleted file mode 100644 index cb848934de..0000000000 --- a/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/execution_info/index.html +++ /dev/null @@ -1,1197 +0,0 @@ - - - - - - Execution information :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Execution information

-
-
-
-

For the most up-to-date information, see the info.cairo contract.

-
-
-

The struct ExecutionInfo contains the following information about the currently executing block and the transactions in the block.

-
-
-
-
-

The ExecutionInfo struct

-
-
- ---- - - - - - - - - - - - - - - - - - - - - -
-block_info: Box<BlockInfo> - -

Contains information about a block. For details, see The BlockInfo struct

-
-tx_info: Box<TxInfo> - -

Contains information about a transaction. For details, see Transaction information: The TxInfo struct

-
-caller_address: ContractAddress - -

The address of the contract that invokes the get_execution_info syscall.

-
-contract_address: ContractAddress - -

The address of the contract in which the get_execution_info syscall appears.

-
-entry_point_selector: felt252 - -

The function that includes the get_execution_info syscall.

-
-
-
-
-
-

The BlockInfo struct

-
-
- ---- - - - - - - - - - - - - -
-block_number: u64 - -

The number of the block that is currently being executed. When called from an account contract’s `__validate__`, `__validate_deploy__`, or `__validate_declare__` function, this value is rounded down to the nearest multiple of 100.

-
-block_timestamp: u64 - -

The timestamp showing the creation time of the block, in seconds since the Unix epoch, based on UTC time, rounded down to the nearest second. When called from an account contract’s `__validate__`, `__validate_deploy__`, or `__validate_declare__` function, this value is rounded down to the nearest hour.

-
-sequencer_address: ContractAddress - -

The address of the Starknet sequencer contract.

-
-
-
-
-
-

Transaction information: The TxInfo struct

-
-
- ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-version: felt252 - -

The version of the transaction. It is fixed (currently, 3) in the OS, and should be signed by the account contract. This field allows invalidating old transactions, whenever the meaning of the other transaction fields is changed (in the OS).

-
-account_contract_address: ContractAddress - -

The account contract from which this transaction originates.

-
-max_fee: u128 - -

The max_fee field of the transaction.

-
-signature: Span<felt252> - -

The signature of the transaction.

-
-transaction_hash: felt252 - -

The hash of the transaction.

-
-chain_id: felt252 - -

The identifier of the chain. -This field can be used to prevent replay of testnet transactions on mainnet.

-
-nonce: felt252 - -

The transaction’s nonce.

-
-resource_bounds: Span<ResourceBounds> - -

A span of ResourceBounds structs. For details, see The ResourceBounds struct.

-
-tip: u128 - -

The tip.

-
-paymaster_data: Span<felt252> - -

If specified, the paymaster should pay for the execution of the tx. -The data includes the address of the paymaster sponsoring the transaction, followed by -extra data to send to the paymaster.

-
-nonce_data_availability_mode: u32 - -

The data availability mode for the nonce.

-
-fee_data_availability_mode: u32 - -

The data availability mode for the account balance from which fee will be taken.

-
-account_deployment_data: Span<felt252> - -

If nonempty, will contain the required data for deploying and initializing an account -contract: its class hash, address salt and constructor calldata.

-
-
-
-
-
-

The ResourceBounds struct

-
-
- ---- - - - - - - - - - - - - -
-resource: felt252 - -

The name of the resource.

-
-max_amount: u64 - -

The maximum amount of the resource allowed for usage during the execution.

-
-max_price_per_unit: u128 - -

The maximum price the user is willing to pay for the resource unit.

-
-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/serialization_of_Cairo_types/index.html b/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/serialization_of_Cairo_types/index.html deleted file mode 100644 index 65fffffc87..0000000000 --- a/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/serialization_of_Cairo_types/index.html +++ /dev/null @@ -1,1388 +0,0 @@ - - - - - - Serialization of Cairo types :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Serialization of Cairo types

-
-
-
-

When you interact with contracts, especially if you are a library or SDK developer that wants to construct transactions, you need to understand how Cairo handles types that are larger than 252 bits so you can correctly formulate the calldata in a transaction.

-
-
-

The field element (felt252), which contains 252 bits, is the only actual type in the Cairo VM. So all high-level Cairo types that are larger than 252 bits, such as u256 or arrays, are ultimately represented by a list of felts. In order to interact with a contract, you need to know how to encode its arguments as a list of felts so you can correctly formulate the calldata in the transaction. -SDKs, such as starknet.js, encode the calldata for you, so you can simply specify any type and the SDK properly formulates the calldata. For example, you don’t need to know that a u256 value is represented by two felt252 values. You can simply specify a single integer in your code, and the SDK takes care of the serialization and encoding.

-
-
-
-
-

Data types of 252 bits or less

-
-
-

The following types are smaller than 252 bits. For these types, each value is serialized as a single-member list that contains one felt252 value.

-
-
-
    -
  • -

    ContractAddress

    -
  • -
  • -

    EthAddress

    -
  • -
  • -

    StorageAddress

    -
  • -
  • -

    ClassHash

    -
  • -
  • -

    Unsigned integers smaller than 252 bits: u8, u16, u32, u64, u128, and usize

    -
  • -
  • -

    bytes31

    -
  • -
  • -

    felt252

    -
  • -
  • -

    Signed integers smaller than 252 bits: i8, i16, i32, i64, and i128.

    -
    -

    A negative value, \(-x\), is serialized as \(P-x\), where:

    -
    -
    -
    -\[P = 2^{251} + 17*2^{192} + 1\] -
    -
    -
    -

    For example, -5 is serialized as \(P-5\). For more information on the value of \(P\), see The STARK field.

    -
    -
  • -
-
-
-
-
-

Data types greater than 252 bits

-
-
-

The following Cairo data types have non-trivial serialization:

-
-
-
    -
  • -

    u256 and u512

    -
  • -
  • -

    arrays

    -
  • -
  • -

    enums

    -
  • -
  • -

    structs

    -
  • -
  • -

    ByteArray, which represents strings

    -
  • -
-
-
-
-
-

Serialization of unsigned integers

-
-
-

Among unsigned integers, only u256 and u512 have non-trivial serialization.

-
-
-

Serialization of u256 values

-
-

A u256 value in Cairo is represented by two felt252 values, as follows:

-
-
-
    -
  • -

    The first felt252 value contains the 128 least significant bits, usually referred to as the low part of the original u256 value.

    -
  • -
  • -

    The second felt252 value contains the 128 most significant bits, usually referred to as the high part of the original u256 value.

    -
  • -
-
-
-

For example:

-
-
-
    -
  • -

    A u256 variable whose decimal value is 2 is serialized as [2,0]. To understand why, examine the binary representation of 2 and split it into two 128-bit parts, as follows:

    -
    -
    -\[\underbrace{0\cdots0}_{\text{128 high bits}} | -\underbrace{0\cdots10}_{\text{128 low bits}}\] -
    -
    -
  • -
  • -

    A u256 variable whose decimal value is 2128 is serialized as [0,1]. To understand why, examine the binary representation of 2128 and split it into two 128-bit parts, as follows:

    -
    -
    -\[\underbrace{0\cdots01}_{\text{128 high bits}} | -\underbrace{0\cdots0}_{\text{128 low bits}}\] -
    -
    -
  • -
  • -

    A u256 variable whose decimal value is 2129+2128+20, is serialized as [20,3]. To understand why, examine the binary representation of the 2129+2128+20 and split it into two 128-bit parts, as follows:

    -
    -
    -\[\underbrace{0\cdots011}_{\text{128 high bits}} | -\underbrace{0\cdots10100}_{\text{128 low bits}}\] -
    -
    -
  • -
-
-
-
-

Serialization of u512 values

-
-

The u512 type in Cairo is a struct containing four felt252 members, each representing a 128-bit limb of the original integer, similar to the u256 type.

-
-
-
-
-
-

Serialization of arrays

-
-
-

Arrays are serialized as follows:

-
-
-

<array_length>, <serialized_member_0>,…​, <serialized_member_n>

-
-
-

For example, consider the following array of u256 values:

-
-
-
-
let POW_2_128: u256 = 0x100000000000000000000000000000000
-let array: Array<u256> = array![10, 20, POW_2_128]
-
-
-
-

Each u256 value in the array is represented by two felt252 values. So the array above is serialized as follows:

-
-
-
-\[\underbrace{3}_{\textit{number_of_array_members}} , -\underbrace{10,0}_{\textit{serialized_member_0}} , -\underbrace{20,0}_{\textit{serialized_member_1}} , -\underbrace{0,1}_{\textit{serialized_member_2}}\] -
-
-
-

Combining the above, the array is serialized as follows: [3,10,0,20,0,0,1]

-
-
-
-
-

Serialization of enums

-
-
-

An enum is serialized as follows:

-
-
-

<index_of_enum_variant>,<serialized_variant>

-
-
-
Enum serialization example 1
-

Consider the following definition of an enum named Week:

-
-
-
-
enum Week {
-    Sunday: (), // Index=1. The variant type is the unit type.
-    Monday: u256, // Index=2. The variant type is u256.
-}
-
-
-
-

Now consider instantiations of the Week enum’s variants as shown in the table Serialization of Week variants:

-
- - ----- - - - - - - - - - - - - - - - - - - - -
Table 1. Serialization of Week variants
InstanceDescriptionSerialization

Week::Sunday

Index=1. The variant’s type is the unit type.

[1]

Week::Monday(5)

-

Index=2. The variant’s type is u256.

-

[2,5,0]

-
-
Enum serialization example 2
-

Consider the following definition of an enum named MessageType:

-
-
-
-
enum MessageType {
-    A,
-    #[default]
-    B: u128,
-    C
-}
-
-
-
-

Now consider instantiations of the MessageType enum’s variants as shown in the table Serialization of MessageType variants:

-
- - ----- - - - - - - - - - - - - - - - - - - - - - - - - -
Table 2. Serialization of MessageType variants
InstanceDescriptionSerialization

MessageType::A

Index=1. The variant’s type is the unit type.

[1]

MessageType::B(6)

-

Index=0. The variant’s type is u128.

-

[0,6]

MessageType::C

Index=2. The variant’s type is the unit type.

[2]

-
-
-
-

Serialization of structs

-
-
-

You serialize a struct by serializing its members one at a time.

-
-
-

Its members are serialized in the order in which they appear in the definition of the struct.

-
-
-

For example, consider the following definition of the struct MyStruct:

-
-
-
-
struct MyStruct {
-    a: u256,
-    b: felt252,
-    c: Array<felt252>
-}
-
-
-
-

The serialization is the same for both of the following instantiations of the struct’s members:

-
- ---- - - - - - - -
-
-
let my_struct = MyStruct {
-    a: 2, b: 5, c: [1,2,3]
-};
-
-
-
-
let my_struct = MyStruct {
-    b: 5, c: [1,2,3], a: 2
-};
-
-
-
-

The serialization of MyStruct is determined as shown in the table Serialization for a struct in Cairo.

-
- - ----- - - - - - - - - - - - - - - - - - - - - - - - - -
Table 3. Serialization for a struct in Cairo
MemberDescriptionSerialization

a: 2

For information on serializing u256 values, see Serialization of u256 values

[2,0]

b: 5

One felt252 value

5

c: [1,2,3]

An array of three felt252 values

[3,1,2,3]

-
-

Combining the above, the struct is serialized as follows: [0,2,5,3,1,2,3]

-
-
-
-
-

Serialization of byte arrays

-
-
-

A string is represented in Cairo as a ByteArray type. A byte array is actually a struct with the following members:

-
-
-
    -
  1. -

    data: Array<felt252>
    -Contains 31-byte chunks of the byte array. Each felt252 value has exactly 31 bytes. If the number of bytes in the byte array is less than 31, then this array is empty.

    -
  2. -
  3. -

    pending_word: felt252
    -The bytes that remain after filling the data array with full 31-byte chunks. The pending word consists of at most 30 bytes.

    -
  4. -
  5. -

    pending_word_len: usize
    -The number of bytes in pending_word.

    -
  6. -
-
-
-
Example 1: A string shorter than 31 characters
-

Consider the string hello, whose ASCII encoding is the 5-byte hex value 0x68656c6c6f. The resulting byte array is serialized as follows:

-
-
-
-
    0, // Number of 31-byte words in the data array.
-    0x68656c6c6f, // Pending word
-    5 // Length of the pending word, in bytes
-
-
-
-
Example 2: A string longer than 31 bytes
-

Consider the string Long string, more than 31 characters., which is represented by the following hex values:

-
-
-
    -
  • -

    0x4c6f6e6720737472696e672c206d6f7265207468616e203331206368617261 (31-byte word)

    -
  • -
  • -

    0x63746572732e (6-byte pending word)

    -
  • -
-
-
-

The resulting byte array is serialized as follows:

-
-
-
-
    1, // Number of 31-byte words in the array construct.
-    0x4c6f6e6720737472696e672c206d6f7265207468616e203331206368617261, // 31-byte word.
-    0x63746572732e, // Pending word
-    6 // Length of the pending word, in bytes
-
-
-
-
-
-

Additional resources

-
-
- -
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/starknet-events/index.html b/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/starknet-events/index.html deleted file mode 100644 index f9304f11be..0000000000 --- a/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/starknet-events/index.html +++ /dev/null @@ -1,1095 +0,0 @@ - - - - - - Events :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Events

-
-
-
-

A contract may emit events throughout its execution. Each event contains the following fields:

-
-
-
    -
  • -

    from_address: address of the contract emitting the events

    -
  • -
  • -

    keys: a list of field elements

    -
  • -
  • -

    data: a list of field elements

    -
  • -
-
-
-

The keys can be used for indexing the events, while the data may contain any information that we wish to log (note that we are dealing with two separate lists of possibly varying size, rather than a list of key-value pairs).

-
-
-
-
-

Emitting events

-
-
-

Events can be defined in a contract using the @event decorator. Once an event E has been defined, the compiler automatically adds the function E.emit(). The following example illustrates how an event is defined and emitted:

-
-
-
-
#[event]
-fn Transfer(from: ContractAddress, to: ContractAddress, value: u256) {}
-
-
-
-
-
Transfer(12345, 12345, 1)
-
-
-
-

The emit function emits an event with a single key, which is an identifier of the event, given by \(\text{sn_keccak(event_name)}\), where \(\text{event_name}\) is the ASCII encoding of the event’s name and \(\text{sn_keccak}\) is defined here.

-
-
-

To emit custom keys, one should use the low level emit_event system call:

-
-
-
-
use starknet::syscalls::emit_event_syscall;
-
-let keys = array!['key', 'deposit'];
-let values = array![1, 2, 3];
-emit_event_syscall(keys, values).unwrap_syscall();
-
-
-
-

The above code emits an event with two keys, the strings key and deposit (think of those as identifiers of the event that can be used for indexing) and three data elements 1, 2, 3.

-
-
- - - - - -
- - -
-

When using the higher level emit syntax, the event’s data may be of complex types, for example:

-
-
-
-
struct Point:
-    member x : felt
-    member y : felt
-end
-
-@event
-func message_received(arr_len : felt, arr: felt*, p: Point):
-end
-
-# ...
-
-let (data : felt*) = alloc()
-assert data[0] = 1
-assert data[1] = 2
-let p = Point(3,4)
-message_received.emit(2, data, p)
-
-
-
-
-
-

The emitted events are part of the transaction receipt.

-
-
-
-
-

Event ABI

-
-
-

The event definition appears in the contract’s ABI. It contains the list of data fields (name and type) and the list of the custom keys (that is, all keys except the event identifier discussed above). Below is an example of an event inside the ABI:

-
-
-
-
{
-  "type": "event",
-  "name": "Transfer",
-  "inputs": [
-    {
-      "name": "from",
-      "type": "core::starknet::contract_address::ContractAddress"
-    },
-    {
-      "name": "to",
-      "type": "core::starknet::contract_address::ContractAddress"
-    },
-    {
-      "name": "value",
-      "type": "core::integer::u256"
-    }
-  ]
-}
-
-
-
-
-
-

Event hash

-
-
-

The event hash is given by:

-
-
-
-\[h(h(h(h(0,\text{from_address}),\text{keys_hash}),\text{data_hash}),3)\] -
-
-
-

Where:

-
-
-
    -
  • -

    \(\text{keys_hash}\), \(\text{data_hash}\) are the hashes of the keys list and data list correspondingly (see array hashing).

    -
  • -
  • -

    \(h\) is the Pedersen hash function.

    -
  • -
-
-
-

The event hashes are included in the event_commitment field of a block.

-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/system-calls-cairo1/index.html b/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/system-calls-cairo1/index.html deleted file mode 100644 index bc61a00e2d..0000000000 --- a/pr-1195/documentation/architecture_and_concepts/Smart_Contracts/system-calls-cairo1/index.html +++ /dev/null @@ -1,1655 +0,0 @@ - - - - - - System Calls :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

System Calls

-
-
-
-

Writing smart contracts requires various associated operations, such as calling another contract or -accessing the contract’s storage, that standalone programs do not require. The Starknet contract language supports these operations by using system calls. System calls enable a contract to require services from the Starknet OS. You can use system calls in a function to get information that depends on the broader state of Starknet, which would otherwise be inaccessible, rather than local variables that appear in the function’s scope.

-
-
-
-
-

get_block_hash

-
-

Syntax

-
-
-
extern fn get_block_hash_syscall(
-    block_number: u64
-) -> SyscallResult<felt252> implicits(GasBuiltin, System) nopanic;
-
-
-

Description

-
-

Gets the hash of a specific Starknet block within the range of [first_v0_12_0_block, current_block - 10].

-
-

Arguments

-
- ---- - - - - -
-block_number u64 - -

The number of the block whose hash you want to get.

-
-
-

Return values

-
-

The hash of the specified block.

-
-

Common library

- -

Error messages

-
- ---- - - - - - - - - -
-Block number out of range - -

block_number is greater than current_block - 10.

-
-0 - -

block_number is less than the first block number of v0.12.0.

-
-
-
-
-
-

get_execution_info

-
-

Syntax

-
-
-
extern fn get_execution_info_syscall() -> SyscallResult<Box<starknet::info::ExecutionInfo>> implicits(
-    GasBuiltin, System
-) nopanic;
-
-
-

Description

-
-

Gets information about the currently executing block and the transactions in the block. For a complete description of this information, see Execution information

-
-
-

This single system call contains all information for a block, transaction, and execution context.

-
-
-

When an account’s __validate__, __validate_deploy__, or __validate_declare__ function calls get_execution_info, the return values for block_timestamp and block_number are modified as follows:

-
-
-
    -
  • -

    block_timestamp returns the hour, rounded down to the nearest hour.

    -
  • -
  • -

    block_number returns the block number, rounded down to the nearest multiple of 100.

    -
  • -
-
-

Arguments

-
-

None.

-
-

Return values

-
- ---- - - - - -
-ExecutionInfo - -

A struct that contains information about the currently executing function, transaction, and block.

-
-
-

Common library

- -

Example

-
-

This example shows how to pull the block number from the ExecutionInfo struct.

-
-
-
-
let execution_info = get_execution_info().unbox();
-let block_info = execution_info.block_info.unbox();
-let block number = block_info.block_number;
-
-
-
-
-
-

call_contract

-
-

Syntax

-
-
-
extern fn call_contract_syscall(
-    address: ContractAddress, entry_point_selector: felt252, calldata: Span<felt252>
-) -> SyscallResult<Span<felt252>> implicits(GasBuiltin, System) nopanic;
-
-
-

Description

-
-

Calls a given contract. This system call expects the address of the called contract, a selector for a function within that contract, and call arguments.

-
-
- - - - - -
- - -=== -An internal call can’t return Err(_) as this is not handled by the sequencer and the Starknet OS. -
-
-
-

If call_contract_syscall fails, this can’t be caught and will therefore result in the entire transaction being reverted. -===

-
-

Arguments

-
- ---- - - - - - - - - - - - - -
-address - -

The address of the contract you want to call.

-
-entry_point_selector - -

A selector for a function within that contract.

-
-calldata - -

The calldata array.

-
-
-

Return values

-
-
    -
  • -

    The call response, of type SyscallResult<Span<felt252>>.

    -
  • -
-
-

Common library

- -
- - - - - -
- - -
-

This is considered a lower-level syntax for calling contracts.

-
-
-

If the interface of the called contract is available, then you can use a more straightforward syntax.

-
-
-
-
-
-
-

deploy

-
-

Syntax

-
-
-
extern fn deploy_syscall(
-    class_hash: ClassHash,
-    contract_address_salt: felt252,
-    calldata: Span<felt252>,
-    deploy_from_zero: bool,
-) -> SyscallResult<(ContractAddress, Span::<felt252>)> implicits(GasBuiltin, System) nopanic;
-
-
-

Description

-
-

Deploys a new instance of a previously declared class.

-
-

Arguments

-
- ---- - - - - - - - - - - - - - - - - -
-class_hash - -

The class hash of the contract to be deployed.

-
-contract_address_salt - -

The salt, an arbitrary value provided by the sender, used in the computation of the contract’s address.

-
-calldata - -

The constructor’s calldata. An array of felts.

-
-deploy_from_zero - -

A flag used for the contract address computation. If not set, the caller address will be used as the new contract’s deployer address, otherwise 0 is used.

-
-
-

Return values

-
-
    -
  • -

    A tuple wrapped with SyscallResult where:

    -
    -
      -
    • -

      The first element is the address of the deployed contract, of type ContractAddress.

      -
    • -
    • -

      The second element is the response array from the contract’s constructor, of type Span::<felt252>.

      -
    • -
    -
    -
  • -
-
-

Common library

- -
-
-
-

emit_event

-
-

Syntax

-
-
-
extern fn emit_event_syscall(
-    keys: Span<felt252>, data: Span<felt252>
-) -> SyscallResult<()> implicits(GasBuiltin, System) nopanic;
-
-
-

Description

-
-

Emits an event with a given set of keys and data.

-
-
-

For more information, and for a higher-level syntax for emitting events, see Starknet events.

-
-

Arguments

-
- ---- - - - - - - - - -
-keys - -

The event’s keys. These are analogous to Ethereum’s event topics, you can use the starknet_getEvents method to filter by these keys.

-
-data - -

The event’s data.

-
-
-

Return values

-
-

None.

-
-

Common library

- -

Example

-
-

The following example emits an event with two keys, the strings key and deposit and three data elements: 1, 2, and 3.

-
-
-
-
let keys = array!['key', 'deposit'];
-let values = array![1, 2, 3];
-emit_event_syscall(keys, values).unwrap_syscall();
-
-
-
-
-
-

library_call

-
-

Syntax

-
-
-
extern fn library_call_syscall(
-    class_hash: ClassHash, function_selector: felt252, calldata: Span<felt252>
-) -> SyscallResult<Span<felt252>> implicits(GasBuiltin, System) nopanic;
-
-
-

Description

-
-

Calls the requested function in any previously declared class. The class is only used for its logic.

-
-
-

This system call replaces the known delegate call functionality from Ethereum, with the important difference that there is only one contract involved.

-
-

Arguments

-
- ---- - - - - - - - - - - - - -
-class_hash - -

The hash of the class you want to use.

-
-function_selector - -

A selector for a function within that class.

-
-calldata - -

The calldata.

-
-
-

Return values

-
-
    -
  • -

    The call response, of type SyscallResult<Span<felt252>>.

    -
  • -
-
-

Common library

- -
-
-
-

send_message_to_L1

-
-

Syntax

-
-
-
extern fn send_message_to_l1_syscall(
-    to_address: felt252, payload: Span<felt252>
-) -> SyscallResult<()> implicits(GasBuiltin, System) nopanic;
-
-
-

Description

-
-

Sends a message to L1.

-
-
-

This system call includes the message parameters as part of the proof’s output and exposes these parameters to the Starknet Core Contract on L1 once the state update, including the transaction, is received.

-
-
-

For more information, see Starknet’s messaging mechanism.

-
-

Arguments

-
- ---- - - - - - - - - -
-to_address - -

The recipient’s L1 address.

-
-payload - -

The array containing the message payload

-
-
-

Return values

-
-

None.

-
-

Common library

- -

Example

-
-

The following example sends a message whose content is (1,2) to the L1 contract whose address is 3423542542364363.

-
-
-
-
let payload = ArrayTrait::new();
-payload.append(1);
-payload.append(2);
-send_message_to_l1_syscall(payload).unwrap_syscall();
-
-
-
-
-
-

replace_class

-
-

Syntax

-
-
-
extern fn replace_class_syscall(
-    class_hash: ClassHash
-) -> SyscallResult<()> implicits(GasBuiltin, System) nopanic;
-
-
-

Description

-
-

Once replace_class is called, the class of the calling contract (i.e. the contract whose address is returned by get_contract_address at the time the syscall is called) will be replaced -by the class whose hash is given by the class_hash argument.

-
-
- - - - - -
- - -
-

After calling replace_class, the code currently executing from the old class will finish running.

-
-
-

The new class will be used from the next transaction onwards or if the contract is called via -the call_contract syscall in the same transaction (after the replacement).

-
-
-
-

Arguments

-
- ---- - - - - -
-class_hash - -

The hash of the class you want to use as a replacement.

-
-
-

Return values

-
-

None.

-
-

Common library

- -
-
-
-

storage_read

-
-

Syntax

-
-
-
extern fn storage_read_syscall(
-    address_domain: u32, address: StorageAddress,
-) -> SyscallResult<felt252> implicits(GasBuiltin, System) nopanic;
-
-
-

Description

-
-

Gets the value of a key in the storage of the calling contract.

-
-
-

This system call provides direct access to any possible key in storage, in contrast with var.read(), which enables you to read storage variables that are defined explicitly in the contract.

-
-
-

For information on accessing storage by using the storage variables, see storage variables.

-
-

Arguments

-
- ---- - - - - - - - - -
-address_domain - -

The domain of the key, used to separate between different data availability modes. This separation is used in Starknet to offer different data availability modes. Currently, only the onchain mode (where all updates go to L1), indicated by domain 0, is supported. Other address domains which will be introduced in the future will behave differently in terms of publication (in particular, they will not be posted on L1, creating a tradeoff between cost and security).

-
-address - -

The requested storage address.

-
-
-

Return values

-
-
    -
  • -

    The value of the key, of type SyscallResult<felt252>.

    -
  • -
-
-

Common library

- -

Example

-
-
-
use starknet::storage_access::storage_base_address_from_felt252;
-
-...
-
-let storage_address = storage_base_address_from_felt252(3534535754756246375475423547453)
-storage_read_syscall(0, storage_address).unwrap_syscall()
-
-
-
-
-
-

storage_write

-
-

Syntax

-
-
-
extern fn storage_write_syscall(
-    address_domain: u32, address: StorageAddress, value: felt252
-) -> SyscallResult<()> implicits(GasBuiltin, System) nopanic;
-
-
-

Description

-
-

Sets the value of a key in the storage of the calling contract.

-
-
-

This system call provides direct access to any possible key in storage, in contrast with var.write(), which enables you to write to storage variables that are defined explicitly in the contract.

-
-
-

For information on accessing storage by using the storage variables, see storage variables.

-
-

Arguments

-
- ---- - - - - - - - - - - - - -
-address_domain - -

The domain of the key, used to separate between different data availability modes. This separation is used in Starknet to offer different data availability modes. Currently, only the onchain mode (where all updates go to L1), indicated by domain 0, is supported. Other address domains which will be introduced in the future will behave differently in terms of publication (in particular, they will not be posted on L1, creating a tradeoff between cost and security).

-
-address - -

The requested storage address.

-
-value - -

The value to write to the key.

-
-
-

Return values

-
-

None.

-
-
-
Common library
-

syscalls.cairo

-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/architecture_and_concepts/_images/STRK_estimated_circulating_supply.jpg b/pr-1195/documentation/architecture_and_concepts/_images/STRK_estimated_circulating_supply.jpg deleted file mode 100644 index a3b9184db3..0000000000 Binary files a/pr-1195/documentation/architecture_and_concepts/_images/STRK_estimated_circulating_supply.jpg and /dev/null differ diff --git a/pr-1195/documentation/architecture_and_concepts/_images/l1l2.png b/pr-1195/documentation/architecture_and_concepts/_images/l1l2.png deleted file mode 100644 index 86ee7ca477..0000000000 Binary files a/pr-1195/documentation/architecture_and_concepts/_images/l1l2.png and /dev/null differ diff --git a/pr-1195/documentation/architecture_and_concepts/_images/l2l1.png b/pr-1195/documentation/architecture_and_concepts/_images/l2l1.png deleted file mode 100644 index 249be11328..0000000000 Binary files a/pr-1195/documentation/architecture_and_concepts/_images/l2l1.png and /dev/null differ diff --git a/pr-1195/documentation/architecture_and_concepts/_images/planned_distribution_STRK.jpg b/pr-1195/documentation/architecture_and_concepts/_images/planned_distribution_STRK.jpg deleted file mode 100644 index 4c6f9424ec..0000000000 Binary files a/pr-1195/documentation/architecture_and_concepts/_images/planned_distribution_STRK.jpg and /dev/null differ diff --git a/pr-1195/documentation/architecture_and_concepts/_images/transaction-flow.png b/pr-1195/documentation/architecture_and_concepts/_images/transaction-flow.png deleted file mode 100644 index 10c3dbcdce..0000000000 Binary files a/pr-1195/documentation/architecture_and_concepts/_images/transaction-flow.png and /dev/null differ diff --git a/pr-1195/documentation/architecture_and_concepts/_images/trie.png b/pr-1195/documentation/architecture_and_concepts/_images/trie.png deleted file mode 100644 index 3d7cd72a85..0000000000 Binary files a/pr-1195/documentation/architecture_and_concepts/_images/trie.png and /dev/null differ diff --git a/pr-1195/documentation/architecture_and_concepts/_images/txn-flow.png b/pr-1195/documentation/architecture_and_concepts/_images/txn-flow.png deleted file mode 100644 index 742606a1f3..0000000000 Binary files a/pr-1195/documentation/architecture_and_concepts/_images/txn-flow.png and /dev/null differ diff --git a/pr-1195/documentation/architecture_and_concepts/index.html b/pr-1195/documentation/architecture_and_concepts/index.html deleted file mode 100644 index a5e66ae346..0000000000 --- a/pr-1195/documentation/architecture_and_concepts/index.html +++ /dev/null @@ -1,932 +0,0 @@ - - - - - - Architecture :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Architecture

- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/cli/starkli/index.html b/pr-1195/documentation/cli/starkli/index.html deleted file mode 100644 index 78b6c04521..0000000000 --- a/pr-1195/documentation/cli/starkli/index.html +++ /dev/null @@ -1,1617 +0,0 @@ - - - - - - Legacy Starknet CLI reference :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Legacy Starknet CLI reference

-
-
-
- - - - - -
- - -
-

The Starknet CLI is deprecated. Instead, use StarkLi CLI.

-
-
-
-
-
-
-

Basic command line syntax

-
-
-

To enter a Starknet command, use the following syntax:

-
-
-
-
$ starknet <command> <options>
-
-
-
-

Where:

-
-
-

<command> represents a single command that executes an operation on Starknet.

-
-
-

<options> represents zero or more command line options, each of which modifies the operation of the command.

-
-
-
-
-

Setting the Starknet network environment

-
-
-

You need to set your Starknet network environment to use either testnet or Mainnet.

-
-
-

You can set the environment using either a command-line option or an environment variable.

-
-
-

Possible values are:

-
-
-
-
alpha-goerli
-
-

Sets the Starknet network to testnet

-
-
alpha-mainnet
-
-

Sets the Starknet network to Mainnet

-
-
-
-
-
Setting the network environment using a command-line option
-

When you enter any command, include the --network option. For example to use Mainnet, enter a command as follows:

-
-
-
-
$ starknet <command> --network alpha-mainnet <options>
-
-
-
- - - - - -
- - -
-

You can place the --network option before or after any other option.

-
-
-
-
-
Setting the network environment using an environment variable
-

Set the STARKNET_NETWORK environment variable as follows:

-
-
-
-
$ export STARKNET_NETWORK=<starknet_network>
-
-
-
-

For example, to use testnet, enter the following command:

-
-
-
-
$ export STARKNET_NETWORK=alpha-goerli
-
-
-
-
-
-

Setting custom endpoints

-
-
-

When working with the CLI, you can manually set the endpoints for the gateways that enable you to -interact with Starknet, by including the following options:

-
-
-
-
--feeder_gateway_url
-
-

Sets the custom endpoint for read commands.

-
-
--gateway_url
-
-

Sets the custom endpoint for write commands.

-
-
-
-
-

The following are the endpoints for Starknet testnet and Mainnet:

-
-
- -
-
-
Example: Setting a custom read endpoint
-

The following command returns the ABI using the Mainnet feeder gateway.

-
-
-
-
$ starknet get_code --feeder_gateway_url https://alpha-mainnet.starknet.io/feeder_gateway/ <options>
-
-
-
-
Example: Setting a custom write endpoint
-

The following command sends a transaction to the Starknet sequencer -using the Mainnet gateway.

-
-
-
-
$ starknet invoke --gateway_url https://alpha-mainnet.starknet.io/gateway/ <options>
-
-
-
-
-
-

starknet call

-
-
-
-
starknet call
-  --address <contract_address>
-  --abi <contract_abi>
-  --function <function_name>
-  --inputs <arguments>
-  --block_hash <block_hash>
-  --block_number <block_number>
-  --signature <signature_information>
-  --wallet <wallet_name>
-  --nonce <nonce>
-
-
-
-

Calls a Starknet contract without affecting the state, accepts the following arguments:

-
-
-
    -
  • -

    contract_address* - address of the contract being called

    -
  • -
  • -

    contract_abi* - a path to a JSON file that contains the abi of the contract being called

    -
  • -
  • -

    function_name* - name of the function which is called

    -
  • -
  • -

    arguments* - inputs to the function being called, represented by a list of space-delimited values

    -
  • -
  • -

    block_hash - the hash of the block used as the context for the call operation. If this argument is omitted, the latest block is used

    -
  • -
  • -

    block_number - same as block_hash, but specifies the context block by number or tag

    -
  • -
  • -

    signature_information - list of field elements as described here

    -
  • -
  • -

    wallet_name - the name of the desired wallet, use deploy_account to set-up new accounts in the CLI

    -
  • -
  • -

    nonce - account nonce, only relevant if the call is going through an account

    -
  • -
-
-
- - - - - -
- - -
-

Block Tag

-
-
-

A block context can be specified via the latest or pending tags, where the former refers to the latest accepted on L2 block and the latter refers to the pending block.

-
-
-
-
-
-
-

starknet declare

-
-
-
-
starknet declare
---contract <contract_class>
-
-
-
-

Declares a new contract class on Starknet, accepts the following argument:

-
-
-
    -
  • -

    contract_class - path to a JSON file containing the contract’s compiled code

    -
  • -
-
-
-
-
-

starknet deploy

-
-
-
-
starknet deploy
-  --salt <salt>
-  --contract <contract_definition>
-  --inputs <constructor_inputs>
-  --token <token>
-
-
-
-

Deploys a new contract, accepts the following arguments:

-
-
-
    -
  • -

    salt - a seed that is used in the computation of the contract’s address (if not specified, the sequencer will choose a random string)

    -
  • -
  • -

    contract_definition* - path to a JSON file containing the contract’s bytecode and abi (can be obtained by executing starknet-compile)

    -
  • -
  • -

    constructor_inputs* - the arguments given to the contract’s constructor, represented by a list of space-delimited values

    -
  • -
  • -

    token - a token allowing contract deployment (can be obtained by applying here). Only used in the Alpha stages and will be deprecated in the future

    -
  • -
-
-
- - - - - -
- - -
-

The deploy token is a temporary measure which will be deprecated when fees are incorporated in the system. Only relevant for Mainnet.

-
-
-
-
-
-
-

starknet deploy_account

-
-
-
-
starknet deploy_account
-  --wallet <wallet_provider>
-  --account <account_name>
-
-
-
-

Deploys an account contract, accepts the following arguments:

-
-
-
    -
  • -

    account_name - the name given to the account, used for managing multiple accounts from the CLI (if not specified, the name -__default__ is used.

    -
  • -
  • -

    wallet_provider* - the path to module which manages the account (responsible for key generation, signing, etc.)

    -
  • -
-
-
- - - - - -
- - -
-

Today, the Starknet CLI only works with the OpenZeppelin account contract. -The CLI uses this specific wallet provider. -To use this provider, either set up the following environment variable or pass the same value directly to the wallet_provider parameter:

-
-
-
-
$ export STARKNET_WALLET=starkware.starknet.wallets.open_zeppelin.OpenZeppelinAccount
-
-
-
-
-
- - - - - -
- - -
-

Using the built-in wallet providers that are part of the cairo-lang package (starkware.starknet.wallets…​) is not secure (for example, the private key may be kept not encrypted and without backup in your home directory). You should only use them if you’re not overly concerned with losing access to your accounts (for example, for testing purposes).

-
-
-
-
-
-
-

starknet estimate_fee

-
-
-
-
starknet estimate_fee
-    --address <contract_address>
-    --abi <contract_abi>
-    --function <function_name>
-    --inputs <arguments>
-
-
-
-

Returns the fee estimation for a given contract call. Accepts the following arguments:

-
-
-
    -
  • -

    address* - the address of the contract being called

    -
  • -
  • -

    contract_abi* - a path to a JSON file that contains the abi of the contract being called

    -
  • -
  • -

    function_name*- the name of the function being called

    -
  • -
  • -

    arguments* - inputs to the function being called, represented by a list of space-delimited values`

    -
  • -
-
-
-
-
-

starknet estimate_message_fee

-
-
-
-
starknet estimate_message_fee
-    --from_address <sender_address>
-    --to_address <contract_address>
-    --function <function_name>
-    --inputs <arguments>
-
-
-
-

Returns the fee estimation for a given L1 handler application. Accepts the following arguments:

-
-
-
    -
  • -

    from_address* - the L1 address of the sender

    -
  • -
  • -

    to_address* - the L2 address of the recipient

    -
  • -
  • -

    contract_abi* - a path to a JSON file containing the abi of the receiving contract on L2

    -
  • -
  • -

    function_name*- the name of the desired L1 handler

    -
  • -
  • -

    arguments* - inputs to the called handler, represented by a list of space-delimited values

    -
  • -
-
-
-
-
-

starknet get_block

-
-
-
-
starknet get_block
-  --hash <block_hash>
-  --number <block_number>
-
-
-
-

Returns the requested block, exactly one of the following arguments must be given:

-
-
-
    -
  • -

    block_hash - hash of the requested block

    -
  • -
  • -

    block_number - number or tag of the requested block

    -
  • -
-
-
-
-
-

starknet get_code

-
-
-
-
starknet get_code
-  --contract_address <contact_address>
-  --block_hash <block_hash>
-  --block_number <block_number>
-
-
-
-

Returns the ABI and the byte code of the requested contract, accepts the following arguments:

-
-
-
    -
  • -

    contact_address* - address of the requested contract

    -
  • -
  • -

    block_hash - the hash of the block used as the context for the operation. If this argument is omitted, the latest block is used

    -
  • -
  • -

    block_number - same as block_hash, but specifies the context block by number or tag

    -
  • -
-
-
-
-
-

starknet get_storage_at

-
-
-
-
starknet get_storage_at
-  --contract_address <contract_address>
-  --key <key>
-  --block_hash <block_hash>
-  --block_number <block_number>
-
-
-
-

Queries a contract’s storage at a specific key, accepts the following arguments:

-
-
-
    -
  • -

    contract_address *- address of the requested contract

    -
  • -
  • -

    key* - the requested key from the given contract’s storage

    -
  • -
  • -

    block_hash - the hash of the block relative to which the storage will be provided. In case this argument is not given, the latest block is used

    -
  • -
  • -

    block_number - same as block_hash, but specifies the context block by number or tag

    -
  • -
-
-
-
-
-

starknet get_transaction

-
-
-
-
starknet get_transaction --hash <transaction_hash>
-
-
-
-

Returns the requested transaction, expects the following argument:

-
-
-
    -
  • -

    transaction_hash* - hash of the requested transaction

    -
  • -
-
-
-
-
-

starknet get_transaction_receipt

-
-
-
-
starknet get_transaction_receipt --hash <transaction_hash>
-
-
-
-

Returns the receipt associated with the transaction, expects the following argument:

-
-
-
    -
  • -

    transaction_hash* - hash of the requested transaction -starknet invoke -starknet tx_status

    -
  • -
-
-
-
-
-

starknet invoke

-
-
-
-
starknet invoke
-  --address <contract_address>
-  --abi <contract_abi>
-  --function <function_name>
-  --inputs <arguments>
-  --signature <signature_information>
-  --wallet <wallet_name>
-  --nonce <nonce>
-
-
-
-

Sends a transaction to the Starknet sequencer, accepts the following arguments:

-
-
-
    -
  • -

    address* - the address of the contract being called

    -
  • -
  • -

    contract_abi* - a path to a JSON file that contains the abi of the contract being called

    -
  • -
  • -

    function_name*- the name of the function being called

    -
  • -
  • -

    arguments* - inputs to the function being called, represented by a list of space-delimited values

    -
  • -
  • -

    signature_information - list of field elements as described here

    -
  • -
  • -

    wallet_name - the name of the desired wallet, use deploy_account to set-up new accounts in the CLI.

    -
  • -
  • -

    nonce - account nonce, only relevant if the call is going through an account

    -
  • -
-
-
- - - - - -
- - -
-

Today, interaction with Starknet may be done either via account or by a direct call. The signature argument can only be provided in the case of a direct call, since otherwise providing the signature is the responsibility of the account module. To use an account you must specify wallet_name, otherwise a direct call will be used (you may also explicitly perform a direct call by adding --no_wallet to the command). Note that in the future direct calls will be deprecated and the only way to interact with the system would be through accounts.

-
-
-
-
-
-
-

starknet tx_status

-
-
-
-
starknet tx_status
-  --hash <transaction_hash>
-  --contract <contract_definition>
-  --error_message
-
-
-
-

Returns the transaction status, accepts the following arguments:

-
-
-
    -
  • -

    transaction_hash* - hash of the requested transaction

    -
  • -
  • -

    contract_definition - path to a JSON file containing the compiled contract to which the transaction was addressed. If supplied, the debug information from the compiled contract will be used to add error locations.

    -
  • -
  • -

    error_message - if specified, only the error message will be returned (or empty response in case the transaction was successful)

    -
  • -
-
-
-

The possible statuses of a transaction are:

-
-
-
    -
  • -

    NOT_RECEIVED

    -
  • -
  • -

    RECEIVED

    -
  • -
  • -

    PENDING

    -
  • -
  • -

    REJECTED

    -
  • -
  • -

    ACCEPTED_ON_L2

    -
  • -
  • -

    ACCEPTED_ON_L1

    -
  • -
-
-
-

For more information, see Transaction lifecycle.

-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/cli/starknet-compiler-options/index.html b/pr-1195/documentation/cli/starknet-compiler-options/index.html deleted file mode 100644 index 7fff6b3691..0000000000 --- a/pr-1195/documentation/cli/starknet-compiler-options/index.html +++ /dev/null @@ -1,1111 +0,0 @@ - - - - - - Legacy compiler CLI reference :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Legacy compiler CLI reference

-
-
-
-

When the Starknet compiler is installed, you can view this command-line help in a terminal by entering the following command:

-
-
-
-
starknet-compile --help
-
-
-
-
-
-

Usage

-
-
-
-
starknet-compile [-h] [--abi ABI] [--disable_hint_validation]
-                      [--account_contract] [--dont_filter_identifiers] [-v]
-                      [--prime PRIME] [--cairo_path CAIRO_PATH]
-                      [--preprocess] [--output OUTPUT] [--no_debug_info]
-                      [--debug_info_with_source]
-                      [--cairo_dependencies CAIRO_DEPENDENCIES]
-                      [--no_opt_unused_functions]
-                      file [file ...]
-
-
-
-
-
-

Example

-
-
-

The following example compiles the file contract.cairo. It generates two files:

-
-
- - - - - - - - - -
-contract_compiled.json - -

The contract class. This file contains the bytecode and all other information necessary to execute a contract. For information on contract classes, see Contract classes and instances.

-
-contract_abi.json - -

The contract’s ABI.

-
-
-
-
-
starknet-compile contract.cairo \
-    --output contract_compiled.json \
-    --abi contract_abi.json
-
-
-
-
-
-

Description

-
-
-

A tool to compile Starknet contracts.

-
-
-
-
-

Positional arguments

-
-
-

file

-
-

File names.

-
-
-
-
-
-

Optional arguments

-
-
-

-h, --help

-
-

Show this help message and exit.

-
-
-
-

--abi ABI

-
-

Output the contract’s ABI.

-
-
-
-

--disable_hint_validation

-
-

Disable the hint validation.

-
-
-
-

--account_contract

-
-

Compile as account contract.

-
-
-
-

--dont_filter_identifiers

-
-

Disable the filter-identifiers-optimization.If True, all the identifiers will be kept, instead of just the ones mentioned in hints or 'with_attr' statements.

-
-
-
-

-v, --version

-
-

show program’s version number and exit

-
-
-
-

--prime PRIME

-
-

The size of the finite field.

-
-
-
-

--cairo_path CAIRO_PATH

-
-

A list of directories, separated by ":" to resolve import paths. The full list will consist of directories defined by this argument, followed by the environment variable CAIRO_PATH, the working directory and the standard library path.

-
-
-
-

--preprocess

-
-

Stop after the preprocessor step and output the preprocessed program.

-
-
-
-

--output OUTPUT

-
-

The output file name (default: stdout).

-
-
-
-

--no_debug_info

-
-

Don’t include debug information in the compiled file.

-
-
-
-

--debug_info_with_source

-
-

Include debug information with a copy of the source code.

-
-
-
-

--cairo_dependencies CAIRO_DEPENDENCIES

-
-

Output a list of the Cairo source files used during the compilation as a CMake file.

-
-
-
-

--no_opt_unused_functions

-
-

Disables unused function optimization.

-
-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/glossary/index.html b/pr-1195/documentation/glossary/index.html deleted file mode 100644 index 0db23efccc..0000000000 --- a/pr-1195/documentation/glossary/index.html +++ /dev/null @@ -1,1271 +0,0 @@ - - - - - - Glossary :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Glossary

-
-

account abstraction

-
-
-

Refers to the capability of users to define their own account logic instead of it being dictated by the protocol.

-
-
-
-
-

account contract

-
-
-

An L2 smart contract, implemented in Cairo, with programmable logic that implements a user account on Starknet. An account contract implements special methods that enable initiating transactions.

-
-
-
See also
- -
-
-
-
-

API

-
-
-

The Starknet Node API uses the Remote Procedure Call (RPC) architectural style, written in JSON format. For complete information on the Starknet Node API in JSON RPC format, see starknet_api_openrpc.json on Github.

-
-
-
See also
- -
-
-
-
-

blocks (previously known as batches)

-
-
-

Ordered sets of Starknet transactions that are run using the Starknet OS, resulting in one aggregated state change that is then committed to the Starknet L1 Core Contract.

-
-
-

A block has the following identifiers:

-
-
- ---- - - - - - - - - -
-block hash - -

A unique stable identifier that can be used to query and refer to the block.

-
-block number - -

A number representing the location of the block in the sequence of accepted blocks in Starknet.

-
-
-
-
-
-

builtin

-
-
-

Cairo programming language term

-
-
-

A predefined optimized low-level execution unit that is added to the Cairo CPU board to perform predefined computations that are expensive to perform in vanilla Cairo, including range-checks, Pedersen hash calculations, and ECDSA.

-
-
-
-
-

Cairo step

-
-
-

A fundamental computational operation or instruction in the Cairo language. The smallest unit of execution within the Cairo VM, typically involving mathematical, logical, or control-flow operations that collectively define the behavior of a program.

-
-
-
-
-

Cairo VM

-
-
-

The Cairo Virtual Machine (VM) is software that knows how to execute compiled Cairo byte-code. The result of this execution is the program trace that can then be sent to a STARK prover in order to prove the validity of the instruction expressed in the Cairo code.

-
-
-
-
-

contract class

-
-
-

The definition of a contract. It includes Cairo byte code, hint information, entry point names, and everything that defines its semantics.

-
-
-
-
-

contract instance

-
-
-

A deployed contract that corresponds to a class. Only contract instances act as true contracts, in that they have their own storage and can be called by transactions or other contracts.

-
-
-
-
-

fri

-
-
-

The smallest denomination of STRK. 1 fri = 10-18 STRK.

-
-
-
-
-

full node

-
-
-

A node in the Starknet network that is used only for querying the current Starknet state. It can independently, without querying additional nodes, answer queries about the current state of the Starknet network, including the L1 state. A full state node does not batch transactions or prove batches.

-
-
-
-
-

multicall

-
-
-

A single transaction that executes multiple bundled transactions, which are signed once on Starknet. If one call fails, the entire operation is aborted.

-
-
-
-
-

prover

-
-
-

An entity that receives the output of Cairo programs and generates proofs to be verified. The prover submits the proof to the verifier that registers the fact on L1. Their main task is to validate the work of athe sequencers when they receive the block produced by the sequencer, and to generate proofs that these processes were correctly performed.

-
-
-
See also
- -
-
-
-
-

RPC

-
-
-

The Starknet RPC API provides clients an interface to retrieve information on the state of the chain and to interact with it, such as by posting transactions or estimating the fee of a transaction before it is sent.

-
-
-
See also
- -
-
-
-
-

sequencer

-
-
-

A set of services which together receive transactions from the network, put them in order, check their validity, and build blocks.

-
-
-
-
-

SHARP

-
-
-

The Shared Prover (SHARP), is a mechanism used in Starknet that aggregates multiple Cairo programs from different users, each containing different logic. These Cairo programs are then executed together, generating a single proof common to all the programs.

-
-
-
-
-

Sierra

-
-
-

An intermediate representation between Cairo and Casm. Sierra code is then compiled to a Casm program with the property that, for any input, the execution of the program is provable. In particular, it ensures that the execution of a transaction is provable regardless of whether the execution succeeded or was reverted due to an error.

-
-
-
Additional resources
- -
-
-
-
-

signer

-
-
-

The component of a Starknet account that authorizes a transaction and is decoupled from the account. It is a keypair consisting of a private and public key.

-
-
-

A smart contract with a private key for signing transactions.

-
-
-
See also
-

account descriptor

-
-
-
-
-

STARK

-
-
-

A proof system that uses cryptography to provide polylogarithmic verification resources and proof size, with minimal and post-quantum-secure assumptions.

-
-
-
-
-

Starknet L1 Core Contract

-
-
-

A smart contract deployed on Ethereum. It’s address is 0xc662c410c0ecf747543f5ba90660f6abebd9c8c4. It defines the state of Starknet - by storing:

-
-
-
    -
  • -

    The commitment to the L2 state.

    -
  • -
  • -

    The Starknet OS program hash – effectively defining the version of Starknet the network is running.

    -
  • -
-
-
-

The committed state on the L1 Core Contract acts as the consensus mechanism of Starknet,that is, the system is secured by the L1 Ethereum consensus. In addition to maintaining the state, the Starknet L1 Core Contract is the main hub of operations for Starknet on L1. Specifically:

-
-
-
    -
  • -

    It stores the list of allowed verifier contracts that can verify state update transactions

    -
  • -
  • -

    It deals with cross-layer interaction between L1 and L2.

    -
  • -
-
-
-
-
-

Starknet OS

-
-
-

The Cairo program that, upon receiving a set of transaction as input, executes the state transition. For more information, see Starknet state. The integrity of this computation is what is actually proven and verified.

-
-
-
-
-

Starknet state

-
-
-

The set of all the contracts' code and all the memory slots and their values, in every contract’s storage.

-
-
-
See also
- -
-
-
-
-

transaction

-
-
-

A transaction can be seen as a message containing a set of instructions that describe a state transition. The Starknet protocol has the following types of transactions, which affect different parts of the state:

-
-
-
    -
  • -

    DECLARE

    -
  • -
  • -

    INVOKE

    -
  • -
  • -

    DEPLOY_ACCOUNT

    -
  • -
-
-
-
See also
- -
-
-
-
-

state diff

-
-
-

The data describing the difference between two states. It contains information on every contract whose storage was updated and additional information on contract deployments.

-
-
-
-
-

verifier

-
-
-

A set of L1 smart contracts whose purpose is to verify STARK proofs submitted by the Shared Prover (SHARP)

-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/index.html b/pr-1195/documentation/index.html deleted file mode 100644 index 81c70a76e8..0000000000 --- a/pr-1195/documentation/index.html +++ /dev/null @@ -1,1228 +0,0 @@ - - - - - - Overview :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Overview

-
-
-
-

Starknet is a permissionless, Validity-Rollup, also known as a zero-knowledge rollup (ZK rollup) for Ethereum. It operates as a Layer 2 (L2) blockchain, enabling any dApp to achieve massive scale for its computation without compromising on Ethereum’s composability -and security.

-
-
-

Starknet aims to achieves secure low cost transactions and high performance by using the STARK cryptographic proof system. Starknet contracts and the Starknet OS are written in Cairo, a custom-built and -specialized programming language.

-
-
-
- - -
-

Contribute to the Starknet docs

-
-
-

If you are interested in contributing to Starknet technical documentation, the following list provides quick links to help you get started:

-
-
- ---- - - - - - - - - - - - - -
-How to contribute - -

For information on how you can contribute, see Different ways to contribute.

-
-Guidelines - -

For basic guidelines to help us keep our content consistent, see Documentation guidelines.

-
-Style guide - -

See the Starknet documentation supplementary style guide.

-
-
- - - - - - - -
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/quick_start/declare_a_smart_contract/index.html b/pr-1195/documentation/quick_start/declare_a_smart_contract/index.html deleted file mode 100644 index 14bfe5305c..0000000000 --- a/pr-1195/documentation/quick_start/declare_a_smart_contract/index.html +++ /dev/null @@ -1,1178 +0,0 @@ - - - - - - Declaring a smart contract :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Declaring a smart contract

-
-

Prerequisites

-
-
-

Ensure Starkli and Scarb are installed correctly

-
-

Ensure that the below commands are working properly on your system.

-
-
-
-
starkli --version
-scarb --version
-
-
-
-

If either of the above commands fails, see Setting up your environment.

-
-
-
-
-
-

Introduction

-
-
-

Deploying a smart contract in Starknet requires two steps:

-
-
-
    -
  • -

    Declaring the class of your contract, i.e. sending your contract’s code to the network.

    -
  • -
  • -

    Deploying a contract, i.e. creating an instance of the code you previously declared.

    -
  • -
-
-
- - - - - -
- - -
-

If you require a smart contract for testing, you can use this sample contract, lib.cairo, from the Starknet Book.

-
-
-
-
-
-
-

Compiling a smart contract

-
-
-

You can compile a smart contract using the Scarb compiler.

-
-
-

To compile a smart contract, create a directory containing a Scarb.toml file and a subdirectory named src containing your contract source code.

-
-
-

Add the following code to the Scarb.toml file:

-
-
-
-
[package]
-name = "contracts"
-version = "0.1.0"
-
-[dependencies]
-starknet = ">=2.2.0"
-
-[[target.starknet-contract]]
-sierra = true
-
-
-
-

Navigate into the newly created directory:

-
-
-
-
cd <dir_name>
-
-
-
-

Run the following command:

-
-
-
-
scarb build
-
-
-
-

The compiled contract will be saved in the target/dev/ directory.

-
-
-

The contract is now compiled and ready to be deployed. Next you will need to declare an RPC provider within your contract.

-
-
-
-
-

Setting an RPC provider

-
-
-

To interact with the Starknet network, you need to set an RPC endpoint within Starkli.

-
-
-

The following are the RPC providers available for Starknet:

-
- ---- - - - - - - - - - - - - - - - - -
Provider nameDescription

Infura or Alchemy

Use a provider like Infura or Alchemy.

Custom configuration

Set up your own node and use the RPC provider of your node. More information on this can be found within the Starknet Book.

-
-

For demonstration purposes, the Starknet Sequencer’s Gateway is used in the below steps.

-
-
-
-
-

Declaring a smart contract

-
-
-

A contract can be declared on Starknet using the following command:

-
-
-
-
starkli declare target/dev/<NAME>.json --network=goerli-1 --compiler-version=2.1.0
-
-
-
- - - - - -
- - -
-

The --network flag is used to specify the network you want to use, it could also be mainnet for example.

-
-
-

The --compiler-version flag is used to specify the version of the compiler you want to use. Starkli is currently running on version 2.1.0 and 2.0.1 of the compiler.

-
-
-
-
-

You can find the compiler version supported by Starkli by running:

-
-
-
-
starkli declare --help
-
-
-
-

In the --compiler-version flag you will see possible versions of the compiler:

-
-
-
-
--compiler-version <COMPILER_VERSION>
-          Statically-linked Sierra compiler version [possible values: 2.0.1, 2.1.0]
-
-
-
-

However, the Scarb compiler version may be 2.2.0, you can find this out by running:

-
-
-
-
scarb --version
-
-
-
-

This is because Starkli and Scarb are not always in sync.

-
-
-

In this case you would need to use the compiler version that Starkli is using by installing a previous version of Scarb. See the Scarb github repo for more detail.

-
-
-

You can do this by running the following command for installing Scarb version 0.6.1:

-
-
-
-
curl --proto '=https' --tlsv1.2 -sSf https://docs.swmansion.com/scarb/install.sh | sh -s -- -v 0.6.1
-
-
-
-

If you were using a provider like Infura or Alchemy, the declaration command would look like this:

-
-
-
-
starkli declare target/dev/contracts_Ownable.sierra.json \
-    --rpc=https://starknet-goerli.infura.io/v3/<API_KEY> \
-    --compiler-version=2.1.0
-
-
-
-
-
-

Expected result

-
-
-

The result of the declaration command is a contract class hash:

-
-
-
-
Class hash declared: <CLASS_HASH>
-
-
-
-

This hash is the identifier of the contract class in Starknet. You can think of it as the address of the contract class. You can use a block explorer like StarkScan to see the contract class hash in the blockchain.

-
-
-

If the contract you are declaring has previously been declared by someone else, you will get an output like this:

-
-
-
-
Not declaring class as its already declared. Class hash: <CLASS_HASH>
-
-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/quick_start/deploy_a_smart_contract/index.html b/pr-1195/documentation/quick_start/deploy_a_smart_contract/index.html deleted file mode 100644 index 4a56fb3056..0000000000 --- a/pr-1195/documentation/quick_start/deploy_a_smart_contract/index.html +++ /dev/null @@ -1,1025 +0,0 @@ - - - - - - Deploying a smart contract :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Deploying a smart contract

-
-

Prerequisites

-
-
-

Ensure Starkli and Scarb are installed correctly

-
-

Ensure that the below commands are working properly on your system.

-
-
-
-
starkli --version
-scarb --version
-
-
-
-

If either of the above commands fail, please visit Setting up your environment.

-
-
-
-
-
-

Introduction

-
-
-

Deploying a smart contract in Starknet requires two steps:

-
-
-
    -
  • -

    Declaring the class of your contract, i.e. sending your contract’s code to the network.

    -
  • -
  • -

    Deploying a contract, i.e. creating an instance of the code you previously declared.

    -
  • -
-
-
-
-
-

Deploying a smart contract

-
-
-

Deploying a smart contract involves instantiating it on Starknet. The deployment command requires the class hash of the smart contract and any arguments expected by the constructor.

-
-
-

For our example, the constructor expects an address to assign as the owner:

-
-
-
-
starkli deploy \
-    <CLASS_HASH> \
-    <CONSTRUCTOR_INPUTS> \
-    --network=goerli-1
-
-
-
-

With the class hash and constructor inputs, the command looks like this:

-
-
-
-
starkli deploy \
-    0x00e68b4b07aeecc72f768b1c086d9b0aadce131a40a1067ffb92d0b480cf325d \
-    0x02cdAb749380950e7a7c0deFf5ea8eDD716fEb3a2952aDd4E5659655077B8510 \
-    --network=goerli-1
-
-
-
-
-
-

Expected result

-
-
-

After running the command and adding your password, you will see an output similar to this:

-
-
-
-
Deploying class 0x00e68b4b07aeecc72f768b1c086d9b0aadce131a40a1067ffb92d0b480cf325d with salt 0x04bc3fc2284c8e41fb3d2a37bb0354fd0506131cc77a8c91e4e67ce3aed1d19e...
-The contract will be deployed at address 0x014825acb37c36563d3b96c450afe363d2fdfa3cfbd618b323f95b68b55ebf7e
-Contract deployment transaction: 0x0086972e7463d5673d8b553ae521ec2df974a97c2ce6aafc1d1c20d22c6b96c6
-Contract deployed: 0x014825acb37c36563d3b96c450afe363d2fdfa3cfbd618b323f95b68b55ebf7e
-
-
-
-

The smart contract has now been deployed to Starknet.

-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/quick_start/environment_setup/index.html b/pr-1195/documentation/quick_start/environment_setup/index.html deleted file mode 100644 index e806aa06b1..0000000000 --- a/pr-1195/documentation/quick_start/environment_setup/index.html +++ /dev/null @@ -1,1137 +0,0 @@ - - - - - - Setting up your environment :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Setting up your environment

-
-
-
-

In order to interact with Starknet and compile Cairo code, you need to install several tools.

-
-
-

The following tools are recommended to begin developing on Starknet:

-
- ------ - - - - - - - - - - - - - - - - - - - - - - -
Tool nameDescriptionDocumentationCode Repository

Starkli

A command-line interface that allows you to interact with Starknet.

book.starkli.rs

github.com/xJonathanLEI/starkli

Scarb

A build toolchain and package manager for Cairo and Starknet ecosystems.

docs.swmansion.com/scarb

github.com/software-mansion/scarb

-
-
-
-

Installing Starkli

-
-
-

The steps for installing Starkli and upgrading Starkli are identical.

-
-
-
Procedure
-
    -
  1. -

    Install Starkliup, the installer for the Starkli environment:

    -
    -
    -
    curl https://get.starkli.sh | sh
    -
    -
    -
    -

    Starkliup should now be installed.

    -
    -
  2. -
  3. -

    Restart the terminal.

    -
  4. -
  5. -

    Install Starkli:

    -
    -
    -
    starkliup
    -
    -
    -
    -

    Starkli should now be installed.

    -
    -
  6. -
  7. -

    Restart the terminal and run the following command to verify the installation:

    -
    -
    -
    starkli --version
    -
    -
    -
    -

    Starkli prints the current version.

    -
    -
  8. -
-
-
-
-
-

Setting environment variables for Starkli

-
-
-

For the majority of flags available on Starkli you can set environment variables to make the commands shorter and easier to manage.

-
-
-

Setting environment variables for Starkli significantly simplifies command execution and management, thereby enhancing efficiency, readability, and control when using Starkli.

-
-
-

The two primary environment variables that are vital for effective usage of Starkli’s CLI are:

-
-
- ---- - - - - - - - - -
-STARKNET_ACCOUNT - -

The location of the Account Descriptor file.

-
-STARKNET_KEYSTORE - -

The location of the keystore file for the Signer.

-
-
-
-

Set these environment variables as follows:

-
-
-
-
export STARKNET_ACCOUNT=~/.starkli-wallets/deployer/account.json
-export STARKNET_KEYSTORE=~/.starkli-wallets/deployer/keystore.json
-
-
-
-
-
-

Installing Scarb

-
-
-

Scarb is compatible with macOS, Linux, and Windows operating systems.

-
-
-

MacOS and Linux installation

-
-

The steps for installing Scarb and upgrading Scarb are identical.

-
-
-
Procedure
-
    -
  1. -

    Open a terminal and execute the following command:

    -
    -
    -
    curl --proto '=https' --tlsv1.2 -sSf https://docs.swmansion.com/scarb/install.sh | sh
    -
    -
    -
  2. -
  3. -

    Restart the terminal and run the following command to verify the installation:

    -
    -
    -
    scarb --version
    -
    -
    -
  4. -
-
-
-

Scarb should now be installed.

-
-
-
-

Windows installation

-
-

Scarb’s installation on Windows requires manual setup.

-
-
-
Procedure
-
    -
  1. -

    Follow the steps in the Scarb documentation.

    -
  2. -
  3. -

    Restart the terminal and run the following command to verify the installation:

    -
    -
    -
    scarb --version
    -
    -
    -
  4. -
-
-
-

Scarb should now be installed.

-
-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/quick_start/interact_with_a_smart_contract/index.html b/pr-1195/documentation/quick_start/interact_with_a_smart_contract/index.html deleted file mode 100644 index 9f45f1514f..0000000000 --- a/pr-1195/documentation/quick_start/interact_with_a_smart_contract/index.html +++ /dev/null @@ -1,1038 +0,0 @@ - - - - - - Interacting with a smart contract :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Interacting with a smart contract

-
-

Prerequisites

-
-
-

Ensure Starkli and Scarb are installed correctly

-
-

Ensure that the below commands are working properly on your system.

-
-
-
-
starkli --version
-scarb --version
-
-
-
-

If either of the above commands fail, see Setting up your environment.

-
-
-
-
-
-

Introduction

-
-
-

Starkli enables interaction with smart contracts via two primary methods:

-
-
-
    -
  • -

    call for read-only functions.

    -
  • -
  • -

    invoke for write functions that modify the state.

    -
  • -
-
-
-
-
-

Calling a function

-
-
-

The call command allows querying a smart contract function without sending a transaction.

-
-
-

As an example you can use the get_owner function which doesn’t expect any arguments and returns the address of the current owner:

-
-
-
-
starkli call \
-    0x014825acb37c36563d3b96c450afe363d2fdfa3cfbd618b323f95b68b55ebf7e \
-    get_owner --network=goerli-1
-
-
-
-

This will return the address that we passed to the constructor during deployment:

-
-
-
-
[
-    "0x02cdab749380950e7a7c0deff5ea8edd716feb3a2952add4e5659655077b8510"
-]
-
-
-
-
-
-

Invoking a function

-
-
-

To modify the state of the smart contract, use the invoke command. Unlike the call command, invoke submits a transaction to the network.

-
-
-

In this example, we’ll invoke the transfer_ownership function to transfer the ownership from our deployer address to a different smart wallet address:

-
-
-
-
starkli invoke \
-    0x014825acb37c36563d3b96c450afe363d2fdfa3cfbd618b323f95b68b55ebf7e \
-    transfer_ownership \
-    0x011088d3cbe4289bc6750ee3a9cf35e52f4fa4e0ac9f42fb0b62e983139e135a \
-    --network=goerli-1
-
-
-
-

After the transaction is accepted on L2, you can confirm the state transition by calling the get_owner function again:

-
-
-
-
starkli call \
-    0x014825acb37c36563d3b96c450afe363d2fdfa3cfbd618b323f95b68b55ebf7e \
-    get_owner \
-    --network=goerli-1
-
-
-
-

The get_owner function now returns the new owner address, confirming the successful ownership transfer.

-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/quick_start/set_up_an_account/index.html b/pr-1195/documentation/quick_start/set_up_an_account/index.html deleted file mode 100644 index c4202aa28d..0000000000 --- a/pr-1195/documentation/quick_start/set_up_an_account/index.html +++ /dev/null @@ -1,1226 +0,0 @@ - - - - - - Setting up an account :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Setting up an account

-
-
-
- - - - - -
- - -
-

This guide shows you how to set up a Starknet account and wallet in the context of a smart contract deployment.

-
-
-

For information on creating a Starknet wallet as an end user, see Getting Started Using Starknet: Setting Up a Starknet Wallet.

-
-
-
-
-
-
-

Prerequisites

-
-
-
    -
  • -

    Starkli is installed correctly. Ensure that the following command shows the version information for Starkli:

    -
    -
    -
    starkli --version
    -
    -
    -
    -

    If this command fails, see Setting up your environment.

    -
    -
  • -
  • -

    A Starknet wallet is installed, either Argent X or Braavos. For information on a specific wallet, including installation instructions, see that wallet’s site.

    -
  • -
-
-
-
-
-

Creating an account

-
-
-

A smart wallet is composed of two parts:

-
-
-
    -
  • -

    A Signer: A smart contract that can sign transactions.

    -
  • -
  • -

    An Account Descriptor: A json file that contains information about the smart wallet, such as its address and -public key.

    -
  • -
-
-
-

After creating and funding your smart wallet with ETH you can deploy it to Starknet. For demonstration purposes, this page uses Starknet’s testnet.

-
-
-

For testnet transactions you can fund your wallet using the Starknet Sepolia Faucets.

-
-
-

Creating a Signer

-
-

A Signer is a smart contract that can sign transactions. It’s a crucial component of accounts in Starknet. To create a Signer you will need the private key of your smart wallet (the public key can be derived from it).

-
-
-

Starkli has the ability to create a keystore file that securely stores the private key of smart wallets each with a password. The accounts in the keystore file can be used to sign transactions using Starkli. The main advantage of this approach -is that it prevents storing the private key as plain text on your computer. Instead, a password is used to create an encrypted file in a location of choice.

-
-
-

Normally, the keystore file is stored in the default location of the Starkli CLI.

-
-
-

Creating a keystore file

-
-

The following command creates a keystore file for a smart wallet in the default location in ~/.starkli-wallets/deployer:

-
-
-

Create a new directory:

-
-
-
-
mkdir -p ~/.starkli-wallets/deployer
-
-
-
-

Create a keystore file within the directory:

-
-
-
-
starkli signer keystore from-key ~/.starkli-wallets/deployer/keystore.json
-
-Enter private key:
-Enter password:
-Created new encrypted keystore file: /home/parallels/.starkli-wallets/deployer/keystore.json
-Public key: 0x0550…
-
-
-
- - - - - -
- - -
-

In the private key prompt, paste the private key of your smart wallet.

-
-
-

In the password prompt, enter a password of your choice.

-
-
-

You will need this password to sign transactions using Starkli.

-
-
-
-
-
-

Export the private key from your wallet

-
-

Next export the private key from your Argent X or Braavos wallet:

-
-
-
-

Argent X

-
-

Navigate to: Settings section → Select your Account → Export Private Key.

-
-
-
-

Braavos

-
-

Navigate to: Settings section → Privacy and SecurityExport Private Key.

-
-
-

While knowing the private key of a smart wallet is necessary to sign transactions, it’s not sufficient. We also need to inform Starkli about the signing mechanism employed by our smart wallet created by Argent X or Braavos.

-
-
-
-
-

Creating an Account Descriptor

-
-

Starkli offers a command to collect all the required information from a smart wallet by providing its onchain address. Using this data, the CLI generates a json file that can be used to sign transactions:

-
-
-
-
starkli account fetch --help
-Fetch account config from an already deployed account contract
-
-
-
-

The fetch command supports both Argent X and Braavos smart wallets. Make sure your wallet address is already deployed and enter the following command to create and save the account descriptor file:

-
-
-
-
starkli account fetch <SMART_WALLET_ADDRESS> --output ~/.starkli-wallets/deployer/account.json --rpc <YOUR_RPC_ENDPOINT_HERE>
-
-
-
-

You can obtain access to a JSON-RPC endpoint in one of the following ways:

-
-
-
    -
  • -

    Host your own node with Pathfinder, Juno, Deoxys, or Papyrus.

    -
  • -
  • -

    Use a third-party JSON-RPC API provider. For information on providers, see Full nodes and API services.

    -
  • -
-
-
-

The following command shows the details of the account descriptor:

-
-
-
-
cat ~/.starkli-wallets/deployer/account.json
-
-
-
-

The account descriptor should have the following structure:

-
-
-
-
{
-  "version": 1,
-  "variant": {
-        "type": "argent",
-        "version": 1,
-        "implementation": "<ARGENT_CLASS_HASH>",
-        "signer": "<SMART_WALLET_PUBLIC_KEY>",
-        "guardian": "0x0"
-  },
-    "deployment": {
-        "status": "deployed",
-        "class_hash": "<SMART_WALLET_CLASS_HASH>",
-        "address": "<SMART_WALLET_ADDRESS>"
-  }
-}
-
-
-
- - - - - -
- - -
-

If you are working with Braavos wallet, the type is defined as braavos and the account descriptor structure might be slightly different.

-
-
-
-
-
-
-
-

Deploying an account

-
-
-

Once you have an account file, you can deploy the account contract with the starkli account deploy command.

-
-
-

This command sends a DEPLOY_ACCOUNT transaction, which requires the account to contain enough ETH to pay for the transaction fee.

-
-
-

To deploy your account, run the following command:

-
-
-
-
starkli account deploy ~/.starkli-wallets/deployer/account.json
-
-
-
- - - - - -
- - -
-

This command requires a signer. If you receive an error after running this command, ensure you have the STARKNET_KEYSTORE environment variable set as per these instructions.

-
-
-
-
-

When run, the command shows:

-
-
-
    -
  • -

    The address where the contract will be deployed.

    -
  • -
  • -

    Instructions for the user to fund the account before proceeding.

    -
  • -
-
-
-

Here’s an example command output:

-
-
-
-
The estimated account deployment fee is 0.000011483579723913 ETH. However, to avoid failure, fund at least:
-    0.000017225369585869 ETH
-to the following address:
-    0x01cf4d57ba01109f018dec3ea079a38fc08b789e03de4df937ddb9e8a0ff853a
-Press [ENTER] once youve funded the address.
-
-
-
-

You have now successfully deployed a new account to Starknet.

-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/starknet_versions/_images/juno_banner.png b/pr-1195/documentation/starknet_versions/_images/juno_banner.png deleted file mode 100644 index c23ee77995..0000000000 Binary files a/pr-1195/documentation/starknet_versions/_images/juno_banner.png and /dev/null differ diff --git a/pr-1195/documentation/starknet_versions/deprecated/index.html b/pr-1195/documentation/starknet_versions/deprecated/index.html deleted file mode 100644 index 5d9fc22144..0000000000 --- a/pr-1195/documentation/starknet_versions/deprecated/index.html +++ /dev/null @@ -1,1112 +0,0 @@ - - - - - - Deprecated, unsupported, and removed features :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Deprecated, unsupported, and removed features

-
-
-
-

The features on this page are deprecated, unsupported, or removed from Starknet.

-
-
- ---- - - - - - - - - - - - - -
-Deprecated - -

Refers to a feature or capability that is still supported, but support will be removed in a future release of Starknet. -Future fixes or enhancements are unlikely. If necessary, an alternative is available.

-
-Unsupported - -

Refers to a feature or capability that is no longer supported.

-
-Removed - -

Refers to a feature or capability that has been entirely removed.

-
-
-
-
-
-

Deprecated features

-
- ---- - - - - - - - - - - - - - - - - - - - - -
NameDescription

Goerli testnet

-

Goerli testnet is deprecated and is being replaced by Sepolia testnet. Starknet started migrating to Sepolia testnet on November 15th, 2023. Goerli testnet support will be removed April 11, 2024. You should migrate to Sepolia testnet as soon as possible. For more information on the Goerli deprecation, see the deprecation announcement on Ethereum’s site.

-
-
-

Full nodes, API services, SDKs, and other Starknet developer tools have started their migration to Sepolia as well. Builders are urged to migrate to Sepolia as soon as possible.

-
-
- - - - - -
- - -
-

Sepolia’s state and history are relatively small. Sepolia supports declaring classes of Cairo v0 and Cairo v2.0.0 and higher.

-
-
-

Starknet CLI

Support for the Starknet CLI has been removed. Instead use Starkli.

-

Support for Starknet CLI is removed in Starknet v0.13.0.

Cairo 0

Starknet v0.11.0 introduces Cairo 1.0 smart contracts.

-
-
-
-

Unsupported and removed features

-
- ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescription

Starknet feeder gateway

-

The Starknet feeder gateway, a temporary solution for querying the sequencer’s state, is being replaced by Starknet full nodes (Pathfinder, Juno, Deoxys, Papyrus) and RPC services. For more information, see Full nodes and API services.

-
-
-

Support for the feeder gateway queries that are not required for full nodes to synchronize on the state of Starknet will stop according to the following schedule:

-
- ---- - - - - - - - - - - - - - - - - - - - - -
EnvironmentDate

Integration

1 November 2023

Testnet

15 November 2023

Mainnet

19 December 2023

-
-

Queries that are required for full nodes to synchronize on the state of Starknet are still supported.

-
-
-

For more information, see the Community Forum post Feeder Gateway Deprecation.

-

Goerli testnet 2

Goerli testnet 2 is removed. Use Goerli testnet.

Free L1→ L2 messaging

Previously, sending a message from L1 to L2 had an optional fee associated.

-

From Starknet v0.11.0, the fee mechanism is enforced and the ability to send L1→L2 messages without the corresponding L2 fee has been removed.

-

See here for more details.

invoke transaction v0

invoke transaction v0 has been removed since Starknet v0.11.0.

declare transaction v0

declare transaction v0 has been removed since Starknet v0.11.0.

deploy transaction

The deploy transaction has been removed since Starknet v0.10.3.

-

To deploy new contract instances, you can use the deploy system call.

-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/starknet_versions/juno_versions/index.html b/pr-1195/documentation/starknet_versions/juno_versions/index.html deleted file mode 100644 index 75db7c683a..0000000000 --- a/pr-1195/documentation/starknet_versions/juno_versions/index.html +++ /dev/null @@ -1,1767 +0,0 @@ - - - - - - Juno release notes :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Juno release notes

-
-
-
-
-juno banner -
-
-
-

Juno is a golang Starknet node implementation by Nethermind with the aim of decentralizing Starknet.

-
-
-

See the official Juno GitHub repository for more details.

-
-
-
-
-

v0.7.3

-
-
-

Support for upcoming Starknet v0.12.3, improved RPC performance with a new global class cache, allowing for higher request throughput and optimized resource usage. We’ve updated blockifier, which includes an important wallet integration fix. On top of that, expect new metrics and ongoing enhancements to the P2P layer, among other improvements. Here’s what’s new:

-
-
-
-
-

Added

-
-
-
    -
  • -

    Support for Starknet v0.12.3

    -
  • -
  • -

    A global class cache to the VM that enhances overall RPC throughput.
    -PR by @omerfirmak in 1401

    -
  • -
  • -

    A new flag, max-vms, to control the maximum number of VM instances for concurrent RPC calls, optimizing resource usage
    -PR by @omerfirmak in #1378.

    -
  • -
-
-
-
-
-

Changed

-
-
-
    -
  • -

    The blockifier library has been updated, now supporting the query bit in the version field for transactions.
    -PR by @joshklop in #1401.

    -
  • -
  • -

    Subscription handling has been moved to the synchronizer for improved efficiency.
    -PR by @joshklop in #1373.

    -
  • -
  • -

    Ongoing enhancements to the P2P layer, including the implementation of a Receipt Handler and Adapter and a new GetBlockBodies feature.
    -PRs by @IronGauntlets in #1352 and by @kirugan in #1359.

    -
  • -
  • -

    Prometheus metrics have been expanded to include version information, latency on Transaction.Commit(), and read metrics on blockchain operations.
    -PRs by @omerfirmak in #1394, #1396, and #1395.

    -
  • -
  • -

    Kubernetes pods now have a correctly set GOMAXPROCS setting, aligning performance with CPU resources.
    -PR by @omerfirmak in #1397.

    -
  • -
  • -

    Fallback to feeder traces for blocks ⇐ 0.12.2.
    -PR by @omerfirmak in #1405.

    -
  • -
-
-
-
-
-

Fixed

-
-
-
    -
  • -

    Resolved an issue with event emission on sync step failure for more reliable synchronization.
    -PR by @aminsato in #1387.

    -
  • -
  • -

    Refactored websocket error conditions for improved stability and error handling.
    -PR by @joshklop in #1400.

    -
  • -
-
-
-
-
-

Docker Image

-
-
-

You can pull the Docker image for this release with the following command:

-
-
-
-
docker pull nethermind/juno:v0.7.3
-
-
-
-
-
-

v0.7.0

-
-
-

The primary goal of this release is to introduce support for Starknet JSON-RPC v0.5.0. Juno now supports multiple versions via /v0_5 and /v0_4 endpoints. The default version at the root / endpoint has been updated from 0.4.0 to 0.5.0.

-
-
-

🌟 Added

-
-
    -
  • -

    Starknet v0.5.0 Compatibility:

    -
    -
      -
    • -

      Implemented starknet_specVersion @omerfirmak

      -
    • -
    • -

      Renamed juno_getTransactionStatus to starknet_getTransactionStatus. @omerfirmak

      -
    • -
    • -

      Removed pendingTransactions endpoint for cleanup. @omerfirmak

      -
    • -
    • -

      Added new fields like execution resources and message hash to RPC receipt. @omerfirmak

      -
    • -
    • -

      Building and calculating state diffs. @omerfirmak

      -
    • -
    • -

      Make starknet_traceBlockTransactions get a block id @kirugan

      -
    • -
    • -

      Add txn type to traces

      -
    • -
    • -

      Add message_hash field for L1_HANDLER_TXN_RECEIPT

      -
    • -
    • -

      Add starknet_getTransactionStatus and remove starknet_pendingTransactions

      -
    • -
    -
    -
  • -
  • -

    Support multiple RPC versions: v0.4.0 and v0.5.0 @omerfirmak

    -
  • -
  • -

    Performance Metrics: Moved metric counting out of various components for cleaner code. @omerfirmak

    -
  • -
  • -

    Websocket Enhancements: Full-duplex comms and fixes related to over-reading websocket requests. @joshklop

    -
  • -
-
-
-
-

🔄 Changed

-
-
    -
  • -

    RPC Optimization: Reduced allocations in RPC requests for better performance. @joshklop

    -
  • -
  • -

    Refactored Error Handling: Improved global error usage and better error handling in various components. @omerfirmak

    -
  • -
-
-
-
-

🛠 Fixed

-
-
    -
  • -

    Websocket Reading: Fixed over-reading issues in Websocket requests.@joshklop

    -
  • -
  • -

    Error Handling: Resolved potential nil pointer dereferences and panic issues. @omerfirmak

    -
  • -
-
-
-
-

🚀 Deployment and CI/CD

-
-
    -
  • -

    Various CI/CD pipeline improvements for better automation. @wojciechos and @ToluwalopeAyo

    -
  • -
-
-
-
-

⚙️ Docker Image

-
-

You can pull the Docker image for this release with:

-
-
-
-
docker pull nethermind/juno:v0.7.0
-
-
-
-
-
-
-

v0.6.0

-
-
-

🌟 Added

-
-
    -
  • -

    New Trace RPC Methods:

    -
    -
      -
    • -

      starknet_traceTransaction

      -
    • -
    • -

      starknet_traceBlockTransactions

      -
    • -
    • -

      starknet_simulateTransactions

      -
    • -
    -
    -
  • -
  • -

    Juno RPC Schema: A dedicated schema to streamline RPC interactions for Juno’s method.

    -
  • -
  • -

    Juno Console Enhancement: Pretty printing of Juno console logs for an enriched user experience.

    -
  • -
  • -

    Comprehensive Documentation: Official documentation now hosted on GitHub Pages.

    -
  • -
-
-
-
-

🛠 Fixed

-
-
    -
  • -

    RPC Schema Consistency: Revised to ensure our RPC schema is consistent with the Starknet specification.

    -
  • -
-
-
-
-

⚙️ Command-line Switches Update

-
-

Command-line switches have been restructured to provide clearer access control:

-
-
-
-
docker run -d
---name juno
--p $httpPort:$httpPort
--p $metricsPort:$metricsPort
--v /root/juno:/var/lib/juno
-nethermind/juno:v0.6.0
---db-path /var/lib/juno
---http
---http-port $httpPort
---metrics
---metrics-port $metricsPort
---eth-node <YOUR-ETH-NODE>
-
-
-
-

(Note: Ensure to adjust the variables like $httpPort, $metricsPort and others as per your configuration.)

-
-
-
-

🔍 Migration Notes

-
-
    -
  • -

    Database Migration: This version introduces database changes due to our work focus on peer-to-peer (p2p) communication. These changes may result in extended migration times. For faster sync, we recommend users to utilize snapshots.

    -
  • -
-
-
-
-
-
-

v0.5.1

-
-
-

This release adds support for the Starknet v0.12.2.

-
-
-

Added

-
-
    -
  • -

    Support for Starknet v0.12.2

    -
  • -
-
-
-
-
-
-

v0.5.0

-
-
-

This release adds support for the upcoming Starknet v0.12.1 upgrade and includes compatibility with v0.4.0 of the RPC specification.

-
-
-

Added

-
-
    -
  • -

    Support for Starknet v0.12.1

    -
  • -
  • -

    Compatibility with v0.4.0 of the RPC specification

    -
  • -
  • -

    New RPC method: starknet_estimateMessageFee

    -
  • -
  • -

    Health Check Endpoint: A GET request to the / endpoint will now return a 200 status code for a healthy Juno node

    -
  • -
  • -

    Added Prometheus metrics support: Use --metrics and --metrics-port to enable this feature

    -
  • -
-
-
-
-

Changed

-
-
    -
  • -

    Adjusted worker number for sync process, improving performance

    -
  • -
  • -

    Updated blockifier for starknet v0.12.1

    -
  • -
-
-
-
-

Fixed

-
-
    -
  • -

    Resolved issues causing context canceled errors in writing RPC methods

    -
  • -
  • -

    Mapped gateway errors to write API RPC errors, improving error handling

    -
  • -
-
-
-
-
-
-

v0.4.1

-
- -
-
-
-

Added

-
-
- -
-
-
-
-

Changed

-
-
- -
-
-
-
-

Fixed

-
-
- -
-
-
-
-

v0.4.0

-
-
- - - - - -
- - -This release has breaking changes and database is not compatible with the previous version. -
-
-
-

Added

-
-
    -
  • -

    New RPC Methods:

    -
    -
      -
    • -

      starknet_call

      -
    • -
    • -

      starknet_estimateFee

      -
    • -
    • -

      starknet_addDeclareTransaction

      -
    • -
    • -

      starknet_addDeployAccountTransaction

      -
    • -
    • -

      starknet_addInvokeTransaction

      -
    • -
    • -

      juno_getTransactionStatus

      -
    • -
    • -

      juno_version

      -
    • -
    -
    -
  • -
  • -

    L1 Verifier: Verification of state from Layer 1 has been implemented.

    -
  • -
  • -

    Block Reorg Detection and Handling: A feature to detect and handle block reorganizations has been implemented.

    -
  • -
  • -

    gRPC Service: To accommodate users requiring direct access to the database, a gRPC service has been exposed.

    -
  • -
  • -

    Database Migration: The system has been improved to handle database changes more gracefully. It’s no longer necessary to sync from the start when some database changes occur.

    -
  • -
  • -

    Starknet v0.12.0 support: includes integration with the Rust VM.

    -
  • -
-
-
-
-

Changed

-
-
    -
  • -

    Performance Enhancements: Several adjustments and improvements have been made to increase the performance. These changes have resulted in ~30% reduction in sync time.

    -
  • -
-
-
-
-
-
-

v0.3.1

-
-
-

Added

-
-
    -
  • -

    Fetch and store compiled classes for each Sierra class.

    -
  • -
-
-
-
-

Changed

-
-
    -
  • -

    Updated the behavior of synced nodes, which will now return false to starknet_syncing.

    -
  • -
-
-
-
-

Fixed

-
-
    -
  • -

    Resolved issue with NumAsHex(0) being omitted in RPC.

    -
  • -
  • -

    Fixed a Goerli sync issue by relaxing decoder max array elements limit.

    -
  • -
-
-
-

Full Changelog: [v0.3.0…​v0.3.1]

-
-
-
-
-
-

v0.3.0

-
-
-

Added

-
-
    -
  • -

    Starknet v0.11.2 support

    -
  • -
  • -

    History for contracts, nonce, and class hash.

    -
  • -
  • -

    Implemented StateSnapshot.

    -
  • -
  • -

    New RPC endpoints:

    -
    -
      -
    • -

      starknet_syncing

      -
    • -
    • -

      starknet_getNonce

      -
    • -
    • -

      starknet_getStorageAt

      -
    • -
    • -

      starknet_getClassHashAt

      -
    • -
    • -

      starknet_getClass

      -
    • -
    • -

      starknet_getClassAt

      -
    • -
    • -

      starknet_getEvents

      -
    • -
    -
    -
  • -
-
-
- - - - - -
- - -For new RPC endpoints to fully work with data before the new version, the node needs to be resynced. -
-
-
-
-

Changed

-
-
    -
  • -

    Optimized TransactionStorage encoding and refactored memStorage.

    -
  • -
  • -

    Refactored RPC implementation for better organization and maintainability.

    -
  • -
  • -

    Parallelized and refactored sync tests for faster execution, improved readability, and maintainability.

    -
  • -
-
-
-
-

Fixed

-
-
    -
  • -

    Updated handling of non-existent keys to return a zero value.

    -
  • -
-
-
-

Full Changelog: v0.3.0…​v0.3.1

-
-
-
-
-
-

v0.2.2

-
-
-

This patch release fixes handling of block versioning and ensures compatibility with non-sem-ver compliant Starknet.

-
-
-

Fixed

-
-
    -
  • -

    Ignore or add digits to block version string as necessary.

    -
  • -
-
-
-

Full Changelog: v0.2.1…​v0.2.2

-
-
-
-
-
-

v0.2.1

-
-
-

This minor release introduces an important optimization that enhances sync performance.

-
-
-
    -
  • -

    Update gnark-crypto version:

    -
    -
      -
    • -

      Implement precomputed point multiplication results for Pedersen hash operations.

      -
    • -
    -
    -
  • -
-
-
-

Full Changelog: v0.2.0…​v0.2.1

-
-
-
-
-

v0.2.0

-
-
-

This release adds support for Staknet v0.11.0.

-
-
- - - - - -
- - -This release has breaking changes and database is not compatible with the previous version. -
-
-
-

Added

-
-
    -
  • -

    Starknet v0.11.0 support:

    -
    -
      -
    • -

      Add Poseidon hash for new state commitment.

      -
    • -
    • -

      Add DeclareTransaction version 2.

      -
    • -
    • -

      Add and Store Cairo 1/Sierra class definition and hash calculations.

      -
    • -
    -
    -
  • -
  • -

    pprof option is added for profiling and monitoring.

    -
  • -
  • -

    Verify Class Hashes.

    -
  • -
-
-
-
-

Changed

-
-
    -
  • -

    Starknet v0.11.0 support:

    -
    - -
    -
  • -
  • -

    Rename the verbosity option to log-level and log-level accepts string instead of uint8. See help for details.

    -
  • -
  • -

    network option accepts string instead of uint8. See help for details.

    -
  • -
  • -

    Database table is updated to account for Starknet v0.11.0 changes.

    -
  • -
-
-
-
-

Removed

-
-
    -
  • -

    Remove metrics and eth-node options since they are not used.

    -
  • -
-
-
-
-

Fixed

-
-
    -
  • -

    Graceful shutdown: ensure all services have returned before exiting.

    -
  • -
-
-
-

Full Changelog: v0.1.0…​v0.2.0

-
-
-
-
-
-

v0.1.0

-
-
-

This is Juno’s first release (compatible with Starknet v0.10.3) with the following features:

-
-
-
    -
  • -

    Starknet state construction and storage using a path-based Merkle Patricia trie.

    -
  • -
  • -

    Pedersen and starknet_keccak hash implementation over starknet field.

    -
  • -
  • -

    Feeder gateway synchronization of Blocks, Transactions, Receipts, State Updates and Classes.

    -
  • -
  • -

    Block and Transaction hash verification.

    -
  • -
  • -

    JSON-RPC Endpoints:

    -
    -
      -
    • -

      starknet_chainId

      -
    • -
    • -

      starknet_blockNumber

      -
    • -
    • -

      starknet_blockHashAndNumber

      -
    • -
    • -

      starknet_getBlockWithTxHashes

      -
    • -
    • -

      starknet_getBlockWithTxs

      -
    • -
    • -

      starknet_getTransactionByHash

      -
    • -
    • -

      starknet_getTransactionReceipt

      -
    • -
    • -

      starknet_getBlockTransactionCount

      -
    • -
    • -

      starknet_getTransactionByBlockIdAndIndex

      -
    • -
    • -

      starknet_getStateUpdate

      -
    • -
    -
    -
  • -
-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/starknet_versions/pathfinder_versions/index.html b/pr-1195/documentation/starknet_versions/pathfinder_versions/index.html deleted file mode 100644 index e290f12c75..0000000000 --- a/pr-1195/documentation/starknet_versions/pathfinder_versions/index.html +++ /dev/null @@ -1,1899 +0,0 @@ - - - - - - Pathfinder release notes :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Pathfinder release notes

-
-
-
-

Pathfinder is a Starknet full node giving you a safe view into Starknet.

-
-
-

It provides the following features:

-
-
-
    -
  • -

    Access the full Starknet state history

    -
  • -
  • -

    Verifies state using Ethereum

    -
  • -
  • -

    Implements the Starknet JSON-RPC API

    -
  • -
  • -

    Run Starknet functions without requiring a Starknet transaction

    -
  • -
  • -

    Ability to do fee estimation for transactions

    -
  • -
-
-
-

See the official Pathfinder GitHub repository for more details.

-
-
-
-
-

[0.6.6] - 2023-07-10 (latest)

-
-
-

Fixed

-
-
    -
  • -

    stack overflow while compiling Sierra to CASM

    -
  • -
-
-
-
-
-
-

[0.6.5] - 2023-07-07

-
-
-

Fixed

-
-
    -
  • -

    pending data from the gateway is inconsistent

    -
  • -
  • -

    this could exhibit as RPC data changing status between pending | L2 accepted | not found, especially noticeable for transactions.

    -
  • -
-
-
-
-

Changed

-
-
    -
  • -

    substantially increase the character limit of execution errors

    -
  • -
  • -

    previously, the RPC would return a highly truncated error message from the execution vm

    -
  • -
-
-
-
-
-
-

[0.6.4] - 2023-07-05

-
-
-

Fixed

-
-
    -
  • -

    Pending data is not polled for starknet v0.12 due to an HTTP error code change from the gateway.

    -
  • -
  • -

    Transaction receipts missing from_address in MSG_TO_L1.

    -
  • -
-
-
-
-
-
-

[0.6.3] - 2023-06-29

-
-
-

Fixed

-
-
    -
  • -

    Sierra class hash not in declared classes sync bug

    -
  • -
-
-
-
-

Changed

-
-
    -
  • -

    use all libfunc list instead of experimental for sierra compilation

    -
  • -
-
-
-
-
-
-

[0.6.2] - 2023-06-29

-
-
-

Added

-
-
    -
  • -

    starknet_estimateMessageFee for JSON-RPC v0.3.1 to estimate message fee from L1 handler.

    -
  • -
  • -

    sync-related metrics

    -
  • -
  • -

    current_block: the currently sync’d block height of the node

    -
  • -
  • -

    highest_block: the height of the blockchain

    -
  • -
  • -

    block_time: timestamp difference between the current block and its parent

    -
  • -
  • -

    block_latency: delay between current block being published and sync’d locally

    -
  • -
  • -

    block_download: time taken to download current block’s data excluding classes

    -
  • -
  • -

    block_processing: time taken to process and store the current block

    -
  • -
  • -

    configuration for new block polling interval: --sync.poll-interval <seconds>

    -
  • -
  • -

    Starknet v0.12.0 support

    -
  • -
  • -

    sierra v2.0.0 support

    -
  • -
  • -

    cairo-lang upgraded to 0.12.0a0

    -
  • -
-
-
-
-

Fixed

-
-
    -
  • -

    reorgs fail if a class declaration is included in the reorg

    -
  • -
  • -

    sync can fail if db connection pool is held saturated by rpc queries

    -
  • -
  • -

    uses finalized (reorg-safe) L1 state instead of latest

    -
  • -
  • -

    starknet_getEvents times out for queries involving a large block range

    -
  • -
-
-
-
-

Changed

-
-
    -
  • -

    dropped upgrade support for pathfinder v0.4 and earlier

    -
  • -
  • -

    separate db connection pools rpc, sync and storage

    -
  • -
  • -

    increased the number of rpc db connections

    -
  • -
-
-
-
-
-
-

[0.6.1] - 2023-06-18

-
-
-

Fixed

-
-
    -
  • -

    class hash mismatch for cairo 0 classes with non-ascii text

    -
  • -
-
-
-
-
-
-

[0.6.0] - 2023-06-14

-
-
-

Fixed

-
-
    -
  • -

    starknet_simulateTransaction requires transactions instead of transaction as input field.

    -
  • -
  • -

    gateway’s error message is hidden when submitting a failed transaction

    -
  • -
  • -

    starknet_getEvents is very slow for certain filter combinations

    -
  • -
-
-
-
-

Changed

-
-
    -
  • -

    default RPC API version changed from v0.2 to v0.3

    -
  • -
  • -

    disallow JSON-RPC notification-style requests

    -
  • -
-
-
-
-
-
-

[0.5.6] - 2023-05-25

-
-
-

Added

-
-
    -
  • -

    Starknet v0.11.2 support

    -
  • -
  • -

    Sierra compiler v1.1.0-rc0

    -
  • -
  • -

    cairo-lang upgraded to 0.11.2a0

    -
  • -
  • -

    Subscription to newHead events via websocket using the method pathfinder_subscribe_newHeads, which can -be managed by the following command line options

    -
  • -
  • -

    rpc.websocket, which enables websocket transport

    -
  • -
  • -

    rpc.websocket.capacity, which sets the maximum number of websocket subscriptions per subscription type

    -
    -
    -
    Authors: [Shramee Srivastav](https://github.com/shramee) and [Matthieu Auger](https://github.com/matthieuauger)
    -
    -
    -
  • -
-
-
-
-
-
-

[0.5.5] - 2023-05-18

-
-
-

Added

-
-
    -
  • -

    cairo-lang upgraded to 0.11.1.1

    -
  • -
-
-
-
-

Fixed

-
-
    -
  • -

    RPC emits connection logs and warnings

    -
  • -
  • -

    Fee estimate mismatch between gateway and pathfinder

    -
  • -
  • -

    Gateway uses a new gas price sampling algorithm which was incompatible with pathfinders.

    -
  • -
  • -

    Fee estimate returns error when submitting Cairo 1.0.0-rc0 classes.

    -
  • -
  • -

    Historic L1 handler transactions are served as Invoke V0

    -
  • -
  • -

    Older databases contain L1 handler transactions from before L1 handler was a specific transaction type. These were -stored as Invoke V0. These are now correctly identified as being L1 Handler transactions.

    -
  • -
-
-
-
-

Fixed

-
-
    -
  • -

    RPC emits connection logs and warnings

    -
  • -
  • -

    Fee estimate mismatch between gateway and pathfinder

    -
  • -
  • -

    Gateway uses a new gas price sampling algorithm which was incompatible with pathfinders.

    -
  • -
  • -

    Historic L1 handler transactions are served as Invoke V0

    -
  • -
  • -

    Older databases contain L1 handler transactions from before L1 handler was a specific transaction type. These were -stored as Invoke V0. These are now correctly identified as being L1 Handler transactions.

    -
  • -
-
-
-
-
-
-

v0.5.4

-
-
-

The primary focus of this release is to provide support for Starknet v0.11.1, and will continue to work for v0.11.0. Since this release is required for v0.11.1, you should update your node before the network is updated.

-
-
-

Added

-
-
    -
  • -

    Starknet v0.11.1 support

    -
  • -
  • -

    CORS support via the rpc.cors-domains configuration option

    -
  • -
  • -

    Transaction hashes are now verified as part of the sync process. Previously, these were not verified as the exact algorithm was underdocumented and the transaction format was still evolving.

    -
  • -
-
-
-
-

Fixed

-
-
    -
  • -

    RPC server panic for unprefixed unregistered method names

    -
  • -
  • -

    Data can temporarily appear to go missing when transitioning from PENDING to ACCEPTED ON L2

    -
  • -
  • -

    This was commonly seen when rapidly monitoring a new transaction, which would go from PENDING to TXN_HASH_NOT_FOUND to ACCEPTED_ON_L2 as pathfinder moved the ephemeral pending data to latest data on disk.

    -
  • -
-
-
-
-
-
-

v0.5.3

-
-
-

Fixes for minor issues and inconsistencies.

-
-
-

Added

-
-
    -
  • -

    max-rpc-connections command-line argument. This sets the maximum number incoming RPC connections the pathfinder node will accept. This defaults to 1024 if not specified.

    -
  • -
  • -

    cairo-lang upgraded to 0.11.0.2

    -
  • -
-
-
-
-

Fixed

-
-
    -
  • -

    starknet_simulateTransaction data model inconsistency

    -
  • -
  • -

    poll-pending default value restored to false

    -
  • -
  • -

    incoming RPC connections limited to 100. This limit was accidentally introduced in v0.5.2 as part of a dependency upgrade, whereas before it was unlimited. The default is now 1024 and can be configured using --max-rpc-connections.

    -
  • -
  • -

    handling of invalid JSON-RPC requests

    -
  • -
-
-
-
-
-
-

v0.5.2

-
-
-

This release fixes a few RPC bugs and adds support for bulk fee estimation and transaction simulation (traces) as part of v0.3 RPC specification.

-
-
-

In addition it also adds a pathfinder_getTransactionStatus endpoint which lets you track a transactions status — including REJECTED and RECEIVED — in the same fashion as the gateway.

-
-
-

Added

-
-
    -
  • -

    support starknet_estimateFee in the JSON-RPC v0.3 API

    -
  • -
  • -

    supports estimating multiple transactions

    -
  • -
  • -

    this includes declaring and immediately using a class (not currently possible via the gateway)

    -
  • -
  • -

    support starknet_simulateTransaction for JSON-RPC v0.3

    -
  • -
  • -

    supports simulating multiple transactions

    -
  • -
  • -

    this includes declaring and immediately using a class (not currently possible via the gateway)

    -
  • -
  • -

    support pathfinder_getTransactionStatus which is exposed on all RPC routes

    -
  • -
  • -

    this enables querying a transactions current status, including whether the gateway has received or rejected it

    -
  • -
-
-
-
-

Fixed

-
-
    -
  • -

    RPC returns int for entrypoint offsets instead of hex

    -
  • -
  • -

    RPC rejects Fee values with more than 32 digits

    -
  • -
  • -

    RPC does not expose pathfinder_getProof on v0.3 route

    -
  • -
-
-
-
-
-
-

v0.5.1

-
-
-

This is a minor bugfix release, primarily to fix an issue with syncing on testnet2.

-
-
-

Fixed

-
-
    -
  • -

    pathfinder sometimes spams nethermind L1 nodes

    -
  • -
  • -

    pathfinder stops syncing testnet2 at block 95220 due to a Sierra class compilation issue

    -
  • -
-
-
-
-
-
-

v0.5.0

-
-
-

Highlights

-
-
    -
  • -

    starknet v0.11.0 support

    -
  • -
  • -

    RPC API v0.3 partial support

    -
  • -
  • -

    removed several deprecated config options

    -
  • -
  • -

    requires python 3.9 or 3.10 (no longer 3.8)

    -
  • -
-
-
-
-

Added

-
-
    -
  • -

    support for state commitment and class commitment in pathfinder_getProof

    -
  • -
  • -

    support for starknet v0.11

    -
  • -
  • -

    partial support for RPC specification v0.3

    -
  • -
  • -

    exposed on /rpc/v0.3/ route

    -
  • -
  • -

    missing support for starknet_estimateFee and starknet_simulate

    -
  • -
-
-
-
-

Changed

-
-
    -
  • -

    starknet_call and starknet_estimateFee JSON-RPC methods return more detailed error messages

    -
  • -
  • -

    python version requirement has changed to 3.9 or 3.10 (was 3.8 or 3.9 previously)

    -
  • -
-
-
-
-

Fixed

-
-
    -
  • -

    RPC accepts hex inputs for Felt without '0x' prefix. This led to confusion especially when passing in a decimal string which would get silently interpreted as hex.

    -
  • -
  • -

    using a Nethermind Ethereum endpoint occasionally causes errors such as <block-number> could not be found to be logged.

    -
  • -
  • -

    sync can miss new block events by getting stuck waiting for pending data.

    -
  • -
-
-
-
-

Removed

-
- -
-
-
-

RPC API

-
-

We added support for v0.3 and removed v0.1. We still support v0.2 at both /rpc/v0.2 and /rpc (default) routes. In summary:

-
-
-
-
/                     # serves v0.2
-/rpc/v0.2/            # serves v0.2
-/rpc/v0.3/            # serves v0.3
-
-
-
-

We are missing starknet_estimateFee and starknet_simulate support for v0.3, which will be added in an upcoming release.

-
-
-
-

Python requirement

-
-

Note: this only applies if you are building from source. This does not impact docker users.

-
-
-

Pathfinder requires python to support the starknet VM used to simulate starknet transactions and function calls. Previous versions of the VM only worked with python 3.8 or 3.9 which was a hassle because most operating systems no longer directly support it. The new version of the VM bundled with starknet v0.11 now requires python version 3.9 or 3.10.

-
-
-
-

Configuration changes

-
-

Several configuration options are now removed, after they were deprecated in pathfinder v0.4.1. Here is a migration guide:

-
-
-
    -
  • -

    --testnet2: use --network testnet2 instead

    -
  • -
  • -

    --integration: use --network integration instead

    -
  • -
  • -

    --sequencer-url: use --network custom in combination with --feeder-gateway-url and gateway-url

    -
  • -
  • -

    --config: use environment variables or env files as an alternative

    -
  • -
-
-
-
-
-
-

v0.4.5

-
-
-

Hotfix for a bug introduced in the previous version v0.4.4, which prevented a new node from syncing on blocks near genesis.

-
-
-

Added

-
-

Added Newton FAQ links to readme

-
-
-
-

Fixed

-
-

Node fails to sync old blocks

-
-
-
-

New contributors

-
-

@SecurityQQ made their first contribution in #799

-
-
-
-
-
-

v0.4.4

-
-
-

This minor release contains some nice performance improvements for starknet_call and starknet_estimateFee as well as some minor bug fixes.

-
-
-

Also included is a major new feature: storage proofs - big thanks @pscott for his hard work on this feature! This is available via the pathfinder_getProof method which is served from both the pathfinder and Starknet endpoints for convenience:

-
-
-
-
<node-url>/rpc/pathfinder/v0.1/pathfinder_getProof
-<node-url>/rpc/v0.2/pathfinder_getProof
-
-
-
-

The method is specified here.

-
-
-

Its results can be used to formally verify what a contract’s storage values are without trusting the pathfinder node.

-
-
-

This is achieved by validating the merkle-proof that pathfinder returns and confirming that it correctly matches the known Starknet state root.

-
-
-

Added

-
-

storage proofs via pathfinder_getProof by @pscott

-
-
-
-

Fixed

-
-
    -
  • -

    starknet_getEvents returns all events when from_block="latest"

    -
  • -
  • -

    v0.1 starknet_getStateUpdate does not contain nonces

    -
  • -
-
-
-
-

Changed

-
-
    -
  • -

    Improved performance for starknet_call and starknet_estimateFee by caching classes

    -
  • -
  • -

    Improved performance for starknet_call and starknet_estimateFee by using Rust for hashing

    -
  • -
-
-
-
-

New contributors

-
-

@pscott made their first contribution in #726

-
-
-
-
-
-

v0.4.3

-
-
-

The primary purpose of this release is to properly support testnet2 after the Starknet v0.10.3 update.

-
-
-

The v0.10.3 update changed the testnet2 chain ID which impacts transaction signatures which in turn meant that starknet_estimateFee would fail for any signed transaction.

-
-
-

This release updates pathfinder to use the correct chain ID.

-
-
-

Fixed

-
-
    -
  • -

    Testnet2 and integration flags are ignored

    -
  • -
  • -

    starknet_estimateFee uses wrong chain ID for testnet2

    -
  • -
-
-
-
-

Changed

-
-

Updated to cairo-lang 0.10.3

-
-
-
-
-
-

v0.4.2

-
-
-

Contains several bug fixes, mostly hotfixes for bugs introduced in v0.4.1.

-
-
-

Added

-
-

Document that --chain-id expects text as input

-
-
-
-

Fixed

-
-
    -
  • -

    Testnet2 and integration L1 addresses are swapped (bug introduced in v0.4.1)

    -
  • -
  • -

    Proxy network setups can’t sync historical blocks (bug introduced in v0.4.1)

    -
  • -
  • -

    ABI serialization for starknet_estimateFee for declare transactions

    -
  • -
-
-
-
-
-
-

v0.4.1

-
-
-

Highlights

-
-
    -
  • -

    Soft deprecation of some configuration options

    -
  • -
  • -

    Support custom Starknet gateways

    -
  • -
  • -

    Pathfinder RPC extensions at /rpc/pathfinder/ with pathfinder_version method

    -
  • -
  • -

    starknet_events optimisations

    -
  • -
  • -

    fix block timestamp in pending calls

    -
  • -
  • -

    Custom Starknet gateway support

    -
  • -
-
-
-

This release introduces support for custom Starknets. You can select this network by setting --network custom and specifying the --gateway-url and --feeder-gateway-url options.

-
-
-

Configuration option deprecation

-
-

Several configuration options have been soft deprecated. This means using them will continue to work as before (no breaking change), but they will emit a warning when used. They will be removed in a future version, so please migrate to the newer options.

-
-
-

To re-emphasize: your current configuration setup will continue to work as is.

-
-
-
-

Network selection

-
-

--testnet2 and --integration have been deprecated in favor of --network testnet2 and --network integration.

-
-
-
-

Gateway proxy

-
-

--sequencer-url has been deprecated in favor of --network custom along with --gateway-url, --feeder-gateway-url and --chain-id. In addition, you will need to rename your existing database file to custom.sqlite as this will be the expected filename for custom networks.

-
-
-
-

Configuration file

-
-

--config has been deprecated and will not be supported in the future. The utility this provided was valuable. Unfortunately it is starting to severely hinder how fast we can implement configuration changes and we decided to remove it.

-
-
-

We suggest using environment variables along with environment files to configure pathfinder in a similar fashion.

-
-
-
-
-

Changed

-
-

The following configuration options are now marked as deprecated: --testnet2, --integration, --config, --sequencer-url -Optimized starknet_events for queries with both a block range and a from address

-
-
-
-

Fixed

-
-

Block timestamps for pending in starknet_call and starknet_estimateFee were using the latest timestamp instead of the pending one. This meant contracts relying on accurate timestamps could sometimes fail unexpectedly.

-
-
-
-

Added

-
-
    -
  • -

    Custom Starknet support

    -
  • -
  • -

    Pathfinder specific RPC extensions hosted at <rpc-url>/rpc/pathfinder/v0.1. Currently, this only contains pathfinder_version which returns the pathfinder version of the node.

    -
  • -
-
-
-
-
-
-

v0.4.0- (breaking release)

-
-
-

This release contains a breaking change, and also adds support for Starknet v0.10.2.

-
-
-

The changes themselves are quite simple, but please read through each section as there are some caveats which might impact you when you apply this update.

-
-
-

Default RPC version change

-
-

This release changes the version of the RPC that is served at the root route, from v0.1 to v0.2 of the RPC specification. Version v0.1 is still available at the /rpc/v0.1/ endpoint. This is the only breaking change in this release.

-
-
-

Here is a summary of what routes are currently available, and what’s changed:

-
-
-
    -
  • -

    / serves v0.2 (changed from v0.1)

    -
  • -
  • -

    /rpc/v0.1 serves v0.1 (no change)

    -
  • -
  • -

    /rpc/v0.2 serves v0.2 (no change)

    -
  • -
-
-
-

If possible, we recommend that you use the version specific routes as this will prevent such breaking changes from impacting you.

-
-
-
-

Starknet v0.10.2 support

-
-

This release includes an update to the cairo-vm embedded in pathfinder in order to support the upcoming v0.10.2 Starknet release. This bundled vm is a pre-release and may therefore contain differences to the final version used once Starknet updates testnet and mainnet. We will of course issue a new release if / when there is a new vm.

-
-
- - - - - -
- - -
-

Since these changes are not yet live on testnet nor mainnet, this means upgrading to this release will cause deviations between what pathfinder outputs and what can be expected on the network. More specifically, starknet_estimateFee will compute different fees until the network has upgraded to Starknet v0.10.2.

-
-
-

If you don’t need the RPC route changes, it may be pertinent to delay updating until closer to the v0.10.2 release dates on testnet and mainnet. The expected timeline for these upgrades is ~17/11 for testnets and ~24/11 for mainnet.

-
-
-
-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/starknet_versions/upcoming_versions/index.html b/pr-1195/documentation/starknet_versions/upcoming_versions/index.html deleted file mode 100644 index 7e3111ebbb..0000000000 --- a/pr-1195/documentation/starknet_versions/upcoming_versions/index.html +++ /dev/null @@ -1,942 +0,0 @@ - - - - - - Upcoming Starknet versions :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- - -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/starknet_versions/version_notes/index.html b/pr-1195/documentation/starknet_versions/version_notes/index.html deleted file mode 100644 index 7af444a772..0000000000 --- a/pr-1195/documentation/starknet_versions/version_notes/index.html +++ /dev/null @@ -1,1875 +0,0 @@ - - - - - - Starknet release notes :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Starknet release notes

-
-
-
-

The following release notes cover the ongoing version changes to Starknet. You can subscribe to get the latest version updates delivered to your inbox at Starknet Roadmap & version updates.

-
-
-
-
-

Starknet environments

-
-
-

Within Starknet’s deployment pipeline, there are separate and distinct networks that operate independently of each other for testing before deployment.

-
-
- - - - - -
- - -
-

Goerli testnet 2 is removed. Goerli testnet support will be removed April 11, 2024. Sepolia testnet replaces Goerli testnet.

-
-
-

For more information, including bridge support for Sepolia, see Starknet Goerli Deprecation in the Starknet Dev News newsletter.

-
-
-
- - ------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 1. Current versions supported in each environment
EnvironmentStarknet versionSierra versionCairo version

Mainnet

0.13.1

1.5.0

2.0.0 - 2.6

Sepolia Testnet

0.13.1

1.5.0

2.0.0 - 2.6

Goerli Testnet (deprecated)

0.13.1

1.5.0

2.0.0 - 2.6

-
-
-
-

Starknet v0.13.1

-
-

New features and enhancements

-
-
    -
  • -

    Cheaper data availability: Starknet uses EIP-4844.

    -
  • -
  • -

    Time-related syscalls when called from an account contract’s __validate__ function:

    -
    -
      -
    • -

      timestamp returns the hour, rounded down.

      -
    • -
    • -

      block_number returns the block number, rounded down to the nearest multiple of 100.

      -
    • -
    -
    -
  • -
  • -

    Optimization: Load into memory only the functions in a contract that are actually used when generating the proof.

    -
  • -
-
-

Pricing changes

-

Computation

-
-
    -
  • -

    A Cairo step now costs 0.0025 gas/step, a 50% reduction.

    -
  • -
  • -

    All builtins costs are accordingly reduced by 50%.

    -
  • -
-
-

Calldata and signatures

-
-

Each felt in the calldata and signature arrays of all transaction types now costs 0.128 gas/felt.

-
-

Class declaration

-
-
    -
  • -

    Each felt of a sierra_program in the contract class and of bytecode in the compiled contract class now costs 28 gas/felt.

    -
    - - - - - -
    - - -
    -

    v1 DECLARE transactions only include bytecode.

    -
    -
    -
    -
  • -
  • -

    Each character in the ABI costs 0.875 gas.

    -
  • -
-
-

Events

-
-
    -
  • -

    An additional felt to the data array of an event now costs 0.128 gas/felt, similar to calldata.

    -
  • -
  • -

    An additional felt to the keys array now costs 0.256 gas/felt.

    -
  • -
-
-

API changes:

-
-

Starknet block:

-
-
-
    -
  • -

    New field l1_da_mode, which indicates whether EIP-4844 was used in the block.

    -
  • -
  • -

    eth_l1_gas_price and strk_l1_gas_price were replaced, and the information now contains the data gas price (EIP-4844) in addition to the regular gas price

    -
  • -
  • -

    execution_resources in the transaction receipt now contains:

    -
    -
      -
    • -

      data availability resources

      -
    • -
    • -

      syscall resources, which contribute to the transaction fee but were not included in the receipt before this version.

      -
    • -
    -
    -
  • -
  • -

    transaction_commitment and event_commitment are added to the block. 0 is returned for old blocks.

    -
  • -
-
-

Infrastructure updates

-
-

Starknet now supports multiple L1 providers.

-
-

Additional resources

-
-

Community Forum Posts:

-
- -
-
-
-

Starknet v0.13.0 (Jan 10, 23)

-
-
-

Starknet v0.13.0 is live on Mainnet.

-
-
-

Starknet 0.13.0 includes the following changes:

-
-
-
    -
  • -

    v3 transactions, including:

    -
    -
      -
    • -

      Fee payment in STRK

      -
    • -
    • -

      Reserved fields for future features, such as Volition and payment master

      -
    • -
    -
    -
  • -
  • -

    get_block API: The gas_price field is replaced by the eth_l1_gas_price and strk_l1_gas_price fields. This change applies also to existing blocks. For more information on the new fields, see the JSON RPC API Spec on GitHub

    -
  • -
  • -

    Sierra v1.4.0. This new version of Sierra is part of Crate v2.4.0, in the Cairo 2.4.0 package. For more information, see Cairo v2.4.0 is out! on the Community forum.

    -
  • -
  • -

    Improved performance of secp256k1_mul and secp256r1_mul syscalls

    -
  • -
  • -

    Computation cost is reduced by approximately 50% as a result of reduced Cairo steps and increased use of builtins. L1 data availability cost is reduced by approximately 10%-25%. For an ERC-20 transfer, the DA fee reduction is 25%.

    -
  • -
-
-
-
-
-

Starknet v0.12.3 (Nov 19, 23)

-
-
-

Starknet v0.12.3 is live on Mainnet.

-
-
-

This release partially removes support for the Starknet feeder gateway. For details, see Feeder Gateway Deprecation in Development Proposals on the Starknet community forum.

-
-
-

Additionally, this version includes the following changes:

-
-
-
    -
  • -

    Performance optimizations in the gateway, the computation of the Patricia storage root, and block hash

    -
  • -
  • -

    Support for secp256r1 syscalls in the Starknet OS.

    -
  • -
  • -

    Restriction for __validate__ and the constructor of DeployAccount transactions:

    -
    -
      -
    • -

      Restrict access to sequencer_address in the get_execution_info syscall by returning 0's for the address.

      -
    • -
    • -

      Restrict access to the following syscalls:

      -
      -
        -
      • -

        Cairo contracts: get_block_hash

        -
      • -
      • -

        Cairo 0 contracts: get_sequencer_address

        -
      • -
      -
      -
    • -
    -
    -
  • -
-
-
-

This version is available on both Goerli and Sepolia testnets.

-
-

Cairo 0

-
-

Move structs that are common to secp256k1 and secp256r1 to a separate file.

-
-
-
-
-

Starknet v0.12.2 (Sep 04, 23)

-
-
-

Starknet v0.12.2 is live on Mainnet.

-
-
-

This version includes the following changes:

-
-
-
    -
  • -

    Enabling P2P Authentication: An additional endpoint in the sequencer gateway to provide a signature on the state diff commitment and block hash.

    -
  • -
  • -

    Resolving Mismatches in Queries: An extension to the get_state_update endpoint in the sequencer gateway that returns both the pending state diff and the pending block together.

    -
  • -
  • -

    Increased maximum Cairo steps per transaction from 1 million to 3 million.

    -
  • -
-
-
-
-
-

Starknet v0.12.1 (Aug 21, 23)

-
-
-

Starknet v0.12.1 is live on Mainnet.

-
-
-

This version includes the following changes:

-
-
-
    -
  • -

    Mempool Validation.

    -
  • -
  • -

    Inclusion of Failed Transactions.

    -
  • -
  • -

    Keccak builtin.

    -
  • -
-
-
-
-
-

Starknet v0.12.0 (July 12, 23)

-
-
-

Starknet v0.12.0 is live on Mainnet.

-
-
-

This version contains the following changes:

-
-
-
    -
  • -

    Use the rust blockifier and LambdaClass’s Cairo VM to accelerate the sequencer’s time to handle transactions.

    -
  • -
  • -

    Support version 2.0.0 of the Cairo compiler.

    -
  • -
  • -

    Replace the PENDING status of transactions to ACCEPTED_ON_L2 - once a transaction is in that status it means that it will be included in a block, this applies to transactions - blocks still have the PENDING status.

    -
  • -
  • -

    Add an experimental get_block_hash syscall.

    -
  • -
  • -

    Change HTTP error code from 500 to 400 on API errors.

    -
  • -
-
-
-
-
-

Starknet v0.11.2 (May 31, 23)

-
-
-

Starknet v0.11.2 is live on Mainnet.

-
-
-

This version contains the following changes:

-
-
-
    -
  • -

    Upgrade Cairo 1.0 version to v1.0.0-rc0 (Cairo 1.0 activated on Starknet!)

    -
  • -
-
-
-
-
-

Starknet v0.11.1 (May 23, 23)

-
-
-

Starknet v0.11.1 is live on Mainnet.

-
-
-

This version contains the following changes:

-
-
-
    -
  • -

    Upgrade Cairo 1.0 version to v1.0.0-rc0.

    -
  • -
  • -

    Charged transaction fee is now based on an average Ethereum gas price instead of a single sample -(estimation API is unaffected).

    -
  • -
  • -

    API changes:

    -
    -
      -
    • -

      Remove the state root in get_state_update for pending blocks to allow faster responses -in future versions.

      -
    • -
    -
    -
  • -
  • -

    Testing framework:

    -
    -
      -
    • -

      Allow declaring (and interacting with) Cairo 1.0 contracts.

      -
      -
        -
      • -

        Currently, the Cairo 1.0 ABI is not supported yet, so a Cairo 0 ABI should be supplied to -declare() manually.

        -
      • -
      -
      -
    • -
    • -

      Split deploy() to two phases declare and deploy: deprecated_declare() (for Cairo 0 contract) or -declare() (for Cairo 1.0 contracts) and deploy() (for both).

      -
    • -
    -
    -
  • -
  • -

    Add current block hash to the Starknet Core Contract (currently not verified by the Starknet OS):

    -
    -
      -
    • -

      Breaking change: The LogStateUpdate event’s data is changed to include blockHash.

      -
    • -
    -
    -
  • -
-
-
-
-
-

Starknet v0.11.0 (Mar 29, 23)

-
-
-

Starknet v0.11.0 is live on Mainnet.

-
-
- - - - - -
- - -
-

invoke and declare transactions of version 0 are no longer supported on this version.

-
-
-
-
-

In Starknet v0.11.0, you can declare, deploy and run Cairo 1.0 smart contracts. We also introduce a new system call that allows a smooth transitioning of existing contracts to a Cairo 1.0 implementation.

-
-
-

Historically, contract classes have been defined in terms of Cairo assembly, or Casm for short (the class definition also included more information needed for execution, e.g., hint data). The novelty of Cairo 1.0 is the introduction of Sierra (Safe Intermediate Representation), an intermediate layer between Cairo 1.0 and Casm.

-
-
-

The introduction of Cairo 1.0 and Sierra has several effects on the system. Below we list the effects on each component; of particular note are:

-
-
-
    -
  • -

    A new version of the declare transaction, which allows sending the new class structure

    -
  • -
  • -

    The state commitment will now include contract classes

    -
  • -
  • -

    Changes to the onchain data format

    -
  • -
  • -

    New system call - replace_class

    -
  • -
-
-
-
-
-

Starknet v0.10.3 (Dec 12, 22)

-
-
- - - - - -
- - -
-

The deploy transaction is no longer supported on this version.

-
-
-
-
-

This version contains the following changes:

-
-
-

Starknet

-
-
-
    -
  • -

    Performance - Separate the state commitment computation from the execution of the transactions

    -
  • -
  • -

    Add starknet-class-hash command to compute the class hash of a compiled Starknet contract

    -
  • -
-
-
-

Cairo:

-
-
-
    -
  • -

    Autoformatter: Automatically break lines inside expressions

    -
  • -
-
-
-
-
-

Starknet v0.10.2 (Nov 29, 22)

-
-
-
    -
  • -

    This version introduces sequencer parallelization! This is the first step in our roadmap of performance upgrades. Details about the specific mechanism of parallelization and the roadmap in general are described in this medium post.

    -
  • -
  • -

    A new endpoint, estimate_fee_bulk, is added to the feeder gateway. This will allow estimating the fee of several transactions at once, where each transaction is executed relative to the resulting state from applying the previous one.

    -
    -
      -
    • -

      Sequencing performance improvements

      -
    • -
    • -

      Builtin ratio changes, which affects builtin costs

      -
    • -
    • -

      Add estimate_fee_bulk API that computes the fee of multiple transactions that will be executed consecutively

      -
    • -
    -
    -
  • -
-
-
-

As part of this version, we will also increase the finality of transactions in the pending block, by fixing the timestamp at the time of the block creation. This will solve the issue of transactions moving from pending to rejected on account of too old timestamp

-
-
-
-
-

Starknet v0.10.1 (Oct 25, 22)

-
-
-

This version contains the following changes:

-
-
-

Starknet:

-
-
-
    -
  • -

    Add DeployAccount transaction (which will replace the Deploy transaction for deploying account contracts). To use it, you should first add enough funds to your account address to pay the transaction fee, and then you can invoke DeployAccount

    -
  • -
  • -

    Split the starknet deploy_account CLI command into starknet new_account and starknet deploy_account

    -
  • -
  • -

    Account contracts that are expected to be deployed this way should implement the`validate_deploy()` entry point, which should check the signature of the DeployAccount transaction

    -
  • -
  • -

    Improve L1 fee computation: the fee is computed according to the diff of the storage state

    -
  • -
  • -

    API: Remove entry_point_type field from transaction information

    -
  • -
-
-
-

Cairo:

-
-
-
    -
  • -

    Add uint256_mul_div_mod to uint256.cairo

    -
  • -
-
-
-
-
-

Starknet v0.10.0 (Sept 05, 22)

-
-
-

This version introduces the next step in Starknet’s account abstraction design, specifically the validate/execute separation. See here for more information.

-
-
-

This version contains the following changes:

-
-
-

Starknet:

-
-
-
    -
  • -

    Contract (breaking changes):

    -
    -
      -
    • -

      @external and @view functions should be imported directly by the main compiled file. Otherwise, they will not be usable as external functions

      -
    • -
    • -

      Forbid using the same storage variable name in two modules

      -
    • -
    -
    -
  • -
  • -

    New transaction version (version 1) for invoke and declare transactions:

    -
    -
      -
    • -

      Transactions of version 0 are deprecated and will not be supported in Starknet from the next version (v0.11.0). Please update your systems to use the new version

      -
    • -
    -
    -
  • -
-
-
- - - - - -
- - -
-

In order to use transactions of version 1 you will need to upgrade your account contracts

-
-
-
-
-
    -
  • -

    Add nonce field to the transactions. Nonce validation is now part of the Starknet protocol and is enforced to be executed sequentially

    -
  • -
  • -

    Invoke:

    -
    -
      -
    • -

      Split execute to two functions:` validate` (only validates the transaction) and execute (only executes the transaction)

      -
    • -
    • -

      Remove the selector (which is now always execute) field, following the above change.

      -
    • -
    -
    -
  • -
  • -

    Declare:

    -
    -
      -
    • -

      declare transaction should now be sent from an account (and is validated using validate_declare in the account contract)

      -
      -
        -
      • -

        Support fee for sending L1 messages. At this point, it’s not mandatory and messages with no fee will still be handled. Starting from the next version it will become mandatory.

        -
      • -
      -
      -
    • -
    -
    -
  • -
-
-
-

Cairo:

-
-
-

Syntax changes in Cairo (to make it more similar to rust and C++):

-
-
-
    -
  • -

    You can use the cairo-migrate script to convert old code to the new syntax. Use the -i flag to apply the changes to the files

    -
  • -
  • -

    End statements with ;

    -
  • -
-
-
- - - - - -
- - -
-

New lines are still part of the language at this point, and you cannot put more than one instruction per line. This will change in Cairo1.0.

-
-
-
-
-
    -
  • -

    Use { … } for code blocks (instead of : and end)

    -
  • -
  • -

    Add () around the condition of if statements

    -
  • -
  • -

    Remove the member keyword in structs

    -
  • -
  • -

    Change comment to use // instead of #

    -
  • -
  • -

    Use …​, ap` instead of `...; ap in low level Cairo code

    -
  • -
  • -

    Support return types that are not tuples. For example, func foo() → felt (instead of func foo() → (r: felt)) -As a result, it’s now mandatory to specify return types. func foo() → (res) should be replaced by func foo() → (res: felt). The cairo-migrate tool does that automatically.

    -
  • -
  • -

    Return statement accepts expressions, rather than only tuples. For example, you can write let x = (5,); return x;

    -
  • -
  • -

    A few standard library functions were changed to return felt. The cairo-migrate script also fixes calls to those functions

    -
  • -
  • -

    Support using functions as expressions

    -
  • -
  • -

    This only applies to functions with → felt signature`, whose ap change is known at compile-time (e.g., recursive functions cannot be used this way)

    -
  • -
  • -

    Fix a bug in the secp signature verification code that allowed a malicious prover to ignore the value of v (this does not let the prover fake a signature, but allows it to claim that a valid signature is invalid).

    -
  • -
  • -

    Add Cairo code for the recursive STARK verifier

    -
  • -
-
-
-

Technical changes: -* Move from python3.7 to python3.9

-
-
-
-
-

Starknet v0.9.1 (July 20, 22)

-
-
-

This version contains the following changes:

-
-
-

Starknet:

-
-
-

API changes:

-
-
-
    -
  • -

    Add get_block_traces API - returns all the transaction traces of a given block

    -
  • -
  • -

    Add a list of declared contracts in get_state_update

    -
  • -
  • -

    Add a 0x prefix for class hash in the API

    -
  • -
  • -

    Add starknet_version field for blocks (only applies to new blocks)

    -
  • -
-
-
-

Starknet CLI:

-
-
-
    -
  • -

    Change the default block number to pending

    -
  • -
  • -

    Using a wallet is the default, --no_wallet must be specified explicitly to override this

    -
  • -
  • -

    Deploying contracts:

    -
    -
      -
    • -

      Add deploy_contract function to the account contract created by starknet deploy_account

      -
    • -
    • -

      Use this function to deploy contract (unless using --no_wallet). In particular, deploy should be used after declaring the contract (it expects the contract class hash)

      -
    • -
    -
    -
  • -
  • -

    Support --dry_run to get the transaction information without signing or sending it

    -
  • -
  • -

    Support deploy_from_zero in the deploy syscall to deploy a contract to an address that does not depend on the deployer

    -
  • -
-
-
-

Cairo: -* Support and in if statements (if x == y and z == w).

-
-
- - - - - -
- - -
-

At the moment other boolean combinations are not supported

-
-
-
-
-
-
-

Starknet v0.9.0 (June 06, 22)

-
-
-

This version introduces the contract class/instance paradigm into Starknet. See here for more information.

-
-
-

This version contains the following changes:

-
-
-

Starknet:

-
-
-
    -
  • -

    Enforce fees - max_fee must not be set to zero, and selector must be execute

    -
  • -
  • -

    Split the concepts of contract class and contract instance.

    -
  • -
  • -

    Add declare transaction type

    -
  • -
  • -

    New API and CLI commands:

    -
  • -
  • -

    declare - Declares a contract class

    -
  • -
  • -

    get_class_by_hash - Returns the contract class given its hash

    -
  • -
  • -

    get_class_hash_at - Returns the class hash for a given contract instance address

    -
  • -
  • -

    Rename delegate_call to library_call, and change the contract address argument to class hash.

    -
  • -
  • -

    Add a deploy system call.

    -
  • -
  • -

    Rename ContractDefinition to ContractClass

    -
  • -
  • -

    Reduce the compiled contract file’s size by removing unnecessary identifiers (this optimization can be disabled using --dont_filter_identifiers)

    -
  • -
-
-
-

Cairo:

-
-
-
    -
  • -

    Initial support for the EC-op builtin (scalar multiplication over the STARK curve). Not supported in Starknet yet.

    -
  • -
  • -

    Add additional helper methods to blake2s.cairo, including big-endian support

    -
  • -
-
-
-

Technical changes: -* Change function’s return type from a struct to a named tuple. In particular, foo.Return.SIZE is no longer supported.

-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/tools/api-services/index.html b/pr-1195/documentation/tools/api-services/index.html deleted file mode 100644 index f65a5cef89..0000000000 --- a/pr-1195/documentation/tools/api-services/index.html +++ /dev/null @@ -1,1077 +0,0 @@ - - - - - - Full nodes and API services :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Full nodes and API services

-
-

A list of recommended full-nodes, open API endpoints, and API providers.

-
-
-

For complete information on the Starknet Node API in JSON RPC format, see starknet_api_openrpc.json on GitHub.

-
- - ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 1. API providers
ProviderOpen API endpoint, where relevantVersion support, where relevant

Alchemy

Starknet API FAQ

All That Node

Blast API

https://blastapi.io/public-api/starknet

BlockPI

https://starknet.blockpi.network/v1/rpc/public

Chainbase

Chainstack

DRPC

https://drpc.org/public-endpoints/starknet

Dwellir

https://www.dwellir.com/networks/starknet

GetBlock

Use the /rpc/vX_Y suffix, as explained in JSON-RPC API in Pathfinder’s README.

Infura

Lava Protocol

https://www.lavanet.xyz/get-started/starknet

Nethermind

https://data.voyager.online

NOWNodes

Reddio

-
- - ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 2. Node providers
Provider nameDescriptionMore information

Deoxys

A Starknet full-node written in Rust and powered by Substrate by Kasar

github.com/kasarlabs/deoxys

Juno

A Starknet full-node written in go-lang by Nethermind

github.com/NethermindEth/juno

Papyrus

A Starknet full-node written in Rust by StarkWare

github.com/starkware-libs/papyrus

Pathfinder

A Starknet full-node written in Rust by Equilibrium

github.com/eqlabs/pathfinder

- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/tools/audit/index.html b/pr-1195/documentation/tools/audit/index.html deleted file mode 100644 index 7136feba83..0000000000 --- a/pr-1195/documentation/tools/audit/index.html +++ /dev/null @@ -1,1008 +0,0 @@ - - - - - - Audit providers :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Audit providers

-
-

Building a Starknet project and want your contract to be audited?

-
-
-

The companies listed below have designated teams that provide auditing services to Starknet -contracts.

-
- - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 1. A list of companies providing contract audits for Starknet
Company nameURL

ABDK

www.abdk.consulting

Beosin

beosin.com

Chain Security

chainsecurity.com

Consensys Diligence

consensys.net/diligence

Extropy

security.extropy.io

Nethermind

nethermind.io

Open Zeppelin

www.openzeppelin.com

OtterSec

osec.io

PeckShield

peckshield.com

Trail of Bits

www.trailofbits.com

Zellic

www.zellic.io

Ginger Security

gingersec.xyz

- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/tools/bridged_tokens/index.html b/pr-1195/documentation/tools/bridged_tokens/index.html deleted file mode 100644 index 5873b7f83e..0000000000 --- a/pr-1195/documentation/tools/bridged_tokens/index.html +++ /dev/null @@ -1,1040 +0,0 @@ - - - - - - Bridged tokens :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Bridged tokens

-
-

The tokens that are currently bridged to Starknet are listed in the following .json files:

-
-
- ---- - - - - - - - - - - - - -
-mainnet.json - -

The addresses of the tokens currently bridged to Starknet Mainnet.

-
-goerli.json - -

The addresses of the tokens currently bridged to Starknet Goerli testnet.

-
-sepolia.json - -

The addresses of the tokens currently bridged to Starknet Sepolia testnet.

-
-
-
-

Each token has the following parameters:

-
-
- ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-name - -

Token name.

-
-symbol - -

Token symbol.

-
-decimals - -

Number of decimal places used to get the user representation.

-
-l1_token_address - -

Address of the L1 ERC-20 contract.

-
-l2_token_address - -

Address of the L2 ERC-20 contract.

-
-l1_bridge_address - -

Address of the L1 bridge contract.

-
-l2_bridge_address - -

Address of the L2 bridge contract.

-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/tools/dai_token_migration/index.html b/pr-1195/documentation/tools/dai_token_migration/index.html deleted file mode 100644 index b4852b8387..0000000000 --- a/pr-1195/documentation/tools/dai_token_migration/index.html +++ /dev/null @@ -1,994 +0,0 @@ - - - - - - Migrating DAI v0 to DAI :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Migrating DAI v0 to DAI

-
-

Following Maker DAO’s announcement on Jan 25th, StarkWare launched a new DAI contract and bridge on Starknet.

-
-
-

The new DAI token and bridge are a part of StarkGate and compatible with StarkGate 2.0 features.

-
-
-

You can withdraw old DAI tokens (DAI v0) without any limitation. Depositing using the DAI v0 bridge are disabled. You are encouraged to migrate to the new DAI token. You can use swap services on Starknet to swap DAI v0 for DAI.

-
-
-

Maker DAO’s DAI token on Starknet is written in Cairo0 and is not upgradeable. Without upgradability, it cannot support StarkGate’s latest features, such as Smart Deposits and Withdrawal Limits, and over time it will stop being compatible with Starknet altogether (Regenesis). This means that a transition plan is necessary.

-
-
-

On January 25th, StarkWare launched a new set of DAI bridge and token contracts under StarkGate, written in Cairo. This new DAI token will retain the same contract ’symbol’ and ’name’ as the existing one. To differentiate between the two on Apps and other UIs, we refer to the old DAI as “DAI v0” and the new DAI simply as “DAI.”

-
-
-
Procedure
-

Use one of the following methods:

-
-
-
    -
  • -

    Use StarkGate:

    -
    -
      -
    1. -

      Withdraw your current DAI (DAI v0) to L1 using StarkGate

      -
    2. -
    3. -

      Re-deposit your L1 DAI using StarkGate.

      -
      -

      StarkGate automatically issues the new DAI.

      -
      -
    4. -
    -
    -
  • -
  • -

    Swap your DAI v0 for DAI using an L2 swap app or aggregator within the Starknet ecosystem, such as the following:

    -
    - -
    -
  • -
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/tools/devtools/index.html b/pr-1195/documentation/tools/devtools/index.html deleted file mode 100644 index a6bcc571c4..0000000000 --- a/pr-1195/documentation/tools/devtools/index.html +++ /dev/null @@ -1,1408 +0,0 @@ - - - - - - Starknet developer tools :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Starknet developer tools

-
-
-
-

While Starknet is a blockchain, it is different from blockchains built on the model of the Ethereum virtual machine (EVM), and so it requires many of its own developer tools. The tools discussed here are being developed in coordination with StarkWare, and in some cases have received grants from StarkWare or the Starknet Foundation in order to make the development process as friendly as possible, with improvements happening all the time.

-
-
-

While originally the stack of Starknet development tools was based mostly on Python, tool developers are moving towards building with Rust.

-
-
-

See Tools for each stage of development below to understand where each tool fits in the development process.

-
-
- - - - - -
- - -
-

The tools listed here do not represent all that are available.

-
-
-
-
-
-image$tools workflow -
-
Figure 1. Tools for each stage of development
-
-
-
-
-

Starkli

-
-

What is it?

-
-

Starkli, pronounced Stark-lie, is a fast command-line interface that replaces the legacy starknet-CLI. Starkli is a standalone interface, that is, you can use it on its own, rather than as a component of another tool. If you’re not actually developing on Starknet and just want to interact, such as by sending transactions, then a standalone CLI might be more appropriate than an interface such as Cast, which is an integrated component of the Foundry development environment.

-
-

Who maintains it?

-
-

Starknet community contributor Jonathan Lei, the co-founder and CTO of zkLend.

-
-

Why should you care?

-
-

Starkli is a Starknet CLI similar to cairo-lang but written in Rust. It’s easier to install and to navigate, and has no dependencies. The tool supports Braavos and Argent X smart wallets, and has embedded support for RPC endpoints.

-
-
-

Starkli includes standard CLI functionality, such as the following:

-
-
-
    -
  • -

    Deploying accounts.

    -
  • -
  • -

    Interacting with contracts.

    -
  • -
  • -

    Getting Starknet data, such as information about blocks, transactions, and more.

    -
  • -
-
-
-

Starkli also includes the following features:

-
-
-
    -
  • -

    Compute class hashes from the Cairo file that defines the class.

    -
  • -
  • -

    Compute a function’s selector.

    -
  • -
  • -

    Encode messages.

    -
  • -
  • -

    Auto-completion.

    -
  • -
  • -

    Useful help commands.

    -
  • -
  • -

    The ability to make multi-calls.

    -
  • -
-
-

Where do you get it?

-
- -
-
-
-
-

SDKs: A window into Starknet

-
-
-

A Software Development Kit (SDK) is a library that abstracts the complexities of Starknet when building transactions and interacting with the blockchain, including the following:

-
-
-
    -
  • -

    Read and write API calls, using both the JSON-RPC and the Feeder gateway API.

    -
  • -
  • -

    Account creation.

    -
  • -
  • -

    Cryptography: Signature verification and signing, computing hashes used by Starknet.

    -
  • -
  • -

    Contract interactions: ABI import, constructing transactions.

    -
  • -
-
-
-

There are several SDKs for various languages, so you can choose the SDK according to your preferred language.

-
- ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SDK nameLanguageUsed byMaintainerWhere to get it

Starknet.js

-

JavaScript, TypeScript

-

Dapps, Wallets

SpaceShard

starknet.js Github repository

Starknet.py

Python

Useful scripts

Software Mansion (SWM)

starknet.py Github repository

Starknet-rs

Rust

Starkli, Foundry

Jonathan Lei

starknet-rs Github repository

Starknet-go

Go

Chainlink

Nethermind

starknet-go Github repository

-
-
-
-

starknet-devnet, starknet-devnet-rs

-
-

What is it?

-
-

A devnet is a Starknet instance that you run as a local node, which enables much quicker development than is possible using testnet, as well as providing privacy prior to launching on testnet.

-
-
-

SpaceShard originally wrote starknet-devnet in Python, but they are now actively developing a version in Rust, starknet-devnet-rs. For now, the Python-based version is more feature-rich, with the most notable feature being the ability to fork the network at a given block, so if that’s important to you, then you need to use the Python-based version. However, starknet-devnet-rs runs more quickly, and the developers are working to bring it to feature parity with the Python-based starknet-devnet.

-
-
-

starknet-devnet-rs is the only version that is receiving new features.

-
-

Who maintains it?

-
-

SpaceShard

-
-

Why should you care?

-
-

starknet-devnet and starknet-devnet-rs include some accounts that are already funded with an ERC-20 token that can be used to pay fees. The ERC-20 contract that defines this token is also included.

-
-
-

With starknet-devnet and starknet-devnet-rs You can do the following:

-
-
-
    -
  • -

    Create mock accounts.

    -
  • -
  • -

    Send transactions using pre-deployed, pre-funded accounts, which are included.

    -
  • -
  • -

    Test tools.

    -
  • -
  • -

    Test RPC requests.

    -
  • -
  • -

    Deploy new contracts using an included Universal Deployer Contract (UDC).

    -
  • -
-
-

Where do you get it?

- -
-
-
-

Katana

-
-

What is it?

-
-

Katana, developed by the Dojo team, is an extremely fast devnet designed to support local development with Dojo, which is a gaming engine for Starknet. You can use Katana as a general purpose devnet as well. Katana lets developers test applications locally using the Katana network to test the transactions being sent during the game.

-
-
-
    -
  • -

    Katana provides convenient RPC methods that you can use to change the network’s configuration as needed. For example, you can change the block time or allow zero-fee transactions.

    -
  • -
  • -

    Katana supports version v0.3.0 of the Starknet JSON-RPC specifications, the latest version as of June 2023. Katana lets you use native Starknet JSON calls, such as starknet_getTransactionReceipt, starknet_getStorageAt.

    -
  • -
-
-

Where do you get it?

-
-

Katana in the Dojo documentation includes information on installing and using Katana.

-
-
-
-
-

Scarb: The Cairo package manager

-
-

What is it?

-
-

The official package manager for Starknet.

-
-

Who maintains it?

-
-

Software Mansion

-
-

Why should you care?

-
-

It makes life easier in the following ways:

-
-
-
    -
  • -

    When installing Cairo packages, it handles adding, updating, and removing dependencies.

    -
  • -
  • -

    You can use it to compile smart contracts.

    -
  • -
  • -

    When creating your own Cairo package, it takes care of patching any libraries you need from Github, and lets you know if there’s a version mismatch. You can then use it to build and test your project, using the Cairo test runner. Building is quite fast.

    -
  • -
  • -

    It includes the Cairo compiler, built-in, so unless you’re actually a compiler developer, you don’t need to set up any extra tooling.

    -
  • -
  • -

    It includes a bundled binary of the Cairo language server, which you can use

    -
  • -
  • -

    It works well with other tools in the Cairo ecosystem, such as Foundry and Dojo.

    -
  • -
-
-

Where do you get it?

- -
-
-
-

Starknet Foundry

-
-

What is it?

-
-

Starknet Foundry is a toolchain for developing Starknet smart contracts. It helps with writing, deploying, and testing your smart contracts.

-
-

Who maintains it?

-
-

Software Mansion

-
-

Why should you care?

-
-

Starknet Foundry includes the following features:

-
-
-
    -
  • -

    Forge, a fast testing framework. Forge achieves performance comparable to the Cairo Test Runner with a better user experience. You can test standalone functions in your smart contracts and embed complex deployment flows.

    -
  • -
  • -

    Support for prints in contracts. According to the documentation, the debugging features will follow the addition of support in the Starknet compiler.

    -
  • -
  • -

    The online Foundry Book, with lots of helpful information and guidance in writing and running tests and interacting with Starknet.

    -
  • -
  • -

    Integrated compiling and dependency management, using Scarb.

    -
  • -
  • -

    Cast, which the documentation refers to by its command name, sncast. Cast is an integrated CLI specifically designed for performing Starknet RPC calls, sending transactions and getting Starknet chain data. You can use Cast to declare, deploy, and interact with contracts using the Starknet JSON-RPC.

    -
  • -
-
-

Where do you get it?

- -
-
-
-

Hardhat (with a plugin)

-
-

What is it?

-
-

A tool primarily for testing Cairo code. You can also deploy contracts using scripts in JavaScript.

-
-

Who maintains it?

-
-

SpaceShard

-
-

Why should you care?

-
-

Hardhat is a popular JavaScript development environment for Ethereum, and if you are already familiar with it and want to use it on Starknet, then this plugin can come in handy. You can run Starknet commands as tasks in Hardhat, such as compiling a Cairo contract.

-
-
-

Hardhat is integrated with a local devnet, so you only need to worry about writing your tests, in JavaScript, of course.

-
-

Where do you get it?

-
- -
-
-
-
-

The Starknet Remix plugin

-
-

What is it?

-
-

Remix is a browser-based integrated development environment (IDE) for Ethereum that you can use for learning, experimenting and finding vulnerabilities in smart contracts, without installing anything. The Starknet Remix plugin lets you use Remix for testing Starknet smart contracts, so you can focus on learning Cairo and Starknet without the distraction of setting up a toolchain.

-
-

Who maintains it?

-
-

Nethermind

-
-

Why should you care?

-
-

Remix and the Starknet Remix plugin include the following features:

-
-
-
    -
  • -

    Integrated compiling.

    -
  • -
  • -

    You can deploy contracts on any devnet, including the plugin’s own integrated devnet.

    -
  • -
  • -

    You can also deploy on testnet or Mainnet.

    -
  • -
  • -

    You can call functions of contracts that you have already deployed, to facilitate testing and interaction.

    -
  • -
  • -

    Seamless integration with Scarb.

    -
  • -
  • -

    Integration with block explorers such as Voyager, so you can easily check the execution of your transactions, in real time.

    -
  • -
  • -

    The Starknet Remix Plugin is integrated with Starknet By Example, a rich repository of practical learning content.

    -
  • -
-
-
-

For more information on the Starknet Remix plugin, see Unlocking Onboarding to Starknet: An Overview of the Starknet Remix Plugin.

-
-

Where do you get it?

-
-

Get started with Remix at the Remix Project site.

-
-
-

Get started with the Starknet Remix plugin at the Starknet Remix plugin’s Github repo.

-
-
-
-
-

The Visual Studio Code Cairo extension

-
-

What is it?

-
-

An extension for the Microsoft Visual Studio Code IDE that provides assistance when writing Cairo smart contracts, by using the Cairo Language Server.

-
-

Who maintains it?

-
-

StarkWare

-
-

Why should you care?

-
-

Features include:

-
-
-
    -
  • -

    Compiler support for Cairo files.

    -
  • -
  • -

    Live diagnostic highlighting for compile errors.

    -
  • -
  • -

    Quick fixes with suggestions.

    -
  • -
  • -

    Go to definitions for imports.

    -
  • -
  • -

    Code completion for imports.

    -
  • -
-
-

Where do you get it?

- -
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/tools/important_addresses/index.html b/pr-1195/documentation/tools/important_addresses/index.html deleted file mode 100644 index 512d7cb7f2..0000000000 --- a/pr-1195/documentation/tools/important_addresses/index.html +++ /dev/null @@ -1,1142 +0,0 @@ - - - - - - Starknet contract and sequencer addresses :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Starknet contract and sequencer addresses

-
-
-
- - - - - -
- - -
-

Goerli testnet 2 is removed. Goerli testnet support will be removed April 11, 2024. Sepolia testnet replaces Goerli testnet.

-
-
-

For more information, including bridge support for Sepolia, see Starknet Goerli Deprecation in the Starknet Dev News newsletter.

-
-
-
-
-
-
-

Starknet on Mainnet

-
-
- ---- - - - - - - - - - - - - -
-The Starknet Core Contract - -

0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4

-
-Verifier address - -

0x47312450B3Ac8b5b8e247a6bB6d523e7605bDb60

-
-Sequencer base URL for API routing - -

https://alpha-mainnet.starknet.io

-
-
-
-
-
-

Starknet version on Goerli testnet

-
-
- ---- - - - - - - - - - - - - -
-The Starknet Core Contract - -

0xde29d060D45901Fb19ED6C6e959EB22d8626708e

-
-Verifier address - -

0x8f97970aC5a9aa8D130d35146F5b59c4aef57963

-
-Sequencer base URL for API routing - -

https://alpha4.starknet.io

-
-
-
-
-
-

Starknet version on Sepolia testnet

-
-
- ---- - - - - - - - - - - - - -
-The Starknet Core Contract - -

0xE2Bb56ee936fd6433DC0F6e7e3b8365C906AA057

-
-Verifier address - -

0x07ec0D28e50322Eb0C159B9090ecF3aeA8346DFe

-
-Sequencer base URL for API routing - -

https://alpha-sepolia.starknet.io

-
-
-
-
-
-

Starknet fee tokens

-
-
-

The Starknet fee tokens are STRK and ETH.

-
-
- ---- - - - - - - - - -
-L2 STRK address (Mainnet and testnet) - -

0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d

-
-L2 ETH address (Mainnet and testnet) - -

0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7

-
-
-
-
-
-

Starknet voting token

-
-
-

The Starknet voting token is vSTRK. For information on vSTRK, see vSTRK overview on the Starknet Governance Hub.

-
- -
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/tools/limits_and_triggers/index.html b/pr-1195/documentation/tools/limits_and_triggers/index.html deleted file mode 100644 index ef59a3d3a7..0000000000 --- a/pr-1195/documentation/tools/limits_and_triggers/index.html +++ /dev/null @@ -1,1052 +0,0 @@ - - - - - - Current limits :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Current limits

-
-

Starknet currently has a number of limits in place in order to keep the network stable and optimized for the best performance.

-
-
- - - - - -
- - -
-

These are subject to revisions and change on a regular basis

-
-
-
- - ------- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 1. Starknet current limits and triggers
EntityDescriptionSepoliaGoerli (deprecated)Mainnet

Block time

The maximum amount of time within which a pending block is closed, if no other limit is met.

4 minutes

4 minutes

4 minutes

Block limit (Cairo steps)

The maximum number of Cairo steps that can be completed -within each block to ensure block production times remain consistent and predictable.

28,000,000

28,000,000

28,000,000

Block limit (gas)

Certain Starknet operations, such as sending messages between L1 and L2, consume Ethereum gas. The current L1 state update -mechanism involves an Ethereum transaction for each Starknet block.

-

The gas limit for Starknet blocks is therefore inherited from the gas limit for Ethereum blocks.

5,000,000

5,000,000

5,000,000

Max transaction size (Cairo steps)

The maximum number of computational steps, measured in Cairo steps, that a transaction can contain when processed on the Starknet network. -This limit is important for ensuring the efficient execution of transactions and preventing potential congestion.

3,000,000

3,000,000

3,000,000

Max Cairo steps for validate

The maximum number of computational steps, measured in Cairo steps, for a validate function.

1,000,000

1,000,000

1,000,000

Max contract bytecode size (Number of felts in the program)

The maximum size of the bytecode or program that a smart contract can have on Starknet.

-

Bytecode is the low-level code that comprises smart contracts. Limiting this size helps manage the complexity of contracts and the overall efficiency of the network.

81,290

81,290

81,290

Max contract class size

The maximum size for a contract class within Starknet.

-

Contract classes are a fundamental building block for smart contracts, and limiting their size can have implications for the network’s scalability and security.

4,089,446 bytes

4,089,446 bytes

4,089,446 bytes

IP address limits (read/write)

In order to reduce network spam, Starknet limits the amount of contract reads and writes that a single IP -address can make.

200 per min per IP address

200 per min per IP address

200 per min per IP address

Signature length (felts)

4,000

4,000

4,000

Calldata length (felts)

4,000

4,000

4,000

- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/tools/ref_block_explorers/index.html b/pr-1195/documentation/tools/ref_block_explorers/index.html deleted file mode 100644 index bbbe3c99da..0000000000 --- a/pr-1195/documentation/tools/ref_block_explorers/index.html +++ /dev/null @@ -1,979 +0,0 @@ - - - - - - Block explorers :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Block explorers

-
-

A block explorer, or blockchain explorer, enables you to see transactions, blockchain metrics and other information.

-
-
-

The following block explorers provide information on Starknet.

-
- - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 1. Starknet block explorers, in alphabetical order
Block explorer nameURL

Starkscan

https://starkscan.co

ViewBlock

https://viewblock.io/starknet

Voyager

https://voyager.online

oklink

https://www.oklink.com/starknet

NFTScan (NFT explorer)

https://starknet.nftscan.com/

- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/tools/starkgate-adding_a_token/index.html b/pr-1195/documentation/tools/starkgate-adding_a_token/index.html deleted file mode 100644 index 09f9450075..0000000000 --- a/pr-1195/documentation/tools/starkgate-adding_a_token/index.html +++ /dev/null @@ -1,1022 +0,0 @@ - - - - - - Adding a token to StarkGate :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Adding a token to StarkGate

-
-
-
-

StarkGate supports permissionless bridging.

-
-
-

To permissionlessly add support for an ERC-20 token, use the enrollTokenBridge function. You can access this function using a block explorer or a CLI.

-
-
- - - - - -
- - -
-

Enrolling a new bridge does not add it to the StarkGate GUI. You can use a block explorer to use the newly created bridge.

-
-
-
-
-

When you enroll a new ERC-20 token, StarkGate does the following:

-
-
-
    -
  1. -

    Adds bridge functionality for that token on L1 using the StarknetTokenBridge.sol contract.

    -
  2. -
  3. -

    Adds bridge functionality for that token on L2 using the token_bridge.cairo class.

    -
  4. -
  5. -

    Creates a new ERC-20 token contract on L2 based on a standard ERC-20 contract class. Each new contract uses the class hash of this contract class to identify its inheritance.

    -
    - - - - - -
    - - -
    -

    When the code of token_bridge.cairo is updated, its class hash changes. However,any existing contract continues to refer to the previous class hash. Any new contracts use the new class hash.

    -
    -
    -
    -
  6. -
-
-
-

Be aware of the following:

-
-
-
    -
  • -

    The L2 ERC-20 contract is a standard contract, so it is not recommended to add tokens with non-standard behavior, such as inflationary tokens.

    -
  • -
  • -

    Adding a token that requires a customized bridging mechanism or a non-standard ERC-20 contract on L2 is currently not permissionless, and can be done only by the StarkWare team. Please contact StarkWare at support@starknetcommunity.io.

    -
  • -
-
-
-
-
-

Additional resources

-
-
- -
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/tools/starkgate-automated_actions_with_bridging/index.html b/pr-1195/documentation/tools/starkgate-automated_actions_with_bridging/index.html deleted file mode 100644 index 2e14a8eeb0..0000000000 --- a/pr-1195/documentation/tools/starkgate-automated_actions_with_bridging/index.html +++ /dev/null @@ -1,980 +0,0 @@ - - - - - - Performing a Smart Deposit :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Performing a Smart Deposit

-
-

A Smart Deposit is a deposit that moves funds from L1 to L2 and then triggers subsequent actions. For example, a user can deposit funds and transfer those funds to another recipient, such as an exchange.

-
-
-

The depositWithMessage function enables a Smart Deposit. depositWithMessage is similar to the deposit function, with an additional 256-bit message, which can contain instructions for executing additional actions.

-
-
-

Upon completion, the depositWithMessage function triggers a call to a callback function, named on_receive, on the L2 contract that receives the deposit. The on_receive function receives the deposit message as input.

-
-
-

on_receive must return true for the deposit to succeed. If on_receive returns false, or if the recipient contract does not include the on_receive function, the depositWithMessage function’s L1 handler fails. The user can recover their funds using the depositWithMessageCancelRequest function.

-
-
-
To enable Smart Deposits in your application:
-
    -
  1. -

    Implement the on_receive function in the L2 contract that should receive deposits.

    -
  2. -
  3. -

    Use the depositWithMessage function to transfer funds from L1 to L2.

    -
  4. -
-
-

Additional resources

- - -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/tools/starkgate-bridge/index.html b/pr-1195/documentation/tools/starkgate-bridge/index.html deleted file mode 100644 index 3be93edb34..0000000000 --- a/pr-1195/documentation/tools/starkgate-bridge/index.html +++ /dev/null @@ -1,1208 +0,0 @@ - - - - - - StarkGate bridge overview :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

StarkGate bridge overview

-
-
-
-

StarkGate, developed by StarkWare, bridges ETH and ERC-20 tokens between Ethereum and Starknet. Each supported token is associated with an L1 and L2 bridge contract that communicates via Starknet’s messaging mechanism.

-
-
-

To use StarkGate, go to https://starkgate.starknet.io.

-
-
-

A bridge enables you to fund your L2 wallet with ETH and ERC-20 tokens that reside on L1.

-
-
-

The terms deposit, transact, and transfer refer to various operations involving a bridge, even though ETH and ERC-20 tokens never actually leave Ethereum.

-
-
- - - - - -
- - -
-

StarkGate 2.0 provides a contract that enables seamless backward compatibility with the previous version of StarkGate.

-
-
-

When you update the code in your contract, make sure that you use the most up-to-date versions of all StarkGate contracts.

-
-
-
-
-
-
-

Supported tokens in StarkGate

-
-
-

StarkGate supports many tokens, including ETH, WBTC, USDC, DAI, and many more.

-
-
-

For a comprehensive list of tokens that StarkGate supports, see the JSON files in the Starknet GitHub repository shown in the table StarkGate bridged tokens.

-
- - ---- - - - - - - - - - - - - - - - - - - - - -
Table 1. StarkGate bridged tokens
NetworkStarkGate bridged tokens JSON file

Mainnet

mainnet.json

Sepolia testnet

sepolia.json

Goerli testnet (deprecated)

goerli.json

-
- - - - - -
- - -
-

Previously, StarkGate placed limitations for each supported token on the amount that could be deposited and the total value locked in the L1 bridge contract on Mainnet. These limits have been removed.

-
-
-
-
-
-
-

L1→L2 transfer (deposit)

-
-
-

Step 1: Call the deposit function on L1

-
-
    -
  1. -

    A call to the L1 deposit function initiates a deposit.

    -
  2. -
  3. -

    The function does the following:

    -
    -
    -
    -
      -
    • -

      Transfers the funds from the user’s account to the Starknet bridge.

      -
    • -
    • -

      Emits a Deposit event that includes the L1 and L2 addresses of the user, and the amount deposited.

      -
    • -
    • -

      Sends a message to the corresponding L2 bridge with the amount deposited, and the recipient’s address.

      -
    • -
    -
    -
    -
    -
    -

    Starknet’s sequencer is now aware of the deposit transaction.

    -
    -
  4. -
  5. -

    The sequencer waits for enough L1 block confirmations to fill its quota to run before the corresponding deposit transaction is initiated on L2. During this period of time, the status of the L2 deposit transaction is NOT_RECEIVED.

    -
  6. -
-
-
-
-

Step 2: Deposit triggered on Starknet

-
-
    -
  1. -

    The sequencers refer to the deposit -request by triggering the L1 handler using the -handle_deposit function on the L2 bridge.

    -
  2. -
  3. -

    The handle_deposit function verifies that the deposit indeed came from the corresponding L1 bridge. It then calls the relevant token’s contract on Starknet and mints the specified amount of the token on L2 for the user.

    -
  4. -
  5. -

    The sequencers complete constructing the block.

    -
  6. -
-
-
-

The status of the deposit request is now ACCEPTED_ON_L2.

-
-
-
-

Step 3: The block that includes the transfer is proved

-
-
    -
  1. -

    Starknet’s provers prove the validity of the block and submit a state update to L1.

    -
  2. -
  3. -

    The message confirming transfer of the funds is cleared from the Starknet Core Contract, and the fact that the user has transferred their funds is part of the now finalized state of Starknet.

    -
  4. -
-
-
- - - - - -
- - -
-

If the message wasn’t on L1 to begin with, that is, if the deposit request was fraudulently created on Starknet, the state update would fail.

-
-
-
-
-
-
-
-

L2→L1 transfer (withdrawal)

-
-
-

Step 1: Initiate a withdrawal from L2

-
-
    -
  1. -

    A call to the L2 initiate_withdraw function initiates a withdrawal.

    -
  2. -
  3. -

    The function does the following:

    -
    -
      -
    • -

      Burns the transferred amount of tokens from the balance of the withdrawal’s initiator.

      -
    • -
    • -

      Sends a message to the relevant L1 bridge with the amount to be transferred and the recipient’s address.

      -
    • -
    -
    -
  4. -
-
-
-
-

Step 2: Proving the block that includes the withdrawal transaction

-
-
    -
  1. -

    The sequencer completes the block construction

    -
  2. -
  3. -

    Starknet’s provers prove the validity of the block and submit a state update to L1.

    -
  4. -
  5. -

    The message from the previous step is stored in the Starknet Core Contract.

    -
  6. -
-
-
-
-

Step 3: Transferring the funds on L1

-
-

After the withdrawal message has been recorded on the Starknet Core Contract, anyone can finalize the transfer on L1 from the bridge back to the user, by calling the withdraw function.

-
-
- - - - - -
- - -
-

This step is permissionless, anyone can do it. The recipient’s address is part of the recorded message on L1, so they receive the funds regardless of who calls the withdraw function on L1.

-
-
-
-
-
-
-
-

Additional resources

-
-
- -
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/tools/starkgate-cancelling a deposit/index.html b/pr-1195/documentation/tools/starkgate-cancelling a deposit/index.html deleted file mode 100644 index ad9655c496..0000000000 --- a/pr-1195/documentation/tools/starkgate-cancelling a deposit/index.html +++ /dev/null @@ -1,1001 +0,0 @@ - - - - - - Cancelling a deposit :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Cancelling a deposit

-
-
-
-

To ensure self-custody, StarkGate enables you to cancel a deposit if, after depositing funds with the deposit function on L1, you don’t see your funds appear on L2 within a reasonable amount of time.

-
-
-

You can only cancel a deposit that you yourself deposited.

-
-
-

In order to guard against an attack, it takes approximately five days to cancel a deposit. From the moment StarkGate receives the cancellation request, a counter begins. When exactly five days have passed, and the funds still do not appear on L2, you can reclaim the deposit.

-
-
-
Procedure
-
    -
  1. -

    To cancel a deposit, call the depositCancelRequest request function.

    -
    -

    When StarkGate receives the cancellation request, a counter begins to count five days.

    -
    -
  2. -
  3. -

    When exactly five days have passed, and the funds still do not appear on L2, you can reclaim the deposit by calling depositReclaim.

    -
  4. -
-
-
- - - - - -
- - -
-

As long as the depositReclaim was not performed, the deposit may be processed, even if -the cancellation delay time has already passed.

-
-
-

Only the depositor is allowed to cancel -a deposit, and only before depositReclaim was performed.

-
-
-
-
-
-
-

Additional resources

-
-
- -
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/tools/starkgate-estimating_fees/index.html b/pr-1195/documentation/tools/starkgate-estimating_fees/index.html deleted file mode 100644 index 01a6ca055f..0000000000 --- a/pr-1195/documentation/tools/starkgate-estimating_fees/index.html +++ /dev/null @@ -1,981 +0,0 @@ - - - - - - Estimating StarkGate fees :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

Estimating StarkGate fees

-
-

StarkGate enforces a minimum fee for all transactions to account for the L1 → L2 message costs. For more information, see L1 → L2 message fees.

-
-
-

You can estimate the fee using the following L1 functions:

-
-
- ---- - - - - - - - - -
-estimateDepositFeeWei - -

Estimates the fee for a deposit transaction.

-
-estimateEnrollmentFeeWei - -

Estimates the fee for an enrollment transaction.

-
-
-
-
Additional resources
- -
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/tools/starkgate_architecture/index.html b/pr-1195/documentation/tools/starkgate_architecture/index.html deleted file mode 100644 index d678c64572..0000000000 --- a/pr-1195/documentation/tools/starkgate_architecture/index.html +++ /dev/null @@ -1,1199 +0,0 @@ - - - - - - StarkGate architecture :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

StarkGate architecture

-
-
-
-

While StarkGate is referred to as a bridge, technically, each supported token has its own bridge, each of which is defined in a corresponding pair of L1 and L2 contracts, as described in Components of a bridge for an individual token.

-
- - ---- - - - - - - - - - - -
Table 1. Components of a bridge for an individual token

L1

-
    -
  • -

    ERC-20 contract that defines the token on Ethereum. This contract must exist before you can bridge it.

    -
  • -
  • -

    Bridge functionality for ERC-20 tokens is supported in StarknetTokenBridge.sol.

    -
  • -
-

L2

-
    -
  • -

    StarkGate Cairo bridge contract instance of the token_bridge.cairo contract class.

    -
  • -
  • -

    ERC-20 Cairo token contract instance of a standard ERC-20 Cairo token contract class. Each new contract uses the hash of this class to define its inheritance. StarkGate creates this contract automatically when creating the bridge in StarkGate.

    -
  • -
-
-
- - - - - -
- - -
-

StarkGate 2.0 provides a contract that enables seamless backward compatibility with the previous version of StarkGate.

-
-
-

When you update the code in your contract, make sure that you use the most up-to-date versions of all StarkGate contracts.

-
-
-
-
-

You can check if a token is currently supported with the L1 function getBridge.

-
-
-

You can permissionlessly add support for ERC-20 tokens to the multi-token bridge using the enrollTokenBridge function.

-
-
-
-
-

The StarkGate Manager and Registry

-
-
-

StarkGate includes the following administration components:

-
-
-
-
The StarkGate Manager
-
-

is responsible for adding bridges

-
-
The StarkGate Registry
-
-
-
    -
  • -

    contains the addresses to all supported bridges

    -
  • -
  • -

    enables a bridge developer to stop servicing an existing bridge

    -
  • -
-
-
-
-
-
-
-
-

Legacy bridges

-
-
-

All token bridges that existed prior to StarkGate 2.0 (Mainnet: January 2024) besides supporting all StarkGate 2.0 functionality, are backward compatible. Each token was bridged with a unique, custom pair of L1 and L2 bridge contracts. The L1 bridge is an instance of LegacyBridge.sol, and the L2 bridge is an instance of legacy_bridge_eic.cairo.

-
-
-

Example: USDC contracts

-
-
    -
  • -

    L1 ERC-20 contract address: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48

    -
  • -
  • -

    L2 ERC-20 contract address: 0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8

    -
  • -
  • -

    L1 bridge contract address: 0xF6080D9fbEEbcd44D89aFfBFd42F098cbFf92816

    -
  • -
  • -

    L2 bridge contract address: 0x05cd48fccbfd8aa2773fe22c217e808319ffcc1c5a6a463f7d8fa2da48218196

    -
  • -
-
-
-

Consider the Deposit functions for the L1 bridge contract for USDC on Etherscan: 0xf6080d9fbeebcd44d89affbfd42f098cbff92816#writeProxyContract

-
-
-

This contract has the following two deposit functions: deposit (0x0efe6a8b) and deposit (0xe2bbb158), which shows that the bridge includes support for the legacy functionality as well as the modern functionality:

-
-
- ---- - - - - - - - - -
-deposit (0x0efe6a8b) - -

The StarkGate 2.0 contract, which includes support for all tokens within a single contract, requiring that you enter the address of the token in the deposit function.

-
-deposit (0xe2bbb158) - -

The legacy contract, which is labeled Support Legacy ABI. This function does not include the token (address) parameter, because the contract that contains this function only supports USDC. Therefore, the address of the token is superfluous.

-
-
-
-
-

List of legacy bridges

-
-

The following tokens have legacy contracts as well as StarkGate 2.0 contracts:

-
-
-
    -
  • -

    Starknet Token (STRK)

    -
  • -
  • -

    Starknet Voting Token (vSTRK)

    -
  • -
  • -

    Wrapped BTC (WBTC)

    -
  • -
  • -

    USD Coin (USDC)

    -
  • -
  • -

    Tether USD (USDT)

    -
  • -
  • -

    Ether (ETH)

    -
  • -
  • -

    Dai Stablecoin (DAI)

    -
  • -
  • -

    Dai Stablecoin (DAI) (Dai v0)

    -
  • -
  • -

    Wrapped liquid staked Ether 2.0 (wstETH)

    -
  • -
  • -

    Rocket Pool ETH (rETH)

    -
  • -
  • -

    R Stablecoin (R)

    -
  • -
  • -

    Frax (FRAX)

    -
  • -
  • -

    Frax Share (FXS)

    -
  • -
  • -

    Staked Frax Ether (sfrxETH)

    -
  • -
  • -

    LUSD Stablecoin (LUSD)

    -
  • -
  • -

    Uniswap (UNI)

    -
  • -
-
-
-

For complete details, see the bridged_tokens directory on GitHub.

-
-
-
-
-
-

Withdrawal limit

-
-
-

By default, StarkGate imposes no limit on withdrawals. However, in order to mitigate risks associated with critical vulnerabilities that could result in the loss of user funds, StarkGate can enable a withdrawal limit.

-
-
-

If a serious security issue arises, the security agent in the StarkGate contract can limit withdrawals to 5% of the Total Value Locked (TVL) per day for any affected token by calling the setWithdrawLimitPCT() function in the WithdrawalLimit.sol contract. A dedicated team can then investigate and resolve the issue.

-
-
-

Only a security admin quorum can disable the withdrawal limit. The quorum will consist of Starknet Foundation members, Starknet ecosystem contributors, and StarkWare representatives. This diverse group will ensure that decisions reflect the Starknet community’s broad interests.

-
-
-

This approach, blending manual oversight with automated detection, aims to minimize potential losses.

-
-
-
-
-

Additional resources

-
-
- -
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/tools/starkgate_function_reference/index.html b/pr-1195/documentation/tools/starkgate_function_reference/index.html deleted file mode 100644 index 0a1c299d73..0000000000 --- a/pr-1195/documentation/tools/starkgate_function_reference/index.html +++ /dev/null @@ -1,3110 +0,0 @@ - - - - - - StarkGate function and event reference :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

StarkGate function and event reference

-
-
-
-

The StarkGate smart contracts include functions that you use to implement various flows in a dApp.

-
-
-

For information on the movement of funds between Ethereum and Starknet, see StarkGate bridge overview.

-
-
- - - - - -
- - -
-

StarkGate 2.0 provides a contract that enables seamless backward compatibility with the previous version of StarkGate.

-
-
-

When you update the code in your contract, make sure that you use the most up-to-date versions of all StarkGate contracts.

-
-
-
-
-

The L1 functions and their interfaces, where available, are defined in the following smart contracts:

-
- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ContractNameFunctions

StarkgateManager.sol

The StarkGate Manager.

-

Use the Manager to enroll a new token.

-

An interface is available through IStarkgateManager.sol.

- -

StarkgateRegistry.sol

-

The StarkGate Registry.

-
-
-

Use the Registry to view the addresses of existing bridges and to stop servicing a specific token.

-
-
-

An interface is available through IStarkgateRegistry.sol.

-

StarknetTokenBridge.sol

The primary StarkGate bridge contract. The functions and events in this reference that provide the main user bridge functionality are defined in this contract.

IStarkgateService.sol

An interface to check if a contract is servicing a token.

- -
-
-

The L2 functions and their interfaces, where available, are defined in the following smart contracts:

-
- ----- - - - - - - - - - - - - - - -
ContractDescriptionFunctions

token_bridge.cairo

The StarkGate bridge implementation on L2. This contract includes the standard functions for a token bridge.

-

An interface is available through token_bridge_interface.cairo.

-
-
-
-

L1 function reference

-
-
-

Functions are listed in alphabetical order.

-
-
-
-

deposit

-

Description

-
-

Deposits the specified amount of an ERC-20 token to the L1 StarkGate bridge contract.

-
-
-

The deposit function does the following:

-
-
-
    -
  • -

    Transfers the funds from the caller’s account to the Starknet bridge contract

    -
  • -
  • -

    Emits the Deposit event with the sender’s address on L1, the recipient’s address on L2, and the amount

    -
  • -
-
-

Visibility

-
-

external

-
-

State Mutability

-
-

payable

-
-

Parameters

-
- ---- - - - - - - - - - - - - -
-address token - -

The address of the contract for the desired token.

-
-uint256 amount - -

The amount of the deposit.

-
-uint256 l2Recipient - -

The L2 address of the recipient.

-
-
-

Returns

-
-

None.

-
-

Emitted event

-
-

Deposit

-
-
-
Event attributes
- ---- - - - - - - - - - - - - - - - - - - - - - - - - -
-address indexed sender - -

The L1 address of the account that sent the deposit.

-
-address indexed token - -

The address of the contract for the desired token.

-
-uint256 amount - -

The amount of the deposit.

-
-uint256 indexed l2Recipient - -

The L2 address of the recipient. -The L2 address of the recipient.

-
-uint256 nonce - -

The nonce for the L1 transaction.

-
-uint256 fee - -

The Starknet fee sent with the transaction.

-
-
-

Function and event definitions

- -
- -
-
-
-
-

depositCancelRequest

-

Description

-
-

Sends a request to StarkGate to cancel a deposit.

-
-
-

You can send a cancellation request if the funds you transfer from L1 to L2 do not appear on L2 within a reasonable amount of time.

-
-
-

In order to guard against an attack on Starknet, it takes approximately five days to cancel a deposit. When StarkGate receives the cancellation request, a counter begins. When exactly five days have passed, and the funds still do not appear on L2, you can reclaim the deposit using the depositReclaim function.

-
-
-

The depositReclaim function can only be used once for any deposit cancellation request.

-
-

Visibility

-
-

external

-
-

State Mutability

-
-

nonpayable

-
-

Parameters

-
- ---- - - - - - - - - - - - - - - - - -
-address token - -

The address of the contract for the desired token.

-
-uint256 amount - -

The amount of the deposit.

-
-uint256 l2Recipient - -

The L2 address of the recipient.

-
-uint256 nonce - -

The nonce of the deposit.

-
-
-

Returns

-
-

None.

-
-

Emitted event

-
-

DepositCancelRequest

-
-
-
Event attributes
- ---- - - - - - - - - - - - - - - - - - - - - -
-address indexed sender - -

The L1 address of the account that sent the deposit.

-
-address indexed token - -

The address of the contract for the desired token.

-
-uint256 amount - -

The amount of the deposit.

-
-uint256 indexed l2Recipient - -

The L2 address of the recipient. -The L2 address of the recipient.

-
-uint256 nonce - -

The nonce of the deposit.

-
-
-

Function and event definitions

- -
- -
-
-
-
-

depositReclaim

-

Description

-
-

Reclaims a deposit after a five day period has passed from the time that StarkGate received a deposit cancellation request from the depositCancelRequest function.

-
-

Visibility

-
-

external

-
-

State Mutability

-
-

nonpayable

-
-

Parameters

-
- ---- - - - - - - - - - - - - - - - - -
-address token - -

The address of the contract for the desired token.

-
-uint256 amount - -

The amount of the deposit.

-
-uint256 l2Recipient - -

The L2 address of the recipient.

-
-uint256 nonce - -

The nonce of the deposit.

-
-
-

Returns

-
-

None.

-
-

Emitted event

-
-

event DepositReclaimed

-
-
-
Event attributes
- ---- - - - - - - - - - - - - - - - - - - - - -
-address indexed sender - -

The L1 address of the account that sent the deposit.

-
-address indexed token - -

The address of the contract for the desired token.

-
-uint256 amount - -

The amount of the deposit.

-
-uint256 indexed l2Recipient - -

The L2 address of the recipient. -The L2 address of the recipient.

-
-uint256 nonce - -

The nonce of the deposit.

-
-
-

Function and event definitions

-
-

Contract: StarknetTokenBridge.sol

-
-
- -
-

See also

- -
-
-
-

depositWithMessage

-

Description

-
-

Similar to deposit, with a message attached.

-
-
-

With this function, a deposit transaction can trigger subsequent actions. For example, you can deposit funds and include a message to transfer those funds to another address. depositWithMessage lets you execute these two separate transactions with a single user action.

-
-
-

After depositing to another recipient, the L1 handler in token_bridge.cairo calls the on_receive function in the contract of the recipient.

-
-
-

If on_receive returns true, then the on_receive function succeeded. If it returns false, or if it doesn’t return any value because the on_receive function is not implemented in the recipient contract, the operation fails and the transaction is reverted.

-
-

Visibility

-
-

external

-
-

State Mutability

-
-

payable

-
-

Parameters

-
- ---- - - - - - - - - - - - - - - - - -
-address token - -

The address of the contract for the desired token.

-
-uint256 amount - -

The amount of the deposit.

-
-uint256 l2Recipient - -

The L2 address of the recipient.

-
-uint256[] calldata message - -

The message attached to the deposit.

-
-
-

Returns

-
-

None.

-
-

Emitted event

-
-

DepositWithMessage

-
-
-
Event attributes
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-address indexed sender - -

The L1 address of the account that sent the deposit.

-
-address indexed token - -

The address of the contract for the desired token.

-
-uint256 amount - -

The amount of the deposit.

-
-uint256 indexed l2Recipient - -

The L2 address of the recipient. -The L2 address of the recipient.

-
-uint256[] message - -

The message attached to the deposit.

-
-uint256 nonce - -

The nonce for the L1 transaction.

-
-uint256 fee - -

The Starknet fee sent with the transaction.

-
-
-

Function and event definitions

- -
- -
-
-
-
-

depositWithMessageCancelRequest

-

Description

-
-

Sends a request to StarkGate to cancel a deposit sent with depositWithMessage.

-
-
-

Similar to depositCancelRequest.

-
-

Visibility

-
-

external

-
-

State Mutability

-
-

nonpayable

-
-

Parameters

-
- ---- - - - - - - - - - - - - - - - - - - - - -
-address token - -

The address of the contract for the desired token.

-
-uint256 amount - -

The amount of the deposit.

-
-uint256 l2Recipient - -

The L2 address of the recipient.

-
-uint256[] calldata message - -

The message attached to the deposit.

-
-uint256 nonce - -

The nonce of the deposit.

-
-
-

Returns

-
-

None.

-
-

Emitted event

-
-

DepositWithMessageCancelRequest

-
-
-
Event attributes
- - - - - - - - - - - - - - - - - - - - - - - - - -
-address indexed sender - -

The L1 address of the account that sent the deposit.

-
-address indexed token - -

The address of the contract for the desired token.

-
-uint256 amount - -

The amount of the deposit.

-
-uint256 indexed l2Recipient - -

The L2 address of the recipient. -The L2 address of the recipient.

-
-uint256[] message - -

The message attached to the deposit.

-
-uint256 nonce - -

The nonce for the L1 transaction.

-
-
-

Function and event definitions

- - -

See also

- -
-
-
-

depositWithMessageReclaim

-

Description

-
-

Sends a request to StarkGate to cancel a deposit sent with depositWithMessage.

-
-
-

Similar to depositCancelRequest.

-
-
-

Reclaims a deposit sent with a message after a five day period has passed from the time that StarkGate received a deposit cancellation request from the depositWithMessageCancelRequest function.

-
-

Visibility

-
-

external

-
-

State Mutability

-
-

nonpayable

-
-

Parameters

-
- ---- - - - - - - - - - - - - - - - - -
-address token - -

The address of the contract for the desired token.

-
-uint256 amount - -

The amount of the deposit.

-
-uint256 l2Recipient - -

The L2 address of the recipient.

-
-uint256 nonce - -

The nonce of the deposit.

-
-
-

Returns

-
-

None.

-
-

Emitted event

-
-

DepositWithMessageCancelRequest

-
-
-
Event attributes
- - - - - - - - - - - - - - - - - - - - - - - - - -
-address indexed sender - -

The L1 address of the account that sent the deposit.

-
-address indexed token - -

The address of the contract for the desired token.

-
-uint256 amount - -

The amount of the deposit.

-
-uint256 indexed l2Recipient - -

The L2 address of the recipient. -The L2 address of the recipient.

-
-uint256[] message - -

The message attached to the deposit.

-
-uint256 nonce - -

The nonce for the L1 transaction.

-
-
-

Function and event definitions

- -
- -
-

See also

- -
-
-
-

enrollTokenBridge

-

Description

-
-

Creates a Starknet bridge for the specified ERC-20 token contract address in the multi-token bridge contracts and adds the token to the StarkGate Registry.

-
-
-

Does not work for any ERC-20 token bridge’s contract address that is already in the registry.

-
-
-

Enrolling a new bridge creates a new ERC-20 contract on L2. You can see the class hash for this contract using get_erc20_class_hash.

-
-
- - - - - -
- - -
-

Enrolling a new bridge does not add it to the StarkGate GUI. You can use a block explorer to use the newly created bridge.

-
-
-
-

Visibility

-
-

external

-
-

State Mutability

-
-

payable

-
-
-

The message payload needs to include funds to cover the Starknet (L2) fee for executing this transaction. You can include this payload using a standard wrapper such as web3.js.

-
-

Parameters

-
- ---- - - - - -
-address token - -

The address of the contract for the desired ERC-20 token.

-
-
-

Returns

-
-

None.

-
-

Emitted event

-
-

TokenEnrollmentInitiated

-
-

Function and event definition

-
- -
-
-
-
-

estimateDepositFeeWei

-

Description

-
-

Returns an estimate of the fee, in Wei, for depositing funds to the L1 StarkGate bridge contract.

-
-

Visibility

-
-

external

-
-

State Mutability

-
-

view

-
-

Parameters

-
-

None.

-
-

Returns

-
- ---- - - - - -
-uint256 - -

An estimate of the fee, in Wei, for depositing funds to the L1 StarkGate bridge contract.

-
-
-

Emitted event

-
-

None.

-
-

Function definition

-
-

estimateDepositFeeWei in StarknetTokenBridge.sol

-
-

Additional resources

-
- -
-
-
-
-

estimateEnrollmentFeeWei

-

Description

-
-

Returns an estimate of the fee, in Wei, for creating and registering a new bridge using the enrollTokenBridge function.

-
-

Visibility

-
-

external

-
-

State Mutability

-
-

view

-
-

Parameters

-
-

None.

-
-

Returns

-
- ---- - - - - -
-uint256 - -

An estimate of the fee, in Wei, for creating and registering a new bridge.

-
-
-

Emitted event

-
-

None.

-
-

Function definition

-
-

estimateEnrollmentFeeWei in StarknetTokenBridge.sol

-
-

Additional resource

-
- -
-
-
-
-

getBridge

-

Description

-
-

Returns the address of the bridge for the specified token, or a value indicating if the bridge does not exist, is blocked, or is deactivated.

-
-

Visibility

-
-

external

-
-

State Mutability

-
-

view

-
-

Parameters

-
- ---- - - - - -
-address token - -

The address of the contract for the desired ERC-20 token.

-
-
-

Returns

-
- ---- - - - - - - - - - - - - -
-address address - -

The address of the bridge for the specified token.

-
-Address(0) - -

The bridge does not exist.

-
-Address(1) - -

The bridge is blocked or deactivated.

-
-
-

Emitted event

-
-

None.

-
-

Function definition

-
-

getBridge in IStarkgateRegistry.sol

-
-
-
-
-

getRegistry

-

Description

-
-

Returns the address of the StarkGate Registry contract.

-
-
-

Only the Manager uses this function.

-
-

Visibility

-
-

external

-
-

State Mutability

-
-

view

-
-

Parameters

-
-

None

-
-

Returns

-
- ---- - - - - -
-address - -

The address of the Registry contract.

-
-
-

Emitted event

-
-

None.

-
-

Function definition

-
-

getRegistry in StarkgateManager.sol

-
-
-
-
-

getStatus

-

Description

-
-

Returns the status of a token in StarkGate.

-
-
-

deploy transaction triggered by the enrollTokenBridge API.

-
-

Visibility

-
-

external

-
-

State Mutability

-
-

view

-
-

Parameters

-
- ---- - - - - -
-address token - -

The address of the contract for the desired ERC-20 token.

-
-
-

Returns

-
- ---- - - - - -
-TokenStatus - -

One of the following values:

-
- - - - - - - - - - - - - - - - - -
-0 - -

Unknown. The bridge does not recognize the token.

-
-1 - -

Pending. The token has been enrolled to StarkGate, but the deploy transaction has not yet successfully completed. You can deposit funds.

-
-2 - -

Active. The deploy transaction for this token has completed successfully and StarkGate recognizes the token.

-
-3 - -

Deactivated. The token has been removed from StarkGate. You cannot deposit funds.

-
-
-
-
-

Emitted event

-
-

None.

-
-

Function definition

-
-

getStatus in StarknetTokenBridge.sol

-
-
-
-
-

getWithdrawalBridges

-

Description

-
-

Retrieves a list of all bridge addresses that have ever facilitated withdrawals for the specified token.

-
-
-

In a case where an inactive bridge for a specific token might still have funds locked, you can use this function to identify all bridges that ever serviced that token.

-
-
-

If you used a bridge for a given token that subsequently was replaced with a new or updated bridge, but you still have funds locked on the first bridge, you might not know the address of the old bridge. This function returns

-
-

Visibility

-
-

external

-
-

State Mutability

-
-

view

-
-

Parameters

-
- ---- - - - - -
-address token - -

The address of the contract for the desired token.

-
-
-

Returns

-
- ---- - - - - -
-address[] memory bridges - -

An array of addresses of all bridges that ever serviced token.

-
-
-

Emitted event

-
-

None.

-
-

Function definition

-
-

getWithdrawalBridges in StarkgateRegistry.sol.

-
-
-
-
-

identify

-

Description

-
-

Returns the name and version of the StarknetTokenBridge.sol contract.

-
-

Visibility

-
-

external

-
-

State Mutability

-
-

pure

-
-

Parameters

-
-

None.

-
-

Returns

-
- ---- - - - - -
-string memory - -

The name and version of the StarknetTokenBridge.sol contract.

-
-
-

Emitted event

-
-

None.

-
-

Function definition

-
-

identify in StarknetTokenBridge.sol

-
-
-
-
-

isServicingToken

-

Description

-
-

Checks whether the calling contract is currently providing a service for the specified token.

-
-

Visibility

-
-

external

-
-

State Mutability

-
-

view

-
-

Parameters

-
- ---- - - - - -
-address token - -

The address of the contract for the desired token.

-
-
-

Returns

-
- ---- - - - - - - - - -
-true - -

The calling contract is currently providing a service for the token.

-
-false - -

The calling contract is not currently providing a service for the token.

-
-
-

Emitted event

-
-

None.

-
-

Function definition

-
-

isServicingToken in IStarkgateService.sol.

-
-
-
-
-

withdraw

-

Description

-
-

Transfers the specified amount of the specified token to the address of the recipient specified in the l1_recipient parameter of the initiate_token_withdraw function on L2.

-
-
-

Anyone can call this function, but only after the withdraw message has been recorded on the Starknet Core Contract.

-
-

Parameters

-
- ---- - - - - - - - - - - - - -
-address token - -

The address of the contract for the desired token.

-
-uint256 amount - -

The amount of the withdrawal.

-
-address recipient - -

(Optional) -The recipient. -If you don’t specify this parameter, the withdraw function uses the sender’s address.

-
-
-

State mutability

-
-

nonpayable

-
-

Returns

-
-

None.

-
-

Emitted event

-
-

Withdrawal

-
-
-
Event attributes
- - - - - - - - - - - - - -
-address indexed recipient - -

The recipient.

-
-address indexed token - -

The address of the contract for the desired token.

-
-uint256 amount - -

The amount of the withdrawal.

-
-
-

Function and event definition

- -
- -
-
-
-
-
-

L2 function reference

-
-
-

Functions are listed in alphabetical order.

-
-
-
-

get_erc20_class_hash

-

Description

-
-

Returns the current class hash of the implementation used by the ERC-20 contract. Use the class hash as the type when deploying the ERC-20 contract on L2.

-
-
- - - - - -
- - -
-

If StarkWare changes the class hash such that it is no longer the class hash that you used when deploying your bridge contract, this function returns the new class hash. If you want to refer to the class hash that you used when deploying your contract, see your deployed contract on Starknet.

-
-
-
-

Parameters

-
-

None.

-
-

Returns

-
- ---- - - - - -
-ClassHash - -

The class hash of the ERC-20 token contract.

-
-
-

Function definition

-
-

get_erc20_class_hash in token_bridge.cairo.

-
-
-
-
-

get_identity

-

Description

-
-

Returns a string in a felt252 type with the identity of StarkGate.

-
-

Parameters

-
-

None.

-
-

Returns

-
- ---- - - - - -
-felt252 - -

The identity of StarkGate.

-
-
-

Function definition

-
-

get_identity in token_bridge_interface.cairo.

-
-
-
-
-

get_l1_token

-

Description

-
-

Returns the L1 address that corresponds to the matching L2 address of an ERC-20 token contract.

-
-

Parameters

-
- ---- - - - - -
-l2_token_address: ContractAddress - -

The L2 address of the ERC-20 token contract.

-
-
-

Returns

-
- ---- - - - - - - - - -
-EthAddress - -

The L1 address of the ERC-20 token contract.

-
-EthAddressZeroable::zero() - -

The token is not found in the bridge.

-
-
-

Function definition

-
-

get_l1_token in token_bridge_interface.cairo.

-
-
-
-
-

get_l2_token

-

Description

-
-

Returns the L2 address that corresponds to the matching L1 address of an ERC-20 token contract.

-
-
-

If the token is not found in the bridge, this function returns 0.

-
-

Parameters

-
- ---- - - - - -
-l1_token_address - -

The L1 address of the ERC-20 token contract.

-
-
-

Returns

-
- ---- - - - - - - - - -
-ContractAddress address - -

The L2 address of the ERC-20 token contract.

-
-ContractAddressZeroable::zero() - -

The token is not found in the bridge.

-
-
-

Function definition

-
-

get_l2_token in token_bridge_interface.cairo.

-
-
-
-
-

get_remaining_withdrawal_quota

-

Description

-
-

Returns the amount that the user can withdraw within the current 24-hour time period. The time period begins at 00:00 UTC.

-
-

Parameters

-
- ---- - - - - -
-l1_token_address - -

The L1 address of the ERC-20 token contract.

-
-
-

Returns

-
- ---- - - - - -
-u256 - -

The amount that can currently be withdrawn from the bridge, in units defined by the ERC-20 token contract.

-
-
-

Function definition

-
-

get_remaining_withdrawal_quota in token_bridge_interface.cairo

-
-
-
-
-

get_version

-

Description

-
-

Returns the current version of StarkGate.

-
-

Parameters

-
-

None.

-
-

Returns

-
- ---- - - - - -
-felt252 - -

The current version of StarkGate.

-
-
-

Function definition

-
-

get_version in token_bridge_interface.cairo.

-
-
-
-
-

initiate_withdraw

-

Description

-
-

Initiates a withdrawal from L2. After initiating the withdrawal, the function does the following:

-
-
-
    -
  1. -

    Burns the transferred amount of tokens from the balance of the withdrawal’s initiator.

    -
  2. -
  3. -

    Sends a message to the relevant L1 bridge with the amount to be transferred, and the recipient’s address.

    -
  4. -
-
-

Parameters

-
- ---- - - - - - - - - - - - - -
-l1_recipient - -

The L1 address of the recipient.

-
-EthAddress token - -

The L1 address of the ERC-20 token contract.

-
-uint256 amount - -

The amount to transfer.

-
-
-

Returns

-
-

None.

-
-

Function definition

-
-

initiate_withdraw in token_bridge_interface.cairo.

-
-
-
-
-

on_receive

-

Description

-
-

An interface to an implementation of the on_receive function that you must provide in your L2 contract in order to enable the depositWithMessage function to succeed.

-
-
-

The L2 contract that receives the message that is sent with the depositWithMessage function must implement a callback function named on_receive.

-
-
-

Upon completion, the depositWithMessage function triggers a call to the on_receive callback function on the receiving L2 contract. The on_receive function receives the deposit message as input, and it must return true for the deposit to succeed.

-
-
-

If on_receive returns false, or if the receiving contract does not implement on_receive, the depositWithMessage L1 handler fails, and the user can only recover their funds using the depositWithMessageCancelRequest function.

-
-

Parameters

-
- ---- - - - - - - - - - - - - - - - - -
-l2_token: ContractAddress - -

The L2 address of the ERC-20 token contract.

-
-amount: uint256 - -

The amount deposited.

-
-depositor: EthAddress - -

L1 address of the deposit sender.

-
-message: Span<felt252> - -

The message that was sent with the depositWithMessage function.

-
-
-

Returns

-
- ---- - - - - - - - - - - - - -
-true - -

The on_receive function completed successfully.

-
-false - -

The on_receive function did not complete successfully. The transaction is reverted.

-
-No value - -

If the recipients’s smart contract does not implement the on_receive function, the call fails to execute, and the transaction is reverted.

-
-
-

Function definition

-
-

on_receive in receiver_interface.cairo.

-
-
-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/documentation/tools/starknet-book/index.html b/pr-1195/documentation/tools/starknet-book/index.html deleted file mode 100644 index cb661ca1de..0000000000 --- a/pr-1195/documentation/tools/starknet-book/index.html +++ /dev/null @@ -1,997 +0,0 @@ - - - - - - About the Starknet Book :: Starknet documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
-
- -
-

About the Starknet Book

-
-
-
-

The Starknet Book serves as a comprehensive guide to understanding Starknet, Cairo, and introduces you to the Starknet ecosystem.

-
-
-

The Starknet Book caters to various objectives and interests. Mix and match these chapters to customize your learning experience based on your unique interests and requirements. Whether you’re exploring smart contract development, frontend integration, or learning about the core architecture, The Starknet Book is your trusted companion on the journey of deepening your understanding of Starknet.

-
-
-
-
-

Table of Contents

-
- ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ChapterDescription

Chapter 1

Introduction to Starknet and Cairo

-

An overview of the Starknet ecosystem and the Cairo programming language.

Chapter 2

Smart Contract Development

-

Learn how to develop smart contracts on the Starknet platform with this in-depth guide.

Chapter 3

Frontend Integration

-

Discover techniques for integrating Starknet with frontend applications seamlessly.

chapter 4

Node Operation

-

Practical insights into operating nodes on the Starknet network.

Chapter 5

Security Analysis

-

Comprehensive analysis of security considerations within the Starknet ecosystem.

Chapter 6

Underlying Architecture and Cryptography

-

Delve into the foundational architecture and cryptographic principles of Starknet.

-
-
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pr-1195/index.html b/pr-1195/index.html deleted file mode 100644 index 1b1b984f9e..0000000000 --- a/pr-1195/index.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - -Redirect Notice -

Redirect Notice

-

The page you requested has been relocated to https://docs.starknet.io/documentation/.

diff --git a/pr-1195/search-index.js b/pr-1195/search-index.js deleted file mode 100644 index 8d32e2bb58..0000000000 --- a/pr-1195/search-index.js +++ /dev/null @@ -1 +0,0 @@ -antoraSearch.initSearch(lunr, {"index":{"version":"2.3.9","fields":["title","name","text","component"],"fieldVectors":[["title/1-1",[0,29.578,1,44.585]],["name/1-1",[]],["text/1-1",[]],["component/1-1",[]],["title/1-2",[0,29.578,2,22.757]],["name/1-2",[]],["text/1-2",[]],["component/1-2",[]],["title/1-3",[3,46.45]],["name/1-3",[]],["text/1-3",[]],["component/1-3",[]],["title/1-4",[4,21.912,5,29.429,6,29.429,7,40.158]],["name/1-4",[]],["text/1-4",[]],["component/1-4",[]],["title/1-5",[8,59.545]],["name/1-5",[]],["text/1-5",[]],["component/1-5",[]],["title/1-6",[9,27.703,10,35.366]],["name/1-6",[]],["text/1-6",[]],["component/1-6",[]],["title/1-7",[9,27.703,11,45.829]],["name/1-7",[]],["text/1-7",[]],["component/1-7",[]],["title/1-8",[2,22.757,12,30.108]],["name/1-8",[]],["text/1-8",[]],["component/1-8",[]],["title/1-9",[2,22.757,13,36.859]],["name/1-9",[]],["text/1-9",[]],["component/1-9",[]],["title/1-10",[14,67.295]],["name/1-10",[]],["text/1-10",[]],["component/1-10",[]],["title/1-11",[15,38.617,16,37.996]],["name/1-11",[]],["text/1-11",[]],["component/1-11",[]],["title/1-12",[17,71.508]],["name/1-12",[]],["text/1-12",[]],["component/1-12",[]],["title/1-13",[18,54.794]],["name/1-13",[]],["text/1-13",[]],["component/1-13",[]],["title/1-14",[19,48.666]],["name/1-14",[]],["text/1-14",[]],["component/1-14",[]],["title/1-15",[20,45.165]],["name/1-15",[]],["text/1-15",[]],["component/1-15",[]],["title/1-16",[21,71.508]],["name/1-16",[]],["text/1-16",[]],["component/1-16",[]],["title/1-17",[22,50.395]],["name/1-17",[]],["text/1-17",[]],["component/1-17",[]],["title/1-18",[23,64.149]],["name/1-18",[]],["text/1-18",[]],["component/1-18",[]],["title/1-19",[24,47.146]],["name/1-19",[]],["text/1-19",[]],["component/1-19",[]],["title/1-20",[2,16.106,25,13.52,26,21.119,27,29.429]],["name/1-20",[]],["text/1-20",[]],["component/1-20",[]],["title/1-21",[25,19.104,28,42.486]],["name/1-21",[]],["text/1-21",[]],["component/1-21",[]],["title/1-22",[25,19.104,29,28.14]],["name/1-22",[]],["text/1-22",[]],["component/1-22",[]],["title/1-23",[30,29.351]],["name/1-23",[]],["text/1-23",[]],["component/1-23",[]],["title/1-24",[29,28.14,31,47.25]],["name/1-24",[]],["text/1-24",[]],["component/1-24",[]],["title/1-25",[32,49.501]],["name/1-25",[]],["text/1-25",[]],["component/1-25",[]],["title/1",[33,71.508]],["name/1",[33,1.42]],["text/1",[0,2.139,1,0.64,2,2.726,3,1.771,4,2.445,7,1.529,9,3.225,11,1.235,12,0.432,13,0.529,14,0.766,15,0.554,16,2.165,18,2.09,19,1.856,20,1.366,21,2.163,22,1.078,24,1.008,25,2.642,26,2.538,27,1.585,28,1.145,29,3.459,30,2.79,32,2.841,34,0.929,35,0.73,36,1.348,37,1.989,38,2.271,39,0.597,40,0.574,41,0.887,42,1.121,43,1.18,44,1.549,45,1.385,46,0.814,47,0.73,48,0.585,49,0.508,50,0.574,51,2.375,52,1.83,53,0.887,54,0.678,55,1.18,56,0.624,57,0.766,58,0.597,59,1.078,60,1.202,61,0.537,62,1.923,63,0.766,64,0.61,65,1.426,66,2.19,67,0.993,68,0.966,69,0.953,70,1.439,71,0.414,72,1.699,73,0.747,74,1.041,75,1.025,76,0.61,77,0.814,78,2.143,79,0.953,80,0.585,81,0.73,82,0.624,83,3.83,84,1.145,85,0.678,86,1.529,87,0.678,88,0.624,89,0.574,90,2.952,91,1.274,92,0.428,93,0.766,94,0.887,95,1.497,96,1.269,97,0.887,98,0.887,99,1.169,100,0.678,101,1.172,102,0.574,103,0.508,104,0.73,105,0.766,106,1.746,107,1.747,108,1.666,109,0.545,110,0.814,111,0.64,112,0.814,113,0.678,114,0.624,115,0.814,116,0.702,117,0.814,118,0.766,119,0.766,120,0.678,121,0.941,122,1.145,123,1.781,124,0.702,125,1.121,126,1.145,127,1.405,128,0.766,129,0.432,130,0.678,131,0.64,132,0.545,133,0.458,134,0.814,135,0.766,136,1.137,137,0.564,138,1.529,139,0.61,140,1.348,141,0.814,142,1.202,143,0.428,144,0.681,145,0.624,146,0.73,147,1.722,148,0.851,149,0.702,150,0.537,151,1.6,152,0.887,153,1.024,154,1.059,155,0.766,156,1.098,157,0.658,158,0.554,159,0.73,160,0.887,161,0.814,162,1.826,163,0.585,164,1.405,165,2.892,166,1.145,167,0.814,168,0.702,169,1.318,170,0.814,171,0.529,172,0.887,173,0.73,174,0.585,175,0.624,176,0.929,177,0.887,178,0.585,179,0.702,180,0.597,181,1.059,182,0.495,183,1.235,184,0.597,185,0.44,186,0.521,187,0.564,188,1.529,189,0.814,190,0.64,191,1.529,192,1.024,193,1.798,194,0.489,195,1.314,196,0.554,197,0.702,198,0.61,199,1.426,200,1.172,201,0.73,202,1.121,203,1.439,204,0.678,205,0.514,206,0.766,207,0.64,208,0.766,209,0.61,210,0.658,211,0.624,212,0.908,213,0.585,214,0.814,215,0.887,216,0.887,217,0.597,218,1.274,219,0.658,220,0.979,221,0.73,222,0.929,223,0.73,224,0.887,225,0.658,226,0.624,227,0.766,228,0.887,229,1.121,230,0.814,231,0.941,232,0.64,233,0.421,234,0.814,235,1.121,236,0.766,237,0.432,238,1.529,239,0.585,240,0.766,241,0.529,242,0.501,243,0.514,244,0.929,245,0.814,246,0.814,247,0.658,248,0.658,249,1.202,250,0.44,251,0.624,252,0.624,253,0.814,254,0.766,255,0.73,256,0.417,257,0.529,258,0.814,259,0.483,260,1.121,261,0.908,262,0.658,263,0.508,264,0.483,265,0.537,266,0.585,267,0.458,268,0.495,269,1.202,270,0.597]],["component/1",[271,0.415]],["title/2-1",[25,19.104,272,43.48]],["name/2-1",[]],["text/2-1",[]],["component/2-1",[]],["title/2-2",[273,53.4,274,37.996]],["name/2-2",[]],["text/2-2",[]],["component/2-2",[]],["title/2-3",[56,54.794]],["name/2-3",[]],["text/2-3",[]],["component/2-3",[]],["title/2-4",[275,51.359]],["name/2-4",[]],["text/2-4",[]],["component/2-4",[]],["title/2-5",[212,27.908,276,32.008,277,36.955]],["name/2-5",[]],["text/2-5",[]],["component/2-5",[]],["title/2-6",[25,15.834,278,39.164,279,47.031]],["name/2-6",[]],["text/2-6",[]],["component/2-6",[]],["title/2",[280,59.545]],["name/2",[281,1.116]],["text/2",[0,1.433,2,1.809,3,1.786,4,1.5,6,2.015,9,2.801,15,1.871,16,1.841,24,1.813,25,3.117,28,2.058,30,1.128,43,1.5,47,2.466,49,1.713,51,2.823,52,1.363,56,2.107,57,4.245,58,2.015,62,1.433,66,1.631,73,1.342,83,1.937,84,2.058,88,2.107,95,1.903,96,1.613,99,1.486,106,1.76,127,1.786,144,2.553,148,1.53,150,1.813,165,1.937,176,2.741,187,1.903,193,1.813,217,2.015,222,1.671,229,3.306,231,1.692,237,1.459,242,1.692,247,2.22,250,1.486,271,2.427,272,5.087,273,2.587,274,3.021,276,1.871,277,3.545,278,5.528,279,2.749,282,2.587,283,5.399,284,2.015,285,2.749,286,2.587,287,1.736,288,2.16,289,2.587,290,3.644,291,2.995,292,2.995,293,2.995,294,2.289,295,2.587,296,2.587,297,2.16,298,2.22,299,2.587,300,2.015,301,2.466,302,1.76,303,1.813,304,4.245,305,2.995,306,2.22,307,1.76,308,2.289,309,1.692,310,2.466,311,2.466,312,2.466,313,2.587,314,3.545,315,2.015,316,6.25,317,2.466,318,2.587,319,2.22,320,4.047,321,2.995]],["component/2",[271,0.415]],["title/3-1",[322,50.903,323,44.585]],["name/3-1",[]],["text/3-1",[]],["component/3-1",[]],["title/3-2",[142,36.955,270,34.466,324,30.117]],["name/3-2",[]],["text/3-2",[]],["component/3-2",[]],["title/3-3",[325,47.25,326,56.743]],["name/3-3",[]],["text/3-3",[]],["component/3-3",[]],["title/3-4",[327,50.903,328,56.743]],["name/3-4",[]],["text/3-4",[]],["component/3-4",[]],["title/3",[25,15.834,322,42.191,324,30.117]],["name/3",[25,0.258,322,0.687]],["text/3",[2,0.158,4,0.784,6,0.558,20,1.103,24,0.502,25,2.945,26,0.401,30,0.95,32,0.527,35,0.352,36,1.271,42,2.073,43,0.416,45,0.488,49,0.475,50,0.782,51,0.707,52,1.633,61,0.502,62,0.91,65,0.259,67,0.255,68,0.701,69,0.245,71,1.036,72,0.309,73,0.701,80,0.282,83,0.537,85,0.327,88,0.301,89,0.277,95,0.527,96,0.23,99,1.394,105,0.717,106,1.963,109,0.743,111,0.309,113,0.634,119,1.352,126,0.294,128,0.37,132,0.263,133,0.221,136,0.207,137,0.527,142,3.753,143,0.207,144,0.339,147,2.916,148,0.424,149,0.339,150,0.502,151,0.23,153,0.263,154,0.272,156,0.282,158,0.267,162,0.51,164,0.255,165,1.012,166,0.294,171,0.721,174,1.032,176,1.407,180,0.558,182,1.239,183,0.615,184,0.558,185,1.394,186,0.488,187,1.785,192,1.551,193,0.259,194,0.457,195,0.239,196,0.267,198,0.294,203,0.37,204,0.327,205,0.248,210,0.615,211,0.301,212,0.233,218,0.924,219,0.615,220,0.92,222,0.873,223,0.683,226,0.301,227,0.37,229,1.279,231,1.425,233,0.573,235,0.288,238,1.746,239,1.254,240,0.717,241,0.495,243,0.248,244,0.239,247,0.615,248,0.896,250,0.776,251,0.301,252,0.301,256,0.568,260,1.494,263,0.245,267,1.146,270,1.279,271,1.196,274,0.51,276,2.24,278,0.327,287,0.481,288,1.602,290,0.896,297,0.872,299,0.37,302,1.305,307,0.92,311,0.683,312,0.683,319,0.317,322,2.077,324,4.765,325,2.147,326,1.109,327,1.829,328,0.393,329,1.643,330,0.301,331,0.428,332,2.038,333,1.032,334,2.828,335,1.044,336,1.352,337,1.109,338,1.976,339,0.995,340,0.768,341,1.566,342,2.179,343,0.762,344,1.437,345,0.872,346,0.842,347,1.352,348,0.558,349,0.657,350,0.634,351,0.683,352,0.956,353,0.683,354,1.565,355,1.279,356,0.327,357,1.109,358,0.83,359,0.742,360,0.428,361,0.393,362,0.428,363,0.352,364,0.37,365,0.83,366,0.428,367,0.428,368,0.352,369,0.981,370,1.902,371,0.762,372,0.537,373,0.393,374,0.428,375,0.393,376,0.393,377,1.307,378,0.428,379,1.208,380,0.634,381,0.83,382,1.902,383,0.428,384,0.83,385,1.208,386,0.83,387,0.428,388,1.044,389,0.393,390,0.352,391,0.683,392,0.352,393,0.85,394,0.657,395,0.428,396,0.393,397,2.828,398,0.558,399,1.151,400,0.37,401,0.37,402,1.061,403,0.831,404,3.34,405,0.393,406,1.289,407,0.956,408,0.599,409,1.238,410,0.393,411,1.101,412,0.428,413,0.339,414,0.428,415,0.37,416,0.717,417,0.294,418,0.393,419,0.683,420,1.196,421,0.762,422,0.37,423,0.294,424,1.208,425,0.37,426,0.683,427,0.37,428,0.924,429,1.565,430,0.309,431,0.884,432,0.428,433,0.352,434,0.272,435,0.762,436,0.428,437,0.428,438,0.717,439,0.352,440,0.83,441,0.495,442,0.717,443,0.428,444,2.222,445,2.953,446,0.717,447,2.038,448,0.393,449,0.83,450,1.208,451,0.469,452,0.83,453,1.437,454,0.282,455,0.393,456,0.37,457,0.272,458,1.352,459,0.301,460,0.428,461,1.902,462,1.505,463,2.75,464,0.83,465,0.327,466,0.317,467,1.566,468,1.746,469,0.683,470,0.782,471,0.428,472,1.565,473,0.428,474,0.428,475,0.428,476,0.428,477,0.428,478,0.428,479,0.428,480,0.317,481,0.327,482,0.634,483,0.657,484,0.683,485,0.317,486,0.83,487,0.57,488,0.762,489,1.044,490,1.208,491,0.352,492,0.393,493,0.37,494,0.37,495,0.428,496,0.428,497,0.683,498,0.282,499,0.634,500,0.717,501,1.208,502,0.428,503,0.428,504,0.83,505,0.995,506,0.428,507,1.565,508,0.428,509,0.352,510,0.327,511,0.428,512,0.37,513,0.717,514,0.339,515,0.428,516,1.505,517,0.428,518,0.393,519,1.109,520,1.746,521,0.762,522,0.83,523,0.657,524,2.038,525,0.584,526,1.565,527,0.428,528,0.428,529,0.428,530,0.428,531,0.83,532,0.428,533,0.428,534,0.37,535,2.221,536,0.428,537,0.393,538,0.317,539,0.83,540,0.428,541,0.393,542,0.428,543,0.294,544,0.352,545,0.599,546,0.277,547,0.717,548,0.267,549,0.83,550,0.428,551,1.208,552,0.309,553,0.813,554,0.259,555,0.782,556,0.428,557,0.599,558,0.339,559,0.203,560,0.428,561,0.428,562,0.277,563,0.83,564,0.393,565,2.038,566,2.316,567,2.147,568,0.83,569,0.762,570,0.83,571,0.83,572,0.995,573,0.657,574,0.267,575,0.83,576,0.327,577,0.428,578,0.428,579,0.428,580,0.428,581,0.428,582,0.248,583,0.339,584,0.428,585,0.428,586,0.428,587,0.37,588,0.428,589,0.428,590,0.428,591,0.428,592,0.317,593,0.428,594,1.819,595,0.428,596,0.37,597,0.428,598,0.37,599,0.339,600,0.339,601,0.831,602,0.37,603,0.393,604,0.393,605,0.717,606,0.393,607,0.393,608,0.428,609,0.309,610,0.428,611,1.208,612,1.044,613,0.428,614,0.393,615,0.428,616,0.428,617,0.717,618,0.352,619,0.657,620,0.327,621,0.762,622,0.393,623,0.37,624,0.282,625,0.37,626,0.83,627,0.393,628,0.428,629,0.83,630,0.428,631,0.428,632,0.37,633,0.428,634,0.428,635,0.327,636,0.37,637,0.393,638,0.352,639,0.428,640,0.428,641,0.428,642,0.393,643,0.762,644,0.393,645,0.428,646,0.83,647,0.762,648,0.428,649,0.428,650,0.428,651,0.428,652,0.393,653,0.301,654,0.37,655,0.428,656,0.428,657,0.428,658,0.317,659,0.352,660,0.393,661,0.393,662,0.352,663,0.37,664,0.393,665,0.83,666,0.428,667,0.428,668,0.428,669,0.339]],["component/3",[271,0.415]],["title/4",[56,54.794]],["name/4",[281,1.116]],["text/4",[]],["component/4",[271,0.415]],["title/5-1",[317,36.026,670,27.799,671,29.429,672,26.086]],["name/5-1",[]],["text/5-1",[]],["component/5-1",[]],["title/5-2",[25,13.52,66,23.83,147,25.365,303,26.477]],["name/5-2",[]],["text/5-2",[]],["component/5-2",[]],["title/5-3",[66,27.908,300,34.466,673,36.039]],["name/5-3",[]],["text/5-3",[]],["component/5-3",[]],["title/5-4",[25,19.104,55,30.96]],["name/5-4",[]],["text/5-4",[]],["component/5-4",[]],["title/5-5",[25,19.104,264,33.671]],["name/5-5",[]],["text/5-5",[]],["component/5-5",[]],["title/5-6",[25,19.104,136,29.84]],["name/5-6",[]],["text/5-6",[]],["component/5-6",[]],["title/5-7",[25,19.104,266,40.754]],["name/5-7",[]],["text/5-7",[]],["component/5-7",[]],["title/5-8",[25,19.104,674,56.743]],["name/5-8",[]],["text/5-8",[]],["component/5-8",[]],["title/5-9",[25,19.104,675,56.743]],["name/5-9",[]],["text/5-9",[]],["component/5-9",[]],["title/5-10",[25,19.104,676,53.4]],["name/5-10",[]],["text/5-10",[]],["component/5-10",[]],["title/5-11",[25,19.104,677,56.743]],["name/5-11",[]],["text/5-11",[]],["component/5-11",[]],["title/5-12",[25,19.104,678,56.743]],["name/5-12",[]],["text/5-12",[]],["component/5-12",[]],["title/5-13",[25,19.104,679,56.743]],["name/5-13",[]],["text/5-13",[]],["component/5-13",[]],["title/5-14",[25,19.104,680,56.743]],["name/5-14",[]],["text/5-14",[]],["component/5-14",[]],["title/5-15",[25,19.104,265,37.411]],["name/5-15",[]],["text/5-15",[]],["component/5-15",[]],["title/5-16",[25,19.104,681,56.743]],["name/5-16",[]],["text/5-16",[]],["component/5-16",[]],["title/5",[25,13.52,34,24.404,682,33.44,683,30.069]],["name/5",[684,0.936]],["text/5",[0,2.816,2,2.489,4,2.846,9,0.261,12,0.283,20,0.932,25,2.544,26,0.776,29,0.265,30,1.792,34,0.622,39,0.391,40,2.904,43,0.805,49,0.333,51,0.263,52,3.452,55,3.535,59,2.098,62,0.534,66,2.979,69,0.333,73,3.03,75,1.952,78,0.419,79,1.422,80,2.138,81,0.479,82,3.157,90,0.588,92,0.281,95,0.369,96,0.313,99,0.553,106,1.212,121,1.165,122,0.4,123,0.564,133,1.85,136,1.199,140,0.92,144,1.943,147,2.079,150,0.675,153,0.357,154,0.369,156,0.383,162,0.686,164,0.347,171,0.665,176,1.605,181,1.021,184,0.75,185,0.798,186,0.342,194,0.32,195,1.809,202,2.627,211,0.785,218,0.444,220,1.691,222,0.622,229,0.391,233,2.488,241,0.665,242,1.832,243,0.337,250,0.553,256,1.525,257,1.716,259,0.317,260,0.75,262,0.431,263,0.333,264,0.608,265,0.973,266,1.06,270,0.391,284,0.391,300,1.387,301,0.479,302,0.945,303,2.17,315,0.391,323,1.159,324,1.212,325,0.444,330,1.131,346,1.594,355,1.081,359,1.365,369,1.064,377,0.767,391,0.918,422,0.502,433,0.479,434,0.709,480,0.431,481,0.444,482,0.444,505,0.709,512,0.502,525,0.785,546,2.098,555,0.376,562,0.722,574,2.24,582,0.337,609,0.419,612,0.502,624,0.383,625,0.502,653,0.785,670,3.332,671,1.081,672,0.347,673,2.024,674,0.534,675,0.534,676,0.502,677,1.024,678,0.534,679,0.534,680,0.534,681,1.024,683,2.464,684,0.352,685,1.151,686,1.632,687,2.281,688,0.431,689,1.828,690,2.852,691,1.36,692,0.722,693,1.699,694,0.75,695,0.444,696,1.115,697,1.324,698,0.581,699,0.479,700,2.281,701,1.115,702,1.115,703,0.75,704,1.229,705,1.632,706,0.581,707,1.893,708,1.115,709,0.581,710,1.115,711,1.737,712,2.545,713,0.608,714,3.861,715,2.479,716,1.268,717,1.741,718,3.641,719,1.488,720,2.063,721,2.74,722,2.061,723,2.063,724,1.966,725,2.485,726,2.276,727,0.964,728,1.792,729,1.334,730,2.877,731,1.115,732,0.601,733,0.686,734,1.608,735,1.272,736,1.229,737,0.581,738,0.581,739,0.534,740,0.827,741,0.534,742,0.502,743,0.391,744,1.115,745,0.444,746,0.964,747,0.581,748,1.993,749,0.363,750,0.46,751,0.479,752,0.581,753,0.581,754,0.581,755,1.115,756,1.024,757,1.324,758,0.534,759,0.409,760,0.286,761,0.581,762,0.46,763,0.444,764,0.581,765,0.502,766,0.534,767,0.581,768,0.581,769,0.46,770,0.502,771,0.581,772,0.581,773,0.479,774,0.918,775,0.918,776,1.105,777,0.409,778,0.46,779,3.157,780,0.479,781,0.581,782,0.479,783,1.131,784,0.767,785,1.389,786,0.431,787,2.146,788,0.502,789,0.534,790,0.376,791,1.115,792,0.409,793,0.502,794,0.357,795,0.479,796,0.534,797,0.502,798,0.46,799,0.46,800,0.534,801,0.502]],["component/5",[271,0.415]],["title/6-1",[345,56.187]],["name/6-1",[]],["text/6-1",[]],["component/6-1",[]],["title/6-2",[359,36.954]],["name/6-2",[]],["text/6-2",[]],["component/6-2",[]],["title/6-3",[802,34.645]],["name/6-3",[]],["text/6-3",[]],["component/6-3",[]],["title/6-4",[718,33.289,803,61.817]],["name/6-4",[]],["text/6-4",[]],["component/6-4",[]],["title/6-5",[722,49.501]],["name/6-5",[]],["text/6-5",[]],["component/6-5",[]],["title/6-6",[687,43.48,718,33.289]],["name/6-6",[]],["text/6-6",[]],["component/6-6",[]],["title/6-7",[314,44.585,804,42.486]],["name/6-7",[]],["text/6-7",[]],["component/6-7",[]],["title/6-8",[712,51.546]],["name/6-8",[]],["text/6-8",[]],["component/6-8",[]],["title/6-9",[805,71.508]],["name/6-9",[]],["text/6-9",[]],["component/6-9",[]],["title/6-10",[806,71.508]],["name/6-10",[]],["text/6-10",[]],["component/6-10",[]],["title/6-11",[807,67.295]],["name/6-11",[]],["text/6-11",[]],["component/6-11",[]],["title/6-12",[237,30.108,592,45.829]],["name/6-12",[]],["text/6-12",[]],["component/6-12",[]],["title/6-13",[808,73.576]],["name/6-13",[]],["text/6-13",[]],["component/6-13",[]],["title/6-14",[809,78.181]],["name/6-14",[]],["text/6-14",[]],["component/6-14",[]],["title/6-15",[810,71.508]],["name/6-15",[]],["text/6-15",[]],["component/6-15",[]],["title/6-16",[163,56.152]],["name/6-16",[]],["text/6-16",[]],["component/6-16",[]],["title/6-17",[811,71.508]],["name/6-17",[]],["text/6-17",[]],["component/6-17",[]],["title/6-18",[812,71.508]],["name/6-18",[]],["text/6-18",[]],["component/6-18",[]],["title/6-19",[813,78.181]],["name/6-19",[]],["text/6-19",[]],["component/6-19",[]],["title/6-20",[814,71.508]],["name/6-20",[]],["text/6-20",[]],["component/6-20",[]],["title/6",[34,24.404,121,24.71,682,33.44,683,30.069]],["name/6",[25,0.177,121,0.323,687,0.402]],["text/6",[0,1.088,2,2.744,9,1.019,10,1.301,12,2.494,13,1.356,15,1.421,25,2.111,37,1.285,39,1.53,51,1.027,52,1.035,62,2.905,69,1.301,73,2.295,74,2.437,79,1.301,83,1.471,87,1.738,90,1.198,99,1.935,121,4.964,123,1.15,127,1.356,130,2.982,133,2.012,139,1.563,144,4.424,163,5.256,164,1.356,171,1.356,195,1.269,217,1.53,226,1.6,237,1.108,242,2.893,257,2.326,259,1.239,268,1.269,277,1.64,303,1.376,314,3.694,346,0.862,348,1.53,359,1.079,592,1.686,600,3.086,662,1.873,670,2.479,671,1.53,686,1.799,691,1.499,712,4.135,718,1.225,721,2.982,722,5.792,732,1.225,745,1.738,765,1.965,769,4.052,793,3.37,804,1.563,805,2.088,806,2.088,807,1.965,808,3.37,809,4.701,810,3.58,811,2.088,812,2.088,813,3.58,814,2.088,815,1.499,816,1.738,817,2.088,818,3.901,819,3.901,820,1.799,821,3.901,822,2.744,823,3.58,824,4.217,825,1.965,826,2.274,827,2.274,828,2.274,829,2.274,830,2.088,831,1.563,832,1.873,833,1.6,834,1.376,835,1.686,836,2.274,837,1.6,838,2.274,839,1.738,840,2.088,841,1.563,842,2.274,843,2.274]],["component/6",[271,0.415]],["title/7-1",[844,61.637]],["name/7-1",[]],["text/7-1",[]],["component/7-1",[]],["title/7-2",[175,26.849,205,22.131,684,23.101,815,25.165,845,26.235]],["name/7-2",[]],["text/7-2",[]],["component/7-2",[]],["title/7-3",[846,54.794]],["name/7-3",[]],["text/7-3",[]],["component/7-3",[]],["title/7-4",[2,18.862,44,26.709,121,28.939]],["name/7-4",[]],["text/7-4",[]],["component/7-4",[]],["title/7-5",[19,32.008,66,27.908,176,28.581]],["name/7-5",[]],["text/7-5",[]],["component/7-5",[]],["title/7-6",[2,18.862,44,26.709,264,27.908]],["name/7-6",[]],["text/7-6",[]],["component/7-6",[]],["title/7-7",[68,35.839,784,42.486]],["name/7-7",[]],["text/7-7",[]],["component/7-7",[]],["title/7",[2,18.862,44,26.709,264,27.908]],["name/7",[847,1.547]],["text/7",[2,3.467,4,0.713,5,1.735,10,1.476,12,3.21,13,0.849,16,1.585,19,2.712,22,1.669,25,2.162,44,2.263,51,1.96,52,3.858,62,0.681,64,0.979,66,1.926,67,2.998,68,0.825,73,2.253,74,0.889,75,2.186,109,2.173,121,5.132,123,2.195,133,1.824,136,1.707,139,0.979,143,0.687,144,2.507,147,2.517,148,0.727,158,0.889,163,0.939,171,0.849,176,3.135,181,0.905,190,1.027,195,1.439,205,0.825,222,0.794,233,0.675,237,4.334,250,1.28,256,0.67,257,0.849,264,4.616,268,0.794,270,0.958,272,1.001,288,1.027,300,0.958,302,1.516,303,0.862,306,1.912,313,1.23,314,1.027,339,0.905,359,0.675,399,0.862,402,1.439,431,0.804,441,0.849,451,1.997,470,1.669,481,1.088,538,1.056,545,1.027,574,1.611,576,1.088,582,2.05,592,1.056,600,1.127,601,0.979,670,3.9,673,1.001,684,4.233,690,0.905,692,1.669,700,1.001,713,0.776,722,1.639,763,1.088,769,2.798,783,1.001,794,0.875,802,0.633,815,1.701,845,4.807,848,2.124,849,1.23,850,1.424,851,2.579,852,1.424,853,1.424,854,1.307,855,2.579,856,1.424,857,1.23,858,1.424,859,1.23,860,1.424,861,0.849,862,1.424,863,1.001,864,3.246,865,3.246,866,1.056,867,1.127,868,1.23,869,1.172,870,1.424,871,1.23,872,2.579,873,2.55,874,1.86,875,2.579,876,2.579,877,2.041,878,1.307,879,1.027,880,1.23,881,0.905,882,1.23,883,2.368,884,1.307,885,1.307,886,1.127,887,1.307,888,1.307,889,1.307,890,1.307,891,1.307,892,1.127,893,1.424,894,1.424,895,1.424,896,1.172,897,1.307,898,1.307,899,1.056]],["component/7",[271,0.415]],["title/8-1",[844,61.637]],["name/8-1",[]],["text/8-1",[]],["component/8-1",[]],["title/8-2",[175,26.849,205,22.131,684,23.101,815,25.165,845,26.235]],["name/8-2",[]],["text/8-2",[]],["component/8-2",[]],["title/8-3",[846,54.794]],["name/8-3",[]],["text/8-3",[]],["component/8-3",[]],["title/8-4",[2,18.862,44,26.709,136,24.733]],["name/8-4",[]],["text/8-4",[]],["component/8-4",[]],["title/8-5",[68,35.839,784,42.486]],["name/8-5",[]],["text/8-5",[]],["component/8-5",[]],["title/8",[2,18.862,44,26.709,136,24.733]],["name/8",[900,1.547]],["text/8",[2,3.742,5,2.234,10,1.9,12,3.745,13,1.981,25,2.073,30,1.251,44,4.008,51,1.5,66,1.809,67,1.981,75,2.325,92,1.603,111,2.396,123,2.704,136,5.147,143,2.581,144,3.679,147,1.926,158,2.075,163,2.19,171,1.981,202,2.234,205,1.926,222,1.853,233,2.536,237,2.604,257,1.981,264,2.912,268,1.853,302,1.952,303,2.01,359,1.576,402,2.982,441,1.981,451,1.876,470,2.149,576,2.539,670,5.355,684,4.06,713,1.809,718,1.789,740,2.462,749,4.191,784,3.674,845,2.283,848,4.402,861,1.981,871,4.618,892,2.628,901,2.735,902,3.322,903,3.049,904,3.322,905,2.539,906,5.346,907,3.049,908,3.049,909,2.283,910,3.322,911,4.907,912,3.322]],["component/8",[271,0.415]],["title/9-1",[684,37.411,815,40.754]],["name/9-1",[]],["text/9-1",[]],["component/9-1",[]],["title/9-2",[66,23.83,303,26.477,684,26.477,691,28.843]],["name/9-2",[]],["text/9-2",[]],["component/9-2",[]],["title/9-3",[815,40.754,845,42.486]],["name/9-3",[]],["text/9-3",[]],["component/9-3",[]],["title/9-4",[815,33.779,913,47.031,914,47.031]],["name/9-4",[]],["text/9-4",[]],["component/9-4",[]],["title/9-5",[815,40.754,915,53.4]],["name/9-5",[]],["text/9-5",[]],["component/9-5",[]],["title/9",[66,27.908,302,30.117,303,31.008]],["name/9",[916,1.547]],["text/9",[0,1.037,9,1.676,10,2.824,23,1.784,25,1.816,32,3.137,52,0.986,54,3.774,65,1.311,66,2.689,67,2.944,73,3.486,81,3.081,90,1.971,106,1.273,113,1.656,121,1.224,123,1.892,133,1.118,144,1.528,148,1.107,178,1.428,181,2.377,190,1.563,221,1.784,222,1.209,236,1.872,237,2.862,243,1.256,268,1.209,271,1.452,276,1.353,277,3.561,303,4.014,345,1.563,350,1.656,399,1.311,402,1.209,438,1.872,499,1.656,562,3.194,582,1.256,599,1.714,635,1.656,670,4.943,671,1.457,683,1.489,684,5.585,691,3.874,697,3.081,699,1.784,722,2.377,763,1.656,802,0.963,815,6.54,817,6.089,845,5.914,861,3.504,873,1.563,884,3.434,885,1.989,886,1.714,887,1.989,888,1.989,889,1.989,890,3.434,913,1.989,914,1.989,915,3.232,917,1.656,918,1.714,919,1.563,920,2.167,921,2.167,922,1.989,923,2.167,924,2.167,925,2.167,926,2.96,927,3.232,928,4.937,929,2.167,930,5.876,931,1.872,932,1.353,933,1.989,934,1.989,935,2.167,936,1.872,937,1.989,938,1.784,939,1.656,940,1.989,941,2.167,942,1.989,943,2.167,944,1.989,945,1.872,946,2.167,947,1.989,948,2.167,949,1.989,950,1.606,951,2.167,952,1.989]],["component/9",[271,0.415]],["title/10-1",[844,61.637]],["name/10-1",[]],["text/10-1",[]],["component/10-1",[]],["title/10-2",[175,26.849,205,22.131,684,23.101,815,25.165,845,26.235]],["name/10-2",[]],["text/10-2",[]],["component/10-2",[]],["title/10-3",[846,54.794]],["name/10-3",[]],["text/10-3",[]],["component/10-3",[]],["title/10-4",[55,30.96,346,23.429]],["name/10-4",[]],["text/10-4",[]],["component/10-4",[]],["title/10-5",[265,37.411,346,23.429]],["name/10-5",[]],["text/10-5",[]],["component/10-5",[]],["title/10",[2,18.862,44,26.709,181,32.557]],["name/10",[953,1.547]],["text/10",[2,2.225,29,2.751,30,2.277,43,1.43,44,3.662,48,1.882,49,1.633,51,1.289,52,2.15,55,4.2,66,1.555,78,2.059,82,2.008,136,2.28,143,2.917,144,4.158,147,1.655,148,1.458,150,1.728,158,1.783,166,1.962,171,1.702,181,1.814,193,1.728,205,1.655,222,1.592,233,3.692,237,2.301,243,1.655,249,2.059,265,4.71,268,1.592,302,1.678,303,1.728,346,3.364,350,2.182,359,2.241,369,1.473,434,1.814,441,1.702,470,1.847,546,1.847,548,2.951,576,2.182,612,2.466,653,2.008,670,4.945,684,4.71,688,3.502,703,1.92,711,2.688,713,1.555,718,1.537,749,1.783,759,2.008,784,1.962,841,1.962,845,1.962,861,1.702,871,5.221,905,3.611,907,2.62,911,5.547,954,7.782,955,2.182,956,2.351,957,2.855,958,4.724,959,4.336,960,2.855,961,3.738,962,2.855]],["component/10",[271,0.415]],["title/11-1",[844,61.637]],["name/11-1",[]],["text/11-1",[]],["component/11-1",[]],["title/11-2",[0,29.578,451,34.915]],["name/11-2",[]],["text/11-2",[]],["component/11-2",[]],["title/11-3",[23,50.903,451,34.915]],["name/11-3",[]],["text/11-3",[]],["component/11-3",[]],["title/11-4",[451,28.939,722,32.557,945,44.261]],["name/11-4",[]],["text/11-4",[]],["component/11-4",[]],["title/11-5",[218,33.44,220,25.716,546,28.302,697,36.026]],["name/11-5",[]],["text/11-5",[]],["component/11-5",[]],["title/11-6",[963,53.4,964,44.585]],["name/11-6",[]],["text/11-6",[]],["component/11-6",[]],["title/11-7",[965,67.295]],["name/11-7",[]],["text/11-7",[]],["component/11-7",[]],["title/11-8",[0,24.516,221,42.191,451,28.939]],["name/11-8",[]],["text/11-8",[]],["component/11-8",[]],["title/11-9",[0,29.578,136,29.84]],["name/11-9",[]],["text/11-9",[]],["component/11-9",[]],["title/11",[0,24.516,66,27.908,302,30.117]],["name/11",[966,1.547]],["text/11",[0,4.113,2,1.589,3,1.086,15,0.609,16,1.119,19,1.6,23,3.553,25,1.728,30,2.107,36,1.042,37,0.551,39,0.656,44,3.696,45,0.573,51,1.452,52,2.705,59,2.08,62,2.289,66,2.351,67,1.527,69,0.558,73,2.333,81,2.109,96,0.525,99,0.484,107,1.899,109,0.6,115,0.895,120,0.746,136,3.3,143,0.879,144,2.992,156,3.153,157,1.35,158,0.609,162,0.6,163,1.201,164,0.582,169,0.772,171,0.582,175,0.686,176,1.429,182,0.544,184,0.656,185,0.903,186,0.573,187,0.62,192,0.6,193,0.59,194,0.538,195,1.016,205,1.056,211,0.686,213,0.643,218,4.543,219,1.899,220,4.167,221,3.125,229,1.225,232,1.313,233,2.269,235,1.723,237,1.566,241,0.582,261,0.992,263,0.558,266,0.643,267,0.503,268,0.544,270,0.656,274,0.6,295,0.843,302,1.506,303,1.102,314,0.704,315,0.656,320,0.803,339,0.62,340,0.62,359,0.463,369,1.321,372,1.178,402,1.429,403,0.67,411,2.261,420,0.746,431,0.551,451,3.539,454,0.643,498,2.502,546,5.362,566,0.895,567,0.746,582,1.485,587,0.843,624,0.643,670,4.505,673,0.686,683,1.252,684,5.016,686,3.003,689,1.157,691,0.643,697,2.109,713,0.531,722,3.981,726,0.772,746,0.843,766,1.672,769,1.441,792,0.686,815,1.689,820,0.772,822,2.261,837,1.281,857,1.573,859,0.843,861,0.582,863,0.686,868,0.843,899,1.35,908,3.961,932,0.609,944,0.895,945,4.132,947,2.351,949,1.672,963,3.279,964,2.319,965,3.728,967,0.803,968,0.723,969,0.975,970,0.843,971,0.803,972,0.67,973,0.975,974,0.895,975,0.746,976,0.772,977,0.975,978,0.843,979,0.686,980,0.975,981,0.843,982,1.821,983,0.975,984,1.821,985,0.975,986,0.704,987,0.975,988,0.975,989,1.821,990,0.895,991,1.5,992,0.772,993,0.895,994,0.975,995,2.951,996,0.895,997,0.67,998,0.746,999,0.843,1000,0.746,1001,0.772,1002,0.843,1003,0.843,1004,0.975,1005,0.723,1006,0.975,1007,0.803,1008,0.723,1009,0.975,1010,0.723,1011,0.723,1012,0.975,1013,0.895,1014,0.975,1015,0.803,1016,0.772,1017,0.975,1018,0.975,1019,0.975,1020,0.975,1021,0.772]],["component/11",[271,0.415]],["title/12-1",[685,34.483,1022,41.582]],["name/12-1",[]],["text/12-1",[]],["component/12-1",[]],["title/12-2",[1022,34.466,1023,39.164,1024,33.145]],["name/12-2",[]],["text/12-2",[]],["component/12-2",[]],["title/12",[685,24.404,1022,29.429,1023,33.44,1024,28.302]],["name/12",[685,0.863]],["text/12",[2,1.079,3,1.748,5,1.104,9,2.164,12,0.799,13,0.979,15,3.465,16,3.409,19,1.025,25,3.005,26,1.415,29,2.198,30,2.32,34,2.215,35,3.27,39,1.104,40,1.896,43,1.989,44,0.856,51,2.181,52,1.808,55,0.822,62,1.9,73,0.735,78,2.864,133,1.512,136,2.331,137,1.043,143,0.792,150,0.993,159,1.351,183,1.217,185,1.97,187,2.523,192,1.009,222,0.915,250,2.395,251,1.154,259,2.163,264,2.163,265,1.774,274,1.802,275,1.082,276,1.025,277,1.184,287,1.699,294,1.254,303,0.993,309,0.927,330,1.154,338,1.154,339,1.043,369,0.847,393,2.062,399,0.993,400,1.418,402,1.635,413,1.299,422,1.418,428,1.254,431,4.258,455,3.645,459,1.154,468,1.506,485,1.217,493,1.418,505,1.862,521,1.506,523,1.299,524,1.506,555,1.062,559,0.779,564,1.506,614,1.506,683,2.729,684,0.993,685,3.434,687,1.154,689,5.016,690,1.043,692,1.896,694,4.495,700,3.396,704,3.691,713,1.596,782,1.351,802,1.303,820,1.299,835,1.217,869,1.351,938,1.351,956,1.351,970,1.418,971,1.351,972,4.231,976,1.299,1000,1.254,1001,1.299,1002,1.418,1003,1.418,1022,3.248,1023,2.24,1024,5.494,1025,1.506,1026,1.217,1027,1.972,1028,3.396,1029,3.248,1030,1.351,1031,2.931,1032,1.254,1033,1.641,1034,1.641,1035,1.418,1036,1.641,1037,3.812,1038,1.299,1039,1.299,1040,1.418,1041,3.183,1042,1.128,1043,1.254,1044,2.69,1045,1.506,1046,1.641,1047,1.351,1048,1.184,1049,1.418,1050,1.351]],["component/12",[271,0.415]],["title/13-1",[1051,77.903]],["name/13-1",[]],["text/13-1",[]],["component/13-1",[]],["title/13-2",[92,37.605]],["name/13-2",[]],["text/13-2",[]],["component/13-2",[]],["title/13-3",[71,36.336]],["name/13-3",[]],["text/13-3",[]],["component/13-3",[]],["title/13-4",[559,36.954]],["name/13-4",[]],["text/13-4",[]],["component/13-4",[]],["title/13-5",[1052,50.903,1053,53.4]],["name/13-5",[]],["text/13-5",[]],["component/13-5",[]],["title/13-6",[1054,77.903]],["name/13-6",[]],["text/13-6",[]],["component/13-6",[]],["title/13-7",[92,29.84,144,25.254]],["name/13-7",[]],["text/13-7",[]],["component/13-7",[]],["title/13-8",[71,28.833,144,25.254]],["name/13-8",[]],["text/13-8",[]],["component/13-8",[]],["title/13-9",[144,25.254,559,29.324]],["name/13-9",[]],["text/13-9",[]],["component/13-9",[]],["title/13-10",[136,24.733,144,20.932,1055,47.031]],["name/13-10",[]],["text/13-10",[]],["component/13-10",[]],["title/13-11",[144,20.932,1052,42.191,1053,44.261]],["name/13-11",[]],["text/13-11",[]],["component/13-11",[]],["title/13-12",[1056,77.903]],["name/13-12",[]],["text/13-12",[]],["component/13-12",[]],["title/13-13",[92,29.84,144,25.254]],["name/13-13",[]],["text/13-13",[]],["component/13-13",[]],["title/13-14",[144,25.254,559,29.324]],["name/13-14",[]],["text/13-14",[]],["component/13-14",[]],["title/13-15",[144,15.594,244,21.293,670,24.255,671,25.677,1057,35.038]],["name/13-15",[]],["text/13-15",[]],["component/13-15",[]],["title/13-16",[144,20.932,790,33.145,1028,36.039]],["name/13-16",[]],["text/13-16",[]],["component/13-16",[]],["title/13-17",[1058,71.508]],["name/13-17",[]],["text/13-17",[]],["component/13-17",[]],["title/13-18",[92,37.605]],["name/13-18",[]],["text/13-18",[]],["component/13-18",[]],["title/13-19",[1059,67.295]],["name/13-19",[]],["text/13-19",[]],["component/13-19",[]],["title/13-20",[92,37.605]],["name/13-20",[]],["text/13-20",[]],["component/13-20",[]],["title/13-21",[71,36.336]],["name/13-21",[]],["text/13-21",[]],["component/13-21",[]],["title/13-22",[559,36.954]],["name/13-22",[]],["text/13-22",[]],["component/13-22",[]],["title/13-23",[1060,67.295]],["name/13-23",[]],["text/13-23",[]],["component/13-23",[]],["title/13-24",[92,37.605]],["name/13-24",[]],["text/13-24",[]],["component/13-24",[]],["title/13-25",[71,36.336]],["name/13-25",[]],["text/13-25",[]],["component/13-25",[]],["title/13-26",[559,36.954]],["name/13-26",[]],["text/13-26",[]],["component/13-26",[]],["title/13-27",[1061,67.295]],["name/13-27",[]],["text/13-27",[]],["component/13-27",[]],["title/13-28",[92,37.605]],["name/13-28",[]],["text/13-28",[]],["component/13-28",[]],["title/13-29",[71,36.336]],["name/13-29",[]],["text/13-29",[]],["component/13-29",[]],["title/13-30",[1062,71.508]],["name/13-30",[]],["text/13-30",[]],["component/13-30",[]],["title/13-31",[92,37.605]],["name/13-31",[]],["text/13-31",[]],["component/13-31",[]],["title/13-32",[71,36.336]],["name/13-32",[]],["text/13-32",[]],["component/13-32",[]],["title/13-33",[559,36.954]],["name/13-33",[]],["text/13-33",[]],["component/13-33",[]],["title/13-34",[1063,71.508]],["name/13-34",[]],["text/13-34",[]],["component/13-34",[]],["title/13-35",[92,37.605]],["name/13-35",[]],["text/13-35",[]],["component/13-35",[]],["title/13-36",[71,36.336]],["name/13-36",[]],["text/13-36",[]],["component/13-36",[]],["title/13-37",[559,36.954]],["name/13-37",[]],["text/13-37",[]],["component/13-37",[]],["title/13-38",[1064,77.903]],["name/13-38",[]],["text/13-38",[]],["component/13-38",[]],["title/13-39",[559,36.954]],["name/13-39",[]],["text/13-39",[]],["component/13-39",[]],["title/13-40",[1065,77.903]],["name/13-40",[]],["text/13-40",[]],["component/13-40",[]],["title/13-41",[1066,77.903]],["name/13-41",[]],["text/13-41",[]],["component/13-41",[]],["title/13-42",[92,37.605]],["name/13-42",[]],["text/13-42",[]],["component/13-42",[]],["title/13-43",[71,36.336]],["name/13-43",[]],["text/13-43",[]],["component/13-43",[]],["title/13-44",[1024,50.395]],["name/13-44",[]],["text/13-44",[]],["component/13-44",[]],["title/13-45",[559,36.954]],["name/13-45",[]],["text/13-45",[]],["component/13-45",[]],["title/13-46",[1067,77.903]],["name/13-46",[]],["text/13-46",[]],["component/13-46",[]],["title/13",[275,33.779,790,33.145,1001,40.539]],["name/13",[1068,1.42]],["text/13",[0,0.257,2,0.55,3,0.32,4,1.688,9,0.241,10,0.307,11,1.425,12,1.642,13,0.32,15,1.683,16,1.656,19,4.403,22,0.347,25,1.953,26,0.259,29,1.056,30,0.563,31,0.41,32,0.657,36,0.855,39,0.695,40,0.347,45,2.162,48,1.53,49,0.307,51,0.675,52,0.68,55,0.269,59,0.966,62,0.257,64,0.71,66,0.563,67,0.32,68,0.866,71,1.572,72,0.387,73,0.463,75,1.466,78,0.387,79,0.591,82,0.727,87,1.774,89,0.668,90,0.544,92,0.721,93,0.464,95,2.142,99,1.151,101,0.378,102,0.668,103,0.591,106,0.607,113,0.79,116,0.425,121,0.303,123,0.523,124,1.182,129,0.262,132,0.33,133,0.277,140,0.591,143,0.259,144,0.785,147,0.311,148,0.274,154,0.949,171,0.616,174,0.354,175,0.378,176,0.3,181,0.341,186,0.607,187,0.949,190,0.387,194,0.296,205,1.114,210,0.398,211,2.791,212,1.047,213,0.681,217,0.695,220,0.316,222,0.3,225,0.766,232,0.387,233,0.49,235,0.695,237,2.425,239,0.681,241,0.891,243,0.311,244,2.648,247,1.107,250,0.741,251,0.727,256,0.253,259,0.292,261,0.563,267,0.277,271,0.401,274,0.33,275,2.797,284,0.361,287,0.311,288,0.387,296,0.464,307,0.316,309,0.303,314,0.745,329,0.464,333,0.354,336,0.464,338,0.378,339,0.949,345,1.077,348,0.695,350,0.41,369,2.449,390,0.442,392,0.442,402,0.3,405,0.493,411,0.727,430,3.06,431,3.055,434,0.341,442,0.464,456,0.464,457,0.341,463,0.442,481,0.41,483,0.425,500,0.464,509,0.442,545,0.387,546,0.347,552,0.387,553,1.005,554,0.625,559,1.101,582,0.311,592,0.398,605,0.464,619,0.425,620,0.41,624,0.681,632,0.464,635,0.41,653,1.352,658,1.107,670,0.657,671,0.361,673,2.587,687,1.352,691,0.354,694,0.361,700,0.727,703,0.695,704,0.79,711,0.855,717,0.325,721,0.79,726,0.425,727,0.464,732,1.25,733,0.33,743,1.005,776,0.369,777,0.378,779,2.587,784,0.369,786,1.107,787,0.464,790,0.347,792,0.378,794,2.608,820,0.818,823,0.493,832,1.582,834,0.325,837,0.378,861,1.606,866,0.398,873,0.387,880,3.178,881,0.657,886,0.818,917,0.41,919,0.387,926,0.425,931,0.464,932,0.335,938,2.505,939,0.41,940,0.493,950,2.256,971,0.442,986,0.745,995,0.493,999,0.464,1001,2.667,1011,0.766,1013,0.493,1016,0.425,1022,1.293,1024,0.966,1026,0.398,1028,1.051,1035,0.464,1039,0.425,1041,1.267,1042,1.027,1044,1.371,1050,0.442,1052,1.911,1053,0.893,1055,0.493,1057,0.493,1059,1.29,1061,1.29,1068,0.493,1069,0.537,1070,0.425,1071,0.893,1072,0.893,1073,0.893,1074,1.494,1075,0.949,1076,1.033,1077,0.537,1078,1.371,1079,3.493,1080,0.949,1081,1.371,1082,0.464,1083,0.398,1084,3.969,1085,4.979,1086,1.033,1087,0.851,1088,0.378,1089,0.537,1090,0.537,1091,0.361,1092,2.321,1093,0.493,1094,2.854,1095,0.818,1096,0.537,1097,0.537,1098,0.537,1099,0.537,1100,0.537,1101,1.033,1102,0.537,1103,1.033,1104,0.493,1105,0.493,1106,0.537,1107,0.537,1108,0.537,1109,0.537,1110,0.537,1111,0.537,1112,0.537,1113,0.537,1114,0.537,1115,0.537,1116,0.537,1117,2.059,1118,0.234,1119,0.493,1120,0.537,1121,0.537,1122,0.537,1123,2.321,1124,2.13,1125,0.493,1126,0.537,1127,3.094,1128,0.537,1129,0.537,1130,0.537,1131,0.425,1132,0.537,1133,0.537,1134,0.537,1135,0.893,1136,1.033,1137,1.033,1138,0.537,1139,0.537,1140,1.033,1141,0.41,1142,0.537,1143,0.537,1144,0.537,1145,0.537,1146,0.442,1147,0.537,1148,0.537,1149,0.537,1150,1.66,1151,0.537,1152,0.537,1153,0.537,1154,0.537,1155,0.493,1156,0.493,1157,0.493,1158,0.537,1159,0.537,1160,0.537,1161,0.537,1162,0.493,1163,1.764,1164,0.442,1165,0.537,1166,1.033,1167,1.033,1168,0.537,1169,1.582,1170,0.493,1171,0.425,1172,0.464,1173,0.493,1174,0.537,1175,0.537,1176,0.493,1177,0.537,1178,0.537,1179,0.537,1180,0.537,1181,0.493,1182,0.537,1183,1.494,1184,1.033,1185,1.033,1186,1.494,1187,0.537,1188,3.376,1189,0.442,1190,1.033,1191,0.493,1192,0.949,1193,0.537,1194,0.893,1195,1.29,1196,0.493,1197,0.537,1198,0.464,1199,0.537,1200,0.537,1201,0.398,1202,0.41,1203,0.493,1204,0.537,1205,0.537,1206,0.537,1207,0.893,1208,0.537,1209,0.493,1210,0.537,1211,0.537,1212,0.818,1213,0.493,1214,0.493,1215,0.537,1216,0.537,1217,0.537,1218,0.493,1219,0.949,1220,0.537,1221,1.033,1222,0.493,1223,0.41,1224,0.537,1225,0.493,1226,0.425,1227,0.425,1228,0.493,1229,0.425,1230,1.033,1231,0.537,1232,0.493,1233,0.493,1234,0.32,1235,2.321,1236,1.033,1237,0.442,1238,0.537,1239,0.537,1240,0.493,1241,0.537,1242,0.537,1243,0.537,1244,0.464,1245,0.537,1246,0.537,1247,0.537,1248,0.354,1249,0.537,1250,0.745,1251,0.493,1252,0.537,1253,0.537,1254,0.537,1255,0.425,1256,0.537,1257,0.493,1258,0.537,1259,0.537,1260,0.537,1261,0.537,1262,0.537,1263,0.387,1264,0.537,1265,0.537,1266,0.537,1267,0.537,1268,0.493,1269,0.537,1270,0.537,1271,0.537,1272,1.033,1273,0.537,1274,0.537,1275,0.537,1276,0.537,1277,1.033,1278,0.347,1279,0.493,1280,0.537,1281,0.537,1282,0.341,1283,0.378,1284,0.425,1285,0.425,1286,0.387,1287,0.493,1288,0.537,1289,0.537,1290,0.537,1291,0.537,1292,0.537,1293,0.537,1294,0.464,1295,0.537,1296,0.537,1297,0.493]],["component/13",[271,0.415]],["title/14-1",[145,26.849,728,27.531,1029,25.677,1298,38.172,1299,32.974]],["name/14-1",[]],["text/14-1",[]],["component/14-1",[]],["title/14-2",[559,36.954]],["name/14-2",[]],["text/14-2",[]],["component/14-2",[]],["title/14-3",[1029,29.429,1299,57.28,1300,43.75]],["name/14-3",[]],["text/14-3",[]],["component/14-3",[]],["title/14-4",[559,36.954]],["name/14-4",[]],["text/14-4",[]],["component/14-4",[]],["title/14-5",[71,36.336]],["name/14-5",[]],["text/14-5",[]],["component/14-5",[]],["title/14-6",[1029,29.429,1299,37.793,1301,43.75,1302,36.026]],["name/14-6",[]],["text/14-6",[]],["component/14-6",[]],["title/14-7",[559,36.954]],["name/14-7",[]],["text/14-7",[]],["component/14-7",[]],["title/14-8",[1029,29.429,1303,43.75,1304,34.615,1305,36.026]],["name/14-8",[]],["text/14-8",[]],["component/14-8",[]],["title/14-9",[559,36.954]],["name/14-9",[]],["text/14-9",[]],["component/14-9",[]],["title/14-10",[71,36.336]],["name/14-10",[]],["text/14-10",[]],["component/14-10",[]],["title/14-11",[1029,29.429,1304,34.615,1305,36.026,1306,43.75]],["name/14-11",[]],["text/14-11",[]],["component/14-11",[]],["title/14-12",[92,37.605]],["name/14-12",[]],["text/14-12",[]],["component/14-12",[]],["title/14-13",[559,36.954]],["name/14-13",[]],["text/14-13",[]],["component/14-13",[]],["title/14-14",[71,36.336]],["name/14-14",[]],["text/14-14",[]],["component/14-14",[]],["title/14-15",[146,36.026,883,40.158,1029,29.429,1304,34.615]],["name/14-15",[]],["text/14-15",[]],["component/14-15",[]],["title/14-16",[559,36.954]],["name/14-16",[]],["text/14-16",[]],["component/14-16",[]],["title/14-17",[1029,29.429,1304,34.615,1307,43.75,1308,43.75]],["name/14-17",[]],["text/14-17",[]],["component/14-17",[]],["title/14-18",[559,36.954]],["name/14-18",[]],["text/14-18",[]],["component/14-18",[]],["title/14-19",[71,36.336]],["name/14-19",[]],["text/14-19",[]],["component/14-19",[]],["title/14-20",[1029,29.429,1302,36.026,1309,43.75,1310,37.793]],["name/14-20",[]],["text/14-20",[]],["component/14-20",[]],["title/14-21",[92,37.605]],["name/14-21",[]],["text/14-21",[]],["component/14-21",[]],["title/14-22",[146,36.026,1029,29.429,1302,36.026,1311,43.75]],["name/14-22",[]],["text/14-22",[]],["component/14-22",[]],["title/14-23",[92,37.605]],["name/14-23",[]],["text/14-23",[]],["component/14-23",[]],["title/14-24",[559,36.954]],["name/14-24",[]],["text/14-24",[]],["component/14-24",[]],["title/14-25",[559,36.954]],["name/14-25",[]],["text/14-25",[]],["component/14-25",[]],["title/14-26",[1312,77.903]],["name/14-26",[]],["text/14-26",[]],["component/14-26",[]],["title/14-27",[92,37.605]],["name/14-27",[]],["text/14-27",[]],["component/14-27",[]],["title/14-28",[559,36.954]],["name/14-28",[]],["text/14-28",[]],["component/14-28",[]],["title/14-29",[1313,77.903]],["name/14-29",[]],["text/14-29",[]],["component/14-29",[]],["title/14-30",[92,37.605]],["name/14-30",[]],["text/14-30",[]],["component/14-30",[]],["title/14-31",[559,36.954]],["name/14-31",[]],["text/14-31",[]],["component/14-31",[]],["title/14-32",[1314,71.508]],["name/14-32",[]],["text/14-32",[]],["component/14-32",[]],["title/14-33",[92,37.605]],["name/14-33",[]],["text/14-33",[]],["component/14-33",[]],["title/14-34",[559,36.954]],["name/14-34",[]],["text/14-34",[]],["component/14-34",[]],["title/14-35",[1058,71.508]],["name/14-35",[]],["text/14-35",[]],["component/14-35",[]],["title/14-36",[559,36.954]],["name/14-36",[]],["text/14-36",[]],["component/14-36",[]],["title/14-37",[1059,67.295]],["name/14-37",[]],["text/14-37",[]],["component/14-37",[]],["title/14-38",[1315,67.295]],["name/14-38",[]],["text/14-38",[]],["component/14-38",[]],["title/14-39",[92,37.605]],["name/14-39",[]],["text/14-39",[]],["component/14-39",[]],["title/14-40",[71,36.336]],["name/14-40",[]],["text/14-40",[]],["component/14-40",[]],["title/14-41",[559,36.954]],["name/14-41",[]],["text/14-41",[]],["component/14-41",[]],["title/14-42",[1024,50.395]],["name/14-42",[]],["text/14-42",[]],["component/14-42",[]],["title/14-43",[3,36.859,19,38.617]],["name/14-43",[]],["text/14-43",[]],["component/14-43",[]],["title/14-44",[402,34.483,1316,47.25]],["name/14-44",[]],["text/14-44",[]],["component/14-44",[]],["title/14-45",[71,28.833,866,45.829]],["name/14-45",[]],["text/14-45",[]],["component/14-45",[]],["title/14-46",[1317,77.903]],["name/14-46",[]],["text/14-46",[]],["component/14-46",[]],["title/14-47",[92,37.605]],["name/14-47",[]],["text/14-47",[]],["component/14-47",[]],["title/14-48",[559,36.954]],["name/14-48",[]],["text/14-48",[]],["component/14-48",[]],["title/14-49",[369,31.892,462,48.91]],["name/14-49",[]],["text/14-49",[]],["component/14-49",[]],["title/14-50",[1318,71.508]],["name/14-50",[]],["text/14-50",[]],["component/14-50",[]],["title/14-51",[92,37.605]],["name/14-51",[]],["text/14-51",[]],["component/14-51",[]],["title/14-52",[559,36.954]],["name/14-52",[]],["text/14-52",[]],["component/14-52",[]],["title/14-53",[71,36.336]],["name/14-53",[]],["text/14-53",[]],["component/14-53",[]],["title/14-54",[369,31.892,462,48.91]],["name/14-54",[]],["text/14-54",[]],["component/14-54",[]],["title/14-55",[1319,77.903]],["name/14-55",[]],["text/14-55",[]],["component/14-55",[]],["title/14-56",[559,36.954]],["name/14-56",[]],["text/14-56",[]],["component/14-56",[]],["title/14-57",[71,36.336]],["name/14-57",[]],["text/14-57",[]],["component/14-57",[]],["title/14-58",[1320,77.903]],["name/14-58",[]],["text/14-58",[]],["component/14-58",[]],["title/14-59",[92,37.605]],["name/14-59",[]],["text/14-59",[]],["component/14-59",[]],["title/14-60",[559,36.954]],["name/14-60",[]],["text/14-60",[]],["component/14-60",[]],["title/14-61",[1060,67.295]],["name/14-61",[]],["text/14-61",[]],["component/14-61",[]],["title/14-62",[1315,67.295]],["name/14-62",[]],["text/14-62",[]],["component/14-62",[]],["title/14-63",[685,28.581,687,36.039,866,37.985]],["name/14-63",[]],["text/14-63",[]],["component/14-63",[]],["title/14-64",[147,35.839,992,48.91]],["name/14-64",[]],["text/14-64",[]],["component/14-64",[]],["title/14-65",[700,43.48,1321,56.743]],["name/14-65",[]],["text/14-65",[]],["component/14-65",[]],["title/14-66",[722,39.279,866,45.829]],["name/14-66",[]],["text/14-66",[]],["component/14-66",[]],["title/14-67",[71,36.336]],["name/14-67",[]],["text/14-67",[]],["component/14-67",[]],["title/14-68",[559,36.954]],["name/14-68",[]],["text/14-68",[]],["component/14-68",[]],["title/14-69",[92,37.605]],["name/14-69",[]],["text/14-69",[]],["component/14-69",[]],["title/14-70",[275,33.779,1061,44.261,1212,40.539]],["name/14-70",[]],["text/14-70",[]],["component/14-70",[]],["title/14-71",[19,27.33,71,20.406,237,21.309,837,30.772]],["name/14-71",[]],["text/14-71",[]],["component/14-71",[]],["title/14-72",[25,15.834,431,28.939,1322,44.261]],["name/14-72",[]],["text/14-72",[]],["component/14-72",[]],["title/14",[275,33.779,790,33.145,1000,39.164]],["name/14",[1323,1.42]],["text/14",[2,0.13,3,0.957,4,1.859,5,0.68,6,0.238,9,1.076,11,1.592,12,1.612,15,0.432,16,1.624,19,4.181,20,0.763,22,1.218,25,1.805,26,1.598,29,0.731,30,2.201,32,0.836,36,0.203,39,1.444,40,0.654,43,0.346,45,0.406,48,1.241,49,0.395,51,0.16,52,2.546,55,0.346,57,0.306,59,1.389,60,0.256,64,0.244,65,0.214,66,0.551,67,0.211,68,0.205,69,0.203,71,2.066,72,0.498,73,0.453,74,0.432,75,0.572,78,0.949,79,0.578,82,0.925,87,0.271,90,0.364,92,0.488,95,0.642,96,0.191,99,1.065,100,0.528,106,0.208,111,0.256,121,0.743,123,0.179,124,0.28,127,0.211,133,0.183,140,0.753,144,1.174,147,2.038,148,1.582,150,0.612,151,0.372,154,0.439,155,0.597,156,0.234,157,0.263,158,1.176,162,0.425,163,0.234,165,0.654,166,0.475,171,0.957,174,0.455,175,0.711,176,0.564,180,1.08,182,0.385,184,1.444,185,1.191,186,0.944,190,0.256,193,0.612,194,0.195,195,1.339,199,1.139,200,0.249,202,0.68,207,0.256,210,0.512,211,1.51,214,0.325,222,0.198,231,0.39,233,0.328,235,0.68,237,1.712,241,1.431,242,0.2,243,0.205,244,1.603,249,0.256,250,0.653,251,1.688,256,0.475,257,0.211,258,0.325,259,0.716,261,0.551,263,0.578,264,0.875,265,0.796,267,1.363,270,0.238,271,0.138,274,0.218,275,2.92,278,0.528,288,0.256,290,0.263,300,1.615,303,0.612,307,0.594,309,0.2,313,0.306,320,0.292,330,0.711,336,0.597,339,0.439,341,0.292,343,0.634,346,0.262,350,0.528,353,2.55,355,0.238,356,0.528,368,0.292,369,1.483,371,0.325,375,0.325,380,0.271,388,0.306,393,0.711,399,0.612,402,1.198,413,0.28,417,0.475,419,0.292,423,0.475,425,0.306,430,0.729,431,3.553,433,0.292,434,1.196,438,0.306,442,0.306,457,0.225,483,0.28,485,0.263,491,0.569,505,0.439,525,0.486,537,0.325,545,0.256,552,0.498,554,0.612,557,0.256,559,0.893,562,0.229,565,0.325,573,0.8,574,0.631,576,0.271,582,0.401,600,0.28,601,0.244,602,0.306,603,1.207,604,0.325,605,0.306,618,1.976,619,0.547,622,0.325,623,0.306,624,0.234,635,0.271,644,2.425,653,0.249,654,0.306,670,0.439,671,0.465,673,0.925,685,1.846,687,2.472,689,0.836,690,0.836,691,0.455,692,0.654,700,3.116,704,0.773,705,2.274,711,0.955,712,0.214,716,0.218,717,0.214,718,0.191,721,0.271,722,0.642,728,0.729,729,0.229,732,0.191,736,2.367,743,0.238,750,0.547,759,0.249,762,1.27,774,0.292,776,1.816,779,0.486,784,0.904,786,0.263,790,0.229,792,0.711,794,0.621,798,0.8,799,0.28,816,0.271,825,0.306,831,0.244,835,0.263,837,1.129,839,0.271,849,0.597,861,1.28,866,2.752,867,0.547,873,0.256,880,2.675,881,0.439,886,0.28,901,0.569,909,0.244,917,1.227,919,0.256,926,2.091,952,0.634,961,0.28,968,0.263,976,0.28,979,0.486,981,0.597,991,0.292,992,0.28,996,1.474,997,0.695,999,0.306,1000,3.97,1011,0.263,1022,0.68,1024,1.039,1025,0.325,1026,0.749,1028,0.486,1035,0.306,1037,0.904,1038,0.28,1041,0.455,1042,1.294,1050,0.832,1052,0.292,1060,2.073,1062,0.325,1070,0.547,1071,0.306,1072,0.597,1075,0.325,1079,0.292,1082,0.306,1087,0.569,1088,0.486,1093,0.928,1094,0.238,1095,0.28,1117,1.005,1118,0.44,1124,0.928,1131,0.547,1135,0.306,1141,1.227,1155,0.325,1162,0.928,1169,0.832,1181,0.928,1188,0.928,1189,0.292,1196,0.325,1203,0.634,1209,1.474,1212,1.041,1213,1.474,1214,3.038,1218,0.928,1223,0.773,1226,0.28,1227,0.28,1229,0.28,1237,0.292,1244,0.873,1250,0.256,1255,0.28,1257,1.207,1268,0.325,1282,0.439,1284,0.28,1297,0.325,1314,0.325,1316,1.227,1318,0.325,1321,0.325,1322,1.136,1323,0.634,1324,0.569,1325,0.325,1326,0.354,1327,1.011,1328,0.354,1329,0.634,1330,0.306,1331,0.354,1332,0.306,1333,0.354,1334,0.354,1335,1.011,1336,0.354,1337,0.354,1338,0.354,1339,0.325,1340,0.325,1341,0.691,1342,0.597,1343,0.354,1344,0.354,1345,1.322,1346,0.306,1347,0.354,1348,0.597,1349,0.28,1350,0.354,1351,0.547,1352,0.354,1353,0.325,1354,0.354,1355,0.691,1356,0.354,1357,0.354,1358,0.634,1359,0.354,1360,0.292,1361,0.354,1362,0.354,1363,0.873,1364,0.249,1365,0.354,1366,0.354,1367,0.306,1368,0.354,1369,2.147,1370,2.874,1371,0.354,1372,0.354,1373,0.354,1374,0.634,1375,0.354,1376,0.354,1377,0.354,1378,0.354,1379,0.354,1380,0.354,1381,0.354,1382,0.354,1383,0.354,1384,0.354,1385,0.354,1386,0.354,1387,0.354,1388,0.533,1389,1.011,1390,0.498,1391,0.928,1392,0.691,1393,0.354,1394,0.928,1395,0.634,1396,0.873,1397,0.354,1398,0.354,1399,0.292,1400,0.325,1401,0.354,1402,0.325,1403,0.325,1404,0.354,1405,0.354,1406,0.354,1407,0.238,1408,0.354,1409,0.354,1410,0.354,1411,0.354,1412,0.691,1413,0.354,1414,0.354,1415,0.271,1416,0.354,1417,0.325,1418,0.354,1419,0.256,1420,0.354,1421,1.011,1422,0.691,1423,0.306,1424,0.306,1425,0.691,1426,0.691,1427,2.203,1428,0.354,1429,0.354,1430,0.354,1431,0.928,1432,0.306,1433,1.315,1434,0.354,1435,0.325,1436,3.515,1437,0.691,1438,0.325,1439,0.354,1440,1.606,1441,1.011,1442,1.011,1443,0.691,1444,0.691,1445,0.691,1446,0.238,1447,0.325,1448,0.271,1449,0.354,1450,0.354,1451,0.292,1452,0.354,1453,0.354,1454,0.354,1455,0.292,1456,1.315,1457,0.354,1458,0.354,1459,1.011,1460,1.883,1461,1.011,1462,0.634,1463,0.354,1464,0.354,1465,0.691,1466,0.354,1467,0.354,1468,0.354,1469,0.325,1470,0.325,1471,0.271,1472,0.354,1473,0.354,1474,0.354,1475,0.292,1476,0.325,1477,1.011,1478,0.354,1479,0.325,1480,0.354,1481,0.354,1482,0.354,1483,0.325,1484,0.292,1485,0.354,1486,0.354,1487,0.306,1488,0.354,1489,0.354,1490,0.325,1491,0.325,1492,0.325,1493,0.234,1494,0.691,1495,0.569,1496,0.354,1497,0.691,1498,0.354,1499,0.498,1500,0.325,1501,0.292,1502,0.354,1503,0.691,1504,0.634,1505,0.354,1506,0.354,1507,0.354,1508,0.354,1509,0.325,1510,0.306,1511,0.306,1512,0.354,1513,0.354,1514,0.354,1515,0.325,1516,0.325,1517,0.28,1518,0.354,1519,0.325,1520,0.256,1521,0.325,1522,0.354,1523,0.597,1524,0.354,1525,0.354,1526,0.354,1527,0.354,1528,0.354]],["component/14",[271,0.415]],["title/15-1",[237,24.955,244,28.581,1529,42.191]],["name/15-1",[]],["text/15-1",[]],["component/15-1",[]],["title/15",[25,15.834,237,24.955,1072,44.261]],["name/15",[1530,1.547]],["text/15",[25,3.363,51,3.484,62,3.692,144,3.152,148,3.94,237,5.3,244,5.505,275,5.086,728,5.564,790,4.991,1529,6.353,1531,7.082,1532,7.082,1533,7.082]],["component/15",[271,0.415]],["title/16-1",[25,19.104,303,37.411]],["name/16-1",[]],["text/16-1",[]],["component/16-1",[]],["title/16-2",[25,19.104,1534,53.4]],["name/16-2",[]],["text/16-2",[]],["component/16-2",[]],["title/16-3",[369,26.434,938,42.191,1022,34.466]],["name/16-3",[]],["text/16-3",[]],["component/16-3",[]],["title/16-4",[71,28.833,1390,44.585]],["name/16-4",[]],["text/16-4",[]],["component/16-4",[]],["title/16-5",[96,41.951]],["name/16-5",[]],["text/16-5",[]],["component/16-5",[]],["title/16-6",[716,37.996,1535,39.279]],["name/16-6",[]],["text/16-6",[]],["component/16-6",[]],["title/16-7",[12,30.108,264,33.671]],["name/16-7",[]],["text/16-7",[]],["component/16-7",[]],["title/16-8",[1118,33.878]],["name/16-8",[]],["text/16-8",[]],["component/16-8",[]],["title/16-9",[3,36.859,71,28.833]],["name/16-9",[]],["text/16-9",[]],["component/16-9",[]],["title/16-10",[244,34.483,1536,61.817]],["name/16-10",[]],["text/16-10",[]],["component/16-10",[]],["title/16-11",[151,33.289,212,33.671]],["name/16-11",[]],["text/16-11",[]],["component/16-11",[]],["title/16-12",[25,11.797,145,26.849,1040,32.974,1537,35.038,1538,27.531]],["name/16-12",[]],["text/16-12",[]],["component/16-12",[]],["title/16-13",[25,11.797,1045,35.038,1073,32.974,1538,27.531,1539,35.038]],["name/16-13",[]],["text/16-13",[]],["component/16-13",[]],["title/16-14",[9,27.703,309,34.915]],["name/16-14",[]],["text/16-14",[]],["component/16-14",[]],["title/16-15",[25,11.797,1194,32.974,1538,27.531,1540,38.172,1541,38.172]],["name/16-15",[]],["text/16-15",[]],["component/16-15",[]],["title/16-16",[25,11.797,1195,32.974,1538,27.531,1542,38.172,1543,38.172]],["name/16-16",[]],["text/16-16",[]],["component/16-16",[]],["title/16-17",[25,11.797,1226,30.201,1538,27.531,1544,35.038,1545,32.974]],["name/16-17",[]],["text/16-17",[]],["component/16-17",[]],["title/16-18",[25,13.52,1237,36.026,1538,31.554,1546,40.158]],["name/16-18",[]],["text/16-18",[]],["component/16-18",[]],["title/16-19",[25,13.52,1396,37.793,1538,47.825]],["name/16-19",[]],["text/16-19",[]],["component/16-19",[]],["title/16-20",[25,11.797,1041,25.165,1305,31.432,1538,27.531,1547,38.172]],["name/16-20",[]],["text/16-20",[]],["component/16-20",[]],["title/16-21",[25,11.797,1050,31.432,1545,32.974,1548,38.172,1549,29.177]],["name/16-21",[]],["text/16-21",[]],["component/16-21",[]],["title/16-22",[25,11.797,1305,31.432,1322,32.974,1539,35.038,1549,29.177]],["name/16-22",[]],["text/16-22",[]],["component/16-22",[]],["title/16-23",[25,11.797,1310,32.974,1549,29.177,1550,35.038,1551,38.172]],["name/16-23",[]],["text/16-23",[]],["component/16-23",[]],["title/16-24",[25,11.797,1302,31.432,1549,29.177,1552,38.172,1553,38.172]],["name/16-24",[]],["text/16-24",[]],["component/16-24",[]],["title/16-25",[25,11.797,1544,35.038,1549,29.177,1554,38.172,1555,25.165]],["name/16-25",[]],["text/16-25",[]],["component/16-25",[]],["title/16-26",[25,11.797,1304,30.201,1549,29.177,1556,38.172,1557,35.038]],["name/16-26",[]],["text/16-26",[]],["component/16-26",[]],["title/16",[25,15.834,275,33.779,790,33.145]],["name/16",[1558,1.547]],["text/16",[0,1.353,1,0.25,2,2.366,3,1.817,4,2.347,6,0.234,8,1.413,9,2.924,10,0.902,11,0.257,12,1.872,13,0.404,18,0.476,19,0.217,20,0.748,22,1.02,24,0.41,25,2.234,26,0.623,27,0.234,28,0.465,29,0.96,30,2.564,31,0.758,32,0.43,37,0.196,39,1.06,42,0.234,44,0.181,45,0.398,48,0.229,49,0.199,50,0.225,51,0.835,52,2.269,55,0.789,59,0.225,60,0.25,62,1.243,64,0.239,65,0.21,66,0.189,67,0.207,68,0.575,69,0.387,71,2.997,72,0.715,73,1.722,74,0.217,75,1.229,78,0.25,79,0.387,82,0.244,84,0.239,85,0.265,87,0.758,88,0.244,89,0.225,90,1.489,92,0.327,95,1.002,96,1.136,99,1.717,101,0.244,106,0.204,107,0.257,109,0.213,121,1.044,123,0.935,124,0.275,125,0.234,127,1.102,128,0.856,129,0.169,130,0.265,131,0.25,132,0.609,133,0.349,136,2.027,140,0.567,142,0.25,143,0.623,144,2.705,145,0.244,147,0.201,148,0.659,149,0.275,150,0.21,151,0.849,153,0.213,154,0.82,156,0.229,157,0.502,158,0.217,164,0.404,165,0.225,169,0.275,176,0.378,181,0.221,182,0.194,183,0.502,184,0.456,185,1.814,186,0.398,188,0.319,189,0.319,192,0.213,194,1.163,195,1.577,196,0.217,197,0.536,198,0.239,199,0.21,200,0.476,204,0.758,207,0.25,211,0.476,212,0.369,213,0.229,220,0.204,222,0.879,225,0.257,226,0.244,231,0.196,232,0.488,233,0.748,236,0.585,237,3.401,241,0.404,242,0.383,243,1.223,244,0.553,247,0.257,249,0.25,250,1.289,252,0.244,254,0.3,256,0.163,257,0.207,259,0.369,260,0.234,261,0.859,262,0.257,263,0.738,264,2.192,265,0.781,266,0.654,267,1.34,268,0.553,269,0.25,274,0.213,275,0.654,276,0.217,277,0.25,278,0.265,284,0.234,287,0.201,297,2.039,303,0.41,309,1.044,312,0.558,315,0.456,325,0.265,330,0.476,333,0.229,338,0.697,339,0.43,340,0.43,346,1.235,348,0.234,352,0.275,356,0.265,359,0.321,369,1.983,372,0.225,377,0.239,389,0.319,392,1.298,393,0.697,399,0.954,403,0.239,407,0.275,415,0.3,416,0.3,417,0.887,419,1.942,423,0.239,425,0.3,428,0.265,430,0.715,431,2.895,433,0.286,441,0.207,448,0.319,451,0.196,454,0.229,457,0.43,459,0.244,466,0.257,470,0.225,481,0.518,483,0.275,487,0.239,491,0.286,497,0.286,498,0.229,505,0.43,519,0.622,523,0.275,544,0.286,545,0.25,546,0.225,548,0.217,552,0.715,553,0.234,554,0.781,559,0.47,574,0.423,582,0.393,592,0.257,601,0.239,607,0.319,618,0.286,624,0.446,632,0.3,662,1.063,670,0.63,671,0.667,672,0.404,673,0.697,676,0.3,683,0.681,685,0.72,689,1.34,690,1.651,691,0.229,694,1.244,699,0.286,700,1.3,703,0.234,704,0.758,711,1.626,712,0.6,713,0.54,715,0.265,716,1.297,717,0.41,718,0.187,722,0.63,728,0.25,729,0.225,732,1.399,736,1.803,745,0.518,748,0.609,749,0.217,750,1.463,756,0.319,757,0.286,763,0.265,782,0.286,784,0.465,786,0.502,788,0.3,789,0.622,790,0.641,792,0.697,794,2.684,798,0.275,799,0.275,807,0.3,816,0.265,824,0.286,831,0.887,832,0.286,833,0.244,834,0.21,837,0.476,846,0.476,849,0.3,861,2.18,863,0.697,869,0.286,873,0.25,879,0.25,881,0.221,886,0.275,901,0.286,909,0.465,917,0.518,926,1.021,932,0.217,964,0.715,967,0.558,972,0.887,997,0.681,1010,0.257,1011,0.502,1022,0.234,1024,1.526,1026,0.735,1027,1.244,1028,0.697,1030,0.286,1040,0.3,1041,0.654,1042,0.887,1043,2.329,1047,0.816,1048,0.488,1073,0.3,1078,0.319,1080,0.319,1081,0.319,1088,0.244,1094,0.456,1095,0.784,1117,0.265,1118,0.151,1125,0.319,1131,0.536,1135,0.585,1156,0.319,1192,0.319,1194,0.3,1195,0.3,1207,0.585,1212,0.784,1226,0.275,1227,0.536,1228,1.185,1234,0.591,1237,0.286,1255,0.275,1278,0.225,1282,0.43,1285,0.275,1310,0.585,1324,0.286,1332,0.3,1339,0.319,1345,0.816,1363,0.3,1374,0.622,1390,0.715,1394,0.319,1396,0.3,1415,0.265,1419,0.25,1446,1.747,1447,0.319,1448,0.265,1471,0.758,1475,0.286,1495,0.286,1499,0.25,1501,0.558,1520,0.25,1529,0.816,1531,0.319,1532,0.319,1533,0.319,1534,0.856,1535,0.43,1555,0.229,1559,0.3,1560,0.217,1561,0.3,1562,0.3,1563,0.91,1564,0.991,1565,1.185,1566,0.991,1567,0.347,1568,0.856,1569,0.991,1570,1.659,1571,0.476,1572,0.286,1573,0.585,1574,0.585,1575,0.3,1576,0.347,1577,0.319,1578,0.319,1579,0.991,1580,0.347,1581,0.622,1582,1.185,1583,0.347,1584,0.3,1585,0.229,1586,0.319,1587,0.319,1588,0.319,1589,0.275,1590,0.677,1591,0.677,1592,0.265,1593,0.319,1594,0.319,1595,0.3,1596,0.677,1597,0.347,1598,0.3,1599,0.319,1600,0.229,1601,0.585,1602,0.347,1603,0.347,1604,0.347,1605,0.286,1606,0.347,1607,0.347,1608,0.677,1609,0.347,1610,0.347,1611,0.347,1612,0.585,1613,0.239,1614,0.347,1615,0.319,1616,0.677,1617,0.816,1618,1.291,1619,0.286,1620,0.275,1621,0.347,1622,0.558,1623,0.319,1624,0.619,1625,0.347,1626,0.347,1627,0.991,1628,0.221,1629,0.286,1630,0.347,1631,0.265,1632,0.347,1633,0.347,1634,0.3,1635,0.319,1636,0.677,1637,0.239,1638,0.347,1639,0.347,1640,0.319,1641,1.185,1642,0.347,1643,0.347,1644,0.347,1645,0.286,1646,0.347,1647,0.347,1648,0.275,1649,0.286,1650,0.585,1651,0.347,1652,0.286,1653,0.347,1654,0.536,1655,0.234,1656,0.319,1657,0.677,1658,0.347,1659,0.347,1660,0.286,1661,0.319,1662,0.347,1663,0.347,1664,0.347,1665,0.347,1666,0.347,1667,0.25,1668,0.347,1669,0.465,1670,0.319,1671,0.286,1672,0.518,1673,0.347,1674,0.91,1675,0.3,1676,0.3,1677,0.585,1678,0.347,1679,0.347,1680,0.347,1681,0.347,1682,0.991,1683,0.816,1684,1.115,1685,1.291,1686,0.3,1687,0.244,1688,0.622,1689,0.347,1690,0.3,1691,0.347,1692,0.347,1693,0.347,1694,0.347,1695,0.347,1696,0.347,1697,0.347,1698,0.347,1699,0.3,1700,0.3,1701,0.347,1702,0.319,1703,0.3,1704,0.319,1705,0.347,1706,0.347,1707,0.275,1708,0.347,1709,0.347,1710,0.347,1711,0.3,1712,0.347,1713,0.319,1714,0.347,1715,0.347,1716,0.347,1717,0.347,1718,0.347,1719,0.265,1720,0.347,1721,0.347,1722,0.319,1723,0.286,1724,0.347]],["component/16",[271,0.415]],["title/17",[3,26.086,15,27.33,16,26.891,187,27.799]],["name/17",[3,0.498,187,0.53]],["text/17",[3,6.026,15,5.003,16,5.83,19,4.533,25,2.931,42,2.026,51,1.36,52,1.371,58,4.881,59,4.059,60,2.172,61,1.822,62,2.362,63,2.601,64,2.07,133,1.554,143,1.454,144,1.23,176,4.468,219,2.233,237,3.056,242,1.701,250,1.494,274,1.851,287,1.746,323,3.561,431,1.701,444,2.172,488,2.764,525,2.118,599,3.906,635,2.302,673,4.413,762,2.383,802,1.339,864,2.764,865,2.764,968,2.233,1000,2.302,1001,2.383,1002,2.601,1003,2.601,1070,3.906,1227,4.964,1278,3.194,1469,2.764,1470,2.764,1605,2.48,1725,4.937,1726,3.011,1727,3.011,1728,3.011,1729,3.011,1730,3.011,1731,3.011,1732,3.011,1733,3.011,1734,3.011,1735,3.011,1736,3.011,1737,3.011,1738,3.011,1739,3.011,1740,2.764,1741,2.764,1742,3.011,1743,3.011,1744,3.011,1745,3.011,1746,3.011,1747,3.011,1748,3.011,1749,3.011,1750,3.011,1751,3.011,1752,3.011,1753,3.011,1754,3.011,1755,3.011]],["component/17",[271,0.415]],["title/18",[176,34.483,310,50.903]],["name/18",[310,1.274]],["text/18",[2,3.218,25,2.701,133,2.618,143,2.449,176,4.13,180,3.413,187,3.224,190,3.659,229,4.98,242,4.181,310,7.198,465,3.878,470,3.282,599,4.014,705,4.014,874,3.659,1070,4.014,1091,3.413,1278,3.282,1667,3.659,1756,4.657,1757,8.741,1758,5.074,1759,5.074,1760,5.074,1761,5.074,1762,5.074,1763,5.074,1764,5.074,1765,5.074,1766,5.074,1767,5.074,1768,5.074,1769,5.074,1770,5.074,1771,5.074,1772,5.074,1773,5.074,1774,5.074,1775,5.074,1776,5.074,1777,5.074,1778,5.074,1779,5.074,1780,5.074]],["component/18",[271,0.415]],["title/19",[324,36.336,1560,38.617]],["name/19",[1781,1.42]],["text/19",[2,3.333,25,2.798,26,3.265,36,2.57,43,3.388,52,2.045,59,2.906,73,3.031,79,2.57,133,3.49,148,4.624,194,2.475,198,3.087,233,5.024,242,2.537,324,6.226,689,4.298,690,2.854,694,3.021,695,3.433,722,2.854,760,2.208,972,3.087,1451,5.57,1555,4.459,1560,6.376,1613,4.649,1782,4.123,1783,4.123,1784,4.123,1785,5.843,1786,4.123,1787,4.123,1788,4.492,1789,4.492]],["component/19",[271,0.415]],["title/20",[1028,30.772,1037,30.069,1790,54.602]],["name/20",[1791,1.547]],["text/20",[2,2.058,9,1.148,25,2.264,26,2.083,34,1.429,40,1.657,43,1.283,44,1.335,48,1.689,52,3.845,54,1.958,58,2.903,66,1.395,69,2.469,70,2.212,73,2.506,109,1.574,133,1.321,144,1.046,148,1.308,150,2.611,182,2.407,187,1.627,199,1.55,249,1.847,263,1.465,268,1.429,307,2.536,324,4.667,361,2.351,369,4.358,394,2.026,431,1.447,444,3.112,457,1.627,458,2.212,493,2.212,499,1.958,541,2.351,553,1.723,554,1.55,728,1.847,729,1.657,820,2.026,824,2.109,835,1.899,926,3.414,950,3.199,1022,2.903,1028,1.801,1037,5.457,1117,1.958,1471,3.298,1491,6.023,1499,1.847,1501,2.109,1537,2.351,1560,4.099,1654,2.026,1785,2.212,1790,9.34,1792,4.315,1793,4.315,1794,4.315,1795,3.961,1796,4.965,1797,2.026,1798,3.933,1799,3.437,1800,2.561,1801,2.561,1802,2.561,1803,2.561,1804,2.351,1805,2.561,1806,4.315,1807,2.351,1808,2.212,1809,2.561,1810,2.561]],["component/20",[271,0.415]],["title/21-1",[684,47.146]],["name/21-1",[]],["text/21-1",[]],["component/21-1",[]],["title/21-2",[]],["name/21-2",[]],["text/21-2",[]],["component/21-2",[]],["title/21-3",[239,51.359]],["name/21-3",[]],["text/21-3",[]],["component/21-3",[]],["title/21-4",[1811,54.794]],["name/21-4",[]],["text/21-4",[]],["component/21-4",[]],["title/21-5",[]],["name/21-5",[]],["text/21-5",[]],["component/21-5",[]],["title/21-6",[25,15.834,915,44.261,1032,39.164]],["name/21-6",[]],["text/21-6",[]],["component/21-6",[]],["title/21-7",[25,18.449,1812,51.569,1813,35.038]],["name/21-7",[]],["text/21-7",[]],["component/21-7",[]],["title/21-8",[]],["name/21-8",[]],["text/21-8",[]],["component/21-8",[]],["title/21-9",[239,51.359]],["name/21-9",[]],["text/21-9",[]],["component/21-9",[]],["title/21-10",[1811,54.794]],["name/21-10",[]],["text/21-10",[]],["component/21-10",[]],["title/21-11",[]],["name/21-11",[]],["text/21-11",[]],["component/21-11",[]],["title/21-12",[1814,71.508]],["name/21-12",[]],["text/21-12",[]],["component/21-12",[]],["title/21-13",[]],["name/21-13",[]],["text/21-13",[]],["component/21-13",[]],["title/21-14",[]],["name/21-14",[]],["text/21-14",[]],["component/21-14",[]],["title/21-15",[9,19.606,562,28.302,763,33.44,845,30.069]],["name/21-15",[]],["text/21-15",[]],["component/21-15",[]],["title/21-16",[]],["name/21-16",[]],["text/21-16",[]],["component/21-16",[]],["title/21-17",[239,51.359]],["name/21-17",[]],["text/21-17",[]],["component/21-17",[]],["title/21-18",[1811,54.794]],["name/21-18",[]],["text/21-18",[]],["component/21-18",[]],["title/21-19",[]],["name/21-19",[]],["text/21-19",[]],["component/21-19",[]],["title/21-20",[25,19.104,1815,56.743]],["name/21-20",[]],["text/21-20",[]],["component/21-20",[]],["title/21-21",[]],["name/21-21",[]],["text/21-21",[]],["component/21-21",[]],["title/21-22",[239,51.359]],["name/21-22",[]],["text/21-22",[]],["component/21-22",[]],["title/21-23",[1811,54.794]],["name/21-23",[]],["text/21-23",[]],["component/21-23",[]],["title/21-24",[]],["name/21-24",[]],["text/21-24",[]],["component/21-24",[]],["title/21-25",[1816,56.743,1817,53.4]],["name/21-25",[]],["text/21-25",[]],["component/21-25",[]],["title/21-26",[]],["name/21-26",[]],["text/21-26",[]],["component/21-26",[]],["title/21-27",[239,51.359]],["name/21-27",[]],["text/21-27",[]],["component/21-27",[]],["title/21-28",[1811,54.794]],["name/21-28",[]],["text/21-28",[]],["component/21-28",[]],["title/21-29",[]],["name/21-29",[]],["text/21-29",[]],["component/21-29",[]],["title/21-30",[25,15.834,1817,44.261,1818,47.031]],["name/21-30",[]],["text/21-30",[]],["component/21-30",[]],["title/21-31",[]],["name/21-31",[]],["text/21-31",[]],["component/21-31",[]],["title/21-32",[239,51.359]],["name/21-32",[]],["text/21-32",[]],["component/21-32",[]],["title/21-33",[1811,54.794]],["name/21-33",[]],["text/21-33",[]],["component/21-33",[]],["title/21-34",[]],["name/21-34",[]],["text/21-34",[]],["component/21-34",[]],["title/21-35",[9,17.106,123,19.304,1495,31.432,1819,35.038,1820,35.038]],["name/21-35",[]],["text/21-35",[]],["component/21-35",[]],["title/21-36",[]],["name/21-36",[]],["text/21-36",[]],["component/21-36",[]],["title/21-37",[239,51.359]],["name/21-37",[]],["text/21-37",[]],["component/21-37",[]],["title/21-38",[1811,54.794]],["name/21-38",[]],["text/21-38",[]],["component/21-38",[]],["title/21-39",[]],["name/21-39",[]],["text/21-39",[]],["component/21-39",[]],["title/21",[25,15.834,276,32.008,277,36.955]],["name/21",[1821,1.547]],["text/21",[0,1.141,1,0.4,2,2.176,3,0.635,4,0.99,9,2.473,12,0.519,13,0.331,16,0.341,19,1.95,24,0.335,25,2.973,30,1.42,34,0.309,36,0.317,37,0.602,40,0.995,44,1.801,48,0.365,49,0.317,51,0.695,52,3.429,55,1.195,58,0.373,59,1.279,61,0.645,62,1.141,64,2.983,65,0.335,66,0.58,67,1.179,71,0.497,73,1.548,75,0.463,80,0.365,84,1.639,90,0.292,92,0.268,95,0.677,96,0.828,99,2.737,101,0.39,107,0.411,114,0.39,117,0.509,118,0.479,119,1.708,120,0.424,121,2.128,123,0.778,125,0.373,129,0.27,133,0.55,136,2.095,143,0.268,144,0.226,147,0.618,150,0.645,151,0.299,155,0.479,156,0.365,162,0.655,164,0.331,170,0.509,171,0.635,174,0.702,176,0.858,178,1.014,180,0.373,181,1.984,182,1.927,185,0.529,190,1.426,193,0.335,194,0.848,211,0.39,213,0.702,223,0.456,225,0.411,231,0.869,232,0.4,237,1.521,239,0.365,241,0.635,242,0.313,243,0.321,244,0.309,250,1.183,251,2.858,252,0.749,259,0.302,264,0.302,267,0.55,270,0.373,271,0.597,272,0.39,273,0.479,274,0.946,276,4.018,277,3.667,280,0.424,284,0.373,288,1.11,289,0.479,290,0.411,301,0.877,302,0.626,303,0.931,304,1.329,306,0.79,314,1.11,315,0.373,319,0.411,324,0.626,330,0.749,333,1.573,338,0.39,346,0.583,348,1.33,349,0.439,351,0.456,352,0.439,359,0.938,364,0.479,369,0.794,399,0.335,402,0.309,403,0.381,408,0.768,413,1.217,419,0.456,426,0.456,430,0.4,431,1.763,444,1.11,445,0.456,447,0.509,451,0.602,459,0.749,462,0.439,465,0.424,470,0.359,481,4.056,482,0.424,492,0.509,498,0.702,499,0.424,510,0.424,514,0.439,520,0.509,525,1.391,534,0.479,544,0.456,546,0.689,554,0.931,559,0.263,562,0.689,582,1.383,583,0.439,601,1.057,602,0.479,609,0.768,617,0.479,637,0.509,653,0.39,658,0.411,659,0.456,670,1.256,671,0.373,673,0.39,682,0.424,683,1.901,684,2.281,689,0.978,690,0.352,692,0.689,700,0.39,703,1.605,704,0.424,712,0.335,713,0.838,716,0.341,722,0.677,728,0.4,741,0.509,748,0.341,762,0.439,763,1.176,770,0.92,779,0.39,783,0.39,793,0.479,815,1.573,833,0.39,834,0.645,839,0.424,841,0.381,845,1.057,857,0.479,861,0.635,866,0.411,874,0.768,877,0.439,882,1.708,899,1.141,909,0.381,917,0.424,919,2.492,922,0.978,931,0.479,932,0.961,934,0.978,963,0.479,964,0.4,965,0.479,968,1.141,970,1.329,976,0.843,993,0.509,997,0.381,1022,2.535,1024,0.359,1027,0.373,1029,0.373,1032,1.511,1043,0.424,1063,0.509,1070,0.843,1071,0.479,1094,0.373,1095,0.439,1141,0.814,1150,0.479,1171,0.843,1189,0.456,1227,1.564,1240,0.509,1248,0.365,1251,0.509,1283,0.39,1294,0.479,1315,0.479,1316,2.114,1325,0.509,1349,1.564,1363,0.479,1403,0.978,1423,1.708,1435,0.509,1479,0.509,1490,0.509,1495,0.456,1509,1.815,1510,0.479,1516,0.509,1519,0.509,1520,0.768,1521,0.509,1555,0.702,1557,0.509,1598,0.479,1613,0.732,1640,0.509,1656,0.509,1660,0.456,1667,0.768,1672,0.424,1677,1.329,1723,0.456,1756,0.978,1795,0.509,1811,0.39,1812,4.94,1813,3.172,1814,3.459,1815,2.866,1816,2.866,1817,3.51,1818,4.224,1819,0.978,1820,0.978,1822,0.554,1823,0.509,1824,0.439,1825,0.439,1826,0.554,1827,0.456,1828,0.554,1829,0.554,1830,1.329,1831,0.4,1832,0.554,1833,1.977,1834,1.066,1835,1.066,1836,0.554,1837,0.554,1838,0.554,1839,0.554,1840,0.554,1841,0.479,1842,0.554,1843,0.843,1844,0.554,1845,0.978,1846,1.977,1847,0.554,1848,1.977,1849,1.066,1850,1.538,1851,0.554,1852,0.554,1853,0.554,1854,0.554,1855,0.456,1856,0.554,1857,1.066,1858,0.554,1859,0.554,1860,0.554,1861,0.554,1862,0.509,1863,0.554,1864,0.554,1865,0.411,1866,0.554,1867,1.977,1868,0.554,1869,1.066,1870,0.554,1871,0.359,1872,0.554,1873,1.066,1874,0.479,1875,0.456,1876,0.978,1877,0.509,1878,0.554,1879,0.554,1880,0.479,1881,0.554,1882,0.554,1883,0.554,1884,0.479,1885,0.509,1886,0.554,1887,0.554,1888,0.554,1889,0.554,1890,1.066,1891,0.456,1892,0.509,1893,0.554,1894,0.554,1895,0.554,1896,0.554,1897,0.554,1898,0.554]],["component/21",[271,0.415]],["title/22-1",[25,19.104,690,39.279]],["name/22-1",[]],["text/22-1",[]],["component/22-1",[]],["title/22-2",[25,13.52,237,21.309,689,27.799,694,29.429]],["name/22-2",[]],["text/22-2",[]],["component/22-2",[]],["title/22-3",[25,13.52,237,21.309,689,27.799,972,30.069]],["name/22-3",[]],["text/22-3",[]],["component/22-3",[]],["title/22-4",[25,15.834,185,25.419,324,30.117]],["name/22-4",[]],["text/22-4",[]],["component/22-4",[]],["title/22-5",[25,15.834,324,30.117,406,42.191]],["name/22-5",[]],["text/22-5",[]],["component/22-5",[]],["title/22",[2,16.106,20,25.365,25,13.52,233,20.753]],["name/22",[1899,1.547]],["text/22",[2,2.49,3,4.033,20,3.922,25,3.057,27,4.55,32,4.298,43,2.704,51,2.438,62,2.583,99,1.668,142,3.894,185,1.668,233,4.692,234,3.086,240,2.904,250,1.668,280,2.57,287,1.949,324,3.173,333,4.459,334,3.086,369,1.735,406,2.769,411,3.797,428,2.57,431,3.049,523,2.66,685,1.876,689,6.285,690,4.298,694,5.704,705,5.352,707,4.955,972,4.649,1024,3.492,1027,2.262,1030,2.769,1427,6.209,1560,2.1,1561,2.904,1562,2.904,1900,3.362,1901,3.362,1902,3.362,1903,3.362,1904,3.362,1905,3.362,1906,3.362,1907,3.362,1908,3.362,1909,3.362,1910,6.209,1911,3.362,1912,3.362,1913,3.362]],["component/22",[271,0.415]],["title/23",[148,31.572,307,36.336]],["name/23",[1914,1.547]],["text/23",[2,2.697,4,3.848,9,2.664,10,3.962,12,1.849,25,2.264,26,1.346,29,0.707,30,1.746,43,0.778,44,1.979,61,0.94,65,1.688,71,0.724,77,1.425,79,3.056,83,1.804,87,1.187,88,1.092,89,1.005,90,0.818,95,0.987,96,1.502,105,1.341,106,0.913,109,2.334,111,1.12,122,2.61,123,0.785,127,1.663,143,2.237,147,2.687,148,1.939,153,0.954,161,1.425,174,1.024,182,0.866,190,1.12,192,0.954,194,1.537,195,0.866,199,0.94,205,1.617,217,1.045,226,4.549,229,1.045,231,2.145,233,2.534,244,0.866,259,0.846,307,4.873,308,1.187,314,1.12,318,1.341,332,1.425,341,1.279,346,0.589,348,1.045,364,1.341,392,1.279,417,3.185,554,2.298,557,1.12,558,1.229,562,1.005,598,1.341,620,1.187,643,1.425,653,1.092,685,0.866,690,0.987,694,1.045,695,1.187,703,1.045,713,0.846,716,0.954,736,1.187,745,2.902,751,2.297,802,0.691,932,0.97,939,2.132,972,1.067,979,1.092,1011,4.408,1083,1.151,1087,3.816,1088,4.182,1173,1.425,1198,3.28,1278,1.005,1438,1.425,1446,2.554,1535,0.987,1584,3.28,1592,1.187,1628,2.413,1687,2.671,1843,1.229,1915,1.425,1916,1.917,1917,1.341,1918,1.553,1919,6.146,1920,3.797,1921,1.553,1922,1.425,1923,9.969,1924,1.279,1925,1.341,1926,1.553,1927,3.797,1928,3.797,1929,1.341,1930,1.553,1931,3.797,1932,3.797,1933,5.341,1934,1.553,1935,3.797,1936,2.297]],["component/23",[271,0.415]],["title/24",[4,30.96,272,43.48]],["name/24",[1937,1.547]],["text/24",[4,5.2,25,2.585,30,2.268,49,3.444,51,2.719,62,4.002,65,3.644,73,2.698,133,3.106,143,2.906,176,3.358,272,7.943,288,6.032,705,4.764,897,5.526,1079,4.958,1278,3.895,1892,5.526,1938,5.526,1939,6.021,1940,6.021,1941,6.021,1942,6.021,1943,6.021,1944,6.021,1945,6.021,1946,5.526,1947,6.021]],["component/24",[271,0.415]],["title/25-1",[151,33.289,212,33.671]],["name/25-1",[]],["text/25-1",[]],["component/25-1",[]],["title/25",[92,24.733,324,30.117,1796,30.117]],["name/25",[1796,0.491,1948,0.835]],["text/25",[2,3.646,4,2.356,12,4.313,26,1.371,34,2.624,43,3.507,52,4.217,56,1.997,71,1.325,73,2.108,74,1.774,75,3.045,92,1.371,116,2.247,123,1.436,148,1.45,182,1.584,192,1.745,194,1.565,244,1.584,272,3.309,282,4.063,300,1.91,324,5.446,333,1.872,346,2.941,369,4.315,402,1.584,431,2.657,444,3.393,451,2.657,457,1.804,465,2.171,480,2.105,538,2.105,573,2.247,624,1.872,635,2.171,638,2.338,683,1.952,794,4.77,833,4.925,881,1.804,901,2.338,1250,3.393,1555,5.514,1560,5.225,1613,5.748,1796,4.561,1925,2.453,1949,2.607,1950,3.873,1951,4.063,1952,2.607,1953,2.453,1954,4.063,1955,2.84,1956,2.84,1957,2.84]],["component/25",[271,0.415]],["title/26-1",[151,33.289,212,33.671]],["name/26-1",[]],["text/26-1",[]],["component/26-1",[]],["title/26",[44,26.709,95,32.557,1799,31.493]],["name/26",[1796,0.491,1958,0.835]],["text/26",[2,2.542,26,3.805,36,3.167,43,3.948,44,3.6,45,2.039,49,3.167,52,2.52,55,1.737,61,2.099,90,1.827,99,1.721,107,2.571,133,1.79,139,2.384,151,2.981,158,2.167,162,4.245,182,1.935,195,1.935,202,2.333,248,2.571,259,3.015,308,4.231,346,3.909,359,1.645,363,4.558,482,2.651,487,2.384,494,2.996,498,5.679,548,3.458,711,2.461,776,3.804,778,4.379,909,2.384,1091,2.333,1095,2.744,1229,2.744,1723,2.856,1799,6.499,1831,2.502,1959,3.184,1960,7.931,1961,2.996,1962,3.184,1963,7.931,1964,3.184,1965,3.184,1966,4.781,1967,2.996]],["component/26",[271,0.415]],["title/27-1",[324,30.117,431,28.939,1796,30.117]],["name/27-1",[]],["text/27-1",[]],["component/27-1",[]],["title/27-2",[548,32.008,1049,44.261,1799,31.493]],["name/27-2",[]],["text/27-2",[]],["component/27-2",[]],["title/27-3",[10,19.369,26,16.342,55,16.956,143,16.342,346,12.831,1799,20.809]],["name/27-3",[]],["text/27-3",[]],["component/27-3",[]],["title/27-4",[10,21.838,25,11.797,287,22.131,308,29.177,1799,23.462]],["name/27-4",[]],["text/27-4",[]],["component/27-4",[]],["title/27-5",[4,16.956,10,19.369,99,16.796,126,23.268,548,21.149,1628,21.512]],["name/27-5",[]],["text/27-5",[]],["component/27-5",[]],["title/27-6",[548,32.008,1798,36.039,1968,42.191]],["name/27-6",[]],["text/27-6",[]],["component/27-6",[]],["title/27-7",[10,21.838,43,19.118,50,24.693,143,18.426,1798,26.849]],["name/27-7",[]],["text/27-7",[]],["component/27-7",[]],["title/27-8",[4,15.233,10,17.401,30,11.46,99,15.089,126,20.904,287,17.634,1798,21.393]],["name/27-8",[]],["text/27-8",[]],["component/27-8",[]],["title/27-9",[10,21.838,26,18.426,498,25.165,548,23.846,1628,24.255]],["name/27-9",[]],["text/27-9",[]],["component/27-9",[]],["title/27-10",[151,33.289,212,33.671]],["name/27-10",[]],["text/27-10",[]],["component/27-10",[]],["title/27",[280,39.164,1560,32.008,1796,30.117]],["name/27",[1560,0.521,1796,0.491]],["text/27",[0,0.61,2,2.421,4,2.326,5,0.858,10,1.334,18,1.641,20,2.693,25,2.032,26,4.108,27,2.169,29,1.814,30,1.502,32,0.81,34,1.798,36,2.28,43,3.637,49,1.334,50,2.578,51,0.576,52,1.468,55,2.326,59,1.509,61,1.412,64,0.876,67,0.76,73,1.045,85,0.974,99,1.157,106,0.749,111,0.919,123,0.645,126,1.603,127,1.391,137,2.049,143,0.615,147,0.739,158,0.796,162,0.784,166,1.603,168,1.009,176,0.711,186,0.749,192,0.784,194,1.285,199,0.772,206,1.101,231,1.317,233,1.891,235,0.858,237,1.136,242,0.72,244,2.223,250,0.632,252,0.897,256,0.6,259,3.581,263,1.334,276,0.796,282,1.101,302,0.749,307,1.371,308,0.974,323,1.682,324,4.442,338,0.897,340,2.533,346,2.629,411,2.804,423,1.603,431,2.251,434,0.81,444,0.919,451,0.72,453,1.17,467,1.05,485,0.945,498,3.062,516,1.009,525,0.897,546,0.825,547,1.101,548,3.576,554,0.772,555,0.825,574,0.796,638,1.05,658,0.945,659,1.921,685,0.711,689,1.482,690,1.482,694,0.858,695,0.974,713,1.27,722,1.482,776,0.876,779,2.268,792,1.641,797,1.101,799,1.009,841,0.876,861,1.922,881,1.482,918,1.009,919,0.919,932,0.796,950,0.945,961,1.845,972,0.876,998,0.974,1010,0.945,1024,0.825,1118,1.014,1172,1.101,1278,1.509,1283,1.641,1388,0.672,1455,1.05,1555,2.126,1560,5.185,1613,2.216,1782,1.17,1783,1.17,1784,1.17,1790,1.05,1796,4.442,1797,1.009,1798,3.267,1799,5.231,1891,1.05,1916,3.587,1969,1.275,1970,1.275,1971,0.974,1972,1.17,1973,1.17,1974,1.101,1975,1.05,1976,1.17,1977,1.101,1978,1.05,1979,1.05,1980,2.785,1981,1.05,1982,1.275,1983,3.224,1984,1.101,1985,1.275,1986,1.275,1987,1.101,1988,1.275,1989,1.275,1990,2.015,1991,1.17,1992,0.974,1993,1.17,1994,1.921,1995,2.015,1996,1.17,1997,1.275]],["component/27",[271,0.415]],["title/28-1",[151,33.289,212,33.671]],["name/28-1",[]],["text/28-1",[]],["component/28-1",[]],["title/28",[1201,45.829,1799,37.996]],["name/28",[1201,0.424,1796,0.336,1799,0.351]],["text/28",[26,1.674,34,3.087,43,3.459,49,1.984,51,1.567,54,2.651,55,2.772,65,2.099,95,3.517,109,2.132,162,3.402,174,2.287,186,2.039,205,2.011,243,2.011,346,2.988,393,3.893,498,5.197,513,2.996,554,3.35,594,2.502,759,4.858,779,4.858,780,4.558,839,2.651,899,2.571,918,4.379,1146,2.856,1201,7.417,1348,2.996,1407,4.646,1612,2.996,1703,2.996,1796,5.063,1799,6.637,1871,2.244,1916,2.384,1971,2.651,1998,2.856,1999,3.184,2000,2.996,2001,3.469,2002,3.184,2003,3.184,2004,6.491,2005,6.491,2006,4.379,2007,5.081,2008,4.781,2009,6.809,2010,3.184]],["component/28",[271,0.415]],["title/29",[184,34.466,185,25.419,1796,30.117]],["name/29",[1796,0.491,2011,0.835]],["text/29",[0,2.881,26,4.639,30,3.621,43,4.189,51,2.719,52,2.741,62,2.881,73,2.698,144,3.417,151,3.242,184,6.464,185,5.413,212,3.279,250,2.987,259,4.555,297,4.342,346,2.282,1048,4.342,1796,3.539,1799,3.701,1951,5.201,2012,6.021,2013,7.224,2014,7.224]],["component/29",[271,0.415]],["title/30-1",[562,33.145,1796,30.117,2015,44.261]],["name/30-1",[]],["text/30-1",[]],["component/30-1",[]],["title/30-2",[682,47.25,1560,38.617]],["name/30-2",[]],["text/30-2",[]],["component/30-2",[]],["title/30-3",[2,18.862,359,24.305,1977,44.261]],["name/30-3",[]],["text/30-3",[]],["component/30-3",[]],["title/30-4",[242,28.939,682,39.164,1560,32.008]],["name/30-4",[]],["text/30-4",[]],["component/30-4",[]],["title/30-5",[307,36.336,1798,43.48]],["name/30-5",[]],["text/30-5",[]],["component/30-5",[]],["title/30-6",[151,33.289,212,33.671]],["name/30-6",[]],["text/30-6",[]],["component/30-6",[]],["title/30",[56,43.48,1796,36.336]],["name/30",[2016,1.547]],["text/30",[2,3.63,9,1.291,12,1.403,13,2.139,25,1.301,26,2.935,34,1.152,36,0.639,37,1.626,43,2.628,49,1.648,51,0.504,52,1.311,55,0.559,61,0.676,64,1.979,65,0.676,68,0.647,73,1.291,75,0.486,76,0.767,80,0.736,92,0.997,99,2.088,101,0.785,109,0.686,123,0.565,137,0.709,142,0.805,143,0.539,148,0.57,153,0.686,176,0.623,186,0.656,187,0.709,191,1.025,194,1.977,195,1.152,205,0.647,213,1.899,217,0.751,227,0.964,229,1.937,231,0.631,233,2.697,237,1.006,242,0.631,244,0.623,256,0.525,260,0.751,262,0.828,268,0.623,276,0.697,296,0.964,300,0.751,302,0.656,307,2.109,311,0.919,312,0.919,324,5.238,327,0.919,335,0.964,339,0.709,346,2.875,369,0.576,373,1.025,376,1.025,397,1.895,402,0.623,406,0.919,410,2.643,411,1.452,413,1.634,418,1.025,428,0.853,431,3.637,444,0.805,445,0.919,451,1.166,457,1.83,462,0.883,465,0.853,466,0.828,467,0.919,485,0.828,498,0.736,499,0.853,516,0.883,543,0.767,555,0.722,557,0.805,562,1.336,596,1.783,617,0.964,620,0.853,621,1.895,682,2.743,686,0.883,690,0.709,699,0.919,712,0.676,757,0.919,760,0.549,769,0.883,794,0.686,822,0.785,824,0.919,832,0.919,833,0.785,835,0.828,837,0.785,881,0.709,932,0.697,950,1.531,978,0.964,998,0.853,1011,0.828,1037,0.767,1117,1.578,1157,1.025,1164,0.919,1219,1.025,1223,0.853,1278,0.722,1358,1.025,1555,3.46,1560,5.741,1613,3.607,1654,0.883,1686,1.783,1687,0.785,1781,1.025,1790,3.466,1796,5.052,1797,3.765,1798,2.524,1799,3.225,1804,1.025,1841,0.964,1855,0.919,1891,0.919,1910,1.025,1925,0.964,1949,1.025,1950,1.7,1953,0.964,1954,0.964,1975,1.7,1976,1.025,1977,2.488,2005,0.919,2015,1.783,2017,1.7,2018,1.783,2019,1.116,2020,1.116,2021,1.116,2022,1.116,2023,1.116,2024,1.116,2025,1.116,2026,1.116,2027,1.116,2028,1.116,2029,2.065,2030,2.065,2031,1.025,2032,1.116,2033,1.116,2034,1.783,2035,1.116,2036,2.065,2037,1.116,2038,1.116,2039,1.116,2040,3.588,2041,1.116,2042,1.116,2043,1.116,2044,1.116,2045,3.588,2046,1.116,2047,1.116,2048,2.065,2049,1.116,2050,1.116,2051,1.116,2052,1.025,2053,1.116,2054,1.116,2055,1.116,2056,1.116,2057,1.116,2058,1.116,2059,1.116,2060,1.116,2061,2.065,2062,1.116,2063,1.116,2064,1.116,2065,1.116,2066,1.116,2067,1.025]],["component/30",[271,0.415]],["title/31-1",[26,24.733,34,28.581,346,19.419]],["name/31-1",[]],["text/31-1",[]],["component/31-1",[]],["title/31-2",[1799,47.883]],["name/31-2",[]],["text/31-2",[]],["component/31-2",[]],["title/31-3",[802,34.645]],["name/31-3",[]],["text/31-3",[]],["component/31-3",[]],["title/31-4",[2068,48.666]],["name/31-4",[]],["text/31-4",[]],["component/31-4",[]],["title/31-5",[29,28.14,2069,37.996]],["name/31-5",[]],["text/31-5",[]],["component/31-5",[]],["title/31-6",[760,38.291]],["name/31-6",[]],["text/31-6",[]],["component/31-6",[]],["title/31-7",[711,34.645]],["name/31-7",[]],["text/31-7",[]],["component/31-7",[]],["title/31-8",[1118,26.883,1388,32.566]],["name/31-8",[]],["text/31-8",[]],["component/31-8",[]],["title/31-9",[129,24.955,346,19.419,1118,22.282]],["name/31-9",[]],["text/31-9",[]],["component/31-9",[]],["title/31-10",[2008,67.295]],["name/31-10",[]],["text/31-10",[]],["component/31-10",[]],["title/31-11",[802,34.645]],["name/31-11",[]],["text/31-11",[]],["component/31-11",[]],["title/31-12",[2068,48.666]],["name/31-12",[]],["text/31-12",[]],["component/31-12",[]],["title/31-13",[29,28.14,2069,37.996]],["name/31-13",[]],["text/31-13",[]],["component/31-13",[]],["title/31-14",[760,38.291]],["name/31-14",[]],["text/31-14",[]],["component/31-14",[]],["title/31-15",[711,34.645]],["name/31-15",[]],["text/31-15",[]],["component/31-15",[]],["title/31-16",[1118,26.883,1388,32.566]],["name/31-16",[]],["text/31-16",[]],["component/31-16",[]],["title/31-17",[129,24.955,346,19.419,1118,22.282]],["name/31-17",[]],["text/31-17",[]],["component/31-17",[]],["title/31-18",[2009,67.295]],["name/31-18",[]],["text/31-18",[]],["component/31-18",[]],["title/31-19",[802,34.645]],["name/31-19",[]],["text/31-19",[]],["component/31-19",[]],["title/31-20",[2068,48.666]],["name/31-20",[]],["text/31-20",[]],["component/31-20",[]],["title/31-21",[29,28.14,2069,37.996]],["name/31-21",[]],["text/31-21",[]],["component/31-21",[]],["title/31-22",[760,38.291]],["name/31-22",[]],["text/31-22",[]],["component/31-22",[]],["title/31-23",[711,34.645]],["name/31-23",[]],["text/31-23",[]],["component/31-23",[]],["title/31-24",[1118,26.883,1388,32.566]],["name/31-24",[]],["text/31-24",[]],["component/31-24",[]],["title/31-25",[129,24.955,346,19.419,1118,22.282]],["name/31-25",[]],["text/31-25",[]],["component/31-25",[]],["title/31-26",[51,35.184]],["name/31-26",[]],["text/31-26",[]],["component/31-26",[]],["title/31-27",[1960,67.295]],["name/31-27",[]],["text/31-27",[]],["component/31-27",[]],["title/31-28",[802,34.645]],["name/31-28",[]],["text/31-28",[]],["component/31-28",[]],["title/31-29",[2068,48.666]],["name/31-29",[]],["text/31-29",[]],["component/31-29",[]],["title/31-30",[29,28.14,2069,37.996]],["name/31-30",[]],["text/31-30",[]],["component/31-30",[]],["title/31-31",[760,38.291]],["name/31-31",[]],["text/31-31",[]],["component/31-31",[]],["title/31-32",[711,34.645]],["name/31-32",[]],["text/31-32",[]],["component/31-32",[]],["title/31-33",[1118,26.883,1388,32.566]],["name/31-33",[]],["text/31-33",[]],["component/31-33",[]],["title/31-34",[129,24.955,346,19.419,1118,22.282]],["name/31-34",[]],["text/31-34",[]],["component/31-34",[]],["title/31-35",[1966,67.295]],["name/31-35",[]],["text/31-35",[]],["component/31-35",[]],["title/31-36",[802,34.645]],["name/31-36",[]],["text/31-36",[]],["component/31-36",[]],["title/31-37",[2068,48.666]],["name/31-37",[]],["text/31-37",[]],["component/31-37",[]],["title/31-38",[29,28.14,2069,37.996]],["name/31-38",[]],["text/31-38",[]],["component/31-38",[]],["title/31-39",[760,38.291]],["name/31-39",[]],["text/31-39",[]],["component/31-39",[]],["title/31-40",[711,34.645]],["name/31-40",[]],["text/31-40",[]],["component/31-40",[]],["title/31-41",[1118,26.883,1388,32.566]],["name/31-41",[]],["text/31-41",[]],["component/31-41",[]],["title/31-42",[129,24.955,346,19.419,1118,22.282]],["name/31-42",[]],["text/31-42",[]],["component/31-42",[]],["title/31-43",[51,35.184]],["name/31-43",[]],["text/31-43",[]],["component/31-43",[]],["title/31-44",[1967,67.295]],["name/31-44",[]],["text/31-44",[]],["component/31-44",[]],["title/31-45",[802,34.645]],["name/31-45",[]],["text/31-45",[]],["component/31-45",[]],["title/31-46",[2068,48.666]],["name/31-46",[]],["text/31-46",[]],["component/31-46",[]],["title/31-47",[29,28.14,2069,37.996]],["name/31-47",[]],["text/31-47",[]],["component/31-47",[]],["title/31-48",[760,38.291]],["name/31-48",[]],["text/31-48",[]],["component/31-48",[]],["title/31-49",[711,34.645]],["name/31-49",[]],["text/31-49",[]],["component/31-49",[]],["title/31-50",[1118,26.883,1388,32.566]],["name/31-50",[]],["text/31-50",[]],["component/31-50",[]],["title/31-51",[129,24.955,346,19.419,1118,22.282]],["name/31-51",[]],["text/31-51",[]],["component/31-51",[]],["title/31-52",[51,35.184]],["name/31-52",[]],["text/31-52",[]],["component/31-52",[]],["title/31-53",[1950,64.149]],["name/31-53",[]],["text/31-53",[]],["component/31-53",[]],["title/31-54",[802,34.645]],["name/31-54",[]],["text/31-54",[]],["component/31-54",[]],["title/31-55",[2068,48.666]],["name/31-55",[]],["text/31-55",[]],["component/31-55",[]],["title/31-56",[29,28.14,2069,37.996]],["name/31-56",[]],["text/31-56",[]],["component/31-56",[]],["title/31-57",[760,38.291]],["name/31-57",[]],["text/31-57",[]],["component/31-57",[]],["title/31-58",[711,34.645]],["name/31-58",[]],["text/31-58",[]],["component/31-58",[]],["title/31-59",[1118,26.883,1388,32.566]],["name/31-59",[]],["text/31-59",[]],["component/31-59",[]],["title/31-60",[129,24.955,346,19.419,1118,22.282]],["name/31-60",[]],["text/31-60",[]],["component/31-60",[]],["title/31-61",[2013,67.295]],["name/31-61",[]],["text/31-61",[]],["component/31-61",[]],["title/31-62",[802,34.645]],["name/31-62",[]],["text/31-62",[]],["component/31-62",[]],["title/31-63",[2068,48.666]],["name/31-63",[]],["text/31-63",[]],["component/31-63",[]],["title/31-64",[29,28.14,2069,37.996]],["name/31-64",[]],["text/31-64",[]],["component/31-64",[]],["title/31-65",[760,38.291]],["name/31-65",[]],["text/31-65",[]],["component/31-65",[]],["title/31-66",[711,34.645]],["name/31-66",[]],["text/31-66",[]],["component/31-66",[]],["title/31-67",[1118,26.883,1388,32.566]],["name/31-67",[]],["text/31-67",[]],["component/31-67",[]],["title/31-68",[129,30.108,346,23.429]],["name/31-68",[]],["text/31-68",[]],["component/31-68",[]],["title/31-69",[151,33.289,212,33.671]],["name/31-69",[]],["text/31-69",[]],["component/31-69",[]],["title/31-70",[2014,67.295]],["name/31-70",[]],["text/31-70",[]],["component/31-70",[]],["title/31-71",[802,34.645]],["name/31-71",[]],["text/31-71",[]],["component/31-71",[]],["title/31-72",[2068,48.666]],["name/31-72",[]],["text/31-72",[]],["component/31-72",[]],["title/31-73",[29,28.14,2069,37.996]],["name/31-73",[]],["text/31-73",[]],["component/31-73",[]],["title/31-74",[760,38.291]],["name/31-74",[]],["text/31-74",[]],["component/31-74",[]],["title/31-75",[711,34.645]],["name/31-75",[]],["text/31-75",[]],["component/31-75",[]],["title/31-76",[1118,26.883,1388,32.566]],["name/31-76",[]],["text/31-76",[]],["component/31-76",[]],["title/31-77",[129,30.108,346,23.429]],["name/31-77",[]],["text/31-77",[]],["component/31-77",[]],["title/31-78",[151,33.289,212,33.671]],["name/31-78",[]],["text/31-78",[]],["component/31-78",[]],["title/31-79",[2018,67.295]],["name/31-79",[]],["text/31-79",[]],["component/31-79",[]],["title/31-80",[802,34.645]],["name/31-80",[]],["text/31-80",[]],["component/31-80",[]],["title/31-81",[2068,48.666]],["name/31-81",[]],["text/31-81",[]],["component/31-81",[]],["title/31-82",[29,28.14,2069,37.996]],["name/31-82",[]],["text/31-82",[]],["component/31-82",[]],["title/31-83",[760,38.291]],["name/31-83",[]],["text/31-83",[]],["component/31-83",[]],["title/31-84",[711,34.645]],["name/31-84",[]],["text/31-84",[]],["component/31-84",[]],["title/31-85",[1118,26.883,1388,32.566]],["name/31-85",[]],["text/31-85",[]],["component/31-85",[]],["title/31-86",[129,30.108,346,23.429]],["name/31-86",[]],["text/31-86",[]],["component/31-86",[]],["title/31-87",[2070,71.508]],["name/31-87",[]],["text/31-87",[]],["component/31-87",[]],["title/31-88",[802,34.645]],["name/31-88",[]],["text/31-88",[]],["component/31-88",[]],["title/31-89",[2068,48.666]],["name/31-89",[]],["text/31-89",[]],["component/31-89",[]],["title/31-90",[29,28.14,2069,37.996]],["name/31-90",[]],["text/31-90",[]],["component/31-90",[]],["title/31-91",[760,38.291]],["name/31-91",[]],["text/31-91",[]],["component/31-91",[]],["title/31-92",[711,34.645]],["name/31-92",[]],["text/31-92",[]],["component/31-92",[]],["title/31-93",[1118,26.883,1388,32.566]],["name/31-93",[]],["text/31-93",[]],["component/31-93",[]],["title/31-94",[129,30.108,346,23.429]],["name/31-94",[]],["text/31-94",[]],["component/31-94",[]],["title/31-95",[2071,71.508]],["name/31-95",[]],["text/31-95",[]],["component/31-95",[]],["title/31-96",[802,34.645]],["name/31-96",[]],["text/31-96",[]],["component/31-96",[]],["title/31-97",[2068,48.666]],["name/31-97",[]],["text/31-97",[]],["component/31-97",[]],["title/31-98",[29,28.14,2069,37.996]],["name/31-98",[]],["text/31-98",[]],["component/31-98",[]],["title/31-99",[760,38.291]],["name/31-99",[]],["text/31-99",[]],["component/31-99",[]],["title/31-100",[711,34.645]],["name/31-100",[]],["text/31-100",[]],["component/31-100",[]],["title/31-101",[1118,26.883,1388,32.566]],["name/31-101",[]],["text/31-101",[]],["component/31-101",[]],["title/31-102",[129,30.108,346,23.429]],["name/31-102",[]],["text/31-102",[]],["component/31-102",[]],["title/31-103",[2072,71.508]],["name/31-103",[]],["text/31-103",[]],["component/31-103",[]],["title/31-104",[802,34.645]],["name/31-104",[]],["text/31-104",[]],["component/31-104",[]],["title/31-105",[2068,48.666]],["name/31-105",[]],["text/31-105",[]],["component/31-105",[]],["title/31-106",[29,28.14,2069,37.996]],["name/31-106",[]],["text/31-106",[]],["component/31-106",[]],["title/31-107",[760,38.291]],["name/31-107",[]],["text/31-107",[]],["component/31-107",[]],["title/31-108",[711,34.645]],["name/31-108",[]],["text/31-108",[]],["component/31-108",[]],["title/31-109",[1118,26.883,1388,32.566]],["name/31-109",[]],["text/31-109",[]],["component/31-109",[]],["title/31-110",[129,30.108,346,23.429]],["name/31-110",[]],["text/31-110",[]],["component/31-110",[]],["title/31-111",[74,48.666]],["name/31-111",[]],["text/31-111",[]],["component/31-111",[]],["title/31-112",[802,34.645]],["name/31-112",[]],["text/31-112",[]],["component/31-112",[]],["title/31-113",[2068,48.666]],["name/31-113",[]],["text/31-113",[]],["component/31-113",[]],["title/31-114",[29,28.14,2069,37.996]],["name/31-114",[]],["text/31-114",[]],["component/31-114",[]],["title/31-115",[760,38.291]],["name/31-115",[]],["text/31-115",[]],["component/31-115",[]],["title/31-116",[711,34.645]],["name/31-116",[]],["text/31-116",[]],["component/31-116",[]],["title/31-117",[1118,26.883,1388,32.566]],["name/31-117",[]],["text/31-117",[]],["component/31-117",[]],["title/31-118",[129,30.108,346,23.429]],["name/31-118",[]],["text/31-118",[]],["component/31-118",[]],["title/31-119",[2073,71.508]],["name/31-119",[]],["text/31-119",[]],["component/31-119",[]],["title/31-120",[802,34.645]],["name/31-120",[]],["text/31-120",[]],["component/31-120",[]],["title/31-121",[2068,48.666]],["name/31-121",[]],["text/31-121",[]],["component/31-121",[]],["title/31-122",[29,28.14,2069,37.996]],["name/31-122",[]],["text/31-122",[]],["component/31-122",[]],["title/31-123",[760,38.291]],["name/31-123",[]],["text/31-123",[]],["component/31-123",[]],["title/31-124",[711,34.645]],["name/31-124",[]],["text/31-124",[]],["component/31-124",[]],["title/31-125",[1118,26.883,1388,32.566]],["name/31-125",[]],["text/31-125",[]],["component/31-125",[]],["title/31-126",[129,30.108,346,23.429]],["name/31-126",[]],["text/31-126",[]],["component/31-126",[]],["title/31-127",[1798,54.794]],["name/31-127",[]],["text/31-127",[]],["component/31-127",[]],["title/31-128",[802,34.645]],["name/31-128",[]],["text/31-128",[]],["component/31-128",[]],["title/31-129",[760,38.291]],["name/31-129",[]],["text/31-129",[]],["component/31-129",[]],["title/31-130",[29,28.14,2069,37.996]],["name/31-130",[]],["text/31-130",[]],["component/31-130",[]],["title/31-131",[711,34.645]],["name/31-131",[]],["text/31-131",[]],["component/31-131",[]],["title/31-132",[1118,26.883,1388,32.566]],["name/31-132",[]],["text/31-132",[]],["component/31-132",[]],["title/31-133",[129,24.955,346,19.419,1118,22.282]],["name/31-133",[]],["text/31-133",[]],["component/31-133",[]],["title/31-134",[34,28.581,43,25.662,346,19.419]],["name/31-134",[]],["text/31-134",[]],["component/31-134",[]],["title/31-135",[2074,71.508]],["name/31-135",[]],["text/31-135",[]],["component/31-135",[]],["title/31-136",[802,34.645]],["name/31-136",[]],["text/31-136",[]],["component/31-136",[]],["title/31-137",[760,38.291]],["name/31-137",[]],["text/31-137",[]],["component/31-137",[]],["title/31-138",[711,34.645]],["name/31-138",[]],["text/31-138",[]],["component/31-138",[]],["title/31-139",[129,30.108,346,23.429]],["name/31-139",[]],["text/31-139",[]],["component/31-139",[]],["title/31-140",[2075,71.508]],["name/31-140",[]],["text/31-140",[]],["component/31-140",[]],["title/31-141",[802,34.645]],["name/31-141",[]],["text/31-141",[]],["component/31-141",[]],["title/31-142",[760,38.291]],["name/31-142",[]],["text/31-142",[]],["component/31-142",[]],["title/31-143",[711,34.645]],["name/31-143",[]],["text/31-143",[]],["component/31-143",[]],["title/31-144",[129,30.108,346,23.429]],["name/31-144",[]],["text/31-144",[]],["component/31-144",[]],["title/31-145",[2076,71.508]],["name/31-145",[]],["text/31-145",[]],["component/31-145",[]],["title/31-146",[802,34.645]],["name/31-146",[]],["text/31-146",[]],["component/31-146",[]],["title/31-147",[760,38.291]],["name/31-147",[]],["text/31-147",[]],["component/31-147",[]],["title/31-148",[711,34.645]],["name/31-148",[]],["text/31-148",[]],["component/31-148",[]],["title/31-149",[129,30.108,346,23.429]],["name/31-149",[]],["text/31-149",[]],["component/31-149",[]],["title/31-150",[2077,71.508]],["name/31-150",[]],["text/31-150",[]],["component/31-150",[]],["title/31-151",[802,34.645]],["name/31-151",[]],["text/31-151",[]],["component/31-151",[]],["title/31-152",[760,38.291]],["name/31-152",[]],["text/31-152",[]],["component/31-152",[]],["title/31-153",[711,34.645]],["name/31-153",[]],["text/31-153",[]],["component/31-153",[]],["title/31-154",[129,30.108,346,23.429]],["name/31-154",[]],["text/31-154",[]],["component/31-154",[]],["title/31-155",[2078,71.508]],["name/31-155",[]],["text/31-155",[]],["component/31-155",[]],["title/31-156",[802,34.645]],["name/31-156",[]],["text/31-156",[]],["component/31-156",[]],["title/31-157",[760,38.291]],["name/31-157",[]],["text/31-157",[]],["component/31-157",[]],["title/31-158",[711,34.645]],["name/31-158",[]],["text/31-158",[]],["component/31-158",[]],["title/31-159",[129,30.108,346,23.429]],["name/31-159",[]],["text/31-159",[]],["component/31-159",[]],["title/31-160",[2079,71.508]],["name/31-160",[]],["text/31-160",[]],["component/31-160",[]],["title/31-161",[802,34.645]],["name/31-161",[]],["text/31-161",[]],["component/31-161",[]],["title/31-162",[760,38.291]],["name/31-162",[]],["text/31-162",[]],["component/31-162",[]],["title/31-163",[711,34.645]],["name/31-163",[]],["text/31-163",[]],["component/31-163",[]],["title/31-164",[129,30.108,346,23.429]],["name/31-164",[]],["text/31-164",[]],["component/31-164",[]],["title/31-165",[1990,67.295]],["name/31-165",[]],["text/31-165",[]],["component/31-165",[]],["title/31-166",[802,34.645]],["name/31-166",[]],["text/31-166",[]],["component/31-166",[]],["title/31-167",[760,38.291]],["name/31-167",[]],["text/31-167",[]],["component/31-167",[]],["title/31-168",[711,34.645]],["name/31-168",[]],["text/31-168",[]],["component/31-168",[]],["title/31-169",[129,30.108,346,23.429]],["name/31-169",[]],["text/31-169",[]],["component/31-169",[]],["title/31-170",[1963,67.295]],["name/31-170",[]],["text/31-170",[]],["component/31-170",[]],["title/31-171",[802,34.645]],["name/31-171",[]],["text/31-171",[]],["component/31-171",[]],["title/31-172",[760,38.291]],["name/31-172",[]],["text/31-172",[]],["component/31-172",[]],["title/31-173",[711,34.645]],["name/31-173",[]],["text/31-173",[]],["component/31-173",[]],["title/31-174",[129,30.108,346,23.429]],["name/31-174",[]],["text/31-174",[]],["component/31-174",[]],["title/31",[34,24.404,346,16.581,1118,19.026,1796,25.716]],["name/31",[2080,1.547]],["text/31",[0,0.996,2,3.359,3,0.204,4,0.489,12,1.134,25,0.793,26,2.702,27,0.23,30,1.432,34,0.372,36,0.728,37,0.719,43,3.337,44,0.663,45,1.369,49,0.382,50,0.632,51,0.441,52,2.111,55,1.043,61,0.941,62,0.164,65,0.77,69,0.196,71,0.16,73,0.697,74,0.417,75,1.013,90,0.515,91,0.261,99,0.771,101,0.469,106,0.201,109,0.41,114,0.241,120,0.261,123,0.173,125,2.301,133,0.657,136,1.005,137,0.424,139,0.875,143,0.322,148,1.189,153,0.21,157,0.254,158,0.61,162,1.28,167,0.613,169,0.271,171,0.204,176,1.018,178,1.373,179,0.271,182,0.372,184,0.856,185,1.273,187,1.323,199,0.207,202,0.23,207,0.247,208,0.295,209,0.672,231,0.193,233,4.746,237,0.888,241,0.398,242,0.552,244,0.372,248,0.254,254,0.576,256,0.599,259,2.527,261,0.364,268,0.191,272,0.241,280,0.261,281,3.345,287,0.198,289,0.295,302,0.201,308,0.747,309,0.552,323,0.247,324,5.408,346,2.888,350,0.261,351,0.282,352,0.271,355,0.657,359,0.162,363,0.55,369,1.201,393,0.687,399,0.941,416,0.295,444,0.247,451,0.878,457,0.621,467,0.55,485,0.254,487,0.235,494,0.576,498,2.383,538,0.254,547,1.099,548,1.301,554,0.941,562,0.632,574,1.744,582,0.198,594,0.247,658,0.254,664,0.314,687,0.241,711,2.063,713,0.847,717,2.807,735,3.547,736,0.261,743,0.449,748,0.21,759,0.687,760,0.328,776,0.459,777,1.464,778,4.429,779,1.638,780,0.282,783,0.241,792,0.241,794,0.41,802,0.152,816,1.78,831,0.235,833,0.469,835,0.254,839,0.261,867,0.773,874,0.247,881,0.217,899,0.254,909,0.672,918,0.528,927,0.576,932,0.214,950,0.254,955,0.261,998,0.261,1021,1.007,1024,0.221,1026,0.254,1027,0.23,1118,1.879,1201,1.902,1229,1.007,1234,0.204,1282,0.217,1388,0.18,1407,0.449,1423,0.295,1471,0.261,1484,0.55,1535,0.424,1555,3.058,1560,4.219,1572,0.282,1589,0.271,1612,0.295,1613,3.188,1628,0.217,1669,2.612,1786,0.613,1787,0.314,1796,3.43,1797,0.271,1798,2.264,1799,5.064,1831,0.481,1841,0.295,1871,0.221,1891,0.282,1916,4.762,1938,0.613,1950,1.28,1951,1.099,1952,0.314,1953,3.283,1954,0.844,1960,3.122,1962,0.613,1963,3.283,1964,0.613,1965,0.314,1966,2.012,1967,0.844,1975,0.282,1980,0.576,1990,0.576,1991,0.314,1992,0.261,1993,0.314,1994,0.282,1995,0.295,2000,0.295,2002,0.314,2003,0.314,2004,1.048,2005,1.048,2006,0.271,2007,0.897,2008,2.412,2009,1.799,2010,0.314,2013,0.295,2014,0.295,2015,1.576,2018,0.576,2070,0.314,2071,0.613,2072,0.613,2073,0.613,2074,0.897,2075,0.613,2076,0.613,2077,0.613,2078,0.613,2079,0.613,2081,0.342,2082,0.977,2083,0.342,2084,0.667,2085,0.667,2086,0.667,2087,2.082,2088,0.342,2089,0.576,2090,0.897,2091,6.461,2092,3.219,2093,4.785,2094,1.714,2095,1.555,2096,1.674,2097,0.342,2098,0.51,2099,0.342,2100,0.342,2101,0.667,2102,1.168,2103,0.977,2104,0.342,2105,0.667,2106,0.342,2107,0.342,2108,0.667,2109,0.342,2110,0.282,2111,0.705,2112,0.705,2113,0.844,2114,0.342,2115,0.342,2116,0.342,2117,0.342,2118,0.314,2119,0.271,2120,0.342,2121,0.342,2122,0.282,2123,0.342,2124,0.342]],["component/31",[271,0.415]],["title/32-1",[319,45.829,1278,39.989]],["name/32-1",[]],["text/32-1",[]],["component/32-1",[]],["title/32",[25,19.104,306,45.829]],["name/32",[25,0.258,306,0.619]],["text/32",[2,2.45,9,2.982,16,3.254,25,3.401,27,2.208,44,3.469,56,4.681,76,2.256,83,2.123,84,2.256,106,3.112,109,2.017,143,1.584,147,1.903,207,2.367,223,2.702,229,3.561,251,4.681,272,2.308,276,4.157,280,2.508,287,1.903,299,2.835,300,2.208,304,5.749,306,4.934,311,4.36,320,4.36,333,2.164,349,4.189,353,2.702,402,1.831,445,2.702,482,2.508,489,2.835,499,5.087,514,2.597,658,2.433,770,2.835,802,1.459,846,2.308,1042,2.256,1171,2.597,1172,4.573,1483,3.012,1484,2.702,1628,2.085,1687,2.308,1919,2.433,2125,3.282,2126,2.597,2127,3.282,2128,9.803,2129,6.655,2130,3.282,2131,3.282,2132,3.282,2133,3.282,2134,3.282,2135,3.012,2136,3.282,2137,3.282,2138,3.282,2139,5.294,2140,3.012,2141,2.597,2142,3.282,2143,3.282]],["component/32",[271,0.415]],["title/33-1",[2144,48.91,2145,48.91]],["name/33-1",[]],["text/33-1",[]],["component/33-1",[]],["title/33",[0,24.516,25,15.834,178,33.779]],["name/33",[978,1.336]],["text/33",[0,4.914,1,2.823,2,3.103,6,1.536,25,2.469,27,1.536,30,2.815,34,2.184,36,1.307,37,1.29,38,1.746,39,1.536,40,1.477,42,2.633,44,3.174,45,1.342,50,1.477,51,1.768,52,1.782,61,1.382,62,1.093,73,1.023,75,0.993,76,1.57,89,2.532,90,2.062,99,1.133,109,1.404,125,1.536,136,1.102,144,0.933,148,1.166,176,2.184,178,1.506,185,1.133,204,1.746,205,1.324,207,1.647,209,1.57,212,1.244,225,1.693,231,3.868,250,1.942,261,1.244,268,2.184,270,1.536,271,0.887,276,3.209,284,1.536,294,1.746,338,1.606,340,1.451,346,1.484,348,2.633,353,3.223,355,1.536,372,2.532,398,1.536,407,1.807,430,1.647,441,1.362,451,1.29,465,1.746,487,1.57,505,1.451,543,1.57,546,1.477,562,1.477,567,1.746,572,1.881,716,1.404,717,5.698,758,2.096,833,2.753,861,1.362,905,1.746,909,1.57,1171,1.807,1191,2.096,1250,1.647,1484,1.881,1559,1.973,1568,1.973,1571,1.606,1592,1.746,1637,1.57,1667,1.647,1669,1.57,1671,3.223,1674,2.096,1690,1.973,1917,1.973,2141,3.097,2144,3.097,2145,1.807,2146,1.881,2147,2.284,2148,2.096,2149,2.096,2150,1.881,2151,3.223,2152,2.284,2153,2.284,2154,1.881,2155,2.096,2156,1.807,2157,2.823,2158,3.915,2159,2.284,2160,2.096,2161,2.096,2162,2.096,2163,2.284,2164,2.096,2165,2.284,2166,2.096]],["component/33",[271,0.415]],["title/34-1",[0,20.934,136,21.119,369,22.571,684,26.477]],["name/34-1",[]],["text/34-1",[]],["component/34-1",[]],["title/34-2",[266,33.779,749,32.008,1617,42.191]],["name/34-2",[]],["text/34-2",[]],["component/34-2",[]],["title/34-3",[151,33.289,212,33.671]],["name/34-3",[]],["text/34-3",[]],["component/34-3",[]],["title/34",[0,24.516,136,24.733,369,26.434]],["name/34",[2167,1.547]],["text/34",[0,4.951,2,2.978,9,1.793,10,1.34,20,3.035,25,1.236,30,3.832,48,2.637,51,1.807,52,3.683,62,1.914,66,1.276,67,1.397,69,1.34,73,3.394,90,2.758,95,1.488,127,1.397,136,4.452,143,1.131,144,0.957,162,1.44,185,2.597,193,1.418,199,1.418,207,1.689,233,2.484,248,1.737,250,1.162,256,1.102,261,2.852,265,4.208,266,4.993,284,1.576,306,2.966,307,1.377,309,2.259,315,1.576,346,1.984,369,3.194,402,2.92,409,3.165,451,2.957,457,1.488,510,3.058,546,2.588,624,2.637,669,1.853,670,1.488,684,3.747,711,1.042,713,2.179,717,1.418,718,1.261,748,1.44,749,2.499,936,2.023,942,2.15,1570,3.682,1571,1.648,1585,1.544,1600,1.544,1617,3.294,1619,3.294,1620,1.853,1622,1.929,1623,2.15,1637,1.61,1660,1.929,1865,5.998,2089,3.456,2157,1.689,2168,2.342,2169,1.929]],["component/34",[271,0.415]],["title/35-1",[0,24.516,231,28.939,372,33.145]],["name/35-1",[]],["text/35-1",[]],["component/35-1",[]],["title/35-2",[0,29.578,1,44.585]],["name/35-2",[]],["text/35-2",[]],["component/35-2",[]],["title/35-3",[0,20.934,300,29.429,346,16.581,359,20.753]],["name/35-3",[]],["text/35-3",[]],["component/35-3",[]],["title/35",[0,37.275]],["name/35",[846,1.088]],["text/35",[0,4.974,1,6.326,2,2.468,6,3.262,25,0.911,30,2.849,36,2.283,37,0.933,38,2.252,42,1.111,44,2.08,46,1.516,49,1.686,50,1.906,51,0.746,52,1.817,55,0.827,61,0.999,65,0.999,71,0.77,73,0.74,80,1.089,83,1.906,99,0.819,106,0.971,109,1.015,110,1.516,113,3.707,116,1.306,123,0.835,127,0.984,144,0.675,147,1.708,148,0.843,154,1.049,156,1.089,174,1.089,179,1.306,181,2.536,182,0.921,185,1.98,186,0.971,192,1.015,193,1.783,210,1.224,218,3.05,219,1.224,220,2.851,229,1.111,231,3.49,233,1.398,243,1.708,250,0.819,268,1.644,288,1.191,300,1.111,307,0.971,315,1.111,317,1.36,318,1.426,324,1.732,338,1.161,344,1.516,346,1.838,347,2.546,355,1.111,359,1.893,377,1.135,380,1.262,390,1.36,391,1.36,398,1.982,402,0.921,403,1.135,407,2.331,420,1.262,430,1.191,434,2.536,454,1.943,487,1.135,505,1.049,514,1.306,546,2.582,552,1.191,553,1.982,555,1.068,559,0.783,562,1.906,583,1.306,596,1.426,606,1.516,624,1.089,625,1.426,627,1.516,713,2.642,716,3.423,717,2.415,773,1.36,794,1.015,798,1.306,861,0.984,932,1.031,937,1.516,961,1.306,975,1.262,992,1.306,1047,1.36,1164,1.36,1170,1.516,1171,1.306,1207,2.546,1282,1.049,1419,1.191,1455,1.36,1499,1.191,1517,1.306,1555,1.089,1568,1.426,1613,1.135,1655,1.111,1667,2.878,1669,1.135,1670,1.516,1671,1.36,1831,1.191,1862,1.516,1871,1.068,1946,1.516,1971,1.262,1979,2.427,2017,1.36,2144,1.306,2145,1.306,2148,1.516,2149,5.673,2151,3.286,2157,2.125,2162,1.516,2170,1.516,2171,1.651,2172,1.306,2173,1.651,2174,1.651,2175,1.651,2176,1.651,2177,1.651,2178,2.427,2179,1.516,2180,2.947,2181,2.947,2182,1.651,2183,1.651,2184,1.651,2185,1.651,2186,1.651,2187,1.651]],["component/35",[271,0.415]],["title/36-1",[192,37.996,1601,53.4]],["name/36-1",[]],["text/36-1",[]],["component/36-1",[]],["title/36",[30,19.305,114,36.039,936,44.261]],["name/36",[2188,1.547]],["text/36",[4,4.877,18,3.67,20,5.992,30,4.288,51,2.357,55,3.785,61,3.158,67,3.112,96,2.81,99,3.749,127,3.112,162,3.207,171,3.112,185,4.831,220,3.067,250,2.589,339,3.316,346,2.864,411,3.67,417,3.587,609,3.764,711,2.321,713,2.842,863,3.67,992,4.129,1021,4.129,1571,3.67,1629,4.297,1637,3.587,2146,6.222,2189,5.218,2190,4.297]],["component/36",[271,0.415]],["title/37-1",[233,29.324,1865,45.829]],["name/37-1",[]],["text/37-1",[]],["component/37-1",[]],["title/37-2",[178,51.359]],["name/37-2",[]],["text/37-2",[]],["component/37-2",[]],["title/37-3",[2,18.862,136,24.733,1865,37.985]],["name/37-3",[]],["text/37-3",[]],["component/37-3",[]],["title/37-4",[136,29.84,261,33.671]],["name/37-4",[]],["text/37-4",[]],["component/37-4",[]],["title/37-5",[408,44.585,601,42.486]],["name/37-5",[]],["text/37-5",[]],["component/37-5",[]],["title/37-6",[149,48.91,408,44.585]],["name/37-6",[]],["text/37-6",[]],["component/37-6",[]],["title/37-7",[136,29.84,1865,45.829]],["name/37-7",[]],["text/37-7",[]],["component/37-7",[]],["title/37-8",[3,36.859,241,36.859]],["name/37-8",[]],["text/37-8",[]],["component/37-8",[]],["title/37-9",[48,40.754,2191,56.743]],["name/37-9",[]],["text/37-9",[]],["component/37-9",[]],["title/37-10",[1118,26.883,2192,56.743]],["name/37-10",[]],["text/37-10",[]],["component/37-10",[]],["title/37",[2,16.106,136,21.119,510,33.44,1865,32.434]],["name/37",[136,0.403,510,0.638]],["text/37",[0,1.465,2,3.314,6,0.807,9,0.989,12,0.584,13,1.315,25,1.174,30,1.154,36,0.686,39,0.807,44,1.15,45,1.297,49,0.686,51,1.383,52,0.546,54,0.917,55,1.534,62,1.055,66,1.201,68,0.695,71,0.559,73,0.538,75,0.959,76,4.609,78,0.865,99,0.595,103,0.686,133,0.619,136,5.059,139,1.516,144,4.077,147,1.279,149,3.006,154,0.762,164,0.715,174,0.791,178,1.454,182,0.669,205,0.695,222,0.669,233,4.271,237,0.584,248,0.889,250,1.094,251,0.844,257,0.715,261,2.998,264,2.07,268,0.669,276,0.749,290,0.889,303,0.726,315,0.807,335,1.036,339,0.762,346,0.836,351,0.988,355,1.484,359,0.569,394,0.949,398,1.484,402,0.669,407,1.745,408,4.29,420,1.686,451,1.246,487,0.824,497,0.988,505,0.762,510,3.395,557,0.865,569,1.101,601,2.104,689,1.402,690,0.762,694,0.807,711,0.981,718,1.188,719,0.865,724,0.949,740,4.972,748,0.737,749,1.913,759,1.551,760,1.084,833,3.124,896,0.988,898,1.101,899,0.889,905,0.917,932,1.378,955,0.917,959,1.101,972,0.824,975,0.917,979,0.844,1008,3.71,1028,0.844,1032,0.917,1118,0.522,1223,0.917,1229,2.423,1234,0.715,1360,0.988,1388,1.162,1417,1.101,1510,1.036,1535,3.18,1570,1.551,1624,0.749,1704,1.101,1812,1.036,1865,4.41,1871,0.776,1922,1.101,1998,0.988,2031,1.101,2034,1.036,2110,4.121,2111,3.203,2112,3.61,2122,3.129,2154,1.816,2157,0.865,2191,4.077,2192,2.025,2193,1.2,2194,1.2,2195,1.2,2196,2.206,2197,2.206,2198,3.006,2199,3.129,2200,1.036,2201,1.036,2202,1.036,2203,1.2,2204,1.2,2205,1.101,2206,1.2,2207,1.2,2208,1.101,2209,1.2,2210,1.2,2211,1.101,2212,1.2,2213,3.062,2214,1.2,2215,1.036,2216,2.206,2217,1.2,2218,1.2,2219,1.2,2220,1.2,2221,1.2,2222,2.206,2223,1.2,2224,2.206,2225,2.206,2226,1.2,2227,2.025,2228,1.2,2229,1.2,2230,1.101,2231,1.036]],["component/37",[271,0.415]],["title/38-1",[127,36.859,346,23.429]],["name/38-1",[]],["text/38-1",[]],["component/38-1",[]],["title/38-2",[30,23.291,1419,44.585]],["name/38-2",[]],["text/38-2",[]],["component/38-2",[]],["title/38-3",[127,36.859,307,36.336]],["name/38-3",[]],["text/38-3",[]],["component/38-3",[]],["title/38-4",[90,32.566,346,23.429]],["name/38-4",[]],["text/38-4",[]],["component/38-4",[]],["title/38-5",[30,23.291,209,42.486]],["name/38-5",[]],["text/38-5",[]],["component/38-5",[]],["title/38",[90,32.566,127,36.859]],["name/38",[2232,1.547]],["text/38",[0,3.879,1,2.629,2,0.982,4,1.826,5,0.994,10,0.845,17,2.448,20,4.137,25,0.824,29,0.673,30,3.535,38,1.129,42,0.994,44,0.77,50,0.956,51,0.667,55,1.826,61,2.206,62,0.707,66,1.453,68,0.857,69,2.086,71,0.689,73,1.195,76,1.016,79,0.845,90,1.405,95,0.939,99,2.215,101,1.039,106,0.869,113,2.039,114,1.039,127,3.433,132,0.908,140,1.526,143,0.713,144,1.824,147,0.857,148,1.862,150,1.614,153,1.639,154,0.939,158,2.277,166,1.016,171,2.174,173,1.217,174,0.974,185,2.56,186,0.869,187,0.939,192,0.908,193,0.894,201,1.217,205,1.546,209,1.833,210,1.095,212,0.805,220,0.869,231,1.506,232,1.066,241,0.881,243,0.857,244,0.824,250,0.733,255,1.217,256,0.695,268,0.824,270,1.794,274,0.908,290,1.095,302,1.568,307,3.033,309,0.835,340,0.939,345,1.066,346,2.962,359,1.265,363,1.217,368,1.217,372,0.956,380,2.039,393,2.564,398,0.994,402,0.824,420,1.129,431,0.835,439,1.217,441,0.881,469,1.217,480,1.095,484,1.217,498,0.974,514,1.169,543,1.016,554,2.206,557,1.066,558,1.169,562,0.956,572,1.217,582,0.857,583,1.169,594,4.153,659,1.217,663,1.276,692,0.956,695,1.129,713,1.453,716,0.908,717,0.894,794,0.908,831,1.016,841,1.016,859,1.276,861,0.881,874,1.924,879,1.066,881,0.939,896,2.196,905,2.787,909,1.016,932,0.923,968,1.095,976,1.169,990,1.356,998,1.129,1015,1.217,1016,1.169,1039,1.169,1048,1.066,1088,1.039,1094,0.994,1117,1.129,1223,1.129,1351,1.169,1390,1.066,1419,3.722,1499,1.066,1517,2.11,1571,5.272,1601,1.276,1617,1.217,1629,2.196,1637,1.833,1649,1.217,1667,1.924,1669,1.016,1871,0.956,1876,1.356,1880,1.276,1915,1.356,1971,2.039,1979,1.217,1981,1.217,1984,1.276,2135,1.356,2145,1.169,2146,4.249,2150,2.196,2157,1.066,2172,1.169,2233,1.478,2234,2.11,2235,1.478,2236,1.478,2237,1.478,2238,1.478,2239,1.478,2240,1.478,2241,1.276,2242,2.667,2243,1.478,2244,2.304,2245,1.478,2246,1.478,2247,1.478,2248,1.478,2249,1.356,2250,1.478,2251,1.356,2252,1.478]],["component/38",[271,0.415]],["title/39-1",[100,47.25,1399,50.903]],["name/39-1",[]],["text/39-1",[]],["component/39-1",[]],["title/39-2",[25,19.104,1631,47.25]],["name/39-2",[]],["text/39-2",[]],["component/39-2",[]],["title/39-3",[75,26.883,102,39.989]],["name/39-3",[]],["text/39-3",[]],["component/39-3",[]],["title/39-4",[129,37.943]],["name/39-4",[]],["text/39-4",[]],["component/39-4",[]],["title/39-5",[75,26.883,1263,44.585]],["name/39-5",[]],["text/39-5",[]],["component/39-5",[]],["title/39-6",[75,26.883,1234,36.859]],["name/39-6",[]],["text/39-6",[]],["component/39-6",[]],["title/39-7",[102,50.395]],["name/39-7",[]],["text/39-7",[]],["component/39-7",[]],["title/39-8",[1263,56.187]],["name/39-8",[]],["text/39-8",[]],["component/39-8",[]],["title/39",[75,26.883,346,23.429]],["name/39",[75,0.363,346,0.316]],["text/39",[9,1.114,24,2.069,25,1.056,29,0.622,34,0.763,37,3.09,45,2.009,51,1.544,52,1.915,62,0.654,64,0.94,65,0.827,73,1.114,75,2.974,79,0.782,88,1.748,102,2.722,126,0.94,132,0.84,143,1.2,144,4.829,151,0.736,163,0.901,182,1.387,202,1.672,212,0.745,217,1.672,222,0.763,237,0.666,241,0.815,250,0.678,256,0.643,263,1.422,286,1.181,287,1.982,298,1.843,302,0.804,309,2.759,333,1.639,340,2.172,346,1.296,441,1.482,553,0.92,732,1.841,733,3.956,748,2.101,760,1.222,762,1.082,804,4.424,867,1.082,918,1.082,919,0.986,932,0.854,939,1.045,964,3.946,986,0.986,1091,2.299,1202,1.045,1212,1.082,1234,1.482,1263,4.643,1282,1.58,1283,0.962,1316,1.045,1367,2.147,1475,1.126,1631,1.9,1648,1.082,1667,0.986,1676,1.181,1683,1.126,1700,2.147,1719,1.9,1823,3.138,1824,1.082,1827,1.126,1871,0.884,1919,1.013,2150,1.126,2253,1.181,2254,3.862,2255,1.367,2256,1.367,2257,1.9,2258,1.181,2259,2.486,2260,1.367,2261,1.367,2262,1.367,2263,1.181,2264,4.219,2265,1.367,2266,2.282,2267,1.367,2268,1.255,2269,1.367,2270,2.282,2271,1.367,2272,1.255,2273,2.282,2274,1.367,2275,2.486,2276,2.486,2277,2.486,2278,2.486,2279,1.367,2280,1.367,2281,3.465,2282,2.486,2283,1.367,2284,1.367,2285,1.367,2286,1.045,2287,1.367,2288,1.367,2289,1.367,2290,1.367,2291,1.367,2292,1.367,2293,1.367,2294,1.367,2295,1.367,2296,1.367,2297,2.486,2298,4.208,2299,1.367,2300,2.486,2301,2.486,2302,1.367,2303,1.367,2304,1.367,2305,1.367,2306,5.984,2307,4.884,2308,2.815,2309,1.367,2310,1.367,2311,1.367,2312,1.367,2313,2.486,2314,4.208,2315,1.255,2316,1.367,2317,1.367,2318,1.367,2319,2.486,2320,1.367,2321,3.138,2322,1.255,2323,2.486,2324,1.367,2325,1.367,2326,1.367,2327,1.367,2328,1.255,2329,1.367,2330,1.255,2331,1.367]],["component/39",[271,0.415]],["title/40",[24,37.411,732,33.289]],["name/40",[256,0.393,986,0.602]],["text/40",[9,3.896,11,4.723,24,5.262,34,4.85,52,2.9,73,2.855,79,3.645,103,3.645,143,3.075,144,4.548,261,3.47,732,5.995,733,5.344,808,5.503,830,5.847,986,6.271,1446,4.285,2111,4.595,2254,5.847,2332,5.246,2333,5.847]],["component/40",[271,0.415]],["title/41",[24,37.411,1719,47.25]],["name/41",[24,0.505,1719,0.638]],["text/41",[2,1.851,24,4.45,25,1.554,37,2.839,42,3.381,44,2.62,52,3.347,73,2.253,104,4.139,132,3.09,143,3.55,144,4.89,164,2.997,623,4.343,693,6.055,964,3.626,986,3.626,1719,6.646,2172,3.977,2268,4.614,2270,6.75,2272,4.614,2281,6.055,2332,4.139,2334,5.027,2335,5.027,2336,5.027,2337,5.027,2338,4.614,2339,5.027,2340,5.027,2341,5.027,2342,4.614,2343,5.027,2344,5.027,2345,5.027,2346,5.027,2347,4.139]],["component/41",[271,0.415]],["title/42-1",[30,19.305,185,25.419,1083,37.985]],["name/42-1",[]],["text/42-1",[]],["component/42-1",[]],["title/42-2",[30,16.483,185,21.705,1083,32.434,2348,40.158]],["name/42-2",[]],["text/42-2",[]],["component/42-2",[]],["title/42-3",[30,16.483,185,21.705,1083,32.434,1535,27.799]],["name/42-3",[]],["text/42-3",[]],["component/42-3",[]],["title/42-4",[185,30.668,1637,42.486]],["name/42-4",[]],["text/42-4",[]],["component/42-4",[]],["title/42-5",[30,19.305,185,25.419,307,30.117]],["name/42-5",[]],["text/42-5",[]],["component/42-5",[]],["title/42-6",[30,23.291,1600,40.754]],["name/42-6",[]],["text/42-6",[]],["component/42-6",[]],["title/42-7",[30,14.382,144,15.594,237,18.592,685,21.293,1628,24.255]],["name/42-7",[]],["text/42-7",[]],["component/42-7",[]],["title/42-8",[1390,56.187]],["name/42-8",[]],["text/42-8",[]],["component/42-8",[]],["title/42-9",[91,47.25,185,30.668]],["name/42-9",[]],["text/42-9",[]],["component/42-9",[]],["title/42-10",[103,35.366,185,30.668]],["name/42-10",[]],["text/42-10",[]],["component/42-10",[]],["title/42-11",[8,39.164,96,27.592,150,31.008]],["name/42-11",[]],["text/42-11",[]],["component/42-11",[]],["title/42-12",[8,47.25,96,33.289]],["name/42-12",[]],["text/42-12",[]],["component/42-12",[]],["title/42-13",[96,27.592,103,29.313,297,36.955]],["name/42-13",[]],["text/42-13",[]],["component/42-13",[]],["title/42-14",[213,33.779,267,26.434,454,33.779]],["name/42-14",[]],["text/42-14",[]],["component/42-14",[]],["title/42-15",[140,25.03,244,24.404,267,22.571,454,28.843]],["name/42-15",[]],["text/42-15",[]],["component/42-15",[]],["title/42-16",[259,23.83,267,22.571,454,28.843,1968,36.026]],["name/42-16",[]],["text/42-16",[]],["component/42-16",[]],["title/42-17",[2,16.106,136,21.119,267,22.571,454,28.843]],["name/42-17",[]],["text/42-17",[]],["component/42-17",[]],["title/42-18",[43,19.118,123,19.304,1118,16.6,1535,24.255,2098,29.177]],["name/42-18",[]],["text/42-18",[]],["component/42-18",[]],["title/42",[30,19.305,185,25.419,417,35.215]],["name/42",[185,0.414,192,0.513]],["text/42",[0,0.554,2,1.845,4,1.07,8,2.417,9,1.656,10,1.587,12,1.351,15,0.193,18,0.425,20,1.367,22,0.391,24,0.187,25,0.977,26,2.358,27,0.597,28,0.416,29,0.868,30,2.54,31,0.678,32,0.564,34,0.172,36,0.346,37,0.175,43,1.765,45,0.182,49,0.177,51,1.161,52,0.868,62,0.798,65,0.366,68,0.515,69,0.177,70,0.267,71,0.414,73,1.579,75,1.293,76,0.796,79,2.39,80,0.204,83,0.2,85,0.236,86,0.284,90,1.125,92,0.149,96,0.898,99,1.377,100,0.678,101,0.624,102,1.382,103,0.346,104,0.255,106,0.182,109,0.546,111,0.223,118,0.267,121,0.342,122,2.422,123,0.586,124,1.865,125,1.729,126,0.416,131,0.436,136,0.92,137,0.384,140,2.114,141,0.555,142,0.436,143,1.615,144,4.321,145,0.624,150,0.366,151,1.027,153,0.712,154,0.564,162,0.19,164,0.361,165,1.662,166,0.796,168,0.245,171,0.184,174,0.204,182,0.495,183,0.658,184,0.954,185,2.887,192,0.19,193,0.701,194,1.844,195,0.337,199,0.366,200,0.425,201,0.255,205,0.179,207,0.223,212,1.163,213,0.935,220,0.681,225,0.448,226,0.425,230,0.284,231,0.342,233,0.673,235,0.208,237,0.691,241,0.184,242,0.342,244,3.415,246,0.284,250,0.946,251,0.217,252,0.217,255,0.954,256,0.784,259,1.919,260,1.121,261,0.483,263,0.177,264,1.163,265,0.187,266,0.204,267,2.233,268,1.315,269,0.64,274,0.19,278,0.236,284,0.954,287,1.367,295,0.267,297,3.328,302,0.833,307,0.681,309,0.175,323,0.64,324,0.522,333,0.204,339,0.736,340,0.196,342,0.267,345,0.223,348,0.208,356,0.236,359,0.673,368,0.255,369,0.598,377,0.213,388,0.267,391,0.255,396,0.284,398,0.954,399,0.858,402,0.495,403,0.213,409,1.508,411,0.217,417,4.578,421,1.063,423,0.213,430,0.223,441,0.691,446,0.267,454,1.099,457,0.384,459,0.624,463,0.255,482,0.885,483,0.702,484,0.731,505,0.564,516,0.245,525,0.217,538,0.448,543,0.416,545,0.223,548,0.193,553,0.597,554,0.858,555,0.917,557,0.835,558,0.479,559,0.147,574,0.554,582,0.351,592,0.448,601,0.416,619,0.245,636,1.001,660,0.555,687,0.217,688,0.229,692,0.391,703,0.597,712,0.537,713,0.168,716,0.372,717,0.537,729,1.662,732,0.624,733,0.872,735,0.245,745,0.885,748,0.19,749,0.193,750,0.702,751,0.731,760,0.152,777,0.425,782,0.255,783,0.624,794,0.546,822,0.425,841,0.416,869,0.954,873,0.223,879,1.375,967,0.498,971,0.255,975,1.457,979,0.217,991,1.168,997,0.416,1010,0.229,1011,2.203,1042,0.213,1048,0.436,1079,0.255,1083,0.448,1087,0.498,1088,0.217,1105,0.284,1118,1.293,1119,0.555,1146,0.731,1169,0.255,1176,0.555,1234,0.184,1248,0.204,1250,0.64,1255,0.479,1263,0.223,1278,0.574,1282,0.196,1283,0.217,1330,1.225,1351,0.702,1388,0.319,1390,1.375,1395,0.284,1400,0.555,1407,0.208,1415,0.462,1424,0.267,1432,1.647,1446,0.208,1487,0.267,1517,0.245,1534,0.522,1535,1.889,1545,0.267,1555,1.408,1563,0.284,1570,0.624,1577,0.284,1578,0.284,1581,0.284,1582,1.302,1584,0.522,1586,0.284,1587,0.284,1588,0.284,1599,0.284,1600,0.585,1605,0.255,1613,0.213,1631,0.236,1634,0.767,1637,1.31,1649,0.255,1652,0.255,1687,0.217,1702,0.555,1707,0.479,1825,0.702,1827,0.255,1843,0.479,1855,0.255,1871,0.2,1884,0.267,1916,0.975,1917,0.267,1919,0.448,1923,4.361,1924,0.255,1936,0.498,1961,0.767,1968,1.57,1971,0.462,1981,0.255,1992,1.457,1994,0.255,1996,0.284,2004,0.255,2089,0.767,2098,1.457,2102,0.284,2141,0.245,2156,0.702,2161,0.284,2164,0.284,2244,1.001,2253,0.267,2257,0.462,2258,0.267,2263,0.267,2264,0.522,2281,1.373,2286,0.678,2308,2.116,2322,0.555,2338,0.815,2342,0.815,2347,0.255,2348,0.815,2349,0.767,2350,0.267,2351,2.57,2352,1.158,2353,0.309,2354,0.605,2355,0.888,2356,0.605,2357,0.888,2358,0.605,2359,0.888,2360,1.418,2361,1.418,2362,0.605,2363,0.605,2364,0.815,2365,0.605,2366,0.605,2367,0.309,2368,1.667,2369,1.158,2370,0.605,2371,0.309,2372,1.418,2373,0.888,2374,0.605,2375,3.336,2376,0.605,2377,1.418,2378,0.605,2379,0.309,2380,0.309,2381,0.605,2382,1.158,2383,1.158,2384,0.605,2385,0.605,2386,0.309,2387,0.309,2388,0.309,2389,0.309,2390,0.605,2391,1.158,2392,0.309,2393,0.245,2394,1.158,2395,0.605,2396,0.888,2397,1.906,2398,0.284,2399,0.605,2400,0.888,2401,0.309,2402,0.309,2403,0.555,2404,0.309,2405,0.255,2406,0.284,2407,0.255,2408,0.309,2409,0.284,2410,0.555,2411,0.309,2412,0.309,2413,0.309,2414,0.309,2415,0.284,2416,0.309,2417,0.267,2418,0.309,2419,1.063,2420,0.309,2421,0.284,2422,0.309,2423,0.267,2424,0.888,2425,0.309,2426,0.284,2427,0.309,2428,0.309,2429,0.605,2430,0.309,2431,0.309,2432,0.309,2433,0.267,2434,0.309,2435,0.309,2436,0.309,2437,0.309,2438,0.309,2439,0.309,2440,0.309,2441,0.888,2442,0.309,2443,0.309,2444,0.309,2445,0.309,2446,0.309,2447,0.309,2448,0.605,2449,1.906,2450,0.309,2451,0.605,2452,0.309,2453,0.309,2454,0.309,2455,0.309,2456,0.267,2457,0.284,2458,0.309,2459,0.309,2460,0.309,2461,0.309,2462,0.309,2463,0.309,2464,0.309,2465,0.309,2466,0.309,2467,0.309,2468,0.309,2469,0.309,2470,0.309,2471,0.309,2472,0.309,2473,0.309,2474,0.605,2475,0.267,2476,0.309,2477,0.284,2478,0.309,2479,0.309,2480,0.309,2481,0.309,2482,0.309,2483,0.309,2484,0.309,2485,0.555,2486,0.522,2487,0.605,2488,0.267,2489,0.309,2490,0.309]],["component/42",[271,0.415]],["title/43-1",[4,30.96,75,26.883]],["name/43-1",[]],["text/43-1",[]],["component/43-1",[]],["title/43",[4,30.96,372,39.989]],["name/43",[2350,1.336]],["text/43",[4,4.813,20,2.38,25,1.655,29,1.099,30,3.257,37,1.364,42,1.624,45,1.419,52,2.438,67,1.44,72,3.862,73,1.84,75,3.571,79,3.064,90,1.272,96,1.3,99,1.198,102,2.656,133,1.246,137,2.608,144,4.489,173,1.988,186,1.419,195,1.347,233,1.145,237,1.176,242,1.364,261,1.315,265,1.461,267,2.118,281,2.961,284,1.624,298,3.043,309,3.567,377,1.66,451,3.024,505,1.534,518,3.768,554,1.461,715,3.138,716,1.484,724,1.91,732,2.884,802,1.074,804,4.865,1027,1.624,1091,2.761,1118,2.329,1131,3.248,1284,3.248,1285,3.248,1342,2.086,1345,1.988,1346,2.086,1353,2.216,1594,4.915,1595,4.626,1619,3.38,1655,1.624,1874,2.086,1875,3.38,2126,1.91,2350,2.086,2491,4.105,2492,6.65,2493,5.201,2494,4.105,2495,3.546,2496,4.105,2497,4.105,2498,2.415,2499,2.415,2500,3.768,2501,3.768,2502,4.105,2503,2.415,2504,2.216,2505,2.415]],["component/43",[271,0.415]],["title/44-1",[26,21.119,43,21.912,144,17.873,259,23.83]],["name/44-1",[]],["text/44-1",[]],["component/44-1",[]],["title/44-2",[26,18.426,43,19.118,75,16.6,144,15.594,372,24.693]],["name/44-2",[]],["text/44-2",[]],["component/44-2",[]],["title/44-3",[26,21.119,43,21.912,144,17.873,259,23.83]],["name/44-3",[]],["text/44-3",[]],["component/44-3",[]],["title/44-4",[26,18.426,43,19.118,144,15.594,259,20.792,1201,28.299]],["name/44-4",[]],["text/44-4",[]],["component/44-4",[]],["title/44-5",[26,18.426,43,19.118,144,15.594,185,18.937,259,20.792]],["name/44-5",[]],["text/44-5",[]],["component/44-5",[]],["title/44-6",[26,18.426,43,19.118,75,16.6,144,15.594,372,24.693]],["name/44-6",[]],["text/44-6",[]],["component/44-6",[]],["title/44",[26,24.733,43,25.662,259,27.908]],["name/44",[192,0.513,259,0.455]],["text/44",[0,0.371,2,2.975,4,0.735,9,0.347,10,0.444,15,0.484,20,1.833,25,2.073,26,4.631,27,3.663,29,1.439,30,2.749,32,0.493,34,0.433,36,1.808,40,0.949,42,1.406,43,4.048,50,1.352,51,0.944,52,0.951,55,2.225,58,0.522,61,0.469,62,0.371,68,0.45,73,1.417,75,2.234,90,0.409,92,0.374,96,1.125,99,1.315,102,0.502,103,0.444,114,1.47,122,0.533,125,2.725,126,0.533,132,0.477,137,2.008,140,0.84,143,1.009,144,3.357,147,0.45,154,0.493,162,0.477,164,0.462,165,0.502,168,0.614,181,1.328,182,0.819,184,0.522,185,2.01,186,0.456,192,0.477,193,0.888,195,1.166,199,0.469,210,0.575,217,0.987,231,0.438,233,1.258,235,0.987,237,0.715,239,0.511,242,0.829,243,0.45,244,2.022,247,0.575,248,1.088,250,0.728,256,0.365,257,0.462,259,5.475,260,0.522,263,0.444,264,0.422,265,0.888,267,0.4,274,0.902,287,0.851,297,0.559,323,2.28,325,0.593,327,0.639,346,1.374,347,1.805,352,0.614,357,0.712,359,0.368,372,0.949,377,0.533,403,0.533,409,0.614,411,0.545,417,0.533,423,0.533,427,0.67,434,0.933,441,0.875,451,0.438,470,0.502,480,0.575,484,0.639,512,0.67,548,0.484,552,0.559,553,0.522,554,0.888,555,0.502,559,0.368,574,0.484,582,0.45,594,0.559,609,0.559,618,1.209,620,0.593,624,0.511,642,0.712,683,0.533,713,1.975,717,2.452,719,0.559,729,0.949,733,0.902,748,0.477,760,1.782,773,0.639,775,1.209,776,2.784,777,1.47,778,2.098,783,1.032,790,0.502,794,0.477,804,0.533,841,0.533,861,0.462,868,0.67,879,1.059,881,0.493,955,0.593,956,0.639,961,0.614,979,0.545,997,1.009,1010,0.575,1015,1.209,1049,2.731,1094,0.987,1118,0.337,1146,0.639,1201,1.549,1202,0.593,1233,0.712,1234,0.875,1248,0.511,1278,1.352,1282,0.493,1348,1.268,1364,0.545,1388,0.409,1407,0.987,1419,0.559,1448,0.593,1455,0.639,1475,0.639,1501,0.639,1535,1.685,1560,0.484,1570,1.032,1589,0.614,1592,1.122,1628,0.493,1637,0.533,1655,0.522,1672,2.026,1722,0.712,1825,0.614,1871,0.502,1916,0.533,1924,0.639,1959,0.712,1968,1.209,1984,1.268,1987,0.67,1994,0.639,1999,0.712,2000,0.67,2004,0.639,2005,0.639,2006,0.614,2052,0.712,2067,0.712,2090,1.347,2091,1.268,2096,0.712,2098,3.395,2112,0.559,2113,0.67,2145,0.614,2156,0.614,2208,0.712,2211,0.712,2234,0.614,2241,0.67,2266,1.347,2286,1.122,2393,0.614,2409,1.918,2456,0.67,2475,0.67,2485,0.712,2488,2.29,2492,3.837,2506,1.468,2507,0.775,2508,0.712,2509,0.775,2510,0.712,2511,0.775,2512,0.775,2513,0.712,2514,0.775,2515,0.775,2516,0.775,2517,0.712,2518,0.775,2519,0.593,2520,0.67,2521,2.651,2522,2.651,2523,1.468,2524,1.468,2525,1.468,2526,0.775,2527,1.468,2528,0.67,2529,0.712,2530,0.775,2531,0.775,2532,1.468,2533,0.775,2534,2.09,2535,0.775,2536,0.775,2537,0.775,2538,0.775,2539,0.775,2540,0.775,2541,0.775,2542,0.775,2543,0.775,2544,0.775,2545,0.775,2546,0.639,2547,0.67,2548,0.775,2549,0.775]],["component/44",[271,0.415]],["title/45-1",[846,54.794]],["name/45-1",[]],["text/45-1",[]],["component/45-1",[]],["title/45-2",[267,22.571,399,26.477,1041,28.843,2550,43.75]],["name/45-2",[]],["text/45-2",[]],["component/45-2",[]],["title/45-3",[60,44.585,1041,40.754]],["name/45-3",[]],["text/45-3",[]],["component/45-3",[]],["title/45-4",[267,22.571,359,20.753,454,28.843,1041,28.843]],["name/45-4",[]],["text/45-4",[]],["component/45-4",[]],["title/45-5",[267,22.571,399,26.477,1041,28.843,1520,31.554]],["name/45-5",[]],["text/45-5",[]],["component/45-5",[]],["title/45-6",[60,36.955,1041,33.779,1520,36.955]],["name/45-6",[]],["text/45-6",[]],["component/45-6",[]],["title/45-7",[359,24.305,1041,33.779,1520,36.955]],["name/45-7",[]],["text/45-7",[]],["component/45-7",[]],["title/45-8",[231,34.915,2551,56.743]],["name/45-8",[]],["text/45-8",[]],["component/45-8",[]],["title/45",[267,31.892,399,37.411]],["name/45",[180,0.561,267,0.431]],["text/45",[2,3.223,4,0.883,9,0.422,12,3.267,15,0.588,16,0.579,25,1.141,26,1.508,29,3.053,30,1.177,31,2.387,34,0.525,45,0.554,51,0.425,60,1.271,62,3.078,65,0.57,66,0.96,69,1.421,71,1.159,73,3.225,75,2.03,79,3.128,82,0.663,99,1.832,106,0.554,121,0.996,122,1.211,123,0.476,125,2.101,127,1.051,136,2.639,140,4.671,143,2.963,144,1.907,148,0.9,150,0.57,151,1.338,153,1.527,165,0.609,176,0.525,182,0.525,186,0.554,193,0.57,194,2.803,195,0.983,199,0.57,204,0.72,220,2.171,231,1.764,233,2.214,243,1.022,244,5.022,250,0.467,256,2.736,257,1.051,260,1.186,262,0.698,263,1.008,264,2.012,267,2.169,268,0.983,269,3.366,281,1.271,283,1.523,286,0.814,287,2.141,309,0.996,340,0.599,359,0.836,369,2.624,399,0.57,441,1.481,454,1.638,459,0.663,470,0.609,487,0.647,538,0.698,543,0.647,555,0.609,567,0.72,609,0.679,619,0.745,636,0.814,654,0.814,693,0.776,713,0.513,717,2.235,719,2.253,729,1.14,733,1.92,760,0.463,784,0.647,822,0.663,861,0.562,863,2.197,873,1.792,877,0.745,881,0.599,882,0.814,892,0.745,917,0.72,991,1.451,997,0.647,1000,0.72,1027,1.186,1091,2.484,1198,2.698,1234,1.862,1248,3.353,1282,1.984,1316,0.72,1349,0.745,1415,2.387,1424,0.814,1432,1.523,1535,1.984,1628,1.578,1634,0.814,1635,0.865,1655,1.186,1677,0.814,1687,3.283,1741,0.865,1871,1.14,1919,2.315,1995,0.814,2091,1.523,2141,1.965,2249,0.865,2375,2.698,2393,0.745,2419,2.28,2421,0.865,2477,0.865,2551,2.867,2552,1.523,2553,0.942,2554,0.942,2555,0.942,2556,0.942,2557,0.942,2558,0.942,2559,0.942,2560,1.763,2561,1.763,2562,1.763,2563,1.763,2564,1.763,2565,2.484,2566,3.123,2567,1.763,2568,1.763,2569,1.763,2570,0.942,2571,0.942,2572,0.865,2573,0.698,2574,1.763,2575,0.942,2576,0.942,2577,0.865,2578,0.865,2579,2.484,2580,1.763,2581,1.763,2582,0.942,2583,0.942,2584,0.942,2585,0.942,2586,0.942,2587,0.942,2588,0.942,2589,0.942,2590,0.942,2591,0.942,2592,0.942,2593,0.942,2594,0.942,2595,0.942,2596,0.942,2597,0.942,2598,0.814,2599,0.942]],["component/45",[271,0.415]],["title/46-1",[29,23.324,249,36.955,369,26.434]],["name/46-1",[]],["text/46-1",[]],["component/46-1",[]],["title/46-2",[29,28.14,72,44.585]],["name/46-2",[]],["text/46-2",[]],["component/46-2",[]],["title/46-3",[2,22.757,1286,44.585]],["name/46-3",[]],["text/46-3",[]],["component/46-3",[]],["title/46-4",[12,30.108,1286,44.585]],["name/46-4",[]],["text/46-4",[]],["component/46-4",[]],["title/46-5",[1284,40.539,1285,40.539,1286,36.955]],["name/46-5",[]],["text/46-5",[]],["component/46-5",[]],["title/46-6",[16,47.883]],["name/46-6",[]],["text/46-6",[]],["component/46-6",[]],["title/46-7",[1283,43.48,1286,44.585]],["name/46-7",[]],["text/46-7",[]],["component/46-7",[]],["title/46-8",[16,26.891,112,40.158,129,21.309,1286,31.554]],["name/46-8",[]],["text/46-8",[]],["component/46-8",[]],["title/46-9",[359,29.324,1286,44.585]],["name/46-9",[]],["text/46-9",[]],["component/46-9",[]],["title/46-10",[47,50.903,233,29.324]],["name/46-10",[]],["text/46-10",[]],["component/46-10",[]],["title/46-11",[233,29.324,1007,50.903]],["name/46-11",[]],["text/46-11",[]],["component/46-11",[]],["title/46-12",[233,29.324,2600,56.743]],["name/46-12",[]],["text/46-12",[]],["component/46-12",[]],["title/46",[25,19.104,29,28.14]],["name/46",[25,0.258,29,0.38]],["text/46",[0,0.259,2,2.507,4,2.002,9,1.217,12,3.172,13,0.323,16,3.468,18,0.381,22,1.757,24,0.631,25,0.466,26,0.262,28,0.373,29,2.817,30,1.396,35,0.447,37,1.095,47,0.859,51,0.245,52,1.065,55,0.522,56,0.381,62,1.299,65,0.328,66,0.821,68,0.874,69,0.31,72,2.673,73,1.522,74,0.339,75,2.962,76,1.036,79,1.554,80,1.79,89,1.254,90,0.794,96,0.292,99,0.518,100,0.414,102,0.675,106,0.319,109,0.641,116,0.429,120,0.797,121,3.074,123,0.274,125,0.365,126,0.373,129,0.734,131,0.391,132,0.333,136,0.728,137,1.726,140,2.12,143,2.627,144,4.455,145,0.381,148,0.533,153,0.333,156,0.357,163,0.357,165,0.675,171,0.323,176,0.582,179,0.429,181,0.345,182,0.302,194,0.831,195,0.582,197,0.429,198,0.717,199,1.173,200,2.157,217,1.014,220,0.613,222,0.582,226,0.381,231,0.306,233,2.377,235,0.702,237,0.264,241,0.899,244,0.582,249,0.391,250,0.269,256,2.654,257,1.156,260,0.365,263,1.339,264,0.821,265,0.328,267,0.538,268,1.515,269,2.673,270,0.365,274,0.333,284,0.365,287,1.969,298,0.402,309,4.62,319,0.402,333,0.357,340,0.958,346,1.287,356,0.414,359,0.257,369,0.538,372,0.975,398,0.365,401,0.468,423,0.373,427,0.468,431,0.306,434,0.663,441,0.323,446,2.346,457,0.345,459,0.381,480,0.402,497,0.447,505,0.345,509,0.859,534,0.468,559,0.495,567,0.414,574,1.462,582,0.605,669,1.193,685,0.302,713,0.295,717,1.173,718,0.292,721,4.73,724,0.429,729,0.351,732,1.652,733,1.439,735,0.429,743,0.702,746,0.901,748,0.927,749,0.339,751,0.447,776,0.373,795,2.236,802,0.241,804,2.334,822,0.381,833,0.381,837,0.734,874,0.391,881,0.345,891,2.815,939,0.414,956,0.447,979,0.381,981,0.901,1007,1.241,1008,0.773,1010,0.402,1032,0.414,1091,1.304,1104,0.498,1131,3.38,1202,2.344,1222,0.498,1248,1.278,1250,1.087,1263,0.752,1283,1.06,1284,3.163,1285,2.932,1286,4.583,1330,0.468,1342,1.302,1346,0.901,1364,0.734,1448,0.797,1500,0.498,1504,0.958,1559,0.901,1589,0.825,1592,0.797,1615,0.498,1622,0.447,1648,1.193,1669,0.373,1675,0.901,1686,1.302,1831,0.752,1875,1.596,1936,3.518,1974,2.022,2170,0.498,2172,0.429,2190,0.447,2227,0.498,2257,1.789,2264,0.468,2286,0.797,2308,1.241,2315,0.958,2321,1.78,2328,0.958,2364,2.493,2393,0.429,2423,1.675,2426,0.498,2493,0.447,2500,0.498,2501,2.493,2519,0.414,2520,0.468,2600,1.384,2601,1.939,2602,2.341,2603,0.542,2604,0.498,2605,0.542,2606,0.542,2607,0.542,2608,1.939,2609,1.043,2610,1.043,2611,1.043,2612,0.542,2613,1.043,2614,1.043,2615,1.043,2616,0.958,2617,1.939,2618,1.507,2619,0.542,2620,0.542,2621,0.542,2622,0.542,2623,1.043,2624,0.498,2625,0.542,2626,0.542,2627,1.043,2628,0.542,2629,1.507,2630,0.542,2631,1.043,2632,1.043,2633,0.542,2634,1.043,2635,1.043,2636,1.043,2637,1.043,2638,1.043,2639,1.043,2640,0.542,2641,0.542,2642,0.542,2643,0.542,2644,0.542,2645,0.498,2646,0.542,2647,0.542,2648,0.542,2649,0.542,2650,0.542,2651,0.542,2652,0.542,2653,0.542,2654,0.498,2655,0.498,2656,0.542,2657,0.542]],["component/46",[271,0.415]],["title/47-1",[30,23.291,114,43.48]],["name/47-1",[]],["text/47-1",[]],["component/47-1",[]],["title/47-2",[30,23.291,792,43.48]],["name/47-2",[]],["text/47-2",[]],["component/47-2",[]],["title/47-3",[29,19.915,30,16.483,209,30.069,1929,37.793]],["name/47-3",[]],["text/47-3",[]],["component/47-3",[]],["title/47-4",[30,23.291,786,45.829]],["name/47-4",[]],["text/47-4",[]],["component/47-4",[]],["title/47",[30,23.291,801,53.4]],["name/47",[30,0.215,1598,0.494,2658,0.572]],["text/47",[0,0.915,4,2.701,6,0.692,8,0.786,9,0.461,10,1.095,18,0.723,19,0.643,20,3.126,25,0.318,26,2.165,29,1.528,30,4.122,31,0.786,32,1.704,36,1.095,43,0.515,48,0.678,52,1.221,59,0.665,67,1.141,68,0.596,69,0.588,71,0.892,73,2.01,75,1.167,79,0.588,82,0.723,89,0.665,90,4.183,95,1.216,96,0.554,99,3.044,101,0.723,103,0.588,106,1.125,114,0.723,125,0.692,127,4.483,132,1.649,143,0.496,144,4.039,148,0.525,158,2.097,162,2.064,164,0.613,165,1.735,166,0.707,182,0.574,185,2.462,186,0.605,194,0.567,195,0.574,205,1.109,208,1.653,209,3.706,212,1.829,220,1.577,222,0.574,225,0.763,231,0.581,235,0.692,242,0.581,244,0.574,250,0.51,252,1.346,256,1.262,259,1.461,261,1.829,264,0.56,265,1.158,266,0.678,267,1.384,268,0.574,294,0.786,298,0.763,302,1.125,346,0.725,359,0.488,369,0.531,393,1.346,403,0.707,409,0.814,423,1.315,451,0.581,470,0.665,491,0.847,516,0.814,548,0.643,552,0.742,609,3.579,686,0.814,692,0.665,700,0.723,713,1.042,714,1.756,715,1.462,716,0.632,717,1.158,726,0.814,729,1.238,732,0.554,750,0.814,759,1.887,774,2.765,775,0.847,785,1.653,786,1.989,792,4.316,796,0.944,797,0.888,798,2.122,799,1.514,800,0.944,801,0.888,841,3.411,861,0.613,1007,3.694,1016,2.122,1021,1.514,1083,0.763,1088,0.723,1118,2.158,1141,0.786,1225,2.462,1294,0.888,1388,1.769,1419,1.38,1462,0.944,1511,1.653,1520,0.742,1523,0.888,1570,0.723,1571,0.723,1593,0.944,1600,1.768,1629,4.44,1637,2.307,1671,1.576,1703,1.653,1707,1.514,1797,0.814,1827,0.847,1831,0.742,1855,0.847,1924,1.576,1929,0.888,1992,0.786,2098,0.786,2157,0.742,2169,0.847,2190,1.576,2281,0.847,2398,0.944,2405,0.847,2519,0.786,2520,0.888,2578,0.944,2659,1.029,2660,2.682,2661,0.888,2662,0.888,2663,1.029,2664,1.029,2665,0.944,2666,1.029,2667,1.029,2668,0.944,2669,1.029,2670,1.029,2671,1.913,2672,1.913,2673,1.913,2674,1.913,2675,1.029,2676,1.913,2677,1.029,2678,1.029,2679,2.682,2680,2.682,2681,1.913,2682,1.913,2683,1.913,2684,1.913,2685,1.029,2686,1.029,2687,1.029,2688,1.029]],["component/47",[271,0.415]],["title/48-1",[30,23.291,237,30.108]],["name/48-1",[]],["text/48-1",[]],["component/48-1",[]],["title/48-2",[30,23.291,265,37.411]],["name/48-2",[]],["text/48-2",[]],["component/48-2",[]],["title/48-3",[30,19.305,732,27.592,1600,33.779]],["name/48-3",[]],["text/48-3",[]],["component/48-3",[]],["title/48-4",[75,22.282,103,29.313,1600,33.779]],["name/48-4",[]],["text/48-4",[]],["component/48-4",[]],["title/48-5",[30,16.483,685,24.404,732,23.56,1585,28.843]],["name/48-5",[]],["text/48-5",[]],["component/48-5",[]],["title/48-6",[75,19.026,103,25.03,685,24.404,1585,28.843]],["name/48-6",[]],["text/48-6",[]],["component/48-6",[]],["title/48-7",[75,19.026,103,25.03,685,24.404,1037,30.069]],["name/48-7",[]],["text/48-7",[]],["component/48-7",[]],["title/48-8",[30,23.291,264,33.671]],["name/48-8",[]],["text/48-8",[]],["component/48-8",[]],["title/48-9",[30,19.305,732,27.592,1600,33.779]],["name/48-9",[]],["text/48-9",[]],["component/48-9",[]],["title/48-10",[75,22.282,103,29.313,1600,33.779]],["name/48-10",[]],["text/48-10",[]],["component/48-10",[]],["title/48-11",[30,16.483,685,24.404,732,23.56,2573,32.434]],["name/48-11",[]],["text/48-11",[]],["component/48-11",[]],["title/48-12",[75,19.026,103,25.03,685,24.404,2573,32.434]],["name/48-12",[]],["text/48-12",[]],["component/48-12",[]],["title/48-13",[30,16.483,685,24.404,732,23.56,1585,28.843]],["name/48-13",[]],["text/48-13",[]],["component/48-13",[]],["title/48-14",[75,19.026,103,25.03,685,24.404,1585,28.843]],["name/48-14",[]],["text/48-14",[]],["component/48-14",[]],["title/48-15",[75,19.026,103,25.03,1023,33.44,1037,30.069]],["name/48-15",[]],["text/48-15",[]],["component/48-15",[]],["title/48-16",[30,23.291,266,40.754]],["name/48-16",[]],["text/48-16",[]],["component/48-16",[]],["title/48-17",[30,19.305,732,27.592,1600,33.779]],["name/48-17",[]],["text/48-17",[]],["component/48-17",[]],["title/48-18",[75,22.282,103,29.313,1600,33.779]],["name/48-18",[]],["text/48-18",[]],["component/48-18",[]],["title/48-19",[30,16.483,685,24.404,732,23.56,1585,28.843]],["name/48-19",[]],["text/48-19",[]],["component/48-19",[]],["title/48-20",[75,19.026,103,25.03,685,24.404,1585,28.843]],["name/48-20",[]],["text/48-20",[]],["component/48-20",[]],["title/48-21",[30,14.382,75,16.6,103,21.838,136,18.426,1023,29.177]],["name/48-21",[]],["text/48-21",[]],["component/48-21",[]],["title/48-22",[716,47.883]],["name/48-22",[]],["text/48-22",[]],["component/48-22",[]],["title/48-23",[180,41.582,1141,47.25]],["name/48-23",[]],["text/48-23",[]],["component/48-23",[]],["title/48",[30,23.291,261,33.671]],["name/48",[30,0.583]],["text/48",[0,1.834,2,1.467,3,0.338,4,0.145,9,0.488,12,2.622,13,0.497,14,1.357,24,0.175,25,1.087,26,0.402,29,0.132,30,3.696,32,0.184,36,0.477,37,0.163,38,0.221,42,0.195,43,0.417,44,0.296,45,0.17,49,0.763,50,0.863,51,2.705,52,2.964,55,0.145,58,0.195,62,2.413,63,0.25,71,0.839,73,2.036,75,3.311,79,0.166,80,0.191,84,0.199,90,0.827,91,0.637,96,2.064,99,0.281,102,1.016,103,1.154,104,0.467,121,0.887,123,0.287,125,2.138,127,1.567,129,0.141,133,1.041,136,1.36,137,0.184,142,0.601,143,0.974,144,2.521,145,0.586,146,0.686,147,1.41,148,1.878,151,1.712,164,0.497,165,0.187,166,0.199,169,0.229,174,0.191,179,0.229,180,2.254,185,1.001,186,0.17,193,0.808,194,0.16,195,0.607,198,0.573,212,2.088,219,0.42,233,1.337,237,3.359,241,0.649,242,1.986,243,0.483,250,1.901,256,2.582,260,0.381,261,2.327,263,0.166,264,2.17,265,2.32,266,1.733,275,0.191,284,0.898,287,0.483,301,0.238,309,2.077,330,0.399,339,0.998,340,0.529,345,0.601,346,0.681,359,0.395,369,1.64,372,1.7,393,0.204,398,0.732,399,0.175,403,1.806,417,0.573,428,0.221,431,1.016,439,0.238,457,1.545,487,0.199,498,0.191,500,1.153,505,2.129,523,0.229,538,0.215,546,0.187,552,1.297,553,0.381,574,2.093,582,0.168,598,1.553,609,0.409,669,0.229,685,0.607,689,0.998,692,0.704,694,0.898,713,0.309,716,1.37,717,2.585,718,0.586,719,1.133,732,2.839,733,0.348,735,0.449,739,0.765,740,0.42,742,0.49,743,2.019,748,1.495,749,0.68,759,0.399,777,1.982,795,1.099,802,0.8,804,4.242,834,0.175,841,0.573,879,2.293,939,0.221,972,0.573,1008,2.484,1023,0.433,1024,1.573,1027,0.381,1030,0.238,1037,1.08,1042,0.199,1043,0.221,1088,1.711,1091,3.392,1094,0.195,1141,2.561,1202,0.637,1248,1.603,1263,0.962,1278,0.863,1282,0.184,1283,1.105,1316,0.221,1364,1.711,1390,0.601,1391,0.266,1407,0.195,1446,1.499,1448,1.542,1520,0.209,1535,0.848,1550,0.266,1560,0.181,1561,0.25,1562,0.25,1571,0.399,1585,1.036,1600,2.424,1624,0.52,1628,1.143,1631,0.221,1675,0.25,1687,0.204,1707,1.924,1713,0.765,1719,0.221,1824,0.229,1916,1.08,1919,0.215,1978,0.238,2126,0.229,2146,0.467,2155,2.413,2156,1.763,2157,0.209,2172,0.229,2215,0.25,2286,3.157,2308,1.293,2405,1.481,2406,0.765,2486,0.25,2492,5.625,2504,1.225,2519,0.221,2546,0.238,2547,4.038,2573,0.807,2598,2.27,2616,1.442,2689,1.089,2690,0.289,2691,0.999,2692,1.442,2693,1.442,2694,1.442,2695,0.765,2696,0.833,2697,1.357,2698,0.833,2699,0.833,2700,1.571,2701,1.571,2702,0.765,2703,0.765,2704,2.628,2705,1.442,2706,0.289,2707,1.571,2708,1.571,2709,1.571,2710,0.833,2711,1.571,2712,1.571,2713,0.833,2714,0.833,2715,0.833,2716,0.833,2717,0.833,2718,0.289,2719,0.289,2720,0.289,2721,0.52,2722,0.289,2723,0.289,2724,0.289,2725,1.334,2726,0.999,2727,0.289,2728,0.289,2729,0.289,2730,0.289,2731,0.49,2732,0.289,2733,0.289,2734,0.289,2735,0.289,2736,0.289,2737,0.266,2738,0.289,2739,0.289,2740,0.289,2741,0.289,2742,0.289,2743,0.289]],["component/48",[271,0.415]],["title/49-1",[200,43.48,582,35.839]],["name/49-1",[]],["text/49-1",[]],["component/49-1",[]],["title/49-2",[22,39.989,582,35.839]],["name/49-2",[]],["text/49-2",[]],["component/49-2",[]],["title/49-3",[30,12.755,209,23.268,594,24.418,2234,26.786,2744,33.855,2745,33.855]],["name/49-3",[]],["text/49-3",[]],["component/49-3",[]],["title/49-4",[200,43.48,1324,50.903]],["name/49-4",[]],["text/49-4",[]],["component/49-4",[]],["title/49-5",[9,22.962,130,39.164,1043,39.164]],["name/49-5",[]],["text/49-5",[]],["component/49-5",[]],["title/49",[9,27.703,22,39.989]],["name/49",[9,0.374,22,0.54]],["text/49",[2,1.666,4,1.357,5,0.535,9,3.533,10,0.455,12,1.32,18,1.504,20,2.623,22,3.162,24,1.294,25,1.398,28,0.547,30,1.705,32,1.359,34,1.193,36,2.989,37,0.849,39,1.012,40,2.088,43,0.399,44,1.115,48,0.525,52,1.234,55,1.071,56,0.56,58,0.535,61,0.482,67,0.474,68,1.571,69,0.455,73,0.357,82,0.56,83,0.515,84,0.547,90,2.916,93,0.687,96,0.428,99,1.345,107,2.742,114,2.27,121,3.442,123,2.288,126,1.034,127,1.616,130,3.993,132,0.489,135,0.687,139,0.547,143,0.384,144,3.281,148,0.406,150,0.482,151,0.428,158,1.693,159,0.655,163,0.525,164,1.616,165,0.515,166,0.547,168,0.63,171,0.897,175,0.56,182,1.801,185,0.395,186,0.884,193,0.91,195,1.512,196,0.497,197,1.19,198,1.034,199,1.294,200,5.748,201,1.238,202,1.012,203,3.195,205,0.461,206,0.687,209,0.547,213,0.525,220,0.884,222,0.444,231,0.449,232,0.574,233,0.377,243,0.872,247,1.585,250,0.395,252,1.906,253,3.395,256,0.374,263,0.86,264,0.433,274,0.489,276,1.336,281,2.328,283,1.299,285,0.73,290,0.59,302,0.468,307,0.884,309,2.332,315,1.438,329,0.687,340,0.506,341,0.655,346,0.81,348,0.535,349,1.19,355,0.535,359,1.286,369,0.41,377,0.547,390,0.655,398,0.535,399,0.482,400,0.687,402,0.839,417,1.863,434,0.956,441,2.462,457,0.506,458,0.687,459,0.56,469,0.655,470,0.515,505,0.506,525,1.058,543,1.034,553,0.535,555,0.515,572,1.238,582,1.24,583,0.63,594,0.574,638,0.655,652,0.73,662,2.232,671,0.535,672,0.474,692,0.515,693,0.655,703,1.823,711,0.354,713,0.819,721,0.608,727,0.687,729,0.515,733,3.004,748,0.489,779,1.058,783,1.058,790,0.515,794,0.924,831,0.547,834,0.482,835,0.59,863,0.56,877,0.63,879,0.574,892,1.19,899,0.59,909,1.034,932,2.311,955,0.608,974,0.73,998,1.15,1010,1.115,1016,1.19,1021,0.63,1027,0.535,1041,0.525,1043,2.827,1048,0.574,1082,0.687,1094,0.535,1150,0.687,1234,2.462,1250,0.574,1279,0.73,1324,3.046,1349,1.19,1367,0.687,1446,1.012,1476,0.73,1487,1.299,1499,1.542,1517,0.63,1529,0.655,1637,1.034,1648,1.19,1649,1.238,1650,0.687,1655,0.535,1661,0.73,1667,0.574,1684,0.687,1690,0.687,1808,0.687,1824,0.63,1871,0.515,1880,0.687,1884,0.687,1885,0.73,1971,1.635,1972,0.73,1973,0.73,1974,0.687,1979,0.655,1987,0.687,2140,1.38,2151,0.655,2166,0.73,2230,0.73,2234,1.19,2251,0.73,2253,1.299,2330,0.73,2347,0.655,2410,0.73,2417,2.341,2433,1.299,2721,0.73,2737,1.963,2746,2.138,2747,2.138,2748,0.796,2749,0.796,2750,2.138,2751,0.796,2752,0.796,2753,0.796,2754,0.796,2755,0.796,2756,1.504,2757,1.504,2758,0.796,2759,0.796,2760,0.796,2761,0.796,2762,0.796,2763,0.796,2764,0.796,2765,0.796,2766,0.796,2767,0.796,2768,1.504,2769,1.504,2770,0.796,2771,1.504,2772,1.504,2773,0.796,2774,2.138,2775,0.796,2776,0.796,2777,0.796,2778,0.796,2779,0.796,2780,0.796,2781,0.796,2782,0.796,2783,0.73,2784,0.796,2785,0.796,2786,0.796,2787,0.796,2788,0.796,2789,2.71,2790,0.73,2791,1.504,2792,2.71,2793,0.796,2794,0.796,2795,0.796,2796,0.796,2797,0.796,2798,0.796,2799,0.796,2800,0.796,2801,0.796,2802,0.796]],["component/49",[271,0.415]],["title/50-1",[9,19.606,12,21.309,129,21.309,213,28.843]],["name/50-1",[]],["text/50-1",[]],["component/50-1",[]],["title/50-2",[9,19.606,12,21.309,75,19.026,96,23.56]],["name/50-2",[]],["text/50-2",[]],["component/50-2",[]],["title/50",[12,30.108,75,26.883]],["name/50",[12,0.407,75,0.363]],["text/50",[2,1.584,9,3.171,12,4.733,20,1.052,22,5.128,25,1.33,26,0.876,28,2.958,30,1.208,36,1.038,37,1.81,45,1.067,51,1.944,58,1.221,59,1.174,62,0.868,68,1.052,69,1.038,73,0.813,74,1.134,75,3.96,80,2.837,83,2.073,90,0.956,96,1.726,107,1.346,121,3.699,122,1.247,123,3.312,131,4.277,132,3.645,133,0.936,139,1.247,144,3.381,148,2.198,150,1.098,156,1.197,164,2.566,173,1.495,180,2.156,197,1.436,198,1.247,199,1.098,200,2.254,213,2.837,237,2.53,243,1.052,250,0.9,257,1.082,262,1.346,263,1.038,264,2.344,281,2.312,325,1.387,339,1.153,342,1.568,346,2.248,355,1.221,369,0.936,377,1.247,380,1.387,415,1.568,431,1.81,434,1.153,441,1.082,489,1.568,555,2.073,567,1.387,600,1.436,712,4.558,732,0.977,733,1.116,743,3.494,745,1.387,748,1.97,749,2.002,776,1.247,804,2.203,831,1.247,848,1.495,854,2.942,1008,1.346,1048,1.309,1234,3.905,1248,2.113,1263,2.312,1287,2.942,1364,2.254,1399,1.495,1493,1.197,1648,1.436,1655,1.221,1669,1.247,1672,3.97,2017,1.495,2126,2.536,2393,1.436,2572,1.666,2598,1.568,2604,1.666,2803,3.205,2804,3.205,2805,1.815,2806,1.815,2807,1.815,2808,1.815,2809,1.815,2810,1.815,2811,1.815,2812,1.815,2813,1.815,2814,3.205,2815,1.815,2816,1.815,2817,1.815,2818,1.815,2819,1.815,2820,1.815]],["component/50",[271,0.415]],["title/51-1",[846,54.794]],["name/51-1",[]],["text/51-1",[]],["component/51-1",[]],["title/51-2",[2,18.862,359,24.305,712,31.008]],["name/51-2",[]],["text/51-2",[]],["component/51-2",[]],["title/51-3",[9,22.962,71,23.898,2821,47.031]],["name/51-3",[]],["text/51-3",[]],["component/51-3",[]],["title/51-4",[1118,26.883,2822,53.4]],["name/51-4",[]],["text/51-4",[]],["component/51-4",[]],["title/51-5",[133,22.571,193,26.477,261,23.83,1005,32.434]],["name/51-5",[]],["text/51-5",[]],["component/51-5",[]],["title/51-6",[1005,32.434,1118,19.026,1655,29.429,2823,33.44]],["name/51-6",[]],["text/51-6",[]],["component/51-6",[]],["title/51-7",[1005,37.985,2823,39.164,2824,51.238]],["name/51-7",[]],["text/51-7",[]],["component/51-7",[]],["title/51-8",[9,22.962,71,23.898,1038,40.539]],["name/51-8",[]],["text/51-8",[]],["component/51-8",[]],["title/51-9",[131,31.554,178,28.843,712,26.477,2825,37.793]],["name/51-9",[]],["text/51-9",[]],["component/51-9",[]],["title/51-10",[1118,33.878]],["name/51-10",[]],["text/51-10",[]],["component/51-10",[]],["title/51-11",[241,46.45]],["name/51-11",[]],["text/51-11",[]],["component/51-11",[]],["title/51",[2,22.757,712,37.411]],["name/51",[2,0.307,712,0.505]],["text/51",[0,0.155,2,1.134,5,0.218,6,0.218,9,0.662,15,0.202,19,0.202,25,0.373,26,0.156,37,0.523,40,0.209,45,0.869,52,0.55,58,0.218,59,0.409,60,0.233,62,0.302,67,0.193,68,0.366,69,0.53,71,0.432,73,1.195,74,0.202,89,0.956,92,0.305,121,0.357,123,0.747,131,2.363,132,0.199,133,4.734,137,0.206,140,0.362,144,4.997,148,0.886,151,0.174,153,0.388,163,2.404,164,0.377,178,0.797,182,0.824,186,0.545,194,0.178,198,0.222,199,0.196,202,2.794,213,0.611,220,2.345,232,0.233,237,0.588,241,0.193,242,0.183,243,1.15,249,0.233,250,0.16,256,0.297,257,0.377,260,0.218,261,5.213,263,0.185,267,1.971,268,0.517,269,0.233,298,1.095,307,0.19,315,0.218,323,0.233,330,0.228,333,0.417,346,1.634,359,1.554,372,0.209,380,0.247,394,0.256,423,0.222,431,0.183,434,0.768,439,0.52,441,0.193,459,0.445,466,2.703,469,0.266,480,0.24,543,0.434,545,0.233,548,0.579,553,0.218,555,0.209,573,0.256,574,0.202,587,0.279,599,0.256,601,0.222,620,0.483,647,6.181,661,0.297,688,0.24,692,0.782,695,0.247,703,1.168,712,2.792,719,0.233,722,0.206,729,0.956,732,0.174,733,0.199,748,0.388,749,0.923,765,0.279,773,0.266,776,0.222,777,0.228,778,0.733,783,0.445,794,0.57,816,1.516,822,0.652,840,1.356,846,0.228,861,0.881,863,0.228,867,0.256,874,0.456,877,0.5,879,0.233,881,0.206,892,0.256,905,0.483,919,0.233,950,0.24,975,2.504,997,0.434,1005,4.269,1015,0.52,1022,0.218,1026,0.24,1037,0.637,1038,0.733,1042,0.222,1048,0.233,1094,0.218,1118,3.345,1163,0.297,1164,0.266,1189,0.266,1232,0.297,1234,0.377,1255,0.256,1282,0.206,1360,2.698,1388,1.29,1407,0.994,1493,2.16,1499,0.871,1515,0.297,1555,0.213,1565,0.297,1585,0.213,1592,0.247,1605,0.266,1613,0.222,1624,2.694,1645,0.52,1655,0.425,1669,2.117,1672,0.247,1687,0.652,1688,0.58,1807,0.297,1824,0.256,1825,0.256,1830,0.279,1831,0.233,1871,0.209,1916,3.17,1975,0.266,1978,0.266,1998,2.016,2006,0.256,2094,0.52,2111,0.233,2112,0.233,2151,0.52,2154,1.217,2190,0.52,2198,1.757,2199,0.266,2200,0.546,2201,1.276,2202,1.044,2231,3.149,2234,0.256,2241,0.279,2349,0.279,2403,0.297,2488,0.279,2519,0.247,2528,0.546,2573,0.469,2645,0.297,2665,0.297,2731,1.918,2783,0.297,2821,1.356,2822,3.725,2823,4.041,2825,1.713,2826,0.323,2827,0.323,2828,1.109,2829,0.632,2830,0.927,2831,0.323,2832,0.851,2833,2.22,2834,3.646,2835,0.851,2836,0.851,2837,0.927,2838,0.927,2839,3.347,2840,0.632,2841,0.632,2842,0.323,2843,3.18,2844,2.448,2845,0.323,2846,1.208,2847,0.323,2848,0.323,2849,0.632,2850,0.323,2851,2.642,2852,0.323,2853,0.323,2854,0.323,2855,0.323,2856,0.323,2857,1.478,2858,0.323,2859,0.323,2860,0.323,2861,0.851,2862,0.323,2863,0.927,2864,0.323,2865,0.323,2866,0.323,2867,1.478,2868,1.208,2869,2.448,2870,1.208,2871,4.312,2872,3.276,2873,2.853,2874,2.667,2875,3.007,2876,0.851,2877,1.82,2878,0.323,2879,0.323,2880,0.927,2881,0.927,2882,0.323,2883,0.323,2884,0.927,2885,1.208,2886,1.208,2887,0.323,2888,0.323,2889,0.323,2890,0.323,2891,0.323,2892,0.323,2893,0.297,2894,0.58,2895,0.297,2896,0.297,2897,0.323,2898,0.323,2899,0.323,2900,0.851,2901,0.323,2902,0.323,2903,0.58,2904,1.109,2905,0.927,2906,0.297,2907,0.851,2908,0.323,2909,0.323,2910,0.323,2911,0.297,2912,0.323]],["component/51",[271,0.415]],["title/52",[2,22.757,233,29.324]],["name/52",[2,0.307,233,0.396]],["text/52",[2,3.361,9,1.754,12,2.965,25,1.21,30,2.294,44,2.04,51,2.75,55,1.96,62,2.913,73,2.728,74,2.445,75,3.665,76,5.135,96,3.278,102,2.532,123,1.98,136,3.606,139,2.69,144,1.599,151,2.108,176,2.184,180,2.633,202,2.633,205,2.269,212,2.132,233,4.585,250,1.942,271,1.52,309,2.211,544,3.223,594,2.823,719,2.823,740,6.248,742,3.381,743,2.633,749,2.445,759,2.753,777,4.282,783,2.753,919,2.823,927,3.381,979,2.753,1008,4.513,1234,2.334,1248,2.581,1364,2.753,1448,2.992,1570,2.753,1699,3.381,2144,3.097,2286,2.992,2913,6.088,2914,6.088,2915,6.088,2916,3.914,2917,3.914,2918,3.914,2919,3.914]],["component/52",[271,0.415]],["title/53-1",[2,22.757,12,30.108]],["name/53-1",[]],["text/53-1",[]],["component/53-1",[]],["title/53-2",[2,22.757,13,36.859]],["name/53-2",[]],["text/53-2",[]],["component/53-2",[]],["title/53-3",[12,30.108,171,36.859]],["name/53-3",[]],["text/53-3",[]],["component/53-3",[]],["title/53-4",[151,33.289,212,33.671]],["name/53-4",[]],["text/53-4",[]],["component/53-4",[]],["title/53",[2,18.862,12,24.955,13,30.551]],["name/53",[2,0.307,12,0.407]],["text/53",[0,2.703,2,3.923,5,1.747,9,1.164,12,5.19,13,5.72,25,1.746,29,1.182,30,3.363,37,1.467,45,1.527,49,1.486,52,3.641,55,3.698,62,1.243,74,1.623,75,1.899,76,1.785,79,1.486,83,2.825,84,1.785,92,1.254,99,1.289,122,1.785,123,2.208,129,1.265,130,1.986,131,1.874,132,1.597,133,2.253,134,2.384,135,2.244,136,4.631,137,1.651,138,2.384,139,1.785,140,1.486,143,2.108,150,2.643,194,1.432,199,1.572,222,3.693,233,1.232,256,1.222,264,3.607,266,2.879,294,1.986,309,1.467,340,1.651,346,1.655,359,1.232,369,2.914,402,1.449,408,1.874,457,1.651,663,3.772,713,1.415,717,3.419,831,1.785,863,1.827,1042,1.785,1523,2.244,1711,3.772,1877,2.384,2126,3.455,2347,2.139,2654,2.384,2661,2.244,2920,4.367,2921,2.598,2922,2.598]],["component/53",[271,0.415]],["title/54-1",[140,35.366,2923,61.817]],["name/54-1",[]],["text/54-1",[]],["component/54-1",[]],["title/54-2",[88,30.772,89,28.302,140,25.03,346,16.581]],["name/54-2",[]],["text/54-2",[]],["component/54-2",[]],["title/54-3",[140,35.366,691,40.754]],["name/54-3",[]],["text/54-3",[]],["component/54-3",[]],["title/54",[2,22.757,140,35.366]],["name/54",[2,0.307,140,0.478]],["text/54",[2,1.134,9,0.777,25,0.536,37,1.739,50,1.122,52,2.289,55,1.542,73,1.861,75,0.754,92,0.837,96,0.934,102,1.992,103,0.992,121,1.739,123,0.877,132,1.066,133,2.97,140,6.191,144,3.167,148,0.886,153,1.893,154,1.102,164,1.836,165,1.122,181,1.102,194,0.956,196,1.084,217,1.167,220,2.955,222,0.968,226,1.22,233,4.125,235,1.167,243,1.006,255,2.536,256,4.412,257,1.836,263,1.762,264,0.945,267,0.895,274,1.066,307,1.02,309,0.98,315,1.167,317,2.536,319,1.286,346,2.181,348,1.167,355,1.167,359,0.823,398,1.167,423,1.192,426,1.428,441,1.836,451,1.739,470,1.992,573,1.372,653,2.166,669,1.372,671,1.167,688,1.286,691,5.343,703,3.382,711,1.369,718,1.658,724,1.372,732,0.934,733,1.893,790,1.992,804,3.455,881,1.102,968,2.283,997,1.192,1202,4.4,1248,1.144,1282,1.102,1351,1.372,1364,1.22,1446,2.793,1451,1.428,1624,3.98,1631,1.326,1650,1.498,1654,1.372,1655,1.167,1683,2.536,1740,1.592,1785,1.498,1843,4.554,1961,2.66,1992,1.326,2094,2.536,2111,2.221,2119,1.372,2332,2.536,2415,1.592,2731,2.66,2822,1.498,2924,3.079,2925,1.592,2926,1.592,2927,2.826,2928,4.152,2929,1.592,2930,1.735,2931,1.735,2932,1.592,2933,5.028,2934,1.592,2935,3.079,2936,4.152,2937,3.079,2938,3.079,2939,1.735,2940,1.735,2941,1.735,2942,1.735,2943,1.735,2944,1.592,2945,1.735,2946,3.079]],["component/54",[271,0.415]],["title/55",[2,12.463,9,24.327,1028,23.813,1585,22.319,2573,25.099]],["name/55",[2,0.307,672,0.498]],["text/55",[2,2.299,9,3.706,25,0.3,29,0.825,45,1.065,51,0.438,52,0.442,54,0.742,55,0.486,58,0.653,61,0.587,62,0.464,71,0.845,73,0.812,80,1.195,92,0.875,121,1.44,123,0.491,133,0.501,137,0.617,140,3.188,143,0.468,144,4.908,148,0.926,151,0.523,164,1.908,178,0.64,183,0.719,194,0.535,237,0.473,250,0.899,257,1.52,261,1.389,262,1.343,275,0.64,338,0.682,346,2.112,355,0.653,359,2.643,394,2.017,402,0.541,434,0.617,466,0.719,509,0.799,582,0.563,624,1.195,672,1.52,688,0.719,712,1.097,716,0.596,718,2.315,728,0.7,760,0.891,794,2.323,816,3.285,844,0.768,878,0.891,932,0.606,955,0.742,975,2.446,1005,0.719,1027,0.653,1037,1.245,1038,0.768,1047,0.799,1118,2.576,1360,2.099,1388,0.955,1402,1.663,1511,0.838,1585,3.674,1624,2.977,1669,4.293,1825,0.768,1916,5.444,1998,6.016,2006,1.434,2094,2.099,2154,4.878,2198,6.669,2199,1.492,2200,3.265,2201,4.814,2202,5.117,2205,0.891,2231,2.202,2244,2.202,2457,0.891,2528,2.202,2573,3.846,2823,1.385,2825,2.202,2828,4.374,2832,4.374,2835,3.47,2836,3.47,2843,2.938,2844,2.34,2861,1.663,2873,7.18,2876,0.891,2877,0.891,2893,1.663,2894,1.663,2895,2.938,2896,3.946,2900,1.663,2903,1.663,2904,4.374,2906,0.891,2907,0.891,2947,0.97,2948,0.97,2949,0.97,2950,0.97,2951,0.97,2952,1.812,2953,0.97,2954,0.97]],["component/55",[271,0.415]],["title/56-1",[1624,38.617,2955,53.4]],["name/56-1",[]],["text/56-1",[]],["component/56-1",[]],["title/56-2",[1624,38.617,2956,56.743]],["name/56-2",[]],["text/56-2",[]],["component/56-2",[]],["title/56-3",[30,16.483,62,20.934,1624,27.33,2957,40.158]],["name/56-3",[]],["text/56-3",[]],["component/56-3",[]],["title/56-4",[1624,38.617,2697,53.4]],["name/56-4",[]],["text/56-4",[]],["component/56-4",[]],["title/56",[62,29.578,90,32.566]],["name/56",[2958,1.42]],["text/56",[0,3.127,2,2.6,4,2.964,12,0.881,20,1.049,25,0.559,28,2.196,30,3.333,36,1.035,40,1.17,50,1.17,51,2.34,52,0.824,55,1.601,62,2.831,71,0.844,73,1.432,74,1.13,75,1.39,79,1.035,90,2.73,91,1.383,99,1.585,133,0.933,136,0.873,144,0.739,148,2.192,154,1.15,156,1.193,180,1.217,185,0.898,195,2.891,212,2.823,233,2.807,237,1.557,243,1.853,256,1.503,257,1.906,265,1.095,267,3.053,302,1.063,333,1.193,339,2.728,345,1.305,346,1.627,399,1.934,402,1.009,403,2.196,408,1.305,485,1.341,554,1.934,559,0.858,574,1.13,689,1.15,690,1.15,713,0.985,715,1.383,716,1.964,717,2.598,719,1.305,732,2.791,740,1.341,749,1.13,785,1.563,822,1.272,841,1.243,979,1.272,1088,2.248,1345,1.49,1351,1.431,1390,1.305,1407,1.217,1415,1.383,1419,1.305,1471,1.383,1499,1.305,1535,1.15,1570,3.019,1571,2.248,1572,1.49,1573,3.708,1574,3.708,1575,3.708,1619,1.49,1620,3.396,1624,3.697,1628,1.15,1660,1.49,1707,2.529,1874,1.563,1916,1.243,1992,1.383,2111,4.714,2112,3.737,2118,1.661,2122,4.873,2144,1.431,2156,1.431,2169,2.632,2178,2.632,2179,3.94,2405,1.49,2423,1.563,2456,1.563,2495,1.563,2546,1.49,2547,1.563,2552,2.761,2655,1.661,2662,2.761,2691,1.661,2692,1.661,2693,1.661,2694,1.661,2695,1.661,2697,2.761,2702,1.661,2703,1.661,2705,2.933,2873,3.535,2955,1.563,2956,1.661,2957,1.661,2959,1.809,2960,1.661,2961,3.196,2962,1.809,2963,3.708,2964,1.809,2965,1.809,2966,1.809,2967,1.809,2968,2.761,2969,1.809]],["component/56",[271,0.415]],["title/57-1",[261,20.792,267,19.693,1091,25.677,2407,31.432,2970,32.974]],["name/57-1",[]],["text/57-1",[]],["component/57-1",[]],["title/57-2",[261,20.792,267,19.693,1091,25.677,2970,32.974,2971,35.038]],["name/57-2",[]],["text/57-2",[]],["component/57-2",[]],["title/57-3",[1493,33.779,2493,42.191,2972,47.031]],["name/57-3",[]],["text/57-3",[]],["component/57-3",[]],["title/57-4",[256,24.099,1493,33.779,2119,40.539]],["name/57-4",[]],["text/57-4",[]],["component/57-4",[]],["title/57-5",[256,24.099,1493,33.779,2973,47.031]],["name/57-5",[]],["text/57-5",[]],["component/57-5",[]],["title/57-6",[1234,36.859,1493,40.754]],["name/57-6",[]],["text/57-6",[]],["component/57-6",[]],["title/57-7",[1493,40.754,2823,47.25]],["name/57-7",[]],["text/57-7",[]],["component/57-7",[]],["title/57-8",[1493,40.754,1624,38.617]],["name/57-8",[]],["text/57-8",[]],["component/57-8",[]],["title/57-9",[122,35.215,1234,30.551,1493,33.779]],["name/57-9",[]],["text/57-9",[]],["component/57-9",[]],["title/57-10",[151,33.289,212,33.671]],["name/57-10",[]],["text/57-10",[]],["component/57-10",[]],["title/57",[9,22.962,261,27.908,1493,33.779]],["name/57",[2974,1.547]],["text/57",[2,0.472,9,2.088,11,0.498,13,0.764,15,0.42,24,0.407,30,0.692,34,0.714,51,0.578,62,0.613,65,0.775,68,0.743,69,1.05,73,3.116,79,1.34,80,2.637,83,0.435,84,0.462,88,1.648,89,0.435,91,1.79,120,0.979,122,4.894,123,0.34,129,1.141,133,0.661,143,2.772,144,3.6,145,0.473,153,0.787,156,0.443,175,0.901,181,0.814,182,0.714,194,1.291,195,1.806,198,1.261,217,0.452,242,1.037,250,0.635,252,0.901,256,3.627,261,3.965,263,1.606,267,1.209,268,1.806,269,1.69,276,0.42,287,3.822,298,2.082,309,2.632,337,1.176,349,1.853,356,0.979,359,2.06,398,0.452,401,1.106,408,1.324,441,1.094,456,0.58,466,2.693,513,0.58,543,2.749,554,0.407,558,0.532,574,0.8,576,0.514,582,1.064,691,1.21,718,0.362,729,0.435,732,0.69,733,0.413,736,2.474,743,2.444,780,0.553,795,0.553,802,0.816,834,0.407,837,0.473,839,0.514,861,0.764,903,1.685,909,0.462,933,0.617,964,0.924,986,1.69,997,0.462,1005,2.966,1026,0.498,1032,1.79,1091,4.435,1094,0.452,1234,4.245,1248,1.544,1250,0.924,1278,2.094,1282,0.427,1283,0.901,1329,0.617,1332,1.106,1364,0.473,1407,0.452,1431,1.176,1446,0.862,1451,1.511,1493,5.749,1535,1.488,1546,4.55,1555,1.21,1624,2.911,1628,2.961,1641,1.685,1676,2.426,1687,3.487,1808,1.106,1811,0.473,1845,0.617,1871,0.435,1875,1.511,1936,1.055,1978,1.511,1981,0.553,2110,0.553,2111,4.142,2112,0.485,2113,0.58,2119,5.501,2141,1.853,2178,0.553,2215,0.58,2257,0.514,2263,1.106,2273,2.577,2332,0.553,2333,0.617,2375,4.026,2407,0.553,2433,1.585,2493,2.665,2577,1.176,2668,1.685,2823,3.058,2873,1.511,2875,2.577,2944,0.617,2963,0.58,2968,0.58,2970,2.796,2972,1.176,2973,1.685,2975,0.617,2976,0.672,2977,1.281,2978,0.672,2979,0.672,2980,0.672,2981,0.672,2982,0.672,2983,0.672,2984,0.672,2985,1.281,2986,1.281,2987,3.237,2988,1.835,2989,0.672,2990,1.281,2991,0.672,2992,1.281,2993,0.672,2994,0.672,2995,0.672,2996,0.672,2997,1.281,2998,0.672,2999,0.672,3000,0.672,3001,0.672,3002,0.672,3003,0.672,3004,0.672,3005,0.672,3006,0.672,3007,2.808,3008,0.672,3009,1.835,3010,0.672,3011,1.835,3012,1.281,3013,0.672,3014,2.808,3015,0.672,3016,2.808,3017,0.672,3018,0.672,3019,0.672,3020,0.672,3021,0.672,3022,1.281,3023,1.281,3024,1.281,3025,0.672,3026,0.672,3027,1.281,3028,1.281,3029,1.281]],["component/57",[271,0.415]],["title/58-1",[1118,26.883,1388,32.566]],["name/58-1",[]],["text/58-1",[]],["component/58-1",[]],["title/58-2",[712,37.411,1118,26.883]],["name/58-2",[]],["text/58-2",[]],["component/58-2",[]],["title/58-3",[75,26.883,1118,26.883]],["name/58-3",[]],["text/58-3",[]],["component/58-3",[]],["title/58",[1118,33.878]],["name/58",[25,0.258,1118,0.363]],["text/58",[2,1.401,4,0.78,30,0.587,37,2.623,51,0.703,52,2.711,55,0.78,62,0.745,69,0.891,73,1.253,74,2.378,75,2.327,88,1.095,89,1.809,90,0.82,99,0.773,102,1.007,121,0.88,123,0.788,129,0.758,132,2.339,133,3.073,143,1.837,144,4.62,153,0.957,157,1.155,194,0.858,195,2.123,202,1.048,220,4.879,222,0.869,226,1.095,233,0.739,242,3.917,245,1.429,256,2.517,257,0.929,261,3.244,263,0.891,267,3.578,268,1.56,281,2.017,287,2.693,300,1.881,309,0.88,330,1.095,346,1.442,359,1.805,426,1.282,441,1.667,463,1.282,466,2.073,470,1.007,487,1.07,548,2.378,672,0.929,692,1.007,712,1.692,732,2.882,733,2.339,743,1.048,748,1.719,774,1.282,786,1.155,790,1.007,794,0.957,804,3.678,831,1.07,896,1.282,964,1.123,967,2.303,986,2.745,1039,1.232,1118,4.342,1169,1.282,1234,0.929,1248,1.027,1364,1.095,1388,3.866,1407,1.048,1446,3.6,1595,1.345,1624,0.973,1628,2.951,1645,2.303,1654,1.232,1655,1.048,1684,1.345,1700,1.345,1799,1.719,1843,1.232,1919,1.155,2017,1.282,2112,2.017,2119,1.232,2198,1.232,2257,1.19,2258,1.345,2417,2.416,2519,1.19,2529,1.429,2839,2.567,2851,1.429,3030,1.557,3031,1.557,3032,1.557,3033,1.557,3034,2.796,3035,2.796,3036,1.557,3037,1.557,3038,1.429,3039,1.557,3040,1.429,3041,1.429,3042,1.429,3043,1.429,3044,1.557,3045,1.557,3046,1.557,3047,1.557,3048,1.557,3049,1.557,3050,1.557,3051,1.557,3052,2.796,3053,2.796,3054,1.557]],["component/58",[271,0.415]],["title/59-1",[1622,64.149]],["name/59-1",[]],["text/59-1",[]],["component/59-1",[]],["title/59-2",[672,46.45]],["name/59-2",[]],["text/59-2",[]],["component/59-2",[]],["title/59-3",[802,34.645]],["name/59-3",[]],["text/59-3",[]],["component/59-3",[]],["title/59-4",[718,41.951]],["name/59-4",[]],["text/59-4",[]],["component/59-4",[]],["title/59-5",[256,29.075,711,27.491]],["name/59-5",[]],["text/59-5",[]],["component/59-5",[]],["title/59-6",[196,38.617,834,37.411]],["name/59-6",[]],["text/59-6",[]],["component/59-6",[]],["title/59-7",[211,43.48,259,33.671]],["name/59-7",[]],["text/59-7",[]],["component/59-7",[]],["title/59-8",[1620,61.637]],["name/59-8",[]],["text/59-8",[]],["component/59-8",[]],["title/59-9",[672,46.45]],["name/59-9",[]],["text/59-9",[]],["component/59-9",[]],["title/59-10",[802,34.645]],["name/59-10",[]],["text/59-10",[]],["component/59-10",[]],["title/59-11",[718,41.951]],["name/59-11",[]],["text/59-11",[]],["component/59-11",[]],["title/59-12",[256,29.075,711,27.491]],["name/59-12",[]],["text/59-12",[]],["component/59-12",[]],["title/59-13",[196,38.617,834,37.411]],["name/59-13",[]],["text/59-13",[]],["component/59-13",[]],["title/59-14",[359,36.954]],["name/59-14",[]],["text/59-14",[]],["component/59-14",[]],["title/59-15",[3055,71.508]],["name/59-15",[]],["text/59-15",[]],["component/59-15",[]],["title/59-16",[672,46.45]],["name/59-16",[]],["text/59-16",[]],["component/59-16",[]],["title/59-17",[802,34.645]],["name/59-17",[]],["text/59-17",[]],["component/59-17",[]],["title/59-18",[718,41.951]],["name/59-18",[]],["text/59-18",[]],["component/59-18",[]],["title/59-19",[256,29.075,711,27.491]],["name/59-19",[]],["text/59-19",[]],["component/59-19",[]],["title/59-20",[196,38.617,834,37.411]],["name/59-20",[]],["text/59-20",[]],["component/59-20",[]],["title/59-21",[136,37.605]],["name/59-21",[]],["text/59-21",[]],["component/59-21",[]],["title/59-22",[672,46.45]],["name/59-22",[]],["text/59-22",[]],["component/59-22",[]],["title/59-23",[802,34.645]],["name/59-23",[]],["text/59-23",[]],["component/59-23",[]],["title/59-24",[718,41.951]],["name/59-24",[]],["text/59-24",[]],["component/59-24",[]],["title/59-25",[256,29.075,711,27.491]],["name/59-25",[]],["text/59-25",[]],["component/59-25",[]],["title/59-26",[196,38.617,834,37.411]],["name/59-26",[]],["text/59-26",[]],["component/59-26",[]],["title/59-27",[3038,71.508]],["name/59-27",[]],["text/59-27",[]],["component/59-27",[]],["title/59-28",[672,46.45]],["name/59-28",[]],["text/59-28",[]],["component/59-28",[]],["title/59-29",[802,34.645]],["name/59-29",[]],["text/59-29",[]],["component/59-29",[]],["title/59-30",[718,41.951]],["name/59-30",[]],["text/59-30",[]],["component/59-30",[]],["title/59-31",[256,29.075,711,27.491]],["name/59-31",[]],["text/59-31",[]],["component/59-31",[]],["title/59-32",[196,38.617,834,37.411]],["name/59-32",[]],["text/59-32",[]],["component/59-32",[]],["title/59-33",[359,36.954]],["name/59-33",[]],["text/59-33",[]],["component/59-33",[]],["title/59-34",[1711,67.295]],["name/59-34",[]],["text/59-34",[]],["component/59-34",[]],["title/59-35",[672,46.45]],["name/59-35",[]],["text/59-35",[]],["component/59-35",[]],["title/59-36",[802,34.645]],["name/59-36",[]],["text/59-36",[]],["component/59-36",[]],["title/59-37",[718,41.951]],["name/59-37",[]],["text/59-37",[]],["component/59-37",[]],["title/59-38",[256,29.075,711,27.491]],["name/59-38",[]],["text/59-38",[]],["component/59-38",[]],["title/59-39",[196,38.617,834,37.411]],["name/59-39",[]],["text/59-39",[]],["component/59-39",[]],["title/59-40",[2475,67.295]],["name/59-40",[]],["text/59-40",[]],["component/59-40",[]],["title/59-41",[672,46.45]],["name/59-41",[]],["text/59-41",[]],["component/59-41",[]],["title/59-42",[802,34.645]],["name/59-42",[]],["text/59-42",[]],["component/59-42",[]],["title/59-43",[718,41.951]],["name/59-43",[]],["text/59-43",[]],["component/59-43",[]],["title/59-44",[256,29.075,711,27.491]],["name/59-44",[]],["text/59-44",[]],["component/59-44",[]],["title/59-45",[196,38.617,834,37.411]],["name/59-45",[]],["text/59-45",[]],["component/59-45",[]],["title/59-46",[359,36.954]],["name/59-46",[]],["text/59-46",[]],["component/59-46",[]],["title/59-47",[1652,64.149]],["name/59-47",[]],["text/59-47",[]],["component/59-47",[]],["title/59-48",[672,46.45]],["name/59-48",[]],["text/59-48",[]],["component/59-48",[]],["title/59-49",[802,34.645]],["name/59-49",[]],["text/59-49",[]],["component/59-49",[]],["title/59-50",[718,41.951]],["name/59-50",[]],["text/59-50",[]],["component/59-50",[]],["title/59-51",[256,29.075,711,27.491]],["name/59-51",[]],["text/59-51",[]],["component/59-51",[]],["title/59-52",[196,38.617,834,37.411]],["name/59-52",[]],["text/59-52",[]],["component/59-52",[]],["title/59-53",[2927,71.508]],["name/59-53",[]],["text/59-53",[]],["component/59-53",[]],["title/59-54",[672,46.45]],["name/59-54",[]],["text/59-54",[]],["component/59-54",[]],["title/59-55",[802,34.645]],["name/59-55",[]],["text/59-55",[]],["component/59-55",[]],["title/59-56",[718,41.951]],["name/59-56",[]],["text/59-56",[]],["component/59-56",[]],["title/59-57",[256,29.075,711,27.491]],["name/59-57",[]],["text/59-57",[]],["component/59-57",[]],["title/59-58",[196,38.617,834,37.411]],["name/59-58",[]],["text/59-58",[]],["component/59-58",[]],["title/59-59",[359,36.954]],["name/59-59",[]],["text/59-59",[]],["component/59-59",[]],["title/59-60",[2929,71.508]],["name/59-60",[]],["text/59-60",[]],["component/59-60",[]],["title/59-61",[672,46.45]],["name/59-61",[]],["text/59-61",[]],["component/59-61",[]],["title/59-62",[802,34.645]],["name/59-62",[]],["text/59-62",[]],["component/59-62",[]],["title/59-63",[718,41.951]],["name/59-63",[]],["text/59-63",[]],["component/59-63",[]],["title/59-64",[256,29.075,711,27.491]],["name/59-64",[]],["text/59-64",[]],["component/59-64",[]],["title/59",[55,30.96,222,34.483]],["name/59",[55,0.286,222,0.319,3056,0.572]],["text/59",[2,2.673,4,2.475,5,0.792,6,0.414,12,2.274,13,0.367,20,0.357,25,1.259,26,1.807,27,0.414,28,0.809,29,0.536,30,1.278,37,0.665,38,0.47,40,0.398,44,0.321,48,0.406,49,0.969,51,1.178,52,2.942,55,3.957,61,0.372,62,2.096,66,0.923,67,0.367,68,0.357,69,0.352,73,0.759,75,1.475,79,1.725,83,0.398,84,0.423,85,0.9,89,0.762,90,1.374,96,0.634,99,0.584,100,0.9,106,0.692,109,1.333,111,0.444,123,0.311,136,1.047,140,3.241,143,0.818,144,3.318,145,0.828,148,1.332,153,0.378,154,0.391,157,0.873,158,0.384,159,0.507,162,0.378,163,0.406,176,0.945,178,0.406,182,0.343,183,0.873,187,0.391,192,0.378,193,2.053,195,0.945,196,0.384,199,1.313,204,0.9,209,0.423,219,0.873,220,3.576,222,3.605,229,0.792,231,0.348,233,3.149,241,0.367,244,0.945,250,0.84,256,2.061,257,1.293,259,1.42,261,1.42,263,0.352,264,0.641,267,2.101,268,0.343,269,1.881,287,1.257,294,0.47,297,0.849,309,1.473,319,0.456,340,0.391,346,1.419,348,0.414,359,0.803,369,0.874,377,0.809,399,1.578,402,0.945,420,0.9,431,0.957,434,0.391,435,0.565,451,0.665,454,0.776,505,0.748,525,0.828,543,0.423,545,0.444,554,0.372,555,0.398,557,0.444,574,0.384,601,0.423,624,1.719,653,0.433,658,0.456,672,1.01,688,0.456,691,2.236,692,0.762,703,1.139,711,1.16,713,0.641,715,2.304,718,0.634,726,0.487,729,0.398,733,1.041,740,0.456,743,0.414,748,1.041,749,0.384,757,1.395,760,0.579,775,0.97,777,0.433,779,1.191,784,0.423,787,1.017,788,1.017,802,0.274,822,0.433,825,0.532,831,1.491,834,0.372,848,0.507,863,0.433,873,0.444,874,1.564,968,1.256,1008,2.515,1027,1.459,1039,0.487,1042,0.809,1094,0.414,1118,1.134,1127,0.565,1223,0.47,1226,0.487,1234,1.293,1244,0.532,1282,0.748,1340,1.081,1349,0.487,1388,0.892,1399,2.482,1407,0.414,1415,0.47,1446,0.414,1471,0.47,1492,1.081,1535,2.588,1570,0.828,1571,0.433,1572,0.97,1573,1.017,1574,1.017,1575,1.017,1589,0.932,1620,0.932,1624,0.736,1628,0.748,1645,0.97,1652,0.97,1669,3.011,1672,1.295,1683,0.507,1699,1.017,1723,0.507,1799,0.724,1830,0.532,1831,0.444,1980,0.532,2034,0.532,2093,2.394,2098,1.993,2110,1.395,2111,1.881,2112,0.849,2122,2.793,2150,0.507,2157,0.444,2160,1.081,2169,0.507,2178,0.507,2198,3.466,2199,0.507,2257,0.47,2349,0.532,2407,0.507,2486,0.532,2495,1.017,2508,0.565,2510,1.081,2513,1.081,2517,0.565,2546,0.97,2552,2.604,2624,0.565,2661,0.532,2662,0.532,2726,1.081,2790,1.081,2911,0.565,2925,0.565,2926,1.991,2932,0.565,2934,0.565,2955,1.017,2958,0.565,2960,0.565,2963,1.017,2968,1.017,2971,0.565,2975,1.081,3040,0.565,3041,0.565,3042,1.081,3043,1.555,3055,0.565,3057,0.615,3058,0.615,3059,0.615,3060,0.615,3061,5.437,3062,4.381,3063,4.381,3064,4.381,3065,0.615,3066,4.381,3067,0.615,3068,0.615,3069,0.615,3070,0.615,3071,1.178,3072,0.615,3073,0.615,3074,0.615,3075,0.615,3076,0.615,3077,0.615,3078,0.615,3079,1.178,3080,0.615,3081,0.615,3082,0.615,3083,0.615,3084,0.615,3085,1.178,3086,1.178,3087,0.615,3088,1.178,3089,0.615,3090,0.615]],["component/59",[271,0.415]]],"invertedIndex":[["",{"_index":144,"title":{"13-7":{},"13-8":{},"13-9":{},"13-10":{},"13-11":{},"13-13":{},"13-14":{},"13-15":{},"13-16":{},"42-7":{},"44-1":{},"44-2":{},"44-3":{},"44-4":{},"44-5":{},"44-6":{}},"name":{},"text":{"1":{},"2":{},"3":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{},"11":{},"13":{},"14":{},"15":{},"16":{},"17":{},"20":{},"21":{},"29":{},"33":{},"34":{},"35":{},"37":{},"38":{},"39":{},"40":{},"41":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{}},"component":{}}],["0",{"_index":309,"title":{"16-14":{}},"name":{},"text":{"2":{},"12":{},"13":{},"14":{},"16":{},"31":{},"34":{},"38":{},"39":{},"42":{},"43":{},"45":{},"46":{},"48":{},"49":{},"52":{},"53":{},"54":{},"57":{},"58":{},"59":{}},"component":{}}],["0'",{"_index":1621,"title":{},"name":{},"text":{"16":{}},"component":{}}],["0.000011483579723913",{"_index":1014,"title":{},"name":{},"text":{"11":{}},"component":{}}],["0.000017225369585869",{"_index":1017,"title":{},"name":{},"text":{"11":{}},"component":{}}],["0.0025",{"_index":1577,"title":{},"name":{},"text":{"16":{},"42":{}},"component":{}}],["0.04",{"_index":2450,"title":{},"name":{},"text":{"42":{}},"component":{}}],["0.08",{"_index":2448,"title":{},"name":{},"text":{"42":{}},"component":{}}],["0.1",{"_index":1458,"title":{},"name":{},"text":{"14":{}},"component":{}}],["0.1.0",{"_index":854,"title":{},"name":{},"text":{"7":{},"50":{}},"component":{}}],["0.10.3",{"_index":1489,"title":{},"name":{},"text":{"14":{}},"component":{}}],["0.11.0.2",{"_index":1413,"title":{},"name":{},"text":{"14":{}},"component":{}}],["0.11.1.1",{"_index":1387,"title":{},"name":{},"text":{"14":{}},"component":{}}],["0.11.2a0",{"_index":1375,"title":{},"name":{},"text":{"14":{}},"component":{}}],["0.12",{"_index":2489,"title":{},"name":{},"text":{"42":{}},"component":{}}],["0.12.0a0",{"_index":1357,"title":{},"name":{},"text":{"14":{}},"component":{}}],["0.12.1",{"_index":1205,"title":{},"name":{},"text":{"13":{}},"component":{}}],["0.12.2",{"_index":1115,"title":{},"name":{},"text":{"13":{}},"component":{}}],["0.128",{"_index":1581,"title":{},"name":{},"text":{"16":{},"42":{}},"component":{}}],["0.13.0",{"_index":1599,"title":{},"name":{},"text":{"16":{},"42":{}},"component":{}}],["0.13.1",{"_index":1563,"title":{},"name":{},"text":{"16":{},"42":{}},"component":{}}],["0.16",{"_index":2453,"title":{},"name":{},"text":{"42":{}},"component":{}}],["0.25",{"_index":2442,"title":{},"name":{},"text":{"42":{}},"component":{}}],["0.256",{"_index":1587,"title":{},"name":{},"text":{"16":{},"42":{}},"component":{}}],["0.4.0",{"_index":1132,"title":{},"name":{},"text":{"13":{}},"component":{}}],["0.5.0",{"_index":1133,"title":{},"name":{},"text":{"13":{}},"component":{}}],["0.5.5",{"_index":1311,"title":{"14-22":{}},"name":{},"text":{},"component":{}}],["0.5.6",{"_index":1309,"title":{"14-20":{}},"name":{},"text":{},"component":{}}],["0.6.0",{"_index":1307,"title":{"14-17":{}},"name":{},"text":{},"component":{}}],["0.6.1",{"_index":883,"title":{"14-15":{}},"name":{},"text":{"7":{}},"component":{}}],["0.6.2",{"_index":1306,"title":{"14-11":{}},"name":{},"text":{},"component":{}}],["0.6.3",{"_index":1303,"title":{"14-8":{}},"name":{},"text":{},"component":{}}],["0.6.4",{"_index":1301,"title":{"14-6":{}},"name":{},"text":{},"component":{}}],["0.6.5",{"_index":1300,"title":{"14-3":{}},"name":{},"text":{},"component":{}}],["0.6.6",{"_index":1298,"title":{"14-1":{}},"name":{},"text":{},"component":{}}],["0.64",{"_index":517,"title":{},"name":{},"text":{"3":{}},"component":{}}],["0.875",{"_index":1586,"title":{},"name":{},"text":{"16":{},"42":{}},"component":{}}],["000",{"_index":1923,"title":{},"name":{},"text":{"23":{},"42":{}},"component":{}}],["000/10",{"_index":2431,"title":{},"name":{},"text":{"42":{}},"component":{}}],["000/20",{"_index":2443,"title":{},"name":{},"text":{"42":{}},"component":{}}],["000/500",{"_index":2429,"title":{},"name":{},"text":{"42":{}},"component":{}}],["001",{"_index":2435,"title":{},"name":{},"text":{"42":{}},"component":{}}],["00:00",{"_index":2117,"title":{},"name":{},"text":{"31":{}},"component":{}}],["01",{"_index":2649,"title":{},"name":{},"text":{"46":{}},"component":{}}],["04",{"_index":1541,"title":{"16-15":{}},"name":{},"text":{},"component":{}}],["05",{"_index":1302,"title":{"14-6":{},"14-20":{},"14-22":{},"16-24":{}},"name":{},"text":{},"component":{}}],["06",{"_index":1304,"title":{"14-8":{},"14-11":{},"14-15":{},"14-17":{},"16-26":{}},"name":{},"text":{},"component":{}}],["07",{"_index":1299,"title":{"14-1":{},"14-3":{},"14-6":{}},"name":{},"text":{},"component":{}}],["089",{"_index":1931,"title":{},"name":{},"text":{"23":{}},"component":{}}],["0=1",{"_index":2764,"title":{},"name":{},"text":{"49":{}},"component":{}}],["0x",{"_index":1447,"title":{},"name":{},"text":{"14":{},"16":{}},"component":{}}],["0x0",{"_index":1007,"title":{"46-11":{}},"name":{},"text":{"11":{},"46":{},"47":{}},"component":{}}],["0x0086972e7463d5673d8b553ae521ec2df974a97c2ce6aafc1d1c20d22c6b96c6",{"_index":912,"title":{},"name":{},"text":{"8":{}},"component":{}}],["0x00e68b4b07aeecc72f768b1c086d9b0aadce131a40a1067ffb92d0b480cf325d",{"_index":906,"title":{},"name":{},"text":{"8":{}},"component":{}}],["0x011088d3cbe4289bc6750ee3a9cf35e52f4fa4e0ac9f42fb0b62e983139e135a",{"_index":960,"title":{},"name":{},"text":{"10":{}},"component":{}}],["0x014825acb37c36563d3b96c450afe363d2fdfa3cfbd618b323f95b68b55ebf7",{"_index":911,"title":{},"name":{},"text":{"8":{},"10":{}},"component":{}}],["0x01a881a75bb478cedfd4d3ea19d2a4564350d78ea463a5287833526a416d5e31",{"_index":1913,"title":{},"name":{},"text":{"22":{}},"component":{}}],["0x01cf4d57ba01109f018dec3ea079a38fc08b789e03de4df937ddb9e8a0ff853a",{"_index":1018,"title":{},"name":{},"text":{"11":{}},"component":{}}],["0x02cdab749380950e7a7c0deff5ea8edd716feb3a2952add4e5659655077b8510",{"_index":907,"title":{},"name":{},"text":{"8":{},"10":{}},"component":{}}],["0x035c332b8de00874e702b4831c84b22281fb3246f714475496d74e644f35d492",{"_index":1912,"title":{},"name":{},"text":{"22":{}},"component":{}}],["0x041a78e741e5af2fec34b695679bc6891742439f7afb8484ecd7766661ad02bf",{"_index":2196,"title":{},"name":{},"text":{"37":{}},"component":{}}],["0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d",{"_index":1908,"title":{},"name":{},"text":{"22":{}},"component":{}}],["0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7",{"_index":1909,"title":{},"name":{},"text":{"22":{}},"component":{}}],["0x04bc3fc2284c8e41fb3d2a37bb0354fd0506131cc77a8c91e4e67ce3aed1d19",{"_index":910,"title":{},"name":{},"text":{"8":{}},"component":{}}],["0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8",{"_index":2024,"title":{},"name":{},"text":{"30":{}},"component":{}}],["0x0550",{"_index":988,"title":{},"name":{},"text":{"11":{}},"component":{}}],["0x05cd48fccbfd8aa2773fe22c217e808319ffcc1c5a6a463f7d8fa2da48218196",{"_index":2026,"title":{},"name":{},"text":{"30":{}},"component":{}}],["0x0782f0ddca11d9950bc3220e35ac82cf868778edb67a5e58b39838544bc4cd0f",{"_index":1911,"title":{},"name":{},"text":{"22":{}},"component":{}}],["0x07ec0d28e50322eb0c159b9090ecf3aea8346df",{"_index":1906,"title":{},"name":{},"text":{"22":{}},"component":{}}],["0x0efe6a8b",{"_index":2029,"title":{},"name":{},"text":{"30":{}},"component":{}}],["0x1",{"_index":2600,"title":{"46-12":{}},"name":{},"text":{"46":{}},"component":{}}],["0x100000000000000000000000000000000",{"_index":2998,"title":{},"name":{},"text":{"57":{}},"component":{}}],["0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8",{"_index":2686,"title":{},"name":{},"text":{"47":{}},"component":{}}],["0x181de8b0cd32999a5cc962c5f724bc0f6a322f02957b80e1d5fef49a87588b7",{"_index":2679,"title":{},"name":{},"text":{"47":{}},"component":{}}],["0x194fc63c49b0f07c8e7a78476844837255213824bd6cb81e0ccfb949921aad1",{"_index":2685,"title":{},"name":{},"text":{"47":{}},"component":{}}],["0x221db5dbf6db",{"_index":2676,"title":{},"name":{},"text":{"47":{}},"component":{}}],["0x301fc0d09c5810600af7bb9610be10596ad6f4e6d28a60d397dd148f0962a88",{"_index":2677,"title":{},"name":{},"text":{"47":{}},"component":{}}],["0x47312450b3ac8b5b8e247a6bb6d523e7605bdb60",{"_index":1900,"title":{},"name":{},"text":{"22":{}},"component":{}}],["0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7",{"_index":2681,"title":{},"name":{},"text":{"47":{}},"component":{}}],["0x4c6f6e6720737472696e672c206d6f7265207468616e203331206368617261",{"_index":3028,"title":{},"name":{},"text":{"57":{}},"component":{}}],["0x63746572732e",{"_index":3029,"title":{},"name":{},"text":{"57":{}},"component":{}}],["0x68656c6c6f",{"_index":3027,"title":{},"name":{},"text":{"57":{}},"component":{}}],["0x73314940630fd6dcda0d772d4c972c4e0a9946bef9dabf4ef84eda8ef542b82",{"_index":2684,"title":{},"name":{},"text":{"47":{}},"component":{}}],["0x764da020183e28a48ee38a9474f84e7e5ff13194",{"_index":2683,"title":{},"name":{},"text":{"47":{}},"component":{}}],["0x8f97970ac5a9aa8d130d35146f5b59c4aef57963",{"_index":1903,"title":{},"name":{},"text":{"22":{}},"component":{}}],["0x9184e72a000",{"_index":2680,"title":{},"name":{},"text":{"47":{}},"component":{}}],["0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9",{"_index":2682,"title":{},"name":{},"text":{"47":{}},"component":{}}],["0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",{"_index":2023,"title":{},"name":{},"text":{"30":{}},"component":{}}],["0xc3511006c04ef1d78af4c8e0e74ec18a6e64ff9",{"_index":2687,"title":{},"name":{},"text":{"47":{}},"component":{}}],["0xc662c410c0ecf747543f5ba90660f6abebd9c8c4",{"_index":234,"title":{},"name":{},"text":{"1":{},"22":{}},"component":{}}],["0xde29d060d45901fb19ed6c6e959eb22d8626708",{"_index":1902,"title":{},"name":{},"text":{"22":{}},"component":{}}],["0xdeadbeef",{"_index":2688,"title":{},"name":{},"text":{"47":{}},"component":{}}],["0xe2bb56ee936fd6433dc0f6e7e3b8365c906aa057",{"_index":1905,"title":{},"name":{},"text":{"22":{}},"component":{}}],["0xe2bbb158",{"_index":2030,"title":{},"name":{},"text":{"30":{}},"component":{}}],["0xf6080d9fbeebcd44d89affbfd42f098cbff92816",{"_index":2025,"title":{},"name":{},"text":{"30":{}},"component":{}}],["0xf6080d9fbeebcd44d89affbfd42f098cbff92816#writeproxycontract",{"_index":2028,"title":{},"name":{},"text":{"30":{}},"component":{}}],["0}_{\\textit{serialized_member_0",{"_index":3002,"title":{},"name":{},"text":{"57":{}},"component":{}}],["0}_{\\textit{serialized_member_1",{"_index":3004,"title":{},"name":{},"text":{"57":{}},"component":{}}],["1",{"_index":143,"title":{"27-3":{},"27-7":{}},"name":{},"text":{"1":{},"3":{},"7":{},"8":{},"10":{},"11":{},"12":{},"13":{},"16":{},"17":{},"18":{},"21":{},"23":{},"24":{},"27":{},"30":{},"31":{},"32":{},"34":{},"38":{},"39":{},"40":{},"41":{},"42":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"53":{},"55":{},"57":{},"58":{},"59":{}},"component":{}}],["1.0",{"_index":1043,"title":{"49-5":{}},"name":{},"text":{"12":{},"16":{},"21":{},"48":{},"49":{}},"component":{}}],["1.0.0",{"_index":1393,"title":{},"name":{},"text":{"14":{}},"component":{}}],["1.27",{"_index":529,"title":{},"name":{},"text":{"3":{}},"component":{}}],["1.2b",{"_index":2468,"title":{},"name":{},"text":{"42":{}},"component":{}}],["1.5.0",{"_index":1564,"title":{},"name":{},"text":{"16":{}},"component":{}}],["1/40",{"_index":2430,"title":{},"name":{},"text":{"42":{}},"component":{}}],["1/sierra",{"_index":1265,"title":{},"name":{},"text":{"13":{}},"component":{}}],["10",{"_index":145,"title":{"14-1":{},"16-12":{}},"name":{},"text":{"1":{},"16":{},"42":{},"46":{},"48":{},"57":{},"59":{}},"component":{}}],["10.00",{"_index":495,"title":{},"name":{},"text":{"3":{}},"component":{}}],["10.76",{"_index":473,"title":{},"name":{},"text":{"3":{}},"component":{}}],["100",{"_index":1415,"title":{},"name":{},"text":{"14":{},"16":{},"42":{},"45":{},"56":{},"59":{}},"component":{}}],["101",{"_index":2646,"title":{},"name":{},"text":{"46":{}},"component":{}}],["102",{"_index":2581,"title":{},"name":{},"text":{"45":{}},"component":{}}],["1024",{"_index":1412,"title":{},"name":{},"text":{"14":{}},"component":{}}],["11",{"_index":1030,"title":{},"name":{},"text":{"12":{},"16":{},"22":{},"48":{}},"component":{}}],["1110",{"_index":2590,"title":{},"name":{},"text":{"45":{}},"component":{}}],["1124",{"_index":2381,"title":{},"name":{},"text":{"42":{}},"component":{}}],["12",{"_index":1545,"title":{"16-17":{},"16-21":{}},"name":{},"text":{"42":{}},"component":{}}],["12.93",{"_index":475,"title":{},"name":{},"text":{"3":{}},"component":{}}],["12345",{"_index":3034,"title":{},"name":{},"text":{"58":{}},"component":{}}],["1234567879",{"_index":2210,"title":{},"name":{},"text":{"37":{}},"component":{}}],["127",{"_index":530,"title":{},"name":{},"text":{"3":{}},"component":{}}],["128",{"_index":2987,"title":{},"name":{},"text":{"57":{}},"component":{}}],["1336043477925910602175429627555369551262229712266217887481529642650907574765",{"_index":2580,"title":{},"name":{},"text":{"45":{}},"component":{}}],["1351148242645005540004162531550805076995747746087542030095186557536641755046",{"_index":2567,"title":{},"name":{},"text":{"45":{}},"component":{}}],["1352",{"_index":1100,"title":{},"name":{},"text":{"13":{}},"component":{}}],["1359",{"_index":1102,"title":{},"name":{},"text":{"13":{}},"component":{}}],["1373",{"_index":1096,"title":{},"name":{},"text":{"13":{}},"component":{}}],["1378",{"_index":1090,"title":{},"name":{},"text":{"13":{}},"component":{}}],["1387",{"_index":1122,"title":{},"name":{},"text":{"13":{}},"component":{}}],["1394",{"_index":1107,"title":{},"name":{},"text":{"13":{}},"component":{}}],["1395",{"_index":1109,"title":{},"name":{},"text":{"13":{}},"component":{}}],["1396",{"_index":1108,"title":{},"name":{},"text":{"13":{}},"component":{}}],["1397",{"_index":1113,"title":{},"name":{},"text":{"13":{}},"component":{}}],["14",{"_index":1308,"title":{"14-17":{}},"name":{},"text":{},"component":{}}],["1400",{"_index":1126,"title":{},"name":{},"text":{"13":{}},"component":{}}],["1401",{"_index":1086,"title":{},"name":{},"text":{"13":{}},"component":{}}],["1405",{"_index":1116,"title":{},"name":{},"text":{"13":{}},"component":{}}],["1471584055184889701471507129567376607666785522455476394130774434754411633091",{"_index":2584,"title":{},"name":{},"text":{"45":{}},"component":{}}],["15",{"_index":524,"title":{},"name":{},"text":{"3":{},"12":{}},"component":{}}],["152666792071518830868575557812948353041420400780739481342941381225525861407",{"_index":2345,"title":{},"name":{},"text":{"41":{}},"component":{}}],["15th",{"_index":521,"title":{},"name":{},"text":{"3":{},"12":{}},"component":{}}],["1637",{"_index":2384,"title":{},"name":{},"text":{"42":{}},"component":{}}],["17",{"_index":2340,"title":{},"name":{},"text":{"41":{}},"component":{}}],["17*2^{192",{"_index":2333,"title":{},"name":{},"text":{"40":{},"57":{}},"component":{}}],["17/11",{"_index":1527,"title":{},"name":{},"text":{"14":{}},"component":{}}],["18",{"_index":146,"title":{"14-15":{},"14-22":{}},"name":{},"text":{"1":{},"48":{}},"component":{}}],["18.17",{"_index":471,"title":{},"name":{},"text":{"3":{}},"component":{}}],["18446744073709551617",{"_index":2566,"title":{},"name":{},"text":{"45":{}},"component":{}}],["19",{"_index":1045,"title":{"16-13":{}},"name":{},"text":{"12":{}},"component":{}}],["1_felt252.try_into",{"_index":2509,"title":{},"name":{},"text":{"44":{}},"component":{}}],["1}_{\\textit{serialized_member_2",{"_index":3006,"title":{},"name":{},"text":{"57":{}},"component":{}}],["1’",{"_index":1270,"title":{},"name":{},"text":{"13":{}},"component":{}}],["2",{"_index":287,"title":{"27-4":{},"27-8":{}},"name":{},"text":{"2":{},"3":{},"12":{},"13":{},"16":{},"17":{},"22":{},"31":{},"32":{},"39":{},"42":{},"44":{},"45":{},"46":{},"48":{},"57":{},"58":{},"59":{}},"component":{}}],["2.0",{"_index":1797,"title":{},"name":{},"text":{"20":{},"27":{},"30":{},"31":{},"47":{}},"component":{}}],["2.0.0",{"_index":1565,"title":{},"name":{},"text":{"16":{},"51":{}},"component":{}}],["2.0.1",{"_index":876,"title":{},"name":{},"text":{"7":{}},"component":{}}],["2.00",{"_index":506,"title":{},"name":{},"text":{"3":{}},"component":{}}],["2.1.0",{"_index":875,"title":{},"name":{},"text":{"7":{}},"component":{}}],["2.2.0",{"_index":855,"title":{},"name":{},"text":{"7":{}},"component":{}}],["2.4.0",{"_index":1609,"title":{},"name":{},"text":{"16":{}},"component":{}}],["2.56",{"_index":2455,"title":{},"name":{},"text":{"42":{}},"component":{}}],["2.6",{"_index":1566,"title":{},"name":{},"text":{"16":{}},"component":{}}],["20",{"_index":1555,"title":{"16-25":{}},"name":{},"text":{"16":{},"19":{},"21":{},"25":{},"27":{},"30":{},"31":{},"35":{},"42":{},"51":{},"57":{}},"component":{}}],["20.04",{"_index":460,"title":{},"name":{},"text":{"3":{}},"component":{}}],["200",{"_index":1198,"title":{},"name":{},"text":{"13":{},"23":{},"45":{}},"component":{}}],["2019172390095051323869047481075102003731246132997057518965927979101413600827",{"_index":2565,"title":{},"name":{},"text":{"45":{}},"component":{}}],["2022",{"_index":452,"title":{},"name":{},"text":{"3":{}},"component":{}}],["2023",{"_index":1029,"title":{"14-1":{},"14-3":{},"14-6":{},"14-8":{},"14-11":{},"14-15":{},"14-17":{},"14-20":{},"14-22":{}},"name":{},"text":{"12":{},"21":{}},"component":{}}],["2024",{"_index":428,"title":{},"name":{},"text":{"3":{},"12":{},"16":{},"22":{},"30":{},"48":{}},"component":{}}],["2025",{"_index":429,"title":{},"name":{},"text":{"3":{}},"component":{}}],["2027",{"_index":531,"title":{},"name":{},"text":{"3":{}},"component":{}}],["20\\cdot4+12\\cdot16",{"_index":2469,"title":{},"name":{},"text":{"42":{}},"component":{}}],["20k",{"_index":2526,"title":{},"name":{},"text":{"44":{}},"component":{}}],["21",{"_index":1543,"title":{"16-16":{}},"name":{},"text":{},"component":{}}],["2111158214429736260101797453815341265658516118421387314850625535905115418634",{"_index":2582,"title":{},"name":{},"text":{"45":{}},"component":{}}],["2128",{"_index":2990,"title":{},"name":{},"text":{"57":{}},"component":{}}],["2129+2128+20",{"_index":2992,"title":{},"name":{},"text":{"57":{}},"component":{}}],["22",{"_index":1549,"title":{"16-21":{},"16-22":{},"16-23":{},"16-24":{},"16-25":{},"16-26":{}},"name":{},"text":{},"component":{}}],["221246409693049874911156614478125967098431447433028390043893900771521609973",{"_index":2594,"title":{},"name":{},"text":{"45":{}},"component":{}}],["23",{"_index":1538,"title":{"16-12":{},"16-13":{},"16-15":{},"16-16":{},"16-17":{},"16-18":{},"16-19":{},"16-20":{}},"name":{},"text":{},"component":{}}],["24",{"_index":2116,"title":{},"name":{},"text":{"31":{}},"component":{}}],["24/11",{"_index":1528,"title":{},"name":{},"text":{"14":{}},"component":{}}],["240",{"_index":2391,"title":{},"name":{},"text":{"42":{}},"component":{}}],["240\\right",{"_index":2461,"title":{},"name":{},"text":{"42":{}},"component":{}}],["2439272289032330041885427773916021390926903450917097317807468082958581062272",{"_index":2588,"title":{},"name":{},"text":{"45":{}},"component":{}}],["2472939307328371039455977650994226407024607754063562993856224077254594995194",{"_index":2579,"title":{},"name":{},"text":{"45":{}},"component":{}}],["248",{"_index":2279,"title":{},"name":{},"text":{"39":{}},"component":{}}],["25",{"_index":1310,"title":{"14-20":{},"16-23":{}},"name":{},"text":{"16":{}},"component":{}}],["250",{"_index":2265,"title":{},"name":{},"text":{"39":{}},"component":{}}],["251",{"_index":2601,"title":{},"name":{},"text":{"46":{}},"component":{}}],["252",{"_index":2970,"title":{"57-1":{},"57-2":{}},"name":{},"text":{"57":{}},"component":{}}],["256",{"_index":1961,"title":{},"name":{},"text":{"26":{},"42":{},"54":{}},"component":{}}],["25th",{"_index":1794,"title":{},"name":{},"text":{"20":{}},"component":{}}],["264+1",{"_index":2570,"title":{},"name":{},"text":{"45":{}},"component":{}}],["28",{"_index":1584,"title":{},"name":{},"text":{"16":{},"23":{},"42":{}},"component":{}}],["29",{"_index":1305,"title":{"14-8":{},"14-11":{},"16-20":{},"16-22":{}},"name":{},"text":{},"component":{}}],["290",{"_index":1928,"title":{},"name":{},"text":{"23":{}},"component":{}}],["2^{192",{"_index":2341,"title":{},"name":{},"text":{"41":{}},"component":{}}],["2^{192}+1",{"_index":2256,"title":{},"name":{},"text":{"39":{}},"component":{}}],["2^{251",{"_index":2332,"title":{},"name":{},"text":{"40":{},"41":{},"54":{},"57":{}},"component":{}}],["2^{64}+1",{"_index":2599,"title":{},"name":{},"text":{"45":{}},"component":{}}],["2^{\\ell_r",{"_index":2642,"title":{},"name":{},"text":{"46":{}},"component":{}}],["2^{length",{"_index":2620,"title":{},"name":{},"text":{"46":{}},"component":{}}],["2d",{"_index":2370,"title":{},"name":{},"text":{"42":{}},"component":{}}],["2n",{"_index":2463,"title":{},"name":{},"text":{"42":{}},"component":{}}],["3",{"_index":1628,"title":{"27-5":{},"27-9":{},"42-7":{}},"name":{},"text":{"16":{},"23":{},"31":{},"32":{},"44":{},"45":{},"48":{},"56":{},"57":{},"58":{},"59":{}},"component":{}}],["3+\\text{payload_size}\\right",{"_index":2480,"title":{},"name":{},"text":{"42":{}},"component":{}}],["3.048",{"_index":533,"title":{},"name":{},"text":{"3":{}},"component":{}}],["3.10",{"_index":1441,"title":{},"name":{},"text":{"14":{}},"component":{}}],["3.8",{"_index":1442,"title":{},"name":{},"text":{"14":{}},"component":{}}],["3.9",{"_index":1440,"title":{},"name":{},"text":{"14":{}},"component":{}}],["30",{"_index":456,"title":{},"name":{},"text":{"3":{},"13":{},"57":{}},"component":{}}],["30.48",{"_index":532,"title":{},"name":{},"text":{"3":{}},"component":{}}],["300",{"_index":2597,"title":{},"name":{},"text":{"45":{}},"component":{}}],["31",{"_index":1546,"title":{"16-18":{}},"name":{},"text":{"57":{}},"component":{}}],["312",{"_index":2400,"title":{},"name":{},"text":{"42":{}},"component":{}}],["3141592653589793238462643383279502884197169399375105820974944592307816406665",{"_index":2272,"title":{},"name":{},"text":{"39":{},"41":{}},"component":{}}],["32",{"_index":1432,"title":{},"name":{},"text":{"14":{},"42":{},"45":{}},"component":{}}],["32\\cdot16",{"_index":2465,"title":{},"name":{},"text":{"42":{}},"component":{}}],["3423542542364363",{"_index":3081,"title":{},"name":{},"text":{"59":{}},"component":{}}],["3429319713503054399243751728532349500489096444181867640228809233993992987070",{"_index":2589,"title":{},"name":{},"text":{"45":{}},"component":{}}],["3476138891838001128614704553731964710634238587541803499001822322602421164873",{"_index":2591,"title":{},"name":{},"text":{"45":{}},"component":{}}],["3534535754756246375475423547453",{"_index":3090,"title":{},"name":{},"text":{"59":{}},"component":{}}],["3618502788666131213697322783095070105623107215331596699973092056135872020481",{"_index":2339,"title":{},"name":{},"text":{"41":{}},"component":{}}],["375+2\\cdot",{"_index":2487,"title":{},"name":{},"text":{"42":{}},"component":{}}],["3t",{"_index":2359,"title":{},"name":{},"text":{"42":{}},"component":{}}],["4",{"_index":1919,"title":{},"name":{},"text":{"23":{},"32":{},"39":{},"42":{},"45":{},"48":{},"58":{}},"component":{}}],["40",{"_index":2427,"title":{},"name":{},"text":{"42":{}},"component":{}}],["400",{"_index":1635,"title":{},"name":{},"text":{"16":{},"45":{}},"component":{}}],["4337",{"_index":2148,"title":{},"name":{},"text":{"33":{},"35":{}},"component":{}}],["446",{"_index":1932,"title":{},"name":{},"text":{"23":{}},"component":{}}],["4844",{"_index":1569,"title":{},"name":{},"text":{"16":{}},"component":{}}],["5",{"_index":1687,"title":{},"name":{},"text":{"16":{},"23":{},"30":{},"32":{},"42":{},"45":{},"48":{},"51":{},"57":{}},"component":{}}],["5.12",{"_index":2451,"title":{},"name":{},"text":{"42":{}},"component":{}}],["50",{"_index":1579,"title":{},"name":{},"text":{"16":{}},"component":{}}],["500",{"_index":1634,"title":{},"name":{},"text":{"16":{},"42":{},"45":{}},"component":{}}],["512",{"_index":2396,"title":{},"name":{},"text":{"42":{}},"component":{}}],["541081937647750334353499719661793404023294520617957763260656728924567461866",{"_index":2586,"title":{},"name":{},"text":{"45":{}},"component":{}}],["551",{"_index":2395,"title":{},"name":{},"text":{"42":{}},"component":{}}],["558404273560404778508455254030458021013656352466216690688595011803280448030",{"_index":2595,"title":{},"name":{},"text":{"45":{}},"component":{}}],["558404273560404778508455254030458021013656352466216690688595011803280448031",{"_index":2596,"title":{},"name":{},"text":{"45":{}},"component":{}}],["558404273560404778508455254030458021013656352466216690688595011803280448032",{"_index":2568,"title":{},"name":{},"text":{"45":{}},"component":{}}],["59664015286291125586727181187045849528930298741728639958614076589374875456",{"_index":2592,"title":{},"name":{},"text":{"45":{}},"component":{}}],["5m",{"_index":2440,"title":{},"name":{},"text":{"42":{}},"component":{}}],["6",{"_index":2141,"title":{},"name":{},"text":{"32":{},"33":{},"42":{},"45":{},"57":{}},"component":{}}],["600",{"_index":2593,"title":{},"name":{},"text":{"45":{}},"component":{}}],["612",{"_index":2483,"title":{},"name":{},"text":{"42":{}},"component":{}}],["619473939880410191267127038055308002651079521370507951329266275707625062498",{"_index":2583,"title":{},"name":{},"text":{"45":{}},"component":{}}],["619473939880410191267127038055308002651079521370507951329266275707625062499",{"_index":2585,"title":{},"name":{},"text":{"45":{}},"component":{}}],["64",{"_index":518,"title":{},"name":{},"text":{"3":{},"43":{}},"component":{}}],["6\\cdot16+26\\cdot4",{"_index":2466,"title":{},"name":{},"text":{"42":{}},"component":{}}],["7",{"_index":2569,"title":{},"name":{},"text":{"45":{}},"component":{}}],["7.68",{"_index":527,"title":{},"name":{},"text":{"3":{}},"component":{}}],["726",{"_index":1486,"title":{},"name":{},"text":{"14":{}},"component":{}}],["768",{"_index":528,"title":{},"name":{},"text":{"3":{}},"component":{}}],["799",{"_index":1473,"title":{},"name":{},"text":{"14":{}},"component":{}}],["8",{"_index":2598,"title":{},"name":{},"text":{"45":{},"48":{},"50":{}},"component":{}}],["8.10",{"_index":503,"title":{},"name":{},"text":{"3":{}},"component":{}}],["81",{"_index":1927,"title":{},"name":{},"text":{"23":{}},"component":{}}],["874739451078007766457464989774322083649278607533249481151382481072868806602",{"_index":2344,"title":{},"name":{},"text":{"41":{}},"component":{}}],["895",{"_index":1206,"title":{},"name":{},"text":{"13":{}},"component":{}}],["9.00",{"_index":486,"title":{},"name":{},"text":{"3":{}},"component":{}}],["900",{"_index":1208,"title":{},"name":{},"text":{"13":{}},"component":{}}],["906096",{"_index":2678,"title":{},"name":{},"text":{"47":{}},"component":{}}],["907",{"_index":1204,"title":{},"name":{},"text":{"13":{}},"component":{}}],["908",{"_index":1211,"title":{},"name":{},"text":{"13":{}},"component":{}}],["95220",{"_index":1439,"title":{},"name":{},"text":{"14":{}},"component":{}}],["955723665991825982403667749532843665052270105995360175183368988948217233556",{"_index":2587,"title":{},"name":{},"text":{"45":{}},"component":{}}],["_",{"_index":2911,"title":{},"name":{},"text":{"51":{},"59":{}},"component":{}}],["__default__",{"_index":754,"title":{},"name":{},"text":{"5":{}},"component":{}}],["__execute__",{"_index":2146,"title":{},"name":{},"text":{"33":{},"36":{},"38":{},"48":{}},"component":{}}],["__validate__",{"_index":1571,"title":{},"name":{},"text":{"16":{},"33":{},"34":{},"36":{},"38":{},"47":{},"48":{},"56":{},"59":{}},"component":{}}],["__validate_declare__",{"_index":2662,"title":{},"name":{},"text":{"47":{},"56":{},"59":{}},"component":{}}],["__validate_deploy__",{"_index":2169,"title":{},"name":{},"text":{"34":{},"47":{},"56":{},"59":{}},"component":{}}],["_{\\text{contract",{"_index":2459,"title":{},"name":{},"text":{"42":{}},"component":{}}],["_{\\text{storag",{"_index":2462,"title":{},"name":{},"text":{"42":{}},"component":{}}],["_{i=1}^n",{"_index":2815,"title":{},"name":{},"text":{"50":{}},"component":{}}],["a=index",{"_index":2777,"title":{},"name":{},"text":{"49":{}},"component":{}}],["a_1",{"_index":2306,"title":{},"name":{},"text":{"39":{}},"component":{}}],["a_2",{"_index":2309,"title":{},"name":{},"text":{"39":{}},"component":{}}],["a_3",{"_index":2317,"title":{},"name":{},"text":{"39":{}},"component":{}}],["a_n",{"_index":2307,"title":{},"name":{},"text":{"39":{}},"component":{}}],["a_n;0",{"_index":2311,"title":{},"name":{},"text":{"39":{}},"component":{}}],["a_n;\\text{had",{"_index":2318,"title":{},"name":{},"text":{"39":{}},"component":{}}],["a_n;s_1",{"_index":2312,"title":{},"name":{},"text":{"39":{}},"component":{}}],["a_{high",{"_index":2276,"title":{},"name":{},"text":{"39":{}},"component":{}}],["a_{low",{"_index":2275,"title":{},"name":{},"text":{"39":{}},"component":{}}],["abdk",{"_index":1758,"title":{},"name":{},"text":{"18":{}},"component":{}}],["abi",{"_index":712,"title":{"51":{},"6-8":{},"51-2":{},"51-9":{},"58-2":{}},"name":{"51":{}},"text":{"5":{},"6":{},"14":{},"16":{},"21":{},"30":{},"42":{},"50":{},"51":{},"55":{},"58":{}},"component":{}}],["abi.encodepack",{"_index":2524,"title":{},"name":{},"text":{"44":{}},"component":{}}],["abi_hash",{"_index":2813,"title":{},"name":{},"text":{"50":{}},"component":{}}],["abil",{"_index":976,"title":{},"name":{},"text":{"11":{},"12":{},"14":{},"21":{},"38":{}},"component":{}}],["abort",{"_index":160,"title":{},"name":{},"text":{"1":{}},"component":{}}],["abov",{"_index":441,"title":{},"name":{},"text":{"3":{},"7":{},"8":{},"10":{},"16":{},"33":{},"38":{},"39":{},"42":{},"44":{},"45":{},"46":{},"49":{},"50":{},"51":{},"54":{},"57":{},"58":{}},"component":{}}],["abstract",{"_index":1,"title":{"1-1":{},"35-2":{}},"name":{},"text":{"1":{},"16":{},"21":{},"33":{},"35":{},"38":{}},"component":{}}],["abus",{"_index":2781,"title":{},"name":{},"text":{"49":{}},"component":{}}],["acceler",{"_index":1633,"title":{},"name":{},"text":{"16":{}},"component":{}}],["accept",{"_index":82,"title":{},"name":{},"text":{"1":{},"5":{},"10":{},"13":{},"14":{},"16":{},"45":{},"47":{},"49":{}},"component":{}}],["accepted_on_l1",{"_index":800,"title":{},"name":{},"text":{"5":{},"47":{}},"component":{}}],["accepted_on_l2",{"_index":799,"title":{},"name":{},"text":{"5":{},"14":{},"16":{},"27":{},"47":{}},"component":{}}],["access",{"_index":624,"title":{},"name":{},"text":{"3":{},"5":{},"11":{},"13":{},"14":{},"16":{},"25":{},"34":{},"35":{},"44":{},"55":{},"59":{}},"component":{}}],["accident",{"_index":1416,"title":{},"name":{},"text":{"14":{}},"component":{}}],["accommod",{"_index":1222,"title":{},"name":{},"text":{"13":{},"46":{}},"component":{}}],["accord",{"_index":459,"title":{},"name":{},"text":{"3":{},"12":{},"16":{},"21":{},"42":{},"45":{},"46":{},"49":{},"51":{}},"component":{}}],["accordingli",{"_index":1580,"title":{},"name":{},"text":{"16":{}},"component":{}}],["account",{"_index":0,"title":{"11":{},"33":{},"34":{},"35":{},"1-1":{},"1-2":{},"11-2":{},"11-8":{},"11-9":{},"34-1":{},"35-1":{},"35-2":{},"35-3":{}},"name":{},"text":{"1":{},"2":{},"5":{},"6":{},"9":{},"11":{},"13":{},"16":{},"21":{},"27":{},"29":{},"31":{},"33":{},"34":{},"35":{},"37":{},"38":{},"42":{},"44":{},"46":{},"47":{},"48":{},"51":{},"53":{},"56":{}},"component":{}}],["account_contract",{"_index":806,"title":{"6-10":{}},"name":{},"text":{"6":{}},"component":{}}],["account_contract_address",{"_index":2966,"title":{},"name":{},"text":{"56":{}},"component":{}}],["account_deployment_data",{"_index":2691,"title":{},"name":{},"text":{"48":{},"56":{}},"component":{}}],["account_nam",{"_index":753,"title":{},"name":{},"text":{"5":{}},"component":{}}],["account’",{"_index":2157,"title":{},"name":{},"text":{"33":{},"34":{},"35":{},"37":{},"38":{},"47":{},"48":{},"59":{}},"component":{}}],["accru",{"_index":656,"title":{},"name":{},"text":{"3":{}},"component":{}}],["accur",{"_index":1512,"title":{},"name":{},"text":{"14":{}},"component":{}}],["achiev",{"_index":290,"title":{},"name":{},"text":{"2":{},"3":{},"14":{},"21":{},"37":{},"38":{},"49":{}},"component":{}}],["act",{"_index":138,"title":{},"name":{},"text":{"1":{},"53":{}},"component":{}}],["action",{"_index":363,"title":{},"name":{},"text":{"3":{},"26":{},"31":{},"38":{}},"component":{}}],["activ",{"_index":352,"title":{},"name":{},"text":{"3":{},"16":{},"21":{},"31":{},"44":{}},"component":{}}],["actor",{"_index":358,"title":{},"name":{},"text":{"3":{}},"component":{}}],["actual",{"_index":252,"title":{},"name":{},"text":{"1":{},"3":{},"16":{},"21":{},"27":{},"42":{},"47":{},"49":{},"57":{}},"component":{}}],["actual_fe",{"_index":2671,"title":{},"name":{},"text":{"47":{}},"component":{}}],["ad",{"_index":92,"title":{"25":{},"13-2":{},"13-7":{},"13-13":{},"13-18":{},"13-20":{},"13-24":{},"13-28":{},"13-31":{},"13-35":{},"13-42":{},"14-12":{},"14-21":{},"14-23":{},"14-27":{},"14-30":{},"14-33":{},"14-39":{},"14-47":{},"14-51":{},"14-59":{},"14-69":{}},"name":{},"text":{"1":{},"5":{},"8":{},"13":{},"14":{},"16":{},"21":{},"25":{},"30":{},"42":{},"44":{},"51":{},"53":{},"54":{},"55":{}},"component":{}}],["adapt",{"_index":1097,"title":{},"name":{},"text":{"13":{}},"component":{}}],["add",{"_index":794,"title":{},"name":{},"text":{"5":{},"7":{},"13":{},"14":{},"16":{},"25":{},"30":{},"31":{},"35":{},"38":{},"42":{},"44":{},"49":{},"51":{},"55":{},"58":{}},"component":{}}],["added_valu",{"_index":2860,"title":{},"name":{},"text":{"51":{}},"component":{}}],["adding_a_token",{"_index":1948,"title":{},"name":{"25":{}},"text":{},"component":{}}],["addit",{"_index":151,"title":{"16-11":{},"25-1":{},"26-1":{},"27-10":{},"28-1":{},"30-6":{},"31-69":{},"31-78":{},"34-3":{},"53-4":{},"57-10":{}},"name":{},"text":{"1":{},"3":{},"14":{},"16":{},"21":{},"26":{},"29":{},"39":{},"42":{},"45":{},"48":{},"49":{},"51":{},"52":{},"55":{}},"component":{}}],["addition",{"_index":1615,"title":{},"name":{},"text":{"16":{},"46":{}},"component":{}}],["addition/multipl",{"_index":2418,"title":{},"name":{},"text":{"42":{}},"component":{}}],["address",{"_index":233,"title":{"22":{},"52":{},"37-1":{},"46-10":{},"46-11":{},"46-12":{}},"name":{"52":{}},"text":{"1":{},"3":{},"5":{},"7":{},"8":{},"10":{},"11":{},"13":{},"14":{},"16":{},"19":{},"22":{},"23":{},"27":{},"30":{},"31":{},"34":{},"35":{},"37":{},"42":{},"43":{},"44":{},"45":{},"46":{},"48":{},"49":{},"52":{},"53":{},"54":{},"56":{},"58":{},"59":{}},"component":{}}],["address_domain",{"_index":2926,"title":{},"name":{},"text":{"54":{},"59":{}},"component":{}}],["adher",{"_index":2159,"title":{},"name":{},"text":{"33":{}},"component":{}}],["adjust",{"_index":1186,"title":{},"name":{},"text":{"13":{}},"component":{}}],["admin",{"_index":2060,"title":{},"name":{},"text":{"30":{}},"component":{}}],["administr",{"_index":2019,"title":{},"name":{},"text":{"30":{}},"component":{}}],["adopt",{"_index":568,"title":{},"name":{},"text":{"3":{}},"component":{}}],["advantag",{"_index":977,"title":{},"name":{},"text":{"11":{}},"component":{}}],["advic",{"_index":646,"title":{},"name":{},"text":{"3":{}},"component":{}}],["affect",{"_index":262,"title":{},"name":{},"text":{"1":{},"5":{},"16":{},"30":{},"45":{},"50":{},"55":{}},"component":{}}],["again",{"_index":962,"title":{},"name":{},"text":{"10":{}},"component":{}}],["against",{"_index":2003,"title":{},"name":{},"text":{"28":{},"31":{}},"component":{}}],["agent",{"_index":2055,"title":{},"name":{},"text":{"30":{}},"component":{}}],["aggreg",{"_index":70,"title":{},"name":{},"text":{"1":{},"20":{},"42":{}},"component":{}}],["aim",{"_index":296,"title":{},"name":{},"text":{"2":{},"13":{},"30":{}},"component":{}}],["air",{"_index":2745,"title":{"49-3":{}},"name":{},"text":{},"component":{}}],["aka",{"_index":477,"title":{},"name":{},"text":{"3":{}},"component":{}}],["alchemi",{"_index":865,"title":{},"name":{},"text":{"7":{},"17":{}},"component":{}}],["algebra",{"_index":2294,"title":{},"name":{},"text":{"39":{}},"component":{}}],["algorithm",{"_index":1391,"title":{},"name":{},"text":{"14":{},"48":{}},"component":{}}],["align",{"_index":500,"title":{},"name":{},"text":{"3":{},"13":{},"48":{}},"component":{}}],["alloc",{"_index":463,"title":{},"name":{},"text":{"3":{},"13":{},"42":{},"58":{}},"component":{}}],["alloc_loc",{"_index":2775,"title":{},"name":{},"text":{"49":{}},"component":{}}],["allot",{"_index":540,"title":{},"name":{},"text":{"3":{}},"component":{}}],["allow",{"_index":243,"title":{},"name":{},"text":{"1":{},"3":{},"5":{},"9":{},"10":{},"13":{},"14":{},"16":{},"21":{},"28":{},"35":{},"38":{},"44":{},"45":{},"48":{},"49":{},"50":{},"51":{},"54":{},"56":{}},"component":{}}],["along",{"_index":1504,"title":{},"name":{},"text":{"14":{},"46":{}},"component":{}}],["alpha",{"_index":693,"title":{},"name":{},"text":{"5":{},"41":{},"45":{},"49":{}},"component":{}}],["alpha=1",{"_index":2271,"title":{},"name":{},"text":{"39":{}},"component":{}}],["alphabet",{"_index":1938,"title":{},"name":{},"text":{"24":{},"31":{}},"component":{}}],["alreadi",{"_index":899,"title":{},"name":{},"text":{"7":{},"11":{},"21":{},"28":{},"31":{},"37":{},"49":{}},"component":{}}],["altern",{"_index":1025,"title":{},"name":{},"text":{"12":{},"14":{}},"component":{}}],["altogeth",{"_index":1802,"title":{},"name":{},"text":{"20":{}},"component":{}}],["alway",{"_index":879,"title":{},"name":{},"text":{"7":{},"16":{},"38":{},"42":{},"44":{},"48":{},"49":{},"51":{}},"component":{}}],["aminsato",{"_index":1121,"title":{},"name":{},"text":{"13":{}},"component":{}}],["amount",{"_index":1916,"title":{},"name":{},"text":{"23":{},"27":{},"28":{},"31":{},"42":{},"44":{},"48":{},"51":{},"55":{},"56":{}},"component":{}}],["analog",{"_index":2661,"title":{},"name":{},"text":{"47":{},"53":{},"59":{}},"component":{}}],["analysi",{"_index":2139,"title":{},"name":{},"text":{"32":{}},"component":{}}],["analyz",{"_index":2412,"title":{},"name":{},"text":{"42":{}},"component":{}}],["and/or",{"_index":579,"title":{},"name":{},"text":{"3":{}},"component":{}}],["annot",{"_index":2528,"title":{},"name":{},"text":{"44":{},"51":{},"55":{}},"component":{}}],["announc",{"_index":493,"title":{},"name":{},"text":{"3":{},"12":{},"20":{}},"component":{}}],["anoth",{"_index":1831,"title":{},"name":{},"text":{"21":{},"26":{},"31":{},"35":{},"46":{},"47":{},"51":{},"59":{}},"component":{}}],["anotherenum",{"_index":2885,"title":{},"name":{},"text":{"51":{}},"component":{}}],["anotherenum::var2",{"_index":2887,"title":{},"name":{},"text":{"51":{}},"component":{}}],["answer",{"_index":152,"title":{},"name":{},"text":{"1":{}},"component":{}}],["anyon",{"_index":1995,"title":{},"name":{},"text":{"27":{},"31":{},"45":{}},"component":{}}],["anyone’",{"_index":581,"title":{},"name":{},"text":{"3":{}},"component":{}}],["anyth",{"_index":1888,"title":{},"name":{},"text":{"21":{}},"component":{}}],["anywher",{"_index":2890,"title":{},"name":{},"text":{"51":{}},"component":{}}],["ap",{"_index":1682,"title":{},"name":{},"text":{"16":{}},"component":{}}],["api",{"_index":3,"title":{"17":{},"1-3":{},"14-43":{},"16-9":{},"37-8":{}},"name":{"17":{}},"text":{"1":{},"2":{},"11":{},"12":{},"13":{},"14":{},"16":{},"17":{},"21":{},"22":{},"31":{},"48":{}},"component":{}}],["api/starknet",{"_index":1727,"title":{},"name":{},"text":{"17":{}},"component":{}}],["app",{"_index":1806,"title":{},"name":{},"text":{"20":{}},"component":{}}],["appear",{"_index":1407,"title":{},"name":{},"text":{"14":{},"28":{},"31":{},"42":{},"44":{},"48":{},"51":{},"56":{},"57":{},"58":{},"59":{}},"component":{}}],["appli",{"_index":750,"title":{},"name":{},"text":{"5":{},"14":{},"16":{},"42":{},"47":{}},"component":{}}],["applic",{"_index":482,"title":{},"name":{},"text":{"3":{},"5":{},"21":{},"26":{},"32":{},"42":{}},"component":{}}],["approach",{"_index":978,"title":{},"name":{"33":{}},"text":{"11":{},"30":{}},"component":{}}],["appropri",{"_index":1832,"title":{},"name":{},"text":{"21":{}},"component":{}}],["approv",{"_index":439,"title":{},"name":{},"text":{"3":{},"38":{},"48":{},"51":{}},"component":{}}],["approxim",{"_index":1612,"title":{},"name":{},"text":{"16":{},"28":{},"31":{}},"component":{}}],["april",{"_index":523,"title":{},"name":{},"text":{"3":{},"12":{},"16":{},"22":{},"48":{}},"component":{}}],["arbitrari",{"_index":2150,"title":{},"name":{},"text":{"33":{},"38":{},"39":{},"59":{}},"component":{}}],["architectur",{"_index":56,"title":{"4":{},"30":{},"2-3":{}},"name":{},"text":{"1":{},"2":{},"25":{},"32":{},"46":{},"49":{}},"component":{}}],["arg",{"_index":2933,"title":{},"name":{},"text":{"54":{}},"component":{}}],["argent",{"_index":963,"title":{"11-6":{}},"name":{},"text":{"11":{},"21":{}},"component":{}}],["argument",{"_index":718,"title":{"6-4":{},"6-6":{},"59-4":{},"59-11":{},"59-18":{},"59-24":{},"59-30":{},"59-37":{},"59-43":{},"59-50":{},"59-56":{},"59-63":{}},"name":{},"text":{"5":{},"6":{},"8":{},"10":{},"14":{},"16":{},"34":{},"37":{},"46":{},"48":{},"54":{},"55":{},"57":{},"59":{}},"component":{}}],["aris",{"_index":2054,"title":{},"name":{},"text":{"30":{}},"component":{}}],["arithmet",{"_index":2633,"title":{},"name":{},"text":{"46":{}},"component":{}}],["around",{"_index":1679,"title":{},"name":{},"text":{"16":{}},"component":{}}],["arr",{"_index":3046,"title":{},"name":{},"text":{"58":{}},"component":{}}],["arr_len",{"_index":3045,"title":{},"name":{},"text":{"58":{}},"component":{}}],["array",{"_index":1234,"title":{"39-6":{},"57-6":{},"57-9":{}},"name":{},"text":{"13":{},"16":{},"31":{},"37":{},"39":{},"42":{},"44":{},"45":{},"49":{},"50":{},"51":{},"52":{},"57":{},"58":{},"59":{}},"component":{}}],["array!['key",{"_index":3040,"title":{},"name":{},"text":{"58":{},"59":{}},"component":{}}],["array![1",{"_index":3041,"title":{},"name":{},"text":{"58":{},"59":{}},"component":{}}],["array![10",{"_index":2999,"title":{},"name":{},"text":{"57":{}},"component":{}}],["array_ptr",{"_index":2771,"title":{},"name":{},"text":{"49":{}},"component":{}}],["arraytrait::new",{"_index":2508,"title":{},"name":{},"text":{"44":{},"59":{}},"component":{}}],["ascii",{"_index":1364,"title":{},"name":{},"text":{"14":{},"44":{},"46":{},"48":{},"50":{},"52":{},"54":{},"57":{},"58":{}},"component":{}}],["assembl",{"_index":1648,"title":{},"name":{},"text":{"16":{},"39":{},"46":{},"49":{},"50":{}},"component":{}}],["assert",{"_index":2417,"title":{},"name":{},"text":{"42":{},"49":{},"58":{}},"component":{}}],["assert_nn_l",{"_index":2776,"title":{},"name":{},"text":{"49":{}},"component":{}}],["asset",{"_index":347,"title":{},"name":{},"text":{"3":{},"35":{},"44":{}},"component":{}}],["assign",{"_index":904,"title":{},"name":{},"text":{"8":{}},"component":{}}],["assist",{"_index":1896,"title":{},"name":{},"text":{"21":{}},"component":{}}],["associ",{"_index":555,"title":{},"name":{},"text":{"3":{},"5":{},"12":{},"27":{},"30":{},"35":{},"42":{},"44":{},"45":{},"49":{},"50":{},"51":{},"59":{}},"component":{}}],["assum",{"_index":2467,"title":{},"name":{},"text":{"42":{}},"component":{}}],["assumpt",{"_index":230,"title":{},"name":{},"text":{"1":{},"42":{}},"component":{}}],["assur",{"_index":571,"title":{},"name":{},"text":{"3":{}},"component":{}}],["asynchron",{"_index":2506,"title":{},"name":{},"text":{"44":{}},"component":{}}],["ath",{"_index":172,"title":{},"name":{},"text":{"1":{}},"component":{}}],["atom",{"_index":2401,"title":{},"name":{},"text":{"42":{}},"component":{}}],["attach",{"_index":2096,"title":{},"name":{},"text":{"31":{},"44":{}},"component":{}}],["attack",{"_index":594,"title":{"49-3":{}},"name":{},"text":{"3":{},"28":{},"31":{},"38":{},"44":{},"49":{},"52":{}},"component":{}}],["attacker’",{"_index":2248,"title":{},"name":{},"text":{"38":{}},"component":{}}],["attract",{"_index":586,"title":{},"name":{},"text":{"3":{}},"component":{}}],["attribut",{"_index":2094,"title":{},"name":{},"text":{"31":{},"51":{},"54":{},"55":{}},"component":{}}],["audit",{"_index":310,"title":{"18":{}},"name":{"18":{}},"text":{"2":{},"18":{}},"component":{}}],["aug",{"_index":1542,"title":{"16-16":{}},"name":{},"text":{},"component":{}}],["auger",{"_index":1385,"title":{},"name":{},"text":{"14":{}},"component":{}}],["augment",{"_index":2267,"title":{},"name":{},"text":{"39":{}},"component":{}}],["authent",{"_index":1626,"title":{},"name":{},"text":{"16":{}},"component":{}}],["author",{"_index":214,"title":{},"name":{},"text":{"1":{},"14":{}},"component":{}}],["auto",{"_index":1840,"title":{},"name":{},"text":{"21":{}},"component":{}}],["autoformatt",{"_index":1653,"title":{},"name":{},"text":{"16":{}},"component":{}}],["autom",{"_index":1157,"title":{},"name":{},"text":{"13":{},"30":{}},"component":{}}],["automat",{"_index":1654,"title":{},"name":{},"text":{"16":{},"20":{},"30":{},"54":{},"58":{}},"component":{}}],["automated_actions_with_bridg",{"_index":1958,"title":{},"name":{"26":{}},"text":{},"component":{}}],["avail",{"_index":399,"title":{"45":{},"45-2":{},"45-5":{}},"name":{},"text":{"3":{},"7":{},"9":{},"12":{},"14":{},"16":{},"21":{},"31":{},"42":{},"45":{},"48":{},"49":{},"56":{},"59":{}},"component":{}}],["averag",{"_index":1638,"title":{},"name":{},"text":{"16":{}},"component":{}}],["avoid",{"_index":1015,"title":{},"name":{},"text":{"11":{},"38":{},"44":{},"51":{}},"component":{}}],["awar",{"_index":638,"title":{},"name":{},"text":{"3":{},"25":{},"27":{},"49":{}},"component":{}}],["away",{"_index":2251,"title":{},"name":{},"text":{"38":{},"49":{}},"component":{}}],["b",{"_index":2273,"title":{},"name":{},"text":{"39":{},"57":{}},"component":{}}],["b=n_elm",{"_index":2778,"title":{},"name":{},"text":{"49":{}},"component":{}}],["b_{high",{"_index":2278,"title":{},"name":{},"text":{"39":{}},"component":{}}],["b_{low",{"_index":2277,"title":{},"name":{},"text":{"39":{}},"component":{}}],["back",{"_index":1996,"title":{},"name":{},"text":{"27":{},"42":{}},"component":{}}],["backup",{"_index":767,"title":{},"name":{},"text":{"5":{}},"component":{}}],["backward",{"_index":1975,"title":{},"name":{},"text":{"27":{},"30":{},"31":{},"51":{}},"component":{}}],["balanc",{"_index":1992,"title":{},"name":{},"text":{"27":{},"31":{},"42":{},"47":{},"54":{},"56":{}},"component":{}}],["balance_of",{"_index":2856,"title":{},"name":{},"text":{"51":{}},"component":{}}],["base",{"_index":333,"title":{},"name":{},"text":{"3":{},"13":{},"16":{},"21":{},"22":{},"25":{},"32":{},"39":{},"42":{},"46":{},"51":{},"56":{}},"component":{}}],["basi",{"_index":643,"title":{},"name":{},"text":{"3":{},"23":{}},"component":{}}],["basic",{"_index":317,"title":{"5-1":{}},"name":{},"text":{"2":{},"35":{},"54":{}},"component":{}}],["batch",{"_index":7,"title":{"1-4":{}},"name":{},"text":{"1":{}},"component":{}}],["be",{"_index":40,"title":{},"name":{},"text":{"1":{},"5":{},"12":{},"13":{},"14":{},"20":{},"21":{},"33":{},"44":{},"49":{},"51":{},"56":{},"59":{}},"component":{}}],["becom",{"_index":1675,"title":{},"name":{},"text":{"16":{},"46":{},"48":{}},"component":{}}],["befor",{"_index":186,"title":{},"name":{},"text":{"1":{},"3":{},"5":{},"11":{},"13":{},"14":{},"16":{},"27":{},"28":{},"30":{},"35":{},"38":{},"43":{},"44":{},"45":{},"47":{},"48":{},"49":{},"51":{}},"component":{}}],["begin",{"_index":918,"title":{},"name":{},"text":{"9":{},"27":{},"28":{},"31":{},"39":{}},"component":{}}],["begin{align",{"_index":2338,"title":{},"name":{},"text":{"41":{},"42":{}},"component":{}}],["begin{cas",{"_index":2315,"title":{},"name":{},"text":{"39":{},"46":{}},"component":{}}],["begin{split}g",{"_index":2343,"title":{},"name":{},"text":{"41":{}},"component":{}}],["behav",{"_index":2790,"title":{},"name":{},"text":{"49":{},"59":{}},"component":{}}],["behavior",{"_index":116,"title":{},"name":{},"text":{"1":{},"13":{},"25":{},"35":{},"46":{}},"component":{}}],["below",{"_index":470,"title":{},"name":{},"text":{"3":{},"7":{},"8":{},"10":{},"16":{},"18":{},"21":{},"44":{},"45":{},"47":{},"49":{},"54":{},"58":{}},"component":{}}],["beosin",{"_index":1760,"title":{},"name":{},"text":{"18":{}},"component":{}}],["beosin.com",{"_index":1761,"title":{},"name":{},"text":{"18":{}},"component":{}}],["besid",{"_index":2020,"title":{},"name":{},"text":{"30":{}},"component":{}}],["best",{"_index":1915,"title":{},"name":{},"text":{"23":{},"38":{}},"component":{}}],["beta",{"_index":2270,"title":{},"name":{},"text":{"39":{},"41":{}},"component":{}}],["better",{"_index":1150,"title":{},"name":{},"text":{"13":{},"21":{},"49":{}},"component":{}}],["between",{"_index":199,"title":{},"name":{},"text":{"1":{},"14":{},"16":{},"20":{},"23":{},"27":{},"31":{},"34":{},"42":{},"44":{},"45":{},"46":{},"49":{},"50":{},"51":{},"53":{},"59":{}},"component":{}}],["beyond",{"_index":2651,"title":{},"name":{},"text":{"46":{}},"component":{}}],["big",{"_index":1475,"title":{},"name":{},"text":{"14":{},"16":{},"39":{},"44":{}},"component":{}}],["bigg",{"_index":2371,"title":{},"name":{},"text":{"42":{}},"component":{}}],["billion",{"_index":450,"title":{},"name":{},"text":{"3":{}},"component":{}}],["bin",{"_index":2827,"title":{},"name":{},"text":{"51":{}},"component":{}}],["binari",{"_index":1875,"title":{},"name":{},"text":{"21":{},"43":{},"46":{},"57":{}},"component":{}}],["bit",{"_index":1091,"title":{"57-1":{},"57-2":{}},"name":{},"text":{"13":{},"18":{},"26":{},"39":{},"43":{},"45":{},"46":{},"48":{},"57":{}},"component":{}}],["bits}}}_{\\text{lsb",{"_index":2564,"title":{},"name":{},"text":{"45":{}},"component":{}}],["bitwis",{"_index":2452,"title":{},"name":{},"text":{"42":{}},"component":{}}],["blake2s.cairo",{"_index":1721,"title":{},"name":{},"text":{"16":{}},"component":{}}],["blast",{"_index":1725,"title":{},"name":{},"text":{"17":{}},"component":{}}],["blend",{"_index":2065,"title":{},"name":{},"text":{"30":{}},"component":{}}],["blob",{"_index":2348,"title":{"42-2":{}},"name":{},"text":{"42":{}},"component":{}}],["block",{"_index":4,"title":{"24":{},"43":{},"1-4":{},"27-5":{},"27-8":{},"43-1":{}},"name":{},"text":{"1":{},"2":{},"3":{},"5":{},"7":{},"13":{},"14":{},"16":{},"21":{},"23":{},"24":{},"25":{},"27":{},"31":{},"36":{},"38":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"56":{},"58":{},"59":{}},"component":{}}],["block_download",{"_index":1350,"title":{},"name":{},"text":{"14":{}},"component":{}}],["block_hash",{"_index":714,"title":{},"name":{},"text":{"5":{},"47":{}},"component":{}}],["block_info",{"_index":2960,"title":{},"name":{},"text":{"56":{},"59":{}},"component":{}}],["block_info.block_numb",{"_index":3070,"title":{},"name":{},"text":{"59":{}},"component":{}}],["block_lat",{"_index":1347,"title":{},"name":{},"text":{"14":{}},"component":{}}],["block_numb",{"_index":715,"title":{},"name":{},"text":{"5":{},"16":{},"43":{},"47":{},"56":{},"59":{}},"component":{}}],["block_process",{"_index":1354,"title":{},"name":{},"text":{"14":{}},"component":{}}],["block_tim",{"_index":1344,"title":{},"name":{},"text":{"14":{}},"component":{}}],["block_timestamp",{"_index":2495,"title":{},"name":{},"text":{"43":{},"56":{},"59":{}},"component":{}}],["blockchain",{"_index":288,"title":{},"name":{},"text":{"2":{},"3":{},"7":{},"13":{},"14":{},"21":{},"24":{},"35":{}},"component":{}}],["blockhash",{"_index":1646,"title":{},"name":{},"text":{"16":{}},"component":{}}],["blockifi",{"_index":1078,"title":{},"name":{},"text":{"13":{},"16":{}},"component":{}}],["blockinfo",{"_index":2956,"title":{"56-2":{}},"name":{},"text":{"56":{}},"component":{}}],["blockpi",{"_index":1728,"title":{},"name":{},"text":{"17":{}},"component":{}}],["block’",{"_index":1353,"title":{},"name":{},"text":{"14":{},"43":{}},"component":{}}],["bmod",{"_index":2940,"title":{},"name":{},"text":{"54":{}},"component":{}}],["board",{"_index":94,"title":{},"name":{},"text":{"1":{}},"component":{}}],["bodi",{"_index":2949,"title":{},"name":{},"text":{"55":{}},"component":{}}],["book",{"_index":306,"title":{"32":{}},"name":{"32":{}},"text":{"2":{},"7":{},"21":{},"32":{},"34":{}},"component":{}}],["book.starkli.r",{"_index":920,"title":{},"name":{},"text":{"9":{}},"component":{}}],["bool",{"_index":2199,"title":{},"name":{},"text":{"37":{},"51":{},"55":{},"59":{}},"component":{}}],["boolean",{"_index":1704,"title":{},"name":{},"text":{"16":{},"37":{}},"component":{}}],["both",{"_index":997,"title":{},"name":{},"text":{"11":{},"14":{},"16":{},"21":{},"42":{},"44":{},"45":{},"51":{},"54":{},"57":{}},"component":{}}],["bound",{"_index":2406,"title":{},"name":{},"text":{"42":{},"48":{}},"component":{}}],["box",{"_index":2961,"title":{},"name":{},"text":{"56":{}},"component":{}}],["braavo",{"_index":965,"title":{"11-7":{}},"name":{},"text":{"11":{},"21":{}},"component":{}}],["break",{"_index":1212,"title":{"14-70":{}},"name":{},"text":{"13":{},"14":{},"16":{},"39":{}},"component":{}}],["breviti",{"_index":2783,"title":{},"name":{},"text":{"49":{},"51":{}},"component":{}}],["bridg",{"_index":1560,"title":{"19":{},"27":{},"30-2":{},"30-4":{}},"name":{"27":{}},"text":{"16":{},"19":{},"20":{},"22":{},"25":{},"27":{},"30":{},"31":{},"44":{},"48":{}},"component":{}}],["bridged_token",{"_index":1781,"title":{},"name":{"19":{}},"text":{"30":{}},"component":{}}],["bridge’",{"_index":2097,"title":{},"name":{},"text":{"31":{}},"component":{}}],["bring",{"_index":1862,"title":{},"name":{},"text":{"21":{},"35":{}},"component":{}}],["broad",{"_index":2064,"title":{},"name":{},"text":{"30":{}},"component":{}}],["broader",{"_index":3057,"title":{},"name":{},"text":{"59":{}},"component":{}}],["browser",{"_index":1887,"title":{},"name":{},"text":{"21":{}},"component":{}}],["btc",{"_index":2035,"title":{},"name":{},"text":{"30":{}},"component":{}}],["bug",{"_index":618,"title":{},"name":{},"text":{"3":{},"14":{},"16":{},"44":{}},"component":{}}],["bugfix",{"_index":1434,"title":{},"name":{},"text":{"14":{}},"component":{}}],["build",{"_index":190,"title":{},"name":{},"text":{"1":{},"7":{},"9":{},"13":{},"14":{},"18":{},"21":{},"23":{}},"component":{}}],["builder",{"_index":564,"title":{},"name":{},"text":{"3":{},"12":{}},"component":{}}],["built",{"_index":301,"title":{},"name":{},"text":{"2":{},"5":{},"21":{},"48":{}},"component":{}}],["builtin",{"_index":8,"title":{"1-5":{},"42-11":{},"42-12":{}},"name":{},"text":{"16":{},"42":{},"47":{}},"component":{}}],["bulk",{"_index":1420,"title":{},"name":{},"text":{"14":{}},"component":{}}],["bump",{"_index":2530,"title":{},"name":{},"text":{"44":{}},"component":{}}],["bundl",{"_index":155,"title":{},"name":{},"text":{"1":{},"14":{},"21":{}},"component":{}}],["burn",{"_index":1991,"title":{},"name":{},"text":{"27":{},"31":{}},"component":{}}],["buy",{"_index":641,"title":{},"name":{},"text":{"3":{}},"component":{}}],["byte",{"_index":122,"title":{"57-9":{}},"name":{},"text":{"1":{},"5":{},"23":{},"42":{},"44":{},"45":{},"50":{},"53":{},"57":{}},"component":{}}],["bytearray",{"_index":2986,"title":{},"name":{},"text":{"57":{}},"component":{}}],["bytecod",{"_index":745,"title":{},"name":{},"text":{"5":{},"6":{},"16":{},"23":{},"42":{},"50":{}},"component":{}}],["byteorder=\"big",{"_index":2739,"title":{},"name":{},"text":{"48":{}},"component":{}}],["bytes31",{"_index":2978,"title":{},"name":{},"text":{"57":{}},"component":{}}],["c",{"_index":1676,"title":{},"name":{},"text":{"16":{},"39":{},"57":{}},"component":{}}],["cach",{"_index":1075,"title":{},"name":{},"text":{"13":{},"14":{}},"component":{}}],["cairo",{"_index":9,"title":{"49":{},"55":{},"57":{},"1-6":{},"1-7":{},"16-14":{},"21-15":{},"21-35":{},"49-5":{},"50-1":{},"50-2":{},"51-3":{},"51-8":{}},"name":{"49":{}},"text":{"1":{},"2":{},"5":{},"6":{},"9":{},"12":{},"13":{},"14":{},"16":{},"20":{},"21":{},"23":{},"30":{},"32":{},"34":{},"37":{},"39":{},"40":{},"42":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"57":{}},"component":{}}],["cairo0",{"_index":1800,"title":{},"name":{},"text":{"20":{}},"component":{}}],["cairo1",{"_index":3056,"title":{},"name":{"59":{}},"text":{},"component":{}}],["cairo1.0",{"_index":1678,"title":{},"name":{},"text":{"16":{}},"component":{}}],["cairo_depend",{"_index":813,"title":{"6-19":{}},"name":{},"text":{"6":{}},"component":{}}],["cairo_path",{"_index":809,"title":{"6-14":{}},"name":{},"text":{"6":{}},"component":{}}],["cairoresourcefeeweight",{"_index":2373,"title":{},"name":{},"text":{"42":{}},"component":{}}],["cairoresourceusag",{"_index":2438,"title":{},"name":{},"text":{"42":{}},"component":{}}],["cairo’",{"_index":2414,"title":{},"name":{},"text":{"42":{}},"component":{}}],["calcul",{"_index":103,"title":{"42-10":{},"42-13":{},"48-4":{},"48-6":{},"48-7":{},"48-10":{},"48-12":{},"48-14":{},"48-15":{},"48-18":{},"48-20":{},"48-21":{}},"name":{},"text":{"1":{},"13":{},"37":{},"40":{},"42":{},"44":{},"47":{},"48":{},"54":{}},"component":{}}],["call",{"_index":55,"title":{"59":{},"5-4":{},"10-4":{},"27-3":{}},"name":{"59":{}},"text":{"1":{},"5":{},"10":{},"12":{},"13":{},"14":{},"16":{},"21":{},"26":{},"27":{},"28":{},"30":{},"31":{},"35":{},"36":{},"37":{},"38":{},"44":{},"46":{},"48":{},"49":{},"52":{},"53":{},"54":{},"55":{},"56":{},"58":{},"59":{}},"component":{}}],["call_contract",{"_index":3055,"title":{"59-15":{}},"name":{},"text":{"59":{}},"component":{}}],["call_contract_syscal",{"_index":3071,"title":{},"name":{},"text":{"59":{}},"component":{}}],["callabl",{"_index":2805,"title":{},"name":{},"text":{"50":{}},"component":{}}],["callback",{"_index":1962,"title":{},"name":{},"text":{"26":{},"31":{}},"component":{}}],["calldata",{"_index":1535,"title":{"16-6":{},"42-3":{},"42-18":{}},"name":{},"text":{"16":{},"23":{},"31":{},"37":{},"42":{},"44":{},"45":{},"48":{},"56":{},"57":{},"59":{}},"component":{}}],["calldata.span",{"_index":2213,"title":{},"name":{},"text":{"37":{}},"component":{}}],["caller",{"_index":2517,"title":{},"name":{},"text":{"44":{},"59":{}},"component":{}}],["caller_address",{"_index":2655,"title":{},"name":{},"text":{"46":{},"56":{}},"component":{}}],["caller’",{"_index":2088,"title":{},"name":{},"text":{"31":{}},"component":{}}],["came",{"_index":1985,"title":{},"name":{},"text":{"27":{}},"component":{}}],["cancel",{"_index":1201,"title":{"28":{},"44-4":{}},"name":{"28":{}},"text":{"13":{},"28":{},"31":{},"44":{}},"component":{}}],["cancell1tol2messag",{"_index":2540,"title":{},"name":{},"text":{"44":{}},"component":{}}],["canon",{"_index":2767,"title":{},"name":{},"text":{"49":{}},"component":{}}],["can’t",{"_index":1492,"title":{},"name":{},"text":{"14":{},"59":{}},"component":{}}],["capabl",{"_index":35,"title":{},"name":{},"text":{"1":{},"3":{},"12":{},"46":{}},"component":{}}],["care",{"_index":1811,"title":{"21-4":{},"21-10":{},"21-18":{},"21-23":{},"21-28":{},"21-33":{},"21-38":{}},"name":{},"text":{"21":{},"57":{}},"component":{}}],["cargo",{"_index":2826,"title":{},"name":{},"text":{"51":{}},"component":{}}],["carri",{"_index":577,"title":{},"name":{},"text":{"3":{}},"component":{}}],["case",{"_index":783,"title":{},"name":{},"text":{"5":{},"7":{},"21":{},"31":{},"42":{},"44":{},"49":{},"51":{},"52":{}},"component":{}}],["casm",{"_index":200,"title":{"49-1":{},"49-4":{}},"name":{},"text":{"1":{},"14":{},"16":{},"42":{},"46":{},"49":{},"50":{}},"component":{}}],["cast",{"_index":1833,"title":{},"name":{},"text":{"21":{}},"component":{}}],["cat",{"_index":1004,"title":{},"name":{},"text":{"11":{}},"component":{}}],["cater",{"_index":2125,"title":{},"name":{},"text":{"32":{}},"component":{}}],["caught",{"_index":3073,"title":{},"name":{},"text":{"59":{}},"component":{}}],["caus",{"_index":619,"title":{},"name":{},"text":{"3":{},"13":{},"14":{},"42":{},"45":{}},"component":{}}],["caveat",{"_index":1518,"title":{},"name":{},"text":{"14":{}},"component":{}}],["cd",{"_index":858,"title":{},"name":{},"text":{"7":{}},"component":{}}],["cdot",{"_index":2281,"title":{},"name":{},"text":{"39":{},"41":{},"42":{},"47":{}},"component":{}}],["cdot\\sum\\limits_{i=1}^t",{"_index":2392,"title":{},"name":{},"text":{"42":{}},"component":{}}],["cdot]_j",{"_index":2303,"title":{},"name":{},"text":{"39":{}},"component":{}}],["cell",{"_index":2419,"title":{},"name":{},"text":{"42":{},"45":{}},"component":{}}],["censorship",{"_index":385,"title":{},"name":{},"text":{"3":{}},"component":{}}],["certain",{"_index":341,"title":{},"name":{},"text":{"3":{},"14":{},"23":{},"49":{}},"component":{}}],["chain",{"_index":180,"title":{"48-23":{}},"name":{"45":{}},"text":{"1":{},"3":{},"14":{},"18":{},"21":{},"48":{},"50":{},"52":{},"56":{}},"component":{}}],["chain_id",{"_index":2547,"title":{},"name":{},"text":{"44":{},"48":{},"56":{}},"component":{}}],["chainbas",{"_index":1730,"title":{},"name":{},"text":{"17":{}},"component":{}}],["chainlink",{"_index":1852,"title":{},"name":{},"text":{"21":{}},"component":{}}],["chainsecurity.com",{"_index":1762,"title":{},"name":{},"text":{"18":{}},"component":{}}],["chainstack",{"_index":1731,"title":{},"name":{},"text":{"17":{}},"component":{}}],["chang",{"_index":71,"title":{"13-3":{},"13-8":{},"13-21":{},"13-25":{},"13-29":{},"13-32":{},"13-36":{},"13-43":{},"14-5":{},"14-10":{},"14-14":{},"14-19":{},"14-40":{},"14-45":{},"14-53":{},"14-57":{},"14-67":{},"14-71":{},"16-4":{},"16-9":{},"51-3":{},"51-8":{}},"name":{},"text":{"1":{},"3":{},"13":{},"14":{},"16":{},"21":{},"23":{},"25":{},"31":{},"35":{},"37":{},"38":{},"42":{},"45":{},"47":{},"48":{},"51":{},"55":{},"56":{}},"component":{}}],["changelog",{"_index":1235,"title":{},"name":{},"text":{"13":{}},"component":{}}],["chapter",{"_index":2128,"title":{},"name":{},"text":{"32":{}},"component":{}}],["charact",{"_index":1332,"title":{},"name":{},"text":{"14":{},"16":{},"57":{}},"component":{}}],["character",{"_index":2652,"title":{},"name":{},"text":{"46":{}},"component":{}}],["charg",{"_index":1637,"title":{"42-4":{}},"name":{},"text":{"16":{},"33":{},"34":{},"36":{},"38":{},"42":{},"44":{},"47":{},"49":{}},"component":{}}],["cheaper",{"_index":1567,"title":{},"name":{},"text":{"16":{}},"component":{}}],["check",{"_index":101,"title":{},"name":{},"text":{"1":{},"13":{},"16":{},"21":{},"30":{},"31":{},"38":{},"42":{},"47":{}},"component":{}}],["child",{"_index":2623,"title":{},"name":{},"text":{"46":{}},"component":{}}],["children",{"_index":2629,"title":{},"name":{},"text":{"46":{}},"component":{}}],["choic",{"_index":982,"title":{},"name":{},"text":{"11":{}},"component":{}}],["choos",{"_index":741,"title":{},"name":{},"text":{"5":{},"21":{}},"component":{}}],["chose",{"_index":2753,"title":{},"name":{},"text":{"49":{}},"component":{}}],["chunk",{"_index":3023,"title":{},"name":{},"text":{"57":{}},"component":{}}],["ci/cd",{"_index":1055,"title":{"13-10":{}},"name":{},"text":{"13":{}},"component":{}}],["circuit",{"_index":2295,"title":{},"name":{},"text":{"39":{}},"component":{}}],["circul",{"_index":535,"title":{},"name":{},"text":{"3":{}},"component":{}}],["claim",{"_index":448,"title":{},"name":{},"text":{"3":{},"16":{}},"component":{}}],["class",{"_index":12,"title":{"50":{},"53":{},"1-8":{},"16-7":{},"46-4":{},"50-1":{},"50-2":{},"53-1":{},"53-3":{}},"name":{"50":{},"53":{}},"text":{"1":{},"5":{},"6":{},"7":{},"8":{},"12":{},"13":{},"14":{},"16":{},"21":{},"23":{},"25":{},"30":{},"31":{},"37":{},"42":{},"45":{},"46":{},"48":{},"49":{},"50":{},"52":{},"53":{},"56":{},"59":{}},"component":{}}],["class/inst",{"_index":1705,"title":{},"name":{},"text":{"16":{}},"component":{}}],["class_hash",{"_index":1008,"title":{},"name":{},"text":{"11":{},"37":{},"46":{},"48":{},"50":{},"52":{},"59":{}},"component":{}}],["class_hash_const",{"_index":2209,"title":{},"name":{},"text":{"37":{}},"component":{}}],["class_trie_root",{"_index":2611,"title":{},"name":{},"text":{"46":{}},"component":{}}],["classhash",{"_index":2110,"title":{},"name":{},"text":{"31":{},"37":{},"57":{},"59":{}},"component":{}}],["class’",{"_index":2604,"title":{},"name":{},"text":{"46":{},"50":{}},"component":{}}],["cleaner",{"_index":1147,"title":{},"name":{},"text":{"13":{}},"component":{}}],["cleanup",{"_index":1139,"title":{},"name":{},"text":{"13":{}},"component":{}}],["clear",{"_index":1987,"title":{},"name":{},"text":{"27":{},"44":{},"49":{}},"component":{}}],["clearer",{"_index":1175,"title":{},"name":{},"text":{"13":{}},"component":{}}],["cli",{"_index":683,"title":{"5":{},"6":{}},"name":{},"text":{"5":{},"9":{},"11":{},"12":{},"16":{},"21":{},"25":{},"44":{}},"component":{}}],["client",{"_index":177,"title":{},"name":{},"text":{"1":{}},"component":{}}],["close",{"_index":1917,"title":{},"name":{},"text":{"23":{},"33":{},"42":{}},"component":{}}],["closer",{"_index":1525,"title":{},"name":{},"text":{"14":{}},"component":{}}],["cmake",{"_index":842,"title":{},"name":{},"text":{"6":{}},"component":{}}],["co",{"_index":1836,"title":{},"name":{},"text":{"21":{}},"component":{}}],["code",{"_index":123,"title":{"21-35":{},"42-18":{}},"name":{},"text":{"1":{},"5":{},"6":{},"7":{},"8":{},"9":{},"13":{},"14":{},"16":{},"21":{},"23":{},"25":{},"27":{},"30":{},"31":{},"35":{},"42":{},"45":{},"46":{},"48":{},"49":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"57":{},"58":{},"59":{}},"component":{}}],["coin",{"_index":2037,"title":{},"name":{},"text":{"30":{}},"component":{}}],["collabor",{"_index":2153,"title":{},"name":{},"text":{"33":{}},"component":{}}],["collect",{"_index":115,"title":{},"name":{},"text":{"1":{},"11":{}},"component":{}}],["collis",{"_index":2531,"title":{},"name":{},"text":{"44":{}},"component":{}}],["combin",{"_index":356,"title":{},"name":{},"text":{"3":{},"14":{},"16":{},"42":{},"46":{},"57":{}},"component":{}}],["come",{"_index":1884,"title":{},"name":{},"text":{"21":{},"42":{},"49":{}},"component":{}}],["comm",{"_index":1149,"title":{},"name":{},"text":{"13":{}},"component":{}}],["command",{"_index":670,"title":{"5-1":{},"13-15":{}},"name":{},"text":{"5":{},"6":{},"7":{},"8":{},"9":{},"10":{},"11":{},"13":{},"14":{},"16":{},"21":{},"34":{}},"component":{}}],["comment",{"_index":1681,"title":{},"name":{},"text":{"16":{}},"component":{}}],["commit",{"_index":72,"title":{"46-2":{}},"name":{},"text":{"1":{},"3":{},"13":{},"14":{},"16":{},"43":{},"46":{}},"component":{}}],["common",{"_index":196,"title":{"59-6":{},"59-13":{},"59-20":{},"59-26":{},"59-32":{},"59-39":{},"59-45":{},"59-52":{},"59-58":{}},"name":{},"text":{"1":{},"3":{},"16":{},"49":{},"54":{},"59":{}},"component":{}}],["commonli",{"_index":623,"title":{},"name":{},"text":{"3":{},"14":{},"41":{}},"component":{}}],["commun",{"_index":338,"title":{},"name":{},"text":{"3":{},"12":{},"13":{},"16":{},"21":{},"27":{},"33":{},"35":{},"55":{}},"component":{}}],["community’",{"_index":2063,"title":{},"name":{},"text":{"30":{}},"component":{}}],["compani",{"_index":1757,"title":{},"name":{},"text":{"18":{}},"component":{}}],["companion",{"_index":2130,"title":{},"name":{},"text":{"32":{}},"component":{}}],["compar",{"_index":1877,"title":{},"name":{},"text":{"21":{},"53":{}},"component":{}}],["comparison",{"_index":2653,"title":{},"name":{},"text":{"46":{}},"component":{}}],["compat",{"_index":950,"title":{},"name":{},"text":{"9":{},"13":{},"20":{},"27":{},"30":{},"31":{},"51":{}},"component":{}}],["compens",{"_index":2754,"title":{},"name":{},"text":{"49":{}},"component":{}}],["compil",{"_index":121,"title":{"6":{},"7-4":{}},"name":{"6":{}},"text":{"1":{},"5":{},"6":{},"7":{},"9":{},"13":{},"14":{},"16":{},"21":{},"42":{},"45":{},"46":{},"48":{},"49":{},"50":{},"51":{},"54":{},"55":{},"58":{}},"component":{}}],["compiled_class_hash",{"_index":2616,"title":{},"name":{},"text":{"46":{},"48":{}},"component":{}}],["complet",{"_index":61,"title":{},"name":{},"text":{"1":{},"3":{},"17":{},"21":{},"23":{},"26":{},"27":{},"30":{},"31":{},"33":{},"35":{},"36":{},"38":{},"44":{},"49":{},"55":{},"59":{}},"component":{}}],["complex",{"_index":1843,"title":{},"name":{},"text":{"21":{},"23":{},"42":{},"54":{},"58":{}},"component":{}}],["compliant",{"_index":1254,"title":{},"name":{},"text":{"13":{}},"component":{}}],["complic",{"_index":2796,"title":{},"name":{},"text":{"49":{}},"component":{}}],["compon",{"_index":213,"title":{"42-14":{},"50-1":{}},"name":{},"text":{"1":{},"11":{},"13":{},"16":{},"21":{},"30":{},"42":{},"49":{},"50":{},"51":{}},"component":{}}],["componentev",{"_index":2867,"title":{},"name":{},"text":{"51":{}},"component":{}}],["compos",{"_index":295,"title":{},"name":{},"text":{"2":{},"11":{},"42":{}},"component":{}}],["comprehens",{"_index":1172,"title":{},"name":{},"text":{"13":{},"27":{},"32":{}},"component":{}}],["compris",{"_index":598,"title":{},"name":{},"text":{"3":{},"23":{},"48":{}},"component":{}}],["compromis",{"_index":293,"title":{},"name":{},"text":{"2":{}},"component":{}}],["comput",{"_index":96,"title":{"16-5":{},"42-11":{},"42-12":{},"42-13":{},"50-2":{}},"name":{},"text":{"1":{},"2":{},"3":{},"5":{},"11":{},"14":{},"16":{},"21":{},"23":{},"36":{},"42":{},"43":{},"44":{},"46":{},"47":{},"48":{},"49":{},"50":{},"52":{},"54":{},"59":{}},"component":{}}],["concaten",{"_index":2714,"title":{},"name":{},"text":{"48":{}},"component":{}}],["concept",{"_index":607,"title":{},"name":{},"text":{"3":{},"16":{}},"component":{}}],["concern",{"_index":772,"title":{},"name":{},"text":{"5":{}},"component":{}}],["conclud",{"_index":2758,"title":{},"name":{},"text":{"49":{}},"component":{}}],["concret",{"_index":2247,"title":{},"name":{},"text":{"38":{}},"component":{}}],["concurr",{"_index":1089,"title":{},"name":{},"text":{"13":{}},"component":{}}],["condit",{"_index":632,"title":{},"name":{},"text":{"3":{},"13":{},"16":{}},"component":{}}],["config",{"_index":996,"title":{},"name":{},"text":{"11":{},"14":{}},"component":{}}],["configur",{"_index":866,"title":{"14-45":{},"14-63":{},"14-66":{}},"name":{},"text":{"7":{},"13":{},"14":{},"21":{}},"component":{}}],["confirm",{"_index":961,"title":{},"name":{},"text":{"10":{},"14":{},"27":{},"35":{},"44":{}},"component":{}}],["conflict",{"_index":2916,"title":{},"name":{},"text":{"52":{}},"component":{}}],["confus",{"_index":1450,"title":{},"name":{},"text":{"14":{}},"component":{}}],["congest",{"_index":1926,"title":{},"name":{},"text":{"23":{}},"component":{}}],["connect",{"_index":644,"title":{},"name":{},"text":{"3":{},"14":{}},"component":{}}],["consecut",{"_index":1659,"title":{},"name":{},"text":{"16":{}},"component":{}}],["consensi",{"_index":1763,"title":{},"name":{},"text":{"18":{}},"component":{}}],["consensu",{"_index":238,"title":{},"name":{},"text":{"1":{},"3":{}},"component":{}}],["consensys.net/dilig",{"_index":1765,"title":{},"name":{},"text":{"18":{}},"component":{}}],["consequ",{"_index":2477,"title":{},"name":{},"text":{"42":{},"45":{}},"component":{}}],["consid",{"_index":543,"title":{},"name":{},"text":{"3":{},"30":{},"33":{},"38":{},"42":{},"45":{},"49":{},"51":{},"57":{},"59":{}},"component":{}}],["consider",{"_index":2140,"title":{},"name":{},"text":{"32":{},"49":{}},"component":{}}],["consist",{"_index":217,"title":{},"name":{},"text":{"1":{},"2":{},"6":{},"13":{},"23":{},"30":{},"39":{},"44":{},"46":{},"54":{},"57":{}},"component":{}}],["consol",{"_index":1167,"title":{},"name":{},"text":{"13":{}},"component":{}}],["const",{"_index":2203,"title":{},"name":{},"text":{"37":{}},"component":{}}],["constant",{"_index":2286,"title":{},"name":{},"text":{"39":{},"42":{},"44":{},"46":{},"48":{},"52":{}},"component":{}}],["constraint",{"_index":2747,"title":{},"name":{},"text":{"49":{}},"component":{}}],["constru",{"_index":639,"title":{},"name":{},"text":{"3":{}},"component":{}}],["construct",{"_index":1283,"title":{"46-7":{}},"name":{},"text":{"13":{},"21":{},"27":{},"39":{},"42":{},"46":{},"48":{},"57":{}},"component":{}}],["constructor",{"_index":749,"title":{"34-2":{}},"name":{},"text":{"5":{},"8":{},"10":{},"16":{},"34":{},"37":{},"42":{},"46":{},"48":{},"50":{},"51":{},"52":{},"56":{},"59":{}},"component":{}}],["constructor_calldata",{"_index":2725,"title":{},"name":{},"text":{"48":{}},"component":{}}],["constructor_calldata_hash",{"_index":2915,"title":{},"name":{},"text":{"52":{}},"component":{}}],["constructor_entry_point",{"_index":2812,"title":{},"name":{},"text":{"50":{}},"component":{}}],["constructor_input",{"_index":747,"title":{},"name":{},"text":{"5":{}},"component":{}}],["constructor’",{"_index":3077,"title":{},"name":{},"text":{"59":{}},"component":{}}],["consum",{"_index":1924,"title":{},"name":{},"text":{"23":{},"42":{},"44":{},"47":{}},"component":{}}],["consumemessagefroml2",{"_index":2516,"title":{},"name":{},"text":{"44":{}},"component":{}}],["consumpt",{"_index":2534,"title":{},"name":{},"text":{"44":{}},"component":{}}],["contact",{"_index":1956,"title":{},"name":{},"text":{"25":{}},"component":{}}],["contact_address",{"_index":781,"title":{},"name":{},"text":{"5":{}},"component":{}}],["contain",{"_index":195,"title":{},"name":{},"text":{"1":{},"3":{},"5":{},"6":{},"7":{},"11":{},"14":{},"16":{},"23":{},"26":{},"30":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"56":{},"57":{},"58":{},"59":{}},"component":{}}],["content",{"_index":319,"title":{"32-1":{}},"name":{},"text":{"2":{},"3":{},"21":{},"46":{},"54":{},"59":{}},"component":{}}],["context",{"_index":726,"title":{},"name":{},"text":{"5":{},"11":{},"13":{},"47":{},"59":{}},"component":{}}],["continu",{"_index":573,"title":{},"name":{},"text":{"3":{},"14":{},"25":{},"51":{},"54":{}},"component":{}}],["contract",{"_index":2,"title":{"7":{},"8":{},"10":{},"22":{},"37":{},"51":{},"52":{},"53":{},"54":{},"55":{},"1-2":{},"1-8":{},"1-9":{},"1-20":{},"7-4":{},"7-6":{},"8-4":{},"30-3":{},"37-3":{},"42-17":{},"46-3":{},"51-2":{},"53-1":{},"53-2":{}},"name":{"51":{},"52":{},"53":{},"54":{},"55":{}},"text":{"1":{},"2":{},"3":{},"5":{},"6":{},"7":{},"8":{},"10":{},"11":{},"12":{},"13":{},"14":{},"16":{},"18":{},"19":{},"20":{},"21":{},"22":{},"23":{},"25":{},"26":{},"27":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"37":{},"38":{},"41":{},"42":{},"44":{},"45":{},"46":{},"48":{},"49":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{}},"component":{}}],["contract.cairo",{"_index":818,"title":{},"name":{},"text":{"6":{}},"component":{}}],["contract_abi",{"_index":720,"title":{},"name":{},"text":{"5":{}},"component":{}}],["contract_abi.json",{"_index":821,"title":{},"name":{},"text":{"6":{}},"component":{}}],["contract_address",{"_index":719,"title":{},"name":{},"text":{"5":{},"37":{},"44":{},"45":{},"48":{},"51":{},"52":{},"56":{}},"component":{}}],["contract_address.cairo",{"_index":2919,"title":{},"name":{},"text":{"52":{}},"component":{}}],["contract_address_salt",{"_index":2726,"title":{},"name":{},"text":{"48":{},"59":{}},"component":{}}],["contract_class",{"_index":739,"title":{},"name":{},"text":{"5":{},"48":{}},"component":{}}],["contract_class_leaf_v0",{"_index":2615,"title":{},"name":{},"text":{"46":{}},"component":{}}],["contract_class_v0.1.0",{"_index":2820,"title":{},"name":{},"text":{"50":{}},"component":{}}],["contract_class_vers",{"_index":2803,"title":{},"name":{},"text":{"50":{}},"component":{}}],["contract_compiled.json",{"_index":819,"title":{},"name":{},"text":{"6":{}},"component":{}}],["contract_definit",{"_index":744,"title":{},"name":{},"text":{"5":{}},"component":{}}],["contract_hash",{"_index":2574,"title":{},"name":{},"text":{"45":{}},"component":{}}],["contract_trie_root",{"_index":2610,"title":{},"name":{},"text":{"46":{}},"component":{}}],["contractaddress",{"_index":2112,"title":{},"name":{},"text":{"31":{},"37":{},"44":{},"51":{},"56":{},"57":{},"58":{},"59":{}},"component":{}}],["contractaddresszeroable::zero",{"_index":2115,"title":{},"name":{},"text":{"31":{}},"component":{}}],["contractclass",{"_index":1713,"title":{},"name":{},"text":{"16":{},"48":{}},"component":{}}],["contractdefinit",{"_index":1712,"title":{},"name":{},"text":{"16":{}},"component":{}}],["contractdeploy",{"_index":2192,"title":{"37-10":{}},"name":{},"text":{"37":{}},"component":{}}],["contractst",{"_index":2904,"title":{},"name":{},"text":{"51":{},"55":{}},"component":{}}],["contractu",{"_index":542,"title":{},"name":{},"text":{"3":{}},"component":{}}],["contract’",{"_index":257,"title":{},"name":{},"text":{"1":{},"5":{},"6":{},"7":{},"8":{},"14":{},"16":{},"37":{},"44":{},"45":{},"46":{},"50":{},"51":{},"54":{},"55":{},"56":{},"58":{},"59":{}},"component":{}}],["contrast",{"_index":2160,"title":{},"name":{},"text":{"33":{},"59":{}},"component":{}}],["contribut",{"_index":278,"title":{"2-6":{}},"name":{},"text":{"2":{},"3":{},"14":{},"16":{},"42":{}},"component":{}}],["contributor",{"_index":462,"title":{"14-49":{},"14-54":{}},"name":{},"text":{"3":{},"21":{},"30":{}},"component":{}}],["control",{"_index":113,"title":{},"name":{},"text":{"1":{},"3":{},"9":{},"13":{},"35":{},"38":{}},"component":{}}],["conveni",{"_index":1479,"title":{},"name":{},"text":{"14":{},"21":{}},"component":{}}],["convert",{"_index":415,"title":{},"name":{},"text":{"3":{},"16":{},"50":{}},"component":{}}],["coordin",{"_index":1823,"title":{},"name":{},"text":{"21":{},"39":{}},"component":{}}],["copi",{"_index":840,"title":{},"name":{},"text":{"6":{},"51":{}},"component":{}}],["cor",{"_index":1397,"title":{},"name":{},"text":{"14":{}},"component":{}}],["core",{"_index":27,"title":{"1-20":{}},"name":{},"text":{"1":{},"16":{},"22":{},"27":{},"31":{},"32":{},"33":{},"42":{},"44":{},"59":{}},"component":{}}],["core::felt252",{"_index":2846,"title":{},"name":{},"text":{"51":{}},"component":{}}],["core::integer::u128",{"_index":2833,"title":{},"name":{},"text":{"51":{}},"component":{}}],["core::integer::u256",{"_index":2851,"title":{},"name":{},"text":{"51":{},"58":{}},"component":{}}],["core::integer::u8",{"_index":2849,"title":{},"name":{},"text":{"51":{}},"component":{}}],["core::starknet::contract_address::contractaddress",{"_index":2839,"title":{},"name":{},"text":{"51":{},"58":{}},"component":{}}],["correct",{"_index":1487,"title":{},"name":{},"text":{"14":{},"42":{},"49":{}},"component":{}}],["correctli",{"_index":175,"title":{"7-2":{},"8-2":{},"10-2":{}},"name":{},"text":{"1":{},"11":{},"13":{},"14":{},"49":{},"57":{}},"component":{}}],["correl",{"_index":2424,"title":{},"name":{},"text":{"42":{}},"component":{}}],["correspond",{"_index":137,"title":{},"name":{},"text":{"1":{},"3":{},"12":{},"27":{},"30":{},"31":{},"42":{},"43":{},"44":{},"46":{},"48":{},"51":{},"53":{},"55":{}},"component":{}}],["correspondingli",{"_index":3054,"title":{},"name":{},"text":{"58":{}},"component":{}}],["cost",{"_index":297,"title":{"42-13":{}},"name":{},"text":{"2":{},"3":{},"16":{},"29":{},"42":{},"44":{},"59":{}},"component":{}}],["count",{"_index":1146,"title":{},"name":{},"text":{"13":{},"28":{},"42":{},"44":{}},"component":{}}],["counter",{"_index":2006,"title":{},"name":{},"text":{"28":{},"31":{},"44":{},"51":{},"55":{}},"component":{}}],["counter::read",{"_index":2950,"title":{},"name":{},"text":{"55":{}},"component":{}}],["counter_contract",{"_index":2897,"title":{},"name":{},"text":{"51":{}},"component":{}}],["counter_decreas",{"_index":2953,"title":{},"name":{},"text":{"55":{}},"component":{}}],["counter_increas",{"_index":2952,"title":{},"name":{},"text":{"55":{}},"component":{}}],["countercontract",{"_index":2828,"title":{},"name":{},"text":{"51":{},"55":{}},"component":{}}],["counterdecreas",{"_index":2844,"title":{},"name":{},"text":{"51":{},"55":{}},"component":{}}],["counterincreas",{"_index":2843,"title":{},"name":{},"text":{"51":{},"55":{}},"component":{}}],["cours",{"_index":1521,"title":{},"name":{},"text":{"14":{},"21":{}},"component":{}}],["cover",{"_index":416,"title":{},"name":{},"text":{"3":{},"16":{},"31":{}},"component":{}}],["cpu",{"_index":93,"title":{},"name":{},"text":{"1":{},"13":{},"49":{}},"component":{}}],["crate",{"_index":1607,"title":{},"name":{},"text":{"16":{}},"component":{}}],["creat",{"_index":451,"title":{"11-2":{},"11-3":{},"11-4":{},"11-8":{}},"name":{},"text":{"3":{},"7":{},"8":{},"11":{},"16":{},"21":{},"25":{},"27":{},"30":{},"31":{},"33":{},"34":{},"37":{},"43":{},"44":{},"47":{},"54":{},"59":{}},"component":{}}],["create2",{"_index":2163,"title":{},"name":{},"text":{"33":{}},"component":{}}],["creation",{"_index":1660,"title":{},"name":{},"text":{"16":{},"21":{},"34":{},"56":{}},"component":{}}],["critic",{"_index":418,"title":{},"name":{},"text":{"3":{},"30":{}},"component":{}}],["cross",{"_index":246,"title":{},"name":{},"text":{"1":{},"42":{}},"component":{}}],["crucial",{"_index":974,"title":{},"name":{},"text":{"11":{},"49":{}},"component":{}}],["crypto",{"_index":1259,"title":{},"name":{},"text":{"13":{}},"component":{}}],["cryptoexpert",{"_index":2305,"title":{},"name":{},"text":{"39":{}},"component":{}}],["cryptograph",{"_index":299,"title":{},"name":{},"text":{"2":{},"3":{},"32":{}},"component":{}}],["cryptographi",{"_index":223,"title":{},"name":{},"text":{"1":{},"3":{},"21":{},"32":{}},"component":{}}],["cto",{"_index":1838,"title":{},"name":{},"text":{"21":{}},"component":{}}],["curl",{"_index":884,"title":{},"name":{},"text":{"7":{},"9":{}},"component":{}}],["current",{"_index":148,"title":{"23":{}},"name":{},"text":{"1":{},"2":{},"3":{},"7":{},"9":{},"10":{},"13":{},"14":{},"15":{},"16":{},"19":{},"20":{},"23":{},"25":{},"30":{},"31":{},"33":{},"35":{},"38":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"54":{},"55":{},"56":{},"59":{}},"component":{}}],["current_block",{"_index":1340,"title":{},"name":{},"text":{"14":{},"59":{}},"component":{}}],["curv",{"_index":1719,"title":{"41":{}},"name":{"41":{}},"text":{"16":{},"39":{},"41":{},"48":{}},"component":{}}],["custodi",{"_index":1999,"title":{},"name":{},"text":{"28":{},"44":{}},"component":{}}],["custom",{"_index":300,"title":{"5-3":{},"35-3":{}},"name":{},"text":{"2":{},"5":{},"7":{},"14":{},"25":{},"30":{},"32":{},"35":{},"58":{}},"component":{}}],["custom.sqlit",{"_index":1505,"title":{},"name":{},"text":{"14":{}},"component":{}}],["cycl",{"_index":2658,"title":{},"name":{"47":{}},"text":{},"component":{}}],["d",{"_index":1176,"title":{},"name":{},"text":{"13":{},"42":{}},"component":{}}],["da",{"_index":1614,"title":{},"name":{},"text":{"16":{}},"component":{}}],["dai",{"_index":1790,"title":{"20":{}},"name":{},"text":{"20":{},"27":{},"30":{}},"component":{}}],["dai_token_migr",{"_index":1791,"title":{},"name":{"20":{}},"text":{},"component":{}}],["dao’",{"_index":1793,"title":{},"name":{},"text":{"20":{}},"component":{}}],["dapp",{"_index":289,"title":{},"name":{},"text":{"2":{},"21":{},"31":{}},"component":{}}],["dapp’",{"_index":2535,"title":{},"name":{},"text":{"44":{}},"component":{}}],["data",{"_index":267,"title":{"45":{},"42-14":{},"42-15":{},"42-16":{},"42-17":{},"45-2":{},"45-4":{},"45-5":{},"57-1":{},"57-2":{}},"name":{"45":{}},"text":{"1":{},"3":{},"11":{},"13":{},"14":{},"16":{},"21":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"51":{},"54":{},"56":{},"57":{},"58":{},"59":{}},"component":{}}],["data=[5",{"_index":2884,"title":{},"name":{},"text":{"51":{}},"component":{}}],["data[0",{"_index":3047,"title":{},"name":{},"text":{"58":{}},"component":{}}],["data[1",{"_index":3048,"title":{},"name":{},"text":{"58":{}},"component":{}}],["data_availability_mod",{"_index":2709,"title":{},"name":{},"text":{"48":{}},"component":{}}],["databas",{"_index":1188,"title":{},"name":{},"text":{"13":{},"14":{}},"component":{}}],["date",{"_index":485,"title":{},"name":{},"text":{"3":{},"12":{},"14":{},"27":{},"30":{},"31":{},"56":{}},"component":{}}],["day",{"_index":2005,"title":{},"name":{},"text":{"28":{},"30":{},"31":{},"44":{}},"component":{}}],["db",{"_index":1181,"title":{},"name":{},"text":{"13":{},"14":{}},"component":{}}],["deactiv",{"_index":2103,"title":{},"name":{},"text":{"31":{}},"component":{}}],["deal",{"_index":245,"title":{},"name":{},"text":{"1":{},"58":{}},"component":{}}],["debug",{"_index":793,"title":{},"name":{},"text":{"5":{},"6":{},"21":{}},"component":{}}],["debug_info_with_sourc",{"_index":812,"title":{"6-18":{}},"name":{},"text":{"6":{}},"component":{}}],["dec",{"_index":1548,"title":{"16-21":{}},"name":{},"text":{},"component":{}}],["decemb",{"_index":1046,"title":{},"name":{},"text":{"12":{}},"component":{}}],["decentr",{"_index":329,"title":{},"name":{},"text":{"3":{},"13":{},"49":{}},"component":{}}],["decid",{"_index":388,"title":{},"name":{},"text":{"3":{},"14":{},"42":{}},"component":{}}],["decim",{"_index":1451,"title":{},"name":{},"text":{"14":{},"19":{},"54":{},"57":{}},"component":{}}],["decimals_",{"_index":2848,"title":{},"name":{},"text":{"51":{}},"component":{}}],["decis",{"_index":335,"title":{},"name":{},"text":{"3":{},"30":{},"37":{}},"component":{}}],["declar",{"_index":264,"title":{"7":{},"5-5":{},"7-6":{},"16-7":{},"48-8":{}},"name":{},"text":{"1":{},"5":{},"7":{},"8":{},"12":{},"14":{},"16":{},"21":{},"37":{},"42":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"53":{},"54":{},"59":{}},"component":{}}],["declare_a_smart_contract",{"_index":847,"title":{},"name":{"7":{}},"text":{},"component":{}}],["declare_v0_tx_hash",{"_index":2724,"title":{},"name":{},"text":{"48":{}},"component":{}}],["declare_v1_tx_hash",{"_index":2723,"title":{},"name":{},"text":{"48":{}},"component":{}}],["declare_v2_tx_hash",{"_index":2722,"title":{},"name":{},"text":{"48":{}},"component":{}}],["declare_v3_tx_hash",{"_index":2720,"title":{},"name":{},"text":{"48":{}},"component":{}}],["declaretransact",{"_index":1264,"title":{},"name":{},"text":{"13":{}},"component":{}}],["decod",{"_index":1233,"title":{},"name":{},"text":{"13":{},"44":{}},"component":{}}],["decor",{"_index":2529,"title":{},"name":{},"text":{"44":{},"58":{}},"component":{}}],["decoupl",{"_index":215,"title":{},"name":{},"text":{"1":{}},"component":{}}],["decreas",{"_index":2518,"title":{},"name":{},"text":{"44":{}},"component":{}}],["decrease_allow",{"_index":2861,"title":{},"name":{},"text":{"51":{},"55":{}},"component":{}}],["decrease_count",{"_index":2835,"title":{},"name":{},"text":{"51":{},"55":{}},"component":{}}],["dedic",{"_index":1164,"title":{},"name":{},"text":{"13":{},"30":{},"35":{},"51":{}},"component":{}}],["deduc",{"_index":2625,"title":{},"name":{},"text":{"46":{}},"component":{}}],["deepen",{"_index":2132,"title":{},"name":{},"text":{"32":{}},"component":{}}],["default",{"_index":837,"title":{"14-71":{}},"name":{},"text":{"6":{},"11":{},"13":{},"14":{},"16":{},"30":{},"46":{},"57":{}},"component":{}}],["defin",{"_index":37,"title":{},"name":{},"text":{"1":{},"6":{},"11":{},"16":{},"21":{},"30":{},"31":{},"33":{},"35":{},"39":{},"41":{},"42":{},"43":{},"46":{},"48":{},"49":{},"50":{},"51":{},"53":{},"54":{},"58":{},"59":{}},"component":{}}],["definit",{"_index":129,"title":{"31-9":{},"31-17":{},"31-25":{},"31-34":{},"31-42":{},"31-51":{},"31-60":{},"31-68":{},"31-77":{},"31-86":{},"31-94":{},"31-102":{},"31-110":{},"31-118":{},"31-126":{},"31-133":{},"31-139":{},"31-144":{},"31-149":{},"31-154":{},"31-159":{},"31-164":{},"31-169":{},"31-174":{},"39-4":{},"46-8":{},"50-1":{}},"name":{},"text":{"1":{},"13":{},"16":{},"21":{},"46":{},"48":{},"53":{},"57":{},"58":{}},"component":{}}],["delay",{"_index":1348,"title":{},"name":{},"text":{"14":{},"28":{},"44":{}},"component":{}}],["deleg",{"_index":435,"title":{},"name":{},"text":{"3":{},"59":{}},"component":{}}],["delegate_cal",{"_index":1710,"title":{},"name":{},"text":{"16":{}},"component":{}}],["delegatecal",{"_index":2922,"title":{},"name":{},"text":{"53":{}},"component":{}}],["delimit",{"_index":725,"title":{},"name":{},"text":{"5":{}},"component":{}}],["deliv",{"_index":1532,"title":{},"name":{},"text":{"15":{},"16":{}},"component":{}}],["delv",{"_index":2142,"title":{},"name":{},"text":{"32":{}},"component":{}}],["demonstr",{"_index":868,"title":{},"name":{},"text":{"7":{},"11":{},"44":{}},"component":{}}],["denial",{"_index":2233,"title":{},"name":{},"text":{"38":{}},"component":{}}],["denomin",{"_index":141,"title":{},"name":{},"text":{"1":{},"42":{}},"component":{}}],["denot",{"_index":2264,"title":{},"name":{},"text":{"39":{},"42":{},"46":{}},"component":{}}],["deoxi",{"_index":1002,"title":{},"name":{},"text":{"11":{},"12":{},"17":{}},"component":{}}],["depend",{"_index":601,"title":{"37-5":{}},"name":{},"text":{"3":{},"7":{},"14":{},"16":{},"21":{},"37":{},"42":{},"51":{},"59":{}},"component":{}}],["deploy",{"_index":136,"title":{"8":{},"34":{},"37":{},"5-6":{},"8-4":{},"11-9":{},"13-10":{},"34-1":{},"37-3":{},"37-4":{},"37-7":{},"42-17":{},"48-21":{},"59-21":{}},"name":{"37":{}},"text":{"1":{},"3":{},"5":{},"7":{},"8":{},"10":{},"11":{},"12":{},"16":{},"21":{},"31":{},"33":{},"34":{},"37":{},"42":{},"45":{},"46":{},"48":{},"52":{},"53":{},"56":{},"59":{}},"component":{}}],["deploy_a_smart_contract",{"_index":900,"title":{},"name":{"8":{}},"text":{},"component":{}}],["deploy_account",{"_index":266,"title":{"5-7":{},"34-2":{},"48-16":{}},"name":{},"text":{"1":{},"5":{},"11":{},"16":{},"34":{},"42":{},"47":{},"48":{},"53":{}},"component":{}}],["deploy_account_v1_tx_hash",{"_index":2728,"title":{},"name":{},"text":{"48":{}},"component":{}}],["deploy_account_v3_tx_hash",{"_index":2727,"title":{},"name":{},"text":{"48":{}},"component":{}}],["deploy_contract",{"_index":1697,"title":{},"name":{},"text":{"16":{}},"component":{}}],["deploy_from_zero",{"_index":1699,"title":{},"name":{},"text":{"16":{},"52":{},"59":{}},"component":{}}],["deploy_from_zero=tru",{"_index":2228,"title":{},"name":{},"text":{"37":{}},"component":{}}],["deploy_syscal",{"_index":3076,"title":{},"name":{},"text":{"59":{}},"component":{}}],["deploy_tx_hash",{"_index":2730,"title":{},"name":{},"text":{"48":{}},"component":{}}],["deployaccount",{"_index":1618,"title":{},"name":{},"text":{"16":{}},"component":{}}],["deploycontract",{"_index":2191,"title":{"37-9":{}},"name":{},"text":{"37":{}},"component":{}}],["deployed_addr",{"_index":2224,"title":{},"name":{},"text":{"37":{}},"component":{}}],["deployer_address",{"_index":2914,"title":{},"name":{},"text":{"52":{}},"component":{}}],["deployer’",{"_index":2214,"title":{},"name":{},"text":{"37":{}},"component":{}}],["deploying_new_account",{"_index":2167,"title":{},"name":{"34":{}},"text":{},"component":{}}],["deposit",{"_index":1799,"title":{"26":{},"28":{},"27-2":{},"27-3":{},"27-4":{},"31-2":{}},"name":{"28":{}},"text":{"20":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"58":{},"59":{}},"component":{}}],["depositcancelrequest",{"_index":2008,"title":{"31-10":{}},"name":{},"text":{"28":{},"31":{}},"component":{}}],["depositor",{"_index":2010,"title":{},"name":{},"text":{"28":{},"31":{}},"component":{}}],["depositreclaim",{"_index":2009,"title":{"31-18":{}},"name":{},"text":{"28":{},"31":{}},"component":{}}],["depositwithmessag",{"_index":1960,"title":{"31-27":{}},"name":{},"text":{"26":{},"31":{}},"component":{}}],["depositwithmessagecancelrequest",{"_index":1966,"title":{"31-35":{}},"name":{},"text":{"26":{},"31":{}},"component":{}}],["depositwithmessagereclaim",{"_index":1967,"title":{"31-44":{}},"name":{},"text":{"26":{},"31":{}},"component":{}}],["deprec",{"_index":685,"title":{"12":{},"12-1":{},"14-63":{},"42-7":{},"48-5":{},"48-6":{},"48-7":{},"48-11":{},"48-12":{},"48-13":{},"48-14":{},"48-19":{},"48-20":{}},"name":{"12":{}},"text":{"5":{},"12":{},"14":{},"16":{},"22":{},"23":{},"27":{},"46":{},"48":{}},"component":{}}],["deprecated_declar",{"_index":1643,"title":{},"name":{},"text":{"16":{}},"component":{}}],["depth",{"_index":2134,"title":{},"name":{},"text":{"32":{}},"component":{}}],["derefer",{"_index":1154,"title":{},"name":{},"text":{"13":{}},"component":{}}],["deriv",{"_index":975,"title":{},"name":{},"text":{"11":{},"35":{},"37":{},"42":{},"51":{},"55":{}},"component":{}}],["describ",{"_index":260,"title":{},"name":{},"text":{"1":{},"3":{},"5":{},"16":{},"30":{},"42":{},"44":{},"45":{},"46":{},"48":{},"51":{}},"component":{}}],["descript",{"_index":802,"title":{"6-3":{},"31-3":{},"31-11":{},"31-19":{},"31-28":{},"31-36":{},"31-45":{},"31-54":{},"31-62":{},"31-71":{},"31-80":{},"31-88":{},"31-96":{},"31-104":{},"31-112":{},"31-120":{},"31-128":{},"31-136":{},"31-141":{},"31-146":{},"31-151":{},"31-156":{},"31-161":{},"31-166":{},"31-171":{},"59-3":{},"59-10":{},"59-17":{},"59-23":{},"59-29":{},"59-36":{},"59-42":{},"59-49":{},"59-55":{},"59-62":{}},"name":{},"text":{"7":{},"9":{},"12":{},"17":{},"23":{},"31":{},"32":{},"43":{},"46":{},"48":{},"57":{},"59":{}},"component":{}}],["descriptor",{"_index":221,"title":{"11-8":{}},"name":{},"text":{"1":{},"9":{},"11":{}},"component":{}}],["design",{"_index":1667,"title":{},"name":{},"text":{"16":{},"18":{},"21":{},"33":{},"35":{},"38":{},"39":{},"49":{}},"component":{}}],["desir",{"_index":735,"title":{},"name":{},"text":{"5":{},"31":{},"42":{},"46":{},"48":{}},"component":{}}],["despit",{"_index":2666,"title":{},"name":{},"text":{"47":{}},"component":{}}],["destin",{"_index":2476,"title":{},"name":{},"text":{"42":{}},"component":{}}],["detail",{"_index":339,"title":{},"name":{},"text":{"3":{},"7":{},"11":{},"12":{},"13":{},"14":{},"16":{},"30":{},"36":{},"37":{},"42":{},"48":{},"50":{},"56":{}},"component":{}}],["detect",{"_index":1219,"title":{},"name":{},"text":{"13":{},"30":{}},"component":{}}],["determin",{"_index":398,"title":{},"name":{},"text":{"3":{},"33":{},"35":{},"37":{},"38":{},"42":{},"46":{},"48":{},"49":{},"54":{},"57":{}},"component":{}}],["determinist",{"_index":2230,"title":{},"name":{},"text":{"37":{},"49":{}},"component":{}}],["dev",{"_index":1561,"title":{},"name":{},"text":{"16":{},"22":{},"48":{}},"component":{}}],["develop",{"_index":276,"title":{"21":{},"2-5":{}},"name":{},"text":{"2":{},"3":{},"9":{},"12":{},"16":{},"21":{},"27":{},"30":{},"32":{},"33":{},"37":{},"49":{},"57":{}},"component":{}}],["developer’",{"_index":1997,"title":{},"name":{},"text":{"27":{}},"component":{}}],["deviat",{"_index":1522,"title":{},"name":{},"text":{"14":{}},"component":{}}],["devnet",{"_index":1812,"title":{"21-7":{}},"name":{},"text":{"21":{},"37":{}},"component":{}}],["devtool",{"_index":1821,"title":{},"name":{"21":{}},"text":{},"component":{}}],["diagnost",{"_index":1897,"title":{},"name":{},"text":{"21":{}},"component":{}}],["diagram",{"_index":2520,"title":{},"name":{},"text":{"44":{},"46":{},"47":{}},"component":{}}],["dict[resourc",{"_index":2696,"title":{},"name":{},"text":{"48":{}},"component":{}}],["dictat",{"_index":41,"title":{},"name":{},"text":{"1":{}},"component":{}}],["dictionari",{"_index":2699,"title":{},"name":{},"text":{"48":{}},"component":{}}],["diff",{"_index":31,"title":{"1-24":{}},"name":{},"text":{"13":{},"16":{},"42":{},"45":{},"47":{}},"component":{}}],["differ",{"_index":193,"title":{"51-5":{}},"name":{},"text":{"1":{},"2":{},"3":{},"10":{},"11":{},"14":{},"21":{},"34":{},"35":{},"38":{},"42":{},"44":{},"45":{},"48":{},"49":{},"59":{}},"component":{}}],["differenti",{"_index":1805,"title":{},"name":{},"text":{"20":{}},"component":{}}],["digest",{"_index":2605,"title":{},"name":{},"text":{"46":{}},"component":{}}],["digit",{"_index":442,"title":{},"name":{},"text":{"3":{},"13":{},"14":{}},"component":{}}],["dilig",{"_index":1764,"title":{},"name":{},"text":{"18":{}},"component":{}}],["direct",{"_index":787,"title":{},"name":{},"text":{"5":{},"13":{},"59":{}},"component":{}}],["directli",{"_index":433,"title":{},"name":{},"text":{"3":{},"5":{},"14":{},"16":{}},"component":{}}],["directori",{"_index":769,"title":{},"name":{},"text":{"5":{},"6":{},"7":{},"11":{},"30":{}},"component":{}}],["disabl",{"_index":824,"title":{},"name":{},"text":{"6":{},"16":{},"20":{},"30":{}},"component":{}}],["disable_hint_valid",{"_index":805,"title":{"6-9":{}},"name":{},"text":{"6":{}},"component":{}}],["disallow",{"_index":1371,"title":{},"name":{},"text":{"14":{}},"component":{}}],["disappear",{"_index":383,"title":{},"name":{},"text":{"3":{}},"component":{}}],["disclaim",{"_index":328,"title":{"3-4":{}},"name":{},"text":{"3":{}},"component":{}}],["discount",{"_index":2397,"title":{},"name":{},"text":{"42":{}},"component":{}}],["discov",{"_index":2135,"title":{},"name":{},"text":{"32":{},"38":{}},"component":{}}],["discret",{"_index":657,"title":{},"name":{},"text":{"3":{}},"component":{}}],["discuss",{"_index":426,"title":{},"name":{},"text":{"3":{},"21":{},"54":{},"58":{}},"component":{}}],["disk",{"_index":1411,"title":{},"name":{},"text":{"14":{}},"component":{}}],["dispatch",{"_index":2205,"title":{},"name":{},"text":{"37":{},"55":{}},"component":{}}],["dispatcher.deploycontract",{"_index":2212,"title":{},"name":{},"text":{"37":{}},"component":{}}],["distinct",{"_index":1559,"title":{},"name":{},"text":{"16":{},"33":{},"46":{}},"component":{}}],["distinguish",{"_index":2347,"title":{},"name":{},"text":{"41":{},"42":{},"49":{},"53":{}},"component":{}}],["distract",{"_index":1889,"title":{},"name":{},"text":{"21":{}},"component":{}}],["distribut",{"_index":326,"title":{"3-3":{}},"name":{},"text":{"3":{}},"component":{}}],["divers",{"_index":373,"title":{},"name":{},"text":{"3":{},"30":{}},"component":{}}],["do",{"_index":2234,"title":{"49-3":{}},"name":{},"text":{"38":{},"44":{},"49":{},"51":{}},"component":{}}],["doc",{"_index":279,"title":{"2-6":{}},"name":{},"text":{"2":{}},"component":{}}],["docker",{"_index":1052,"title":{"13-5":{},"13-11":{}},"name":{},"text":{"13":{},"14":{}},"component":{}}],["docs.swmansion.com/scarb",{"_index":923,"title":{},"name":{},"text":{"9":{}},"component":{}}],["document",{"_index":271,"title":{},"name":{},"text":{"2":{},"3":{},"9":{},"13":{},"14":{},"21":{},"33":{},"52":{}},"component":{"1":{},"2":{},"3":{},"4":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{},"11":{},"12":{},"13":{},"14":{},"15":{},"16":{},"17":{},"18":{},"19":{},"20":{},"21":{},"22":{},"23":{},"24":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"40":{},"41":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{}}}],["doesn’t",{"_index":955,"title":{},"name":{},"text":{"10":{},"31":{},"37":{},"44":{},"49":{},"55":{}},"component":{}}],["dojo",{"_index":1867,"title":{},"name":{},"text":{"21":{}},"component":{}}],["domain",{"_index":1399,"title":{"39-1":{}},"name":{},"text":{"14":{},"50":{},"59":{}},"component":{}}],["donat",{"_index":507,"title":{},"name":{},"text":{"3":{}},"component":{}}],["done",{"_index":480,"title":{},"name":{},"text":{"3":{},"5":{},"25":{},"38":{},"44":{},"46":{},"51":{}},"component":{}}],["dont_filter_identifi",{"_index":807,"title":{"6-11":{}},"name":{},"text":{"6":{},"16":{}},"component":{}}],["don’t",{"_index":839,"title":{},"name":{},"text":{"6":{},"14":{},"21":{},"28":{},"31":{},"57":{}},"component":{}}],["doubl",{"_index":630,"title":{},"name":{},"text":{"3":{}},"component":{}}],["down",{"_index":1574,"title":{},"name":{},"text":{"16":{},"56":{},"59":{}},"component":{}}],["download",{"_index":1352,"title":{},"name":{},"text":{"14":{}},"component":{}}],["dp",{"_index":478,"title":{},"name":{},"text":{"3":{}},"component":{}}],["drawback",{"_index":2173,"title":{},"name":{},"text":{"35":{}},"component":{}}],["drop",{"_index":1360,"title":{},"name":{},"text":{"14":{},"37":{},"51":{},"55":{}},"component":{}}],["drpc",{"_index":1732,"title":{},"name":{},"text":{"17":{}},"component":{}}],["dry_run",{"_index":1698,"title":{},"name":{},"text":{"16":{}},"component":{}}],["due",{"_index":210,"title":{},"name":{},"text":{"1":{},"3":{},"13":{},"14":{},"35":{},"38":{},"44":{}},"component":{}}],["duplex",{"_index":1148,"title":{},"name":{},"text":{"13":{}},"component":{}}],["dure",{"_index":841,"title":{},"name":{},"text":{"6":{},"10":{},"21":{},"27":{},"38":{},"42":{},"44":{},"47":{},"48":{},"56":{}},"component":{}}],["dwellir",{"_index":1735,"title":{},"name":{},"text":{"17":{}},"component":{}}],["e",{"_index":3032,"title":{},"name":{},"text":{"58":{}},"component":{}}],["e.emit",{"_index":3033,"title":{},"name":{},"text":{"58":{}},"component":{}}],["e.g",{"_index":1650,"title":{},"name":{},"text":{"16":{},"49":{},"54":{}},"component":{}}],["each",{"_index":194,"title":{},"name":{},"text":{"1":{},"3":{},"5":{},"11":{},"13":{},"14":{},"16":{},"19":{},"21":{},"23":{},"25":{},"27":{},"30":{},"42":{},"45":{},"46":{},"47":{},"48":{},"51":{},"53":{},"54":{},"55":{},"57":{},"58":{}},"component":{}}],["earli",{"_index":461,"title":{},"name":{},"text":{"3":{}},"component":{}}],["earlier",{"_index":1362,"title":{},"name":{},"text":{"14":{}},"component":{}}],["easi",{"_index":2763,"title":{},"name":{},"text":{"49":{}},"component":{}}],["easier",{"_index":934,"title":{},"name":{},"text":{"9":{},"21":{}},"component":{}}],["easili",{"_index":1893,"title":{},"name":{},"text":{"21":{}},"component":{}}],["ec",{"_index":1716,"title":{},"name":{},"text":{"16":{}},"component":{}}],["ec_op",{"_index":2454,"title":{},"name":{},"text":{"42":{}},"component":{}}],["ecdsa",{"_index":104,"title":{},"name":{},"text":{"1":{},"41":{},"42":{},"48":{}},"component":{}}],["econom",{"_index":322,"title":{"3":{},"3-1":{}},"name":{"3":{}},"text":{"3":{}},"component":{}}],["ecosystem",{"_index":499,"title":{},"name":{},"text":{"3":{},"9":{},"20":{},"21":{},"30":{},"32":{}},"component":{}}],["edg",{"_index":2543,"title":{},"name":{},"text":{"44":{}},"component":{}}],["effect",{"_index":236,"title":{},"name":{},"text":{"1":{},"9":{},"16":{}},"component":{}}],["effici",{"_index":939,"title":{},"name":{},"text":{"9":{},"13":{},"23":{},"39":{},"46":{},"48":{}},"component":{}}],["eip",{"_index":1568,"title":{},"name":{},"text":{"16":{},"33":{},"35":{}},"component":{}}],["eip4844",{"_index":1596,"title":{},"name":{},"text":{"16":{}},"component":{}}],["ekubo",{"_index":1810,"title":{},"name":{},"text":{"20":{}},"component":{}}],["element",{"_index":733,"title":{},"name":{},"text":{"5":{},"13":{},"39":{},"40":{},"42":{},"44":{},"45":{},"46":{},"48":{},"49":{},"50":{},"51":{},"54":{},"57":{},"58":{},"59":{}},"component":{}}],["elig",{"_index":2242,"title":{},"name":{},"text":{"38":{}},"component":{}}],["ell",{"_index":2369,"title":{},"name":{},"text":{"42":{}},"component":{}}],["ell_l",{"_index":2634,"title":{},"name":{},"text":{"46":{}},"component":{}}],["ell_r",{"_index":2637,"title":{},"name":{},"text":{"46":{}},"component":{}}],["ellipt",{"_index":2268,"title":{},"name":{},"text":{"39":{},"41":{}},"component":{}}],["elm_ptr",{"_index":2774,"title":{},"name":{},"text":{"49":{}},"component":{}}],["elm_ptr=elm_ptr",{"_index":2780,"title":{},"name":{},"text":{"49":{}},"component":{}}],["elm_siz",{"_index":2772,"title":{},"name":{},"text":{"49":{}},"component":{}}],["emb",{"_index":1878,"title":{},"name":{},"text":{"21":{}},"component":{}}],["embed",{"_index":1519,"title":{},"name":{},"text":{"14":{},"21":{}},"component":{}}],["emiss",{"_index":1119,"title":{},"name":{},"text":{"13":{},"42":{}},"component":{}}],["emit",{"_index":1388,"title":{"31-8":{},"31-16":{},"31-24":{},"31-33":{},"31-41":{},"31-50":{},"31-59":{},"31-67":{},"31-76":{},"31-85":{},"31-93":{},"31-101":{},"31-109":{},"31-117":{},"31-125":{},"31-132":{},"58-1":{}},"name":{},"text":{"14":{},"27":{},"31":{},"37":{},"42":{},"44":{},"47":{},"51":{},"55":{},"58":{},"59":{}},"component":{}}],["emit_ev",{"_index":3038,"title":{"59-27":{}},"name":{},"text":{"58":{}},"component":{}}],["emit_event_syscal",{"_index":3042,"title":{},"name":{},"text":{"58":{},"59":{}},"component":{}}],["emphas",{"_index":1502,"title":{},"name":{},"text":{"14":{}},"component":{}}],["employ",{"_index":994,"title":{},"name":{},"text":{"11":{}},"component":{}}],["empti",{"_index":795,"title":{},"name":{},"text":{"5":{},"46":{},"48":{},"57":{}},"component":{}}],["enabl",{"_index":49,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"5":{},"10":{},"13":{},"14":{},"16":{},"21":{},"24":{},"26":{},"27":{},"28":{},"30":{},"31":{},"35":{},"37":{},"42":{},"48":{},"53":{},"59":{}},"component":{}}],["encapsul",{"_index":2866,"title":{},"name":{},"text":{"51":{}},"component":{}}],["encod",{"_index":1248,"title":{},"name":{},"text":{"13":{},"21":{},"42":{},"44":{},"45":{},"46":{},"48":{},"50":{},"52":{},"54":{},"57":{},"58":{}},"component":{}}],["encourag",{"_index":361,"title":{},"name":{},"text":{"3":{},"20":{}},"component":{}}],["encrypt",{"_index":766,"title":{},"name":{},"text":{"5":{},"11":{}},"component":{}}],["end",{"_index":967,"title":{},"name":{},"text":{"11":{},"16":{},"42":{},"58":{}},"component":{}}],["endian",{"_index":1722,"title":{},"name":{},"text":{"16":{},"44":{}},"component":{}}],["endpoint",{"_index":673,"title":{"5-3":{}},"name":{},"text":{"5":{},"7":{},"11":{},"13":{},"14":{},"16":{},"17":{},"21":{}},"component":{}}],["endpoints/starknet",{"_index":1734,"title":{},"name":{},"text":{"17":{}},"component":{}}],["end{align",{"_index":2342,"title":{},"name":{},"text":{"41":{},"42":{}},"component":{}}],["end{cas",{"_index":2328,"title":{},"name":{},"text":{"39":{},"46":{}},"component":{}}],["end{split",{"_index":2346,"title":{},"name":{},"text":{"41":{}},"component":{}}],["enforc",{"_index":1048,"title":{},"name":{},"text":{"12":{},"16":{},"29":{},"38":{},"42":{},"49":{},"50":{},"51":{}},"component":{}}],["engag",{"_index":474,"title":{},"name":{},"text":{"3":{}},"component":{}}],["engin",{"_index":1870,"title":{},"name":{},"text":{"21":{}},"component":{}}],["enhanc",{"_index":938,"title":{"16-3":{}},"name":{},"text":{"9":{},"12":{},"13":{}},"component":{}}],["enough",{"_index":1010,"title":{},"name":{},"text":{"11":{},"16":{},"27":{},"42":{},"44":{},"46":{},"49":{}},"component":{}}],["enrich",{"_index":1170,"title":{},"name":{},"text":{"13":{},"35":{}},"component":{}}],["enrol",{"_index":1951,"title":{},"name":{},"text":{"25":{},"29":{},"31":{}},"component":{}}],["enrolltokenbridg",{"_index":1950,"title":{"31-53":{}},"name":{},"text":{"25":{},"30":{},"31":{}},"component":{}}],["ensur",{"_index":205,"title":{"7-2":{},"8-2":{},"10-2":{}},"name":{},"text":{"1":{},"3":{},"7":{},"8":{},"10":{},"11":{},"13":{},"23":{},"28":{},"30":{},"33":{},"37":{},"38":{},"42":{},"47":{},"49":{},"52":{}},"component":{}}],["enter",{"_index":686,"title":{},"name":{},"text":{"5":{},"6":{},"11":{},"30":{},"47":{}},"component":{}}],["entir",{"_index":159,"title":{},"name":{},"text":{"1":{},"12":{},"49":{},"59":{}},"component":{}}],["entiti",{"_index":161,"title":{},"name":{},"text":{"1":{},"23":{}},"component":{}}],["entri",{"_index":131,"title":{"51-9":{}},"name":{},"text":{"1":{},"16":{},"42":{},"46":{},"50":{},"51":{},"53":{}},"component":{}}],["entry_point_selector",{"_index":2546,"title":{},"name":{},"text":{"44":{},"48":{},"56":{},"59":{}},"component":{}}],["entry_point_typ",{"_index":1664,"title":{},"name":{},"text":{"16":{}},"component":{}}],["entrypoint",{"_index":1429,"title":{},"name":{},"text":{"14":{}},"component":{}}],["enum",{"_index":2823,"title":{"51-6":{},"51-7":{},"57-7":{}},"name":{},"text":{"51":{},"55":{},"57":{}},"component":{}}],["enumer",{"_index":2447,"title":{},"name":{},"text":{"42":{}},"component":{}}],["enum’",{"_index":3012,"title":{},"name":{},"text":{"57":{}},"component":{}}],["env",{"_index":1464,"title":{},"name":{},"text":{"14":{}},"component":{}}],["environ",{"_index":303,"title":{"9":{},"5-2":{},"9-2":{},"16-1":{}},"name":{},"text":{"2":{},"5":{},"6":{},"7":{},"8":{},"9":{},"10":{},"11":{},"12":{},"14":{},"16":{},"21":{},"37":{}},"component":{}}],["environment_setup",{"_index":916,"title":{},"name":{"9":{}},"text":{},"component":{}}],["eoa",{"_index":2149,"title":{},"name":{},"text":{"33":{},"35":{}},"component":{}}],["ephemer",{"_index":1410,"title":{},"name":{},"text":{"14":{}},"component":{}}],["epoch",{"_index":2965,"title":{},"name":{},"text":{"56":{}},"component":{}}],["equal",{"_index":2403,"title":{},"name":{},"text":{"42":{},"51":{}},"component":{}}],["equilibrium",{"_index":1754,"title":{},"name":{},"text":{"17":{}},"component":{}}],["equiti",{"_index":443,"title":{},"name":{},"text":{"3":{}},"component":{}}],["equiv",{"_index":2335,"title":{},"name":{},"text":{"41":{}},"component":{}}],["equival",{"_index":2330,"title":{},"name":{},"text":{"39":{},"49":{}},"component":{}}],["erc",{"_index":1613,"title":{},"name":{},"text":{"16":{},"19":{},"21":{},"25":{},"27":{},"30":{},"31":{},"35":{},"42":{},"51":{}},"component":{}}],["err",{"_index":3072,"title":{},"name":{},"text":{"59":{}},"component":{}}],["error",{"_index":211,"title":{"59-7":{}},"name":{},"text":{"1":{},"3":{},"5":{},"11":{},"13":{},"14":{},"16":{},"21":{}},"component":{}}],["error_messag",{"_index":791,"title":{},"name":{},"text":{"5":{}},"component":{}}],["especi",{"_index":1329,"title":{},"name":{},"text":{"14":{},"57":{}},"component":{}}],["essenti",{"_index":436,"title":{},"name":{},"text":{"3":{}},"component":{}}],["estim",{"_index":184,"title":{"29":{}},"name":{},"text":{"1":{},"3":{},"5":{},"11":{},"14":{},"16":{},"29":{},"31":{},"42":{},"44":{}},"component":{}}],["estimate_fe",{"_index":674,"title":{"5-8":{}},"name":{},"text":{"5":{}},"component":{}}],["estimate_fee_bulk",{"_index":1657,"title":{},"name":{},"text":{"16":{}},"component":{}}],["estimate_message_fe",{"_index":675,"title":{"5-9":{}},"name":{},"text":{"5":{}},"component":{}}],["estimatedepositfeewei",{"_index":2013,"title":{"31-61":{}},"name":{},"text":{"29":{},"31":{}},"component":{}}],["estimateenrollmentfeewei",{"_index":2014,"title":{"31-70":{}},"name":{},"text":{"29":{},"31":{}},"component":{}}],["estimating_fe",{"_index":2011,"title":{},"name":{"29":{}},"text":{},"component":{}}],["etc",{"_index":512,"title":{},"name":{},"text":{"3":{},"5":{},"44":{}},"component":{}}],["eth",{"_index":411,"title":{},"name":{},"text":{"3":{},"11":{},"13":{},"22":{},"27":{},"30":{},"36":{},"42":{},"44":{}},"component":{}}],["eth_l1_gas_pric",{"_index":1590,"title":{},"name":{},"text":{"16":{}},"component":{}}],["ethaddress",{"_index":2113,"title":{},"name":{},"text":{"31":{},"44":{},"57":{}},"component":{}}],["ethaddresszeroable::zero",{"_index":2114,"title":{},"name":{},"text":{"31":{}},"component":{}}],["ether",{"_index":410,"title":{},"name":{},"text":{"3":{},"30":{}},"component":{}}],["ethereum",{"_index":231,"title":{"35-1":{},"45-8":{}},"name":{},"text":{"1":{},"2":{},"3":{},"14":{},"16":{},"21":{},"23":{},"27":{},"30":{},"31":{},"33":{},"35":{},"38":{},"42":{},"44":{},"45":{},"46":{},"47":{},"49":{},"59":{}},"component":{}}],["ethereumaddress",{"_index":2523,"title":{},"name":{},"text":{"44":{}},"component":{}}],["ethereum’",{"_index":294,"title":{},"name":{},"text":{"2":{},"12":{},"33":{},"47":{},"53":{},"59":{}},"component":{}}],["etherscan",{"_index":2027,"title":{},"name":{},"text":{"30":{}},"component":{}}],["even",{"_index":1971,"title":{},"name":{},"text":{"27":{},"28":{},"35":{},"38":{},"42":{},"49":{}},"component":{}}],["event",{"_index":1118,"title":{"31":{},"58":{},"16-8":{},"31-8":{},"31-9":{},"31-16":{},"31-17":{},"31-24":{},"31-25":{},"31-33":{},"31-34":{},"31-41":{},"31-42":{},"31-50":{},"31-51":{},"31-59":{},"31-60":{},"31-67":{},"31-76":{},"31-85":{},"31-93":{},"31-101":{},"31-109":{},"31-117":{},"31-125":{},"31-132":{},"31-133":{},"37-10":{},"42-18":{},"51-4":{},"51-6":{},"51-10":{},"58-1":{},"58-2":{},"58-3":{}},"name":{"58":{}},"text":{"13":{},"14":{},"16":{},"27":{},"31":{},"37":{},"42":{},"43":{},"44":{},"47":{},"51":{},"55":{},"58":{},"59":{}},"component":{}}],["event::counterincreas",{"_index":2954,"title":{},"name":{},"text":{"55":{}},"component":{}}],["event::testenum",{"_index":2880,"title":{},"name":{},"text":{"51":{}},"component":{}}],["event_commit",{"_index":1595,"title":{},"name":{},"text":{"16":{},"43":{},"58":{}},"component":{}}],["event_count",{"_index":2497,"title":{},"name":{},"text":{"43":{}},"component":{}}],["event_nam",{"_index":3036,"title":{},"name":{},"text":{"58":{}},"component":{}}],["eventu",{"_index":2253,"title":{},"name":{},"text":{"39":{},"42":{},"49":{}},"component":{}}],["event’",{"_index":1645,"title":{},"name":{},"text":{"16":{},"51":{},"58":{},"59":{}},"component":{}}],["everyth",{"_index":134,"title":{},"name":{},"text":{"1":{},"53":{}},"component":{}}],["evm",{"_index":1822,"title":{},"name":{},"text":{"21":{}},"component":{}}],["evolv",{"_index":1402,"title":{},"name":{},"text":{"14":{},"55":{}},"component":{}}],["exact",{"_index":1400,"title":{},"name":{},"text":{"14":{},"42":{}},"component":{}}],["exactli",{"_index":780,"title":{},"name":{},"text":{"5":{},"28":{},"31":{},"57":{}},"component":{}}],["examin",{"_index":2988,"title":{},"name":{},"text":{"57":{}},"component":{}}],["exampl",{"_index":359,"title":{"6-2":{},"30-3":{},"35-3":{},"45-4":{},"45-7":{},"46-9":{},"51-2":{},"59-14":{},"59-33":{},"59-46":{},"59-59":{}},"name":{},"text":{"3":{},"5":{},"6":{},"7":{},"8":{},"10":{},"11":{},"16":{},"21":{},"26":{},"31":{},"35":{},"37":{},"38":{},"42":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"51":{},"53":{},"54":{},"55":{},"57":{},"58":{},"59":{}},"component":{}}],["exce",{"_index":2663,"title":{},"name":{},"text":{"47":{}},"component":{}}],["except",{"_index":3050,"title":{},"name":{},"text":{"58":{}},"component":{}}],["exchang",{"_index":1959,"title":{},"name":{},"text":{"26":{},"44":{}},"component":{}}],["exclud",{"_index":537,"title":{},"name":{},"text":{"3":{},"14":{}},"component":{}}],["execut",{"_index":90,"title":{"38":{},"56":{},"38-4":{}},"name":{},"text":{"1":{},"5":{},"6":{},"9":{},"13":{},"14":{},"16":{},"21":{},"23":{},"26":{},"31":{},"33":{},"34":{},"38":{},"42":{},"43":{},"44":{},"46":{},"47":{},"48":{},"49":{},"50":{},"56":{},"58":{},"59":{}},"component":{}}],["execution_info",{"_index":2958,"title":{},"name":{"56":{}},"text":{"59":{}},"component":{}}],["execution_info.block_info.unbox",{"_index":3069,"title":{},"name":{},"text":{"59":{}},"component":{}}],["execution_resourc",{"_index":1593,"title":{},"name":{},"text":{"16":{},"47":{}},"component":{}}],["execution_statu",{"_index":2673,"title":{},"name":{},"text":{"47":{}},"component":{}}],["executioninfo",{"_index":2955,"title":{"56-1":{}},"name":{},"text":{"56":{},"59":{}},"component":{}}],["exhibit",{"_index":1328,"title":{},"name":{},"text":{"14":{}},"component":{}}],["exist",{"_index":457,"title":{},"name":{},"text":{"3":{},"13":{},"14":{},"16":{},"20":{},"25":{},"30":{},"31":{},"34":{},"42":{},"46":{},"48":{},"49":{},"53":{}},"component":{}}],["exit",{"_index":823,"title":{},"name":{},"text":{"6":{},"13":{}},"component":{}}],["exot",{"_index":2238,"title":{},"name":{},"text":{"38":{}},"component":{}}],["expand",{"_index":1104,"title":{},"name":{},"text":{"13":{},"46":{}},"component":{}}],["expans",{"_index":2621,"title":{},"name":{},"text":{"46":{}},"component":{}}],["expect",{"_index":784,"title":{"7-7":{},"8-5":{}},"name":{},"text":{"5":{},"8":{},"10":{},"13":{},"14":{},"16":{},"45":{},"59":{}},"component":{}}],["expens",{"_index":97,"title":{},"name":{},"text":{"1":{}},"component":{}}],["experi",{"_index":1171,"title":{},"name":{},"text":{"13":{},"21":{},"32":{},"33":{},"35":{}},"component":{}}],["experiment",{"_index":1339,"title":{},"name":{},"text":{"14":{},"16":{}},"component":{}}],["explain",{"_index":1740,"title":{},"name":{},"text":{"17":{},"54":{}},"component":{}}],["explan",{"_index":2578,"title":{},"name":{},"text":{"45":{},"47":{}},"component":{}}],["explicitli",{"_index":788,"title":{},"name":{},"text":{"5":{},"16":{},"59":{}},"component":{}}],["explor",{"_index":272,"title":{"24":{},"2-1":{}},"name":{},"text":{"2":{},"7":{},"21":{},"24":{},"25":{},"31":{},"32":{}},"component":{}}],["export",{"_index":697,"title":{"11-5":{}},"name":{},"text":{"5":{},"9":{},"11":{}},"component":{}}],["expos",{"_index":1223,"title":{},"name":{},"text":{"13":{},"14":{},"30":{},"37":{},"38":{},"59":{}},"component":{}}],["express",{"_index":128,"title":{},"name":{},"text":{"1":{},"3":{},"16":{}},"component":{}}],["extend",{"_index":1191,"title":{},"name":{},"text":{"13":{},"33":{}},"component":{}}],["extens",{"_index":1495,"title":{"21-35":{}},"name":{},"text":{"14":{},"16":{},"21":{}},"component":{}}],["extent",{"_index":667,"title":{},"name":{},"text":{"3":{}},"component":{}}],["extern",{"_index":1669,"title":{},"name":{},"text":{"16":{},"31":{},"33":{},"35":{},"38":{},"46":{},"50":{},"51":{},"55":{},"59":{}},"component":{}}],["external_entry_point",{"_index":2810,"title":{},"name":{},"text":{"50":{}},"component":{}}],["extra",{"_index":1874,"title":{},"name":{},"text":{"21":{},"43":{},"56":{}},"component":{}}],["extract",{"_index":2551,"title":{"45-8":{}},"name":{},"text":{"45":{}},"component":{}}],["extran",{"_index":2499,"title":{},"name":{},"text":{"43":{}},"component":{}}],["extrem",{"_index":1868,"title":{},"name":{},"text":{"21":{}},"component":{}}],["extropi",{"_index":1766,"title":{},"name":{},"text":{"18":{}},"component":{}}],["f",{"_index":2352,"title":{},"name":{},"text":{"42":{}},"component":{}}],["face",{"_index":2243,"title":{},"name":{},"text":{"38":{}},"component":{}}],["facial",{"_index":2183,"title":{},"name":{},"text":{"35":{}},"component":{}}],["facilit",{"_index":351,"title":{},"name":{},"text":{"3":{},"21":{},"31":{},"37":{}},"component":{}}],["fact",{"_index":168,"title":{},"name":{},"text":{"1":{},"27":{},"42":{},"44":{},"49":{}},"component":{}}],["factor",{"_index":660,"title":{},"name":{},"text":{"3":{},"42":{}},"component":{}}],["factori",{"_index":2194,"title":{},"name":{},"text":{"37":{}},"component":{}}],["fail",{"_index":158,"title":{},"name":{},"text":{"1":{},"3":{},"7":{},"8":{},"10":{},"11":{},"14":{},"16":{},"26":{},"27":{},"31":{},"38":{},"47":{},"49":{},"59":{}},"component":{}}],["failur",{"_index":1016,"title":{},"name":{},"text":{"11":{},"13":{},"38":{},"47":{},"49":{}},"component":{}}],["fair",{"_index":396,"title":{},"name":{},"text":{"3":{},"42":{}},"component":{}}],["fake",{"_index":1691,"title":{},"name":{},"text":{"16":{}},"component":{}}],["fallback",{"_index":1114,"title":{},"name":{},"text":{"13":{}},"component":{}}],["fals",{"_index":1229,"title":{},"name":{},"text":{"13":{},"14":{},"26":{},"31":{},"37":{}},"component":{}}],["famili",{"_index":2293,"title":{},"name":{},"text":{"39":{}},"component":{}}],["familiar",{"_index":637,"title":{},"name":{},"text":{"3":{},"21":{}},"component":{}}],["faq",{"_index":1469,"title":{},"name":{},"text":{"14":{},"17":{}},"component":{}}],["fashion",{"_index":1425,"title":{},"name":{},"text":{"14":{}},"component":{}}],["fast",{"_index":1509,"title":{},"name":{},"text":{"14":{},"21":{}},"component":{}}],["fast_pedersen_hash.pi",{"_index":2291,"title":{},"name":{},"text":{"39":{}},"component":{}}],["faster",{"_index":1192,"title":{},"name":{},"text":{"13":{},"16":{}},"component":{}}],["faucet",{"_index":973,"title":{},"name":{},"text":{"11":{}},"component":{}}],["favor",{"_index":1503,"title":{},"name":{},"text":{"14":{}},"component":{}}],["featur",{"_index":1022,"title":{"12":{},"12-1":{},"12-2":{},"16-3":{}},"name":{},"text":{"12":{},"13":{},"14":{},"16":{},"20":{},"21":{},"51":{}},"component":{}}],["fee",{"_index":185,"title":{"29":{},"42":{},"22-4":{},"42-1":{},"42-2":{},"42-3":{},"42-4":{},"42-5":{},"42-9":{},"42-10":{},"44-5":{}},"name":{"42":{}},"text":{"1":{},"3":{},"5":{},"11":{},"12":{},"14":{},"16":{},"21":{},"22":{},"29":{},"31":{},"33":{},"34":{},"35":{},"36":{},"38":{},"42":{},"44":{},"47":{},"48":{},"49":{},"56":{}},"component":{}}],["fee_data_availability_mod",{"_index":2692,"title":{},"name":{},"text":{"48":{},"56":{}},"component":{}}],["feeder",{"_index":704,"title":{},"name":{},"text":{"5":{},"12":{},"13":{},"14":{},"16":{},"21":{}},"component":{}}],["feeder_gateway_url",{"_index":701,"title":{},"name":{},"text":{"5":{}},"component":{}}],["felt",{"_index":1446,"title":{},"name":{},"text":{"14":{},"16":{},"23":{},"40":{},"42":{},"48":{},"49":{},"54":{},"57":{},"58":{},"59":{}},"component":{}}],["felt252",{"_index":2111,"title":{},"name":{},"text":{"31":{},"37":{},"40":{},"51":{},"54":{},"56":{},"57":{},"59":{}},"component":{}}],["fetch",{"_index":995,"title":{},"name":{},"text":{"11":{},"13":{}},"component":{}}],["few",{"_index":425,"title":{},"name":{},"text":{"3":{},"14":{},"16":{}},"component":{}}],["field",{"_index":732,"title":{"40":{},"48-3":{},"48-5":{},"48-9":{},"48-11":{},"48-13":{},"48-17":{},"48-19":{}},"name":{},"text":{"5":{},"6":{},"13":{},"14":{},"16":{},"39":{},"40":{},"42":{},"43":{},"46":{},"47":{},"48":{},"50":{},"51":{},"54":{},"56":{},"57":{},"58":{}},"component":{}}],["fieldel",{"_index":2492,"title":{},"name":{},"text":{"43":{},"44":{},"48":{}},"component":{}}],["figur",{"_index":534,"title":{},"name":{},"text":{"3":{},"21":{},"46":{}},"component":{}}],["file",{"_index":722,"title":{"6-5":{},"11-4":{},"14-66":{}},"name":{},"text":{"5":{},"6":{},"7":{},"9":{},"11":{},"14":{},"16":{},"19":{},"21":{},"27":{},"51":{}},"component":{}}],["filenam",{"_index":1506,"title":{},"name":{},"text":{"14":{}},"component":{}}],["file’",{"_index":1714,"title":{},"name":{},"text":{"16":{}},"component":{}}],["fill",{"_index":1981,"title":{},"name":{},"text":{"27":{},"38":{},"42":{},"57":{}},"component":{}}],["filter",{"_index":825,"title":{},"name":{},"text":{"6":{},"14":{},"59":{}},"component":{}}],["final",{"_index":423,"title":{},"name":{},"text":{"3":{},"14":{},"16":{},"27":{},"42":{},"44":{},"46":{},"47":{},"51":{},"54":{}},"component":{}}],["finality_statu",{"_index":2672,"title":{},"name":{},"text":{"47":{}},"component":{}}],["financi",{"_index":649,"title":{},"name":{},"text":{"3":{}},"component":{}}],["find",{"_index":877,"title":{},"name":{},"text":{"7":{},"21":{},"45":{},"49":{},"51":{}},"component":{}}],["find_el",{"_index":2769,"title":{},"name":{},"text":{"49":{}},"component":{}}],["find_element{range_check_ptr",{"_index":2770,"title":{},"name":{},"text":{"49":{}},"component":{}}],["fine",{"_index":2793,"title":{},"name":{},"text":{"49":{}},"component":{}}],["finish",{"_index":3084,"title":{},"name":{},"text":{"59":{}},"component":{}}],["finit",{"_index":830,"title":{},"name":{},"text":{"6":{},"40":{}},"component":{}}],["first",{"_index":1282,"title":{},"name":{},"text":{"13":{},"14":{},"16":{},"31":{},"35":{},"39":{},"42":{},"44":{},"45":{},"48":{},"51":{},"54":{},"57":{},"59":{}},"component":{}}],["first_v0_12_0_block",{"_index":3065,"title":{},"name":{},"text":{"59":{}},"component":{}}],["fit",{"_index":1827,"title":{},"name":{},"text":{"21":{},"39":{},"42":{},"47":{}},"component":{}}],["five",{"_index":2004,"title":{},"name":{},"text":{"28":{},"31":{},"42":{},"44":{}},"component":{}}],["fix",{"_index":559,"title":{"13-4":{},"13-9":{},"13-14":{},"13-22":{},"13-26":{},"13-33":{},"13-37":{},"13-39":{},"13-45":{},"14-2":{},"14-4":{},"14-7":{},"14-9":{},"14-13":{},"14-16":{},"14-18":{},"14-24":{},"14-25":{},"14-28":{},"14-31":{},"14-34":{},"14-36":{},"14-41":{},"14-48":{},"14-52":{},"14-56":{},"14-60":{},"14-68":{}},"name":{},"text":{"3":{},"12":{},"13":{},"14":{},"16":{},"21":{},"35":{},"42":{},"44":{},"46":{},"56":{}},"component":{}}],["flag",{"_index":873,"title":{},"name":{},"text":{"7":{},"9":{},"13":{},"14":{},"16":{},"42":{},"45":{},"59":{}},"component":{}}],["flag}}_{\\text{1",{"_index":2559,"title":{},"name":{},"text":{"45":{}},"component":{}}],["flat",{"_index":2863,"title":{},"name":{},"text":{"51":{}},"component":{}}],["flatten",{"_index":2824,"title":{"51-7":{}},"name":{},"text":{},"component":{}}],["flexibl",{"_index":2151,"title":{},"name":{},"text":{"33":{},"35":{},"49":{},"51":{}},"component":{}}],["flow",{"_index":114,"title":{"36":{},"47-1":{}},"name":{},"text":{"1":{},"21":{},"31":{},"38":{},"44":{},"47":{},"49":{}},"component":{}}],["fn",{"_index":2198,"title":{},"name":{},"text":{"37":{},"51":{},"55":{},"58":{},"59":{}},"component":{}}],["focu",{"_index":1189,"title":{},"name":{},"text":{"13":{},"14":{},"21":{},"51":{}},"component":{}}],["follow",{"_index":73,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"5":{},"6":{},"7":{},"9":{},"11":{},"12":{},"13":{},"14":{},"16":{},"19":{},"20":{},"21":{},"24":{},"25":{},"27":{},"29":{},"30":{},"31":{},"33":{},"34":{},"35":{},"37":{},"38":{},"39":{},"40":{},"41":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{}},"component":{}}],["foo",{"_index":1685,"title":{},"name":{},"text":{"16":{}},"component":{}}],["foo.return.s",{"_index":1724,"title":{},"name":{},"text":{"16":{}},"component":{}}],["forbid",{"_index":389,"title":{},"name":{},"text":{"3":{},"16":{}},"component":{}}],["forev",{"_index":2536,"title":{},"name":{},"text":{"44":{}},"component":{}}],["forg",{"_index":1876,"title":{},"name":{},"text":{"21":{},"38":{}},"component":{}}],["fork",{"_index":1859,"title":{},"name":{},"text":{"21":{}},"component":{}}],["form",{"_index":642,"title":{},"name":{},"text":{"3":{},"44":{}},"component":{}}],["formal",{"_index":1482,"title":{},"name":{},"text":{"14":{}},"component":{}}],["format",{"_index":60,"title":{"45-3":{},"45-6":{}},"name":{},"text":{"1":{},"14":{},"16":{},"17":{},"45":{},"51":{}},"component":{}}],["former",{"_index":737,"title":{},"name":{},"text":{"5":{}},"component":{}}],["formul",{"_index":2433,"title":{},"name":{},"text":{"42":{},"49":{},"57":{}},"component":{}}],["formula",{"_index":2351,"title":{},"name":{},"text":{"42":{}},"component":{}}],["forum",{"_index":1047,"title":{},"name":{},"text":{"12":{},"16":{},"35":{},"55":{}},"component":{}}],["forward",{"_index":2550,"title":{"45-2":{}},"name":{},"text":{},"component":{}}],["found",{"_index":867,"title":{},"name":{},"text":{"7":{},"14":{},"31":{},"39":{},"51":{}},"component":{}}],["foundat",{"_index":445,"title":{},"name":{},"text":{"3":{},"21":{},"30":{},"32":{}},"component":{}}],["foundation’",{"_index":501,"title":{},"name":{},"text":{"3":{}},"component":{}}],["founder",{"_index":1837,"title":{},"name":{},"text":{"21":{}},"component":{}}],["foundri",{"_index":1815,"title":{"21-20":{}},"name":{},"text":{"21":{}},"component":{}}],["four",{"_index":2995,"title":{},"name":{},"text":{"57":{}},"component":{}}],["framework",{"_index":1640,"title":{},"name":{},"text":{"16":{},"21":{}},"component":{}}],["fraudul",{"_index":1989,"title":{},"name":{},"text":{"27":{}},"component":{}}],["frax",{"_index":2045,"title":{},"name":{},"text":{"30":{}},"component":{}}],["free",{"_index":614,"title":{},"name":{},"text":{"3":{},"12":{}},"component":{}}],["freedom",{"_index":2786,"title":{},"name":{},"text":{"49":{}},"component":{}}],["fri",{"_index":14,"title":{"1-10":{}},"name":{},"text":{"1":{},"48":{}},"component":{}}],["friendli",{"_index":1824,"title":{},"name":{},"text":{"21":{},"39":{},"48":{},"49":{},"51":{}},"component":{}}],["from_address",{"_index":774,"title":{},"name":{},"text":{"5":{},"14":{},"47":{},"58":{}},"component":{}}],["from_block=\"latest",{"_index":1485,"title":{},"name":{},"text":{"14":{}},"component":{}}],["fromaddress",{"_index":2521,"title":{},"name":{},"text":{"44":{}},"component":{}}],["frontend",{"_index":2129,"title":{},"name":{},"text":{"32":{}},"component":{}}],["full",{"_index":15,"title":{"17":{},"1-11":{}},"name":{},"text":{"1":{},"2":{},"6":{},"11":{},"12":{},"13":{},"14":{},"17":{},"42":{},"44":{},"45":{},"51":{},"57":{}},"component":{}}],["fullest",{"_index":666,"title":{},"name":{},"text":{"3":{}},"component":{}}],["fulli",{"_index":1245,"title":{},"name":{},"text":{"13":{}},"component":{}}],["func",{"_index":1684,"title":{},"name":{},"text":{"16":{},"49":{},"58":{}},"component":{}}],["function",{"_index":346,"title":{"31":{},"39":{},"10-4":{},"10-5":{},"27-3":{},"31-1":{},"31-9":{},"31-17":{},"31-25":{},"31-34":{},"31-42":{},"31-51":{},"31-60":{},"31-68":{},"31-77":{},"31-86":{},"31-94":{},"31-102":{},"31-110":{},"31-118":{},"31-126":{},"31-133":{},"31-134":{},"31-139":{},"31-144":{},"31-149":{},"31-154":{},"31-159":{},"31-164":{},"31-169":{},"31-174":{},"35-3":{},"38-1":{},"38-4":{},"54-2":{}},"name":{"39":{}},"text":{"3":{},"5":{},"6":{},"10":{},"14":{},"16":{},"21":{},"23":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"44":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"53":{},"54":{},"55":{},"56":{},"58":{},"59":{}},"component":{}}],["function_idx",{"_index":2804,"title":{},"name":{},"text":{"50":{}},"component":{}}],["function_nam",{"_index":723,"title":{},"name":{},"text":{"5":{}},"component":{}}],["function_selector",{"_index":3079,"title":{},"name":{},"text":{"59":{}},"component":{}}],["function’",{"_index":1723,"title":{},"name":{},"text":{"16":{},"21":{},"26":{},"59":{}},"component":{}}],["fund",{"_index":498,"title":{"27-9":{}},"name":{},"text":{"3":{},"11":{},"16":{},"21":{},"26":{},"27":{},"28":{},"30":{},"31":{},"38":{},"48":{}},"component":{}}],["fundament",{"_index":105,"title":{},"name":{},"text":{"1":{},"3":{},"23":{}},"component":{}}],["further",{"_index":469,"title":{},"name":{},"text":{"3":{},"38":{},"49":{},"51":{}},"component":{}}],["furthermor",{"_index":2785,"title":{},"name":{},"text":{"49":{}},"component":{}}],["futur",{"_index":505,"title":{},"name":{},"text":{"3":{},"5":{},"12":{},"14":{},"16":{},"33":{},"35":{},"37":{},"42":{},"43":{},"46":{},"48":{},"49":{},"59":{}},"component":{}}],["fx",{"_index":2046,"title":{},"name":{},"text":{"30":{}},"component":{}}],["g=\\left",{"_index":2732,"title":{},"name":{},"text":{"48":{}},"component":{}}],["g_x",{"_index":2733,"title":{},"name":{},"text":{"48":{}},"component":{}}],["g_x=874739451078007766457464989774322083649278607533249481151382481072868806602",{"_index":2735,"title":{},"name":{},"text":{"48":{}},"component":{}}],["g_y=152666792071518830868575557812948353041420400780739481342941381225525861407",{"_index":2736,"title":{},"name":{},"text":{"48":{}},"component":{}}],["g_y\\right",{"_index":2734,"title":{},"name":{},"text":{"48":{}},"component":{}}],["ga",{"_index":417,"title":{"42":{}},"name":{},"text":{"3":{},"14":{},"16":{},"23":{},"36":{},"42":{},"44":{},"48":{},"49":{}},"component":{}}],["game",{"_index":1869,"title":{},"name":{},"text":{"21":{}},"component":{}}],["gap",{"_index":2749,"title":{},"name":{},"text":{"49":{}},"component":{}}],["gas/appl",{"_index":2449,"title":{},"name":{},"text":{"42":{}},"component":{}}],["gas/charact",{"_index":2490,"title":{},"name":{},"text":{"42":{}},"component":{}}],["gas/felt",{"_index":1582,"title":{},"name":{},"text":{"16":{},"42":{}},"component":{}}],["gas/step",{"_index":1578,"title":{},"name":{},"text":{"16":{},"42":{}},"component":{}}],["gas_pric",{"_index":1604,"title":{},"name":{},"text":{"16":{}},"component":{}}],["gasbuiltin",{"_index":3063,"title":{},"name":{},"text":{"59":{}},"component":{}}],["gateway",{"_index":700,"title":{"14-65":{}},"name":{},"text":{"5":{},"7":{},"12":{},"13":{},"14":{},"16":{},"21":{},"47":{}},"component":{}}],["gateway_url",{"_index":702,"title":{},"name":{},"text":{"5":{}},"component":{}}],["gateway’",{"_index":1365,"title":{},"name":{},"text":{"14":{}},"component":{}}],["gather",{"_index":2947,"title":{},"name":{},"text":{"55":{}},"component":{}}],["gener",{"_index":164,"title":{},"name":{},"text":{"1":{},"3":{},"5":{},"6":{},"11":{},"16":{},"21":{},"37":{},"41":{},"42":{},"44":{},"47":{},"48":{},"49":{},"50":{},"51":{},"54":{},"55":{}},"component":{}}],["genesi",{"_index":1467,"title":{},"name":{},"text":{"14":{}},"component":{}}],["get",{"_index":968,"title":{},"name":{},"text":{"11":{},"14":{},"17":{},"21":{},"38":{},"54":{},"59":{}},"component":{}}],["get_block",{"_index":676,"title":{"5-10":{}},"name":{},"text":{"5":{},"16":{}},"component":{}}],["get_block_hash",{"_index":1622,"title":{"59-1":{}},"name":{},"text":{"16":{},"34":{},"46":{}},"component":{}}],["get_block_hash_syscal",{"_index":3060,"title":{},"name":{},"text":{"59":{}},"component":{}}],["get_block_trac",{"_index":1694,"title":{},"name":{},"text":{"16":{}},"component":{}}],["get_caller_address",{"_index":2216,"title":{},"name":{},"text":{"37":{}},"component":{}}],["get_class_by_hash",{"_index":1708,"title":{},"name":{},"text":{"16":{}},"component":{}}],["get_class_hash_at",{"_index":1709,"title":{},"name":{},"text":{"16":{}},"component":{}}],["get_cod",{"_index":677,"title":{"5-11":{}},"name":{},"text":{"5":{}},"component":{}}],["get_contract_address",{"_index":3083,"title":{},"name":{},"text":{"59":{}},"component":{}}],["get_count",{"_index":2836,"title":{},"name":{},"text":{"51":{},"55":{}},"component":{}}],["get_decim",{"_index":2854,"title":{},"name":{},"text":{"51":{}},"component":{}}],["get_erc20_class_hash",{"_index":2074,"title":{"31-135":{}},"name":{},"text":{"31":{}},"component":{}}],["get_execution_info",{"_index":1620,"title":{"59-8":{}},"name":{},"text":{"16":{},"34":{},"56":{},"59":{}},"component":{}}],["get_execution_info_syscal",{"_index":3067,"title":{},"name":{},"text":{"59":{}},"component":{}}],["get_ident",{"_index":2075,"title":{"31-140":{}},"name":{},"text":{"31":{}},"component":{}}],["get_l1_token",{"_index":2076,"title":{"31-145":{}},"name":{},"text":{"31":{}},"component":{}}],["get_l2_token",{"_index":2077,"title":{"31-150":{}},"name":{},"text":{"31":{}},"component":{}}],["get_nam",{"_index":2852,"title":{},"name":{},"text":{"51":{}},"component":{}}],["get_own",{"_index":954,"title":{},"name":{},"text":{"10":{}},"component":{}}],["get_remaining_withdrawal_quota",{"_index":2078,"title":{"31-155":{}},"name":{},"text":{"31":{}},"component":{}}],["get_sequencer_address",{"_index":1623,"title":{},"name":{},"text":{"16":{},"34":{}},"component":{}}],["get_state_upd",{"_index":1627,"title":{},"name":{},"text":{"16":{}},"component":{}}],["get_storage_at",{"_index":678,"title":{"5-12":{}},"name":{},"text":{"5":{}},"component":{}}],["get_symbol",{"_index":2853,"title":{},"name":{},"text":{"51":{}},"component":{}}],["get_total_suppli",{"_index":2855,"title":{},"name":{},"text":{"51":{}},"component":{}}],["get_transact",{"_index":679,"title":{"5-13":{}},"name":{},"text":{"5":{}},"component":{}}],["get_transaction_receipt",{"_index":680,"title":{"5-14":{}},"name":{},"text":{"5":{}},"component":{}}],["get_vers",{"_index":2079,"title":{"31-160":{}},"name":{},"text":{"31":{}},"component":{}}],["getblock",{"_index":1737,"title":{},"name":{},"text":{"17":{}},"component":{}}],["getblockbodi",{"_index":1098,"title":{},"name":{},"text":{"13":{}},"component":{}}],["getbridg",{"_index":2018,"title":{"31-79":{}},"name":{},"text":{"30":{},"31":{}},"component":{}}],["getregistri",{"_index":2070,"title":{"31-87":{}},"name":{},"text":{"31":{}},"component":{}}],["getstatu",{"_index":2071,"title":{"31-95":{}},"name":{},"text":{"31":{}},"component":{}}],["getwithdrawalbridg",{"_index":2072,"title":{"31-103":{}},"name":{},"text":{"31":{}},"component":{}}],["ginger",{"_index":1779,"title":{},"name":{},"text":{"18":{}},"component":{}}],["gingersec.xyz",{"_index":1780,"title":{},"name":{},"text":{"18":{}},"component":{}}],["gitbhub",{"_index":1866,"title":{},"name":{},"text":{"21":{}},"component":{}}],["github",{"_index":64,"title":{},"name":{},"text":{"1":{},"7":{},"13":{},"14":{},"16":{},"17":{},"21":{},"27":{},"30":{},"39":{}},"component":{}}],["github.com/eqlabs/pathfind",{"_index":1755,"title":{},"name":{},"text":{"17":{}},"component":{}}],["github.com/kasarlabs/deoxi",{"_index":1750,"title":{},"name":{},"text":{"17":{}},"component":{}}],["github.com/nethermindeth/juno",{"_index":1751,"title":{},"name":{},"text":{"17":{}},"component":{}}],["github.com/softwar",{"_index":924,"title":{},"name":{},"text":{"9":{}},"component":{}}],["github.com/starkwar",{"_index":1752,"title":{},"name":{},"text":{"17":{}},"component":{}}],["github.com/xjonathanlei/starkli",{"_index":921,"title":{},"name":{},"text":{"9":{}},"component":{}}],["give",{"_index":380,"title":{},"name":{},"text":{"3":{},"14":{},"35":{},"38":{},"50":{},"51":{}},"component":{}}],["given",{"_index":748,"title":{},"name":{},"text":{"5":{},"16":{},"21":{},"31":{},"34":{},"37":{},"39":{},"42":{},"44":{},"46":{},"48":{},"49":{},"50":{},"51":{},"58":{},"59":{}},"component":{}}],["global",{"_index":1074,"title":{},"name":{},"text":{"13":{}},"component":{}}],["global_state_root",{"_index":2494,"title":{},"name":{},"text":{"43":{}},"component":{}}],["glossari",{"_index":33,"title":{"1":{}},"name":{"1":{}},"text":{},"component":{}}],["gnark",{"_index":1258,"title":{},"name":{},"text":{"13":{}},"component":{}}],["go",{"_index":525,"title":{},"name":{},"text":{"3":{},"5":{},"14":{},"17":{},"21":{},"27":{},"42":{},"49":{},"59":{}},"component":{}}],["goal",{"_index":405,"title":{},"name":{},"text":{"3":{},"13":{}},"component":{}}],["goerli",{"_index":694,"title":{"22-2":{}},"name":{},"text":{"5":{},"12":{},"13":{},"16":{},"19":{},"22":{},"23":{},"27":{},"37":{},"48":{}},"component":{}}],["goerli.infura.io/v3",{"_index":895,"title":{},"name":{},"text":{"7":{}},"component":{}}],["goerli.json",{"_index":1783,"title":{},"name":{},"text":{"19":{},"27":{}},"component":{}}],["golang",{"_index":1069,"title":{},"name":{},"text":{"13":{}},"component":{}}],["gomaxproc",{"_index":1112,"title":{},"name":{},"text":{"13":{}},"component":{}}],["good",{"_index":2166,"title":{},"name":{},"text":{"33":{},"49":{}},"component":{}}],["govern",{"_index":334,"title":{},"name":{},"text":{"3":{},"22":{}},"component":{}}],["grace",{"_index":1279,"title":{},"name":{},"text":{"13":{},"49":{}},"component":{}}],["gracefulli",{"_index":1224,"title":{},"name":{},"text":{"13":{}},"component":{}}],["gradual",{"_index":2471,"title":{},"name":{},"text":{"42":{}},"component":{}}],["grant",{"_index":447,"title":{},"name":{},"text":{"3":{},"21":{}},"component":{}}],["graph",{"_index":536,"title":{},"name":{},"text":{"3":{}},"component":{}}],["greater",{"_index":2971,"title":{"57-2":{}},"name":{},"text":{"59":{}},"component":{}}],["group",{"_index":376,"title":{},"name":{},"text":{"3":{},"30":{}},"component":{}}],["grpc",{"_index":1221,"title":{},"name":{},"text":{"13":{}},"component":{}}],["guarante",{"_index":572,"title":{},"name":{},"text":{"3":{},"33":{},"38":{},"49":{}},"component":{}}],["guard",{"_index":2002,"title":{},"name":{},"text":{"28":{},"31":{}},"component":{}}],["guardian",{"_index":1006,"title":{},"name":{},"text":{"11":{}},"component":{}}],["gui",{"_index":1952,"title":{},"name":{},"text":{"25":{},"31":{}},"component":{}}],["guid",{"_index":320,"title":{},"name":{},"text":{"2":{},"11":{},"14":{},"32":{}},"component":{}}],["guidanc",{"_index":1881,"title":{},"name":{},"text":{"21":{}},"component":{}}],["guidelin",{"_index":316,"title":{},"name":{},"text":{"2":{}},"component":{}}],["h",{"_index":804,"title":{"6-7":{}},"name":{},"text":{"6":{},"39":{},"43":{},"44":{},"46":{},"48":{},"50":{},"54":{},"58":{}},"component":{}}],["h\\big",{"_index":2316,"title":{},"name":{},"text":{"39":{}},"component":{}}],["h_{ped",{"_index":2631,"title":{},"name":{},"text":{"46":{}},"component":{}}],["hacker",{"_index":595,"title":{},"name":{},"text":{"3":{}},"component":{}}],["hade",{"_index":2297,"title":{},"name":{},"text":{"39":{}},"component":{}}],["halt",{"_index":2759,"title":{},"name":{},"text":{"49":{}},"component":{}}],["hand",{"_index":2650,"title":{},"name":{},"text":{"46":{}},"component":{}}],["handi",{"_index":1885,"title":{},"name":{},"text":{"21":{},"49":{}},"component":{}}],["handl",{"_index":1094,"title":{},"name":{},"text":{"13":{},"14":{},"16":{},"21":{},"38":{},"44":{},"48":{},"49":{},"51":{},"57":{},"59":{}},"component":{}}],["handle_deposit",{"_index":1983,"title":{},"name":{},"text":{"27":{}},"component":{}}],["handler",{"_index":776,"title":{},"name":{},"text":{"5":{},"13":{},"14":{},"26":{},"27":{},"31":{},"44":{},"46":{},"50":{},"51":{}},"component":{}}],["happen",{"_index":1825,"title":{},"name":{},"text":{"21":{},"42":{},"44":{},"51":{},"55":{}},"component":{}}],["happi",{"_index":2791,"title":{},"name":{},"text":{"49":{}},"component":{}}],["hard",{"_index":1478,"title":{},"name":{},"text":{"14":{}},"component":{}}],["harder",{"_index":2252,"title":{},"name":{},"text":{"38":{}},"component":{}}],["hardhat",{"_index":1816,"title":{"21-25":{}},"name":{},"text":{"21":{}},"component":{}}],["hardwar",{"_index":606,"title":{},"name":{},"text":{"3":{},"35":{}},"component":{}}],["harm",{"_index":2787,"title":{},"name":{},"text":{"49":{}},"component":{}}],["hash",{"_index":75,"title":{"39":{},"50":{},"39-3":{},"39-5":{},"39-6":{},"43-1":{},"44-2":{},"44-6":{},"48-4":{},"48-6":{},"48-7":{},"48-10":{},"48-12":{},"48-14":{},"48-15":{},"48-18":{},"48-20":{},"48-21":{},"50-2":{},"58-3":{}},"name":{"39":{},"50":{}},"text":{"1":{},"5":{},"7":{},"8":{},"13":{},"14":{},"16":{},"21":{},"25":{},"30":{},"31":{},"33":{},"37":{},"39":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"50":{},"52":{},"53":{},"54":{},"56":{},"58":{},"59":{}},"component":{}}],["hashchain",{"_index":2223,"title":{},"name":{},"text":{"37":{}},"component":{}}],["hassl",{"_index":1463,"title":{},"name":{},"text":{"14":{}},"component":{}}],["have",{"_index":2241,"title":{},"name":{},"text":{"38":{},"44":{},"51":{}},"component":{}}],["header",{"_index":2350,"title":{},"name":{"43":{}},"text":{"42":{},"43":{}},"component":{}}],["header’",{"_index":2503,"title":{},"name":{},"text":{"43":{}},"component":{}}],["health",{"_index":1197,"title":{},"name":{},"text":{"13":{}},"component":{}}],["healthi",{"_index":1199,"title":{},"name":{},"text":{"13":{}},"component":{}}],["height",{"_index":1342,"title":{},"name":{},"text":{"14":{},"43":{},"46":{}},"component":{}}],["held",{"_index":622,"title":{},"name":{},"text":{"3":{},"14":{}},"component":{}}],["hello",{"_index":3026,"title":{},"name":{},"text":{"57":{}},"component":{}}],["help",{"_index":314,"title":{"6-7":{}},"name":{},"text":{"2":{},"6":{},"7":{},"11":{},"13":{},"21":{},"23":{}},"component":{}}],["helper",{"_index":1720,"title":{},"name":{},"text":{"16":{}},"component":{}}],["here",{"_index":330,"title":{},"name":{},"text":{"3":{},"5":{},"12":{},"14":{},"16":{},"21":{},"48":{},"51":{},"58":{}},"component":{}}],["herein",{"_index":563,"title":{},"name":{},"text":{"3":{}},"component":{}}],["here’",{"_index":1013,"title":{},"name":{},"text":{"11":{},"13":{}},"component":{}}],["hex",{"_index":1431,"title":{},"name":{},"text":{"14":{},"57":{}},"component":{}}],["hidden",{"_index":1366,"title":{},"name":{},"text":{"14":{}},"component":{}}],["hierarchi",{"_index":2910,"title":{},"name":{},"text":{"51":{}},"component":{}}],["high",{"_index":298,"title":{},"name":{},"text":{"2":{},"39":{},"43":{},"46":{},"47":{},"51":{},"57":{}},"component":{}}],["higher",{"_index":1039,"title":{},"name":{},"text":{"12":{},"13":{},"38":{},"58":{},"59":{}},"component":{}}],["highest",{"_index":2628,"title":{},"name":{},"text":{"46":{}},"component":{}}],["highest_block",{"_index":1343,"title":{},"name":{},"text":{"14":{}},"component":{}}],["highli",{"_index":1333,"title":{},"name":{},"text":{"14":{}},"component":{}}],["highlight",{"_index":1315,"title":{"14-38":{},"14-62":{}},"name":{},"text":{"21":{}},"component":{}}],["hinder",{"_index":1508,"title":{},"name":{},"text":{"14":{}},"component":{}}],["hint",{"_index":130,"title":{"49-5":{}},"name":{},"text":{"1":{},"6":{},"16":{},"49":{},"53":{}},"component":{}}],["histor",{"_index":1394,"title":{},"name":{},"text":{"14":{},"16":{}},"component":{}}],["histori",{"_index":1035,"title":{},"name":{},"text":{"12":{},"13":{},"14":{}},"component":{}}],["hold",{"_index":636,"title":{},"name":{},"text":{"3":{},"42":{},"45":{}},"component":{}}],["holder",{"_index":440,"title":{},"name":{},"text":{"3":{}},"component":{}}],["home",{"_index":768,"title":{},"name":{},"text":{"5":{}},"component":{}}],["home/parallels/.starkli",{"_index":987,"title":{},"name":{},"text":{"11":{}},"component":{}}],["honest",{"_index":2809,"title":{},"name":{},"text":{"50":{}},"component":{}}],["hood",{"_index":2220,"title":{},"name":{},"text":{"37":{}},"component":{}}],["host",{"_index":999,"title":{},"name":{},"text":{"11":{},"13":{},"14":{}},"component":{}}],["hotfix",{"_index":1465,"title":{},"name":{},"text":{"14":{}},"component":{}}],["hour",{"_index":1572,"title":{},"name":{},"text":{"16":{},"31":{},"56":{},"59":{}},"component":{}}],["hped",{"_index":2613,"title":{},"name":{},"text":{"46":{}},"component":{}}],["hpo",{"_index":2608,"title":{},"name":{},"text":{"46":{}},"component":{}}],["http",{"_index":886,"title":{},"name":{},"text":{"7":{},"9":{},"13":{},"14":{},"16":{}},"component":{}}],["httpport",{"_index":1184,"title":{},"name":{},"text":{"13":{}},"component":{}}],["httpport:$httpport",{"_index":1177,"title":{},"name":{},"text":{"13":{}},"component":{}}],["https://alpha",{"_index":707,"title":{},"name":{},"text":{"5":{},"22":{}},"component":{}}],["https://alpha4.starknet.io",{"_index":1904,"title":{},"name":{},"text":{"22":{}},"component":{}}],["https://alpha4.starknet.io/feeder_gateway",{"_index":706,"title":{},"name":{},"text":{"5":{}},"component":{}}],["https://alpha4.starknet.io/gateway",{"_index":709,"title":{},"name":{},"text":{"5":{}},"component":{}}],["https://blastapi.io/publ",{"_index":1726,"title":{},"name":{},"text":{"17":{}},"component":{}}],["https://data.voyager.onlin",{"_index":1745,"title":{},"name":{},"text":{"17":{}},"component":{}}],["https://docs.swmansion.com/scarb/install.sh",{"_index":889,"title":{},"name":{},"text":{"7":{},"9":{}},"component":{}}],["https://drpc.org/publ",{"_index":1733,"title":{},"name":{},"text":{"17":{}},"component":{}}],["https://get.starkli.sh",{"_index":929,"title":{},"name":{},"text":{"9":{}},"component":{}}],["https://github.com/eqlabs/pathfinder/releases/tag/v0.4.1",{"_index":1456,"title":{},"name":{},"text":{"14":{}},"component":{}}],["https://github.com/matthieuaug",{"_index":1386,"title":{},"name":{},"text":{"14":{}},"component":{}}],["https://github.com/shrame",{"_index":1383,"title":{},"name":{},"text":{"14":{}},"component":{}}],["https://github.com/starkwar",{"_index":1273,"title":{},"name":{},"text":{"13":{}},"component":{}}],["https://starkgate.starknet.io",{"_index":1969,"title":{},"name":{},"text":{"27":{}},"component":{}}],["https://starknet.blockpi.network/v1/rpc/publ",{"_index":1729,"title":{},"name":{},"text":{"17":{}},"component":{}}],["https://starknet.nftscan.com",{"_index":1947,"title":{},"name":{},"text":{"24":{}},"component":{}}],["https://starkscan.co",{"_index":1939,"title":{},"name":{},"text":{"24":{}},"component":{}}],["https://viewblock.io/starknet",{"_index":1941,"title":{},"name":{},"text":{"24":{}},"component":{}}],["https://voyager.onlin",{"_index":1942,"title":{},"name":{},"text":{"24":{}},"component":{}}],["https://www.dwellir.com/networks/starknet",{"_index":1736,"title":{},"name":{},"text":{"17":{}},"component":{}}],["https://www.lavanet.xyz/get",{"_index":1743,"title":{},"name":{},"text":{"17":{}},"component":{}}],["https://www.oklink.com/starknet",{"_index":1944,"title":{},"name":{},"text":{"24":{}},"component":{}}],["hub",{"_index":240,"title":{},"name":{},"text":{"1":{},"3":{},"22":{}},"component":{}}],["hypothet",{"_index":2428,"title":{},"name":{},"text":{"42":{}},"component":{}}],["i'th",{"_index":2502,"title":{},"name":{},"text":{"43":{}},"component":{}}],["i.",{"_index":848,"title":{},"name":{},"text":{"7":{},"8":{},"50":{},"59":{}},"component":{}}],["i128",{"_index":2983,"title":{},"name":{},"text":{"57":{}},"component":{}}],["i16",{"_index":2980,"title":{},"name":{},"text":{"57":{}},"component":{}}],["i32",{"_index":2981,"title":{},"name":{},"text":{"57":{}},"component":{}}],["i64",{"_index":2982,"title":{},"name":{},"text":{"57":{}},"component":{}}],["i8",{"_index":2979,"title":{},"name":{},"text":{"57":{}},"component":{}}],["icountercontract",{"_index":2894,"title":{},"name":{},"text":{"51":{},"55":{}},"component":{}}],["id",{"_index":1141,"title":{"48-23":{}},"name":{},"text":{"13":{},"14":{},"21":{},"47":{},"48":{}},"component":{}}],["ideal",{"_index":374,"title":{},"name":{},"text":{"3":{}},"component":{}}],["ident",{"_index":927,"title":{},"name":{},"text":{"9":{},"31":{},"52":{}},"component":{}}],["identifi",{"_index":74,"title":{"31-111":{}},"name":{},"text":{"1":{},"6":{},"7":{},"14":{},"16":{},"25":{},"31":{},"46":{},"50":{},"51":{},"52":{},"53":{},"56":{},"58":{}},"component":{}}],["if/els",{"_index":2768,"title":{},"name":{},"text":{"49":{}},"component":{}}],["ignor",{"_index":1255,"title":{},"name":{},"text":{"13":{},"14":{},"16":{},"42":{},"51":{}},"component":{}}],["ii",{"_index":584,"title":{},"name":{},"text":{"3":{}},"component":{}}],["iii",{"_index":585,"title":{},"name":{},"text":{"3":{}},"component":{}}],["illustr",{"_index":2519,"title":{},"name":{},"text":{"44":{},"46":{},"47":{},"48":{},"51":{},"58":{}},"component":{}}],["imag",{"_index":1053,"title":{"13-5":{},"13-11":{}},"name":{},"text":{"13":{}},"component":{}}],["imagin",{"_index":2532,"title":{},"name":{},"text":{"44":{}},"component":{}}],["immedi",{"_index":1426,"title":{},"name":{},"text":{"14":{}},"component":{}}],["impact",{"_index":603,"title":{},"name":{},"text":{"3":{},"14":{}},"component":{}}],["impl",{"_index":2825,"title":{"51-9":{}},"name":{},"text":{"51":{},"55":{}},"component":{}}],["implement",{"_index":45,"title":{},"name":{},"text":{"1":{},"3":{},"11":{},"13":{},"14":{},"16":{},"26":{},"31":{},"33":{},"37":{},"39":{},"42":{},"43":{},"45":{},"48":{},"50":{},"51":{},"53":{},"55":{}},"component":{}}],["impli",{"_index":665,"title":{},"name":{},"text":{"3":{}},"component":{}}],["implic",{"_index":1929,"title":{"47-3":{}},"name":{},"text":{"23":{},"47":{}},"component":{}}],["implicit",{"_index":3062,"title":{},"name":{},"text":{"59":{}},"component":{}}],["import",{"_index":348,"title":{},"name":{},"text":{"3":{},"6":{},"13":{},"16":{},"21":{},"23":{},"33":{},"42":{},"49":{},"54":{},"59":{}},"component":{}}],["important_address",{"_index":1899,"title":{},"name":{"22":{}},"text":{},"component":{}}],["impos",{"_index":2051,"title":{},"name":{},"text":{"30":{}},"component":{}}],["imposs",{"_index":2186,"title":{},"name":{},"text":{"35":{}},"component":{}}],["improv",{"_index":430,"title":{},"name":{},"text":{"3":{},"13":{},"14":{},"16":{},"21":{},"33":{},"35":{},"42":{}},"component":{}}],["in\\mathbb{f}_p^2",{"_index":2274,"title":{},"name":{},"text":{"39":{}},"component":{}}],["inaccess",{"_index":3058,"title":{},"name":{},"text":{"59":{}},"component":{}}],["inact",{"_index":2106,"title":{},"name":{},"text":{"31":{}},"component":{}}],["inbox",{"_index":1533,"title":{},"name":{},"text":{"15":{},"16":{}},"component":{}}],["incent",{"_index":357,"title":{},"name":{},"text":{"3":{},"44":{}},"component":{}}],["incentiv",{"_index":395,"title":{},"name":{},"text":{"3":{}},"component":{}}],["includ",{"_index":99,"title":{"27-5":{},"27-8":{}},"name":{},"text":{"1":{},"2":{},"3":{},"5":{},"6":{},"11":{},"13":{},"14":{},"16":{},"21":{},"22":{},"26":{},"27":{},"30":{},"31":{},"33":{},"35":{},"36":{},"37":{},"38":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"53":{},"56":{},"58":{},"59":{}},"component":{}}],["inclus",{"_index":1630,"title":{},"name":{},"text":{"16":{}},"component":{}}],["incom",{"_index":1203,"title":{},"name":{},"text":{"13":{},"14":{}},"component":{}}],["incompat",{"_index":1392,"title":{},"name":{},"text":{"14":{}},"component":{}}],["inconsist",{"_index":1327,"title":{},"name":{},"text":{"14":{}},"component":{}}],["incorpor",{"_index":752,"title":{},"name":{},"text":{"5":{}},"component":{}}],["incorrect",{"_index":2807,"title":{},"name":{},"text":{"50":{}},"component":{}}],["increas",{"_index":552,"title":{},"name":{},"text":{"3":{},"13":{},"14":{},"16":{},"35":{},"44":{},"47":{},"48":{}},"component":{}}],["increase_allow",{"_index":2859,"title":{},"name":{},"text":{"51":{}},"component":{}}],["increase_count",{"_index":2832,"title":{},"name":{},"text":{"51":{},"55":{}},"component":{}}],["increment",{"_index":2158,"title":{},"name":{},"text":{"33":{}},"component":{}}],["incur",{"_index":2377,"title":{},"name":{},"text":{"42":{}},"component":{}}],["inde",{"_index":1984,"title":{},"name":{},"text":{"27":{},"38":{},"44":{}},"component":{}}],["independ",{"_index":149,"title":{"37-6":{}},"name":{},"text":{"1":{},"3":{},"16":{},"37":{}},"component":{}}],["index",{"_index":281,"title":{},"name":{"2":{},"4":{}},"text":{"31":{},"43":{},"45":{},"49":{},"50":{},"58":{}},"component":{}}],["index=0",{"_index":3019,"title":{},"name":{},"text":{"57":{}},"component":{}}],["index=1",{"_index":3009,"title":{},"name":{},"text":{"57":{}},"component":{}}],["index=2",{"_index":3011,"title":{},"name":{},"text":{"57":{}},"component":{}}],["indic",{"_index":1589,"title":{},"name":{},"text":{"16":{},"31":{},"44":{},"46":{},"59":{}},"component":{}}],["individu",{"_index":596,"title":{},"name":{},"text":{"3":{},"30":{},"35":{}},"component":{}}],["induc",{"_index":2409,"title":{},"name":{},"text":{"42":{},"44":{}},"component":{}}],["inflat",{"_index":539,"title":{},"name":{},"text":{"3":{}},"component":{}}],["inflationari",{"_index":1955,"title":{},"name":{},"text":{"25":{}},"component":{}}],["influenc",{"_index":2918,"title":{},"name":{},"text":{"52":{}},"component":{}}],["info.cairo",{"_index":2959,"title":{},"name":{},"text":{"56":{}},"component":{}}],["inform",{"_index":62,"title":{"56":{},"56-3":{}},"name":{},"text":{"1":{},"2":{},"3":{},"5":{},"6":{},"7":{},"11":{},"12":{},"13":{},"15":{},"16":{},"17":{},"21":{},"22":{},"24":{},"29":{},"31":{},"33":{},"34":{},"37":{},"38":{},"39":{},"42":{},"44":{},"45":{},"46":{},"48":{},"50":{},"51":{},"52":{},"53":{},"55":{},"56":{},"57":{},"58":{},"59":{}},"component":{}}],["infrastructur",{"_index":1536,"title":{"16-10":{}},"name":{},"text":{},"component":{}}],["infura",{"_index":864,"title":{},"name":{},"text":{"7":{},"17":{}},"component":{}}],["inher",{"_index":615,"title":{},"name":{},"text":{"3":{}},"component":{}}],["inherit",{"_index":1925,"title":{},"name":{},"text":{"23":{},"25":{},"30":{}},"component":{}}],["initi",{"_index":50,"title":{"27-7":{}},"name":{},"text":{"1":{},"3":{},"16":{},"27":{},"31":{},"33":{},"35":{},"38":{},"44":{},"48":{},"54":{},"56":{}},"component":{}}],["initial_count",{"_index":2837,"title":{},"name":{},"text":{"51":{}},"component":{}}],["initial_suppli",{"_index":2850,"title":{},"name":{},"text":{"51":{}},"component":{}}],["initiate_token_withdraw",{"_index":2109,"title":{},"name":{},"text":{"31":{}},"component":{}}],["initiate_withdraw",{"_index":1990,"title":{"31-165":{}},"name":{},"text":{"27":{},"31":{}},"component":{}}],["inject",{"_index":2402,"title":{},"name":{},"text":{"42":{}},"component":{}}],["input",{"_index":202,"title":{},"name":{},"text":{"1":{},"5":{},"8":{},"14":{},"26":{},"31":{},"39":{},"49":{},"51":{},"52":{},"58":{}},"component":{}}],["insid",{"_index":1655,"title":{"51-6":{}},"name":{},"text":{"16":{},"35":{},"43":{},"44":{},"45":{},"49":{},"50":{},"51":{},"54":{},"58":{}},"component":{}}],["insight",{"_index":2138,"title":{},"name":{},"text":{"32":{}},"component":{}}],["inspir",{"_index":2147,"title":{},"name":{},"text":{"33":{}},"component":{}}],["instal",{"_index":815,"title":{"7-2":{},"8-2":{},"9-1":{},"9-3":{},"9-4":{},"9-5":{},"10-2":{}},"name":{},"text":{"6":{},"7":{},"9":{},"11":{},"21":{}},"component":{}}],["instanc",{"_index":13,"title":{"53":{},"1-9":{},"53-2":{}},"name":{},"text":{"1":{},"6":{},"7":{},"8":{},"12":{},"13":{},"16":{},"21":{},"30":{},"37":{},"46":{},"48":{},"53":{},"57":{},"59":{}},"component":{}}],["instance’",{"_index":2602,"title":{},"name":{},"text":{"46":{}},"component":{}}],["instanti",{"_index":903,"title":{},"name":{},"text":{"8":{},"57":{}},"component":{}}],["instead",{"_index":39,"title":{},"name":{},"text":{"1":{},"5":{},"6":{},"11":{},"12":{},"13":{},"14":{},"16":{},"33":{},"37":{},"49":{}},"component":{}}],["institut",{"_index":508,"title":{},"name":{},"text":{"3":{}},"component":{}}],["instruct",{"_index":107,"title":{},"name":{},"text":{"1":{},"11":{},"16":{},"21":{},"26":{},"49":{},"50":{}},"component":{}}],["int",{"_index":1428,"title":{},"name":{},"text":{"14":{}},"component":{}}],["int.from_byt",{"_index":2738,"title":{},"name":{},"text":{"48":{}},"component":{}}],["integ",{"_index":2493,"title":{"57-3":{}},"name":{},"text":{"43":{},"46":{},"57":{}},"component":{}}],["integr",{"_index":251,"title":{},"name":{},"text":{"1":{},"3":{},"12":{},"13":{},"14":{},"21":{},"32":{},"37":{},"42":{}},"component":{}}],["intend",{"_index":342,"title":{},"name":{},"text":{"3":{},"42":{},"50":{}},"component":{}}],["intent",{"_index":2537,"title":{},"name":{},"text":{"44":{}},"component":{}}],["intention",{"_index":2808,"title":{},"name":{},"text":{"50":{}},"component":{}}],["interact",{"_index":181,"title":{"10":{}},"name":{},"text":{"1":{},"5":{},"7":{},"9":{},"10":{},"13":{},"16":{},"21":{},"35":{},"44":{},"46":{},"54":{},"57":{}},"component":{}}],["interact_with_a_smart_contract",{"_index":953,"title":{},"name":{"10":{}},"text":{},"component":{}}],["interest",{"_index":311,"title":{},"name":{},"text":{"2":{},"3":{},"30":{},"32":{}},"component":{}}],["interfac",{"_index":178,"title":{"33":{},"37-2":{},"51-9":{}},"name":{},"text":{"1":{},"9":{},"21":{},"31":{},"33":{},"37":{},"51":{},"55":{},"59":{}},"component":{}}],["interface_nam",{"_index":2829,"title":{},"name":{},"text":{"51":{}},"component":{}}],["intermedi",{"_index":197,"title":{},"name":{},"text":{"1":{},"16":{},"46":{},"49":{},"50":{}},"component":{}}],["intern",{"_index":2624,"title":{},"name":{},"text":{"46":{},"59":{}},"component":{}}],["interpret",{"_index":654,"title":{},"name":{},"text":{"3":{},"14":{},"45":{}},"component":{}}],["interv",{"_index":1355,"title":{},"name":{},"text":{"14":{}},"component":{}}],["introduc",{"_index":1042,"title":{},"name":{},"text":{"12":{},"13":{},"14":{},"16":{},"32":{},"42":{},"48":{},"51":{},"53":{},"59":{}},"component":{}}],["introduct",{"_index":846,"title":{"7-3":{},"8-3":{},"10-3":{},"45-1":{},"51-1":{}},"name":{"35":{}},"text":{"16":{},"32":{},"51":{}},"component":{}}],["invalid",{"_index":1419,"title":{"38-2":{}},"name":{},"text":{"14":{},"16":{},"35":{},"38":{},"44":{},"47":{},"56":{}},"component":{}}],["invest",{"_index":354,"title":{},"name":{},"text":{"3":{}},"component":{}}],["investig",{"_index":2059,"title":{},"name":{},"text":{"30":{}},"component":{}}],["investor",{"_index":472,"title":{},"name":{},"text":{"3":{}},"component":{}}],["invoc",{"_index":2507,"title":{},"name":{},"text":{"44":{}},"component":{}}],["invok",{"_index":265,"title":{"5-15":{},"10-5":{},"48-2":{}},"name":{},"text":{"1":{},"5":{},"10":{},"12":{},"14":{},"16":{},"34":{},"42":{},"43":{},"44":{},"46":{},"47":{},"48":{},"56":{}},"component":{}}],["invoke_v0_tx_hash",{"_index":2719,"title":{},"name":{},"text":{"48":{}},"component":{}}],["invoke_v1_tx_hash",{"_index":2718,"title":{},"name":{},"text":{"48":{}},"component":{}}],["invoke_v3_tx_hash",{"_index":2706,"title":{},"name":{},"text":{"48":{}},"component":{}}],["invoketransact",{"_index":1269,"title":{},"name":{},"text":{"13":{}},"component":{}}],["involv",{"_index":111,"title":{},"name":{},"text":{"1":{},"3":{},"8":{},"14":{},"23":{},"27":{},"42":{},"59":{}},"component":{}}],["iothercontract",{"_index":2893,"title":{},"name":{},"text":{"51":{},"55":{}},"component":{}}],["iothercontractdispatch",{"_index":2900,"title":{},"name":{},"text":{"51":{},"55":{}},"component":{}}],["iothercontractdispatchertrait",{"_index":2901,"title":{},"name":{},"text":{"51":{}},"component":{}}],["iothercontractlibrarydispatch",{"_index":2902,"title":{},"name":{},"text":{"51":{}},"component":{}}],["ip",{"_index":1933,"title":{},"name":{},"text":{"23":{}},"component":{}}],["irongauntlet",{"_index":1099,"title":{},"name":{},"text":{"13":{}},"component":{}}],["isn’t",{"_index":2789,"title":{},"name":{},"text":{"49":{}},"component":{}}],["isservicingtoken",{"_index":2073,"title":{"31-119":{}},"name":{},"text":{"31":{}},"component":{}}],["issu",{"_index":1117,"title":{},"name":{},"text":{"13":{},"14":{},"16":{},"20":{},"30":{},"38":{}},"component":{}}],["issuanc",{"_index":561,"title":{},"name":{},"text":{"3":{}},"component":{}}],["istarkgatemanager.sol",{"_index":2083,"title":{},"name":{},"text":{"31":{}},"component":{}}],["istarkgateregistry.sol",{"_index":2085,"title":{},"name":{},"text":{"31":{}},"component":{}}],["istarkgateservice.sol",{"_index":2086,"title":{},"name":{},"text":{"31":{}},"component":{}}],["item",{"_index":2831,"title":{},"name":{},"text":{"51":{}},"component":{}}],["iter",{"_index":2665,"title":{},"name":{},"text":{"47":{},"51":{}},"component":{}}],["itself",{"_index":2067,"title":{},"name":{},"text":{"30":{},"44":{}},"component":{}}],["it’",{"_index":232,"title":{},"name":{},"text":{"1":{},"11":{},"13":{},"16":{},"21":{},"38":{},"49":{},"51":{}},"component":{}}],["iuniversaldeploy",{"_index":2197,"title":{},"name":{},"text":{"37":{}},"component":{}}],["iuniversaldeployerdispatch",{"_index":2206,"title":{},"name":{},"text":{"37":{}},"component":{}}],["iv",{"_index":589,"title":{},"name":{},"text":{"3":{}},"component":{}}],["jan",{"_index":1537,"title":{"16-12":{}},"name":{},"text":{"20":{}},"component":{}}],["januari",{"_index":1804,"title":{},"name":{},"text":{"20":{},"30":{}},"component":{}}],["javascript",{"_index":1846,"title":{},"name":{},"text":{"21":{}},"component":{}}],["jonathan",{"_index":1834,"title":{},"name":{},"text":{"21":{}},"component":{}}],["joshklop",{"_index":1092,"title":{},"name":{},"text":{"13":{}},"component":{}}],["journey",{"_index":2131,"title":{},"name":{},"text":{"32":{}},"component":{}}],["json",{"_index":59,"title":{},"name":{},"text":{"1":{},"5":{},"11":{},"13":{},"14":{},"16":{},"17":{},"19":{},"21":{},"27":{},"47":{},"50":{},"51":{}},"component":{}}],["jsonrpc",{"_index":2675,"title":{},"name":{},"text":{"47":{}},"component":{}}],["juli",{"_index":1544,"title":{"16-17":{},"16-25":{}},"name":{},"text":{},"component":{}}],["june",{"_index":1557,"title":{"16-26":{}},"name":{},"text":{"21":{}},"component":{}}],["juno",{"_index":1001,"title":{"13":{}},"name":{},"text":{"11":{},"12":{},"13":{},"17":{}},"component":{}}],["juno_gettransactionstatu",{"_index":1136,"title":{},"name":{},"text":{"13":{}},"component":{}}],["juno_vers",{"_index":1068,"title":{},"name":{"13":{}},"text":{"13":{}},"component":{}}],["juno’",{"_index":1166,"title":{},"name":{},"text":{"13":{}},"component":{}}],["j’th",{"_index":2304,"title":{},"name":{},"text":{"39":{}},"component":{}}],["k",{"_index":2446,"title":{},"name":{},"text":{"42":{}},"component":{}}],["k_1",{"_index":2937,"title":{},"name":{},"text":{"54":{}},"component":{}}],["k_2",{"_index":2939,"title":{},"name":{},"text":{"54":{}},"component":{}}],["k_n",{"_index":2938,"title":{},"name":{},"text":{"54":{}},"component":{}}],["kasar",{"_index":1749,"title":{},"name":{},"text":{"17":{}},"component":{}}],["katana",{"_index":1814,"title":{"21-12":{}},"name":{},"text":{"21":{}},"component":{}}],["keccak",{"_index":1631,"title":{"39-2":{}},"name":{},"text":{"16":{},"39":{},"42":{},"48":{},"54":{}},"component":{}}],["keccak256",{"_index":2266,"title":{},"name":{},"text":{"39":{},"44":{}},"component":{}}],["keep",{"_index":318,"title":{},"name":{},"text":{"2":{},"23":{},"35":{}},"component":{}}],["kept",{"_index":765,"title":{},"name":{},"text":{"5":{},"6":{},"51":{}},"component":{}}],["key",{"_index":220,"title":{"11-5":{}},"name":{},"text":{"1":{},"3":{},"5":{},"11":{},"13":{},"16":{},"35":{},"36":{},"38":{},"42":{},"45":{},"46":{},"47":{},"49":{},"51":{},"54":{},"58":{},"59":{}},"component":{}}],["key/valu",{"_index":2603,"title":{},"name":{},"text":{"46":{}},"component":{}}],["keypair",{"_index":216,"title":{},"name":{},"text":{"1":{}},"component":{}}],["keys=[sn_keccak",{"_index":2891,"title":{},"name":{},"text":{"51":{}},"component":{}}],["keystor",{"_index":945,"title":{"11-4":{}},"name":{},"text":{"9":{},"11":{}},"component":{}}],["keyword",{"_index":1680,"title":{},"name":{},"text":{"16":{}},"component":{}}],["kick",{"_index":2420,"title":{},"name":{},"text":{"42":{}},"component":{}}],["kind",{"_index":647,"title":{},"name":{},"text":{"3":{},"51":{}},"component":{}}],["kirugan",{"_index":1101,"title":{},"name":{},"text":{"13":{}},"component":{}}],["kit",{"_index":1842,"title":{},"name":{},"text":{"21":{}},"component":{}}],["know",{"_index":120,"title":{},"name":{},"text":{"1":{},"11":{},"21":{},"31":{},"46":{},"57":{}},"component":{}}],["knowledg",{"_index":285,"title":{},"name":{},"text":{"2":{},"49":{}},"component":{}}],["known",{"_index":6,"title":{"1-4":{}},"name":{},"text":{"2":{},"3":{},"14":{},"16":{},"33":{},"35":{},"37":{},"47":{},"51":{},"59":{}},"component":{}}],["kubernet",{"_index":1110,"title":{},"name":{},"text":{"13":{}},"component":{}}],["l",{"_index":2416,"title":{},"name":{},"text":{"42":{}},"component":{}}],["l1",{"_index":26,"title":{"44":{},"1-20":{},"27-3":{},"27-9":{},"31-1":{},"44-1":{},"44-2":{},"44-3":{},"44-4":{},"44-5":{},"44-6":{}},"name":{},"text":{"1":{},"3":{},"5":{},"12":{},"13":{},"14":{},"16":{},"19":{},"20":{},"23":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"42":{},"44":{},"45":{},"46":{},"47":{},"48":{},"50":{},"51":{},"59":{}},"component":{}}],["l1_bridge_address",{"_index":1788,"title":{},"name":{},"text":{"19":{}},"component":{}}],["l1_da_mod",{"_index":1588,"title":{},"name":{},"text":{"16":{},"42":{}},"component":{}}],["l1_ga",{"_index":2700,"title":{},"name":{},"text":{"48":{}},"component":{}}],["l1_gas_bound",{"_index":2707,"title":{},"name":{},"text":{"48":{}},"component":{}}],["l1_handler",{"_index":2488,"title":{},"name":{},"text":{"42":{},"44":{},"51":{}},"component":{}}],["l1_handler_entry_point",{"_index":2811,"title":{},"name":{},"text":{"50":{}},"component":{}}],["l1_handler_tx_hash",{"_index":2545,"title":{},"name":{},"text":{"44":{}},"component":{}}],["l1_handler_txn_receipt",{"_index":1144,"title":{},"name":{},"text":{"13":{}},"component":{}}],["l1_recipi",{"_index":2108,"title":{},"name":{},"text":{"31":{}},"component":{}}],["l1_token_address",{"_index":1786,"title":{},"name":{},"text":{"19":{},"31":{}},"component":{}}],["l1→l2",{"_index":1049,"title":{"27-2":{}},"name":{},"text":{"12":{},"44":{}},"component":{}}],["l2",{"_index":43,"title":{"44":{},"27-7":{},"31-134":{},"42-18":{},"44-1":{},"44-2":{},"44-3":{},"44-4":{},"44-5":{},"44-6":{}},"name":{},"text":{"1":{},"2":{},"3":{},"5":{},"10":{},"12":{},"14":{},"19":{},"20":{},"22":{},"23":{},"25":{},"26":{},"27":{},"28":{},"29":{},"30":{},"31":{},"42":{},"44":{},"47":{},"48":{},"49":{}},"component":{}}],["l2_bridge_address",{"_index":1789,"title":{},"name":{},"text":{"19":{}},"component":{}}],["l2_ga",{"_index":2701,"title":{},"name":{},"text":{"48":{}},"component":{}}],["l2_gas_bound",{"_index":2708,"title":{},"name":{},"text":{"48":{}},"component":{}}],["l2_token",{"_index":2121,"title":{},"name":{},"text":{"31":{}},"component":{}}],["l2_token_address",{"_index":1787,"title":{},"name":{},"text":{"19":{},"31":{}},"component":{}}],["l2recipi",{"_index":2092,"title":{},"name":{},"text":{"31":{}},"component":{}}],["l2→l1",{"_index":1968,"title":{"27-6":{},"42-16":{}},"name":{},"text":{"42":{},"44":{}},"component":{}}],["l3",{"_index":2802,"title":{},"name":{},"text":{"49":{}},"component":{}}],["label",{"_index":2032,"title":{},"name":{},"text":{"30":{}},"component":{}}],["lambdaclass’",{"_index":1632,"title":{},"name":{},"text":{"16":{}},"component":{}}],["lang",{"_index":762,"title":{},"name":{},"text":{"5":{},"14":{},"17":{},"21":{},"39":{}},"component":{}}],["languag",{"_index":84,"title":{},"name":{},"text":{"1":{},"2":{},"16":{},"21":{},"32":{},"48":{},"49":{},"53":{},"57":{},"59":{}},"component":{}}],["larg",{"_index":375,"title":{},"name":{},"text":{"3":{},"14":{}},"component":{}}],["larger",{"_index":337,"title":{},"name":{},"text":{"3":{},"57":{}},"component":{}}],["last",{"_index":2472,"title":{},"name":{},"text":{"42":{}},"component":{}}],["latenc",{"_index":1105,"title":{},"name":{},"text":{"13":{},"42":{}},"component":{}}],["later",{"_index":484,"title":{},"name":{},"text":{"3":{},"38":{},"42":{},"44":{}},"component":{}}],["latest",{"_index":728,"title":{"14-1":{}},"name":{},"text":{"5":{},"14":{},"15":{},"16":{},"20":{},"21":{},"55":{}},"component":{}}],["latter",{"_index":738,"title":{},"name":{},"text":{"5":{}},"component":{}}],["launch",{"_index":1795,"title":{},"name":{},"text":{"20":{},"21":{}},"component":{}}],["lava",{"_index":1742,"title":{},"name":{},"text":{"17":{}},"component":{}}],["law",{"_index":668,"title":{},"name":{},"text":{"3":{}},"component":{}}],["layer",{"_index":247,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"13":{},"16":{},"44":{},"49":{}},"component":{}}],["layerswap",{"_index":1809,"title":{},"name":{},"text":{"20":{}},"component":{}}],["layout",{"_index":2923,"title":{"54-1":{}},"name":{},"text":{},"component":{}}],["ldot",{"_index":2619,"title":{},"name":{},"text":{"46":{}},"component":{}}],["lead",{"_index":2627,"title":{},"name":{},"text":{"46":{}},"component":{}}],["leaf",{"_index":2501,"title":{},"name":{},"text":{"43":{},"46":{}},"component":{}}],["learn",{"_index":304,"title":{},"name":{},"text":{"2":{},"21":{},"32":{}},"component":{}}],["leav",{"_index":1974,"title":{},"name":{},"text":{"27":{},"46":{},"49":{}},"component":{}}],["led",{"_index":1449,"title":{},"name":{},"text":{"14":{}},"component":{}}],["left",{"_index":2364,"title":{},"name":{},"text":{"42":{},"46":{}},"component":{}}],["left=right",{"_index":2640,"title":{},"name":{},"text":{"46":{}},"component":{}}],["left[\\text{hades_permut",{"_index":2300,"title":{},"name":{},"text":{"39":{}},"component":{}}],["left[shift\\_point",{"_index":2280,"title":{},"name":{},"text":{"39":{}},"component":{}}],["legaci",{"_index":682,"title":{"5":{},"6":{},"30-2":{},"30-4":{}},"name":{},"text":{"21":{},"30":{}},"component":{}}],["legacy_bridge_eic.cairo",{"_index":2022,"title":{},"name":{},"text":{"30":{}},"component":{}}],["legacybridge.sol",{"_index":2021,"title":{},"name":{},"text":{"30":{}},"component":{}}],["legacymap",{"_index":2946,"title":{},"name":{},"text":{"54":{}},"component":{}}],["legal",{"_index":648,"title":{},"name":{},"text":{"3":{}},"component":{}}],["lei",{"_index":1835,"title":{},"name":{},"text":{"21":{}},"component":{}}],["length",{"_index":1936,"title":{},"name":{},"text":{"23":{},"42":{},"46":{},"57":{}},"component":{}}],["length>0",{"_index":2626,"title":{},"name":{},"text":{"46":{}},"component":{}}],["less",{"_index":2407,"title":{"57-1":{}},"name":{},"text":{"42":{},"57":{},"59":{}},"component":{}}],["let",{"_index":1423,"title":{},"name":{},"text":{"14":{},"21":{},"31":{}},"component":{}}],["let’",{"_index":2411,"title":{},"name":{},"text":{"42":{}},"component":{}}],["level",{"_index":89,"title":{"54-2":{}},"name":{},"text":{"1":{},"3":{},"13":{},"16":{},"23":{},"33":{},"46":{},"47":{},"51":{},"57":{},"58":{},"59":{}},"component":{}}],["leverag",{"_index":2221,"title":{},"name":{},"text":{"37":{}},"component":{}}],["li",{"_index":2941,"title":{},"name":{},"text":{"54":{}},"component":{}}],["lib.cairo",{"_index":850,"title":{},"name":{},"text":{"7":{}},"component":{}}],["libfunc",{"_index":1338,"title":{},"name":{},"text":{"14":{}},"component":{}}],["librari",{"_index":834,"title":{"59-6":{},"59-13":{},"59-20":{},"59-26":{},"59-32":{},"59-39":{},"59-45":{},"59-52":{},"59-58":{}},"name":{},"text":{"6":{},"13":{},"16":{},"21":{},"48":{},"49":{},"57":{},"59":{}},"component":{}}],["library_cal",{"_index":1711,"title":{"59-34":{}},"name":{},"text":{"16":{},"53":{}},"component":{}}],["library_call_syscal",{"_index":3078,"title":{},"name":{},"text":{"59":{}},"component":{}}],["libs/papyru",{"_index":1753,"title":{},"name":{},"text":{"17":{}},"component":{}}],["libs/starknet",{"_index":1274,"title":{},"name":{},"text":{"13":{}},"component":{}}],["lie",{"_index":1829,"title":{},"name":{},"text":{"21":{}},"component":{}}],["life",{"_index":1598,"title":{},"name":{"47":{}},"text":{"16":{},"21":{}},"component":{}}],["lifecycl",{"_index":801,"title":{"47":{}},"name":{},"text":{"5":{},"47":{}},"component":{}}],["lifetim",{"_index":2189,"title":{},"name":{},"text":{"36":{}},"component":{}}],["limb",{"_index":2996,"title":{},"name":{},"text":{"57":{}},"component":{}}],["limit",{"_index":307,"title":{"23":{},"30-5":{},"38-3":{},"42-5":{}},"name":{},"text":{"2":{},"3":{},"13":{},"14":{},"20":{},"23":{},"27":{},"30":{},"34":{},"35":{},"38":{},"42":{},"49":{},"51":{},"54":{}},"component":{}}],["limits_and_trigg",{"_index":1914,"title":{},"name":{"23":{}},"text":{},"component":{}}],["line",{"_index":671,"title":{"5-1":{},"13-15":{}},"name":{},"text":{"5":{},"6":{},"9":{},"13":{},"14":{},"16":{},"21":{},"49":{},"54":{}},"component":{}}],["linear",{"_index":2250,"title":{},"name":{},"text":{"38":{}},"component":{}}],["link",{"_index":313,"title":{},"name":{},"text":{"2":{},"7":{},"14":{}},"component":{}}],["linux",{"_index":914,"title":{"9-4":{}},"name":{},"text":{"9":{}},"component":{}}],["liquid",{"_index":2041,"title":{},"name":{},"text":{"30":{}},"component":{}}],["list",{"_index":242,"title":{"30-4":{}},"name":{},"text":{"1":{},"2":{},"5":{},"6":{},"14":{},"16":{},"17":{},"18":{},"19":{},"21":{},"27":{},"30":{},"31":{},"42":{},"43":{},"44":{},"47":{},"48":{},"51":{},"57":{},"58":{}},"component":{}}],["live",{"_index":419,"title":{},"name":{},"text":{"3":{},"14":{},"16":{},"21":{}},"component":{}}],["load",{"_index":1576,"title":{},"name":{},"text":{"16":{}},"component":{}}],["local",{"_index":1349,"title":{},"name":{},"text":{"14":{},"21":{},"45":{},"49":{},"59":{}},"component":{}}],["locat",{"_index":81,"title":{},"name":{},"text":{"1":{},"5":{},"9":{},"11":{}},"component":{}}],["lock",{"_index":467,"title":{},"name":{},"text":{"3":{},"27":{},"30":{},"31":{}},"component":{}}],["log",{"_index":1169,"title":{},"name":{},"text":{"13":{},"14":{},"42":{},"58":{}},"component":{}}],["logic",{"_index":38,"title":{},"name":{},"text":{"1":{},"33":{},"35":{},"38":{},"48":{},"59":{}},"component":{}}],["logmessagetol1",{"_index":2485,"title":{},"name":{},"text":{"42":{},"44":{}},"component":{}}],["logstateupd",{"_index":1644,"title":{},"name":{},"text":{"16":{}},"component":{}}],["long",{"_index":513,"title":{},"name":{},"text":{"3":{},"28":{},"57":{}},"component":{}}],["longer",{"_index":1026,"title":{},"name":{},"text":{"12":{},"13":{},"14":{},"16":{},"31":{},"51":{},"57":{}},"component":{}}],["look",{"_index":892,"title":{},"name":{},"text":{"7":{},"8":{},"45":{},"49":{},"51":{}},"component":{}}],["lose",{"_index":773,"title":{},"name":{},"text":{"5":{},"35":{},"44":{},"51":{}},"component":{}}],["loss",{"_index":621,"title":{},"name":{},"text":{"3":{},"30":{}},"component":{}}],["lost",{"_index":626,"title":{},"name":{},"text":{"3":{}},"component":{}}],["lot",{"_index":1880,"title":{},"name":{},"text":{"21":{},"38":{},"49":{}},"component":{}}],["low",{"_index":88,"title":{"54-2":{}},"name":{},"text":{"1":{},"2":{},"3":{},"16":{},"23":{},"39":{},"57":{},"58":{}},"component":{}}],["lower",{"_index":3074,"title":{},"name":{},"text":{"59":{}},"component":{}}],["lusd",{"_index":2048,"title":{},"name":{},"text":{"30":{}},"component":{}}],["ly",{"_index":2798,"title":{},"name":{},"text":{"49":{}},"component":{}}],["m",{"_index":2368,"title":{},"name":{},"text":{"42":{}},"component":{}}],["m\\ge",{"_index":2378,"title":{},"name":{},"text":{"42":{}},"component":{}}],["machin",{"_index":118,"title":{},"name":{},"text":{"1":{},"21":{},"42":{}},"component":{}}],["maco",{"_index":913,"title":{"9-4":{}},"name":{},"text":{"9":{}},"component":{}}],["made",{"_index":336,"title":{},"name":{},"text":{"3":{},"13":{},"14":{}},"component":{}}],["main",{"_index":169,"title":{},"name":{},"text":{"1":{},"11":{},"16":{},"31":{},"48":{}},"component":{}}],["mainnet",{"_index":690,"title":{"22-1":{}},"name":{},"text":{"5":{},"7":{},"12":{},"14":{},"16":{},"19":{},"21":{},"22":{},"23":{},"27":{},"30":{},"37":{},"56":{}},"component":{}}],["mainnet.json",{"_index":1782,"title":{},"name":{},"text":{"19":{},"27":{}},"component":{}}],["mainnet.starknet.io",{"_index":1901,"title":{},"name":{},"text":{"22":{}},"component":{}}],["mainnet.starknet.io/feeder_gateway",{"_index":708,"title":{},"name":{},"text":{"5":{}},"component":{}}],["mainnet.starknet.io/gateway",{"_index":710,"title":{},"name":{},"text":{"5":{}},"component":{}}],["maintain",{"_index":239,"title":{"21-3":{},"21-9":{},"21-17":{},"21-22":{},"21-27":{},"21-32":{},"21-37":{}},"name":{},"text":{"1":{},"3":{},"13":{},"21":{},"44":{}},"component":{}}],["mainten",{"_index":437,"title":{},"name":{},"text":{"3":{}},"component":{}}],["major",{"_index":438,"title":{},"name":{},"text":{"3":{},"9":{},"14":{}},"component":{}}],["make",{"_index":932,"title":{},"name":{},"text":{"9":{},"11":{},"13":{},"16":{},"21":{},"23":{},"27":{},"30":{},"31":{},"35":{},"37":{},"38":{},"39":{},"49":{},"55":{}},"component":{}}],["maker",{"_index":1792,"title":{},"name":{},"text":{"20":{}},"component":{}}],["malici",{"_index":1690,"title":{},"name":{},"text":{"16":{},"33":{},"49":{}},"component":{}}],["manag",{"_index":562,"title":{"21-15":{},"30-1":{}},"name":{},"text":{"3":{},"5":{},"9":{},"14":{},"21":{},"23":{},"30":{},"31":{},"33":{},"35":{},"38":{}},"component":{}}],["mandatori",{"_index":1674,"title":{},"name":{},"text":{"16":{},"33":{}},"component":{}}],["mani",{"_index":659,"title":{},"name":{},"text":{"3":{},"21":{},"27":{},"38":{}},"component":{}}],["manipul",{"_index":2437,"title":{},"name":{},"text":{"42":{}},"component":{}}],["manner",{"_index":2393,"title":{},"name":{},"text":{"42":{},"44":{},"45":{},"46":{},"50":{}},"component":{}}],["mansion",{"_index":1850,"title":{},"name":{},"text":{"21":{}},"component":{}}],["mansion/scarb",{"_index":925,"title":{},"name":{},"text":{"9":{}},"component":{}}],["manual",{"_index":699,"title":{},"name":{},"text":{"5":{},"9":{},"16":{},"30":{}},"component":{}}],["map",{"_index":1202,"title":{},"name":{},"text":{"13":{},"39":{},"44":{},"46":{},"48":{},"54":{}},"component":{}}],["mar",{"_index":1547,"title":{"16-20":{}},"name":{},"text":{},"component":{}}],["march",{"_index":526,"title":{},"name":{},"text":{"3":{}},"component":{}}],["margin",{"_index":2408,"title":{},"name":{},"text":{"42":{}},"component":{}}],["mark",{"_index":1511,"title":{},"name":{},"text":{"14":{},"47":{},"55":{}},"component":{}}],["market",{"_index":2698,"title":{},"name":{},"text":{"48":{}},"component":{}}],["marketplac",{"_index":1898,"title":{},"name":{},"text":{"21":{}},"component":{}}],["massiv",{"_index":291,"title":{},"name":{},"text":{"2":{}},"component":{}}],["master",{"_index":1603,"title":{},"name":{},"text":{"16":{}},"component":{}}],["match",{"_index":1484,"title":{},"name":{},"text":{"14":{},"31":{},"32":{},"33":{}},"component":{}}],["materi",{"_index":575,"title":{},"name":{},"text":{"3":{}},"component":{}}],["mathbb{f}_p",{"_index":2254,"title":{},"name":{},"text":{"39":{},"40":{}},"component":{}}],["mathbb{f}_p^*\\rightarrow",{"_index":2262,"title":{},"name":{},"text":{"39":{}},"component":{}}],["mathbb{f}_p^2\\rightarrow\\mathbb{f}_p",{"_index":2261,"title":{},"name":{},"text":{"39":{}},"component":{}}],["mathemat",{"_index":112,"title":{"46-8":{}},"name":{},"text":{"1":{}},"component":{}}],["matter",{"_index":2878,"title":{},"name":{},"text":{"51":{}},"component":{}}],["matthieu",{"_index":1384,"title":{},"name":{},"text":{"14":{}},"component":{}}],["max",{"_index":1087,"title":{},"name":{},"text":{"13":{},"14":{},"23":{},"42":{}},"component":{}}],["max_amount",{"_index":2702,"title":{},"name":{},"text":{"48":{},"56":{}},"component":{}}],["max_fe",{"_index":1707,"title":{},"name":{},"text":{"16":{},"42":{},"47":{},"48":{},"56":{}},"component":{}}],["max_k",{"_index":2354,"title":{},"name":{},"text":{"42":{}},"component":{}}],["max_k[\\text{cairoresourceusage}_k",{"_index":2444,"title":{},"name":{},"text":{"42":{}},"component":{}}],["max_price_per_unit",{"_index":2703,"title":{},"name":{},"text":{"48":{},"56":{}},"component":{}}],["maxim",{"_index":2415,"title":{},"name":{},"text":{"42":{},"54":{}},"component":{}}],["maximum",{"_index":1088,"title":{},"name":{},"text":{"13":{},"14":{},"16":{},"23":{},"38":{},"42":{},"47":{},"48":{},"56":{}},"component":{}}],["mean",{"_index":1499,"title":{},"name":{},"text":{"14":{},"16":{},"20":{},"35":{},"38":{},"49":{},"51":{},"56":{}},"component":{}}],["meaning",{"_index":2505,"title":{},"name":{},"text":{"43":{}},"component":{}}],["meant",{"_index":343,"title":{},"name":{},"text":{"3":{},"14":{}},"component":{}}],["measur",{"_index":751,"title":{},"name":{},"text":{"5":{},"23":{},"42":{},"46":{}},"component":{}}],["mechan",{"_index":192,"title":{"36-1":{}},"name":{"42":{},"44":{}},"text":{"1":{},"3":{},"11":{},"12":{},"16":{},"23":{},"25":{},"27":{},"35":{},"38":{},"42":{},"44":{},"59":{}},"component":{}}],["medium",{"_index":1656,"title":{},"name":{},"text":{"16":{},"21":{}},"component":{}}],["meet",{"_index":580,"title":{},"name":{},"text":{"3":{}},"component":{}}],["member",{"_index":466,"title":{},"name":{},"text":{"3":{},"16":{},"30":{},"51":{},"55":{},"57":{},"58":{}},"component":{}}],["memori",{"_index":254,"title":{},"name":{},"text":{"1":{},"16":{},"31":{}},"component":{}}],["mempool",{"_index":1629,"title":{},"name":{},"text":{"16":{},"36":{},"38":{},"47":{}},"component":{}}],["memstorag",{"_index":1249,"title":{},"name":{},"text":{"13":{}},"component":{}}],["mention",{"_index":827,"title":{},"name":{},"text":{"6":{}},"component":{}}],["merkl",{"_index":1284,"title":{"46-5":{}},"name":{},"text":{"13":{},"14":{},"43":{},"46":{}},"component":{}}],["messag",{"_index":259,"title":{"44":{},"42-16":{},"44-1":{},"44-3":{},"44-4":{},"44-5":{},"59-7":{}},"name":{"44":{}},"text":{"1":{},"5":{},"6":{},"12":{},"13":{},"14":{},"16":{},"21":{},"23":{},"26":{},"27":{},"29":{},"31":{},"42":{},"44":{},"47":{},"59":{}},"component":{}}],["message_hash",{"_index":1143,"title":{},"name":{},"text":{"13":{}},"component":{}}],["message_receiv",{"_index":3044,"title":{},"name":{},"text":{"58":{}},"component":{}}],["message_received.emit",{"_index":3049,"title":{},"name":{},"text":{"58":{}},"component":{}}],["messages_s",{"_index":2674,"title":{},"name":{},"text":{"47":{}},"component":{}}],["messagetyp",{"_index":3016,"title":{},"name":{},"text":{"57":{}},"component":{}}],["messagetype::a",{"_index":3017,"title":{},"name":{},"text":{"57":{}},"component":{}}],["messagetype::b",{"_index":3018,"title":{},"name":{},"text":{"57":{}},"component":{}}],["messagetype::c",{"_index":3020,"title":{},"name":{},"text":{"57":{}},"component":{}}],["met",{"_index":1918,"title":{},"name":{},"text":{"23":{}},"component":{}}],["meta",{"_index":2556,"title":{},"name":{},"text":{"45":{}},"component":{}}],["meter",{"_index":2795,"title":{},"name":{},"text":{"49":{}},"component":{}}],["method",{"_index":48,"title":{"37-9":{}},"name":{},"text":{"1":{},"10":{},"13":{},"14":{},"16":{},"20":{},"21":{},"34":{},"47":{},"49":{},"59":{}},"component":{}}],["metric",{"_index":1079,"title":{},"name":{},"text":{"13":{},"14":{},"24":{},"42":{}},"component":{}}],["metricsport",{"_index":1185,"title":{},"name":{},"text":{"13":{}},"component":{}}],["metricsport:$metricsport",{"_index":1178,"title":{},"name":{},"text":{"13":{}},"component":{}}],["microsoft",{"_index":1895,"title":{},"name":{},"text":{"21":{}},"component":{}}],["mid",{"_index":2756,"title":{},"name":{},"text":{"49":{}},"component":{}}],["migrat",{"_index":1028,"title":{"20":{},"55":{},"13-16":{}},"name":{},"text":{"12":{},"13":{},"14":{},"16":{},"20":{},"37":{}},"component":{}}],["million",{"_index":519,"title":{},"name":{},"text":{"3":{},"16":{}},"component":{}}],["min",{"_index":1935,"title":{},"name":{},"text":{"23":{}},"component":{}}],["mind",{"_index":2432,"title":{},"name":{},"text":{"42":{}},"component":{}}],["miner",{"_index":366,"title":{},"name":{},"text":{"3":{}},"component":{}}],["minim",{"_index":227,"title":{},"name":{},"text":{"1":{},"3":{},"30":{}},"component":{}}],["minimum",{"_index":2012,"title":{},"name":{},"text":{"29":{}},"component":{}}],["minor",{"_index":1257,"title":{},"name":{},"text":{"13":{},"14":{}},"component":{}}],["mint",{"_index":453,"title":{},"name":{},"text":{"3":{},"27":{}},"component":{}}],["minut",{"_index":1920,"title":{},"name":{},"text":{"23":{}},"component":{}}],["mismatch",{"_index":1363,"title":{},"name":{},"text":{"14":{},"16":{},"21":{}},"component":{}}],["miss",{"_index":1209,"title":{},"name":{},"text":{"13":{},"14":{}},"component":{}}],["mission",{"_index":502,"title":{},"name":{},"text":{"3":{}},"component":{}}],["mitig",{"_index":2052,"title":{},"name":{},"text":{"30":{},"44":{}},"component":{}}],["mix",{"_index":2127,"title":{},"name":{},"text":{"32":{}},"component":{}}],["mkdir",{"_index":985,"title":{},"name":{},"text":{"11":{}},"component":{}}],["mock",{"_index":1864,"title":{},"name":{},"text":{"21":{}},"component":{}}],["mod",{"_index":2896,"title":{},"name":{},"text":{"51":{},"55":{}},"component":{}}],["mode",{"_index":2552,"title":{},"name":{},"text":{"45":{},"56":{},"59":{}},"component":{}}],["model",{"_index":602,"title":{},"name":{},"text":{"3":{},"14":{},"21":{}},"component":{}}],["modern",{"_index":2031,"title":{},"name":{},"text":{"30":{},"37":{}},"component":{}}],["modifi",{"_index":688,"title":{},"name":{},"text":{"5":{},"10":{},"42":{},"51":{},"54":{},"55":{},"59":{}},"component":{}}],["modul",{"_index":756,"title":{},"name":{},"text":{"5":{},"16":{}},"component":{}}],["moment",{"_index":1703,"title":{},"name":{},"text":{"16":{},"28":{},"47":{}},"component":{}}],["monday",{"_index":3010,"title":{},"name":{},"text":{"57":{}},"component":{}}],["monitor",{"_index":1268,"title":{},"name":{},"text":{"13":{},"14":{}},"component":{}}],["month",{"_index":522,"title":{},"name":{},"text":{"3":{}},"component":{}}],["more",{"_index":250,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"5":{},"7":{},"12":{},"13":{},"14":{},"16":{},"17":{},"21":{},"22":{},"27":{},"29":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"42":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"55":{},"57":{},"59":{}},"component":{}}],["mostli",{"_index":1490,"title":{},"name":{},"text":{"14":{},"21":{}},"component":{}}],["motiv",{"_index":2195,"title":{},"name":{},"text":{"37":{}},"component":{}}],["move",{"_index":1095,"title":{},"name":{},"text":{"13":{},"14":{},"16":{},"21":{},"26":{}},"component":{}}],["movement",{"_index":2081,"title":{},"name":{},"text":{"31":{}},"component":{}}],["msg_to_l1",{"_index":1337,"title":{},"name":{},"text":{"14":{}},"component":{}}],["much",{"_index":1853,"title":{},"name":{},"text":{"21":{}},"component":{}}],["multi",{"_index":1841,"title":{},"name":{},"text":{"21":{},"30":{},"31":{}},"component":{}}],["multical",{"_index":17,"title":{"1-12":{}},"name":{},"text":{"38":{}},"component":{}}],["multipl",{"_index":154,"title":{},"name":{},"text":{"1":{},"3":{},"5":{},"13":{},"14":{},"16":{},"35":{},"37":{},"38":{},"42":{},"44":{},"54":{},"56":{},"59":{}},"component":{}}],["mut",{"_index":2211,"title":{},"name":{},"text":{"37":{},"44":{}},"component":{}}],["mutabl",{"_index":2069,"title":{"31-5":{},"31-13":{},"31-21":{},"31-30":{},"31-38":{},"31-47":{},"31-56":{},"31-64":{},"31-73":{},"31-82":{},"31-90":{},"31-98":{},"31-106":{},"31-114":{},"31-122":{},"31-130":{}},"name":{},"text":{},"component":{}}],["my_struct",{"_index":3022,"title":{},"name":{},"text":{"57":{}},"component":{}}],["myenum",{"_index":2872,"title":{},"name":{},"text":{"51":{}},"component":{}}],["myenum::var1",{"_index":2881,"title":{},"name":{},"text":{"51":{}},"component":{}}],["mystruct",{"_index":2875,"title":{},"name":{},"text":{"51":{},"57":{}},"component":{}}],["n",{"_index":2308,"title":{},"name":{},"text":{"39":{},"42":{},"46":{},"48":{}},"component":{}}],["n/a",{"_index":2689,"title":{},"name":{},"text":{"48":{}},"component":{}}],["n=0",{"_index":2327,"title":{},"name":{},"text":{"39":{}},"component":{}}],["n=1",{"_index":2325,"title":{},"name":{},"text":{"39":{}},"component":{}}],["n\\ge",{"_index":2322,"title":{},"name":{},"text":{"39":{},"42":{}},"component":{}}],["n\\ge\\el",{"_index":2376,"title":{},"name":{},"text":{"42":{}},"component":{}}],["n_elm",{"_index":2773,"title":{},"name":{},"text":{"49":{}},"component":{}}],["name",{"_index":133,"title":{"51-5":{}},"name":{},"text":{"1":{},"3":{},"5":{},"6":{},"7":{},"9":{},"12":{},"13":{},"14":{},"16":{},"17":{},"18":{},"19":{},"20":{},"21":{},"24":{},"26":{},"31":{},"37":{},"43":{},"48":{},"50":{},"51":{},"53":{},"54":{},"55":{},"56":{},"57":{},"58":{}},"component":{}}],["name_",{"_index":2845,"title":{},"name":{},"text":{"51":{}},"component":{}}],["nascent",{"_index":633,"title":{},"name":{},"text":{"3":{}},"component":{}}],["nativ",{"_index":583,"title":{},"name":{},"text":{"3":{},"21":{},"35":{},"38":{},"49":{}},"component":{}}],["navig",{"_index":857,"title":{},"name":{},"text":{"7":{},"11":{},"21":{}},"component":{}}],["near",{"_index":1466,"title":{},"name":{},"text":{"14":{}},"component":{}}],["nearest",{"_index":1575,"title":{},"name":{},"text":{"16":{},"56":{},"59":{}},"component":{}}],["necessari",{"_index":820,"title":{},"name":{},"text":{"6":{},"11":{},"12":{},"13":{},"20":{}},"component":{}}],["necessarili",{"_index":663,"title":{},"name":{},"text":{"3":{},"38":{},"53":{}},"component":{}}],["necessit",{"_index":2219,"title":{},"name":{},"text":{"37":{}},"component":{}}],["need",{"_index":582,"title":{"49-1":{},"49-2":{}},"name":{},"text":{"3":{},"5":{},"7":{},"9":{},"11":{},"13":{},"14":{},"16":{},"21":{},"31":{},"38":{},"42":{},"44":{},"46":{},"48":{},"49":{},"55":{},"57":{}},"component":{}}],["neg",{"_index":2984,"title":{},"name":{},"text":{"57":{}},"component":{}}],["neq",{"_index":2641,"title":{},"name":{},"text":{"46":{}},"component":{}}],["nest",{"_index":2822,"title":{"51-4":{}},"name":{},"text":{"51":{},"54":{}},"component":{}}],["nethermind",{"_index":1070,"title":{},"name":{},"text":{"13":{},"14":{},"17":{},"18":{},"21":{}},"component":{}}],["nethermind.io",{"_index":1768,"title":{},"name":{},"text":{"18":{}},"component":{}}],["nethermind/juno:v0.6.0",{"_index":1180,"title":{},"name":{},"text":{"13":{}},"component":{}}],["nethermind/juno:v0.7.0",{"_index":1160,"title":{},"name":{},"text":{"13":{}},"component":{}}],["nethermind/juno:v0.7.3",{"_index":1128,"title":{},"name":{},"text":{"13":{}},"component":{}}],["network",{"_index":147,"title":{"5-2":{},"14-64":{}},"name":{},"text":{"1":{},"3":{},"5":{},"7":{},"8":{},"10":{},"13":{},"14":{},"16":{},"21":{},"23":{},"27":{},"32":{},"35":{},"37":{},"38":{},"44":{},"48":{}},"component":{}}],["network=goerli",{"_index":871,"title":{},"name":{},"text":{"7":{},"8":{},"10":{}},"component":{}}],["network’",{"_index":364,"title":{},"name":{},"text":{"3":{},"21":{},"23":{}},"component":{}}],["never",{"_index":1973,"title":{},"name":{},"text":{"27":{},"49":{}},"component":{}}],["new",{"_index":369,"title":{"34":{},"14-49":{},"14-54":{},"16-3":{},"34-1":{},"46-1":{}},"name":{},"text":{"3":{},"5":{},"10":{},"11":{},"12":{},"13":{},"14":{},"16":{},"20":{},"21":{},"22":{},"25":{},"30":{},"31":{},"34":{},"42":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"53":{},"59":{}},"component":{}}],["new_account",{"_index":1662,"title":{},"name":{},"text":{"16":{}},"component":{}}],["new_syntax_test_contract::new_syntax_test_contract::counter_contract::counterdecreas",{"_index":2841,"title":{},"name":{},"text":{"51":{}},"component":{}}],["new_syntax_test_contract::new_syntax_test_contract::counter_contract::counterincreas",{"_index":2840,"title":{},"name":{},"text":{"51":{}},"component":{}}],["new_syntax_test_contract::new_syntax_test_contract::counter_contract::ev",{"_index":2842,"title":{},"name":{},"text":{"51":{}},"component":{}}],["new_syntax_test_contract::new_syntax_test_contract::icountercontract",{"_index":2830,"title":{},"name":{},"text":{"51":{}},"component":{}}],["newer",{"_index":1500,"title":{},"name":{},"text":{"14":{},"46":{}},"component":{}}],["newhead",{"_index":1376,"title":{},"name":{},"text":{"14":{}},"component":{}}],["newli",{"_index":538,"title":{},"name":{},"text":{"3":{},"7":{},"25":{},"31":{},"42":{},"45":{},"48":{}},"component":{}}],["newslett",{"_index":1562,"title":{},"name":{},"text":{"16":{},"22":{},"48":{}},"component":{}}],["newton",{"_index":1468,"title":{},"name":{},"text":{"14":{}},"component":{}}],["next",{"_index":863,"title":{},"name":{},"text":{"7":{},"11":{},"16":{},"36":{},"45":{},"49":{},"51":{},"53":{},"59":{}},"component":{}}],["nft",{"_index":1946,"title":{},"name":{},"text":{"24":{},"35":{}},"component":{}}],["nftscan",{"_index":1945,"title":{},"name":{},"text":{"24":{}},"component":{}}],["ngo",{"_index":511,"title":{},"name":{},"text":{"3":{}},"component":{}}],["nice",{"_index":1474,"title":{},"name":{},"text":{"14":{}},"component":{}}],["nil",{"_index":1152,"title":{},"name":{},"text":{"13":{}},"component":{}}],["no_debug_info",{"_index":811,"title":{"6-17":{}},"name":{},"text":{"6":{}},"component":{}}],["no_opt_unused_funct",{"_index":814,"title":{"6-20":{}},"name":{},"text":{"6":{}},"component":{}}],["no_wallet",{"_index":789,"title":{},"name":{},"text":{"5":{},"16":{}},"component":{}}],["node",{"_index":16,"title":{"17":{},"1-11":{},"46-6":{},"46-8":{}},"name":{},"text":{"1":{},"2":{},"7":{},"11":{},"12":{},"13":{},"14":{},"17":{},"21":{},"32":{},"45":{},"46":{}},"component":{}}],["non",{"_index":1250,"title":{},"name":{},"text":{"13":{},"14":{},"25":{},"33":{},"42":{},"46":{},"49":{},"57":{}},"component":{}}],["nonc",{"_index":717,"title":{},"name":{},"text":{"5":{},"13":{},"14":{},"16":{},"31":{},"33":{},"34":{},"35":{},"38":{},"42":{},"44":{},"45":{},"46":{},"47":{},"48":{},"53":{},"56":{}},"component":{}}],["nonce_data_availability_mod",{"_index":2693,"title":{},"name":{},"text":{"48":{},"56":{}},"component":{}}],["nonce}}_{\\text{64",{"_index":2561,"title":{},"name":{},"text":{"45":{}},"component":{}}],["none",{"_index":2093,"title":{},"name":{},"text":{"31":{},"59":{}},"component":{}}],["nonempti",{"_index":2969,"title":{},"name":{},"text":{"56":{}},"component":{}}],["nonpay",{"_index":2095,"title":{},"name":{},"text":{"31":{}},"component":{}}],["nopan",{"_index":3064,"title":{},"name":{},"text":{"59":{}},"component":{}}],["normal",{"_index":983,"title":{},"name":{},"text":{"11":{}},"component":{}}],["not_receiv",{"_index":797,"title":{},"name":{},"text":{"5":{},"27":{},"47":{}},"component":{}}],["notabl",{"_index":1858,"title":{},"name":{},"text":{"21":{}},"component":{}}],["notat",{"_index":2782,"title":{},"name":{},"text":{"49":{}},"component":{}}],["note",{"_index":790,"title":{"13":{},"14":{},"16":{},"13-16":{}},"name":{},"text":{"5":{},"13":{},"14":{},"15":{},"16":{},"44":{},"49":{},"54":{},"58":{}},"component":{}}],["noth",{"_index":652,"title":{},"name":{},"text":{"3":{},"49":{}},"component":{}}],["notic",{"_index":1330,"title":{},"name":{},"text":{"14":{},"42":{},"46":{}},"component":{}}],["notif",{"_index":1372,"title":{},"name":{},"text":{"14":{}},"component":{}}],["notion",{"_index":2755,"title":{},"name":{},"text":{"49":{}},"component":{}}],["nov",{"_index":1539,"title":{"16-13":{},"16-22":{}},"name":{},"text":{},"component":{}}],["novelti",{"_index":1651,"title":{},"name":{},"text":{"16":{}},"component":{}}],["novemb",{"_index":455,"title":{},"name":{},"text":{"3":{},"12":{}},"component":{}}],["now",{"_index":861,"title":{},"name":{},"text":{"7":{},"8":{},"9":{},"10":{},"11":{},"13":{},"14":{},"16":{},"21":{},"27":{},"33":{},"35":{},"38":{},"44":{},"45":{},"47":{},"51":{},"57":{}},"component":{}}],["nownod",{"_index":1746,"title":{},"name":{},"text":{"17":{}},"component":{}}],["num",{"_index":2576,"title":{},"name":{},"text":{"45":{}},"component":{}}],["num_of_storage_upd",{"_index":2575,"title":{},"name":{},"text":{"45":{}},"component":{}}],["numashex",{"_index":1231,"title":{},"name":{},"text":{"13":{}},"component":{}}],["number",{"_index":79,"title":{},"name":{},"text":{"1":{},"5":{},"6":{},"13":{},"14":{},"16":{},"19":{},"23":{},"38":{},"39":{},"40":{},"42":{},"43":{},"45":{},"46":{},"47":{},"48":{},"53":{},"56":{},"57":{},"59":{}},"component":{}}],["object",{"_index":2126,"title":{},"name":{},"text":{"32":{},"43":{},"48":{},"50":{},"53":{}},"component":{}}],["oblig",{"_index":578,"title":{},"name":{},"text":{"3":{}},"component":{}}],["observ",{"_index":2553,"title":{},"name":{},"text":{"45":{}},"component":{}}],["obtain",{"_index":746,"title":{},"name":{},"text":{"5":{},"11":{},"46":{}},"component":{}}],["obviou",{"_index":2757,"title":{},"name":{},"text":{"49":{}},"component":{}}],["occasion",{"_index":1453,"title":{},"name":{},"text":{"14":{}},"component":{}}],["occupi",{"_index":2421,"title":{},"name":{},"text":{"42":{},"45":{}},"component":{}}],["occur",{"_index":1225,"title":{},"name":{},"text":{"13":{},"47":{}},"component":{}}],["oct",{"_index":1551,"title":{"16-23":{}},"name":{},"text":{},"component":{}}],["offer",{"_index":420,"title":{},"name":{},"text":{"3":{},"11":{},"35":{},"37":{},"38":{},"59":{}},"component":{}}],["offici",{"_index":1071,"title":{},"name":{},"text":{"13":{},"14":{},"21":{}},"component":{}}],["offset",{"_index":1430,"title":{},"name":{},"text":{"14":{}},"component":{}}],["oklink",{"_index":1943,"title":{},"name":{},"text":{"24":{}},"component":{}}],["old",{"_index":1471,"title":{},"name":{},"text":{"14":{},"16":{},"20":{},"31":{},"56":{},"59":{}},"component":{}}],["older",{"_index":1395,"title":{},"name":{},"text":{"14":{},"42":{}},"component":{}}],["omerfirmak",{"_index":1085,"title":{},"name":{},"text":{"13":{}},"component":{}}],["omit",{"_index":727,"title":{},"name":{},"text":{"5":{},"13":{},"49":{}},"component":{}}],["on",{"_index":69,"title":{},"name":{},"text":{"1":{},"3":{},"5":{},"6":{},"11":{},"14":{},"16":{},"20":{},"31":{},"34":{},"38":{},"42":{},"45":{},"46":{},"47":{},"49":{},"50":{},"51":{},"57":{},"58":{},"59":{}},"component":{}}],["on_rec",{"_index":1963,"title":{"31-170":{}},"name":{},"text":{"26":{},"31":{}},"component":{}}],["onboard",{"_index":492,"title":{},"name":{},"text":{"3":{},"21":{}},"component":{}}],["onc",{"_index":157,"title":{},"name":{},"text":{"1":{},"11":{},"14":{},"16":{},"31":{},"58":{},"59":{}},"component":{}}],["onchain",{"_index":454,"title":{"42-14":{},"42-15":{},"42-16":{},"42-17":{},"45-4":{}},"name":{},"text":{"3":{},"11":{},"16":{},"35":{},"42":{},"45":{},"59":{}},"component":{}}],["ongo",{"_index":1080,"title":{},"name":{},"text":{"13":{},"16":{}},"component":{}}],["onlin",{"_index":1879,"title":{},"name":{},"text":{"21":{}},"component":{}}],["onward",{"_index":2349,"title":{},"name":{},"text":{"42":{},"51":{},"59":{}},"component":{}}],["op",{"_index":1717,"title":{},"name":{},"text":{"16":{}},"component":{}}],["opcod",{"_index":2164,"title":{},"name":{},"text":{"33":{},"42":{}},"component":{}}],["open",{"_index":599,"title":{},"name":{},"text":{"3":{},"9":{},"17":{},"18":{},"51":{}},"component":{}}],["openzeppelin",{"_index":758,"title":{},"name":{},"text":{"5":{},"33":{}},"component":{}}],["oper",{"_index":106,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"5":{},"9":{},"13":{},"14":{},"16":{},"23":{},"27":{},"31":{},"32":{},"35":{},"38":{},"42":{},"45":{},"46":{},"47":{},"59":{}},"component":{}}],["oppos",{"_index":2161,"title":{},"name":{},"text":{"33":{},"42":{}},"component":{}}],["optim",{"_index":87,"title":{},"name":{},"text":{"1":{},"6":{},"13":{},"14":{},"16":{},"23":{}},"component":{}}],["optimis",{"_index":1498,"title":{},"name":{},"text":{"14":{}},"component":{}}],["optimization.if",{"_index":826,"title":{},"name":{},"text":{"6":{}},"component":{}}],["option",{"_index":687,"title":{"6-6":{},"14-63":{}},"name":{"6":{}},"text":{"5":{},"12":{},"13":{},"14":{},"31":{},"42":{}},"component":{}}],["order",{"_index":65,"title":{},"name":{},"text":{"1":{},"3":{},"9":{},"14":{},"16":{},"21":{},"23":{},"24":{},"28":{},"30":{},"31":{},"35":{},"39":{},"42":{},"45":{},"46":{},"57":{}},"component":{}}],["organ",{"_index":509,"title":{},"name":{},"text":{"3":{},"13":{},"46":{},"55":{}},"component":{}}],["orient",{"_index":2920,"title":{},"name":{},"text":{"53":{}},"component":{}}],["origin",{"_index":408,"title":{"37-5":{},"37-6":{}},"name":{},"text":{"3":{},"21":{},"37":{},"53":{},"56":{},"57":{}},"component":{}}],["origin’",{"_index":2222,"title":{},"name":{},"text":{"37":{}},"component":{}}],["os",{"_index":28,"title":{"1-21":{}},"name":{},"text":{"1":{},"2":{},"16":{},"42":{},"46":{},"49":{},"50":{},"56":{},"59":{}},"component":{}}],["osec.io",{"_index":1772,"title":{},"name":{},"text":{"18":{}},"component":{}}],["other",{"_index":1187,"title":{},"name":{},"text":{"13":{}},"component":{}}],["other_contract",{"_index":2903,"title":{},"name":{},"text":{"51":{},"55":{}},"component":{}}],["other_contract_addr",{"_index":2838,"title":{},"name":{},"text":{"51":{}},"component":{}}],["otherwis",{"_index":377,"title":{},"name":{},"text":{"3":{},"5":{},"16":{},"35":{},"42":{},"43":{},"44":{},"49":{},"50":{},"59":{}},"component":{}}],["ottersec",{"_index":1771,"title":{},"name":{},"text":{"18":{}},"component":{}}],["out",{"_index":545,"title":{},"name":{},"text":{"3":{},"7":{},"13":{},"14":{},"16":{},"42":{},"51":{},"59":{}},"component":{}}],["outlin",{"_index":344,"title":{},"name":{},"text":{"3":{},"35":{}},"component":{}}],["output",{"_index":163,"title":{"6-16":{}},"name":{},"text":{"1":{},"6":{},"7":{},"8":{},"11":{},"14":{},"39":{},"46":{},"49":{},"51":{},"59":{}},"component":{}}],["outsid",{"_index":661,"title":{},"name":{},"text":{"3":{},"51":{}},"component":{}}],["over",{"_index":553,"title":{},"name":{},"text":{"3":{},"13":{},"16":{},"20":{},"35":{},"39":{},"42":{},"44":{},"48":{},"49":{},"51":{}},"component":{}}],["overal",{"_index":1083,"title":{"42-1":{},"42-2":{},"42-3":{}},"name":{},"text":{"13":{},"23":{},"42":{},"47":{}},"component":{}}],["overcom",{"_index":2748,"title":{},"name":{},"text":{"49":{}},"component":{}}],["overflow",{"_index":1326,"title":{},"name":{},"text":{"14":{}},"component":{}}],["overli",{"_index":771,"title":{},"name":{},"text":{"5":{}},"component":{}}],["overrid",{"_index":1696,"title":{},"name":{},"text":{"16":{}},"component":{}}],["oversight",{"_index":2066,"title":{},"name":{},"text":{"30":{}},"component":{}}],["overview",{"_index":280,"title":{"2":{},"27":{}},"name":{},"text":{"21":{},"22":{},"31":{},"32":{}},"component":{}}],["own",{"_index":2162,"title":{},"name":{},"text":{"33":{},"35":{}},"component":{}}],["owner",{"_index":905,"title":{},"name":{},"text":{"8":{},"10":{},"33":{},"37":{},"38":{},"51":{}},"component":{}}],["ownership",{"_index":959,"title":{},"name":{},"text":{"10":{},"37":{}},"component":{}}],["p",{"_index":986,"title":{},"name":{"40":{}},"text":{"11":{},"13":{},"39":{},"40":{},"41":{},"57":{},"58":{}},"component":{}}],["p1",{"_index":2283,"title":{},"name":{},"text":{"39":{}},"component":{}}],["p2",{"_index":2284,"title":{},"name":{},"text":{"39":{}},"component":{}}],["p2p",{"_index":1081,"title":{},"name":{},"text":{"13":{},"16":{}},"component":{}}],["p3\\right]_x",{"_index":2285,"title":{},"name":{},"text":{"39":{}},"component":{}}],["p=2^{251}+17\\cdot",{"_index":2255,"title":{},"name":{},"text":{"39":{}},"component":{}}],["p]_x",{"_index":2292,"title":{},"name":{},"text":{"39":{}},"component":{}}],["p_0",{"_index":2282,"title":{},"name":{},"text":{"39":{}},"component":{}}],["p_1",{"_index":2288,"title":{},"name":{},"text":{"39":{}},"component":{}}],["p_2",{"_index":2289,"title":{},"name":{},"text":{"39":{}},"component":{}}],["p_3",{"_index":2290,"title":{},"name":{},"text":{"39":{}},"component":{}}],["p_l",{"_index":2635,"title":{},"name":{},"text":{"46":{}},"component":{}}],["p_r",{"_index":2638,"title":{},"name":{},"text":{"46":{}},"component":{}}],["packag",{"_index":763,"title":{"21-15":{}},"name":{},"text":{"5":{},"7":{},"9":{},"16":{},"21":{}},"component":{}}],["page",{"_index":971,"title":{},"name":{},"text":{"11":{},"12":{},"13":{},"42":{}},"component":{}}],["paid",{"_index":409,"title":{},"name":{},"text":{"3":{},"34":{},"42":{},"44":{},"47":{}},"component":{}}],["pair",{"_index":2017,"title":{},"name":{},"text":{"30":{},"35":{},"50":{},"58":{}},"component":{}}],["panic",{"_index":1155,"title":{},"name":{},"text":{"13":{},"14":{}},"component":{}}],["papyru",{"_index":1003,"title":{},"name":{},"text":{"11":{},"12":{},"17":{}},"component":{}}],["paradigm",{"_index":1706,"title":{},"name":{},"text":{"16":{}},"component":{}}],["parallel",{"_index":1207,"title":{},"name":{},"text":{"13":{},"16":{},"35":{}},"component":{}}],["paramet",{"_index":760,"title":{"31-6":{},"31-14":{},"31-22":{},"31-31":{},"31-39":{},"31-48":{},"31-57":{},"31-65":{},"31-74":{},"31-83":{},"31-91":{},"31-99":{},"31-107":{},"31-115":{},"31-123":{},"31-129":{},"31-137":{},"31-142":{},"31-147":{},"31-152":{},"31-157":{},"31-162":{},"31-167":{},"31-172":{}},"name":{},"text":{"5":{},"19":{},"30":{},"31":{},"37":{},"39":{},"42":{},"44":{},"45":{},"55":{},"59":{}},"component":{}}],["parent",{"_index":1346,"title":{},"name":{},"text":{"14":{},"43":{},"46":{}},"component":{}}],["parent_block_hash",{"_index":2491,"title":{},"name":{},"text":{"43":{}},"component":{}}],["pariti",{"_index":1863,"title":{},"name":{},"text":{"21":{}},"component":{}}],["part",{"_index":263,"title":{},"name":{},"text":{"1":{},"3":{},"5":{},"11":{},"14":{},"16":{},"20":{},"27":{},"39":{},"42":{},"44":{},"45":{},"46":{},"48":{},"49":{},"50":{},"51":{},"54":{},"57":{},"58":{},"59":{}},"component":{}}],["parti",{"_index":567,"title":{},"name":{},"text":{"3":{},"11":{},"33":{},"45":{},"46":{},"50":{}},"component":{}}],["partial",{"_index":491,"title":{},"name":{},"text":{"3":{},"14":{},"16":{},"47":{}},"component":{}}],["particip",{"_index":382,"title":{},"name":{},"text":{"3":{}},"component":{}}],["particular",{"_index":204,"title":{},"name":{},"text":{"1":{},"3":{},"16":{},"33":{},"45":{},"59":{}},"component":{}}],["partli",{"_index":570,"title":{},"name":{},"text":{"3":{}},"component":{}}],["partner",{"_index":476,"title":{},"name":{},"text":{"3":{}},"component":{}}],["pass",{"_index":759,"title":{},"name":{},"text":{"5":{},"10":{},"14":{},"28":{},"31":{},"37":{},"47":{},"48":{},"52":{}},"component":{}}],["passiv",{"_index":2171,"title":{},"name":{},"text":{"35":{}},"component":{}}],["password",{"_index":908,"title":{},"name":{},"text":{"8":{},"11":{}},"component":{}}],["past",{"_index":990,"title":{},"name":{},"text":{"11":{},"38":{}},"component":{}}],["patch",{"_index":1251,"title":{},"name":{},"text":{"13":{},"21":{}},"component":{}}],["path",{"_index":721,"title":{},"name":{},"text":{"5":{},"6":{},"13":{},"14":{},"46":{},"49":{}},"component":{}}],["pathfind",{"_index":1000,"title":{"14":{}},"name":{},"text":{"11":{},"12":{},"14":{},"17":{},"45":{}},"component":{}}],["pathfinder_getproof",{"_index":1433,"title":{},"name":{},"text":{"14":{}},"component":{}}],["pathfinder_gettransactionstatu",{"_index":1422,"title":{},"name":{},"text":{"14":{}},"component":{}}],["pathfinder_subscribe_newhead",{"_index":1377,"title":{},"name":{},"text":{"14":{}},"component":{}}],["pathfinder_vers",{"_index":1323,"title":{},"name":{"14":{}},"text":{"14":{}},"component":{}}],["pathfinder’",{"_index":1741,"title":{},"name":{},"text":{"17":{},"45":{}},"component":{}}],["patricia",{"_index":1285,"title":{"46-5":{}},"name":{},"text":{"13":{},"16":{},"43":{},"46":{}},"component":{}}],["pay",{"_index":403,"title":{},"name":{},"text":{"3":{},"11":{},"16":{},"21":{},"35":{},"42":{},"44":{},"47":{},"48":{},"56":{}},"component":{}}],["payabl",{"_index":2090,"title":{},"name":{},"text":{"31":{},"44":{}},"component":{}}],["payload",{"_index":2098,"title":{"42-18":{}},"name":{},"text":{"31":{},"42":{},"44":{},"47":{},"59":{}},"component":{}}],["payload.append",{"_index":2510,"title":{},"name":{},"text":{"44":{},"59":{}},"component":{}}],["payload.length",{"_index":2525,"title":{},"name":{},"text":{"44":{}},"component":{}}],["payload.span",{"_index":2515,"title":{},"name":{},"text":{"44":{}},"component":{}}],["payload[1",{"_index":2511,"title":{},"name":{},"text":{"44":{}},"component":{}}],["payload[2",{"_index":2512,"title":{},"name":{},"text":{"44":{}},"component":{}}],["paymast",{"_index":2179,"title":{},"name":{},"text":{"35":{},"56":{}},"component":{}}],["paymaster_data",{"_index":2694,"title":{},"name":{},"text":{"48":{},"56":{}},"component":{}}],["payment",{"_index":1601,"title":{"36-1":{}},"name":{},"text":{"16":{},"38":{}},"component":{}}],["peckshield",{"_index":1773,"title":{},"name":{},"text":{"18":{}},"component":{}}],["peckshield.com",{"_index":1774,"title":{},"name":{},"text":{"18":{}},"component":{}}],["pedersen",{"_index":102,"title":{"39-3":{},"39-7":{}},"name":{},"text":{"1":{},"13":{},"39":{},"42":{},"43":{},"44":{},"46":{},"48":{},"52":{},"54":{},"58":{}},"component":{}}],["peer",{"_index":1190,"title":{},"name":{},"text":{"13":{}},"component":{}}],["pend",{"_index":736,"title":{},"name":{},"text":{"5":{},"14":{},"16":{},"23":{},"31":{},"57":{}},"component":{}}],["pending_word",{"_index":3024,"title":{},"name":{},"text":{"57":{}},"component":{}}],["pending_word_len",{"_index":3025,"title":{},"name":{},"text":{"57":{}},"component":{}}],["pendingtransact",{"_index":1138,"title":{},"name":{},"text":{"13":{}},"component":{}}],["per",{"_index":1011,"title":{},"name":{},"text":{"11":{},"13":{},"14":{},"16":{},"23":{},"30":{},"42":{}},"component":{}}],["percentag",{"_index":515,"title":{},"name":{},"text":{"3":{}},"component":{}}],["perform",{"_index":95,"title":{"26":{}},"name":{},"text":{"1":{},"2":{},"3":{},"5":{},"13":{},"14":{},"16":{},"21":{},"23":{},"28":{},"34":{},"38":{},"47":{}},"component":{}}],["period",{"_index":547,"title":{},"name":{},"text":{"3":{},"27":{},"31":{}},"component":{}}],["perman",{"_index":629,"title":{},"name":{},"text":{"3":{}},"component":{}}],["permissionless",{"_index":282,"title":{},"name":{},"text":{"2":{},"25":{},"27":{}},"component":{}}],["permissionlessli",{"_index":1949,"title":{},"name":{},"text":{"25":{},"30":{}},"component":{}}],["permit",{"_index":551,"title":{},"name":{},"text":{"3":{}},"component":{}}],["permut",{"_index":2298,"title":{},"name":{},"text":{"39":{}},"component":{}}],["persist",{"_index":2924,"title":{},"name":{},"text":{"54":{}},"component":{}}],["person",{"_index":379,"title":{},"name":{},"text":{"3":{}},"component":{}}],["pertin",{"_index":1524,"title":{},"name":{},"text":{"14":{}},"component":{}}],["pessimist",{"_index":2470,"title":{},"name":{},"text":{"42":{}},"component":{}}],["phase",{"_index":1642,"title":{},"name":{},"text":{"16":{}},"component":{}}],["phone",{"_index":2187,"title":{},"name":{},"text":{"35":{}},"component":{}}],["phone’",{"_index":2185,"title":{},"name":{},"text":{"35":{}},"component":{}}],["phrase",{"_index":2174,"title":{},"name":{},"text":{"35":{}},"component":{}}],["pipelin",{"_index":1156,"title":{},"name":{},"text":{"13":{},"16":{}},"component":{}}],["place",{"_index":695,"title":{},"name":{},"text":{"5":{},"19":{},"23":{},"27":{},"38":{},"51":{}},"component":{}}],["placehold",{"_index":2504,"title":{},"name":{},"text":{"43":{},"48":{}},"component":{}}],["plain",{"_index":980,"title":{},"name":{},"text":{"11":{}},"component":{}}],["plan",{"_index":458,"title":{},"name":{},"text":{"3":{},"20":{},"49":{}},"component":{}}],["platform",{"_index":2133,"title":{},"name":{},"text":{"32":{}},"component":{}}],["playground",{"_index":2912,"title":{},"name":{},"text":{"51":{}},"component":{}}],["pleas",{"_index":901,"title":{},"name":{},"text":{"8":{},"14":{},"16":{},"25":{}},"component":{}}],["pledg",{"_index":550,"title":{},"name":{},"text":{"3":{}},"component":{}}],["plu",{"_index":2921,"title":{},"name":{},"text":{"53":{}},"component":{}}],["pluggabl",{"_index":2889,"title":{},"name":{},"text":{"51":{}},"component":{}}],["plugin",{"_index":1817,"title":{"21-25":{},"21-30":{}},"name":{},"text":{"21":{}},"component":{}}],["plugin’",{"_index":1890,"title":{},"name":{},"text":{"21":{}},"component":{}}],["pmod{p",{"_index":2337,"title":{},"name":{},"text":{"41":{}},"component":{}}],["pod",{"_index":1111,"title":{},"name":{},"text":{"13":{}},"component":{}}],["point",{"_index":132,"title":{},"name":{},"text":{"1":{},"3":{},"13":{},"16":{},"38":{},"39":{},"41":{},"44":{},"46":{},"47":{},"49":{},"50":{},"51":{},"53":{},"54":{},"58":{}},"component":{}}],["pointer",{"_index":1153,"title":{},"name":{},"text":{"13":{}},"component":{}}],["poll",{"_index":1335,"title":{},"name":{},"text":{"14":{}},"component":{}}],["polylogarithm",{"_index":224,"title":{},"name":{},"text":{"1":{}},"component":{}}],["polynomi",{"_index":2746,"title":{},"name":{},"text":{"49":{}},"component":{}}],["pool",{"_index":1358,"title":{},"name":{},"text":{"14":{},"30":{}},"component":{}}],["popular",{"_index":1883,"title":{},"name":{},"text":{"21":{}},"component":{}}],["port",{"_index":1183,"title":{},"name":{},"text":{"13":{}},"component":{}}],["portion",{"_index":414,"title":{},"name":{},"text":{"3":{}},"component":{}}],["poseidon",{"_index":1263,"title":{"39-5":{},"39-8":{}},"name":{},"text":{"13":{},"39":{},"42":{},"46":{},"48":{},"50":{}},"component":{}}],["poseidon.cairo",{"_index":2331,"title":{},"name":{},"text":{"39":{}},"component":{}}],["poseidon_1",{"_index":2299,"title":{},"name":{},"text":{"39":{}},"component":{}}],["poseidon_2",{"_index":2302,"title":{},"name":{},"text":{"39":{}},"component":{}}],["poseidon_hash.pi",{"_index":2329,"title":{},"name":{},"text":{"39":{}},"component":{}}],["posit",{"_index":803,"title":{"6-4":{}},"name":{},"text":{},"component":{}}],["possess",{"_index":2170,"title":{},"name":{},"text":{"35":{},"46":{}},"component":{}}],["possibl",{"_index":692,"title":{},"name":{},"text":{"5":{},"7":{},"12":{},"14":{},"21":{},"38":{},"42":{},"47":{},"48":{},"49":{},"51":{},"58":{},"59":{}},"component":{}}],["post",{"_index":183,"title":{},"name":{},"text":{"1":{},"3":{},"12":{},"16":{},"42":{},"55":{},"59":{}},"component":{}}],["potenti",{"_index":620,"title":{},"name":{},"text":{"3":{},"13":{},"23":{},"30":{},"44":{},"51":{}},"component":{}}],["pow_2_128",{"_index":2997,"title":{},"name":{},"text":{"57":{}},"component":{}}],["power",{"_index":488,"title":{},"name":{},"text":{"3":{},"17":{}},"component":{}}],["pprof",{"_index":1266,"title":{},"name":{},"text":{"13":{}},"component":{}}],["pr",{"_index":1084,"title":{},"name":{},"text":{"13":{}},"component":{}}],["practic",{"_index":514,"title":{},"name":{},"text":{"3":{},"21":{},"32":{},"35":{},"38":{}},"component":{}}],["pre",{"_index":1520,"title":{"45-5":{},"45-6":{},"45-7":{}},"name":{},"text":{"14":{},"16":{},"21":{},"47":{},"48":{}},"component":{}}],["precis",{"_index":2544,"title":{},"name":{},"text":{"44":{}},"component":{}}],["precomput",{"_index":1260,"title":{},"name":{},"text":{"13":{}},"component":{}}],["predefin",{"_index":86,"title":{},"name":{},"text":{"1":{},"42":{}},"component":{}}],["predetermin",{"_index":2434,"title":{},"name":{},"text":{"42":{}},"component":{}}],["predica",{"_index":2761,"title":{},"name":{},"text":{"49":{}},"component":{}}],["predict",{"_index":1922,"title":{},"name":{},"text":{"23":{},"37":{}},"component":{}}],["preexist",{"_index":2168,"title":{},"name":{},"text":{"34":{}},"component":{}}],["prefer",{"_index":1844,"title":{},"name":{},"text":{"21":{}},"component":{}}],["prefix",{"_index":1448,"title":{},"name":{},"text":{"14":{},"16":{},"44":{},"46":{},"48":{},"52":{}},"component":{}}],["preliminari",{"_index":2660,"title":{},"name":{},"text":{"47":{}},"component":{}}],["preprocess",{"_index":810,"title":{"6-15":{}},"name":{},"text":{"6":{}},"component":{}}],["preprocessor",{"_index":836,"title":{},"name":{},"text":{"6":{}},"component":{}}],["prerequisit",{"_index":844,"title":{"7-1":{},"8-1":{},"10-1":{},"11-1":{}},"name":{},"text":{"55":{}},"component":{}}],["present",{"_index":2799,"title":{},"name":{},"text":{"49":{}},"component":{}}],["preserv",{"_index":384,"title":{},"name":{},"text":{"3":{}},"component":{}}],["press",{"_index":1019,"title":{},"name":{},"text":{"11":{}},"component":{}}],["pretti",{"_index":1168,"title":{},"name":{},"text":{"13":{}},"component":{}}],["prevent",{"_index":979,"title":{},"name":{},"text":{"11":{},"14":{},"23":{},"37":{},"42":{},"44":{},"46":{},"52":{},"56":{}},"component":{}}],["previou",{"_index":881,"title":{},"name":{},"text":{"7":{},"13":{},"14":{},"16":{},"25":{},"27":{},"30":{},"31":{},"38":{},"44":{},"45":{},"46":{},"51":{},"54":{}},"component":{}}],["previous",{"_index":5,"title":{"1-4":{}},"name":{},"text":{"7":{},"8":{},"12":{},"14":{},"27":{},"38":{},"49":{},"51":{},"53":{},"59":{}},"component":{}}],["price",{"_index":1390,"title":{"16-4":{},"42-8":{}},"name":{},"text":{"14":{},"16":{},"38":{},"42":{},"48":{},"56":{}},"component":{}}],["primari",{"_index":350,"title":{},"name":{},"text":{"3":{},"9":{},"10":{},"13":{},"14":{},"31":{}},"component":{}}],["primarili",{"_index":1435,"title":{},"name":{},"text":{"14":{},"21":{}},"component":{}}],["prime",{"_index":808,"title":{"6-13":{}},"name":{},"text":{"6":{},"40":{}},"component":{}}],["principl",{"_index":2143,"title":{},"name":{},"text":{"32":{}},"component":{}}],["print",{"_index":931,"title":{},"name":{},"text":{"9":{},"13":{},"21":{}},"component":{}}],["prior",{"_index":1855,"title":{},"name":{},"text":{"21":{},"30":{},"42":{},"47":{}},"component":{}}],["privaci",{"_index":993,"title":{},"name":{},"text":{"11":{},"21":{}},"component":{}}],["privat",{"_index":218,"title":{"11-5":{}},"name":{},"text":{"1":{},"3":{},"5":{},"11":{},"35":{}},"component":{}}],["problem",{"_index":2760,"title":{},"name":{},"text":{"49":{}},"component":{}}],["proce",{"_index":2190,"title":{},"name":{},"text":{"36":{},"46":{},"47":{},"51":{}},"component":{}}],["procedur",{"_index":54,"title":{},"name":{},"text":{"1":{},"9":{},"20":{},"28":{},"37":{},"55":{}},"component":{}}],["proceed",{"_index":1012,"title":{},"name":{},"text":{"11":{}},"component":{}}],["process",{"_index":174,"title":{},"name":{},"text":{"1":{},"3":{},"13":{},"14":{},"21":{},"23":{},"28":{},"35":{},"37":{},"38":{},"42":{},"48":{}},"component":{}}],["produc",{"_index":173,"title":{},"name":{},"text":{"1":{},"38":{},"43":{},"50":{}},"component":{}}],["product",{"_index":1921,"title":{},"name":{},"text":{"23":{}},"component":{}}],["profession",{"_index":651,"title":{},"name":{},"text":{"3":{}},"component":{}}],["profil",{"_index":1267,"title":{},"name":{},"text":{"13":{}},"component":{}}],["program",{"_index":83,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"6":{},"23":{},"32":{},"35":{},"42":{},"49":{},"50":{},"53":{},"57":{},"59":{}},"component":{}}],["programm",{"_index":46,"title":{},"name":{},"text":{"1":{},"35":{}},"component":{}}],["program’",{"_index":829,"title":{},"name":{},"text":{"6":{}},"component":{}}],["progress",{"_index":590,"title":{},"name":{},"text":{"3":{}},"component":{}}],["project",{"_index":1756,"title":{},"name":{},"text":{"18":{},"21":{}},"component":{}}],["prometheu",{"_index":1103,"title":{},"name":{},"text":{"13":{}},"component":{}}],["promis",{"_index":655,"title":{},"name":{},"text":{"3":{}},"component":{}}],["prompt",{"_index":989,"title":{},"name":{},"text":{"11":{}},"component":{}}],["pronounc",{"_index":1828,"title":{},"name":{},"text":{"21":{}},"component":{}}],["proof",{"_index":165,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"14":{},"16":{},"42":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"54":{}},"component":{}}],["proof’",{"_index":3080,"title":{},"name":{},"text":{"59":{}},"component":{}}],["properli",{"_index":576,"title":{},"name":{},"text":{"3":{},"7":{},"8":{},"10":{},"14":{},"57":{}},"component":{}}],["properti",{"_index":201,"title":{},"name":{},"text":{"1":{},"38":{},"42":{},"49":{}},"component":{}}],["propos",{"_index":407,"title":{},"name":{},"text":{"3":{},"16":{},"33":{},"35":{},"37":{}},"component":{}}],["protect",{"_index":2145,"title":{"33-1":{}},"name":{},"text":{"33":{},"35":{},"38":{},"44":{}},"component":{}}],["proto",{"_index":885,"title":{},"name":{},"text":{"7":{},"9":{}},"component":{}}],["protocol",{"_index":42,"title":{},"name":{},"text":{"1":{},"3":{},"16":{},"17":{},"33":{},"35":{},"38":{},"41":{},"43":{},"44":{},"48":{}},"component":{}}],["protocol_vers",{"_index":2498,"title":{},"name":{},"text":{"43":{}},"component":{}}],["provabl",{"_index":203,"title":{},"name":{},"text":{"1":{},"3":{},"49":{}},"component":{}}],["prove",{"_index":126,"title":{"27-5":{},"27-8":{}},"name":{},"text":{"1":{},"3":{},"27":{},"39":{},"42":{},"44":{},"46":{},"49":{}},"component":{}}],["proven",{"_index":253,"title":{},"name":{},"text":{"1":{},"49":{}},"component":{}}],["prover",{"_index":18,"title":{"1-13":{}},"name":{},"text":{"1":{},"16":{},"27":{},"36":{},"42":{},"46":{},"47":{},"49":{}},"component":{}}],["provid",{"_index":176,"title":{"18":{},"7-5":{}},"name":{},"text":{"1":{},"2":{},"3":{},"5":{},"7":{},"11":{},"13":{},"14":{},"16":{},"17":{},"18":{},"21":{},"24":{},"27":{},"30":{},"31":{},"33":{},"45":{},"46":{},"52":{},"59":{}},"component":{}}],["provis",{"_index":424,"title":{},"name":{},"text":{"3":{}},"component":{}}],["proxi",{"_index":1321,"title":{"14-65":{}},"name":{},"text":{"14":{}},"component":{}}],["pscott",{"_index":1477,"title":{},"name":{},"text":{"14":{}},"component":{}}],["pseudo",{"_index":2729,"title":{},"name":{},"text":{"48":{}},"component":{}}],["public",{"_index":219,"title":{},"name":{},"text":{"1":{},"3":{},"11":{},"17":{},"35":{},"48":{},"59":{}},"component":{}}],["publish",{"_index":368,"title":{},"name":{},"text":{"3":{},"14":{},"38":{},"42":{}},"component":{}}],["pull",{"_index":1127,"title":{},"name":{},"text":{"13":{},"59":{}},"component":{}}],["pure",{"_index":2107,"title":{},"name":{},"text":{"31":{}},"component":{}}],["purpos",{"_index":270,"title":{"3-2":{}},"name":{},"text":{"1":{},"3":{},"5":{},"7":{},"11":{},"14":{},"21":{},"33":{},"38":{},"46":{}},"component":{}}],["pursuant",{"_index":556,"title":{},"name":{},"text":{"3":{}},"component":{}}],["put",{"_index":189,"title":{},"name":{},"text":{"1":{},"16":{}},"component":{}}],["python",{"_index":1316,"title":{"14-44":{}},"name":{},"text":{"14":{},"21":{},"39":{},"45":{},"48":{}},"component":{}}],["python3.7",{"_index":1692,"title":{},"name":{},"text":{"16":{}},"component":{}}],["python3.9",{"_index":1693,"title":{},"name":{},"text":{"16":{}},"component":{}}],["q_1",{"_index":2379,"title":{},"name":{},"text":{"42":{}},"component":{}}],["q_i",{"_index":2363,"title":{},"name":{},"text":{"42":{}},"component":{}}],["q_i\\right",{"_index":2389,"title":{},"name":{},"text":{"42":{}},"component":{}}],["q_t",{"_index":2380,"title":{},"name":{},"text":{"42":{}},"component":{}}],["quad",{"_index":2357,"title":{},"name":{},"text":{"42":{}},"component":{}}],["qualiti",{"_index":1597,"title":{},"name":{},"text":{"16":{}},"component":{}}],["quantum",{"_index":228,"title":{},"name":{},"text":{"1":{}},"component":{}}],["queri",{"_index":78,"title":{},"name":{},"text":{"1":{},"5":{},"10":{},"12":{},"13":{},"14":{},"16":{},"37":{}},"component":{}}],["question",{"_index":2239,"title":{},"name":{},"text":{"38":{}},"component":{}}],["quick",{"_index":273,"title":{"2-2":{}},"name":{},"text":{"2":{},"21":{}},"component":{}}],["quicker",{"_index":1854,"title":{},"name":{},"text":{"21":{}},"component":{}}],["quickli",{"_index":1861,"title":{},"name":{},"text":{"21":{}},"component":{}}],["quit",{"_index":1516,"title":{},"name":{},"text":{"14":{},"21":{}},"component":{}}],["quorum",{"_index":2061,"title":{},"name":{},"text":{"30":{}},"component":{}}],["quota",{"_index":1982,"title":{},"name":{},"text":{"27":{}},"component":{}}],["r",{"_index":1686,"title":{},"name":{},"text":{"16":{},"30":{},"46":{}},"component":{}}],["r=h_{ped",{"_index":2644,"title":{},"name":{},"text":{"46":{}},"component":{}}],["race",{"_index":631,"title":{},"name":{},"text":{"3":{}},"component":{}}],["rais",{"_index":2474,"title":{},"name":{},"text":{"42":{}},"component":{}}],["random",{"_index":742,"title":{},"name":{},"text":{"5":{},"48":{},"52":{}},"component":{}}],["rang",{"_index":100,"title":{"39-1":{}},"name":{},"text":{"1":{},"14":{},"42":{},"46":{},"59":{}},"component":{}}],["rapidli",{"_index":1408,"title":{},"name":{},"text":{"14":{}},"component":{}}],["ratio",{"_index":1658,"title":{},"name":{},"text":{"16":{}},"component":{}}],["raw",{"_index":2865,"title":{},"name":{},"text":{"51":{}},"component":{}}],["rc0",{"_index":1374,"title":{},"name":{},"text":{"14":{},"16":{}},"component":{}}],["rc1",{"_index":1272,"title":{},"name":{},"text":{"13":{}},"component":{}}],["re",{"_index":1501,"title":{},"name":{},"text":{"14":{},"16":{},"20":{},"44":{}},"component":{}}],["reach",{"_index":421,"title":{},"name":{},"text":{"3":{},"42":{}},"component":{}}],["read",{"_index":653,"title":{},"name":{},"text":{"3":{},"5":{},"10":{},"13":{},"14":{},"21":{},"23":{},"54":{},"59":{}},"component":{}}],["read/writ",{"_index":1934,"title":{},"name":{},"text":{"23":{}},"component":{}}],["readabl",{"_index":940,"title":{},"name":{},"text":{"9":{},"13":{}},"component":{}}],["readi",{"_index":862,"title":{},"name":{},"text":{"7":{}},"component":{}}],["readm",{"_index":1470,"title":{},"name":{},"text":{"14":{},"17":{}},"component":{}}],["real",{"_index":1894,"title":{},"name":{},"text":{"21":{}},"component":{}}],["reason",{"_index":2000,"title":{},"name":{},"text":{"28":{},"31":{},"44":{}},"component":{}}],["rebat",{"_index":490,"title":{},"name":{},"text":{"3":{}},"component":{}}],["receipt",{"_index":786,"title":{"47-4":{}},"name":{},"text":{"5":{},"13":{},"14":{},"16":{},"47":{},"58":{}},"component":{}}],["receiv",{"_index":162,"title":{},"name":{},"text":{"1":{},"3":{},"5":{},"11":{},"14":{},"21":{},"26":{},"27":{},"28":{},"31":{},"34":{},"36":{},"42":{},"44":{},"47":{},"59":{}},"component":{}}],["receiver_interface.cairo",{"_index":2124,"title":{},"name":{},"text":{"31":{}},"component":{}}],["recent",{"_index":2457,"title":{},"name":{},"text":{"42":{},"55":{}},"component":{}}],["recipi",{"_index":778,"title":{},"name":{},"text":{"5":{},"26":{},"31":{},"44":{},"51":{}},"component":{}}],["recipients’",{"_index":2123,"title":{},"name":{},"text":{"31":{}},"component":{}}],["recipient’",{"_index":1980,"title":{},"name":{},"text":{"27":{},"31":{},"59":{}},"component":{}}],["reclaim",{"_index":2007,"title":{},"name":{},"text":{"28":{},"31":{}},"component":{}}],["recogn",{"_index":2105,"title":{},"name":{},"text":{"31":{}},"component":{}}],["recognit",{"_index":2184,"title":{},"name":{},"text":{"35":{}},"component":{}}],["recommend",{"_index":635,"title":{},"name":{},"text":{"3":{},"9":{},"13":{},"14":{},"17":{},"25":{}},"component":{}}],["reconstruct",{"_index":2554,"title":{},"name":{},"text":{"45":{}},"component":{}}],["record",{"_index":1994,"title":{},"name":{},"text":{"27":{},"31":{},"42":{},"44":{}},"component":{}}],["recov",{"_index":1965,"title":{},"name":{},"text":{"26":{},"31":{}},"component":{}}],["recoveri",{"_index":2181,"title":{},"name":{},"text":{"35":{}},"component":{}}],["recurs",{"_index":1688,"title":{},"name":{},"text":{"16":{},"51":{}},"component":{}}],["reddio",{"_index":1747,"title":{},"name":{},"text":{"17":{}},"component":{}}],["redeploy",{"_index":2226,"title":{},"name":{},"text":{"37":{}},"component":{}}],["reduc",{"_index":392,"title":{},"name":{},"text":{"3":{},"13":{},"16":{},"23":{}},"component":{}}],["reduct",{"_index":1228,"title":{},"name":{},"text":{"13":{},"16":{}},"component":{}}],["ref",{"_index":2201,"title":{},"name":{},"text":{"37":{},"51":{},"55":{}},"component":{}}],["ref_block_explor",{"_index":1937,"title":{},"name":{"24":{}},"text":{},"component":{}}],["refactor",{"_index":1123,"title":{},"name":{},"text":{"13":{}},"component":{}}],["refer",{"_index":34,"title":{"5":{},"6":{},"31":{},"31-1":{},"31-134":{}},"name":{},"text":{"1":{},"5":{},"12":{},"20":{},"21":{},"25":{},"27":{},"28":{},"30":{},"31":{},"33":{},"39":{},"40":{},"42":{},"44":{},"45":{},"49":{},"57":{}},"component":{}}],["reflect",{"_index":2062,"title":{},"name":{},"text":{"30":{}},"component":{}}],["refund",{"_index":2473,"title":{},"name":{},"text":{"42":{}},"component":{}}],["regardless",{"_index":206,"title":{},"name":{},"text":{"1":{},"27":{},"49":{}},"component":{}}],["regenesi",{"_index":1803,"title":{},"name":{},"text":{"20":{}},"component":{}}],["regist",{"_index":167,"title":{},"name":{},"text":{"1":{},"31":{}},"component":{}}],["registri",{"_index":2015,"title":{"30-1":{}},"name":{},"text":{"30":{},"31":{}},"component":{}}],["regular",{"_index":1592,"title":{},"name":{},"text":{"16":{},"23":{},"33":{},"44":{},"46":{},"51":{}},"component":{}}],["reject",{"_index":798,"title":{},"name":{},"text":{"5":{},"14":{},"16":{},"35":{},"47":{}},"component":{}}],["rel",{"_index":782,"title":{},"name":{},"text":{"5":{},"12":{},"16":{},"42":{}},"component":{}}],["relat",{"_index":483,"title":{},"name":{},"text":{"3":{},"13":{},"14":{},"16":{},"42":{}},"component":{}}],["relax",{"_index":1232,"title":{},"name":{},"text":{"13":{},"51":{}},"component":{}}],["releas",{"_index":275,"title":{"13":{},"14":{},"16":{},"2-4":{},"14-70":{}},"name":{},"text":{"12":{},"13":{},"14":{},"15":{},"16":{},"48":{},"55":{}},"component":{}}],["relev",{"_index":323,"title":{"3-1":{}},"name":{},"text":{"5":{},"17":{},"27":{},"31":{},"42":{},"44":{},"51":{}},"component":{}}],["reli",{"_index":565,"title":{},"name":{},"text":{"3":{},"14":{}},"component":{}}],["reliabl",{"_index":1120,"title":{},"name":{},"text":{"13":{}},"component":{}}],["remain",{"_index":558,"title":{},"name":{},"text":{"3":{},"23":{},"38":{},"42":{},"57":{}},"component":{}}],["rememb",{"_index":2217,"title":{},"name":{},"text":{"37":{}},"component":{}}],["remix",{"_index":1818,"title":{"21-30":{}},"name":{},"text":{"21":{}},"component":{}}],["remot",{"_index":53,"title":{},"name":{},"text":{"1":{}},"component":{}}],["remov",{"_index":1024,"title":{"12":{},"12-2":{},"13-44":{},"14-42":{}},"name":{},"text":{"12":{},"13":{},"14":{},"16":{},"21":{},"22":{},"27":{},"31":{},"48":{}},"component":{}}],["renam",{"_index":1135,"title":{},"name":{},"text":{"13":{},"14":{},"16":{}},"component":{}}],["render",{"_index":2542,"title":{},"name":{},"text":{"44":{}},"component":{}}],["reorg",{"_index":1218,"title":{},"name":{},"text":{"13":{},"14":{}},"component":{}}],["reorgan",{"_index":1220,"title":{},"name":{},"text":{"13":{}},"component":{}}],["repeat",{"_index":2398,"title":{},"name":{},"text":{"42":{},"47":{}},"component":{}}],["repeatedli",{"_index":2541,"title":{},"name":{},"text":{"44":{}},"component":{}}],["replac",{"_index":1027,"title":{},"name":{},"text":{"12":{},"16":{},"21":{},"22":{},"31":{},"43":{},"45":{},"48":{},"49":{},"55":{},"59":{}},"component":{}}],["replace_class",{"_index":1652,"title":{"59-47":{}},"name":{},"text":{"16":{},"42":{},"59":{}},"component":{}}],["replace_class_syscal",{"_index":3082,"title":{},"name":{},"text":{"59":{}},"component":{}}],["replay",{"_index":2144,"title":{"33-1":{}},"name":{},"text":{"33":{},"35":{},"52":{},"56":{}},"component":{}}],["repo",{"_index":882,"title":{},"name":{},"text":{"7":{},"21":{},"45":{}},"component":{}}],["repositori",{"_index":919,"title":{},"name":{},"text":{"9":{},"13":{},"14":{},"21":{},"27":{},"39":{},"51":{},"52":{}},"component":{}}],["repres",{"_index":80,"title":{},"name":{},"text":{"1":{},"3":{},"5":{},"21":{},"30":{},"35":{},"42":{},"46":{},"48":{},"50":{},"55":{},"57":{}},"component":{}}],["represent",{"_index":198,"title":{},"name":{},"text":{"1":{},"3":{},"16":{},"19":{},"46":{},"48":{},"49":{},"50":{},"51":{},"57":{}},"component":{}}],["reproduc",{"_index":2227,"title":{},"name":{},"text":{"37":{},"46":{}},"component":{}}],["request",{"_index":779,"title":{},"name":{},"text":{"5":{},"13":{},"14":{},"21":{},"27":{},"28":{},"31":{},"49":{},"59":{}},"component":{}}],["requests.@joshklop",{"_index":1151,"title":{},"name":{},"text":{"13":{}},"component":{}}],["requir",{"_index":402,"title":{"14-44":{}},"name":{},"text":{"3":{},"7":{},"8":{},"9":{},"11":{},"12":{},"13":{},"14":{},"21":{},"25":{},"30":{},"32":{},"34":{},"35":{},"37":{},"38":{},"42":{},"49":{},"53":{},"55":{},"56":{},"59":{}},"component":{}}],["research",{"_index":479,"title":{},"name":{},"text":{"3":{}},"component":{}}],["reserv",{"_index":497,"title":{},"name":{},"text":{"3":{},"16":{},"37":{},"46":{}},"component":{}}],["resid",{"_index":1970,"title":{},"name":{},"text":{"27":{}},"component":{}}],["resili",{"_index":381,"title":{},"name":{},"text":{"3":{}},"component":{}}],["resist",{"_index":386,"title":{},"name":{},"text":{"3":{}},"component":{}}],["resolv",{"_index":832,"title":{},"name":{},"text":{"6":{},"13":{},"16":{},"30":{}},"component":{}}],["resourc",{"_index":212,"title":{"2-5":{},"16-11":{},"25-1":{},"26-1":{},"27-10":{},"28-1":{},"30-6":{},"31-69":{},"31-78":{},"34-3":{},"53-4":{},"57-10":{}},"name":{},"text":{"1":{},"3":{},"13":{},"16":{},"29":{},"33":{},"38":{},"39":{},"42":{},"47":{},"48":{},"52":{},"56":{}},"component":{}}],["resource_bound",{"_index":2695,"title":{},"name":{},"text":{"48":{},"56":{}},"component":{}}],["resourcebound",{"_index":2697,"title":{"56-4":{}},"name":{},"text":{"48":{},"56":{}},"component":{}}],["respect",{"_index":669,"title":{},"name":{},"text":{"3":{},"34":{},"46":{},"48":{},"54":{}},"component":{}}],["respons",{"_index":757,"title":{},"name":{},"text":{"5":{},"16":{},"30":{},"59":{}},"component":{}}],["rest",{"_index":2882,"title":{},"name":{},"text":{"51":{}},"component":{}}],["restart",{"_index":930,"title":{},"name":{},"text":{"9":{}},"component":{}}],["restor",{"_index":1414,"title":{},"name":{},"text":{"14":{}},"component":{}}],["restrict",{"_index":1617,"title":{"34-2":{}},"name":{},"text":{"16":{},"34":{},"38":{}},"component":{}}],["restructur",{"_index":1174,"title":{},"name":{},"text":{"13":{}},"component":{}}],["result",{"_index":68,"title":{"7-7":{},"8-5":{}},"name":{},"text":{"1":{},"3":{},"7":{},"13":{},"14":{},"16":{},"30":{},"37":{},"38":{},"42":{},"44":{},"46":{},"47":{},"49":{},"50":{},"51":{},"57":{},"59":{}},"component":{}}],["resync",{"_index":1246,"title":{},"name":{},"text":{"13":{}},"component":{}}],["retain",{"_index":541,"title":{},"name":{},"text":{"3":{},"20":{}},"component":{}}],["reth",{"_index":2044,"title":{},"name":{},"text":{"30":{}},"component":{}}],["retriev",{"_index":179,"title":{},"name":{},"text":{"1":{},"31":{},"35":{},"46":{},"48":{}},"component":{}}],["return",{"_index":711,"title":{"31-7":{},"31-15":{},"31-23":{},"31-32":{},"31-40":{},"31-49":{},"31-58":{},"31-66":{},"31-75":{},"31-84":{},"31-92":{},"31-100":{},"31-108":{},"31-116":{},"31-124":{},"31-131":{},"31-138":{},"31-143":{},"31-148":{},"31-153":{},"31-158":{},"31-163":{},"31-168":{},"31-173":{},"59-5":{},"59-12":{},"59-19":{},"59-25":{},"59-31":{},"59-38":{},"59-44":{},"59-51":{},"59-57":{},"59-64":{}},"name":{},"text":{"5":{},"10":{},"13":{},"14":{},"16":{},"26":{},"31":{},"34":{},"36":{},"37":{},"49":{},"54":{},"59":{}},"component":{}}],["revers",{"_index":2667,"title":{},"name":{},"text":{"47":{}},"component":{}}],["revert",{"_index":209,"title":{"38-5":{},"47-3":{},"49-3":{}},"name":{},"text":{"1":{},"31":{},"33":{},"38":{},"47":{},"49":{},"59":{}},"component":{}}],["revis",{"_index":1173,"title":{},"name":{},"text":{"13":{},"23":{}},"component":{}}],["reward",{"_index":370,"title":{},"name":{},"text":{"3":{}},"component":{}}],["rich",{"_index":1857,"title":{},"name":{},"text":{"21":{}},"component":{}}],["richer",{"_index":2152,"title":{},"name":{},"text":{"33":{}},"component":{}}],["right",{"_index":446,"title":{},"name":{},"text":{"3":{},"42":{},"46":{}},"component":{}}],["right\\neq",{"_index":2643,"title":{},"name":{},"text":{"46":{}},"component":{}}],["right]_0",{"_index":2301,"title":{},"name":{},"text":{"39":{}},"component":{}}],["rightarrow",{"_index":2260,"title":{},"name":{},"text":{"39":{}},"component":{}}],["rise",{"_index":2237,"title":{},"name":{},"text":{"38":{}},"component":{}}],["risk",{"_index":327,"title":{"3-4":{}},"name":{},"text":{"3":{},"30":{},"44":{}},"component":{}}],["roadmap",{"_index":1529,"title":{"15-1":{}},"name":{},"text":{"15":{},"16":{},"49":{}},"component":{}}],["rocket",{"_index":2043,"title":{},"name":{},"text":{"30":{}},"component":{}}],["role",{"_index":2165,"title":{},"name":{},"text":{"33":{}},"component":{}}],["rollup",{"_index":283,"title":{},"name":{},"text":{"2":{},"45":{},"49":{}},"component":{}}],["room",{"_index":2801,"title":{},"name":{},"text":{"49":{}},"component":{}}],["root",{"_index":1131,"title":{},"name":{},"text":{"13":{},"14":{},"16":{},"43":{},"46":{}},"component":{}}],["root/juno:/var/lib/juno",{"_index":1179,"title":{},"name":{},"text":{"13":{}},"component":{}}],["roughli",{"_index":2439,"title":{},"name":{},"text":{"42":{}},"component":{}}],["round",{"_index":1573,"title":{},"name":{},"text":{"16":{},"56":{},"59":{}},"component":{}}],["rout",{"_index":1427,"title":{},"name":{},"text":{"14":{},"22":{}},"component":{}}],["rpc",{"_index":19,"title":{"1-14":{},"7-5":{},"14-43":{},"14-71":{}},"name":{},"text":{"1":{},"7":{},"11":{},"12":{},"13":{},"14":{},"16":{},"17":{},"21":{},"47":{},"51":{}},"component":{}}],["rpc.cor",{"_index":1398,"title":{},"name":{},"text":{"14":{}},"component":{}}],["rpc.msgtol1",{"_index":1210,"title":{},"name":{},"text":{"13":{}},"component":{}}],["rpc.websocket",{"_index":1378,"title":{},"name":{},"text":{"14":{}},"component":{}}],["rpc.websocket.capac",{"_index":1380,"title":{},"name":{},"text":{"14":{}},"component":{}}],["rpc/pathfind",{"_index":1496,"title":{},"name":{},"text":{"14":{}},"component":{}}],["rpc/pathfinder/v0.1",{"_index":1514,"title":{},"name":{},"text":{"14":{}},"component":{}}],["rpc/pathfinder/v0.1/pathfinder_getproof",{"_index":1480,"title":{},"name":{},"text":{"14":{}},"component":{}}],["rpc/v0.1",{"_index":1459,"title":{},"name":{},"text":{"14":{}},"component":{}}],["rpc/v0.2",{"_index":1461,"title":{},"name":{},"text":{"14":{}},"component":{}}],["rpc/v0.2/pathfinder_getproof",{"_index":1481,"title":{},"name":{},"text":{"14":{}},"component":{}}],["rpc/v0.3",{"_index":1444,"title":{},"name":{},"text":{"14":{}},"component":{}}],["rpc/vx_i",{"_index":1738,"title":{},"name":{},"text":{"17":{}},"component":{}}],["rpc=https://starknet",{"_index":894,"title":{},"name":{},"text":{"7":{}},"component":{}}],["rs",{"_index":1813,"title":{"21-7":{}},"name":{},"text":{"21":{}},"component":{}}],["rule",{"_index":2630,"title":{},"name":{},"text":{"46":{}},"component":{}}],["run",{"_index":67,"title":{},"name":{},"text":{"1":{},"3":{},"7":{},"8":{},"9":{},"11":{},"13":{},"14":{},"16":{},"21":{},"27":{},"34":{},"36":{},"43":{},"47":{},"49":{},"51":{},"59":{}},"component":{}}],["runner",{"_index":1873,"title":{},"name":{},"text":{"21":{}},"component":{}}],["rust",{"_index":1227,"title":{},"name":{},"text":{"13":{},"14":{},"16":{},"17":{},"21":{}},"component":{}}],["s",{"_index":891,"title":{},"name":{},"text":{"7":{},"46":{}},"component":{}}],["s_1+1",{"_index":2326,"title":{},"name":{},"text":{"39":{}},"component":{}}],["s_1+a_1",{"_index":2319,"title":{},"name":{},"text":{"39":{}},"component":{}}],["s_2",{"_index":2313,"title":{},"name":{},"text":{"39":{}},"component":{}}],["s_2+1",{"_index":2324,"title":{},"name":{},"text":{"39":{}},"component":{}}],["s_2+a_2",{"_index":2320,"title":{},"name":{},"text":{"39":{}},"component":{}}],["s_3",{"_index":2314,"title":{},"name":{},"text":{"39":{}},"component":{}}],["safe",{"_index":1324,"title":{"49-4":{}},"name":{},"text":{"14":{},"16":{},"49":{}},"component":{}}],["safeguard",{"_index":2436,"title":{},"name":{},"text":{"42":{}},"component":{}}],["salt",{"_index":740,"title":{},"name":{},"text":{"5":{},"8":{},"37":{},"48":{},"52":{},"56":{},"59":{}},"component":{}}],["salt=0",{"_index":2229,"title":{},"name":{},"text":{"37":{}},"component":{}}],["same",{"_index":729,"title":{},"name":{},"text":{"5":{},"14":{},"16":{},"20":{},"42":{},"44":{},"45":{},"46":{},"47":{},"49":{},"51":{},"57":{},"59":{}},"component":{}}],["sampl",{"_index":849,"title":{},"name":{},"text":{"7":{},"14":{},"16":{}},"component":{}}],["satisfactorili",{"_index":591,"title":{},"name":{},"text":{"3":{}},"component":{}}],["satisfi",{"_index":2765,"title":{},"name":{},"text":{"49":{}},"component":{}}],["satur",{"_index":1359,"title":{},"name":{},"text":{"14":{}},"component":{}}],["save",{"_index":859,"title":{},"name":{},"text":{"7":{},"11":{},"38":{}},"component":{}}],["scalabl",{"_index":1930,"title":{},"name":{},"text":{"23":{}},"component":{}}],["scalar",{"_index":1718,"title":{},"name":{},"text":{"16":{}},"component":{}}],["scale",{"_index":292,"title":{},"name":{},"text":{"2":{}},"component":{}}],["scarb",{"_index":845,"title":{"7-2":{},"8-2":{},"9-3":{},"10-2":{},"21-15":{}},"name":{},"text":{"7":{},"8":{},"9":{},"10":{},"21":{}},"component":{}}],["scarb.toml",{"_index":851,"title":{},"name":{},"text":{"7":{}},"component":{}}],["scarb’",{"_index":951,"title":{},"name":{},"text":{"9":{}},"component":{}}],["scenario",{"_index":2533,"title":{},"name":{},"text":{"44":{}},"component":{}}],["schedul",{"_index":468,"title":{},"name":{},"text":{"3":{},"12":{}},"component":{}}],["schema",{"_index":1163,"title":{},"name":{},"text":{"13":{},"51":{}},"component":{}}],["scheme",{"_index":2172,"title":{},"name":{},"text":{"35":{},"38":{},"41":{},"46":{},"48":{}},"component":{}}],["scope",{"_index":3059,"title":{},"name":{},"text":{"59":{}},"component":{}}],["script",{"_index":1677,"title":{},"name":{},"text":{"16":{},"21":{},"45":{}},"component":{}}],["sdk",{"_index":1032,"title":{"21-6":{}},"name":{},"text":{"12":{},"21":{},"37":{},"46":{},"57":{}},"component":{}}],["seamless",{"_index":1891,"title":{},"name":{},"text":{"21":{},"27":{},"30":{},"31":{}},"component":{}}],["seamlessli",{"_index":2137,"title":{},"name":{},"text":{"32":{}},"component":{}}],["search",{"_index":2797,"title":{},"name":{},"text":{"49":{}},"component":{}}],["second",{"_index":2178,"title":{},"name":{},"text":{"35":{},"56":{},"57":{},"59":{}},"component":{}}],["secp",{"_index":1689,"title":{},"name":{},"text":{"16":{}},"component":{}}],["secp256k1",{"_index":1625,"title":{},"name":{},"text":{"16":{}},"component":{}}],["secp256k1_mul",{"_index":1610,"title":{},"name":{},"text":{"16":{}},"component":{}}],["secp256r1",{"_index":1616,"title":{},"name":{},"text":{"16":{}},"component":{}}],["secp256r1_mul",{"_index":1611,"title":{},"name":{},"text":{"16":{}},"component":{}}],["section",{"_index":991,"title":{},"name":{},"text":{"11":{},"14":{},"42":{},"45":{}},"component":{}}],["secur",{"_index":229,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"5":{},"11":{},"18":{},"23":{},"30":{},"32":{},"35":{},"59":{}},"component":{}}],["security.extropy.io",{"_index":1767,"title":{},"name":{},"text":{"18":{}},"component":{}}],["securityqq",{"_index":1472,"title":{},"name":{},"text":{"14":{}},"component":{}}],["see",{"_index":51,"title":{"31-26":{},"31-43":{},"31-52":{}},"name":{},"text":{"1":{},"2":{},"3":{},"5":{},"6":{},"7":{},"8":{},"10":{},"11":{},"12":{},"13":{},"14":{},"15":{},"16":{},"17":{},"21":{},"22":{},"24":{},"27":{},"28":{},"29":{},"30":{},"31":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{},"42":{},"44":{},"45":{},"46":{},"48":{},"50":{},"52":{},"55":{},"56":{},"57":{},"58":{},"59":{}},"component":{}}],["seed",{"_index":625,"title":{},"name":{},"text":{"3":{},"5":{},"35":{}},"component":{}}],["seem",{"_index":2788,"title":{},"name":{},"text":{"49":{}},"component":{}}],["seen",{"_index":258,"title":{},"name":{},"text":{"1":{},"14":{}},"component":{}}],["segment",{"_index":2942,"title":{},"name":{},"text":{"54":{}},"component":{}}],["select",{"_index":992,"title":{"14-64":{}},"name":{},"text":{"11":{},"14":{},"35":{},"36":{}},"component":{}}],["selector",{"_index":1672,"title":{},"name":{},"text":{"16":{},"21":{},"44":{},"50":{},"51":{},"59":{}},"component":{}}],["self",{"_index":1998,"title":{},"name":{},"text":{"28":{},"37":{},"51":{},"55":{}},"component":{}}],["self.counter.read",{"_index":2907,"title":{},"name":{},"text":{"51":{},"55":{}},"component":{}}],["self.counter.writ",{"_index":2905,"title":{},"name":{},"text":{"51":{}},"component":{}}],["self.emit",{"_index":2877,"title":{},"name":{},"text":{"51":{},"55":{}},"component":{}}],["self.other_contract.read",{"_index":2908,"title":{},"name":{},"text":{"51":{}},"component":{}}],["sell",{"_index":549,"title":{},"name":{},"text":{"3":{}},"component":{}}],["sem",{"_index":1252,"title":{},"name":{},"text":{"13":{}},"component":{}}],["semant",{"_index":135,"title":{},"name":{},"text":{"1":{},"49":{},"53":{}},"component":{}}],["send",{"_index":713,"title":{},"name":{},"text":{"5":{},"7":{},"8":{},"10":{},"11":{},"12":{},"16":{},"21":{},"23":{},"27":{},"31":{},"34":{},"35":{},"36":{},"38":{},"42":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"53":{},"56":{},"59":{}},"component":{}}],["send_message_to_l1",{"_index":2475,"title":{"59-40":{}},"name":{},"text":{"42":{},"44":{}},"component":{}}],["send_message_to_l1_syscal",{"_index":2513,"title":{},"name":{},"text":{"44":{},"59":{}},"component":{}}],["sender",{"_index":777,"title":{},"name":{},"text":{"5":{},"13":{},"31":{},"42":{},"44":{},"48":{},"51":{},"52":{},"59":{}},"component":{}}],["sender_address",{"_index":2704,"title":{},"name":{},"text":{"48":{}},"component":{}}],["sender’",{"_index":2089,"title":{},"name":{},"text":{"31":{},"34":{},"42":{}},"component":{}}],["sendmessagetol2",{"_index":2527,"title":{},"name":{},"text":{"44":{}},"component":{}}],["sent",{"_index":125,"title":{},"name":{},"text":{"1":{},"16":{},"21":{},"31":{},"33":{},"42":{},"44":{},"45":{},"46":{},"47":{},"48":{}},"component":{}}],["sep",{"_index":1540,"title":{"16-15":{}},"name":{},"text":{},"component":{}}],["separ",{"_index":831,"title":{},"name":{},"text":{"6":{},"14":{},"16":{},"31":{},"38":{},"49":{},"50":{},"53":{},"58":{},"59":{}},"component":{}}],["sepolia",{"_index":972,"title":{"22-3":{}},"name":{},"text":{"11":{},"12":{},"16":{},"19":{},"22":{},"23":{},"27":{},"37":{},"48":{}},"component":{}}],["sepolia.json",{"_index":1784,"title":{},"name":{},"text":{"19":{},"27":{}},"component":{}}],["sepolia.starknet.io",{"_index":1907,"title":{},"name":{},"text":{"22":{}},"component":{}}],["sepolia’",{"_index":1034,"title":{},"name":{},"text":{"12":{}},"component":{}}],["sept",{"_index":1553,"title":{"16-24":{}},"name":{},"text":{},"component":{}}],["sequenc",{"_index":20,"title":{"22":{},"1-15":{}},"name":{},"text":{"1":{},"3":{},"5":{},"14":{},"16":{},"22":{},"27":{},"34":{},"36":{},"38":{},"42":{},"43":{},"44":{},"47":{},"49":{},"50":{},"56":{},"59":{}},"component":{}}],["sequencer_address",{"_index":1619,"title":{},"name":{},"text":{"16":{},"34":{},"43":{},"56":{}},"component":{}}],["sequencer’",{"_index":869,"title":{},"name":{},"text":{"7":{},"12":{},"16":{},"42":{}},"component":{}}],["sequenti",{"_index":1671,"title":{},"name":{},"text":{"16":{},"33":{},"35":{},"47":{}},"component":{}}],["serd",{"_index":2876,"title":{},"name":{},"text":{"51":{},"55":{}},"component":{}}],["serial",{"_index":1493,"title":{"57":{},"57-3":{},"57-4":{},"57-5":{},"57-6":{},"57-7":{},"57-8":{},"57-9":{}},"name":{},"text":{"14":{},"50":{},"51":{},"57":{}},"component":{}}],["serialization_of_cairo_typ",{"_index":2974,"title":{},"name":{"57":{}},"text":{},"component":{}}],["seriou",{"_index":2053,"title":{},"name":{},"text":{"30":{}},"component":{}}],["serv",{"_index":353,"title":{},"name":{},"text":{"3":{},"14":{},"32":{},"33":{}},"component":{}}],["server",{"_index":1403,"title":{},"name":{},"text":{"14":{},"21":{}},"component":{}}],["servic",{"_index":187,"title":{"17":{}},"name":{"17":{}},"text":{"1":{},"2":{},"3":{},"11":{},"12":{},"13":{},"18":{},"20":{},"30":{},"31":{},"38":{},"59":{}},"component":{}}],["set",{"_index":66,"title":{"9":{},"11":{},"5-2":{},"5-3":{},"7-5":{},"9-2":{}},"name":{},"text":{"1":{},"2":{},"5":{},"7":{},"8":{},"9":{},"10":{},"11":{},"13":{},"14":{},"16":{},"20":{},"21":{},"34":{},"37":{},"38":{},"45":{},"46":{},"59":{}},"component":{}}],["set_up_an_account",{"_index":966,"title":{},"name":{"11":{}},"text":{},"component":{}}],["setup",{"_index":952,"title":{},"name":{},"text":{"9":{},"14":{}},"component":{}}],["setwithdrawlimitpct",{"_index":2057,"title":{},"name":{},"text":{"30":{}},"component":{}}],["sever",{"_index":917,"title":{},"name":{},"text":{"9":{},"13":{},"14":{},"16":{},"21":{},"45":{}},"component":{}}],["sfrxeth",{"_index":2047,"title":{},"name":{},"text":{"30":{}},"component":{}}],["sh",{"_index":890,"title":{},"name":{},"text":{"7":{},"9":{}},"component":{}}],["share",{"_index":191,"title":{},"name":{},"text":{"1":{},"30":{}},"component":{}}],["sharp",{"_index":21,"title":{"1-16":{}},"name":{},"text":{"1":{}},"component":{}}],["shift\\_point",{"_index":2287,"title":{},"name":{},"text":{"39":{}},"component":{}}],["short",{"_index":1649,"title":{},"name":{},"text":{"16":{},"38":{},"42":{},"49":{}},"component":{}}],["shorten",{"_index":2888,"title":{},"name":{},"text":{"51":{}},"component":{}}],["shorter",{"_index":933,"title":{},"name":{},"text":{"9":{},"57":{}},"component":{}}],["shortli",{"_index":2245,"title":{},"name":{},"text":{"38":{}},"component":{}}],["shouldn’t",{"_index":2571,"title":{},"name":{},"text":{"45":{}},"component":{}}],["show",{"_index":822,"title":{},"name":{},"text":{"6":{},"11":{},"30":{},"42":{},"45":{},"46":{},"51":{},"56":{},"59":{}},"component":{}}],["shown",{"_index":1978,"title":{},"name":{},"text":{"27":{},"48":{},"51":{},"57":{}},"component":{}}],["shrame",{"_index":1381,"title":{},"name":{},"text":{"14":{}},"component":{}}],["shutdown",{"_index":1280,"title":{},"name":{},"text":{"13":{}},"component":{}}],["sibl",{"_index":2647,"title":{},"name":{},"text":{"46":{}},"component":{}}],["sierra",{"_index":22,"title":{"49":{},"1-17":{},"49-2":{}},"name":{"49":{}},"text":{"1":{},"7":{},"13":{},"14":{},"16":{},"42":{},"46":{},"49":{},"50":{}},"component":{}}],["sierra_program",{"_index":1583,"title":{},"name":{},"text":{"16":{}},"component":{}}],["sierra_program_hash",{"_index":2814,"title":{},"name":{},"text":{"50":{}},"component":{}}],["sierra’",{"_index":2794,"title":{},"name":{},"text":{"49":{}},"component":{}}],["sierra→casm",{"_index":2721,"title":{},"name":{},"text":{"48":{},"49":{}},"component":{}}],["sign",{"_index":156,"title":{},"name":{},"text":{"1":{},"3":{},"5":{},"11":{},"14":{},"16":{},"21":{},"35":{},"46":{},"50":{},"56":{},"57":{}},"component":{}}],["signatur",{"_index":716,"title":{"16-6":{},"48-22":{}},"name":{},"text":{"5":{},"14":{},"16":{},"21":{},"23":{},"33":{},"35":{},"38":{},"42":{},"43":{},"47":{},"48":{},"55":{},"56":{}},"component":{}}],["signature_inform",{"_index":731,"title":{},"name":{},"text":{"5":{}},"component":{}}],["signed=fals",{"_index":2740,"title":{},"name":{},"text":{"48":{}},"component":{}}],["signer",{"_index":23,"title":{"1-18":{},"11-3":{}},"name":{},"text":{"9":{},"11":{}},"component":{}}],["signific",{"_index":401,"title":{},"name":{},"text":{"3":{},"46":{},"57":{}},"component":{}}],["significantli",{"_index":935,"title":{},"name":{},"text":{"9":{}},"component":{}}],["silent",{"_index":1452,"title":{},"name":{},"text":{"14":{}},"component":{}}],["similar",{"_index":909,"title":{},"name":{},"text":{"8":{},"14":{},"16":{},"21":{},"26":{},"31":{},"33":{},"38":{},"49":{},"57":{}},"component":{}}],["simpl",{"_index":1517,"title":{},"name":{},"text":{"14":{},"35":{},"38":{},"42":{},"49":{}},"component":{}}],["simpli",{"_index":1808,"title":{},"name":{},"text":{"20":{},"49":{},"57":{}},"component":{}}],["simplic",{"_index":2413,"title":{},"name":{},"text":{"42":{}},"component":{}}],["simplifi",{"_index":936,"title":{"36":{}},"name":{},"text":{"9":{},"34":{}},"component":{}}],["simplified_transaction_flow",{"_index":2188,"title":{},"name":{"36":{}},"text":{},"component":{}}],["simul",{"_index":1421,"title":{},"name":{},"text":{"14":{}},"component":{}}],["singl",{"_index":153,"title":{},"name":{},"text":{"1":{},"3":{},"5":{},"16":{},"23":{},"30":{},"31":{},"38":{},"42":{},"45":{},"46":{},"51":{},"54":{},"57":{},"58":{},"59":{}},"component":{}}],["singleton",{"_index":2193,"title":{},"name":{},"text":{"37":{}},"component":{}}],["site",{"_index":970,"title":{},"name":{},"text":{"11":{},"12":{},"21":{}},"component":{}}],["six",{"_index":2464,"title":{},"name":{},"text":{"42":{}},"component":{}}],["size",{"_index":226,"title":{},"name":{},"text":{"1":{},"3":{},"6":{},"16":{},"23":{},"42":{},"46":{},"54":{},"58":{}},"component":{}}],["skip",{"_index":2645,"title":{},"name":{},"text":{"46":{},"51":{}},"component":{}}],["slightli",{"_index":1009,"title":{},"name":{},"text":{"11":{}},"component":{}}],["slot",{"_index":255,"title":{},"name":{},"text":{"1":{},"38":{},"42":{},"54":{}},"component":{}}],["slow",{"_index":1368,"title":{},"name":{},"text":{"14":{}},"component":{}}],["small",{"_index":1036,"title":{},"name":{},"text":{"12":{}},"component":{}}],["smaller",{"_index":2668,"title":{},"name":{},"text":{"47":{},"57":{}},"component":{}}],["smallest",{"_index":108,"title":{},"name":{},"text":{"1":{}},"component":{}}],["smart",{"_index":44,"title":{"7":{},"8":{},"10":{},"26":{},"7-4":{},"7-6":{},"8-4":{}},"name":{},"text":{"1":{},"7":{},"8":{},"10":{},"11":{},"12":{},"16":{},"20":{},"21":{},"23":{},"26":{},"31":{},"32":{},"33":{},"35":{},"37":{},"38":{},"41":{},"48":{},"49":{},"52":{},"59":{}},"component":{}}],["smooth",{"_index":1647,"title":{},"name":{},"text":{"16":{}},"component":{}}],["sn\\_keccak",{"_index":2259,"title":{},"name":{},"text":{"39":{}},"component":{}}],["sn_goerli",{"_index":2742,"title":{},"name":{},"text":{"48":{}},"component":{}}],["sn_keccak",{"_index":2731,"title":{},"name":{},"text":{"48":{},"51":{},"54":{}},"component":{}}],["sn_main",{"_index":2741,"title":{},"name":{},"text":{"48":{}},"component":{}}],["sn_sepolia",{"_index":2743,"title":{},"name":{},"text":{"48":{}},"component":{}}],["snapshot",{"_index":1193,"title":{},"name":{},"text":{"13":{}},"component":{}}],["sncast",{"_index":1882,"title":{},"name":{},"text":{"21":{}},"component":{}}],["snip",{"_index":2155,"title":{},"name":{},"text":{"33":{},"48":{}},"component":{}}],["snippet",{"_index":2737,"title":{},"name":{},"text":{"48":{},"49":{}},"component":{}}],["social",{"_index":2180,"title":{},"name":{},"text":{"35":{}},"component":{}}],["soft",{"_index":1494,"title":{},"name":{},"text":{"14":{}},"component":{}}],["softwar",{"_index":119,"title":{},"name":{},"text":{"1":{},"3":{},"21":{}},"component":{}}],["sole",{"_index":560,"title":{},"name":{},"text":{"3":{}},"component":{}}],["solicit",{"_index":640,"title":{},"name":{},"text":{"3":{}},"component":{}}],["solut",{"_index":400,"title":{},"name":{},"text":{"3":{},"12":{},"49":{}},"component":{}}],["solv",{"_index":1661,"title":{},"name":{},"text":{"16":{},"49":{}},"component":{}}],["somehow",{"_index":2246,"title":{},"name":{},"text":{"38":{}},"component":{}}],["someon",{"_index":898,"title":{},"name":{},"text":{"7":{},"37":{}},"component":{}}],["sometim",{"_index":1437,"title":{},"name":{},"text":{"14":{}},"component":{}}],["soon",{"_index":1031,"title":{},"name":{},"text":{"12":{}},"component":{}}],["sourc",{"_index":600,"title":{},"name":{},"text":{"3":{},"6":{},"7":{},"14":{},"50":{}},"component":{}}],["space",{"_index":724,"title":{},"name":{},"text":{"5":{},"37":{},"43":{},"46":{},"54":{}},"component":{}}],["spaceshard",{"_index":1848,"title":{},"name":{},"text":{"21":{}},"component":{}}],["spam",{"_index":1438,"title":{},"name":{},"text":{"14":{},"23":{}},"component":{}}],["span",{"_index":2122,"title":{},"name":{},"text":{"31":{},"37":{},"56":{},"59":{}},"component":{}}],["spars",{"_index":2648,"title":{},"name":{},"text":{"46":{}},"component":{}}],["spec",{"_index":1605,"title":{},"name":{},"text":{"16":{},"17":{},"42":{},"51":{}},"component":{}}],["special",{"_index":47,"title":{"46-10":{}},"name":{},"text":{"1":{},"2":{},"46":{}},"component":{}}],["specif",{"_index":241,"title":{"37-8":{},"51-11":{}},"name":{},"text":{"1":{},"3":{},"5":{},"11":{},"13":{},"14":{},"16":{},"21":{},"31":{},"38":{},"39":{},"42":{},"46":{},"48":{},"51":{},"59":{}},"component":{}}],["specifi",{"_index":574,"title":{},"name":{},"text":{"3":{},"5":{},"7":{},"14":{},"16":{},"27":{},"31":{},"42":{},"44":{},"46":{},"48":{},"51":{},"56":{},"57":{},"59":{}},"component":{}}],["specs/tree/v0.3.0",{"_index":1275,"title":{},"name":{},"text":{"13":{}},"component":{}}],["spend",{"_index":365,"title":{},"name":{},"text":{"3":{}},"component":{}}],["spender",{"_index":2857,"title":{},"name":{},"text":{"51":{}},"component":{}}],["split",{"_index":1641,"title":{},"name":{},"text":{"16":{},"57":{}},"component":{}}],["spong",{"_index":2296,"title":{},"name":{},"text":{"39":{}},"component":{}}],["sponsor",{"_index":2967,"title":{},"name":{},"text":{"56":{}},"component":{}}],["src",{"_index":853,"title":{},"name":{},"text":{"7":{}},"component":{}}],["srivastav",{"_index":1382,"title":{},"name":{},"text":{"14":{}},"component":{}}],["ssf",{"_index":888,"title":{},"name":{},"text":{"7":{},"9":{}},"component":{}}],["stabil",{"_index":1125,"title":{},"name":{},"text":{"13":{},"16":{}},"component":{}}],["stabl",{"_index":77,"title":{},"name":{},"text":{"1":{},"23":{}},"component":{}}],["stablecoin",{"_index":2040,"title":{},"name":{},"text":{"30":{}},"component":{}}],["stack",{"_index":1325,"title":{},"name":{},"text":{"14":{},"21":{}},"component":{}}],["stage",{"_index":609,"title":{},"name":{},"text":{"3":{},"5":{},"21":{},"36":{},"44":{},"45":{},"47":{},"48":{}},"component":{}}],["stake",{"_index":397,"title":{},"name":{},"text":{"3":{},"30":{}},"component":{}}],["stakehold",{"_index":588,"title":{},"name":{},"text":{"3":{}},"component":{}}],["staker",{"_index":367,"title":{},"name":{},"text":{"3":{}},"component":{}}],["staknet",{"_index":1262,"title":{},"name":{},"text":{"13":{}},"component":{}}],["standalon",{"_index":1830,"title":{},"name":{},"text":{"21":{},"51":{},"59":{}},"component":{}}],["standard",{"_index":833,"title":{},"name":{},"text":{"6":{},"16":{},"21":{},"25":{},"30":{},"31":{},"33":{},"37":{},"46":{}},"component":{}}],["stark",{"_index":24,"title":{"40":{},"41":{},"1-19":{}},"name":{"41":{}},"text":{"1":{},"2":{},"3":{},"16":{},"21":{},"39":{},"40":{},"41":{},"42":{},"46":{},"48":{},"49":{},"57":{}},"component":{}}],["starkgat",{"_index":1796,"title":{"25":{},"27":{},"29":{},"30":{},"31":{},"27-1":{},"30-1":{}},"name":{"25":{},"26":{},"27":{},"28":{},"29":{}},"text":{"20":{},"25":{},"27":{},"28":{},"29":{},"30":{},"31":{}},"component":{}}],["starkgate_architectur",{"_index":2016,"title":{},"name":{"30":{}},"text":{},"component":{}}],["starkgate_function_refer",{"_index":2080,"title":{},"name":{"31":{}},"text":{},"component":{}}],["starkgatemanager.sol",{"_index":2082,"title":{},"name":{},"text":{"31":{}},"component":{}}],["starkgateregistry.sol",{"_index":2084,"title":{},"name":{},"text":{"31":{}},"component":{}}],["starkgate’",{"_index":1801,"title":{},"name":{},"text":{"20":{}},"component":{}}],["starkli",{"_index":684,"title":{"7-2":{},"8-2":{},"9-1":{},"9-2":{},"10-2":{},"21-1":{},"34-1":{}},"name":{"5":{}},"text":{"5":{},"7":{},"8":{},"9":{},"10":{},"11":{},"12":{},"21":{},"34":{}},"component":{}}],["starkliup",{"_index":928,"title":{},"name":{},"text":{"9":{}},"component":{}}],["starkli’",{"_index":942,"title":{},"name":{},"text":{"9":{},"34":{}},"component":{}}],["starknet",{"_index":25,"title":{"3":{},"5":{},"15":{},"16":{},"21":{},"22":{},"32":{},"33":{},"46":{},"1-20":{},"1-21":{},"1-22":{},"2-1":{},"2-6":{},"5-2":{},"5-4":{},"5-5":{},"5-6":{},"5-7":{},"5-8":{},"5-9":{},"5-10":{},"5-11":{},"5-12":{},"5-13":{},"5-14":{},"5-15":{},"5-16":{},"14-72":{},"16-1":{},"16-2":{},"16-12":{},"16-13":{},"16-15":{},"16-16":{},"16-17":{},"16-18":{},"16-19":{},"16-20":{},"16-21":{},"16-22":{},"16-23":{},"16-24":{},"16-25":{},"16-26":{},"21-6":{},"21-7":{},"21-20":{},"21-30":{},"22-1":{},"22-2":{},"22-3":{},"22-4":{},"22-5":{},"27-4":{},"39-2":{}},"name":{"3":{},"6":{},"32":{},"46":{},"58":{}},"text":{"1":{},"2":{},"3":{},"5":{},"6":{},"7":{},"8":{},"9":{},"11":{},"12":{},"13":{},"14":{},"15":{},"16":{},"17":{},"18":{},"19":{},"20":{},"21":{},"22":{},"23":{},"24":{},"27":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"37":{},"38":{},"39":{},"41":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"51":{},"52":{},"53":{},"54":{},"55":{},"56":{},"59":{}},"component":{}}],["starknet'",{"_index":305,"title":{},"name":{},"text":{"2":{}},"component":{}}],["starknet.j",{"_index":1845,"title":{},"name":{},"text":{"21":{},"57":{}},"component":{}}],["starknet.pi",{"_index":1849,"title":{},"name":{},"text":{"21":{}},"component":{}}],["starknet::contract",{"_index":2895,"title":{},"name":{},"text":{"51":{},"55":{}},"component":{}}],["starknet::contractaddress",{"_index":2898,"title":{},"name":{},"text":{"51":{}},"component":{}}],["starknet::ev",{"_index":2231,"title":{},"name":{},"text":{"37":{},"51":{},"55":{}},"component":{}}],["starknet::interfac",{"_index":2200,"title":{},"name":{},"text":{"37":{},"51":{},"55":{}},"component":{}}],["starknet::storage_access::storage_base_address_from_felt252",{"_index":3087,"title":{},"name":{},"text":{"59":{}},"component":{}}],["starknet::syscalls::emit_event_syscal",{"_index":3039,"title":{},"name":{},"text":{"58":{}},"component":{}}],["starknet::syscalls::storage_read_syscal",{"_index":2930,"title":{},"name":{},"text":{"54":{}},"component":{}}],["starknet::syscalls::storage_write_syscal",{"_index":2931,"title":{},"name":{},"text":{"54":{}},"component":{}}],["starknet_account",{"_index":943,"title":{},"name":{},"text":{"9":{}},"component":{}}],["starknet_account=~/.starkli",{"_index":946,"title":{},"name":{},"text":{"9":{}},"component":{}}],["starknet_adddeclaretransact",{"_index":1215,"title":{},"name":{},"text":{"13":{}},"component":{}}],["starknet_adddeployaccounttransact",{"_index":1216,"title":{},"name":{},"text":{"13":{}},"component":{}}],["starknet_adddeploytransact",{"_index":1457,"title":{},"name":{},"text":{"14":{}},"component":{}}],["starknet_addinvoketransact",{"_index":1217,"title":{},"name":{},"text":{"13":{}},"component":{}}],["starknet_api_openrpc.json",{"_index":63,"title":{},"name":{},"text":{"1":{},"17":{},"48":{}},"component":{}}],["starknet_blockhashandnumb",{"_index":1290,"title":{},"name":{},"text":{"13":{}},"component":{}}],["starknet_blocknumb",{"_index":1289,"title":{},"name":{},"text":{"13":{}},"component":{}}],["starknet_cal",{"_index":1213,"title":{},"name":{},"text":{"13":{},"14":{}},"component":{}}],["starknet_chainid",{"_index":1288,"title":{},"name":{},"text":{"13":{}},"component":{}}],["starknet_contract_address",{"_index":2913,"title":{},"name":{},"text":{"52":{}},"component":{}}],["starknet_estimatefe",{"_index":1214,"title":{},"name":{},"text":{"13":{},"14":{}},"component":{}}],["starknet_estimatemessagefe",{"_index":1196,"title":{},"name":{},"text":{"13":{},"14":{}},"component":{}}],["starknet_ev",{"_index":1497,"title":{},"name":{},"text":{"14":{}},"component":{}}],["starknet_getblocktransactioncount",{"_index":1295,"title":{},"name":{},"text":{"13":{}},"component":{}}],["starknet_getblockwithtx",{"_index":1292,"title":{},"name":{},"text":{"13":{}},"component":{}}],["starknet_getblockwithtxhash",{"_index":1291,"title":{},"name":{},"text":{"13":{}},"component":{}}],["starknet_getclass",{"_index":1242,"title":{},"name":{},"text":{"13":{}},"component":{}}],["starknet_getclassat",{"_index":1243,"title":{},"name":{},"text":{"13":{}},"component":{}}],["starknet_getclasshashat",{"_index":1241,"title":{},"name":{},"text":{"13":{}},"component":{}}],["starknet_getev",{"_index":1244,"title":{},"name":{},"text":{"13":{},"14":{},"59":{}},"component":{}}],["starknet_getnonc",{"_index":1239,"title":{},"name":{},"text":{"13":{}},"component":{}}],["starknet_getstateupd",{"_index":1297,"title":{},"name":{},"text":{"13":{},"14":{}},"component":{}}],["starknet_getstorageat",{"_index":1240,"title":{},"name":{},"text":{"13":{},"21":{}},"component":{}}],["starknet_gettransactionbyblockidandindex",{"_index":1296,"title":{},"name":{},"text":{"13":{}},"component":{}}],["starknet_gettransactionbyhash",{"_index":1293,"title":{},"name":{},"text":{"13":{}},"component":{}}],["starknet_gettransactionreceipt",{"_index":1294,"title":{},"name":{},"text":{"13":{},"21":{},"47":{}},"component":{}}],["starknet_gettransactionstatu",{"_index":1137,"title":{},"name":{},"text":{"13":{}},"component":{}}],["starknet_keccak",{"_index":1287,"title":{},"name":{},"text":{"13":{},"50":{}},"component":{}}],["starknet_keystor",{"_index":944,"title":{},"name":{},"text":{"9":{},"11":{}},"component":{}}],["starknet_keystore=~/.starkli",{"_index":948,"title":{},"name":{},"text":{"9":{}},"component":{}}],["starknet_network",{"_index":696,"title":{},"name":{},"text":{"5":{}},"component":{}}],["starknet_network=alpha",{"_index":698,"title":{},"name":{},"text":{"5":{}},"component":{}}],["starknet_pendingtransact",{"_index":1145,"title":{},"name":{},"text":{"13":{}},"component":{}}],["starknet_simul",{"_index":1445,"title":{},"name":{},"text":{"14":{}},"component":{}}],["starknet_simulatetransact",{"_index":1162,"title":{},"name":{},"text":{"13":{},"14":{}},"component":{}}],["starknet_specvers",{"_index":1134,"title":{},"name":{},"text":{"13":{}},"component":{}}],["starknet_state_v0",{"_index":2609,"title":{},"name":{},"text":{"46":{}},"component":{}}],["starknet_sync",{"_index":1230,"title":{},"name":{},"text":{"13":{}},"component":{}}],["starknet_traceblocktransact",{"_index":1140,"title":{},"name":{},"text":{"13":{}},"component":{}}],["starknet_tracetransact",{"_index":1161,"title":{},"name":{},"text":{"13":{}},"component":{}}],["starknet_vers",{"_index":1695,"title":{},"name":{},"text":{"16":{}},"component":{}}],["starknet_wallet=starkware.starknet.wallets.open_zeppelin.openzeppelinaccount",{"_index":761,"title":{},"name":{},"text":{"5":{}},"component":{}}],["starknettokenbridge.sol",{"_index":1953,"title":{},"name":{},"text":{"25":{},"30":{},"31":{}},"component":{}}],["starknet’",{"_index":340,"title":{},"name":{},"text":{"3":{},"11":{},"16":{},"27":{},"33":{},"38":{},"39":{},"42":{},"45":{},"46":{},"48":{},"49":{},"53":{},"59":{}},"component":{}}],["starkscan",{"_index":897,"title":{},"name":{},"text":{"7":{},"24":{}},"component":{}}],["starkwar",{"_index":444,"title":{},"name":{},"text":{"3":{},"17":{},"20":{},"21":{},"25":{},"27":{},"30":{},"31":{}},"component":{}}],["starkware.starknet.wallet",{"_index":764,"title":{},"name":{},"text":{"5":{}},"component":{}}],["starkware’",{"_index":464,"title":{},"name":{},"text":{"3":{}},"component":{}}],["start",{"_index":274,"title":{"2-2":{}},"name":{},"text":{"2":{},"3":{},"11":{},"12":{},"13":{},"14":{},"16":{},"17":{},"21":{},"38":{},"42":{},"44":{},"46":{},"49":{},"54":{}},"component":{}}],["started/starknet",{"_index":1744,"title":{},"name":{},"text":{"17":{}},"component":{}}],["startl1tol2messagecancel",{"_index":2539,"title":{},"name":{},"text":{"44":{}},"component":{}}],["state",{"_index":29,"title":{"46":{},"1-22":{},"1-24":{},"31-5":{},"31-13":{},"31-21":{},"31-30":{},"31-38":{},"31-47":{},"31-56":{},"31-64":{},"31-73":{},"31-82":{},"31-90":{},"31-98":{},"31-106":{},"31-114":{},"31-122":{},"31-130":{},"46-1":{},"46-2":{},"47-3":{}},"name":{"46":{}},"text":{"1":{},"5":{},"10":{},"12":{},"13":{},"14":{},"16":{},"23":{},"27":{},"38":{},"39":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"53":{},"55":{},"59":{}},"component":{}}],["state_commit",{"_index":2607,"title":{},"name":{},"text":{"46":{}},"component":{}}],["state_mut",{"_index":2834,"title":{},"name":{},"text":{"51":{}},"component":{}}],["statement",{"_index":662,"title":{},"name":{},"text":{"3":{},"6":{},"16":{},"49":{}},"component":{}}],["statesnapshot",{"_index":1238,"title":{},"name":{},"text":{"13":{}},"component":{}}],["static",{"_index":878,"title":{},"name":{},"text":{"7":{},"55":{}},"component":{}}],["statu",{"_index":792,"title":{"47-2":{}},"name":{},"text":{"5":{},"11":{},"13":{},"14":{},"16":{},"27":{},"31":{},"47":{}},"component":{}}],["status",{"_index":796,"title":{},"name":{},"text":{"5":{},"47":{}},"component":{}}],["stdout",{"_index":838,"title":{},"name":{},"text":{"6":{}},"component":{}}],["steal",{"_index":2236,"title":{},"name":{},"text":{"38":{}},"component":{}}],["step",{"_index":10,"title":{"1-6":{},"27-3":{},"27-4":{},"27-5":{},"27-7":{},"27-8":{},"27-9":{}},"name":{},"text":{"6":{},"7":{},"8":{},"9":{},"13":{},"16":{},"23":{},"27":{},"34":{},"38":{},"42":{},"44":{},"47":{},"49":{}},"component":{}}],["still",{"_index":393,"title":{},"name":{},"text":{"3":{},"12":{},"14":{},"16":{},"28":{},"31":{},"38":{},"47":{},"48":{}},"component":{}}],["stolen",{"_index":627,"title":{},"name":{},"text":{"3":{},"35":{}},"component":{}}],["stop",{"_index":835,"title":{},"name":{},"text":{"6":{},"12":{},"14":{},"20":{},"30":{},"31":{},"49":{}},"component":{}}],["storag",{"_index":140,"title":{"54":{},"42-15":{},"54-1":{},"54-2":{},"54-3":{}},"name":{"54":{}},"text":{"1":{},"5":{},"13":{},"14":{},"16":{},"38":{},"42":{},"44":{},"45":{},"46":{},"51":{},"53":{},"54":{},"55":{},"59":{}},"component":{}}],["storage_address",{"_index":3088,"title":{},"name":{},"text":{"59":{}},"component":{}}],["storage_base_address_from_felt252",{"_index":3089,"title":{},"name":{},"text":{"59":{}},"component":{}}],["storage_read",{"_index":2927,"title":{"59-53":{}},"name":{},"text":{"54":{}},"component":{}}],["storage_read_syscal",{"_index":3085,"title":{},"name":{},"text":{"59":{}},"component":{}}],["storage_root",{"_index":2614,"title":{},"name":{},"text":{"46":{}},"component":{}}],["storage_writ",{"_index":2929,"title":{"59-60":{}},"name":{},"text":{"54":{}},"component":{}}],["storage_write_syscal",{"_index":2925,"title":{},"name":{},"text":{"54":{},"59":{}},"component":{}}],["storageaddress",{"_index":2975,"title":{},"name":{},"text":{"57":{},"59":{}},"component":{}}],["store",{"_index":235,"title":{},"name":{},"text":{"1":{},"3":{},"11":{},"13":{},"14":{},"27":{},"42":{},"44":{},"46":{},"47":{},"54":{}},"component":{}}],["straightforward",{"_index":3075,"title":{},"name":{},"text":{"59":{}},"component":{}}],["strateg",{"_index":496,"title":{},"name":{},"text":{"3":{}},"component":{}}],["streamlin",{"_index":1165,"title":{},"name":{},"text":{"13":{}},"component":{}}],["string",{"_index":743,"title":{},"name":{},"text":{"5":{},"13":{},"14":{},"31":{},"46":{},"48":{},"50":{},"52":{},"57":{},"58":{},"59":{}},"component":{}}],["strk",{"_index":142,"title":{"3-2":{}},"name":{},"text":{"1":{},"3":{},"16":{},"22":{},"30":{},"42":{},"48":{}},"component":{}}],["strk_l1_gas_pric",{"_index":1591,"title":{},"name":{},"text":{"16":{}},"component":{}}],["struct",{"_index":1624,"title":{"56-1":{},"56-2":{},"56-3":{},"56-4":{},"57-8":{}},"name":{},"text":{"16":{},"37":{},"48":{},"51":{},"54":{},"55":{},"56":{},"57":{},"58":{},"59":{}},"component":{}}],["structur",{"_index":372,"title":{"43":{},"35-1":{},"44-2":{},"44-6":{}},"name":{},"text":{"3":{},"11":{},"16":{},"33":{},"38":{},"44":{},"46":{},"48":{},"51":{}},"component":{}}],["struct’",{"_index":3021,"title":{},"name":{},"text":{"57":{}},"component":{}}],["stuck",{"_index":1454,"title":{},"name":{},"text":{"14":{}},"component":{}}],["studio",{"_index":1820,"title":{"21-35":{}},"name":{},"text":{"21":{}},"component":{}}],["style",{"_index":57,"title":{},"name":{},"text":{"1":{},"2":{},"14":{}},"component":{}}],["sub",{"_index":2883,"title":{},"name":{},"text":{"51":{}},"component":{}}],["subdirectori",{"_index":852,"title":{},"name":{},"text":{"7":{}},"component":{}}],["subject",{"_index":332,"title":{},"name":{},"text":{"3":{},"23":{}},"component":{}}],["submiss",{"_index":2659,"title":{},"name":{},"text":{"47":{}},"component":{}}],["submit",{"_index":166,"title":{},"name":{},"text":{"1":{},"3":{},"10":{},"14":{},"27":{},"38":{},"42":{},"47":{},"48":{},"49":{}},"component":{}}],["submitt",{"_index":2404,"title":{},"name":{},"text":{"42":{}},"component":{}}],["subscrib",{"_index":1531,"title":{},"name":{},"text":{"15":{},"16":{}},"component":{}}],["subscript",{"_index":1093,"title":{},"name":{},"text":{"13":{},"14":{}},"component":{}}],["subsequ",{"_index":494,"title":{},"name":{},"text":{"3":{},"26":{},"31":{}},"component":{}}],["subset",{"_index":2766,"title":{},"name":{},"text":{"49":{}},"component":{}}],["substanti",{"_index":1331,"title":{},"name":{},"text":{"14":{}},"component":{}}],["substitut",{"_index":2784,"title":{},"name":{},"text":{"49":{}},"component":{}}],["substrat",{"_index":1748,"title":{},"name":{},"text":{"17":{}},"component":{}}],["subtracted_valu",{"_index":2862,"title":{},"name":{},"text":{"51":{}},"component":{}}],["subtri",{"_index":2618,"title":{},"name":{},"text":{"46":{}},"component":{}}],["succe",{"_index":1964,"title":{},"name":{},"text":{"26":{},"31":{}},"component":{}}],["succeed",{"_index":208,"title":{},"name":{},"text":{"1":{},"31":{},"47":{}},"component":{}}],["success",{"_index":612,"title":{},"name":{},"text":{"3":{},"5":{},"10":{}},"component":{}}],["successfulli",{"_index":1021,"title":{},"name":{},"text":{"11":{},"31":{},"36":{},"47":{},"49":{}},"component":{}}],["such",{"_index":182,"title":{},"name":{},"text":{"1":{},"3":{},"11":{},"14":{},"16":{},"20":{},"21":{},"23":{},"25":{},"26":{},"31":{},"35":{},"37":{},"39":{},"42":{},"44":{},"45":{},"46":{},"47":{},"49":{},"51":{},"57":{},"59":{}},"component":{}}],["suffer",{"_index":593,"title":{},"name":{},"text":{"3":{}},"component":{}}],["suffic",{"_index":2555,"title":{},"name":{},"text":{"45":{}},"component":{}}],["suffici",{"_index":587,"title":{},"name":{},"text":{"3":{},"11":{},"51":{}},"component":{}}],["suffix",{"_index":1739,"title":{},"name":{},"text":{"17":{}},"component":{}}],["suggest",{"_index":1510,"title":{},"name":{},"text":{"14":{},"21":{},"37":{}},"component":{}}],["suitabl",{"_index":2538,"title":{},"name":{},"text":{"44":{}},"component":{}}],["sum",{"_index":2482,"title":{},"name":{},"text":{"42":{}},"component":{}}],["sum\\limits_{i=1}^t",{"_index":2362,"title":{},"name":{},"text":{"42":{}},"component":{}}],["summar",{"_index":2943,"title":{},"name":{},"text":{"54":{}},"component":{}}],["summari",{"_index":1462,"title":{},"name":{},"text":{"14":{},"47":{}},"component":{}}],["sunday",{"_index":3008,"title":{},"name":{},"text":{"57":{}},"component":{}}],["super",{"_index":2899,"title":{},"name":{},"text":{"51":{}},"component":{}}],["super::icountercontract",{"_index":2906,"title":{},"name":{},"text":{"51":{},"55":{}},"component":{}}],["superflu",{"_index":2033,"title":{},"name":{},"text":{"30":{}},"component":{}}],["supplementari",{"_index":321,"title":{},"name":{},"text":{"2":{}},"component":{}}],["suppli",{"_index":325,"title":{"3-3":{}},"name":{},"text":{"3":{},"5":{},"16":{},"44":{},"50":{}},"component":{}}],["support",{"_index":431,"title":{"14-72":{},"27-1":{}},"name":{},"text":{"3":{},"7":{},"11":{},"12":{},"13":{},"14":{},"16":{},"17":{},"20":{},"21":{},"22":{},"25":{},"27":{},"30":{},"38":{},"46":{},"48":{},"50":{},"51":{},"59":{}},"component":{}}],["support@starknetcommunity.io",{"_index":1957,"title":{},"name":{},"text":{"25":{}},"component":{}}],["suppos",{"_index":2426,"title":{},"name":{},"text":{"42":{},"46":{}},"component":{}}],["sure",{"_index":998,"title":{},"name":{},"text":{"11":{},"27":{},"30":{},"31":{},"38":{},"49":{}},"component":{}}],["surround",{"_index":2175,"title":{},"name":{},"text":{"35":{}},"component":{}}],["swap",{"_index":1491,"title":{},"name":{},"text":{"14":{},"20":{}},"component":{}}],["switch",{"_index":1057,"title":{"13-15":{}},"name":{},"text":{"13":{}},"component":{}}],["swm",{"_index":1851,"title":{},"name":{},"text":{"21":{}},"component":{}}],["symbol",{"_index":1785,"title":{},"name":{},"text":{"19":{},"20":{},"54":{}},"component":{}}],["symbol_",{"_index":2847,"title":{},"name":{},"text":{"51":{}},"component":{}}],["sync",{"_index":880,"title":{},"name":{},"text":{"7":{},"13":{},"14":{}},"component":{}}],["sync.pol",{"_index":1356,"title":{},"name":{},"text":{"14":{}},"component":{}}],["synchron",{"_index":1044,"title":{},"name":{},"text":{"12":{},"13":{}},"component":{}}],["sync’d",{"_index":1341,"title":{},"name":{},"text":{"14":{}},"component":{}}],["syntax",{"_index":672,"title":{"5-1":{},"59-2":{},"59-9":{},"59-16":{},"59-22":{},"59-28":{},"59-35":{},"59-41":{},"59-48":{},"59-54":{},"59-61":{}},"name":{"55":{}},"text":{"5":{},"16":{},"49":{},"55":{},"58":{},"59":{}},"component":{}}],["syscal",{"_index":1570,"title":{},"name":{},"text":{"16":{},"34":{},"37":{},"42":{},"44":{},"47":{},"52":{},"56":{},"59":{}},"component":{}}],["syscallresult",{"_index":3061,"title":{},"name":{},"text":{"59":{}},"component":{}}],["syscalls.cairo",{"_index":3066,"title":{},"name":{},"text":{"59":{}},"component":{}}],["system",{"_index":222,"title":{"59":{}},"name":{"59":{}},"text":{"1":{},"2":{},"3":{},"5":{},"7":{},"8":{},"9":{},"10":{},"12":{},"13":{},"14":{},"16":{},"37":{},"39":{},"46":{},"47":{},"49":{},"53":{},"54":{},"58":{},"59":{}},"component":{}}],["t",{"_index":2244,"title":{},"name":{},"text":{"38":{},"42":{},"55":{}},"component":{}}],["tabl",{"_index":1278,"title":{"32-1":{}},"name":{},"text":{"13":{},"16":{},"17":{},"18":{},"23":{},"24":{},"27":{},"30":{},"42":{},"44":{},"48":{},"57":{}},"component":{}}],["tag",{"_index":730,"title":{},"name":{},"text":{"5":{}},"component":{}}],["take",{"_index":1871,"title":{},"name":{},"text":{"21":{},"28":{},"31":{},"35":{},"37":{},"38":{},"39":{},"42":{},"44":{},"45":{},"49":{},"51":{},"57":{}},"component":{}}],["taken",{"_index":1351,"title":{},"name":{},"text":{"14":{},"38":{},"42":{},"54":{},"56":{}},"component":{}}],["target",{"_index":427,"title":{},"name":{},"text":{"3":{},"44":{},"46":{}},"component":{}}],["target.starknet",{"_index":856,"title":{},"name":{},"text":{"7":{}},"component":{}}],["target/dev",{"_index":860,"title":{},"name":{},"text":{"7":{}},"component":{}}],["target/dev/.json",{"_index":870,"title":{},"name":{},"text":{"7":{}},"component":{}}],["target/dev/contracts_ownable.sierra.json",{"_index":893,"title":{},"name":{},"text":{"7":{}},"component":{}}],["task",{"_index":170,"title":{},"name":{},"text":{"1":{},"21":{}},"component":{}}],["tax",{"_index":650,"title":{},"name":{},"text":{"3":{}},"component":{}}],["tcontractst",{"_index":2202,"title":{},"name":{},"text":{"37":{},"51":{},"55":{}},"component":{}}],["team",{"_index":465,"title":{},"name":{},"text":{"3":{},"18":{},"21":{},"25":{},"30":{},"33":{}},"component":{}}],["technic",{"_index":312,"title":{},"name":{},"text":{"2":{},"3":{},"16":{},"30":{}},"component":{}}],["techniqu",{"_index":2136,"title":{},"name":{},"text":{"32":{}},"component":{}}],["technolog",{"_index":404,"title":{},"name":{},"text":{"3":{}},"component":{}}],["temporari",{"_index":422,"title":{},"name":{},"text":{"3":{},"5":{},"12":{}},"component":{}}],["temporarili",{"_index":1406,"title":{},"name":{},"text":{"14":{}},"component":{}}],["tempvar",{"_index":2779,"title":{},"name":{},"text":{"49":{}},"component":{}}],["ten",{"_index":449,"title":{},"name":{},"text":{"3":{}},"component":{}}],["term",{"_index":85,"title":{},"name":{},"text":{"1":{},"3":{},"16":{},"27":{},"42":{},"59":{}},"component":{}}],["termin",{"_index":817,"title":{},"name":{},"text":{"6":{},"9":{}},"component":{}}],["test",{"_index":481,"title":{},"name":{},"text":{"3":{},"5":{},"7":{},"13":{},"16":{},"21":{}},"component":{}}],["test_component::ev",{"_index":2868,"title":{},"name":{},"text":{"51":{}},"component":{}}],["testcounterdecreas",{"_index":2870,"title":{},"name":{},"text":{"51":{}},"component":{}}],["testcounterincreas",{"_index":2869,"title":{},"name":{},"text":{"51":{}},"component":{}}],["testenum",{"_index":2871,"title":{},"name":{},"text":{"51":{}},"component":{}}],["testnet",{"_index":689,"title":{"22-2":{},"22-3":{}},"name":{},"text":{"5":{},"11":{},"12":{},"14":{},"16":{},"19":{},"21":{},"22":{},"27":{},"37":{},"48":{},"56":{}},"component":{}}],["testnet2",{"_index":1436,"title":{},"name":{},"text":{"14":{}},"component":{}}],["tether",{"_index":2038,"title":{},"name":{},"text":{"30":{}},"component":{}}],["text",{"_index":981,"title":{},"name":{},"text":{"11":{},"14":{},"46":{}},"component":{}}],["text{cairoresourcefeeweights}_k",{"_index":2445,"title":{},"name":{},"text":{"42":{}},"component":{}}],["text{chain_id",{"_index":2549,"title":{},"name":{},"text":{"44":{}},"component":{}}],["text{contract_update_discount",{"_index":2399,"title":{},"name":{},"text":{"42":{}},"component":{}}],["text{contract_update_discount}\\cdot",{"_index":2390,"title":{},"name":{},"text":{"42":{}},"component":{}}],["text{current_block",{"_index":2657,"title":{},"name":{},"text":{"46":{}},"component":{}}],["text{da_calldata_cost",{"_index":2394,"title":{},"name":{},"text":{"42":{}},"component":{}}],["text{da_calldata_cost}\\left",{"_index":2388,"title":{},"name":{},"text":{"42":{}},"component":{}}],["text{data_gas_price}\\cdot\\text{felt_size_in_bytes}\\cdot\\bigg",{"_index":2367,"title":{},"name":{},"text":{"42":{}},"component":{}}],["text{data_hash",{"_index":3053,"title":{},"name":{},"text":{"58":{}},"component":{}}],["text{event_nam",{"_index":3037,"title":{},"name":{},"text":{"58":{}},"component":{}}],["text{felt_size_in_byt",{"_index":2386,"title":{},"name":{},"text":{"42":{}},"component":{}}],["text{first_v0_12_0_block",{"_index":2656,"title":{},"name":{},"text":{"46":{}},"component":{}}],["text{from_address",{"_index":3051,"title":{},"name":{},"text":{"58":{}},"component":{}}],["text{gas_price}\\cdot&\\bigg",{"_index":2387,"title":{},"name":{},"text":{"42":{}},"component":{}}],["text{gas_price}\\cdot\\bigg",{"_index":2353,"title":{},"name":{},"text":{"42":{}},"component":{}}],["text{had",{"_index":2323,"title":{},"name":{},"text":{"39":{}},"component":{}}],["text{hades}:\\mathbb{f}_p^3\\rightarrow\\mathbb{f}_p^3",{"_index":2310,"title":{},"name":{},"text":{"39":{}},"component":{}}],["text{if",{"_index":2321,"title":{},"name":{},"text":{"39":{},"46":{}},"component":{}}],["text{index}_1",{"_index":2817,"title":{},"name":{},"text":{"50":{}},"component":{}}],["text{index}_n",{"_index":2819,"title":{},"name":{},"text":{"50":{}},"component":{}}],["text{keys_hash",{"_index":3052,"title":{},"name":{},"text":{"58":{}},"component":{}}],["text{l1_handl",{"_index":2548,"title":{},"name":{},"text":{"44":{}},"component":{}}],["text{l1_log_data_cost",{"_index":2361,"title":{},"name":{},"text":{"42":{}},"component":{}}],["text{l1_log_data_cost}\\cdot\\text{payload_s",{"_index":2481,"title":{},"name":{},"text":{"42":{}},"component":{}}],["text{l1_storage_write_cost",{"_index":2382,"title":{},"name":{},"text":{"42":{}},"component":{}}],["text{l1_storage_write_cost}+\\text{log_message_to_l1_cost}\\right",{"_index":2365,"title":{},"name":{},"text":{"42":{}},"component":{}}],["text{l2_payload_cost",{"_index":2385,"title":{},"name":{},"text":{"42":{}},"component":{}}],["text{l2_payload_costs}\\bigg",{"_index":2366,"title":{},"name":{},"text":{"42":{}},"component":{}}],["text{log_message_to_l1_cost",{"_index":2383,"title":{},"name":{},"text":{"42":{}},"component":{}}],["text{max_amount",{"_index":2669,"title":{},"name":{},"text":{"47":{}},"component":{}}],["text{max_price_per_unit",{"_index":2670,"title":{},"name":{},"text":{"47":{}},"component":{}}],["text{message_calldata_cost",{"_index":2360,"title":{},"name":{},"text":{"42":{}},"component":{}}],["text{message_calldata_cost}\\cdot",{"_index":2358,"title":{},"name":{},"text":{"42":{}},"component":{}}],["text{message_calldata_cost}\\cdot\\left",{"_index":2479,"title":{},"name":{},"text":{"42":{}},"component":{}}],["text{message_cost",{"_index":2478,"title":{},"name":{},"text":{"42":{}},"component":{}}],["text{otherwis",{"_index":2632,"title":{},"name":{},"text":{"46":{}},"component":{}}],["text{selector}_1",{"_index":2816,"title":{},"name":{},"text":{"50":{}},"component":{}}],["text{selector}_n",{"_index":2818,"title":{},"name":{},"text":{"50":{}},"component":{}}],["text{sn_keccak",{"_index":3035,"title":{},"name":{},"text":{"58":{}},"component":{}}],["text{tracecells}[tx]/l",{"_index":2425,"title":{},"name":{},"text":{"42":{}},"component":{}}],["thank",{"_index":1476,"title":{},"name":{},"text":{"14":{},"49":{}},"component":{}}],["that’",{"_index":1860,"title":{},"name":{},"text":{"21":{}},"component":{}}],["the`validate_deploy",{"_index":1663,"title":{},"name":{},"text":{"16":{}},"component":{}}],["themselv",{"_index":1515,"title":{},"name":{},"text":{"14":{},"51":{}},"component":{}}],["theori",{"_index":608,"title":{},"name":{},"text":{"3":{}},"component":{}}],["therebi",{"_index":937,"title":{},"name":{},"text":{"9":{},"35":{}},"component":{}}],["therefor",{"_index":557,"title":{},"name":{},"text":{"3":{},"14":{},"23":{},"30":{},"37":{},"38":{},"42":{},"59":{}},"component":{}}],["there’",{"_index":1872,"title":{},"name":{},"text":{"21":{}},"component":{}}],["thing",{"_index":2752,"title":{},"name":{},"text":{"49":{}},"component":{}}],["think",{"_index":896,"title":{},"name":{},"text":{"7":{},"37":{},"38":{},"58":{}},"component":{}}],["third",{"_index":566,"title":{},"name":{},"text":{"3":{},"11":{}},"component":{}}],["those",{"_index":487,"title":{},"name":{},"text":{"3":{},"16":{},"26":{},"31":{},"33":{},"35":{},"37":{},"45":{},"48":{},"58":{}},"component":{}}],["though",{"_index":1972,"title":{},"name":{},"text":{"27":{},"49":{}},"component":{}}],["three",{"_index":2257,"title":{},"name":{},"text":{"39":{},"42":{},"46":{},"57":{},"58":{},"59":{}},"component":{}}],["threshold",{"_index":432,"title":{},"name":{},"text":{"3":{}},"component":{}}],["through",{"_index":355,"title":{},"name":{},"text":{"3":{},"5":{},"14":{},"31":{},"33":{},"35":{},"37":{},"49":{},"50":{},"54":{},"55":{}},"component":{}}],["throughout",{"_index":2258,"title":{},"name":{},"text":{"39":{},"42":{},"58":{}},"component":{}}],["throughput",{"_index":1076,"title":{},"name":{},"text":{"13":{}},"component":{}}],["thu",{"_index":2249,"title":{},"name":{},"text":{"38":{},"45":{}},"component":{}}],["thwart",{"_index":2917,"title":{},"name":{},"text":{"52":{}},"component":{}}],["time",{"_index":554,"title":{},"name":{},"text":{"3":{},"13":{},"14":{},"16":{},"20":{},"21":{},"23":{},"27":{},"28":{},"31":{},"38":{},"42":{},"43":{},"44":{},"56":{},"57":{},"59":{}},"component":{}}],["timelin",{"_index":1526,"title":{},"name":{},"text":{"14":{}},"component":{}}],["timestamp",{"_index":1345,"title":{},"name":{},"text":{"14":{},"16":{},"43":{},"56":{}},"component":{}}],["tip",{"_index":2705,"title":{},"name":{},"text":{"48":{},"56":{}},"component":{}}],["tlsv1.2",{"_index":887,"title":{},"name":{},"text":{"7":{},"9":{}},"component":{}}],["to_address",{"_index":775,"title":{},"name":{},"text":{"5":{},"44":{},"47":{},"59":{}},"component":{}}],["to_address.into",{"_index":2514,"title":{},"name":{},"text":{"44":{}},"component":{}}],["toaddress",{"_index":2522,"title":{},"name":{},"text":{"44":{}},"component":{}}],["today",{"_index":391,"title":{},"name":{},"text":{"3":{},"5":{},"35":{},"42":{}},"component":{}}],["togeth",{"_index":188,"title":{},"name":{},"text":{"1":{},"16":{}},"component":{}}],["token",{"_index":324,"title":{"3":{},"19":{},"25":{},"3-2":{},"22-4":{},"22-5":{},"27-1":{}},"name":{},"text":{"3":{},"5":{},"19":{},"20":{},"21":{},"22":{},"25":{},"27":{},"30":{},"31":{},"35":{},"42":{}},"component":{}}],["token_bridge.cairo",{"_index":1954,"title":{},"name":{},"text":{"25":{},"30":{},"31":{}},"component":{}}],["token_bridge_interface.cairo",{"_index":2087,"title":{},"name":{},"text":{"31":{}},"component":{}}],["tokenenrollmentiniti",{"_index":2101,"title":{},"name":{},"text":{"31":{}},"component":{}}],["tokenom",{"_index":331,"title":{},"name":{},"text":{"3":{}},"component":{}}],["tokenstatu",{"_index":2104,"title":{},"name":{},"text":{"31":{}},"component":{}}],["token’",{"_index":1986,"title":{},"name":{},"text":{"27":{}},"component":{}}],["toluwalopeayo",{"_index":1159,"title":{},"name":{},"text":{"13":{}},"component":{}}],["tool",{"_index":277,"title":{"21":{},"2-5":{}},"name":{},"text":{"2":{},"6":{},"9":{},"12":{},"16":{},"21":{}},"component":{}}],["toolchain",{"_index":922,"title":{},"name":{},"text":{"9":{},"21":{}},"component":{}}],["top",{"_index":390,"title":{},"name":{},"text":{"3":{},"13":{},"35":{},"49":{}},"component":{}}],["topic",{"_index":2486,"title":{},"name":{},"text":{"42":{},"48":{},"59":{}},"component":{}}],["total",{"_index":516,"title":{},"name":{},"text":{"3":{},"27":{},"30":{},"42":{},"47":{}},"component":{}}],["total_suppli",{"_index":2945,"title":{},"name":{},"text":{"54":{}},"component":{}}],["touch",{"_index":2948,"title":{},"name":{},"text":{"55":{}},"component":{}}],["toward",{"_index":1826,"title":{},"name":{},"text":{"21":{}},"component":{}}],["trace",{"_index":124,"title":{},"name":{},"text":{"1":{},"13":{},"14":{},"16":{},"42":{}},"component":{}}],["track",{"_index":1424,"title":{},"name":{},"text":{"14":{},"42":{},"45":{}},"component":{}}],["tradeoff",{"_index":3086,"title":{},"name":{},"text":{"59":{}},"component":{}}],["tradit",{"_index":2654,"title":{},"name":{},"text":{"46":{},"53":{}},"component":{}}],["trail",{"_index":1775,"title":{},"name":{},"text":{"18":{}},"component":{}}],["trait",{"_index":2154,"title":{},"name":{},"text":{"33":{},"37":{},"51":{},"55":{}},"component":{}}],["transact",{"_index":30,"title":{"36":{},"42":{},"47":{},"48":{},"1-23":{},"27-8":{},"38-2":{},"38-5":{},"42-1":{},"42-2":{},"42-3":{},"42-5":{},"42-6":{},"42-7":{},"47-1":{},"47-2":{},"47-3":{},"47-4":{},"48-1":{},"48-2":{},"48-3":{},"48-5":{},"48-8":{},"48-9":{},"48-11":{},"48-13":{},"48-16":{},"48-17":{},"48-19":{},"48-21":{},"49-3":{},"56-3":{}},"name":{"47":{},"48":{}},"text":{"1":{},"2":{},"3":{},"5":{},"8":{},"10":{},"11":{},"12":{},"13":{},"14":{},"16":{},"21":{},"23":{},"24":{},"27":{},"29":{},"31":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"42":{},"43":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"50":{},"52":{},"53":{},"56":{},"57":{},"58":{},"59":{}},"component":{}}],["transaction.commit",{"_index":1106,"title":{},"name":{},"text":{"13":{}},"component":{}}],["transaction_commit",{"_index":1594,"title":{},"name":{},"text":{"16":{},"43":{}},"component":{}}],["transaction_count",{"_index":2496,"title":{},"name":{},"text":{"43":{}},"component":{}}],["transaction_hash",{"_index":785,"title":{},"name":{},"text":{"5":{},"47":{},"56":{}},"component":{}}],["transactionstorag",{"_index":1247,"title":{},"name":{},"text":{"13":{}},"component":{}}],["transaction’",{"_index":2156,"title":{},"name":{},"text":{"33":{},"42":{},"44":{},"48":{},"56":{}},"component":{}}],["transfer",{"_index":548,"title":{"27-2":{},"27-5":{},"27-6":{},"27-9":{}},"name":{},"text":{"3":{},"10":{},"16":{},"26":{},"27":{},"31":{},"42":{},"44":{},"47":{},"51":{},"58":{}},"component":{}}],["transfer_from",{"_index":2858,"title":{},"name":{},"text":{"51":{}},"component":{}}],["transfer_ownership",{"_index":958,"title":{},"name":{},"text":{"10":{}},"component":{}}],["transit",{"_index":249,"title":{"46-1":{}},"name":{},"text":{"1":{},"10":{},"14":{},"16":{},"20":{},"46":{},"51":{}},"component":{}}],["translat",{"_index":2750,"title":{},"name":{},"text":{"49":{}},"component":{}}],["transmit",{"_index":2664,"title":{},"name":{},"text":{"47":{}},"component":{}}],["transport",{"_index":1379,"title":{},"name":{},"text":{"14":{}},"component":{}}],["travers",{"_index":2622,"title":{},"name":{},"text":{"46":{}},"component":{}}],["treasuri",{"_index":504,"title":{},"name":{},"text":{"3":{}},"component":{}}],["treat",{"_index":2572,"title":{},"name":{},"text":{"45":{},"50":{}},"component":{}}],["tree",{"_index":2500,"title":{},"name":{},"text":{"43":{},"46":{}},"component":{}}],["tri",{"_index":2606,"title":{},"name":{},"text":{"46":{}},"component":{}}],["trie",{"_index":1286,"title":{"46-3":{},"46-4":{},"46-5":{},"46-7":{},"46-8":{},"46-9":{}},"name":{},"text":{"13":{},"46":{}},"component":{}}],["trie’",{"_index":2612,"title":{},"name":{},"text":{"46":{}},"component":{}}],["trigger",{"_index":308,"title":{"27-4":{}},"name":{},"text":{"2":{},"23":{},"26":{},"27":{},"31":{}},"component":{}}],["triplet",{"_index":2617,"title":{},"name":{},"text":{"46":{}},"component":{}}],["trivial",{"_index":2985,"title":{},"name":{},"text":{"57":{}},"component":{}}],["true",{"_index":139,"title":{},"name":{},"text":{"1":{},"6":{},"7":{},"26":{},"31":{},"37":{},"49":{},"50":{},"52":{},"53":{}},"component":{}}],["truncat",{"_index":1334,"title":{},"name":{},"text":{"14":{}},"component":{}}],["trust",{"_index":1483,"title":{},"name":{},"text":{"14":{},"32":{}},"component":{}}],["tupl",{"_index":1683,"title":{},"name":{},"text":{"16":{},"39":{},"54":{},"59":{}},"component":{}}],["ture",{"_index":2751,"title":{},"name":{},"text":{"49":{}},"component":{}}],["turn",{"_index":604,"title":{},"name":{},"text":{"3":{},"14":{}},"component":{}}],["tvl",{"_index":2056,"title":{},"name":{},"text":{"30":{}},"component":{}}],["twice",{"_index":2484,"title":{},"name":{},"text":{"42":{}},"component":{}}],["two",{"_index":268,"title":{},"name":{},"text":{"1":{},"6":{},"7":{},"8":{},"9":{},"10":{},"11":{},"16":{},"20":{},"30":{},"31":{},"33":{},"35":{},"37":{},"38":{},"42":{},"45":{},"46":{},"47":{},"51":{},"57":{},"58":{},"59":{}},"component":{}}],["twofold",{"_index":2240,"title":{},"name":{},"text":{"38":{}},"component":{}}],["tx",{"_index":2423,"title":{},"name":{},"text":{"42":{},"46":{},"56":{}},"component":{}}],["tx_info",{"_index":2962,"title":{},"name":{},"text":{"56":{}},"component":{}}],["tx_statu",{"_index":681,"title":{"5-16":{}},"name":{},"text":{"5":{}},"component":{}}],["txinfo",{"_index":2957,"title":{"56-3":{}},"name":{},"text":{"56":{}},"component":{}}],["txn",{"_index":1142,"title":{},"name":{},"text":{"13":{}},"component":{}}],["txn_hash_not_found",{"_index":1409,"title":{},"name":{},"text":{"14":{}},"component":{}}],["type",{"_index":261,"title":{"48":{},"57":{},"37-4":{},"51-5":{},"57-1":{},"57-2":{}},"name":{},"text":{"1":{},"11":{},"13":{},"14":{},"16":{},"31":{},"33":{},"34":{},"37":{},"40":{},"42":{},"43":{},"47":{},"48":{},"51":{},"55":{},"57":{},"58":{},"59":{}},"component":{}}],["typescript",{"_index":1847,"title":{},"name":{},"text":{"21":{}},"component":{}}],["typic",{"_index":110,"title":{},"name":{},"text":{"1":{},"35":{}},"component":{}}],["u128",{"_index":2873,"title":{},"name":{},"text":{"51":{},"55":{},"56":{},"57":{}},"component":{}}],["u16",{"_index":2976,"title":{},"name":{},"text":{"57":{}},"component":{}}],["u256",{"_index":2119,"title":{"57-4":{}},"name":{},"text":{"31":{},"54":{},"57":{},"58":{}},"component":{}}],["u32",{"_index":2968,"title":{},"name":{},"text":{"56":{},"57":{},"59":{}},"component":{}}],["u512",{"_index":2973,"title":{"57-5":{}},"name":{},"text":{"57":{}},"component":{}}],["u64",{"_index":2963,"title":{},"name":{},"text":{"56":{},"57":{},"59":{}},"component":{}}],["u8",{"_index":2944,"title":{},"name":{},"text":{"54":{},"57":{}},"component":{}}],["udc",{"_index":1865,"title":{"37":{},"37-1":{},"37-3":{},"37-7":{}},"name":{},"text":{"21":{},"34":{},"37":{}},"component":{}}],["udc.deploycontract",{"_index":2225,"title":{},"name":{},"text":{"37":{}},"component":{}}],["udc_address",{"_index":2204,"title":{},"name":{},"text":{"37":{}},"component":{}}],["udc_address.try_into",{"_index":2207,"title":{},"name":{},"text":{"37":{}},"component":{}}],["udc’",{"_index":2218,"title":{},"name":{},"text":{"37":{}},"component":{}}],["ui",{"_index":1807,"title":{},"name":{},"text":{"20":{},"51":{}},"component":{}}],["uint256",{"_index":2091,"title":{},"name":{},"text":{"31":{},"44":{},"45":{}},"component":{}}],["uint256.cairo",{"_index":1666,"title":{},"name":{},"text":{"16":{}},"component":{}}],["uint256_mul_div_mod",{"_index":1665,"title":{},"name":{},"text":{"16":{}},"component":{}}],["uint8",{"_index":1277,"title":{},"name":{},"text":{"13":{}},"component":{}}],["ultim",{"_index":2215,"title":{},"name":{},"text":{"37":{},"48":{},"57":{}},"component":{}}],["unaffect",{"_index":1639,"title":{},"name":{},"text":{"16":{}},"component":{}}],["unaffili",{"_index":378,"title":{},"name":{},"text":{"3":{}},"component":{}}],["unanticip",{"_index":634,"title":{},"name":{},"text":{"3":{}},"component":{}}],["unbox",{"_index":3068,"title":{},"name":{},"text":{"59":{}},"component":{}}],["uncoupl",{"_index":2177,"title":{},"name":{},"text":{"35":{}},"component":{}}],["under",{"_index":394,"title":{},"name":{},"text":{"3":{},"20":{},"37":{},"51":{},"55":{}},"component":{}}],["underbrace{0",{"_index":3005,"title":{},"name":{},"text":{"57":{}},"component":{}}],["underbrace{0\\cdots011}_{\\text{128",{"_index":2993,"title":{},"name":{},"text":{"57":{}},"component":{}}],["underbrace{0\\cdots01}_{\\text{128",{"_index":2991,"title":{},"name":{},"text":{"57":{}},"component":{}}],["underbrace{0\\cdots0}_{\\text{127",{"_index":2557,"title":{},"name":{},"text":{"45":{}},"component":{}}],["underbrace{0\\cdots0}_{\\text{128",{"_index":2577,"title":{},"name":{},"text":{"45":{},"57":{}},"component":{}}],["underbrace{0\\cdots0}_{\\text{188",{"_index":2715,"title":{},"name":{},"text":{"48":{}},"component":{}}],["underbrace{0\\cdots10100}_{\\text{128",{"_index":2994,"title":{},"name":{},"text":{"57":{}},"component":{}}],["underbrace{0\\cdots10}_{\\text{128",{"_index":2989,"title":{},"name":{},"text":{"57":{}},"component":{}}],["underbrace{10",{"_index":3001,"title":{},"name":{},"text":{"57":{}},"component":{}}],["underbrace{20",{"_index":3003,"title":{},"name":{},"text":{"57":{}},"component":{}}],["underbrace{3}_{\\textit{number_of_array_memb",{"_index":3000,"title":{},"name":{},"text":{"57":{}},"component":{}}],["underbrace{\\text",{"_index":2562,"title":{},"name":{},"text":{"45":{}},"component":{}}],["underbrace{\\textit{gas_pric",{"_index":2460,"title":{},"name":{},"text":{"42":{}},"component":{}}],["underbrace{\\textit{gas_price}\\left",{"_index":2458,"title":{},"name":{},"text":{"42":{}},"component":{}}],["underbrace{\\text{class",{"_index":2558,"title":{},"name":{},"text":{"45":{}},"component":{}}],["underbrace{\\text{fee_data_availability_mode}}_{\\text{32",{"_index":2717,"title":{},"name":{},"text":{"48":{}},"component":{}}],["underbrace{\\text{l1_gas}}_{\\text{60",{"_index":2710,"title":{},"name":{},"text":{"48":{}},"component":{}}],["underbrace{\\text{l2_gas}}_{\\text{60",{"_index":2713,"title":{},"name":{},"text":{"48":{}},"component":{}}],["underbrace{\\text{max_amount}}_{\\text{64",{"_index":2711,"title":{},"name":{},"text":{"48":{}},"component":{}}],["underbrace{\\text{max_price_per_unit}}_{\\text{128",{"_index":2712,"title":{},"name":{},"text":{"48":{}},"component":{}}],["underbrace{\\text{new",{"_index":2560,"title":{},"name":{},"text":{"45":{}},"component":{}}],["underbrace{\\text{nonce_data_availability_mode}}_{\\text{32",{"_index":2716,"title":{},"name":{},"text":{"48":{}},"component":{}}],["underdocu",{"_index":1401,"title":{},"name":{},"text":{"14":{}},"component":{}}],["undergo",{"_index":2690,"title":{},"name":{},"text":{"48":{}},"component":{}}],["underli",{"_index":489,"title":{},"name":{},"text":{"3":{},"32":{},"50":{}},"component":{}}],["understand",{"_index":349,"title":{},"name":{},"text":{"3":{},"21":{},"32":{},"49":{},"57":{}},"component":{}}],["underw",{"_index":2892,"title":{},"name":{},"text":{"51":{}},"component":{}}],["unexpectedli",{"_index":1513,"title":{},"name":{},"text":{"14":{}},"component":{}}],["unfortun",{"_index":1507,"title":{},"name":{},"text":{"14":{}},"component":{}}],["unhappi",{"_index":2792,"title":{},"name":{},"text":{"49":{}},"component":{}}],["uni",{"_index":2050,"title":{},"name":{},"text":{"30":{}},"component":{}}],["unifi",{"_index":2951,"title":{},"name":{},"text":{"55":{}},"component":{}}],["unilater",{"_index":387,"title":{},"name":{},"text":{"3":{}},"component":{}}],["uninterrupt",{"_index":613,"title":{},"name":{},"text":{"3":{}},"component":{}}],["uniqu",{"_index":76,"title":{},"name":{},"text":{"1":{},"30":{},"32":{},"33":{},"37":{},"38":{},"42":{},"46":{},"52":{},"53":{}},"component":{}}],["uniswap",{"_index":2049,"title":{},"name":{},"text":{"30":{}},"component":{}}],["unit",{"_index":91,"title":{"42-9":{}},"name":{},"text":{"1":{},"31":{},"48":{},"56":{},"57":{}},"component":{}}],["univers",{"_index":510,"title":{"37":{}},"name":{"37":{}},"text":{"3":{},"21":{},"34":{},"37":{}},"component":{}}],["unix",{"_index":2964,"title":{},"name":{},"text":{"56":{}},"component":{}}],["unjustifi",{"_index":2235,"title":{},"name":{},"text":{"38":{}},"component":{}}],["unknown",{"_index":664,"title":{},"name":{},"text":{"3":{},"31":{}},"component":{}}],["unless",{"_index":544,"title":{},"name":{},"text":{"3":{},"16":{},"21":{},"52":{}},"component":{}}],["unlik",{"_index":956,"title":{},"name":{},"text":{"10":{},"12":{},"44":{},"46":{}},"component":{}}],["unlimit",{"_index":1418,"title":{},"name":{},"text":{"14":{}},"component":{}}],["unlock",{"_index":520,"title":{},"name":{},"text":{"3":{},"21":{}},"component":{}}],["unnecessari",{"_index":1715,"title":{},"name":{},"text":{"16":{}},"component":{}}],["unprefix",{"_index":1404,"title":{},"name":{},"text":{"14":{}},"component":{}}],["unprov",{"_index":2762,"title":{},"name":{},"text":{"49":{}},"component":{}}],["unproven",{"_index":610,"title":{},"name":{},"text":{"3":{}},"component":{}}],["unrecover",{"_index":628,"title":{},"name":{},"text":{"3":{}},"component":{}}],["unregist",{"_index":1405,"title":{},"name":{},"text":{"14":{}},"component":{}}],["unrel",{"_index":2879,"title":{},"name":{},"text":{"51":{}},"component":{}}],["unsatisfi",{"_index":2744,"title":{"49-3":{}},"name":{},"text":{},"component":{}}],["unsign",{"_index":2972,"title":{"57-3":{}},"name":{},"text":{"57":{}},"component":{}}],["unsupport",{"_index":1023,"title":{"12":{},"12-2":{},"48-15":{},"48-21":{}},"name":{},"text":{"12":{},"48":{}},"component":{}}],["until",{"_index":1523,"title":{},"name":{},"text":{"14":{},"47":{},"53":{}},"component":{}}],["untouch",{"_index":2374,"title":{},"name":{},"text":{"42":{}},"component":{}}],["unus",{"_index":843,"title":{},"name":{},"text":{"6":{}},"component":{}}],["unwrap",{"_index":2208,"title":{},"name":{},"text":{"37":{},"44":{}},"component":{}}],["unwrap_syscal",{"_index":3043,"title":{},"name":{},"text":{"58":{},"59":{}},"component":{}}],["up",{"_index":302,"title":{"9":{},"11":{}},"name":{},"text":{"2":{},"3":{},"5":{},"7":{},"8":{},"10":{},"11":{},"21":{},"27":{},"30":{},"31":{},"38":{},"39":{},"42":{},"47":{},"49":{},"56":{}},"component":{}}],["upcom",{"_index":1072,"title":{"15":{}},"name":{},"text":{"13":{},"14":{}},"component":{}}],["upcoming_vers",{"_index":1530,"title":{},"name":{"15":{}},"text":{},"component":{}}],["updat",{"_index":244,"title":{"13-15":{},"15-1":{},"16-10":{},"42-15":{}},"name":{},"text":{"1":{},"3":{},"13":{},"14":{},"15":{},"16":{},"21":{},"23":{},"25":{},"27":{},"30":{},"31":{},"38":{},"42":{},"44":{},"45":{},"46":{},"47":{},"59":{}},"component":{}}],["updates}}_{\\text{64",{"_index":2563,"title":{},"name":{},"text":{"45":{}},"component":{}}],["upgrad",{"_index":926,"title":{},"name":{},"text":{"9":{},"13":{},"14":{},"16":{},"20":{}},"component":{}}],["upon",{"_index":248,"title":{},"name":{},"text":{"1":{},"3":{},"26":{},"31":{},"34":{},"37":{},"44":{}},"component":{}}],["urg",{"_index":1033,"title":{},"name":{},"text":{"12":{}},"component":{}}],["url",{"_index":705,"title":{},"name":{},"text":{"5":{},"14":{},"18":{},"22":{},"24":{}},"component":{}}],["us",{"_index":52,"title":{},"name":{},"text":{"1":{},"2":{},"3":{},"5":{},"6":{},"7":{},"9":{},"10":{},"11":{},"12":{},"13":{},"14":{},"16":{},"17":{},"19":{},"20":{},"21":{},"25":{},"26":{},"27":{},"29":{},"30":{},"31":{},"33":{},"34":{},"35":{},"37":{},"39":{},"40":{},"41":{},"42":{},"43":{},"44":{},"46":{},"47":{},"48":{},"49":{},"51":{},"53":{},"54":{},"55":{},"56":{},"58":{},"59":{}},"component":{}}],["usabl",{"_index":1670,"title":{},"name":{},"text":{"16":{},"35":{}},"component":{}}],["usag",{"_index":345,"title":{"6-1":{}},"name":{},"text":{"3":{},"9":{},"13":{},"38":{},"42":{},"48":{},"56":{}},"component":{}}],["usd",{"_index":2036,"title":{},"name":{},"text":{"30":{}},"component":{}}],["usdc",{"_index":1977,"title":{"30-3":{}},"name":{},"text":{"27":{},"30":{}},"component":{}}],["usdt",{"_index":2039,"title":{},"name":{},"text":{"30":{}},"component":{}}],["user",{"_index":36,"title":{},"name":{},"text":{"1":{},"3":{},"11":{},"13":{},"14":{},"19":{},"21":{},"26":{},"27":{},"30":{},"31":{},"33":{},"35":{},"37":{},"42":{},"44":{},"47":{},"48":{},"49":{},"50":{},"56":{}},"component":{}}],["user’",{"_index":1979,"title":{},"name":{},"text":{"27":{},"35":{},"38":{},"49":{}},"component":{}}],["usiz",{"_index":2977,"title":{},"name":{},"text":{"57":{}},"component":{}}],["usual",{"_index":2263,"title":{},"name":{},"text":{"39":{},"42":{},"57":{}},"component":{}}],["utc",{"_index":2118,"title":{},"name":{},"text":{"31":{},"56":{}},"component":{}}],["utf",{"_index":2806,"title":{},"name":{},"text":{"50":{}},"component":{}}],["util",{"_index":605,"title":{},"name":{},"text":{"3":{},"13":{},"14":{}},"component":{}}],["v",{"_index":592,"title":{"6-12":{}},"name":{},"text":{"3":{},"6":{},"7":{},"13":{},"16":{},"42":{}},"component":{}}],["v.0.13.0",{"_index":412,"title":{},"name":{},"text":{"3":{}},"component":{}}],["v.0.3.0",{"_index":1271,"title":{},"name":{},"text":{"13":{}},"component":{}}],["v0",{"_index":1037,"title":{"20":{},"48-7":{},"48-15":{}},"name":{},"text":{"12":{},"14":{},"20":{},"30":{},"48":{},"51":{},"55":{}},"component":{}}],["v0.1",{"_index":1460,"title":{},"name":{},"text":{"14":{}},"component":{}}],["v0.1.0",{"_index":1067,"title":{"13-46":{}},"name":{},"text":{},"component":{}}],["v0.1.0…​v0.2.0",{"_index":1281,"title":{},"name":{},"text":{"13":{}},"component":{}}],["v0.10.0",{"_index":1552,"title":{"16-24":{}},"name":{},"text":{},"component":{}}],["v0.10.1",{"_index":1550,"title":{"16-23":{}},"name":{},"text":{"48":{}},"component":{}}],["v0.10.2",{"_index":1322,"title":{"14-72":{},"16-22":{}},"name":{},"text":{"14":{}},"component":{}}],["v0.10.3",{"_index":1050,"title":{"16-21":{}},"name":{},"text":{"12":{},"13":{},"14":{}},"component":{}}],["v0.11",{"_index":1443,"title":{},"name":{},"text":{"14":{}},"component":{}}],["v0.11.0",{"_index":1041,"title":{"16-20":{},"45-2":{},"45-3":{},"45-4":{},"45-5":{},"45-6":{},"45-7":{}},"name":{},"text":{"12":{},"13":{},"14":{},"16":{},"49":{}},"component":{}}],["v0.11.1",{"_index":1396,"title":{"16-19":{}},"name":{},"text":{"14":{},"16":{}},"component":{}}],["v0.11.2",{"_index":1237,"title":{"16-18":{}},"name":{},"text":{"13":{},"14":{},"16":{}},"component":{}}],["v0.12",{"_index":1336,"title":{},"name":{},"text":{"14":{}},"component":{}}],["v0.12.0",{"_index":1226,"title":{"16-17":{}},"name":{},"text":{"13":{},"14":{},"16":{},"59":{}},"component":{}}],["v0.12.1",{"_index":1195,"title":{"16-16":{}},"name":{},"text":{"13":{},"16":{}},"component":{}}],["v0.12.2",{"_index":1194,"title":{"16-15":{}},"name":{},"text":{"13":{},"16":{}},"component":{}}],["v0.12.3",{"_index":1073,"title":{"16-13":{}},"name":{},"text":{"13":{},"16":{}},"component":{}}],["v0.13.0",{"_index":1040,"title":{"16-12":{}},"name":{},"text":{"12":{},"16":{}},"component":{}}],["v0.13.1",{"_index":1534,"title":{"16-2":{}},"name":{},"text":{"16":{},"42":{}},"component":{}}],["v0.2",{"_index":1369,"title":{},"name":{},"text":{"14":{}},"component":{}}],["v0.2.0",{"_index":1066,"title":{"13-41":{}},"name":{},"text":{},"component":{}}],["v0.2.0…​v0.2.1",{"_index":1261,"title":{},"name":{},"text":{"13":{}},"component":{}}],["v0.2.1",{"_index":1065,"title":{"13-40":{}},"name":{},"text":{},"component":{}}],["v0.2.1…​v0.2.2",{"_index":1256,"title":{},"name":{},"text":{"13":{}},"component":{}}],["v0.2.2",{"_index":1064,"title":{"13-38":{}},"name":{},"text":{},"component":{}}],["v0.3",{"_index":1370,"title":{},"name":{},"text":{"14":{}},"component":{}}],["v0.3.0",{"_index":1063,"title":{"13-34":{}},"name":{},"text":{"21":{}},"component":{}}],["v0.3.0…​v0.3.1",{"_index":1236,"title":{},"name":{},"text":{"13":{}},"component":{}}],["v0.3.1",{"_index":1062,"title":{"13-30":{}},"name":{},"text":{"14":{}},"component":{}}],["v0.4",{"_index":1361,"title":{},"name":{},"text":{"14":{}},"component":{}}],["v0.4.0",{"_index":1061,"title":{"13-27":{},"14-70":{}},"name":{},"text":{"13":{}},"component":{}}],["v0.4.1",{"_index":1060,"title":{"13-23":{},"14-61":{}},"name":{},"text":{"14":{}},"component":{}}],["v0.4.2",{"_index":1320,"title":{"14-58":{}},"name":{},"text":{},"component":{}}],["v0.4.3",{"_index":1319,"title":{"14-55":{}},"name":{},"text":{},"component":{}}],["v0.4.4",{"_index":1318,"title":{"14-50":{}},"name":{},"text":{"14":{}},"component":{}}],["v0.4.5",{"_index":1317,"title":{"14-46":{}},"name":{},"text":{},"component":{}}],["v0.5.0",{"_index":1059,"title":{"13-19":{},"14-37":{}},"name":{},"text":{"13":{}},"component":{}}],["v0.5.1",{"_index":1058,"title":{"13-17":{},"14-35":{}},"name":{},"text":{},"component":{}}],["v0.5.2",{"_index":1314,"title":{"14-32":{}},"name":{},"text":{"14":{}},"component":{}}],["v0.5.3",{"_index":1313,"title":{"14-29":{}},"name":{},"text":{},"component":{}}],["v0.5.4",{"_index":1312,"title":{"14-26":{}},"name":{},"text":{},"component":{}}],["v0.6.0",{"_index":1056,"title":{"13-12":{}},"name":{},"text":{},"component":{}}],["v0.7.0",{"_index":1054,"title":{"13-6":{}},"name":{},"text":{},"component":{}}],["v0.7.3",{"_index":1051,"title":{"13-1":{}},"name":{},"text":{},"component":{}}],["v0.9.0",{"_index":1556,"title":{"16-26":{}},"name":{},"text":{},"component":{}}],["v0.9.1",{"_index":1554,"title":{"16-25":{}},"name":{},"text":{},"component":{}}],["v0_4",{"_index":1130,"title":{},"name":{},"text":{"13":{}},"component":{}}],["v0_5",{"_index":1129,"title":{},"name":{},"text":{"13":{}},"component":{}}],["v1",{"_index":1585,"title":{"55":{},"48-5":{},"48-6":{},"48-13":{},"48-14":{},"48-19":{},"48-20":{}},"name":{},"text":{"16":{},"34":{},"48":{},"51":{},"55":{}},"component":{}}],["v1.0.0",{"_index":1636,"title":{},"name":{},"text":{"16":{}},"component":{}}],["v1.1.0",{"_index":1373,"title":{},"name":{},"text":{"14":{}},"component":{}}],["v1.4.0",{"_index":1606,"title":{},"name":{},"text":{"16":{}},"component":{}}],["v2",{"_index":2573,"title":{"55":{},"48-11":{},"48-12":{}},"name":{},"text":{"45":{},"48":{},"51":{},"55":{}},"component":{}}],["v2.0.0",{"_index":1038,"title":{"51-8":{}},"name":{},"text":{"12":{},"14":{},"51":{},"55":{}},"component":{}}],["v2.2.0",{"_index":2864,"title":{},"name":{},"text":{"51":{}},"component":{}}],["v2.3.0",{"_index":2821,"title":{"51-3":{}},"name":{},"text":{"51":{}},"component":{}}],["v2.4.0",{"_index":1608,"title":{},"name":{},"text":{"16":{}},"component":{}}],["v3",{"_index":1600,"title":{"42-6":{},"48-3":{},"48-4":{},"48-9":{},"48-10":{},"48-17":{},"48-18":{}},"name":{},"text":{"16":{},"34":{},"42":{},"47":{},"48":{}},"component":{}}],["v_k",{"_index":2355,"title":{},"name":{},"text":{"42":{}},"component":{}}],["v_l",{"_index":2636,"title":{},"name":{},"text":{"46":{}},"component":{}}],["v_r",{"_index":2639,"title":{},"name":{},"text":{"46":{}},"component":{}}],["valid",{"_index":127,"title":{"38":{},"38-1":{},"38-3":{}},"name":{},"text":{"1":{},"2":{},"6":{},"14":{},"16":{},"23":{},"27":{},"34":{},"35":{},"36":{},"38":{},"45":{},"47":{},"48":{},"49":{}},"component":{}}],["validate/execut",{"_index":1668,"title":{},"name":{},"text":{"16":{}},"component":{}}],["validate_and_execut",{"_index":2232,"title":{},"name":{"38":{}},"text":{},"component":{}}],["validate_declar",{"_index":1673,"title":{},"name":{},"text":{"16":{}},"component":{}}],["validli",{"_index":360,"title":{},"name":{},"text":{"3":{}},"component":{}}],["valu",{"_index":256,"title":{"57-4":{},"57-5":{},"59-5":{},"59-12":{},"59-19":{},"59-25":{},"59-31":{},"59-38":{},"59-44":{},"59-51":{},"59-57":{},"59-64":{}},"name":{"40":{}},"text":{"1":{},"3":{},"5":{},"7":{},"13":{},"14":{},"16":{},"27":{},"30":{},"31":{},"34":{},"38":{},"39":{},"42":{},"44":{},"45":{},"46":{},"47":{},"48":{},"49":{},"51":{},"53":{},"54":{},"56":{},"57":{},"58":{},"59":{}},"component":{}}],["valuabl",{"_index":371,"title":{},"name":{},"text":{"3":{},"14":{}},"component":{}}],["vanilla",{"_index":98,"title":{},"name":{},"text":{"1":{}},"component":{}}],["var.address",{"_index":2935,"title":{},"name":{},"text":{"54":{}},"component":{}}],["var.read",{"_index":2932,"title":{},"name":{},"text":{"54":{},"59":{}},"component":{}}],["var.writ",{"_index":2934,"title":{},"name":{},"text":{"54":{},"59":{}},"component":{}}],["var/lib/juno",{"_index":1182,"title":{},"name":{},"text":{"13":{}},"component":{}}],["var1",{"_index":2874,"title":{},"name":{},"text":{"51":{}},"component":{}}],["var2",{"_index":2886,"title":{},"name":{},"text":{"51":{}},"component":{}}],["vari",{"_index":3031,"title":{},"name":{},"text":{"58":{}},"component":{}}],["variabl",{"_index":691,"title":{"9-2":{},"54-3":{}},"name":{},"text":{"5":{},"6":{},"9":{},"11":{},"13":{},"14":{},"16":{},"54":{},"57":{},"59":{}},"component":{}}],["variable_nam",{"_index":2936,"title":{},"name":{},"text":{"54":{}},"component":{}}],["variable’",{"_index":2928,"title":{},"name":{},"text":{"54":{}},"component":{}}],["variant",{"_index":1005,"title":{"51-5":{},"51-6":{},"51-7":{}},"name":{},"text":{"11":{},"51":{},"55":{},"57":{}},"component":{}}],["variant’",{"_index":3014,"title":{},"name":{},"text":{"57":{}},"component":{}}],["variou",{"_index":658,"title":{},"name":{},"text":{"3":{},"13":{},"21":{},"27":{},"31":{},"32":{},"59":{}},"component":{}}],["vastli",{"_index":2182,"title":{},"name":{},"text":{"35":{}},"component":{}}],["vector",{"_index":2372,"title":{},"name":{},"text":{"42":{}},"component":{}}],["ver",{"_index":1253,"title":{},"name":{},"text":{"13":{}},"component":{}}],["verbos",{"_index":1276,"title":{},"name":{},"text":{"13":{}},"component":{}}],["veri",{"_index":1367,"title":{},"name":{},"text":{"14":{},"39":{},"49":{}},"component":{}}],["verif",{"_index":225,"title":{},"name":{},"text":{"1":{},"13":{},"16":{},"21":{},"33":{},"42":{},"47":{}},"component":{}}],["verifi",{"_index":32,"title":{"1-25":{}},"name":{},"text":{"1":{},"3":{},"9":{},"13":{},"14":{},"16":{},"22":{},"27":{},"42":{},"44":{},"47":{},"48":{},"49":{}},"component":{}}],["version",{"_index":237,"title":{"15":{},"6-12":{},"14-71":{},"15-1":{},"22-2":{},"22-3":{},"42-7":{},"48-1":{}},"name":{},"text":{"1":{},"2":{},"6":{},"7":{},"8":{},"9":{},"10":{},"11":{},"13":{},"14":{},"15":{},"16":{},"17":{},"21":{},"27":{},"30":{},"31":{},"37":{},"39":{},"42":{},"43":{},"44":{},"46":{},"48":{},"50":{},"51":{},"55":{},"56":{}},"component":{}}],["version=2.1.0",{"_index":872,"title":{},"name":{},"text":{"7":{}},"component":{}}],["version_not",{"_index":1558,"title":{},"name":{"16":{}},"text":{},"component":{}}],["vi",{"_index":597,"title":{},"name":{},"text":{"3":{}},"component":{}}],["via",{"_index":434,"title":{},"name":{},"text":{"3":{},"5":{},"10":{},"13":{},"14":{},"27":{},"35":{},"44":{},"46":{},"49":{},"50":{},"51":{},"55":{},"59":{}},"component":{}}],["view",{"_index":816,"title":{},"name":{},"text":{"6":{},"14":{},"16":{},"31":{},"51":{},"55":{}},"component":{}}],["viewblock",{"_index":1940,"title":{},"name":{},"text":{"24":{}},"component":{}}],["virtual",{"_index":117,"title":{},"name":{},"text":{"1":{},"21":{}},"component":{}}],["visibl",{"_index":2068,"title":{"31-4":{},"31-12":{},"31-20":{},"31-29":{},"31-37":{},"31-46":{},"31-55":{},"31-63":{},"31-72":{},"31-81":{},"31-89":{},"31-97":{},"31-105":{},"31-113":{},"31-121":{}},"name":{},"text":{},"component":{}}],["visit",{"_index":902,"title":{},"name":{},"text":{"8":{}},"component":{}}],["visual",{"_index":1819,"title":{"21-35":{}},"name":{},"text":{"21":{}},"component":{}}],["vital",{"_index":941,"title":{},"name":{},"text":{"9":{}},"component":{}}],["vm",{"_index":11,"title":{"1-7":{}},"name":{},"text":{"1":{},"13":{},"14":{},"16":{},"40":{},"57":{}},"component":{}}],["volit",{"_index":1602,"title":{},"name":{},"text":{"16":{}},"component":{}}],["voluntarili",{"_index":362,"title":{},"name":{},"text":{"3":{}},"component":{}}],["vote",{"_index":406,"title":{"22-5":{}},"name":{},"text":{"3":{},"22":{},"30":{}},"component":{}}],["voyag",{"_index":1892,"title":{},"name":{},"text":{"21":{},"24":{}},"component":{}}],["vstrk",{"_index":1910,"title":{},"name":{},"text":{"22":{},"30":{}},"component":{}}],["vulner",{"_index":617,"title":{},"name":{},"text":{"3":{},"21":{},"30":{}},"component":{}}],["w",{"_index":1702,"title":{},"name":{},"text":{"16":{},"42":{}},"component":{}}],["w_k",{"_index":2356,"title":{},"name":{},"text":{"42":{}},"component":{}}],["wait",{"_index":1455,"title":{},"name":{},"text":{"14":{},"27":{},"35":{},"44":{}},"component":{}}],["wallet",{"_index":546,"title":{"11-5":{}},"name":{},"text":{"3":{},"5":{},"10":{},"11":{},"13":{},"16":{},"21":{},"27":{},"33":{},"34":{},"35":{},"48":{}},"component":{}}],["wallet_nam",{"_index":734,"title":{},"name":{},"text":{"5":{}},"component":{}}],["wallet_provid",{"_index":755,"title":{},"name":{},"text":{"5":{}},"component":{}}],["wallets/deploy",{"_index":984,"title":{},"name":{},"text":{"11":{}},"component":{}}],["wallets/deployer/account.json",{"_index":947,"title":{},"name":{},"text":{"9":{},"11":{}},"component":{}}],["wallets/deployer/keystore.json",{"_index":949,"title":{},"name":{},"text":{"9":{},"11":{}},"component":{}}],["wallet’",{"_index":969,"title":{},"name":{},"text":{"11":{}},"component":{}}],["want",{"_index":874,"title":{},"name":{},"text":{"7":{},"18":{},"21":{},"31":{},"38":{},"46":{},"51":{},"59":{}},"component":{}}],["warn",{"_index":1389,"title":{},"name":{},"text":{"14":{}},"component":{}}],["warranti",{"_index":611,"title":{},"name":{},"text":{"3":{}},"component":{}}],["wasn’t",{"_index":1988,"title":{},"name":{},"text":{"27":{}},"component":{}}],["way",{"_index":315,"title":{},"name":{},"text":{"2":{},"5":{},"11":{},"16":{},"21":{},"34":{},"35":{},"37":{},"49":{},"51":{},"54":{}},"component":{}}],["wbtc",{"_index":1976,"title":{},"name":{},"text":{"27":{},"30":{}},"component":{}}],["weak",{"_index":616,"title":{},"name":{},"text":{"3":{}},"component":{}}],["web3.j",{"_index":2100,"title":{},"name":{},"text":{"31":{}},"component":{}}],["websocket",{"_index":1124,"title":{},"name":{},"text":{"13":{},"14":{}},"component":{}}],["week",{"_index":3007,"title":{},"name":{},"text":{"57":{}},"component":{}}],["week::monday",{"_index":3015,"title":{},"name":{},"text":{"57":{}},"component":{}}],["week::sunday",{"_index":3013,"title":{},"name":{},"text":{"57":{}},"component":{}}],["wei",{"_index":2102,"title":{},"name":{},"text":{"31":{},"42":{}},"component":{}}],["weight",{"_index":2441,"title":{},"name":{},"text":{"42":{}},"component":{}}],["well",{"_index":413,"title":{},"name":{},"text":{"3":{},"12":{},"14":{},"21":{},"30":{}},"component":{}}],["we’ll",{"_index":957,"title":{},"name":{},"text":{"10":{}},"component":{}}],["we’v",{"_index":1077,"title":{},"name":{},"text":{"13":{}},"component":{}}],["whatsoev",{"_index":645,"title":{},"name":{},"text":{"3":{}},"component":{}}],["what’",{"_index":1082,"title":{},"name":{},"text":{"13":{},"14":{},"49":{}},"component":{}}],["whenev",{"_index":2456,"title":{},"name":{},"text":{"42":{},"44":{},"56":{}},"component":{}}],["wherea",{"_index":1417,"title":{},"name":{},"text":{"14":{},"37":{}},"component":{}}],["wherebi",{"_index":2176,"title":{},"name":{},"text":{"35":{}},"component":{}}],["whether",{"_index":207,"title":{},"name":{},"text":{"1":{},"14":{},"16":{},"31":{},"32":{},"33":{},"34":{},"42":{}},"component":{}}],["whitelist",{"_index":2800,"title":{},"name":{},"text":{"49":{}},"component":{}}],["whole",{"_index":569,"title":{},"name":{},"text":{"3":{},"37":{}},"component":{}}],["whose",{"_index":269,"title":{},"name":{},"text":{"1":{},"16":{},"42":{},"45":{},"46":{},"51":{},"57":{},"59":{}},"component":{}}],["will",{"_index":2405,"title":{},"name":{},"text":{"42":{},"47":{},"48":{},"56":{}},"component":{}}],["window",{"_index":915,"title":{"9-5":{},"21-6":{}},"name":{},"text":{"9":{}},"component":{}}],["wish",{"_index":3030,"title":{},"name":{},"text":{"58":{}},"component":{}}],["with_attr",{"_index":828,"title":{},"name":{},"text":{"6":{}},"component":{}}],["withdraw",{"_index":1798,"title":{"27-6":{},"27-7":{},"27-8":{},"30-5":{},"31-127":{}},"name":{},"text":{"20":{},"27":{},"30":{},"31":{}},"component":{}}],["withdrawallimit.sol",{"_index":2058,"title":{},"name":{},"text":{"30":{}},"component":{}}],["withdrawal’",{"_index":1993,"title":{},"name":{},"text":{"27":{},"31":{}},"component":{}}],["withdrawn",{"_index":2120,"title":{},"name":{},"text":{"31":{}},"component":{}}],["within",{"_index":109,"title":{},"name":{},"text":{"1":{},"3":{},"7":{},"11":{},"16":{},"20":{},"23":{},"28":{},"30":{},"31":{},"32":{},"33":{},"35":{},"42":{},"46":{},"59":{}},"component":{}}],["without",{"_index":150,"title":{"42-11":{}},"name":{},"text":{"1":{},"2":{},"3":{},"5":{},"10":{},"12":{},"14":{},"16":{},"20":{},"21":{},"38":{},"42":{},"45":{},"49":{},"50":{},"53":{}},"component":{}}],["wojciecho",{"_index":1158,"title":{},"name":{},"text":{"13":{}},"component":{}}],["word",{"_index":2375,"title":{},"name":{},"text":{"42":{},"45":{},"57":{}},"component":{}}],["work",{"_index":171,"title":{"53-3":{}},"name":{},"text":{"1":{},"3":{},"5":{},"6":{},"7":{},"8":{},"10":{},"11":{},"13":{},"14":{},"21":{},"31":{},"36":{},"38":{},"42":{},"46":{},"49":{}},"component":{}}],["worker",{"_index":1200,"title":{},"name":{},"text":{"13":{}},"component":{}}],["world",{"_index":2422,"title":{},"name":{},"text":{"42":{}},"component":{}}],["worri",{"_index":1886,"title":{},"name":{},"text":{"21":{}},"component":{}}],["wrap",{"_index":2034,"title":{},"name":{},"text":{"30":{},"37":{},"59":{}},"component":{}}],["wrapper",{"_index":2099,"title":{},"name":{},"text":{"31":{}},"component":{}}],["write",{"_index":703,"title":{},"name":{},"text":{"5":{},"10":{},"13":{},"16":{},"21":{},"23":{},"42":{},"49":{},"51":{},"54":{},"59":{}},"component":{}}],["written",{"_index":58,"title":{},"name":{},"text":{"1":{},"2":{},"17":{},"20":{},"21":{},"44":{},"48":{},"49":{},"50":{},"51":{},"55":{}},"component":{}}],["wrong",{"_index":1488,"title":{},"name":{},"text":{"14":{}},"component":{}}],["wrote",{"_index":1856,"title":{},"name":{},"text":{"21":{}},"component":{}}],["wsteth",{"_index":2042,"title":{},"name":{},"text":{"30":{}},"component":{}}],["www.abdk.consult",{"_index":1759,"title":{},"name":{},"text":{"18":{}},"component":{}}],["www.openzeppelin.com",{"_index":1770,"title":{},"name":{},"text":{"18":{}},"component":{}}],["www.trailofbits.com",{"_index":1776,"title":{},"name":{},"text":{"18":{}},"component":{}}],["www.zellic.io",{"_index":1778,"title":{},"name":{},"text":{"18":{}},"component":{}}],["x",{"_index":964,"title":{"11-6":{}},"name":{},"text":{"11":{},"16":{},"21":{},"39":{},"41":{},"57":{},"58":{}},"component":{}}],["x^3",{"_index":2336,"title":{},"name":{},"text":{"41":{}},"component":{}}],["y",{"_index":1700,"title":{},"name":{},"text":{"16":{},"39":{},"58":{}},"component":{}}],["y^2",{"_index":2334,"title":{},"name":{},"text":{"41":{}},"component":{}}],["y^2=x^3+\\alpha",{"_index":2269,"title":{},"name":{},"text":{"39":{}},"component":{}}],["yield",{"_index":2410,"title":{},"name":{},"text":{"42":{},"49":{}},"component":{}}],["yourself",{"_index":2001,"title":{},"name":{},"text":{"28":{}},"component":{}}],["youv",{"_index":1020,"title":{},"name":{},"text":{"11":{}},"component":{}}],["you’ll",{"_index":2909,"title":{},"name":{},"text":{"51":{}},"component":{}}],["you’r",{"_index":770,"title":{},"name":{},"text":{"5":{},"21":{},"32":{}},"component":{}}],["z",{"_index":1701,"title":{},"name":{},"text":{"16":{}},"component":{}}],["zellic",{"_index":1777,"title":{},"name":{},"text":{"18":{}},"component":{}}],["zeppelin",{"_index":1769,"title":{},"name":{},"text":{"18":{}},"component":{}}],["zero",{"_index":284,"title":{},"name":{},"text":{"2":{},"5":{},"13":{},"16":{},"21":{},"33":{},"34":{},"42":{},"43":{},"46":{},"48":{}},"component":{}}],["zk",{"_index":286,"title":{},"name":{},"text":{"2":{},"39":{},"45":{}},"component":{}}],["zklend",{"_index":1839,"title":{},"name":{},"text":{"21":{}},"component":{}}]],"pipeline":["stemmer"]},"store":{"documents":{"1":{"id":1,"text":"Refers to the capability of users to define their own account logic instead of it being dictated by the protocol. An L2 smart contract, implemented in Cairo, with programmable logic that implements a user account on Starknet. An account contract implements special methods that enable initiating transactions. See also account abstraction The Starknet Node API uses the Remote Procedure Call (RPC) architectural style, written in JSON format. For complete information on the Starknet Node API in JSON RPC format, see starknet_api_openrpc.json on Github. See also RPC Ordered sets of Starknet transactions that are run using the Starknet OS, resulting in one aggregated state change that is then committed to the Starknet L1 Core Contract. A block has the following identifiers: block hash A unique stable identifier that can be used to query and refer to the block. block number A number representing the location of the block in the sequence of accepted blocks in Starknet. Cairo programming language term A predefined optimized low-level execution unit that is added to the Cairo CPU board to perform predefined computations that are expensive to perform in vanilla Cairo, including range-checks, Pedersen hash calculations, and ECDSA. A fundamental computational operation or instruction in the Cairo language. The smallest unit of execution within the Cairo VM, typically involving mathematical, logical, or control-flow operations that collectively define the behavior of a program. The Cairo Virtual Machine (VM) is software that knows how to execute compiled Cairo byte-code. The result of this execution is the program trace that can then be sent to a STARK prover in order to prove the validity of the instruction expressed in the Cairo code. The definition of a contract. It includes Cairo byte code, hint information, entry point names, and everything that defines its semantics. A deployed contract that corresponds to a class. Only contract instances act as true contracts, in that they have their own storage and can be called by transactions or other contracts. The smallest denomination of STRK. 1 fri = 10-18 STRK. A node in the Starknet network that is used only for querying the current Starknet state. It can independently, without querying additional nodes, answer queries about the current state of the Starknet network, including the L1 state. A full state node does not batch transactions or prove batches. A single transaction that executes multiple bundled transactions, which are signed once on Starknet. If one call fails, the entire operation is aborted. An entity that receives the output of Cairo programs and generates proofs to be verified. The prover submits the proof to the verifier that registers the fact on L1. Their main task is to validate the work of athe sequencers when they receive the block produced by the sequencer, and to generate proofs that these processes were correctly performed. See also SHARP verifier The Starknet RPC API provides clients an interface to retrieve information on the state of the chain and to interact with it, such as by posting transactions or estimating the fee of a transaction before it is sent. See also API A set of services which together receive transactions from the network, put them in order, check their validity, and build blocks. The Shared Prover (SHARP), is a mechanism used in Starknet that aggregates multiple Cairo programs from different users, each containing different logic. These Cairo programs are then executed together, generating a single proof common to all the programs. An intermediate representation between Cairo and Casm. Sierra code is then compiled to a Casm program with the property that, for any input, the execution of the program is provable. In particular, it ensures that the execution of a transaction is provable regardless of whether the execution succeeded or was reverted due to an error. Additional resources Cairo and Sierra The component of a Starknet account that authorizes a transaction and is decoupled from the account. It is a keypair consisting of a private and public key. A smart contract with a private key for signing transactions. See also account descriptor A proof system that uses cryptography to provide polylogarithmic verification resources and proof size, with minimal and post-quantum-secure assumptions. A smart contract deployed on Ethereum. It’s address is 0xc662c410c0ecf747543f5ba90660f6abebd9c8c4. It defines the state of Starknet by storing: The commitment to the L2 state. The Starknet OS program hash – effectively defining the version of Starknet the network is running. The committed state on the L1 Core Contract acts as the consensus mechanism of Starknet,that is, the system is secured by the L1 Ethereum consensus. In addition to maintaining the state, the Starknet L1 Core Contract is the main hub of operations for Starknet on L1. Specifically: It stores the list of allowed verifier contracts that can verify state update transactions It deals with cross-layer interaction between L1 and L2. The Cairo program that, upon receiving a set of transaction as input, executes the state transition. For more information, see Starknet state. The integrity of this computation is what is actually proven and verified. The set of all the contracts' code and all the memory slots and their values, in every contract’s storage. See also Starknet state A transaction can be seen as a message containing a set of instructions that describe a state transition. The Starknet protocol has the following types of transactions, which affect different parts of the state: DECLARE INVOKE DEPLOY_ACCOUNT See also Transaction types Starknet state The data describing the difference between two states. It contains information on every contract whose storage was updated and additional information on contract deployments. A set of L1 smart contracts whose purpose is to verify STARK proofs submitted by the Shared Prover (SHARP)","title":"Glossary","component":"documentation","version":"","name":"glossary","url":"/documentation/glossary/","titles":[{"text":"account abstraction","hash":"account-abstraction","id":1},{"text":"account contract","hash":"account_contract","id":2},{"text":"API","hash":"api","id":3},{"text":"blocks (previously known as batches)","hash":"blocks-previously-known-as-batches","id":4},{"text":"builtin","hash":"builtin","id":5},{"text":"Cairo step","hash":"cairo-step","id":6},{"text":"Cairo VM","hash":"cairovm","id":7},{"text":"contract class","hash":"contract_class","id":8},{"text":"contract instance","hash":"contract_instance","id":9},{"text":"fri","hash":"fri","id":10},{"text":"full node","hash":"full-node","id":11},{"text":"multicall","hash":"multicall","id":12},{"text":"prover","hash":"prover","id":13},{"text":"RPC","hash":"rpc","id":14},{"text":"sequencer","hash":"sequencer","id":15},{"text":"SHARP","hash":"SHARP","id":16},{"text":"Sierra","hash":"sierra","id":17},{"text":"signer","hash":"signer","id":18},{"text":"STARK","hash":"stark","id":19},{"text":"Starknet L1 Core Contract","hash":"starknet-l1-core-contract","id":20},{"text":"Starknet OS","hash":"starknet-os","id":21},{"text":"Starknet state","hash":"starknet-state","id":22},{"text":"transaction","hash":"transaction","id":23},{"text":"state diff","hash":"statediff","id":24},{"text":"verifier","hash":"verifier","id":25}]},"2":{"id":2,"text":"Starknet is a permissionless, Validity-Rollup, also known as a zero-knowledge rollup (ZK rollup) for Ethereum. It operates as a Layer 2 (L2) blockchain, enabling any dApp to achieve massive scale for its computation without compromising on Ethereum’s composability and security. Starknet aims to achieves secure low cost transactions and high performance by using the STARK cryptographic proof system. Starknet contracts and the Starknet OS are written in Cairo, a custom-built and specialized programming language. Set up your environment and get started with Starknet. Explore > Learn about Starknet's architecture including contracts and accounts. Explore > Learn more about the current version of Starknet. Explore > The Starknet Book The Cairo docs Starknet development tools Full nodes and API services Limits and triggers Cairo 0 tools Block explorers Audit providers If you are interested in contributing to Starknet technical documentation, the following list provides quick links to help you get started: How to contribute For information on how you can contribute, see Different ways to contribute. Guidelines For basic guidelines to help us keep our content consistent, see Documentation guidelines. Style guide See the Starknet documentation supplementary style guide.","title":"Overview","component":"documentation","version":"","name":"index","url":"/documentation/","titles":[{"text":"Explore Starknet","hash":"explore_starknet","id":1},{"text":"Quick start","id":2},{"text":"Architecture","id":3},{"text":"Releases","id":4},{"text":"Developer tools and resources","hash":"developer_tools_and_resources","id":5},{"text":"Contribute to the Starknet docs","hash":"contribute_to_the_starknet_docs","id":6}]},"3":{"id":3,"text":"Starknet is a developing decentralized protocol and the economic mechanisms described here, also known as tokenomics, are subject to change based on governance decisions made by the larger community of Starknet. For more details on Starknet’s governance processes see the Starknet Governance Hub. This document describes certain economic fundamentals of the Starknet token. This document is intended for informational purposes only and is meant to outline the usage and functionalities of the asset within Starknet. It is important to understand that the primary purpose of the Starknet token, STRK, is to facilitate operations and activities on Starknet and it is not intended to serve as an investment. Blockchains work through a combination of cryptography and economic incentives. Cryptography limits what actors in the system can do, for example, transactions must be validly signed to be included in the chain. Economic incentives encourage actors to voluntarily perform actions that maintain the network’s capabilities when spending their own resources, for example, miners or stakers actively publish new blocks to the chain because they can receive fees and new tokens as a reward. Blockchains are valuable because they are data structures maintained by diverse and, ideally, large groups of otherwise unaffiliated persons. This gives them resilience: Any one participant can disappear, but the data structure is preserved. This also gives them censorship resistance: No single person can unilaterally decide to forbid certain persons from using the network. Starknet operates as a Layer 2 (L2) network on top of Ethereum. Today, Starknet achieves secure low-cost transactions by using the STARK cryptographic proof system to reduce the size of transaction data while preserving and verifying the integrity of that data. Still under development, Starknet will achieve resilience and censorship resistance by using a token, the Starknet token (STRK), to incentivize network participants to sequence transactions for users of the network and to ensure that there is a provably fair mechanism, a proof-of-stake mechanism, to determine who should sequence and submit a proof for the network blocks. A proof-of-stake mechanism might also be used to facilitate data availability solutions and other significant services required for network operations. STRK is the mechanism for paying fees to enable operation of the network, maintaining and securing the network by enabling staking for consensus, and deciding on Starknet’s values and technology goals by voting for governance proposals. Transaction fees: Originally, fees in Starknet were paid only in Ether (ETH). As of v.0.13.0, fees for transactions on the network can be paid using STRK, as well as ETH. A portion of the fees paid in STRK are converted to ETH by the receiving sequencer, in order to cover Ethereum L1 gas costs, which, due to the specifications of the Ethereum protocol, must be paid in ETH. Staking: Certain services that are critical to the liveness and security of Starknet may require the staking of Starknet tokens. These services might be offered by multiple providers, and could include sequencing, reaching temporary L2 consensus before L1 finality is reached, STARK-proving services, and data availability provisioning, to name a few examples. These protocol changes are still under discussion within the larger governance community and are targeted for 2024 -2025. Governance: Proposals for improving Starknet might require a minimal token support threshold. Voting, either directly or via delegation, will be required for changes to the protocol that are essential to Starknet’s liveness, security, and maintenance. Today, for example, major updates to the Starknet Operating System require the approval of token holders. For more information about Governance see the Starknet Governance Hub As discussed above, the Starknet tokens are digital assets intended to support the operation and usage of Starknet and are not offered as an investment. As such, the Starknet tokens do not represent any equity in StarkWare or the Starknet Foundation, nor do they provide any participation right in StarkWare or grant any right of claim from StarkWare or the Starknet Foundation. Ten billion Starknet tokens were initially created by StarkWare in May 2022 and minted onchain on November 30, 2022. The existing ten billion tokens have been or are planned to be distributed according to the following: 20.04%: Early Contributors Tokens allocated for StarkWare’s team members and early contributors. These tokens are subject to a lock-up schedule, as further detailed below. 18.17%: Investors Tokens allocated for StarkWare’s investors. These tokens are subject to a lock-up schedule, as further detailed below. 10.76%: StarkWare Tokens allocated for StarkWare for operation services such as to pay fees, provide other services on Starknet, and engage other service providers. 12.93%: Grants including Development Partners (aka DPs) Tokens allocated for grants for research or work done to develop, test, deploy and maintain the Starknet protocol. The process for applications and allocations related to Starknet Foundation Grants will be outlined in a post at a later date. 9.00%: Community Provisions Tokens distributed to those who contributed to Starknet and powered or developed its underlying technology. 9.00%: Community Rebates Tokens allocated for rebates in Starknet tokens to partially cover the costs of onboarding to Starknet from Ethereum. Community rebates are not yet available and will be announced in 2024 in a subsequent post. 10.00%: Foundation Strategic Reserves Tokens allocated for the Starknet Foundation to fund ecosystem activities that are aligned with the Foundation’s mission. 8.10%: Foundation Treasury Token allocated for the Starknet Foundation’s treasury available for operations and other future initiatives by the Starknet Foundation. 2.00%: Donations Tokens reserved for donations to institutions and organizations, such as universities, NGOs, etc, as decided by the Starknet Foundation. To align long-term incentives of the Investors and Early Contributors with the interests of the Starknet community, and following common practice in decentralized ecosystems, all tokens allocated to Investors and Early Contributors is subject to the following lock-up schedule, where percentages are based on the total token supply: Up to 0.64% (64 million tokens) will be unlocked on the 15th of each month, starting April 15, 2024, and going through March 15, 2025, for a total of 7.68% (768 million tokens) unlocked by March 15, 2025. Up to 1.27% (127 million tokens) will be unlocked on the 15th of each month, starting April 15, 2025, and going through March 15, 2027, for a total of 30.48% (3.048 billion tokens) unlocked by March 15, 2027. Figure 1. Estimated supply of STRK in circulation The graph, Estimated supply of STRK in circulation, excludes newly circulating tokens resulting from inflation or staking (see below). Token allotments currently retained by the Starknet Foundation, while contractually unlocked, are not considered circulating unless granted, donated, or otherwise allocated out of originating wallets through future grants, provisions, donations, developer initiatives, or other programs. Through this lock-up period, token holders cannot transfer, sell, or pledge their STRK tokens. Delegation of voting is permitted with locked tokens and, when available, staking might also be permitted. The total circulating supply of tokens is planned to increase over time with the minting of new tokens by the protocol, as staking rewards, block rewards, or other rewards associated with the staking process. Such minting will be made pursuant to a schedule that will be determined with the community at a later point, not before Starknet services are more decentralized. The supply in circulation might not, therefore, remain fixed. However, as long as StarkWare is the sole operator of the Starknet sequencer, there will be no issuance of new tokens for the purpose of block rewards. For more information, see A token-minting proposal to manage inflation. Starknet is a developing decentralized protocol and the economic mechanisms described herein are subject to change based on decisions made by the larger community of Starknet builders and users. Starknet relies upon third parties to adopt and implement software and protocols as users and contributors of Starknet. It also relies, in whole or partly, on third parties to develop, supply and otherwise support it. There is no assurance or guarantee that such third parties will continue to participate in the network or that the network will continue to function as intended. The technical documents provided herein describe certain planned and specified economic fundamentals of a digital asset, STRK. These materials are intended for informational purposes only and are meant to outline the usage and functionalities of the asset within Starknet. It is important to understand that the primary purpose of STRK is to pay for fees, provide a mechanism for securing consensus, and allow for decentralized governance on Starknet; it is not intended to serve as an investment. Starknet relies upon third parties to adopt and implement the software and protocols as users of Starknet. It also relies, in whole or partly, on third parties to develop, supply and otherwise support it. As a Layer 2 network over Ethereum, Starknet also relies upon third parties maintaining and operating the Ethereum network. There is no assurance or guarantee that those third parties will complete their work, properly carry out their obligations, and/or otherwise meet anyone’s needs. STRK, as the native token of Starknet, may be subject to the risks of the Starknet network, including, without limitation, the following: (i) the technology associated with Starknet may not function as intended; (ii) the details of the Starknet token economics including the total supply and distribution schedule may be changed due to decisions made by the consensus of participants of the Starknet network; (iii) Starknet may fail to attract sufficient interest from key stakeholders or users; (iv) Starknet may not progress satisfactorily and Starknet tokens may not be useful or valuable; (v) Starknet may suffer from attacks by hackers or other individuals; and (vi) Starknet is comprised of open-source technologies that depend on a network of computers to run certain software programs to process transactions, and because of this model StarkWare and the Starknet Foundation have limited control over Starknet. Risks related to blockchain technology in general and Starknet in particular may impact the usefulness of Starknet, and, in turn, the utility or value of STRK. The software and hardware, technology and technical concepts and theories applicable to Starknet and STRK are still in an early development stage and unproven, there is no warranty that Starknet will achieve any specific level of functionality or success, nor that the underlying technology will be uninterrupted or error-free, and there is an inherent risk that the technology could contain weaknesses, vulnerabilities or bugs causing, potentially, the complete loss of any Starknet tokens held by Starknet users. As with most commonly used public blockchains, STRK is accessed using a private key that corresponds to the address at which they are stored. If the private key, or the \"seed\" used to create the address and corresponding private key are lost or stolen, the tokens associated with that address might be unrecoverable and will be permanently lost. Public blockchain-based systems, including Starknet and the underlying Ethereum network, depend on independent verifiers, and therefore may be vulnerable to consensus attacks including, but not limited to, double-spend attacks, majority voting power attacks, race condition attacks, and censorship attacks. These attacks, if successful, could result in the permanent loss of STRK. Starknet, STRK, and blockchain technology are nascent, and there may be additional risks not described above or that may be new or unanticipated. We recommend only using Starknet or holding STRK if you are familiar with the technology and aware of the risks. This document and its contents are not, and should not be construed as, an offer to sell, or the solicitation of an offer to buy, any tokens, nor should it or any part of it form the basis or be relied on in connection with any contract or commitment whatsoever. This document is not advice of any kind, including legal, investment, financial, tax, or any other professional advice. Nothing in this document should be read or interpreted as a guarantee or promise of how the Starknet network or its STRK will develop, be utilized, or accrue value. All information in this document is provided on an “as is” basis without any representation or warranty of any kind. This document only outlines current plans, which could change at the discretion of various parties, and the success of which will depend on many factors outside of Starknet Foundation’s control. Such future statements necessarily involve known and unknown risks, which may cause actual performance and results in future periods to differ materially from what we have described or implied in this document. StarkWare and the Starknet Foundation disclaim all warranties, express or implied, to the fullest extent permitted by law with respect to the functionality of Starknet and STRK.","title":"The token economics of Starknet","component":"documentation","version":"","name":"Economics-of-Starknet","url":"/documentation/architecture_and_concepts/Economics-of-Starknet/","titles":[{"text":"Why are economics relevant?","hash":"why_are_economics_relevant","id":1},{"text":"The purpose of the STRK token","hash":"purpose_of_the_token","id":2},{"text":"Supply and distribution","hash":"supply_and_distribution","id":3},{"text":"Risks and disclaimers","hash":"risks_and_disclaimers","id":4}]},"4":{"id":4,"text":"","title":"Architecture","component":"documentation","version":"","name":"index","url":"/documentation/architecture_and_concepts/","titles":[]},"5":{"id":5,"text":"The Starknet CLI is deprecated. Instead, use StarkLi CLI. To enter a Starknet command, use the following syntax: $ starknet Where: represents a single command that executes an operation on Starknet. represents zero or more command line options, each of which modifies the operation of the command. You need to set your Starknet network environment to use either testnet or Mainnet. You can set the environment using either a command-line option or an environment variable. Possible values are: alpha-goerli Sets the Starknet network to testnet alpha-mainnet Sets the Starknet network to Mainnet Setting the network environment using a command-line option When you enter any command, include the --network option. For example to use Mainnet, enter a command as follows: $ starknet --network alpha-mainnet You can place the --network option before or after any other option. Setting the network environment using an environment variable Set the STARKNET_NETWORK environment variable as follows: $ export STARKNET_NETWORK= For example, to use testnet, enter the following command: $ export STARKNET_NETWORK=alpha-goerli When working with the CLI, you can manually set the endpoints for the gateways that enable you to interact with Starknet, by including the following options: --feeder_gateway_url Sets the custom endpoint for read commands. --gateway_url Sets the custom endpoint for write commands. The following are the endpoints for Starknet testnet and Mainnet: Testnet feeder gateway URL: https://alpha4.starknet.io/feeder_gateway/ Mainnet feeder gateway URL: https://alpha-mainnet.starknet.io/feeder_gateway/ Testnet gateway URL: https://alpha4.starknet.io/gateway/ Mainnet gateway URL: https://alpha-mainnet.starknet.io/gateway/ Example: Setting a custom read endpoint The following command returns the ABI using the Mainnet feeder gateway. $ starknet get_code --feeder_gateway_url https://alpha-mainnet.starknet.io/feeder_gateway/ Example: Setting a custom write endpoint The following command sends a transaction to the Starknet sequencer using the Mainnet gateway. $ starknet invoke --gateway_url https://alpha-mainnet.starknet.io/gateway/ starknet call --address --abi --function --inputs --block_hash --block_number --signature --wallet --nonce Calls a Starknet contract without affecting the state, accepts the following arguments: contract_address* - address of the contract being called contract_abi* - a path to a JSON file that contains the abi of the contract being called function_name* - name of the function which is called arguments* - inputs to the function being called, represented by a list of space-delimited values block_hash - the hash of the block used as the context for the call operation. If this argument is omitted, the latest block is used block_number - same as block_hash, but specifies the context block by number or tag signature_information - list of field elements as described here wallet_name - the name of the desired wallet, use deploy_account to set-up new accounts in the CLI nonce - account nonce, only relevant if the call is going through an account Block Tag A block context can be specified via the latest or pending tags, where the former refers to the latest accepted on L2 block and the latter refers to the pending block. starknet declare --contract Declares a new contract class on Starknet, accepts the following argument: contract_class - path to a JSON file containing the contract’s compiled code starknet deploy --salt --contract --inputs --token Deploys a new contract, accepts the following arguments: salt - a seed that is used in the computation of the contract’s address (if not specified, the sequencer will choose a random string) contract_definition* - path to a JSON file containing the contract’s bytecode and abi (can be obtained by executing starknet-compile) constructor_inputs* - the arguments given to the contract’s constructor, represented by a list of space-delimited values token - a token allowing contract deployment (can be obtained by applying here). Only used in the Alpha stages and will be deprecated in the future The deploy token is a temporary measure which will be deprecated when fees are incorporated in the system. Only relevant for Mainnet. starknet deploy_account --wallet --account Deploys an account contract, accepts the following arguments: account_name - the name given to the account, used for managing multiple accounts from the CLI (if not specified, the name __default__ is used. wallet_provider* - the path to module which manages the account (responsible for key generation, signing, etc.) Today, the Starknet CLI only works with the OpenZeppelin account contract. The CLI uses this specific wallet provider. To use this provider, either set up the following environment variable or pass the same value directly to the wallet_provider parameter: $ export STARKNET_WALLET=starkware.starknet.wallets.open_zeppelin.OpenZeppelinAccount Using the built-in wallet providers that are part of the cairo-lang package (starkware.starknet.wallets…​) is not secure (for example, the private key may be kept not encrypted and without backup in your home directory). You should only use them if you’re not overly concerned with losing access to your accounts (for example, for testing purposes). starknet estimate_fee --address --abi --function --inputs Returns the fee estimation for a given contract call. Accepts the following arguments: address* - the address of the contract being called contract_abi* - a path to a JSON file that contains the abi of the contract being called function_name*- the name of the function being called arguments* - inputs to the function being called, represented by a list of space-delimited values` starknet estimate_message_fee --from_address --to_address --function --inputs Returns the fee estimation for a given L1 handler application. Accepts the following arguments: from_address* - the L1 address of the sender to_address* - the L2 address of the recipient contract_abi* - a path to a JSON file containing the abi of the receiving contract on L2 function_name*- the name of the desired L1 handler arguments* - inputs to the called handler, represented by a list of space-delimited values starknet get_block --hash --number Returns the requested block, exactly one of the following arguments must be given: block_hash - hash of the requested block block_number - number or tag of the requested block starknet get_code --contract_address --block_hash --block_number Returns the ABI and the byte code of the requested contract, accepts the following arguments: contact_address* - address of the requested contract block_hash - the hash of the block used as the context for the operation. If this argument is omitted, the latest block is used block_number - same as block_hash, but specifies the context block by number or tag starknet get_storage_at --contract_address --key --block_hash --block_number Queries a contract’s storage at a specific key, accepts the following arguments: contract_address *- address of the requested contract key* - the requested key from the given contract’s storage block_hash - the hash of the block relative to which the storage will be provided. In case this argument is not given, the latest block is used block_number - same as block_hash, but specifies the context block by number or tag starknet get_transaction --hash Returns the requested transaction, expects the following argument: transaction_hash* - hash of the requested transaction starknet get_transaction_receipt --hash Returns the receipt associated with the transaction, expects the following argument: transaction_hash* - hash of the requested transaction starknet invoke starknet tx_status starknet invoke --address --abi --function --inputs --signature --wallet --nonce Sends a transaction to the Starknet sequencer, accepts the following arguments: address* - the address of the contract being called contract_abi* - a path to a JSON file that contains the abi of the contract being called function_name*- the name of the function being called arguments* - inputs to the function being called, represented by a list of space-delimited values signature_information - list of field elements as described here wallet_name - the name of the desired wallet, use deploy_account to set-up new accounts in the CLI. nonce - account nonce, only relevant if the call is going through an account Today, interaction with Starknet may be done either via account or by a direct call. The signature argument can only be provided in the case of a direct call, since otherwise providing the signature is the responsibility of the account module. To use an account you must specify wallet_name, otherwise a direct call will be used (you may also explicitly perform a direct call by adding --no_wallet to the command). Note that in the future direct calls will be deprecated and the only way to interact with the system would be through accounts. starknet tx_status --hash --contract --error_message Returns the transaction status, accepts the following arguments: transaction_hash* - hash of the requested transaction contract_definition - path to a JSON file containing the compiled contract to which the transaction was addressed. If supplied, the debug information from the compiled contract will be used to add error locations. error_message - if specified, only the error message will be returned (or empty response in case the transaction was successful) The possible statuses of a transaction are: NOT_RECEIVED RECEIVED PENDING REJECTED ACCEPTED_ON_L2 ACCEPTED_ON_L1 For more information, see Transaction lifecycle.","title":"Legacy Starknet CLI reference","component":"documentation","version":"","name":"starkli","url":"/documentation/cli/starkli/","titles":[{"text":"Basic command line syntax","hash":"basic_command_line_syntax","id":1},{"text":"Setting the Starknet network environment","hash":"setting_the_starknet_network_environment","id":2},{"text":"Setting custom endpoints","hash":"setting_custom_endpoints","id":3},{"text":"starknet call","hash":"starknet_call","id":4},{"text":"starknet declare","hash":"starknet_declare","id":5},{"text":"starknet deploy","hash":"starknet_deploy","id":6},{"text":"starknet deploy_account","hash":"starknet_deploy_account","id":7},{"text":"starknet estimate_fee","hash":"starknet-estimate_fee","id":8},{"text":"starknet estimate_message_fee","hash":"starknet_estimate_message_fee","id":9},{"text":"starknet get_block","hash":"starknet_get_block","id":10},{"text":"starknet get_code","hash":"starknet_get_code","id":11},{"text":"starknet get_storage_at","hash":"starknet_get_storage_at","id":12},{"text":"starknet get_transaction","hash":"starknet_get_transaction","id":13},{"text":"starknet get_transaction_receipt","hash":"starknet_get_transaction_receipt","id":14},{"text":"starknet invoke","hash":"starknet_invoke","id":15},{"text":"starknet tx_status","hash":"starknet_tx_status","id":16}]},"6":{"id":6,"text":"When the Starknet compiler is installed, you can view this command-line help in a terminal by entering the following command: starknet-compile --help starknet-compile [-h] [--abi ABI] [--disable_hint_validation] [--account_contract] [--dont_filter_identifiers] [-v] [--prime PRIME] [--cairo_path CAIRO_PATH] [--preprocess] [--output OUTPUT] [--no_debug_info] [--debug_info_with_source] [--cairo_dependencies CAIRO_DEPENDENCIES] [--no_opt_unused_functions] file [file ...] The following example compiles the file contract.cairo. It generates two files: contract_compiled.json The contract class. This file contains the bytecode and all other information necessary to execute a contract. For information on contract classes, see Contract classes and instances. contract_abi.json The contract’s ABI. starknet-compile contract.cairo \\ --output contract_compiled.json \\ --abi contract_abi.json A tool to compile Starknet contracts. File names. Show this help message and exit. Output the contract’s ABI. Disable the hint validation. Compile as account contract. Disable the filter-identifiers-optimization.If True, all the identifiers will be kept, instead of just the ones mentioned in hints or 'with_attr' statements. show program’s version number and exit The size of the finite field. A list of directories, separated by \":\" to resolve import paths. The full list will consist of directories defined by this argument, followed by the environment variable CAIRO_PATH, the working directory and the standard library path. Stop after the preprocessor step and output the preprocessed program. The output file name (default: stdout). Don’t include debug information in the compiled file. Include debug information with a copy of the source code. Output a list of the Cairo source files used during the compilation as a CMake file. Disables unused function optimization.","title":"Legacy compiler CLI reference","component":"documentation","version":"","name":"starknet-compiler-options","url":"/documentation/cli/starknet-compiler-options/","titles":[{"text":"Usage","hash":"usage","id":1},{"text":"Example","hash":"example","id":2},{"text":"Description","hash":"description","id":3},{"text":"Positional arguments","hash":"positional_arguments","id":4},{"text":"file","hash":"file","id":5},{"text":"Optional arguments","hash":"optional_arguments","id":6},{"text":"-h, --help","hash":"h_help","id":7},{"text":"--abi ABI","hash":"abi_abi","id":8},{"text":"--disable_hint_validation","hash":"disable_hint_validation","id":9},{"text":"--account_contract","hash":"account_contract","id":10},{"text":"--dont_filter_identifiers","hash":"dont_filter_identifiers","id":11},{"text":"-v, --version","hash":"v_version","id":12},{"text":"--prime PRIME","hash":"prime_prime","id":13},{"text":"--cairo_path CAIRO_PATH","hash":"cairo_path_cairo_path","id":14},{"text":"--preprocess","hash":"preprocess","id":15},{"text":"--output OUTPUT","hash":"output_output","id":16},{"text":"--no_debug_info","hash":"no_debug_info","id":17},{"text":"--debug_info_with_source","hash":"debug_info_with_source","id":18},{"text":"--cairo_dependencies CAIRO_DEPENDENCIES","hash":"cairo_dependencies_cairo_dependencies","id":19},{"text":"--no_opt_unused_functions","hash":"no_opt_unused_functions","id":20}]},"7":{"id":7,"text":"Ensure that the below commands are working properly on your system. starkli --version scarb --version If either of the above commands fails, see Setting up your environment. Deploying a smart contract in Starknet requires two steps: Declaring the class of your contract, i.e. sending your contract’s code to the network. Deploying a contract, i.e. creating an instance of the code you previously declared. If you require a smart contract for testing, you can use this sample contract, lib.cairo, from the Starknet Book. You can compile a smart contract using the Scarb compiler. To compile a smart contract, create a directory containing a Scarb.toml file and a subdirectory named src containing your contract source code. Add the following code to the Scarb.toml file: [package] name = \"contracts\" version = \"0.1.0\" [dependencies] starknet = \">=2.2.0\" [[target.starknet-contract]] sierra = true Navigate into the newly created directory: cd Run the following command: scarb build The compiled contract will be saved in the target/dev/ directory. The contract is now compiled and ready to be deployed. Next you will need to declare an RPC provider within your contract. To interact with the Starknet network, you need to set an RPC endpoint within Starkli. The following are the RPC providers available for Starknet: Provider name Description Infura or Alchemy Use a provider like Infura or Alchemy. Custom configuration Set up your own node and use the RPC provider of your node. More information on this can be found within the Starknet Book. For demonstration purposes, the Starknet Sequencer’s Gateway is used in the below steps. A contract can be declared on Starknet using the following command: starkli declare target/dev/.json --network=goerli-1 --compiler-version=2.1.0 The --network flag is used to specify the network you want to use, it could also be mainnet for example. The --compiler-version flag is used to specify the version of the compiler you want to use. Starkli is currently running on version 2.1.0 and 2.0.1 of the compiler. You can find the compiler version supported by Starkli by running: starkli declare --help In the --compiler-version flag you will see possible versions of the compiler: --compiler-version Statically-linked Sierra compiler version [possible values: 2.0.1, 2.1.0] However, the Scarb compiler version may be 2.2.0, you can find this out by running: scarb --version This is because Starkli and Scarb are not always in sync. In this case you would need to use the compiler version that Starkli is using by installing a previous version of Scarb. See the Scarb github repo for more detail. You can do this by running the following command for installing Scarb version 0.6.1: curl --proto '=https' --tlsv1.2 -sSf https://docs.swmansion.com/scarb/install.sh | sh -s -- -v 0.6.1 If you were using a provider like Infura or Alchemy, the declaration command would look like this: starkli declare target/dev/contracts_Ownable.sierra.json \\ --rpc=https://starknet-goerli.infura.io/v3/ \\ --compiler-version=2.1.0 The result of the declaration command is a contract class hash: Class hash declared: This hash is the identifier of the contract class in Starknet. You can think of it as the address of the contract class. You can use a block explorer like StarkScan to see the contract class hash in the blockchain. If the contract you are declaring has previously been declared by someone else, you will get an output like this: Not declaring class as its already declared. Class hash:","title":"Declaring a smart contract","component":"documentation","version":"","name":"declare_a_smart_contract","url":"/documentation/quick_start/declare_a_smart_contract/","titles":[{"text":"Prerequisites","hash":"prerequisites","id":1},{"text":"Ensure Starkli and Scarb are installed correctly","hash":"ensure_starkli_and_scarb_are_installed_correctly","id":2},{"text":"Introduction","hash":"introduction","id":3},{"text":"Compiling a smart contract","hash":"compiling_a_smart_contract","id":4},{"text":"Setting an RPC provider","hash":"setting_an_rpc_provider","id":5},{"text":"Declaring a smart contract","hash":"declaring_a_smart_contract","id":6},{"text":"Expected result","hash":"expected_result","id":7}]},"8":{"id":8,"text":"Ensure that the below commands are working properly on your system. starkli --version scarb --version If either of the above commands fail, please visit Setting up your environment. Deploying a smart contract in Starknet requires two steps: Declaring the class of your contract, i.e. sending your contract’s code to the network. Deploying a contract, i.e. creating an instance of the code you previously declared. Deploying a smart contract involves instantiating it on Starknet. The deployment command requires the class hash of the smart contract and any arguments expected by the constructor. For our example, the constructor expects an address to assign as the owner: starkli deploy \\ \\ \\ --network=goerli-1 With the class hash and constructor inputs, the command looks like this: starkli deploy \\ 0x00e68b4b07aeecc72f768b1c086d9b0aadce131a40a1067ffb92d0b480cf325d \\ 0x02cdAb749380950e7a7c0deFf5ea8eDD716fEb3a2952aDd4E5659655077B8510 \\ --network=goerli-1 After running the command and adding your password, you will see an output similar to this: Deploying class 0x00e68b4b07aeecc72f768b1c086d9b0aadce131a40a1067ffb92d0b480cf325d with salt 0x04bc3fc2284c8e41fb3d2a37bb0354fd0506131cc77a8c91e4e67ce3aed1d19e... The contract will be deployed at address 0x014825acb37c36563d3b96c450afe363d2fdfa3cfbd618b323f95b68b55ebf7e Contract deployment transaction: 0x0086972e7463d5673d8b553ae521ec2df974a97c2ce6aafc1d1c20d22c6b96c6 Contract deployed: 0x014825acb37c36563d3b96c450afe363d2fdfa3cfbd618b323f95b68b55ebf7e The smart contract has now been deployed to Starknet.","title":"Deploying a smart contract","component":"documentation","version":"","name":"deploy_a_smart_contract","url":"/documentation/quick_start/deploy_a_smart_contract/","titles":[{"text":"Prerequisites","hash":"prerequisites","id":1},{"text":"Ensure Starkli and Scarb are installed correctly","hash":"ensure_starkli_and_scarb_are_installed_correctly","id":2},{"text":"Introduction","hash":"introduction","id":3},{"text":"Deploying a smart contract","hash":"deploying_a_smart_contract","id":4},{"text":"Expected result","hash":"expected_result","id":5}]},"9":{"id":9,"text":"In order to interact with Starknet and compile Cairo code, you need to install several tools. The following tools are recommended to begin developing on Starknet: Tool name Description Documentation Code Repository Starkli A command-line interface that allows you to interact with Starknet. book.starkli.rs github.com/xJonathanLEI/starkli Scarb A build toolchain and package manager for Cairo and Starknet ecosystems. docs.swmansion.com/scarb github.com/software-mansion/scarb The steps for installing Starkli and upgrading Starkli are identical. Procedure Install Starkliup, the installer for the Starkli environment: curl https://get.starkli.sh | sh Starkliup should now be installed. Restart the terminal. Install Starkli: starkliup Starkli should now be installed. Restart the terminal and run the following command to verify the installation: starkli --version Starkli prints the current version. For the majority of flags available on Starkli you can set environment variables to make the commands shorter and easier to manage. Setting environment variables for Starkli significantly simplifies command execution and management, thereby enhancing efficiency, readability, and control when using Starkli. The two primary environment variables that are vital for effective usage of Starkli’s CLI are: STARKNET_ACCOUNT The location of the Account Descriptor file. STARKNET_KEYSTORE The location of the keystore file for the Signer. Set these environment variables as follows: export STARKNET_ACCOUNT=~/.starkli-wallets/deployer/account.json export STARKNET_KEYSTORE=~/.starkli-wallets/deployer/keystore.json Scarb is compatible with macOS, Linux, and Windows operating systems. The steps for installing Scarb and upgrading Scarb are identical. Procedure Open a terminal and execute the following command: curl --proto '=https' --tlsv1.2 -sSf https://docs.swmansion.com/scarb/install.sh | sh Restart the terminal and run the following command to verify the installation: scarb --version Scarb should now be installed. Scarb’s installation on Windows requires manual setup. Procedure Follow the steps in the Scarb documentation. Restart the terminal and run the following command to verify the installation: scarb --version Scarb should now be installed.","title":"Setting up your environment","component":"documentation","version":"","name":"environment_setup","url":"/documentation/quick_start/environment_setup/","titles":[{"text":"Installing Starkli","hash":"installing_starkli","id":1},{"text":"Setting environment variables for Starkli","hash":"setting_environment_variables_for_starkli","id":2},{"text":"Installing Scarb","hash":"installing_scarb","id":3},{"text":"MacOS and Linux installation","hash":"macos_and_linux_installation","id":4},{"text":"Windows installation","hash":"windows_installation","id":5}]},"10":{"id":10,"text":"Ensure that the below commands are working properly on your system. starkli --version scarb --version If either of the above commands fail, see Setting up your environment. Starkli enables interaction with smart contracts via two primary methods: call for read-only functions. invoke for write functions that modify the state. The call command allows querying a smart contract function without sending a transaction. As an example you can use the get_owner function which doesn’t expect any arguments and returns the address of the current owner: starkli call \\ 0x014825acb37c36563d3b96c450afe363d2fdfa3cfbd618b323f95b68b55ebf7e \\ get_owner --network=goerli-1 This will return the address that we passed to the constructor during deployment: [ \"0x02cdab749380950e7a7c0deff5ea8edd716feb3a2952add4e5659655077b8510\" ] To modify the state of the smart contract, use the invoke command. Unlike the call command, invoke submits a transaction to the network. In this example, we’ll invoke the transfer_ownership function to transfer the ownership from our deployer address to a different smart wallet address: starkli invoke \\ 0x014825acb37c36563d3b96c450afe363d2fdfa3cfbd618b323f95b68b55ebf7e \\ transfer_ownership \\ 0x011088d3cbe4289bc6750ee3a9cf35e52f4fa4e0ac9f42fb0b62e983139e135a \\ --network=goerli-1 After the transaction is accepted on L2, you can confirm the state transition by calling the get_owner function again: starkli call \\ 0x014825acb37c36563d3b96c450afe363d2fdfa3cfbd618b323f95b68b55ebf7e \\ get_owner \\ --network=goerli-1 The get_owner function now returns the new owner address, confirming the successful ownership transfer.","title":"Interacting with a smart contract","component":"documentation","version":"","name":"interact_with_a_smart_contract","url":"/documentation/quick_start/interact_with_a_smart_contract/","titles":[{"text":"Prerequisites","hash":"prerequisites","id":1},{"text":"Ensure Starkli and Scarb are installed correctly","hash":"ensure_starkli_and_scarb_are_installed_correctly","id":2},{"text":"Introduction","hash":"introduction","id":3},{"text":"Calling a function","hash":"calling_a_function","id":4},{"text":"Invoking a function","hash":"invoking_a_function","id":5}]},"11":{"id":11,"text":"This guide shows you how to set up a Starknet account and wallet in the context of a smart contract deployment. For information on creating a Starknet wallet as an end user, see Getting Started Using Starknet: Setting Up a Starknet Wallet. Starkli is installed correctly. Ensure that the following command shows the version information for Starkli: starkli --version If this command fails, see Setting up your environment. A Starknet wallet is installed, either Argent X or Braavos. For information on a specific wallet, including installation instructions, see that wallet’s site. A smart wallet is composed of two parts: A Signer: A smart contract that can sign transactions. An Account Descriptor: A json file that contains information about the smart wallet, such as its address and public key. After creating and funding your smart wallet with ETH you can deploy it to Starknet. For demonstration purposes, this page uses Starknet’s testnet. For testnet transactions you can fund your wallet using the Starknet Sepolia Faucets. A Signer is a smart contract that can sign transactions. It’s a crucial component of accounts in Starknet. To create a Signer you will need the private key of your smart wallet (the public key can be derived from it). Starkli has the ability to create a keystore file that securely stores the private key of smart wallets each with a password. The accounts in the keystore file can be used to sign transactions using Starkli. The main advantage of this approach is that it prevents storing the private key as plain text on your computer. Instead, a password is used to create an encrypted file in a location of choice. Normally, the keystore file is stored in the default location of the Starkli CLI. The following command creates a keystore file for a smart wallet in the default location in ~/.starkli-wallets/deployer: Create a new directory: mkdir -p ~/.starkli-wallets/deployer Create a keystore file within the directory: starkli signer keystore from-key ~/.starkli-wallets/deployer/keystore.json Enter private key: Enter password: Created new encrypted keystore file: /home/parallels/.starkli-wallets/deployer/keystore.json Public key: 0x0550… In the private key prompt, paste the private key of your smart wallet. In the password prompt, enter a password of your choice. You will need this password to sign transactions using Starkli. Next export the private key from your Argent X or Braavos wallet: Navigate to: Settings section → Select your Account → Export Private Key. Navigate to: Settings section → Privacy and Security → Export Private Key. While knowing the private key of a smart wallet is necessary to sign transactions, it’s not sufficient. We also need to inform Starkli about the signing mechanism employed by our smart wallet created by Argent X or Braavos. Starkli offers a command to collect all the required information from a smart wallet by providing its onchain address. Using this data, the CLI generates a json file that can be used to sign transactions: starkli account fetch --help Fetch account config from an already deployed account contract The fetch command supports both Argent X and Braavos smart wallets. Make sure your wallet address is already deployed and enter the following command to create and save the account descriptor file: starkli account fetch --output ~/.starkli-wallets/deployer/account.json --rpc You can obtain access to a JSON-RPC endpoint in one of the following ways: Host your own node with Pathfinder, Juno, Deoxys, or Papyrus. Use a third-party JSON-RPC API provider. For information on providers, see Full nodes and API services. The following command shows the details of the account descriptor: cat ~/.starkli-wallets/deployer/account.json The account descriptor should have the following structure: { \"version\": 1, \"variant\": { \"type\": \"argent\", \"version\": 1, \"implementation\": \"\", \"signer\": \"\", \"guardian\": \"0x0\" }, \"deployment\": { \"status\": \"deployed\", \"class_hash\": \"\", \"address\": \"\" } } If you are working with Braavos wallet, the type is defined as braavos and the account descriptor structure might be slightly different. Once you have an account file, you can deploy the account contract with the starkli account deploy command. This command sends a DEPLOY_ACCOUNT transaction, which requires the account to contain enough ETH to pay for the transaction fee. To deploy your account, run the following command: starkli account deploy ~/.starkli-wallets/deployer/account.json This command requires a signer. If you receive an error after running this command, ensure you have the STARKNET_KEYSTORE environment variable set as per these instructions. When run, the command shows: The address where the contract will be deployed. Instructions for the user to fund the account before proceeding. Here’s an example command output: The estimated account deployment fee is 0.000011483579723913 ETH. However, to avoid failure, fund at least: 0.000017225369585869 ETH to the following address: 0x01cf4d57ba01109f018dec3ea079a38fc08b789e03de4df937ddb9e8a0ff853a Press [ENTER] once youve funded the address. You have now successfully deployed a new account to Starknet.","title":"Setting up an account","component":"documentation","version":"","name":"set_up_an_account","url":"/documentation/quick_start/set_up_an_account/","titles":[{"text":"Prerequisites","hash":"prerequisites","id":1},{"text":"Creating an account","hash":"creating_an_account","id":2},{"text":"Creating a Signer","hash":"creating_a_signer","id":3},{"text":"Creating a keystore file","hash":"creating_a_keystore_file","id":4},{"text":"Export the private key from your wallet","hash":"export_the_private_key_from_your_wallet","id":5},{"text":"Argent X","hash":"argent_x","id":6},{"text":"Braavos","hash":"braavos","id":7},{"text":"Creating an Account Descriptor","hash":"creating_an_account_descriptor","id":8},{"text":"Deploying an account","hash":"deploying_an_account","id":9}]},"12":{"id":12,"text":"The features on this page are deprecated, unsupported, or removed from Starknet. Deprecated Refers to a feature or capability that is still supported, but support will be removed in a future release of Starknet. Future fixes or enhancements are unlikely. If necessary, an alternative is available. Unsupported Refers to a feature or capability that is no longer supported. Removed Refers to a feature or capability that has been entirely removed. Name Description Goerli testnet Goerli testnet is deprecated and is being replaced by Sepolia testnet. Starknet started migrating to Sepolia testnet on November 15th, 2023. Goerli testnet support will be removed April 11, 2024. You should migrate to Sepolia testnet as soon as possible. For more information on the Goerli deprecation, see the deprecation announcement on Ethereum’s site. Full nodes, API services, SDKs, and other Starknet developer tools have started their migration to Sepolia as well. Builders are urged to migrate to Sepolia as soon as possible. Sepolia’s state and history are relatively small. Sepolia supports declaring classes of Cairo v0 and Cairo v2.0.0 and higher. Starknet CLI Support for the Starknet CLI has been removed. Instead use Starkli. Support for Starknet CLI is removed in Starknet v0.13.0. Cairo 0 Starknet v0.11.0 introduces Cairo 1.0 smart contracts. Name Description Starknet feeder gateway The Starknet feeder gateway, a temporary solution for querying the sequencer’s state, is being replaced by Starknet full nodes (Pathfinder, Juno, Deoxys, Papyrus) and RPC services. For more information, see Full nodes and API services. Support for the feeder gateway queries that are not required for full nodes to synchronize on the state of Starknet will stop according to the following schedule: Environment Date Integration 1 November 2023 Testnet 15 November 2023 Mainnet 19 December 2023 Queries that are required for full nodes to synchronize on the state of Starknet are still supported. For more information, see the Community Forum post Feeder Gateway Deprecation. Goerli testnet 2 Goerli testnet 2 is removed. Use Goerli testnet. Free L1→ L2 messaging Previously, sending a message from L1 to L2 had an optional fee associated. From Starknet v0.11.0, the fee mechanism is enforced and the ability to send L1→L2 messages without the corresponding L2 fee has been removed. See here for more details. invoke transaction v0 invoke transaction v0 has been removed since Starknet v0.11.0. declare transaction v0 declare transaction v0 has been removed since Starknet v0.11.0. deploy transaction The deploy transaction has been removed since Starknet v0.10.3. To deploy new contract instances, you can use the deploy system call.","title":"Deprecated, unsupported, and removed features","component":"documentation","version":"","name":"deprecated","url":"/documentation/starknet_versions/deprecated/","titles":[{"text":"Deprecated features","hash":"deprecated_features","id":1},{"text":"Unsupported and removed features","hash":"unsupported_and_removed_features","id":2}]},"13":{"id":13,"text":"Juno is a golang Starknet node implementation by Nethermind with the aim of decentralizing Starknet. See the official Juno GitHub repository for more details. Support for upcoming Starknet v0.12.3, improved RPC performance with a new global class cache, allowing for higher request throughput and optimized resource usage. We’ve updated blockifier, which includes an important wallet integration fix. On top of that, expect new metrics and ongoing enhancements to the P2P layer, among other improvements. Here’s what’s new: Support for Starknet v0.12.3 A global class cache to the VM that enhances overall RPC throughput. PR by @omerfirmak in 1401 A new flag, max-vms, to control the maximum number of VM instances for concurrent RPC calls, optimizing resource usage PR by @omerfirmak in #1378. The blockifier library has been updated, now supporting the query bit in the version field for transactions. PR by @joshklop in #1401. Subscription handling has been moved to the synchronizer for improved efficiency. PR by @joshklop in #1373. Ongoing enhancements to the P2P layer, including the implementation of a Receipt Handler and Adapter and a new GetBlockBodies feature. PRs by @IronGauntlets in #1352 and by @kirugan in #1359. Prometheus metrics have been expanded to include version information, latency on Transaction.Commit(), and read metrics on blockchain operations. PRs by @omerfirmak in #1394, #1396, and #1395. Kubernetes pods now have a correctly set GOMAXPROCS setting, aligning performance with CPU resources. PR by @omerfirmak in #1397. Fallback to feeder traces for blocks ⇐ 0.12.2. PR by @omerfirmak in #1405. Resolved an issue with event emission on sync step failure for more reliable synchronization. PR by @aminsato in #1387. Refactored websocket error conditions for improved stability and error handling. PR by @joshklop in #1400. You can pull the Docker image for this release with the following command: docker pull nethermind/juno:v0.7.3 The primary goal of this release is to introduce support for Starknet JSON-RPC v0.5.0. Juno now supports multiple versions via /v0_5 and /v0_4 endpoints. The default version at the root / endpoint has been updated from 0.4.0 to 0.5.0. Starknet v0.5.0 Compatibility: Implemented starknet_specVersion @omerfirmak Renamed juno_getTransactionStatus to starknet_getTransactionStatus. @omerfirmak Removed pendingTransactions endpoint for cleanup. @omerfirmak Added new fields like execution resources and message hash to RPC receipt. @omerfirmak Building and calculating state diffs. @omerfirmak Make starknet_traceBlockTransactions get a block id @kirugan Add txn type to traces Add message_hash field for L1_HANDLER_TXN_RECEIPT Add starknet_getTransactionStatus and remove starknet_pendingTransactions Support multiple RPC versions: v0.4.0 and v0.5.0 @omerfirmak Performance Metrics: Moved metric counting out of various components for cleaner code. @omerfirmak Websocket Enhancements: Full-duplex comms and fixes related to over-reading websocket requests. @joshklop RPC Optimization: Reduced allocations in RPC requests for better performance. @joshklop Refactored Error Handling: Improved global error usage and better error handling in various components. @omerfirmak Websocket Reading: Fixed over-reading issues in Websocket requests.@joshklop Error Handling: Resolved potential nil pointer dereferences and panic issues. @omerfirmak Various CI/CD pipeline improvements for better automation. @wojciechos and @ToluwalopeAyo You can pull the Docker image for this release with: docker pull nethermind/juno:v0.7.0 New Trace RPC Methods: starknet_traceTransaction starknet_traceBlockTransactions starknet_simulateTransactions Juno RPC Schema: A dedicated schema to streamline RPC interactions for Juno’s method. Juno Console Enhancement: Pretty printing of Juno console logs for an enriched user experience. Comprehensive Documentation: Official documentation now hosted on GitHub Pages. RPC Schema Consistency: Revised to ensure our RPC schema is consistent with the Starknet specification. Command-line switches have been restructured to provide clearer access control: docker run -d --name juno -p $httpPort:$httpPort -p $metricsPort:$metricsPort -v /root/juno:/var/lib/juno nethermind/juno:v0.6.0 --db-path /var/lib/juno --http --http-port $httpPort --metrics --metrics-port $metricsPort --eth-node (Note: Ensure to adjust the variables like $httpPort, $metricsPort and others as per your configuration.) Database Migration: This version introduces database changes due to our work focus on peer-to-peer (p2p) communication. These changes may result in extended migration times. For faster sync, we recommend users to utilize snapshots. This release adds support for the Starknet v0.12.2. Support for Starknet v0.12.2 This release adds support for the upcoming Starknet v0.12.1 upgrade and includes compatibility with v0.4.0 of the RPC specification. Support for Starknet v0.12.1 Compatibility with v0.4.0 of the RPC specification New RPC method: starknet_estimateMessageFee Health Check Endpoint: A GET request to the / endpoint will now return a 200 status code for a healthy Juno node Added Prometheus metrics support: Use --metrics and --metrics-port to enable this feature Adjusted worker number for sync process, improving performance Updated blockifier for starknet v0.12.1 Resolved issues causing context canceled errors in writing RPC methods Mapped gateway errors to write API RPC errors, improving error handling Log the incoming RPC requests in Pull Request #907 Update types for 0.12.1 in Pull Request #895 Parallelize per-contract storage updates in Pull Request #900 Add missing From field to rpc.MsgToL1 in Pull Request #908 This release has breaking changes and database is not compatible with the previous version. New RPC Methods: starknet_call starknet_estimateFee starknet_addDeclareTransaction starknet_addDeployAccountTransaction starknet_addInvokeTransaction juno_getTransactionStatus juno_version L1 Verifier: Verification of state from Layer 1 has been implemented. Block Reorg Detection and Handling: A feature to detect and handle block reorganizations has been implemented. gRPC Service: To accommodate users requiring direct access to the database, a gRPC service has been exposed. Database Migration: The system has been improved to handle database changes more gracefully. It’s no longer necessary to sync from the start when some database changes occur. Starknet v0.12.0 support: includes integration with the Rust VM. Performance Enhancements: Several adjustments and improvements have been made to increase the performance. These changes have resulted in ~30% reduction in sync time. Fetch and store compiled classes for each Sierra class. Updated the behavior of synced nodes, which will now return false to starknet_syncing. Resolved issue with NumAsHex(0) being omitted in RPC. Fixed a Goerli sync issue by relaxing decoder max array elements limit. Full Changelog: [v0.3.0…​v0.3.1] Starknet v0.11.2 support History for contracts, nonce, and class hash. Implemented StateSnapshot. New RPC endpoints: starknet_syncing starknet_getNonce starknet_getStorageAt starknet_getClassHashAt starknet_getClass starknet_getClassAt starknet_getEvents For new RPC endpoints to fully work with data before the new version, the node needs to be resynced. Optimized TransactionStorage encoding and refactored memStorage. Refactored RPC implementation for better organization and maintainability. Parallelized and refactored sync tests for faster execution, improved readability, and maintainability. Updated handling of non-existent keys to return a zero value. Full Changelog: v0.3.0…​v0.3.1 This patch release fixes handling of block versioning and ensures compatibility with non-sem-ver compliant Starknet. Ignore or add digits to block version string as necessary. Full Changelog: v0.2.1…​v0.2.2 This minor release introduces an important optimization that enhances sync performance. Update gnark-crypto version: Implement precomputed point multiplication results for Pedersen hash operations. Full Changelog: v0.2.0…​v0.2.1 This release adds support for Staknet v0.11.0. This release has breaking changes and database is not compatible with the previous version. Starknet v0.11.0 support: Add Poseidon hash for new state commitment. Add DeclareTransaction version 2. Add and Store Cairo 1/Sierra class definition and hash calculations. pprof option is added for profiling and monitoring. Verify Class Hashes. Starknet v0.11.0 support: Update InvokeTransaction version 1’s contract address to sender address. Update current JSON RPC endpoints to [v.0.3.0-rc1](https://github.com/starkware-libs/starknet-specs/tree/v0.3.0-rc1). Rename the verbosity option to log-level and log-level accepts string instead of uint8. See help for details. network option accepts string instead of uint8. See help for details. Database table is updated to account for Starknet v0.11.0 changes. Remove metrics and eth-node options since they are not used. Graceful shutdown: ensure all services have returned before exiting. Full Changelog: v0.1.0…​v0.2.0 This is Juno’s first release (compatible with Starknet v0.10.3) with the following features: Starknet state construction and storage using a path-based Merkle Patricia trie. Pedersen and starknet_keccak hash implementation over starknet field. Feeder gateway synchronization of Blocks, Transactions, Receipts, State Updates and Classes. Block and Transaction hash verification. JSON-RPC Endpoints: starknet_chainId starknet_blockNumber starknet_blockHashAndNumber starknet_getBlockWithTxHashes starknet_getBlockWithTxs starknet_getTransactionByHash starknet_getTransactionReceipt starknet_getBlockTransactionCount starknet_getTransactionByBlockIdAndIndex starknet_getStateUpdate","title":"Juno release notes","component":"documentation","version":"","name":"juno_versions","url":"/documentation/starknet_versions/juno_versions/","titles":[{"text":"v0.7.3","hash":"v0_7_3","id":1},{"text":"Added","hash":"added","id":2},{"text":"Changed","hash":"changed","id":3},{"text":"Fixed","hash":"fixed","id":4},{"text":"Docker Image","hash":"docker_image","id":5},{"text":"v0.7.0","hash":"v0_7_0","id":6},{"text":"🌟 Added","hash":"added_2","id":7},{"text":"🔄 Changed","hash":"changed_2","id":8},{"text":"🛠 Fixed","hash":"fixed_2","id":9},{"text":"🚀 Deployment and CI/CD","hash":"deployment_and_cicd","id":10},{"text":"⚙️ Docker Image","hash":"docker_image_2","id":11},{"text":"v0.6.0","hash":"v0_6_0","id":12},{"text":"🌟 Added","hash":"added_3","id":13},{"text":"🛠 Fixed","hash":"fixed_3","id":14},{"text":"⚙️ Command-line Switches Update","hash":"command_line_switches_update","id":15},{"text":"🔍 Migration Notes","hash":"migration_notes","id":16},{"text":"v0.5.1","hash":"v0_5_1","id":17},{"text":"Added","hash":"added_4","id":18},{"text":"v0.5.0","hash":"v0_5_0","id":19},{"text":"Added","hash":"added_5","id":20},{"text":"Changed","hash":"changed_3","id":21},{"text":"Fixed","hash":"fixed_4","id":22},{"text":"v0.4.1","hash":"v0_4_1","id":23},{"text":"Added","hash":"added_6","id":24},{"text":"Changed","hash":"changed_4","id":25},{"text":"Fixed","hash":"fixed_5","id":26},{"text":"v0.4.0","hash":"v0_4_0","id":27},{"text":"Added","hash":"added_7","id":28},{"text":"Changed","hash":"changed_5","id":29},{"text":"v0.3.1","hash":"v0_3_1","id":30},{"text":"Added","hash":"added_8","id":31},{"text":"Changed","hash":"changed_6","id":32},{"text":"Fixed","hash":"fixed_6","id":33},{"text":"v0.3.0","hash":"v0_3_0","id":34},{"text":"Added","hash":"added_9","id":35},{"text":"Changed","hash":"changed_7","id":36},{"text":"Fixed","hash":"fixed_7","id":37},{"text":"v0.2.2","hash":"v0_2_2","id":38},{"text":"Fixed","hash":"fixed_8","id":39},{"text":"v0.2.1","hash":"v0_2_1","id":40},{"text":"v0.2.0","hash":"v0_2_0","id":41},{"text":"Added","hash":"added_10","id":42},{"text":"Changed","hash":"changed_8","id":43},{"text":"Removed","hash":"removed","id":44},{"text":"Fixed","hash":"fixed_9","id":45},{"text":"v0.1.0","hash":"v0_1_0","id":46}]},"14":{"id":14,"text":"Pathfinder is a Starknet full node giving you a safe view into Starknet. It provides the following features: Access the full Starknet state history Verifies state using Ethereum Implements the Starknet JSON-RPC API Run Starknet functions without requiring a Starknet transaction Ability to do fee estimation for transactions See the official Pathfinder GitHub repository for more details. stack overflow while compiling Sierra to CASM pending data from the gateway is inconsistent this could exhibit as RPC data changing status between pending | L2 accepted | not found, especially noticeable for transactions. substantially increase the character limit of execution errors previously, the RPC would return a highly truncated error message from the execution vm Pending data is not polled for starknet v0.12 due to an HTTP error code change from the gateway. Transaction receipts missing from_address in MSG_TO_L1. Sierra class hash not in declared classes sync bug use all libfunc list instead of experimental for sierra compilation starknet_estimateMessageFee for JSON-RPC v0.3.1 to estimate message fee from L1 handler. sync-related metrics current_block: the currently sync’d block height of the node highest_block: the height of the blockchain block_time: timestamp difference between the current block and its parent block_latency: delay between current block being published and sync’d locally block_download: time taken to download current block’s data excluding classes block_processing: time taken to process and store the current block configuration for new block polling interval: --sync.poll-interval Starknet v0.12.0 support sierra v2.0.0 support cairo-lang upgraded to 0.12.0a0 reorgs fail if a class declaration is included in the reorg sync can fail if db connection pool is held saturated by rpc queries uses finalized (reorg-safe) L1 state instead of latest starknet_getEvents times out for queries involving a large block range dropped upgrade support for pathfinder v0.4 and earlier separate db connection pools rpc, sync and storage increased the number of rpc db connections class hash mismatch for cairo 0 classes with non-ascii text starknet_simulateTransaction requires transactions instead of transaction as input field. gateway’s error message is hidden when submitting a failed transaction starknet_getEvents is very slow for certain filter combinations default RPC API version changed from v0.2 to v0.3 disallow JSON-RPC notification-style requests Starknet v0.11.2 support Sierra compiler v1.1.0-rc0 cairo-lang upgraded to 0.11.2a0 Subscription to newHead events via websocket using the method pathfinder_subscribe_newHeads, which can be managed by the following command line options rpc.websocket, which enables websocket transport rpc.websocket.capacity, which sets the maximum number of websocket subscriptions per subscription type Authors: [Shramee Srivastav](https://github.com/shramee) and [Matthieu Auger](https://github.com/matthieuauger) cairo-lang upgraded to 0.11.1.1 RPC emits connection logs and warnings Fee estimate mismatch between gateway and pathfinder Gateway uses a new gas price sampling algorithm which was incompatible with pathfinders. Fee estimate returns error when submitting Cairo 1.0.0-rc0 classes. Historic L1 handler transactions are served as Invoke V0 Older databases contain L1 handler transactions from before L1 handler was a specific transaction type. These were stored as Invoke V0. These are now correctly identified as being L1 Handler transactions. RPC emits connection logs and warnings Fee estimate mismatch between gateway and pathfinder Gateway uses a new gas price sampling algorithm which was incompatible with pathfinders. Historic L1 handler transactions are served as Invoke V0 Older databases contain L1 handler transactions from before L1 handler was a specific transaction type. These were stored as Invoke V0. These are now correctly identified as being L1 Handler transactions. The primary focus of this release is to provide support for Starknet v0.11.1, and will continue to work for v0.11.0. Since this release is required for v0.11.1, you should update your node before the network is updated. Starknet v0.11.1 support CORS support via the rpc.cors-domains configuration option Transaction hashes are now verified as part of the sync process. Previously, these were not verified as the exact algorithm was underdocumented and the transaction format was still evolving. RPC server panic for unprefixed unregistered method names Data can temporarily appear to go missing when transitioning from PENDING to ACCEPTED ON L2 This was commonly seen when rapidly monitoring a new transaction, which would go from PENDING to TXN_HASH_NOT_FOUND to ACCEPTED_ON_L2 as pathfinder moved the ephemeral pending data to latest data on disk. Fixes for minor issues and inconsistencies. max-rpc-connections command-line argument. This sets the maximum number incoming RPC connections the pathfinder node will accept. This defaults to 1024 if not specified. cairo-lang upgraded to 0.11.0.2 starknet_simulateTransaction data model inconsistency poll-pending default value restored to false incoming RPC connections limited to 100. This limit was accidentally introduced in v0.5.2 as part of a dependency upgrade, whereas before it was unlimited. The default is now 1024 and can be configured using --max-rpc-connections. handling of invalid JSON-RPC requests This release fixes a few RPC bugs and adds support for bulk fee estimation and transaction simulation (traces) as part of v0.3 RPC specification. In addition it also adds a pathfinder_getTransactionStatus endpoint which lets you track a transactions status — including REJECTED and RECEIVED — in the same fashion as the gateway. support starknet_estimateFee in the JSON-RPC v0.3 API supports estimating multiple transactions this includes declaring and immediately using a class (not currently possible via the gateway) support starknet_simulateTransaction for JSON-RPC v0.3 supports simulating multiple transactions this includes declaring and immediately using a class (not currently possible via the gateway) support pathfinder_getTransactionStatus which is exposed on all RPC routes this enables querying a transactions current status, including whether the gateway has received or rejected it RPC returns int for entrypoint offsets instead of hex RPC rejects Fee values with more than 32 digits RPC does not expose pathfinder_getProof on v0.3 route This is a minor bugfix release, primarily to fix an issue with syncing on testnet2. pathfinder sometimes spams nethermind L1 nodes pathfinder stops syncing testnet2 at block 95220 due to a Sierra class compilation issue starknet v0.11.0 support RPC API v0.3 partial support removed several deprecated config options requires python 3.9 or 3.10 (no longer 3.8) support for state commitment and class commitment in pathfinder_getProof support for starknet v0.11 partial support for RPC specification v0.3 exposed on /rpc/v0.3/ route missing support for starknet_estimateFee and starknet_simulate starknet_call and starknet_estimateFee JSON-RPC methods return more detailed error messages python version requirement has changed to 3.9 or 3.10 (was 3.8 or 3.9 previously) RPC accepts hex inputs for Felt without '0x' prefix. This led to confusion especially when passing in a decimal string which would get silently interpreted as hex. using a Nethermind Ethereum endpoint occasionally causes errors such as could not be found to be logged. sync can miss new block events by getting stuck waiting for pending data. --config configuration option (deprecated in [v0.4.1](https://github.com/eqlabs/pathfinder/releases/tag/v0.4.1)) --integration configuration option (deprecated in [v0.4.1](https://github.com/eqlabs/pathfinder/releases/tag/v0.4.1)) --sequencer-url configuration option (deprecated in [v0.4.1](https://github.com/eqlabs/pathfinder/releases/tag/v0.4.1)) --testnet2 configuration option (deprecated in [v0.4.1](https://github.com/eqlabs/pathfinder/releases/tag/v0.4.1)) starknet_addDeployTransaction as this is no longer an allowed transaction since starknet v0.10.3 RPC api version 0.1, which used to be served on path /rpc/v0.1 We added support for v0.3 and removed v0.1. We still support v0.2 at both /rpc/v0.2 and /rpc (default) routes. In summary: / # serves v0.2 /rpc/v0.2/ # serves v0.2 /rpc/v0.3/ # serves v0.3 We are missing starknet_estimateFee and starknet_simulate support for v0.3, which will be added in an upcoming release. Note: this only applies if you are building from source. This does not impact docker users. Pathfinder requires python to support the starknet VM used to simulate starknet transactions and function calls. Previous versions of the VM only worked with python 3.8 or 3.9 which was a hassle because most operating systems no longer directly support it. The new version of the VM bundled with starknet v0.11 now requires python version 3.9 or 3.10. Several configuration options are now removed, after they were deprecated in pathfinder v0.4.1. Here is a migration guide: --testnet2: use --network testnet2 instead --integration: use --network integration instead --sequencer-url: use --network custom in combination with --feeder-gateway-url and gateway-url --config: use environment variables or env files as an alternative Hotfix for a bug introduced in the previous version v0.4.4, which prevented a new node from syncing on blocks near genesis. Added Newton FAQ links to readme Node fails to sync old blocks @SecurityQQ made their first contribution in #799 This minor release contains some nice performance improvements for starknet_call and starknet_estimateFee as well as some minor bug fixes. Also included is a major new feature: storage proofs - big thanks @pscott for his hard work on this feature! This is available via the pathfinder_getProof method which is served from both the pathfinder and Starknet endpoints for convenience: /rpc/pathfinder/v0.1/pathfinder_getProof /rpc/v0.2/pathfinder_getProof The method is specified here. Its results can be used to formally verify what a contract’s storage values are without trusting the pathfinder node. This is achieved by validating the merkle-proof that pathfinder returns and confirming that it correctly matches the known Starknet state root. storage proofs via pathfinder_getProof by @pscott starknet_getEvents returns all events when from_block=\"latest\" v0.1 starknet_getStateUpdate does not contain nonces Improved performance for starknet_call and starknet_estimateFee by caching classes Improved performance for starknet_call and starknet_estimateFee by using Rust for hashing @pscott made their first contribution in #726 The primary purpose of this release is to properly support testnet2 after the Starknet v0.10.3 update. The v0.10.3 update changed the testnet2 chain ID which impacts transaction signatures which in turn meant that starknet_estimateFee would fail for any signed transaction. This release updates pathfinder to use the correct chain ID. Testnet2 and integration flags are ignored starknet_estimateFee uses wrong chain ID for testnet2 Updated to cairo-lang 0.10.3 Contains several bug fixes, mostly hotfixes for bugs introduced in v0.4.1. Document that --chain-id expects text as input Testnet2 and integration L1 addresses are swapped (bug introduced in v0.4.1) Proxy network setups can’t sync historical blocks (bug introduced in v0.4.1) ABI serialization for starknet_estimateFee for declare transactions Soft deprecation of some configuration options Support custom Starknet gateways Pathfinder RPC extensions at /rpc/pathfinder/ with pathfinder_version method starknet_events optimisations fix block timestamp in pending calls Custom Starknet gateway support This release introduces support for custom Starknets. You can select this network by setting --network custom and specifying the --gateway-url and --feeder-gateway-url options. Several configuration options have been soft deprecated. This means using them will continue to work as before (no breaking change), but they will emit a warning when used. They will be removed in a future version, so please migrate to the newer options. To re-emphasize: your current configuration setup will continue to work as is. --testnet2 and --integration have been deprecated in favor of --network testnet2 and --network integration. --sequencer-url has been deprecated in favor of --network custom along with --gateway-url, --feeder-gateway-url and --chain-id. In addition, you will need to rename your existing database file to custom.sqlite as this will be the expected filename for custom networks. --config has been deprecated and will not be supported in the future. The utility this provided was valuable. Unfortunately it is starting to severely hinder how fast we can implement configuration changes and we decided to remove it. We suggest using environment variables along with environment files to configure pathfinder in a similar fashion. The following configuration options are now marked as deprecated: --testnet2, --integration, --config, --sequencer-url Optimized starknet_events for queries with both a block range and a from address Block timestamps for pending in starknet_call and starknet_estimateFee were using the latest timestamp instead of the pending one. This meant contracts relying on accurate timestamps could sometimes fail unexpectedly. Custom Starknet support Pathfinder specific RPC extensions hosted at /rpc/pathfinder/v0.1. Currently, this only contains pathfinder_version which returns the pathfinder version of the node. This release contains a breaking change, and also adds support for Starknet v0.10.2. The changes themselves are quite simple, but please read through each section as there are some caveats which might impact you when you apply this update. This release changes the version of the RPC that is served at the root route, from v0.1 to v0.2 of the RPC specification. Version v0.1 is still available at the /rpc/v0.1/ endpoint. This is the only breaking change in this release. Here is a summary of what routes are currently available, and what’s changed: / serves v0.2 (changed from v0.1) /rpc/v0.1 serves v0.1 (no change) /rpc/v0.2 serves v0.2 (no change) If possible, we recommend that you use the version specific routes as this will prevent such breaking changes from impacting you. This release includes an update to the cairo-vm embedded in pathfinder in order to support the upcoming v0.10.2 Starknet release. This bundled vm is a pre-release and may therefore contain differences to the final version used once Starknet updates testnet and mainnet. We will of course issue a new release if / when there is a new vm. Since these changes are not yet live on testnet nor mainnet, this means upgrading to this release will cause deviations between what pathfinder outputs and what can be expected on the network. More specifically, starknet_estimateFee will compute different fees until the network has upgraded to Starknet v0.10.2. If you don’t need the RPC route changes, it may be pertinent to delay updating until closer to the v0.10.2 release dates on testnet and mainnet. The expected timeline for these upgrades is ~17/11 for testnets and ~24/11 for mainnet.","title":"Pathfinder release notes","component":"documentation","version":"","name":"pathfinder_versions","url":"/documentation/starknet_versions/pathfinder_versions/","titles":[{"text":"[0.6.6] - 2023-07-10 (latest)","hash":"0_6_6_2023_07_10_latest","id":1},{"text":"Fixed","hash":"fixed","id":2},{"text":"[0.6.5] - 2023-07-07","hash":"0_6_5_2023_07_07","id":3},{"text":"Fixed","hash":"fixed_2","id":4},{"text":"Changed","hash":"changed","id":5},{"text":"[0.6.4] - 2023-07-05","hash":"0_6_4_2023_07_05","id":6},{"text":"Fixed","hash":"fixed_3","id":7},{"text":"[0.6.3] - 2023-06-29","hash":"0_6_3_2023_06_29","id":8},{"text":"Fixed","hash":"fixed_4","id":9},{"text":"Changed","hash":"changed_2","id":10},{"text":"[0.6.2] - 2023-06-29","hash":"0_6_2_2023_06_29","id":11},{"text":"Added","hash":"added","id":12},{"text":"Fixed","hash":"fixed_5","id":13},{"text":"Changed","hash":"changed_3","id":14},{"text":"[0.6.1] - 2023-06-18","hash":"0_6_1_2023_06_18","id":15},{"text":"Fixed","hash":"fixed_6","id":16},{"text":"[0.6.0] - 2023-06-14","hash":"0_6_0_2023_06_14","id":17},{"text":"Fixed","hash":"fixed_7","id":18},{"text":"Changed","hash":"changed_4","id":19},{"text":"[0.5.6] - 2023-05-25","hash":"0_5_6_2023_05_25","id":20},{"text":"Added","hash":"added_2","id":21},{"text":"[0.5.5] - 2023-05-18","hash":"0_5_5_2023_05_18","id":22},{"text":"Added","hash":"added_3","id":23},{"text":"Fixed","hash":"fixed_8","id":24},{"text":"Fixed","hash":"fixed_9","id":25},{"text":"v0.5.4","hash":"v0_5_4","id":26},{"text":"Added","hash":"added_4","id":27},{"text":"Fixed","hash":"fixed_10","id":28},{"text":"v0.5.3","hash":"v0_5_3","id":29},{"text":"Added","hash":"added_5","id":30},{"text":"Fixed","hash":"fixed_11","id":31},{"text":"v0.5.2","hash":"v0_5_2","id":32},{"text":"Added","hash":"added_6","id":33},{"text":"Fixed","hash":"fixed_12","id":34},{"text":"v0.5.1","hash":"v0_5_1","id":35},{"text":"Fixed","hash":"fixed_13","id":36},{"text":"v0.5.0","hash":"v0_5_0","id":37},{"text":"Highlights","hash":"highlights","id":38},{"text":"Added","hash":"added_7","id":39},{"text":"Changed","hash":"changed_5","id":40},{"text":"Fixed","hash":"fixed_14","id":41},{"text":"Removed","hash":"removed","id":42},{"text":"RPC API","hash":"rpc_api","id":43},{"text":"Python requirement","hash":"python_requirement","id":44},{"text":"Configuration changes","hash":"configuration_changes","id":45},{"text":"v0.4.5","hash":"v0_4_5","id":46},{"text":"Added","hash":"added_8","id":47},{"text":"Fixed","hash":"fixed_15","id":48},{"text":"New contributors","hash":"new_contributors","id":49},{"text":"v0.4.4","hash":"v0_4_4","id":50},{"text":"Added","hash":"added_9","id":51},{"text":"Fixed","hash":"fixed_16","id":52},{"text":"Changed","hash":"changed_6","id":53},{"text":"New contributors","hash":"new_contributors_2","id":54},{"text":"v0.4.3","hash":"v0_4_3","id":55},{"text":"Fixed","hash":"fixed_17","id":56},{"text":"Changed","hash":"changed_7","id":57},{"text":"v0.4.2","hash":"v0_4_2","id":58},{"text":"Added","hash":"added_10","id":59},{"text":"Fixed","hash":"fixed_18","id":60},{"text":"v0.4.1","hash":"v0_4_1","id":61},{"text":"Highlights","hash":"highlights_2","id":62},{"text":"Configuration option deprecation","hash":"configuration_option_deprecation","id":63},{"text":"Network selection","hash":"network_selection","id":64},{"text":"Gateway proxy","hash":"gateway_proxy","id":65},{"text":"Configuration file","hash":"configuration_file","id":66},{"text":"Changed","hash":"changed_8","id":67},{"text":"Fixed","hash":"fixed_19","id":68},{"text":"Added","hash":"added_11","id":69},{"text":"v0.4.0- (breaking release)","hash":"v0_4_0_breaking_release","id":70},{"text":"Default RPC version change","hash":"default_rpc_version_change","id":71},{"text":"Starknet v0.10.2 support","hash":"starknet_v0_10_2_support","id":72}]},"15":{"id":15,"text":"You can subscribe to get the latest version updates delivered to your inbox at Starknet Roadmap & version updates. For information on the current version of Starknet, see the Starknet release notes.","title":"Upcoming Starknet versions","component":"documentation","version":"","name":"upcoming_versions","url":"/documentation/starknet_versions/upcoming_versions/","titles":[{"text":"Roadmap and version updates","hash":"what_to_expect","id":1}]},"16":{"id":16,"text":"The following release notes cover the ongoing version changes to Starknet. You can subscribe to get the latest version updates delivered to your inbox at Starknet Roadmap & version updates. Within Starknet’s deployment pipeline, there are separate and distinct networks that operate independently of each other for testing before deployment. Goerli testnet 2 is removed. Goerli testnet support will be removed April 11, 2024. Sepolia testnet replaces Goerli testnet. For more information, including bridge support for Sepolia, see Starknet Goerli Deprecation in the Starknet Dev News newsletter. Table 1. Current versions supported in each environment Environment Starknet version Sierra version Cairo version Mainnet 0.13.1 1.5.0 2.0.0 - 2.6 Sepolia Testnet 0.13.1 1.5.0 2.0.0 - 2.6 Goerli Testnet (deprecated) 0.13.1 1.5.0 2.0.0 - 2.6 Cheaper data availability: Starknet uses EIP-4844. Time-related syscalls when called from an account contract’s __validate__ function: timestamp returns the hour, rounded down. block_number returns the block number, rounded down to the nearest multiple of 100. Optimization: Load into memory only the functions in a contract that are actually used when generating the proof. A Cairo step now costs 0.0025 gas/step, a 50% reduction. All builtins costs are accordingly reduced by 50%. Each felt in the calldata and signature arrays of all transaction types now costs 0.128 gas/felt. Each felt of a sierra_program in the contract class and of bytecode in the compiled contract class now costs 28 gas/felt. v1 DECLARE transactions only include bytecode. Each character in the ABI costs 0.875 gas. An additional felt to the data array of an event now costs 0.128 gas/felt, similar to calldata. An additional felt to the keys array now costs 0.256 gas/felt. Starknet block: New field l1_da_mode, which indicates whether EIP-4844 was used in the block. eth_l1_gas_price and strk_l1_gas_price were replaced, and the information now contains the data gas price (EIP-4844) in addition to the regular gas price execution_resources in the transaction receipt now contains: data availability resources syscall resources, which contribute to the transaction fee but were not included in the receipt before this version. transaction_commitment and event_commitment are added to the block. 0 is returned for old blocks. Starknet now supports multiple L1 providers. Community Forum Posts: Starknet v0.13.1: EIP4844 Support, More Fee Reductions, Stability, Quality of Life Starknet v0.13.1: Fee Reduction Data availability with EIP4844 Starknet v0.13.1 pre-release notes Starknet v0.13.0 is live on Mainnet. Starknet 0.13.0 includes the following changes: v3 transactions, including: Fee payment in STRK Reserved fields for future features, such as Volition and payment master get_block API: The gas_price field is replaced by the eth_l1_gas_price and strk_l1_gas_price fields. This change applies also to existing blocks. For more information on the new fields, see the JSON RPC API Spec on GitHub Sierra v1.4.0. This new version of Sierra is part of Crate v2.4.0, in the Cairo 2.4.0 package. For more information, see Cairo v2.4.0 is out! on the Community forum. Improved performance of secp256k1_mul and secp256r1_mul syscalls Computation cost is reduced by approximately 50% as a result of reduced Cairo steps and increased use of builtins. L1 data availability cost is reduced by approximately 10%-25%. For an ERC-20 transfer, the DA fee reduction is 25%. Starknet v0.12.3 is live on Mainnet. This release partially removes support for the Starknet feeder gateway. For details, see Feeder Gateway Deprecation in Development Proposals on the Starknet community forum. Additionally, this version includes the following changes: Performance optimizations in the gateway, the computation of the Patricia storage root, and block hash Support for secp256r1 syscalls in the Starknet OS. Restriction for __validate__ and the constructor of DeployAccount transactions: Restrict access to sequencer_address in the get_execution_info syscall by returning 0's for the address. Restrict access to the following syscalls: Cairo contracts: get_block_hash Cairo 0 contracts: get_sequencer_address This version is available on both Goerli and Sepolia testnets. Move structs that are common to secp256k1 and secp256r1 to a separate file. Starknet v0.12.2 is live on Mainnet. This version includes the following changes: Enabling P2P Authentication: An additional endpoint in the sequencer gateway to provide a signature on the state diff commitment and block hash. Resolving Mismatches in Queries: An extension to the get_state_update endpoint in the sequencer gateway that returns both the pending state diff and the pending block together. Increased maximum Cairo steps per transaction from 1 million to 3 million. Starknet v0.12.1 is live on Mainnet. This version includes the following changes: Mempool Validation. Inclusion of Failed Transactions. Keccak builtin. Starknet v0.12.0 is live on Mainnet. This version contains the following changes: Use the rust blockifier and LambdaClass’s Cairo VM to accelerate the sequencer’s time to handle transactions. Support version 2.0.0 of the Cairo compiler. Replace the PENDING status of transactions to ACCEPTED_ON_L2 - once a transaction is in that status it means that it will be included in a block, this applies to transactions - blocks still have the PENDING status. Add an experimental get_block_hash syscall. Change HTTP error code from 500 to 400 on API errors. Starknet v0.11.2 is live on Mainnet. This version contains the following changes: Upgrade Cairo 1.0 version to v1.0.0-rc0 (Cairo 1.0 activated on Starknet!) Starknet v0.11.1 is live on Mainnet. This version contains the following changes: Upgrade Cairo 1.0 version to v1.0.0-rc0. Charged transaction fee is now based on an average Ethereum gas price instead of a single sample (estimation API is unaffected). API changes: Remove the state root in get_state_update for pending blocks to allow faster responses in future versions. Testing framework: Allow declaring (and interacting with) Cairo 1.0 contracts. Currently, the Cairo 1.0 ABI is not supported yet, so a Cairo 0 ABI should be supplied to declare() manually. Split deploy() to two phases declare and deploy: deprecated_declare() (for Cairo 0 contract) or declare() (for Cairo 1.0 contracts) and deploy() (for both). Add current block hash to the Starknet Core Contract (currently not verified by the Starknet OS): Breaking change: The LogStateUpdate event’s data is changed to include blockHash. Starknet v0.11.0 is live on Mainnet. invoke and declare transactions of version 0 are no longer supported on this version. In Starknet v0.11.0, you can declare, deploy and run Cairo 1.0 smart contracts. We also introduce a new system call that allows a smooth transitioning of existing contracts to a Cairo 1.0 implementation. Historically, contract classes have been defined in terms of Cairo assembly, or Casm for short (the class definition also included more information needed for execution, e.g., hint data). The novelty of Cairo 1.0 is the introduction of Sierra (Safe Intermediate Representation), an intermediate layer between Cairo 1.0 and Casm. The introduction of Cairo 1.0 and Sierra has several effects on the system. Below we list the effects on each component; of particular note are: A new version of the declare transaction, which allows sending the new class structure The state commitment will now include contract classes Changes to the onchain data format New system call - replace_class The deploy transaction is no longer supported on this version. This version contains the following changes: Starknet Performance - Separate the state commitment computation from the execution of the transactions Add starknet-class-hash command to compute the class hash of a compiled Starknet contract Cairo: Autoformatter: Automatically break lines inside expressions This version introduces sequencer parallelization! This is the first step in our roadmap of performance upgrades. Details about the specific mechanism of parallelization and the roadmap in general are described in this medium post. A new endpoint, estimate_fee_bulk, is added to the feeder gateway. This will allow estimating the fee of several transactions at once, where each transaction is executed relative to the resulting state from applying the previous one. Sequencing performance improvements Builtin ratio changes, which affects builtin costs Add estimate_fee_bulk API that computes the fee of multiple transactions that will be executed consecutively As part of this version, we will also increase the finality of transactions in the pending block, by fixing the timestamp at the time of the block creation. This will solve the issue of transactions moving from pending to rejected on account of too old timestamp This version contains the following changes: Starknet: Add DeployAccount transaction (which will replace the Deploy transaction for deploying account contracts). To use it, you should first add enough funds to your account address to pay the transaction fee, and then you can invoke DeployAccount Split the starknet deploy_account CLI command into starknet new_account and starknet deploy_account Account contracts that are expected to be deployed this way should implement the`validate_deploy()` entry point, which should check the signature of the DeployAccount transaction Improve L1 fee computation: the fee is computed according to the diff of the storage state API: Remove entry_point_type field from transaction information Cairo: Add uint256_mul_div_mod to uint256.cairo This version introduces the next step in Starknet’s account abstraction design, specifically the validate/execute separation. See here for more information. This version contains the following changes: Starknet: Contract (breaking changes): @external and @view functions should be imported directly by the main compiled file. Otherwise, they will not be usable as external functions Forbid using the same storage variable name in two modules New transaction version (version 1) for invoke and declare transactions: Transactions of version 0 are deprecated and will not be supported in Starknet from the next version (v0.11.0). Please update your systems to use the new version In order to use transactions of version 1 you will need to upgrade your account contracts Add nonce field to the transactions. Nonce validation is now part of the Starknet protocol and is enforced to be executed sequentially Invoke: Split execute to two functions:` validate` (only validates the transaction) and execute (only executes the transaction) Remove the selector (which is now always execute) field, following the above change. Declare: declare transaction should now be sent from an account (and is validated using validate_declare in the account contract) Support fee for sending L1 messages. At this point, it’s not mandatory and messages with no fee will still be handled. Starting from the next version it will become mandatory. Cairo: Syntax changes in Cairo (to make it more similar to rust and C++): You can use the cairo-migrate script to convert old code to the new syntax. Use the -i flag to apply the changes to the files End statements with ; New lines are still part of the language at this point, and you cannot put more than one instruction per line. This will change in Cairo1.0. Use { … } for code blocks (instead of : and end) Add () around the condition of if statements Remove the member keyword in structs Change comment to use // instead of # Use …​, ap` instead of `...; ap in low level Cairo code Support return types that are not tuples. For example, func foo() → felt (instead of func foo() → (r: felt)) As a result, it’s now mandatory to specify return types. func foo() → (res) should be replaced by func foo() → (res: felt). The cairo-migrate tool does that automatically. Return statement accepts expressions, rather than only tuples. For example, you can write let x = (5,); return x; A few standard library functions were changed to return felt. The cairo-migrate script also fixes calls to those functions Support using functions as expressions This only applies to functions with → felt signature`, whose ap change is known at compile-time (e.g., recursive functions cannot be used this way) Fix a bug in the secp signature verification code that allowed a malicious prover to ignore the value of v (this does not let the prover fake a signature, but allows it to claim that a valid signature is invalid). Add Cairo code for the recursive STARK verifier Technical changes: * Move from python3.7 to python3.9 This version contains the following changes: Starknet: API changes: Add get_block_traces API - returns all the transaction traces of a given block Add a list of declared contracts in get_state_update Add a 0x prefix for class hash in the API Add starknet_version field for blocks (only applies to new blocks) Starknet CLI: Change the default block number to pending Using a wallet is the default, --no_wallet must be specified explicitly to override this Deploying contracts: Add deploy_contract function to the account contract created by starknet deploy_account Use this function to deploy contract (unless using --no_wallet). In particular, deploy should be used after declaring the contract (it expects the contract class hash) Support --dry_run to get the transaction information without signing or sending it Support deploy_from_zero in the deploy syscall to deploy a contract to an address that does not depend on the deployer Cairo: * Support and in if statements (if x == y and z == w). At the moment other boolean combinations are not supported This version introduces the contract class/instance paradigm into Starknet. See here for more information. This version contains the following changes: Starknet: Enforce fees - max_fee must not be set to zero, and selector must be execute Split the concepts of contract class and contract instance. Add declare transaction type New API and CLI commands: declare - Declares a contract class get_class_by_hash - Returns the contract class given its hash get_class_hash_at - Returns the class hash for a given contract instance address Rename delegate_call to library_call, and change the contract address argument to class hash. Add a deploy system call. Rename ContractDefinition to ContractClass Reduce the compiled contract file’s size by removing unnecessary identifiers (this optimization can be disabled using --dont_filter_identifiers) Cairo: Initial support for the EC-op builtin (scalar multiplication over the STARK curve). Not supported in Starknet yet. Add additional helper methods to blake2s.cairo, including big-endian support Technical changes: * Change function’s return type from a struct to a named tuple. In particular, foo.Return.SIZE is no longer supported.","title":"Starknet release notes","component":"documentation","version":"","name":"version_notes","url":"/documentation/starknet_versions/version_notes/","titles":[{"text":"Starknet environments","hash":"starknet_environments","id":1},{"text":"Starknet v0.13.1","hash":"version0.13.1","id":2},{"text":"New features and enhancements","hash":"new_features_and_enhancements","id":3},{"text":"Pricing changes","hash":"pricing_changes","id":4},{"text":"Computation","hash":"computation","id":5},{"text":"Calldata and signatures","hash":"calldata_and_signatures","id":6},{"text":"Class declaration","hash":"class_declaration","id":7},{"text":"Events","hash":"events","id":8},{"text":"API changes:","hash":"api_changes","id":9},{"text":"Infrastructure updates","hash":"infrastructure_updates","id":10},{"text":"Additional resources","hash":"additional_resources","id":11},{"text":"Starknet v0.13.0 (Jan 10, 23)","hash":"version0.13.0","id":12},{"text":"Starknet v0.12.3 (Nov 19, 23)","hash":"version0.12.3","id":13},{"text":"Cairo 0","hash":"cairo_0","id":14},{"text":"Starknet v0.12.2 (Sep 04, 23)","hash":"version0.12.2","id":15},{"text":"Starknet v0.12.1 (Aug 21, 23)","hash":"version0.12.1","id":16},{"text":"Starknet v0.12.0 (July 12, 23)","hash":"version0.12.0","id":17},{"text":"Starknet v0.11.2 (May 31, 23)","hash":"version0.11.2","id":18},{"text":"Starknet v0.11.1 (May 23, 23)","hash":"version0.11.1","id":19},{"text":"Starknet v0.11.0 (Mar 29, 23)","hash":"version0.11.0","id":20},{"text":"Starknet v0.10.3 (Dec 12, 22)","hash":"version0.10.3","id":21},{"text":"Starknet v0.10.2 (Nov 29, 22)","hash":"version0.10.2","id":22},{"text":"Starknet v0.10.1 (Oct 25, 22)","hash":"version0.10.1","id":23},{"text":"Starknet v0.10.0 (Sept 05, 22)","hash":"version0.10.0","id":24},{"text":"Starknet v0.9.1 (July 20, 22)","hash":"version0.9.1","id":25},{"text":"Starknet v0.9.0 (June 06, 22)","hash":"version0.9.0","id":26}]},"17":{"id":17,"text":"A list of recommended full-nodes, open API endpoints, and API providers. For complete information on the Starknet Node API in JSON RPC format, see starknet_api_openrpc.json on GitHub. Table 1. API providers Provider Open API endpoint, where relevant Version support, where relevant Alchemy Starknet API FAQ All That Node Blast API https://blastapi.io/public-api/starknet Starknet Public API - Blast API BlockPI https://starknet.blockpi.network/v1/rpc/public Chainbase Chainstack Getting started > Starknet JSON-RPC version endpoints DRPC https://drpc.org/public-endpoints/starknet Dwellir https://www.dwellir.com/networks/starknet GetBlock Use the /rpc/vX_Y suffix, as explained in JSON-RPC API in Pathfinder’s README. Infura Lava Protocol https://www.lavanet.xyz/get-started/starknet Nethermind https://data.voyager.online RPC spec versions NOWNodes Reddio Table 2. Node providers Provider name Description More information Deoxys A Starknet full-node written in Rust and powered by Substrate by Kasar github.com/kasarlabs/deoxys Juno A Starknet full-node written in go-lang by Nethermind github.com/NethermindEth/juno Papyrus A Starknet full-node written in Rust by StarkWare github.com/starkware-libs/papyrus Pathfinder A Starknet full-node written in Rust by Equilibrium github.com/eqlabs/pathfinder","title":"Full nodes and API services","component":"documentation","version":"","name":"api-services","url":"/documentation/tools/api-services/","titles":[]},"18":{"id":18,"text":"Building a Starknet project and want your contract to be audited? The companies listed below have designated teams that provide auditing services to Starknet contracts. Table 1. A list of companies providing contract audits for Starknet Company name URL ABDK www.abdk.consulting Beosin beosin.com Chain Security chainsecurity.com Consensys Diligence consensys.net/diligence Extropy security.extropy.io Nethermind nethermind.io Open Zeppelin www.openzeppelin.com OtterSec osec.io PeckShield peckshield.com Trail of Bits www.trailofbits.com Zellic www.zellic.io Ginger Security gingersec.xyz","title":"Audit providers","component":"documentation","version":"","name":"audit","url":"/documentation/tools/audit/","titles":[]},"19":{"id":19,"text":"The tokens that are currently bridged to Starknet are listed in the following .json files: mainnet.json The addresses of the tokens currently bridged to Starknet Mainnet. goerli.json The addresses of the tokens currently bridged to Starknet Goerli testnet. sepolia.json The addresses of the tokens currently bridged to Starknet Sepolia testnet. Each token has the following parameters: name Token name. symbol Token symbol. decimals Number of decimal places used to get the user representation. l1_token_address Address of the L1 ERC-20 contract. l2_token_address Address of the L2 ERC-20 contract. l1_bridge_address Address of the L1 bridge contract. l2_bridge_address Address of the L2 bridge contract.","title":"Bridged tokens","component":"documentation","version":"","name":"bridged_tokens","url":"/documentation/tools/bridged_tokens/","titles":[]},"20":{"id":20,"text":"Following Maker DAO’s announcement on Jan 25th, StarkWare launched a new DAI contract and bridge on Starknet. The new DAI token and bridge are a part of StarkGate and compatible with StarkGate 2.0 features. You can withdraw old DAI tokens (DAI v0) without any limitation. Depositing using the DAI v0 bridge are disabled. You are encouraged to migrate to the new DAI token. You can use swap services on Starknet to swap DAI v0 for DAI. Maker DAO’s DAI token on Starknet is written in Cairo0 and is not upgradeable. Without upgradability, it cannot support StarkGate’s latest features, such as Smart Deposits and Withdrawal Limits, and over time it will stop being compatible with Starknet altogether (Regenesis). This means that a transition plan is necessary. On January 25th, StarkWare launched a new set of DAI bridge and token contracts under StarkGate, written in Cairo. This new DAI token will retain the same contract ’symbol’ and ’name’ as the existing one. To differentiate between the two on Apps and other UIs, we refer to the old DAI as “DAI v0” and the new DAI simply as “DAI.” Procedure Use one of the following methods: Use StarkGate: Withdraw your current DAI (DAI v0) to L1 using StarkGate Re-deposit your L1 DAI using StarkGate. StarkGate automatically issues the new DAI. Swap your DAI v0 for DAI using an L2 swap app or aggregator within the Starknet ecosystem, such as the following: LayerSwap Ekubo","title":"Migrating DAI v0 to DAI","component":"documentation","version":"","name":"dai_token_migration","url":"/documentation/tools/dai_token_migration/","titles":[]},"21":{"id":21,"text":"While Starknet is a blockchain, it is different from blockchains built on the model of the Ethereum virtual machine (EVM), and so it requires many of its own developer tools. The tools discussed here are being developed in coordination with StarkWare, and in some cases have received grants from StarkWare or the Starknet Foundation in order to make the development process as friendly as possible, with improvements happening all the time. While originally the stack of Starknet development tools was based mostly on Python, tool developers are moving towards building with Rust. See Tools for each stage of development below to understand where each tool fits in the development process. The tools listed here do not represent all that are available. Figure 1. Tools for each stage of development Starkli, pronounced Stark-lie, is a fast command-line interface that replaces the legacy starknet-CLI. Starkli is a standalone interface, that is, you can use it on its own, rather than as a component of another tool. If you’re not actually developing on Starknet and just want to interact, such as by sending transactions, then a standalone CLI might be more appropriate than an interface such as Cast, which is an integrated component of the Foundry development environment. Starknet community contributor Jonathan Lei, the co-founder and CTO of zkLend. Starkli is a Starknet CLI similar to cairo-lang but written in Rust. It’s easier to install and to navigate, and has no dependencies. The tool supports Braavos and Argent X smart wallets, and has embedded support for RPC endpoints. Starkli includes standard CLI functionality, such as the following: Deploying accounts. Interacting with contracts. Getting Starknet data, such as information about blocks, transactions, and more. Starkli also includes the following features: Compute class hashes from the Cairo file that defines the class. Compute a function’s selector. Encode messages. Auto-completion. Useful help commands. The ability to make multi-calls. Starkli: The New Starknet CLI, on Medium, includes information on getting started, including installation instructions. The Starkli Github repository The Starkli Book A Software Development Kit (SDK) is a library that abstracts the complexities of Starknet when building transactions and interacting with the blockchain, including the following: Read and write API calls, using both the JSON-RPC and the Feeder gateway API. Account creation. Cryptography: Signature verification and signing, computing hashes used by Starknet. Contract interactions: ABI import, constructing transactions. There are several SDKs for various languages, so you can choose the SDK according to your preferred language. SDK name Language Used by Maintainer Where to get it Starknet.js JavaScript, TypeScript Dapps, Wallets SpaceShard starknet.js Github repository Starknet.py Python Useful scripts Software Mansion (SWM) starknet.py Github repository Starknet-rs Rust Starkli, Foundry Jonathan Lei starknet-rs Github repository Starknet-go Go Chainlink Nethermind starknet-go Github repository A devnet is a Starknet instance that you run as a local node, which enables much quicker development than is possible using testnet, as well as providing privacy prior to launching on testnet. SpaceShard originally wrote starknet-devnet in Python, but they are now actively developing a version in Rust, starknet-devnet-rs. For now, the Python-based version is more feature-rich, with the most notable feature being the ability to fork the network at a given block, so if that’s important to you, then you need to use the Python-based version. However, starknet-devnet-rs runs more quickly, and the developers are working to bring it to feature parity with the Python-based starknet-devnet. starknet-devnet-rs is the only version that is receiving new features. SpaceShard starknet-devnet and starknet-devnet-rs include some accounts that are already funded with an ERC-20 token that can be used to pay fees. The ERC-20 contract that defines this token is also included. With starknet-devnet and starknet-devnet-rs You can do the following: Create mock accounts. Send transactions using pre-deployed, pre-funded accounts, which are included. Test tools. Test RPC requests. Deploy new contracts using an included Universal Deployer Contract (UDC). The starknet-devnet Gitbhub repository The starknet-devnet-rs Github repository Katana, developed by the Dojo team, is an extremely fast devnet designed to support local development with Dojo, which is a gaming engine for Starknet. You can use Katana as a general purpose devnet as well. Katana lets developers test applications locally using the Katana network to test the transactions being sent during the game. Katana provides convenient RPC methods that you can use to change the network’s configuration as needed. For example, you can change the block time or allow zero-fee transactions. Katana supports version v0.3.0 of the Starknet JSON-RPC specifications, the latest version as of June 2023. Katana lets you use native Starknet JSON calls, such as starknet_getTransactionReceipt, starknet_getStorageAt. Katana in the Dojo documentation includes information on installing and using Katana. The official package manager for Starknet. Software Mansion It makes life easier in the following ways: When installing Cairo packages, it handles adding, updating, and removing dependencies. You can use it to compile smart contracts. When creating your own Cairo package, it takes care of patching any libraries you need from Github, and lets you know if there’s a version mismatch. You can then use it to build and test your project, using the Cairo test runner. Building is quite fast. It includes the Cairo compiler, built-in, so unless you’re actually a compiler developer, you don’t need to set up any extra tooling. It includes a bundled binary of the Cairo language server, which you can use It works well with other tools in the Cairo ecosystem, such as Foundry and Dojo. The Scarb site Starknet Foundry is a toolchain for developing Starknet smart contracts. It helps with writing, deploying, and testing your smart contracts. Software Mansion Starknet Foundry includes the following features: Forge, a fast testing framework. Forge achieves performance comparable to the Cairo Test Runner with a better user experience. You can test standalone functions in your smart contracts and embed complex deployment flows. Support for prints in contracts. According to the documentation, the debugging features will follow the addition of support in the Starknet compiler. The online Foundry Book, with lots of helpful information and guidance in writing and running tests and interacting with Starknet. Integrated compiling and dependency management, using Scarb. Cast, which the documentation refers to by its command name, sncast. Cast is an integrated CLI specifically designed for performing Starknet RPC calls, sending transactions and getting Starknet chain data. You can use Cast to declare, deploy, and interact with contracts using the Starknet JSON-RPC. The Starknet Foundry Github repo A tool primarily for testing Cairo code. You can also deploy contracts using scripts in JavaScript. SpaceShard Hardhat is a popular JavaScript development environment for Ethereum, and if you are already familiar with it and want to use it on Starknet, then this plugin can come in handy. You can run Starknet commands as tasks in Hardhat, such as compiling a Cairo contract. Hardhat is integrated with a local devnet, so you only need to worry about writing your tests, in JavaScript, of course. Get Hardhat at the Hardhat site. Get the Starknet plugin at the Starknet Hardhat plugin Github repo. See examples of how to use the plugin at the Starknet Hardhat example scripts Github repo. Remix is a browser-based integrated development environment (IDE) for Ethereum that you can use for learning, experimenting and finding vulnerabilities in smart contracts, without installing anything. The Starknet Remix plugin lets you use Remix for testing Starknet smart contracts, so you can focus on learning Cairo and Starknet without the distraction of setting up a toolchain. Nethermind Remix and the Starknet Remix plugin include the following features: Integrated compiling. You can deploy contracts on any devnet, including the plugin’s own integrated devnet. You can also deploy on testnet or Mainnet. You can call functions of contracts that you have already deployed, to facilitate testing and interaction. Seamless integration with Scarb. Integration with block explorers such as Voyager, so you can easily check the execution of your transactions, in real time. The Starknet Remix Plugin is integrated with Starknet By Example, a rich repository of practical learning content. For more information on the Starknet Remix plugin, see Unlocking Onboarding to Starknet: An Overview of the Starknet Remix Plugin. Get started with Remix at the Remix Project site. Get started with the Starknet Remix plugin at the Starknet Remix plugin’s Github repo. An extension for the Microsoft Visual Studio Code IDE that provides assistance when writing Cairo smart contracts, by using the Cairo Language Server. StarkWare Features include: Compiler support for Cairo files. Live diagnostic highlighting for compile errors. Quick fixes with suggestions. Go to definitions for imports. Code completion for imports. Cairo 1.0 - Visual Studio Marketplace","title":"Starknet developer tools","component":"documentation","version":"","name":"devtools","url":"/documentation/tools/devtools/","titles":[{"text":"Starkli","hash":"starkli","id":1},{"text":"What is it?","hash":"what_is_it","id":2},{"text":"Who maintains it?","hash":"who_maintains_it","id":3},{"text":"Why should you care?","hash":"why_should_you_care","id":4},{"text":"Where do you get it?","hash":"where_do_you_get_it","id":5},{"text":"SDKs: A window into Starknet","hash":"sdks","id":6},{"text":"starknet-devnet, starknet-devnet-rs","hash":"starknet-devnet","id":7},{"text":"What is it?","hash":"what_is_it_2","id":8},{"text":"Who maintains it?","hash":"who_maintains_it_2","id":9},{"text":"Why should you care?","hash":"why_should_you_care_2","id":10},{"text":"Where do you get it?","hash":"where_do_you_get_it_2","id":11},{"text":"Katana","hash":"katana","id":12},{"text":"What is it?","hash":"what_is_it_3","id":13},{"text":"Where do you get it?","hash":"where_do_you_get_it_3","id":14},{"text":"Scarb: The Cairo package manager","hash":"scarb","id":15},{"text":"What is it?","hash":"what_is_it_4","id":16},{"text":"Who maintains it?","hash":"who_maintains_it_3","id":17},{"text":"Why should you care?","hash":"why_should_you_care_3","id":18},{"text":"Where do you get it?","hash":"where_do_you_get_it_4","id":19},{"text":"Starknet Foundry","hash":"starknet_foundry","id":20},{"text":"What is it?","hash":"what_is_it_5","id":21},{"text":"Who maintains it?","hash":"who_maintains_it_4","id":22},{"text":"Why should you care?","hash":"why_should_you_care_4","id":23},{"text":"Where do you get it?","hash":"where_do_you_get_it_5","id":24},{"text":"Hardhat (with a plugin)","hash":"hardhat","id":25},{"text":"What is it?","hash":"what_is_it_6","id":26},{"text":"Who maintains it?","hash":"who_maintains_it_5","id":27},{"text":"Why should you care?","hash":"why_should_you_care_5","id":28},{"text":"Where do you get it?","hash":"where_do_you_get_it_6","id":29},{"text":"The Starknet Remix plugin","hash":"starknet_remix_plugin","id":30},{"text":"What is it?","hash":"what_is_it_7","id":31},{"text":"Who maintains it?","hash":"who_maintains_it_6","id":32},{"text":"Why should you care?","hash":"why_should_you_care_6","id":33},{"text":"Where do you get it?","hash":"where_do_you_get_it_7","id":34},{"text":"The Visual Studio Code Cairo extension","hash":"vs_code_cairo_extension","id":35},{"text":"What is it?","hash":"what_is_it_8","id":36},{"text":"Who maintains it?","hash":"who_maintains_it_7","id":37},{"text":"Why should you care?","hash":"why_should_you_care_7","id":38},{"text":"Where do you get it?","hash":"where_do_you_get_it_8","id":39}]},"22":{"id":22,"text":"Goerli testnet 2 is removed. Goerli testnet support will be removed April 11, 2024. Sepolia testnet replaces Goerli testnet. For more information, including bridge support for Sepolia, see Starknet Goerli Deprecation in the Starknet Dev News newsletter. The Starknet Core Contract 0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4 Verifier address 0x47312450B3Ac8b5b8e247a6bB6d523e7605bDb60 Sequencer base URL for API routing https://alpha-mainnet.starknet.io The Starknet Core Contract 0xde29d060D45901Fb19ED6C6e959EB22d8626708e Verifier address 0x8f97970aC5a9aa8D130d35146F5b59c4aef57963 Sequencer base URL for API routing https://alpha4.starknet.io The Starknet Core Contract 0xE2Bb56ee936fd6433DC0F6e7e3b8365C906AA057 Verifier address 0x07ec0D28e50322Eb0C159B9090ecF3aeA8346DFe Sequencer base URL for API routing https://alpha-sepolia.starknet.io The Starknet fee tokens are STRK and ETH. L2 STRK address (Mainnet and testnet) 0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d L2 ETH address (Mainnet and testnet) 0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7 The Starknet voting token is vSTRK. For information on vSTRK, see vSTRK overview on the Starknet Governance Hub. Mainnet address 0x0782f0ddca11d9950bc3220e35ac82cf868778edb67a5e58b39838544bc4cd0f Sepolia testnet address 0x035c332b8de00874e702b4831c84b22281fb3246f714475496d74e644f35d492 Goerli testnet address 0x01a881a75bb478cedfd4d3ea19d2a4564350d78ea463a5287833526a416d5e31","title":"Starknet contract and sequencer addresses","component":"documentation","version":"","name":"important_addresses","url":"/documentation/tools/important_addresses/","titles":[{"text":"Starknet on Mainnet","hash":"starknet_on_mainnet","id":1},{"text":"Starknet version on Goerli testnet","hash":"starknet_version_on_goerli_testnet","id":2},{"text":"Starknet version on Sepolia testnet","hash":"starknet_version_on_sepolia_testnet","id":3},{"text":"Starknet fee tokens","hash":"starknet_fee_tokens","id":4},{"text":"Starknet voting token","hash":"starknet_voting_token","id":5}]},"23":{"id":23,"text":"Starknet currently has a number of limits in place in order to keep the network stable and optimized for the best performance. These are subject to revisions and change on a regular basis Table 1. Starknet current limits and triggers Entity Description Sepolia Goerli (deprecated) Mainnet Block time The maximum amount of time within which a pending block is closed, if no other limit is met. 4 minutes 4 minutes 4 minutes Block limit (Cairo steps) The maximum number of Cairo steps that can be completed within each block to ensure block production times remain consistent and predictable. 28,000,000 28,000,000 28,000,000 Block limit (gas) Certain Starknet operations, such as sending messages between L1 and L2, consume Ethereum gas. The current L1 state update mechanism involves an Ethereum transaction for each Starknet block. The gas limit for Starknet blocks is therefore inherited from the gas limit for Ethereum blocks. 5,000,000 5,000,000 5,000,000 Max transaction size (Cairo steps) The maximum number of computational steps, measured in Cairo steps, that a transaction can contain when processed on the Starknet network. This limit is important for ensuring the efficient execution of transactions and preventing potential congestion. 3,000,000 3,000,000 3,000,000 Max Cairo steps for validate The maximum number of computational steps, measured in Cairo steps, for a validate function. 1,000,000 1,000,000 1,000,000 Max contract bytecode size (Number of felts in the program) The maximum size of the bytecode or program that a smart contract can have on Starknet. Bytecode is the low-level code that comprises smart contracts. Limiting this size helps manage the complexity of contracts and the overall efficiency of the network. 81,290 81,290 81,290 Max contract class size The maximum size for a contract class within Starknet. Contract classes are a fundamental building block for smart contracts, and limiting their size can have implications for the network’s scalability and security. 4,089,446 bytes 4,089,446 bytes 4,089,446 bytes IP address limits (read/write) In order to reduce network spam, Starknet limits the amount of contract reads and writes that a single IP address can make. 200 per min per IP address 200 per min per IP address 200 per min per IP address Signature length (felts) 4,000 4,000 4,000 Calldata length (felts) 4,000 4,000 4,000","title":"Current limits","component":"documentation","version":"","name":"limits_and_triggers","url":"/documentation/tools/limits_and_triggers/","titles":[]},"24":{"id":24,"text":"A block explorer, or blockchain explorer, enables you to see transactions, blockchain metrics and other information. The following block explorers provide information on Starknet. Table 1. Starknet block explorers, in alphabetical order Block explorer name URL Starkscan https://starkscan.co ViewBlock https://viewblock.io/starknet Voyager https://voyager.online oklink https://www.oklink.com/starknet NFTScan (NFT explorer) https://starknet.nftscan.com/","title":"Block explorers","component":"documentation","version":"","name":"ref_block_explorers","url":"/documentation/tools/ref_block_explorers/","titles":[]},"25":{"id":25,"text":"StarkGate supports permissionless bridging. To permissionlessly add support for an ERC-20 token, use the enrollTokenBridge function. You can access this function using a block explorer or a CLI. Enrolling a new bridge does not add it to the StarkGate GUI. You can use a block explorer to use the newly created bridge. When you enroll a new ERC-20 token, StarkGate does the following: Adds bridge functionality for that token on L1 using the StarknetTokenBridge.sol contract. Adds bridge functionality for that token on L2 using the token_bridge.cairo class. Creates a new ERC-20 token contract on L2 based on a standard ERC-20 contract class. Each new contract uses the class hash of this contract class to identify its inheritance. When the code of token_bridge.cairo is updated, its class hash changes. However,any existing contract continues to refer to the previous class hash. Any new contracts use the new class hash. Be aware of the following: The L2 ERC-20 contract is a standard contract, so it is not recommended to add tokens with non-standard behavior, such as inflationary tokens. Adding a token that requires a customized bridging mechanism or a non-standard ERC-20 contract on L2 is currently not permissionless, and can be done only by the StarkWare team. Please contact StarkWare at support@starknetcommunity.io. enrollTokenBridge in the StarkGate function reference StarkGate architecture","title":"Adding a token to StarkGate","component":"documentation","version":"","name":"starkgate-adding_a_token","url":"/documentation/tools/starkgate-adding_a_token/","titles":[{"text":"Additional resources","hash":"additional_resources","id":1}]},"26":{"id":26,"text":"A Smart Deposit is a deposit that moves funds from L1 to L2 and then triggers subsequent actions. For example, a user can deposit funds and transfer those funds to another recipient, such as an exchange. The depositWithMessage function enables a Smart Deposit. depositWithMessage is similar to the deposit function, with an additional 256-bit message, which can contain instructions for executing additional actions. Upon completion, the depositWithMessage function triggers a call to a callback function, named on_receive, on the L2 contract that receives the deposit. The on_receive function receives the deposit message as input. on_receive must return true for the deposit to succeed. If on_receive returns false, or if the recipient contract does not include the on_receive function, the depositWithMessage function’s L1 handler fails. The user can recover their funds using the depositWithMessageCancelRequest function. To enable Smart Deposits in your application: Implement the on_receive function in the L2 contract that should receive deposits. Use the depositWithMessage function to transfer funds from L1 to L2. depositWithMessageCancelRequest depositWithMessage depositWithMessageReclaim L1 handler","title":"Performing a Smart Deposit","component":"documentation","version":"","name":"starkgate-automated_actions_with_bridging","url":"/documentation/tools/starkgate-automated_actions_with_bridging/","titles":[{"text":"Additional resources","hash":"additional_resources","id":1}]},"27":{"id":27,"text":"StarkGate, developed by StarkWare, bridges ETH and ERC-20 tokens between Ethereum and Starknet. Each supported token is associated with an L1 and L2 bridge contract that communicates via Starknet’s messaging mechanism. To use StarkGate, go to https://starkgate.starknet.io. A bridge enables you to fund your L2 wallet with ETH and ERC-20 tokens that reside on L1. The terms deposit, transact, and transfer refer to various operations involving a bridge, even though ETH and ERC-20 tokens never actually leave Ethereum. StarkGate 2.0 provides a contract that enables seamless backward compatibility with the previous version of StarkGate. When you update the code in your contract, make sure that you use the most up-to-date versions of all StarkGate contracts. StarkGate supports many tokens, including ETH, WBTC, USDC, DAI, and many more. For a comprehensive list of tokens that StarkGate supports, see the JSON files in the Starknet GitHub repository shown in the table StarkGate bridged tokens. Table 1. StarkGate bridged tokens Network StarkGate bridged tokens JSON file Mainnet mainnet.json Sepolia testnet sepolia.json Goerli testnet (deprecated) goerli.json Previously, StarkGate placed limitations for each supported token on the amount that could be deposited and the total value locked in the L1 bridge contract on Mainnet. These limits have been removed. A call to the L1 deposit function initiates a deposit. The function does the following: Transfers the funds from the user’s account to the Starknet bridge. Emits a Deposit event that includes the L1 and L2 addresses of the user, and the amount deposited. Sends a message to the corresponding L2 bridge with the amount deposited, and the recipient’s address. Starknet’s sequencer is now aware of the deposit transaction. The sequencer waits for enough L1 block confirmations to fill its quota to run before the corresponding deposit transaction is initiated on L2. During this period of time, the status of the L2 deposit transaction is NOT_RECEIVED. The sequencers refer to the deposit request by triggering the L1 handler using the handle_deposit function on the L2 bridge. The handle_deposit function verifies that the deposit indeed came from the corresponding L1 bridge. It then calls the relevant token’s contract on Starknet and mints the specified amount of the token on L2 for the user. The sequencers complete constructing the block. The status of the deposit request is now ACCEPTED_ON_L2. Starknet’s provers prove the validity of the block and submit a state update to L1. The message confirming transfer of the funds is cleared from the Starknet Core Contract, and the fact that the user has transferred their funds is part of the now finalized state of Starknet. If the message wasn’t on L1 to begin with, that is, if the deposit request was fraudulently created on Starknet, the state update would fail. A call to the L2 initiate_withdraw function initiates a withdrawal. The function does the following: Burns the transferred amount of tokens from the balance of the withdrawal’s initiator. Sends a message to the relevant L1 bridge with the amount to be transferred and the recipient’s address. The sequencer completes the block construction Starknet’s provers prove the validity of the block and submit a state update to L1. The message from the previous step is stored in the Starknet Core Contract. After the withdrawal message has been recorded on the Starknet Core Contract, anyone can finalize the transfer on L1 from the bridge back to the user, by calling the withdraw function. This step is permissionless, anyone can do it. The recipient’s address is part of the recorded message on L1, so they receive the funds regardless of who calls the withdraw function on L1. L1-L2 messaging The StarkGate developer’s reference: deposit function, Deposit event withdraw initiate_withdraw handle_deposit function on the L2 bridge","title":"StarkGate bridge overview","component":"documentation","version":"","name":"starkgate-bridge","url":"/documentation/tools/starkgate-bridge/","titles":[{"text":"Supported tokens in StarkGate","hash":"starkgate_supported_tokens","id":1},{"text":"L1→L2 transfer (deposit)","hash":"l1l2_transfer_deposit","id":2},{"text":"Step 1: Call the deposit function on L1","hash":"step_1_call_the_deposit_function_on_l1","id":3},{"text":"Step 2: Deposit triggered on Starknet","hash":"step_2_deposit_triggered_on_starknet","id":4},{"text":"Step 3: The block that includes the transfer is proved","hash":"step_3_the_block_that_includes_the_transfer_is_proved","id":5},{"text":"L2→L1 transfer (withdrawal)","hash":"l2l1_transfer_withdraw","id":6},{"text":"Step 1: Initiate a withdrawal from L2","hash":"step_1_call_the_withdraw_function_on_l2","id":7},{"text":"Step 2: Proving the block that includes the withdrawal transaction","hash":"proving_the_block_that_includes_the_withdrawal_transaction","id":8},{"text":"Step 3: Transferring the funds on L1","hash":"step_3_transferring_the_funds_on_l1","id":9},{"text":"Additional resources","hash":"additional_resources","id":10}]},"28":{"id":28,"text":"To ensure self-custody, StarkGate enables you to cancel a deposit if, after depositing funds with the deposit function on L1, you don’t see your funds appear on L2 within a reasonable amount of time. You can only cancel a deposit that you yourself deposited. In order to guard against an attack, it takes approximately five days to cancel a deposit. From the moment StarkGate receives the cancellation request, a counter begins. When exactly five days have passed, and the funds still do not appear on L2, you can reclaim the deposit. Procedure To cancel a deposit, call the depositCancelRequest request function. When StarkGate receives the cancellation request, a counter begins to count five days. When exactly five days have passed, and the funds still do not appear on L2, you can reclaim the deposit by calling depositReclaim. As long as the depositReclaim was not performed, the deposit may be processed, even if the cancellation delay time has already passed. Only the depositor is allowed to cancel a deposit, and only before depositReclaim was performed. depositCancelRequest in the StarkGate function reference. depositReclaim in the StarkGate function reference.","title":"Cancelling a deposit","component":"documentation","version":"","name":"starkgate-cancelling a deposit","url":"/documentation/tools/starkgate-cancelling%20a%20deposit/","titles":[{"text":"Additional resources","hash":"additional_resources","id":1}]},"29":{"id":29,"text":"StarkGate enforces a minimum fee for all transactions to account for the L1 → L2 message costs. For more information, see L1 → L2 message fees. You can estimate the fee using the following L1 functions: estimateDepositFeeWei Estimates the fee for a deposit transaction. estimateEnrollmentFeeWei Estimates the fee for an enrollment transaction. Additional resources estimateDepositFeeWei estimateEnrollmentFeeWei","title":"Estimating StarkGate fees","component":"documentation","version":"","name":"starkgate-estimating_fees","url":"/documentation/tools/starkgate-estimating_fees/","titles":[]},"30":{"id":30,"text":"While StarkGate is referred to as a bridge, technically, each supported token has its own bridge, each of which is defined in a corresponding pair of L1 and L2 contracts, as described in Components of a bridge for an individual token. Table 1. Components of a bridge for an individual token L1 ERC-20 contract that defines the token on Ethereum. This contract must exist before you can bridge it. Bridge functionality for ERC-20 tokens is supported in StarknetTokenBridge.sol. L2 StarkGate Cairo bridge contract instance of the token_bridge.cairo contract class. ERC-20 Cairo token contract instance of a standard ERC-20 Cairo token contract class. Each new contract uses the hash of this class to define its inheritance. StarkGate creates this contract automatically when creating the bridge in StarkGate. StarkGate 2.0 provides a contract that enables seamless backward compatibility with the previous version of StarkGate. When you update the code in your contract, make sure that you use the most up-to-date versions of all StarkGate contracts. You can check if a token is currently supported with the L1 function getBridge. You can permissionlessly add support for ERC-20 tokens to the multi-token bridge using the enrollTokenBridge function. StarkGate includes the following administration components: The StarkGate Manager is responsible for adding bridges The StarkGate Registry contains the addresses to all supported bridges enables a bridge developer to stop servicing an existing bridge All token bridges that existed prior to StarkGate 2.0 (Mainnet: January 2024) besides supporting all StarkGate 2.0 functionality, are backward compatible. Each token was bridged with a unique, custom pair of L1 and L2 bridge contracts. The L1 bridge is an instance of LegacyBridge.sol, and the L2 bridge is an instance of legacy_bridge_eic.cairo. L1 ERC-20 contract address: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 L2 ERC-20 contract address: 0x053c91253bc9682c04929ca02ed00b3e423f6710d2ee7e0d5ebb06f3ecf368a8 L1 bridge contract address: 0xF6080D9fbEEbcd44D89aFfBFd42F098cbFf92816 L2 bridge contract address: 0x05cd48fccbfd8aa2773fe22c217e808319ffcc1c5a6a463f7d8fa2da48218196 Consider the Deposit functions for the L1 bridge contract for USDC on Etherscan: 0xf6080d9fbeebcd44d89affbfd42f098cbff92816#writeProxyContract This contract has the following two deposit functions: deposit (0x0efe6a8b) and deposit (0xe2bbb158), which shows that the bridge includes support for the legacy functionality as well as the modern functionality: deposit (0x0efe6a8b) The StarkGate 2.0 contract, which includes support for all tokens within a single contract, requiring that you enter the address of the token in the deposit function. deposit (0xe2bbb158) The legacy contract, which is labeled Support Legacy ABI. This function does not include the token (address) parameter, because the contract that contains this function only supports USDC. Therefore, the address of the token is superfluous. The following tokens have legacy contracts as well as StarkGate 2.0 contracts: Starknet Token (STRK) Starknet Voting Token (vSTRK) Wrapped BTC (WBTC) USD Coin (USDC) Tether USD (USDT) Ether (ETH) Dai Stablecoin (DAI) Dai Stablecoin (DAI) (Dai v0) Wrapped liquid staked Ether 2.0 (wstETH) Rocket Pool ETH (rETH) R Stablecoin (R) Frax (FRAX) Frax Share (FXS) Staked Frax Ether (sfrxETH) LUSD Stablecoin (LUSD) Uniswap (UNI) For complete details, see the bridged_tokens directory on GitHub. By default, StarkGate imposes no limit on withdrawals. However, in order to mitigate risks associated with critical vulnerabilities that could result in the loss of user funds, StarkGate can enable a withdrawal limit. If a serious security issue arises, the security agent in the StarkGate contract can limit withdrawals to 5% of the Total Value Locked (TVL) per day for any affected token by calling the setWithdrawLimitPCT() function in the WithdrawalLimit.sol contract. A dedicated team can then investigate and resolve the issue. Only a security admin quorum can disable the withdrawal limit. The quorum will consist of Starknet Foundation members, Starknet ecosystem contributors, and StarkWare representatives. This diverse group will ensure that decisions reflect the Starknet community’s broad interests. This approach, blending manual oversight with automated detection, aims to minimize potential losses. Adding a token to StarkGate The StarkGate function reference. Lists functions exposed by the Registry, Manager, and the bridge itself, including: getBridge enrollTokenBridge L1 contracts on GitHub L2 contracts on GitHub","title":"StarkGate architecture","component":"documentation","version":"","name":"starkgate_architecture","url":"/documentation/tools/starkgate_architecture/","titles":[{"text":"The StarkGate Manager and Registry","hash":"StarkGate_manager_and_registry","id":1},{"text":"Legacy bridges","hash":"legacy_bridge","id":2},{"text":"Example: USDC contracts","hash":"example","id":3},{"text":"List of legacy bridges","hash":"legacy_bridges","id":4},{"text":"Withdrawal limit","hash":"stark_gate_withdrawal_limit","id":5},{"text":"Additional resources","hash":"additional_resources","id":6}]},"31":{"id":31,"text":"The StarkGate smart contracts include functions that you use to implement various flows in a dApp. For information on the movement of funds between Ethereum and Starknet, see StarkGate bridge overview. StarkGate 2.0 provides a contract that enables seamless backward compatibility with the previous version of StarkGate. When you update the code in your contract, make sure that you use the most up-to-date versions of all StarkGate contracts. The L1 functions and their interfaces, where available, are defined in the following smart contracts: Contract Name Functions StarkgateManager.sol The StarkGate Manager. Use the Manager to enroll a new token. An interface is available through IStarkgateManager.sol. enrollTokenBridge StarkgateRegistry.sol The StarkGate Registry. Use the Registry to view the addresses of existing bridges and to stop servicing a specific token. An interface is available through IStarkgateRegistry.sol. getBridge getWithdrawalBridges StarknetTokenBridge.sol The primary StarkGate bridge contract. The functions and events in this reference that provide the main user bridge functionality are defined in this contract. deposit depositCancelRequest depositReclaim depositWithMessage depositWithMessageCancelRequest depositWithMessageReclaim getStatus withdraw IStarkgateService.sol An interface to check if a contract is servicing a token. isServicingToken The L2 functions and their interfaces, where available, are defined in the following smart contracts: Contract Description Functions token_bridge.cairo The StarkGate bridge implementation on L2. This contract includes the standard functions for a token bridge. An interface is available through token_bridge_interface.cairo. get_erc20_class_hash get_identity get_l1_token get_l2_token get_remaining_withdrawal_quota get_version initiate_withdraw on_receive Functions are listed in alphabetical order. Deposits the specified amount of an ERC-20 token to the L1 StarkGate bridge contract. The deposit function does the following: Transfers the funds from the caller’s account to the Starknet bridge contract Emits the Deposit event with the sender’s address on L1, the recipient’s address on L2, and the amount external payable address token The address of the contract for the desired token. uint256 amount The amount of the deposit. uint256 l2Recipient The L2 address of the recipient. None. Deposit Event attributes address indexed sender The L1 address of the account that sent the deposit. address indexed token The address of the contract for the desired token. uint256 amount The amount of the deposit. uint256 indexed l2Recipient The L2 address of the recipient. The L2 address of the recipient. uint256 nonce The nonce for the L1 transaction. uint256 fee The Starknet fee sent with the transaction. Contract: StarknetTokenBridge.sol Function: deposit Event: Deposit Sends a request to StarkGate to cancel a deposit. You can send a cancellation request if the funds you transfer from L1 to L2 do not appear on L2 within a reasonable amount of time. In order to guard against an attack on Starknet, it takes approximately five days to cancel a deposit. When StarkGate receives the cancellation request, a counter begins. When exactly five days have passed, and the funds still do not appear on L2, you can reclaim the deposit using the depositReclaim function. The depositReclaim function can only be used once for any deposit cancellation request. external nonpayable address token The address of the contract for the desired token. uint256 amount The amount of the deposit. uint256 l2Recipient The L2 address of the recipient. uint256 nonce The nonce of the deposit. None. DepositCancelRequest Event attributes address indexed sender The L1 address of the account that sent the deposit. address indexed token The address of the contract for the desired token. uint256 amount The amount of the deposit. uint256 indexed l2Recipient The L2 address of the recipient. The L2 address of the recipient. uint256 nonce The nonce of the deposit. Contract: StarknetTokenBridge.sol Function: depositCancelRequest Event: DepositCancelRequest Reclaims a deposit after a five day period has passed from the time that StarkGate received a deposit cancellation request from the depositCancelRequest function. external nonpayable address token The address of the contract for the desired token. uint256 amount The amount of the deposit. uint256 l2Recipient The L2 address of the recipient. uint256 nonce The nonce of the deposit. None. event DepositReclaimed Event attributes address indexed sender The L1 address of the account that sent the deposit. address indexed token The address of the contract for the desired token. uint256 amount The amount of the deposit. uint256 indexed l2Recipient The L2 address of the recipient. The L2 address of the recipient. uint256 nonce The nonce of the deposit. Contract: StarknetTokenBridge.sol Function: depositReclaim Event: DepositReclaimed depositCancelRequest Similar to deposit, with a message attached. With this function, a deposit transaction can trigger subsequent actions. For example, you can deposit funds and include a message to transfer those funds to another address. depositWithMessage lets you execute these two separate transactions with a single user action. After depositing to another recipient, the L1 handler in token_bridge.cairo calls the on_receive function in the contract of the recipient. If on_receive returns true, then the on_receive function succeeded. If it returns false, or if it doesn’t return any value because the on_receive function is not implemented in the recipient contract, the operation fails and the transaction is reverted. external payable address token The address of the contract for the desired token. uint256 amount The amount of the deposit. uint256 l2Recipient The L2 address of the recipient. uint256[] calldata message The message attached to the deposit. None. DepositWithMessage Event attributes address indexed sender The L1 address of the account that sent the deposit. address indexed token The address of the contract for the desired token. uint256 amount The amount of the deposit. uint256 indexed l2Recipient The L2 address of the recipient. The L2 address of the recipient. uint256[] message The message attached to the deposit. uint256 nonce The nonce for the L1 transaction. uint256 fee The Starknet fee sent with the transaction. Contract: StarknetTokenBridge.sol Function: depositWithMessage Event: DepositWithMessage Sends a request to StarkGate to cancel a deposit sent with depositWithMessage. Similar to depositCancelRequest. external nonpayable address token The address of the contract for the desired token. uint256 amount The amount of the deposit. uint256 l2Recipient The L2 address of the recipient. uint256[] calldata message The message attached to the deposit. uint256 nonce The nonce of the deposit. None. DepositWithMessageCancelRequest Event attributes address indexed sender The L1 address of the account that sent the deposit. address indexed token The address of the contract for the desired token. uint256 amount The amount of the deposit. uint256 indexed l2Recipient The L2 address of the recipient. The L2 address of the recipient. uint256[] message The message attached to the deposit. uint256 nonce The nonce for the L1 transaction. Contract: StarknetTokenBridge.sol Function: depositWithMessageCancelRequest Event: DepositWithMessageCancelRequest depositWithMessage depositCancelRequest Sends a request to StarkGate to cancel a deposit sent with depositWithMessage. Similar to depositCancelRequest. Reclaims a deposit sent with a message after a five day period has passed from the time that StarkGate received a deposit cancellation request from the depositWithMessageCancelRequest function. external nonpayable address token The address of the contract for the desired token. uint256 amount The amount of the deposit. uint256 l2Recipient The L2 address of the recipient. uint256 nonce The nonce of the deposit. None. DepositWithMessageCancelRequest Event attributes address indexed sender The L1 address of the account that sent the deposit. address indexed token The address of the contract for the desired token. uint256 amount The amount of the deposit. uint256 indexed l2Recipient The L2 address of the recipient. The L2 address of the recipient. uint256[] message The message attached to the deposit. uint256 nonce The nonce for the L1 transaction. Contract: StarknetTokenBridge.sol Function: depositWithMessageReclaim Event: DepositWithMessageReclaimed depositCancelRequest depositReclaim depositWithMessageCancelRequest Creates a Starknet bridge for the specified ERC-20 token contract address in the multi-token bridge contracts and adds the token to the StarkGate Registry. Does not work for any ERC-20 token bridge’s contract address that is already in the registry. Enrolling a new bridge creates a new ERC-20 contract on L2. You can see the class hash for this contract using get_erc20_class_hash. Enrolling a new bridge does not add it to the StarkGate GUI. You can use a block explorer to use the newly created bridge. external payable The message payload needs to include funds to cover the Starknet (L2) fee for executing this transaction. You can include this payload using a standard wrapper such as web3.js. address token The address of the contract for the desired ERC-20 token. None. TokenEnrollmentInitiated Function: enrollTokenBridge in StarkgateManager.sol Event: TokenEnrollmentInitiated in StarknetTokenBridge.sol Returns an estimate of the fee, in Wei, for depositing funds to the L1 StarkGate bridge contract. external view None. uint256 An estimate of the fee, in Wei, for depositing funds to the L1 StarkGate bridge contract. None. estimateDepositFeeWei in StarknetTokenBridge.sol deposit depositWithMessage Returns an estimate of the fee, in Wei, for creating and registering a new bridge using the enrollTokenBridge function. external view None. uint256 An estimate of the fee, in Wei, for creating and registering a new bridge. None. estimateEnrollmentFeeWei in StarknetTokenBridge.sol enrollTokenBridge Returns the address of the bridge for the specified token, or a value indicating if the bridge does not exist, is blocked, or is deactivated. external view address token The address of the contract for the desired ERC-20 token. address address The address of the bridge for the specified token. Address(0) The bridge does not exist. Address(1) The bridge is blocked or deactivated. None. getBridge in IStarkgateRegistry.sol Returns the address of the StarkGate Registry contract. Only the Manager uses this function. external view None address The address of the Registry contract. None. getRegistry in StarkgateManager.sol Returns the status of a token in StarkGate. deploy transaction triggered by the enrollTokenBridge API. external view address token The address of the contract for the desired ERC-20 token. TokenStatus One of the following values: 0 Unknown. The bridge does not recognize the token. 1 Pending. The token has been enrolled to StarkGate, but the deploy transaction has not yet successfully completed. You can deposit funds. 2 Active. The deploy transaction for this token has completed successfully and StarkGate recognizes the token. 3 Deactivated. The token has been removed from StarkGate. You cannot deposit funds. None. getStatus in StarknetTokenBridge.sol Retrieves a list of all bridge addresses that have ever facilitated withdrawals for the specified token. In a case where an inactive bridge for a specific token might still have funds locked, you can use this function to identify all bridges that ever serviced that token. If you used a bridge for a given token that subsequently was replaced with a new or updated bridge, but you still have funds locked on the first bridge, you might not know the address of the old bridge. This function returns external view address token The address of the contract for the desired token. address[] memory bridges An array of addresses of all bridges that ever serviced token. None. getWithdrawalBridges in StarkgateRegistry.sol. Returns the name and version of the StarknetTokenBridge.sol contract. external pure None. string memory The name and version of the StarknetTokenBridge.sol contract. None. identify in StarknetTokenBridge.sol Checks whether the calling contract is currently providing a service for the specified token. external view address token The address of the contract for the desired token. true The calling contract is currently providing a service for the token. false The calling contract is not currently providing a service for the token. None. isServicingToken in IStarkgateService.sol. Transfers the specified amount of the specified token to the address of the recipient specified in the l1_recipient parameter of the initiate_token_withdraw function on L2. Anyone can call this function, but only after the withdraw message has been recorded on the Starknet Core Contract. address token The address of the contract for the desired token. uint256 amount The amount of the withdrawal. address recipient (Optional) The recipient. If you don’t specify this parameter, the withdraw function uses the sender’s address. nonpayable None. Withdrawal Event attributes address indexed recipient The recipient. address indexed token The address of the contract for the desired token. uint256 amount The amount of the withdrawal. Contract: StarknetTokenBridge.sol Function: withdraw Event: Withdrawal Functions are listed in alphabetical order. Returns the current class hash of the implementation used by the ERC-20 contract. Use the class hash as the type when deploying the ERC-20 contract on L2. If StarkWare changes the class hash such that it is no longer the class hash that you used when deploying your bridge contract, this function returns the new class hash. If you want to refer to the class hash that you used when deploying your contract, see your deployed contract on Starknet. None. ClassHash The class hash of the ERC-20 token contract. get_erc20_class_hash in token_bridge.cairo. Returns a string in a felt252 type with the identity of StarkGate. None. felt252 The identity of StarkGate. get_identity in token_bridge_interface.cairo. Returns the L1 address that corresponds to the matching L2 address of an ERC-20 token contract. l2_token_address: ContractAddress The L2 address of the ERC-20 token contract. EthAddress The L1 address of the ERC-20 token contract. EthAddressZeroable::zero() The token is not found in the bridge. get_l1_token in token_bridge_interface.cairo. Returns the L2 address that corresponds to the matching L1 address of an ERC-20 token contract. If the token is not found in the bridge, this function returns 0. l1_token_address The L1 address of the ERC-20 token contract. ContractAddress address The L2 address of the ERC-20 token contract. ContractAddressZeroable::zero() The token is not found in the bridge. get_l2_token in token_bridge_interface.cairo. Returns the amount that the user can withdraw within the current 24-hour time period. The time period begins at 00:00 UTC. l1_token_address The L1 address of the ERC-20 token contract. u256 The amount that can currently be withdrawn from the bridge, in units defined by the ERC-20 token contract. get_remaining_withdrawal_quota in token_bridge_interface.cairo Returns the current version of StarkGate. None. felt252 The current version of StarkGate. get_version in token_bridge_interface.cairo. Initiates a withdrawal from L2. After initiating the withdrawal, the function does the following: Burns the transferred amount of tokens from the balance of the withdrawal’s initiator. Sends a message to the relevant L1 bridge with the amount to be transferred, and the recipient’s address. l1_recipient The L1 address of the recipient. EthAddress token The L1 address of the ERC-20 token contract. uint256 amount The amount to transfer. None. initiate_withdraw in token_bridge_interface.cairo. An interface to an implementation of the on_receive function that you must provide in your L2 contract in order to enable the depositWithMessage function to succeed. The L2 contract that receives the message that is sent with the depositWithMessage function must implement a callback function named on_receive. Upon completion, the depositWithMessage function triggers a call to the on_receive callback function on the receiving L2 contract. The on_receive function receives the deposit message as input, and it must return true for the deposit to succeed. If on_receive returns false, or if the receiving contract does not implement on_receive, the depositWithMessage L1 handler fails, and the user can only recover their funds using the depositWithMessageCancelRequest function. l2_token: ContractAddress The L2 address of the ERC-20 token contract. amount: uint256 The amount deposited. depositor: EthAddress L1 address of the deposit sender. message: Span The message that was sent with the depositWithMessage function. true The on_receive function completed successfully. false The on_receive function did not complete successfully. The transaction is reverted. No value If the recipients’s smart contract does not implement the on_receive function, the call fails to execute, and the transaction is reverted. on_receive in receiver_interface.cairo.","title":"StarkGate function and event reference","component":"documentation","version":"","name":"starkgate_function_reference","url":"/documentation/tools/starkgate_function_reference/","titles":[{"text":"L1 function reference","hash":"l1_function_reference","id":1},{"text":"deposit","hash":"deposit","id":2},{"text":"Description","hash":"description","id":3},{"text":"Visibility","hash":"visibility","id":4},{"text":"State Mutability","hash":"state_mutability","id":5},{"text":"Parameters","hash":"parameters","id":6},{"text":"Returns","hash":"returns","id":7},{"text":"Emitted event","hash":"emitted_event","id":8},{"text":"Function and event definitions","hash":"function_and_event_definitions","id":9},{"text":"depositCancelRequest","hash":"depositCancelRequest","id":10},{"text":"Description","hash":"description_2","id":11},{"text":"Visibility","hash":"visibility_2","id":12},{"text":"State Mutability","hash":"state_mutability_2","id":13},{"text":"Parameters","hash":"parameters_2","id":14},{"text":"Returns","hash":"returns_2","id":15},{"text":"Emitted event","hash":"emitted_event_2","id":16},{"text":"Function and event definitions","hash":"function_and_event_definitions_2","id":17},{"text":"depositReclaim","hash":"depositReclaim","id":18},{"text":"Description","hash":"description_3","id":19},{"text":"Visibility","hash":"visibility_3","id":20},{"text":"State Mutability","hash":"state_mutability_3","id":21},{"text":"Parameters","hash":"parameters_3","id":22},{"text":"Returns","hash":"returns_3","id":23},{"text":"Emitted event","hash":"emitted_event_3","id":24},{"text":"Function and event definitions","hash":"function_and_event_definitions_3","id":25},{"text":"See also","hash":"see_also","id":26},{"text":"depositWithMessage","hash":"depositWithMessage","id":27},{"text":"Description","hash":"description_4","id":28},{"text":"Visibility","hash":"visibility_4","id":29},{"text":"State Mutability","hash":"state_mutability_4","id":30},{"text":"Parameters","hash":"parameters_4","id":31},{"text":"Returns","hash":"returns_4","id":32},{"text":"Emitted event","hash":"emitted_event_4","id":33},{"text":"Function and event definitions","hash":"function_and_event_definitions_4","id":34},{"text":"depositWithMessageCancelRequest","hash":"depositWithMessageCancelRequest","id":35},{"text":"Description","hash":"description_5","id":36},{"text":"Visibility","hash":"visibility_5","id":37},{"text":"State Mutability","hash":"state_mutability_5","id":38},{"text":"Parameters","hash":"parameters_5","id":39},{"text":"Returns","hash":"returns_5","id":40},{"text":"Emitted event","hash":"emitted_event_5","id":41},{"text":"Function and event definitions","hash":"function_and_event_definitions_5","id":42},{"text":"See also","hash":"see_also_2","id":43},{"text":"depositWithMessageReclaim","hash":"depositWithMessageReclaim","id":44},{"text":"Description","hash":"description_6","id":45},{"text":"Visibility","hash":"visibility_6","id":46},{"text":"State Mutability","hash":"state_mutability_6","id":47},{"text":"Parameters","hash":"parameters_6","id":48},{"text":"Returns","hash":"returns_6","id":49},{"text":"Emitted event","hash":"emitted_event_6","id":50},{"text":"Function and event definitions","hash":"function_and_event_definitions_6","id":51},{"text":"See also","hash":"see_also_3","id":52},{"text":"enrollTokenBridge","hash":"enrollTokenBridge","id":53},{"text":"Description","hash":"description_7","id":54},{"text":"Visibility","hash":"visibility_7","id":55},{"text":"State Mutability","hash":"state_mutability_7","id":56},{"text":"Parameters","hash":"parameters_7","id":57},{"text":"Returns","hash":"returns_7","id":58},{"text":"Emitted event","hash":"emitted_event_7","id":59},{"text":"Function and event definition","hash":"function_and_event_definition","id":60},{"text":"estimateDepositFeeWei","hash":"estimateDepositFeeWei","id":61},{"text":"Description","hash":"description_8","id":62},{"text":"Visibility","hash":"visibility_8","id":63},{"text":"State Mutability","hash":"state_mutability_8","id":64},{"text":"Parameters","hash":"parameters_8","id":65},{"text":"Returns","hash":"returns_8","id":66},{"text":"Emitted event","hash":"emitted_event_8","id":67},{"text":"Function definition","hash":"function_definition","id":68},{"text":"Additional resources","hash":"additional_resources","id":69},{"text":"estimateEnrollmentFeeWei","hash":"estimateEnrollmentFeeWei","id":70},{"text":"Description","hash":"description_9","id":71},{"text":"Visibility","hash":"visibility_9","id":72},{"text":"State Mutability","hash":"state_mutability_9","id":73},{"text":"Parameters","hash":"parameters_9","id":74},{"text":"Returns","hash":"returns_9","id":75},{"text":"Emitted event","hash":"emitted_event_9","id":76},{"text":"Function definition","hash":"function_definition_2","id":77},{"text":"Additional resource","hash":"additional_resource","id":78},{"text":"getBridge","hash":"getBridge","id":79},{"text":"Description","hash":"description_10","id":80},{"text":"Visibility","hash":"visibility_10","id":81},{"text":"State Mutability","hash":"state_mutability_10","id":82},{"text":"Parameters","hash":"parameters_10","id":83},{"text":"Returns","hash":"returns_10","id":84},{"text":"Emitted event","hash":"emitted_event_10","id":85},{"text":"Function definition","hash":"function_definition_3","id":86},{"text":"getRegistry","hash":"getRegistry","id":87},{"text":"Description","hash":"description_11","id":88},{"text":"Visibility","hash":"visibility_11","id":89},{"text":"State Mutability","hash":"state_mutability_11","id":90},{"text":"Parameters","hash":"parameters_11","id":91},{"text":"Returns","hash":"returns_11","id":92},{"text":"Emitted event","hash":"emitted_event_11","id":93},{"text":"Function definition","hash":"function_definition_4","id":94},{"text":"getStatus","hash":"getStatus","id":95},{"text":"Description","hash":"description_12","id":96},{"text":"Visibility","hash":"visibility_12","id":97},{"text":"State Mutability","hash":"state_mutability_12","id":98},{"text":"Parameters","hash":"parameters_12","id":99},{"text":"Returns","hash":"returns_12","id":100},{"text":"Emitted event","hash":"emitted_event_12","id":101},{"text":"Function definition","hash":"function_definition_5","id":102},{"text":"getWithdrawalBridges","hash":"getWithdrawalBridges","id":103},{"text":"Description","hash":"description_13","id":104},{"text":"Visibility","hash":"visibility_13","id":105},{"text":"State Mutability","hash":"state_mutability_13","id":106},{"text":"Parameters","hash":"parameters_13","id":107},{"text":"Returns","hash":"returns_13","id":108},{"text":"Emitted event","hash":"emitted_event_13","id":109},{"text":"Function definition","hash":"function_definition_6","id":110},{"text":"identify","hash":"identify","id":111},{"text":"Description","hash":"description_14","id":112},{"text":"Visibility","hash":"visibility_14","id":113},{"text":"State Mutability","hash":"state_mutability_14","id":114},{"text":"Parameters","hash":"parameters_14","id":115},{"text":"Returns","hash":"returns_14","id":116},{"text":"Emitted event","hash":"emitted_event_14","id":117},{"text":"Function definition","hash":"function_definition_7","id":118},{"text":"isServicingToken","hash":"isServicingToken","id":119},{"text":"Description","hash":"description_15","id":120},{"text":"Visibility","hash":"visibility_15","id":121},{"text":"State Mutability","hash":"state_mutability_15","id":122},{"text":"Parameters","hash":"parameters_15","id":123},{"text":"Returns","hash":"returns_15","id":124},{"text":"Emitted event","hash":"emitted_event_15","id":125},{"text":"Function definition","hash":"function_definition_8","id":126},{"text":"withdraw","hash":"withdraw","id":127},{"text":"Description","hash":"description_16","id":128},{"text":"Parameters","hash":"parameters_16","id":129},{"text":"State mutability","hash":"state_mutability_16","id":130},{"text":"Returns","hash":"returns_16","id":131},{"text":"Emitted event","hash":"emitted_event_16","id":132},{"text":"Function and event definition","hash":"function_and_event_definition_2","id":133},{"text":"L2 function reference","hash":"l2_function_reference","id":134},{"text":"get_erc20_class_hash","hash":"get_erc20_class_hash","id":135},{"text":"Description","hash":"description_17","id":136},{"text":"Parameters","hash":"parameters_17","id":137},{"text":"Returns","hash":"returns_17","id":138},{"text":"Function definition","hash":"function_definition_9","id":139},{"text":"get_identity","hash":"get_identity","id":140},{"text":"Description","hash":"description_18","id":141},{"text":"Parameters","hash":"parameters_18","id":142},{"text":"Returns","hash":"returns_18","id":143},{"text":"Function definition","hash":"function_definition_10","id":144},{"text":"get_l1_token","hash":"get_l1_token","id":145},{"text":"Description","hash":"description_19","id":146},{"text":"Parameters","hash":"parameters_19","id":147},{"text":"Returns","hash":"returns_19","id":148},{"text":"Function definition","hash":"function_definition_11","id":149},{"text":"get_l2_token","hash":"get_l2_token","id":150},{"text":"Description","hash":"description_20","id":151},{"text":"Parameters","hash":"parameters_20","id":152},{"text":"Returns","hash":"returns_20","id":153},{"text":"Function definition","hash":"function_definition_12","id":154},{"text":"get_remaining_withdrawal_quota","hash":"get_remaining_withdrawal_quota","id":155},{"text":"Description","hash":"description_21","id":156},{"text":"Parameters","hash":"parameters_21","id":157},{"text":"Returns","hash":"returns_21","id":158},{"text":"Function definition","hash":"function_definition_13","id":159},{"text":"get_version","hash":"get_version","id":160},{"text":"Description","hash":"description_22","id":161},{"text":"Parameters","hash":"parameters_22","id":162},{"text":"Returns","hash":"returns_22","id":163},{"text":"Function definition","hash":"function_definition_14","id":164},{"text":"initiate_withdraw","hash":"initiate_withdraw","id":165},{"text":"Description","hash":"description_23","id":166},{"text":"Parameters","hash":"parameters_23","id":167},{"text":"Returns","hash":"returns_23","id":168},{"text":"Function definition","hash":"function_definition_15","id":169},{"text":"on_receive","hash":"on_receive","id":170},{"text":"Description","hash":"description_24","id":171},{"text":"Parameters","hash":"parameters_24","id":172},{"text":"Returns","hash":"returns_24","id":173},{"text":"Function definition","hash":"function_definition_16","id":174}]},"32":{"id":32,"text":"The Starknet Book serves as a comprehensive guide to understanding Starknet, Cairo, and introduces you to the Starknet ecosystem. The Starknet Book caters to various objectives and interests. Mix and match these chapters to customize your learning experience based on your unique interests and requirements. Whether you’re exploring smart contract development, frontend integration, or learning about the core architecture, The Starknet Book is your trusted companion on the journey of deepening your understanding of Starknet. Chapter Description Chapter 1 Introduction to Starknet and Cairo An overview of the Starknet ecosystem and the Cairo programming language. Chapter 2 Smart Contract Development Learn how to develop smart contracts on the Starknet platform with this in-depth guide. Chapter 3 Frontend Integration Discover techniques for integrating Starknet with frontend applications seamlessly. chapter 4 Node Operation Practical insights into operating nodes on the Starknet network. Chapter 5 Security Analysis Comprehensive analysis of security considerations within the Starknet ecosystem. Chapter 6 Underlying Architecture and Cryptography Delve into the foundational architecture and cryptographic principles of Starknet.","title":"About the Starknet Book","component":"documentation","version":"","name":"starknet-book","url":"/documentation/tools/starknet-book/","titles":[{"text":"Table of Contents","hash":"table_of_contents","id":1}]},"33":{"id":33,"text":"A Starknet account contract must include the following two functions: __validate__ __execute__ These functions serve distinct purposes to ensure that only the account owner can initiate transactions and that fees can be charged for the resources they use. Starknet’s account type is inspired by Ethereum’s EIP-4337, where instead of an account being an EOA, it is now a smart contract account with arbitrary verification logic. Through the use of smart contracts, you are provided with complete flexibility within your account implementation. While not mandatory at the protocol level, a richer standard interface for accounts was developed by the community. This standard was developed by OpenZeppelin, in a close collaboration with wallet teams and other Core Starknet developers. You can see the traits as defined in Starknet Improvement Proposal #6 (SNIP-6). In Starknet, similar to Ethereum, every contract has a nonce, which is sequential. When a transaction is sent from an account, the transaction’s nonce must match the account’s nonce. The account’s nonce is incremented after the transaction is executed, whether or not the transaction is reverted. In Starknet, only the nonce of account contracts, that is, those adhering to the above structure, can be non-zero. In contrast, in Ethereum, regular smart contracts, known as Contract Accounts, as opposed to Externally Owned Accounts can increment their nonce by deploying smart contracts, that is, executing the CREATE and CREATE2 opcodes. For more information on accounts in Ethereum, see Ethereum Accounts in the Ethereum documentation. A nonce serves two important roles: It guarantees transaction hash uniqueness, which is important for a good user experience. It provides replay protection to the account. Because the signature refers to a particular nonce, a malicious party cannot replay the transaction. While Starknet currently determines the sequential nonce structure at the protocol level, in the future, Starknet will consider a more flexible design, extending account abstraction to nonce management, also referred to as nonce abstraction.","title":"Starknet account interface","component":"documentation","version":"","name":"approach","url":"/documentation/architecture_and_concepts/Accounts/approach/","titles":[{"text":"Replay protection","hash":"replay_protection","id":1}]},"34":{"id":34,"text":"You can deploy a new account in the following ways: Send a DEPLOY_ACCOUNT transaction. This method does not require a preexisting account. Using the Universal Deployer Contract (UDC). This method requires an existing account to send the INVOKE transaction. Upon receiving one of these transactions, the sequencer performs the following steps: Runs the respective validation function in the contract, as follows: When deploying with the DEPLOY_ACCOUNT transaction type, the sequencer executes the __validate_deploy__ function in the deployed contract. When deploying using the UDC, the sequencer executes the __validate__ function in the contract of the sender’s address. Executes the constructor with the given arguments. Charges fees from the new account address. If you use a DEPLOY_ACCOUNT transaction, the fees are paid from the address of the deployed account. If you use the UDC, which requires an INVOKE transaction, the fees are paid from the sender’s account. For information on the differences between V1 and V3 INVOKE transactions, see INVOKE transaction in Transaction types. Sets the account’s nonce as follows: 1, when deployed with a DEPLOY_ACCOUNT transaction 0, when deployed with the UDC Starkli simplifies account creation, whether you create an account as a Starknet wallet account, or using the UDC. To create and deploy a new account, use Starkli’s starkli account command. For more information on creating a new account as a Starknet wallet account with a DEPLOY_ACCOUNT transaction, or by using the UDC with an INVOKE transaction , see Accounts in the Starkli Book. The constructor of the DEPLOY_ACCOUNT transaction has the following limitations: Restricted access to sequencer_address in the get_execution_info syscall. The syscall returns zero values for sequencer_address Restricted access to the following syscalls: get_block_hash for Cairo contracts get_sequencer_address for Cairo 0 contracts Accounts in the Starkli Book Universal Deployer Contract (UDC) Transaction types","title":"Deploying a new account","component":"documentation","version":"","name":"deploying_new_accounts","url":"/documentation/architecture_and_concepts/Accounts/deploying_new_accounts/","titles":[{"text":"Deploying a new account with Starkli","hash":"deploying_a_new_account_with_starkli","id":1},{"text":"DEPLOY_ACCOUNT constructor restrictions","hash":"DEPLOY_ACCOUNT_restrictions","id":2},{"text":"Additional resources","hash":"additional_resources","id":3}]},"35":{"id":35,"text":"An account represents a user onchain, and enables that user to interact with the blockchain. Through an account, you can send transactions and interact with other contracts. In order for you to own an onchain asset, such as an ERC-20 token or an NFT, that asset must be associated with your account address. Within Ethereum individual user accounts are known as Externally Owned Accounts (EOAs). EOAs differ from smart contracts in that EOAs are not controlled by code, but rather by a pair of private and public keys. The account’s address is derived from those keys and only by possessing the private key can you initiate transactions from an account. While Ethereum contracts are passive, that is, they can only change if they were called inside a transaction, EOAs can initiate transactions. While simple, because the signature scheme is fixed, EOAs have some drawbacks, including the following: Control over the private key gives complete control over the account, so you must keep your seed phrase secure yet accessible. Limited flexibility surrounding wallet functionality EIP-4337 is a design proposal for Ethereum that outlines account abstraction, whereby all accounts are managed via a dedicated smart contract on the Ethereum network, as a way to increase flexibility and usability. You can add custom logic on top of the basic EOA functionality, thereby bringing account abstraction into Ethereum. Account abstraction enables more flexible account management. Rather than the protocol determining an account’s behavior, an account contract, which is a smart contract with programmable logic, defines a user’s account. Using account abstraction you can now program how your account functions. For example, you can: Determine what it means for a signature to be valid, or what contracts your account is allowed to interact with. This is known as signature abstraction. Pay transaction fees in different tokens. This is known as fee abstraction. Design your own replay protection mechanism and allow sending multiple uncoupled transactions in parallel. In Ethereum, you cannot send two transactions in parallel, you must wait for confirmation of the first before sending the second. Otherwise, the second transaction can be rejected due to an invalid nonce. With account abstraction, a sequential nonce is not required. This is known as nonce abstraction. Today, Starknet offers signature abstraction. In the future, we will enrich the current account abstraction design. For example, see the paymaster proposal for fee abstraction in the Starknet Community Forum. Two examples of how you might program an account to function using account abstraction are: Social recovery A process where if you lose your wallet, you are able to retrieve it via a selected social network, vastly improving the typical experience of wallet recovery. Operating your account via facial recognition With signature abstraction, you can use your phone’s native hardware to sign transactions, making it practically impossible to take control of another user’s account, even if your phone is stolen.","title":"What is an account?","component":"documentation","version":"","name":"introduction","url":"/documentation/architecture_and_concepts/Accounts/introduction/","titles":[{"text":"Ethereum account structure","hash":"ethereum_account_structure","id":1},{"text":"What is Account Abstraction?","hash":"account_abstraction","id":2},{"text":"Examples of customizing account functionality","hash":"examples","id":3}]},"36":{"id":36,"text":"The key stages of transaction lifetime are: The sequencer selects a transaction from the mempool and calls the __validate__ function. If the transaction is valid, the sequencer calls the __execute__ function. If __execute__ runs successfully, the sequencer includes the transaction in the block, charges the fee, and proceeds to work on the next transaction. After completing the block, the sequencer sends the block to the prover. The sequencer receives fees in ETH in return for including transactions in a block. For more details on how the transaction fee is computed, see Gas and transaction fees.","title":"Simplified transaction flow","component":"documentation","version":"","name":"simplified_transaction_flow","url":"/documentation/architecture_and_concepts/Accounts/simplified_transaction_flow/","titles":[{"text":"The payment mechanism","hash":"a_payment_mechanism","id":1}]},"37":{"id":37,"text":"The Universal Deployer Contract (UDC) is a singleton smart contract that wraps the deploy syscall to expose it to any contract that doesn’t implement it, such as account contracts. You can think of it as a standardized generic factory for Starknet contracts. And since Starknet has no deployment transaction type, it offers a standardized way to deploy smart contracts by following the standard deployer interface and emitting a ContractDeployed event. For more information see the proposal for the standard deployer interface. For details on the motivation and the decision making process, see the Universal Deployer Contract proposal. The UDC address is 0x041a78e741e5af2fec34b695679bc6891742439f7afb8484ecd7766661ad02bf in Mainnet, Goerli testnet, Sepolia testnet, and starknet-devnet. This address might change in the future when it is migrated to a modern version of Cairo. trait IUniversalDeployer { fn deployContract( class_hash: ClassHash, salt: felt252, unique: bool, calldata: Span ) -> ContractAddress; } Procedure Declare the contract with a DECLARE transaction, or ensure that the contract has been declared. For more information, see the DECLARE transaction. Call the deployContract function in the UDC. Example implementation in Cairo: #[starknet::interface] trait IUniversalDeployer { fn deployContract( ref self: TContractState, class_hash: ClassHash, salt: felt252, unique: bool, calldata: Span ) -> ContractAddress; } const UDC_ADDRESS: felt252 = 0x041a78e741e5af2fec34b695679bc6891742439f7afb8484ecd7766661ad02bf; fn deploy() -> ContractAddress { let dispatcher = IUniversalDeployerDispatcher { contract_address: UDC_ADDRESS.try_into().unwrap() }; // deployment parameters let class_hash = class_hash_const::(); let salt = 1234567879; let unique = false; let mut calldata = array![]; // the UDC returns the deployed contract address dispatcher.deployContract(class_hash, salt, unique, calldata.span()) } The Universal Deployer Contract offers two types of addresses to deploy: origin-dependent and origin-independent. As the names suggest, the origin-dependent type includes the deployer’s address in the address calculation, whereas, the origin-independent type does not. The unique boolean parameter ultimately determines the type of deployment. When deploying a contract that uses get_caller_address in the constructor calldata, remember that the UDC, not the account, deploys that contract. Therefore, querying get_caller_address in a contract’s constructor returns the UDC’s address, not the account’s address. By making deployments dependent upon the origin address, users can reserve a whole address space to prevent someone else from taking ownership of the address. Only the owner of the origin address can deploy to those addresses. Achieving this type of deployment necessitates that the origin sets unique to true in the deployContract call. Under the hood, the function call leverages the origin’s address and creates a hashchain by hashing the origin’s address with the given salt. To deploy a unique contract address pass: let deployed_addr = udc.deployContract(class_hash, salt, true, calldata.span()); Origin-independent contract deployments create contract addresses independent of the deployer and the UDC instance. Instead, only the class hash, salt, and constructor arguments determine the address. This type of deployment enables redeployments of accounts and known systems across multiple networks. To deploy a reproducible deployment, set unique to false. let deployed_addr = udc.deployContract(class_hash, salt, false, calldata.span()); The UDC has already been deployed on most networks and development environments. The standard requires the UDC to be deployed passing deploy_from_zero=true and salt=0 as arguments to the deploy syscall. This results in a deterministic and predictable address across all instances of Starknet, facilitating SDK integration and reproducibility of deployments. Deploy a contract through the Universal Deployer Contract. fn deployContract( classHash: ClassHash, salt: felt252, unique: bool, calldata: Span ) -> ContractAddress Emitted when deployer deploys a contract through the Universal Deployer Contract. #[derive(Drop, starknet::Event)] struct ContractDeployed { address: ContractAddress, deployer: ContractAddress, unique: bool, classHash: ClassHash, calldata: Span, salt: felt252, }","title":"Universal Deployer Contract (UDC)","component":"documentation","version":"","name":"universal-deployer","url":"/documentation/architecture_and_concepts/Accounts/universal-deployer/","titles":[{"text":"UDC address","hash":"udc_address","id":1},{"text":"Interface","hash":"interface","id":2},{"text":"Deploying a contract with the UDC","hash":"deploying_a_contract_with_the_udc","id":3},{"text":"Deployment types","hash":"deployment_types","id":4},{"text":"Origin-dependent","hash":"origin_dependent","id":5},{"text":"Origin-independent","hash":"origin_independent","id":6},{"text":"Deploying the UDC","hash":"deploying_the_udc","id":7},{"text":"API specification","hash":"api_specification","id":8},{"text":"deployContract method","hash":"deploycontract_method","id":9},{"text":"ContractDeployed event","hash":"contractdeployed_event","id":10}]},"38":{"id":38,"text":"As previously stated, Starknet’s account structure is not completely arbitrary, but must include the following two functions, which account transactions call: __validate__ __execute__ Separating the __validate__ and __execute__ functions guarantees payment to sequencers for work completed and protects them from Denial of Service (DoS) attacks. The __validate__ function ensures that any transaction submitted was indeed initiated by the account owner and therefore will not take up unjustified resources during the execution process. Without this mechanism, a forged transaction can result in the sequencer stealing the user’s funds. In short, __validate__ ensures that the sequencer may only include transactions that were approved by the account owner. The arbitrary logic allowed in the __validate__ function gives the account’s designer the ability to determine what it means for a transaction to be valid. This gives rise to the usage of different signature schemes and other exotic accounts. When the __validate__ function fails, no fee will be taken from the account in question. There are some limitations set on the __validate__ function. The purpose of these limitations is twofold: We want to avoid the sequencer having to do a lot of work only to discover that the validation failed and the sequencer is then not eligible to charge a fee (if this was possible, the sequencer would be completely exposed to DOS attacks). Validation, while now abstract and in control of the account owner rather than the protocol, should still be a simple operation. This is why a maximum steps limitation on the __validate__ function is currently in place on the Starknet network. For more information, see Current limits. Even if the validation is simple, we could still face the following attack: An attacker fills the mempool with transactions that are valid at time T. A sequencer may start executing them, thinking that at the time he will produce his block, they will still be valid. However, shortly after, at time T', the attacker sends one transaction that somehow invalidates all the previous ones and makes sure it’s included before the sequencer gets to publish his block (the attacker may do this by offering higher fees for this one transaction). As a concrete example, think of many __validate__ functions checking that the value of a storage slot is 1 and the attacker’s transaction later sets it to 0. To handle this issue, we add some further limitations. Currently, Starknet enforces that __validate__ does not call external contracts. The property that we achieve with the above restrictions is that a single storage update may only invalidate transactions from a single account (this is the best we can do, an account can always invalidate its own past transactions by changing its keys). Thus, the price (in fees) required to invalidate transactions in the mempool is linear in the number of unique accounts that we want to invalidate. The purpose of the __execute__ function is to abstract away the remaining actions performed by a transaction. In Ethereum, a transaction is necessarily a call to a specific function in a smart contract. With the __execute__ abstraction, the account designer controls the flow of the transaction. For example, multicalls can be natively supported in your account, saving the need to send multiple transactions (in practice, this is even harder to manage without multicalls due to nonces). A transaction is considered reverted when the __execute__ function failed. A reverted transaction is included in a block and the sequencer is eligible to charge a fee for the work done up to the point of failure, similar to Ethereum.","title":"Validate and execute","component":"documentation","version":"","name":"validate_and_execute","url":"/documentation/architecture_and_concepts/Accounts/validate_and_execute/","titles":[{"text":"The validate function","hash":"the_validate_function","id":1},{"text":"Invalid transactions","hash":"invalid_transactions","id":2},{"text":"Validate limitations","hash":"validate_limitations","id":3},{"text":"The execute function","hash":"the_execute_function","id":4},{"text":"Reverted transactions","hash":"reverted_transactions","id":5}]},"39":{"id":39,"text":"All hashes outputs are eventually mapped to elements in \\(\\mathbb{F}_P\\), where \\(P=2^{251}+17\\cdot 2^{192}+1\\). There are three hash functions used throughout Starknet’s specifications: \\(sn\\_keccak: \\{0,1\\}^* \\rightarrow \\mathbb{F}_P\\) \\(pedersen: \\mathbb{F}_P^2\\rightarrow\\mathbb{F}_P\\) \\(poseidon: \\mathbb{F}_P^*\\rightarrow \\mathbb{F}_P\\) Starknet Keccak, usually denoted by \\(sn\\_keccak\\), is defined as the first 250 bits of the Keccak256 hash. For Starknet Keccak, Keccak256 is augmented in order to fit into a field element. Pedersen hash makes use of the following STARK friendly elliptic curve over \\(\\mathbb{F}_P\\): \\[y^2=x^3+\\alpha x +\\beta\\] where \\(\\alpha=1\\) \\(\\beta = 3141592653589793238462643383279502884197169399375105820974944592307816406665\\) Given an input \\((a,b)\\in\\mathbb{F}_P^2\\), we begin by breaking it into \\(a_{low}, a_{high}, b_{low}, b_{high}\\), where the low part consists of the low 248 bits of the element and the high part consists of the high 4 bits of the element. Our Pedersen hash is then defined by: \\[h(a,b) = \\left[shift\\_point + a_{low} \\cdot P_0 + a_{high} \\cdot P1 + b_{low} \\cdot P2 + b_{high} \\cdot P3\\right]_x\\] where the values of the constants \\(shift\\_point, P_0, P_1, P_2, P_3\\) can be found in fast_pedersen_hash.py, and \\([P]_x\\) denotes the \\(x\\) coordinate of the point \\(P\\). For more information, see STARK curve. Poseidon is a family of hash functions designed to be very efficient as algebraic circuits. As such, they can be very useful in ZK-proving systems such as STARKs. Poseidon is a sponge construction based on the Hades permutation. Starknet’s version of Poseidon is based on a three-element state permutation. A Poseidon hash of up to 2 elements is defined as follows. \\[poseidon_1(x) := \\left[\\text{hades_permutation}(x,0,1)\\right]_0\\] \\[poseidon_2(x,y) := \\left[\\text{hades_permutation}(x,y,2)\\right]_0\\] Where \\([\\cdot]_j\\) denotes taking the j’th coordinate of a tuple Additional resources Poseidon hash with an arbitrary number of inputs Parameters for defining the Poseidon permutation used in Starknet Reference implementation in C and assembly of the above by CryptoExperts Let \\(h\\) denote the pedersen hash function, then given an array \\(a_1,...,a_n\\) of \\(n\\) field elements we define \\(h(a_1,...,a_n)\\) to be: \\[h(...h(h(0, a_1),a_2),...,a_n),n)\\] Let \\(\\text{hades}:\\mathbb{F}_P^3\\rightarrow\\mathbb{F}_P^3\\) denote the Hades permutation, with Starknet’s parameters, then given an array \\(a_1,...,a_n\\) of \\(n\\) field elements we define \\(poseidon(a_1,...,a_n)\\) to be the first coordinate of \\(H(a_1,...,a_n;0,0,0)\\), where: \\[H(a_1,...,a_n;s_1,s_2,s_3)=\\begin{cases} H\\big(a_3,...,a_n;\\text{hades}(s_1+a_1, s_2+a_2, s_3)\\big), & \\text{if } n\\ge 2 \\\\ \\text{hades}(s_1+a_1,s_2+1,s_3), & \\text{if } n=1 \\\\ \\text{hades}(s_1+1,s_2,s_3), & \\text{if } n=0 \\\\ \\end{cases}\\] For an implementation of the above in Python, see poseidon_hash.py, and for an equivalent Cairo implementation, see poseidon.cairo in the cairo-lang GitHub repository.","title":"Hash functions","component":"documentation","version":"","name":"hash-functions","url":"/documentation/architecture_and_concepts/Cryptography/hash-functions/","titles":[{"text":"Domain and range","hash":"domain_and_range","id":1},{"text":"Starknet Keccak","hash":"starknet_keccak","id":2},{"text":"Pedersen hash","hash":"pedersen_hash","id":3},{"text":"Definition","hash":"definition","id":4},{"text":"Poseidon hash","hash":"poseidon_hash","id":5},{"text":"Array hashing","hash":"array_hashing","id":6},{"text":"Pedersen","hash":"pedersen_array_hash","id":7},{"text":"Poseidon","hash":"poseidon_array_hash","id":8}]},"40":{"id":40,"text":"The STARK field is the finite field \\(\\mathbb{F}_P\\), where \\(P\\) is a prime number, calculated as follows: \\[P = 2^{251} + 17*2^{192} + 1\\] The Cairo VM uses the STARK field, referred to as a field element, or felt. The felt252 type in Cairo refers to elements of this field.","title":"The STARK field","component":"documentation","version":"","name":"p-value","url":"/documentation/architecture_and_concepts/Cryptography/p-value/","titles":[]},"41":{"id":41,"text":"The STARK curve is an elliptic curve defined as follows: \\[y^2 \\equiv x^3 + \\alpha \\cdot x + \\beta \\pmod{p}\\] where: \\[\\begin{align*} \\alpha &= 1 \\\\ \\beta &= 3141592653589793238462643383279502884197169399375105820974944592307816406665 \\\\ p &= 3618502788666131213697322783095070105623107215331596699973092056135872020481\\\\ &= 2^{251} + 17 \\cdot 2^{192} + 1 \\end{align*}\\] The Generator point used in the ECDSA scheme is: \\[\\begin{split}G = (874739451078007766457464989774322083649278607533249481151382481072868806602, \\\\ 152666792071518830868575557812948353041420400780739481342941381225525861407)\\end{split}\\] The STARK curve is commonly used in smart contracts but not distinguished by the Starknet protocol.","title":"The STARK curve","component":"documentation","version":"","name":"stark-curve","url":"/documentation/architecture_and_concepts/Cryptography/stark-curve/","titles":[]},"42":{"id":42,"text":"This section describes fees that are paid on L2 starting in Starknet 0.13.0. For information about messaging fees that are paid on L1, see L1 → L2 message fees. From Starknet v0.13.1 onwards, we distinguish between blocks whose state diffs are sent to L1 as calldata, and blocks whose state diffs are sent to L1 as blobs (the l1_da_mode property in Starknet block headers determines this). The cost of computation remains the same on both options, but the cost related to data availability differs. This section shows the formula for determining a transaction’s fee. The following sections describe how this formula was derived. The following formula describes the overall fee, \\(F\\), for a transaction: \\[\\begin{align} F = \\; & \\text{gas_price}\\cdot\\Bigg(\\max_k v_k w_k + \\\\ & \\quad + \\; \\text{message_calldata_cost}\\cdot 3t + (\\text{message_calldata_cost} + \\text{l1_log_data_cost})\\cdot \\sum\\limits_{i=1}^t q_i \\; + \\\\ & \\quad + \\; \\left(\\text{l1_storage_write_cost}+\\text{log_message_to_l1_cost}\\right)\\cdot t + \\; \\\\ & \\quad + \\; \\text{l2_payload_costs}\\Bigg) + \\\\ & \\text{data_gas_price}\\cdot\\text{felt_size_in_bytes}\\cdot\\bigg(2(n-1)+2(m-1) + \\ell +2D \\bigg) \\end{align}\\] where: \\(v\\) is a vector that represents resource usage, where each of its entries, \\(v_k\\), corresponds to different resource types: Cairo steps and number of applications of each builtin. For more information see Calculation of computation costs. \\(w\\) is the CairoResourceFeeWeights vector. \\(n\\) is the number of unique contracts updated, which also includes changes to classes of existing contracts and contract deployments, even if the storage of the newly deployed contract is untouched. In other words, \\(n\\ge\\ell\\). Notice that \\(n\\ge 1\\) always holds, because the fee token contract is always updated, which does not incur any fee. \\(m\\) is the number of values updated, not counting multiple updates for the same key. Notice that \\(m\\ge 1\\) always holds, because the sequencer’s balance is always updated, which does not incur any fee. \\(t\\) is the number of L2→L1 messages sent, where the corresponding payload sizes are denoted by \\(q_1,...,q_t\\). \\(\\ell\\) is the number of contracts whose class was changed, which happens on contract deployment and when applying the replace_class syscall. \\(D\\) is 1 if the transaction is of type DECLARE and 0 otherwise. Declare transactions need to post on L1 the new class hash and compiled class hash which are added to the state. L2→L1 messages related constants (for more details, see Onchain data: L2→L1 messages): \\(\\text{message_calldata_cost}\\) is 1124 gas per 32-byte word. \\(\\text{l1_log_data_cost}\\) is 256 gas. \\(\\text{l1_storage_write_cost}\\) is the cost of writing to a new storage slot on Ethereum, which is 20,000 gas. \\(\\text{log_message_to_l1_cost}\\) is 1637 gas. \\(\\text{l2_payload_costs}\\) is the gas cost of data sent over L2. This includes calldata, code, and event emission. For more details see L2 payloads: calldata, events, and code. \\(\\text{felt_size_in_bytes}\\) is 32, which is the number of bytes required to encode a single STARK field element. This section shows the formula for determining a transaction’s fee. The following sections describe how this formula was derived. The following formula describes the overall fee, \\(F\\), for a transaction: \\[\\begin{align} F = \\text{gas_price}\\cdot&\\Bigg(\\max_k v_k w_k + \\\\ & + \\; \\text{da_calldata_cost}\\left(2(n-1)+2(m-1) + \\ell + 2D + 3t + \\sum\\limits_{i=1}^t q_i\\right)\\\\ & - \\; \\text{contract_update_discount}\\cdot (n-1) - 240 \\\\ & + \\; \\text{message_calldata_cost}\\cdot 3t + (\\text{message_calldata_cost} + \\text{l1_log_data_cost})\\cdot\\sum\\limits_{i=1}^t q_i \\\\ & + \\; \\left(\\text{l1_storage_write_cost}+\\text{log_message_to_l1_cost}\\right)\\cdot t \\\\ & + \\; \\text{l2_payload_costs}\\Bigg) \\end{align}\\] where: The following constants are defined in the same manner as in the blob-based formula: \\(v, w, n, m, t, \\ell, D\\) \\(\\text{message_calldata_cost}, \\; \\text{l1_log_data_cost}, \\; \\text{log_message_to_l1_cost}, \\; \\text{l1_storage_write_cost}\\) \\(\\text{l2_payload_costs}\\) \\(\\text{da_calldata_cost}\\) is 551 gas per 32-byte word. This cost is derived as follows: 512 gas per 32-byte word for calldata. ~100 gas for onchain hashing that happens for every sent word. a 10% discount, because the sequencer does not incur additional costs for repeated updates to the same storage slot within a single block. \\(240\\) is the gas discount for updating the sender’s balance, for the derivation of this number see Onchain data: Storage updates. \\(\\text{contract_update_discount}\\) is 312 gas, for the derivation of this discount see Onchain data: Storage updates. The fee is charged atomically with the transaction execution on L2. The Starknet OS injects a transfer of the fee-related ERC-20, with an amount equal to the fee paid, the sender equal to the transaction submitter, and the sequencer as a receiver. With v3 transactions, users specify the max amount and max price for each resource. At the time of writing, the only available resource is L1 gas. In the future, we will introduce L2 gas which will be used to price L2 work (as opposed to only charging for the proof verification in L1 gas, which is what happens today). With older transaction versions, users specify the maximum fee that they are willing to pay for a transaction. The only limitation on the sequencer, which is enforced by the Starknet OS, is that the actual fee charged is bounded by max_fee. While not enforced in the proof, the Starknet sequencer usually charges less than max_fee, as it charges in accordance with the above fee formula. At the time of writing, the following components are contributing to the transaction fee: Computational complexity: The marginal cost of verifying the transaction on L1, measured in L1 gas. Onchain data: The cost of posting the state diffs induced by the transaction to L1 (for more details, see data availability). This is measured in L1 gas or L1 data gas, depending on whether or not the L2 block in which the transaction was included uses calldata or blobs. L2→L1 messages: Messages sent to L1 are eventually sent to the Starknet core contract as L1 calldata by the sequencer; therefore L2 transaction that send L2→L1 messages incur an additional L1 gas cost. L2 calldata, events and code: From Starknet 0.13.1 onwards, there is a per-byte (or per felt) price for L2 payloads. For more details, see L2 payloads: calldata, events, and code. Each transaction is associated with an estimate of the amount of gas used. Combining this estimate with the price of gas yields the estimated fee. For transactions prior to v3, the fee is denominated in WEI. For transactions v3 and later, the fee is denominated in STRK. Let’s analyze the correct metric for measuring transaction complexity. For simplicity, we will ignore Cairo’s builtins, and address them later. A Cairo program execution yields an execution trace. When proving a Starknet block, we aggregate all the transactions appearing in that block to the execution trace. Starknet’s prover generates proofs for execution traces, up to some maximal length \\(L\\), derived from the specs of the proving machine and the desired proof latency. Tracking the execution trace length associated with each transaction is simple. Each assertion over field elements, such as verifying addition/multiplication over the field, requires the same, constant number of trace cells, which is where our \"no-builtins\" assumption kicks in: Pedersen occupies more trace cells than addition. Therefore, in a world without builtins, the fee of the transaction \\(tx\\) is correlated with \\(\\text{TraceCells}[tx]/L\\). In the Cairo execution trace each builtin has its own slot, which is important to consider when determining the fee. For example, consider that the prover can process a trace with the following limits: up to 500,000,000 Cairo Steps up to 20,000,000 Pedersen hashes up to 4,000,000 signature verifications up to 10,000,000 range checks The proof is closed and sent to L1 when any of these slots is filled. Suppose that a transaction uses 10,000 Cairo steps and 500 Pedersen hashes. At most 40,000 such transactions can fit into the hypothetical trace (20,000,000/500). Therefore, its gas price correlates with 1/40,000 of the cost of submitting proof. Notice that this estimate ignores the number of Cairo steps, as it is not the limiting factor, since 500,000,000/10,000 > 20,000,000/500. With this example in mind, it is possible to formulate the exact fee associated with L2 computation. The allocation of resources among builtin operations must be predetermined; it is not possible to decide, post-execution, to include only 20,000,001 Pedersen hashes without additional components. This safeguards fairness and prevents manipulation, ensuring integrity in proof generation and fee determination. For each transaction, the sequencer calculates a vector, CairoResourceUsage, that contains the following: The number of Cairo steps. The number of applications of each Cairo builtin. For example, five range checks and two Pedersen hashes. The sequencer crosses this information with the CairoResourceFeeWeights vector. For each resource type, either a Cairo step or a specific builtin application, CairoResourceFeeWeights has an entry that specifies the relative gas cost of that component in the proof. Going back to the above example, if the cost of submitting a proof with 20,000,000 Pedersen hashes is roughly 5m gas, then the weight of the Pedersen builtin is 0.25 gas per application (5,000,000/20,000,000). The sequencer has a predefined weights vector, in accordance with the proof parameters. The sequencer charges only according to the limiting factor. Therefore the fee is correlated with: \\[\\max_k[\\text{CairoResourceUsage}_k \\cdot \\text{CairoResourceFeeWeights}_k]\\] where \\(k\\) enumerates the Cairo resource components, that is the number of Cairo steps and builtins used. The weights are listed in the table Amount of gas used per Cairo step or per each time a Cairo builtin is applied. Table 1. Amount of gas used per Cairo step or per each time a Cairo builtin is applied Step or builtin Gas cost Cairo step 0.0025 gas/step Pedersen 0.08 gas/application Poseidon 0.08 gas/application Range check 0.04 gas/application ECDSA 5.12 gas/application Keccak 5.12 gas/application Bitwise 0.16 gas/application EC_OP 2.56 gas/application The onchain data associated with a transaction is composed of three parts Storage updates L2→L1 messages Deployed contracts Declared classes (only relevant for DECLARE transactions, and adds two additional words) Whenever a transaction updates some value in the storage of some contract, the following data is sent to L1: two 32-byte words per contract two 32-byte words for every updated storage value For information on the exact data and its construction, see Data availability. Only the most recent value reaches L1. So the transaction’s fee only depends on the number of unique storage updates. If the same storage cell is updated multiple times within the transaction, the fee remains that of a single update. The following formula describes the storage update fee for a transaction: \\[\\underbrace{\\textit{gas_price}\\left(\\text{da_calldata_cost} \\cdot 2(n-1) - \\text{contract_update_discount}\\cdot (n-1)\\right)}_{\\text{contract addresses + new nonce and number of storage updates }} \\\\ + \\\\ \\underbrace{\\textit{gas_price} \\cdot \\left(\\text{da_calldata_cost}(2(m-1))-240\\right)}_{\\text{storage updates}}\\] where: \\(n\\) is the number of unique contracts updated, which also includes changes to classes of existing contracts and contract deployments, even if the storage of the newly deployed contract is untouched. In other words, \\(n\\ge\\ell\\). Notice that \\(n\\ge 1\\) always holds, because the fee token contract is always updated at the end of each transaction, in order to update the sequencer’s and the sender’s balances. The fee token contract update is not taken into account when computing the fee. \\(m\\) is the number of values updated, not counting multiple updates for the same key. Notice that \\(m\\ge 1\\) always holds, because the sequencer’s balance is updated at the end of each transaction. The sequencer’s balance update is not taken into account when computing the fee. \\(\\text{contract_update_discount}\\) is 312 gas, which is discounted for every updated contract. This discount is a result of the fact that out of the \\(2n\\) words caused by updating contracts, \\(n\\) words are short, including at most 6 non-zero bytes: three bytes for the nonce two bytes for the number of storage updates one byte for the class information flag Taking into account that zero bytes only cost 4 gas, the cost difference between a full 32-byte word, which does not contain zeros, and a word with only six non-zero bytes is \\(32\\cdot16-(6\\cdot16+26\\cdot4)=312\\). \\(240\\) is the gas discount for updating the sender’s balance, and is derived by assuming the balance requires at most 12 non-zero bytes, which is enough for 1.2B ETH or STRK, resulting in the following discount: \\(512-(20\\cdot4+12\\cdot16)=240\\). Improvements to the above pessimistic estimation might be gradually implemented in future versions of Starknet. For example, if different transactions within the same block update the same storage cell, there is no need to charge for both transactions, because only the last value reaches L1. In the future, Starknet might include a refund mechanism for such cases. When a transaction that raises the send_message_to_l1 syscall is included in a state update, the following data reaches L1: L2 sender address L1 destination address Payload size Payload (list of field elements) Consequently, the gas cost associated with a single L2→L1 message is: \\[\\begin{align} \\text{MESSAGE_COST} = & \\; \\text{message_calldata_cost}\\cdot\\left(3+\\text{payload_size}\\right) \\; + \\\\ & + \\text{l1_log_data_cost}\\cdot\\text{payload_size} \\; + \\\\ & + \\text{log_message_to_l1_cost} \\; + \\\\ & + \\text{l1_storage_write_cost} \\end{align}\\] Where: \\(\\text{message_calldata_cost}\\) is 1124 gas. This is the sum of the 512 gas paid to the core contract on submitting the state update, and 612 gas paid for the submitting of the same word to the verifier contract (which incurs ~100 additional gas for hashing). That is, messages are sent to Ethereum twice. \\(\\text{log_message_to_l1_cost}\\) is 1637 gas. This is the fixed cost involved in emitting a LogMessageToL1 event. This event has two topics and a data array, which adds two data words to the event, resulting in a total of \\(375+2\\cdot 375+2\\cdot 256\\) gas (log opcode cost, topic cost, and two data words cost). \\(\\text{l1_log_data_cost}\\) is 256 gas, which is paid for every payload element during the emission of the LogMessageToL1 event. \\(\\text{l1_storage_write_cost}\\) is 20,000 gas per message which is paid in order to store the message hash on the Starknet core contract. This recording of the message is what later enables the intended L1 contract to consume the message. When a transaction that raises the deploy syscall is included in a state update, the following data reaches L1: contract address number of storage updates and the new nonce class hash The first two elements are counted in the number of unique modified contracts, denoted by \\(n\\) throughout this page. So the only additional word comes from publishing the class hash, which adds 551 gas. For more information, see \\(\\text{da_calldata_cost}\\) in the final formula. As of Starknet v0.13.1 onwards, L2 data is taken into account during pricing. This includes: calldata: this includes transaction calldata (in the case of INVOKE transactions or L1_HANDLER), constructor calldata (in the case of DEPLOY_ACCOUNT transactions), and signatures events: data and keys of emitted events ABI: classes abi in DECLARE transactions (relevant only for DECLARE transactions of version ≥ 2) CASM bytecode (for all available DECLARE transactions, where in version ≥ 2 this refers to the compiled class) Sierra bytecode (relevant only for DECLARE transactions of version ≥ 2) The pricing of the above components in terms of L1 gas is given by the following table: Resource Gas cost Event key 0.256 gas/felt Event data 0.12 gas/felt Calldata 0.128 gas/felt CASM bytecode 28 gas/felt Sierra bytecode 28 gas/felt ABI 0.875 gas/character","title":"Gas and transaction fees","component":"documentation","version":"","name":"fee-mechanism","url":"/documentation/architecture_and_concepts/Network_Architecture/fee-mechanism/","titles":[{"text":"Overall transaction fee","hash":"overall_fee","id":1},{"text":"Overall transaction fee with blobs","hash":"overall_fee_blob","id":2},{"text":"Overall transaction fee with calldata","hash":"overall_fee_calldata","id":3},{"text":"When is the fee charged?","hash":"when_is_the_fee_charged","id":4},{"text":"Transaction Fee limits","hash":"fee_limitations","id":5},{"text":"v3 transactions","hash":"v3_fee_limitations","id":6},{"text":"Deprecated transactions (version < 3)","hash":"deprecated_fee_limitations","id":7},{"text":"What do we price","hash":"what_do_we_pay_for","id":8},{"text":"Fee units","hash":"fee_units","id":9},{"text":"Fee calculation","hash":"fee_calculation","id":10},{"text":"Computation without builtins","hash":"computation_without_builtins","id":11},{"text":"Computation with builtins","hash":"computation_with_builtins","id":12},{"text":"Calculation of computation costs","hash":"calculation_of_computation_costs","id":13},{"text":"Onchain data components","hash":"onchain_data_components","id":14},{"text":"Onchain data: Storage updates","hash":"storage_updates","id":15},{"text":"Onchain data: L2→L1 messages","hash":"l_2-l_1_messages","id":16},{"text":"Onchain data: Deployed contracts","hash":"deployed_contracts","id":17},{"text":"L2 payloads: calldata, events, and code","hash":"l2_calldata","id":18}]},"43":{"id":43,"text":"In Starknet, a block is a list of transactions, and a block header that contains the following fields: Name Type Description Implemented parent_block_hash FieldElement The hash of this block’s parent ✓ block_number Integer The number (height) of this block ✓ global_state_root FieldElement The state commitment after this block ✓ sequencer_address FieldElement The Starknet address of the sequencer who created this block ✓ block_timestamp Timestamp The time the sequencer created this block before executing transactions ✓ transaction_count Integer The number of transactions in a block ✓ transaction_commitment FieldElement A commitment to the transactions included in the block ✓ event_count Integer The number of events ✓ event_commitment FieldElement A commitment to the events produced in this block ✓ protocol_version Integer The version of the Starknet protocol used when creating this block extra data FieldElement Extraneous data that might be useful for running transactions Where: event_commitment is the root of a 64-bit high binary Merkle Patricia tree. The leaf at index \\(i\\) corresponds to the hash of the \\(i'th\\) event. transaction_commitment is the root of a 64-bit high binary Merkle Patricia tree. The leaf at index \\(i\\) corresponds to \\({h(transaction \\space hash, signature)}\\) if the \\(i'th\\) transaction is an invoke transaction and \\(h(0,0)\\) otherwise. A block hash is defined as the Pedersen hash of the header’s fields, as follows: h(𝐵) = h( block_number, global_state_root, sequencer_address, block_timestamp, transaction_count, transaction_commitment, event_count, event_commitment, 0, 0, parent_block_hash ) Where h is the Pedersen hash. Zeros inside the hash computation of an object are used as placeholders, to be replaced in the future by meaningful fields.","title":"Block structure","component":"documentation","version":"","name":"header","url":"/documentation/architecture_and_concepts/Network_Architecture/header/","titles":[{"text":"Block hash","hash":"block_hash","id":1}]},"44":{"id":44,"text":"Contracts on L2 can interact asynchronously with contracts on L1 via the L2→L1 messaging protocol. During the execution of a Starknet transaction, a contract on Starknet sends an L2→L1 message by calling the send_message_to_L1 syscall. The message parameters (which contain the recipient contract on L1 and the relevant data) are then attached to the relevant state update that includes this syscall invocation. For example: let mut payload: Array = ArrayTrait::new(); let to_address: EthAddress = 1_felt252.try_into().unwrap(); payload.append(1); // potentially add more elements to payload (payload[1], payload[2], etc.) send_message_to_l1_syscall(to_address: to_address.into(), payload: payload.span()); After the state update that included this transaction is proved and the L1 state is updated, the message is stored on L1 in the Starknet Core Contract (and the relevant counter is increased), and the LogMessageToL1 event (which contains the message parameters) is emitted. Later, the recipient address on L1 can access and consume the message as part of an L1 transaction by re-supplying the message parameters. This is done by calling consumeMessageFromL2 in the Starknet Core Contract, who verifies that the hash corresponds to a stored message and that the caller is indeed the recipient on L1. In such a case, the reference count of the message hash in the Starknet Core Contract decreases by 1. The above flow is illustrated in the following diagram: As demonstrated above, the structure of an L2 → L1 message is given by: Table 1. L2 → L1 Message FromAddress ToAddress Payload FieldElement EthereumAddress Payload The hash of an L2 → L1 message is computed on L1 as follows: keccak256( abi.encodePacked( FromAddress, uint256(ToAddress), Payload.length, Payload ) ); As the hash of the message being sent needs to be written to L1 storage (in the Starknet Core Contract) there is always a fixed 20k gas cost associated with sending an L2 to L1 message. Contracts on L1 can interact asynchronously with contracts on L2 via the L1→L2 messaging protocol. The protocol consists of the following stages: An L1 contract initiates a message to an L2 contract on Starknet. It does so by calling the sendMessageToL2 function on the Starknet Core Contract with the message parameters. The Starknet Core Contract hashes the message parameters and updates the L1→L2 message mapping to indicate that a message with this hash was indeed sent. In fact, the L1 contract records the fee that the sender paid. For more information, see L1 → L2 message fees. The message is then decoded into a Starknet transaction that invokes a function annotated with the l1_handler decorator on the target contract. Transactions like this on L2 are called L1 handler functions. The Starknet sequencer, upon seeing enough L1 confirmations for the transaction that sent the message, initiates the corresponding L2 transaction. The L2 transaction invokes the relevant l1_handler. The L1 Handler transaction that was created in the previous step is added to a proof. The state update is received on the Core contract. the message is cleared from the Core contract’s storage. At this point, the message is handled. An L1→L2 message consists of: The L1 sender address The recipient contract address on Starknet Function selector Calldata array Message nonce Message nonce The message nonce is maintained on the Starknet Core Contract on L1, and is bumped whenever a message is sent to L2. It is used to avoid hash collisions between different L1 handler transactions that are induced by the same message being sent on L1 multiple times (see below). Imagine a scenario where a user transfers an asset from L1 to L2. The flow starts with the user sending the asset to a Starknet bridge and the corresponding L1→L2 message generation. Now, imagine that the L2 message consumption doesn’t function (this might happen due to a bug in the dApp’s Cairo contract). This could result in the user losing custody over their asset forever. To mitigate this risk, we allow the contract that initiated the L1→L2 message to cancel it after declaring the intent and waiting a suitable amount of time. The user starts by calling startL1ToL2MessageCancellation with the relevant message parameters in the Starknet Core Contract. Then, after a five days delay, the user can finalize the cancellation by calling cancelL1ToL2Message. The reason for the delay is to protect the sequencer from a DOS attack in the form of repeatedly sending and canceling a message before it is included in L1, rendering the L2 block which contains the activation of the corresponding L1 handler invalid. Note that this flow should only be used in edge cases such as bugs on the Layer 2 contract preventing message consumption. An L1 → L2 message induces a transaction on L2, which, unlike regular transactions, is not sent by an account. This calls for a different mechanism for paying the transaction’s fee, for otherwise the sequencer has no incentive of including L1 handler transactions inside a block. To avoid having to interact with both L1 and L2 when sending a message, L1 → L2 messages are payable on L1, by sending ETH with the call to the payable function sendMessageToL2 on the Starknet Core Contract. The sequencer takes this fee in exchange for handling the message. The sequencer charges the fee in full upon updating the L1 state with the consumption of this message. The fee itself is calculated in the same manner as \"regular\" L2 transactions. You can use the CLI to get an estimate of an L1 → L2 message fee. For completeness, we describe the precise structure of both the message as it appears on L1 and the induced transaction as it appears on L2. Table 2. L1 → L2 Message FromAddress ToAddress Selector Payload Nonce EthereumAddress FieldElement FieldElement List FieldElement The hash of the message is computed on L1 as follows: keccak256( abi.encodePacked( uint256(FromAddress), ToAddress, Nonce, Selector, Payload.length, Payload ) ); Table 3. L1 handler transaction Version ContractAddress Selector Calldata Nonce FieldElement FieldElement FieldElement List FieldElement The hash of the corresponding L1 handler transaction on L2 is computed as follows: l1_handler_tx_hash = ℎ( \"l1_handler\", version, contract_address, entry_point_selector, ℎ(calldata), chain_id, nonce ) Where: \\(\\text{l1_handler}\\) is a constant prefix, encoded in bytes (ASCII), with big-endian. \\(\\text{chain_id}\\) is a constant value that specifies the network to which this transaction is sent. \\(h\\) is the Pedersen hash In an l1_handler transaction, the first element of the calldata is always the Ethereum address of the sender.","title":"L1-L2 messaging","component":"documentation","version":"","name":"messaging-mechanism","url":"/documentation/architecture_and_concepts/Network_Architecture/messaging-mechanism/","titles":[{"text":"L2 → L1 messages","hash":"l2-l1_messages","id":1},{"text":"L2 → L1 structure and hashing","hash":"structure_and_hashing_l2-l1","id":2},{"text":"L1 → L2 messages","hash":"l1-l2-messages","id":3},{"text":"L1 → L2 message cancellation","hash":"l2-l1_message_cancellation","id":4},{"text":"L1 → L2 message fees","hash":"l1-l2-message-fees","id":5},{"text":"L1 → L2 structure and hashing","hash":"structure_and_hashing_l1-l2","id":6}]},"45":{"id":45,"text":"In the current stage of the Alpha, Starknet operates in Validity Rollup mode, also referred to as ZK-Rollup mode. So when the onchain state update is accepted, the state diff between the previous and new state is sent as calldata to Ethereum. This data allows anyone that observes Ethereum to reconstruct the current state of Starknet. To update the Starknet state on L1, it suffices to send a valid proof, without information on the transactions or particular changes that this update caused. Consequently, more information must be provided in order to allow other parties to locally track Starknet’s state. The state diffs contain information on every contract whose storage was updated and additional information on contract deployments. For each affected contract, the following information is sent as calldata on L1: The contract address A single 32-byte word that includes the nonce and the following meta information about the update: class information flag, whose value is one of the following: 0 Storage updates only. 1 The contract was deployed or replaced in this state update. When this flag is set to 1, the new class hash occupies an additional word before the storage updates section. number of storage updates The expected format of this 32-byte word is as follows: \\[\\underbrace{0\\cdots0}_{\\text{127 bits}}| \\underbrace{\\text{class information flag}}_{\\text{1 bit}}| \\underbrace{\\text{new nonce}}_{\\text{64 bits}}|{ \\underbrace{\\text{# of storage updates}}_{\\text{64 bits}}}_{\\text{LSB}}\\] Each storage update includes the following: key - the address inside the contract’s storage where the value is updated value - the new value Newly declared classes include the following: The number of Cairo classes that were declared in the block Each class includes the following: The class hash The compiled class hash Consider the following onchain data that was extracted from L1: [ 1, (1) 2019172390095051323869047481075102003731246132997057518965927979101413600827, (2) 18446744073709551617, (3) 100, (4) 200, (4) 1, (5) 1351148242645005540004162531550805076995747746087542030095186557536641755046, (6) 558404273560404778508455254030458021013656352466216690688595011803280448032 (7) ] 1 The number of contracts whose state was updated. 2 The address of the first, and only, contract whose state changed. 3 18446744073709551617, which is 264+1, encodes the following: The class information flag is 0, that is, the contract was not deployed or replaced just now, so you shouldn’t treat the next word as the class hash. The new nonce is 1. One storage cell was updated. 4 These two elements, 100 and 200, encode the storage update, where the value of key 100 is set to 200. 5 The new declare section: 1 includes a single declare v2 transaction in this state update. 6 Encoding of the class hash. 7 Encoding of the compiled class hash of the declared class. The state diffs contain information on every contract whose storage was updated and additional information on contract deployments. Those differences are sent as uint256[] array as part of the calldata, and are encoded as follows: Number of cells that encode contract deployments Each deployed contract has the following: contract_address - the address of the deployed contract. See also Data availability. contract_hash - the hash of the class Number of contracts whose storage is updated. Each such contract has the following: contract_address - the address of the contract num_of_storage_updates - number of storage updates nonce, num of storage updates - a uint256 value that encodes both the number of storage updates for that contract and the updated nonce: \\[\\underbrace{0\\cdots0}_{\\text{128 bits}} | \\underbrace{\\text{new nonce}}_{\\text{64 bits}} | {\\underbrace{\\text{# of storage updates}}_{\\text{64 bits}}}_{\\text{LSB}}\\] For each storage update: key - the address inside the contract’s storage where the value is updated value - the new value The example below shows onchain data that was extracted from L1. An explanation follows, according to the above format. [ 2, 2472939307328371039455977650994226407024607754063562993856224077254594995194, 1336043477925910602175429627555369551262229712266217887481529642650907574765, 5, 2019172390095051323869047481075102003731246132997057518965927979101413600827, 18446744073709551617, 5, 102, 2111158214429736260101797453815341265658516118421387314850625535905115418634, 2, 619473939880410191267127038055308002651079521370507951329266275707625062498, 1471584055184889701471507129567376607666785522455476394130774434754411633091, 619473939880410191267127038055308002651079521370507951329266275707625062499, 541081937647750334353499719661793404023294520617957763260656728924567461866, 2472939307328371039455977650994226407024607754063562993856224077254594995194, 1, 955723665991825982403667749532843665052270105995360175183368988948217233556, 2439272289032330041885427773916021390926903450917097317807468082958581062272, 3429319713503054399243751728532349500489096444181867640228809233993992987070, 1, 5, 1110, 3476138891838001128614704553731964710634238587541803499001822322602421164873, 6, 59664015286291125586727181187045849528930298741728639958614076589374875456, 600, 221246409693049874911156614478125967098431447433028390043893900771521609973, 400, 558404273560404778508455254030458021013656352466216690688595011803280448030, 100, 558404273560404778508455254030458021013656352466216690688595011803280448031, 200, 558404273560404778508455254030458021013656352466216690688595011803280448032, 300, 1351148242645005540004162531550805076995747746087542030095186557536641755046, 500 ] The first element, 2, is the number of cells that encode contracts deployment. The next two elements describe a single contract deployment with the following parameters: contract_address: 2472939307328371039455977650994226407024607754063562993856224077254594995194 contract_hash: 1336043477925910602175429627555369551262229712266217887481529642650907574765 The next element, 5 (index 3 in the array), is the number of contracts whose storage was updated. We will take only the first contract as an example. contract_address: 2019172390095051323869047481075102003731246132997057518965927979101413600827 Following the above contract address, we have 18446744073709551617 (index 8 in the array), which is \\(2^{64}+1\\), thus: The new contract nonce is 1 One storage key is updated The value at key 5 was changed to 102 The next 4 contract storage updates are interpreted in the same manner. The data described above is sent across several Ethereum transactions, each holding a part of this array as calldata. Each new Starknet block has its associated state diff transactions. You can find the code for extracting this data from Ethereum in Pathfinder’s repo. Pathfinder is the first Starknet full node implementation. You may also take a look at the Python script which extracts the same information.","title":"Data availability","component":"documentation","version":"","name":"on-chain-data","url":"/documentation/architecture_and_concepts/Network_Architecture/on-chain-data/","titles":[{"text":"Introduction","hash":"introduction","id":1},{"text":"Data availability: v0.11.0 and forward","hash":"data_availability_v0_11_0_and_forward","id":2},{"text":"v0.11.0 format","hash":"v0.11.0_format","id":3},{"text":"v0.11.0 example of onchain data","hash":"v0.11.0_example","id":4},{"text":"Data availability: pre v0.11.0","hash":"data_availability_pre_v0_11_0","id":5},{"text":"Pre v0.11.0 format","hash":"pre_v0.11.0_format","id":6},{"text":"Pre v0.11.0 example","hash":"pre_v0.11.0_example","id":7},{"text":"Extract from Ethereum","hash":"extract_from_ethereum","id":8}]},"46":{"id":46,"text":"Starknet’s state consists of: Contract classes a mapping between the class hash and the class definition Contract instances a mapping between addresses (251-bit field elements) and the contract’s state A contract instance’s state consists of: Class hash defines the functionality of the contract Contract storage a key-value mapping where the key/values are field elements Contract nonce the number of transactions sent from this contract A transaction \\(tx\\) transitions the system from state \\(S\\) to state \\(S'\\) if: \\(tx\\) is an Invoke transaction, and the storage of \\(S'\\) is the result of executing the target contract code with respect to the previous state \\(S\\). The arguments, contract instance’s address, and the specific function entry point are part of the transaction. \\(tx\\) is a Deploy account transaction, and \\(S'\\) contains the new contract instance’s state at the contract instance’s address. Additionally, the storage of \\(S\\) is updated according to the execution of the contract instance’s constructor. \\(tx\\) is a Declare transaction, and \\(S'\\) contains the class hash and definition in the contract class’s mapping The state commitment is a digest that represents the state. In Starknet, the state commitment combines the roots of two binary Merkle-Patricia tries of height 251 in the following manner: state_commitment = hPos( \"STARKNET_STATE_V0\", contract_trie_root, class_trie_root ) Where: hPos is the Poseidon hash function. STARKNET_STATE_V0 is a constant prefix string encoded in ASCII (and represented as a field element). contract_trie_root is the root of the contract trie, a Merkle-Patricia trie whose leaves are the contracts' states. class_trie_root is the root of the class trie, a Merkle-Patricia trie whose leaves are the compiled class hashes. As with Ethereum, this trie is a two-level structure, whose leaves correspond to distinct contracts. The address of each contract determines the path from the trie’s root to its corresponding leaf, whose content encodes the contract’s state. The information stored in the leaf is as follows: hPed( class_hash, storage_root, nonce, 0 ) Where: hPed is the Pedersen hash function. class_hash is the hash of the contract’s definition. storage_root is the root of another Merkle-Patricia trie of height 251 that is constructed from the contract’s storage. nonce is the current nonce of the contract. The class trie encodes the information about all existing classes in Starknet’s state. This trie maps class hashes to their compiled class hashes. The information stored in a leaf at a path corresponding to some class hash is as follows: hPos( CONTRACT_CLASS_LEAF_V0, compiled_class_hash ) Where: hPos is the Poseidon hash function CONTRACT_CLASS_LEAF_V0 is a constant prefix string encoded in ASCII (and represented as a field element). compiled_class_hash is the hash of the Cairo assembly resulting from compiling the given class via the Sierra-to-Casm compiler. Compiled class hash The compiled class hash identifies the output of a specific Casm compilation as unique. Cairo classes that are part of the state commitment are defined with Sierra, an intermediate representation between Cairo and Cairo assembly (Casm). However, the prover only works with Casm. So in order to prevent needing to compile from Sierra to Casm in every block in which the class is used, the state commitment must have some information about the corresponding Cairo assembly. The compiled class hash provides this information. For more information, see Cairo and Sierra. The party that declares the contract signs the compiled class hash, which they obtain using an SDK, as part of the DECLARE transaction. If the transaction is included in a block, then the compiled class hash becomes part of the state commitment. In the future, when Sierra-to-Casm compilation becomes part of the Starknet OS, this value might be updated via a proof of the Sierra-to-Casm compiler execution, showing that compiling the same class with a newer compiler version results in some new compiled class hash. The state commitment scheme uses a binary Merkle-Patricia trie with the Pedersen hash function. Each node in the trie is represented by a triplet \\((length, path, value)\\), where: \\(length\\) is the length of the path, measured in nodes. \\(path\\) is the path from the current node to its unique non-empty subtrie. \\(path\\) is an integer in the set \\(\\{0,\\ldots,2^{length}-1\\}\\), and the binary expansion of \\(path\\) indicates how to proceed along the trie, as follows: Expand \\(path\\) to its binary representation. Starting with the most significant bit, representing the root of the trie, traverse the tree node by node, where the bit values \\(0\\) and \\(1\\) indicate left and right, respectively. \\(value\\) is the value of the node, which can be either data, or the hash of two non-empty child nodes. An empty node is one whose triplet values are \\((0,0,0)\\). Leaf nodes and internal nodes can be empty. A subtrie rooted at a node \\((length, path, value)\\) has a single non-empty subtrie, rooted at the node obtained by following the path specified by \\(path\\). Length is specified, and cannot be deduced from \\(path\\), because the numbers in the triplet \\((length, path, value)\\) are field elements of fixed size, 251 bits each. For a node where \\(length>0\\), \\(path\\) leads to the highest node whose left and right children are not empty. The following rules specify how the trie is constructed from a given set of leaves: The hash of a node \\(N =(length, path, value)\\), denoted by \\(H(N)\\), is: \\[H(N)=\\begin{cases} value, & \\text{if } length = 0 \\\\ h_{Ped}(value, path) + length, & \\text{otherwise} \\end{cases}\\] All arithmetic operations in the above description of \\(H\\) are done in the STARK field, as described in The STARK field. The triplet representing the parent of the nodes \\(left=(\\ell_L, p_L, v_L)\\), \\(right=(\\ell_R, p_R, v_R)\\) is defined as follows: \\[parent= \\begin{cases} (0,0,0), & \\text{if } left=right=(0,0,0)\\\\ (\\ell_L + 1, p_L, v_L), & \\text{if } right=(0,0,0) \\text{ and } left \\neq (0,0,0)\\\\ (\\ell_R + 1, p_R + 2^{\\ell_R}, v_R), & \\text{if } right\\neq (0,0,0) \\text{ and } left = (0,0,0)\\\\ (0, 0, h_{Ped}(H(left), H(right))), & \\text{otherwise} \\end{cases}\\] The diagram A three-level Merkle-Patricia trie illustrates the construction of a three-level-high Merkle-Patricia trie from the leaves whose values are \\((0,0,1,0,0,1,0,0)\\): Figure 1. A three-level Merkle-Patricia trie Where \\(r=h_{Ped}(H(2,2,1),H((2,1,1))\\). Notice that the example does not skip from the root, whose length is zero, so the final state commitment to the trie is \\(H((0,0,r))=r\\). Suppose that you want to prove, with respect to the state commitment just computed, that the value of the leaf whose path is given by \\(101\\) is \\(1\\). In a standard Merkle trie, the proof would consist of data from three nodes, which are siblings along the path to the root. In a Merkle-Patricia trie, because the trie is sparse, you only need to send the two children of the root, which are \\((2,2,1)\\) and \\((2,1,1)\\). These two children are enough to reproduce the state commitment \\(r\\), and because you know that the height of the trie is three, and that it is fixed, you know that the path \\(01\\) of length \\(2\\) specified by the right-hand child, \\((2,1,1)\\), leads to the desired leaf. Starknet uses special contract addresses to provide distinct capabilities beyond regular contract deployment. Two such addresses are 0x0 and 0x1. These addresses are reserved for specific purposes and are characterized by their unique behavior in comparison to traditional contract addresses. Address 0x0 functions as the default caller_address for external calls, including interactions with the L1 handler or deprecated Deploy transactions. Unlike regular contracts, address 0x0 does not possess a storage structure and does not accommodate storage mapping. Address 0x1 is another special contract address within Starknet’s architecture. It functions as a storage space for mapping block numbers to their corresponding block hashes. The storage structure at this address is organized as follows: Keys Block numbers between \\(\\text{first_v0_12_0_block}\\) and \\(\\text{current_block - 10}\\). Values Corresponding block hashes for the specified blocks. Default Values For all other block numbers, the values are set to 0. The storage organization of address 0x1 supports the efficient retrieval of block hashes based on block numbers within a defined range and is also used by the get_block_hash system call.","title":"Starknet state","component":"documentation","version":"","name":"starknet-state","url":"/documentation/architecture_and_concepts/Network_Architecture/starknet-state/","titles":[{"text":"Transitioning to a new state","hash":"transitioning_to_a_new_state","id":1},{"text":"State commitment","hash":"state_commitment","id":2},{"text":"The contract trie","hash":"contracts_trie","id":3},{"text":"The class trie","hash":"classes_trie","id":4},{"text":"Merkle-Patricia trie","hash":"merkle_patricia_trie","id":5},{"text":"About nodes","hash":"about_nodes","id":6},{"text":"Trie construction","hash":"trie_construction","id":7},{"text":"Mathematical definition of the nodes in the trie","hash":"mathematical_definition_of_the_nodes_in_the_trie","id":8},{"text":"Example trie","hash":"example_trie","id":9},{"text":"Special addresses","hash":"special_addresses","id":10},{"text":"Address 0x0","hash":"address_0x0","id":11},{"text":"Address 0x1","hash":"address_0x1","id":12}]},"47":{"id":47,"text":"The high-level steps in the Starknet transaction lifecycle are as follows: Transaction submission: A transaction is submitted to one of the gateways, functioning as the mempool and marks the transaction status as RECEIVED. Mempool validation: The mempool performs a preliminary validation on the transaction. If the transaction is invalid, it does not proceed. Mempool validation in this context is analogous to Ethereum’s signature checking, including running the account’s __validate__ function on an INVOKE transaction, __validate_declare__ on a DECLARE transaction, or __validate_deploy__ on a DEPLOY_ACCOUNT transaction, ensuring that the current account balance exceeds the value of max_fee (prior to v3 transactions), and more. Sequencer validation: The sequencer performs preliminary validation on the transaction before executing it to ensure that the transaction is still valid. If the transaction is invalid, it does not proceed. This validation stage repeats the same validation run during the Mempool validation. Execution: The sequencer operation sequentially applies all transactions that passed the preliminary validation to the state. If a transaction fails during execution, it is included in the block with the status REVERTED. Proof generation and verification: The Prover executes the operating system on the new block, computes the proof, and transmits it to the L1 verifier, which verifies the proof. At this point, the L1 state is updated to include the transaction. The diagram below illustrates how each transaction status fits into the overall transaction flow: The following are the possible statuses of a transaction from the moment a user sends it until the moment it passes the L1 verifier: Status type Status Explanation Finality NOT_RECEIVED The transaction is not yet known to the sequencer. RECEIVED The transaction was received by the mempool. The transaction now either executes successfully, is rejected, or reverted. The transaction has no execution status. REJECTED The transaction was received by the mempool but failed validation in the sequencer. Such transactions are not included in a block. The transaction has no execution status. A REJECTED transaction is stored in the mempool. You cannot send another transaction with the same transaction hash. ACCEPTED_ON_L2 The transaction was executed and entered an actual created block on L2. ACCEPTED_ON_L1 The transaction was accepted on Ethereum. Execution REVERTED The transaction passed validation but failed during execution in the sequencer. It is included in the block with the status REVERTED. SUCCEEDED The transaction was successfully executed by the sequencer. It is included in the block. When a transaction is marked as REVERTED, the following state implications occur: Nonce increases The nonce value for the account of the failed transaction iterates despite the failure. Fee charge The sequencer charges a fee for the execution of the transaction up to the point of failure. A Transfer event is emitted. Partial reversion All changes that occurred during the validation stage are not reverted. However, all changes that occurred during the execution stage are reverted, including all messages to L1 or any events that were emitted during this stage. Events might still be emitted from the validation stage or the fee charge stage. Fee calculation The fee charged for REVERTED transactions is the smaller of the following two values: The maximum fee that the user is willing to pay, either max_fee (pre-v3 transactions) or \\(\\text{max_amount} \\cdot \\text{max_price_per_unit}\\) (v3 transactions). The total consumed resources. Consumed Resources The resources used for the execution of the transaction up to the point of failure. This includes Cairo steps, builtins, syscalls, L1 messages, events, and state diffs during the validation and execution stages. To get a receipt, use the JSON RPC method starknet_getTransactionReceipt. The transaction receipt contains the following fields: transaction_hash The hash of the transaction. actual_fee The actual fee paid for the transaction. finality_status The finality status of the transaction. execution_status The execution status of the transaction. block_hash The hash of the block that includes the transaction block_number The sequential number of the block that includes the transaction messages_sent A list of messages sent to L1. events The events emitted. execution_resource A summary of the execution resources used by the transaction. type The type of the transaction. The following is an example of a receipt: { \"jsonrpc\": \"2.0\", \"result\": { \"actual_fee\": \"0x221db5dbf6db\", \"block_hash\": \"0x301fc0d09c5810600af7bb9610be10596ad6f4e6d28a60d397dd148f0962a88\", \"block_number\": 906096, \"events\": [ { \"data\": [ \"0x181de8b0cd32999a5cc962c5f724bc0f6a322f02957b80e1d5fef49a87588b7\", \"0x0\", \"0x9184e72a000\", \"0x0\" ], \"from_address\": \"0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7\", \"keys\": [ \"0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9\" ] }, { \"data\": [ \"0x764da020183e28a48ee38a9474f84e7e5ff13194\", \"0x9184e72a000\", \"0x0\", \"0x181de8b0cd32999a5cc962c5f724bc0f6a322f02957b80e1d5fef49a87588b7\" ], \"from_address\": \"0x73314940630fd6dcda0d772d4c972c4e0a9946bef9dabf4ef84eda8ef542b82\", \"keys\": [ \"0x194fc63c49b0f07c8e7a78476844837255213824bd6cb81e0ccfb949921aad1\" ] }, { \"data\": [ \"0x181de8b0cd32999a5cc962c5f724bc0f6a322f02957b80e1d5fef49a87588b7\", \"0x1176a1bd84444c89232ec27754698e5d2e7e1a7f1539f12027f28b23ec9f3d8\", \"0x221db5dbf6db\", \"0x0\" ], \"from_address\": \"0x49d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7\", \"keys\": [ \"0x99cd8bde557814842a3121e8ddfd433a539b8c9f14bf31ebf108d12e6196e9\" ] } ], \"execution_status\": \"SUCCEEDED\", \"finality_status\": \"ACCEPTED_ON_L2\", \"messages_sent\": [ { \"from_address\": \"0x73314940630fd6dcda0d772d4c972c4e0a9946bef9dabf4ef84eda8ef542b82\", \"payload\": [ \"0x0\", \"0x764da020183e28a48ee38a9474f84e7e5ff13194\", \"0x9184e72a000\", \"0x0\" ], \"to_address\": \"0xc3511006c04ef1d78af4c8e0e74ec18a6e64ff9e\" } ], \"transaction_hash\": \"0xdeadbeef\", \"type\": \"INVOKE\" }, \"id\": 1 }","title":"Transaction lifecycle","component":"documentation","version":"","name":"transaction-life-cycle","url":"/documentation/architecture_and_concepts/Network_Architecture/transaction-life-cycle/","titles":[{"text":"Transaction flow","hash":"transaction_flow","id":1},{"text":"Transaction status","hash":"transaction_status","id":2},{"text":"State implications of a reverted transaction","hash":"transaction-state-implications","id":3},{"text":"Transaction receipt","hash":"transaction_receipt","id":4}]},"48":{"id":48,"text":"Starknet supports the following types of transactions, as defined in the Starknet API: DECLARE Declares new contract classes, enabling new contract instances. INVOKE Invokes an existing function in a contract. DEPLOY_ACCOUNT Deploys new account contracts in smart wallets. To see how these transaction types appear in the Starknet API, see starknet_api_openrpc.json. This topic describes the available fields for these transaction types and how each transaction’s hash is calculated. When the fields that comprise a transaction change, either with the addition of a new field or the removal of an existing field, then the transaction version increases. Deprecated transaction versions are still supported, but support will be removed in a future release of Starknet. Table 1. Supported versions of Starknet transaction types Transaction name Current version Deprecated versions Unsupported versions INVOKE v3 v1, v0 N/A DECLARE v3 v2, v1 v0 DEPLOY_ACCOUNT v3 v0 N/A DEPLOY N/A N/A v0 Do not submit a transaction that uses an unsupported transaction type, because it cannot be included in a proof, and so cannot become part of a Starknet block. The INVOKE transaction type invokes a function in an existing contract instance. The contract code of the account that sends the INVOKE transaction determines how to process the transaction. Because an account’s __validate__ and __execute__ functions can contain any logic, the account ultimately determines how to handle the INVOKE transaction. Every INVOKE transaction in Starknet undergoes the validation and execution stages, initiated by the __validate__ and __execute__ functions. The validation stage verifies that the account that sent the transaction approves it. Field name Type Description account_deployment_data List For future use. Currently this value is always empty. For more information, see SNIP 8: Transaction V3 Structure calldata List The arguments that are passed to the validate and execute functions. chain_id FieldElement The id of the chain to which the transaction is sent. fee_data_availability_mode FieldElement For future use. Currently this value is always 0. For more information, see SNIP 8: Transaction V3 Structure nonce FieldElement The transaction nonce. nonce_data_availability_mode FieldElement For future use. Currently this value is always 0. For more information, see SNIP 8: Transaction V3 Structure paymaster_data List For future use. Currently this value is always empty. For more information, see SNIP 8: Transaction V3 Structure resource_bounds Dict[Resource, ResourceBounds] Used for enabling the fee market. A dictionary that maps resource type to resource bounds. The resource is the amount of L1 or L2 gas used to pay for the transaction. Resource A felt. Possible values are the felt representation of the strings L1_GAS or L2_GAS. ResourceBounds A struct containing the following felts: max_amount: The maximum amount of the resource allowed for usage during the execution. max_price_per_unit: The maximum price the user is willing to pay for the resource. L1_GAS and L2_GAS are specified in units of fri, where 1 fri = 10-18 STRK. sender_address FieldElement The address of the account initiating the transaction. signature List` Additional information given by the sender, used to validate the transaction. tip FieldElement For future use. Currently this value is always 0. version FieldElement The transaction’s version. When the fields that comprise a transaction change, either with the addition of a new field or the removal of an existing field, then the transaction version increases. Transaction version, where n specifies version n transaction. For example: 3 version 3 transaction The INVOKE v3 transaction hash is calculated as a Poseidon hash over the given transaction elements, specifically: invoke_v3_tx_hash = h( \"invoke\", version, sender_address, h(tip, l1_gas_bounds, l2_gas_bounds), h(paymaster_data), chain_id, nonce, data_availability_modes, h( h(account_deployment_data), h(calldata) ) class_hash ) Where: invoke is a constant prefix string, encoded in ASCII. chain_id is a constant value that specifies the network to which this transaction is sent. See Chain-Id. l1_gas_bounds is constructed as follows: \\[\\underbrace{\\text{L1_GAS}}_{\\text{60 bits}} | \\underbrace{\\text{max_amount}}_{\\text{64 bits}} | \\underbrace{\\text{max_price_per_unit}}_{\\text{128 bits}}\\] l2_gas_bounds is constructed as follows: \\[\\underbrace{\\text{L2_GAS}}_{\\text{60 bits}} | \\underbrace{\\text{max_amount}}_{\\text{64 bits}} | \\underbrace{\\text{max_price_per_unit}}_{\\text{128 bits}}\\] data_availability_modes is a concatenation of fee_data_availability_mode and nonce_data_availability_mode, as follows: \\[\\underbrace{0\\cdots0}_{\\text{188 bits}} | \\underbrace{\\text{nonce_data_availability_mode}}_{\\text{32 bits}} | \\underbrace{\\text{fee_data_availability_mode}}_{\\text{32 bits}}\\] h is the Poseidon hash. Table 2. INVOKE v1 transaction fields Name Type Description sender_address FieldElement The address of the sender of this transaction. calldata List The arguments that are passed to the validate and execute functions. signature List Additional information given by the sender, used to validate the transaction. max_fee FieldElement The maximum fee that the sender is willing to pay for the transaction nonce FieldElement The transaction nonce. version FieldElement The transaction’s version. The value is 1. When the fields that comprise a transaction change, either with the addition of a new field or the removal of an existing field, then the transaction version increases. The INVOKE v1 transaction hash is calculated as a hash over the given transaction elements, specifically: invoke_v1_tx_hash = h( \"invoke\", version, sender_address, 0, h(calldata), max_fee, chain_id, nonce ) Where: invoke is a constant prefix string, encoded in ASCII. The placeholder zero is used to align the hash computation for the different types of transactions. chain_id is a constant value that specifies the network to which this transaction is sent. See Chain-Id. h is the Pedersen hash The hash of a v0 INVOKE transaction is computed as follows: invoke_v0_tx_hash = h( \"invoke\", version, contract_address, entry_point_selector, h(calldata), max_fee, chain_id ) Where: invoke is a constant prefix string, encoded in (ASCII). chain_id is a constant value that specifies the network to which this transaction is sent. See Chain-Id. v2 and v3 h is the Pedersen hash The DECLARE transaction introduces new contract classes into the state of Starknet, enabling other contracts to deploy instances of those classes or use them in a library call. For more information, see contract classes. Field name Type Description account_deployment_data List For future use. Currently this value is always empty. For more information, see SNIP 8: Transaction V3 Structure chain_id FieldElement The id of the chain to which the transaction is sent. compiled_class_hash FieldElement The hash of the compiled class. For more information, see Class hash. contract_class ContractClass The class definition. For more information, see Class hash. fee_data_availability_mode FieldElement For future use. Currently this value is always 0. For more information, see SNIP 8: Transaction V3 Structure nonce FieldElement The transaction nonce. nonce_data_availability_mode FieldElement For future use. Currently this value is always 0. For more information, see SNIP 8: Transaction V3 Structure paymaster_data List For future use. Currently this value is always empty. For more information, see SNIP 8: Transaction V3 Structure resource_bounds Dict[Resource, ResourceBounds] Used for enabling the fee market. A dictionary that maps resource type to resource bounds. The resource is the amount of L1 or L2 gas used to pay for the transaction. Resource A felt. Possible values are the felt representation of the strings L1_GAS or L2_GAS. ResourceBounds A struct containing the following felts: max_amount: The maximum amount of the resource allowed for usage during the execution. max_price_per_unit: The maximum price the user is willing to pay for the resource. L1_GAS and L2_GAS are specified in units of fri, where 1 fri = 10-18 STRK. sender_address FieldElement The address of the account initiating the transaction. signature List` Additional information given by the sender, used to validate the transaction. tip FieldElement For future use. Currently this value is always 0. version FieldElement The transaction’s version. When the fields that comprise a transaction change, either with the addition of a new field or the removal of an existing field, then the transaction version increases. Transaction version, where n specifies version n transaction. For example: 3 version 3 transaction The hash of a v3 DECLARE transaction is computed as follows: declare_v3_tx_hash = h( \"declare\", version, sender_address, h(tip, l1_gas_bounds, l2_gas_bounds), h(paymaster_data), chain_id, nonce, data_availability_modes, h(account_deployment_data), class_hash, compiled_class_hash ) Where: declare is a constant prefix string, encoded in ASCII. chain_id is a constant value that specifies the network to which this transaction is sent. See Chain-Id. l1_gas_bounds is constructed as follows: \\[\\underbrace{\\text{L1_GAS}}_{\\text{60 bits}} | \\underbrace{\\text{max_amount}}_{\\text{64 bits}} | \\underbrace{\\text{max_price_per_unit}}_{\\text{128 bits}}\\] l2_gas_bounds is constructed as follows: \\[\\underbrace{\\text{L2_GAS}}_{\\text{60 bits}} | \\underbrace{\\text{max_amount}}_{\\text{64 bits}} | \\underbrace{\\text{max_price_per_unit}}_{\\text{128 bits}}\\] data_availability_modes is a concatenation of fee_data_availability_mode and nonce_data_availability_mode, as follows: \\[\\underbrace{0\\cdots0}_{\\text{188 bits}} | \\underbrace{\\text{nonce_data_availability_mode}}_{\\text{32 bits}} | \\underbrace{\\text{fee_data_availability_mode}}_{\\text{32 bits}}\\] h is the Poseidon hash. class_hash is the hash of the contract class. See Class Hash for details about how the hash is computed compiled_class_hash is the hash of the compiled class generated by the Sierra→Casm compiler that is used in Starknet Table 3. DECLARE v2 transaction fields Name Type Description chain_id FieldElement The id of the chain to which the transaction is sent. contract_class ContractClass The (Cairo 1.0) class. compiled_class_hash FieldElement The hash of the compiled class (see here for more information) sender_address FieldElement The address of the account initiating the transaction. signature List Additional information given by the sender, used to validate the transaction. max_fee FieldElement The maximum fee that the sender is willing to pay for the transaction. nonce FieldElement The transaction nonce. version FieldElement The transaction’s version. The value is 2. When the fields that comprise a transaction change, either with the addition of a new field or the removal of an existing field, then the transaction version increases. The hash of a v2 DECLARE transaction is computed as follows: declare_v2_tx_hash = h( \"declare\", version, sender_address, 0, h(class_hash), max_fee, chain_id, nonce, compiled_class_hash ) Where: h is the Poseidon hash function class_hash is the hash of the contract class. See Class Hash for details about how the hash is computed compiled_class_hash is the hash of the compiled class generated by the Sierra→Casm compiler that is used in Starknet This transaction version was used to declare Cairo 0 classes. Table 4. DECLARE v1 transaction fields Name Type Description contract_class ContractClass The class object. sender_address FieldElement The address of the account initiating the transaction. max_fee FieldElement The maximum fee that the sender is willing to pay for the transaction. signature List Additional information given by the sender, used to validate the transaction. nonce FieldElement The transaction nonce. version FieldElement The transaction’s version. Possible values are 1 or 0. When the fields that comprise a transaction change, either with the addition of a new field or the removal of an existing field, then the transaction version increases. The hash of a v1 DECLARE transaction is computed as follows: declare_v1_tx_hash = h( \"declare\", version, sender_address, 0, h(class_hash), max_fee, chain_id, nonce ) Where: declare is a constant prefix string, encoded in ASCII. class_hash is the hash of the contract class. See Class Hash for details about how the hash is computed. The placeholder zero is used to align the hash computation for the different types of transactions. chain_id is a constant value that specifies the network to which this transaction is sent. See Chain-Id. h is the Pedersen hash This transaction version was used to declare Cairo 0 classes. The hash of a v0 DECLARE transaction is computed as follows: declare_v0_tx_hash = h( \"declare\", version, sender_address, 0, h(), max_fee, chain_id, class_hash ) Where: declare is a constant prefix string, encoded in ASCII. The placeholder zeros are used to align the hash computation for the different types of transactions. h is the Pedersen hash chain_id is a constant value that specifies the network to which this transaction is sent. See Chain-Id. class_hash is the hash of the contract class. See Class Hash for details about how the hash is computed. Since StarkNet v0.10.1 the DEPLOY_ACCOUNT transaction replaces the DEPLOY transaction for deploying account contracts. To use it, you should first pre-fund your new account address so that you can pay the transaction fee. You can then send the DEPLOY_ACCOUNT transaction. For more information, see Deploying a new account. Field name Type Description chain_id FieldElement The id of the chain to which the transaction is sent. class_hash FieldElement The hash of the desired account class. For more information, see Class hash. constructor_calldata List The arguments to the account constructor. contract_address_salt FieldElement A random salt that determines the account address. fee_data_availability_mode FieldElement For future use. Currently this value is always 0. For more information, see SNIP 8: Transaction V3 Structure nonce FieldElement The transaction nonce. nonce_data_availability_mode FieldElement For future use. Currently this value is always 0. For more information, see SNIP 8: Transaction V3 Structure paymaster_data List For future use. Currently this value is always empty. For more information, see SNIP 8: Transaction V3 Structure resource_bounds Dict[Resource, ResourceBounds] Used for enabling the fee market. A dictionary that maps resource type to resource bounds. The resource is the amount of L1 or L2 gas used to pay for the transaction. Resource A felt. Possible values are the felt representation of the strings L1_GAS or L2_GAS. ResourceBounds A struct containing the following felts: max_amount: The maximum amount of the resource allowed for usage during the execution. max_price_per_unit: The maximum price the user is willing to pay for the resource. L1_GAS and L2_GAS are specified in units of fri, where 1 fri = 10-18 STRK. signature List` Additional information given by the sender, used to validate the transaction. tip FieldElement For future use. Currently this value is always 0. version FieldElement The transaction’s version. When the fields that comprise a transaction change, either with the addition of a new field or the removal of an existing field, then the transaction version increases. Transaction version, where n specifies version n transaction. For example: 3 version 3 transaction The hash of a DEPLOY_ACCOUNT transaction is computed as follows: deploy_account_v3_tx_hash = h( \"deploy_account\", version, contract_address, h(tip, l1_gas_bounds, l2_gas_bounds), h(paymaster_data), chain_id, nonce, data_availability_modes, h(constructor_calldata), class_hash, contract_address_salt ) Where: deploy_account is a constant prefix string, encoded in ASCII. chain_id is a constant value that specifies the network to which this transaction is sent. See Chain-Id. l1_gas_bounds is constructed as follows: \\[\\underbrace{\\text{L1_GAS}}_{\\text{60 bits}} | \\underbrace{\\text{max_amount}}_{\\text{64 bits}} | \\underbrace{\\text{max_price_per_unit}}_{\\text{128 bits}}\\] l2_gas_bounds is constructed as follows: \\[\\underbrace{\\text{L2_GAS}}_{\\text{60 bits}} | \\underbrace{\\text{max_amount}}_{\\text{64 bits}} | \\underbrace{\\text{max_price_per_unit}}_{\\text{128 bits}}\\] data_availability_modes is a concatenation of fee_data_availability_mode and nonce_data_availability_mode, as follows: \\[\\underbrace{0\\cdots0}_{\\text{188 bits}} | \\underbrace{\\text{nonce_data_availability_mode}}_{\\text{32 bits}} | \\underbrace{\\text{fee_data_availability_mode}}_{\\text{32 bits}}\\] h is the Poseidon hash. class_hash is the hash of the contract class. See Class Hash for details about how the hash is computed. contract_address is the address of the newly deployed account. For information on how this address is calculated, see Contract address. Table 5. DEPLOY_ACCOUNT transaction fields Name Type Description class_hash FieldElement The hash of the desired account class. constructor_calldata List The arguments to the account constructor. contract_address_salt FieldElement A random salt that determines the account address. signature List Additional information given by the sender, used to validate the transaction. max_fee FieldElement The maximum fee that the sender is willing to pay for the transaction nonce FieldElement The transaction nonce. version FieldElement The transaction’s version. The value is 1. The hash of a DEPLOY_ACCOUNT transaction is computed as follows: deploy_account_v1_tx_hash = h( \"deploy_account\", version, contract_address, 1, h(class_hash, contract_address_salt, constructor_calldata), max_fee, chain_id, nonce ) Where: deploy_account is a constant prefix string, encoded in ASCII. The placeholder zero is used to align the hash computation for the different types of transactions. h is the Pedersen hash chain_id is a constant value that specifies the network to which this transaction is sent. See Chain-Id. class_hash is the hash of the contract class. See Class Hash for details about how the hash is computed. If you need to retrieve the hash of an existing DEPLOY transaction, you can use this information to calculate the hash of the transaction. Before you can calculate the transaction hash, get the deployed contract address. The DEPLOY transaction’s hash is calculated as shown in the following pseudo code: deploy_tx_hash = h( \"deploy\", version, contract_address, sn_keccak(\"constructor\"), h constructor_calldata), 0, chain_id ) Where: The placeholder zero is used to align the hash computation for the different types of transactions. deploy and constructor are constant strings encoded in ASCII. h is the Pedersen hash and sn_keccak is Starknet Keccak. chain_id is a constant value that specifies the network to which this transaction is sent. See Chain-Id. contract_address is calculated as described here. While Starknet does not have a specific signature scheme built into the protocol, the Cairo language, in which smart contracts are written, does have an efficient implementation for ECDSA signature with respect to a STARK-friendly curve. The generator used in the ECDSA algorithm is \\(G=\\left(g_x, g_y\\right)\\) where: \\(g_x=874739451078007766457464989774322083649278607533249481151382481072868806602\\) \\(g_y=152666792071518830868575557812948353041420400780739481342941381225525861407\\) Chain IDs are given as numbers, representing the ASCII encoding of specific constant strings, as illustrated by the following Python snippet: chain_id = int.from_bytes(value, byteorder=\"big\", signed=False) The following constants are currently used. They correspond to the chain IDs that Starknet currently supports: SN_MAIN for Starknet’s main network. SN_GOERLI for Starknet’s public testnet on Goerli (Deprecated). SN_SEPOLIA for Starknet’s public testnet on Sepolia. Goerli testnet 2 is removed. Goerli testnet support will be removed April 11, 2024. Sepolia testnet replaces Goerli testnet. For more information, including bridge support for Sepolia, see Starknet Goerli Deprecation in the Starknet Dev News newsletter.","title":"Transaction types","component":"documentation","version":"","name":"transactions","url":"/documentation/architecture_and_concepts/Network_Architecture/transactions/","titles":[{"text":"Transaction versions","hash":"transaction_versioning","id":1},{"text":"INVOKE transaction","hash":"invoke_transaction","id":2},{"text":"v3 transaction fields","hash":"v3_transaction_fields","id":3},{"text":"v3 hash calculation","hash":"v3_hash_calculation","id":4},{"text":"v1 (deprecated) transaction fields","hash":"v1_deprecated_transaction_fields","id":5},{"text":"v1 (deprecated) hash calculation","hash":"v1_deprecated_hash_calculation","id":6},{"text":"v0 (deprecated) hash calculation","hash":"v0_deprecated_hash_calculation","id":7},{"text":"DECLARE transaction","hash":"declare-transaction","id":8},{"text":"v3 transaction fields","hash":"v3_transaction_fields_2","id":9},{"text":"v3 hash calculation","hash":"v3_hash_calculation_2","id":10},{"text":"v2 (deprecated) transaction fields","hash":"declare_v2","id":11},{"text":"v2 (deprecated) hash calculation","hash":"v2_deprecated_hash_calculation","id":12},{"text":"v1 (deprecated) transaction fields","hash":"v1_deprecated_transaction_fields_2","id":13},{"text":"v1 (deprecated) hash calculation","hash":"v1_deprecated_hash_calculation_2","id":14},{"text":"v0 (unsupported) hash calculation","hash":"v0_unsupported_hash_calculation","id":15},{"text":"DEPLOY_ACCOUNT transaction","hash":"deploy_account_transaction","id":16},{"text":"v3 transaction fields","hash":"v3_transaction_fields_3","id":17},{"text":"v3 hash calculation","hash":"v3_hash_calculation_3","id":18},{"text":"v1 (deprecated) transaction fields","hash":"v1_deprecated_transaction_fields_3","id":19},{"text":"v1 (deprecated) hash calculation","hash":"v1_deprecated_hash_calculation_3","id":20},{"text":"DEPLOY (unsupported) transaction hash calculation","hash":"deploy_transaction","id":21},{"text":"Signature","hash":"signature","id":22},{"text":"Chain ID","hash":"chain-id","id":23}]},"49":{"id":49,"text":"Before Starknet Alpha v0.11.0 a developer would write contracts in Cairo 0 and compile them locally to Cairo assembly (or Casm for short). Next, the developer would submit the compilation output, the contract class, to the Starknet sequencer via a DECLARE transaction. Starting with Cairo 1.0, the contract class resulting from compiling Cairo 1.0 does not include Casm. Instead of Casm, it includes instructions in an intermediate representation called Safe Intermediate Representation, Sierra for short. This new contract class is then compiled by the sequencer, via the Sierra → Casm compiler, to generate the Cairo assembly associated with this class. The Casm code is then executed by the Starknet OS. Starknet is a validity rollup, which means that the execution inside every block needs to be proven, and this is where STARKs come in handy. However, STARK proofs can address statements that are formulated in the language of polynomial constraints, and have no knowledge of smart contract execution. To overcome this gap, we developed Cairo. Cairo instructions, previously referred to as Casm, are translated to polynomial constraints that enforce the correct execution of a program according to the Cairo semantics defined in Cairo-a Turing-complete STARK-friendly CPU architecture. Thanks to Cairo, we can formulate the statement \"This Starknet block is valid\" in a way that we can prove. Be aware that we can only prove things about Casm. That is, regardless of what the user sends to the Starknet sequencer, what’s proven is the correct Casm execution. This means that we need a way to translate Sierra into Casm, and this is achieved with the Sierra → Casm compiler. To understand why we chose to add an additional layer between the code that the user writes (Cairo 1.0) and the code that is being proven (Casm), we need to consider more components in the system, and the limitations of Cairo. A crucial property of every decentralized L2 is that the sequencers are guaranteed to be compensated for the work they do. The notion of reverted transactions is a good example: even if the user’s transaction failed mid execution, the sequencer should be able to include it in a block and charge execution fees up to the point of failure. If the sequencer cannot charge for such transactions, then sending transactions that will eventually fail (after a lot of computation steps) is an obvious DOS attack on the sequencer. The sequencer cannot look at a transaction and conclude that it would fail without actually doing the work (this is equivalent to solving the halting problem). The obvious solution to the above predicament is to include such transactions in the block, similar to Ethereum. However, this may not be as simple to do in a validity rollup. With Cairo 0, there is no separating layer between user code and what is being proven. This means that users can write code which is unprovable in some cases. In fact, such code is very easy to write, e.g. assert 0=1 is a valid Cairo instruction that cannot be proven, as it translates to polynomial constraints that are not satisfiable. Any Casm execution that contains this instruction cannot be proven. Sierra is the layer between user code and the provable statement, that allows us to make sure all transactions are eventually provable. The method by which Sierra guarantees that user code is always provable is by compiling Sierra instructions to a subset of Casm, which we call \"safe Casm\". The important property that we require from safe Casm is being provable for all inputs. A canonical example for safe Casm is using if/else instructions instead of assert, that is, making sure all failures are graceful. To better understand the considerations that go into designing the Sierra → Casm compiler, consider the find_element function from the common library of Cairo 0: func find_element{range_check_ptr}(array_ptr: felt*, elm_size, n_elms, key) -> (elm_ptr: felt*) { alloc_locals; local index; %{ ... %} assert_nn_le(a=index, b=n_elms - 1); tempvar elm_ptr = array_ptr + elm_size * index; assert [elm_ptr] = key; return (elm_ptr=elm_ptr); } Below we abuse the \"Casm\" notation by not distinguishing Cairo 0 from Casm and referring to the above as Casm (while we actually refer to the compilation result of the above). For brevity, we have omitted the hint in the above snippet, but it’s clear that this function can only execute correctly if the requested element exists in the array (otherwise it would fail for every possible hint - there is nothing we can substitute index for, that makes the following lines run successfully). Such Casm cannot be generated by the Sierra→Casm compiler. Furthermore, simply replacing the assertion with an if/else statement doesn’t do, as this results in non-deterministic execution. That is, for the same input, different hint values can yield different results. A malicious prover can use this freedom to harm the user - in this example, they are able to make it seem as if an element isn’t part of the array, even though it actually is. The safe Casm for finding an element in an array behaves like the above snippet in the happy flow (element is there): an index is given in a hint, and we verify that the array at the hinted index contains the requested element. However, in the unhappy flow (element isn’t there), we must go over the entire array to verify this. This was not the case in Cairo 0, as we were fine with certain paths not being provable (in the above snippet, the unhappy flow in which the element isn’t in the array is never provable). Sierra’s gas metering adds further complications to the above example. Even looking through the array to verify that the element isn’t there may leave some flexibility to the prover. If we take gas limitations into consideration, the user may have enough gas for the happy flow, but not for the unhappy one, making the execution stop mid-search, and allowing the prover to get away with lying about the element not being present. The way we plan to handle this is by requiring the user to have enough gas for the unhappy flow before actually calling find_element. Smart contracts written with Cairo 1.0 cannot contain user defined hints. This is already true with Cairo 0 contracts (only whitelisted hints are accepted), but with Cairo 1.0 the hints in use are determined by the Sierra → Casm compiler. Since this compilation is there to ensure that only \"safe\" Casm is generated, there is no room for hints that are not generated by the compiler. In the future, native Cairo 1.0 may contain hint syntax similar to Cairo 0, but it will not be available in Starknet smart contracts (L3s on top of Starknet may make use of such functionality). Note that this is currently not part of Starknet’s roadmap.","title":"Cairo and Sierra","component":"documentation","version":"","name":"cairo-and-sierra","url":"/documentation/architecture_and_concepts/Smart_Contracts/cairo-and-sierra/","titles":[{"text":"Why do we need Casm?","hash":"why_do_we_need_casm","id":1},{"text":"Why do we need Sierra?","hash":"why_do_we_need_sierra","id":2},{"text":"Reverted transactions, unsatisfiable AIRs, and DOS attacks","hash":"reverted_transactions_unsatisfiable_airs_and_dos_attacks","id":3},{"text":"Safe Casm","hash":"safe_casm","id":4},{"text":"Hints in Cairo 1.0","hash":"hints_in_cairo_1_0","id":5}]},"50":{"id":50,"text":"The class hash is a hash chain of the components that define the class. Classes written in Cairo are compiled into Sierra code. The Sierra code generated is an intermediate representation of the class. This new contract class is then compiled by the sequencer, via the Sierra → Casm compiler, to generate the Cairo assembly associated with this class. The resulting Casm code is then executed by the Starknet OS. For information on how the compiler converts code from Cairo to Sierra, see Cairo and Sierra. The components that define a class are: contract_class_version The version of the contract class object. Currently, the Starknet OS supports version 0.1.0 Array of external functions entry points An entry point is a pair (selector, function_idx), where function_idx is the index of the function inside the Sierra program. The selector is an identifier through which the function is callable in transactions or in other classes. The selector is the starknet_keccak hash of the function name, encoded in ASCII. Array of L1 handlers entry points - Array of constructors entry points Currently, the compiler allows only one constructor. ABI A string representing the ABI of the class. The ABI hash (which affects the class hash) is given by: starknet_keccak(bytes(ABI, \"UTF-8\")) This string is supplied by the user declaring the class (and is signed on as part of the DECLARE transaction), and is not enforced to be the true ABI of the associated class. Without seeing the underlying source code (i.e. the Cairo code generating the class’s Sierra), this ABI should be treated as the \"intended\" ABI by the declaring party, which may be incorrect (intentionally or otherwise). The \"honest\" string would be the json serialization of the contract’s ABI as produced by the Cairo compiler. Sierra program An array of field elements representing the Sierra instructions. The hash of the class is the chain hash of its components, computed as follows: class_hash = ℎ( contract_class_version, external_entry_points, l1_handler_entry_points, constructor_entry_points, abi_hash, sierra_program_hash ) Where \\(h\\) is the Poseidon hash function The hash of an entry point array \\((selector,index)_{i=1}^n\\) is given by \\(h(\\text{selector}_1,\\text{index}_1,...,\\text{selector}_n,\\text{index}_n)\\) The sierra_program_hash is the Poseidon hash of the bytecode array The Starknet OS currently supports contract class version 0.1.0, which is represented in the above hash computation as the ASCII encoding of the string CONTRACT_CLASS_V0.1.0 (hashing the version in this manner gives us domain separation between the hashes of classes and other objects). For more details, see the Cairo implementation.","title":"Class hash","component":"documentation","version":"","name":"class-hash","url":"/documentation/architecture_and_concepts/Smart_Contracts/class-hash/","titles":[{"text":"Components of a Cairo class definition","hash":"cairo1_class","id":1},{"text":"Computing the Cairo class hash","hash":"computing_the_cairo_1_class_hash","id":2}]},"51":{"id":51,"text":"A contract ABI is a representation of a Starknet contract interface. It is formatted as JSON and describes the functions, structs and events which are defined in the contract. You can get the contract’s ABI by using starknet-compile: cargo run --bin starknet-compile -- --single-file The following is an example contract ABI: Cairo v2 Cairo v1 [ { \"type\": \"impl\", \"name\": \"CounterContract\", \"interface_name\": \"new_syntax_test_contract::new_syntax_test_contract::ICounterContract\" }, { \"type\": \"interface\", \"name\": \"new_syntax_test_contract::new_syntax_test_contract::ICounterContract\", \"items\": [ { \"type\": \"function\", \"name\": \"increase_counter\", \"inputs\": [ { \"name\": \"amount\", \"type\": \"core::integer::u128\" } ], \"outputs\": [], \"state_mutability\": \"external\" }, { \"type\": \"function\", \"name\": \"decrease_counter\", \"inputs\": [ { \"name\": \"amount\", \"type\": \"core::integer::u128\" } ], \"outputs\": [], \"state_mutability\": \"external\" }, { \"type\": \"function\", \"name\": \"get_counter\", \"inputs\": [], \"outputs\": [ { \"type\": \"core::integer::u128\" } ], \"state_mutability\": \"view\" } ] }, { \"type\": \"constructor\", \"name\": \"constructor\", \"inputs\": [ { \"name\": \"initial_counter\", \"type\": \"core::integer::u128\" }, { \"name\": \"other_contract_addr\", \"type\": \"core::starknet::contract_address::ContractAddress\" } ] }, { \"type\": \"event\", \"name\": \"new_syntax_test_contract::new_syntax_test_contract::counter_contract::CounterIncreased\", \"kind\": \"struct\", \"members\": [ { \"name\": \"amount\", \"type\": \"core::integer::u128\", \"kind\": \"data\" } ] }, { \"type\": \"event\", \"name\": \"new_syntax_test_contract::new_syntax_test_contract::counter_contract::CounterDecreased\", \"kind\": \"struct\", \"members\": [ { \"name\": \"amount\", \"type\": \"core::integer::u128\", \"kind\": \"data\" } ] }, { \"type\": \"event\", \"name\": \"new_syntax_test_contract::new_syntax_test_contract::counter_contract::Event\", \"kind\": \"enum\", \"variants\": [ { \"name\": \"CounterIncreased\", \"type\": \"new_syntax_test_contract::new_syntax_test_contract::counter_contract::CounterIncreased\", \"kind\": \"nested\" }, { \"name\": \"CounterDecreased\", \"type\": \"new_syntax_test_contract::new_syntax_test_contract::counter_contract::CounterDecreased\", \"kind\": \"nested\" } ] } ] [ { \"type\": \"function\", \"name\": \"constructor\", \"inputs\": [ { \"name\": \"name_\", \"type\": \"core::felt252\" }, { \"name\": \"symbol_\", \"type\": \"core::felt252\" }, { \"name\": \"decimals_\", \"type\": \"core::integer::u8\" }, { \"name\": \"initial_supply\", \"type\": \"core::integer::u256\" }, { \"name\": \"recipient\", \"type\": \"core::starknet::contract_address::ContractAddress\" } ], \"outputs\": [], \"state_mutability\": \"external\" }, { \"type\": \"function\", \"name\": \"get_name\", \"inputs\": [], \"outputs\": [ { \"type\": \"core::felt252\" } ], \"state_mutability\": \"view\" }, { \"type\": \"function\", \"name\": \"get_symbol\", \"inputs\": [], \"outputs\": [ { \"type\": \"core::felt252\" } ], \"state_mutability\": \"view\" }, { \"type\": \"function\", \"name\": \"get_decimals\", \"inputs\": [], \"outputs\": [ { \"type\": \"core::integer::u8\" } ], \"state_mutability\": \"view\" }, { \"type\": \"function\", \"name\": \"get_total_supply\", \"inputs\": [], \"outputs\": [ { \"type\": \"core::integer::u256\" } ], \"state_mutability\": \"view\" }, { \"type\": \"function\", \"name\": \"balance_of\", \"inputs\": [ { \"name\": \"account\", \"type\": \"core::starknet::contract_address::ContractAddress\" } ], \"outputs\": [ { \"type\": \"core::integer::u256\" } ], \"state_mutability\": \"view\" }, { \"type\": \"function\", \"name\": \"allowance\", \"inputs\": [ { \"name\": \"owner\", \"type\": \"core::starknet::contract_address::ContractAddress\" }, { \"name\": \"spender\", \"type\": \"core::starknet::contract_address::ContractAddress\" } ], \"outputs\": [ { \"type\": \"core::integer::u256\" } ], \"state_mutability\": \"view\" }, { \"type\": \"function\", \"name\": \"transfer\", \"inputs\": [ { \"name\": \"recipient\", \"type\": \"core::starknet::contract_address::ContractAddress\" }, { \"name\": \"amount\", \"type\": \"core::integer::u256\" } ], \"outputs\": [], \"state_mutability\": \"external\" }, { \"type\": \"function\", \"name\": \"transfer_from\", \"inputs\": [ { \"name\": \"sender\", \"type\": \"core::starknet::contract_address::ContractAddress\" }, { \"name\": \"recipient\", \"type\": \"core::starknet::contract_address::ContractAddress\" }, { \"name\": \"amount\", \"type\": \"core::integer::u256\" } ], \"outputs\": [], \"state_mutability\": \"external\" }, { \"type\": \"function\", \"name\": \"approve\", \"inputs\": [ { \"name\": \"spender\", \"type\": \"core::starknet::contract_address::ContractAddress\" }, { \"name\": \"amount\", \"type\": \"core::integer::u256\" } ], \"outputs\": [], \"state_mutability\": \"external\" }, { \"type\": \"function\", \"name\": \"increase_allowance\", \"inputs\": [ { \"name\": \"spender\", \"type\": \"core::starknet::contract_address::ContractAddress\" }, { \"name\": \"added_value\", \"type\": \"core::integer::u256\" } ], \"outputs\": [], \"state_mutability\": \"external\" }, { \"type\": \"function\", \"name\": \"decrease_allowance\", \"inputs\": [ { \"name\": \"spender\", \"type\": \"core::starknet::contract_address::ContractAddress\" }, { \"name\": \"subtracted_value\", \"type\": \"core::integer::u256\" } ], \"outputs\": [], \"state_mutability\": \"external\" }, { \"type\": \"event\", \"name\": \"Transfer\", \"inputs\": [ { \"name\": \"from\", \"type\": \"core::starknet::contract_address::ContractAddress\" }, { \"name\": \"to\", \"type\": \"core::starknet::contract_address::ContractAddress\" }, { \"name\": \"value\", \"type\": \"core::integer::u256\" } ] }, { \"type\": \"event\", \"name\": \"Approval\", \"inputs\": [ { \"name\": \"owner\", \"type\": \"core::starknet::contract_address::ContractAddress\" }, { \"name\": \"spender\", \"type\": \"core::starknet::contract_address::ContractAddress\" }, { \"name\": \"value\", \"type\": \"core::integer::u256\" } ] } ] With Cairo v2.3.0 the limitations on the Event enum have been relaxed, allowing more flexibility on the events that can be emitted from a given contract. For example: It is no longer enforced that the Event enum variants are structs of the same name as the variant, they can now be a struct or an enum of any name. Enum variants inside event ABI entries (entries in the abi with \"type\": \"event\" and \"kind\": \"enum\") now have two possible kinds. Before v2.3.0 it was always \"kind\": \"nested\", now \"kind: \"flat\" is also possible. v2.3.0 is backward compatible with version ≥ 2.0.0 ABI, so the same structure of the ABI is kept, while allowing flexibility. Between versions v2.0.0 and v2.2.0, to identify all potential serializations of events (what raw keys, data arrays can be emitted given the ABI), it was sufficient to iterate over the abi entries with \"type\": \"event\" and \"kind\": \"struct\", skipping the encapsulating Event type which has \"kind\": \"enum\". With v2.3.0 onwards, doing so may result in losing information. To illustrate this, consider the following example: //high-level code defining the events #[event] #[derive(Drop, starknet::Event)] enum Event { ComponentEvent: test_component::Event, TestCounterIncreased: CounterIncreased, TestCounterDecreased: CounterDecreased, TestEnum: MyEnum } #[derive(Drop, starknet::Event)] struct CounterIncreased { amount: u128 } #[derive(Drop, starknet::Event)] struct CounterDecreased { amount: u128 } #[derive(Copy, Drop, starknet::Event)] enum MyEnum { Var1: MyStruct } #[derive(Copy, Drop, Serde, starknet::Event)] struct MyStruct { member: u128 } In v2.3.0 enum variant types can now have any name. As an example the TestCounterIncreased variant and the CounterIncreased type, as they appear in the ABI: { \"type\": \"event\", \"name\": \"::Event\", \"kind\": \"enum\", \"variants\": [ { \"name\": \"ComponentEvent\", \"type\": \"::test_component::Event\", \"kind\": \"nested\" }, { \"name\": \"TestCounterIncreased\", \"type\": \"::CounterIncreased\", \"kind\": \"nested\" }, { \"name\": \"TestCounterDecreased\", \"type\": \"::CounterDecreased\", \"kind\": \"nested\" }, { \"name\": \"TestEnum\", \"type\": \"::MyEnum\", \"kind\": \"nested\" } ] }, { \"type\": \"event\", \"name\": \"::CounterIncreased\", \"kind\": \"struct\", \"members\": [ { \"name\": \"amount\", \"type\": \"core::integer::u128\", \"kind\": \"data\" } ] } When the contract emits the TestCounterIncreased event, for example by writing self.emit(CounterIncreased { amount })), the event that is emitted has the following keys and data: One key based on the variant name: sn_keccak(TestCounterIncreased). This information only appears in the ::Event type entry in the ABI, as the name TestCounterIncreased does not appear in the \"kind\": \"struct\" ABI entry. This did not matter in previous versions when the variant name and type had to be equal. One data element based on the struct CounterIncreased which is associated with TestCounterIncreased via one of the Event type variants. The introduction of components allows variants of Event to be enums. In the following example, we have two such variants: TestEnum (unrelated to components) and ComponentEvent. The serialization to keys and data is the same in both cases, so this example will focus on TestEnum: This example shows the TestEnum variant entry inside Event: { \"name\": \"TestEnum\", \"type\": \"::MyEnum\", \"kind\": \"nested\" } This example shows the MyEnum event entry: { \"type\": \"event\", \"name\": \"::MyEnum\", \"kind\": \"enum\", \"variants\": [ { \"name\": \"Var1\", \"type\": \"::MyStruct\", \"kind\": \"nested\" } ] } This example shows the MyStruct event entry: { \"type\": \"event\", \"name\": \"::MyStruct\", \"kind\": \"struct\", \"members\": [ { \"name\": \"member\", \"type\": \"core::integer::u128\", \"kind\": \"data\" } ] } If a TestEnum event is being emitted via self.emit(Event::TestEnum(MyEnum::Var1(MyStruct {member: 5}))), you can implement the trait Into to avoid having to write it out in full. When the event is emitted, the serialization to keys and data happens as follows: Since the TestEnum variant has kind nested, add the first key: sn_keccak(TestEnum), and the rest of the serialization to keys and data is done recursively via the starknet::event trait implementation of MyEnum. Next, you can handle a \"kind\": \"nested\" variant (previously it was TestEnum, now it’s Var1), which means you can add another key depending on the sub-variant: sn_keccak(Var1), and proceed to serialize according to the starknet::event implementation of MyStruct. Finally, proceed to serialize MyStruct, which gives us a single data member. This results in keys = [sn_keccak(TestEnum), sn_keccak(Var1)] and data=[5] Allowing variants that are themselves enums (TestEnum is an enum variant here) means further nesting is possible. For example, if the high level code is changed to: #[event] #[derive(Drop, starknet::Event)] enum Event { ComponentEvent: test_component::Event, TestCounterIncreased: CounterIncreased, TestCounterDecreased: CounterDecreased, TestEnum: MyEnum } #[derive(Copy, Drop, starknet::Event)] enum MyEnum { Var1: AnotherEnum } #[derive(Copy, Drop, Serde, starknet::Event)] enum AnotherEnum { Var2: MyStruct } #[derive(Copy, Drop, Serde, starknet::Event)] struct MyStruct { member: u128, } then self.emit(Event::TestEnum(MyEnum::Var1(AnotherEnum::Var2(MyStruct { member: 5 })))) (as before, Into implementations can shorten this) will emit an event with keys = [sn_keccak(TestEnum), sn_keccak(Var1), sn_keccak(Var2)] and data=[5]. This will look as follows in the ABI (only the relevant parts are shown): { \"type\": \"event\", \"name\": \"::Event\", \"kind\": \"enum\", \"variants\": [ // ignoring all the other variants for brevity { \"name\": \"TestEnum\", \"type\": \"::MyEnum\", \"kind\": \"nested\" } ] }, { \"type\": \"event\", \"name\": \"::MyEnum\", \"kind\": \"enum\", \"variants\": [ { \"name\": \"Var1\", \"type\": \"::AnotherEnum\", \"kind\": \"nested\" } ] }, { \"type\": \"event\", \"name\": \"::AnotherEnum\", \"kind\": \"enum\", \"variants\": [ { \"name\": \"Var2\", \"type\": \"::MyStruct\", \"kind\": \"nested\" } ] } As TestEnum, Var1 and Var2 are of kind nested, a selector should be added to the list of keys, before continuing to recursively serialize. You might not want to nest enums when serializing the event. For example, if you write an ERC-20 as a component, not a contract, that is pluggable anywhere, you might not want the contract to modify the keys of known events such as Transfer. To avoid nesting, write the following high level code: #[event] #[derive(Drop, starknet::Event)] enum Event { ComponentEvent: test_component::Event, TestCounterIncreased: CounterIncreased, TestCounterDecreased: CounterDecreased, #[flat] TestEnum: MyEnum } By writing the above, the TestEnum variant entry in the ABI will change to: { \"name\": \"TestEnum\", \"type\": \"::MyEnum\", \"kind\": \"flat\" } This means that self.emit(Event::TestEnum(MyEnum::Var1(MyStruct {member: 5}))) will emit an event with keys=[sn_keccak(Var1)] and data=[5]. With the transition to v2.0.0, the contract ABI underwent some changes. Consider the following high level code that generates the ABI in the following example: #[starknet::interface] trait IOtherContract { fn decrease_allowed(self: @TContractState) -> bool; } #[starknet::interface] trait ICounterContract { fn increase_counter(ref self: TContractState, amount: u128); fn decrease_counter(ref self: TContractState, amount: u128); fn get_counter(self: @TContractState) -> u128; } #[starknet::contract] mod counter_contract { use starknet::ContractAddress; use super::{ IOtherContractDispatcher, IOtherContractDispatcherTrait, IOtherContractLibraryDispatcher }; #[storage] struct Storage { counter: u128, other_contract: IOtherContractDispatcher } #[event] #[derive(Drop, starknet::Event)] enum Event { CounterIncreased: CounterIncreased, CounterDecreased: CounterDecreased } #[derive(Drop, starknet::Event)] struct CounterIncreased { amount: u128 } #[derive(Drop, starknet::Event)] struct CounterDecreased { amount: u128 } #[constructor] fn constructor( ref self: ContractState, initial_counter: u128, other_contract_addr: ContractAddress ) { self.counter.write(initial_counter); self .other_contract .write(IOtherContractDispatcher { contract_address: other_contract_addr }); } #[external(v0)] impl CounterContract of super::ICounterContract { fn get_counter(self: @ContractState) -> u128 { self.counter.read() } fn increase_counter(ref self: ContractState, amount: u128) { let current = self.counter.read(); self.counter.write(current + amount); self.emit(CounterIncreased { amount }); } fn decrease_counter(ref self: ContractState, amount: u128) { let allowed = self.other_contract.read().decrease_allowed(); if allowed { let current = self.counter.read(); self.counter.write(current - amount); self.emit(CounterDecreased { amount }); } } } } Since the CounterContract impl is annotated with the #[external(v0)] attribute, you’ll find the following impl entry in the ABI: { \"type\": \"impl\", \"name\": \"CounterContract\", \"interface_name\": \"new_syntax_test_contract::new_syntax_test_contract::ICounterContract\" } ---- This means that every function appearing in the ICounterContract interface is a possible entry point of the contract. Standalone functions in the contract outside an external impl can also be annotated with #[external(v0)] (currently, this is the only way to add L1 handlers). In such cases, a corresponding function (or l1_handler) entry will be found in the ABI in the same hierarchy as impls and interfaces. In Cairo v2, a dedicated type for the contract’s events was introduced. Currently, the contract event type must be an enum named Event, whose variants are structs of the same name as the variant. Types that can be emitted via self.emit(_) must implement the Event trait, which defines how this type should be serialized into two felt252 arrays, keys and data. The Event enum variants appear in the ABI under \"type\" = \"event\" rather than regular structs. For such entries, each member has an additional kind field that specifies how the serialization into keys and data takes place: If the kind is key, then this member or variant are serialized into the event’s keys. If the kind is data, then this member or variant are serialized into the event’s data. If the kind is nested, then the member or variant are serialized according to the Event attribute, potentially adding to both keys and data. This feature is not yet supported, so no high level code written in Cairo v2.0.0 can generate such an ABI. You can find a JSON schema specification of the ABI in the starknet-specs repository. For a UI-friendly version, you can use the OPEN-RPC playground.","title":"Contract ABI","component":"documentation","version":"","name":"contract-abi","url":"/documentation/architecture_and_concepts/Smart_Contracts/contract-abi/","titles":[{"text":"Introduction","hash":"introduction","id":1},{"text":"An example contract ABI","hash":"an_example_contract_abi","id":2},{"text":"Cairo v2.3.0 changes","hash":"cairo_v2_3_0_changes","id":3},{"text":"Nested events","hash":"nested_events","id":4},{"text":"Variant names different from types","hash":"variant_names_different_from_types","id":5},{"text":"Enum variants inside Event","hash":"enum_variants_inside_event","id":6},{"text":"Flattened enum variants","hash":"flattened_enum_variants","id":7},{"text":"Cairo v2.0.0 changes","hash":"cairo_v2_0_0_changes","id":8},{"text":"Interface and Impl ABI entries","hash":"interface_and_impl_abi_entries","id":9},{"text":"Events","hash":"events","id":10},{"text":"Specification","hash":"specification","id":11}]},"52":{"id":52,"text":"The contract address is a unique identifier of the contract on Starknet. It is a chain hash of the following information: prefix - The ASCII encoding of the constant string STARKNET_CONTRACT_ADDRESS. deployer_address - The deployer address, unless deploy_from_zero is true, in which case it is 0. salt - The salt passed by the contract calling the syscall, provided by the transaction sender. class_hash - See the class hash documentation. constructor_calldata_hash - Array hash of the inputs to the constructor. The address is computed as follows: contract_address = pedersen( “STARKNET_CONTRACT_ADDRESS”, deployer_address, salt, class_hash, constructor_calldata_hash) A random salt ensures unique addresses for smart contract deployments, preventing conflicts when deploying identical contract classes. It also thwarts replay attacks by influencing the transaction hash with a unique sender address. Additional resources For more information on the address computation, see contract_address.cairo in the Cairo code repository.","title":"Contract address","component":"documentation","version":"","name":"contract-address","url":"/documentation/architecture_and_concepts/Smart_Contracts/contract-address/","titles":[]},"53":{"id":53,"text":"As in object-oriented programming, Starknet distinguishes between a contract and its implementation by separating contracts into classes and instances. A contract class is the definition of a contract. It includes Cairo byte code, hint information, entry point names, and everything that defines its semantics. Each class is uniquely identified by its class hash, comparable to a class name in traditional object-oriented programming languages. A contract instance is a deployed contract that corresponds to a class. Only contract instances act as true contracts, in that they have their own storage and can be called by transactions or other contracts. A contract class does not necessarily have a deployed instance in Starknet. A contract class does not necessarily require a deployed instance in Starknet. A contract instance has a nonce, the value of which is the number of transactions originating from this address plus 1. For example, when you deploy an account with a DEPLOY_ACCOUNT transaction, the nonce of the account contract in the transaction is 0. After the DEPLOY_ACCOUNT transaction, until the account contract sends its next transaction, the nonce is 1. Adding new classes To introduce new classes to Starknet’s state, use the DECLARE transaction. Deploying instances To deploy a new instance of a previously declared class, use the deploy system call. Using class functionality To use the functionality of a declared class without deploying an instance, use the library_call system call. Analogous to Ethereum’s delegatecall, it enables you to use code in an existing class without deploying a contract instance. Class hash DECLARE transaction deploy system call library_call system call","title":"Contract classes and instances","component":"documentation","version":"","name":"contract-classes","url":"/documentation/architecture_and_concepts/Smart_Contracts/contract-classes/","titles":[{"text":"Contract classes","hash":"contract_classes_2","id":1},{"text":"Contract instances","hash":"contract_instances","id":2},{"text":"Working with classes","hash":"working_with_classes","id":3},{"text":"Additional resources","hash":"additional_resources","id":4}]},"54":{"id":54,"text":"The contract’s storage is a persistent storage space where you can read, write, modify, and persist data. The storage is a map with \\(2^{251}\\) slots, where each slot is a felt which is initialized to 0. The basic function for writing to storage writes, value to key is: storage_write_syscall(address_domain, address, value) storage_read is a basic function that is used for getting the storage address, this function is created by the compiler when defining a storage variable, as explained below. This function returns the address of the storage variable. Below we discuss how this address is determined from the variable’s name and keys. Both storage_read and storage_write are system calls that can be imported by adding the line: use starknet::syscalls::storage_read_syscall; use starknet::syscalls::storage_write_syscall; The most common way to interact with a contract’s storage is through storage variables. The #[storage] attribute above the Storage struct declares that the contents of this struct are part of the contract storage. The storage variables stored inside this struct can consist of a single felt, or it can be a mapping from multiple arguments to a tuple of felts or structs. To use this variable, the var.read(args), var.write(args, value) and var.address(args) functions are automatically created by the #[storage] attribute, for reading the storage value, writing the storage value and getting the storage address, respectively. The Starknet contract compiler generates the Cairo code that maps the storage variable’s name and argument values to an address — so that it can be part of the generated proof. The address of a storage variable is computed as follows: If it is a single value, then the address is sn_keccak(variable_name), where variable_name is the ASCII encoding of the variable’s name. If it is a (nested) mapping, then the address of the value at key k_1,...,k_n is h(...h(h(sn_keccak(variable_name),k_1),k_2),...,k_n) where \\(h\\) is the Pedersen hash and the final value is taken \\(\\bmod 2^{251}-256\\) If it is a mapping to complex values (e.g., tuples or structs), then this complex value lies in a continuous segment starting from the address calculated in the previous point. Note that 256 field elements is the current limitation on the maximal size of a complex storage value. Note that when calling var.address(args) for a storage variable with complex values, the returned value is the address of the first element in the storage. We can summarize the above as follows: storage variable address := pedersen(keccak(variable name), keys) The following example defines storage variables with complex values. #[storage] struct Storage { name: felt252, symbol: felt252, decimals: u8, total_supply: u256, balances: LegacyMap::, allowances: LegacyMap::, }","title":"Contract storage","component":"documentation","version":"","name":"contract-storage","url":"/documentation/architecture_and_concepts/Smart_Contracts/contract-storage/","titles":[{"text":"Storage layout","hash":"storage_layout","id":1},{"text":"Storage low level functions","hash":"storage_low_level_functions","id":2},{"text":"Storage variables","hash":"storage_variables","id":3}]},"55":{"id":55,"text":"With the v2.0.0 release of the Cairo compiler, the Starknet contract syntax has evolved, affecting the organization of functions, storage, and events. For more information on the latest syntax changes, see the Community Forum post Cairo 1: Contract Syntax is Evolving. Prerequisites A contract written with the Cairo compiler v1 The most recent version of the Cairo compiler Procedure Change the contract annotation from #[contract] to #[starknet::contract]. For example:: Cairo v1 Cairo v2 #[contract] mod CounterContract { ... } #[starknet::contract] mod CounterContract { ... } Annotate the Storage struct with the #[storage] attribute. For example: Cairo v1 Cairo v2 struct Storage { counter: u128, other_contract: IOtherContractDispatcher } #[storage] struct Storage { counter: u128, other_contract: IOtherContractDispatcher } Gather your contract’s external and view function signatures under a trait annotated with #[starknet::interface] as follows: Add a generic parameter to the trait. In the following example, the name TContractState represents the state of your contract. For view functions, add the self: @TContractState argument. For external functions, add the ref self: TContractState argument. Static functions that do not touch storage or emit events do not require an additional argument. For example: Cairo v1 Cairo v2 #[contract] mod CounterContract { #[external] fn increase_counter(amount: u128) { ... } #[external] fn decrease_counter(amount: u128) { ... } #[view] fn get_counter() -> u128 { ... } } #[starknet::interface] trait ICounterContract { fn increase_counter(ref self: TContractState, amount: u128); fn decrease_counter(ref self: TContractState, amount: u128); fn get_counter(self: @TContractState) -> u128; } #[starknet::contract] mod CounterContract { ... } Add the external and view function bodies under an impl of the interface trait, and mark the impl with the [external(v0)] attribute, which generates the type of dispatcher that is used to call the contract. For example: Cairo v1 Cairo v2 #[contract] mod CounterContract { #[external] fn increase_counter(amount: u128) { ... } #[external] fn decrease_counter(amount: u128) { ... } #[view] fn get_counter() -> u128 { ... } } #[starknet::interface] trait ICounterContract { fn increase_counter(ref self: TContractState, amount: u128); fn decrease_counter(ref self: TContractState, amount: u128); fn get_counter(self: @TContractState) -> u128; } #[starknet::contract] mod CounterContract { #[external(v0)] impl CounterContract of super::ICounterContract { fn increase_counter(ref self: ContractState, amount: u128) { ... } fn decrease_counter(ref self: ContractState, amount: u128) { ... } fn get_counter(self: @ContractState) -> u128 { ... } } } Replace the #[abi] attribute with #[starknet::interface]. While it doesn’t affect the generated code, adding to the trait a generic parameter T representing the contract’s state, and adding the ref self: T argument to external functions and self: @T argument for view functions makes the implementation more complete. For example: Cairo v1 Cairo v2 #[abi] trait IOtherContract { fn decrease_allowed() -> bool; } #[starknet::interface] trait IOtherContract { fn decrease_allowed(self: @TContractState) -> bool; } Modify storage accesses to happen through ContractState or @ContractState. No external functions in the contract that access storage also need to get it as an argument. For example: Cairo v1 Cairo v2 let current = counter::read(); let current = self.counter.read(); Unify all the contract’s events under the Event enum, and add a corresponding struct for every variant. All the structs must derive the Event trait, and each member type must implement the Serde trait. For example: Cairo v1 Cairo v2 #[event] fn counter_increased(amount: u128) {} #[event] fn counter_decreased(amount: u128) {} #[event] #[derive(Drop, starknet::Event)] enum Event { CounterIncreased: CounterIncreased, CounterDecreased: CounterDecreased } #[derive(Drop, starknet::Event)] struct CounterIncreased { amount: u128 } #[derive(Drop, starknet::Event)] struct CounterDecreased { amount: u128 } Emit events via the ContractState type. For example: Cairo v1 Cairo v2 fn increase_counter(amount: u128) { ... counter_increased(amount); } fn increase_counter(ref self: ContractState, amount: u128) { ... self.emit(Event::CounterIncreased(CounterIncreased { amount })); }","title":"Migrating a contract from Cairo v1 to Cairo v2","component":"documentation","version":"","name":"contract-syntax","url":"/documentation/architecture_and_concepts/Smart_Contracts/contract-syntax/","titles":[]},"56":{"id":56,"text":"For the most up-to-date information, see the info.cairo contract. The struct ExecutionInfo contains the following information about the currently executing block and the transactions in the block. block_info: Box Contains information about a block. For details, see The BlockInfo struct tx_info: Box Contains information about a transaction. For details, see Transaction information: The TxInfo struct caller_address: ContractAddress The address of the contract that invokes the get_execution_info syscall. contract_address: ContractAddress The address of the contract in which the get_execution_info syscall appears. entry_point_selector: felt252 The function that includes the get_execution_info syscall. block_number: u64 The number of the block that is currently being executed. When called from an account contract’s `__validate__`, `__validate_deploy__`, or `__validate_declare__` function, this value is rounded down to the nearest multiple of 100. block_timestamp: u64 The timestamp showing the creation time of the block, in seconds since the Unix epoch, based on UTC time, rounded down to the nearest second. When called from an account contract’s `__validate__`, `__validate_deploy__`, or `__validate_declare__` function, this value is rounded down to the nearest hour. sequencer_address: ContractAddress The address of the Starknet sequencer contract. version: felt252 The version of the transaction. It is fixed (currently, 3) in the OS, and should be signed by the account contract. This field allows invalidating old transactions, whenever the meaning of the other transaction fields is changed (in the OS). account_contract_address: ContractAddress The account contract from which this transaction originates. max_fee: u128 The max_fee field of the transaction. signature: Span The signature of the transaction. transaction_hash: felt252 The hash of the transaction. chain_id: felt252 The identifier of the chain. This field can be used to prevent replay of testnet transactions on mainnet. nonce: felt252 The transaction’s nonce. resource_bounds: Span A span of ResourceBounds structs. For details, see The ResourceBounds struct. tip: u128 The tip. paymaster_data: Span If specified, the paymaster should pay for the execution of the tx. The data includes the address of the paymaster sponsoring the transaction, followed by extra data to send to the paymaster. nonce_data_availability_mode: u32 The data availability mode for the nonce. fee_data_availability_mode: u32 The data availability mode for the account balance from which fee will be taken. account_deployment_data: Span If nonempty, will contain the required data for deploying and initializing an account contract: its class hash, address salt and constructor calldata. resource: felt252 The name of the resource. max_amount: u64 The maximum amount of the resource allowed for usage during the execution. max_price_per_unit: u128 The maximum price the user is willing to pay for the resource unit.","title":"Execution information","component":"documentation","version":"","name":"execution_info","url":"/documentation/architecture_and_concepts/Smart_Contracts/execution_info/","titles":[{"text":"The ExecutionInfo struct","hash":"the_executioninfo_struct","id":1},{"text":"The BlockInfo struct","hash":"block_info","id":2},{"text":"Transaction information: The TxInfo struct","hash":"tx_info","id":3},{"text":"The ResourceBounds struct","hash":"resource_bounds","id":4}]},"57":{"id":57,"text":"When you interact with contracts, especially if you are a library or SDK developer that wants to construct transactions, you need to understand how Cairo handles types that are larger than 252 bits so you can correctly formulate the calldata in a transaction. The field element (felt252), which contains 252 bits, is the only actual type in the Cairo VM. So all high-level Cairo types that are larger than 252 bits, such as u256 or arrays, are ultimately represented by a list of felts. In order to interact with a contract, you need to know how to encode its arguments as a list of felts so you can correctly formulate the calldata in the transaction. SDKs, such as starknet.js, encode the calldata for you, so you can simply specify any type and the SDK properly formulates the calldata. For example, you don’t need to know that a u256 value is represented by two felt252 values. You can simply specify a single integer in your code, and the SDK takes care of the serialization and encoding. The following types are smaller than 252 bits. For these types, each value is serialized as a single-member list that contains one felt252 value. ContractAddress EthAddress StorageAddress ClassHash Unsigned integers smaller than 252 bits: u8, u16, u32, u64, u128, and usize bytes31 felt252 Signed integers smaller than 252 bits: i8, i16, i32, i64, and i128. A negative value, \\(-x\\), is serialized as \\(P-x\\), where: \\[P = 2^{251} + 17*2^{192} + 1\\] For example, -5 is serialized as \\(P-5\\). For more information on the value of \\(P\\), see The STARK field. The following Cairo data types have non-trivial serialization: u256 and u512 arrays enums structs ByteArray, which represents strings Among unsigned integers, only u256 and u512 have non-trivial serialization. A u256 value in Cairo is represented by two felt252 values, as follows: The first felt252 value contains the 128 least significant bits, usually referred to as the low part of the original u256 value. The second felt252 value contains the 128 most significant bits, usually referred to as the high part of the original u256 value. For example: A u256 variable whose decimal value is 2 is serialized as [2,0]. To understand why, examine the binary representation of 2 and split it into two 128-bit parts, as follows: \\[\\underbrace{0\\cdots0}_{\\text{128 high bits}} | \\underbrace{0\\cdots10}_{\\text{128 low bits}}\\] A u256 variable whose decimal value is 2128 is serialized as [0,1]. To understand why, examine the binary representation of 2128 and split it into two 128-bit parts, as follows: \\[\\underbrace{0\\cdots01}_{\\text{128 high bits}} | \\underbrace{0\\cdots0}_{\\text{128 low bits}}\\] A u256 variable whose decimal value is 2129+2128+20, is serialized as [20,3]. To understand why, examine the binary representation of the 2129+2128+20 and split it into two 128-bit parts, as follows: \\[\\underbrace{0\\cdots011}_{\\text{128 high bits}} | \\underbrace{0\\cdots10100}_{\\text{128 low bits}}\\] The u512 type in Cairo is a struct containing four felt252 members, each representing a 128-bit limb of the original integer, similar to the u256 type. Arrays are serialized as follows: , ,…​, For example, consider the following array of u256 values: let POW_2_128: u256 = 0x100000000000000000000000000000000 let array: Array = array![10, 20, POW_2_128] Each u256 value in the array is represented by two felt252 values. So the array above is serialized as follows: \\[\\underbrace{3}_{\\textit{number_of_array_members}} , \\underbrace{10,0}_{\\textit{serialized_member_0}} , \\underbrace{20,0}_{\\textit{serialized_member_1}} , \\underbrace{0,1}_{\\textit{serialized_member_2}}\\] Combining the above, the array is serialized as follows: [3,10,0,20,0,0,1] An enum is serialized as follows: , Enum serialization example 1 Consider the following definition of an enum named Week: enum Week { Sunday: (), // Index=1. The variant type is the unit type. Monday: u256, // Index=2. The variant type is u256. } Now consider instantiations of the Week enum’s variants as shown in the table Serialization of Week variants: Table 1. Serialization of Week variants Instance Description Serialization Week::Sunday Index=1. The variant’s type is the unit type. [1] Week::Monday(5) Index=2. The variant’s type is u256. [2,5,0] Enum serialization example 2 Consider the following definition of an enum named MessageType: enum MessageType { A, #[default] B: u128, C } Now consider instantiations of the MessageType enum’s variants as shown in the table Serialization of MessageType variants: Table 2. Serialization of MessageType variants Instance Description Serialization MessageType::A Index=1. The variant’s type is the unit type. [1] MessageType::B(6) Index=0. The variant’s type is u128. [0,6] MessageType::C Index=2. The variant’s type is the unit type. [2] You serialize a struct by serializing its members one at a time. Its members are serialized in the order in which they appear in the definition of the struct. For example, consider the following definition of the struct MyStruct: struct MyStruct { a: u256, b: felt252, c: Array } The serialization is the same for both of the following instantiations of the struct’s members: let my_struct = MyStruct { a: 2, b: 5, c: [1,2,3] }; let my_struct = MyStruct { b: 5, c: [1,2,3], a: 2 }; The serialization of MyStruct is determined as shown in the table Serialization for a struct in Cairo. Table 3. Serialization for a struct in Cairo Member Description Serialization a: 2 For information on serializing u256 values, see Serialization of u256 values [2,0] b: 5 One felt252 value 5 c: [1,2,3] An array of three felt252 values [3,1,2,3] Combining the above, the struct is serialized as follows: [0,2,5,3,1,2,3] A string is represented in Cairo as a ByteArray type. A byte array is actually a struct with the following members: data: Array Contains 31-byte chunks of the byte array. Each felt252 value has exactly 31 bytes. If the number of bytes in the byte array is less than 31, then this array is empty. pending_word: felt252 The bytes that remain after filling the data array with full 31-byte chunks. The pending word consists of at most 30 bytes. pending_word_len: usize The number of bytes in pending_word. Example 1: A string shorter than 31 characters Consider the string hello, whose ASCII encoding is the 5-byte hex value 0x68656c6c6f. The resulting byte array is serialized as follows: 0, // Number of 31-byte words in the data array. 0x68656c6c6f, // Pending word 5 // Length of the pending word, in bytes Example 2: A string longer than 31 bytes Consider the string Long string, more than 31 characters., which is represented by the following hex values: 0x4c6f6e6720737472696e672c206d6f7265207468616e203331206368617261 (31-byte word) 0x63746572732e (6-byte pending word) The resulting byte array is serialized as follows: 1, // Number of 31-byte words in the array construct. 0x4c6f6e6720737472696e672c206d6f7265207468616e203331206368617261, // 31-byte word. 0x63746572732e, // Pending word 6 // Length of the pending word, in bytes Integer types in The Cairo Programming Language.","title":"Serialization of Cairo types","component":"documentation","version":"","name":"serialization_of_Cairo_types","url":"/documentation/architecture_and_concepts/Smart_Contracts/serialization_of_Cairo_types/","titles":[{"text":"Data types of 252 bits or less","hash":"data_types_of_252_bits_or_less","id":1},{"text":"Data types greater than 252 bits","hash":"data_types_greater_than_252_bits","id":2},{"text":"Serialization of unsigned integers","hash":"serialization_of_unsigned_integers","id":3},{"text":"Serialization of u256 values","hash":"serialization_in_u256_values","id":4},{"text":"Serialization of u512 values","hash":"serialization_in_u512_values","id":5},{"text":"Serialization of arrays","hash":"serialization_of_arrays","id":6},{"text":"Serialization of enums","hash":"serialization_of_enums","id":7},{"text":"Serialization of structs","hash":"serialization_of_structs","id":8},{"text":"Serialization of byte arrays","hash":"serialization_of_byte_arrays","id":9},{"text":"Additional resources","hash":"additional_resources","id":10}]},"58":{"id":58,"text":"A contract may emit events throughout its execution. Each event contains the following fields: from_address: address of the contract emitting the events keys: a list of field elements data: a list of field elements The keys can be used for indexing the events, while the data may contain any information that we wish to log (note that we are dealing with two separate lists of possibly varying size, rather than a list of key-value pairs). Events can be defined in a contract using the @event decorator. Once an event E has been defined, the compiler automatically adds the function E.emit(). The following example illustrates how an event is defined and emitted: #[event] fn Transfer(from: ContractAddress, to: ContractAddress, value: u256) {} Transfer(12345, 12345, 1) The emit function emits an event with a single key, which is an identifier of the event, given by \\(\\text{sn_keccak(event_name)}\\), where \\(\\text{event_name}\\) is the ASCII encoding of the event’s name and \\(\\text{sn_keccak}\\) is defined here. To emit custom keys, one should use the low level emit_event system call: use starknet::syscalls::emit_event_syscall; let keys = array!['key', 'deposit']; let values = array![1, 2, 3]; emit_event_syscall(keys, values).unwrap_syscall(); The above code emits an event with two keys, the strings key and deposit (think of those as identifiers of the event that can be used for indexing) and three data elements 1, 2, 3. When using the higher level emit syntax, the event’s data may be of complex types, for example: struct Point: member x : felt member y : felt end @event func message_received(arr_len : felt, arr: felt*, p: Point): end # ... let (data : felt*) = alloc() assert data[0] = 1 assert data[1] = 2 let p = Point(3,4) message_received.emit(2, data, p) The emitted events are part of the transaction receipt. The event definition appears in the contract’s ABI. It contains the list of data fields (name and type) and the list of the custom keys (that is, all keys except the event identifier discussed above). Below is an example of an event inside the ABI: { \"type\": \"event\", \"name\": \"Transfer\", \"inputs\": [ { \"name\": \"from\", \"type\": \"core::starknet::contract_address::ContractAddress\" }, { \"name\": \"to\", \"type\": \"core::starknet::contract_address::ContractAddress\" }, { \"name\": \"value\", \"type\": \"core::integer::u256\" } ] } The event hash is given by: \\[h(h(h(h(0,\\text{from_address}),\\text{keys_hash}),\\text{data_hash}),3)\\] Where: \\(\\text{keys_hash}\\), \\(\\text{data_hash}\\) are the hashes of the keys list and data list correspondingly (see array hashing). \\(h\\) is the Pedersen hash function. The event hashes are included in the event_commitment field of a block.","title":"Events","component":"documentation","version":"","name":"starknet-events","url":"/documentation/architecture_and_concepts/Smart_Contracts/starknet-events/","titles":[{"text":"Emitting events","hash":"emitting_events","id":1},{"text":"Event ABI","hash":"event_abi","id":2},{"text":"Event hash","hash":"event_hash","id":3}]},"59":{"id":59,"text":"Writing smart contracts requires various associated operations, such as calling another contract or accessing the contract’s storage, that standalone programs do not require. The Starknet contract language supports these operations by using system calls. System calls enable a contract to require services from the Starknet OS. You can use system calls in a function to get information that depends on the broader state of Starknet, which would otherwise be inaccessible, rather than local variables that appear in the function’s scope. extern fn get_block_hash_syscall( block_number: u64 ) -> SyscallResult implicits(GasBuiltin, System) nopanic; Gets the hash of a specific Starknet block within the range of [first_v0_12_0_block, current_block - 10]. block_number u64 The number of the block whose hash you want to get. The hash of the specified block. syscalls.cairo Block number out of range block_number is greater than current_block - 10. 0 block_number is less than the first block number of v0.12.0. extern fn get_execution_info_syscall() -> SyscallResult> implicits( GasBuiltin, System ) nopanic; Gets information about the currently executing block and the transactions in the block. For a complete description of this information, see Execution information This single system call contains all information for a block, transaction, and execution context. When an account’s __validate__, __validate_deploy__, or __validate_declare__ function calls get_execution_info, the return values for block_timestamp and block_number are modified as follows: block_timestamp returns the hour, rounded down to the nearest hour. block_number returns the block number, rounded down to the nearest multiple of 100. None. ExecutionInfo A struct that contains information about the currently executing function, transaction, and block. syscalls.cairo This example shows how to pull the block number from the ExecutionInfo struct. let execution_info = get_execution_info().unbox(); let block_info = execution_info.block_info.unbox(); let block number = block_info.block_number; extern fn call_contract_syscall( address: ContractAddress, entry_point_selector: felt252, calldata: Span ) -> SyscallResult> implicits(GasBuiltin, System) nopanic; Calls a given contract. This system call expects the address of the called contract, a selector for a function within that contract, and call arguments. === An internal call can’t return Err(_) as this is not handled by the sequencer and the Starknet OS. If call_contract_syscall fails, this can’t be caught and will therefore result in the entire transaction being reverted. === address The address of the contract you want to call. entry_point_selector A selector for a function within that contract. calldata The calldata array. The call response, of type SyscallResult>. syscalls.cairo This is considered a lower-level syntax for calling contracts. If the interface of the called contract is available, then you can use a more straightforward syntax. extern fn deploy_syscall( class_hash: ClassHash, contract_address_salt: felt252, calldata: Span, deploy_from_zero: bool, ) -> SyscallResult)> implicits(GasBuiltin, System) nopanic; Deploys a new instance of a previously declared class. class_hash The class hash of the contract to be deployed. contract_address_salt The salt, an arbitrary value provided by the sender, used in the computation of the contract’s address. calldata The constructor’s calldata. An array of felts. deploy_from_zero A flag used for the contract address computation. If not set, the caller address will be used as the new contract’s deployer address, otherwise 0 is used. A tuple wrapped with SyscallResult where: The first element is the address of the deployed contract, of type ContractAddress. The second element is the response array from the contract’s constructor, of type Span::. syscalls.cairo extern fn emit_event_syscall( keys: Span, data: Span ) -> SyscallResult implicits(GasBuiltin, System) nopanic; Emits an event with a given set of keys and data. For more information, and for a higher-level syntax for emitting events, see Starknet events. keys The event’s keys. These are analogous to Ethereum’s event topics, you can use the starknet_getEvents method to filter by these keys. data The event’s data. None. syscalls.cairo The following example emits an event with two keys, the strings key and deposit and three data elements: 1, 2, and 3. let keys = array!['key', 'deposit']; let values = array![1, 2, 3]; emit_event_syscall(keys, values).unwrap_syscall(); extern fn library_call_syscall( class_hash: ClassHash, function_selector: felt252, calldata: Span ) -> SyscallResult> implicits(GasBuiltin, System) nopanic; Calls the requested function in any previously declared class. The class is only used for its logic. This system call replaces the known delegate call functionality from Ethereum, with the important difference that there is only one contract involved. class_hash The hash of the class you want to use. function_selector A selector for a function within that class. calldata The calldata. The call response, of type SyscallResult>. syscalls.cairo extern fn send_message_to_l1_syscall( to_address: felt252, payload: Span ) -> SyscallResult implicits(GasBuiltin, System) nopanic; Sends a message to L1. This system call includes the message parameters as part of the proof’s output and exposes these parameters to the Starknet Core Contract on L1 once the state update, including the transaction, is received. For more information, see Starknet’s messaging mechanism. to_address The recipient’s L1 address. payload The array containing the message payload None. syscalls.cairo The following example sends a message whose content is (1,2) to the L1 contract whose address is 3423542542364363. let payload = ArrayTrait::new(); payload.append(1); payload.append(2); send_message_to_l1_syscall(payload).unwrap_syscall(); extern fn replace_class_syscall( class_hash: ClassHash ) -> SyscallResult implicits(GasBuiltin, System) nopanic; Once replace_class is called, the class of the calling contract (i.e. the contract whose address is returned by get_contract_address at the time the syscall is called) will be replaced by the class whose hash is given by the class_hash argument. After calling replace_class, the code currently executing from the old class will finish running. The new class will be used from the next transaction onwards or if the contract is called via the call_contract syscall in the same transaction (after the replacement). class_hash The hash of the class you want to use as a replacement. None. syscalls.cairo extern fn storage_read_syscall( address_domain: u32, address: StorageAddress, ) -> SyscallResult implicits(GasBuiltin, System) nopanic; Gets the value of a key in the storage of the calling contract. This system call provides direct access to any possible key in storage, in contrast with var.read(), which enables you to read storage variables that are defined explicitly in the contract. For information on accessing storage by using the storage variables, see storage variables. address_domain The domain of the key, used to separate between different data availability modes. This separation is used in Starknet to offer different data availability modes. Currently, only the onchain mode (where all updates go to L1), indicated by domain 0, is supported. Other address domains which will be introduced in the future will behave differently in terms of publication (in particular, they will not be posted on L1, creating a tradeoff between cost and security). address The requested storage address. The value of the key, of type SyscallResult. syscalls.cairo use starknet::storage_access::storage_base_address_from_felt252; ... let storage_address = storage_base_address_from_felt252(3534535754756246375475423547453) storage_read_syscall(0, storage_address).unwrap_syscall() extern fn storage_write_syscall( address_domain: u32, address: StorageAddress, value: felt252 ) -> SyscallResult implicits(GasBuiltin, System) nopanic; Sets the value of a key in the storage of the calling contract. This system call provides direct access to any possible key in storage, in contrast with var.write(), which enables you to write to storage variables that are defined explicitly in the contract. For information on accessing storage by using the storage variables, see storage variables. address_domain The domain of the key, used to separate between different data availability modes. This separation is used in Starknet to offer different data availability modes. Currently, only the onchain mode (where all updates go to L1), indicated by domain 0, is supported. Other address domains which will be introduced in the future will behave differently in terms of publication (in particular, they will not be posted on L1, creating a tradeoff between cost and security). address The requested storage address. value The value to write to the key. None. Common library syscalls.cairo","title":"System Calls","component":"documentation","version":"","name":"system-calls-cairo1","url":"/documentation/architecture_and_concepts/Smart_Contracts/system-calls-cairo1/","titles":[{"text":"get_block_hash","hash":"get_block_hash","id":1},{"text":"Syntax","hash":"syntax","id":2},{"text":"Description","hash":"description","id":3},{"text":"Arguments","hash":"arguments","id":4},{"text":"Return values","hash":"return_values","id":5},{"text":"Common library","hash":"common_library","id":6},{"text":"Error messages","hash":"error_messages","id":7},{"text":"get_execution_info","hash":"get_execution_info","id":8},{"text":"Syntax","hash":"syntax_2","id":9},{"text":"Description","hash":"description_2","id":10},{"text":"Arguments","hash":"arguments_2","id":11},{"text":"Return values","hash":"return_values_2","id":12},{"text":"Common library","hash":"common_library_2","id":13},{"text":"Example","hash":"example","id":14},{"text":"call_contract","hash":"call_contract","id":15},{"text":"Syntax","hash":"syntax_3","id":16},{"text":"Description","hash":"description_3","id":17},{"text":"Arguments","hash":"arguments_3","id":18},{"text":"Return values","hash":"return_values_3","id":19},{"text":"Common library","hash":"common_library_3","id":20},{"text":"deploy","hash":"deploy","id":21},{"text":"Syntax","hash":"syntax_4","id":22},{"text":"Description","hash":"description_4","id":23},{"text":"Arguments","hash":"arguments_4","id":24},{"text":"Return values","hash":"return_values_4","id":25},{"text":"Common library","hash":"common_library_4","id":26},{"text":"emit_event","hash":"emit_event","id":27},{"text":"Syntax","hash":"syntax_5","id":28},{"text":"Description","hash":"description_5","id":29},{"text":"Arguments","hash":"arguments_5","id":30},{"text":"Return values","hash":"return_values_5","id":31},{"text":"Common library","hash":"common_library_5","id":32},{"text":"Example","hash":"example_2","id":33},{"text":"library_call","hash":"library_call","id":34},{"text":"Syntax","hash":"syntax_6","id":35},{"text":"Description","hash":"description_6","id":36},{"text":"Arguments","hash":"arguments_6","id":37},{"text":"Return values","hash":"return_values_6","id":38},{"text":"Common library","hash":"common_library_6","id":39},{"text":"send_message_to_L1","hash":"send_message_to_L1","id":40},{"text":"Syntax","hash":"syntax_7","id":41},{"text":"Description","hash":"description_7","id":42},{"text":"Arguments","hash":"arguments_7","id":43},{"text":"Return values","hash":"return_values_7","id":44},{"text":"Common library","hash":"common_library_7","id":45},{"text":"Example","hash":"example_3","id":46},{"text":"replace_class","hash":"replace_class","id":47},{"text":"Syntax","hash":"syntax_8","id":48},{"text":"Description","hash":"description_8","id":49},{"text":"Arguments","hash":"arguments_8","id":50},{"text":"Return values","hash":"return_values_8","id":51},{"text":"Common library","hash":"common_library_8","id":52},{"text":"storage_read","hash":"storage_read","id":53},{"text":"Syntax","hash":"syntax_9","id":54},{"text":"Description","hash":"description_9","id":55},{"text":"Arguments","hash":"arguments_9","id":56},{"text":"Return values","hash":"return_values_9","id":57},{"text":"Common library","hash":"common_library_9","id":58},{"text":"Example","hash":"example_4","id":59},{"text":"storage_write","hash":"storage_write","id":60},{"text":"Syntax","hash":"syntax_10","id":61},{"text":"Description","hash":"description_10","id":62},{"text":"Arguments","hash":"arguments_10","id":63},{"text":"Return values","hash":"return_values_10","id":64}]}},"components":{},"componentVersions":{"documentation/":{"displayVersion":"default","title":"Starknet","version":"","name":"documentation","asciidoc":{"attributes":{"env":"site","env-site":"","site-gen":"antora","site-gen-antora":"","attribute-missing":"warn","data-uri":null,"icons":"font","sectanchors":"","source-highlighter":"highlight.js","site-title":"Starknet documentation","site-url":"https://docs.starknet.io/","idprefix":"","stem":"latexmath","page-pagination":"","experimental":"","starknet_mainnet_version":"Mainnet: 0.13.1","starknet_testnet_version":"Sepolia: 0.13.1 | Goerli: 0.13.1","page-starknet_version":"Mainnet: 0.13.1 | Sepolia: 0.13.1 | Goerli: 0.13.1"},"sourcemap":false,"extensions":[{}]},"url":"/documentation/","navigation":[{"items":[{"content":"Overview","url":"/documentation/","urlType":"internal"}],"root":true,"order":0},{"items":[{"content":"Quick start","items":[{"content":"Setting up your environment","url":"/documentation/quick_start/environment_setup/","urlType":"internal","items":[{"content":"Installing Starkli","url":"/documentation/quick_start/environment_setup/#installing_starkli","urlType":"internal","hash":"#installing_starkli"},{"content":"Environment variables","url":"/documentation/quick_start/environment_setup/#setting_environment_variables_for_starkli","urlType":"internal","hash":"#setting_environment_variables_for_starkli"},{"content":"Installing Scarb","url":"/documentation/quick_start/environment_setup/#installing_scarb","urlType":"internal","hash":"#installing_scarb"}]},{"content":"Setting up an account","url":"/documentation/quick_start/set_up_an_account/","urlType":"internal","items":[{"content":"Creating an account","url":"/documentation/quick_start/set_up_an_account/#creating_an_account","urlType":"internal","hash":"#creating_an_account"},{"content":"Deploying an account","url":"/documentation/quick_start/set_up_an_account/#deploying_an_account","urlType":"internal","hash":"#deploying_an_account"}]},{"content":"Declaring a smart contract","url":"/documentation/quick_start/declare_a_smart_contract/","urlType":"internal"},{"content":"Deploying a smart contract","url":"/documentation/quick_start/deploy_a_smart_contract/","urlType":"internal"},{"content":"Interacting with a smart contract","url":"/documentation/quick_start/interact_with_a_smart_contract/","urlType":"internal"}]}],"root":true,"order":1},{"items":[{"content":"Release information","items":[{"content":"Release notes","url":"/documentation/starknet_versions/version_notes/","urlType":"internal"},{"content":"Deprecated, unsupported, and removed features","url":"/documentation/starknet_versions/deprecated/","urlType":"internal"}]}],"root":true,"order":2},{"items":[{"content":"Architecture","items":[{"content":"Blockchain architecture","items":[{"content":"Blocks and transactions","items":[{"content":"Block structure","url":"/documentation/architecture_and_concepts/Network_Architecture/header/","urlType":"internal"},{"content":"Transaction lifecycle","url":"/documentation/architecture_and_concepts/Network_Architecture/transaction-life-cycle/","urlType":"internal"},{"content":"Transaction types","url":"/documentation/architecture_and_concepts/Network_Architecture/transactions/","urlType":"internal"},{"content":"Gas and transaction fees","url":"/documentation/architecture_and_concepts/Network_Architecture/fee-mechanism/","urlType":"internal"}]},{"content":"State","items":[{"content":"Starknet state","url":"/documentation/architecture_and_concepts/Network_Architecture/starknet-state/","urlType":"internal"},{"content":"Data availability","url":"/documentation/architecture_and_concepts/Network_Architecture/on-chain-data/","urlType":"internal"}]},{"content":"L1-L2 messaging","url":"/documentation/architecture_and_concepts/Network_Architecture/messaging-mechanism/","urlType":"internal"}]},{"content":"Accounts","items":[{"content":"What is an account?","url":"/documentation/architecture_and_concepts/Accounts/introduction/","urlType":"internal"},{"content":"Starknet account interface","url":"/documentation/architecture_and_concepts/Accounts/approach/","urlType":"internal"},{"content":"Validate and execute","url":"/documentation/architecture_and_concepts/Accounts/validate_and_execute/","urlType":"internal"},{"content":"Deploying new accounts","url":"/documentation/architecture_and_concepts/Accounts/deploying_new_accounts/","urlType":"internal"},{"content":"Universal Deployer Contract","url":"/documentation/architecture_and_concepts/Accounts/universal-deployer/","urlType":"internal"},{"content":"Simplified transaction flow","url":"/documentation/architecture_and_concepts/Accounts/simplified_transaction_flow/","urlType":"internal"}]},{"content":"Contracts","items":[{"content":"Contract classes and instances","url":"/documentation/architecture_and_concepts/Smart_Contracts/contract-classes/","urlType":"internal"},{"content":"Class hash","url":"/documentation/architecture_and_concepts/Smart_Contracts/class-hash/","urlType":"internal"},{"content":"Contract address","url":"/documentation/architecture_and_concepts/Smart_Contracts/contract-address/","urlType":"internal"},{"content":"Contract storage","url":"/documentation/architecture_and_concepts/Smart_Contracts/contract-storage/","urlType":"internal"},{"content":"Contract ABI","url":"/documentation/architecture_and_concepts/Smart_Contracts/contract-abi/","urlType":"internal"},{"content":"Events","url":"/documentation/architecture_and_concepts/Smart_Contracts/starknet-events/","urlType":"internal"},{"content":"Migrating a contract from Cairo v1 to Cairo v2","url":"/documentation/architecture_and_concepts/Smart_Contracts/contract-syntax/","urlType":"internal"},{"content":"Cairo and Sierra","url":"/documentation/architecture_and_concepts/Smart_Contracts/cairo-and-sierra/","urlType":"internal"},{"content":"System calls","url":"/documentation/architecture_and_concepts/Smart_Contracts/system-calls-cairo1/","urlType":"internal"},{"content":"Serialization of Cairo types","url":"/documentation/architecture_and_concepts/Smart_Contracts/serialization_of_Cairo_types/","urlType":"internal"},{"content":"System calls","url":"/documentation/architecture_and_concepts/Smart_Contracts/system-calls-cairo1/","urlType":"internal"},{"content":"Execution information for the current block","url":"/documentation/architecture_and_concepts/Smart_Contracts/execution_info/","urlType":"internal"}]},{"content":"Cryptography","items":[{"content":"The STARK field","url":"/documentation/architecture_and_concepts/Cryptography/p-value/","urlType":"internal"},{"content":"The STARK curve","url":"/documentation/architecture_and_concepts/Cryptography/stark-curve/","urlType":"internal"},{"content":"Hash functions","url":"/documentation/architecture_and_concepts/Cryptography/hash-functions/","urlType":"internal"}]}]},{"content":"The Economics of Starknet","url":"/documentation/architecture_and_concepts/Economics-of-Starknet/","urlType":"internal"}],"root":true,"order":3},{"items":[{"content":"Developer tools and resources","items":[{"content":"The Starknet Book","url":"/documentation/tools/starknet-book/","urlType":"internal"},{"content":"Developer tools","url":"/documentation/tools/devtools/","urlType":"internal"},{"content":"Cairo 0 tools","items":[{"content":"Legacy Starknet CLI reference","url":"/documentation/cli/starkli/","urlType":"internal"},{"content":"Legacy compiler CLI reference","url":"/documentation/cli/starknet-compiler-options/","urlType":"internal"}]},{"content":"Full nodes and API services","items":[{"content":"Full nodes and API services","url":"/documentation/tools/api-services/","urlType":"internal"},{"content":"Juno release notes","url":"/documentation/starknet_versions/juno_versions/","urlType":"internal"},{"content":"Pathfinder release notes","url":"/documentation/starknet_versions/pathfinder_versions/","urlType":"internal"}]},{"content":"Block explorers","url":"/documentation/tools/ref_block_explorers/","urlType":"internal"},{"content":"Audit providers","url":"/documentation/tools/audit/","urlType":"internal"},{"content":"StarkGate bridge guide","items":[{"content":"Overview","url":"/documentation/tools/starkgate-bridge/","urlType":"internal"},{"content":"StarkGate architecture","url":"/documentation/tools/starkgate_architecture/","urlType":"internal"},{"content":"Procedures","items":[{"content":"Performing a Smart Deposit","url":"/documentation/tools/starkgate-automated_actions_with_bridging/","urlType":"internal"},{"content":"Adding a token","url":"/documentation/tools/starkgate-adding_a_token/","urlType":"internal"},{"content":"Cancelling a deposit","url":"/documentation/tools/starkgate-cancelling%20a%20deposit/","urlType":"internal"},{"content":"Estimating StarkGate fees","url":"/documentation/tools/starkgate-estimating_fees/","urlType":"internal"},{"content":"Migrating DAI v0 to DAI","url":"/documentation/tools/dai_token_migration/","urlType":"internal"}]},{"content":"StarkGate function and event reference","url":"/documentation/tools/starkgate_function_reference/","urlType":"internal"}]}]},{"content":"Important addresses","items":[{"content":"Starknet contracts and sequencer addresses","url":"/documentation/tools/important_addresses/","urlType":"internal"},{"content":"Bridged tokens","url":"/documentation/tools/bridged_tokens/","urlType":"internal"}]},{"content":"Current limits","url":"/documentation/tools/limits_and_triggers/","urlType":"internal"}],"root":true,"order":5},{"items":[{"content":"Glossary","url":"/documentation/glossary/","urlType":"internal"}],"root":true,"order":6}]},"docs-common-content/1.0.0":{"displayVersion":"1.0.0","title":"Common Starknet content","version":"1.0.0","name":"docs-common-content","asciidoc":{"attributes":{"env":"site","env-site":"","site-gen":"antora","site-gen-antora":"","attribute-missing":"warn","data-uri":null,"icons":"font","sectanchors":"","source-highlighter":"highlight.js","site-title":"Starknet documentation","site-url":"https://docs.starknet.io/","idprefix":"","stem":"latexmath","page-pagination":"","experimental":"","starknet_mainnet_version":"Mainnet: 0.13.1","starknet_testnet_version":"Sepolia: 0.13.1 | Goerli: 0.13.1","page-starknet_version":"Mainnet: 0.13.1 | Sepolia: 0.13.1 | Goerli: 0.13.1"},"sourcemap":false,"extensions":[{}]},"url":"/docs-common-content/1.0.0/"}}}}) \ No newline at end of file diff --git a/pr-1195/sitemap.xml b/pr-1195/sitemap.xml deleted file mode 100644 index ccb3a0eb09..0000000000 --- a/pr-1195/sitemap.xml +++ /dev/null @@ -1,239 +0,0 @@ - - - -https://docs.starknet.io/documentation/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/architecture_and_concepts/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/architecture_and_concepts/Accounts/approach/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/architecture_and_concepts/Accounts/deploying_new_accounts/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/architecture_and_concepts/Accounts/introduction/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/architecture_and_concepts/Accounts/simplified_transaction_flow/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/architecture_and_concepts/Accounts/universal-deployer/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/architecture_and_concepts/Accounts/validate_and_execute/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/architecture_and_concepts/Cryptography/hash-functions/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/architecture_and_concepts/Cryptography/p-value/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/architecture_and_concepts/Cryptography/stark-curve/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/architecture_and_concepts/Economics-of-Starknet/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/architecture_and_concepts/Network_Architecture/fee-mechanism/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/architecture_and_concepts/Network_Architecture/header/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/architecture_and_concepts/Network_Architecture/messaging-mechanism/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/architecture_and_concepts/Network_Architecture/on-chain-data/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/architecture_and_concepts/Network_Architecture/starknet-state/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/architecture_and_concepts/Network_Architecture/transaction-life-cycle/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/architecture_and_concepts/Network_Architecture/transactions/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/architecture_and_concepts/Smart_Contracts/cairo-and-sierra/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/architecture_and_concepts/Smart_Contracts/class-hash/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/architecture_and_concepts/Smart_Contracts/contract-abi/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/architecture_and_concepts/Smart_Contracts/contract-address/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/architecture_and_concepts/Smart_Contracts/contract-classes/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/architecture_and_concepts/Smart_Contracts/contract-storage/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/architecture_and_concepts/Smart_Contracts/contract-syntax/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/architecture_and_concepts/Smart_Contracts/execution_info/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/architecture_and_concepts/Smart_Contracts/serialization_of_Cairo_types/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/architecture_and_concepts/Smart_Contracts/starknet-events/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/architecture_and_concepts/Smart_Contracts/system-calls-cairo1/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/cli/starkli/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/cli/starknet-compiler-options/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/glossary/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/quick_start/declare_a_smart_contract/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/quick_start/deploy_a_smart_contract/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/quick_start/environment_setup/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/quick_start/interact_with_a_smart_contract/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/quick_start/set_up_an_account/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/starknet_versions/deprecated/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/starknet_versions/juno_versions/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/starknet_versions/pathfinder_versions/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/starknet_versions/upcoming_versions/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/starknet_versions/version_notes/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/tools/api-services/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/tools/audit/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/tools/bridged_tokens/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/tools/dai_token_migration/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/tools/devtools/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/tools/important_addresses/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/tools/limits_and_triggers/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/tools/ref_block_explorers/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/tools/starkgate_architecture/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/tools/starkgate_function_reference/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/tools/starkgate-adding_a_token/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/tools/starkgate-automated_actions_with_bridging/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/tools/starkgate-bridge/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/tools/starkgate-cancelling%20a%20deposit/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/tools/starkgate-estimating_fees/ -2024-03-25T12:25:46.018Z - - -https://docs.starknet.io/documentation/tools/starknet-book/ -2024-03-25T12:25:46.018Z - -